typia 7.0.0-dev.20240929 → 7.0.0-dev.20241001

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 (172) hide show
  1. package/lib/index.mjs +25 -25
  2. package/lib/index.mjs.map +1 -1
  3. package/lib/programmers/AssertProgrammer.js +34 -27
  4. package/lib/programmers/AssertProgrammer.js.map +1 -1
  5. package/lib/programmers/CheckerProgrammer.d.ts +5 -1
  6. package/lib/programmers/CheckerProgrammer.js +432 -348
  7. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  8. package/lib/programmers/FeatureProgrammer.d.ts +91 -28
  9. package/lib/programmers/FeatureProgrammer.js +165 -138
  10. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  11. package/lib/programmers/IsProgrammer.d.ts +5 -1
  12. package/lib/programmers/IsProgrammer.js +87 -66
  13. package/lib/programmers/IsProgrammer.js.map +1 -1
  14. package/lib/programmers/RandomProgrammer.js +83 -68
  15. package/lib/programmers/RandomProgrammer.js.map +1 -1
  16. package/lib/programmers/TypiaProgrammer.d.ts +2 -2
  17. package/lib/programmers/TypiaProgrammer.js +79 -75
  18. package/lib/programmers/TypiaProgrammer.js.map +1 -1
  19. package/lib/programmers/ValidateProgrammer.js +45 -19
  20. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  21. package/lib/programmers/helpers/CloneJoiner.js +4 -1
  22. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  23. package/lib/programmers/helpers/NotationJoiner.d.ts +2 -1
  24. package/lib/programmers/helpers/NotationJoiner.js +34 -33
  25. package/lib/programmers/helpers/NotationJoiner.js.map +1 -1
  26. package/lib/programmers/helpers/PruneJoiner.js +4 -1
  27. package/lib/programmers/helpers/PruneJoiner.js.map +1 -1
  28. package/lib/programmers/helpers/RandomJoiner.d.ts +1 -1
  29. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  30. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  31. package/lib/programmers/helpers/StringifyJoinder.js +4 -1
  32. package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
  33. package/lib/programmers/helpers/StringifyPredicator.d.ts +1 -1
  34. package/lib/programmers/helpers/StringifyPredicator.js +4 -3
  35. package/lib/programmers/helpers/StringifyPredicator.js.map +1 -1
  36. package/lib/programmers/helpers/UnionExplorer.d.ts +52 -12
  37. package/lib/programmers/helpers/UnionExplorer.js +184 -120
  38. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  39. package/lib/programmers/helpers/UnionPredicator.d.ts +1 -1
  40. package/lib/programmers/helpers/UnionPredicator.js +7 -7
  41. package/lib/programmers/http/HttpFormDataProgrammer.js +77 -70
  42. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  43. package/lib/programmers/http/HttpHeadersProgrammer.js +69 -68
  44. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  45. package/lib/programmers/http/HttpQueryProgrammer.js +69 -62
  46. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  47. package/lib/programmers/internal/application_escaped.js +4 -4
  48. package/lib/programmers/internal/application_escaped.js.map +1 -1
  49. package/lib/programmers/internal/application_templates.js +8 -2
  50. package/lib/programmers/internal/application_templates.js.map +1 -1
  51. package/lib/programmers/internal/application_union_discriminator.d.ts +1 -1
  52. package/lib/programmers/internal/application_union_discriminator.js +6 -6
  53. package/lib/programmers/internal/application_union_discriminator.js.map +1 -1
  54. package/lib/programmers/internal/application_v30_object.js +6 -3
  55. package/lib/programmers/internal/application_v30_object.js.map +1 -1
  56. package/lib/programmers/internal/application_v31_object.js +4 -1
  57. package/lib/programmers/internal/application_v31_object.js.map +1 -1
  58. package/lib/programmers/internal/check_array_length.js +21 -26
  59. package/lib/programmers/internal/check_array_length.js.map +1 -1
  60. package/lib/programmers/internal/check_bigint.js +18 -26
  61. package/lib/programmers/internal/check_bigint.js.map +1 -1
  62. package/lib/programmers/internal/check_dynamic_key.d.ts +1 -5
  63. package/lib/programmers/internal/check_dynamic_key.js +109 -91
  64. package/lib/programmers/internal/check_dynamic_key.js.map +1 -1
  65. package/lib/programmers/internal/check_dynamic_properties.js +88 -90
  66. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  67. package/lib/programmers/internal/check_native.js +8 -5
  68. package/lib/programmers/internal/check_native.js.map +1 -1
  69. package/lib/programmers/internal/check_number.js +59 -65
  70. package/lib/programmers/internal/check_number.js.map +1 -1
  71. package/lib/programmers/internal/check_object.js +31 -22
  72. package/lib/programmers/internal/check_object.js.map +1 -1
  73. package/lib/programmers/internal/check_string.js +18 -26
  74. package/lib/programmers/internal/check_string.js.map +1 -1
  75. package/lib/programmers/internal/check_template.js +20 -21
  76. package/lib/programmers/internal/check_template.js.map +1 -1
  77. package/lib/programmers/internal/check_union_array_like.js +68 -53
  78. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  79. package/lib/programmers/internal/decode_union_object.js +59 -49
  80. package/lib/programmers/internal/decode_union_object.js.map +1 -1
  81. package/lib/programmers/internal/feature_object_entries.js +31 -33
  82. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  83. package/lib/programmers/internal/llm_schema_escaped.js +29 -11
  84. package/lib/programmers/internal/llm_schema_escaped.js.map +1 -1
  85. package/lib/programmers/internal/llm_schema_object.js +4 -1
  86. package/lib/programmers/internal/llm_schema_object.js.map +1 -1
  87. package/lib/programmers/internal/metadata_to_pattern.js +44 -41
  88. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
  89. package/lib/programmers/internal/postfix_of_tuple.d.ts +1 -1
  90. package/lib/programmers/internal/postfix_of_tuple.js +3 -0
  91. package/lib/programmers/internal/postfix_of_tuple.js.map +1 -1
  92. package/lib/programmers/internal/prune_object_properties.js +6 -3
  93. package/lib/programmers/internal/prune_object_properties.js.map +1 -1
  94. package/lib/programmers/internal/random_custom.js +8 -14
  95. package/lib/programmers/internal/random_custom.js.map +1 -1
  96. package/lib/programmers/internal/stringify_dynamic_properties.js +4 -1
  97. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  98. package/lib/programmers/internal/stringify_regular_properties.js +4 -4
  99. package/lib/programmers/internal/stringify_regular_properties.js.map +1 -1
  100. package/lib/programmers/internal/template_to_pattern.js +10 -5
  101. package/lib/programmers/internal/template_to_pattern.js.map +1 -1
  102. package/lib/programmers/internal/wrap_metadata_rest_tuple.d.ts +1 -2
  103. package/lib/programmers/internal/wrap_metadata_rest_tuple.js +3 -0
  104. package/lib/programmers/internal/wrap_metadata_rest_tuple.js.map +1 -1
  105. package/lib/programmers/json/JsonStringifyProgrammer.js +154 -91
  106. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  107. package/lib/programmers/misc/MiscCloneProgrammer.js +221 -154
  108. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  109. package/lib/programmers/misc/MiscPruneProgrammer.js +139 -89
  110. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  111. package/lib/programmers/notations/NotationGeneralProgrammer.d.ts +4 -1
  112. package/lib/programmers/notations/NotationGeneralProgrammer.js +257 -148
  113. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  114. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +32 -24
  115. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  116. package/lib/utils/NamingConvention/NamingConvention.js +41 -47
  117. package/lib/utils/NamingConvention/NamingConvention.js.map +1 -1
  118. package/package.json +1 -1
  119. package/src/programmers/AssertProgrammer.ts +44 -37
  120. package/src/programmers/CheckerProgrammer.ts +394 -358
  121. package/src/programmers/FeatureProgrammer.ts +327 -267
  122. package/src/programmers/IsProgrammer.ts +93 -76
  123. package/src/programmers/RandomProgrammer.ts +18 -9
  124. package/src/programmers/TypiaProgrammer.ts +48 -34
  125. package/src/programmers/ValidateProgrammer.ts +56 -29
  126. package/src/programmers/helpers/CloneJoiner.ts +4 -1
  127. package/src/programmers/helpers/NotationJoiner.ts +85 -83
  128. package/src/programmers/helpers/ProtobufUtil.ts +2 -2
  129. package/src/programmers/helpers/PruneJoiner.ts +4 -1
  130. package/src/programmers/helpers/RandomJoiner.ts +5 -2
  131. package/src/programmers/helpers/RandomRanger.ts +8 -1
  132. package/src/programmers/helpers/StringifyJoinder.ts +4 -1
  133. package/src/programmers/helpers/StringifyPredicator.ts +4 -3
  134. package/src/programmers/helpers/UnionExplorer.ts +277 -179
  135. package/src/programmers/helpers/UnionPredicator.ts +5 -5
  136. package/src/programmers/http/HttpFormDataProgrammer.ts +135 -114
  137. package/src/programmers/http/HttpHeadersProgrammer.ts +145 -120
  138. package/src/programmers/http/HttpQueryProgrammer.ts +137 -116
  139. package/src/programmers/internal/application_escaped.ts +6 -6
  140. package/src/programmers/internal/application_templates.ts +8 -6
  141. package/src/programmers/internal/application_union_discriminator.ts +6 -6
  142. package/src/programmers/internal/application_v30_object.ts +6 -3
  143. package/src/programmers/internal/application_v31_object.ts +4 -1
  144. package/src/programmers/internal/application_v31_tuple.ts +1 -1
  145. package/src/programmers/internal/check_array_length.ts +31 -30
  146. package/src/programmers/internal/check_bigint.ts +31 -31
  147. package/src/programmers/internal/check_dynamic_key.ts +155 -126
  148. package/src/programmers/internal/check_dynamic_properties.ts +152 -154
  149. package/src/programmers/internal/check_native.ts +11 -5
  150. package/src/programmers/internal/check_number.ts +88 -84
  151. package/src/programmers/internal/check_object.ts +45 -31
  152. package/src/programmers/internal/check_string.ts +31 -30
  153. package/src/programmers/internal/check_template.ts +34 -32
  154. package/src/programmers/internal/check_union_array_like.ts +245 -228
  155. package/src/programmers/internal/decode_union_object.ts +92 -75
  156. package/src/programmers/internal/feature_object_entries.ts +36 -36
  157. package/src/programmers/internal/llm_schema_escaped.ts +36 -13
  158. package/src/programmers/internal/llm_schema_object.ts +4 -1
  159. package/src/programmers/internal/metadata_to_pattern.ts +31 -23
  160. package/src/programmers/internal/postfix_of_tuple.ts +3 -0
  161. package/src/programmers/internal/prune_object_properties.ts +6 -3
  162. package/src/programmers/internal/random_custom.ts +24 -23
  163. package/src/programmers/internal/stringify_dynamic_properties.ts +4 -1
  164. package/src/programmers/internal/stringify_regular_properties.ts +7 -7
  165. package/src/programmers/internal/template_to_pattern.ts +12 -4
  166. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +3 -0
  167. package/src/programmers/json/JsonStringifyProgrammer.ts +151 -104
  168. package/src/programmers/misc/MiscCloneProgrammer.ts +255 -204
  169. package/src/programmers/misc/MiscPruneProgrammer.ts +149 -116
  170. package/src/programmers/notations/NotationGeneralProgrammer.ts +307 -211
  171. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +25 -21
  172. package/src/utils/NamingConvention/NamingConvention.ts +40 -42
