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
@@ -47,9 +47,7 @@ var postfix_of_tuple_1 = require("../internal/postfix_of_tuple");
47
47
  var wrap_metadata_rest_tuple_1 = require("../internal/wrap_metadata_rest_tuple");
48
48
  var NotationGeneralProgrammer;
49
49
  (function (NotationGeneralProgrammer) {
50
- NotationGeneralProgrammer.returnType = function (rename) { return function (type) {
51
- return "typia.".concat(StringUtil_1.StringUtil.capitalize(rename.name), "Case<").concat(type, ">");
52
- }; };
50
+ NotationGeneralProgrammer.returnType = function (props) { return "typia.".concat(StringUtil_1.StringUtil.capitalize(props.rename.name), "Case<").concat(props.type, ">"); };
53
51
  NotationGeneralProgrammer.decompose = function (props) {
54
52
  var _a;
55
53
  var config = configure(props);
@@ -65,7 +63,10 @@ var NotationGeneralProgrammer;
65
63
  return {
66
64
  functions: composed.functions,
67
65
  statements: composed.statements,
68
- arrow: typescript_1.default.factory.createArrowFunction(undefined, undefined, composed.parameters, typescript_1.default.factory.createTypeReferenceNode(NotationGeneralProgrammer.returnType(props.rename)((_a = props.name) !== null && _a !== void 0 ? _a : TypeFactory_1.TypeFactory.getFullName(props.context.checker)(props.type))), undefined, composed.body),
66
+ arrow: typescript_1.default.factory.createArrowFunction(undefined, undefined, composed.parameters, typescript_1.default.factory.createTypeReferenceNode(NotationGeneralProgrammer.returnType({
67
+ rename: props.rename,
68
+ type: (_a = props.name) !== null && _a !== void 0 ? _a : TypeFactory_1.TypeFactory.getFullName(props.context.checker)(props.type),
69
+ })), undefined, composed.body),
69
70
  };
70
71
  };
71
72
  NotationGeneralProgrammer.write = function (props) {
@@ -82,7 +83,11 @@ var NotationGeneralProgrammer;
82
83
  .arrays()
83
84
  .filter(function (a) { return a.recursive; })
84
85
  .map(function (type, i) {
85
- 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({
86
+ return StatementFactory_1.StatementFactory.constant("".concat(props.config.prefix, "a").concat(i), typescript_1.default.factory.createArrowFunction(undefined, undefined, FeatureProgrammer_1.FeatureProgrammer.parameterDeclarations({
87
+ config: props.config,
88
+ type: TypeFactory_1.TypeFactory.keyword("any"),
89
+ input: typescript_1.default.factory.createIdentifier("input"),
90
+ }), TypeFactory_1.TypeFactory.keyword("any"), undefined, decode_array_inline(__assign(__assign({}, props), { input: typescript_1.default.factory.createIdentifier("input"), array: MetadataArray_1.MetadataArray.create({
86
91
  type: type,
87
92
  tags: [],
88
93
  }), explore: {
@@ -98,7 +103,11 @@ var NotationGeneralProgrammer;
98
103
  .tuples()
99
104
  .filter(function (t) { return t.recursive; })
100
105
  .map(function (tuple, i) {
101
- 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(__assign(__assign({}, props), { input: typescript_1.default.factory.createIdentifier("input"), tuple: tuple, explore: {
106
+ return StatementFactory_1.StatementFactory.constant("".concat(props.config.prefix, "t").concat(i), typescript_1.default.factory.createArrowFunction(undefined, undefined, FeatureProgrammer_1.FeatureProgrammer.parameterDeclarations({
107
+ config: props.config,
108
+ type: TypeFactory_1.TypeFactory.keyword("any"),
109
+ input: typescript_1.default.factory.createIdentifier("input"),
110
+ }), TypeFactory_1.TypeFactory.keyword("any"), undefined, decode_tuple_inline(__assign(__assign({}, props), { input: typescript_1.default.factory.createIdentifier("input"), tuple: tuple, explore: {
102
111
  tracable: props.config.trace,
103
112
  source: "function",
104
113
  from: "array",
@@ -164,7 +173,7 @@ var NotationGeneralProgrammer;
164
173
  type: "array",
165
174
  is: function () { return ExpressionFactory_1.ExpressionFactory.isArray(props.input); },
166
175
  value: function () {
167
- return explore_arrays(__assign(__assign({}, props), { elements: props.metadata.arrays, explore: __assign(__assign({}, props.explore), { from: "array" }) }));
176
+ return explore_arrays(__assign(__assign({}, props), { arrays: props.metadata.arrays, explore: __assign(__assign({}, props.explore), { from: "array" }) }));
168
177
  },
169
178
  });
170
179
  // NATIVE TYPES
@@ -255,24 +264,45 @@ var NotationGeneralProgrammer;
255
264
  return typescript_1.default.factory.createAsExpression(last, TypeFactory_1.TypeFactory.keyword("any"));
256
265
  }
257
266
  };
258
- var decode_object = function (importer) {
267
+ var decode_object = function (props) {
259
268
  return FeatureProgrammer_1.FeatureProgrammer.decode_object({
260
- trace: false,
261
- path: false,
262
- prefix: PREFIX,
263
- })(importer);
269
+ config: {
270
+ trace: false,
271
+ path: false,
272
+ prefix: PREFIX,
273
+ },
274
+ importer: props.importer,
275
+ object: props.object,
276
+ input: props.input,
277
+ explore: props.explore,
278
+ });
264
279
  };
265
280
  var decode_array = function (props) {
266
281
  return props.array.type.recursive
267
- ? 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({}, props.explore), { source: "function", from: "array" }))(props.input))
282
+ ? 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({
283
+ config: props.config,
284
+ explore: __assign(__assign({}, props.explore), { source: "function", from: "array" }),
285
+ input: props.input,
286
+ }))
268
287
  : decode_array_inline(props);
269
288
  };
270
289
  var decode_array_inline = function (props) {
271
- return FeatureProgrammer_1.FeatureProgrammer.decode_array(props.config)(props.importer)(NotationJoiner_1.NotationJoiner.array)(props.input, props.array, props.explore);
290
+ return FeatureProgrammer_1.FeatureProgrammer.decode_array({
291
+ config: props.config,
292
+ importer: props.importer,
293
+ combiner: NotationJoiner_1.NotationJoiner.array,
294
+ array: props.array,
295
+ input: props.input,
296
+ explore: props.explore,
297
+ });
272
298
  };
273
299
  var decode_tuple = function (props) {
274
300
  return props.tuple.type.recursive
275
- ? 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({}, props.explore), { source: "function" }))(props.input))
301
+ ? 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({
302
+ config: props.config,
303
+ explore: __assign(__assign({}, props.explore), { source: "function" }),
304
+ input: props.input,
305
+ }))
276
306
  : decode_tuple_inline(__assign(__assign({}, props), { tuple: props.tuple.type }));
277
307
  };
278
308
  var decode_tuple_inline = function (props) {
@@ -310,118 +340,164 @@ var NotationGeneralProgrammer;
310
340
  ----------------------------------------------------------- */
311
341
  var explore_sets = function (props) {
312
342
  return typescript_1.default.factory.createCallExpression(UnionExplorer_1.UnionExplorer.set({
313
- checker: function (input, metadata, explore) {
314
- return IsProgrammer_1.IsProgrammer.decode({
315
- context: props.context,
316
- importer: props.importer,
317
- input: input,
318
- metadata: metadata,
319
- explore: explore,
320
- });
321
- },
322
- decoder: function (input, array, explore) {
323
- return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Set"), [TypeFactory_1.TypeFactory.keyword("any")], [
324
- decode_array({
325
- config: props.config,
343
+ config: {
344
+ checker: function (v) {
345
+ return IsProgrammer_1.IsProgrammer.decode({
346
+ context: props.context,
326
347
  importer: props.importer,
327
- input: input,
328
- array: array,
329
- explore: explore,
330
- }),
331
- ]);
332
- },
333
- empty: typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Set"), [TypeFactory_1.TypeFactory.keyword("any")], []),
334
- success: typescript_1.default.factory.createTrue(),
335
- failure: function (input, expected) {
336
- return create_throw_error({ importer: props.importer, expected: expected, input: input });
348
+ input: v.input,
349
+ metadata: v.definition,
350
+ explore: v.explore,
351
+ });
352
+ },
353
+ decoder: function (v) {
354
+ return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Set"), [TypeFactory_1.TypeFactory.keyword("any")], [
355
+ decode_array({
356
+ config: props.config,
357
+ importer: props.importer,
358
+ input: v.input,
359
+ array: v.definition,
360
+ explore: v.explore,
361
+ }),
362
+ ]);
363
+ },
364
+ empty: typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Set"), [TypeFactory_1.TypeFactory.keyword("any")], []),
365
+ success: typescript_1.default.factory.createTrue(),
366
+ failure: function (v) {
367
+ return create_throw_error({
368
+ importer: props.importer,
369
+ expected: v.expected,
370
+ input: v.input,
371
+ });
372
+ },
337
373
  },
338
- })([])(props.input, props.sets, props.explore), undefined, undefined);
374
+ parameters: [],
375
+ input: props.input,
376
+ sets: props.sets,
377
+ explore: props.explore,
378
+ }), undefined, undefined);
339
379
  };
340
380
  var explore_maps = function (props) {
341
381
  return typescript_1.default.factory.createCallExpression(UnionExplorer_1.UnionExplorer.map({
342
- checker: function (top, entry, explore) {
343
- return typescript_1.default.factory.createLogicalAnd(IsProgrammer_1.IsProgrammer.decode({
344
- context: props.context,
345
- importer: props.importer,
346
- input: typescript_1.default.factory.createElementAccessExpression(top, 0),
347
- metadata: entry[0],
348
- explore: __assign(__assign({}, props.explore), { postfix: "".concat(explore.postfix, "[0]") }),
349
- }), IsProgrammer_1.IsProgrammer.decode({
350
- context: props.context,
351
- importer: props.importer,
352
- input: typescript_1.default.factory.createElementAccessExpression(top, 1),
353
- metadata: entry[1],
354
- explore: __assign(__assign({}, props.explore), { postfix: "".concat(props.explore.postfix, "[1]") }),
355
- }));
356
- },
357
- decoder: function (input, array, explore) {
358
- return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Map"), [TypeFactory_1.TypeFactory.keyword("any"), TypeFactory_1.TypeFactory.keyword("any")], [
359
- decode_array({
360
- config: props.config,
382
+ config: {
383
+ checker: function (v) {
384
+ return typescript_1.default.factory.createLogicalAnd(IsProgrammer_1.IsProgrammer.decode({
385
+ context: props.context,
361
386
  importer: props.importer,
362
- input: input,
363
- array: array,
364
- explore: explore,
365
- }),
366
- ]);
367
- },
368
- empty: typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Map"), [TypeFactory_1.TypeFactory.keyword("any"), TypeFactory_1.TypeFactory.keyword("any")], []),
369
- success: typescript_1.default.factory.createTrue(),
370
- failure: function (input, expected) {
371
- return create_throw_error({ importer: props.importer, expected: expected, input: input });
372
- },
373
- })([])(props.input, props.maps, props.explore), undefined, undefined);
374
- };
375
- var explore_objects = function (props) {
376
- if (props.metadata.objects.length === 1)
377
- return decode_object(props.importer)(props.input, props.metadata.objects[0], props.explore);
378
- return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(props.importer.useLocal("".concat(PREFIX, "u").concat(props.metadata.union_index))), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray(props.config)(props.explore)(props.input));
379
- };
380
- var explore_arrays = function (props) {
381
- return explore_array_like_union_types(__assign(__assign({}, props), { factory: UnionExplorer_1.UnionExplorer.array({
382
- checker: function (input, metadata, explore) {
383
- return IsProgrammer_1.IsProgrammer.decode({
387
+ input: typescript_1.default.factory.createElementAccessExpression(v.input, 0),
388
+ metadata: v.definition[0],
389
+ explore: __assign(__assign({}, props.explore), { postfix: "".concat(v.explore.postfix, "[0]") }),
390
+ }), IsProgrammer_1.IsProgrammer.decode({
384
391
  context: props.context,
385
392
  importer: props.importer,
386
- input: input,
387
- metadata: metadata,
388
- explore: explore,
389
- });
393
+ input: typescript_1.default.factory.createElementAccessExpression(v.input, 1),
394
+ metadata: v.definition[1],
395
+ explore: __assign(__assign({}, props.explore), { postfix: "".concat(props.explore.postfix, "[1]") }),
396
+ }));
390
397
  },
391
- decoder: function (input, array, explore) {
392
- return decode_array({
393
- config: props.config,
394
- importer: props.importer,
395
- input: input,
396
- array: array,
397
- explore: explore,
398
- });
398
+ decoder: function (v) {
399
+ return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Map"), [TypeFactory_1.TypeFactory.keyword("any"), TypeFactory_1.TypeFactory.keyword("any")], [
400
+ decode_array({
401
+ config: props.config,
402
+ importer: props.importer,
403
+ input: v.input,
404
+ array: v.definition,
405
+ explore: v.explore,
406
+ }),
407
+ ]);
399
408
  },
400
- empty: typescript_1.default.factory.createIdentifier("[]"),
409
+ empty: typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Map"), [TypeFactory_1.TypeFactory.keyword("any"), TypeFactory_1.TypeFactory.keyword("any")], []),
401
410
  success: typescript_1.default.factory.createTrue(),
402
- failure: function (input, expected) {
411
+ failure: function (v) {
403
412
  return create_throw_error({
404
413
  importer: props.importer,
405
- expected: expected,
406
- input: input,
414
+ expected: v.expected,
415
+ input: v.input,
407
416
  });
408
417
  },
409
- }) }));
418
+ },
419
+ parameters: [],
420
+ input: props.input,
421
+ maps: props.maps,
422
+ explore: props.explore,
423
+ }), undefined, undefined);
424
+ };
425
+ var explore_objects = function (props) {
426
+ if (props.metadata.objects.length === 1)
427
+ return decode_object({
428
+ importer: props.importer,
429
+ object: props.metadata.objects[0],
430
+ input: props.input,
431
+ explore: props.explore,
432
+ });
433
+ return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(props.importer.useLocal("".concat(PREFIX, "u").concat(props.metadata.union_index))), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray(props));
434
+ };
435
+ var explore_arrays = function (props) {
436
+ return explore_array_like_union_types(__assign(__assign({}, props), { factory: function (next) {
437
+ return UnionExplorer_1.UnionExplorer.array({
438
+ config: {
439
+ checker: function (v) {
440
+ return IsProgrammer_1.IsProgrammer.decode({
441
+ context: props.context,
442
+ importer: props.importer,
443
+ input: v.input,
444
+ metadata: v.definition,
445
+ explore: v.explore,
446
+ });
447
+ },
448
+ decoder: function (v) {
449
+ return decode_array({
450
+ config: props.config,
451
+ importer: props.importer,
452
+ input: v.input,
453
+ array: v.definition,
454
+ explore: v.explore,
455
+ });
456
+ },
457
+ empty: typescript_1.default.factory.createIdentifier("[]"),
458
+ success: typescript_1.default.factory.createTrue(),
459
+ failure: function (v) {
460
+ return create_throw_error({
461
+ importer: props.importer,
462
+ expected: v.expected,
463
+ input: v.input,
464
+ });
465
+ },
466
+ },
467
+ parameters: next.parameters,
468
+ input: next.input,
469
+ arrays: next.definitions,
470
+ explore: next.explore,
471
+ });
472
+ }, definitions: props.arrays, input: props.input, explore: props.explore }));
410
473
  };
411
474
  var explore_array_like_union_types = function (props) {
412
475
  var arrow = function (parameters) {
413
476
  return function (explore) {
414
477
  return function (input) {
415
- return props.factory(parameters)(input, props.elements, explore);
478
+ return props.factory({
479
+ parameters: parameters,
480
+ input: input,
481
+ definitions: props.definitions,
482
+ explore: explore,
483
+ });
416
484
  };
417
485
  };
418
486
  };
419
- if (props.elements.every(function (e) { return e.type.recursive === false; }))
487
+ if (props.definitions.every(function (e) { return e.type.recursive === false; }))
420
488
  typescript_1.default.factory.createCallExpression(arrow([])(props.explore)(props.input), undefined, []);
421
489
  var arrayExplore = __assign(__assign({}, props.explore), { source: "function", from: "array" });
422
- return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier(props.importer.emplaceUnion(props.config.prefix, props.elements.map(function (e) { return e.type.name; }).join(" | "), function () {
423
- return arrow(FeatureProgrammer_1.FeatureProgrammer.parameterDeclarations(props.config)(TypeFactory_1.TypeFactory.keyword("any"))(typescript_1.default.factory.createIdentifier("input")))(__assign(__assign({}, arrayExplore), { postfix: "" }))(typescript_1.default.factory.createIdentifier("input"));
424
- })), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray(props.config)(arrayExplore)(props.input));
490
+ return 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 () {
491
+ return arrow(FeatureProgrammer_1.FeatureProgrammer.parameterDeclarations({
492
+ config: props.config,
493
+ type: TypeFactory_1.TypeFactory.keyword("any"),
494
+ input: typescript_1.default.factory.createIdentifier("input"),
495
+ }))(__assign(__assign({}, arrayExplore), { postfix: "" }))(typescript_1.default.factory.createIdentifier("input"));
496
+ })), undefined, FeatureProgrammer_1.FeatureProgrammer.argumentsArray({
497
+ config: props.config,
498
+ explore: arrayExplore,
499
+ input: props.input,
500
+ }));
425
501
  };
