effect 3.9.2 → 3.10.1

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 (207) 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/channel/channelExecutor.js +160 -161
  42. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  43. package/dist/cjs/internal/core.js +4 -4
  44. package/dist/cjs/internal/core.js.map +1 -1
  45. package/dist/cjs/internal/fiberRuntime.js +14 -12
  46. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  47. package/dist/cjs/internal/logger.js +7 -6
  48. package/dist/cjs/internal/logger.js.map +1 -1
  49. package/dist/cjs/internal/redacted.js +4 -0
  50. package/dist/cjs/internal/redacted.js.map +1 -1
  51. package/dist/cjs/internal/schema/errors.js +116 -0
  52. package/dist/cjs/internal/schema/errors.js.map +1 -0
  53. package/dist/cjs/internal/schema/filters.js +41 -0
  54. package/dist/cjs/internal/schema/filters.js.map +1 -0
  55. package/dist/cjs/internal/schema/util.js +96 -0
  56. package/dist/cjs/internal/schema/util.js.map +1 -0
  57. package/dist/cjs/internal/stm/core.js +2 -3
  58. package/dist/cjs/internal/stm/core.js.map +1 -1
  59. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  60. package/dist/cjs/internal/stm/tQueue.js +1 -2
  61. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  62. package/dist/cjs/internal/stm/tRef.js +6 -2
  63. package/dist/cjs/internal/stm/tRef.js.map +1 -1
  64. package/dist/cjs/internal/stm/tSubscriptionRef.js +178 -0
  65. package/dist/cjs/internal/stm/tSubscriptionRef.js.map +1 -0
  66. package/dist/cjs/internal/stream.js +36 -16
  67. package/dist/cjs/internal/stream.js.map +1 -1
  68. package/dist/cjs/internal/version.js +1 -1
  69. package/dist/cjs/internal/version.js.map +1 -1
  70. package/dist/dts/Arbitrary.d.ts +45 -0
  71. package/dist/dts/Arbitrary.d.ts.map +1 -0
  72. package/dist/dts/Effect.d.ts +298 -30
  73. package/dist/dts/Effect.d.ts.map +1 -1
  74. package/dist/dts/FastCheck.d.ts +9 -0
  75. package/dist/dts/FastCheck.d.ts.map +1 -0
  76. package/dist/dts/Inspectable.d.ts +28 -0
  77. package/dist/dts/Inspectable.d.ts.map +1 -1
  78. package/dist/dts/JSONSchema.d.ts +181 -0
  79. package/dist/dts/JSONSchema.d.ts.map +1 -0
  80. package/dist/dts/ParseResult.d.ts +551 -0
  81. package/dist/dts/ParseResult.d.ts.map +1 -0
  82. package/dist/dts/Predicate.d.ts.map +1 -1
  83. package/dist/dts/Pretty.d.ts +26 -0
  84. package/dist/dts/Pretty.d.ts.map +1 -0
  85. package/dist/dts/Schema.d.ts +4562 -0
  86. package/dist/dts/Schema.d.ts.map +1 -0
  87. package/dist/dts/SchemaAST.d.ts +1321 -0
  88. package/dist/dts/SchemaAST.d.ts.map +1 -0
  89. package/dist/dts/Stream.d.ts +67 -2
  90. package/dist/dts/Stream.d.ts.map +1 -1
  91. package/dist/dts/TPubSub.d.ts +8 -0
  92. package/dist/dts/TPubSub.d.ts.map +1 -1
  93. package/dist/dts/TQueue.d.ts +7 -7
  94. package/dist/dts/TQueue.d.ts.map +1 -1
  95. package/dist/dts/TRef.d.ts +2 -1
  96. package/dist/dts/TRef.d.ts.map +1 -1
  97. package/dist/dts/TSubscriptionRef.d.ts +251 -0
  98. package/dist/dts/TSubscriptionRef.d.ts.map +1 -0
  99. package/dist/dts/index.d.ts +32 -0
  100. package/dist/dts/index.d.ts.map +1 -1
  101. package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
  102. package/dist/dts/internal/schema/errors.d.ts +2 -0
  103. package/dist/dts/internal/schema/errors.d.ts.map +1 -0
  104. package/dist/dts/internal/schema/filters.d.ts +2 -0
  105. package/dist/dts/internal/schema/filters.d.ts.map +1 -0
  106. package/dist/dts/internal/schema/util.d.ts +2 -0
  107. package/dist/dts/internal/schema/util.d.ts.map +1 -0
  108. package/dist/dts/internal/stm/tRef.d.ts +3 -1
  109. package/dist/dts/internal/stm/tRef.d.ts.map +1 -1
  110. package/dist/dts/internal/stm/tSubscriptionRef.d.ts +2 -0
  111. package/dist/dts/internal/stm/tSubscriptionRef.d.ts.map +1 -0
  112. package/dist/dts/internal/stream.d.ts.map +1 -1
  113. package/dist/esm/Arbitrary.js +472 -0
  114. package/dist/esm/Arbitrary.js.map +1 -0
  115. package/dist/esm/Effect.js +256 -18
  116. package/dist/esm/Effect.js.map +1 -1
  117. package/dist/esm/FastCheck.js +9 -0
  118. package/dist/esm/FastCheck.js.map +1 -0
  119. package/dist/esm/Inspectable.js +39 -2
  120. package/dist/esm/Inspectable.js.map +1 -1
  121. package/dist/esm/JSONSchema.js +408 -0
  122. package/dist/esm/JSONSchema.js.map +1 -0
  123. package/dist/esm/ParseResult.js +1503 -0
  124. package/dist/esm/ParseResult.js.map +1 -0
  125. package/dist/esm/Predicate.js +2 -1
  126. package/dist/esm/Predicate.js.map +1 -1
  127. package/dist/esm/Pretty.js +173 -0
  128. package/dist/esm/Pretty.js.map +1 -0
  129. package/dist/esm/Schema.js +5328 -0
  130. package/dist/esm/Schema.js.map +1 -0
  131. package/dist/esm/SchemaAST.js +2300 -0
  132. package/dist/esm/SchemaAST.js.map +1 -0
  133. package/dist/esm/Stream.js +14 -0
  134. package/dist/esm/Stream.js.map +1 -1
  135. package/dist/esm/TPubSub.js +8 -0
  136. package/dist/esm/TPubSub.js.map +1 -1
  137. package/dist/esm/TQueue.js.map +1 -1
  138. package/dist/esm/TRef.js.map +1 -1
  139. package/dist/esm/TSubscriptionRef.js +87 -0
  140. package/dist/esm/TSubscriptionRef.js.map +1 -0
  141. package/dist/esm/index.js +32 -0
  142. package/dist/esm/index.js.map +1 -1
  143. package/dist/esm/internal/cause.js +3 -3
  144. package/dist/esm/internal/cause.js.map +1 -1
  145. package/dist/esm/internal/channel/channelExecutor.js +160 -161
  146. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  147. package/dist/esm/internal/core.js +4 -4
  148. package/dist/esm/internal/core.js.map +1 -1
  149. package/dist/esm/internal/fiberRuntime.js +14 -12
  150. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  151. package/dist/esm/internal/logger.js +7 -6
  152. package/dist/esm/internal/logger.js.map +1 -1
  153. package/dist/esm/internal/redacted.js +4 -0
  154. package/dist/esm/internal/redacted.js.map +1 -1
  155. package/dist/esm/internal/schema/errors.js +87 -0
  156. package/dist/esm/internal/schema/errors.js.map +1 -0
  157. package/dist/esm/internal/schema/filters.js +35 -0
  158. package/dist/esm/internal/schema/filters.js.map +1 -0
  159. package/dist/esm/internal/schema/util.js +78 -0
  160. package/dist/esm/internal/schema/util.js.map +1 -0
  161. package/dist/esm/internal/stm/core.js +1 -2
  162. package/dist/esm/internal/stm/core.js.map +1 -1
  163. package/dist/esm/internal/stm/tPubSub.js.map +1 -1
  164. package/dist/esm/internal/stm/tQueue.js +1 -2
  165. package/dist/esm/internal/stm/tQueue.js.map +1 -1
  166. package/dist/esm/internal/stm/tRef.js +5 -1
  167. package/dist/esm/internal/stm/tRef.js.map +1 -1
  168. package/dist/esm/internal/stm/tSubscriptionRef.js +166 -0
  169. package/dist/esm/internal/stm/tSubscriptionRef.js.map +1 -0
  170. package/dist/esm/internal/stream.js +33 -15
  171. package/dist/esm/internal/stream.js.map +1 -1
  172. package/dist/esm/internal/version.js +1 -1
  173. package/dist/esm/internal/version.js.map +1 -1
  174. package/package.json +68 -1
  175. package/src/Arbitrary.ts +563 -0
  176. package/src/Effect.ts +302 -31
  177. package/src/FastCheck.ts +9 -0
  178. package/src/Inspectable.ts +56 -2
  179. package/src/JSONSchema.ts +601 -0
  180. package/src/ParseResult.ts +2027 -0
  181. package/src/Predicate.ts +3 -1
  182. package/src/Pretty.ts +204 -0
  183. package/src/Schema.ts +10388 -0
  184. package/src/SchemaAST.ts +2827 -0
  185. package/src/Stream.ts +77 -9
  186. package/src/TPubSub.ts +9 -0
  187. package/src/TQueue.ts +7 -7
  188. package/src/TRef.ts +2 -1
  189. package/src/TSubscriptionRef.ts +284 -0
  190. package/src/index.ts +40 -0
  191. package/src/internal/cause.ts +3 -3
  192. package/src/internal/channel/channelExecutor.ts +213 -214
  193. package/src/internal/core-effect.ts +2 -2
  194. package/src/internal/core.ts +4 -4
  195. package/src/internal/fiberRuntime.ts +14 -12
  196. package/src/internal/logger.ts +7 -6
  197. package/src/internal/redacted.ts +4 -0
  198. package/src/internal/schema/errors.ts +189 -0
  199. package/src/internal/schema/filters.ts +86 -0
  200. package/src/internal/schema/util.ts +113 -0
  201. package/src/internal/stm/core.ts +1 -2
  202. package/src/internal/stm/tPubSub.ts +1 -0
  203. package/src/internal/stm/tQueue.ts +2 -2
  204. package/src/internal/stm/tRef.ts +7 -2
  205. package/src/internal/stm/tSubscriptionRef.ts +286 -0
  206. package/src/internal/stream.ts +97 -20
  207. package/src/internal/version.ts +1 -1
