@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.
Files changed (150) hide show
  1. package/README.md +2 -2
  2. package/build/compile/code.mjs +1 -2
  3. package/build/compile/validator.mjs +5 -1
  4. package/build/format/iri.mjs +16 -9
  5. package/build/guard/emit.mjs +2 -2
  6. package/build/guard/guard.d.mts +7 -5
  7. package/build/guard/guard.mjs +14 -9
  8. package/build/guard/index.mjs +6 -0
  9. package/build/guard/unicode/unicode.d.mts +6 -0
  10. package/build/guard/unicode/unicode.mjs +35 -0
  11. package/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
  12. package/build/schema/build.mjs +4 -5
  13. package/build/schema/check.mjs +1 -1
  14. package/build/schema/engine/_context.d.mts +5 -1
  15. package/build/schema/engine/_context.mjs +16 -3
  16. package/build/schema/engine/_functions.d.mts +2 -2
  17. package/build/schema/engine/_functions.mjs +1 -1
  18. package/build/schema/engine/_pathing.d.mts +1 -0
  19. package/build/schema/engine/_pathing.mjs +11 -0
  20. package/build/schema/engine/_reducer.d.mts +3 -3
  21. package/build/schema/engine/_refine.d.mts +5 -5
  22. package/build/schema/engine/_refine.mjs +14 -9
  23. package/build/schema/engine/_stack.d.mts +34 -20
  24. package/build/schema/engine/_stack.mjs +143 -202
  25. package/build/schema/engine/additionalItems.d.mts +4 -4
  26. package/build/schema/engine/additionalProperties.d.mts +8 -8
  27. package/build/schema/engine/additionalProperties.mjs +12 -15
  28. package/build/schema/engine/allOf.d.mts +4 -4
  29. package/build/schema/engine/allOf.mjs +1 -1
  30. package/build/schema/engine/anyOf.d.mts +4 -4
  31. package/build/schema/engine/anyOf.mjs +4 -9
  32. package/build/schema/engine/boolean.d.mts +4 -4
  33. package/build/schema/engine/boolean.mjs +2 -6
  34. package/build/schema/engine/const.d.mts +4 -4
  35. package/build/schema/engine/const.mjs +2 -6
  36. package/build/schema/engine/contains.d.mts +4 -4
  37. package/build/schema/engine/contains.mjs +2 -6
  38. package/build/schema/engine/dependencies.d.mts +4 -4
  39. package/build/schema/engine/dependencies.mjs +5 -7
  40. package/build/schema/engine/dependentRequired.d.mts +4 -4
  41. package/build/schema/engine/dependentRequired.mjs +2 -6
  42. package/build/schema/engine/dependentSchemas.d.mts +4 -4
  43. package/build/schema/engine/dependentSchemas.mjs +2 -1
  44. package/build/schema/engine/dynamicRef.d.mts +4 -4
  45. package/build/schema/engine/dynamicRef.mjs +12 -8
  46. package/build/schema/engine/enum.d.mts +4 -4
  47. package/build/schema/engine/enum.mjs +2 -6
  48. package/build/schema/engine/exclusiveMaximum.d.mts +4 -4
  49. package/build/schema/engine/exclusiveMaximum.mjs +2 -6
  50. package/build/schema/engine/exclusiveMinimum.d.mts +4 -4
  51. package/build/schema/engine/exclusiveMinimum.mjs +2 -6
  52. package/build/schema/engine/format.d.mts +4 -4
  53. package/build/schema/engine/format.mjs +11 -8
  54. package/build/schema/engine/if.d.mts +4 -4
  55. package/build/schema/engine/if.mjs +5 -13
  56. package/build/schema/engine/items.d.mts +4 -4
  57. package/build/schema/engine/items.mjs +1 -1
  58. package/build/schema/engine/maxContains.d.mts +4 -4
  59. package/build/schema/engine/maxContains.mjs +2 -6
  60. package/build/schema/engine/maxItems.d.mts +4 -4
  61. package/build/schema/engine/maxItems.mjs +2 -6
  62. package/build/schema/engine/maxLength.d.mts +4 -4
  63. package/build/schema/engine/maxLength.mjs +2 -6
  64. package/build/schema/engine/maxProperties.d.mts +4 -4
  65. package/build/schema/engine/maxProperties.mjs +2 -6
  66. package/build/schema/engine/maximum.d.mts +4 -4
  67. package/build/schema/engine/maximum.mjs +2 -6
  68. package/build/schema/engine/minContains.d.mts +4 -4
  69. package/build/schema/engine/minContains.mjs +2 -6
  70. package/build/schema/engine/minItems.d.mts +5 -5
  71. package/build/schema/engine/minItems.mjs +2 -6
  72. package/build/schema/engine/minLength.d.mts +4 -4
  73. package/build/schema/engine/minLength.mjs +2 -6
  74. package/build/schema/engine/minProperties.d.mts +4 -4
  75. package/build/schema/engine/minProperties.mjs +2 -6
  76. package/build/schema/engine/minimum.d.mts +4 -4
  77. package/build/schema/engine/minimum.mjs +2 -6
  78. package/build/schema/engine/multipleOf.d.mts +4 -4
  79. package/build/schema/engine/multipleOf.mjs +2 -6
  80. package/build/schema/engine/not.d.mts +4 -4
  81. package/build/schema/engine/not.mjs +4 -8
  82. package/build/schema/engine/oneOf.d.mts +4 -4
  83. package/build/schema/engine/oneOf.mjs +5 -10
  84. package/build/schema/engine/pattern.d.mts +4 -4
  85. package/build/schema/engine/pattern.mjs +3 -7
  86. package/build/schema/engine/patternProperties.d.mts +4 -4
  87. package/build/schema/engine/patternProperties.mjs +4 -3
  88. package/build/schema/engine/prefixItems.d.mts +4 -4
  89. package/build/schema/engine/prefixItems.mjs +1 -1
  90. package/build/schema/engine/properties.d.mts +4 -4
  91. package/build/schema/engine/properties.mjs +4 -3
  92. package/build/schema/engine/propertyNames.d.mts +4 -4
  93. package/build/schema/engine/propertyNames.mjs +5 -8
  94. package/build/schema/engine/recursiveRef.d.mts +4 -4
  95. package/build/schema/engine/recursiveRef.mjs +12 -8
  96. package/build/schema/engine/ref.d.mts +4 -4
  97. package/build/schema/engine/ref.mjs +18 -14
  98. package/build/schema/engine/required.d.mts +4 -4
  99. package/build/schema/engine/required.mjs +2 -6
  100. package/build/schema/engine/schema.d.mts +7 -7
  101. package/build/schema/engine/schema.mjs +136 -138
  102. package/build/schema/engine/type.d.mts +4 -4
  103. package/build/schema/engine/type.mjs +2 -6
  104. package/build/schema/engine/unevaluatedItems.d.mts +4 -4
  105. package/build/schema/engine/unevaluatedItems.mjs +3 -7
  106. package/build/schema/engine/unevaluatedProperties.d.mts +4 -4
  107. package/build/schema/engine/unevaluatedProperties.mjs +3 -7
  108. package/build/schema/engine/uniqueItems.d.mts +4 -4
  109. package/build/schema/engine/uniqueItems.mjs +2 -6
  110. package/build/schema/errors.mjs +1 -1
  111. package/build/schema/intern/intern.d.mts +6 -9
  112. package/build/schema/intern/intern.mjs +90 -56
  113. package/build/schema/meta/draft_2019_09.d.mts +2 -0
  114. package/build/schema/meta/draft_2019_09.mjs +288 -0
  115. package/build/schema/meta/draft_2020_12.d.mts +2 -0
  116. package/build/schema/meta/draft_2020_12.mjs +300 -0
  117. package/build/schema/meta/draft_3.d.mts +2 -0
  118. package/build/schema/meta/draft_3.mjs +143 -0
  119. package/build/schema/meta/draft_4.d.mts +2 -0
  120. package/build/schema/meta/draft_4.mjs +149 -0
  121. package/build/schema/meta/draft_6.d.mts +2 -0
  122. package/build/schema/meta/draft_6.mjs +155 -0
  123. package/build/schema/meta/draft_7.d.mts +2 -0
  124. package/build/schema/meta/draft_7.mjs +172 -0
  125. package/build/schema/meta/index.d.mts +2 -0
  126. package/build/schema/meta/index.mjs +2 -0
  127. package/build/schema/meta/meta.d.mts +9 -0
  128. package/build/schema/meta/meta.mjs +15 -0
  129. package/build/schema/meta/schema.d.mts +6 -0
  130. package/build/schema/meta/schema.mjs +1 -0
  131. package/build/schema/parse.mjs +3 -0
  132. package/build/schema/pointer/pointer.d.mts +1 -6
  133. package/build/schema/pointer/pointer.mjs +47 -64
  134. package/build/schema/resolve/resolve.d.mts +6 -32
  135. package/build/schema/resolve/resolve.mjs +231 -227
  136. package/build/schema/schema.d.mts +1 -0
  137. package/build/schema/schema.mjs +1 -0
  138. package/build/system/settings/internal.d.mts +2 -0
  139. package/build/system/settings/internal.mjs +20 -0
  140. package/build/system/settings/settings.d.mts +11 -0
  141. package/build/system/settings/settings.mjs +14 -0
  142. package/build/type/extends/inference.d.mts +1 -1
  143. package/build/type/extends/inference.mjs +15 -2
  144. package/build/type/extends/tuple.d.mts +2 -1
  145. package/build/type/extends/tuple.mjs +21 -1
  146. package/build/value/parse/parse.mjs +10 -4
  147. package/changes.json +1 -1
  148. package/package.json +3 -3
  149. package/readme.md +52 -84
  150. /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 S.IsItemsSized(schema) ? FromItemsSized(context, schema) : FromItemsUnsized(context, schema);
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(context, schema, ref) {
129
- return Resolve.Ref(context, schema, Resolve.DefaultBase, ref) ?? UnresolvableRef(ref);
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
- function FromRef(context, schema) {
132
- // Resolve target
133
- const target = ResolveRef(context.context, context.schema, schema.$ref);
134
- // Check if target is resolving, if not, resolve
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(context, target);
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 (S.IsRef(schema))
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
- ...(S.IsRefine(schema) ? { ['~refine']: schema['~refine'] } : {}),
182
- ...(S.IsAdditionalItems(schema) ? { additionalItems: FromAdditionalItems(context, schema) } : {}),
183
- ...(S.IsAdditionalProperties(schema) ? { additionalProperties: FromAdditionalProperties(context, schema) } : {}),
184
- ...(S.IsAllOf(schema) ? { allOf: FromAllOf(context, schema) } : {}),
185
- ...(S.IsAnyOf(schema) ? { anyOf: FromAnyOf(context, schema) } : {}),
186
- ...(S.IsContains(schema) ? { contains: FromContains(context, schema) } : {}),
187
- ...(S.IsDependentSchemas(schema) ? { dependentSchemas: FromDependentSchemas(context, schema) } : {}),
188
- ...(S.IsElse(schema) ? { else: FromElse(context, schema) } : {}),
189
- ...(S.IsIf(schema) ? { if: FromIf(context, schema) } : {}),
190
- ...(S.IsItems(schema) ? { items: FromItems(context, schema) } : {}),
191
- ...(S.IsNot(schema) ? { not: FromNot(context, schema) } : {}),
192
- ...(S.IsOneOf(schema) ? { oneOf: FromOneOf(context, schema) } : {}),
193
- ...(S.IsPatternProperties(schema) ? { patternProperties: FromPatternProperties(context, schema) } : {}),
194
- ...(S.IsPrefixItems(schema) ? { prefixItems: FromPrefixItems(context, schema) } : {}),
195
- ...(S.IsProperties(schema) ? { properties: FromProperties(context, schema) } : {}),
196
- ...(S.IsPropertyNames(schema) ? { propertyNames: FromPropertyNames(context, schema) } : {}),
197
- ...(S.IsThen(schema) ? { then: FromThen(context, schema) } : {}),
198
- ...(S.IsUnevaluatedItems(schema) ? { unevaluatedItems: FromUnevaluatedItems(context, schema) } : {}),
199
- ...(S.IsUnevaluatedProperties(schema) ? { unevaluatedProperties: FromUnevaluatedProperties(context, schema) } : {})
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
- // Finalize and register the result
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
- return S.IsSchemaBoolean(schema) ? FromSchemaBoolean(context, schema) : FromSchemaObject(context, schema);
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
- * [Experimental] Performs a Common Subexpression Elimination (CSE) transform on the given
243
- * schema. This function restructures the schema such that each distinct sub-schema is stored
244
- * exactly once in a $defs object and keyed by content hash. This function can be used to
245
- * both compress and optimize schemas prior to compilation.
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 (S.IsSchemaBoolean(schema))
283
+ if (Schema.IsSchemaBoolean(schema))
251
284
  return BooleanEntry(schema);
252
- const context = S.IsDefs(schema) ? schema.$defs : {};
253
- const entry = S.IsRef(schema) ? ResolveRef(context, schema, schema.$ref) : schema;
254
- if (S.IsSchemaBoolean(entry))
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 = { schema, context, resolving: new Map() };
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,2 @@
1
+ import type { XMetaSchemaObject } from './schema.mjs';
2
+ export declare const Draft_2019_09: XMetaSchemaObject;
@@ -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
+ };
@@ -0,0 +1,2 @@
1
+ import type { XMetaSchemaObject } from './schema.mjs';
2
+ export declare const Draft_2020_12: XMetaSchemaObject;