@expo/schema-utils 57.0.0 → 57.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/deref.js CHANGED
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
3
+ exports.__esModule = true;
6
4
  exports.deref = deref;
7
5
  /** Return JSON schema ref if input is of `NodeRef` type */
8
6
  const getRef = node => node != null && typeof node === 'object' && '$ref' in node && typeof node.$ref === 'string' ? node.$ref : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"deref.js","names":["getRef","node","$ref","undefined","parseRefMaybe","ref","props","startIndex","index","char","length","charCodeAt","prop","slice","push","NOT_FOUND_SYMBOL","Symbol","getValueAtPath","input","part","findRefsRec","refs","path","Array","isArray","l","value","targetRef","set","pop","record","key","isSelfReferencingRefEntry","target","source","getSortedRefEntries","entries","sort","a","b","filter","entry","deref","Map","output","nextRef","inputNode","outputNode","targetIndex","sourceValue","rootTargetRef","title","description"],"sources":["../src/deref.ts"],"sourcesContent":["type RefPath = readonly (string | number)[];\n\ninterface NodeRef {\n $ref: string;\n}\n\n/** Return JSON schema ref if input is of `NodeRef` type */\nconst getRef = (node: NodeRef | unknown): string | undefined =>\n node != null && typeof node === 'object' && '$ref' in node && typeof node.$ref === 'string'\n ? node.$ref\n : undefined;\n\n/** Parse a JSON schema ref into a path array, or return undefined */\nconst parseRefMaybe = (ref: string | undefined): RefPath | undefined => {\n if (ref == null || ref[0] !== '#') {\n return undefined;\n }\n const props = [];\n let startIndex = 1;\n let index = 1;\n let char: number;\n while (index < ref.length) {\n while ((char = ref.charCodeAt(index++)) && char !== 47 /*'/'*/);\n const prop = ref.slice(startIndex, index - 1);\n startIndex = index;\n if (prop) props.push(prop);\n }\n return props.length ? props : undefined;\n};\n\nconst NOT_FOUND_SYMBOL = Symbol();\n\n/** Get value at given JSON schema path or return `NOT_FOUND_SYMBOL` */\nconst getValueAtPath = (input: unknown, ref: RefPath): unknown | typeof NOT_FOUND_SYMBOL => {\n let node = input;\n for (let index = 0; index < ref.length; index++) {\n const part = ref[index];\n if (node != null && typeof node === 'object' && part != null && part in node) {\n node = (node as Record<string, unknown>)[part];\n } else {\n node = NOT_FOUND_SYMBOL;\n break;\n }\n }\n return node;\n};\n\n/** Find all JSON schema refs recursively and add them to `refs` Map */\nconst findRefsRec = (\n node: unknown,\n refs: Map<RefPath, RefPath>,\n path: (string | number)[]\n): void => {\n if (node == null || typeof node !== 'object') {\n } else if (Array.isArray(node)) {\n for (let index = 0, l = node.length; index < l; index++) {\n const value = node[index];\n const ref = getRef(value);\n if (ref) {\n const targetRef = parseRefMaybe(ref);\n if (targetRef) refs.set([...path, index], targetRef);\n } else if (value != null && typeof value === 'object') {\n path.push(index);\n findRefsRec(value, refs, path);\n path.pop();\n }\n }\n } else {\n const record = node as Record<string, unknown>;\n for (const key in record) {\n const value = record[key];\n const ref = getRef(value);\n if (ref) {\n const targetRef = parseRefMaybe(ref);\n if (targetRef) refs.set([...path, key], targetRef);\n } else if (value != null && typeof value === 'object') {\n path.push(key);\n findRefsRec(value, refs, path);\n path.pop();\n }\n }\n }\n};\n\n/** Detect whether target (where we set the source value) is a nested path inside the source path */\nconst isSelfReferencingRefEntry = (target: RefPath, source: RefPath) => {\n for (let index = 0; index < source.length; index++) {\n if (source[index] !== target[index]) return false;\n }\n return true;\n};\n\n/** Return sorted refs entries. Longest target paths will be returned first */\nconst getSortedRefEntries = (refs: Map<RefPath, RefPath>): readonly [RefPath, RefPath][] => {\n const entries = [...refs.entries()].sort((a, b) => b[1].length - a[1].length);\n // Filter out self-referenceing paths. If we set nested targets to source values, we'd\n // create unserializable circular references\n return entries.filter((entry) => !isSelfReferencingRefEntry(entry[0], entry[1]));\n};\n\n/** Dereference JSON schema pointers.\n *\n * @remarks\n * This is a minimal reimplementation of `json-schema-deref-sync` without\n * file reference, URL/web reference, and loader support.\n *\n * @see https://github.com/cvent/json-schema-deref-sync\n */\nexport function deref(input: any): any {\n const refs = new Map<RefPath, RefPath>();\n // Find all JSON schema refs paths\n findRefsRec(input, refs, []);\n // Shallow copy output\n const output = { ...input };\n // Process all ref entries with deepest targets first\n nextRef: for (const [target, source] of getSortedRefEntries(refs)) {\n let inputNode = input;\n let outputNode = output;\n let targetIndex = 0;\n // For each path part on the target, traverse the output and clone the input\n // to not pollute it\n for (; targetIndex < target.length - 1; targetIndex++) {\n const part = target[targetIndex];\n if (\n inputNode == null ||\n typeof inputNode !== 'object' ||\n part == null ||\n !(part in inputNode)\n ) {\n // If the part doesn't exist, we abort\n break;\n } else if (outputNode[part] === inputNode[part]) {\n // Copy the input on the output if references are equal\n outputNode[part] = Array.isArray(inputNode[part])\n ? [...inputNode[part]]\n : { ...inputNode[part] };\n inputNode = inputNode[part];\n outputNode = outputNode[part];\n } else {\n // If this part has already been copied, abort\n break;\n }\n }\n // For each remaining part on the target, continue traversing the output\n for (; targetIndex < target.length - 1; targetIndex++) {\n const part = target[targetIndex];\n if (\n outputNode == null ||\n typeof outputNode !== 'object' ||\n part == null ||\n !(part in outputNode)\n ) {\n // If the part doesn't exist, skip the entire ref\n continue nextRef;\n } else {\n outputNode = outputNode[part];\n }\n }\n // Get value from output\n let sourceValue = getValueAtPath(output, source);\n if (sourceValue === NOT_FOUND_SYMBOL) {\n // If no value was found, try to get a value from the input instead\n sourceValue = getValueAtPath(input, source);\n // Otherwise, skip this ref\n if (sourceValue === NOT_FOUND_SYMBOL) continue;\n }\n // Set the source value on the target path\n // The for-loops prior have made sure that the output has already been deeply\n // cloned and traversed for the entire path\n outputNode[target[target.length - 1]!] = sourceValue;\n }\n // Handle root refs last\n const rootTargetRef = parseRefMaybe(getRef(input));\n if (rootTargetRef) {\n // Get value from output\n let sourceValue = getValueAtPath(output, rootTargetRef);\n // If no value was found, try to get a value from the input instead\n if (sourceValue === NOT_FOUND_SYMBOL) {\n sourceValue = getValueAtPath(input, rootTargetRef);\n }\n // Assign the target object to the output\n if (sourceValue !== NOT_FOUND_SYMBOL && sourceValue != null) {\n return typeof sourceValue === 'object'\n ? {\n ...sourceValue,\n title: output.title,\n description: output.description,\n }\n : sourceValue;\n }\n }\n // Return the output with resolved refs\n return output;\n}\n"],"mappings":";;;;;;AAMA;AACA,MAAMA,MAAM,GAAIC,IAAuB,IACrCA,IAAI,IAAI,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAIA,IAAI,IAAI,OAAOA,IAAI,CAACC,IAAI,KAAK,QAAQ,GACvFD,IAAI,CAACC,IAAI,GACTC,SAAS;;AAEf;AACA,MAAMC,aAAa,GAAIC,GAAuB,IAA0B;EACtE,IAAIA,GAAG,IAAI,IAAI,IAAIA,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACjC,OAAOF,SAAS;EAClB;EACA,MAAMG,KAAK,GAAG,EAAE;EAChB,IAAIC,UAAU,GAAG,CAAC;EAClB,IAAIC,KAAK,GAAG,CAAC;EACb,IAAIC,IAAY;EAChB,OAAOD,KAAK,GAAGH,GAAG,CAACK,MAAM,EAAE;IACzB,OAAO,CAACD,IAAI,GAAGJ,GAAG,CAACM,UAAU,CAACH,KAAK,EAAE,CAAC,KAAKC,IAAI,KAAK,EAAE,CAAC,QAAQ;IAC/D,MAAMG,IAAI,GAAGP,GAAG,CAACQ,KAAK,CAACN,UAAU,EAAEC,KAAK,GAAG,CAAC,CAAC;IAC7CD,UAAU,GAAGC,KAAK;IAClB,IAAII,IAAI,EAAEN,KAAK,CAACQ,IAAI,CAACF,IAAI,CAAC;EAC5B;EACA,OAAON,KAAK,CAACI,MAAM,GAAGJ,KAAK,GAAGH,SAAS;AACzC,CAAC;AAED,MAAMY,gBAAgB,GAAGC,MAAM,CAAC,CAAC;;AAEjC;AACA,MAAMC,cAAc,GAAGA,CAACC,KAAc,EAAEb,GAAY,KAAwC;EAC1F,IAAIJ,IAAI,GAAGiB,KAAK;EAChB,KAAK,IAAIV,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGH,GAAG,CAACK,MAAM,EAAEF,KAAK,EAAE,EAAE;IAC/C,MAAMW,IAAI,GAAGd,GAAG,CAACG,KAAK,CAAC;IACvB,IAAIP,IAAI,IAAI,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAIkB,IAAI,IAAI,IAAI,IAAIA,IAAI,IAAIlB,IAAI,EAAE;MAC5EA,IAAI,GAAIA,IAAI,CAA6BkB,IAAI,CAAC;IAChD,CAAC,MAAM;MACLlB,IAAI,GAAGc,gBAAgB;MACvB;IACF;EACF;EACA,OAAOd,IAAI;AACb,CAAC;;AAED;AACA,MAAMmB,WAAW,GAAGA,CAClBnB,IAAa,EACboB,IAA2B,EAC3BC,IAAyB,KAChB;EACT,IAAIrB,IAAI,IAAI,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE,CAC9C,CAAC,MAAM,IAAIsB,KAAK,CAACC,OAAO,CAACvB,IAAI,CAAC,EAAE;IAC9B,KAAK,IAAIO,KAAK,GAAG,CAAC,EAAEiB,CAAC,GAAGxB,IAAI,CAACS,MAAM,EAAEF,KAAK,GAAGiB,CAAC,EAAEjB,KAAK,EAAE,EAAE;MACvD,MAAMkB,KAAK,GAAGzB,IAAI,CAACO,KAAK,CAAC;MACzB,MAAMH,GAAG,GAAGL,MAAM,CAAC0B,KAAK,CAAC;MACzB,IAAIrB,GAAG,EAAE;QACP,MAAMsB,SAAS,GAAGvB,aAAa,CAACC,GAAG,CAAC;QACpC,IAAIsB,SAAS,EAAEN,IAAI,CAACO,GAAG,CAAC,CAAC,GAAGN,IAAI,EAAEd,KAAK,CAAC,EAAEmB,SAAS,CAAC;MACtD,CAAC,MAAM,IAAID,KAAK,IAAI,IAAI,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;QACrDJ,IAAI,CAACR,IAAI,CAACN,KAAK,CAAC;QAChBY,WAAW,CAACM,KAAK,EAAEL,IAAI,EAAEC,IAAI,CAAC;QAC9BA,IAAI,CAACO,GAAG,CAAC,CAAC;MACZ;IACF;EACF,CAAC,MAAM;IACL,MAAMC,MAAM,GAAG7B,IAA+B;IAC9C,KAAK,MAAM8B,GAAG,IAAID,MAAM,EAAE;MACxB,MAAMJ,KAAK,GAAGI,MAAM,CAACC,GAAG,CAAC;MACzB,MAAM1B,GAAG,GAAGL,MAAM,CAAC0B,KAAK,CAAC;MACzB,IAAIrB,GAAG,EAAE;QACP,MAAMsB,SAAS,GAAGvB,aAAa,CAACC,GAAG,CAAC;QACpC,IAAIsB,SAAS,EAAEN,IAAI,CAACO,GAAG,CAAC,CAAC,GAAGN,IAAI,EAAES,GAAG,CAAC,EAAEJ,SAAS,CAAC;MACpD,CAAC,MAAM,IAAID,KAAK,IAAI,IAAI,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;QACrDJ,IAAI,CAACR,IAAI,CAACiB,GAAG,CAAC;QACdX,WAAW,CAACM,KAAK,EAAEL,IAAI,EAAEC,IAAI,CAAC;QAC9BA,IAAI,CAACO,GAAG,CAAC,CAAC;MACZ;IACF;EACF;AACF,CAAC;;AAED;AACA,MAAMG,yBAAyB,GAAGA,CAACC,MAAe,EAAEC,MAAe,KAAK;EACtE,KAAK,IAAI1B,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG0B,MAAM,CAACxB,MAAM,EAAEF,KAAK,EAAE,EAAE;IAClD,IAAI0B,MAAM,CAAC1B,KAAK,CAAC,KAAKyB,MAAM,CAACzB,KAAK,CAAC,EAAE,OAAO,KAAK;EACnD;EACA,OAAO,IAAI;AACb,CAAC;;AAED;AACA,MAAM2B,mBAAmB,GAAId,IAA2B,IAAoC;EAC1F,MAAMe,OAAO,GAAG,CAAC,GAAGf,IAAI,CAACe,OAAO,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKA,CAAC,CAAC,CAAC,CAAC,CAAC7B,MAAM,GAAG4B,CAAC,CAAC,CAAC,CAAC,CAAC5B,MAAM,CAAC;EAC7E;EACA;EACA,OAAO0B,OAAO,CAACI,MAAM,CAAEC,KAAK,IAAK,CAACT,yBAAyB,CAACS,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,KAAKA,CAACxB,KAAU,EAAO;EACrC,MAAMG,IAAI,GAAG,IAAIsB,GAAG,CAAmB,CAAC;EACxC;EACAvB,WAAW,CAACF,KAAK,EAAEG,IAAI,EAAE,EAAE,CAAC;EAC5B;EACA,MAAMuB,MAAM,GAAG;IAAE,GAAG1B;EAAM,CAAC;EAC3B;EACA2B,OAAO,EAAE,KAAK,MAAM,CAACZ,MAAM,EAAEC,MAAM,CAAC,IAAIC,mBAAmB,CAACd,IAAI,CAAC,EAAE;IACjE,IAAIyB,SAAS,GAAG5B,KAAK;IACrB,IAAI6B,UAAU,GAAGH,MAAM;IACvB,IAAII,WAAW,GAAG,CAAC;IACnB;IACA;IACA,OAAOA,WAAW,GAAGf,MAAM,CAACvB,MAAM,GAAG,CAAC,EAAEsC,WAAW,EAAE,EAAE;MACrD,MAAM7B,IAAI,GAAGc,MAAM,CAACe,WAAW,CAAC;MAChC,IACEF,SAAS,IAAI,IAAI,IACjB,OAAOA,SAAS,KAAK,QAAQ,IAC7B3B,IAAI,IAAI,IAAI,IACZ,EAAEA,IAAI,IAAI2B,SAAS,CAAC,EACpB;QACA;QACA;MACF,CAAC,MAAM,IAAIC,UAAU,CAAC5B,IAAI,CAAC,KAAK2B,SAAS,CAAC3B,IAAI,CAAC,EAAE;QAC/C;QACA4B,UAAU,CAAC5B,IAAI,CAAC,GAAGI,KAAK,CAACC,OAAO,CAACsB,SAAS,CAAC3B,IAAI,CAAC,CAAC,GAC7C,CAAC,GAAG2B,SAAS,CAAC3B,IAAI,CAAC,CAAC,GACpB;UAAE,GAAG2B,SAAS,CAAC3B,IAAI;QAAE,CAAC;QAC1B2B,SAAS,GAAGA,SAAS,CAAC3B,IAAI,CAAC;QAC3B4B,UAAU,GAAGA,UAAU,CAAC5B,IAAI,CAAC;MAC/B,CAAC,MAAM;QACL;QACA;MACF;IACF;IACA;IACA,OAAO6B,WAAW,GAAGf,MAAM,CAACvB,MAAM,GAAG,CAAC,EAAEsC,WAAW,EAAE,EAAE;MACrD,MAAM7B,IAAI,GAAGc,MAAM,CAACe,WAAW,CAAC;MAChC,IACED,UAAU,IAAI,IAAI,IAClB,OAAOA,UAAU,KAAK,QAAQ,IAC9B5B,IAAI,IAAI,IAAI,IACZ,EAAEA,IAAI,IAAI4B,UAAU,CAAC,EACrB;QACA;QACA,SAASF,OAAO;MAClB,CAAC,MAAM;QACLE,UAAU,GAAGA,UAAU,CAAC5B,IAAI,CAAC;MAC/B;IACF;IACA;IACA,IAAI8B,WAAW,GAAGhC,cAAc,CAAC2B,MAAM,EAAEV,MAAM,CAAC;IAChD,IAAIe,WAAW,KAAKlC,gBAAgB,EAAE;MACpC;MACAkC,WAAW,GAAGhC,cAAc,CAACC,KAAK,EAAEgB,MAAM,CAAC;MAC3C;MACA,IAAIe,WAAW,KAAKlC,gBAAgB,EAAE;IACxC;IACA;IACA;IACA;IACAgC,UAAU,CAACd,MAAM,CAACA,MAAM,CAACvB,MAAM,GAAG,CAAC,CAAC,CAAE,GAAGuC,WAAW;EACtD;EACA;EACA,MAAMC,aAAa,GAAG9C,aAAa,CAACJ,MAAM,CAACkB,KAAK,CAAC,CAAC;EAClD,IAAIgC,aAAa,EAAE;IACjB;IACA,IAAID,WAAW,GAAGhC,cAAc,CAAC2B,MAAM,EAAEM,aAAa,CAAC;IACvD;IACA,IAAID,WAAW,KAAKlC,gBAAgB,EAAE;MACpCkC,WAAW,GAAGhC,cAAc,CAACC,KAAK,EAAEgC,aAAa,CAAC;IACpD;IACA;IACA,IAAID,WAAW,KAAKlC,gBAAgB,IAAIkC,WAAW,IAAI,IAAI,EAAE;MAC3D,OAAO,OAAOA,WAAW,KAAK,QAAQ,GAClC;QACE,GAAGA,WAAW;QACdE,KAAK,EAAEP,MAAM,CAACO,KAAK;QACnBC,WAAW,EAAER,MAAM,CAACQ;MACtB,CAAC,GACDH,WAAW;IACjB;EACF;EACA;EACA,OAAOL,MAAM;AACf","ignoreList":[]}
