typia 7.0.0-dev.20240930 → 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 (169) hide show
  1. package/lib/index.mjs +25 -25
  2. package/lib/index.mjs.map +1 -1
  3. package/lib/programmers/AssertProgrammer.js +20 -17
  4. package/lib/programmers/AssertProgrammer.js.map +1 -1
  5. package/lib/programmers/CheckerProgrammer.js +274 -216
  6. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  7. package/lib/programmers/FeatureProgrammer.js +16 -8
  8. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  9. package/lib/programmers/IsProgrammer.js +38 -20
  10. package/lib/programmers/IsProgrammer.js.map +1 -1
  11. package/lib/programmers/RandomProgrammer.js +83 -68
  12. package/lib/programmers/RandomProgrammer.js.map +1 -1
  13. package/lib/programmers/TypiaProgrammer.d.ts +2 -2
  14. package/lib/programmers/TypiaProgrammer.js +79 -75
  15. package/lib/programmers/TypiaProgrammer.js.map +1 -1
  16. package/lib/programmers/ValidateProgrammer.js +39 -17
  17. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  18. package/lib/programmers/helpers/CloneJoiner.js +4 -1
  19. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  20. package/lib/programmers/helpers/NotationJoiner.d.ts +2 -1
  21. package/lib/programmers/helpers/NotationJoiner.js +34 -33
  22. package/lib/programmers/helpers/NotationJoiner.js.map +1 -1
  23. package/lib/programmers/helpers/PruneJoiner.js +4 -1
  24. package/lib/programmers/helpers/PruneJoiner.js.map +1 -1
  25. package/lib/programmers/helpers/RandomJoiner.d.ts +1 -1
  26. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  27. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  28. package/lib/programmers/helpers/StringifyJoinder.js +4 -1
  29. package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
  30. package/lib/programmers/helpers/StringifyPredicator.d.ts +1 -1
  31. package/lib/programmers/helpers/StringifyPredicator.js +4 -3
  32. package/lib/programmers/helpers/StringifyPredicator.js.map +1 -1
  33. package/lib/programmers/helpers/UnionExplorer.d.ts +52 -12
  34. package/lib/programmers/helpers/UnionExplorer.js +183 -144
  35. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  36. package/lib/programmers/helpers/UnionPredicator.d.ts +1 -1
  37. package/lib/programmers/helpers/UnionPredicator.js +7 -7
  38. package/lib/programmers/http/HttpFormDataProgrammer.js +77 -70
  39. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  40. package/lib/programmers/http/HttpHeadersProgrammer.js +69 -68
  41. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  42. package/lib/programmers/http/HttpQueryProgrammer.js +69 -62
  43. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  44. package/lib/programmers/internal/application_escaped.js +4 -4
  45. package/lib/programmers/internal/application_escaped.js.map +1 -1
  46. package/lib/programmers/internal/application_templates.js +8 -2
  47. package/lib/programmers/internal/application_templates.js.map +1 -1
  48. package/lib/programmers/internal/application_union_discriminator.d.ts +1 -1
  49. package/lib/programmers/internal/application_union_discriminator.js +6 -6
  50. package/lib/programmers/internal/application_union_discriminator.js.map +1 -1
  51. package/lib/programmers/internal/application_v30_object.js +6 -3
  52. package/lib/programmers/internal/application_v30_object.js.map +1 -1
  53. package/lib/programmers/internal/application_v31_object.js +4 -1
  54. package/lib/programmers/internal/application_v31_object.js.map +1 -1
  55. package/lib/programmers/internal/check_array_length.js +21 -26
  56. package/lib/programmers/internal/check_array_length.js.map +1 -1
  57. package/lib/programmers/internal/check_bigint.js +18 -26
  58. package/lib/programmers/internal/check_bigint.js.map +1 -1
  59. package/lib/programmers/internal/check_dynamic_key.d.ts +1 -5
  60. package/lib/programmers/internal/check_dynamic_key.js +109 -91
  61. package/lib/programmers/internal/check_dynamic_key.js.map +1 -1
  62. package/lib/programmers/internal/check_dynamic_properties.js +88 -90
  63. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  64. package/lib/programmers/internal/check_native.js +8 -5
  65. package/lib/programmers/internal/check_native.js.map +1 -1
  66. package/lib/programmers/internal/check_number.js +59 -65
  67. package/lib/programmers/internal/check_number.js.map +1 -1
  68. package/lib/programmers/internal/check_object.js +31 -22
  69. package/lib/programmers/internal/check_object.js.map +1 -1
  70. package/lib/programmers/internal/check_string.js +18 -26
  71. package/lib/programmers/internal/check_string.js.map +1 -1
  72. package/lib/programmers/internal/check_template.js +20 -21
  73. package/lib/programmers/internal/check_template.js.map +1 -1
  74. package/lib/programmers/internal/check_union_array_like.js +68 -53
  75. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  76. package/lib/programmers/internal/decode_union_object.js +59 -49
  77. package/lib/programmers/internal/decode_union_object.js.map +1 -1
  78. package/lib/programmers/internal/feature_object_entries.js +31 -37
  79. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  80. package/lib/programmers/internal/llm_schema_escaped.js +29 -11
  81. package/lib/programmers/internal/llm_schema_escaped.js.map +1 -1
  82. package/lib/programmers/internal/llm_schema_object.js +4 -1
  83. package/lib/programmers/internal/llm_schema_object.js.map +1 -1
  84. package/lib/programmers/internal/metadata_to_pattern.js +44 -41
  85. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
  86. package/lib/programmers/internal/postfix_of_tuple.d.ts +1 -1
  87. package/lib/programmers/internal/postfix_of_tuple.js +3 -0
  88. package/lib/programmers/internal/postfix_of_tuple.js.map +1 -1
  89. package/lib/programmers/internal/prune_object_properties.js +6 -3
  90. package/lib/programmers/internal/prune_object_properties.js.map +1 -1
  91. package/lib/programmers/internal/random_custom.js +8 -14
  92. package/lib/programmers/internal/random_custom.js.map +1 -1
  93. package/lib/programmers/internal/stringify_dynamic_properties.js +4 -1
  94. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  95. package/lib/programmers/internal/stringify_regular_properties.js +4 -4
  96. package/lib/programmers/internal/stringify_regular_properties.js.map +1 -1
  97. package/lib/programmers/internal/template_to_pattern.js +10 -5
  98. package/lib/programmers/internal/template_to_pattern.js.map +1 -1
  99. package/lib/programmers/internal/wrap_metadata_rest_tuple.d.ts +1 -2
  100. package/lib/programmers/internal/wrap_metadata_rest_tuple.js +3 -0
  101. package/lib/programmers/internal/wrap_metadata_rest_tuple.js.map +1 -1
  102. package/lib/programmers/json/JsonStringifyProgrammer.js +76 -52
  103. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  104. package/lib/programmers/misc/MiscCloneProgrammer.js +143 -115
  105. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  106. package/lib/programmers/misc/MiscPruneProgrammer.js +65 -50
  107. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  108. package/lib/programmers/notations/NotationGeneralProgrammer.d.ts +4 -1
  109. package/lib/programmers/notations/NotationGeneralProgrammer.js +166 -115
  110. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  111. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +32 -24
  112. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  113. package/lib/utils/NamingConvention/NamingConvention.js +41 -47
  114. package/lib/utils/NamingConvention/NamingConvention.js.map +1 -1
  115. package/package.json +1 -1
  116. package/src/programmers/AssertProgrammer.ts +30 -27
  117. package/src/programmers/CheckerProgrammer.ts +279 -248
  118. package/src/programmers/FeatureProgrammer.ts +17 -15
  119. package/src/programmers/IsProgrammer.ts +34 -20
  120. package/src/programmers/RandomProgrammer.ts +18 -9
  121. package/src/programmers/TypiaProgrammer.ts +48 -34
  122. package/src/programmers/ValidateProgrammer.ts +50 -27
  123. package/src/programmers/helpers/CloneJoiner.ts +4 -1
  124. package/src/programmers/helpers/NotationJoiner.ts +85 -83
  125. package/src/programmers/helpers/ProtobufUtil.ts +2 -2
  126. package/src/programmers/helpers/PruneJoiner.ts +4 -1
  127. package/src/programmers/helpers/RandomJoiner.ts +5 -2
  128. package/src/programmers/helpers/RandomRanger.ts +8 -1
  129. package/src/programmers/helpers/StringifyJoinder.ts +4 -1
  130. package/src/programmers/helpers/StringifyPredicator.ts +4 -3
  131. package/src/programmers/helpers/UnionExplorer.ts +279 -202
  132. package/src/programmers/helpers/UnionPredicator.ts +5 -5
  133. package/src/programmers/http/HttpFormDataProgrammer.ts +135 -114
  134. package/src/programmers/http/HttpHeadersProgrammer.ts +145 -120
  135. package/src/programmers/http/HttpQueryProgrammer.ts +137 -116
  136. package/src/programmers/internal/application_escaped.ts +6 -6
  137. package/src/programmers/internal/application_templates.ts +8 -6
  138. package/src/programmers/internal/application_union_discriminator.ts +6 -6
  139. package/src/programmers/internal/application_v30_object.ts +6 -3
  140. package/src/programmers/internal/application_v31_object.ts +4 -1
  141. package/src/programmers/internal/application_v31_tuple.ts +1 -1
  142. package/src/programmers/internal/check_array_length.ts +31 -30
  143. package/src/programmers/internal/check_bigint.ts +31 -31
  144. package/src/programmers/internal/check_dynamic_key.ts +155 -126
  145. package/src/programmers/internal/check_dynamic_properties.ts +152 -154
  146. package/src/programmers/internal/check_native.ts +11 -5
  147. package/src/programmers/internal/check_number.ts +88 -84
  148. package/src/programmers/internal/check_object.ts +45 -31
  149. package/src/programmers/internal/check_string.ts +31 -30
  150. package/src/programmers/internal/check_template.ts +34 -32
  151. package/src/programmers/internal/check_union_array_like.ts +245 -228
  152. package/src/programmers/internal/decode_union_object.ts +92 -75
  153. package/src/programmers/internal/feature_object_entries.ts +43 -46
  154. package/src/programmers/internal/llm_schema_escaped.ts +36 -13
  155. package/src/programmers/internal/llm_schema_object.ts +4 -1
  156. package/src/programmers/internal/metadata_to_pattern.ts +31 -23
  157. package/src/programmers/internal/postfix_of_tuple.ts +3 -0
  158. package/src/programmers/internal/prune_object_properties.ts +6 -3
  159. package/src/programmers/internal/random_custom.ts +24 -23
  160. package/src/programmers/internal/stringify_dynamic_properties.ts +4 -1
  161. package/src/programmers/internal/stringify_regular_properties.ts +7 -7
  162. package/src/programmers/internal/template_to_pattern.ts +12 -4
  163. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +3 -0
  164. package/src/programmers/json/JsonStringifyProgrammer.ts +71 -51
  165. package/src/programmers/misc/MiscCloneProgrammer.ts +156 -132
  166. package/src/programmers/misc/MiscPruneProgrammer.ts +61 -49
  167. package/src/programmers/notations/NotationGeneralProgrammer.ts +193 -144
  168. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +25 -21
  169. package/src/utils/NamingConvention/NamingConvention.ts +40 -42
