@fncts/schema 0.0.24 → 0.0.25

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 (135) hide show
  1. package/LICENSE +26 -0
  2. package/_cjs/AST.cjs +1093 -1226
  3. package/_cjs/AST.cjs.map +1 -1
  4. package/_cjs/ASTAnnotation.cjs +114 -85
  5. package/_cjs/ASTAnnotation.cjs.map +1 -1
  6. package/_cjs/ASTAnnotationMap.cjs +43 -41
  7. package/_cjs/ASTAnnotationMap.cjs.map +1 -1
  8. package/_cjs/Eq.cjs +113 -145
  9. package/_cjs/Eq.cjs.map +1 -1
  10. package/_cjs/Gen.cjs +131 -167
  11. package/_cjs/Gen.cjs.map +1 -1
  12. package/_cjs/Guard.cjs +167 -267
  13. package/_cjs/Guard.cjs.map +1 -1
  14. package/_cjs/InvalidInterpretationError.cjs +9 -10
  15. package/_cjs/InvalidInterpretationError.cjs.map +1 -1
  16. package/_cjs/ParseError/ParseError.cjs +283 -284
  17. package/_cjs/ParseError/ParseError.cjs.map +1 -1
  18. package/_cjs/ParseError/ParseErrorFormatter.cjs +0 -2
  19. package/_cjs/ParseError/PathFormatter.cjs +55 -87
  20. package/_cjs/ParseError/PathFormatter.cjs.map +1 -1
  21. package/_cjs/ParseError/TreeFormatter.cjs +70 -102
  22. package/_cjs/ParseError/TreeFormatter.cjs.map +1 -1
  23. package/_cjs/ParseError.cjs +35 -50
  24. package/_cjs/ParseResult.cjs +15 -15
  25. package/_cjs/ParseResult.cjs.map +1 -1
  26. package/_cjs/Parser/api.cjs +54 -50
  27. package/_cjs/Parser/api.cjs.map +1 -1
  28. package/_cjs/Parser/definition.cjs +17 -16
  29. package/_cjs/Parser/definition.cjs.map +1 -1
  30. package/_cjs/Parser/interpreter.cjs +276 -358
  31. package/_cjs/Parser/interpreter.cjs.map +1 -1
  32. package/_cjs/Parser.cjs +12 -39
  33. package/_cjs/Schema/api/conc.cjs +64 -59
  34. package/_cjs/Schema/api/conc.cjs.map +1 -1
  35. package/_cjs/Schema/api/either.cjs +73 -72
  36. package/_cjs/Schema/api/either.cjs.map +1 -1
  37. package/_cjs/Schema/api/hashMap.cjs +85 -85
  38. package/_cjs/Schema/api/hashMap.cjs.map +1 -1
  39. package/_cjs/Schema/api/hashSet.cjs +75 -69
  40. package/_cjs/Schema/api/hashSet.cjs.map +1 -1
  41. package/_cjs/Schema/api/list.cjs +74 -66
  42. package/_cjs/Schema/api/list.cjs.map +1 -1
  43. package/_cjs/Schema/api/map.cjs +81 -83
  44. package/_cjs/Schema/api/map.cjs.map +1 -1
  45. package/_cjs/Schema/api/maybe.cjs +56 -49
  46. package/_cjs/Schema/api/maybe.cjs.map +1 -1
  47. package/_cjs/Schema/api/set.cjs +68 -61
  48. package/_cjs/Schema/api/set.cjs.map +1 -1
  49. package/_cjs/Schema/api.cjs +332 -350
  50. package/_cjs/Schema/api.cjs.map +1 -1
  51. package/_cjs/Schema/definition.cjs +28 -26
  52. package/_cjs/Schema/definition.cjs.map +1 -1
  53. package/_cjs/Schema/derivations.cjs +85 -100
  54. package/_cjs/Schema/derivations.cjs.map +1 -1
  55. package/_cjs/Schema.cjs +95 -127
  56. package/_cjs/Show.cjs +91 -151
  57. package/_cjs/Show.cjs.map +1 -1
  58. package/_cjs/chunk.cjs +28 -0
  59. package/_cjs/global.cjs +0 -2
  60. package/_cjs/index.cjs +0 -2
  61. package/_cjs/utils.cjs +41 -46
  62. package/_cjs/utils.cjs.map +1 -1
  63. package/_mjs/AST.mjs +996 -1161
  64. package/_mjs/AST.mjs.map +1 -1
  65. package/_mjs/ASTAnnotation.mjs +77 -73
  66. package/_mjs/ASTAnnotation.mjs.map +1 -1
  67. package/_mjs/ASTAnnotationMap.mjs +31 -29
  68. package/_mjs/ASTAnnotationMap.mjs.map +1 -1
  69. package/_mjs/Eq.mjs +101 -134
  70. package/_mjs/Eq.mjs.map +1 -1
  71. package/_mjs/Gen.mjs +117 -157
  72. package/_mjs/Gen.mjs.map +1 -1
  73. package/_mjs/Guard.mjs +154 -257
  74. package/_mjs/Guard.mjs.map +1 -1
  75. package/_mjs/InvalidInterpretationError.mjs +8 -4
  76. package/_mjs/InvalidInterpretationError.mjs.map +1 -1
  77. package/_mjs/ParseError/ParseError.mjs +266 -262
  78. package/_mjs/ParseError/ParseError.mjs.map +1 -1
  79. package/_mjs/ParseError/ParseErrorFormatter.mjs +0 -2
  80. package/_mjs/ParseError/PathFormatter.mjs +51 -80
  81. package/_mjs/ParseError/PathFormatter.mjs.map +1 -1
  82. package/_mjs/ParseError/TreeFormatter.mjs +62 -94
  83. package/_mjs/ParseError/TreeFormatter.mjs.map +1 -1
  84. package/_mjs/ParseError.mjs +5 -6
  85. package/_mjs/ParseResult.mjs +13 -9
  86. package/_mjs/ParseResult.mjs.map +1 -1
  87. package/_mjs/Parser/api.mjs +43 -39
  88. package/_mjs/Parser/api.mjs.map +1 -1
  89. package/_mjs/Parser/definition.mjs +12 -8
  90. package/_mjs/Parser/definition.mjs.map +1 -1
  91. package/_mjs/Parser/interpreter.mjs +262 -348
  92. package/_mjs/Parser/interpreter.mjs.map +1 -1
  93. package/_mjs/Parser.mjs +4 -5
  94. package/_mjs/Schema/api/conc.mjs +41 -45
  95. package/_mjs/Schema/api/conc.mjs.map +1 -1
  96. package/_mjs/Schema/api/either.mjs +55 -61
  97. package/_mjs/Schema/api/either.mjs.map +1 -1
  98. package/_mjs/Schema/api/hashMap.mjs +61 -71
  99. package/_mjs/Schema/api/hashMap.mjs.map +1 -1
  100. package/_mjs/Schema/api/hashSet.mjs +53 -56
  101. package/_mjs/Schema/api/hashSet.mjs.map +1 -1
  102. package/_mjs/Schema/api/list.mjs +50 -53
  103. package/_mjs/Schema/api/list.mjs.map +1 -1
  104. package/_mjs/Schema/api/map.mjs +59 -69
  105. package/_mjs/Schema/api/map.mjs.map +1 -1
  106. package/_mjs/Schema/api/maybe.mjs +34 -36
  107. package/_mjs/Schema/api/maybe.mjs.map +1 -1
  108. package/_mjs/Schema/api/set.mjs +47 -48
  109. package/_mjs/Schema/api/set.mjs.map +1 -1
  110. package/_mjs/Schema/api.mjs +304 -346
  111. package/_mjs/Schema/api.mjs.map +1 -1
  112. package/_mjs/Schema/definition.mjs +21 -17
  113. package/_mjs/Schema/definition.mjs.map +1 -1
  114. package/_mjs/Schema/derivations.mjs +71 -90
  115. package/_mjs/Schema/derivations.mjs.map +1 -1
  116. package/_mjs/Schema.mjs +12 -15
  117. package/_mjs/Show.mjs +79 -139
  118. package/_mjs/Show.mjs.map +1 -1
  119. package/_mjs/global.mjs +0 -2
  120. package/_mjs/index.mjs +0 -2
  121. package/_mjs/utils.mjs +35 -37
  122. package/_mjs/utils.mjs.map +1 -1
  123. package/package.json +7 -3
  124. package/_cjs/ParseError/ParseErrorFormatter.cjs.map +0 -1
  125. package/_cjs/ParseError.cjs.map +0 -1
  126. package/_cjs/Parser.cjs.map +0 -1
  127. package/_cjs/Schema.cjs.map +0 -1
  128. package/_cjs/global.cjs.map +0 -1
  129. package/_cjs/index.cjs.map +0 -1
  130. package/_mjs/ParseError/ParseErrorFormatter.mjs.map +0 -1
  131. package/_mjs/ParseError.mjs.map +0 -1
  132. package/_mjs/Parser.mjs.map +0 -1
  133. package/_mjs/Schema.mjs.map +0 -1
  134. package/_mjs/global.mjs.map +0 -1
  135. package/_mjs/index.mjs.map +0 -1