@@ -85,7 +85,13 @@ var CheckerProgrammer;
85
85
  return FeatureProgrammer_1.FeatureProgrammer.compose(__assign(__assign({}, props), { config: configure(props) }));
86
86
  };
87
87
  CheckerProgrammer.write = function (props) {
88
- return FeatureProgrammer_1.FeatureProgrammer.write(props.context)(configure(props))(props.importer)(props.type, props.name);
88
+ return FeatureProgrammer_1.FeatureProgrammer.write({
89
+ config: configure(props),
90
+ context: props.context,
91
+ importer: props.importer,
92
+ type: props.type,
93
+ name: props.name,
94
+ });
89
95
  };
90
96
  CheckerProgrammer.write_object_functions = function (props) {
91
97
  return FeatureProgrammer_1.FeatureProgrammer.write_object_functions({
@@ -95,18 +101,25 @@ var CheckerProgrammer;
95
101
  });
96
102
  };
97
103
  CheckerProgrammer.write_union_functions = function (props) {
98
- return FeatureProgrammer_1.FeatureProgrammer.write_union_functions(configure({
99
- context: props.context,
100
- config: __assign(__assign({}, props.config), { numeric: false }),
101
- importer: props.importer,
102
- }))(props.collection);
104
+ return FeatureProgrammer_1.FeatureProgrammer.write_union_functions({
105
+ config: configure({
106
+ context: props.context,
107
+ config: __assign(__assign({}, props.config), { numeric: false }),
108
+ importer: props.importer,
109
+ }),
110
+ collection: props.collection,
111
+ });
103
112
  };
