UNPKG

legal-markdown-js

Version:

Node.js implementation of LegalMarkdown for processing legal documents with markdown and YAML - Complete feature parity with Ruby version

106 lines 3.74 kB
/** * Metadata Export System for Legal Markdown Documents * * This module provides functionality for exporting document metadata to external * files in various formats. It supports YAML and JSON export formats with * configurable output paths and metadata filtering. * * Features: * - Metadata export to YAML and JSON formats * - Configurable output paths and filenames * - Metadata filtering and processing * - Internal metadata key removal * - Directory creation for output files * - Error handling and logging * - Support for custom export configurations * * @example * ```typescript * import { exportMetadata } from './metadata-exporter.js'; * * // Export metadata to YAML * const result = exportMetadata(metadata, 'yaml', './output'); * console.log('Exported files:', result.exportedFiles); * * // Export with custom configuration * const metadata = { * title: 'Legal Agreement', * 'meta-yaml-output': 'custom-metadata.yaml', * 'meta-json-output': 'custom-metadata.json' * }; * const result = exportMetadata(metadata); * ``` * * @module */ import type { YamlValue } from '../../types/index.js'; import { MetadataExportResult } from '../../types/index.js'; /** * Exports document metadata to external files * * Processes document metadata and exports it to specified formats (YAML/JSON) * with support for custom output paths and metadata filtering. Handles directory * creation and provides comprehensive error handling. * * @function exportMetadata * @param {Record<string, any>} metadata - Document metadata to export * @param {'yaml' | 'json'} [format] - Export format (yaml or json) * @param {string} [outputPath] - Optional path for export files * @returns {MetadataExportResult} Result object with list of exported files * @example * ```typescript * import { exportMetadata } from './metadata-exporter.js'; * * // Basic metadata export * const metadata = { * title: 'Service Agreement', * author: 'Legal Team', * version: '1.0', * date: '2023-01-01' * }; * * const result = exportMetadata(metadata, 'yaml', './output'); * console.log('Exported to:', result.exportedFiles); * * // Export with custom filenames * const customMetadata = { * title: 'Contract', * 'meta-yaml-output': 'contract-metadata.yaml', * 'meta-json-output': 'contract-metadata.json', * 'meta-output-path': './custom-output' * }; * * const customResult = exportMetadata(customMetadata); * ``` */ export declare function exportMetadata(metadata: Record<string, YamlValue>, format?: 'yaml' | 'json', outputPath?: string): MetadataExportResult; /** * Filters metadata based on export configuration * * Processes metadata to remove internal configuration keys and applies filtering * rules based on export settings. This ensures that only relevant metadata is * included in the exported files. * * @function filterMetadataForExport * @param {Record<string, any>} metadata - Complete metadata object to filter * @returns {Record<string, any>} Filtered metadata object suitable for export * @example * ```typescript * import { filterMetadataForExport } from './metadata-exporter.js'; * * const metadata = { * title: 'Legal Agreement', * author: 'Legal Team', * 'meta-yaml-output': 'output.yaml', * 'meta-json-output': 'output.json', * 'meta-output-path': './exports', * 'meta-include-original': false * }; * * const filtered = filterMetadataForExport(metadata); * // Result: { title: 'Legal Agreement', author: 'Legal Team' } * // Internal meta-* keys are removed * ``` */ export declare function filterMetadataForExport(metadata: Record<string, YamlValue>): Record<string, YamlValue>; //# sourceMappingURL=metadata-exporter.d.ts.map