426
502
  /* -----------------------------------------------------------
427
503
  CONFIGURATIONS
@@ -434,95 +510,128 @@ var NotationGeneralProgrammer;
434
510
  return typescript_1.default.factory.createTypeReferenceNode(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(props.context.checker)(type));
435
511
  },
436
512
  output: function (type, name) {
437
- return typescript_1.default.factory.createTypeReferenceNode(NotationGeneralProgrammer.returnType(props.rename)(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(props.context.checker)(type)));
513
+ return typescript_1.default.factory.createTypeReferenceNode(NotationGeneralProgrammer.returnType({
514
+ rename: props.rename,
515
+ type: name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(props.context.checker)(type),
516
+ }));
438
517
  },
439
518
  },
440
519
  prefix: PREFIX,
441
520
  trace: false,
442
521
  path: false,
443
522
  initializer: initializer,
444
- decoder: function () { return function (input, metadata, explore) {
523
+ decoder: function (next) {
445
524
  return decode({
446
525
  context: props.context,
447
526
  config: config,
448
527
  importer: props.importer,
449
- metadata: metadata,
450
- explore: explore,
451
- input: input,
528
+ metadata: next.metadata,
529
+ explore: next.explore,
530
+ input: next.input,
452
531
  });
453
- }; },
532
+ },
454
533
  objector: {
455
- checker: function () { return function (input, metadata, explore) {
534
+ checker: function (next) {
456
535
  return IsProgrammer_1.IsProgrammer.decode({
457
536
  context: props.context,
458
537
  importer: props.importer,
459
- input: input,
460
- metadata: metadata,
461
- explore: explore,
538
+ input: next.input,
539
+ metadata: next.metadata,
540
+ explore: next.explore,
462
541
  });
463
- }; },
464
- decoder: function () { return decode_object(props.importer); },
465
- joiner: NotationJoiner_1.NotationJoiner.object(props.rename),
466
- unionizer: (0, decode_union_object_1.decode_union_object)(function (input, object, explore) {
467
- return IsProgrammer_1.IsProgrammer.decode_object({
468
- context: props.context,
542
+ },
543
+ decoder: function (next) {
544
+ return decode_object({
469
545
  importer: props.importer,
470
- object: object,
471
- input: input,
472
- explore: explore,
546
+ object: next.object,
547
+ input: next.input,
548
+ explore: next.explore,
473
549
  });
474
- })(decode_object(props.importer))(function (exp) { return exp; })(function (input, expected) {
475
- return create_throw_error({
476
- importer: props.importer,
477
- expected: expected,
478
- input: input,
550
+ },
551
+ joiner: function (next) {
552
+ return NotationJoiner_1.NotationJoiner.object({
553
+ rename: props.rename,
554
+ input: next.input,
555
+ entries: next.entries,
479
556
  });
480
- }),
481
- failure: function (input, expected) {
557
+ },
558
+ unionizer: function (next) {
559
+ return (0, decode_union_object_1.decode_union_object)({
560
+ checker: function (v) {
561
+ return IsProgrammer_1.IsProgrammer.decode_object({
562
+ context: props.context,
563
+ importer: props.importer,
564
+ object: v.object,
565
+ input: v.input,
566
+ explore: v.explore,
567
+ });
568
+ },
569
+ decoder: function (v) {
570
+ return decode_object({
571
+ importer: props.importer,
572
+ object: v.object,
573
+ input: v.input,
574
+ explore: v.explore,
575
+ });
576
+ },
577
+ success: function (exp) { return exp; },
578
+ escaper: function (v) {
579
+ return create_throw_error({
580
+ importer: props.importer,
581
+ expected: v.expected,
582
+ input: v.input,
583
+ });
584
+ },
585
+ input: next.input,
586
+ objects: next.objects,
587
+ explore: next.explore,
588
+ });
589
+ },
590
+ failure: function (next) {
482
591
  return create_throw_error({
483
592
  importer: props.importer,
484
- expected: expected,
485
- input: input,
593
+ expected: next.expected,
594
+ input: next.input,
486
595
  });
487
596
  },
488
597
  },
489
598
  generator: {
490
- arrays: function () { return function (collection) {
599
+ arrays: function (collection) {
491
600
  return write_array_functions({
492
601
  importer: props.importer,
493
602
  config: config,
494
603
  collection: collection,
495
604
  });
496
- }; },
497
- tuples: function () { return function (collection) {
605
+ },
606
+ tuples: function (collection) {
498
607
  return write_tuple_functions({
499
608
  context: props.context,
500
609
  importer: props.importer,
501
610
  config: config,
502
611
  collection: collection,
503
612
  });
504
- }; },
613
+ },
505
614
  },
506
615
  };
507
616
  return config;
508
617
  };
509
- var initializer = function (project) { return function (importer) { return function (type) {
618
+ var initializer = function (props) {
510
619
  var collection = new MetadataCollection_1.MetadataCollection();
511
620
  var result = MetadataFactory_1.MetadataFactory.analyze({
512
- checker: project.checker,
513
- transformer: project.transformer,
621
+ checker: props.context.checker,
622
+ transformer: props.context.transformer,
514
623
  options: {
515
624
  escape: false,
516
625
  constant: true,
517
626
  absorb: true,
518
627
  },
519
628
  collection: collection,
520
- type: type,
629
+ type: props.type,
521
630
  });
522
631
  if (result.success === false)
523
- throw TransformerError_1.TransformerError.from("typia.misc.".concat(importer.method))(result.errors);
632
+ throw TransformerError_1.TransformerError.from("typia.misc.".concat(props.importer.method))(result.errors);
524
633
  return [collection, result.data];
525
- }; }; };
634
+ };
526
635
  var create_throw_error = function (props) {
527
636
  return typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createCallExpression(props.importer.use("throws"), [], [
528
637
  typescript_1.default.factory.createObjectLiteralExpression([
@@ -531,14 +640,14 @@ var NotationGeneralProgrammer;
531
640
  ], true),
532
641
  ]));
533
642
  };
534
- var is_instance = function (meta) {
535
- return !!meta.objects.length ||
536
- !!meta.arrays.length ||
537
- !!meta.tuples.length ||
538
- !!meta.sets.length ||
539
- !!meta.maps.length ||
540
- !!meta.natives.length ||
541
- (meta.rest !== null && is_instance(meta.rest));
643
+ var is_instance = function (metadata) {
644
+ return !!metadata.objects.length ||
645
+ !!metadata.arrays.length ||
646
+ !!metadata.tuples.length ||
647
+ !!metadata.sets.length ||
648
+ !!metadata.maps.length ||
649
+ !!metadata.natives.length ||
650
+ (metadata.rest !== null && is_instance(metadata.rest));
542
651
  };
543
652
  })(NotationGeneralProgrammer || (exports.NotationGeneralProgrammer = NotationGeneralProgrammer = {}));
544
653
  //# sourceMappingURL=NotationGeneralProgrammer.js.map