typia 5.0.0-dev.20230822 → 5.0.0-dev.20230823-2

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 (137) hide show
  1. package/README.md +1 -1
  2. package/lib/Primitive.d.ts +14 -12
  3. package/lib/Resolved.d.ts +46 -0
  4. package/lib/{schemas/metadata/IMetadataResolved.js → Resolved.js} +1 -1
  5. package/lib/Resolved.js.map +1 -0
  6. package/lib/factories/MetadataFactory.d.ts +1 -1
  7. package/lib/factories/MetadataTagFactory.js +6 -6
  8. package/lib/factories/MetadataTagFactory.js.map +1 -1
  9. package/lib/factories/ProtobufFactory.js +2 -2
  10. package/lib/factories/ProtobufFactory.js.map +1 -1
  11. package/lib/factories/internal/metadata/explore_metadata.js +3 -3
  12. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  13. package/lib/factories/internal/metadata/iterate_metadata_collection.js +6 -6
  14. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  15. package/lib/factories/internal/metadata/iterate_metadata_native.js +2 -10
  16. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  17. package/lib/factories/internal/metadata/iterate_metadata_resolve.js +6 -6
  18. package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -1
  19. package/lib/factories/internal/metadata/iterate_metadata_sort.js +2 -2
  20. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  21. package/lib/functional/$ProtobufWriter.js.map +1 -1
  22. package/lib/json.d.ts +15 -15
  23. package/lib/misc.d.ts +42 -42
  24. package/lib/module.d.ts +18 -17
  25. package/lib/module.js +1 -0
  26. package/lib/module.js.map +1 -1
  27. package/lib/programmers/AssertProgrammer.js +1 -1
  28. package/lib/programmers/AssertProgrammer.js.map +1 -1
  29. package/lib/programmers/CheckerProgrammer.js +1 -1
  30. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  31. package/lib/programmers/IsProgrammer.js +2 -2
  32. package/lib/programmers/IsProgrammer.js.map +1 -1
  33. package/lib/programmers/RandomProgrammer.js +307 -132
  34. package/lib/programmers/RandomProgrammer.js.map +1 -1
  35. package/lib/programmers/ValidateProgrammer.js +1 -1
  36. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  37. package/lib/programmers/helpers/FunctionImporeter.d.ts +2 -0
  38. package/lib/programmers/helpers/FunctionImporeter.js +2 -1
  39. package/lib/programmers/helpers/FunctionImporeter.js.map +1 -1
  40. package/lib/programmers/helpers/StringifyPredicator.js +1 -2
  41. package/lib/programmers/helpers/StringifyPredicator.js.map +1 -1
  42. package/lib/programmers/helpers/disable_function_importer_declare.js +1 -0
  43. package/lib/programmers/helpers/disable_function_importer_declare.js.map +1 -1
  44. package/lib/programmers/internal/application_resolved.d.ts +2 -2
  45. package/lib/programmers/internal/application_resolved.js.map +1 -1
  46. package/lib/programmers/internal/application_schema.js +2 -2
  47. package/lib/programmers/internal/application_schema.js.map +1 -1
  48. package/lib/programmers/json/JsonStringifyProgrammer.js +4 -4
  49. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  50. package/lib/programmers/misc/MiscAssertCloneProgrammer.js +1 -1
  51. package/lib/programmers/misc/MiscAssertCloneProgrammer.js.map +1 -1
  52. package/lib/programmers/misc/MiscCloneProgrammer.js +114 -33
  53. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  54. package/lib/programmers/misc/MiscIsCloneProgrammer.js +1 -1
  55. package/lib/programmers/misc/MiscIsCloneProgrammer.js.map +1 -1
  56. package/lib/programmers/misc/MiscLiteralsProgrammer.js +1 -1
  57. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  58. package/lib/programmers/misc/MiscPruneProgrammer.js +2 -2
  59. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  60. package/lib/programmers/misc/MiscValidateCloneProgrammer.js +1 -1
  61. package/lib/programmers/misc/MiscValidateCloneProgrammer.js.map +1 -1
  62. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +3 -3
  63. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
  64. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +15 -10
  65. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  66. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +8 -6
  67. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  68. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js +2 -2
  69. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js.map +1 -1
  70. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js +1 -1
  71. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js.map +1 -1
  72. package/lib/protobuf.d.ts +631 -10
  73. package/lib/protobuf.js +13 -13
  74. package/lib/protobuf.js.map +1 -1
  75. package/lib/schemas/metadata/IMetadata.d.ts +2 -2
  76. package/lib/schemas/metadata/{IMetadataResolved.d.ts → IMetadataEscaped.d.ts} +1 -1
  77. package/lib/schemas/metadata/IMetadataEscaped.js +3 -0
  78. package/lib/schemas/metadata/IMetadataEscaped.js.map +1 -0
  79. package/lib/schemas/metadata/Metadata.d.ts +2 -2
  80. package/lib/schemas/metadata/Metadata.js +15 -15
  81. package/lib/schemas/metadata/Metadata.js.map +1 -1
  82. package/lib/schemas/metadata/{MetadataResolved.d.ts → MetadataEscaped.d.ts} +3 -3
  83. package/lib/schemas/metadata/{MetadataResolved.js → MetadataEscaped.js} +11 -11
  84. package/lib/schemas/metadata/MetadataEscaped.js.map +1 -0
  85. package/lib/transformers/features/json/JsonApplicationTransformer.js +1 -1
  86. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  87. package/lib/transformers/features/misc/MetadataTransformer.js +1 -1
  88. package/lib/transformers/features/misc/MetadataTransformer.js.map +1 -1
  89. package/lib/utils/RandomGenerator.js +3 -2
  90. package/lib/utils/RandomGenerator.js.map +1 -1
  91. package/package.json +2 -1
  92. package/src/Primitive.ts +19 -15
  93. package/src/Resolved.ts +116 -0
  94. package/src/factories/MetadataFactory.ts +1 -1
  95. package/src/factories/MetadataTagFactory.ts +6 -6
  96. package/src/factories/ProtobufFactory.ts +2 -2
  97. package/src/factories/internal/metadata/explore_metadata.ts +3 -3
  98. package/src/factories/internal/metadata/iterate_metadata_collection.ts +6 -6
  99. package/src/factories/internal/metadata/iterate_metadata_native.ts +0 -9
  100. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +6 -6
  101. package/src/factories/internal/metadata/iterate_metadata_sort.ts +2 -2
  102. package/src/functional/$ProtobufWriter.ts +1 -2
  103. package/src/json.ts +15 -15
  104. package/src/misc.ts +42 -42
  105. package/src/module.ts +18 -17
  106. package/src/programmers/AssertProgrammer.ts +3 -1
  107. package/src/programmers/CheckerProgrammer.ts +1 -1
  108. package/src/programmers/IsProgrammer.ts +4 -2
  109. package/src/programmers/RandomProgrammer.ts +322 -26
  110. package/src/programmers/ValidateProgrammer.ts +3 -1
  111. package/src/programmers/helpers/FunctionImporeter.ts +2 -0
  112. package/src/programmers/helpers/StringifyPredicator.ts +1 -2
  113. package/src/programmers/helpers/disable_function_importer_declare.ts +6 -1
  114. package/src/programmers/internal/application_resolved.ts +2 -2
  115. package/src/programmers/internal/application_schema.ts +2 -2
  116. package/src/programmers/json/JsonStringifyProgrammer.ts +6 -4
  117. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +1 -1
  118. package/src/programmers/misc/MiscCloneProgrammer.ts +229 -41
  119. package/src/programmers/misc/MiscIsCloneProgrammer.ts +1 -1
  120. package/src/programmers/misc/MiscLiteralsProgrammer.ts +1 -1
  121. package/src/programmers/misc/MiscPruneProgrammer.ts +4 -2
  122. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +1 -1
  123. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +18 -9
  124. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +45 -25
  125. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +15 -13
  126. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +12 -2
  127. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +2 -2
  128. package/src/protobuf.ts +663 -31
  129. package/src/schemas/metadata/IMetadata.ts +2 -2
  130. package/src/schemas/metadata/{IMetadataResolved.ts → IMetadataEscaped.ts} +1 -1
  131. package/src/schemas/metadata/Metadata.ts +17 -20
  132. package/src/schemas/metadata/{MetadataResolved.ts → MetadataEscaped.ts} +9 -9
  133. package/src/transformers/features/json/JsonApplicationTransformer.ts +1 -1
  134. package/src/transformers/features/misc/MetadataTransformer.ts +1 -1
  135. package/src/utils/RandomGenerator.ts +4 -2
  136. package/lib/schemas/metadata/IMetadataResolved.js.map +0 -1
  137. package/lib/schemas/metadata/MetadataResolved.js.map +0 -1
