effect 3.9.2 → 3.10.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/Arbitrary/package.json +6 -0
- package/FastCheck/package.json +6 -0
- package/JSONSchema/package.json +6 -0
- package/ParseResult/package.json +6 -0
- package/Pretty/package.json +6 -0
- package/Schema/package.json +6 -0
- package/SchemaAST/package.json +6 -0
- package/TSubscriptionRef/package.json +6 -0
- package/dist/cjs/Arbitrary.js +490 -0
- package/dist/cjs/Arbitrary.js.map +1 -0
- package/dist/cjs/Effect.js +247 -16
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/FastCheck.js +17 -0
- package/dist/cjs/FastCheck.js.map +1 -0
- package/dist/cjs/Inspectable.js +43 -3
- package/dist/cjs/Inspectable.js.map +1 -1
- package/dist/cjs/JSONSchema.js +418 -0
- package/dist/cjs/JSONSchema.js.map +1 -0
- package/dist/cjs/ParseResult.js +1539 -0
- package/dist/cjs/ParseResult.js.map +1 -0
- package/dist/cjs/Predicate.js +3 -1
- package/dist/cjs/Predicate.js.map +1 -1
- package/dist/cjs/Pretty.js +183 -0
- package/dist/cjs/Pretty.js.map +1 -0
- package/dist/cjs/Schema.js +5529 -0
- package/dist/cjs/Schema.js.map +1 -0
- package/dist/cjs/SchemaAST.js +2365 -0
- package/dist/cjs/SchemaAST.js.map +1 -0
- package/dist/cjs/Stream.js +17 -3
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/TPubSub.js +9 -1
- package/dist/cjs/TPubSub.js.map +1 -1
- package/dist/cjs/TQueue.js.map +1 -1
- package/dist/cjs/TRef.js.map +1 -1
- package/dist/cjs/TSubscriptionRef.js +96 -0
- package/dist/cjs/TSubscriptionRef.js.map +1 -0
- package/dist/cjs/index.js +18 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/cause.js +2 -2
- package/dist/cjs/internal/cause.js.map +1 -1
- package/dist/cjs/internal/core.js +4 -4
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +14 -12
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/logger.js +7 -6
- package/dist/cjs/internal/logger.js.map +1 -1
- package/dist/cjs/internal/redacted.js +4 -0
- package/dist/cjs/internal/redacted.js.map +1 -1
- package/dist/cjs/internal/schema/errors.js +116 -0
- package/dist/cjs/internal/schema/errors.js.map +1 -0
- package/dist/cjs/internal/schema/filters.js +41 -0
- package/dist/cjs/internal/schema/filters.js.map +1 -0
- package/dist/cjs/internal/schema/util.js +96 -0
- package/dist/cjs/internal/schema/util.js.map +1 -0
- package/dist/cjs/internal/stm/core.js +2 -3
- package/dist/cjs/internal/stm/core.js.map +1 -1
- package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
- package/dist/cjs/internal/stm/tQueue.js +1 -2
- package/dist/cjs/internal/stm/tQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tRef.js +6 -2
- package/dist/cjs/internal/stm/tRef.js.map +1 -1
- package/dist/cjs/internal/stm/tSubscriptionRef.js +178 -0
- package/dist/cjs/internal/stm/tSubscriptionRef.js.map +1 -0
- package/dist/cjs/internal/stream.js +36 -16
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/cjs/internal/version.js.map +1 -1
- package/dist/dts/Arbitrary.d.ts +45 -0
- package/dist/dts/Arbitrary.d.ts.map +1 -0
- package/dist/dts/Effect.d.ts +298 -30
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/FastCheck.d.ts +9 -0
- package/dist/dts/FastCheck.d.ts.map +1 -0
- package/dist/dts/Inspectable.d.ts +28 -0
- package/dist/dts/Inspectable.d.ts.map +1 -1
- package/dist/dts/JSONSchema.d.ts +181 -0
- package/dist/dts/JSONSchema.d.ts.map +1 -0
- package/dist/dts/ParseResult.d.ts +551 -0
- package/dist/dts/ParseResult.d.ts.map +1 -0
- package/dist/dts/Predicate.d.ts.map +1 -1
- package/dist/dts/Pretty.d.ts +26 -0
- package/dist/dts/Pretty.d.ts.map +1 -0
- package/dist/dts/Schema.d.ts +4562 -0
- package/dist/dts/Schema.d.ts.map +1 -0
- package/dist/dts/SchemaAST.d.ts +1321 -0
- package/dist/dts/SchemaAST.d.ts.map +1 -0
- package/dist/dts/Stream.d.ts +67 -2
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/TPubSub.d.ts +8 -0
- package/dist/dts/TPubSub.d.ts.map +1 -1
- package/dist/dts/TQueue.d.ts +7 -7
- package/dist/dts/TQueue.d.ts.map +1 -1
- package/dist/dts/TRef.d.ts +2 -1
- package/dist/dts/TRef.d.ts.map +1 -1
- package/dist/dts/TSubscriptionRef.d.ts +251 -0
- package/dist/dts/TSubscriptionRef.d.ts.map +1 -0
- package/dist/dts/index.d.ts +32 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
- package/dist/dts/internal/schema/errors.d.ts +2 -0
- package/dist/dts/internal/schema/errors.d.ts.map +1 -0
- package/dist/dts/internal/schema/filters.d.ts +2 -0
- package/dist/dts/internal/schema/filters.d.ts.map +1 -0
- package/dist/dts/internal/schema/util.d.ts +2 -0
- package/dist/dts/internal/schema/util.d.ts.map +1 -0
- package/dist/dts/internal/stm/tRef.d.ts +3 -1
- package/dist/dts/internal/stm/tRef.d.ts.map +1 -1
- package/dist/dts/internal/stm/tSubscriptionRef.d.ts +2 -0
- package/dist/dts/internal/stm/tSubscriptionRef.d.ts.map +1 -0
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/Arbitrary.js +472 -0
- package/dist/esm/Arbitrary.js.map +1 -0
- package/dist/esm/Effect.js +256 -18
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/FastCheck.js +9 -0
- package/dist/esm/FastCheck.js.map +1 -0
- package/dist/esm/Inspectable.js +39 -2
- package/dist/esm/Inspectable.js.map +1 -1
- package/dist/esm/JSONSchema.js +408 -0
- package/dist/esm/JSONSchema.js.map +1 -0
- package/dist/esm/ParseResult.js +1503 -0
- package/dist/esm/ParseResult.js.map +1 -0
- package/dist/esm/Predicate.js +2 -1
- package/dist/esm/Predicate.js.map +1 -1
- package/dist/esm/Pretty.js +173 -0
- package/dist/esm/Pretty.js.map +1 -0
- package/dist/esm/Schema.js +5328 -0
- package/dist/esm/Schema.js.map +1 -0
- package/dist/esm/SchemaAST.js +2300 -0
- package/dist/esm/SchemaAST.js.map +1 -0
- package/dist/esm/Stream.js +14 -0
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/TPubSub.js +8 -0
- package/dist/esm/TPubSub.js.map +1 -1
- package/dist/esm/TQueue.js.map +1 -1
- package/dist/esm/TRef.js.map +1 -1
- package/dist/esm/TSubscriptionRef.js +87 -0
- package/dist/esm/TSubscriptionRef.js.map +1 -0
- package/dist/esm/index.js +32 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/cause.js +3 -3
- package/dist/esm/internal/cause.js.map +1 -1
- package/dist/esm/internal/core.js +4 -4
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +14 -12
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/logger.js +7 -6
- package/dist/esm/internal/logger.js.map +1 -1
- package/dist/esm/internal/redacted.js +4 -0
- package/dist/esm/internal/redacted.js.map +1 -1
- package/dist/esm/internal/schema/errors.js +87 -0
- package/dist/esm/internal/schema/errors.js.map +1 -0
- package/dist/esm/internal/schema/filters.js +35 -0
- package/dist/esm/internal/schema/filters.js.map +1 -0
- package/dist/esm/internal/schema/util.js +78 -0
- package/dist/esm/internal/schema/util.js.map +1 -0
- package/dist/esm/internal/stm/core.js +1 -2
- package/dist/esm/internal/stm/core.js.map +1 -1
- package/dist/esm/internal/stm/tPubSub.js.map +1 -1
- package/dist/esm/internal/stm/tQueue.js +1 -2
- package/dist/esm/internal/stm/tQueue.js.map +1 -1
- package/dist/esm/internal/stm/tRef.js +5 -1
- package/dist/esm/internal/stm/tRef.js.map +1 -1
- package/dist/esm/internal/stm/tSubscriptionRef.js +166 -0
- package/dist/esm/internal/stm/tSubscriptionRef.js.map +1 -0
- package/dist/esm/internal/stream.js +33 -15
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/dist/esm/internal/version.js.map +1 -1
- package/package.json +68 -1
- package/src/Arbitrary.ts +563 -0
- package/src/Effect.ts +302 -31
- package/src/FastCheck.ts +9 -0
- package/src/Inspectable.ts +56 -2
- package/src/JSONSchema.ts +601 -0
- package/src/ParseResult.ts +2027 -0
- package/src/Predicate.ts +3 -1
- package/src/Pretty.ts +204 -0
- package/src/Schema.ts +10388 -0
- package/src/SchemaAST.ts +2827 -0
- package/src/Stream.ts +77 -9
- package/src/TPubSub.ts +9 -0
- package/src/TQueue.ts +7 -7
- package/src/TRef.ts +2 -1
- package/src/TSubscriptionRef.ts +284 -0
- package/src/index.ts +40 -0
- package/src/internal/cause.ts +3 -3
- package/src/internal/core-effect.ts +2 -2
- package/src/internal/core.ts +4 -4
- package/src/internal/fiberRuntime.ts +14 -12
- package/src/internal/logger.ts +7 -6
- package/src/internal/redacted.ts +4 -0
- package/src/internal/schema/errors.ts +189 -0
- package/src/internal/schema/filters.ts +86 -0
- package/src/internal/schema/util.ts +113 -0
- package/src/internal/stm/core.ts +1 -2
- package/src/internal/stm/tPubSub.ts +1 -0
- package/src/internal/stm/tQueue.ts +2 -2
- package/src/internal/stm/tRef.ts +7 -2
- package/src/internal/stm/tSubscriptionRef.ts +286 -0
- package/src/internal/stream.ts +97 -20
- package/src/internal/version.ts +1 -1
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 3.10.0
|
|
3
|
+
*/
|
|
4
|
+
import * as errors_ from "./internal/schema/errors.js";
|
|
5
|
+
import * as Option from "./Option.js";
|
|
6
|
+
import * as Predicate from "./Predicate.js";
|
|
7
|
+
import * as Record from "./Record.js";
|
|
8
|
+
import * as AST from "./SchemaAST.js";
|
|
9
|
+
/**
|
|
10
|
+
* @category encoding
|
|
11
|
+
* @since 3.10.0
|
|
12
|
+
*/
|
|
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;
|
|
28
|
+
}
|
|
29
|
+
return out;
|
|
30
|
+
};
|
|
31
|
+
const anyJsonSchema = {
|
|
32
|
+
$id: "/schemas/any"
|
|
33
|
+
};
|
|
34
|
+
const unknownJsonSchema = {
|
|
35
|
+
$id: "/schemas/unknown"
|
|
36
|
+
};
|
|
37
|
+
const voidJsonSchema = {
|
|
38
|
+
$id: "/schemas/void"
|
|
39
|
+
};
|
|
40
|
+
const objectJsonSchema = {
|
|
41
|
+
"$id": "/schemas/object",
|
|
42
|
+
"anyOf": [{
|
|
43
|
+
"type": "object"
|
|
44
|
+
}, {
|
|
45
|
+
"type": "array"
|
|
46
|
+
}]
|
|
47
|
+
};
|
|
48
|
+
const empty = () => ({
|
|
49
|
+
"$id": "/schemas/{}",
|
|
50
|
+
"anyOf": [{
|
|
51
|
+
"type": "object"
|
|
52
|
+
}, {
|
|
53
|
+
"type": "array"
|
|
54
|
+
}]
|
|
55
|
+
});
|
|
56
|
+
const $schema = "http://json-schema.org/draft-07/schema#";
|
|
57
|
+
const getJsonSchemaAnnotations = annotated => Record.getSomes({
|
|
58
|
+
description: AST.getDescriptionAnnotation(annotated),
|
|
59
|
+
title: AST.getTitleAnnotation(annotated),
|
|
60
|
+
examples: AST.getExamplesAnnotation(annotated),
|
|
61
|
+
default: AST.getDefaultAnnotation(annotated)
|
|
62
|
+
});
|
|
63
|
+
const removeDefaultJsonSchemaAnnotations = (jsonSchemaAnnotations, ast) => {
|
|
64
|
+
if (jsonSchemaAnnotations["title"] === ast.annotations[AST.TitleAnnotationId]) {
|
|
65
|
+
delete jsonSchemaAnnotations["title"];
|
|
66
|
+
}
|
|
67
|
+
if (jsonSchemaAnnotations["description"] === ast.annotations[AST.DescriptionAnnotationId]) {
|
|
68
|
+
delete jsonSchemaAnnotations["description"];
|
|
69
|
+
}
|
|
70
|
+
return jsonSchemaAnnotations;
|
|
71
|
+
};
|
|
72
|
+
const getASTJsonSchemaAnnotations = ast => {
|
|
73
|
+
const jsonSchemaAnnotations = getJsonSchemaAnnotations(ast);
|
|
74
|
+
switch (ast._tag) {
|
|
75
|
+
case "StringKeyword":
|
|
76
|
+
return removeDefaultJsonSchemaAnnotations(jsonSchemaAnnotations, AST.stringKeyword);
|
|
77
|
+
case "NumberKeyword":
|
|
78
|
+
return removeDefaultJsonSchemaAnnotations(jsonSchemaAnnotations, AST.numberKeyword);
|
|
79
|
+
case "BooleanKeyword":
|
|
80
|
+
return removeDefaultJsonSchemaAnnotations(jsonSchemaAnnotations, AST.booleanKeyword);
|
|
81
|
+
default:
|
|
82
|
+
return jsonSchemaAnnotations;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const pruneUndefinedKeyword = ps => {
|
|
86
|
+
const type = ps.type;
|
|
87
|
+
if (AST.isUnion(type) && Option.isNone(AST.getJSONSchemaAnnotation(type))) {
|
|
88
|
+
const types = type.types.filter(type => !AST.isUndefinedKeyword(type));
|
|
89
|
+
if (types.length < type.types.length) {
|
|
90
|
+
return AST.Union.make(types, type.annotations);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
/** @internal */
|
|
95
|
+
export const DEFINITION_PREFIX = "#/$defs/";
|
|
96
|
+
const get$ref = id => `${DEFINITION_PREFIX}${id}`;
|
|
97
|
+
const getRefinementInnerTransformation = ast => {
|
|
98
|
+
switch (ast.from._tag) {
|
|
99
|
+
case "Transformation":
|
|
100
|
+
return ast.from;
|
|
101
|
+
case "Refinement":
|
|
102
|
+
return getRefinementInnerTransformation(ast.from);
|
|
103
|
+
case "Suspend":
|
|
104
|
+
{
|
|
105
|
+
const from = ast.from.f();
|
|
106
|
+
if (AST.isRefinement(from)) {
|
|
107
|
+
return getRefinementInnerTransformation(from);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
const isParseJsonTransformation = ast => ast.annotations[AST.SchemaIdAnnotationId] === AST.ParseJsonSchemaId;
|
|
113
|
+
function merge(a, b) {
|
|
114
|
+
return {
|
|
115
|
+
...a,
|
|
116
|
+
...b
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
const isOverrideAnnotation = jsonSchema => {
|
|
120
|
+
return "type" in jsonSchema || "oneOf" in jsonSchema || "anyOf" in jsonSchema || "const" in jsonSchema || "enum" in jsonSchema || "$ref" in jsonSchema;
|
|
121
|
+
};
|
|
122
|
+
const go = (ast, $defs, handleIdentifier, path) => {
|
|
123
|
+
const hook = AST.getJSONSchemaAnnotation(ast);
|
|
124
|
+
if (Option.isSome(hook)) {
|
|
125
|
+
const handler = hook.value;
|
|
126
|
+
if (AST.isRefinement(ast)) {
|
|
127
|
+
const t = getRefinementInnerTransformation(ast);
|
|
128
|
+
if (t === undefined) {
|
|
129
|
+
try {
|
|
130
|
+
return {
|
|
131
|
+
...go(ast.from, $defs, true, path),
|
|
132
|
+
...getJsonSchemaAnnotations(ast),
|
|
133
|
+
...handler
|
|
134
|
+
};
|
|
135
|
+
} catch (e) {
|
|
136
|
+
return {
|
|
137
|
+
...getJsonSchemaAnnotations(ast),
|
|
138
|
+
...handler
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
} else if (!isOverrideAnnotation(handler)) {
|
|
142
|
+
return go(t, $defs, true, path);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return handler;
|
|
146
|
+
}
|
|
147
|
+
const surrogate = AST.getSurrogateAnnotation(ast);
|
|
148
|
+
if (Option.isSome(surrogate)) {
|
|
149
|
+
return go(surrogate.value, $defs, handleIdentifier, path);
|
|
150
|
+
}
|
|
151
|
+
if (handleIdentifier && !AST.isTransformation(ast) && !AST.isRefinement(ast)) {
|
|
152
|
+
const identifier = AST.getJSONIdentifier(ast);
|
|
153
|
+
if (Option.isSome(identifier)) {
|
|
154
|
+
const id = identifier.value;
|
|
155
|
+
const out = {
|
|
156
|
+
$ref: get$ref(id)
|
|
157
|
+
};
|
|
158
|
+
if (!Record.has($defs, id)) {
|
|
159
|
+
$defs[id] = out;
|
|
160
|
+
$defs[id] = go(ast, $defs, false, path);
|
|
161
|
+
}
|
|
162
|
+
return out;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
switch (ast._tag) {
|
|
166
|
+
case "Declaration":
|
|
167
|
+
throw new Error(errors_.getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
168
|
+
case "Literal":
|
|
169
|
+
{
|
|
170
|
+
const literal = ast.literal;
|
|
171
|
+
if (literal === null) {
|
|
172
|
+
return merge({
|
|
173
|
+
enum: [null]
|
|
174
|
+
}, getJsonSchemaAnnotations(ast));
|
|
175
|
+
} else if (Predicate.isString(literal) || Predicate.isNumber(literal) || Predicate.isBoolean(literal)) {
|
|
176
|
+
return merge({
|
|
177
|
+
enum: [literal]
|
|
178
|
+
}, getJsonSchemaAnnotations(ast));
|
|
179
|
+
}
|
|
180
|
+
throw new Error(errors_.getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
181
|
+
}
|
|
182
|
+
case "UniqueSymbol":
|
|
183
|
+
throw new Error(errors_.getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
184
|
+
case "UndefinedKeyword":
|
|
185
|
+
throw new Error(errors_.getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
186
|
+
case "VoidKeyword":
|
|
187
|
+
return merge(voidJsonSchema, getJsonSchemaAnnotations(ast));
|
|
188
|
+
case "NeverKeyword":
|
|
189
|
+
throw new Error(errors_.getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
190
|
+
case "UnknownKeyword":
|
|
191
|
+
return merge(unknownJsonSchema, getJsonSchemaAnnotations(ast));
|
|
192
|
+
case "AnyKeyword":
|
|
193
|
+
return merge(anyJsonSchema, getJsonSchemaAnnotations(ast));
|
|
194
|
+
case "ObjectKeyword":
|
|
195
|
+
return merge(objectJsonSchema, getJsonSchemaAnnotations(ast));
|
|
196
|
+
case "StringKeyword":
|
|
197
|
+
return {
|
|
198
|
+
type: "string",
|
|
199
|
+
...getASTJsonSchemaAnnotations(ast)
|
|
200
|
+
};
|
|
201
|
+
case "NumberKeyword":
|
|
202
|
+
return {
|
|
203
|
+
type: "number",
|
|
204
|
+
...getASTJsonSchemaAnnotations(ast)
|
|
205
|
+
};
|
|
206
|
+
case "BooleanKeyword":
|
|
207
|
+
return {
|
|
208
|
+
type: "boolean",
|
|
209
|
+
...getASTJsonSchemaAnnotations(ast)
|
|
210
|
+
};
|
|
211
|
+
case "BigIntKeyword":
|
|
212
|
+
throw new Error(errors_.getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
213
|
+
case "SymbolKeyword":
|
|
214
|
+
throw new Error(errors_.getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
215
|
+
case "TupleType":
|
|
216
|
+
{
|
|
217
|
+
const elements = ast.elements.map((e, i) => merge(go(e.type, $defs, true, path.concat(i)), getJsonSchemaAnnotations(e)));
|
|
218
|
+
const rest = ast.rest.map(annotatedAST => merge(go(annotatedAST.type, $defs, true, path), getJsonSchemaAnnotations(annotatedAST)));
|
|
219
|
+
const output = {
|
|
220
|
+
type: "array"
|
|
221
|
+
};
|
|
222
|
+
// ---------------------------------------------
|
|
223
|
+
// handle elements
|
|
224
|
+
// ---------------------------------------------
|
|
225
|
+
const len = ast.elements.length;
|
|
226
|
+
if (len > 0) {
|
|
227
|
+
output.minItems = len - ast.elements.filter(element => element.isOptional).length;
|
|
228
|
+
output.items = elements;
|
|
229
|
+
}
|
|
230
|
+
// ---------------------------------------------
|
|
231
|
+
// handle rest element
|
|
232
|
+
// ---------------------------------------------
|
|
233
|
+
const restLength = rest.length;
|
|
234
|
+
if (restLength > 0) {
|
|
235
|
+
const head = rest[0];
|
|
236
|
+
const isHomogeneous = restLength === 1 && ast.elements.every(e => e.type === ast.rest[0].type);
|
|
237
|
+
if (isHomogeneous) {
|
|
238
|
+
output.items = head;
|
|
239
|
+
} else {
|
|
240
|
+
output.additionalItems = head;
|
|
241
|
+
}
|
|
242
|
+
// ---------------------------------------------
|
|
243
|
+
// handle post rest elements
|
|
244
|
+
// ---------------------------------------------
|
|
245
|
+
if (restLength > 1) {
|
|
246
|
+
throw new Error(errors_.getJSONSchemaUnsupportedPostRestElementsErrorMessage(path));
|
|
247
|
+
}
|
|
248
|
+
} else {
|
|
249
|
+
if (len > 0) {
|
|
250
|
+
output.additionalItems = false;
|
|
251
|
+
} else {
|
|
252
|
+
output.maxItems = 0;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return merge(output, getJsonSchemaAnnotations(ast));
|
|
256
|
+
}
|
|
257
|
+
case "TypeLiteral":
|
|
258
|
+
{
|
|
259
|
+
if (ast.propertySignatures.length === 0 && ast.indexSignatures.length === 0) {
|
|
260
|
+
return merge(empty(), getJsonSchemaAnnotations(ast));
|
|
261
|
+
}
|
|
262
|
+
let patternProperties = undefined;
|
|
263
|
+
let propertyNames = undefined;
|
|
264
|
+
for (const is of ast.indexSignatures) {
|
|
265
|
+
const parameter = is.parameter;
|
|
266
|
+
switch (parameter._tag) {
|
|
267
|
+
case "StringKeyword":
|
|
268
|
+
{
|
|
269
|
+
patternProperties = go(is.type, $defs, true, path);
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
case "TemplateLiteral":
|
|
273
|
+
{
|
|
274
|
+
patternProperties = go(is.type, $defs, true, path);
|
|
275
|
+
propertyNames = {
|
|
276
|
+
type: "string",
|
|
277
|
+
pattern: AST.getTemplateLiteralRegExp(parameter).source
|
|
278
|
+
};
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
case "Refinement":
|
|
282
|
+
{
|
|
283
|
+
patternProperties = go(is.type, $defs, true, path);
|
|
284
|
+
propertyNames = go(parameter, $defs, true, path);
|
|
285
|
+
break;
|
|
286
|
+
}
|
|
287
|
+
case "SymbolKeyword":
|
|
288
|
+
throw new Error(errors_.getJSONSchemaUnsupportedParameterErrorMessage(path, parameter));
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
const output = {
|
|
292
|
+
type: "object",
|
|
293
|
+
required: [],
|
|
294
|
+
properties: {},
|
|
295
|
+
additionalProperties: false
|
|
296
|
+
};
|
|
297
|
+
// ---------------------------------------------
|
|
298
|
+
// handle property signatures
|
|
299
|
+
// ---------------------------------------------
|
|
300
|
+
for (let i = 0; i < ast.propertySignatures.length; i++) {
|
|
301
|
+
const ps = ast.propertySignatures[i];
|
|
302
|
+
const name = ps.name;
|
|
303
|
+
if (Predicate.isString(name)) {
|
|
304
|
+
const pruned = pruneUndefinedKeyword(ps);
|
|
305
|
+
output.properties[name] = merge(go(pruned ? pruned : ps.type, $defs, true, path.concat(ps.name)), getJsonSchemaAnnotations(ps));
|
|
306
|
+
// ---------------------------------------------
|
|
307
|
+
// handle optional property signatures
|
|
308
|
+
// ---------------------------------------------
|
|
309
|
+
if (!ps.isOptional && pruned === undefined) {
|
|
310
|
+
output.required.push(name);
|
|
311
|
+
}
|
|
312
|
+
} else {
|
|
313
|
+
throw new Error(errors_.getJSONSchemaUnsupportedKeyErrorMessage(name, path));
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
// ---------------------------------------------
|
|
317
|
+
// handle index signatures
|
|
318
|
+
// ---------------------------------------------
|
|
319
|
+
if (patternProperties !== undefined) {
|
|
320
|
+
delete output.additionalProperties;
|
|
321
|
+
output.patternProperties = {
|
|
322
|
+
"": patternProperties
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
if (propertyNames !== undefined) {
|
|
326
|
+
output.propertyNames = propertyNames;
|
|
327
|
+
}
|
|
328
|
+
return merge(output, getJsonSchemaAnnotations(ast));
|
|
329
|
+
}
|
|
330
|
+
case "Union":
|
|
331
|
+
{
|
|
332
|
+
const enums = [];
|
|
333
|
+
const anyOf = [];
|
|
334
|
+
for (const type of ast.types) {
|
|
335
|
+
const schema = go(type, $defs, true, path);
|
|
336
|
+
if ("enum" in schema) {
|
|
337
|
+
if (Object.keys(schema).length > 1) {
|
|
338
|
+
anyOf.push(schema);
|
|
339
|
+
} else {
|
|
340
|
+
for (const e of schema.enum) {
|
|
341
|
+
enums.push(e);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
} else {
|
|
345
|
+
anyOf.push(schema);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
if (anyOf.length === 0) {
|
|
349
|
+
return merge({
|
|
350
|
+
enum: enums
|
|
351
|
+
}, getJsonSchemaAnnotations(ast));
|
|
352
|
+
} else {
|
|
353
|
+
if (enums.length >= 1) {
|
|
354
|
+
anyOf.push({
|
|
355
|
+
enum: enums
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
return merge({
|
|
359
|
+
anyOf
|
|
360
|
+
}, getJsonSchemaAnnotations(ast));
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
case "Enums":
|
|
364
|
+
{
|
|
365
|
+
return merge({
|
|
366
|
+
$comment: "/schemas/enums",
|
|
367
|
+
anyOf: ast.enums.map(e => ({
|
|
368
|
+
title: e[0],
|
|
369
|
+
enum: [e[1]]
|
|
370
|
+
}))
|
|
371
|
+
}, getJsonSchemaAnnotations(ast));
|
|
372
|
+
}
|
|
373
|
+
case "Refinement":
|
|
374
|
+
{
|
|
375
|
+
if (AST.encodedBoundAST(ast) === ast) {
|
|
376
|
+
throw new Error(errors_.getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
377
|
+
}
|
|
378
|
+
return go(ast.from, $defs, true, path);
|
|
379
|
+
}
|
|
380
|
+
case "TemplateLiteral":
|
|
381
|
+
{
|
|
382
|
+
const regex = AST.getTemplateLiteralRegExp(ast);
|
|
383
|
+
return merge({
|
|
384
|
+
type: "string",
|
|
385
|
+
description: "a template literal",
|
|
386
|
+
pattern: regex.source
|
|
387
|
+
}, getJsonSchemaAnnotations(ast));
|
|
388
|
+
}
|
|
389
|
+
case "Suspend":
|
|
390
|
+
{
|
|
391
|
+
const identifier = Option.orElse(AST.getJSONIdentifier(ast), () => AST.getJSONIdentifier(ast.f()));
|
|
392
|
+
if (Option.isNone(identifier)) {
|
|
393
|
+
throw new Error(errors_.getJSONSchemaMissingIdentifierAnnotationErrorMessage(path, ast));
|
|
394
|
+
}
|
|
395
|
+
return go(ast.f(), $defs, true, path);
|
|
396
|
+
}
|
|
397
|
+
case "Transformation":
|
|
398
|
+
{
|
|
399
|
+
// Properly handle S.parseJson transformations by focusing on
|
|
400
|
+
// the 'to' side of the AST. This approach prevents the generation of useless schemas
|
|
401
|
+
// derived from the 'from' side (type: string), ensuring the output matches the intended
|
|
402
|
+
// complex schema type.
|
|
403
|
+
const next = isParseJsonTransformation(ast.from) ? ast.to : ast.from;
|
|
404
|
+
return go(next, $defs, true, path);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
};
|
|
408
|
+
//# sourceMappingURL=JSONSchema.js.map
|
|
@@ -0,0 +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","pruneUndefinedKeyword","ps","type","isUnion","isNone","getJSONSchemaAnnotation","types","filter","isUndefinedKeyword","length","Union","DEFINITION_PREFIX","getRefinementInnerTransformation","from","f","isRefinement","isParseJsonTransformation","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","name","pruned","push","getJSONSchemaUnsupportedKeyErrorMessage","enums","anyOf","Object","keys","$comment","encodedBoundAST","regex","orElse","getJSONSchemaMissingIdentifierAnnotationErrorMessage","next","to"],"sources":["../../src/JSONSchema.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|