{"version":3,"sources":["../src/query/field-type-info.ts"],"names":["parseJsonPointer","hasOwnKey"],"mappings":";;;;;;AAIA,SAAS,mBAAmB,OAAA,EAA0B;AACpD,EAAA,OAAO,OAAA,CAAQ,KAAK,OAAO,CAAA;AAC7B;AAEO,SAAS,iCAAA,CACd,UACA,OAAA,EAC2B;AAC3B,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAWA,mCAAiB,OAAO,CAAA;AAEzC,EAAA,IAAI,OAAA,GAAqC,QAAA;AACzC,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAA,IAAI,OAAA,CAAQ,cAAc,OAAA,EAAS;AACjC,MAAA,IAAI,CAAC,kBAAA,CAAmB,OAAO,CAAA,EAAG;AAChC,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,yBAAyB,OAAO,CAAA,4BAAA;AAAA,SAClC;AAAA,MACF;AACA,MAAA,OAAA,GAAU,OAAA,CAAQ,eAAA;AAClB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,OAAA,CAAQ,cAAc,QAAA,EAAU;AAClC,MAAA,IAAI,kBAAA,CAAmB,OAAO,CAAA,EAAG;AAC/B,QAAA,MAAM,IAAI,KAAA;AAAA,UACR;AAAA,SACF;AAAA,MACF;AACA,MAAA,IAAI,QAAQ,KAAA,IAASC,2BAAA,CAAU,OAAA,CAAQ,KAAA,EAAO,OAAO,CAAA,EAAG;AACtD,QAAA,OAAA,GAAU,OAAA,CAAQ,MAAM,OAAO,CAAA;AAC/B,QAAA;AAAA,MACF;AACA,MAAA,IAAI,QAAQ,eAAA,EAAiB;AAC3B,QAAA,OAAA,GAAU,OAAA,CAAQ,eAAA;AAClB,QAAA;AAAA,MACF;AACA,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,yBAAyB,OAAO,CAAA,iCAAA;AAAA,OAClC;AAAA,IACF;AAEA,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,sBAAA,EAAyB,OAAO,CAAA,kBAAA,EAAqB,OAAA,CAAQ,SAAS,CAAA;AAAA,KACxE;AAAA,EACF;AAEA,EAAA,OAAO,OAAA;AACT","file":"chunk-OJCSA7LX.cjs","sourcesContent":["import { hasOwnKey } from \"../utils/object\";\nimport { type JsonPointer, parseJsonPointer } from \"./json-pointer\";\nimport { type FieldTypeInfo } from \"./schema-introspector\";\n\nfunction isJsonPointerIndex(segment: string): boolean {\n  return /^\\d+$/.test(segment);\n}\n\nexport function resolveFieldTypeInfoAtJsonPointer(\n  typeInfo: FieldTypeInfo | undefined,\n  pointer: JsonPointer,\n): FieldTypeInfo | undefined {\n  if (!typeInfo) {\n    return undefined;\n  }\n\n  const segments = parseJsonPointer(pointer);\n\n  let current: FieldTypeInfo | undefined = typeInfo;\n  for (const segment of segments) {\n    if (!current) {\n      return undefined;\n    }\n\n    if (current.valueType === \"array\") {\n      if (!isJsonPointerIndex(segment)) {\n        throw new Error(\n          `JSON Pointer segment \"${segment}\" is not a valid array index`,\n        );\n      }\n      current = current.elementTypeInfo;\n      continue;\n    }\n\n    if (current.valueType === \"object\") {\n      if (isJsonPointerIndex(segment)) {\n        throw new Error(\n          \"JSON Pointer numeric segments are only valid for arrays\",\n        );\n      }\n      if (current.shape && hasOwnKey(current.shape, segment)) {\n        current = current.shape[segment];\n        continue;\n      }\n      if (current.recordValueType) {\n        current = current.recordValueType;\n        continue;\n      }\n      throw new Error(\n        `JSON Pointer segment \"${segment}\" is not defined on object schema`,\n      );\n    }\n\n    throw new Error(\n      `JSON Pointer segment \"${segment}\" cannot traverse ${current.valueType}`,\n    );\n  }\n\n  return current;\n}\n"]}