@@ -236,7 +236,11 @@ export namespace JsonStringifyProgrammer {
236
236
  is:
237
237
  props.metadata.escaped.original.size() === 1 &&
238
238
  props.metadata.escaped.original.natives[0] === "Date"
239
- ? () => check_native("Date")(props.input)
239
+ ? () =>
240
+ check_native({
241
+ type: "Date",
242
+ input: props.input,
243
+ })
240
244
  : () =>
241
245
  IsProgrammer.decode_to_json({
242
246
  checkNull: false,
@@ -421,7 +425,11 @@ export namespace JsonStringifyProgrammer {
421
425
  for (const native of props.metadata.natives)
422
426
  unions.push({
423
427
  type: "object",
424
- is: () => check_native(native)(props.input),
428
+ is: () =>
429
+ check_native({
430
+ type: native,
431
+ input: props.input,
432
+ }),
425
433
  value: () =>
426
434
  AtomicPredicator.native(native)
427
435
  ? decode_atomic({
@@ -777,31 +785,38 @@ export namespace JsonStringifyProgrammer {
777
785
  elements: props.arrays,
778
786
  factory: (next) =>
779
787
  UnionExplorer.array({
780
- checker: (input, metadata, explore) =>
781
- IsProgrammer.decode({
782
- context: props.context,
783
- importer: props.importer,
784
- metadata,
785
- input,
786
- explore,
787
- }),
788
- decoder: (input, array, explore) =>
789
- decode_array({
790
- config: props.config,
791
- importer: props.importer,
792
- input,
793
- array,
794
- explore,
795
- }),
796
- empty: ts.factory.createStringLiteral("[]"),
797
- success: ts.factory.createTrue(),
798
- failure: (input, expected) =>
799
- create_throw_error({
800
- importer: props.importer,
801
- expected,
802
- input,
803
- }),
804
- })(next.parameters)(next.input, next.elements, next.explore),
788
+ config: {
789
+ checker: (v) =>
790
+ IsProgrammer.decode({
791
+ context: props.context,
792
+ importer: props.importer,
793
+ metadata: v.definition,
794
+ input: v.input,
795
+ explore: v.explore,
796
+ }),
797
+ decoder: (v) =>
798
+ decode_array({
799
+ config: props.config,
800
+ importer: props.importer,
801
+ input: v.input,
802
+ array: v.definition,
803
+ explore: v.explore,
804
+ }),
805
+ empty: ts.factory.createStringLiteral("[]"),
806
+ success: ts.factory.createTrue(),
807
+ failure: (v) =>
808
+ create_throw_error({
809
+ importer: props.importer,
810
+ expected: v.expected,
811
+ input: v.input,
812
+ }),
813
+ },
814
+ parameters: next.parameters,
815
+ input: next.input,
816
+ arrays: next.definitions,
817
+ explore: next.explore,
818
+ }),
819
+ //(next.parameters)(next.input, next.elements, next.explore),
805
820
  });
806
821
 
807
822
  const explore_array_like_union_types = <
@@ -812,7 +827,7 @@ export namespace JsonStringifyProgrammer {
812
827
  factory: (next: {
813
828
  parameters: ts.ParameterDeclaration[];
814
829
  input: ts.Expression;
815
- elements: T[];
830
+ definitions: T[];
816
831
  explore: FeatureProgrammer.IExplore;
817
832
  }) => ts.ArrowFunction;
818
833
  input: ts.Expression;
@@ -825,7 +840,7 @@ export namespace JsonStringifyProgrammer {
825
840
  input: ts.Expression;
826
841
  }): ts.ArrowFunction =>
827
842
  props.factory({
828
- elements: props.elements,
843
+ definitions: props.elements,
829
844
  parameters: next.parameters,
830
845
  input: next.input,
831
846
  explore: next.explore,
@@ -1005,28 +1020,33 @@ export namespace JsonStringifyProgrammer {
1005
1020
  importer: props.importer,
1006
1021
  }),
1007
1022
  unionizer: (next) =>
1008
- decode_union_object((input, object, explore) =>
1009
- IsProgrammer.decode_object({
1010
- context: props.context,
1011
- importer: props.importer,
1012
- input,
1013
- object,
1014
- explore,
1015
- }),
1016
- )((input, object, explore) =>
1017
- decode_object({
1018
- importer: props.importer,
1019
- input,
1020
- object,
1021
- explore,
1022
- }),
1023
- )((exp) => exp)((input, expected) =>
1024
- create_throw_error({
1025
- importer: props.importer,
1026
- expected,
1027
- input,
1028
- }),
1029
- )(next.input, next.objects, next.explore),
1023
+ decode_union_object({
1024
+ checker: (v) =>
1025
+ IsProgrammer.decode_object({
1026
+ context: props.context,
1027
+ importer: props.importer,
1028
+ input: v.input,
1029
+ object: v.object,
1030
+ explore: v.explore,
1031
+ }),
1032
+ decoder: (v) =>
1033
+ decode_object({
1034
+ importer: props.importer,
1035
+ input: v.input,
1036
+ object: v.object,
1037
+ explore: v.explore,
1038
+ }),
1039
+ success: (exp) => exp,
1040
+ escaper: (v) =>
1041
+ create_throw_error({
1042
+ importer: props.importer,
1043
+ expected: v.expected,
1044
+ input: v.input,
1045
+ }),
1046
+ objects: next.objects,
1047
+ explore: next.explore,
1048
+ input: next.input,
1049
+ }),
1030
1050
  failure: (next) =>
1031
1051
  create_throw_error({
1032
1052
  importer: props.importer,
@@ -581,41 +581,47 @@ export namespace MiscCloneProgrammer {
581
581
  }): ts.Expression =>
582
582
  ts.factory.createCallExpression(
583
583
  UnionExplorer.set({
584
- checker: (input, metadata, explore) =>
585
- IsProgrammer.decode({
586
- context: props.context,
587
- importer: props.importer,
588
- input,
589
- metadata,
590
- explore,
591
- }),
592
- decoder: (input, array, explore) =>
593
- ts.factory.createNewExpression(
584
+ config: {
585
+ checker: (v) =>
586
+ IsProgrammer.decode({
587
+ context: props.context,
588
+ importer: props.importer,
589
+ input: v.input,
590
+ metadata: v.definition,
591
+ explore: v.explore,
592
+ }),
593
+ decoder: (v) =>
594
+ ts.factory.createNewExpression(
595
+ ts.factory.createIdentifier("Set"),
596
+ [TypeFactory.keyword("any")],
597
+ [
598
+ decode_array({
599
+ config: props.config,
600
+ importer: props.importer,
601
+ input: v.input,
602
+ array: v.definition,
603
+ explore: v.explore,
604
+ }),
605
+ ],
606
+ ),
607
+ empty: ts.factory.createNewExpression(
594
608
  ts.factory.createIdentifier("Set"),
595
609
  [TypeFactory.keyword("any")],
596
- [
597
- decode_array({
598
- config: props.config,
599
- importer: props.importer,
600
- input,
601
- array,
602
- explore,
603
- }),
604
- ],
610
+ [],
605
611
  ),
606
- empty: ts.factory.createNewExpression(
607
- ts.factory.createIdentifier("Set"),
608
- [TypeFactory.keyword("any")],
609
- [],
610
- ),
611
- success: ts.factory.createTrue(),
612
- failure: (input, expected) =>
613
- create_throw_error({
614
- importer: props.importer,
615
- expected,
616
- input,
617
- }),
618
- })([])(props.input, props.sets, props.explore),
612
+ success: ts.factory.createTrue(),
613
+ failure: (v) =>
614
+ create_throw_error({
615
+ importer: props.importer,
616
+ expected: v.expected,
617
+ input: v.input,
618
+ }),
619
+ },
620
+ parameters: [],
621
+ input: props.input,
622
+ sets: props.sets,
623
+ explore: props.explore,
624
+ }),
619
625
  undefined,
620
626
  undefined,
621
627
  );
@@ -630,56 +636,63 @@ export namespace MiscCloneProgrammer {
630
636
  }): ts.Expression =>
631
637
  ts.factory.createCallExpression(
632
638
  UnionExplorer.map({
633
- checker: (top, entry, explore) =>
634
- ts.factory.createLogicalAnd(
635
- IsProgrammer.decode({
636
- context: props.context,
637
- importer: props.importer,
638
- input: ts.factory.createElementAccessExpression(top, 0),
639
- metadata: entry[0],
640
- explore: {
641
- ...explore,
642
- postfix: `${explore.postfix}[0]`,
643
- },
644
- }),
645
- IsProgrammer.decode({
646
- context: props.context,
647
- importer: props.importer,
648
- input: ts.factory.createElementAccessExpression(top, 1),
649
- metadata: entry[1],
650
- explore: {
651
- ...explore,
652
- postfix: `${explore.postfix}[1]`,
653
- },
654
- }),
655
- ),
656
- decoder: (input, array, explore) =>
657
- ts.factory.createNewExpression(
658
- ts.factory.createIdentifier("Map"),
659
- [TypeFactory.keyword("any"), TypeFactory.keyword("any")],
660
- [
661
- decode_array({
662
- config: props.config,
639
+ config: {
640
+ checker: (v) =>
641
+ ts.factory.createLogicalAnd(
642
+ IsProgrammer.decode({
643
+ context: props.context,
663
644
  importer: props.importer,
664
- input,
665
- array,
666
- explore,
645
+ input: ts.factory.createElementAccessExpression(v.input, 0),
646
+ metadata: v.definition[0],
647
+ explore: {
648
+ ...v.explore,
649
+ postfix: `${v.explore.postfix}[0]`,
650
+ },
667
651
  }),
668
- ],
652
+ IsProgrammer.decode({
653
+ context: props.context,
654
+ importer: props.importer,
655
+ input: ts.factory.createElementAccessExpression(v.input, 1),
656
+ metadata: v.definition[1],
657
+ explore: {
658
+ ...v.explore,
659
+ postfix: `${v.explore.postfix}[1]`,
660
+ },
661
+ }),
662
+ ),
663
+ decoder: (v) =>
664
+ ts.factory.createNewExpression(
665
+ ts.factory.createIdentifier("Map"),
666
+ [TypeFactory.keyword("any"), TypeFactory.keyword("any")],
667
+ [
668
+ decode_array({
669
+ config: props.config,
670
+ importer: props.importer,
671
+ input: v.input,
672
+ array: v.definition,
673
+ explore: v.explore,
674
+ }),
675
+ ],
676
+ ),
677
+ empty: ts.factory.createNewExpression(
678
+ ts.factory.createIdentifier("Map"),
679
+ [TypeFactory.keyword("any"), TypeFactory.keyword("any")],
680
+ [],
669
681
  ),
670
- empty: ts.factory.createNewExpression(
671
- ts.factory.createIdentifier("Map"),
672
- [TypeFactory.keyword("any"), TypeFactory.keyword("any")],
673
- [],
674
- ),
675
- success: ts.factory.createTrue(),
676
- failure: (input, expected) =>
677
- create_throw_error({
678
- importer: props.importer,
679
- expected,
680
- input,
681
- }),
682
- })([])(props.input, props.maps, props.explore),
682
+ success: ts.factory.createTrue(),
683
+ failure: (v) =>
684
+ create_throw_error({
685
+ importer: props.importer,
686
+ expected: v.expected,
687
+ input: v.input,
688
+ }),
689
+ },
690
+ parameters: [],
691
+ input: props.input,
692
+ maps: props.maps,
693
+ explore: props.explore,
694
+ }),
695
+ // ([])(props.input, props.maps, props.explore),
683
696
  undefined,
684
697
  undefined,
685
698
  );
@@ -714,34 +727,40 @@ export namespace MiscCloneProgrammer {
714
727
  }): ts.Expression =>
715
728
  explore_array_like_union_types({
716
729
  ...props,
717
- elements: props.arrays,
730
+ definitions: props.arrays,
718
731
  factory: (next) =>
719
732
  UnionExplorer.array({
720
- checker: (input, metadata, explore) =>
721
- IsProgrammer.decode({
722
- context: props.context,
723
- importer: props.importer,
724
- input,
725
- metadata,
726
- explore,
727
- }),
728
- decoder: (input, array, explore) =>
729
- decode_array({
730
- config: props.config,
731
- importer: props.importer,
732
- input,
733
- array,
734
- explore,
735
- }),
736
- empty: ts.factory.createIdentifier("[]"),
737
- success: ts.factory.createTrue(),
738
- failure: (input, expected) =>
739
- create_throw_error({
740
- importer: props.importer,
741
- expected,
742
- input,
743
- }),
744
- })(next.parameters)(next.input, next.elements, next.explore),
733
+ config: {
734
+ checker: (v) =>
735
+ IsProgrammer.decode({
736
+ context: props.context,
737
+ importer: props.importer,
738
+ input: v.input,
739
+ metadata: v.definition,
740
+ explore: v.explore,
741
+ }),
742
+ decoder: (v) =>
743
+ decode_array({
744
+ config: props.config,
745
+ importer: props.importer,
746
+ input: v.input,
747
+ array: v.definition,
748
+ explore: v.explore,
749
+ }),
750
+ empty: ts.factory.createIdentifier("[]"),
751
+ success: ts.factory.createTrue(),
752
+ failure: (v) =>
753
+ create_throw_error({
754
+ importer: props.importer,
755
+ expected: v.expected,
756
+ input: v.input,
757
+ }),
758
+ },
759
+ parameters: next.parameters,
760
+ arrays: next.definitions,
761
+ input: next.input,
762
+ explore: next.explore,
763
+ }),
745
764
  });
746
765
 
747
766
  const explore_array_like_union_types = <
@@ -752,11 +771,11 @@ export namespace MiscCloneProgrammer {
752
771
  factory: (next: {
753
772
  parameters: ts.ParameterDeclaration[];
754
773
  input: ts.Expression;
755
- elements: T[];
774
+ definitions: T[];
756
775
  explore: FeatureProgrammer.IExplore;
757
776
  }) => ts.ArrowFunction;
758
777
  input: ts.Expression;
759
- elements: T[];
778
+ definitions: T[];
760
779
  explore: FeatureProgrammer.IExplore;
761
780
  }): ts.Expression => {
762
781
  const arrow = (next: {
@@ -765,12 +784,12 @@ export namespace MiscCloneProgrammer {
765
784
  input: ts.Expression;
766
785
  }): ts.ArrowFunction =>
767
786
  props.factory({
768
- elements: props.elements,
787
+ definitions: props.definitions,
769
788
  parameters: next.parameters,
770
789
  input: next.input,
771
790
  explore: next.explore,
772
791
  });
773
- if (props.elements.every((e) => e.type.recursive === false))
792
+ if (props.definitions.every((e) => e.type.recursive === false))
774
793
  ts.factory.createCallExpression(
775
794
  arrow({
776
795
  parameters: [],
@@ -790,7 +809,7 @@ export namespace MiscCloneProgrammer {
790
809
  ts.factory.createIdentifier(
791
810
  props.importer.emplaceUnion(
792
811
  props.config.prefix,
793
- props.elements.map((e) => e.type.name).join(" | "),
812
+ props.definitions.map((e) => e.type.name).join(" | "),
794
813
  () =>
795
814
  arrow({
796
815
  parameters: FeatureProgrammer.parameterDeclarations({
@@ -876,28 +895,33 @@ export namespace MiscCloneProgrammer {
876
895
  }),
877
896
  joiner: CloneJoiner.object,
878
897
  unionizer: (next) =>
879
- decode_union_object((input, object, explore) =>
880
- IsProgrammer.decode_object({
881
- context: props.context,
882
- importer: props.importer,
883
- input,
884
- object,
885
- explore,
886
- }),
887
- )((input, object, explore) =>
888
- decode_object({
889
- importer: props.importer,
890
- input,
891
- object,
892
- explore,
893
- }),
894
- )((exp) => exp)((input, expected) =>
895
- create_throw_error({
896
- importer: props.importer,
897
- expected,
898
- input,
899
- }),
900
- )(next.input, next.objects, next.explore),
898
+ decode_union_object({
899
+ checker: (v) =>
900
+ IsProgrammer.decode_object({
901
+ context: props.context,
902
+ importer: props.importer,
903
+ input: v.input,
904
+ object: v.object,
905
+ explore: v.explore,
906
+ }),
907
+ decoder: (v) =>
908
+ decode_object({
909
+ importer: props.importer,
910
+ input: v.input,
911
+ object: v.object,
912
+ explore: v.explore,
913
+ }),
914
+ success: (exp) => exp,
915
+ escaper: (v) =>
916
+ create_throw_error({
917
+ importer: props.importer,
918
+ expected: v.expected,
919
+ input: v.input,
920
+ }),
921
+ input: next.input,
922
+ objects: next.objects,
923
+ explore: next.explore,
924
+ }),
901
925
  failure: (next) =>
902
926
  create_throw_error({
903
927
  importer: props.importer,
@@ -455,32 +455,39 @@ export namespace MiscPruneProgrammer {
455
455
  elements: props.arrays,
456
456
  factory: (next) =>
457
457
  UnionExplorer.array({
458
- checker: (input, metadata, explore) =>
459
- IsProgrammer.decode({
460
- context: props.context,
461
- importer: props.importer,
462
- metadata,
463
- input,
464
- explore,
465
- }),
466
- decoder: (input, array, explore) =>
467
- decode_array({
468
- config: props.config,
469
- importer: props.importer,
470
- input,
471
- array,
472
- explore,
473
- }),
474
- empty: ts.factory.createStringLiteral("[]"),
475
- success: ts.factory.createTrue(),
476
- failure: (input, expected) =>
477
- create_throw_error({
478
- importer: props.importer,
479
- expected,
480
- input,
481
- }),
482
- })(next.parameters)(next.input, next.elements, next.explore),
458
+ config: {
459
+ checker: (v) =>
460
+ IsProgrammer.decode({
461
+ context: props.context,
462
+ importer: props.importer,
463
+ metadata: v.definition,
464
+ input: v.input,
465
+ explore: v.explore,
466
+ }),
467
+ decoder: (v) =>
468
+ decode_array({
469
+ config: props.config,
470
+ importer: props.importer,
471
+ input: v.input,
472
+ array: v.definition,
473
+ explore: v.explore,
474
+ }),
475
+ empty: ts.factory.createStringLiteral("[]"),
476
+ success: ts.factory.createTrue(),
477
+ failure: (v) =>
478
+ create_throw_error({
479
+ importer: props.importer,
480
+ expected: v.expected,
481
+ input: v.input,
482
+ }),
483
+ },
484
+ parameters: next.parameters,
485
+ input: next.input,
486
+ arrays: next.definitions,
487
+ explore: next.explore,
488
+ }),
483
489
  });
490
+ //(next.parameters)(next.input, next.elements, next.explore),
484
491
 
485
492
  const explore_array_like_union_types = <
486
493
  T extends MetadataArray | MetadataTuple,
@@ -490,7 +497,7 @@ export namespace MiscPruneProgrammer {
490
497
  factory: (next: {
491
498
  parameters: ts.ParameterDeclaration[];
492
499
  input: ts.Expression;
493
- elements: T[];
500
+ definitions: T[];
494
501
  explore: FeatureProgrammer.IExplore;
495
502
  }) => ts.ArrowFunction;
496
503
  input: ts.Expression;
@@ -503,7 +510,7 @@ export namespace MiscPruneProgrammer {
503
510
  input: ts.Expression;
504
511
  }): ts.ArrowFunction =>
505
512
  props.factory({
506
- elements: props.elements,
513
+ definitions: props.elements,
507
514
  parameters: next.parameters,
508
515
  input: next.input,
509
516
  explore: next.explore,
@@ -608,28 +615,33 @@ export namespace MiscPruneProgrammer {
608
615
  }),
609
616
  joiner: PruneJoiner.object,
610
617
  unionizer: (next) =>
611
- decode_union_object((input, object, explore) =>
612
- IsProgrammer.decode_object({
613
- context: props.context,
614
- importer: props.importer,
615
- input,
616
- object,
617
- explore,
618
- }),
619
- )((input, object, explore) =>
620
- decode_object({
621
- importer: props.importer,
622
- input,
623
- object,
624
- explore,
625
- }),
626
- )((exp) => exp)((input, expected) =>
627
- create_throw_error({
628
- importer: props.importer,
629
- expected,
630
- input,
631
- }),
632
- )(next.input, next.objects, next.explore),
618
+ decode_union_object({
619
+ checker: (v) =>
620
+ IsProgrammer.decode_object({
621
+ context: props.context,
622
+ importer: props.importer,
623
+ input: v.input,
624
+ object: v.object,
625
+ explore: v.explore,
626
+ }),
627
+ decoder: (v) =>
628
+ decode_object({
629
+ importer: props.importer,
630
+ input: v.input,
631
+ object: v.object,
632
+ explore: v.explore,
633
+ }),
634
+ success: (exp) => exp,
635
+ escaper: (v) =>
636
+ create_throw_error({
637
+ importer: props.importer,
638
+ expected: v.expected,
639
+ input: v.input,
640
+ }),
641
+ input: next.input,
642
+ objects: next.objects,
643
+ explore: next.explore,
644
+ }),
633
645
  failure: (next) =>
634
646
  create_throw_error({
635
647
  importer: props.importer,