@depup/typebox 1.3.27-depup.0 → 1.3.34-depup.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/README.md +2 -2
- package/build/compile/code.mjs +1 -2
- package/build/compile/validator.mjs +5 -1
- package/build/format/iri.mjs +16 -9
- package/build/guard/emit.mjs +2 -2
- package/build/guard/guard.d.mts +7 -5
- package/build/guard/guard.mjs +14 -9
- package/build/guard/index.mjs +6 -0
- package/build/guard/unicode/unicode.d.mts +6 -0
- package/build/guard/unicode/unicode.mjs +35 -0
- package/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
- package/build/schema/build.mjs +4 -5
- package/build/schema/check.mjs +1 -1
- package/build/schema/engine/_context.d.mts +5 -1
- package/build/schema/engine/_context.mjs +16 -3
- package/build/schema/engine/_functions.d.mts +2 -2
- package/build/schema/engine/_functions.mjs +1 -1
- package/build/schema/engine/_pathing.d.mts +1 -0
- package/build/schema/engine/_pathing.mjs +11 -0
- package/build/schema/engine/_reducer.d.mts +3 -3
- package/build/schema/engine/_refine.d.mts +5 -5
- package/build/schema/engine/_refine.mjs +14 -9
- package/build/schema/engine/_stack.d.mts +34 -20
- package/build/schema/engine/_stack.mjs +143 -202
- package/build/schema/engine/additionalItems.d.mts +4 -4
- package/build/schema/engine/additionalProperties.d.mts +8 -8
- package/build/schema/engine/additionalProperties.mjs +12 -15
- package/build/schema/engine/allOf.d.mts +4 -4
- package/build/schema/engine/allOf.mjs +1 -1
- package/build/schema/engine/anyOf.d.mts +4 -4
- package/build/schema/engine/anyOf.mjs +4 -9
- package/build/schema/engine/boolean.d.mts +4 -4
- package/build/schema/engine/boolean.mjs +2 -6
- package/build/schema/engine/const.d.mts +4 -4
- package/build/schema/engine/const.mjs +2 -6
- package/build/schema/engine/contains.d.mts +4 -4
- package/build/schema/engine/contains.mjs +2 -6
- package/build/schema/engine/dependencies.d.mts +4 -4
- package/build/schema/engine/dependencies.mjs +5 -7
- package/build/schema/engine/dependentRequired.d.mts +4 -4
- package/build/schema/engine/dependentRequired.mjs +2 -6
- package/build/schema/engine/dependentSchemas.d.mts +4 -4
- package/build/schema/engine/dependentSchemas.mjs +2 -1
- package/build/schema/engine/dynamicRef.d.mts +4 -4
- package/build/schema/engine/dynamicRef.mjs +12 -8
- package/build/schema/engine/enum.d.mts +4 -4
- package/build/schema/engine/enum.mjs +2 -6
- package/build/schema/engine/exclusiveMaximum.d.mts +4 -4
- package/build/schema/engine/exclusiveMaximum.mjs +2 -6
- package/build/schema/engine/exclusiveMinimum.d.mts +4 -4
- package/build/schema/engine/exclusiveMinimum.mjs +2 -6
- package/build/schema/engine/format.d.mts +4 -4
- package/build/schema/engine/format.mjs +11 -8
- package/build/schema/engine/if.d.mts +4 -4
- package/build/schema/engine/if.mjs +5 -13
- package/build/schema/engine/items.d.mts +4 -4
- package/build/schema/engine/items.mjs +1 -1
- package/build/schema/engine/maxContains.d.mts +4 -4
- package/build/schema/engine/maxContains.mjs +2 -6
- package/build/schema/engine/maxItems.d.mts +4 -4
- package/build/schema/engine/maxItems.mjs +2 -6
- package/build/schema/engine/maxLength.d.mts +4 -4
- package/build/schema/engine/maxLength.mjs +2 -6
- package/build/schema/engine/maxProperties.d.mts +4 -4
- package/build/schema/engine/maxProperties.mjs +2 -6
- package/build/schema/engine/maximum.d.mts +4 -4
- package/build/schema/engine/maximum.mjs +2 -6
- package/build/schema/engine/minContains.d.mts +4 -4
- package/build/schema/engine/minContains.mjs +2 -6
- package/build/schema/engine/minItems.d.mts +5 -5
- package/build/schema/engine/minItems.mjs +2 -6
- package/build/schema/engine/minLength.d.mts +4 -4
- package/build/schema/engine/minLength.mjs +2 -6
- package/build/schema/engine/minProperties.d.mts +4 -4
- package/build/schema/engine/minProperties.mjs +2 -6
- package/build/schema/engine/minimum.d.mts +4 -4
- package/build/schema/engine/minimum.mjs +2 -6
- package/build/schema/engine/multipleOf.d.mts +4 -4
- package/build/schema/engine/multipleOf.mjs +2 -6
- package/build/schema/engine/not.d.mts +4 -4
- package/build/schema/engine/not.mjs +4 -8
- package/build/schema/engine/oneOf.d.mts +4 -4
- package/build/schema/engine/oneOf.mjs +5 -10
- package/build/schema/engine/pattern.d.mts +4 -4
- package/build/schema/engine/pattern.mjs +3 -7
- package/build/schema/engine/patternProperties.d.mts +4 -4
- package/build/schema/engine/patternProperties.mjs +4 -3
- package/build/schema/engine/prefixItems.d.mts +4 -4
- package/build/schema/engine/prefixItems.mjs +1 -1
- package/build/schema/engine/properties.d.mts +4 -4
- package/build/schema/engine/properties.mjs +4 -3
- package/build/schema/engine/propertyNames.d.mts +4 -4
- package/build/schema/engine/propertyNames.mjs +5 -8
- package/build/schema/engine/recursiveRef.d.mts +4 -4
- package/build/schema/engine/recursiveRef.mjs +12 -8
- package/build/schema/engine/ref.d.mts +4 -4
- package/build/schema/engine/ref.mjs +18 -14
- package/build/schema/engine/required.d.mts +4 -4
- package/build/schema/engine/required.mjs +2 -6
- package/build/schema/engine/schema.d.mts +7 -7
- package/build/schema/engine/schema.mjs +136 -138
- package/build/schema/engine/type.d.mts +4 -4
- package/build/schema/engine/type.mjs +2 -6
- package/build/schema/engine/unevaluatedItems.d.mts +4 -4
- package/build/schema/engine/unevaluatedItems.mjs +3 -7
- package/build/schema/engine/unevaluatedProperties.d.mts +4 -4
- package/build/schema/engine/unevaluatedProperties.mjs +3 -7
- package/build/schema/engine/uniqueItems.d.mts +4 -4
- package/build/schema/engine/uniqueItems.mjs +2 -6
- package/build/schema/errors.mjs +1 -1
- package/build/schema/intern/intern.d.mts +6 -9
- package/build/schema/intern/intern.mjs +90 -56
- package/build/schema/meta/draft_2019_09.d.mts +2 -0
- package/build/schema/meta/draft_2019_09.mjs +288 -0
- package/build/schema/meta/draft_2020_12.d.mts +2 -0
- package/build/schema/meta/draft_2020_12.mjs +300 -0
- package/build/schema/meta/draft_3.d.mts +2 -0
- package/build/schema/meta/draft_3.mjs +143 -0
- package/build/schema/meta/draft_4.d.mts +2 -0
- package/build/schema/meta/draft_4.mjs +149 -0
- package/build/schema/meta/draft_6.d.mts +2 -0
- package/build/schema/meta/draft_6.mjs +155 -0
- package/build/schema/meta/draft_7.d.mts +2 -0
- package/build/schema/meta/draft_7.mjs +172 -0
- package/build/schema/meta/index.d.mts +2 -0
- package/build/schema/meta/index.mjs +2 -0
- package/build/schema/meta/meta.d.mts +9 -0
- package/build/schema/meta/meta.mjs +15 -0
- package/build/schema/meta/schema.d.mts +6 -0
- package/build/schema/meta/schema.mjs +1 -0
- package/build/schema/parse.mjs +3 -0
- package/build/schema/pointer/pointer.d.mts +1 -6
- package/build/schema/pointer/pointer.mjs +47 -64
- package/build/schema/resolve/resolve.d.mts +6 -32
- package/build/schema/resolve/resolve.mjs +231 -227
- package/build/schema/schema.d.mts +1 -0
- package/build/schema/schema.mjs +1 -0
- package/build/system/settings/internal.d.mts +2 -0
- package/build/system/settings/internal.mjs +20 -0
- package/build/system/settings/settings.d.mts +11 -0
- package/build/system/settings/settings.mjs +14 -0
- package/build/type/extends/inference.d.mts +1 -1
- package/build/type/extends/inference.mjs +15 -2
- package/build/type/extends/tuple.d.mts +2 -1
- package/build/type/extends/tuple.mjs +21 -1
- package/build/value/parse/parse.mjs +10 -4
- package/changes.json +1 -1
- package/package.json +3 -3
- package/readme.md +52 -84
- /package/build/guard/{string.d.mts → unicode/unicode_segment.d.mts} +0 -0
|
@@ -1,13 +1,9 @@
|
|
|
1
|
+
import { Arguments } from '../../system/arguments/index.mjs';
|
|
1
2
|
import { Hashing, Memory } from '../../system/index.mjs';
|
|
3
|
+
import * as Schema from '../types/index.mjs';
|
|
4
|
+
import * as Stack from '../engine/_stack.mjs';
|
|
2
5
|
import { Guard } from '../../guard/index.mjs';
|
|
3
6
|
import { Resolve } from '../resolve/index.mjs';
|
|
4
|
-
import * as S from '../types/index.mjs';
|
|
5
|
-
// ----------------------------------------------------------------
|
|
6
|
-
// UnsupportedKeyword
|
|
7
|
-
// ----------------------------------------------------------------
|
|
8
|
-
function UnsupportedKeyword(keyword) {
|
|
9
|
-
throw Error(`UnsupportedKeyword '${keyword}'`);
|
|
10
|
-
}
|
|
11
7
|
// ----------------------------------------------------------------
|
|
12
8
|
// UnresolvableRef
|
|
13
9
|
// ----------------------------------------------------------------
|
|
@@ -72,7 +68,7 @@ function FromIf(context, schema) {
|
|
|
72
68
|
// Items
|
|
73
69
|
// ----------------------------------------------------------------
|
|
74
70
|
function FromItems(context, schema) {
|
|
75
|
-
return
|
|
71
|
+
return Schema.IsItemsSized(schema) ? FromItemsSized(context, schema) : FromItemsUnsized(context, schema);
|
|
76
72
|
}
|
|
77
73
|
// ----------------------------------------------------------------
|
|
78
74
|
// ItemsSized
|
|
@@ -125,21 +121,59 @@ function FromPropertyNames(context, schema) {
|
|
|
125
121
|
// ----------------------------------------------------------------
|
|
126
122
|
// Ref
|
|
127
123
|
// ----------------------------------------------------------------
|
|
128
|
-
function ResolveRef(
|
|
129
|
-
|
|
124
|
+
function ResolveRef(stack, ref) {
|
|
125
|
+
const result = Resolve.Ref(stack, { $ref: ref });
|
|
126
|
+
return { schema: result.schema ?? UnresolvableRef(ref), stack: result.stack };
|
|
130
127
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
128
|
+
// ----------------------------------------------------------------
|
|
129
|
+
// DynamicRef
|
|
130
|
+
// ----------------------------------------------------------------
|
|
131
|
+
function ResolveDynamicRef(stack, schema) {
|
|
132
|
+
return Resolve.DynamicRef(stack, schema) ?? UnresolvableRef(schema.$dynamicRef);
|
|
133
|
+
}
|
|
134
|
+
// ----------------------------------------------------------------
|
|
135
|
+
// RecursiveRef
|
|
136
|
+
// ----------------------------------------------------------------
|
|
137
|
+
function ResolveRecursiveRef(stack, schema) {
|
|
138
|
+
return Resolve.RecursiveRef(stack, schema) ?? UnresolvableRef(schema.$recursiveRef);
|
|
139
|
+
}
|
|
140
|
+
// ----------------------------------------------------------------
|
|
141
|
+
// FromResolvedRef (shared logic for Ref, DynamicRef, RecursiveRef)
|
|
142
|
+
// ----------------------------------------------------------------
|
|
143
|
+
function FromResolvedRef(context, target, nextStack) {
|
|
144
|
+
const nextContext = { ...context, stack: nextStack };
|
|
135
145
|
const resolving = context.resolving.get(target);
|
|
136
146
|
if (Guard.IsUndefined(resolving))
|
|
137
|
-
return FromSchema(
|
|
147
|
+
return FromSchema(nextContext, target);
|
|
138
148
|
// Target is mid-intern, so this is a cycle (point at its reserved placeholder)
|
|
139
149
|
resolving.used = true;
|
|
140
150
|
return { $ref: `#/$defs/${resolving.key}` };
|
|
141
151
|
}
|
|
142
152
|
// ----------------------------------------------------------------
|
|
153
|
+
// FromRef
|
|
154
|
+
// ----------------------------------------------------------------
|
|
155
|
+
function FromRef(context, schema) {
|
|
156
|
+
// Resolve target off the current traversal stack, carrying forward any resource crossing
|
|
157
|
+
const { schema: target, stack } = ResolveRef(context.stack, schema.$ref);
|
|
158
|
+
return FromResolvedRef(context, target, stack);
|
|
159
|
+
}
|
|
160
|
+
// ----------------------------------------------------------------
|
|
161
|
+
// FromDynamicRef
|
|
162
|
+
// ----------------------------------------------------------------
|
|
163
|
+
function FromDynamicRef(context, schema) {
|
|
164
|
+
// Resolve target off the current traversal stack (dynamic scope depends on anchors seen so far)
|
|
165
|
+
const target = ResolveDynamicRef(context.stack, schema);
|
|
166
|
+
return FromResolvedRef(context, target, { ...context.stack, pendingResource: true });
|
|
167
|
+
}
|
|
168
|
+
// ----------------------------------------------------------------
|
|
169
|
+
// FromRecursiveRef
|
|
170
|
+
// ----------------------------------------------------------------
|
|
171
|
+
function FromRecursiveRef(context, schema) {
|
|
172
|
+
// Resolve target off the current traversal stack (recursive scope depends on the path taken so far)
|
|
173
|
+
const target = ResolveRecursiveRef(context.stack, schema);
|
|
174
|
+
return FromResolvedRef(context, target, { ...context.stack, pendingResource: true });
|
|
175
|
+
}
|
|
176
|
+
// ----------------------------------------------------------------
|
|
143
177
|
// Then
|
|
144
178
|
// ----------------------------------------------------------------
|
|
145
179
|
function FromThen(context, schema) {
|
|
@@ -161,46 +195,45 @@ function FromUnevaluatedProperties(context, schema) {
|
|
|
161
195
|
// SchemaObject
|
|
162
196
|
// ----------------------------------------------------------------
|
|
163
197
|
function FromSchemaObject(context, schema) {
|
|
164
|
-
// Reference schemas cannot contain other keywords
|
|
165
|
-
if (
|
|
198
|
+
// Reference-style schemas resolve to another node and cannot contain other keywords
|
|
199
|
+
if (Schema.IsRef(schema))
|
|
166
200
|
return FromRef(context, schema);
|
|
201
|
+
if (Schema.IsDynamicRef(schema))
|
|
202
|
+
return FromDynamicRef(context, schema);
|
|
203
|
+
if (Schema.IsRecursiveRef(schema))
|
|
204
|
+
return FromRecursiveRef(context, schema);
|
|
167
205
|
// Check if the schema has already been resolved
|
|
168
206
|
const existing = resolved.get(schema);
|
|
169
207
|
if (!Guard.IsUndefined(existing))
|
|
170
208
|
return existing;
|
|
171
|
-
// These keywords are unsupported
|
|
172
|
-
if (S.IsDynamicRef(schema))
|
|
173
|
-
UnsupportedKeyword('$dynamicRef');
|
|
174
|
-
if (S.IsRecursiveRef(schema))
|
|
175
|
-
UnsupportedKeyword('$recursiveRef');
|
|
176
209
|
// Reserve a placeholder key in case a nested ref cycles back to this schema
|
|
177
210
|
const reservation = { key: `x-ref-${context.resolving.size}`, used: false };
|
|
178
211
|
context.resolving.set(schema, reservation);
|
|
179
212
|
// Intern each subschema
|
|
180
213
|
const remapped = {
|
|
181
|
-
...(
|
|
182
|
-
...(
|
|
183
|
-
...(
|
|
184
|
-
...(
|
|
185
|
-
...(
|
|
186
|
-
...(
|
|
187
|
-
...(
|
|
188
|
-
...(
|
|
189
|
-
...(
|
|
190
|
-
...(
|
|
191
|
-
...(
|
|
192
|
-
...(
|
|
193
|
-
...(
|
|
194
|
-
...(
|
|
195
|
-
...(
|
|
196
|
-
...(
|
|
197
|
-
...(
|
|
198
|
-
...(
|
|
199
|
-
...(
|
|
214
|
+
...(Schema.IsRefine(schema) ? { ['~refine']: schema['~refine'] } : {}),
|
|
215
|
+
...(Schema.IsAdditionalItems(schema) ? { additionalItems: FromAdditionalItems(context, schema) } : {}),
|
|
216
|
+
...(Schema.IsAdditionalProperties(schema) ? { additionalProperties: FromAdditionalProperties(context, schema) } : {}),
|
|
217
|
+
...(Schema.IsAllOf(schema) ? { allOf: FromAllOf(context, schema) } : {}),
|
|
218
|
+
...(Schema.IsAnyOf(schema) ? { anyOf: FromAnyOf(context, schema) } : {}),
|
|
219
|
+
...(Schema.IsContains(schema) ? { contains: FromContains(context, schema) } : {}),
|
|
220
|
+
...(Schema.IsDependentSchemas(schema) ? { dependentSchemas: FromDependentSchemas(context, schema) } : {}),
|
|
221
|
+
...(Schema.IsElse(schema) ? { else: FromElse(context, schema) } : {}),
|
|
222
|
+
...(Schema.IsIf(schema) ? { if: FromIf(context, schema) } : {}),
|
|
223
|
+
...(Schema.IsItems(schema) ? { items: FromItems(context, schema) } : {}),
|
|
224
|
+
...(Schema.IsNot(schema) ? { not: FromNot(context, schema) } : {}),
|
|
225
|
+
...(Schema.IsOneOf(schema) ? { oneOf: FromOneOf(context, schema) } : {}),
|
|
226
|
+
...(Schema.IsPatternProperties(schema) ? { patternProperties: FromPatternProperties(context, schema) } : {}),
|
|
227
|
+
...(Schema.IsPrefixItems(schema) ? { prefixItems: FromPrefixItems(context, schema) } : {}),
|
|
228
|
+
...(Schema.IsProperties(schema) ? { properties: FromProperties(context, schema) } : {}),
|
|
229
|
+
...(Schema.IsPropertyNames(schema) ? { propertyNames: FromPropertyNames(context, schema) } : {}),
|
|
230
|
+
...(Schema.IsThen(schema) ? { then: FromThen(context, schema) } : {}),
|
|
231
|
+
...(Schema.IsUnevaluatedItems(schema) ? { unevaluatedItems: FromUnevaluatedItems(context, schema) } : {}),
|
|
232
|
+
...(Schema.IsUnevaluatedProperties(schema) ? { unevaluatedProperties: FromUnevaluatedProperties(context, schema) } : {})
|
|
200
233
|
};
|
|
201
234
|
context.resolving.delete(schema);
|
|
202
|
-
//
|
|
203
|
-
const interned = Memory.Discard(Memory.Assign(schema, remapped), ['$id']);
|
|
235
|
+
// Discard resolution keywords and finalize the interned schema
|
|
236
|
+
const interned = Memory.Discard(Memory.Assign(schema, remapped), ['$id', '$defs', '$anchor', '$dynamicAnchor', '$recursionAnchor']);
|
|
204
237
|
const key = reservation.used ? reservation.key : HashKey(interned);
|
|
205
238
|
registry.set(key, interned);
|
|
206
239
|
// Result
|
|
@@ -224,7 +257,8 @@ function FromSchemaBoolean(_context, schema) {
|
|
|
224
257
|
// Schema
|
|
225
258
|
// ----------------------------------------------------------------
|
|
226
259
|
function FromSchema(context, schema) {
|
|
227
|
-
|
|
260
|
+
const next = { ...context, stack: Stack.NextStack(context.stack, schema) };
|
|
261
|
+
return Schema.IsSchemaBoolean(schema) ? FromSchemaBoolean(next, schema) : FromSchemaObject(next, schema);
|
|
228
262
|
}
|
|
229
263
|
// ----------------------------------------------------------------
|
|
230
264
|
// BooleanEntry
|
|
@@ -238,22 +272,22 @@ function BooleanEntry(schema) {
|
|
|
238
272
|
// ----------------------------------------------------------------
|
|
239
273
|
const registry = new Map();
|
|
240
274
|
const resolved = new Map();
|
|
241
|
-
/**
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
export function Intern(schema) {
|
|
275
|
+
/** (Experimental) This function restructures the schema such that each distinct sub-schema is stored exactly once in a $defs object and keyed by content hash. */
|
|
276
|
+
export function Intern(...args) {
|
|
277
|
+
const [context, schema] = Arguments.Match(args, {
|
|
278
|
+
2: (context, schema) => [context, schema],
|
|
279
|
+
1: (schema) => [{}, schema]
|
|
280
|
+
});
|
|
248
281
|
registry.clear();
|
|
249
282
|
resolved.clear();
|
|
250
|
-
if (
|
|
283
|
+
if (Schema.IsSchemaBoolean(schema))
|
|
251
284
|
return BooleanEntry(schema);
|
|
252
|
-
const
|
|
253
|
-
const
|
|
254
|
-
|
|
285
|
+
const defs = Schema.IsDefs(schema) ? schema.$defs : {};
|
|
286
|
+
const rootStack = Stack.Stack({ ...context, ...defs }, schema);
|
|
287
|
+
const { schema: entry, stack } = Schema.IsRef(schema) ? ResolveRef(Stack.NextStack(rootStack, schema), schema.$ref) : { schema, stack: rootStack };
|
|
288
|
+
if (Schema.IsSchemaBoolean(entry))
|
|
255
289
|
return BooleanEntry(entry);
|
|
256
|
-
const ref_context = {
|
|
290
|
+
const ref_context = { stack, resolving: new Map() };
|
|
257
291
|
const result = FromSchema(ref_context, entry);
|
|
258
292
|
return { $ref: result.$ref, $defs: Object.fromEntries(registry) };
|
|
259
293
|
}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
export const Draft_2019_09 = {
|
|
2
|
+
'$schema': 'https://json-schema.org/draft/2019-09/schema',
|
|
3
|
+
'$id': 'https://json-schema.org/draft/2019-09/schema',
|
|
4
|
+
'$vocabulary': {
|
|
5
|
+
'https://json-schema.org/draft/2019-09/vocab/core': true,
|
|
6
|
+
'https://json-schema.org/draft/2019-09/vocab/applicator': true,
|
|
7
|
+
'https://json-schema.org/draft/2019-09/vocab/validation': true,
|
|
8
|
+
'https://json-schema.org/draft/2019-09/vocab/meta-data': true,
|
|
9
|
+
'https://json-schema.org/draft/2019-09/vocab/format': false,
|
|
10
|
+
'https://json-schema.org/draft/2019-09/vocab/content': true
|
|
11
|
+
},
|
|
12
|
+
'$recursiveAnchor': true,
|
|
13
|
+
'title': 'Core and Validation specifications meta-schema',
|
|
14
|
+
'allOf': [
|
|
15
|
+
{
|
|
16
|
+
'$schema': 'https://json-schema.org/draft/2019-09/schema',
|
|
17
|
+
'$id': 'https://json-schema.org/draft/2019-09/meta/core',
|
|
18
|
+
'$recursiveAnchor': true,
|
|
19
|
+
'title': 'Core vocabulary meta-schema',
|
|
20
|
+
'type': ['object', 'boolean'],
|
|
21
|
+
'properties': {
|
|
22
|
+
'$id': {
|
|
23
|
+
'type': 'string',
|
|
24
|
+
'format': 'uri-reference',
|
|
25
|
+
'$comment': 'Non-empty fragments not allowed.',
|
|
26
|
+
'pattern': '^[^#]*#?$'
|
|
27
|
+
},
|
|
28
|
+
'$schema': {
|
|
29
|
+
'type': 'string',
|
|
30
|
+
'format': 'uri'
|
|
31
|
+
},
|
|
32
|
+
'$anchor': {
|
|
33
|
+
'type': 'string',
|
|
34
|
+
'pattern': '^[A-Za-z][-A-Za-z0-9.:_]*$'
|
|
35
|
+
},
|
|
36
|
+
'$ref': {
|
|
37
|
+
'type': 'string',
|
|
38
|
+
'format': 'uri-reference'
|
|
39
|
+
},
|
|
40
|
+
'$recursiveRef': {
|
|
41
|
+
'type': 'string',
|
|
42
|
+
'format': 'uri-reference'
|
|
43
|
+
},
|
|
44
|
+
'$recursiveAnchor': {
|
|
45
|
+
'type': 'boolean',
|
|
46
|
+
'default': false
|
|
47
|
+
},
|
|
48
|
+
'$vocabulary': {
|
|
49
|
+
'type': 'object',
|
|
50
|
+
'propertyNames': {
|
|
51
|
+
'type': 'string',
|
|
52
|
+
'format': 'uri'
|
|
53
|
+
},
|
|
54
|
+
'additionalProperties': {
|
|
55
|
+
'type': 'boolean'
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
'$comment': {
|
|
59
|
+
'type': 'string'
|
|
60
|
+
},
|
|
61
|
+
'$defs': {
|
|
62
|
+
'type': 'object',
|
|
63
|
+
'additionalProperties': { '$recursiveRef': '#' },
|
|
64
|
+
'default': {}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
'$schema': 'https://json-schema.org/draft/2019-09/schema',
|
|
70
|
+
'$id': 'https://json-schema.org/draft/2019-09/meta/applicator',
|
|
71
|
+
'$recursiveAnchor': true,
|
|
72
|
+
'title': 'Applicator vocabulary meta-schema',
|
|
73
|
+
'type': ['object', 'boolean'],
|
|
74
|
+
'properties': {
|
|
75
|
+
'additionalItems': { '$recursiveRef': '#' },
|
|
76
|
+
'unevaluatedItems': { '$recursiveRef': '#' },
|
|
77
|
+
'items': {
|
|
78
|
+
'anyOf': [
|
|
79
|
+
{ '$recursiveRef': '#' },
|
|
80
|
+
{ '$ref': '#/$defs/schemaArray' }
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
'contains': { '$recursiveRef': '#' },
|
|
84
|
+
'additionalProperties': { '$recursiveRef': '#' },
|
|
85
|
+
'unevaluatedProperties': { '$recursiveRef': '#' },
|
|
86
|
+
'properties': {
|
|
87
|
+
'type': 'object',
|
|
88
|
+
'additionalProperties': { '$recursiveRef': '#' },
|
|
89
|
+
'default': {}
|
|
90
|
+
},
|
|
91
|
+
'patternProperties': {
|
|
92
|
+
'type': 'object',
|
|
93
|
+
'additionalProperties': { '$recursiveRef': '#' },
|
|
94
|
+
'propertyNames': { 'format': 'regex' },
|
|
95
|
+
'default': {}
|
|
96
|
+
},
|
|
97
|
+
'dependentSchemas': {
|
|
98
|
+
'type': 'object',
|
|
99
|
+
'additionalProperties': {
|
|
100
|
+
'$recursiveRef': '#'
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
'propertyNames': { '$recursiveRef': '#' },
|
|
104
|
+
'if': { '$recursiveRef': '#' },
|
|
105
|
+
'then': { '$recursiveRef': '#' },
|
|
106
|
+
'else': { '$recursiveRef': '#' },
|
|
107
|
+
'allOf': { '$ref': '#/$defs/schemaArray' },
|
|
108
|
+
'anyOf': { '$ref': '#/$defs/schemaArray' },
|
|
109
|
+
'oneOf': { '$ref': '#/$defs/schemaArray' },
|
|
110
|
+
'not': { '$recursiveRef': '#' }
|
|
111
|
+
},
|
|
112
|
+
'$defs': {
|
|
113
|
+
'schemaArray': {
|
|
114
|
+
'type': 'array',
|
|
115
|
+
'minItems': 1,
|
|
116
|
+
'items': { '$recursiveRef': '#' }
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
'$schema': 'https://json-schema.org/draft/2019-09/schema',
|
|
122
|
+
'$id': 'https://json-schema.org/draft/2019-09/meta/validation',
|
|
123
|
+
'$recursiveAnchor': true,
|
|
124
|
+
'title': 'Validation vocabulary meta-schema',
|
|
125
|
+
'type': ['object', 'boolean'],
|
|
126
|
+
'properties': {
|
|
127
|
+
'multipleOf': {
|
|
128
|
+
'type': 'number',
|
|
129
|
+
'exclusiveMinimum': 0
|
|
130
|
+
},
|
|
131
|
+
'maximum': {
|
|
132
|
+
'type': 'number'
|
|
133
|
+
},
|
|
134
|
+
'exclusiveMaximum': {
|
|
135
|
+
'type': 'number'
|
|
136
|
+
},
|
|
137
|
+
'minimum': {
|
|
138
|
+
'type': 'number'
|
|
139
|
+
},
|
|
140
|
+
'exclusiveMinimum': {
|
|
141
|
+
'type': 'number'
|
|
142
|
+
},
|
|
143
|
+
'maxLength': { '$ref': '#/$defs/nonNegativeInteger' },
|
|
144
|
+
'minLength': { '$ref': '#/$defs/nonNegativeIntegerDefault0' },
|
|
145
|
+
'pattern': {
|
|
146
|
+
'type': 'string',
|
|
147
|
+
'format': 'regex'
|
|
148
|
+
},
|
|
149
|
+
'maxItems': { '$ref': '#/$defs/nonNegativeInteger' },
|
|
150
|
+
'minItems': { '$ref': '#/$defs/nonNegativeIntegerDefault0' },
|
|
151
|
+
'uniqueItems': {
|
|
152
|
+
'type': 'boolean',
|
|
153
|
+
'default': false
|
|
154
|
+
},
|
|
155
|
+
'maxContains': { '$ref': '#/$defs/nonNegativeInteger' },
|
|
156
|
+
'minContains': {
|
|
157
|
+
'$ref': '#/$defs/nonNegativeInteger',
|
|
158
|
+
'default': 1
|
|
159
|
+
},
|
|
160
|
+
'maxProperties': { '$ref': '#/$defs/nonNegativeInteger' },
|
|
161
|
+
'minProperties': { '$ref': '#/$defs/nonNegativeIntegerDefault0' },
|
|
162
|
+
'required': { '$ref': '#/$defs/stringArray' },
|
|
163
|
+
'dependentRequired': {
|
|
164
|
+
'type': 'object',
|
|
165
|
+
'additionalProperties': {
|
|
166
|
+
'$ref': '#/$defs/stringArray'
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
'const': true,
|
|
170
|
+
'enum': {
|
|
171
|
+
'type': 'array',
|
|
172
|
+
'items': true
|
|
173
|
+
},
|
|
174
|
+
'type': {
|
|
175
|
+
'anyOf': [
|
|
176
|
+
{ '$ref': '#/$defs/simpleTypes' },
|
|
177
|
+
{
|
|
178
|
+
'type': 'array',
|
|
179
|
+
'items': { '$ref': '#/$defs/simpleTypes' },
|
|
180
|
+
'minItems': 1,
|
|
181
|
+
'uniqueItems': true
|
|
182
|
+
}
|
|
183
|
+
]
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
'$defs': {
|
|
187
|
+
'nonNegativeInteger': {
|
|
188
|
+
'type': 'integer',
|
|
189
|
+
'minimum': 0
|
|
190
|
+
},
|
|
191
|
+
'nonNegativeIntegerDefault0': {
|
|
192
|
+
'$ref': '#/$defs/nonNegativeInteger',
|
|
193
|
+
'default': 0
|
|
194
|
+
},
|
|
195
|
+
'simpleTypes': {
|
|
196
|
+
'enum': [
|
|
197
|
+
'array',
|
|
198
|
+
'boolean',
|
|
199
|
+
'integer',
|
|
200
|
+
'null',
|
|
201
|
+
'number',
|
|
202
|
+
'object',
|
|
203
|
+
'string'
|
|
204
|
+
]
|
|
205
|
+
},
|
|
206
|
+
'stringArray': {
|
|
207
|
+
'type': 'array',
|
|
208
|
+
'items': { 'type': 'string' },
|
|
209
|
+
'uniqueItems': true,
|
|
210
|
+
'default': []
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
'$schema': 'https://json-schema.org/draft/2019-09/schema',
|
|
216
|
+
'$id': 'https://json-schema.org/draft/2019-09/meta/meta-data',
|
|
217
|
+
'$recursiveAnchor': true,
|
|
218
|
+
'title': 'Meta-data vocabulary meta-schema',
|
|
219
|
+
'type': ['object', 'boolean'],
|
|
220
|
+
'properties': {
|
|
221
|
+
'title': {
|
|
222
|
+
'type': 'string'
|
|
223
|
+
},
|
|
224
|
+
'description': {
|
|
225
|
+
'type': 'string'
|
|
226
|
+
},
|
|
227
|
+
'default': true,
|
|
228
|
+
'deprecated': {
|
|
229
|
+
'type': 'boolean',
|
|
230
|
+
'default': false
|
|
231
|
+
},
|
|
232
|
+
'readOnly': {
|
|
233
|
+
'type': 'boolean',
|
|
234
|
+
'default': false
|
|
235
|
+
},
|
|
236
|
+
'writeOnly': {
|
|
237
|
+
'type': 'boolean',
|
|
238
|
+
'default': false
|
|
239
|
+
},
|
|
240
|
+
'examples': {
|
|
241
|
+
'type': 'array',
|
|
242
|
+
'items': true
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
'$schema': 'https://json-schema.org/draft/2019-09/schema',
|
|
248
|
+
'$id': 'https://json-schema.org/draft/2019-09/meta/format',
|
|
249
|
+
'$recursiveAnchor': true,
|
|
250
|
+
'title': 'Format vocabulary meta-schema',
|
|
251
|
+
'type': ['object', 'boolean'],
|
|
252
|
+
'properties': {
|
|
253
|
+
'format': { 'type': 'string' }
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
'$schema': 'https://json-schema.org/draft/2019-09/schema',
|
|
258
|
+
'$id': 'https://json-schema.org/draft/2019-09/meta/content',
|
|
259
|
+
'$recursiveAnchor': true,
|
|
260
|
+
'title': 'Content vocabulary meta-schema',
|
|
261
|
+
'type': ['object', 'boolean'],
|
|
262
|
+
'properties': {
|
|
263
|
+
'contentMediaType': { 'type': 'string' },
|
|
264
|
+
'contentEncoding': { 'type': 'string' },
|
|
265
|
+
'contentSchema': { '$recursiveRef': '#' }
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
],
|
|
269
|
+
'type': ['object', 'boolean'],
|
|
270
|
+
'properties': {
|
|
271
|
+
'definitions': {
|
|
272
|
+
'$comment': 'While no longer an official keyword as it is replaced by $defs, this keyword is retained in the meta-schema to prevent incompatible extensions as it remains in common use.',
|
|
273
|
+
'type': 'object',
|
|
274
|
+
'additionalProperties': { '$recursiveRef': '#' },
|
|
275
|
+
'default': {}
|
|
276
|
+
},
|
|
277
|
+
'dependencies': {
|
|
278
|
+
'$comment': '"dependencies" is no longer a keyword, but schema authors should avoid redefining it to facilitate a smooth transition to "dependentSchemas" and "dependentRequired"',
|
|
279
|
+
'type': 'object',
|
|
280
|
+
'additionalProperties': {
|
|
281
|
+
'anyOf': [
|
|
282
|
+
{ '$recursiveRef': '#' },
|
|
283
|
+
{ '$ref': 'meta/validation#/$defs/stringArray' }
|
|
284
|
+
]
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
};
|