@@ -1,365 +1,283 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.parserFor = parserFor;
7
- var tsplus_module_1 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Either/api"));
8
- var tsplus_module_2 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/schema/Parser/definition"));
9
- var tsplus_module_3 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/schema/ParseResult"));
10
- var tsplus_module_4 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/immutable/Vector/api"));
11
- var tsplus_module_5 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Maybe/api"));
12
- var tsplus_module_6 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/schema/AST"));
13
- var tsplus_module_7 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/schema/ParseError/ParseError"));
14
- var tsplus_module_8 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/immutable/Vector/internal"));
15
- var tsplus_module_9 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Maybe/definition"));
16
- var _Global = /*#__PURE__*/require("@fncts/base/data/Global");
17
- var _predicates = /*#__PURE__*/require("@fncts/base/util/predicates");
18
- var _AST2 = /*#__PURE__*/require("../AST.cjs");
19
- var _ParseError2 = /*#__PURE__*/require("../ParseError/ParseError.cjs");
20
- var _utils = /*#__PURE__*/require("../utils.cjs");
21
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
22
- const decodeMemoMap = /*#__PURE__*/(0, _Global.globalValue)(/*#__PURE__*/Symbol.for("fncts.schema.Parser.decodeMemoMap"), () => new WeakMap());
23
- const encodeMemoMap = /*#__PURE__*/(0, _Global.globalValue)(/*#__PURE__*/Symbol.for("fncts.schema.Parser.encodeMemoMap"), () => new WeakMap());
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_chunk = require("../chunk.cjs");
3
+ const require_utils = require("../utils.cjs");
4
+ const require_AST = require("../AST.cjs");
5
+ const require_ParseError_ParseError = require("../ParseError/ParseError.cjs");
6
+ let _fncts_base_collection_immutable_Vector_api = require("@fncts/base/collection/immutable/Vector/api");
7
+ _fncts_base_collection_immutable_Vector_api = require_chunk.__toESM(_fncts_base_collection_immutable_Vector_api, 1);
8
+ let _fncts_schema_AST = require("@fncts/schema/AST");
9
+ _fncts_schema_AST = require_chunk.__toESM(_fncts_schema_AST, 1);
10
+ let _fncts_base_data_Maybe_api = require("@fncts/base/data/Maybe/api");
11
+ _fncts_base_data_Maybe_api = require_chunk.__toESM(_fncts_base_data_Maybe_api, 1);
12
+ let _fncts_base_data_Global = require("@fncts/base/data/Global");
13
+ let _fncts_schema_ParseResult = require("@fncts/schema/ParseResult");
14
+ _fncts_schema_ParseResult = require_chunk.__toESM(_fncts_schema_ParseResult, 1);
15
+ let _fncts_base_data_Maybe_definition = require("@fncts/base/data/Maybe/definition");
16
+ _fncts_base_data_Maybe_definition = require_chunk.__toESM(_fncts_base_data_Maybe_definition, 1);
17
+ let _fncts_base_util_predicates = require("@fncts/base/util/predicates");
18
+ let _fncts_schema_ParseError_ParseError = require("@fncts/schema/ParseError/ParseError");
19
+ _fncts_schema_ParseError_ParseError = require_chunk.__toESM(_fncts_schema_ParseError_ParseError, 1);
20
+ let _fncts_base_collection_immutable_Vector_internal = require("@fncts/base/collection/immutable/Vector/internal");
21
+ _fncts_base_collection_immutable_Vector_internal = require_chunk.__toESM(_fncts_base_collection_immutable_Vector_internal, 1);
22
+ let _fncts_base_data_Either_api = require("@fncts/base/data/Either/api");
23
+ _fncts_base_data_Either_api = require_chunk.__toESM(_fncts_base_data_Either_api, 1);
24
+ let _fncts_schema_Parser_definition = require("@fncts/schema/Parser/definition");
25
+ _fncts_schema_Parser_definition = require_chunk.__toESM(_fncts_schema_Parser_definition, 1);
26
+ //#region build/esm/Parser/interpreter.js
27
+ const decodeMemoMap = (0, _fncts_base_data_Global.globalValue)(Symbol.for("fncts.schema.Parser.decodeMemoMap"), () => /* @__PURE__ */ new WeakMap());
28
+ const encodeMemoMap = (0, _fncts_base_data_Global.globalValue)(Symbol.for("fncts.schema.Parser.encodeMemoMap"), () => /* @__PURE__ */ new WeakMap());
24
29
  function goMemo(ast, isDecoding) {
25
- const memoMap = isDecoding ? decodeMemoMap : encodeMemoMap;
26
- const memo = memoMap.get(ast);
27
- if (memo) {
28
- return memo;
29
- }
30
- const parser = go(ast, isDecoding);
31
- memoMap.set(ast, parser);
32
- return parser;
30
+ const memoMap = isDecoding ? decodeMemoMap : encodeMemoMap;
31
+ const memo = memoMap.get(ast);
32
+ if (memo) return memo;
33
+ const parser = go(ast, isDecoding);
34
+ memoMap.set(ast, parser);
35
+ return parser;
33
36
  }