1
+ {"version":3,"file":"deref.js","names":["getRef","node","$ref","undefined","parseRefMaybe","ref","props","startIndex","index","char","length","charCodeAt","prop","slice","push","NOT_FOUND_SYMBOL","Symbol","getValueAtPath","input","part","findRefsRec","refs","path","Array","isArray","l","value","targetRef","set","pop","record","key","isSelfReferencingRefEntry","target","source","getSortedRefEntries","entries","sort","a","b","filter","entry","deref","Map","output","nextRef","inputNode","outputNode","targetIndex","sourceValue","rootTargetRef","title","description"],"sources":["../src/deref.ts"],"sourcesContent":["type RefPath = readonly (string | number)[];\n\ninterface NodeRef {\n $ref: string;\n}\n\n/** Return JSON schema ref if input is of `NodeRef` type */\nconst getRef = (node: NodeRef | unknown): string | undefined =>\n node != null && typeof node === 'object' && '$ref' in node && typeof node.$ref === 'string'\n ? node.$ref\n : undefined;\n\n/** Parse a JSON schema ref into a path array, or return undefined */\nconst parseRefMaybe = (ref: string | undefined): RefPath | undefined => {\n if (ref == null || ref[0] !== '#') {\n return undefined;\n }\n const props = [];\n let startIndex = 1;\n let index = 1;\n let char: number;\n while (index < ref.length) {\n while ((char = ref.charCodeAt(index++)) && char !== 47 /*'/'*/);\n const prop = ref.slice(startIndex, index - 1);\n startIndex = index;\n if (prop) props.push(prop);\n }\n return props.length ? props : undefined;\n};\n\nconst NOT_FOUND_SYMBOL = Symbol();\n\n/** Get value at given JSON schema path or return `NOT_FOUND_SYMBOL` */\nconst getValueAtPath = (input: unknown, ref: RefPath): unknown | typeof NOT_FOUND_SYMBOL => {\n let node = input;\n for (let index = 0; index < ref.length; index++) {\n const part = ref[index];\n if (node != null && typeof node === 'object' && part != null && part in node) {\n node = (node as Record<string, unknown>)[part];\n } else {\n node = NOT_FOUND_SYMBOL;\n break;\n }\n }\n return node;\n};\n\n/** Find all JSON schema refs recursively and add them to `refs` Map */\nconst findRefsRec = (\n node: unknown,\n refs: Map<RefPath, RefPath>,\n path: (string | number)[]\n): void => {\n if (node == null || typeof node !== 'object') {\n } else if (Array.isArray(node)) {\n for (let index = 0, l = node.length; index < l; index++) {\n const value = node[index];\n const ref = getRef(value);\n if (ref) {\n const targetRef = parseRefMaybe(ref);\n if (targetRef) refs.set([...path, index], targetRef);\n } else if (value != null && typeof value === 'object') {\n path.push(index);\n findRefsRec(value, refs, path);\n path.pop();\n }\n }\n } else {\n const record = node as Record<string, unknown>;\n for (const key in record) {\n const value = record[key];\n const ref = getRef(value);\n if (ref) {\n const targetRef = parseRefMaybe(ref);\n if (targetRef) refs.set([...path, key], targetRef);\n } else if (value != null && typeof value === 'object') {\n path.push(key);\n findRefsRec(value, refs, path);\n path.pop();\n }\n }\n }\n};\n\n/** Detect whether target (where we set the source value) is a nested path inside the source path */\nconst isSelfReferencingRefEntry = (target: RefPath, source: RefPath) => {\n for (let index = 0; index < source.length; index++) {\n if (source[index] !== target[index]) return false;\n }\n return true;\n};\n\n/** Return sorted refs entries. Longest target paths will be returned first */\nconst getSortedRefEntries = (refs: Map<RefPath, RefPath>): readonly [RefPath, RefPath][] => {\n const entries = [...refs.entries()].sort((a, b) => b[1].length - a[1].length);\n // Filter out self-referenceing paths. If we set nested targets to source values, we'd\n // create unserializable circular references\n return entries.filter((entry) => !isSelfReferencingRefEntry(entry[0], entry[1]));\n};\n\n/** Dereference JSON schema pointers.\n *\n * @remarks\n * This is a minimal reimplementation of `json-schema-deref-sync` without\n * file reference, URL/web reference, and loader support.\n *\n * @see https://github.com/cvent/json-schema-deref-sync\n */\nexport function deref(input: any): any {\n const refs = new Map<RefPath, RefPath>();\n // Find all JSON schema refs paths\n findRefsRec(input, refs, []);\n // Shallow copy output\n const output = { ...input };\n // Process all ref entries with deepest targets first\n nextRef: for (const [target, source] of getSortedRefEntries(refs)) {\n let inputNode = input;\n let outputNode = output;\n let targetIndex = 0;\n // For each path part on the target, traverse the output and clone the input\n // to not pollute it\n for (; targetIndex < target.length - 1; targetIndex++) {\n const part = target[targetIndex];\n if (\n inputNode == null ||\n typeof inputNode !== 'object' ||\n part == null ||\n !(part in inputNode)\n ) {\n // If the part doesn't exist, we abort\n break;\n } else if (outputNode[part] === inputNode[part]) {\n // Copy the input on the output if references are equal\n outputNode[part] = Array.isArray(inputNode[part])\n ? [...inputNode[part]]\n : { ...inputNode[part] };\n inputNode = inputNode[part];\n outputNode = outputNode[part];\n } else {\n // If this part has already been copied, abort\n break;\n }\n }\n // For each remaining part on the target, continue traversing the output\n for (; targetIndex < target.length - 1; targetIndex++) {\n const part = target[targetIndex];\n if (\n outputNode == null ||\n typeof outputNode !== 'object' ||\n part == null ||\n !(part in outputNode)\n ) {\n // If the part doesn't exist, skip the entire ref\n continue nextRef;\n } else {\n outputNode = outputNode[part];\n }\n }\n // Get value from output\n let sourceValue = getValueAtPath(output, source);\n if (sourceValue === NOT_FOUND_SYMBOL) {\n // If no value was found, try to get a value from the input instead\n sourceValue = getValueAtPath(input, source);\n // Otherwise, skip this ref\n if (sourceValue === NOT_FOUND_SYMBOL) continue;\n }\n // Set the source value on the target path\n // The for-loops prior have made sure that the output has already been deeply\n // cloned and traversed for the entire path\n outputNode[target[target.length - 1]!] = sourceValue;\n }\n // Handle root refs last\n const rootTargetRef = parseRefMaybe(getRef(input));\n if (rootTargetRef) {\n // Get value from output\n let sourceValue = getValueAtPath(output, rootTargetRef);\n // If no value was found, try to get a value from the input instead\n if (sourceValue === NOT_FOUND_SYMBOL) {\n sourceValue = getValueAtPath(input, rootTargetRef);\n }\n // Assign the target object to the output\n if (sourceValue !== NOT_FOUND_SYMBOL && sourceValue != null) {\n return typeof sourceValue === 'object'\n ? {\n ...sourceValue,\n title: output.title,\n description: output.description,\n }\n : sourceValue;\n }\n }\n // Return the output with resolved refs\n return output;\n}\n"],"mappings":"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","ignoreList":[]}
package/build/index.js CHANGED
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
3
+ exports.__esModule = true;
6
4
  exports.ValidationError = void 0;