@@ -0,0 +1,472 @@
1
+ /**
2
+ * @since 3.10.0
3
+ */
4
+ import * as Arr from "./Array.js";
5
+ import * as FastCheck from "./FastCheck.js";
6
+ import * as errors_ from "./internal/schema/errors.js";
7
+ import * as filters_ from "./internal/schema/filters.js";
8
+ import * as util_ from "./internal/schema/util.js";
9
+ import * as Option from "./Option.js";
10
+ import * as Predicate from "./Predicate.js";
11
+ import * as AST from "./SchemaAST.js";
12
+ /**
13
+ * Returns a LazyArbitrary for the `A` type of the provided schema.
14
+ *
15
+ * @category arbitrary
16
+ * @since 3.10.0
17
+ */
18
+ export const makeLazy = schema => go(schema.ast, {
19
+ maxDepth: 2
20
+ }, []);
21
+ /**
22
+ * Returns a fast-check Arbitrary for the `A` type of the provided schema.
23
+ *
24
+ * @category arbitrary
25
+ * @since 3.10.0
26
+ */
27
+ export const make = schema => makeLazy(schema)(FastCheck);
28
+ const getArbitraryAnnotation = /*#__PURE__*/AST.getAnnotation(AST.ArbitraryAnnotationId);
29
+ const getRefinementFromArbitrary = (ast, ctx, path) => {
30
+ const constraints = combineConstraints(ctx.constraints, getConstraints(ast));
31
+ return go(ast.from, constraints ? {
32
+ ...ctx,
33
+ constraints
34
+ } : ctx, path);
35
+ };
36
+ const getSuspendedContext = (ctx, ast) => {
37
+ if (ctx.depthIdentifier !== undefined) {
38
+ return ctx;
39
+ }
40
+ const depthIdentifier = AST.getIdentifierAnnotation(ast).pipe(Option.orElse(() => AST.getIdentifierAnnotation(ast.f())), Option.getOrElse(() => "SuspendDefaultDepthIdentifier"));
41
+ return {
42
+ ...ctx,
43
+ depthIdentifier
44
+ };
45
+ };
46
+ const getSuspendedArray = (fc, depthIdentifier, maxDepth, item, constraints) => {
47
+ let minLength = 1;
48
+ let maxLength = 2;
49
+ if (constraints && constraints.minLength !== undefined && constraints.minLength > minLength) {
50
+ minLength = constraints.minLength;
51
+ if (minLength > maxLength) {
52
+ maxLength = minLength;
53
+ }
54
+ }
55
+ return fc.oneof({
56
+ maxDepth,
57
+ depthIdentifier
58
+ }, fc.constant([]), fc.array(item, {
59
+ minLength,
60
+ maxLength
61
+ }));
62
+ };
63
+ const go = (ast, ctx, path) => {
64
+ const hook = getArbitraryAnnotation(ast);
65
+ if (Option.isSome(hook)) {
66
+ switch (ast._tag) {
67
+ case "Declaration":
68
+ return hook.value(...ast.typeParameters.map(p => go(p, ctx, path)), ctx);
69
+ case "Refinement":
70
+ return hook.value(getRefinementFromArbitrary(ast, ctx, path), ctx);
71
+ default:
72
+ return hook.value(ctx);
73
+ }
74
+ }
75
+ switch (ast._tag) {
76
+ case "Declaration":
77
+ {
78
+ throw new Error(errors_.getArbitraryMissingAnnotationErrorMessage(path, ast));
79
+ }
80
+ case "Literal":
81
+ return fc => fc.constant(ast.literal);
82
+ case "UniqueSymbol":
83
+ return fc => fc.constant(ast.symbol);
84
+ case "UndefinedKeyword":
85
+ return fc => fc.constant(undefined);
86
+ case "NeverKeyword":
87
+ return () => {
88
+ throw new Error(errors_.getArbitraryUnsupportedErrorMessage(path, ast));
89
+ };
90
+ case "UnknownKeyword":
91
+ case "AnyKeyword":
92
+ case "VoidKeyword":
93
+ return fc => fc.anything();
94
+ case "StringKeyword":
95
+ return fc => {
96
+ if (ctx.constraints) {
97
+ switch (ctx.constraints._tag) {
98
+ case "StringConstraints":
99
+ return fc.string(ctx.constraints.constraints);
100
+ }
101
+ }
102
+ return fc.string();
103
+ };
104
+ case "NumberKeyword":
105
+ return fc => {
106
+ if (ctx.constraints) {
107
+ switch (ctx.constraints._tag) {
108
+ case "NumberConstraints":
109
+ return fc.float(ctx.constraints.constraints);
110
+ case "IntegerConstraints":
111
+ return fc.integer(ctx.constraints.constraints);
112
+ }
113
+ }
114
+ return fc.float();
115
+ };
116
+ case "BooleanKeyword":
117
+ return fc => fc.boolean();
118
+ case "BigIntKeyword":
119
+ return fc => {
120
+ if (ctx.constraints) {
121
+ switch (ctx.constraints._tag) {
122
+ case "BigIntConstraints":
123
+ return fc.bigInt(ctx.constraints.constraints);
124
+ }
125
+ }
126
+ return fc.bigInt();
127
+ };
128
+ case "SymbolKeyword":
129
+ return fc => fc.string().map(s => Symbol.for(s));
130
+ case "ObjectKeyword":
131
+ return fc => fc.oneof(fc.object(), fc.array(fc.anything()));
132
+ case "TemplateLiteral":
133
+ {
134
+ return fc => {
135
+ const string = fc.string({
136
+ maxLength: 5
137
+ });
138
+ const number = fc.float({
139
+ noDefaultInfinity: true
140
+ }).filter(n => !Number.isNaN(n));
141
+ const components = [fc.constant(ast.head)];
142
+ for (const span of ast.spans) {
143
+ if (AST.isStringKeyword(span.type)) {
144
+ components.push(string);
145
+ } else {
146
+ components.push(number);
147
+ }
148
+ components.push(fc.constant(span.literal));
149
+ }
150
+ return fc.tuple(...components).map(spans => spans.join(""));
151
+ };
152
+ }
153
+ case "TupleType":
154
+ {
155
+ const elements = [];
156
+ let hasOptionals = false;
157
+ let i = 0;
158
+ for (const element of ast.elements) {
159
+ elements.push(go(element.type, ctx, path.concat(i++)));
160
+ if (element.isOptional) {
161
+ hasOptionals = true;
162
+ }
163
+ }
164
+ const rest = ast.rest.map(annotatedAST => go(annotatedAST.type, ctx, path));
165
+ return fc => {
166
+ // ---------------------------------------------
167
+ // handle elements
168
+ // ---------------------------------------------
169
+ let output = fc.tuple(...elements.map(arb => arb(fc)));
170
+ if (hasOptionals) {
171
+ const indexes = fc.tuple(...ast.elements.map(element => element.isOptional ? fc.boolean() : fc.constant(true)));
172
+ output = output.chain(tuple => indexes.map(booleans => {
173
+ for (const [i, b] of booleans.reverse().entries()) {
174
+ if (!b) {
175
+ tuple.splice(booleans.length - i, 1);
176
+ }
177
+ }
178
+ return tuple;
179
+ }));
180
+ }
181
+ // ---------------------------------------------
182
+ // handle rest element
183
+ // ---------------------------------------------
184
+ if (Arr.isNonEmptyReadonlyArray(rest)) {
185
+ const [head, ...tail] = rest;
186
+ const item = head(fc);
187
+ const constraints = ctx.constraints && ctx.constraints._tag === "ArrayConstraints" ? ctx.constraints.constraints : undefined;
188
+ output = output.chain(as => {
189
+ return (ctx.depthIdentifier !== undefined ? getSuspendedArray(fc, ctx.depthIdentifier, ctx.maxDepth, item, constraints) : fc.array(item, constraints)).map(rest => [...as, ...rest]);
190
+ });
191
+ // ---------------------------------------------
192
+ // handle post rest elements
193
+ // ---------------------------------------------
194
+ for (let j = 0; j < tail.length; j++) {
195
+ output = output.chain(as => tail[j](fc).map(a => [...as, a]));
196
+ }
197
+ }
198
+ return output;
199
+ };
200
+ }
201
+ case "TypeLiteral":
202
+ {
203
+ const propertySignaturesTypes = ast.propertySignatures.map(ps => go(ps.type, ctx, path.concat(ps.name)));
204
+ const indexSignatures = ast.indexSignatures.map(is => [go(is.parameter, ctx, path), go(is.type, ctx, path)]);
205
+ return fc => {
206
+ const arbs = {};
207
+ const requiredKeys = [];
208
+ // ---------------------------------------------
209
+ // handle property signatures
210
+ // ---------------------------------------------
211
+ for (let i = 0; i < propertySignaturesTypes.length; i++) {
212
+ const ps = ast.propertySignatures[i];
213
+ const name = ps.name;
214
+ if (!ps.isOptional) {
215
+ requiredKeys.push(name);
216
+ }
217
+ arbs[name] = propertySignaturesTypes[i](fc);
218
+ }
219
+ let output = fc.record(arbs, {
220
+ requiredKeys
221
+ });
222
+ // ---------------------------------------------
223
+ // handle index signatures
224
+ // ---------------------------------------------
225
+ for (let i = 0; i < indexSignatures.length; i++) {
226
+ const key = indexSignatures[i][0](fc);
227
+ const value = indexSignatures[i][1](fc);
228
+ output = output.chain(o => {
229
+ const item = fc.tuple(key, value);
230
+ const arr = ctx.depthIdentifier !== undefined ? getSuspendedArray(fc, ctx.depthIdentifier, ctx.maxDepth, item) : fc.array(item);
231
+ return arr.map(tuples => ({
232
+ ...Object.fromEntries(tuples),
233
+ ...o
234
+ }));
235
+ });
236
+ }
237
+ return output;
238
+ };
239
+ }
240
+ case "Union":
241
+ {
242
+ const types = ast.types.map(member => go(member, ctx, path));
243
+ return fc => fc.oneof(...types.map(arb => arb(fc)));
244
+ }
245
+ case "Enums":
246
+ {
247
+ if (ast.enums.length === 0) {
248
+ throw new Error(errors_.getArbitraryEmptyEnumErrorMessage(path));
249
+ }
250
+ return fc => fc.oneof(...ast.enums.map(([_, value]) => fc.constant(value)));
251
+ }
252
+ case "Refinement":
253
+ {
254
+ const from = getRefinementFromArbitrary(ast, ctx, path);
255
+ return fc => from(fc).filter(a => Option.isNone(ast.filter(a, AST.defaultParseOption, ast)));
256
+ }
257
+ case "Suspend":
258
+ {
259
+ const get = util_.memoizeThunk(() => {
260
+ return go(ast.f(), getSuspendedContext(ctx, ast), path);
261
+ });
262
+ return fc => fc.constant(null).chain(() => get()(fc));
263
+ }
264
+ case "Transformation":
265
+ return go(ast.to, ctx, path);
266
+ }
267
+ };
268
+ /** @internal */
269
+ export class NumberConstraints {
270
+ _tag = "NumberConstraints";
271
+ constraints;
272
+ constructor(options) {
273
+ this.constraints = {};
274
+ if (Predicate.isNumber(options.min)) {
275
+ this.constraints.min = Math.fround(options.min);
276
+ }
277
+ if (Predicate.isNumber(options.max)) {
278
+ this.constraints.max = Math.fround(options.max);
279
+ }
280
+ if (Predicate.isBoolean(options.noNaN)) {
281
+ this.constraints.noNaN = options.noNaN;
282
+ }
283
+ if (Predicate.isBoolean(options.noDefaultInfinity)) {
284
+ this.constraints.noDefaultInfinity = options.noDefaultInfinity;
285
+ }
286
+ }
287
+ }
288
+ /** @internal */
289
+ export class StringConstraints {
290
+ _tag = "StringConstraints";
291
+ constraints;
292
+ constructor(options) {
293
+ this.constraints = {};
294
+ if (Predicate.isNumber(options.minLength)) {
295
+ this.constraints.minLength = options.minLength;
296
+ }
297
+ if (Predicate.isNumber(options.maxLength)) {
298
+ this.constraints.maxLength = options.maxLength;
299
+ }
300
+ }
301
+ }
302
+ /** @internal */
303
+ export class IntegerConstraints {
304
+ _tag = "IntegerConstraints";
305
+ constraints;
306
+ constructor(options) {
307
+ this.constraints = {};
308
+ if (Predicate.isNumber(options.min)) {
309
+ this.constraints.min = options.min;
310
+ }
311
+ if (Predicate.isNumber(options.max)) {
312
+ this.constraints.max = options.max;
313
+ }
314
+ }
315
+ }
316
+ /** @internal */
317
+ export class ArrayConstraints {
318
+ _tag = "ArrayConstraints";
319
+ constraints;
320
+ constructor(options) {
321
+ this.constraints = {};
322
+ if (Predicate.isNumber(options.minLength)) {
323
+ this.constraints.minLength = options.minLength;
324
+ }
325
+ if (Predicate.isNumber(options.maxLength)) {
326
+ this.constraints.maxLength = options.maxLength;
327
+ }
328
+ }
329
+ }
330
+ /** @internal */
331
+ export class BigIntConstraints {
332
+ _tag = "BigIntConstraints";
333
+ constraints;
334
+ constructor(options) {
335
+ this.constraints = {};
336
+ if (Predicate.isBigInt(options.min)) {
337
+ this.constraints.min = options.min;
338
+ }
339
+ if (Predicate.isBigInt(options.max)) {
340
+ this.constraints.max = options.max;
341
+ }
342
+ }
343
+ }
344
+ /** @internal */
345
+ export const getConstraints = ast => {
346
+ const TypeAnnotationId = ast.annotations[AST.SchemaIdAnnotationId];
347
+ const jsonSchema = ast.annotations[AST.JSONSchemaAnnotationId];
348
+ switch (TypeAnnotationId) {
349
+ // int
350
+ case filters_.IntSchemaId:
351
+ return new IntegerConstraints({});
352
+ // number
353
+ case filters_.GreaterThanSchemaId:
354
+ case filters_.GreaterThanOrEqualToSchemaId:
355
+ case filters_.LessThanSchemaId:
356
+ case filters_.LessThanOrEqualToSchemaId:
357
+ case filters_.BetweenSchemaId:
358
+ return new NumberConstraints({
359
+ min: jsonSchema.exclusiveMinimum ?? jsonSchema.minimum,
360
+ max: jsonSchema.exclusiveMaximum ?? jsonSchema.maximum
361
+ });
362
+ // bigint
363
+ case filters_.GreaterThanBigintSchemaId:
364
+ case filters_.GreaterThanOrEqualToBigIntSchemaId:
365
+ case filters_.LessThanBigIntSchemaId:
366
+ case filters_.LessThanOrEqualToBigIntSchemaId:
367
+ case filters_.BetweenBigintSchemaId:
368
+ {
369
+ const constraints = ast.annotations[TypeAnnotationId];
370
+ return new BigIntConstraints(constraints);
371
+ }
372
+ // string
373
+ case filters_.MinLengthSchemaId:
374
+ case filters_.MaxLengthSchemaId:
375
+ case filters_.LengthSchemaId:
376
+ return new StringConstraints(jsonSchema);
377
+ // array
378
+ case filters_.MinItemsSchemaId:
379
+ case filters_.MaxItemsSchemaId:
380
+ case filters_.ItemsCountSchemaId:
381
+ return new ArrayConstraints({
382
+ minLength: jsonSchema.minItems,
383
+ maxLength: jsonSchema.maxItems
384
+ });
385
+ }
386
+ };
387
+ /** @internal */
388
+ export const combineConstraints = (c1, c2) => {
389
+ if (c1 === undefined) {
390
+ return c2;
391
+ }
392
+ if (c2 === undefined) {
393
+ return c1;
394
+ }
395
+ switch (c1._tag) {
396
+ case "ArrayConstraints":
397
+ {
398
+ switch (c2._tag) {
399
+ case "ArrayConstraints":
400
+ return new ArrayConstraints({
401
+ minLength: getMax(c1.constraints.minLength, c2.constraints.minLength),
402
+ maxLength: getMin(c1.constraints.maxLength, c2.constraints.maxLength)
403
+ });
404
+ }
405
+ break;
406
+ }
407
+ case "NumberConstraints":
408
+ {
409
+ switch (c2._tag) {
410
+ case "NumberConstraints":
411
+ return new NumberConstraints({
412
+ min: getMax(c1.constraints.min, c2.constraints.min),
413
+ max: getMin(c1.constraints.max, c2.constraints.max),
414
+ noNaN: getOr(c1.constraints.noNaN, c2.constraints.noNaN),
415
+ noDefaultInfinity: getOr(c1.constraints.noDefaultInfinity, c2.constraints.noDefaultInfinity)
416
+ });
417
+ case "IntegerConstraints":
418
+ return new IntegerConstraints({
419
+ min: getMax(c1.constraints.min, c2.constraints.min),
420
+ max: getMin(c1.constraints.max, c2.constraints.max)
421
+ });
422
+ }
423
+ break;
424
+ }
425
+ case "BigIntConstraints":
426
+ {
427
+ switch (c2._tag) {
428
+ case "BigIntConstraints":
429
+ return new BigIntConstraints({
430
+ min: getMax(c1.constraints.min, c2.constraints.min),
431
+ max: getMin(c1.constraints.max, c2.constraints.max)
432
+ });
433
+ }
434
+ break;
435
+ }
436
+ case "StringConstraints":
437
+ {
438
+ switch (c2._tag) {
439
+ case "StringConstraints":
440
+ return new StringConstraints({
441
+ minLength: getMax(c1.constraints.minLength, c2.constraints.minLength),
442
+ maxLength: getMin(c1.constraints.maxLength, c2.constraints.maxLength)
443
+ });
444
+ }
445
+ break;
446
+ }
447
+ case "IntegerConstraints":
448
+ {
449
+ switch (c2._tag) {
450
+ case "NumberConstraints":
451
+ case "IntegerConstraints":
452
+ {
453
+ return new IntegerConstraints({
454
+ min: getMax(c1.constraints.min, c2.constraints.min),
455
+ max: getMin(c1.constraints.max, c2.constraints.max)
456
+ });
457
+ }
458
+ }
459
+ break;
460
+ }
461
+ }
462
+ };
463
+ const getOr = (a, b) => {
464
+ return a === undefined ? b : b === undefined ? a : a || b;
465
+ };
466
+ function getMax(n1, n2) {
467
+ return n1 === undefined ? n2 : n2 === undefined ? n1 : n1 <= n2 ? n2 : n1;
468
+ }
469
+ function getMin(n1, n2) {
470
+ return n1 === undefined ? n2 : n2 === undefined ? n1 : n1 <= n2 ? n1 : n2;
471
+ }
472
+ //# sourceMappingURL=Arbitrary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Arbitrary.js","names":["Arr","FastCheck","errors_","filters_","util_","Option","Predicate","AST","makeLazy","schema","go","ast","maxDepth","make","getArbitraryAnnotation","getAnnotation","ArbitraryAnnotationId","getRefinementFromArbitrary","ctx","path","constraints","combineConstraints","getConstraints","from","getSuspendedContext","depthIdentifier","undefined","getIdentifierAnnotation","pipe","orElse","f","getOrElse","getSuspendedArray","fc","item","minLength","maxLength","oneof","constant","array","hook","isSome","_tag","value","typeParameters","map","p","Error","getArbitraryMissingAnnotationErrorMessage","literal","symbol","getArbitraryUnsupportedErrorMessage","anything","string","float","integer","boolean","bigInt","s","Symbol","for","object","number","noDefaultInfinity","filter","n","Number","isNaN","components","head","span","spans","isStringKeyword","type","push","tuple","join","elements","hasOptionals","i","element","concat","isOptional","rest","annotatedAST","output","arb","indexes","chain","booleans","b","reverse","entries","splice","length","isNonEmptyReadonlyArray","tail","as","j","a","propertySignaturesTypes","propertySignatures","ps","name","indexSignatures","is","parameter","arbs","requiredKeys","record","key","o","arr","tuples","Object","fromEntries","types","member","enums","getArbitraryEmptyEnumErrorMessage","_","isNone","defaultParseOption","get","memoizeThunk","to","NumberConstraints","constructor","options","isNumber","min","Math","fround","max","isBoolean","noNaN","StringConstraints","IntegerConstraints","ArrayConstraints","BigIntConstraints","isBigInt","TypeAnnotationId","annotations","SchemaIdAnnotationId","jsonSchema","JSONSchemaAnnotationId","IntSchemaId","GreaterThanSchemaId","GreaterThanOrEqualToSchemaId","LessThanSchemaId","LessThanOrEqualToSchemaId","BetweenSchemaId","exclusiveMinimum","minimum","exclusiveMaximum","maximum","GreaterThanBigintSchemaId","GreaterThanOrEqualToBigIntSchemaId","LessThanBigIntSchemaId","LessThanOrEqualToBigIntSchemaId","BetweenBigintSchemaId","MinLengthSchemaId","MaxLengthSchemaId","LengthSchemaId","MinItemsSchemaId","MaxItemsSchemaId","ItemsCountSchemaId","minItems","maxItems","c1","c2","getMax","getMin","getOr","n1","n2"],"sources":["../../src/Arbitrary.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}