34
37
  function go(ast, isDecoding) {
35
- void 0;
36
- switch (ast._tag) {
37
- case 0 /* ASTTag.Declaration */:
38
- {
39
- const parse = isDecoding ? ast.decode(...ast.typeParameters) : ast.encode(...ast.typeParameters);
40
- return tsplus_module_2.make((input, options) => tsplus_module_1.mapLeft(error => new _ParseError2.DeclarationError(ast, input, error))(parse(input, options)));
41
- }
42
- case 1 /* ASTTag.Literal */:
43
- return tsplus_module_2.fromRefinement(ast, u => u === ast.literal);
44
- case 2 /* ASTTag.UniqueSymbol */:
45
- return tsplus_module_2.fromRefinement(ast, u => u === ast.symbol);
46
- case 3 /* ASTTag.UndefinedKeyword */:
47
- case 4 /* ASTTag.VoidKeyword */:
48
- return tsplus_module_2.fromRefinement(ast, _predicates.isUndefined);
49
- case 5 /* ASTTag.NeverKeyword */:
50
- return tsplus_module_2.fromRefinement(ast, _ => false);
51
- case 6 /* ASTTag.UnknownKeyword */:
52
- case 7 /* ASTTag.AnyKeyword */:
53
- return tsplus_module_2.make(tsplus_module_3.succeed);
54
- case 8 /* ASTTag.StringKeyword */:
55
- return tsplus_module_2.fromRefinement(ast, _predicates.isString);
56
- case 9 /* ASTTag.NumberKeyword */:
57
- return tsplus_module_2.fromRefinement(ast, _predicates.isNumber);
58
- case 10 /* ASTTag.BooleanKeyword */:
59
- return tsplus_module_2.fromRefinement(ast, _predicates.isBoolean);
60
- case 11 /* ASTTag.BigIntKeyword */:
61
- return tsplus_module_2.fromRefinement(ast, _predicates.isBigInt);
62
- case 12 /* ASTTag.SymbolKeyword */:
63
- return tsplus_module_2.fromRefinement(ast, _predicates.isSymbol);
64
- case 13 /* ASTTag.ObjectKeyword */:
65
- return tsplus_module_2.fromRefinement(ast, _predicates.isObject);
66
- case 14 /* ASTTag.Enum */:
67
- return tsplus_module_2.fromRefinement(ast, u => tsplus_module_4.some(([_, value]) => value === u)(ast.enums));
68
- case 15 /* ASTTag.TemplateLiteral */:
69
- {
70
- const regex = (0, _utils.getTemplateLiteralRegex)(ast);
71
- return tsplus_module_2.fromRefinement(ast, u => (0, _predicates.isString)(u) && regex.test(u));
72
- }
73
- case 16 /* ASTTag.Tuple */:
74
- {
75
- const elements = tsplus_module_4.map(e => goMemo(e.type, isDecoding))(ast.elements);
76
- const rest = tsplus_module_5.map(rest => tsplus_module_4.map(ast => goMemo(ast, isDecoding))(rest))(ast.rest);
77
- return tsplus_module_2.make((input, options) => {
78
- if (!Array.isArray(input)) {
79
- return tsplus_module_3.fail(tsplus_module_7.typeError(tsplus_module_6.unknownArray, input));
80
- }
81
- const output = [];
82
- const errors = tsplus_module_4.emptyPushable();
83
- const allErrors = options?.allErrors;
84
- let i = 0;
85
- for (; i < elements.length; i++) {
86
- if (input.length < i + 1) {
87
- if (!tsplus_module_4.unsafeGet(i)(ast.elements).isOptional) {
88
- const e = tsplus_module_7.indexError(i, tsplus_module_7.missingError);
89
- if (allErrors) {
90
- tsplus_module_8.push(e)(errors);
91
- continue;
92
- } else {
93
- return tsplus_module_3.fail(tsplus_module_7.tupleError(ast, input, tsplus_module_4.vector(e), output));
94
- }
95
- }
96
- } else {
97
- const parser = tsplus_module_4.unsafeGet(i)(elements);
98
- const t = parser(input[i], options);
99
- void 0;
100
- if (tsplus_module_1.isLeft(t)) {
101
- const e = tsplus_module_7.indexError(i, t.left);
102
- if (allErrors) {
103
- tsplus_module_8.push(e)(errors);
104
- continue;
105
- } else {
106
- return tsplus_module_3.fail(tsplus_module_7.tupleError(ast, input, tsplus_module_4.vector(e), output));
107
- }
108
- }
109
- output.push(t.right);
110
- }
111
- }
112
- if (tsplus_module_9.isJust(rest)) {
113
- const head = tsplus_module_4.unsafeHead(rest.value);
114
- const tail = tsplus_module_4.tail(rest.value);
115
- for (; i < input.length - tail.length; i++) {
116
- const t = head(input[i], options);
117
- void 0;
118
- if (tsplus_module_1.isLeft(t)) {
119
- const e = tsplus_module_7.indexError(i, t.left);
120
- if (allErrors) {
121
- tsplus_module_8.push(e)(errors);
122
- continue;
123
- } else {
124
- return tsplus_module_3.fail(tsplus_module_7.tupleError(ast, input, tsplus_module_4.vector(e), output));
125
- }
126
- }
127
- output.push(t.right);
128
- }
129
- for (let j = 0; j < tail.length; j++) {
130
- i += j;
131
- if (input.length < i + 1) {
132
- const e = tsplus_module_7.indexError(i, tsplus_module_7.missingError);
133
- if (allErrors) {
134
- tsplus_module_8.push(e)(errors);
135
- continue;
136
- } else {
137
- return tsplus_module_3.fail(tsplus_module_7.tupleError(ast, input, tsplus_module_4.vector(e), output));
138
- }
139
- } else {
140
- const t = tsplus_module_4.unsafeGet(j)(tail)(input[i], options);
141
- void 0;
142
- if (tsplus_module_1.isLeft(t)) {
143
- const e = tsplus_module_7.indexError(i, t.left);
144
- if (allErrors) {
145
- tsplus_module_8.push(e)(errors);
146
- continue;
147
- } else {
148
- return tsplus_module_3.fail(tsplus_module_7.tupleError(ast, input, tsplus_module_4.vector(e), output));
149
- }
150
- }
151
- output.push(t.right);
152
- }
153
- }
154
- } else {
155
- const isUnexpectedAllowed = options?.isUnexpectedAllowed;
156
- for (; i < input.length; i++) {
157
- const e = tsplus_module_7.indexError(i, tsplus_module_7.unexpectedError(input[i]));
158
- if (!isUnexpectedAllowed) {
159
- if (allErrors) {
160
- tsplus_module_8.push(e)(errors);
161
- continue;
162
- } else {
163
- return tsplus_module_3.fail(tsplus_module_7.tupleError(ast, input, tsplus_module_4.vector(e), output));
164
- }
165
- }
166
- }
167
- }
168
- return tsplus_module_4.isNonEmpty(errors) ? tsplus_module_3.fail(tsplus_module_7.tupleError(ast, input, errors, output)) : tsplus_module_3.succeed(output);
169
- });
170
- }
171
- case 17 /* ASTTag.TypeLiteral */:
172
- {
173
- if (ast.propertySignatures.length === 0 && ast.indexSignatures.length === 0) {
174
- return tsplus_module_2.fromRefinement(ast, u => u !== null);
175
- }
176
- const propertySignatureTypes = tsplus_module_4.map(f => goMemo(f.type, isDecoding))(ast.propertySignatures);
177
- const indexSignatures = tsplus_module_4.map(is => [goMemo(is.parameter, isDecoding), goMemo(is.type, isDecoding)])(ast.indexSignatures);
178
- return tsplus_module_2.make((input, options) => {
179
- if (!(0, _predicates.isRecord)(input)) {
180
- return tsplus_module_3.fail(tsplus_module_7.typeError(tsplus_module_6.unknownRecord, input));
181
- }
182
- const output = {};
183
- const expectedKeys = {};
184
- const errors = tsplus_module_4.emptyPushable();
185
- const allErrors = options?.allErrors;
186
- for (let i = 0; i < propertySignatureTypes.length; i++) {
187
- const ps = tsplus_module_4.unsafeGet(i)(ast.propertySignatures);
188
- const parser = tsplus_module_4.unsafeGet(i)(propertySignatureTypes);
189
- const name = ps.name;
190
- expectedKeys[name] = null;
191
- if (!Object.prototype.hasOwnProperty.call(input, name)) {
192
- if (!ps.isOptional) {
193
- const e = tsplus_module_7.keyError(tsplus_module_6.createKey(name), name, tsplus_module_7.missingError);
194
- if (allErrors) {
195
- tsplus_module_8.push(e)(errors);
196
- continue;
197
- } else {
198
- return tsplus_module_3.fail(tsplus_module_7.typeLiteralError(ast, input, tsplus_module_4.vector(e), output));
199
- }
200
- }
201
- } else {
202
- const t = parser(input[name], options);
203
- void 0;
204
- if (tsplus_module_1.isLeft(t)) {
205
- const e = tsplus_module_7.keyError(tsplus_module_6.createKey(name), name, t.left);
206
- if (allErrors) {
207
- tsplus_module_8.push(e)(errors);
208
- continue;
209
- } else {
210
- return tsplus_module_3.fail(tsplus_module_7.typeLiteralError(ast, input, tsplus_module_4.vector(e), output));
211
- }
212
- }
213
- output[name] = t.right;
214
- }
215
- }
216
- if (indexSignatures.length > 0) {
217
- for (let i = 0; i < indexSignatures.length; i++) {
218
- const [parameter, type] = tsplus_module_4.unsafeGet(i)(indexSignatures);
219
- const keys = (0, _utils.getKeysForIndexSignature)(input, tsplus_module_4.unsafeGet(i)(ast.indexSignatures).parameter);
220
- for (const key of keys) {
221
- if (Object.prototype.hasOwnProperty.call(expectedKeys, key)) {
222
- continue;
223
- }
224
- let t = parameter(key, options);
225
- void 0;
226
- if (tsplus_module_1.isLeft(t)) {
227
- const e = tsplus_module_7.keyError(tsplus_module_6.createKey(key), key, t.left);
228
- if (allErrors) {
229
- tsplus_module_8.push(e)(errors);
230
- continue;
231
- } else {
232
- return tsplus_module_3.fail(tsplus_module_7.typeLiteralError(ast, input, tsplus_module_4.vector(e), output));
233
- }
234
- }
235
- t = type(input[key], options);
236
- void 0;
237
- if (tsplus_module_1.isLeft(t)) {
238
- const e = tsplus_module_7.keyError(tsplus_module_6.createKey(key), key, t.left);
239
- tsplus_module_8.push(e)(errors);
240
- if (allErrors) {
241
- continue;
242
- } else {
243
- return tsplus_module_3.fail(tsplus_module_7.typeLiteralError(ast, input, tsplus_module_4.vector(e), output));
244
- }
245
- }
246
- output[key] = t.right;
247
- }
248
- }
249
- } else {
250
- const isUnexpectedAllowed = options?.isUnexpectedAllowed;
251
- for (const key of (0, _utils.ownKeys)(input)) {
252
- if (!Object.prototype.hasOwnProperty.call(expectedKeys, key)) {
253
- if (!isUnexpectedAllowed) {
254
- const e = tsplus_module_7.keyError(tsplus_module_6.createKey(key), key, tsplus_module_7.unexpectedError(input[key]));
255
- if (allErrors) {
256
- tsplus_module_8.push(e)(errors);
257
- continue;
258
- } else {
259
- return tsplus_module_3.fail(tsplus_module_7.typeLiteralError(ast, input, tsplus_module_4.vector(e), output));
260
- }
261
- }
262
- }
263
- }
264
- }
265
- return tsplus_module_4.isNonEmpty(errors) ? tsplus_module_3.fail(tsplus_module_7.typeLiteralError(ast, input, errors, output)) : tsplus_module_3.succeed(output);
266
- });
267
- }
268
- case 18 /* ASTTag.Union */:
269
- {
270
- const searchTree = (0, _AST2.getSearchTree)(ast.types, isDecoding);
271
- const ownKeys = Reflect.ownKeys(searchTree.keys);
272
- const len = ownKeys.length;
273
- const map = new Map();
274
- tsplus_module_4.forEach(ast => {
275
- map.set(ast, goMemo(ast, isDecoding));
276
- })(ast.types);
277
- return tsplus_module_2.make((input, options) => {
278
- const errors = tsplus_module_4.emptyPushable();
279
- let candidates = [];
280
- if (len > 0) {
281
- if ((0, _predicates.isRecord)(input)) {
282
- for (let i = 0; i < len; i++) {
283
- const name = ownKeys[i];
284
- const buckets = searchTree.keys[name].buckets;
285
- if (Object.prototype.hasOwnProperty.call(input, name)) {
286
- const literal = String(input[name]);
287
- if (Object.prototype.hasOwnProperty.call(buckets, literal)) {
288
- candidates = candidates.concat(buckets[literal]);
289
- } else {
290
- const literals = tsplus_module_6.createUnion(tsplus_module_4.from(searchTree.keys[name].literals));
291
- tsplus_module_8.push(tsplus_module_7.typeLiteralError(tsplus_module_6.createTypeLiteral(tsplus_module_4.vector(tsplus_module_6.createPropertySignature(name, literals, false, true)), tsplus_module_4.vector()), input, tsplus_module_4.vector(tsplus_module_7.keyError(tsplus_module_6.createKey(name), name, tsplus_module_7.typeError(searchTree.keys[name].ast, input[name])))))(errors);
292
- }
293
- } else {
294
- const literals = tsplus_module_6.createUnion(tsplus_module_4.from(searchTree.keys[name].literals));
295
- tsplus_module_8.push(tsplus_module_7.typeLiteralError(tsplus_module_6.createTypeLiteral(tsplus_module_4.vector(tsplus_module_6.createPropertySignature(name, literals, false, true)), tsplus_module_4.vector()), input, tsplus_module_4.vector(tsplus_module_7.keyError(tsplus_module_6.createKey(name), name, tsplus_module_7.missingError))))(errors);
296
- }
297
- }
298
- } else {
299
- tsplus_module_8.push(tsplus_module_7.typeError(tsplus_module_6.unknownRecord, input))(errors);
300
- }
301
- }
302
- if (searchTree.otherwise.length > 0) {
303
- candidates = candidates.concat(searchTree.otherwise);
304
- }
305
- for (let i = 0; i < candidates.length; i++) {
306
- const candidate = candidates[i];
307
- const pr = map.get(candidate)(input, options);
308
- void 0;
309
- if (tsplus_module_1.isRight(pr)) {
310
- return pr;
311
- } else {
312
- tsplus_module_8.push(tsplus_module_7.unionMemberError(candidate, pr.left))(errors);
313
- }
314
- }
315
- return tsplus_module_4.isNonEmpty(errors) ? errors.length === 1 && tsplus_module_4.unsafeGet(0)(errors)._tag === 1 /* ParseErrorTag.Type */ ? tsplus_module_3.fail(tsplus_module_4.unsafeGet(0)(errors)) : tsplus_module_3.fail(tsplus_module_7.unionError(ast, input, tsplus_module_4.from(errors))) : tsplus_module_3.fail(tsplus_module_7.typeError(tsplus_module_6.neverKeyword, input));
316
- });
317
- }
318
- case 19 /* ASTTag.Lazy */:
319
- {
320
- const f = () => goMemo(ast.getAST(), isDecoding);
321
- const get = (0, _utils.memoize)(f);
322
- return tsplus_module_2.make((a, options) => get()(a, options));
323
- }
324
- case 20 /* ASTTag.Refinement */:
325
- {
326
- if (isDecoding) {
327
- const from = goMemo(ast.from, isDecoding);
328
- return tsplus_module_2.make((input, options) => tsplus_module_1.flatMap(a => tsplus_module_1.mapLeft(failure => tsplus_module_7.refinementError(ast, input, "Predicate", failure))(ast.decode(a, options)))(tsplus_module_1.mapLeft(failure => tsplus_module_7.refinementError(ast, input, "From", failure))(from(input, options))));
329
- } else {
330
- const from = goMemo(ast.from, true);
331
- const to = goMemo(tsplus_module_6.getTo(ast.from), false);
332
- return tsplus_module_2.make((input, options) => tsplus_module_1.flatMap(a => from(a, options))(tsplus_module_1.flatMap(a => ast.decode(a, options))(to(input, options))));
333
- }
334
- }
335
- case 21 /* ASTTag.Transform */:
336
- {
337
- const transformation = isDecoding ? ast.decode : ast.encode;
338
- const from = isDecoding ? goMemo(ast.from, true) : goMemo(ast.to, false);
339
- const to = isDecoding ? goMemo(ast.to, true) : goMemo(ast.from, false);
340
- return tsplus_module_2.make((input, options) => tsplus_module_1.flatMap(a => tsplus_module_1.mapLeft(failure => tsplus_module_7.transformationError(ast, input, isDecoding ? "Type" : "Encoded", failure))(to(a, options)))(tsplus_module_1.flatMap(a => tsplus_module_1.mapLeft(failure => tsplus_module_7.transformationError(ast, input, "Transformation", failure))(transformation(a, options)))(tsplus_module_1.mapLeft(failure => tsplus_module_7.transformationError(ast, input, isDecoding ? "Encoded" : "Type", failure))(from(input, options)))));
341
- }
342
- case 22 /* ASTTag.Validation */:
343
- {
344
- return tsplus_module_2.make((u, options) => {
345
- const missedBrands = tsplus_module_4.emptyPushable();
346
- const allErrors = options?.allErrors;
347
- for (const validation of ast.validation) {
348
- if (!validation.validate(u)) {
349
- tsplus_module_8.push(validation)(missedBrands);
350
- if (allErrors) {
351
- continue;
352
- } else {
353
- return tsplus_module_3.fail(tsplus_module_7.typeError(tsplus_module_6.createValidation(ast.from, missedBrands, ast.annotations), u));
354
- }
355
- }
356
- }
357
- return missedBrands.length > 0 ? tsplus_module_3.fail(tsplus_module_7.typeError(tsplus_module_6.createValidation(ast.from, missedBrands, ast.annotations), u)) : tsplus_module_3.succeed(u);
358
- });
359
- }
360
- }
38
+ switch (ast._tag) {
39
+ case 0: {
40
+ const parse = isDecoding ? ast.decode(...ast.typeParameters) : ast.encode(...ast.typeParameters);
41
+ return _fncts_schema_Parser_definition.make((input, options) => _fncts_base_data_Either_api.mapLeft((error) => new require_ParseError_ParseError.DeclarationError(ast, input, error))(parse(input, options)));
42
+ }
43
+ case 1: return _fncts_schema_Parser_definition.fromRefinement(ast, (u) => u === ast.literal);
44
+ case 2: return _fncts_schema_Parser_definition.fromRefinement(ast, (u) => u === ast.symbol);
45
+ case 3:
46
+ case 4: return _fncts_schema_Parser_definition.fromRefinement(ast, _fncts_base_util_predicates.isUndefined);
47
+ case 5: return _fncts_schema_Parser_definition.fromRefinement(ast, (_) => false);
48
+ case 6:
49
+ case 7: return _fncts_schema_Parser_definition.make(_fncts_schema_ParseResult.succeed);
50
+ case 8: return _fncts_schema_Parser_definition.fromRefinement(ast, _fncts_base_util_predicates.isString);
51
+ case 9: return _fncts_schema_Parser_definition.fromRefinement(ast, _fncts_base_util_predicates.isNumber);
52
+ case 10: return _fncts_schema_Parser_definition.fromRefinement(ast, _fncts_base_util_predicates.isBoolean);
53
+ case 11: return _fncts_schema_Parser_definition.fromRefinement(ast, _fncts_base_util_predicates.isBigInt);
54
+ case 12: return _fncts_schema_Parser_definition.fromRefinement(ast, _fncts_base_util_predicates.isSymbol);
55
+ case 13: return _fncts_schema_Parser_definition.fromRefinement(ast, _fncts_base_util_predicates.isObject);
56
+ case 14: return _fncts_schema_Parser_definition.fromRefinement(ast, (u) => _fncts_base_collection_immutable_Vector_api.some(([_, value]) => value === u)(ast.enums));
57
+ case 15: {
58
+ const regex = require_utils.getTemplateLiteralRegex(ast);
59
+ return _fncts_schema_Parser_definition.fromRefinement(ast, (u) => (0, _fncts_base_util_predicates.isString)(u) && regex.test(u));
60
+ }
61
+ case 16: {
62
+ const elements = _fncts_base_collection_immutable_Vector_api.map((e) => goMemo(e.type, isDecoding))(ast.elements);
63
+ const rest = _fncts_base_data_Maybe_api.map((rest) => _fncts_base_collection_immutable_Vector_api.map((ast) => goMemo(ast, isDecoding))(rest))(ast.rest);
64
+ return _fncts_schema_Parser_definition.make((input, options) => {
65
+ if (!Array.isArray(input)) return _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.typeError(_fncts_schema_AST.unknownArray, input));
66
+ const output = [];
67
+ const errors = _fncts_base_collection_immutable_Vector_api.emptyPushable();
68
+ const allErrors = options?.allErrors;
69
+ let i = 0;
70
+ for (; i < elements.length; i++) if (input.length < i + 1) {
71
+ if (!_fncts_base_collection_immutable_Vector_api.unsafeGet(i)(ast.elements).isOptional) {
72
+ const e = _fncts_schema_ParseError_ParseError.indexError(i, _fncts_schema_ParseError_ParseError.missingError);
73
+ if (allErrors) {
74
+ _fncts_base_collection_immutable_Vector_internal.push(e)(errors);
75
+ continue;
76
+ } else return _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.tupleError(ast, input, _fncts_base_collection_immutable_Vector_api.vector(e), output));
77
+ }
78
+ } else {
79
+ const t = _fncts_base_collection_immutable_Vector_api.unsafeGet(i)(elements)(input[i], options);
80
+ if (_fncts_base_data_Either_api.isLeft(t)) {
81
+ const e = _fncts_schema_ParseError_ParseError.indexError(i, t.left);
82
+ if (allErrors) {
83
+ _fncts_base_collection_immutable_Vector_internal.push(e)(errors);
84
+ continue;
85
+ } else return _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.tupleError(ast, input, _fncts_base_collection_immutable_Vector_api.vector(e), output));
86
+ }
87
+ output.push(t.right);
88
+ }
89
+ if (_fncts_base_data_Maybe_definition.isJust(rest)) {
90
+ const head = _fncts_base_collection_immutable_Vector_api.unsafeHead(rest.value);
91
+ const tail = _fncts_base_collection_immutable_Vector_api.tail(rest.value);
92
+ for (; i < input.length - tail.length; i++) {
93
+ const t = head(input[i], options);
94
+ if (_fncts_base_data_Either_api.isLeft(t)) {
95
+ const e = _fncts_schema_ParseError_ParseError.indexError(i, t.left);
96
+ if (allErrors) {
97
+ _fncts_base_collection_immutable_Vector_internal.push(e)(errors);
98
+ continue;
99
+ } else return _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.tupleError(ast, input, _fncts_base_collection_immutable_Vector_api.vector(e), output));
100
+ }
101
+ output.push(t.right);
102
+ }
103
+ for (let j = 0; j < tail.length; j++) {
104
+ i += j;
105
+ if (input.length < i + 1) {
106
+ const e = _fncts_schema_ParseError_ParseError.indexError(i, _fncts_schema_ParseError_ParseError.missingError);
107
+ if (allErrors) {
108
+ _fncts_base_collection_immutable_Vector_internal.push(e)(errors);
109
+ continue;
110
+ } else return _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.tupleError(ast, input, _fncts_base_collection_immutable_Vector_api.vector(e), output));
111
+ } else {
112
+ const t = _fncts_base_collection_immutable_Vector_api.unsafeGet(j)(tail)(input[i], options);
113
+ if (_fncts_base_data_Either_api.isLeft(t)) {
114
+ const e = _fncts_schema_ParseError_ParseError.indexError(i, t.left);
115
+ if (allErrors) {
116
+ _fncts_base_collection_immutable_Vector_internal.push(e)(errors);
117
+ continue;
118
+ } else return _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.tupleError(ast, input, _fncts_base_collection_immutable_Vector_api.vector(e), output));
119
+ }
120
+ output.push(t.right);
121
+ }
122
+ }
123
+ } else {
124
+ const isUnexpectedAllowed = options?.isUnexpectedAllowed;
125
+ for (; i < input.length; i++) {
126
+ const e = _fncts_schema_ParseError_ParseError.indexError(i, _fncts_schema_ParseError_ParseError.unexpectedError(input[i]));
127
+ if (!isUnexpectedAllowed) if (allErrors) {
128
+ _fncts_base_collection_immutable_Vector_internal.push(e)(errors);
129
+ continue;
130
+ } else return _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.tupleError(ast, input, _fncts_base_collection_immutable_Vector_api.vector(e), output));
131
+ }
132
+ }
133
+ return _fncts_base_collection_immutable_Vector_api.isNonEmpty(errors) ? _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.tupleError(ast, input, errors, output)) : _fncts_schema_ParseResult.succeed(output);
134
+ });
135
+ }
136
+ case 17: {
137
+ if (ast.propertySignatures.length === 0 && ast.indexSignatures.length === 0) return _fncts_schema_Parser_definition.fromRefinement(ast, (u) => u !== null);
138
+ const propertySignatureTypes = _fncts_base_collection_immutable_Vector_api.map((f) => goMemo(f.type, isDecoding))(ast.propertySignatures);
139
+ const indexSignatures = _fncts_base_collection_immutable_Vector_api.map((is) => [goMemo(is.parameter, isDecoding), goMemo(is.type, isDecoding)])(ast.indexSignatures);
140
+ return _fncts_schema_Parser_definition.make((input, options) => {
141
+ if (!(0, _fncts_base_util_predicates.isRecord)(input)) return _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.typeError(_fncts_schema_AST.unknownRecord, input));
142
+ const output = {};
143
+ const expectedKeys = {};
144
+ const errors = _fncts_base_collection_immutable_Vector_api.emptyPushable();
145
+ const allErrors = options?.allErrors;
146
+ for (let i = 0; i < propertySignatureTypes.length; i++) {
147
+ const ps = _fncts_base_collection_immutable_Vector_api.unsafeGet(i)(ast.propertySignatures);
148
+ const parser = _fncts_base_collection_immutable_Vector_api.unsafeGet(i)(propertySignatureTypes);
149
+ const name = ps.name;
150
+ expectedKeys[name] = null;
151
+ if (!Object.prototype.hasOwnProperty.call(input, name)) {
152
+ if (!ps.isOptional) {
153
+ const e = _fncts_schema_ParseError_ParseError.keyError(_fncts_schema_AST.createKey(name), name, _fncts_schema_ParseError_ParseError.missingError);
154
+ if (allErrors) {
155
+ _fncts_base_collection_immutable_Vector_internal.push(e)(errors);
156
+ continue;
157
+ } else return _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.typeLiteralError(ast, input, _fncts_base_collection_immutable_Vector_api.vector(e), output));
158
+ }
159
+ } else {
160
+ const t = parser(input[name], options);
161
+ if (_fncts_base_data_Either_api.isLeft(t)) {
162
+ const e = _fncts_schema_ParseError_ParseError.keyError(_fncts_schema_AST.createKey(name), name, t.left);
163
+ if (allErrors) {
164
+ _fncts_base_collection_immutable_Vector_internal.push(e)(errors);
165
+ continue;
166
+ } else return _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.typeLiteralError(ast, input, _fncts_base_collection_immutable_Vector_api.vector(e), output));
167
+ }
168
+ output[name] = t.right;
169
+ }
170
+ }
171
+ if (indexSignatures.length > 0) for (let i = 0; i < indexSignatures.length; i++) {
172
+ const [parameter, type] = _fncts_base_collection_immutable_Vector_api.unsafeGet(i)(indexSignatures);
173
+ const keys = require_utils.getKeysForIndexSignature(input, _fncts_base_collection_immutable_Vector_api.unsafeGet(i)(ast.indexSignatures).parameter);
174
+ for (const key of keys) {
175
+ if (Object.prototype.hasOwnProperty.call(expectedKeys, key)) continue;
176
+ let t = parameter(key, options);
177
+ if (_fncts_base_data_Either_api.isLeft(t)) {
178
+ const e = _fncts_schema_ParseError_ParseError.keyError(_fncts_schema_AST.createKey(key), key, t.left);
179
+ if (allErrors) {
180
+ _fncts_base_collection_immutable_Vector_internal.push(e)(errors);
181
+ continue;
182
+ } else return _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.typeLiteralError(ast, input, _fncts_base_collection_immutable_Vector_api.vector(e), output));
183
+ }
184
+ t = type(input[key], options);
185
+ if (_fncts_base_data_Either_api.isLeft(t)) {
186
+ const e = _fncts_schema_ParseError_ParseError.keyError(_fncts_schema_AST.createKey(key), key, t.left);
187
+ _fncts_base_collection_immutable_Vector_internal.push(e)(errors);
188
+ if (allErrors) continue;
189
+ else return _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.typeLiteralError(ast, input, _fncts_base_collection_immutable_Vector_api.vector(e), output));
190
+ }
191
+ output[key] = t.right;
192
+ }
193
+ }
194
+ else {
195
+ const isUnexpectedAllowed = options?.isUnexpectedAllowed;
196
+ for (const key of require_utils.ownKeys(input)) if (!Object.prototype.hasOwnProperty.call(expectedKeys, key)) {
197
+ if (!isUnexpectedAllowed) {
198
+ const e = _fncts_schema_ParseError_ParseError.keyError(_fncts_schema_AST.createKey(key), key, _fncts_schema_ParseError_ParseError.unexpectedError(input[key]));
199
+ if (allErrors) {
200
+ _fncts_base_collection_immutable_Vector_internal.push(e)(errors);
201
+ continue;
202
+ } else return _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.typeLiteralError(ast, input, _fncts_base_collection_immutable_Vector_api.vector(e), output));
203
+ }
204
+ }
205
+ }
206
+ return _fncts_base_collection_immutable_Vector_api.isNonEmpty(errors) ? _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.typeLiteralError(ast, input, errors, output)) : _fncts_schema_ParseResult.succeed(output);
207
+ });
208
+ }
209
+ case 18: {
210
+ const searchTree = require_AST.getSearchTree(ast.types, isDecoding);
211
+ const ownKeys = Reflect.ownKeys(searchTree.keys);
212
+ const len = ownKeys.length;
213
+ const map = /* @__PURE__ */ new Map();
214
+ _fncts_base_collection_immutable_Vector_api.forEach((ast) => {
215
+ map.set(ast, goMemo(ast, isDecoding));
216
+ })(ast.types);
217
+ return _fncts_schema_Parser_definition.make((input, options) => {
218
+ const errors = _fncts_base_collection_immutable_Vector_api.emptyPushable();
219
+ let candidates = [];
220
+ if (len > 0) if ((0, _fncts_base_util_predicates.isRecord)(input)) for (let i = 0; i < len; i++) {
221
+ const name = ownKeys[i];
222
+ const buckets = searchTree.keys[name].buckets;
223
+ if (Object.prototype.hasOwnProperty.call(input, name)) {
224
+ const literal = String(input[name]);
225
+ if (Object.prototype.hasOwnProperty.call(buckets, literal)) candidates = candidates.concat(buckets[literal]);
226
+ else {
227
+ const literals = _fncts_schema_AST.createUnion(_fncts_base_collection_immutable_Vector_api.from(searchTree.keys[name].literals));
228
+ _fncts_base_collection_immutable_Vector_internal.push(_fncts_schema_ParseError_ParseError.typeLiteralError(_fncts_schema_AST.createTypeLiteral(_fncts_base_collection_immutable_Vector_api.vector(_fncts_schema_AST.createPropertySignature(name, literals, false, true)), _fncts_base_collection_immutable_Vector_api.vector()), input, _fncts_base_collection_immutable_Vector_api.vector(_fncts_schema_ParseError_ParseError.keyError(_fncts_schema_AST.createKey(name), name, _fncts_schema_ParseError_ParseError.typeError(searchTree.keys[name].ast, input[name])))))(errors);
229
+ }
230
+ } else {
231
+ const literals = _fncts_schema_AST.createUnion(_fncts_base_collection_immutable_Vector_api.from(searchTree.keys[name].literals));
232
+ _fncts_base_collection_immutable_Vector_internal.push(_fncts_schema_ParseError_ParseError.typeLiteralError(_fncts_schema_AST.createTypeLiteral(_fncts_base_collection_immutable_Vector_api.vector(_fncts_schema_AST.createPropertySignature(name, literals, false, true)), _fncts_base_collection_immutable_Vector_api.vector()), input, _fncts_base_collection_immutable_Vector_api.vector(_fncts_schema_ParseError_ParseError.keyError(_fncts_schema_AST.createKey(name), name, _fncts_schema_ParseError_ParseError.missingError))))(errors);
233
+ }
234
+ }
235
+ else _fncts_base_collection_immutable_Vector_internal.push(_fncts_schema_ParseError_ParseError.typeError(_fncts_schema_AST.unknownRecord, input))(errors);
236
+ if (searchTree.otherwise.length > 0) candidates = candidates.concat(searchTree.otherwise);
237
+ for (let i = 0; i < candidates.length; i++) {
238
+ const candidate = candidates[i];
239
+ const pr = map.get(candidate)(input, options);
240
+ if (_fncts_base_data_Either_api.isRight(pr)) return pr;
241
+ else _fncts_base_collection_immutable_Vector_internal.push(_fncts_schema_ParseError_ParseError.unionMemberError(candidate, pr.left))(errors);
242
+ }
243
+ return _fncts_base_collection_immutable_Vector_api.isNonEmpty(errors) ? errors.length === 1 && _fncts_base_collection_immutable_Vector_api.unsafeGet(0)(errors)._tag === 1 ? _fncts_schema_ParseResult.fail(_fncts_base_collection_immutable_Vector_api.unsafeGet(0)(errors)) : _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.unionError(ast, input, _fncts_base_collection_immutable_Vector_api.from(errors))) : _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.typeError(_fncts_schema_AST.neverKeyword, input));
244
+ });
245
+ }
246
+ case 19: {
247
+ const f = () => goMemo(ast.getAST(), isDecoding);
248
+ const get = require_utils.memoize(f);
249
+ return _fncts_schema_Parser_definition.make((a, options) => get()(a, options));
250
+ }
251
+ case 20: if (isDecoding) {
252
+ const from = goMemo(ast.from, isDecoding);
253
+ return _fncts_schema_Parser_definition.make((input, options) => _fncts_base_data_Either_api.flatMap((a) => _fncts_base_data_Either_api.mapLeft((failure) => _fncts_schema_ParseError_ParseError.refinementError(ast, input, "Predicate", failure))(ast.decode(a, options)))(_fncts_base_data_Either_api.mapLeft((failure) => _fncts_schema_ParseError_ParseError.refinementError(ast, input, "From", failure))(from(input, options))));
254
+ } else {
255
+ const from = goMemo(ast.from, true);
256
+ const to = goMemo(_fncts_schema_AST.getTo(ast.from), false);
257
+ return _fncts_schema_Parser_definition.make((input, options) => _fncts_base_data_Either_api.flatMap((a) => from(a, options))(_fncts_base_data_Either_api.flatMap((a) => ast.decode(a, options))(to(input, options))));
258
+ }
259
+ case 21: {
260
+ const transformation = isDecoding ? ast.decode : ast.encode;
261
+ const from = isDecoding ? goMemo(ast.from, true) : goMemo(ast.to, false);
262
+ const to = isDecoding ? goMemo(ast.to, true) : goMemo(ast.from, false);
263
+ return _fncts_schema_Parser_definition.make((input, options) => _fncts_base_data_Either_api.flatMap((a) => _fncts_base_data_Either_api.mapLeft((failure) => _fncts_schema_ParseError_ParseError.transformationError(ast, input, isDecoding ? "Type" : "Encoded", failure))(to(a, options)))(_fncts_base_data_Either_api.flatMap((a) => _fncts_base_data_Either_api.mapLeft((failure) => _fncts_schema_ParseError_ParseError.transformationError(ast, input, "Transformation", failure))(transformation(a, options)))(_fncts_base_data_Either_api.mapLeft((failure) => _fncts_schema_ParseError_ParseError.transformationError(ast, input, isDecoding ? "Encoded" : "Type", failure))(from(input, options)))));
264
+ }
265
+ case 22: return _fncts_schema_Parser_definition.make((u, options) => {
266
+ const missedBrands = _fncts_base_collection_immutable_Vector_api.emptyPushable();
267
+ const allErrors = options?.allErrors;
268
+ for (const validation of ast.validation) if (!validation.validate(u)) {
269
+ _fncts_base_collection_immutable_Vector_internal.push(validation)(missedBrands);
270
+ if (allErrors) continue;
271
+ else return _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.typeError(_fncts_schema_AST.createValidation(ast.from, missedBrands, ast.annotations), u));
272
+ }
273
+ return missedBrands.length > 0 ? _fncts_schema_ParseResult.fail(_fncts_schema_ParseError_ParseError.typeError(_fncts_schema_AST.createValidation(ast.from, missedBrands, ast.annotations), u)) : _fncts_schema_ParseResult.succeed(u);
274
+ });
275
+ }
361
276
  }
362
277
  function parserFor(ast, isDecoding) {
363
- return goMemo(ast, isDecoding);
278
+ return goMemo(ast, isDecoding);
364
279
  }
280
+ //#endregion
281
+ exports.parserFor = parserFor;
282
+
365
283
  //# sourceMappingURL=interpreter.cjs.map