@@ -30,7 +30,7 @@ export namespace ProtobufEncodeProgrammer {
30
30
  (project: IProject) =>
31
31
  (modulo: ts.LeftHandSideExpression) =>
32
32
  (type: ts.Type, name?: string): ts.ArrowFunction => {
33
- const importer = new FunctionImporter();
33
+ const importer = new FunctionImporter(modulo.getText());
34
34
  const collection = new MetadataCollection();
35
35
  const meta: Metadata = ProtobufFactory.metadata(modulo.getText())(
36
36
  project.checker,
@@ -75,7 +75,6 @@ export namespace ProtobufEncodeProgrammer {
75
75
  ),
76
76
  ];
77
77
 
78
- // @todo
79
78
  return ts.factory.createArrowFunction(
80
79
  undefined,
81
80
  undefined,
@@ -459,6 +458,11 @@ export namespace ProtobufEncodeProgrammer {
459
458
  );
460
459
  return ts.factory.createBlock(
461
460
  [
461
+ ts.factory.createIdentifier(
462
+ `//${index !== null ? ` ${index} -> ` : ""}${
463
+ object.name
464
+ }`,
465
+ ),
462
466
  ...(index !== null
463
467
  ? [
464
468
  decode_tag(ProtobufWire.LEN)(index),
@@ -672,30 +676,27 @@ export namespace ProtobufEncodeProgrammer {
672
676
  targets: MetadataObject[],
673
677
  explore: FeatureProgrammer.IExplore,
674
678
  tags: IMetadataTag[],
679
+ indexes?: Map<MetadataObject, number>,
675
680
  ): ts.Block => {
676
681
  if (targets.length === 1)
677
- return decode_object(project)(importer)(index)(
678
- input,
679
- targets[0]!,
680
- explore,
681
- tags,
682
- );
682
+ return decode_object(project)(importer)(
683
+ indexes ? indexes.get(targets[0]!)! : index,
684
+ )(input, targets[0]!, explore, tags);
683
685
 
684
686
  const expected: string = `(${targets
685
687
  .map((t) => t.name)
686
688
  .join(" | ")})`;
687
- const indexes: Map<MetadataObject, number> = new Map(
688
- targets.map((t, i) => [t, index! + i]),
689
- );
690
689
 
691
690
  // POSSIBLE TO SPECIALIZE?
692
691
  const specList = UnionPredicator.object(targets);
692
+ indexes ??= new Map(targets.map((t, i) => [t, index! + i]));
693
+
693
694
  if (specList.length === 0) {
694
695
  const condition: ts.Expression = decode_union_object(
695
696
  IsProgrammer.decode_object(importer),
696
697
  )((i, o, e) =>
697
698
  ExpressionFactory.selfCall(
698
- decode_object(project)(importer)(indexes.get(o)!)(
699
+ decode_object(project)(importer)(indexes!.get(o)!)(
699
700
  i,
700
701
  o,
701
702
  e,
@@ -736,7 +737,7 @@ export namespace ProtobufEncodeProgrammer {
736
737
  ts.factory.createReturnStatement(
737
738
  ExpressionFactory.selfCall(
738
739
  decode_object(project)(importer)(
739
- indexes.get(spec.object)!,
740
+ indexes!.get(spec.object)!,
740
741
  )(input, spec.object, explore, tags),
741
742
  ),
742
743
  ),
@@ -751,6 +752,7 @@ export namespace ProtobufEncodeProgrammer {
751
752
  remained,
752
753
  explore,
753
754
  tags,
755
+ indexes,
754
756
  ),
755
757
  ),
756
758
  )
@@ -25,7 +25,10 @@ export namespace ProtobufIsDecodeProgrammer {
25
25
  ],
26
26
  ts.factory.createUnionTypeNode([
27
27
  ts.factory.createTypeReferenceNode(
28
- name ?? TypeFactory.getFullName(project.checker)(type),
28
+ `typia.Resolved<${
29
+ name ??
30
+ TypeFactory.getFullName(project.checker)(type)
31
+ }>`,
29
32
  ),
30
33
  ts.factory.createLiteralTypeNode(ts.factory.createNull()),
31
34
  ]),
@@ -33,7 +36,14 @@ export namespace ProtobufIsDecodeProgrammer {
33
36
  ts.factory.createBlock([
34
37
  StatementFactory.constant(
35
38
  "is",
36
- IsProgrammer.write(project)(modulo)(false)(type, name),
39
+ IsProgrammer.write({
40
+ ...project,
41
+ options: {
42
+ ...project.options,
43
+ functional: false,
44
+ numeric: false,
45
+ },
46
+ })(modulo)(false)(type, name),
37
47
  ),
38
48
  StatementFactory.constant(
39
49
  "decode",
@@ -24,9 +24,9 @@ export namespace ProtobufValidateDecodeProgrammer {
24
24
  ),
25
25
  ],
26
26
  ts.factory.createTypeReferenceNode(
27
- `typia.IValidation<${
27
+ `typia.IValidation<typia.Resolved<${
28
28
  name ?? TypeFactory.getFullName(project.checker)(type)
29
- }>`,
29
+ }>>`,
30
30
  ),
31
31
  undefined,
32
32
  ts.factory.createBlock([