{"version":3,"sources":["../../src/schema/object-processor.ts"],"sourcesContent":["import Definitions        from '../core/definitions';\r\nimport InternetObject     from '../core/internet-object';\r\nimport ErrorCodes         from '../errors/io-error-codes';\r\nimport SyntaxError        from '../errors/io-syntax-error';\r\nimport ValidationError    from '../errors/io-validation-error';\r\nimport MemberNode         from '../parser/nodes/members';\r\nimport ObjectNode         from '../parser/nodes/objects';\r\nimport TokenNode          from '../parser/nodes/tokens';\r\nimport assertNever        from '../errors/asserts/asserts';\r\nimport Schema             from './schema';\r\nimport MemberDef          from './types/memberdef';\r\nimport { processMember }  from './processing/member-processor';\r\nimport { ProcessingContext } from './processing/processing-context';\r\n\r\n/**\r\n * Resolves variable references in memberDef fields like default, min, max, choices.\r\n * Variables are strings starting with @ that reference definitions.\r\n */\r\nfunction _resolveMemberDefVariables(memberDef: MemberDef, defs?: Definitions): MemberDef {\r\n  if (!memberDef || !defs) return memberDef;\r\n\r\n  const resolved = { ...memberDef };\r\n\r\n  // Resolve default value if it's a variable reference\r\n  if (typeof resolved.default === 'string' && resolved.default.startsWith('@')) {\r\n    resolved.default = defs.getV(resolved.default);\r\n    // Unwrap TokenNode if needed\r\n    if (resolved.default instanceof TokenNode) {\r\n      resolved.default = resolved.default.value;\r\n    }\r\n  }\r\n\r\n  // Resolve choices if they contain variable references\r\n  if (Array.isArray(resolved.choices)) {\r\n    resolved.choices = resolved.choices.map(choice => {\r\n      if (typeof choice === 'string' && choice.startsWith('@')) {\r\n        let resolved = defs.getV(choice);\r\n        return resolved instanceof TokenNode ? resolved.value : resolved;\r\n      }\r\n      return choice;\r\n    });\r\n  }\r\n\r\n  // Resolve min/max if they're variable references\r\n  if (typeof resolved.min === 'string' && resolved.min.startsWith('@')) {\r\n    resolved.min = defs.getV(resolved.min);\r\n    if (resolved.min instanceof TokenNode) {\r\n      resolved.min = resolved.min.value;\r\n    }\r\n  }\r\n  if (typeof resolved.max === 'string' && resolved.max.startsWith('@')) {\r\n    resolved.max = defs.getV(resolved.max);\r\n    if (resolved.max instanceof TokenNode) {\r\n      resolved.max = resolved.max.value;\r\n    }\r\n  }\r\n\r\n  return resolved;\r\n}\r\n\r\nexport default function processObject(\r\n  data: ObjectNode,\r\n  schema: Schema | TokenNode,\r\n  defs?: Definitions,\r\n  collectionIndex?: number,\r\n  context?: ProcessingContext\r\n) {\r\n  if (schema instanceof TokenNode) {\r\n    const schemaName = schema.value as string;\r\n    schema = defs?.getV(schemaName);\r\n  }\r\n\r\n  if (schema instanceof Schema === false) {\r\n    assertNever(\"Invalid schema type\");\r\n  }\r\n\r\n  return _processObject(data, schema as Schema, defs, collectionIndex, context);\r\n}\r\n\r\nfunction _processObject(\r\n  data: ObjectNode,\r\n  schema: Schema,\r\n  defs?: Definitions,\r\n  collectionIndex?: number,\r\n  context?: ProcessingContext\r\n) {\r\n  const o: InternetObject = new InternetObject();\r\n  let positional = true;\r\n  const processedNames = new Set<string>();\r\n\r\n  // Use provided context or create a local one for error collection\r\n  const ctx = context ?? new ProcessingContext();\r\n  const isTopLevel = !context; // True if we created the context (not passed in)\r\n\r\n  // Helper to handle errors: add to context\r\n  const handleError = (error: Error): void => {\r\n    ctx.addError(error);\r\n  };\r\n\r\n  // Helper to collect errors from nested InternetObjects\r\n  const collectNestedErrors = (val: any): void => {\r\n    if (val instanceof InternetObject && val.errors.length > 0) {\r\n      ctx.addErrors(val.errors);\r\n      // Clear nested errors after collecting to prevent double-counting\r\n      val.errors.length = 0;\r\n    }\r\n  };\r\n\r\n  // Special case: if schema has exactly one field and first data member has a key that doesn't match,\r\n  // treat the entire data object as the value for that single schema field\r\n  if (schema.names.length === 1 && data.children.length > 0) {\r\n    const firstMember = data.children[0] as MemberNode;\r\n    if (firstMember?.key && firstMember.key.value !== schema.names[0]) {\r\n      const name = schema.names[0];\r\n      const memberDef = _resolveMemberDefVariables(schema.defs[name], defs);\r\n      // Create a synthetic member with the entire data ObjectNode as its value\r\n      const syntheticMember = { key: null, value: data } as any;\r\n      try {\r\n        const val = processMember(syntheticMember, memberDef, defs);\r\n        // Collect errors from nested InternetObjects\r\n        collectNestedErrors(val);\r\n        if (val !== undefined) o.set(name, val);\r\n      } catch (err) {\r\n        if (err instanceof ValidationError) {\r\n          handleError(err);\r\n        } else {\r\n          throw err;\r\n        }\r\n      }\r\n      // If top-level call (no context passed), throw the first error (backward compatible)\r\n      if (isTopLevel && ctx.hasErrors()) {\r\n        throw ctx.getErrors()[0];\r\n      }\r\n      return o;\r\n    }\r\n  }\r\n\r\n  // Process positional schema members\r\n  let i=0;\r\n  for (; i<schema.names.length; i++) {\r\n    let member = data.children[i] as MemberNode;\r\n    let name = schema.names[i];\r\n    let memberDef = _resolveMemberDefVariables(schema.defs[name], defs);\r\n\r\n    if (member) {\r\n      if (member.key) {\r\n        positional = false;\r\n        break;\r\n      }\r\n\r\n      try {\r\n        const val = processMember(member, memberDef, defs);\r\n        // Collect errors from nested InternetObjects\r\n        collectNestedErrors(val);\r\n        // Only mark as processed if we actually obtained a value (or a default was applied)\r\n        if (val !== undefined) {\r\n          processedNames.add(name);\r\n          o.set(name, val);\r\n        } else {\r\n          // If optional and no default, allow later keyed assignment without triggering duplicate-member\r\n          if (!memberDef.optional && memberDef.default === undefined) {\r\n            // Required but undefined value – collect error\r\n            handleError(new ValidationError(ErrorCodes.valueRequired, `Expecting a value for ${memberDef.path}.`, data));\r\n          }\r\n          // Optional missing: skip adding to processedNames now so a later keyed value may fill it.\r\n        }\r\n      } catch (err) {\r\n        if (err instanceof ValidationError) {\r\n          handleError(err);\r\n          processedNames.add(name); // Mark as processed to avoid duplicate errors\r\n        } else {\r\n          throw err;\r\n        }\r\n      }\r\n    } else {\r\n      // Member node entirely missing\r\n      if (!memberDef.optional && memberDef.default === undefined) {\r\n        handleError(new ValidationError(ErrorCodes.valueRequired, `Expecting a value for ${memberDef.path}.`, data));\r\n        processedNames.add(name); // Mark as processed to avoid duplicate errors\r\n      } else {\r\n        try {\r\n          const dummyMember = { key: null, value: undefined } as any;\r\n          const val = processMember(dummyMember, memberDef, defs);\r\n          // Collect errors from nested InternetObjects\r\n          collectNestedErrors(val);\r\n          if (val !== undefined) {\r\n            processedNames.add(name);\r\n            o.set(name, val);\r\n          }\r\n        } catch (err) {\r\n          if (err instanceof ValidationError) {\r\n            handleError(err);\r\n            processedNames.add(name);\r\n          } else {\r\n            throw err;\r\n          }\r\n        }\r\n      }\r\n      // If val is undefined and optional with no default, deliberately do not mark processedNames\r\n    }\r\n  }\r\n\r\n  // Process remaining positional members\r\n  if (positional) {\r\n    for (; i<data.children.length; i++) {\r\n      const member = data.children[i] as MemberNode;\r\n      if (!schema.open) {\r\n        // This is a syntax error, not a validation error - throw immediately\r\n        throw new SyntaxError(ErrorCodes.additionalValuesNotAllowed, `Additional values are not allowed in the ${schema.name}. The ${schema.name} schema is not open.`, member.value);\r\n      }\r\n      if (member.key) {\r\n        positional = false;\r\n        break;\r\n      }\r\n\r\n      const val = member.value.toValue(defs)\r\n\r\n      o.push(val);\r\n    }\r\n  }\r\n\r\n  // Process remaining keyed members\r\n  for (; i<data.children.length; i++) {\r\n    let member = data.children[i] as MemberNode;\r\n\r\n    if (!member.key) {\r\n      // Syntax error - throw immediately\r\n      throw new SyntaxError(ErrorCodes.unexpectedPositionalMember, \"Positional members must not be allowed after the keyed member is found.\", member);\r\n    }\r\n\r\n    let name = member.key.value as string;\r\n    let memberDef = _resolveMemberDefVariables(schema.defs[name], defs);\r\n\r\n    if (processedNames.has(name)) {\r\n      // Syntax error - throw immediately\r\n      throw new SyntaxError(ErrorCodes.duplicateMember, `Member ${name} is already defined.`, member);\r\n    }\r\n\r\n    // When the member is not found check if the schema is open to allow\r\n    // additional properties. If not throw an error.\r\n    if (!memberDef && !schema.open) {\r\n      // Syntax error - throw immediately\r\n      throw new SyntaxError(\r\n        ErrorCodes.unknownMember, `The ${schema.name ? `${schema.name} ` : ''}schema does not define a member named '${name}'.`, member.key)\r\n    }\r\n\r\n    // In an open schema, the memberDef is not found. Use schema.open constraints if available, else type 'any'.\r\n    if (!memberDef && schema.open) {\r\n      if (typeof schema.open === 'object' && schema.open.type) {\r\n        memberDef = { ...schema.open, path: name as string };\r\n      } else {\r\n        memberDef = { type: 'any', path: name as string };\r\n      }\r\n    }\r\n\r\n    processedNames.add(name);\r\n    try {\r\n      const val = processMember(member, memberDef, defs);\r\n      // Collect errors from nested InternetObjects\r\n      collectNestedErrors(val);\r\n      o.set(name, val);\r\n    } catch (err) {\r\n      if (err instanceof ValidationError) {\r\n        handleError(err);\r\n      } else {\r\n        throw err;\r\n      }\r\n    }\r\n  }\r\n\r\n  // Check for missing required members and if the missing member has a\r\n  // default value, then set the default value. Otherwise, throw an error.\r\n  // But before throwing an error reset the position to the data node.\r\n  for (const name in schema.defs) {\r\n  // Skip the wildcard additional property definition ('*').\r\n  // It's not an actual member and must not participate in required checks.\r\n  if (name === '*') continue;\r\n\r\n    const memberDef = _resolveMemberDefVariables(schema.defs[name], defs);\r\n    if (!processedNames.has(name)) {\r\n      const member = data.children.find((m) => (m as any).key?.value === name)\r\n\r\n      try {\r\n        const val = processMember(member as any, memberDef, defs);\r\n        // Collect errors from nested InternetObjects\r\n        collectNestedErrors(val);\r\n        if (val !== undefined) {\r\n          o.set(name, val);\r\n        }\r\n      } catch (err) {\r\n        if (err instanceof ValidationError) {\r\n          // in case of missing member, set the position to the parent object.\r\n          err.positionRange = data;\r\n          handleError(err);\r\n        } else {\r\n          throw err;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  // Fallback: if schema is open and result is empty, process all data members as type 'any' or using schema.open constraints\r\n  if ((schema.open === true || (typeof schema.open === 'object' && schema.open.type)) && o.isEmpty()) {\r\n    for (const member of data.children) {\r\n      if (!member) continue;\r\n      const memberNode = member as any;\r\n      let name = memberNode.key ? memberNode.key.value : undefined;\r\n      if (!name) continue;\r\n      let memberDef: MemberDef;\r\n      if (typeof schema.open === 'object' && schema.open.type) {\r\n        memberDef = { ...schema.open, path: name };\r\n      } else {\r\n        memberDef = { type: 'any', path: name };\r\n      }\r\n      try {\r\n        const val = processMember(memberNode, memberDef, defs);\r\n        // Collect errors from nested InternetObjects\r\n        collectNestedErrors(val);\r\n        o.set(name, val);\r\n      } catch (err) {\r\n        if (err instanceof ValidationError) {\r\n          handleError(err);\r\n        } else {\r\n          throw err;\r\n        }\r\n      }\r\n    }\r\n    // If top-level call (no context passed), throw the first error (backward compatible)\r\n    if (isTopLevel && ctx.hasErrors()) {\r\n      throw ctx.getErrors()[0];\r\n    }\r\n    return o;\r\n  }\r\n\r\n  // If top-level call (no context passed), throw the first error (backward compatible)\r\n  // When context IS provided, errors are already in it - don't throw\r\n  if (isTopLevel && ctx.hasErrors()) {\r\n    throw ctx.getErrors()[0];\r\n  }\r\n\r\n  return o;\r\n}\r\n"],"mappings":"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","names":["TokenNode","resolved","Schema","assertNever","InternetObject","ValidationError","ErrorCodes","SyntaxError"]}