@expo/schema-utils 58.0.1 → 58.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/visit.js CHANGED
@@ -8,14 +8,7 @@ Object.defineProperty(exports, "visitNode", {
8
8
  return visitNode;
9
9
  }
10
10
  });
11
- const COMBINATOR_KEYWORDS = [
12
- 'allOf',
13
- 'anyOf',
14
- 'oneOf',
15
- 'if',
16
- 'then',
17
- 'else'
18
- ];
11
+ const _validate = require("./validate");
19
12
  const isSchemaNode = (value)=>value != null && typeof value === 'object' && !Array.isArray(value);
20
13
  const isObject = (value)=>value != null && typeof value === 'object' && !Array.isArray(value);
21
14
  const valueAt = (value, key)=>value != null && typeof value === 'object' ? value[key] : undefined;
@@ -79,17 +72,66 @@ const visitItems = (items, additionalItems, value, visitor, path)=>{
79
72
  }
80
73
  }
81
74
  };
75
+ // `validateSchema` throws for what it cannot evaluate, such as an unsupported
76
+ // `format`. It checks a branch's other string keywords first, so a throw means
77
+ // the branch passed everything it could check: treat it as applying, as the
78
+ // walk did before it matched values, rather than abort the whole walk.
79
+ const matches = (schema, value, path)=>{
80
+ try {
81
+ return (0, _validate.validateSchema)(schema, value, path) === null;
82
+ } catch {
83
+ return true;
84
+ }
85
+ };
86
+ const visitEach = (schemas, value, visitor, path, applies = ()=>true)=>{
87
+ if (!Array.isArray(schemas)) {
88
+ return;
89
+ }
90
+ for (const item of schemas){
91
+ if (isSchemaNode(item) && applies(item)) {
92
+ visitNode(item, value, visitor, path);
93
+ }
94
+ }
95
+ };
96
+ // Only the subschemas that apply to `value` are visited. A `oneOf`/`anyOf`
97
+ // branch the value does not match, or the `then`/`else` its `if` did not
98
+ // select, describes some other value: visiting it reported, for example, the
99
+ // image branch of `ios.icon` for a `.icon` directory. A matching `if` is
100
+ // visited too, since its annotations apply (draft-07). A path declared in both
101
+ // `if` and `then` is therefore visited twice, as before. Without a value there
102
+ // is nothing to match against, so every subschema is visited.
82
103
  const visitCombinators = (schema, value, visitor, path)=>{
83
- for (const keyword of COMBINATOR_KEYWORDS){
84
- const combinator = schema[keyword];
85
- if (Array.isArray(combinator)) {
86
- for (const item of combinator){
87
- if (isSchemaNode(item)) {
88
- visitNode(item, value, visitor, path);
89
- }
90
- }
91
- } else if (isSchemaNode(combinator)) {
92
- visitNode(combinator, value, visitor, path);
104
+ const hasValue = value !== undefined;
105
+ const applies = (branch)=>!hasValue || matches(branch, value, path);
106
+ visitEach(schema.allOf, value, visitor, path);
107
+ visitEach(schema.anyOf, value, visitor, path, applies);
108
+ visitEach(schema.oneOf, value, visitor, path, applies);
109
+ // `then` and `else` mean nothing without an `if`. A boolean `if` is a valid
110
+ // schema: `true` selects `then`, `false` selects `else`.
111
+ const { if: condition, then: consequent, else: alternative } = schema;
112
+ if (condition === undefined) {
113
+ return;
114
+ }
115
+ let selected;
116
+ if (!hasValue) {
117
+ selected = [
118
+ condition,
119
+ consequent,
120
+ alternative
121
+ ];
122
+ } else if (matches(condition, value, path)) {
123
+ selected = [
124
+ condition,
125
+ consequent
126
+ ];
127
+ } else {
128
+ selected = [
129
+ alternative
130
+ ];
131
+ }
132
+ for (const branch of selected){
133
+ if (isSchemaNode(branch)) {
134
+ visitNode(branch, value, visitor, path);
93
135
  }
94
136
  }
95
137
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["visit.ts"],"sourcesContent":[null],"names":["visitNode","COMBINATOR_KEYWORDS","isSchemaNode","value","Array","isArray","isObject","valueAt","key","undefined","visitProperties","properties","visitor","path","child","visitPatternProperties","matched","patternProperties","keys","pattern","propertyRe","RegExp","test","add","visitAdditionalProperties","additionalProperties","has","visitDependencies","dependencies","dependency","visitItems","items","additionalItems","index","length","item","visitCombinators","schema","keyword","combinator","Object","Set"],"mappings":"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"}
1
+ {"version":3,"sources":["visit.ts"],"sourcesContent":[null],"names":["visitNode","isSchemaNode","value","Array","isArray","isObject","valueAt","key","undefined","visitProperties","properties","visitor","path","child","visitPatternProperties","matched","patternProperties","keys","pattern","propertyRe","RegExp","test","add","visitAdditionalProperties","additionalProperties","has","visitDependencies","dependencies","dependency","visitItems","items","additionalItems","index","length","item","matches","schema","validateSchema","visitEach","schemas","applies","visitCombinators","hasValue","branch","allOf","anyOf","oneOf","if","condition","then","consequent","else","alternative","selected","Object","Set"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/schema-utils",
3
- "version": "58.0.1",
3
+ "version": "58.0.2",
4
4
  "description": "Reusable JSON Schema (Draft 04) validation library for Expo",
5
5
  "homepage": "https://github.com/expo/expo/tree/main/packages/@expo/schema-utils#readme",
6
6
  "bugs": {
@@ -21,9 +21,9 @@
21
21
  "access": "public"
22
22
  },
23
23
  "devDependencies": {
24
- "@types/jest": "^29.2.1",
24
+ "@expo/internal-scripts": "58.0.3",
25
+ "@types/jest": "^30.0.0",
25
26
  "@types/node": "^22.14.0",
26
- "expo-module-scripts": "56.0.4",
27
27
  "json-schema-to-typescript": "^15.0.0"
28
28
  },
29
29
  "scripts": {