Add Logging singleton to manually control Mediabunny's console output (fixes #415)

This commit is contained in:
Vanilagy
2026-06-18 19:32:18 +02:00
parent 92a384f418
commit cdc2ef63dd
28 changed files with 324 additions and 65 deletions
+1
View File
@@ -23,6 +23,7 @@ const checkDocblocks = (filePath: string) => {
|| ts.isFunctionDeclaration(node)
|| ts.isTypeAliasDeclaration(node)
|| ts.isEnumDeclaration(node)
|| ts.isEnumMember(node)
|| ts.isPropertySignature(node)
|| ts.isMethodSignature(node)
|| ts.isVariableStatement(node)
+38 -1
View File
@@ -683,7 +683,7 @@ const generateDocs = (entryFiles: string[], apiConfigFile: string, dry = false)
}
// Check if it's a supported type
if (ts.isClassDeclaration(declaration) || ts.isInterfaceDeclaration(declaration) || ts.isTypeAliasDeclaration(declaration) || ts.isVariableDeclaration(declaration)) {
if (ts.isClassDeclaration(declaration) || ts.isInterfaceDeclaration(declaration) || ts.isTypeAliasDeclaration(declaration) || ts.isVariableDeclaration(declaration) || ts.isEnumDeclaration(declaration)) {
// Supported types - continue processing
} else {
// Unsupported type - throw error with type info
@@ -777,6 +777,43 @@ const generateDocs = (entryFiles: string[], apiConfigFile: string, dry = false)
return;
}
// Handle enum declarations separately
if (ts.isEnumDeclaration(declaration)) {
const enumName = declaration.name.text;
const description = extractJsDocDescription(declaration, {
tagHandling: 'filterAll',
transform: text => processLinkTags(text, enumName),
});
const order = symbolOrderMap.get(enumName);
if (order === undefined) {
throw new Error(`Symbol '${enumName}' not found in entry files export order`);
}
indexEntries.push({ name: enumName, type: 'Enum', group: groupName, order });
// Reconstruct the enum body so each member keeps its value and description
const memberLines = declaration.members.map((member) => {
const memberName = member.name.getText();
const initializer = member.initializer ? ` = ${member.initializer.getText()}` : '';
const memberDescription = extractJsDocDescription(member, {
tagHandling: 'filterAll',
transform: text => processLinkTags(text, enumName),
});
const commentLine = memberDescription ? `\t/** ${memberDescription} */\n` : '';
return `${commentLine}\t${memberName}${initializer},`;
});
const enumDefinition = `enum ${enumName} {\n${memberLines.join('\n')}\n}`;
const deprecationNotice = getDeprecationNotice(declaration, enumName);
let markdown = `${buildFrontmatter(description)}<script setup>\nimport { VPBadge } from 'vitepress/theme'\n</script>\n\n<VPBadge type="info" text="Enum" />\n\n# ${enumName}\n\n${deprecationNotice}${description ? `${description}\n\n` : ''}`;
markdown += `\`\`\`ts\n${enumDefinition}\n\`\`\``;
generatedDocs.set(enumName, markdown);
return;
}
{
const className = declaration.name.text;
const isAbstract = ts.isClassDeclaration(declaration) && declaration.modifiers?.some(mod => mod.kind === ts.SyntaxKind.AbstractKeyword);