{"version":3,"sources":["../../../src/validation/metadata-format-validator.ts"],"names":[],"mappings":"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","file":"metadata-format-validator.cjs","sourcesContent":["import { ValidationResult, FrontmatterMetadata } from '../types.js';\n\n/**\n * Validates the format and structure of metadata, not business rules.\n * Only checks that required fields exist and are of the correct type.\n */\nexport class MetadataFormatValidator {\n  /**\n   * Validates that required fields exist and are of the correct type\n   */\n  validateFormat(metadata: any): ValidationResult {\n    const errors: string[] = [];\n\n    // Check if metadata is an object\n    if (typeof metadata !== 'object' || metadata === null) {\n      errors.push('Metadata must be an object');\n      return {\n        valid: false,\n        errors,\n        warnings: []\n      };\n    }\n\n    // Validate required fields\n    const requiredFields = ['id', 'type', 'active'];\n    for (const field of requiredFields) {\n      if (!(field in metadata)) {\n        errors.push(`Missing required field: ${field}`);\n      }\n    }\n\n    // Validate field types and formats\n    if ('id' in metadata) {\n      if (typeof metadata.id !== 'string') {\n        errors.push('Field id must be a string');\n      } else if (!metadata.id.match(/^[a-zA-Z0-9-]+$/)) {\n        errors.push('Field id must contain only alphanumeric characters and hyphens');\n      }\n    }\n\n    if ('type' in metadata) {\n      if (typeof metadata.type !== 'string') {\n        errors.push('Field type must be a string');\n      } else if (!metadata.type.match(/^[a-zA-Z0-9-]+$/)) {\n        errors.push('Field type must contain only alphanumeric characters and hyphens');\n      }\n    }\n\n    if ('active' in metadata && typeof metadata.active !== 'boolean') {\n      errors.push('Field active must be a boolean');\n    }\n\n    // Validate optional state field when present and not undefined\n    if ('state' in metadata && metadata.state !== undefined) {\n      if (typeof metadata.state !== 'string') {\n        errors.push('Field state must be a string');\n      } else if (!metadata.state.match(/^[a-zA-Z0-9-]+$/)) {\n        errors.push('Field state must contain only alphanumeric characters and hyphens');\n      }\n    }\n\n    return {\n      valid: errors.length === 0,\n      errors,\n      warnings: []\n    };\n  }\n\n  /**\n   * Clean metadata by removing invalid fields and normalizing values\n   */\n  cleanMetadata(meta: Partial<FrontmatterMetadata>): FrontmatterMetadata {\n    // Ensure required fields are present\n    if (meta.id === undefined || meta.type === undefined || typeof meta.active !== 'boolean') {\n      throw new Error('Required fields missing: id, type, and active must be present');\n    }\n\n    // Start with required fields\n    const cleaned: FrontmatterMetadata = {\n      id: meta.id,  // Preserve ID case\n      type: meta.type.toLowerCase(),\n      active: meta.active\n    };\n\n    // Add optional fields if present and not undefined\n    if (meta.state !== undefined) {\n      cleaned.state = meta.state.toLowerCase();\n    }\n\n    // Copy any other fields\n    for (const [key, value] of Object.entries(meta)) {\n      if (!['id', 'type', 'active', 'state'].includes(key) && value !== undefined) {\n        cleaned[key] = value;\n      }\n    }\n\n    return cleaned;\n  }\n} "]}