7
5
  exports.derefSchema = derefSchema;
8
6
  exports.validate = validate;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_deref","data","require","_validate","CACHE_SYMBOL","Symbol","flattenValidationResults","input","output","push","message","path","keyword","value","cause","toErrorsMessages","errors","map","error","ValidationError","Error","constructor","result","schema","title","line","join","name","toErrorsMessage","exports","derefSchemaCache","derefed","deref","cache","WeakMap","derefSchema","validate","get","undefined","validateSchema","set"],"sources":["../src/index.ts"],"sourcesContent":["import { JSONSchema } from './JSONSchema';\nimport { deref } from './deref';\nimport {\n validateSchema,\n BaseValidationError,\n ValidationError as ValidationResult,\n} from './validate';\n\nexport type { JSONSchema } from './JSONSchema';\n\nconst CACHE_SYMBOL = Symbol('@expo/schema-utils');\n\ninterface SchemaCacheData {\n schema: JSONSchema;\n cache: WeakMap<object, ValidationResult | null>;\n}\n\nconst flattenValidationResults = (\n input: ValidationResult,\n output: BaseValidationError[] = []\n): BaseValidationError[] => {\n output.push({\n message: input.message,\n path: input.path,\n keyword: input.keyword,\n value: input.value,\n });\n for (const cause of input.cause ?? []) {\n flattenValidationResults(cause, output);\n }\n return output;\n};\n\nconst toErrorsMessages = (errors: BaseValidationError[]) =>\n errors.map((error) => {\n return `\\n - options${error.path} (${error.keyword}): ${error.message}`;\n });\n\nexport class ValidationError<T> extends Error {\n schema: JSONSchema<T>;\n errors: BaseValidationError[];\n constructor(result: ValidationResult, schema: JSONSchema<T>) {\n const errors = flattenValidationResults(result);\n const title = typeof schema.title === 'string' ? schema.title : 'Value';\n super(\n `Invalid options object. ${title} options object does not match the defined schema.\\n` +\n toErrorsMessages(errors)\n .map((line) => ` - options${line}`)\n .join('\\n')\n );\n this.name = 'ValidationError';\n this.errors = errors;\n this.schema = schema;\n }\n\n toErrorsMessage(): string[] {\n return toErrorsMessages(this.errors);\n }\n}\n\nconst derefSchemaCache = (schema: JSONSchema): SchemaCacheData => {\n let derefed = (schema as any)[CACHE_SYMBOL] as SchemaCacheData | undefined;\n if (!derefed) {\n derefed = {\n schema: deref(schema),\n cache: new WeakMap(),\n };\n (schema as any)[CACHE_SYMBOL] = derefed;\n }\n return derefed!;\n};\n\nexport function derefSchema<T>(schema: JSONSchema<T>): JSONSchema<T> {\n return derefSchemaCache(schema).schema;\n}\n\nexport function validate<T>(schema: JSONSchema<T>, value: unknown): asserts value is T {\n const data = derefSchemaCache(schema);\n let result: ValidationResult | null | undefined;\n if (\n typeof value !== 'object' ||\n value == null ||\n (result = data.cache.get(value)) === undefined\n ) {\n result = validateSchema(data.schema, value, '');\n if (typeof value === 'object' && value != null) {\n data.cache.set(value, result);\n }\n }\n if (result) {\n throw new ValidationError(result, data.schema);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_deref","data","require","_validate","CACHE_SYMBOL","Symbol","flattenValidationResults","input","output","push","message","path","keyword","value","cause","toErrorsMessages","errors","map","error","ValidationError","Error","constructor","result","schema","title","line","join","name","toErrorsMessage","exports","derefSchemaCache","derefed","deref","cache","WeakMap","derefSchema","validate","get","undefined","validateSchema","set"],"sources":["../src/index.ts"],"sourcesContent":["import { JSONSchema } from './JSONSchema';\nimport { deref } from './deref';\nimport {\n validateSchema,\n BaseValidationError,\n ValidationError as ValidationResult,\n} from './validate';\n\nexport type { JSONSchema } from './JSONSchema';\n\nconst CACHE_SYMBOL = Symbol('@expo/schema-utils');\n\ninterface SchemaCacheData {\n schema: JSONSchema;\n cache: WeakMap<object, ValidationResult | null>;\n}\n\nconst flattenValidationResults = (\n input: ValidationResult,\n output: BaseValidationError[] = []\n): BaseValidationError[] => {\n output.push({\n message: input.message,\n path: input.path,\n keyword: input.keyword,\n value: input.value,\n });\n for (const cause of input.cause ?? []) {\n flattenValidationResults(cause, output);\n }\n return output;\n};\n\nconst toErrorsMessages = (errors: BaseValidationError[]) =>\n errors.map((error) => {\n return `\\n - options${error.path} (${error.keyword}): ${error.message}`;\n });\n\nexport class ValidationError<T> extends Error {\n schema: JSONSchema<T>;\n errors: BaseValidationError[];\n constructor(result: ValidationResult, schema: JSONSchema<T>) {\n const errors = flattenValidationResults(result);\n const title = typeof schema.title === 'string' ? schema.title : 'Value';\n super(\n `Invalid options object. ${title} options object does not match the defined schema.\\n` +\n toErrorsMessages(errors)\n .map((line) => ` - options${line}`)\n .join('\\n')\n );\n this.name = 'ValidationError';\n this.errors = errors;\n this.schema = schema;\n }\n\n toErrorsMessage(): string[] {\n return toErrorsMessages(this.errors);\n }\n}\n\nconst derefSchemaCache = (schema: JSONSchema): SchemaCacheData => {\n let derefed = (schema as any)[CACHE_SYMBOL] as SchemaCacheData | undefined;\n if (!derefed) {\n derefed = {\n schema: deref(schema),\n cache: new WeakMap(),\n };\n (schema as any)[CACHE_SYMBOL] = derefed;\n }\n return derefed!;\n};\n\nexport function derefSchema<T>(schema: JSONSchema<T>): JSONSchema<T> {\n return derefSchemaCache(schema).schema;\n}\n\nexport function validate<T>(schema: JSONSchema<T>, value: unknown): asserts value is T {\n const data = derefSchemaCache(schema);\n let result: ValidationResult | null | undefined;\n if (\n typeof value !== 'object' ||\n value == null ||\n (result = data.cache.get(value)) === undefined\n ) {\n result = validateSchema(data.schema, value, '');\n if (typeof value === 'object' && value != null) {\n data.cache.set(value, result);\n }\n }\n if (result) {\n throw new ValidationError(result, data.schema);\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/build/validate.js CHANGED
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
3
+ exports.__esModule = true;
6
4
  exports.validateSchema = void 0;
7
5
  const getValueType = value => {
8
6
  const typeOf = typeof value;
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","names":["getValueType","value","typeOf","Number","isInteger","Array","isArray","isDeepEqual","a","b","length","idx","keysA","Object","keys","keysB","key","areArrayValuesUnique","array","i","j","dateRe","dateTimeRe","timeRe","emailRe","hostnameRe","uriRe","validateFormat","format","test","TypeError","isEnumValue","enumValues","validateString","schema","path","minLength","message","keyword","maxLength","pattern","RegExp","validateNumber","multipleOf","minimum","maximum","exclusiveMaximum","exclusiveMinimum","validateContains","containsSchema","validateSchema","validateItems","itemsSchema","additionalItems","child","validateArray","minItems","maxItems","uniqueItems","contains","items","validateRequired","undefined","validateProperties","properties","validatePatternProperties","validatedProperties","patternProperties","propertyRe","childSchema","add","validateAdditionalProperties","additionalProperties","visitedPatternProperties","has","validatePropertyNames","propertyNames","validateDependencies","dependencies","dependency","property","validateObject","Set","minProperties","maxProperties","required","validateType","schemaType","valueType","includes","join","validateAllOf","schemas","validateAnyOf","cause","push","validateOneOf","validateConditional","ifSchema","thenSchema","elseSchema","type","const","JSON","stringify","enum","allOf","anyOf","oneOf","not","if","then","else","exports"],"sources":["../src/validate.ts"],"sourcesContent":["import { JSONSchema } from './JSONSchema';\n\nexport interface BaseValidationError {\n message: string;\n path: string;\n keyword: string;\n value: unknown;\n}\n\nexport interface ValidationError extends BaseValidationError {\n cause?: ValidationError[];\n}\n\ntype OneOrMany<T> = T | T[];\n\nconst getValueType = (\n value: unknown\n):\n | 'null'\n | 'boolean'\n | 'object'\n | 'array'\n | 'number'\n | 'integer'\n | 'string'\n | 'symbol'\n | 'undefined'\n | 'bigint'\n | 'function' => {\n const typeOf = typeof value;\n switch (typeOf) {\n case 'number':\n return Number.isInteger(value) ? 'integer' : 'number';\n case 'boolean':\n case 'string':\n return typeOf;\n case 'object':\n if (value === null) {\n return 'null';\n } else if (Array.isArray(value)) {\n return 'array';\n } else {\n return 'object';\n }\n default:\n return typeOf;\n }\n};\n\nconst isDeepEqual = (a: any, b: any): boolean => {\n if (a === b) {\n return true;\n } else if (a === null || b === null) {\n return false;\n } else if (typeof a !== typeof b) {\n return false;\n } else if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (let idx = 0; idx < a.length; idx++) {\n if (!isDeepEqual(a[idx], b[idx])) return false;\n }\n return true;\n } else if (typeof a === 'object') {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (!isDeepEqual(keysA, keysB)) {\n return false;\n }\n for (const key of keysA) {\n if (!isDeepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n};\n\nconst areArrayValuesUnique = (array: unknown[]): boolean => {\n for (let i = 0; i < array.length; i++) {\n for (let j = 0; j < array.length; j++) {\n if (i !== j && isDeepEqual(array[i], array[j])) {\n return false;\n }\n }\n }\n return true;\n};\n\nconst dateRe = /^\\d{4}-\\d{2}-\\d{2}$/;\nconst dateTimeRe = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z?$/;\nconst timeRe = /^\\d{2}:\\d{2}:\\d{2}$/;\nconst emailRe = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\nconst hostnameRe =\n /^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\nconst uriRe = /^https?:\\/\\//;\n\nconst validateFormat = (format: string, value: string): boolean => {\n // NOTE: Left out ipv4 and ipv6\n switch (format) {\n case 'date-time':\n return dateTimeRe.test(value);\n case 'date':\n return dateRe.test(value);\n case 'time':\n return timeRe.test(value);\n case 'email':\n return emailRe.test(value);\n case 'hostname':\n return hostnameRe.test(value);\n case 'uri':\n return uriRe.test(value);\n default:\n throw new TypeError(`Unsupported format \"${format}\"`);\n }\n};\n\nconst isEnumValue = (enumValues: unknown[], value: unknown): boolean => {\n if (!enumValues.length) {\n throw new TypeError('Empty enum array');\n }\n for (let idx = 0; idx < enumValues.length; idx++) {\n if (isDeepEqual(value, enumValues[idx])) {\n return true;\n }\n }\n return false;\n};\n\nconst validateString = (\n schema: JSONSchema,\n value: string,\n path: string\n): ValidationError | null => {\n if (schema.minLength != null && value.length < schema.minLength) {\n return {\n message: `String must be at least ${schema.minLength} characters`,\n keyword: 'minLength',\n path,\n value,\n };\n } else if (schema.maxLength != null && value.length > schema.maxLength) {\n return {\n message: `String must be at most ${schema.maxLength} characters`,\n keyword: 'maxLength',\n path,\n value,\n };\n } else if (schema.pattern != null && !new RegExp(schema.pattern).test(value)) {\n return {\n message: `String does not match pattern: ${schema.pattern}`,\n keyword: 'pattern',\n path,\n value,\n };\n } else if (schema.format != null && !validateFormat(schema.format, value)) {\n return {\n message: `String does not match format: ${schema.format}`,\n keyword: 'format',\n path,\n value,\n };\n } else {\n return null;\n }\n};\n\nconst validateNumber = (\n schema: JSONSchema,\n value: number,\n path: string\n): ValidationError | null => {\n if (schema.multipleOf != null && value % schema.multipleOf !== 0) {\n return {\n message: `Number must be multiple of ${schema.multipleOf}`,\n keyword: 'multipleOf',\n path,\n value,\n };\n } else if (schema.minimum != null && value < schema.minimum) {\n return {\n message: `Number must be equal or greater than ${schema.minimum}`,\n keyword: 'minimum',\n path,\n value,\n };\n } else if (schema.maximum != null && value > schema.maximum) {\n return {\n message: `Number must be equal or less than ${schema.maximum}`,\n keyword: 'maximum',\n path,\n value,\n };\n } else if (\n schema.exclusiveMaximum === true &&\n schema.maximum != null &&\n value >= schema.maximum\n ) {\n return {\n message: `Number must be less than ${schema.maximum}`,\n keyword: 'exclusiveMaximum',\n path,\n value,\n };\n } else if (typeof schema.exclusiveMaximum === 'number' && value >= schema.exclusiveMaximum) {\n return {\n message: `Number must be less than ${schema.exclusiveMaximum}`,\n keyword: 'exclusiveMaximum',\n path,\n value,\n };\n } else if (\n schema.exclusiveMinimum === true &&\n schema.minimum != null &&\n value <= schema.minimum\n ) {\n return {\n message: `Number must be greater than ${schema.minimum}`,\n keyword: 'exclusiveMinimum',\n path,\n value,\n };\n } else if (typeof schema.exclusiveMinimum === 'number' && value <= schema.exclusiveMinimum) {\n return {\n message: `Number must be greater than ${schema.exclusiveMinimum}`,\n keyword: 'exclusiveMinimum',\n path,\n value,\n };\n } else {\n return null;\n }\n};\n\nconst validateContains = (\n containsSchema: JSONSchema,\n value: unknown[],\n path: string\n): ValidationError | null => {\n for (let idx = 0; idx < value.length; idx++) {\n if (validateSchema(containsSchema, value[idx], path) === null) {\n return null;\n }\n }\n return {\n message: 'Array must contain at least one item matching the contains schema',\n keyword: 'contains',\n path,\n value,\n };\n};\n\nconst validateItems = (\n itemsSchema: JSONSchema | JSONSchema[],\n additionalItems: boolean | JSONSchema | undefined,\n value: unknown[],\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n if (Array.isArray(itemsSchema)) {\n let idx = 0;\n for (idx = 0; idx < itemsSchema.length; idx++) {\n if ((child = validateSchema(itemsSchema[idx]!, value[idx], `${path}[${idx}]`)) != null) {\n return child;\n }\n }\n if (idx < value.length) {\n if (additionalItems === true) {\n return null;\n } else if (additionalItems) {\n for (; idx < value.length; idx++) {\n if ((child = validateSchema(additionalItems, value[idx], `${path}[${idx}]`)) != null) {\n return child;\n }\n }\n return null;\n } else {\n return {\n message: `Array contained ${value.length - idx} more items than items schema`,\n keyword: 'additionalItems',\n path,\n value,\n };\n }\n } else {\n return null;\n }\n } else {\n for (let idx = 0; idx < value.length; idx++) {\n if ((child = validateSchema(itemsSchema, value[idx], `${path}[${idx}]`)) != null) {\n return child;\n }\n }\n return null;\n }\n};\n\nconst validateArray = (schema: JSONSchema, value: unknown[], path: string) => {\n let child: ValidationError | null;\n if (schema.minItems != null && value.length < schema.minItems) {\n return {\n message: `Array must have at least ${schema.minItems} items`,\n keyword: 'minItems',\n path,\n value,\n };\n } else if (schema.maxItems != null && value.length > schema.maxItems) {\n return {\n message: `Array must have at most ${schema.maxItems} items`,\n keyword: 'maxItems',\n path,\n value,\n };\n } else if (schema.uniqueItems && !areArrayValuesUnique(value)) {\n return {\n message: 'Array items must be unique',\n keyword: 'uniqueItems',\n path,\n value,\n };\n } else if (\n schema.contains != null &&\n (child = validateContains(schema.contains as JSONSchema, value, path)) != null\n ) {\n return child;\n } else if (\n schema.items != null &&\n (child = validateItems(schema.items, schema.additionalItems, value, path)) != null\n ) {\n return child;\n } else {\n return null;\n }\n};\n\nconst validateRequired = (\n keys: string[],\n value: Record<string, unknown>,\n path: string\n): ValidationError | null => {\n for (const key of keys) {\n if (value[key] === undefined) {\n return {\n message: `Required property \"${key}\" is missing`,\n keyword: 'required',\n path: `${path}.${key}`,\n value,\n };\n }\n }\n return null;\n};\n\nconst validateProperties = (\n properties: Record<string, JSONSchema>,\n value: Record<string, unknown>,\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n for (const key in properties) {\n if (\n properties[key] != null &&\n value[key] !== undefined &&\n (child = validateSchema(properties[key], value[key], `${path}.${key}`)) != null\n ) {\n return child;\n }\n }\n return null;\n};\n\nconst validatePatternProperties = (\n validatedProperties: Set<string>,\n patternProperties: Record<string, JSONSchema>,\n keys: string[],\n value: Record<string, unknown>,\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n for (const pattern in patternProperties) {\n const propertyRe = new RegExp(pattern);\n for (const key of keys) {\n const childSchema = patternProperties[pattern];\n if (propertyRe.test(key) && childSchema != null) {\n validatedProperties.add(key);\n if ((child = validateSchema(childSchema, value[key], `${path}.${key}`)) != null) {\n return child;\n }\n }\n }\n }\n return null;\n};\n\nconst validateAdditionalProperties = (\n additionalProperties: boolean | JSONSchema,\n properties: Record<string, JSONSchema> | undefined,\n visitedPatternProperties: Set<string>,\n keys: string[],\n value: Record<string, unknown>,\n path: string\n): ValidationError | null => {\n if (additionalProperties === true) {\n return null;\n }\n let child: ValidationError | null;\n for (const key of keys) {\n if (!visitedPatternProperties.has(key) && !properties?.[key]) {\n if (additionalProperties === false) {\n return {\n message: `Additional property \"${key}\" is not allowed`,\n keyword: 'additionalProperties',\n path: `${path}.${key}`,\n value: value[key],\n };\n } else if (\n (child = validateSchema(additionalProperties, value[key], `${path}.${key}`)) != null\n ) {\n return child;\n }\n }\n }\n return null;\n};\n\nconst validatePropertyNames = (\n propertyNames: JSONSchema,\n keys: string[],\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n for (const key of keys) {\n if ((child = validateString(propertyNames, key, `${path}.${key}`)) != null) {\n child.message = `Property name \"${key}\" does not match schema. ${child.message}`;\n return child;\n }\n }\n return null;\n};\n\nconst validateDependencies = (\n dependencies: Record<string, JSONSchema | string[] | undefined>,\n value: Record<string, unknown>,\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n for (const key in dependencies) {\n if (value[key] !== undefined) {\n const dependency = dependencies[key];\n\n if (Array.isArray(dependency)) {\n for (const property of dependency) {\n if (value[property] === undefined) {\n return {\n message: `Property \"${property}\" is required when \"${key}\" is present`,\n keyword: 'dependencies',\n path: `${path}.${property}`,\n value: undefined,\n };\n }\n }\n } else if (dependency != null && (child = validateSchema(dependency, value, path)) != null) {\n return child;\n }\n }\n }\n return null;\n};\n\nconst validateObject = (\n schema: JSONSchema,\n value: Record<string, unknown>,\n path: string\n): ValidationError | null => {\n const keys = Object.keys(value);\n const visitedPatternProperties = new Set<string>();\n let child: ValidationError | null;\n if (schema.minProperties != null && keys.length < schema.minProperties) {\n return {\n message: `Object must have at least ${schema.minProperties} properties`,\n keyword: 'minProperties',\n path,\n value,\n };\n } else if (schema.maxProperties != null && keys.length > schema.maxProperties) {\n return {\n message: `Object must have at most ${schema.maxProperties} properties`,\n keyword: 'maxProperties',\n path,\n value,\n };\n } else if (\n schema.required != null &&\n (child = validateRequired(schema.required, value, path)) != null\n ) {\n return child;\n } else if (\n schema.properties != null &&\n (child = validateProperties(schema.properties, value, path)) != null\n ) {\n return child;\n } else if (\n schema.patternProperties != null &&\n (child = validatePatternProperties(\n visitedPatternProperties,\n schema.patternProperties,\n keys,\n value,\n path\n )) != null\n ) {\n return child;\n } else if (\n schema.additionalProperties != null &&\n (child = validateAdditionalProperties(\n schema.additionalProperties,\n schema.properties,\n visitedPatternProperties,\n keys,\n value,\n path\n )) != null\n ) {\n return child;\n } else if (\n schema.propertyNames != null &&\n (child = validatePropertyNames(schema.propertyNames as JSONSchema, keys, path)) != null\n ) {\n return child;\n } else if (\n schema.dependencies != null &&\n (child = validateDependencies(schema.dependencies, value, path)) != null\n ) {\n return child;\n } else {\n return null;\n }\n};\n\nconst validateType = (\n schemaType: OneOrMany<'null' | 'boolean' | 'object' | 'array' | 'number' | 'integer' | 'string'>,\n valueType: string,\n path: string\n): ValidationError | null => {\n if (Array.isArray(schemaType)) {\n if (valueType === 'integer' && schemaType.includes('number')) {\n return null;\n }\n return !schemaType.includes(valueType as any)\n ? {\n message: `Expected type ${schemaType.join(' or ')}, got ${valueType}`,\n keyword: 'type',\n path,\n value: undefined,\n }\n : null;\n } else {\n if (valueType === 'integer' && schemaType === 'number') {\n return null;\n }\n return schemaType !== valueType\n ? {\n message: `Expected type ${schemaType}, got ${valueType}`,\n keyword: 'type',\n path,\n value: undefined,\n }\n : null;\n }\n};\n\nconst validateAllOf = (\n schemas: JSONSchema[],\n value: unknown,\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n for (const schema of schemas) {\n if ((child = validateSchema(schema, value, path)) != null) {\n return child;\n }\n }\n return null;\n};\n\nconst validateAnyOf = (\n schemas: JSONSchema[],\n value: unknown,\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n const cause: ValidationError[] = [];\n for (const schema of schemas) {\n if ((child = validateSchema(schema, value, path)) != null) {\n cause.push(child);\n } else {\n return null;\n }\n }\n return {\n message: 'No schema matched anyOf type',\n keyword: 'anyOf',\n path,\n value,\n cause,\n };\n};\n\nconst validateOneOf = (\n schemas: JSONSchema[],\n value: unknown,\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n const cause: ValidationError[] = [];\n for (const schema of schemas) {\n if ((child = validateSchema(schema, value, path)) != null) {\n cause.push(child);\n }\n }\n if (cause.length >= schemas.length) {\n return {\n message: 'Value does not match any of the oneOf schemas',\n keyword: 'oneOf',\n path,\n value,\n cause,\n };\n } else if (cause.length < schemas.length - 1) {\n return {\n message: `Value matches ${schemas.length - cause.length} schemas, but exactly one is required`,\n keyword: 'oneOf',\n path,\n value,\n cause,\n };\n } else {\n return null;\n }\n};\n\nconst validateConditional = (\n ifSchema: JSONSchema,\n thenSchema: JSONSchema | undefined,\n elseSchema: JSONSchema | undefined,\n value: unknown,\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n if (validateSchema(ifSchema, value, path) != null) {\n if (elseSchema != null && (child = validateSchema(elseSchema, value, path)) != null) {\n return {\n message: 'Value does not match \"else\" schema but did not match \"if\" condition schema',\n keyword: 'else',\n path,\n value,\n cause: [child],\n };\n } else {\n return null;\n }\n } else if (thenSchema != null && (child = validateSchema(thenSchema, value, path)) != null) {\n return {\n message: 'Value does not match \"then\" schema but did match \"if\" condition schema',\n keyword: 'then',\n path,\n value,\n cause: [child],\n };\n } else {\n return null;\n }\n};\n\nexport const validateSchema = (\n schema: JSONSchema,\n value: unknown,\n path: string\n): ValidationError | null => {\n if (typeof schema === 'boolean') {\n // Draft 07: Schemas can be booleans\n return !schema\n ? {\n message: 'Schema is false',\n keyword: 'schema',\n path,\n value: undefined,\n }\n : null;\n }\n\n const valueType = getValueType(value);\n let child: ValidationError | null;\n if (schema.type !== undefined && (child = validateType(schema.type, valueType, path)) != null) {\n return child;\n } else if (schema.const !== undefined && !isDeepEqual(value, schema.const)) {\n return {\n message: `Value must be equal to ${JSON.stringify(schema.const)}`,\n keyword: 'const',\n path,\n value,\n };\n } else if (schema.enum != null && !isEnumValue(schema.enum, value)) {\n return {\n message: `Value must be one of ${JSON.stringify(schema.enum)}`,\n keyword: 'enum',\n path,\n value,\n };\n } else if (schema.allOf != null && (child = validateAllOf(schema.allOf, value, path)) != null) {\n return child;\n } else if (schema.anyOf != null && (child = validateAnyOf(schema.anyOf, value, path)) != null) {\n return child;\n } else if (schema.oneOf != null && (child = validateOneOf(schema.oneOf, value, path)) != null) {\n return child;\n } else if (schema.not != null && validateSchema(schema.not, value, path) == null) {\n return {\n message: 'Value matches the not schema, but should not',\n keyword: 'not',\n path,\n value,\n };\n } else if (\n schema.if != null &&\n (schema.then != null || schema.else != null) &&\n (child = validateConditional(\n schema.if as JSONSchema,\n schema.then as JSONSchema | undefined,\n schema.else as JSONSchema | undefined,\n value,\n path\n )) != null\n ) {\n return child;\n }\n\n switch (valueType) {\n case 'string':\n return validateString(schema, value as string, path);\n case 'number':\n case 'integer':\n return validateNumber(schema, value as number, path);\n case 'array':\n return validateArray(schema, value as unknown[], path);\n case 'object':\n return validateObject(schema, value as Record<string, unknown>, path);\n default:\n return null;\n }\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"validate.js","names":["getValueType","value","typeOf","Number","isInteger","Array","isArray","isDeepEqual","a","b","length","idx","keysA","Object","keys","keysB","key","areArrayValuesUnique","array","i","j","dateRe","dateTimeRe","timeRe","emailRe","hostnameRe","uriRe","validateFormat","format","test","TypeError","isEnumValue","enumValues","validateString","schema","path","minLength","message","keyword","maxLength","pattern","RegExp","validateNumber","multipleOf","minimum","maximum","exclusiveMaximum","exclusiveMinimum","validateContains","containsSchema","validateSchema","validateItems","itemsSchema","additionalItems","child","validateArray","minItems","maxItems","uniqueItems","contains","items","validateRequired","undefined","validateProperties","properties","validatePatternProperties","validatedProperties","patternProperties","propertyRe","childSchema","add","validateAdditionalProperties","additionalProperties","visitedPatternProperties","has","validatePropertyNames","propertyNames","validateDependencies","dependencies","dependency","property","validateObject","Set","minProperties","maxProperties","required","validateType","schemaType","valueType","includes","join","validateAllOf","schemas","validateAnyOf","cause","push","validateOneOf","validateConditional","ifSchema","thenSchema","elseSchema","type","const","JSON","stringify","enum","allOf","anyOf","oneOf","not","if","then","else","exports"],"sources":["../src/validate.ts"],"sourcesContent":["import { JSONSchema } from './JSONSchema';\n\nexport interface BaseValidationError {\n message: string;\n path: string;\n keyword: string;\n value: unknown;\n}\n\nexport interface ValidationError extends BaseValidationError {\n cause?: ValidationError[];\n}\n\ntype OneOrMany<T> = T | T[];\n\nconst getValueType = (\n value: unknown\n):\n | 'null'\n | 'boolean'\n | 'object'\n | 'array'\n | 'number'\n | 'integer'\n | 'string'\n | 'symbol'\n | 'undefined'\n | 'bigint'\n | 'function' => {\n const typeOf = typeof value;\n switch (typeOf) {\n case 'number':\n return Number.isInteger(value) ? 'integer' : 'number';\n case 'boolean':\n case 'string':\n return typeOf;\n case 'object':\n if (value === null) {\n return 'null';\n } else if (Array.isArray(value)) {\n return 'array';\n } else {\n return 'object';\n }\n default:\n return typeOf;\n }\n};\n\nconst isDeepEqual = (a: any, b: any): boolean => {\n if (a === b) {\n return true;\n } else if (a === null || b === null) {\n return false;\n } else if (typeof a !== typeof b) {\n return false;\n } else if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (let idx = 0; idx < a.length; idx++) {\n if (!isDeepEqual(a[idx], b[idx])) return false;\n }\n return true;\n } else if (typeof a === 'object') {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (!isDeepEqual(keysA, keysB)) {\n return false;\n }\n for (const key of keysA) {\n if (!isDeepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n};\n\nconst areArrayValuesUnique = (array: unknown[]): boolean => {\n for (let i = 0; i < array.length; i++) {\n for (let j = 0; j < array.length; j++) {\n if (i !== j && isDeepEqual(array[i], array[j])) {\n return false;\n }\n }\n }\n return true;\n};\n\nconst dateRe = /^\\d{4}-\\d{2}-\\d{2}$/;\nconst dateTimeRe = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z?$/;\nconst timeRe = /^\\d{2}:\\d{2}:\\d{2}$/;\nconst emailRe = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\nconst hostnameRe =\n /^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\nconst uriRe = /^https?:\\/\\//;\n\nconst validateFormat = (format: string, value: string): boolean => {\n // NOTE: Left out ipv4 and ipv6\n switch (format) {\n case 'date-time':\n return dateTimeRe.test(value);\n case 'date':\n return dateRe.test(value);\n case 'time':\n return timeRe.test(value);\n case 'email':\n return emailRe.test(value);\n case 'hostname':\n return hostnameRe.test(value);\n case 'uri':\n return uriRe.test(value);\n default:\n throw new TypeError(`Unsupported format \"${format}\"`);\n }\n};\n\nconst isEnumValue = (enumValues: unknown[], value: unknown): boolean => {\n if (!enumValues.length) {\n throw new TypeError('Empty enum array');\n }\n for (let idx = 0; idx < enumValues.length; idx++) {\n if (isDeepEqual(value, enumValues[idx])) {\n return true;\n }\n }\n return false;\n};\n\nconst validateString = (\n schema: JSONSchema,\n value: string,\n path: string\n): ValidationError | null => {\n if (schema.minLength != null && value.length < schema.minLength) {\n return {\n message: `String must be at least ${schema.minLength} characters`,\n keyword: 'minLength',\n path,\n value,\n };\n } else if (schema.maxLength != null && value.length > schema.maxLength) {\n return {\n message: `String must be at most ${schema.maxLength} characters`,\n keyword: 'maxLength',\n path,\n value,\n };\n } else if (schema.pattern != null && !new RegExp(schema.pattern).test(value)) {\n return {\n message: `String does not match pattern: ${schema.pattern}`,\n keyword: 'pattern',\n path,\n value,\n };\n } else if (schema.format != null && !validateFormat(schema.format, value)) {\n return {\n message: `String does not match format: ${schema.format}`,\n keyword: 'format',\n path,\n value,\n };\n } else {\n return null;\n }\n};\n\nconst validateNumber = (\n schema: JSONSchema,\n value: number,\n path: string\n): ValidationError | null => {\n if (schema.multipleOf != null && value % schema.multipleOf !== 0) {\n return {\n message: `Number must be multiple of ${schema.multipleOf}`,\n keyword: 'multipleOf',\n path,\n value,\n };\n } else if (schema.minimum != null && value < schema.minimum) {\n return {\n message: `Number must be equal or greater than ${schema.minimum}`,\n keyword: 'minimum',\n path,\n value,\n };\n } else if (schema.maximum != null && value > schema.maximum) {\n return {\n message: `Number must be equal or less than ${schema.maximum}`,\n keyword: 'maximum',\n path,\n value,\n };\n } else if (\n schema.exclusiveMaximum === true &&\n schema.maximum != null &&\n value >= schema.maximum\n ) {\n return {\n message: `Number must be less than ${schema.maximum}`,\n keyword: 'exclusiveMaximum',\n path,\n value,\n };\n } else if (typeof schema.exclusiveMaximum === 'number' && value >= schema.exclusiveMaximum) {\n return {\n message: `Number must be less than ${schema.exclusiveMaximum}`,\n keyword: 'exclusiveMaximum',\n path,\n value,\n };\n } else if (\n schema.exclusiveMinimum === true &&\n schema.minimum != null &&\n value <= schema.minimum\n ) {\n return {\n message: `Number must be greater than ${schema.minimum}`,\n keyword: 'exclusiveMinimum',\n path,\n value,\n };\n } else if (typeof schema.exclusiveMinimum === 'number' && value <= schema.exclusiveMinimum) {\n return {\n message: `Number must be greater than ${schema.exclusiveMinimum}`,\n keyword: 'exclusiveMinimum',\n path,\n value,\n };\n } else {\n return null;\n }\n};\n\nconst validateContains = (\n containsSchema: JSONSchema,\n value: unknown[],\n path: string\n): ValidationError | null => {\n for (let idx = 0; idx < value.length; idx++) {\n if (validateSchema(containsSchema, value[idx], path) === null) {\n return null;\n }\n }\n return {\n message: 'Array must contain at least one item matching the contains schema',\n keyword: 'contains',\n path,\n value,\n };\n};\n\nconst validateItems = (\n itemsSchema: JSONSchema | JSONSchema[],\n additionalItems: boolean | JSONSchema | undefined,\n value: unknown[],\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n if (Array.isArray(itemsSchema)) {\n let idx = 0;\n for (idx = 0; idx < itemsSchema.length; idx++) {\n if ((child = validateSchema(itemsSchema[idx]!, value[idx], `${path}[${idx}]`)) != null) {\n return child;\n }\n }\n if (idx < value.length) {\n if (additionalItems === true) {\n return null;\n } else if (additionalItems) {\n for (; idx < value.length; idx++) {\n if ((child = validateSchema(additionalItems, value[idx], `${path}[${idx}]`)) != null) {\n return child;\n }\n }\n return null;\n } else {\n return {\n message: `Array contained ${value.length - idx} more items than items schema`,\n keyword: 'additionalItems',\n path,\n value,\n };\n }\n } else {\n return null;\n }\n } else {\n for (let idx = 0; idx < value.length; idx++) {\n if ((child = validateSchema(itemsSchema, value[idx], `${path}[${idx}]`)) != null) {\n return child;\n }\n }\n return null;\n }\n};\n\nconst validateArray = (schema: JSONSchema, value: unknown[], path: string) => {\n let child: ValidationError | null;\n if (schema.minItems != null && value.length < schema.minItems) {\n return {\n message: `Array must have at least ${schema.minItems} items`,\n keyword: 'minItems',\n path,\n value,\n };\n } else if (schema.maxItems != null && value.length > schema.maxItems) {\n return {\n message: `Array must have at most ${schema.maxItems} items`,\n keyword: 'maxItems',\n path,\n value,\n };\n } else if (schema.uniqueItems && !areArrayValuesUnique(value)) {\n return {\n message: 'Array items must be unique',\n keyword: 'uniqueItems',\n path,\n value,\n };\n } else if (\n schema.contains != null &&\n (child = validateContains(schema.contains as JSONSchema, value, path)) != null\n ) {\n return child;\n } else if (\n schema.items != null &&\n (child = validateItems(schema.items, schema.additionalItems, value, path)) != null\n ) {\n return child;\n } else {\n return null;\n }\n};\n\nconst validateRequired = (\n keys: string[],\n value: Record<string, unknown>,\n path: string\n): ValidationError | null => {\n for (const key of keys) {\n if (value[key] === undefined) {\n return {\n message: `Required property \"${key}\" is missing`,\n keyword: 'required',\n path: `${path}.${key}`,\n value,\n };\n }\n }\n return null;\n};\n\nconst validateProperties = (\n properties: Record<string, JSONSchema>,\n value: Record<string, unknown>,\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n for (const key in properties) {\n if (\n properties[key] != null &&\n value[key] !== undefined &&\n (child = validateSchema(properties[key], value[key], `${path}.${key}`)) != null\n ) {\n return child;\n }\n }\n return null;\n};\n\nconst validatePatternProperties = (\n validatedProperties: Set<string>,\n patternProperties: Record<string, JSONSchema>,\n keys: string[],\n value: Record<string, unknown>,\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n for (const pattern in patternProperties) {\n const propertyRe = new RegExp(pattern);\n for (const key of keys) {\n const childSchema = patternProperties[pattern];\n if (propertyRe.test(key) && childSchema != null) {\n validatedProperties.add(key);\n if ((child = validateSchema(childSchema, value[key], `${path}.${key}`)) != null) {\n return child;\n }\n }\n }\n }\n return null;\n};\n\nconst validateAdditionalProperties = (\n additionalProperties: boolean | JSONSchema,\n properties: Record<string, JSONSchema> | undefined,\n visitedPatternProperties: Set<string>,\n keys: string[],\n value: Record<string, unknown>,\n path: string\n): ValidationError | null => {\n if (additionalProperties === true) {\n return null;\n }\n let child: ValidationError | null;\n for (const key of keys) {\n if (!visitedPatternProperties.has(key) && !properties?.[key]) {\n if (additionalProperties === false) {\n return {\n message: `Additional property \"${key}\" is not allowed`,\n keyword: 'additionalProperties',\n path: `${path}.${key}`,\n value: value[key],\n };\n } else if (\n (child = validateSchema(additionalProperties, value[key], `${path}.${key}`)) != null\n ) {\n return child;\n }\n }\n }\n return null;\n};\n\nconst validatePropertyNames = (\n propertyNames: JSONSchema,\n keys: string[],\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n for (const key of keys) {\n if ((child = validateString(propertyNames, key, `${path}.${key}`)) != null) {\n child.message = `Property name \"${key}\" does not match schema. ${child.message}`;\n return child;\n }\n }\n return null;\n};\n\nconst validateDependencies = (\n dependencies: Record<string, JSONSchema | string[] | undefined>,\n value: Record<string, unknown>,\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n for (const key in dependencies) {\n if (value[key] !== undefined) {\n const dependency = dependencies[key];\n\n if (Array.isArray(dependency)) {\n for (const property of dependency) {\n if (value[property] === undefined) {\n return {\n message: `Property \"${property}\" is required when \"${key}\" is present`,\n keyword: 'dependencies',\n path: `${path}.${property}`,\n value: undefined,\n };\n }\n }\n } else if (dependency != null && (child = validateSchema(dependency, value, path)) != null) {\n return child;\n }\n }\n }\n return null;\n};\n\nconst validateObject = (\n schema: JSONSchema,\n value: Record<string, unknown>,\n path: string\n): ValidationError | null => {\n const keys = Object.keys(value);\n const visitedPatternProperties = new Set<string>();\n let child: ValidationError | null;\n if (schema.minProperties != null && keys.length < schema.minProperties) {\n return {\n message: `Object must have at least ${schema.minProperties} properties`,\n keyword: 'minProperties',\n path,\n value,\n };\n } else if (schema.maxProperties != null && keys.length > schema.maxProperties) {\n return {\n message: `Object must have at most ${schema.maxProperties} properties`,\n keyword: 'maxProperties',\n path,\n value,\n };\n } else if (\n schema.required != null &&\n (child = validateRequired(schema.required, value, path)) != null\n ) {\n return child;\n } else if (\n schema.properties != null &&\n (child = validateProperties(schema.properties, value, path)) != null\n ) {\n return child;\n } else if (\n schema.patternProperties != null &&\n (child = validatePatternProperties(\n visitedPatternProperties,\n schema.patternProperties,\n keys,\n value,\n path\n )) != null\n ) {\n return child;\n } else if (\n schema.additionalProperties != null &&\n (child = validateAdditionalProperties(\n schema.additionalProperties,\n schema.properties,\n visitedPatternProperties,\n keys,\n value,\n path\n )) != null\n ) {\n return child;\n } else if (\n schema.propertyNames != null &&\n (child = validatePropertyNames(schema.propertyNames as JSONSchema, keys, path)) != null\n ) {\n return child;\n } else if (\n schema.dependencies != null &&\n (child = validateDependencies(schema.dependencies, value, path)) != null\n ) {\n return child;\n } else {\n return null;\n }\n};\n\nconst validateType = (\n schemaType: OneOrMany<'null' | 'boolean' | 'object' | 'array' | 'number' | 'integer' | 'string'>,\n valueType: string,\n path: string\n): ValidationError | null => {\n if (Array.isArray(schemaType)) {\n if (valueType === 'integer' && schemaType.includes('number')) {\n return null;\n }\n return !schemaType.includes(valueType as any)\n ? {\n message: `Expected type ${schemaType.join(' or ')}, got ${valueType}`,\n keyword: 'type',\n path,\n value: undefined,\n }\n : null;\n } else {\n if (valueType === 'integer' && schemaType === 'number') {\n return null;\n }\n return schemaType !== valueType\n ? {\n message: `Expected type ${schemaType}, got ${valueType}`,\n keyword: 'type',\n path,\n value: undefined,\n }\n : null;\n }\n};\n\nconst validateAllOf = (\n schemas: JSONSchema[],\n value: unknown,\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n for (const schema of schemas) {\n if ((child = validateSchema(schema, value, path)) != null) {\n return child;\n }\n }\n return null;\n};\n\nconst validateAnyOf = (\n schemas: JSONSchema[],\n value: unknown,\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n const cause: ValidationError[] = [];\n for (const schema of schemas) {\n if ((child = validateSchema(schema, value, path)) != null) {\n cause.push(child);\n } else {\n return null;\n }\n }\n return {\n message: 'No schema matched anyOf type',\n keyword: 'anyOf',\n path,\n value,\n cause,\n };\n};\n\nconst validateOneOf = (\n schemas: JSONSchema[],\n value: unknown,\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n const cause: ValidationError[] = [];\n for (const schema of schemas) {\n if ((child = validateSchema(schema, value, path)) != null) {\n cause.push(child);\n }\n }\n if (cause.length >= schemas.length) {\n return {\n message: 'Value does not match any of the oneOf schemas',\n keyword: 'oneOf',\n path,\n value,\n cause,\n };\n } else if (cause.length < schemas.length - 1) {\n return {\n message: `Value matches ${schemas.length - cause.length} schemas, but exactly one is required`,\n keyword: 'oneOf',\n path,\n value,\n cause,\n };\n } else {\n return null;\n }\n};\n\nconst validateConditional = (\n ifSchema: JSONSchema,\n thenSchema: JSONSchema | undefined,\n elseSchema: JSONSchema | undefined,\n value: unknown,\n path: string\n): ValidationError | null => {\n let child: ValidationError | null;\n if (validateSchema(ifSchema, value, path) != null) {\n if (elseSchema != null && (child = validateSchema(elseSchema, value, path)) != null) {\n return {\n message: 'Value does not match \"else\" schema but did not match \"if\" condition schema',\n keyword: 'else',\n path,\n value,\n cause: [child],\n };\n } else {\n return null;\n }\n } else if (thenSchema != null && (child = validateSchema(thenSchema, value, path)) != null) {\n return {\n message: 'Value does not match \"then\" schema but did match \"if\" condition schema',\n keyword: 'then',\n path,\n value,\n cause: [child],\n };\n } else {\n return null;\n }\n};\n\nexport const validateSchema = (\n schema: JSONSchema,\n value: unknown,\n path: string\n): ValidationError | null => {\n if (typeof schema === 'boolean') {\n // Draft 07: Schemas can be booleans\n return !schema\n ? {\n message: 'Schema is false',\n keyword: 'schema',\n path,\n value: undefined,\n }\n : null;\n }\n\n const valueType = getValueType(value);\n let child: ValidationError | null;\n if (schema.type !== undefined && (child = validateType(schema.type, valueType, path)) != null) {\n return child;\n } else if (schema.const !== undefined && !isDeepEqual(value, schema.const)) {\n return {\n message: `Value must be equal to ${JSON.stringify(schema.const)}`,\n keyword: 'const',\n path,\n value,\n };\n } else if (schema.enum != null && !isEnumValue(schema.enum, value)) {\n return {\n message: `Value must be one of ${JSON.stringify(schema.enum)}`,\n keyword: 'enum',\n path,\n value,\n };\n } else if (schema.allOf != null && (child = validateAllOf(schema.allOf, value, path)) != null) {\n return child;\n } else if (schema.anyOf != null && (child = validateAnyOf(schema.anyOf, value, path)) != null) {\n return child;\n } else if (schema.oneOf != null && (child = validateOneOf(schema.oneOf, value, path)) != null) {\n return child;\n } else if (schema.not != null && validateSchema(schema.not, value, path) == null) {\n return {\n message: 'Value matches the not schema, but should not',\n keyword: 'not',\n path,\n value,\n };\n } else if (\n schema.if != null &&\n (schema.then != null || schema.else != null) &&\n (child = validateConditional(\n schema.if as JSONSchema,\n schema.then as JSONSchema | undefined,\n schema.else as JSONSchema | undefined,\n value,\n path\n )) != null\n ) {\n return child;\n }\n\n switch (valueType) {\n case 'string':\n return validateString(schema, value as string, path);\n case 'number':\n case 'integer':\n return validateNumber(schema, value as number, path);\n case 'array':\n return validateArray(schema, value as unknown[], path);\n case 'object':\n return validateObject(schema, value as Record<string, unknown>, path);\n default:\n return null;\n }\n};\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/schema-utils",
3
- "version": "57.0.0",
3
+ "version": "57.0.2",
4
4
  "description": "Reusable JSON Schema (Draft 04) validation library for Expo",
5
5
  "license": "MIT",
6
6
  "main": "./build/index.js",
@@ -26,7 +26,7 @@
26
26
  "publishConfig": {
27
27
  "access": "public"
28
28
  },
29
- "gitHead": "e3eb896c5fdcd89e0cded98ff4e35c9db12cc9c0",
29
+ "gitHead": "b9503d06b8e130abfca1bc16f671dbefb41ad709",
30
30
  "scripts": {
31
31
  "build": "tsc --emitDeclarationOnly && babel src --out-dir build --extensions \".ts\" --source-maps --ignore \"src/**/__mocks__/*\",\"src/**/__tests__/*\"",
32
32
  "clean": "expo-module clean",