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.
Files changed (202) hide show
  1. package/Arbitrary/package.json +6 -0
  2. package/FastCheck/package.json +6 -0
  3. package/JSONSchema/package.json +6 -0
  4. package/ParseResult/package.json +6 -0
  5. package/Pretty/package.json +6 -0
  6. package/Schema/package.json +6 -0
  7. package/SchemaAST/package.json +6 -0
  8. package/TSubscriptionRef/package.json +6 -0
  9. package/dist/cjs/Arbitrary.js +490 -0
  10. package/dist/cjs/Arbitrary.js.map +1 -0
  11. package/dist/cjs/Effect.js +247 -16
  12. package/dist/cjs/Effect.js.map +1 -1
  13. package/dist/cjs/FastCheck.js +17 -0
  14. package/dist/cjs/FastCheck.js.map +1 -0
  15. package/dist/cjs/Inspectable.js +43 -3
  16. package/dist/cjs/Inspectable.js.map +1 -1
  17. package/dist/cjs/JSONSchema.js +418 -0
  18. package/dist/cjs/JSONSchema.js.map +1 -0
  19. package/dist/cjs/ParseResult.js +1539 -0
  20. package/dist/cjs/ParseResult.js.map +1 -0
  21. package/dist/cjs/Predicate.js +3 -1
  22. package/dist/cjs/Predicate.js.map +1 -1
  23. package/dist/cjs/Pretty.js +183 -0
  24. package/dist/cjs/Pretty.js.map +1 -0
  25. package/dist/cjs/Schema.js +5529 -0
  26. package/dist/cjs/Schema.js.map +1 -0
  27. package/dist/cjs/SchemaAST.js +2365 -0
  28. package/dist/cjs/SchemaAST.js.map +1 -0
  29. package/dist/cjs/Stream.js +17 -3
  30. package/dist/cjs/Stream.js.map +1 -1
  31. package/dist/cjs/TPubSub.js +9 -1
  32. package/dist/cjs/TPubSub.js.map +1 -1
  33. package/dist/cjs/TQueue.js.map +1 -1
  34. package/dist/cjs/TRef.js.map +1 -1
  35. package/dist/cjs/TSubscriptionRef.js +96 -0
  36. package/dist/cjs/TSubscriptionRef.js.map +1 -0
  37. package/dist/cjs/index.js +18 -2
  38. package/dist/cjs/index.js.map +1 -1
  39. package/dist/cjs/internal/cause.js +2 -2
  40. package/dist/cjs/internal/cause.js.map +1 -1
  41. package/dist/cjs/internal/core.js +4 -4
  42. package/dist/cjs/internal/core.js.map +1 -1
  43. package/dist/cjs/internal/fiberRuntime.js +14 -12
  44. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  45. package/dist/cjs/internal/logger.js +7 -6
  46. package/dist/cjs/internal/logger.js.map +1 -1
  47. package/dist/cjs/internal/redacted.js +4 -0
  48. package/dist/cjs/internal/redacted.js.map +1 -1
  49. package/dist/cjs/internal/schema/errors.js +116 -0
  50. package/dist/cjs/internal/schema/errors.js.map +1 -0
  51. package/dist/cjs/internal/schema/filters.js +41 -0
  52. package/dist/cjs/internal/schema/filters.js.map +1 -0
  53. package/dist/cjs/internal/schema/util.js +96 -0
  54. package/dist/cjs/internal/schema/util.js.map +1 -0
  55. package/dist/cjs/internal/stm/core.js +2 -3
  56. package/dist/cjs/internal/stm/core.js.map +1 -1
  57. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  58. package/dist/cjs/internal/stm/tQueue.js +1 -2
  59. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  60. package/dist/cjs/internal/stm/tRef.js +6 -2
  61. package/dist/cjs/internal/stm/tRef.js.map +1 -1
  62. package/dist/cjs/internal/stm/tSubscriptionRef.js +178 -0
  63. package/dist/cjs/internal/stm/tSubscriptionRef.js.map +1 -0
  64. package/dist/cjs/internal/stream.js +36 -16
  65. package/dist/cjs/internal/stream.js.map +1 -1
  66. package/dist/cjs/internal/version.js +1 -1
  67. package/dist/cjs/internal/version.js.map +1 -1
  68. package/dist/dts/Arbitrary.d.ts +45 -0
  69. package/dist/dts/Arbitrary.d.ts.map +1 -0
  70. package/dist/dts/Effect.d.ts +298 -30
  71. package/dist/dts/Effect.d.ts.map +1 -1
  72. package/dist/dts/FastCheck.d.ts +9 -0
  73. package/dist/dts/FastCheck.d.ts.map +1 -0
  74. package/dist/dts/Inspectable.d.ts +28 -0
  75. package/dist/dts/Inspectable.d.ts.map +1 -1
  76. package/dist/dts/JSONSchema.d.ts +181 -0
  77. package/dist/dts/JSONSchema.d.ts.map +1 -0
  78. package/dist/dts/ParseResult.d.ts +551 -0
  79. package/dist/dts/ParseResult.d.ts.map +1 -0
  80. package/dist/dts/Predicate.d.ts.map +1 -1
  81. package/dist/dts/Pretty.d.ts +26 -0
  82. package/dist/dts/Pretty.d.ts.map +1 -0
  83. package/dist/dts/Schema.d.ts +4562 -0
  84. package/dist/dts/Schema.d.ts.map +1 -0
  85. package/dist/dts/SchemaAST.d.ts +1321 -0
  86. package/dist/dts/SchemaAST.d.ts.map +1 -0
  87. package/dist/dts/Stream.d.ts +67 -2
  88. package/dist/dts/Stream.d.ts.map +1 -1
  89. package/dist/dts/TPubSub.d.ts +8 -0
  90. package/dist/dts/TPubSub.d.ts.map +1 -1
  91. package/dist/dts/TQueue.d.ts +7 -7
  92. package/dist/dts/TQueue.d.ts.map +1 -1
  93. package/dist/dts/TRef.d.ts +2 -1
  94. package/dist/dts/TRef.d.ts.map +1 -1
  95. package/dist/dts/TSubscriptionRef.d.ts +251 -0
  96. package/dist/dts/TSubscriptionRef.d.ts.map +1 -0
  97. package/dist/dts/index.d.ts +32 -0
  98. package/dist/dts/index.d.ts.map +1 -1
  99. package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
  100. package/dist/dts/internal/schema/errors.d.ts +2 -0
  101. package/dist/dts/internal/schema/errors.d.ts.map +1 -0
  102. package/dist/dts/internal/schema/filters.d.ts +2 -0
  103. package/dist/dts/internal/schema/filters.d.ts.map +1 -0
  104. package/dist/dts/internal/schema/util.d.ts +2 -0
  105. package/dist/dts/internal/schema/util.d.ts.map +1 -0
  106. package/dist/dts/internal/stm/tRef.d.ts +3 -1
  107. package/dist/dts/internal/stm/tRef.d.ts.map +1 -1
  108. package/dist/dts/internal/stm/tSubscriptionRef.d.ts +2 -0
  109. package/dist/dts/internal/stm/tSubscriptionRef.d.ts.map +1 -0
  110. package/dist/dts/internal/stream.d.ts.map +1 -1
  111. package/dist/esm/Arbitrary.js +472 -0
  112. package/dist/esm/Arbitrary.js.map +1 -0
  113. package/dist/esm/Effect.js +256 -18
  114. package/dist/esm/Effect.js.map +1 -1
  115. package/dist/esm/FastCheck.js +9 -0
  116. package/dist/esm/FastCheck.js.map +1 -0
  117. package/dist/esm/Inspectable.js +39 -2
  118. package/dist/esm/Inspectable.js.map +1 -1
  119. package/dist/esm/JSONSchema.js +408 -0
  120. package/dist/esm/JSONSchema.js.map +1 -0
  121. package/dist/esm/ParseResult.js +1503 -0
  122. package/dist/esm/ParseResult.js.map +1 -0
  123. package/dist/esm/Predicate.js +2 -1
  124. package/dist/esm/Predicate.js.map +1 -1
  125. package/dist/esm/Pretty.js +173 -0
  126. package/dist/esm/Pretty.js.map +1 -0
  127. package/dist/esm/Schema.js +5328 -0
  128. package/dist/esm/Schema.js.map +1 -0
  129. package/dist/esm/SchemaAST.js +2300 -0
  130. package/dist/esm/SchemaAST.js.map +1 -0
  131. package/dist/esm/Stream.js +14 -0
  132. package/dist/esm/Stream.js.map +1 -1
  133. package/dist/esm/TPubSub.js +8 -0
  134. package/dist/esm/TPubSub.js.map +1 -1
  135. package/dist/esm/TQueue.js.map +1 -1
  136. package/dist/esm/TRef.js.map +1 -1
  137. package/dist/esm/TSubscriptionRef.js +87 -0
  138. package/dist/esm/TSubscriptionRef.js.map +1 -0
  139. package/dist/esm/index.js +32 -0
  140. package/dist/esm/index.js.map +1 -1
  141. package/dist/esm/internal/cause.js +3 -3
  142. package/dist/esm/internal/cause.js.map +1 -1
  143. package/dist/esm/internal/core.js +4 -4
  144. package/dist/esm/internal/core.js.map +1 -1
  145. package/dist/esm/internal/fiberRuntime.js +14 -12
  146. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  147. package/dist/esm/internal/logger.js +7 -6
  148. package/dist/esm/internal/logger.js.map +1 -1
  149. package/dist/esm/internal/redacted.js +4 -0
  150. package/dist/esm/internal/redacted.js.map +1 -1
  151. package/dist/esm/internal/schema/errors.js +87 -0
  152. package/dist/esm/internal/schema/errors.js.map +1 -0
  153. package/dist/esm/internal/schema/filters.js +35 -0
  154. package/dist/esm/internal/schema/filters.js.map +1 -0
  155. package/dist/esm/internal/schema/util.js +78 -0
  156. package/dist/esm/internal/schema/util.js.map +1 -0
  157. package/dist/esm/internal/stm/core.js +1 -2
  158. package/dist/esm/internal/stm/core.js.map +1 -1
  159. package/dist/esm/internal/stm/tPubSub.js.map +1 -1
  160. package/dist/esm/internal/stm/tQueue.js +1 -2
  161. package/dist/esm/internal/stm/tQueue.js.map +1 -1
  162. package/dist/esm/internal/stm/tRef.js +5 -1
  163. package/dist/esm/internal/stm/tRef.js.map +1 -1
  164. package/dist/esm/internal/stm/tSubscriptionRef.js +166 -0
  165. package/dist/esm/internal/stm/tSubscriptionRef.js.map +1 -0
  166. package/dist/esm/internal/stream.js +33 -15
  167. package/dist/esm/internal/stream.js.map +1 -1
  168. package/dist/esm/internal/version.js +1 -1
  169. package/dist/esm/internal/version.js.map +1 -1
  170. package/package.json +68 -1
  171. package/src/Arbitrary.ts +563 -0
  172. package/src/Effect.ts +302 -31
  173. package/src/FastCheck.ts +9 -0
  174. package/src/Inspectable.ts +56 -2
  175. package/src/JSONSchema.ts +601 -0
  176. package/src/ParseResult.ts +2027 -0
  177. package/src/Predicate.ts +3 -1
  178. package/src/Pretty.ts +204 -0
  179. package/src/Schema.ts +10388 -0
  180. package/src/SchemaAST.ts +2827 -0
  181. package/src/Stream.ts +77 -9
  182. package/src/TPubSub.ts +9 -0
  183. package/src/TQueue.ts +7 -7
  184. package/src/TRef.ts +2 -1
  185. package/src/TSubscriptionRef.ts +284 -0
  186. package/src/index.ts +40 -0
  187. package/src/internal/cause.ts +3 -3
  188. package/src/internal/core-effect.ts +2 -2
  189. package/src/internal/core.ts +4 -4
  190. package/src/internal/fiberRuntime.ts +14 -12
  191. package/src/internal/logger.ts +7 -6
  192. package/src/internal/redacted.ts +4 -0
  193. package/src/internal/schema/errors.ts +189 -0
  194. package/src/internal/schema/filters.ts +86 -0
  195. package/src/internal/schema/util.ts +113 -0
  196. package/src/internal/stm/core.ts +1 -2
  197. package/src/internal/stm/tPubSub.ts +1 -0
  198. package/src/internal/stm/tQueue.ts +2 -2
  199. package/src/internal/stm/tRef.ts +7 -2
  200. package/src/internal/stm/tSubscriptionRef.ts +286 -0
  201. package/src/internal/stream.ts +97 -20
  202. 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":[]}