@expo/schema-utils 58.0.0 → 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 +60 -18
- package/build/visit.js.map +1 -1
- package/package.json +3 -4
package/build/visit.js
CHANGED
|
@@ -8,14 +8,7 @@ Object.defineProperty(exports, "visitNode", {
|
|
|
8
8
|
return visitNode;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
};
|
package/build/visit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["visit.ts"],"sourcesContent":[null],"names":["visitNode","
|
|
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.
|
|
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,12 +21,11 @@
|
|
|
21
21
|
"access": "public"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@
|
|
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.3",
|
|
27
27
|
"json-schema-to-typescript": "^15.0.0"
|
|
28
28
|
},
|
|
29
|
-
"gitHead": "c543a7181fc32e14f42d89550087b80ac5c490f2",
|
|
30
29
|
"scripts": {
|
|
31
30
|
"build": "expo-build cjs:src",
|
|
32
31
|
"clean": "expo-module clean",
|