{"version":3,"sources":["../../src/schema/processor.ts"],"sourcesContent":["import Collection from '../core/collection';\r\nimport Definitions from '../core/definitions';\r\nimport InternetObject from '../core/internet-object';\r\nimport CollectionNode from '../parser/nodes/collections';\r\nimport ObjectNode from '../parser/nodes/objects';\r\nimport TokenNode from '../parser/nodes/tokens';\r\nimport processObject from './object-processor';\r\nimport processCollection from './processing/collection-processor';\r\nimport { ProcessingContext } from './processing/processing-context';\r\nimport Schema from './schema';\r\nimport { ValidationUtils } from './utils/validation-utils';\r\n\r\ntype ProcessableData = ObjectNode | CollectionNode | null;\r\ntype SchemaType = Schema | TokenNode;\r\ntype ProcessResult = InternetObject | Collection<InternetObject> | null;\r\n\r\nexport default function processSchema(\r\n  data: ProcessableData,\r\n  schema: SchemaType,\r\n  defs?: Definitions,\r\n  errorCollector?: Error[]\r\n): ProcessResult {\r\n  // Early return for null data\r\n  if (data === null) {\r\n    return null;\r\n  }\r\n\r\n  // Validate inputs\r\n  const { data: validData, schema: validSchema } = ValidationUtils.validateProcessingInputs(data, schema);\r\n\r\n  // Route to appropriate processor\r\n  if (validData instanceof ObjectNode) {\r\n    // For single objects, create a context if errorCollector is provided\r\n    if (errorCollector) {\r\n      const ctx = new ProcessingContext();\r\n      const result = processObject(validData, validSchema, defs, void 0, ctx);\r\n      // Transfer errors to errorCollector\r\n      if (ctx.hasErrors()) {\r\n        errorCollector.push(...ctx.getErrors());\r\n      }\r\n      return result;\r\n    }\r\n    return processObject(validData, validSchema, defs);\r\n  }\r\n\r\n  // Must be CollectionNode at this point due to validation\r\n  return processCollection(validData as CollectionNode, validSchema, defs, errorCollector);\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,qBAAuB;AAEvB,8BAA0B;AAC1B,kCAA8B;AAC9B,gCAAkC;AAElC,8BAAgC;AAMjB,SAAR,cACL,MACA,QACA,MACA,gBACe;AAEf,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,EACT;AAGA,QAAM,EAAE,MAAM,WAAW,QAAQ,YAAY,IAAI,wCAAgB,yBAAyB,MAAM,MAAM;AAGtG,MAAI,qBAAqB,eAAAA,SAAY;AAEnC,QAAI,gBAAgB;AAClB,YAAM,MAAM,IAAI,4CAAkB;AAClC,YAAM,aAAS,wBAAAC,SAAc,WAAW,aAAa,MAAM,QAAQ,GAAG;AAEtE,UAAI,IAAI,UAAU,GAAG;AACnB,uBAAe,KAAK,GAAG,IAAI,UAAU,CAAC;AAAA,MACxC;AACA,aAAO;AAAA,IACT;AACA,eAAO,wBAAAA,SAAc,WAAW,aAAa,IAAI;AAAA,EACnD;AAGA,aAAO,4BAAAC,SAAkB,WAA6B,aAAa,MAAM,cAAc;AACzF;","names":["ObjectNode","processObject","processCollection"]}