effect 3.11.4 → 3.11.5

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.
@@ -11,33 +11,68 @@ import * as AST from "./SchemaAST.js";
11
11
  * @since 3.10.0
12
12
  */
13
13
  export const make = schema => {
14
- const $defs = {};
15
- const jsonSchema = go(schema.ast, $defs, true, []);
16
- const out = {
17
- $schema,
18
- ...jsonSchema
19
- };
20
- // clean up self-referencing entries
21
- for (const id in $defs) {
22
- if ($defs[id]["$ref"] === get$ref(id)) {
23
- delete $defs[id];
24
- }
25
- }
26
- if (!Record.isEmptyRecord($defs)) {
27
- out.$defs = $defs;
14
+ const definitions = {};
15
+ const ast = AST.isTransformation(schema.ast) && isParseJsonTransformation(schema.ast.from)
16
+ // Special case top level `parseJson` transformations
17
+ ? schema.ast.to : schema.ast;
18
+ const out = fromAST(ast, {
19
+ definitions
20
+ });
21
+ out.$schema = $schema;
22
+ if (!Record.isEmptyRecord(definitions)) {
23
+ out.$defs = definitions;
28
24
  }
29
25
  return out;
30
26
  };
31
- const anyJsonSchema = {
32
- $id: "/schemas/any"
27
+ /**
28
+ * Returns a JSON Schema with additional options and definitions.
29
+ *
30
+ * **Warning**
31
+ *
32
+ * This function is experimental and subject to change.
33
+ *
34
+ * **Details**
35
+ *
36
+ * - `definitions`: A record of definitions that are included in the schema.
37
+ * - `definitionPath`: The path to the definitions within the schema (defaults
38
+ * to "#/$defs/").
39
+ * - `target`: Which spec to target. Possible values are:
40
+ * - `'jsonSchema7'`: JSON Schema draft-07 (default behavior).
41
+ * - `'jsonSchema2019-09'`: JSON Schema draft-2019-09.
42
+ * - `'openApi3.1'`: OpenAPI 3.1.
43
+ * - `topLevelReferenceStrategy`: Controls the handling of the top-level
44
+ * reference. Possible values are:
45
+ * - `"keep"`: Keep the top-level reference (default behavior).
46
+ * - `"skip"`: Skip the top-level reference.
47
+ *
48
+ * @category encoding
49
+ * @since 3.11.5
50
+ * @experimental
51
+ */
52
+ export const fromAST = (ast, options) => {
53
+ const definitionPath = options.definitionPath ?? "#/$defs/";
54
+ const getRef = id => definitionPath + id;
55
+ const target = options.target ?? "jsonSchema7";
56
+ const handleIdentifier = options.topLevelReferenceStrategy !== "skip";
57
+ return go(ast, options.definitions, handleIdentifier, [], {
58
+ getRef,
59
+ target
60
+ });
61
+ };
62
+ const constNever = {
63
+ "$id": "/schemas/never",
64
+ "not": {}
33
65
  };
34
- const unknownJsonSchema = {
35
- $id: "/schemas/unknown"
66
+ const constAny = {
67
+ "$id": "/schemas/any"
36
68
  };
37
- const voidJsonSchema = {
38
- $id: "/schemas/void"
69
+ const constUnknown = {
70
+ "$id": "/schemas/unknown"
39
71
  };
40
- const objectJsonSchema = {
72
+ const constVoid = {
73
+ "$id": "/schemas/void"
74
+ };
75
+ const constAnyObject = {
41
76
  "$id": "/schemas/object",
42
77
  "anyOf": [{
43
78
  "type": "object"
@@ -45,14 +80,14 @@ const objectJsonSchema = {
45
80
  "type": "array"
46
81
  }]
47
82
  };
48
- const empty = () => ({
83
+ const constEmpty = {
49
84
  "$id": "/schemas/{}",
50
85
  "anyOf": [{
51
86
  "type": "object"
52
87
  }, {
53
88
  "type": "array"
54
89
  }]
55
- });
90
+ };
56
91
  const $schema = "http://json-schema.org/draft-07/schema#";
57
92
  const getJsonSchemaAnnotations = annotated => Record.getSomes({
58
93
  description: AST.getDescriptionAnnotation(annotated),
@@ -85,90 +120,104 @@ const getASTJsonSchemaAnnotations = ast => {
85
120
  const pruneUndefinedFromPropertySignature = ast => {
86
121
  if (Option.isNone(AST.getJSONSchemaAnnotation(ast))) {
87
122
  switch (ast._tag) {
123
+ case "UndefinedKeyword":
124
+ return AST.neverKeyword;
88
125
  case "Union":
89
126
  {
90
- const types = ast.types.filter(type => !AST.isUndefinedKeyword(type));
91
- if (types.length < ast.types.length) {
92
- return AST.Union.make(types, ast.annotations);
127
+ const types = [];
128
+ let hasUndefined = false;
129
+ for (const type of ast.types) {
130
+ const pruned = pruneUndefinedFromPropertySignature(type);
131
+ if (pruned) {
132
+ hasUndefined = true;
133
+ if (!AST.isNeverKeyword(pruned)) {
134
+ types.push(pruned);
135
+ }
136
+ } else {
137
+ types.push(type);
138
+ }
139
+ }
140
+ if (hasUndefined) {
141
+ return AST.Union.make(types);
93
142
  }
94
143
  break;
95
144
  }
145
+ case "Suspend":
146
+ return pruneUndefinedFromPropertySignature(ast.f());
96
147
  case "Transformation":
97
- return pruneUndefinedFromPropertySignature(isParseJsonTransformation(ast.from) ? ast.to : ast.from);
148
+ return pruneUndefinedFromPropertySignature(ast.from);
98
149
  }
99
150
  }
100
151
  };
101
- /** @internal */
102
- export const DEFINITION_PREFIX = "#/$defs/";
103
- const get$ref = id => `${DEFINITION_PREFIX}${id}`;
104
- const getRefinementInnerTransformation = ast => {
105
- switch (ast.from._tag) {
106
- case "Transformation":
107
- return ast.from;
108
- case "Refinement":
109
- return getRefinementInnerTransformation(ast.from);
110
- case "Suspend":
111
- {
112
- const from = ast.from.f();
113
- if (AST.isRefinement(from)) {
114
- return getRefinementInnerTransformation(from);
115
- }
116
- }
117
- }
118
- };
119
152
  const isParseJsonTransformation = ast => ast.annotations[AST.SchemaIdAnnotationId] === AST.ParseJsonSchemaId;
120
- function merge(a, b) {
121
- return {
122
- ...a,
123
- ...b
124
- };
125
- }
126
153
  const isOverrideAnnotation = jsonSchema => {
127
154
  return "type" in jsonSchema || "oneOf" in jsonSchema || "anyOf" in jsonSchema || "const" in jsonSchema || "enum" in jsonSchema || "$ref" in jsonSchema;
128
155
  };
129
- const go = (ast, $defs, handleIdentifier, path) => {
130
- const hook = AST.getJSONSchemaAnnotation(ast);
131
- if (Option.isSome(hook)) {
132
- const handler = hook.value;
133
- if (AST.isRefinement(ast)) {
134
- const t = getRefinementInnerTransformation(ast);
135
- if (t === undefined) {
136
- try {
137
- return {
138
- ...go(ast.from, $defs, true, path),
139
- ...getJsonSchemaAnnotations(ast),
140
- ...handler
141
- };
142
- } catch (e) {
143
- return {
144
- ...getJsonSchemaAnnotations(ast),
145
- ...handler
146
- };
147
- }
148
- } else if (!isOverrideAnnotation(handler)) {
149
- return go(t, $defs, true, path);
150
- }
156
+ // Returns true if the schema is an enum with no other properties.
157
+ // This is used to merge enums together.
158
+ const isEnumOnly = schema => "enum" in schema && Object.keys(schema).length === 1;
159
+ const mergeRefinements = (from, jsonSchema, annotations) => {
160
+ const out = {
161
+ ...from,
162
+ ...annotations,
163
+ ...jsonSchema
164
+ };
165
+ out.allOf ??= [];
166
+ const handle = (name, filter) => {
167
+ if (name in jsonSchema && name in from) {
168
+ out.allOf.unshift({
169
+ [name]: from[name]
170
+ });
171
+ out.allOf = out.allOf.filter(filter);
151
172
  }
152
- return handler;
153
- }
154
- const surrogate = AST.getSurrogateAnnotation(ast);
155
- if (Option.isSome(surrogate)) {
156
- return go(surrogate.value, $defs, handleIdentifier, path);
173
+ };
174
+ handle("minLength", i => i.minLength > jsonSchema.minLength);
175
+ handle("maxLength", i => i.maxLength < jsonSchema.maxLength);
176
+ handle("pattern", i => i.pattern !== jsonSchema.pattern);
177
+ handle("minItems", i => i.minItems > jsonSchema.minItems);
178
+ handle("maxItems", i => i.maxItems < jsonSchema.maxItems);
179
+ handle("minimum", i => i.minimum > jsonSchema.minimum);
180
+ handle("maximum", i => i.maximum < jsonSchema.maximum);
181
+ handle("exclusiveMinimum", i => i.exclusiveMinimum > jsonSchema.exclusiveMinimum);
182
+ handle("exclusiveMaximum", i => i.exclusiveMaximum < jsonSchema.exclusiveMaximum);
183
+ handle("multipleOf", i => i.multipleOf !== jsonSchema.multipleOf);
184
+ if (out.allOf.length === 0) {
185
+ delete out.allOf;
157
186
  }
158
- if (handleIdentifier && !AST.isTransformation(ast) && !AST.isRefinement(ast)) {
187
+ return out;
188
+ };
189
+ const go = (ast, $defs, handleIdentifier, path, options) => {
190
+ if (handleIdentifier) {
159
191
  const identifier = AST.getJSONIdentifier(ast);
160
192
  if (Option.isSome(identifier)) {
161
193
  const id = identifier.value;
162
194
  const out = {
163
- $ref: get$ref(id)
195
+ $ref: options.getRef(id)
164
196
  };
165
197
  if (!Record.has($defs, id)) {
166
198
  $defs[id] = out;
167
- $defs[id] = go(ast, $defs, false, path);
199
+ $defs[id] = go(ast, $defs, false, path, options);
168
200
  }
169
201
  return out;
170
202
  }
171
203
  }
204
+ const hook = AST.getJSONSchemaAnnotation(ast);
205
+ if (Option.isSome(hook)) {
206
+ const handler = hook.value;
207
+ if (AST.isRefinement(ast)) {
208
+ const t = AST.getTransformationFrom(ast);
209
+ if (t === undefined) {
210
+ return mergeRefinements(go(ast.from, $defs, handleIdentifier, path, options), handler, getJsonSchemaAnnotations(ast));
211
+ } else if (!isOverrideAnnotation(handler)) {
212
+ return go(t, $defs, handleIdentifier, path, options);
213
+ }
214
+ }
215
+ return handler;
216
+ }
217
+ const surrogate = AST.getSurrogateAnnotation(ast);
218
+ if (Option.isSome(surrogate)) {
219
+ return go(surrogate.value, $defs, handleIdentifier, path, options);
220
+ }
172
221
  switch (ast._tag) {
173
222
  case "Declaration":
174
223
  throw new Error(errors_.getJSONSchemaMissingAnnotationErrorMessage(path, ast));
@@ -176,13 +225,15 @@ const go = (ast, $defs, handleIdentifier, path) => {
176
225
  {
177
226
  const literal = ast.literal;
178
227
  if (literal === null) {
179
- return merge({
180
- enum: [null]
181
- }, getJsonSchemaAnnotations(ast));
228
+ return {
229
+ enum: [null],
230
+ ...getJsonSchemaAnnotations(ast)
231
+ };
182
232
  } else if (Predicate.isString(literal) || Predicate.isNumber(literal) || Predicate.isBoolean(literal)) {
183
- return merge({
184
- enum: [literal]
185
- }, getJsonSchemaAnnotations(ast));
233
+ return {
234
+ enum: [literal],
235
+ ...getJsonSchemaAnnotations(ast)
236
+ };
186
237
  }
187
238
  throw new Error(errors_.getJSONSchemaMissingAnnotationErrorMessage(path, ast));
188
239
  }
@@ -191,15 +242,30 @@ const go = (ast, $defs, handleIdentifier, path) => {
191
242
  case "UndefinedKeyword":
192
243
  throw new Error(errors_.getJSONSchemaMissingAnnotationErrorMessage(path, ast));
193
244
  case "VoidKeyword":
194
- return merge(voidJsonSchema, getJsonSchemaAnnotations(ast));
245
+ return {
246
+ ...constVoid,
247
+ ...getJsonSchemaAnnotations(ast)
248
+ };
195
249
  case "NeverKeyword":
196
- throw new Error(errors_.getJSONSchemaMissingAnnotationErrorMessage(path, ast));
250
+ return {
251
+ ...constNever,
252
+ ...getJsonSchemaAnnotations(ast)
253
+ };
197
254
  case "UnknownKeyword":
198
- return merge(unknownJsonSchema, getJsonSchemaAnnotations(ast));
255
+ return {
256
+ ...constUnknown,
257
+ ...getJsonSchemaAnnotations(ast)
258
+ };
199
259
  case "AnyKeyword":
200
- return merge(anyJsonSchema, getJsonSchemaAnnotations(ast));
260
+ return {
261
+ ...constAny,
262
+ ...getJsonSchemaAnnotations(ast)
263
+ };
201
264
  case "ObjectKeyword":
202
- return merge(objectJsonSchema, getJsonSchemaAnnotations(ast));
265
+ return {
266
+ ...constAnyObject,
267
+ ...getJsonSchemaAnnotations(ast)
268
+ };
203
269
  case "StringKeyword":
204
270
  return {
205
271
  type: "string",
@@ -221,8 +287,14 @@ const go = (ast, $defs, handleIdentifier, path) => {
221
287
  throw new Error(errors_.getJSONSchemaMissingAnnotationErrorMessage(path, ast));
222
288
  case "TupleType":
223
289
  {
224
- const elements = ast.elements.map((e, i) => merge(go(e.type, $defs, true, path.concat(i)), getJsonSchemaAnnotations(e)));
225
- const rest = ast.rest.map(annotatedAST => merge(go(annotatedAST.type, $defs, true, path), getJsonSchemaAnnotations(annotatedAST)));
290
+ const elements = ast.elements.map((e, i) => ({
291
+ ...go(e.type, $defs, true, path.concat(i), options),
292
+ ...getJsonSchemaAnnotations(e)
293
+ }));
294
+ const rest = ast.rest.map(annotatedAST => ({
295
+ ...go(annotatedAST.type, $defs, true, path, options),
296
+ ...getJsonSchemaAnnotations(annotatedAST)
297
+ }));
226
298
  const output = {
227
299
  type: "array"
228
300
  };
@@ -259,12 +331,18 @@ const go = (ast, $defs, handleIdentifier, path) => {
259
331
  output.maxItems = 0;
260
332
  }
261
333
  }
262
- return merge(output, getJsonSchemaAnnotations(ast));
334
+ return {
335
+ ...output,
336
+ ...getJsonSchemaAnnotations(ast)
337
+ };
263
338
  }
264
339
  case "TypeLiteral":
265
340
  {
266
341
  if (ast.propertySignatures.length === 0 && ast.indexSignatures.length === 0) {
267
- return merge(empty(), getJsonSchemaAnnotations(ast));
342
+ return {
343
+ ...constEmpty,
344
+ ...getJsonSchemaAnnotations(ast)
345
+ };
268
346
  }
269
347
  let patternProperties = undefined;
270
348
  let propertyNames = undefined;
@@ -273,12 +351,12 @@ const go = (ast, $defs, handleIdentifier, path) => {
273
351
  switch (parameter._tag) {
274
352
  case "StringKeyword":
275
353
  {
276
- patternProperties = go(is.type, $defs, true, path);
354
+ patternProperties = go(is.type, $defs, true, path, options);
277
355
  break;
278
356
  }
279
357
  case "TemplateLiteral":
280
358
  {
281
- patternProperties = go(is.type, $defs, true, path);
359
+ patternProperties = go(is.type, $defs, true, path, options);
282
360
  propertyNames = {
283
361
  type: "string",
284
362
  pattern: AST.getTemplateLiteralRegExp(parameter).source
@@ -287,8 +365,8 @@ const go = (ast, $defs, handleIdentifier, path) => {
287
365
  }
288
366
  case "Refinement":
289
367
  {
290
- patternProperties = go(is.type, $defs, true, path);
291
- propertyNames = go(parameter, $defs, true, path);
368
+ patternProperties = go(is.type, $defs, true, path, options);
369
+ propertyNames = go(parameter, $defs, true, path, options);
292
370
  break;
293
371
  }
294
372
  case "SymbolKeyword":
@@ -309,7 +387,10 @@ const go = (ast, $defs, handleIdentifier, path) => {
309
387
  const name = ps.name;
310
388
  if (Predicate.isString(name)) {
311
389
  const pruned = pruneUndefinedFromPropertySignature(ps.type);
312
- output.properties[name] = merge(go(pruned ? pruned : ps.type, $defs, true, path.concat(ps.name)), getJsonSchemaAnnotations(ps));
390
+ output.properties[name] = {
391
+ ...go(pruned ?? ps.type, $defs, true, path.concat(ps.name), options),
392
+ ...getJsonSchemaAnnotations(ps)
393
+ };
313
394
  // ---------------------------------------------
314
395
  // handle optional property signatures
315
396
  // ---------------------------------------------
@@ -332,67 +413,74 @@ const go = (ast, $defs, handleIdentifier, path) => {
332
413
  if (propertyNames !== undefined) {
333
414
  output.propertyNames = propertyNames;
334
415
  }
335
- return merge(output, getJsonSchemaAnnotations(ast));
416
+ return {
417
+ ...output,
418
+ ...getJsonSchemaAnnotations(ast)
419
+ };
336
420
  }
337
421
  case "Union":
338
422
  {
339
- const enums = [];
340
423
  const anyOf = [];
341
424
  for (const type of ast.types) {
342
- const schema = go(type, $defs, true, path);
425
+ const schema = go(type, $defs, true, path, options);
343
426
  if ("enum" in schema) {
344
427
  if (Object.keys(schema).length > 1) {
345
428
  anyOf.push(schema);
346
429
  } else {
347
- for (const e of schema.enum) {
348
- enums.push(e);
430
+ const last = anyOf[anyOf.length - 1];
431
+ if (last !== undefined && isEnumOnly(last)) {
432
+ for (const e of schema.enum) {
433
+ last.enum.push(e);
434
+ }
435
+ } else {
436
+ anyOf.push(schema);
349
437
  }
350
438
  }
351
439
  } else {
352
440
  anyOf.push(schema);
353
441
  }
354
442
  }
355
- if (anyOf.length === 0) {
356
- return merge({
357
- enum: enums
358
- }, getJsonSchemaAnnotations(ast));
443
+ if (anyOf.length === 1 && isEnumOnly(anyOf[0])) {
444
+ return {
445
+ enum: anyOf[0].enum,
446
+ ...getJsonSchemaAnnotations(ast)
447
+ };
359
448
  } else {
360
- if (enums.length >= 1) {
361
- anyOf.push({
362
- enum: enums
363
- });
364
- }
365
- return merge({
366
- anyOf
367
- }, getJsonSchemaAnnotations(ast));
449
+ return {
450
+ anyOf,
451
+ ...getJsonSchemaAnnotations(ast)
452
+ };
368
453
  }
369
454
  }
370
455
  case "Enums":
371
456
  {
372
- return merge({
457
+ return {
373
458
  $comment: "/schemas/enums",
374
459
  anyOf: ast.enums.map(e => ({
375
460
  title: e[0],
376
461
  enum: [e[1]]
377
- }))
378
- }, getJsonSchemaAnnotations(ast));
462
+ })),
463
+ ...getJsonSchemaAnnotations(ast)
464
+ };
379
465
  }
380
466
  case "Refinement":
381
467
  {
382
- if (AST.encodedBoundAST(ast) === ast) {
468
+ // The jsonSchema annotation is required only if the refinement does not have a transformation
469
+ if (AST.getTransformationFrom(ast) === undefined) {
383
470
  throw new Error(errors_.getJSONSchemaMissingAnnotationErrorMessage(path, ast));
384
471
  }
385
- return go(ast.from, $defs, true, path);
472
+ return go(ast.from, $defs, handleIdentifier, path, options);
386
473
  }
387
474
  case "TemplateLiteral":
388
475
  {
389
476
  const regex = AST.getTemplateLiteralRegExp(ast);
390
- return merge({
477
+ return {
391
478
  type: "string",
392
479
  title: String(ast),
393
480
  description: "a template literal",
394
- pattern: regex.source
395
- }, getJsonSchemaAnnotations(ast));
481
+ pattern: regex.source,
482
+ ...getJsonSchemaAnnotations(ast)
483
+ };
396
484
  }
397
485
  case "Suspend":
398
486
  {
@@ -400,16 +488,19 @@ const go = (ast, $defs, handleIdentifier, path) => {
400
488
  if (Option.isNone(identifier)) {
401
489
  throw new Error(errors_.getJSONSchemaMissingIdentifierAnnotationErrorMessage(path, ast));
402
490
  }
403
- return go(ast.f(), $defs, true, path);
491
+ return go(ast.f(), $defs, handleIdentifier, path, options);
404
492
  }
405
493
  case "Transformation":
406
494
  {
407
- // Properly handle S.parseJson transformations by focusing on
408
- // the 'to' side of the AST. This approach prevents the generation of useless schemas
409
- // derived from the 'from' side (type: string), ensuring the output matches the intended
410
- // complex schema type.
411
495
  if (isParseJsonTransformation(ast.from)) {
412
- return go(ast.to, $defs, true, path);
496
+ const out = {
497
+ "type": "string",
498
+ "contentMediaType": "application/json"
499
+ };
500
+ if (options.target !== "jsonSchema7") {
501
+ out["contentSchema"] = go(ast.to, $defs, handleIdentifier, path, options);
502
+ }
503
+ return out;
413
504
  }
414
505
  let next = ast.from;
415
506
  if (AST.isTypeLiteralTransformation(ast.transformation)) {
@@ -434,7 +525,7 @@ const go = (ast, $defs, handleIdentifier, path) => {
434
525
  });
435
526
  }
436
527
  }
437
- return go(next, $defs, true, path);
528
+ return go(next, $defs, handleIdentifier, path, options);
438
529
  }
439
530
  }
440
531
  };
@@ -1 +1 @@
1
- {"version":3,"file":"JSONSchema.js","names":["errors_","Option","Predicate","Record","AST","make","schema","$defs","jsonSchema","go","ast","out","$schema","id","get$ref","isEmptyRecord","anyJsonSchema","$id","unknownJsonSchema","voidJsonSchema","objectJsonSchema","empty","getJsonSchemaAnnotations","annotated","getSomes","description","getDescriptionAnnotation","title","getTitleAnnotation","examples","getExamplesAnnotation","default","getDefaultAnnotation","removeDefaultJsonSchemaAnnotations","jsonSchemaAnnotations","annotations","TitleAnnotationId","DescriptionAnnotationId","getASTJsonSchemaAnnotations","_tag","stringKeyword","numberKeyword","booleanKeyword","pruneUndefinedFromPropertySignature","isNone","getJSONSchemaAnnotation","types","filter","type","isUndefinedKeyword","length","Union","isParseJsonTransformation","from","to","DEFINITION_PREFIX","getRefinementInnerTransformation","f","isRefinement","SchemaIdAnnotationId","ParseJsonSchemaId","merge","a","b","isOverrideAnnotation","handleIdentifier","path","hook","isSome","handler","value","t","undefined","e","surrogate","getSurrogateAnnotation","isTransformation","identifier","getJSONIdentifier","$ref","has","Error","getJSONSchemaMissingAnnotationErrorMessage","literal","enum","isString","isNumber","isBoolean","elements","map","i","concat","rest","annotatedAST","output","len","minItems","element","isOptional","items","restLength","head","isHomogeneous","every","additionalItems","getJSONSchemaUnsupportedPostRestElementsErrorMessage","maxItems","propertySignatures","indexSignatures","patternProperties","propertyNames","is","parameter","pattern","getTemplateLiteralRegExp","source","getJSONSchemaUnsupportedParameterErrorMessage","required","properties","additionalProperties","ps","name","pruned","push","getJSONSchemaUnsupportedKeyErrorMessage","enums","anyOf","Object","keys","$comment","encodedBoundAST","regex","String","orElse","getJSONSchemaMissingIdentifierAnnotationErrorMessage","next","isTypeLiteralTransformation","transformation","getIdentifierAnnotation","IdentifierAnnotationId"],"sources":["../../src/JSONSchema.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"JSONSchema.js","names":["errors_","Option","Predicate","Record","AST","make","schema","definitions","ast","isTransformation","isParseJsonTransformation","from","to","out","fromAST","$schema","isEmptyRecord","$defs","options","definitionPath","getRef","id","target","handleIdentifier","topLevelReferenceStrategy","go","constNever","constAny","constUnknown","constVoid","constAnyObject","constEmpty","getJsonSchemaAnnotations","annotated","getSomes","description","getDescriptionAnnotation","title","getTitleAnnotation","examples","getExamplesAnnotation","default","getDefaultAnnotation","removeDefaultJsonSchemaAnnotations","jsonSchemaAnnotations","annotations","TitleAnnotationId","DescriptionAnnotationId","getASTJsonSchemaAnnotations","_tag","stringKeyword","numberKeyword","booleanKeyword","pruneUndefinedFromPropertySignature","isNone","getJSONSchemaAnnotation","neverKeyword","types","hasUndefined","type","pruned","isNeverKeyword","push","Union","f","SchemaIdAnnotationId","ParseJsonSchemaId","isOverrideAnnotation","jsonSchema","isEnumOnly","Object","keys","length","mergeRefinements","allOf","handle","name","filter","unshift","i","minLength","maxLength","pattern","minItems","maxItems","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","path","identifier","getJSONIdentifier","isSome","value","$ref","has","hook","handler","isRefinement","t","getTransformationFrom","undefined","surrogate","getSurrogateAnnotation","Error","getJSONSchemaMissingAnnotationErrorMessage","literal","enum","isString","isNumber","isBoolean","elements","map","e","concat","rest","annotatedAST","output","len","element","isOptional","items","restLength","head","isHomogeneous","every","additionalItems","getJSONSchemaUnsupportedPostRestElementsErrorMessage","propertySignatures","indexSignatures","patternProperties","propertyNames","is","parameter","getTemplateLiteralRegExp","source","getJSONSchemaUnsupportedParameterErrorMessage","required","properties","additionalProperties","ps","getJSONSchemaUnsupportedKeyErrorMessage","anyOf","last","$comment","enums","regex","String","orElse","getJSONSchemaMissingIdentifierAnnotationErrorMessage","next","isTypeLiteralTransformation","transformation","getIdentifierAnnotation","IdentifierAnnotationId"],"sources":["../../src/JSONSchema.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}