@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
JavaScript
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