UNPKG

@entro314labs/starlight-document-converter

Version:

A comprehensive document converter for Astro Starlight that transforms various document formats into Starlight-compatible Markdown with proper frontmatter

146 lines (143 loc) 4.97 kB
import { pluginRegistry } from "./chunk-MMSVNVDP.js"; // src/plugins/integration-helper.ts var PluginIntegrationHelper = class { /** * Apply all registered metadata enhancers to the given metadata */ static async enhanceMetadata(metadata, context) { const enhancers = pluginRegistry.getEnhancers(); let enhancedMetadata = { ...metadata }; for (const enhancer of enhancers) { try { const result = await enhancer.enhance(enhancedMetadata, context); enhancedMetadata = { ...enhancedMetadata, ...result }; } catch (error) { console.warn(`Enhancer ${enhancer.metadata.name} failed:`, error); } } return enhancedMetadata; } /** * Process content using registered file processors */ static async processContent(content, context) { const processors = pluginRegistry.getProcessorsForExtension(context.extension); let processedContent = content; for (const processor of processors) { try { if (processor.validate && !await processor.validate(processedContent, context)) { continue; } if (processor.preprocess) { processedContent = await processor.preprocess(processedContent, context); } processedContent = await processor.process(processedContent, context); if (processor.postprocess) { processedContent = await processor.postprocess(processedContent, context); } if (context.options.verbose) { console.log(` Processed with ${processor.metadata.name}`); } } catch (error) { console.warn(`Processor ${processor.metadata.name} failed:`, error); } } return processedContent; } /** * Validate content using all registered validators */ static validateContent(content, metadata, context) { const validators = pluginRegistry.getValidators(); const results = []; for (const validator of validators) { try { const result = validator.validate(content, metadata, context); results.push({ validator: validator.metadata.name, ...result }); } catch (error) { console.warn(`Validator ${validator.metadata.name} failed:`, error); } } return results; } /** * Create a processing context from conversion parameters */ static createProcessingContext(inputPath, outputPath, filename, extension, options, additionalData) { return { inputPath, outputPath, filename, extension, options, data: additionalData }; } /** * Initialize all built-in plugins */ static async initializePlugins() { const { registerBuiltInPlugins: registerBuiltInPlugins2 } = await import("./plugins-6J32MDMQ.js"); return await registerBuiltInPlugins2(); } /** * Get plugin statistics */ static getPluginStats() { return pluginRegistry.getStats(); } /** * Check if plugins are properly registered */ static validatePluginSetup() { const stats = pluginRegistry.getStats(); const issues = []; if (stats.processors === 0) { issues.push("No file processors registered"); } if (stats.enhancers === 0) { issues.push("No metadata enhancers registered"); } if (stats.validators === 0) { issues.push("No quality validators registered"); } const requiredExtensions = [".md", ".mdx", ".json"]; const missingExtensions = requiredExtensions.filter( (ext) => !stats.supportedExtensions.includes(ext) ); if (missingExtensions.length > 0) { issues.push(`Missing processors for extensions: ${missingExtensions.join(", ")}`); } return { valid: issues.length === 0, issues }; } }; // src/plugins/index.ts async function registerBuiltInPlugins() { const { pluginRegistry: pluginRegistry2 } = await import("./registry-KC46TJAB.js"); const { markdownEnhancer: markdownEnhancer2 } = await import("./markdown-enhancer-LECI65EL.js"); const { jsonProcessor: jsonProcessor2 } = await import("./json-processor-BNASMIFY.js"); const { markdownProcessor: markdownProcessor2 } = await import("./markdown-processor-2MHGBNKT.js"); const { contentQualityValidator: contentQualityValidator2 } = await import("./quality-validator-5JI26LMI.js"); const { frontmatterEnhancer, frontmatterValidator } = await import("./frontmatter-repair-JNEPELNZ.js"); pluginRegistry2.registerEnhancer(frontmatterEnhancer); pluginRegistry2.registerEnhancer(markdownEnhancer2); pluginRegistry2.registerProcessor(jsonProcessor2); pluginRegistry2.registerProcessor(markdownProcessor2); pluginRegistry2.registerValidator(contentQualityValidator2); pluginRegistry2.registerValidator(frontmatterValidator); console.log("Built-in plugins registered successfully"); return pluginRegistry2.getStats(); } export { PluginIntegrationHelper, registerBuiltInPlugins }; //# sourceMappingURL=chunk-C7LTCQM5.js.map