UNPKG

@memory-bank/mcp

Version:

Memory-enabled Co-Pilot (MCP) server for managing project documentation and context

93 lines 3.52 kB
/** * JSON Template Loader * Loads and processes JSON templates with internationalization support */ import path from 'node:path'; const validateJsonTemplate = (data) => data; // Dummy validator import { TemplateRenderer } from './TeplateRenderer.js'; import { logger } from '../../shared/utils/logger.js'; /** * Implementation of ITemplateLoader for JSON templates */ export class JsonTemplateLoader { fileSystemService; i18nProvider; templateRenderer; // Legacy patterns removed as per user request /** * Constructor * * @param fileSystemService Service for file system operations * @param i18nProvider Provider for internationalization services */ constructor(fileSystemService, i18nProvider) { this.fileSystemService = fileSystemService; this.i18nProvider = i18nProvider; this.templateRenderer = new TemplateRenderer(i18nProvider); } /** * Gets the JSON templates directory path */ getJsonTemplatesDirectory() { // Use project-relative paths instead of import.meta.url return path.join(process.cwd(), 'src/templates/json'); } // Legacy directory method removed /** * Implements ITemplateLoader.loadJsonTemplate */ async loadJsonTemplate(templateId) { const templatePath = path.join(this.getJsonTemplatesDirectory(), `${templateId}.json`); try { // Check if file exists const exists = await this.fileSystemService.fileExists(templatePath); if (!exists) { throw new Error(`Template not found: ${templateId}`); } // Read template file const content = await this.fileSystemService.readFile(templatePath); // Parse and validate template const template = JSON.parse(content); return validateJsonTemplate(template); } catch (error) { // If it's a SyntaxError (JSON parse error), rethrow it directly // so the caller can potentially identify it specifically. if (error instanceof SyntaxError) { throw error; } // Otherwise, wrap it in a generic load error message. throw new Error(`Failed to load JSON template ${templateId}: ${error.message}`); } } /** * Implements ITemplateLoader.getMarkdownTemplate */ async getMarkdownTemplate(templateId, language, variables) { // Check if language is supported if (!this.i18nProvider.isLanguageSupported(language)) { throw new Error(`Unsupported language: ${language}`); } try { // Load the JSON template const template = await this.loadJsonTemplate(templateId); // Render to Markdown return this.templateRenderer.renderToMarkdown(template, language, variables); } catch (error) { // Legacy fallback removed, rethrow the original error logger.error(`Failed to load or render JSON template ${templateId}`, { error }); throw error; } } // loadLegacyTemplate method removed /** * Implements ITemplateLoader.templateExists */ async templateExists(templateId) { const jsonPath = path.join(this.getJsonTemplatesDirectory(), `${templateId}.json`); return this.fileSystemService.fileExists(jsonPath); } } // Remove extra closing bracket //# sourceMappingURL=JsonTemplateLoader.js.map