@maxclicks/utilities 1.13.0 → 1.15.0
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/dist/helpers/haveSameContents.d.ts.map +1 -1
- package/dist/helpers/haveSameContents.js +4 -2
- package/dist/helpers/haveSameContents.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/primitives/definitions/Address.js +1 -1
- package/dist/modules/primitives/definitions/Address.js.map +1 -1
- package/dist/types/Json/Json.d.ts +5 -63
- package/dist/types/Json/Json.d.ts.map +1 -1
- package/dist/types/Json/Json.js +2 -12
- package/dist/types/Json/Json.js.map +1 -1
- package/dist/types/Json/JsonSchema/JsonSchema.d.ts +103 -0
- package/dist/types/Json/JsonSchema/JsonSchema.d.ts.map +1 -0
- package/dist/types/Json/JsonSchema/JsonSchema.js +95 -0
- package/dist/types/Json/JsonSchema/JsonSchema.js.map +1 -0
- package/dist/types/Json/JsonSchema/index.d.ts +2 -0
- package/dist/types/Json/JsonSchema/index.d.ts.map +1 -0
- package/dist/types/Json/JsonSchema/index.js +2 -0
- package/dist/types/Json/JsonSchema/index.js.map +1 -0
- package/dist/types/Json/JsonSchema/isJsonSchemaNullable.d.ts +5 -0
- package/dist/types/Json/JsonSchema/isJsonSchemaNullable.d.ts.map +1 -0
- package/dist/types/Json/JsonSchema/isJsonSchemaNullable.js +15 -0
- package/dist/types/Json/JsonSchema/isJsonSchemaNullable.js.map +1 -0
- package/dist/types/Json/JsonSchema/isJsonSchemaWiderThan.d.ts +28 -0
- package/dist/types/Json/JsonSchema/isJsonSchemaWiderThan.d.ts.map +1 -0
- package/dist/types/Json/JsonSchema/isJsonSchemaWiderThan.js +322 -0
- package/dist/types/Json/JsonSchema/isJsonSchemaWiderThan.js.map +1 -0
- package/dist/types/Json/JsonSchema/jsonSchemaNormalizer.d.ts +5 -0
- package/dist/types/Json/JsonSchema/jsonSchemaNormalizer.d.ts.map +1 -0
- package/dist/types/Json/JsonSchema/jsonSchemaNormalizer.js +136 -0
- package/dist/types/Json/JsonSchema/jsonSchemaNormalizer.js.map +1 -0
- package/dist/types/Json/JsonSchema/jsonSchemaNullable.d.ts +5 -0
- package/dist/types/Json/JsonSchema/jsonSchemaNullable.d.ts.map +1 -0
- package/dist/types/Json/JsonSchema/jsonSchemaNullable.js +31 -0
- package/dist/types/Json/JsonSchema/jsonSchemaNullable.js.map +1 -0
- package/dist/types/Json/jsonNormalizer.d.ts +1 -0
- package/dist/types/Json/jsonNormalizer.d.ts.map +1 -1
- package/dist/types/Json/jsonNormalizer.js.map +1 -1
- package/dist/types/Json/jsonNormalizerWithSchemaFactory.d.ts +3 -1
- package/dist/types/Json/jsonNormalizerWithSchemaFactory.d.ts.map +1 -1
- package/dist/types/Json/jsonNormalizerWithSchemaFactory.js +184 -149
- package/dist/types/Json/jsonNormalizerWithSchemaFactory.js.map +1 -1
- package/dist/types/Normalizer.d.ts +2 -2
- package/dist/types/Normalizer.d.ts.map +1 -1
- package/dist/types/Normalizer.js +9 -3
- package/dist/types/Normalizer.js.map +1 -1
- package/package.json +1 -1
- package/dist/helpers/optional.d.ts +0 -13
- package/dist/helpers/optional.d.ts.map +0 -1
- package/dist/helpers/optional.js +0 -17
- package/dist/helpers/optional.js.map +0 -1
- package/dist/types/Json/jsonSchemaNormalizer.d.ts +0 -3
- package/dist/types/Json/jsonSchemaNormalizer.d.ts.map +0 -1
- package/dist/types/Json/jsonSchemaNormalizer.js +0 -181
- package/dist/types/Json/jsonSchemaNormalizer.js.map +0 -1
- package/dist/types/Json/jsonSchemaNullable.d.ts +0 -3
- package/dist/types/Json/jsonSchemaNullable.d.ts.map +0 -1
- package/dist/types/Json/jsonSchemaNullable.js +0 -32
- package/dist/types/Json/jsonSchemaNullable.js.map +0 -1
- package/dist/types/Json/jsonSchemaSatisfies.d.ts +0 -12
- package/dist/types/Json/jsonSchemaSatisfies.d.ts.map +0 -1
- package/dist/types/Json/jsonSchemaSatisfies.js +0 -290
- package/dist/types/Json/jsonSchemaSatisfies.js.map +0 -1
- package/dist/types/Json/jsonSchemaSimplifiedSatisfies.d.ts +0 -4
- package/dist/types/Json/jsonSchemaSimplifiedSatisfies.d.ts.map +0 -1
- package/dist/types/Json/jsonSchemaSimplifiedSatisfies.js +0 -222
- package/dist/types/Json/jsonSchemaSimplifiedSatisfies.js.map +0 -1
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import { haveSameContents } from '../../../helpers/haveSameContents';
|
|
2
|
+
import { isJsonSchemaNullable } from './isJsonSchemaNullable';
|
|
3
|
+
import { JsonSchema } from './JsonSchema';
|
|
4
|
+
/**
|
|
5
|
+
* Checks if the `wider` schema accepts every JSON value that the `narrower` schema accepts —
|
|
6
|
+
* i.e. the set of values valid under `narrower` is a subset of those valid under `wider`.
|
|
7
|
+
* The relation is reflexive: equivalent schemas return `true`.
|
|
8
|
+
*
|
|
9
|
+
* This single check covers two common scenarios:
|
|
10
|
+
*
|
|
11
|
+
* - **Backward compatibility (old vs. new schema):** when migrating a stored dataset whose items
|
|
12
|
+
* conform to an old schema, pass `wider = newSchema`, `narrower = oldSchema`. A `true` result
|
|
13
|
+
* means every existing item remains valid under the new schema (no migration needed).
|
|
14
|
+
*
|
|
15
|
+
* - **Producer/consumer compatibility:** when wiring a producer (emits values matching schema P)
|
|
16
|
+
* to a consumer (accepts values matching schema C), pass `wider = consumerSchema`,
|
|
17
|
+
* `narrower = producerSchema`. A `true` result means the consumer accepts everything the
|
|
18
|
+
* producer can emit. Note: the consumer is the *wider* side, because it must tolerate
|
|
19
|
+
* anything the producer might send.
|
|
20
|
+
*
|
|
21
|
+
* The check is sound but not always complete: it operates on the simplified `JsonSchema` subset
|
|
22
|
+
* used by this package (no `oneOf` / `anyOf` / `allOf` / `not` / pattern properties), which makes
|
|
23
|
+
* the comparison deterministic.
|
|
24
|
+
*
|
|
25
|
+
* @param wider - The schema expected to accept at least as many values
|
|
26
|
+
* @param narrower - The schema whose accepted values must all be accepted by `wider`
|
|
27
|
+
*/
|
|
28
|
+
export function isJsonSchemaWiderThan(wider, narrower) {
|
|
29
|
+
// Trivial: `Any` accepts every JSON value.
|
|
30
|
+
if (JsonSchema.Any.check(wider))
|
|
31
|
+
return true;
|
|
32
|
+
// `narrower` is `Any` (accepts everything) but `wider` is not — `wider` rejects something.
|
|
33
|
+
if (JsonSchema.Any.check(narrower))
|
|
34
|
+
return false;
|
|
35
|
+
// Finite-domain narrower: enumerate its values and check `wider` accepts each.
|
|
36
|
+
if (JsonSchema.Const.check(narrower))
|
|
37
|
+
return schemaAcceptsValue(wider, narrower.const);
|
|
38
|
+
if (JsonSchema.Enum.check(narrower))
|
|
39
|
+
return narrower.enum.every(value => schemaAcceptsValue(wider, value));
|
|
40
|
+
// From here, `narrower` is type-based.
|
|
41
|
+
// If `wider` is `Const`/`Enum`, it can only cover a finite-domain `narrower` (Null, Boolean).
|
|
42
|
+
if (JsonSchema.Const.check(wider) || JsonSchema.Enum.check(wider)) {
|
|
43
|
+
const finiteValues = enumerateFiniteValues(narrower);
|
|
44
|
+
if (finiteValues === null)
|
|
45
|
+
return false;
|
|
46
|
+
return finiteValues.every(value => schemaAcceptsValue(wider, value));
|
|
47
|
+
}
|
|
48
|
+
// Both are type-based. Nullability: if `narrower` admits `null`, `wider` must too.
|
|
49
|
+
if (isJsonSchemaNullable(narrower) && !isJsonSchemaNullable(wider))
|
|
50
|
+
return false;
|
|
51
|
+
if (JsonSchema.Null.check(narrower))
|
|
52
|
+
return JsonSchema.Null.check(wider) || isJsonSchemaNullable(wider);
|
|
53
|
+
if (JsonSchema.String.check(narrower))
|
|
54
|
+
return JsonSchema.String.check(wider) && isStringWiderThan(wider, narrower);
|
|
55
|
+
if (JsonSchema.Number.check(narrower))
|
|
56
|
+
return JsonSchema.Number.check(wider) && isNumericWiderThan(wider, narrower);
|
|
57
|
+
// `Number` is wider than `Integer` (it accepts non-integer values too).
|
|
58
|
+
if (JsonSchema.Integer.check(narrower))
|
|
59
|
+
return (JsonSchema.Integer.check(wider) || JsonSchema.Number.check(wider)) && isNumericWiderThan(wider, narrower);
|
|
60
|
+
if (JsonSchema.Boolean.check(narrower))
|
|
61
|
+
return JsonSchema.Boolean.check(wider);
|
|
62
|
+
if (JsonSchema.Array.check(narrower))
|
|
63
|
+
return JsonSchema.Array.check(wider) && isArrayWiderThan(wider, narrower);
|
|
64
|
+
if (JsonSchema.Object.check(narrower))
|
|
65
|
+
return JsonSchema.Object.check(wider) && isObjectWiderThan(wider, narrower);
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Returns the complete list of JSON values a schema accepts when that list is finite,
|
|
70
|
+
* otherwise `null`. Used to check whether a `Const`/`Enum` `wider` covers a type-based `narrower`.
|
|
71
|
+
*/
|
|
72
|
+
function enumerateFiniteValues(jsonSchema) {
|
|
73
|
+
if (JsonSchema.Null.check(jsonSchema))
|
|
74
|
+
return [null];
|
|
75
|
+
if (JsonSchema.Boolean.check(jsonSchema)) {
|
|
76
|
+
const values = [true, false];
|
|
77
|
+
if (isJsonSchemaNullable(jsonSchema))
|
|
78
|
+
values.push(null);
|
|
79
|
+
return values;
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
/** Check if a schema accepts a specific JSON value. */
|
|
84
|
+
function schemaAcceptsValue(jsonSchema, value) {
|
|
85
|
+
if (JsonSchema.Any.check(jsonSchema))
|
|
86
|
+
return true;
|
|
87
|
+
if (JsonSchema.Const.check(jsonSchema))
|
|
88
|
+
return haveSameContents(jsonSchema.const, value);
|
|
89
|
+
if (JsonSchema.Enum.check(jsonSchema))
|
|
90
|
+
return jsonSchema.enum.some(item => haveSameContents(item, value));
|
|
91
|
+
if (value === null)
|
|
92
|
+
return isJsonSchemaNullable(jsonSchema);
|
|
93
|
+
if (JsonSchema.Null.check(jsonSchema))
|
|
94
|
+
return false;
|
|
95
|
+
if (JsonSchema.String.check(jsonSchema)) {
|
|
96
|
+
if (typeof value !== 'string')
|
|
97
|
+
return false;
|
|
98
|
+
if (jsonSchema.minLength !== undefined && value.length < jsonSchema.minLength)
|
|
99
|
+
return false;
|
|
100
|
+
if (jsonSchema.maxLength !== undefined && value.length > jsonSchema.maxLength)
|
|
101
|
+
return false;
|
|
102
|
+
// Format validation is intentionally lenient: const/enum values are assumed well-formed.
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
if (JsonSchema.Integer.check(jsonSchema)) {
|
|
106
|
+
if (typeof value !== 'number' || !Number.isInteger(value))
|
|
107
|
+
return false;
|
|
108
|
+
return numberConstraintsAccept(jsonSchema, value);
|
|
109
|
+
}
|
|
110
|
+
if (JsonSchema.Number.check(jsonSchema)) {
|
|
111
|
+
if (typeof value !== 'number')
|
|
112
|
+
return false;
|
|
113
|
+
return numberConstraintsAccept(jsonSchema, value);
|
|
114
|
+
}
|
|
115
|
+
if (JsonSchema.Boolean.check(jsonSchema))
|
|
116
|
+
return typeof value === 'boolean';
|
|
117
|
+
if (JsonSchema.Array.check(jsonSchema)) {
|
|
118
|
+
if (!Array.isArray(value))
|
|
119
|
+
return false;
|
|
120
|
+
if (jsonSchema.minItems !== undefined && value.length < jsonSchema.minItems)
|
|
121
|
+
return false;
|
|
122
|
+
if (jsonSchema.maxItems !== undefined && value.length > jsonSchema.maxItems)
|
|
123
|
+
return false;
|
|
124
|
+
if (jsonSchema.items !== undefined) {
|
|
125
|
+
const itemSchema = jsonSchema.items;
|
|
126
|
+
return value.every(item => schemaAcceptsValue(itemSchema, item));
|
|
127
|
+
}
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
if (JsonSchema.Object.check(jsonSchema)) {
|
|
131
|
+
if (typeof value !== 'object' || Array.isArray(value) || value === null)
|
|
132
|
+
return false;
|
|
133
|
+
const objectValue = value;
|
|
134
|
+
if (jsonSchema.required) {
|
|
135
|
+
for (const key of jsonSchema.required) {
|
|
136
|
+
if (objectValue[key] === undefined && !(key in objectValue))
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const additional = resolveAdditionalProperties(jsonSchema);
|
|
141
|
+
for (const [key, propertyValue] of Object.entries(objectValue)) {
|
|
142
|
+
const propertySchema = jsonSchema.properties?.[key];
|
|
143
|
+
if (propertySchema !== undefined) {
|
|
144
|
+
if (!schemaAcceptsValue(propertySchema, propertyValue))
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
if (additional === false)
|
|
149
|
+
return false;
|
|
150
|
+
if (!schemaAcceptsValue(additional, propertyValue))
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
function numberConstraintsAccept(jsonSchema, value) {
|
|
159
|
+
if (jsonSchema.minimum !== undefined && value < jsonSchema.minimum)
|
|
160
|
+
return false;
|
|
161
|
+
if (jsonSchema.maximum !== undefined && value > jsonSchema.maximum)
|
|
162
|
+
return false;
|
|
163
|
+
if (jsonSchema.exclusiveMinimum !== undefined && value <= jsonSchema.exclusiveMinimum)
|
|
164
|
+
return false;
|
|
165
|
+
if (jsonSchema.exclusiveMaximum !== undefined && value >= jsonSchema.exclusiveMaximum)
|
|
166
|
+
return false;
|
|
167
|
+
if (jsonSchema.multipleOf !== undefined && value % jsonSchema.multipleOf !== 0)
|
|
168
|
+
return false;
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
function isStringWiderThan(wider, narrower) {
|
|
172
|
+
// `wider` requires length ≥ wider.minLength → `narrower` must guarantee the same.
|
|
173
|
+
if (wider.minLength !== undefined) {
|
|
174
|
+
if (narrower.minLength === undefined || narrower.minLength < wider.minLength)
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
if (wider.maxLength !== undefined) {
|
|
178
|
+
if (narrower.maxLength === undefined || narrower.maxLength > wider.maxLength)
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
// `wider` requires a specific format → `narrower` must declare the same format.
|
|
182
|
+
// (We can't prove a `narrower` without `format` only emits, e.g., valid emails.)
|
|
183
|
+
if (wider.format !== undefined) {
|
|
184
|
+
if (narrower.format !== wider.format)
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
function lowerBound(s) {
|
|
190
|
+
const inclusive = s.minimum;
|
|
191
|
+
const exclusive = s.exclusiveMinimum;
|
|
192
|
+
if (inclusive !== undefined && exclusive !== undefined)
|
|
193
|
+
return exclusive >= inclusive ? { value: exclusive, exclusive: true } : { value: inclusive, exclusive: false };
|
|
194
|
+
if (exclusive !== undefined)
|
|
195
|
+
return { value: exclusive, exclusive: true };
|
|
196
|
+
if (inclusive !== undefined)
|
|
197
|
+
return { value: inclusive, exclusive: false };
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
function upperBound(s) {
|
|
201
|
+
const inclusive = s.maximum;
|
|
202
|
+
const exclusive = s.exclusiveMaximum;
|
|
203
|
+
if (inclusive !== undefined && exclusive !== undefined)
|
|
204
|
+
return exclusive <= inclusive ? { value: exclusive, exclusive: true } : { value: inclusive, exclusive: false };
|
|
205
|
+
if (exclusive !== undefined)
|
|
206
|
+
return { value: exclusive, exclusive: true };
|
|
207
|
+
if (inclusive !== undefined)
|
|
208
|
+
return { value: inclusive, exclusive: false };
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
/** Is `narrower`'s lower bound at least as restrictive as `wider`'s? */
|
|
212
|
+
function lowerBoundCovers(wider, narrower) {
|
|
213
|
+
if (narrower === null)
|
|
214
|
+
return false;
|
|
215
|
+
if (narrower.value > wider.value)
|
|
216
|
+
return true;
|
|
217
|
+
if (narrower.value < wider.value)
|
|
218
|
+
return false;
|
|
219
|
+
// Equal values: if `wider` is exclusive, `narrower` must also be exclusive.
|
|
220
|
+
return !wider.exclusive || narrower.exclusive;
|
|
221
|
+
}
|
|
222
|
+
function upperBoundCovers(wider, narrower) {
|
|
223
|
+
if (narrower === null)
|
|
224
|
+
return false;
|
|
225
|
+
if (narrower.value < wider.value)
|
|
226
|
+
return true;
|
|
227
|
+
if (narrower.value > wider.value)
|
|
228
|
+
return false;
|
|
229
|
+
return !wider.exclusive || narrower.exclusive;
|
|
230
|
+
}
|
|
231
|
+
function isNumericWiderThan(wider, narrower) {
|
|
232
|
+
const widerLower = lowerBound(wider);
|
|
233
|
+
if (widerLower !== null && !lowerBoundCovers(widerLower, lowerBound(narrower)))
|
|
234
|
+
return false;
|
|
235
|
+
const widerUpper = upperBound(wider);
|
|
236
|
+
if (widerUpper !== null && !upperBoundCovers(widerUpper, upperBound(narrower)))
|
|
237
|
+
return false;
|
|
238
|
+
// `wider` only accepts multiples of M → `narrower`'s multipleOf must be a multiple of M.
|
|
239
|
+
if (wider.multipleOf !== undefined) {
|
|
240
|
+
if (narrower.multipleOf === undefined)
|
|
241
|
+
return false;
|
|
242
|
+
if (narrower.multipleOf % wider.multipleOf !== 0)
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
return true;
|
|
246
|
+
}
|
|
247
|
+
function isArrayWiderThan(wider, narrower) {
|
|
248
|
+
if (wider.minItems !== undefined) {
|
|
249
|
+
if (narrower.minItems === undefined || narrower.minItems < wider.minItems)
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
if (wider.maxItems !== undefined) {
|
|
253
|
+
if (narrower.maxItems === undefined || narrower.maxItems > wider.maxItems)
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
if (wider.items !== undefined) {
|
|
257
|
+
// If `narrower.items` is omitted it accepts any item; we treat that as `Any` for the recursion.
|
|
258
|
+
const narrowerItems = narrower.items ?? ANY_SCHEMA;
|
|
259
|
+
if (!isJsonSchemaWiderThan(wider.items, narrowerItems))
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
return true;
|
|
263
|
+
}
|
|
264
|
+
function resolveAdditionalProperties(jsonSchema) {
|
|
265
|
+
const additional = jsonSchema.additionalProperties;
|
|
266
|
+
if (additional === undefined || additional === true)
|
|
267
|
+
return ANY_SCHEMA;
|
|
268
|
+
if (additional === false)
|
|
269
|
+
return false;
|
|
270
|
+
return additional;
|
|
271
|
+
}
|
|
272
|
+
function isObjectWiderThan(wider, narrower) {
|
|
273
|
+
// `wider` requires key K → `narrower` must also require K, otherwise `narrower` admits objects
|
|
274
|
+
// missing K which `wider` rejects.
|
|
275
|
+
if (wider.required) {
|
|
276
|
+
const narrowerRequired = new Set(narrower.required ?? []);
|
|
277
|
+
for (const key of wider.required) {
|
|
278
|
+
if (!narrowerRequired.has(key))
|
|
279
|
+
return false;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
const widerAdditional = resolveAdditionalProperties(wider);
|
|
283
|
+
const narrowerAdditional = resolveAdditionalProperties(narrower);
|
|
284
|
+
// For every key explicitly named in either schema, the per-key value schemas must be compatible.
|
|
285
|
+
const namedKeys = new Set([...Object.keys(wider.properties ?? {}), ...Object.keys(narrower.properties ?? {})]);
|
|
286
|
+
for (const key of namedKeys) {
|
|
287
|
+
const widerProperty = wider.properties?.[key];
|
|
288
|
+
const narrowerProperty = narrower.properties?.[key];
|
|
289
|
+
if (widerProperty !== undefined && narrowerProperty !== undefined) {
|
|
290
|
+
if (!isJsonSchemaWiderThan(widerProperty, narrowerProperty))
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
else if (widerProperty === undefined && narrowerProperty !== undefined) {
|
|
294
|
+
// narrower has property, wider does not, so wider uses additionalProperties
|
|
295
|
+
if (widerAdditional === false)
|
|
296
|
+
return false;
|
|
297
|
+
if (!isJsonSchemaWiderThan(widerAdditional, narrowerProperty))
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
else if (widerProperty !== undefined && narrowerProperty === undefined) {
|
|
301
|
+
// wider has property, narrower does not, so narrower uses additionalProperties
|
|
302
|
+
if (narrowerAdditional === false)
|
|
303
|
+
return false;
|
|
304
|
+
if (!isJsonSchemaWiderThan(widerProperty, narrowerAdditional))
|
|
305
|
+
return false;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
// For arbitrary keys named in neither schema, `additionalProperties` governs both sides.
|
|
309
|
+
if (narrowerAdditional === false) {
|
|
310
|
+
if (widerAdditional !== false)
|
|
311
|
+
return false;
|
|
312
|
+
}
|
|
313
|
+
else if (typeof narrowerAdditional === 'object') {
|
|
314
|
+
if (widerAdditional === false)
|
|
315
|
+
return false;
|
|
316
|
+
if (!isJsonSchemaWiderThan(widerAdditional, narrowerAdditional))
|
|
317
|
+
return false;
|
|
318
|
+
}
|
|
319
|
+
return true;
|
|
320
|
+
}
|
|
321
|
+
const ANY_SCHEMA = {};
|
|
322
|
+
//# sourceMappingURL=isJsonSchemaWiderThan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isJsonSchemaWiderThan.js","sourceRoot":"","sources":["../../../../src/types/Json/JsonSchema/isJsonSchemaWiderThan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Normalizer } from '../../Normalizer';
|
|
2
|
+
import { JsonSchema } from './JsonSchema';
|
|
3
|
+
export declare const jsonSchemaNormalizer: Normalizer<JsonSchema | null>;
|
|
4
|
+
export declare namespace jsonSchemaNormalizer { }
|
|
5
|
+
//# sourceMappingURL=jsonSchemaNormalizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonSchemaNormalizer.d.ts","sourceRoot":"","sources":["../../../../src/types/Json/JsonSchema/jsonSchemaNormalizer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,eAAO,MAAM,oBAAoB,+BA8J/B,CAAA;AAEF,yBAAiB,oBAAoB,CAAC,GAAE"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { arrayHelpers } from '../../../helpers/native/arrayHelpers';
|
|
2
|
+
import { objectHelpers } from '../../../helpers/native/objectHelpers';
|
|
3
|
+
import { normalizeArrayInline } from '../../../helpers/normalizeArrayInline';
|
|
4
|
+
import { normalizeObjectInline } from '../../../helpers/normalizeObjectInline';
|
|
5
|
+
import { descriptionNormalizer } from '../../../modules/common-normalizers/descriptionNormalizer';
|
|
6
|
+
import { Normalizer } from '../../Normalizer';
|
|
7
|
+
import { jsonNormalizer } from '../jsonNormalizer';
|
|
8
|
+
export const jsonSchemaNormalizer = Normalizer.object.required.chain((value, warn) => {
|
|
9
|
+
const schema = value;
|
|
10
|
+
const baseNormalizedItems = {
|
|
11
|
+
$comment: Normalizer.string.required.normalizeIfExists(schema.$comment),
|
|
12
|
+
title: Normalizer.stringTrimmed.required.normalizeIfExists(schema.title),
|
|
13
|
+
description: descriptionNormalizer.required.normalizeIfExists(schema.description),
|
|
14
|
+
default: jsonNormalizer.normalizeIfExists(schema.default),
|
|
15
|
+
examples: Normalizer.array.chain(Normalizer.arrayItems(jsonNormalizer)).required.normalizeIfExists(schema.examples),
|
|
16
|
+
};
|
|
17
|
+
if (schema.type === undefined && !('const' in schema) && !('enum' in schema))
|
|
18
|
+
return Normalizer.Normalized.combine({
|
|
19
|
+
...baseNormalizedItems,
|
|
20
|
+
}).getValue(warn);
|
|
21
|
+
if (schema.type === undefined && 'const' in schema)
|
|
22
|
+
return Normalizer.Normalized.combine({
|
|
23
|
+
...baseNormalizedItems,
|
|
24
|
+
const: jsonNormalizer.normalize(schema.const),
|
|
25
|
+
}).getValue(warn);
|
|
26
|
+
if (schema.type === undefined && 'enum' in schema)
|
|
27
|
+
return Normalizer.Normalized.combine({
|
|
28
|
+
...baseNormalizedItems,
|
|
29
|
+
enum: Normalizer.array.chain(Normalizer.arrayItems(jsonNormalizer)).required.normalize(schema.enum),
|
|
30
|
+
}).getValue(warn);
|
|
31
|
+
if (schema.type === 'null')
|
|
32
|
+
return Normalizer.Normalized.combine({
|
|
33
|
+
...baseNormalizedItems,
|
|
34
|
+
type: 'null',
|
|
35
|
+
}).getValue(warn);
|
|
36
|
+
if (schema.type === 'string' ||
|
|
37
|
+
(arrayHelpers.isArray(schema.type) &&
|
|
38
|
+
schema.type.length === 2 &&
|
|
39
|
+
schema.type.includes('string') &&
|
|
40
|
+
schema.type.includes('null'))) {
|
|
41
|
+
const stringSchema = schema;
|
|
42
|
+
return Normalizer.Normalized.combine({
|
|
43
|
+
...baseNormalizedItems,
|
|
44
|
+
type: stringSchema.type === 'string' ? 'string' : ['string', 'null'],
|
|
45
|
+
minLength: Normalizer.number.required.normalizeIfExists(stringSchema.minLength),
|
|
46
|
+
maxLength: Normalizer.number.required.normalizeIfExists(stringSchema.maxLength),
|
|
47
|
+
format: Normalizer.string.required.normalizeIfExists(stringSchema.format),
|
|
48
|
+
}).getValue(warn);
|
|
49
|
+
}
|
|
50
|
+
if (schema.type === 'number' ||
|
|
51
|
+
(arrayHelpers.isArray(schema.type) &&
|
|
52
|
+
schema.type.length === 2 &&
|
|
53
|
+
schema.type.includes('number') &&
|
|
54
|
+
schema.type.includes('null'))) {
|
|
55
|
+
const numberSchema = schema;
|
|
56
|
+
return Normalizer.Normalized.combine({
|
|
57
|
+
...baseNormalizedItems,
|
|
58
|
+
type: numberSchema.type === 'number' ? 'number' : ['number', 'null'],
|
|
59
|
+
minimum: Normalizer.number.required.normalizeIfExists(numberSchema.minimum),
|
|
60
|
+
maximum: Normalizer.number.required.normalizeIfExists(numberSchema.maximum),
|
|
61
|
+
exclusiveMinimum: Normalizer.number.required.normalizeIfExists(numberSchema.exclusiveMinimum),
|
|
62
|
+
exclusiveMaximum: Normalizer.number.required.normalizeIfExists(numberSchema.exclusiveMaximum),
|
|
63
|
+
multipleOf: Normalizer.number.required.normalizeIfExists(numberSchema.multipleOf),
|
|
64
|
+
}).getValue(warn);
|
|
65
|
+
}
|
|
66
|
+
if (schema.type === 'integer' ||
|
|
67
|
+
(arrayHelpers.isArray(schema.type) &&
|
|
68
|
+
schema.type.length === 2 &&
|
|
69
|
+
schema.type.includes('integer') &&
|
|
70
|
+
schema.type.includes('null'))) {
|
|
71
|
+
const integerSchema = schema;
|
|
72
|
+
return Normalizer.Normalized.combine({
|
|
73
|
+
...baseNormalizedItems,
|
|
74
|
+
type: integerSchema.type === 'integer' ? 'integer' : ['integer', 'null'],
|
|
75
|
+
minimum: Normalizer.number.required.normalizeIfExists(integerSchema.minimum),
|
|
76
|
+
maximum: Normalizer.number.required.normalizeIfExists(integerSchema.maximum),
|
|
77
|
+
exclusiveMinimum: Normalizer.number.required.normalizeIfExists(integerSchema.exclusiveMinimum),
|
|
78
|
+
exclusiveMaximum: Normalizer.number.required.normalizeIfExists(integerSchema.exclusiveMaximum),
|
|
79
|
+
multipleOf: Normalizer.number.required.normalizeIfExists(integerSchema.multipleOf),
|
|
80
|
+
}).getValue(warn);
|
|
81
|
+
}
|
|
82
|
+
if (schema.type === 'boolean' ||
|
|
83
|
+
(arrayHelpers.isArray(schema.type) &&
|
|
84
|
+
schema.type.length === 2 &&
|
|
85
|
+
schema.type.includes('boolean') &&
|
|
86
|
+
schema.type.includes('null'))) {
|
|
87
|
+
const booleanSchema = schema;
|
|
88
|
+
return Normalizer.Normalized.combine({
|
|
89
|
+
...baseNormalizedItems,
|
|
90
|
+
type: booleanSchema.type === 'boolean' ? 'boolean' : ['boolean', 'null'],
|
|
91
|
+
}).getValue(warn);
|
|
92
|
+
}
|
|
93
|
+
if (schema.type === 'array' ||
|
|
94
|
+
(arrayHelpers.isArray(schema.type) &&
|
|
95
|
+
schema.type.length === 2 &&
|
|
96
|
+
schema.type.includes('array') &&
|
|
97
|
+
schema.type.includes('null'))) {
|
|
98
|
+
const arraySchema = schema;
|
|
99
|
+
return Normalizer.Normalized.combine({
|
|
100
|
+
...baseNormalizedItems,
|
|
101
|
+
type: arraySchema.type === 'array' ? 'array' : ['array', 'null'],
|
|
102
|
+
items: jsonSchemaNormalizer.required.normalizeIfExists(arraySchema.items),
|
|
103
|
+
minItems: Normalizer.number.required.normalizeIfExists(arraySchema.minItems),
|
|
104
|
+
maxItems: Normalizer.number.required.normalizeIfExists(arraySchema.maxItems),
|
|
105
|
+
}).getValue(warn);
|
|
106
|
+
}
|
|
107
|
+
if (schema.type === 'object' ||
|
|
108
|
+
(arrayHelpers.isArray(schema.type) &&
|
|
109
|
+
schema.type.length === 2 &&
|
|
110
|
+
schema.type.includes('object') &&
|
|
111
|
+
schema.type.includes('null'))) {
|
|
112
|
+
const objectSchema = schema;
|
|
113
|
+
const propertiesNormalized = normalizeObjectInline(objectSchema.properties, properties => objectHelpers.map(objectHelpers.onlyExisting(properties), (key, value) => jsonSchemaNormalizer.required.normalize(value)));
|
|
114
|
+
if (objectSchema.additionalProperties === false)
|
|
115
|
+
warn('We recommend "additionalProperties" not to be false for maximum schema expandability in the future.');
|
|
116
|
+
return Normalizer.Normalized.combine({
|
|
117
|
+
...baseNormalizedItems,
|
|
118
|
+
type: objectSchema.type === 'object' ? 'object' : ['object', 'null'],
|
|
119
|
+
properties: propertiesNormalized,
|
|
120
|
+
required: propertiesNormalized.errorMessage
|
|
121
|
+
? undefined
|
|
122
|
+
: normalizeArrayInline(objectSchema.required, item => Normalizer.string.required
|
|
123
|
+
.chain((value, warn) => {
|
|
124
|
+
if (!(value in (propertiesNormalized.value ?? {})))
|
|
125
|
+
throw new Error(`Invalid required property "${value}". It must be a key in "properties".`);
|
|
126
|
+
return value;
|
|
127
|
+
})
|
|
128
|
+
.normalize(item)),
|
|
129
|
+
additionalProperties: typeof objectSchema.additionalProperties === 'boolean'
|
|
130
|
+
? objectSchema.additionalProperties
|
|
131
|
+
: jsonSchemaNormalizer.required.normalizeIfExists(objectSchema.additionalProperties),
|
|
132
|
+
}).getValue(warn);
|
|
133
|
+
}
|
|
134
|
+
throw new Error(`Unsupported type ${JSON.stringify(schema.type)}.`);
|
|
135
|
+
});
|
|
136
|
+
//# sourceMappingURL=jsonSchemaNormalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonSchemaNormalizer.js","sourceRoot":"","sources":["../../../../src/types/Json/JsonSchema/jsonSchemaNormalizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { JsonSchema } from './JsonSchema';
|
|
2
|
+
/** Returns the nullable version of the given JSON Schema. */
|
|
3
|
+
export declare function jsonSchemaNullable(jsonSchema: JsonSchema): JsonSchema;
|
|
4
|
+
export declare namespace jsonSchemaNullable { }
|
|
5
|
+
//# sourceMappingURL=jsonSchemaNullable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonSchemaNullable.d.ts","sourceRoot":"","sources":["../../../../src/types/Json/JsonSchema/jsonSchemaNullable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAyBrE;AAED,yBAAiB,kBAAkB,CAAC,GAAE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { arrayHelpers } from '../../../helpers/native/arrayHelpers';
|
|
2
|
+
import { objectHelpers } from '../../../helpers/native/objectHelpers';
|
|
3
|
+
import { JsonSchema } from './JsonSchema';
|
|
4
|
+
/** Returns the nullable version of the given JSON Schema. */
|
|
5
|
+
export function jsonSchemaNullable(jsonSchema) {
|
|
6
|
+
if (JsonSchema.Any.check(jsonSchema) || JsonSchema.Null.check(jsonSchema))
|
|
7
|
+
return jsonSchema;
|
|
8
|
+
if (JsonSchema.Const.check(jsonSchema)) {
|
|
9
|
+
if (jsonSchema.const === null)
|
|
10
|
+
return jsonSchema;
|
|
11
|
+
return {
|
|
12
|
+
...objectHelpers.omit(jsonSchema, 'const'),
|
|
13
|
+
enum: [jsonSchema.const, null],
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
if (JsonSchema.Enum.check(jsonSchema)) {
|
|
17
|
+
if (jsonSchema.enum.includes(null))
|
|
18
|
+
return jsonSchema;
|
|
19
|
+
return {
|
|
20
|
+
...jsonSchema,
|
|
21
|
+
enum: [...jsonSchema.enum, null],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
if (arrayHelpers.isArray(jsonSchema.type))
|
|
25
|
+
return jsonSchema;
|
|
26
|
+
return {
|
|
27
|
+
...jsonSchema,
|
|
28
|
+
type: [jsonSchema.type, 'null'],
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=jsonSchemaNullable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonSchemaNullable.js","sourceRoot":"","sources":["../../../../src/types/Json/JsonSchema/jsonSchemaNullable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,6DAA6D;AAC7D,MAAM,UAAU,kBAAkB,CAAC,UAAsB;IACvD,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAA;IAE5F,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,IAAI,UAAU,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO,UAAU,CAAA;QAChD,OAAO;YACL,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;YAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;SAC/B,CAAA;IACH,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,UAAU,CAAA;QACrD,OAAO;YACL,GAAG,UAAU;YACb,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;SACjC,CAAA;IACH,CAAC;IAED,IAAI,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAA;IAE5D,OAAO;QACL,GAAG,UAAU;QACb,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;KAClB,CAAA;AACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonNormalizer.d.ts","sourceRoot":"","sources":["../../../src/types/Json/jsonNormalizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,eAAO,MAAM,cAAc,kBAGzB,CAAA"}
|
|
1
|
+
{"version":3,"file":"jsonNormalizer.d.ts","sourceRoot":"","sources":["../../../src/types/Json/jsonNormalizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,eAAO,MAAM,cAAc,kBAGzB,CAAA;AAEF,yBAAiB,cAAc,CAAC,GAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonNormalizer.js","sourceRoot":"","sources":["../../../src/types/Json/jsonNormalizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC,CAAC,KAAK,EAAE,IAAI,EAAQ,EAAE;IACjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;IAC3D,OAAO,KAAK,CAAA;AACd,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"jsonNormalizer.js","sourceRoot":"","sources":["../../../src/types/Json/jsonNormalizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC,CAAC,KAAK,EAAE,IAAI,EAAQ,EAAE;IACjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;IAC3D,OAAO,KAAK,CAAA;AACd,CAAC,CAAC,CAAA;AAIF,SAAS,MAAM,CAAC,KAAU;IACxB,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAA;AAC5E,CAAC;AAED,SAAS,YAAY,CAAC,KAAU;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;AACxG,CAAC;AAED,SAAS,WAAW,CAAC,KAAU;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;AAClE,CAAC;AAED,SAAS,eAAe,CAAC,KAAU;IACjC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,CAAA;AAC/G,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { Normalizer } from '../Normalizer';
|
|
2
2
|
import { Json } from './Json';
|
|
3
|
-
|
|
3
|
+
import { JsonSchema } from './JsonSchema';
|
|
4
|
+
export declare function jsonNormalizerWithSchemaFactory<T = Json>(jsonSchema: JsonSchema): Normalizer<T>;
|
|
5
|
+
export declare namespace jsonNormalizerWithSchemaFactory { }
|
|
4
6
|
//# sourceMappingURL=jsonNormalizerWithSchemaFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonNormalizerWithSchemaFactory.d.ts","sourceRoot":"","sources":["../../../src/types/Json/jsonNormalizerWithSchemaFactory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"jsonNormalizerWithSchemaFactory.d.ts","sourceRoot":"","sources":["../../../src/types/Json/jsonNormalizerWithSchemaFactory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,wBAAgB,+BAA+B,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAE/F;AAED,yBAAiB,+BAA+B,CAAC,GAAE"}
|