104
113
  CheckerProgrammer.write_array_functions = function (props) {
105
114
  return props.collection
106
115
  .arrays()
107
116
  .filter(function (a) { return a.recursive; })
108
117
  .map(function (type, i) {
109
- return StatementFactory_1.StatementFactory.constant("".concat(props.config.prefix, "a").concat(i), typescript_1.default.factory.createArrowFunction(undefined, undefined, FeatureProgrammer_1.FeatureProgrammer.parameterDeclarations(props.config)(TypeFactory_1.TypeFactory.keyword("any"))(typescript_1.default.factory.createIdentifier("input")), TypeFactory_1.TypeFactory.keyword("any"), undefined, decode_array_inline(__assign(__assign({}, props), { input: typescript_1.default.factory.createIdentifier("input"), array: MetadataArray_1.MetadataArray.create({
118
+ return StatementFactory_1.StatementFactory.constant("".concat(props.config.prefix, "a").concat(i), typescript_1.default.factory.createArrowFunction(undefined, undefined, FeatureProgrammer_1.FeatureProgrammer.parameterDeclarations({
119
+ config: props.config,
120
+ type: TypeFactory_1.TypeFactory.keyword("any"),
121
+ input: typescript_1.default.factory.createIdentifier("input"),
122
+ }), TypeFactory_1.TypeFactory.keyword("any"), undefined, decode_array_inline(__assign(__assign({}, props), { input: typescript_1.default.factory.createIdentifier("input"), array: MetadataArray_1.MetadataArray.create({
110
123
  type: type,
111
124
  tags: [],
112
125
  }), explore: {
@@ -122,7 +135,11 @@ var CheckerProgrammer;
122
135
  .tuples()
123
136
  .filter(function (t) { return t.recursive; })
124
137
  .map(function (tuple, i) {
125
- return StatementFactory_1.StatementFactory.constant("".concat(props.config.prefix, "t").concat(i), typescript_1.default.factory.createArrowFunction(undefined, undefined, FeatureProgrammer_1.FeatureProgrammer.parameterDeclarations(props.config)(TypeFactory_1.TypeFactory.keyword("any"))(typescript_1.default.factory.createIdentifier("input")), TypeFactory_1.TypeFactory.keyword("any"), undefined, decode_tuple_inline({
138
+ return StatementFactory_1.StatementFactory.constant("".concat(props.config.prefix, "t").concat(i), typescript_1.default.factory.createArrowFunction(undefined, undefined, FeatureProgrammer_1.FeatureProgrammer.parameterDeclarations({
139
+ config: props.config,
140
+ type: TypeFactory_1.TypeFactory.keyword("any"),
141
+ input: typescript_1.default.factory.createIdentifier("input"),
142
+ }), TypeFactory_1.TypeFactory.keyword("any"), undefined, decode_tuple_inline({
126
143
  config: props.config,
127
144
  context: props.context,
128
145
  importer: props.importer,
@@ -137,150 +154,145 @@ var CheckerProgrammer;
137
154
  })));
138
155
  });
139
156
  };
140
- var configure = function (props) {
141
- var _a;
142
- return ({
143
- types: {
144
- input: function () { return TypeFactory_1.TypeFactory.keyword("any"); },
145
- output: function (type, name) {
146
- return typescript_1.default.factory.createTypePredicateNode(undefined, "input", typescript_1.default.factory.createTypeReferenceNode(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(props.context.checker)(type)));
147
- },
157
+ var configure = function (props) { return ({
158
+ types: {
159
+ input: function () { return TypeFactory_1.TypeFactory.keyword("any"); },
160
+ output: function (type, name) {
161
+ return typescript_1.default.factory.createTypePredicateNode(undefined, "input", typescript_1.default.factory.createTypeReferenceNode(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(props.context.checker)(type)));
148
162
  },
149
- trace: props.config.trace,
150
- path: props.config.path,
151
- prefix: props.config.prefix,
152
- initializer: function (context) { return function (importer) { return function (type) {
153
- var collection = new MetadataCollection_1.MetadataCollection();
154
- var result = MetadataFactory_1.MetadataFactory.analyze({
155
- checker: context.checker,
156
- transformer: context.transformer,
157
- options: {
158
- escape: false,
159
- constant: true,
160
- absorb: true,
161
- },
162
- collection: collection,
163
- type: type,
163
+ },
164
+ trace: props.config.trace,
165
+ path: props.config.path,
166
+ prefix: props.config.prefix,
167
+ initializer: function (next) {
168
+ var collection = new MetadataCollection_1.MetadataCollection();
169
+ var result = MetadataFactory_1.MetadataFactory.analyze({
170
+ checker: next.context.checker,
171
+ transformer: next.context.transformer,
172
+ options: {
173
+ escape: false,
174
+ constant: true,
175
+ absorb: true,
176
+ },
177
+ collection: collection,
178
+ type: next.type,
179
+ });
180
+ if (result.success === false)
181
+ throw TransformerError_1.TransformerError.from("typia.".concat(next.importer.method))(result.errors);
182
+ return [collection, result.data];
183
+ },
184
+ addition: props.config.addition,
185
+ decoder: props.config.decoder
186
+ ? function (next) { return props.config.decoder(next); }
187
+ : function (next) {
188
+ return CheckerProgrammer.decode({
189
+ context: props.context,
190
+ config: props.config,
191
+ importer: props.importer,
192
+ input: next.input,
193
+ metadata: next.metadata,
194
+ explore: next.explore,
164
195
  });
165
- if (result.success === false)
166
- throw TransformerError_1.TransformerError.from("typia.".concat(importer.method))(result.errors);
167
- return [collection, result.data];
168
- }; }; },
169
- addition: props.config.addition,
170
- decoder: function () {
171
- return props.config.decoder
172
- ? function (input, metadata, explore) {
173
- return props.config.decoder()(input, metadata, explore);
174
- }
175
- : function (input, metadata, explore) {
176
- return CheckerProgrammer.decode({
177
- context: props.context,
178
- config: props.config,
179
- importer: props.importer,
180
- input: input,
181
- metadata: metadata,
182
- explore: explore,
183
- });
184
- };
185
196
  },
186
- objector: {
187
- checker: function () { return function (input, metadata, explore) {
188
- var _a, _b, _c;
189
- return (_c = (_b = (_a = props.config).decoder) === null || _b === void 0 ? void 0 : _b.call(_a)(input, metadata, explore)) !== null && _c !== void 0 ? _c : CheckerProgrammer.decode({
197
+ objector: {
198
+ checker: props.config.decoder
199
+ ? function (next) { return props.config.decoder(next); }
200
+ : function (next) {
201
+ return CheckerProgrammer.decode({
190
202
  context: props.context,
191
203
  config: props.config,
192
204
  importer: props.importer,
193
- input: input,
194
- metadata: metadata,
195
- explore: explore,
205
+ input: next.input,
206
+ metadata: next.metadata,
207
+ explore: next.explore,
196
208
  });
197
- }; },
198
- decoder: function () { return function (input, object, explore) {
199
- return CheckerProgrammer.decode_object({
200
- config: props.config,
201
- importer: props.importer,
202
- input: input,
203
- object: object,
204
- explore: explore,
209
+ },
210
+ decoder: function (next) {
211
+ return CheckerProgrammer.decode_object({
212
+ config: props.config,
213
+ importer: props.importer,
214
+ input: next.input,
215
+ object: next.object,
216
+ explore: next.explore,
217
+ });
218
+ },
219
+ joiner: props.config.joiner.object,
220
+ unionizer: props.config.equals
221
+ ? function (next) {
222
+ var _a;
223
+ return (0, decode_union_object_1.decode_union_object)({
224
+ checker: function (v) {
225
+ return CheckerProgrammer.decode_object({
226
+ config: props.config,
227
+ importer: props.importer,
228
+ object: v.object,
229
+ input: v.input,
230
+ explore: v.explore,
231
+ });
232
+ },
233
+ decoder: function (v) {
234
+ return CheckerProgrammer.decode_object({
235
+ config: props.config,
236
+ importer: props.importer,
237
+ input: v.input,
238
+ object: v.object,
239
+ explore: __assign(__assign({}, v.explore), { tracable: true }),
240
+ });
241
+ },
242
+ success: (_a = props.config.joiner.is) !== null && _a !== void 0 ? _a : (function (expr) { return expr; }),
243
+ escaper: function (v) {
244
+ return typescript_1.default.factory.createReturnStatement(props.config.joiner.failure(v));
245
+ },
246
+ input: next.input,
247
+ objects: next.objects,
248
+ explore: next.explore,
249
+ });
250
+ }
251
+ : function (next) {
252
+ return props.config.combiner({
253
+ logic: "or",
254
+ explore: next.explore,
255
+ input: next.input,
256
+ binaries: next.objects.map(function (object) { return ({
257
+ expression: CheckerProgrammer.decode_object({
258
+ config: props.config,
259
+ importer: props.importer,
260
+ object: object,
261
+ input: next.input,
262
+ explore: next.explore,
263
+ }),
264
+ combined: true,
265
+ }); }),
266
+ expected: "(".concat(next.objects.map(function (t) { return t.name; }).join(" | "), ")"),
205
267
  });
206
- }; },
207
- joiner: props.config.joiner.object,
208
- unionizer: props.config.equals
209
- ? (0, decode_union_object_1.decode_union_object)(function (input, object, explore) {
210
- return CheckerProgrammer.decode_object({
211
- config: props.config,
212
- importer: props.importer,
213
- object: object,
214
- input: input,
215
- explore: explore,
216
- });
217
- })(function (input, object, explore) {
218
- return CheckerProgrammer.decode_object({
219
- config: props.config,
220
- importer: props.importer,
221
- input: input,
222
- object: object,
223
- explore: __assign(__assign({}, explore), { tracable: true }),
224
- });
225
- })((_a = props.config.joiner.is) !== null && _a !== void 0 ? _a : (function (expr) { return expr; }))(function (input, expected) {
226
- return typescript_1.default.factory.createReturnStatement(props.config.joiner.failure({
227
- input: input,
228
- expected: expected,
229
- }));
230
- })
231
- : function (input, targets, explore) {
232
- return props.config.combiner({
233
- explore: explore,
234
- logic: "or",
235
- input: input,
236
- binaries: targets.map(function (object) { return ({
237
- expression: CheckerProgrammer.decode_object({
238
- config: props.config,
239
- importer: props.importer,
240
- input: input,
241
- object: object,
242
- explore: explore,
243
- }),
244
- combined: true,
245
- }); }),
246
- expected: "(".concat(targets.map(function (t) { return t.name; }).join(" | "), ")"),
247
- });
248
- },
249
- failure: function (input, expected) {
250
- return typescript_1.default.factory.createReturnStatement(props.config.joiner.failure({
251
- input: input,
252
- expected: expected,
253
- }));
254
268
  },
255
- is: props.config.joiner.is,
256
- required: props.config.joiner.required,
257
- full: props.config.joiner.full
258
- ? function (condition) { return function (input, expected, explore) {
259
- return props.config.joiner.full({
260
- condition: condition,
261
- input: input,
262
- expected: expected,
263
- explore: explore,
264
- });
265
- }; }
266
- : undefined,
267
- type: TypeFactory_1.TypeFactory.keyword("boolean"),
269
+ failure: function (next) {
270
+ return typescript_1.default.factory.createReturnStatement(props.config.joiner.failure(next));
268
271
  },
269
- generator: {
270
- unions: props.config.numeric
271
- ? function () {
272
- return FeatureProgrammer_1.FeatureProgrammer.write_union_functions(configure(__assign(__assign({}, props), { config: __assign(__assign({}, props.config), { numeric: false }) })));
273
- }
274
- : undefined,
275
- arrays: function () { return function (collection) {
276
- return CheckerProgrammer.write_array_functions(__assign(__assign({}, props), { collection: collection }));
277
- }; },
278
- tuples: function () { return function (collection) {
279
- return CheckerProgrammer.write_tuple_functions(__assign(__assign({}, props), { collection: collection }));
280
- }; },
272
+ is: props.config.joiner.is,
273
+ required: props.config.joiner.required,
274
+ full: props.config.joiner.full
275
+ ? function (next) { return props.config.joiner.full(next); }
276
+ : undefined,
277
+ type: TypeFactory_1.TypeFactory.keyword("boolean"),
278
+ },
279
+ generator: {
280
+ unions: props.config.numeric
281
+ ? function (collection) {
282
+ return FeatureProgrammer_1.FeatureProgrammer.write_union_functions({
283
+ config: configure(__assign(__assign({}, props), { config: __assign(__assign({}, props.config), { numeric: false }) })),
284
+ collection: collection,
285
+ });
286
+ }
287
+ : undefined,
288
+ arrays: function (collection) {
289
+ return CheckerProgrammer.write_array_functions(__assign(__assign({}, props), { collection: collection }));
281
290
  },
282
- });
283
- };
291
+ tuples: function (collection) {
292
+ return CheckerProgrammer.write_tuple_functions(__assign(__assign({}, props), { collection: collection }));
293
+ },
294
+ },
295
+ }); };
284
296
  /* -----------------------------------------------------------
285
297
  DECODERS
286
298
  ----------------------------------------------------------- */
@@ -434,7 +446,12 @@ var CheckerProgrammer;
434
446
  binaries.push({
435
447
  expression: props.config.atomist({
436
448
  explore: props.explore,
437
- entry: (0, check_number_1.check_number)(props.context, props.config.numeric)(atom)(props.input),
449
+ entry: (0, check_number_1.check_number)({
450
+ context: props.context,
451
+ numeric: props.config.numeric,
452
+ atomic: atom,
453
+ input: props.input,
454
+ }),
438
455
  input: props.input,
439
456
  }),
440
457
  combined: false,
@@ -443,7 +460,11 @@ var CheckerProgrammer;
443
460
  binaries.push({
444
461
  expression: props.config.atomist({
445
462
  explore: props.explore,
446
- entry: (0, check_bigint_1.check_bigint)(props.context)(atom)(props.input),
463
+ entry: (0, check_bigint_1.check_bigint)({
464
+ context: props.context,
465
+ atomic: atom,
466
+ input: props.input,
467
+ }),
447
468
  input: props.input,
448
469
  }),
449
470
  combined: false,
@@ -452,7 +473,11 @@ var CheckerProgrammer;
452
473
  binaries.push({
453
474
  expression: props.config.atomist({
454
475
  explore: props.explore,
455
- entry: (0, check_string_1.check_string)(props.context)(atom)(props.input),
476
+ entry: (0, check_string_1.check_string)({
477
+ context: props.context,
478
+ atomic: atom,
479
+ input: props.input,
480
+ }),
456
481
  input: props.input,
457
482
  }),
458
483
  combined: false,
@@ -478,7 +503,10 @@ var CheckerProgrammer;
478
503
  binaries.push({
479
504
  expression: props.config.atomist({
480
505
  explore: props.explore,
481
- entry: (0, check_template_1.check_template)(props.metadata.templates)(props.input),
506
+ entry: (0, check_template_1.check_template)({
507
+ templates: props.metadata.templates,
508
+ input: props.input,
509
+ }),
482
510
  input: props.input,
483
511
  }),
484
512
  combined: false,
@@ -488,7 +516,10 @@ var CheckerProgrammer;
488
516
  for (var _j = __values(props.metadata.natives), _k = _j.next(); !_k.done; _k = _j.next()) {
489
517
  var native = _k.value;
490
518
  binaries.push({
491
- expression: (0, check_native_1.check_native)(native)(props.input),
519
+ expression: (0, check_native_1.check_native)({
520
+ type: native,
521
+ input: props.input,
522
+ }),
492
523
  combined: false,
493
524
  });
494
525
  }
@@ -506,7 +537,10 @@ var CheckerProgrammer;
506
537
  if (props.metadata.sets.length) {
507
538
  var install = function (body) {
508
539
  return prepare({
509
- knock: (0, check_native_1.check_native)("Set")(props.input),
540
+ head: (0, check_native_1.check_native)({
541
+ type: "Set",
542
+ input: props.input,
543
+ }),
510
544
  expected: props.metadata.sets
511
545
  .map(function (elem) { return "Set<".concat(elem.getName(), ">"); })
512
546
  .join(" | "),
@@ -529,7 +563,10 @@ var CheckerProgrammer;
529
563
  if (props.metadata.maps.length) {
530
564
  var install = function (body) {
531
565
  return prepare({
532
- knock: (0, check_native_1.check_native)("Map")(props.input),
566
+ head: (0, check_native_1.check_native)({
567
+ type: "Map",
568
+ input: props.input,
569
+ }),
533
570
  expected: props.metadata.maps
534
571
  .map(function (_a) {
535
572
  var key = _a.key, value = _a.value;
@@ -555,7 +592,7 @@ var CheckerProgrammer;
555
592
  if (props.metadata.tuples.length + props.metadata.arrays.length > 0) {
556
593
  var install = function (body) {
557
594
  return prepare({
558
- knock: props.config.atomist({
595
+ head: props.config.atomist({
559
596
  explore: props.explore,
560
597
  entry: {
561
598
  expected: __spreadArray(__spreadArray([], __read(props.metadata.tuples.map(function (t) { return t.type.name; })), false), __read(props.metadata.arrays.map(function (a) { return a.getName(); })), false).join(" | "),
@@ -624,7 +661,7 @@ var CheckerProgrammer;
624
661
  // OBJECT
625
662
  if (props.metadata.objects.length > 0)
626
663
  prepare({
627
- knock: ExpressionFactory_1.ExpressionFactory.isObject({
664
+ head: ExpressionFactory_1.ExpressionFactory.isObject({
628
665
  checkNull: true,
629
666
  checkArray: props.metadata.objects.some(function (obj) {
630
667
  return obj.properties.every(function (prop) { return !prop.key.isSoleLiteral() || !prop.value.isRequired(); });
@@ -644,24 +681,24 @@ var CheckerProgrammer;
644
681
  return function (ins) {
645
682
  return ins.body
646
683
  ? {
647
- expression: merger(ins.knock, ins.body),
684
+ expression: merger(ins.head, ins.body),
648
685
  combined: true,
649
686
  }
650
687
  : {
651
- expression: ins.knock,
688
+ expression: ins.head,
652
689
  combined: false,
653
690
  };
654
691
  };
655
692
  };
656
693
  if (instances.length === 1)
657
- binaries.push(transformer(function (pre, body) {
694
+ binaries.push(transformer(function (head, body) {
658
695
  return props.config.combiner({
659
696
  explore: props.explore,
660
697
  logic: "and",
661
698
  input: props.input,
662
- binaries: [pre, body].map(function (expression) { return ({
699
+ binaries: [head, body].map(function (expression) { return ({
663
700
  expression: expression,
664
- combined: expression !== pre,
701
+ combined: expression !== head,
665
702
  }); }),
666
703
  expected: props.metadata.getName(),
667
704
  });
@@ -684,7 +721,10 @@ var CheckerProgrammer;
684
721
  combined: false,
685
722
  expression: props.metadata.escaped.original.size() === 1 &&
686
723
  props.metadata.escaped.original.natives.length === 1
687
- ? (0, check_native_1.check_native)(props.metadata.escaped.original.natives[0])(props.input)
724
+ ? (0, check_native_1.check_native)({
725
+ type: props.metadata.escaped.original.natives[0],
726
+ input: props.input,
727
+ })
688
728
  : typescript_1.default.factory.createLogicalAnd(CheckerProgrammer.decode({
689
729
  context: props.context,
690
730
  config: props.config,
@@ -739,28 +779,43 @@ var CheckerProgrammer;
739
779
  CheckerProgrammer.decode_object = function (props) {
740
780
  var _a;
741
781
  (_a = props.object).validated || (_a.validated = true);
742
- return FeatureProgrammer_1.FeatureProgrammer.decode_object(props.config)(props.importer)(props.input, props.object, props.explore);
782
+ return FeatureProgrammer_1.FeatureProgrammer.decode_object(props);
743
783
  };
744
784
  var decode_array = function (props) {
745
785
  if (props.array.type.recursive === false)
746
786
  return decode_array_inline(props);
747
787
  var arrayExplore = __assign(__assign({}, props.explore), { source: "function", from: "array" });
748
- return typescript_1.default.factory.createLogicalOr(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(props.importer.useLocal("".concat(props.config.prefix, "a").concat(props.array.type.index))), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray(props.config)(__assign(__assign({}, arrayExplore), { source: "function", from: "array" }))(props.input)), props.config.joiner.failure({
788
+ return typescript_1.default.factory.createLogicalOr(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(props.importer.useLocal("".concat(props.config.prefix, "a").concat(props.array.type.index))), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray({
789
+ config: props.config,
790
+ explore: __assign(__assign({}, arrayExplore), { source: "function", from: "array" }),
791
+ input: props.input,
792
+ })), props.config.joiner.failure({
749
793
  input: props.input,
750
794
  expected: props.array.type.name,
751
795
  explore: arrayExplore,
752
796
  }));
753
797
  };
754
798
  var decode_array_inline = function (props) {
755
- var length = (0, check_array_length_1.check_array_length)(props.context)(props.array)(props.input);
799
+ var length = (0, check_array_length_1.check_array_length)({
800
+ context: props.context,
801
+ array: props.array,
802
+ input: props.input,
803
+ });
756
804
  var main = FeatureProgrammer_1.FeatureProgrammer.decode_array({
757
- prefix: props.config.prefix,
758
- trace: props.config.trace,
759
- path: props.config.path,
760
- decoder: function () { return function (input, metadata, explore) {
761
- return CheckerProgrammer.decode(__assign(__assign({}, props), { input: input, metadata: metadata, explore: explore }));
762
- }; },
763
- })(props.importer)(props.config.joiner.array)(props.input, props.array, props.explore);
805
+ config: {
806
+ prefix: props.config.prefix,
807
+ trace: props.config.trace,
808
+ path: props.config.path,
809
+ decoder: function (next) {
810
+ return CheckerProgrammer.decode(__assign(__assign({}, props), next));
811
+ },
812
+ },
813
+ importer: props.importer,
814
+ combiner: props.config.joiner.array,
815
+ array: props.array,
816
+ input: props.input,
817
+ explore: props.explore,
818
+ });
764
819
  return length.expression === null && length.conditions.length === 0
765
820
  ? main
766
821
  : typescript_1.default.factory.createLogicalAnd(props.config.atomist({
@@ -773,7 +828,11 @@ var CheckerProgrammer;
773
828
  if (props.tuple.type.recursive === false)
774
829
  return decode_tuple_inline(__assign(__assign({}, props), { tuple: props.tuple.type }));
775
830
  var arrayExplore = __assign(__assign({}, props.explore), { source: "function", from: "array" });
776
- return typescript_1.default.factory.createLogicalOr(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(props.importer.useLocal("".concat(props.config.prefix, "t").concat(props.tuple.type.index))), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray(props.config)(__assign(__assign({}, arrayExplore), { source: "function" }))(props.input)), props.config.joiner.failure({
831
+ return typescript_1.default.factory.createLogicalOr(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(props.importer.useLocal("".concat(props.config.prefix, "t").concat(props.tuple.type.index))), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray({
832
+ config: props.config,
833
+ explore: __assign(__assign({}, arrayExplore), { source: "function" }),
834
+ input: props.input,
835
+ })), props.config.joiner.failure({
777
836
  input: props.input,
778
837
  expected: props.tuple.type.name,
779
838
  explore: arrayExplore,
@@ -855,152 +914,164 @@ var CheckerProgrammer;
855
914
  ----------------------------------------------------------- */
856
915
  var explore_sets = function (props) {
857
916
  return typescript_1.default.factory.createCallExpression(UnionExplorer_1.UnionExplorer.set({
858
- checker: function (input, metadata, explore, _container) {
859
- return CheckerProgrammer.decode({
860
- context: props.context,
861
- config: props.config,
862
- importer: props.importer,
863
- input: input,
864
- metadata: metadata,
865
- explore: explore,
866
- });
867
- },
868
- decoder: function (input, array, explore) {
869
- return decode_array({
870
- config: props.config,
871
- context: props.context,
872
- importer: props.importer,
873
- array: array,
874
- input: input,
875
- explore: explore,
876
- });
877
- },
878
- empty: props.config.success,
879
- success: props.config.success,
880
- failure: function (input, expected, explore) {
881
- return typescript_1.default.factory.createReturnStatement(props.config.joiner.failure({
882
- input: input,
883
- expected: expected,
884
- explore: explore,
885
- }));
886
- },
887
- })([])(props.input, props.sets, props.explore), undefined, undefined);
888
- };
889
- var explore_maps = function (props) {
890
- return typescript_1.default.factory.createCallExpression(UnionExplorer_1.UnionExplorer.map({
891
- checker: function (input, entry, explore) {
892
- return typescript_1.default.factory.createLogicalAnd(CheckerProgrammer.decode({
893
- config: props.config,
894
- context: props.context,
895
- importer: props.importer,
896
- input: typescript_1.default.factory.createElementAccessExpression(input, 0),
897
- metadata: entry[0],
898
- explore: __assign(__assign({}, explore), { postfix: "".concat(explore.postfix, "[0]") }),
899
- }), CheckerProgrammer.decode({
900
- config: props.config,
901
- context: props.context,
902
- importer: props.importer,
903
- input: typescript_1.default.factory.createElementAccessExpression(input, 1),
904
- metadata: entry[1],
905
- explore: __assign(__assign({}, explore), { postfix: "".concat(explore.postfix, "[1]") }),
906
- }));
907
- },
908
- decoder: function (input, array, explore) {
909
- return decode_array({
910
- context: props.context,
911
- config: props.config,
912
- importer: props.importer,
913
- array: array,
914
- input: input,
915
- explore: explore,
916
- });
917
- },
918
- empty: props.config.success,
919
- success: props.config.success,
920
- failure: function (input, expected, explore) {
921
- return typescript_1.default.factory.createReturnStatement(props.config.joiner.failure({
922
- input: input,
923
- expected: expected,
924
- explore: explore,
925
- }));
926
- },
927
- })([])(props.input, props.maps, props.explore), undefined, undefined);
928
- };
929
- var explore_tuples = function (props) {
930
- return explore_array_like_union_types({
931
- config: props.config,
932
- importer: props.importer,
933
- factory: UnionExplorer_1.UnionExplorer.tuple({
934
- checker: function (input, tuple, explore) {
935
- return decode_tuple({
917
+ config: {
918
+ checker: function (v) {
919
+ return CheckerProgrammer.decode({
936
920
  context: props.context,
937
921
  config: props.config,
938
922
  importer: props.importer,
939
- input: input,
940
- tuple: tuple,
941
- explore: explore,
923
+ input: v.input,
924
+ metadata: v.definition,
925
+ explore: v.explore,
942
926
  });
943
927
  },
944
- decoder: function (input, tuple, explore) {
945
- return decode_tuple({
946
- context: props.context,
928
+ decoder: function (v) {
929
+ return decode_array({
947
930
  config: props.config,
931
+ context: props.context,
948
932
  importer: props.importer,
949
- tuple: tuple,
950
- input: input,
951
- explore: explore,
933
+ array: v.definition,
934
+ input: v.input,
935
+ explore: v.explore,
952
936
  });
953
937
  },
954
938
  empty: props.config.success,
955
939
  success: props.config.success,
956
- failure: function (input, expected, explore) {
957
- return typescript_1.default.factory.createReturnStatement(props.config.joiner.failure({
958
- input: input,
959
- expected: expected,
960
- explore: explore,
961
- }));
940
+ failure: function (v) {
941
+ return typescript_1.default.factory.createReturnStatement(props.config.joiner.failure(v));
962
942
  },
963
- }),
964
- definitions: props.tuples,
943
+ },
944
+ parameters: [],
965
945
  input: props.input,
946
+ sets: props.sets,
966
947
  explore: props.explore,
967
- });
948
+ }), undefined, undefined);
968
949
  };
969
- var explore_arrays = function (props) {
970
- return explore_array_like_union_types({
971
- config: props.config,
972
- importer: props.importer,
973
- factory: UnionExplorer_1.UnionExplorer.array({
974
- checker: function (input, metadata, explore) {
975
- return CheckerProgrammer.decode({
950
+ var explore_maps = function (props) {
951
+ return typescript_1.default.factory.createCallExpression(UnionExplorer_1.UnionExplorer.map({
952
+ config: {
953
+ checker: function (v) {
954
+ return typescript_1.default.factory.createLogicalAnd(CheckerProgrammer.decode({
955
+ config: props.config,
976
956
  context: props.context,
957
+ importer: props.importer,
958
+ input: typescript_1.default.factory.createElementAccessExpression(v.input, 0),
959
+ metadata: v.definition[0],
960
+ explore: __assign(__assign({}, v.explore), { postfix: "".concat(v.explore.postfix, "[0]") }),
961
+ }), CheckerProgrammer.decode({
977
962
  config: props.config,
963
+ context: props.context,
978
964
  importer: props.importer,
979
- metadata: metadata,
980
- input: input,
981
- explore: explore,
982
- });
965
+ input: typescript_1.default.factory.createElementAccessExpression(v.input, 1),
966
+ metadata: v.definition[1],
967
+ explore: __assign(__assign({}, v.explore), { postfix: "".concat(v.explore.postfix, "[1]") }),
968
+ }));
983
969
  },
984
- decoder: function (input, array, explore) {
970
+ decoder: function (v) {
985
971
  return decode_array({
986
972
  context: props.context,
987
973
  config: props.config,
988
974
  importer: props.importer,
989
- array: array,
990
- input: input,
991
- explore: explore,
975
+ array: v.definition,
976
+ input: v.input,
977
+ explore: v.explore,
992
978
  });
993
979
  },
994
980
  empty: props.config.success,
995
981
  success: props.config.success,
996
- failure: function (input, expected, explore) {
997
- return typescript_1.default.factory.createReturnStatement(props.config.joiner.failure({
998
- input: input,
999
- expected: expected,
1000
- explore: explore,
1001
- }));
982
+ failure: function (v) {
983
+ return typescript_1.default.factory.createReturnStatement(props.config.joiner.failure(v));
1002
984
  },
1003
- }),
985
+ },
986
+ parameters: [],
987
+ input: props.input,
988
+ maps: props.maps,
989
+ explore: props.explore,
990
+ }), undefined, undefined);
991
+ };
992
+ var explore_tuples = function (props) {
993
+ return explore_array_like_union_types({
994
+ config: props.config,
995
+ importer: props.importer,
996
+ factory: function (next) {
997
+ return UnionExplorer_1.UnionExplorer.tuple({
998
+ config: {
999
+ checker: function (v) {
1000
+ return decode_tuple({
1001
+ context: props.context,
1002
+ config: props.config,
1003
+ importer: props.importer,
1004
+ input: v.input,
1005
+ tuple: v.definition,
1006
+ explore: v.explore,
1007
+ });
1008
+ },
1009
+ decoder: function (v) {
1010
+ return decode_tuple({
1011
+ context: props.context,
1012
+ config: props.config,
1013
+ importer: props.importer,
1014
+ tuple: v.definition,
1015
+ input: v.input,
1016
+ explore: v.explore,
1017
+ });
1018
+ },
1019
+ empty: props.config.success,
1020
+ success: props.config.success,
1021
+ failure: function (v) {
1022
+ return typescript_1.default.factory.createReturnStatement(props.config.joiner.failure(v));
1023
+ },
1024
+ },
1025
+ parameters: next.parameters,
1026
+ tuples: next.definitions,
1027
+ input: next.input,
1028
+ explore: next.explore,
1029
+ });
1030
+ },
1031
+ definitions: props.tuples,
1032
+ input: props.input,
1033
+ explore: props.explore,
1034
+ });
1035
+ };
1036
+ var explore_arrays = function (props) {
1037
+ return explore_array_like_union_types({
1038
+ config: props.config,
1039
+ importer: props.importer,
1040
+ factory: function (next) {
1041
+ return UnionExplorer_1.UnionExplorer.array({
1042
+ config: {
1043
+ checker: function (v) {
1044
+ return CheckerProgrammer.decode({
1045
+ context: props.context,
1046
+ config: props.config,
1047
+ importer: props.importer,
1048
+ metadata: v.definition,
1049
+ input: v.input,
1050
+ explore: v.explore,
1051
+ });
1052
+ },
1053
+ decoder: function (v) {
1054
+ return decode_array({
1055
+ context: props.context,
1056
+ config: props.config,
1057
+ importer: props.importer,
1058
+ array: v.definition,
1059
+ input: v.input,
1060
+ explore: v.explore,
1061
+ });
1062
+ },
1063
+ empty: props.config.success,
1064
+ success: props.config.success,
1065
+ failure: function (v) {
1066
+ return typescript_1.default.factory.createReturnStatement(props.config.joiner.failure(v));
1067
+ },
1068
+ },
1069
+ parameters: next.parameters,
1070
+ arrays: next.definitions,
1071
+ input: next.input,
1072
+ explore: next.explore,
1073
+ });
1074
+ },
1004
1075
  definitions: props.arrays,
1005
1076
  input: props.input,
1006
1077
  explore: props.explore,
@@ -1010,69 +1081,73 @@ var CheckerProgrammer;
1010
1081
  return explore_array_like_union_types({
1011
1082
  config: props.config,
1012
1083
  importer: props.importer,
1013
- factory: UnionExplorer_1.UnionExplorer.array_or_tuple({
1014
- checker: function (input, definition, explore, array) {
1015
- return definition instanceof MetadataTuple_1.MetadataTuple
1016
- ? decode_tuple({
1017
- config: props.config,
1018
- context: props.context,
1019
- importer: props.importer,
1020
- input: input,
1021
- tuple: definition,
1022
- explore: explore,
1023
- })
1024
- : props.config.atomist({
1025
- explore: explore,
1026
- entry: {
1027
- expected: props.definitions
1028
- .map(function (elem) {
1029
- return elem instanceof MetadataArray_1.MetadataArray
1030
- ? elem.getName()
1031
- : elem.type.name;
1084
+ factory: function (next) {
1085
+ return UnionExplorer_1.UnionExplorer.array_or_tuple({
1086
+ config: {
1087
+ checker: function (v) {
1088
+ return v.definition instanceof MetadataTuple_1.MetadataTuple
1089
+ ? decode_tuple({
1090
+ config: props.config,
1091
+ context: props.context,
1092
+ importer: props.importer,
1093
+ input: v.input,
1094
+ tuple: v.definition,
1095
+ explore: v.explore,
1032
1096
  })
1033
- .join(" | "),
1034
- expression: CheckerProgrammer.decode({
1097
+ : props.config.atomist({
1098
+ explore: v.explore,
1099
+ entry: {
1100
+ expected: props.definitions
1101
+ .map(function (elem) {
1102
+ return elem instanceof MetadataArray_1.MetadataArray
1103
+ ? elem.getName()
1104
+ : elem.type.name;
1105
+ })
1106
+ .join(" | "),
1107
+ expression: CheckerProgrammer.decode({
1108
+ importer: props.importer,
1109
+ context: props.context,
1110
+ config: props.config,
1111
+ metadata: v.definition,
1112
+ input: v.input,
1113
+ explore: v.explore,
1114
+ }),
1115
+ conditions: [],
1116
+ },
1117
+ input: v.container,
1118
+ });
1119
+ },
1120
+ decoder: function (v) {
1121
+ return v.definition instanceof MetadataTuple_1.MetadataTuple
1122
+ ? decode_tuple({
1123
+ context: props.context,
1124
+ config: props.config,
1035
1125
  importer: props.importer,
1126
+ input: v.input,
1127
+ tuple: v.definition,
1128
+ explore: v.explore,
1129
+ })
1130
+ : decode_array({
1036
1131
  context: props.context,
1037
1132
  config: props.config,
1038
- input: input,
1039
- metadata: definition,
1040
- explore: explore,
1041
- }),
1042
- conditions: [],
1043
- },
1044
- input: array,
1045
- });
1046
- },
1047
- decoder: function (input, definition, explore) {
1048
- return definition instanceof MetadataTuple_1.MetadataTuple
1049
- ? decode_tuple({
1050
- context: props.context,
1051
- config: props.config,
1052
- importer: props.importer,
1053
- input: input,
1054
- tuple: definition,
1055
- explore: explore,
1056
- })
1057
- : decode_array({
1058
- context: props.context,
1059
- config: props.config,
1060
- importer: props.importer,
1061
- input: input,
1062
- array: definition,
1063
- explore: explore,
1064
- });
1065
- },
1066
- empty: props.config.success,
1067
- success: props.config.success,
1068
- failure: function (input, expected, explore) {
1069
- return typescript_1.default.factory.createReturnStatement(props.config.joiner.failure({
1070
- input: input,
1071
- expected: expected,
1072
- explore: explore,
1073
- }));
1074
- },
1075
- }),
1133
+ importer: props.importer,
1134
+ input: v.input,
1135
+ array: v.definition,
1136
+ explore: v.explore,
1137
+ });
1138
+ },
1139
+ empty: props.config.success,
1140
+ success: props.config.success,
1141
+ failure: function (v) {
1142
+ return typescript_1.default.factory.createReturnStatement(props.config.joiner.failure(v));
1143
+ },
1144
+ },
1145
+ parameters: next.parameters,
1146
+ definitions: next.definitions,
1147
+ input: next.input,
1148
+ explore: next.explore,
1149
+ });
1150
+ },
1076
1151
  input: props.input,
1077
1152
  definitions: props.definitions,
1078
1153
  explore: props.explore,
@@ -1080,7 +1155,12 @@ var CheckerProgrammer;
1080
1155
  };
1081
1156
  var explore_array_like_union_types = function (props) {
1082
1157
  var arrow = function (next) {
1083
- return props.factory(next.parameters)(next.input, props.definitions, next.explore);
1158
+ return props.factory({
1159
+ parameters: next.parameters,
1160
+ definitions: props.definitions,
1161
+ input: next.input,
1162
+ explore: next.explore,
1163
+ });
1084
1164
  };
1085
1165
  if (props.definitions.every(function (e) { return e.type.recursive === false; }))
1086
1166
  typescript_1.default.factory.createCallExpression(arrow({
@@ -1091,11 +1171,15 @@ var CheckerProgrammer;
1091
1171
  var arrayExplore = __assign(__assign({}, props.explore), { source: "function", from: "array" });
1092
1172
  return typescript_1.default.factory.createLogicalOr(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(props.importer.emplaceUnion(props.config.prefix, props.definitions.map(function (e) { return e.type.name; }).join(" | "), function () {
1093
1173
  return arrow({
1094
- parameters: FeatureProgrammer_1.FeatureProgrammer.parameterDeclarations(props.config)(TypeFactory_1.TypeFactory.keyword("any"))(typescript_1.default.factory.createIdentifier("input")),
1174
+ parameters: FeatureProgrammer_1.FeatureProgrammer.parameterDeclarations({
1175
+ config: props.config,
1176
+ type: TypeFactory_1.TypeFactory.keyword("any"),
1177
+ input: typescript_1.default.factory.createIdentifier("input"),
1178
+ }),
1095
1179
  explore: __assign(__assign({}, arrayExplore), { postfix: "" }),
1096
1180
  input: typescript_1.default.factory.createIdentifier("input"),
1097
1181
  });
1098
- })), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray(props.config)(arrayExplore)(props.input)), props.config.joiner.failure({
1182
+ })), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray(props)), props.config.joiner.failure({
1099
1183
  input: props.input,
1100
1184
  expected: props.definitions.map(function (e) { return e.type.name; }).join(" | "),
1101
1185
  explore: arrayExplore,
@@ -1110,7 +1194,7 @@ var CheckerProgrammer;
1110
1194
  input: props.input,
1111
1195
  explore: props.explore,
1112
1196
  })
1113
- : typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(props.importer.useLocal("".concat(props.config.prefix, "u").concat(props.metadata.union_index))), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray(props.config)(props.explore)(props.input));
1197
+ : typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(props.importer.useLocal("".concat(props.config.prefix, "u").concat(props.metadata.union_index))), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray(props));
1114
1198
  };
1115
1199
  })(CheckerProgrammer || (exports.CheckerProgrammer = CheckerProgrammer = {}));
1116
1200
  var create_add = function (props) {