typia 5.0.0-dev.20230821 → 5.0.0-dev.20230823

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 (237) hide show
  1. package/README.md +1 -1
  2. package/lib/factories/MetadataFactory.js +9 -0
  3. package/lib/factories/MetadataFactory.js.map +1 -1
  4. package/lib/factories/ProtobufFactory.js +8 -0
  5. package/lib/factories/ProtobufFactory.js.map +1 -1
  6. package/lib/functional/$ProtobufReader.d.ts +2 -0
  7. package/lib/functional/$ProtobufReader.js +14 -3
  8. package/lib/functional/$ProtobufReader.js.map +1 -1
  9. package/lib/functional/$ProtobufSizer.js +1 -1
  10. package/lib/functional/$ProtobufSizer.js.map +1 -1
  11. package/lib/functional/$ProtobufWriter.js +0 -1
  12. package/lib/functional/$ProtobufWriter.js.map +1 -1
  13. package/lib/programmers/helpers/ProtobufUtil.d.ts +3 -1
  14. package/lib/programmers/helpers/ProtobufUtil.js +5 -1
  15. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  16. package/lib/programmers/json/JsonValidateParseProgrammer.js +2 -3
  17. package/lib/programmers/json/JsonValidateParseProgrammer.js.map +1 -1
  18. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +2 -3
  19. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
  20. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +362 -6
  21. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  22. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +21 -64
  23. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  24. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js +1 -1
  25. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js.map +1 -1
  26. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +1 -1
  27. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  28. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js +3 -4
  29. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js.map +1 -1
  30. package/lib/protobuf.d.ts +8 -9
  31. package/lib/protobuf.js +7 -0
  32. package/lib/protobuf.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/factories/ExpressionFactory.ts +115 -115
  35. package/src/factories/MetadataCollection.ts +269 -269
  36. package/src/factories/MetadataFactory.ts +46 -34
  37. package/src/factories/MetadataTagFactory.ts +364 -364
  38. package/src/factories/ProtobufFactory.ts +266 -251
  39. package/src/factories/StatementFactory.ts +72 -72
  40. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  41. package/src/factories/internal/metadata/emend_metadata_atomics.ts +33 -33
  42. package/src/factories/internal/metadata/emplace_metadata_alias.ts +40 -40
  43. package/src/factories/internal/metadata/emplace_metadata_array.ts +34 -34
  44. package/src/factories/internal/metadata/emplace_metadata_object.ts +136 -136
  45. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +50 -50
  46. package/src/factories/internal/metadata/explore_metadata.ts +38 -38
  47. package/src/factories/internal/metadata/iterate_metadata.ts +81 -81
  48. package/src/factories/internal/metadata/iterate_metadata_alias.ts +30 -30
  49. package/src/factories/internal/metadata/iterate_metadata_array.ts +24 -24
  50. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  51. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  52. package/src/factories/internal/metadata/iterate_metadata_collection.ts +133 -133
  53. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  54. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +84 -84
  55. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  56. package/src/factories/internal/metadata/iterate_metadata_native.ts +219 -219
  57. package/src/factories/internal/metadata/iterate_metadata_object.ts +43 -43
  58. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +49 -49
  59. package/src/factories/internal/metadata/iterate_metadata_set.ts +33 -33
  60. package/src/factories/internal/metadata/iterate_metadata_sort.ts +69 -69
  61. package/src/factories/internal/metadata/iterate_metadata_tag.ts +31 -31
  62. package/src/factories/internal/metadata/iterate_metadata_template.ts +38 -38
  63. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +24 -24
  64. package/src/factories/internal/metadata/iterate_metadata_union.ts +24 -24
  65. package/src/functional/$ProtobufReader.ts +201 -188
  66. package/src/functional/$ProtobufSizer.ts +147 -144
  67. package/src/functional/$ProtobufWriter.ts +151 -152
  68. package/src/functional/$number.ts +13 -13
  69. package/src/functional/$strlen.ts +7 -7
  70. package/src/functional/$varint.ts +130 -130
  71. package/src/functional/$zigzag.ts +39 -39
  72. package/src/functional/IProtobufWriter.ts +18 -18
  73. package/src/functional/Namespace.ts +149 -149
  74. package/src/json.ts +648 -648
  75. package/src/misc.ts +651 -651
  76. package/src/module.ts +708 -708
  77. package/src/programmers/CheckerProgrammer.ts +1173 -1173
  78. package/src/programmers/FeatureProgrammer.ts +497 -497
  79. package/src/programmers/IsProgrammer.ts +239 -239
  80. package/src/programmers/IsPruneProgrammer.ts +73 -73
  81. package/src/programmers/RandomProgrammer.ts +578 -578
  82. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  83. package/src/programmers/helpers/CloneJoiner.ts +107 -107
  84. package/src/programmers/helpers/FunctionImporeter.ts +89 -89
  85. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  86. package/src/programmers/helpers/ProtobufUtil.ts +29 -24
  87. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  88. package/src/programmers/helpers/PruneJoiner.ts +143 -143
  89. package/src/programmers/helpers/RandomJoiner.ts +173 -173
  90. package/src/programmers/helpers/RandomRanger.ts +208 -208
  91. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  92. package/src/programmers/helpers/UnionExplorer.ts +310 -310
  93. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  94. package/src/programmers/helpers/disable_function_importer_declare.ts +27 -27
  95. package/src/programmers/internal/application_alias.ts +66 -66
  96. package/src/programmers/internal/application_array.ts +30 -30
  97. package/src/programmers/internal/application_constant.ts +26 -26
  98. package/src/programmers/internal/application_default.ts +17 -17
  99. package/src/programmers/internal/application_default_string.ts +33 -33
  100. package/src/programmers/internal/application_native.ts +39 -39
  101. package/src/programmers/internal/application_number.ts +81 -81
  102. package/src/programmers/internal/application_object.ts +165 -165
  103. package/src/programmers/internal/application_resolved.ts +55 -55
  104. package/src/programmers/internal/application_schema.ts +157 -157
  105. package/src/programmers/internal/application_string.ts +44 -44
  106. package/src/programmers/internal/application_templates.ts +25 -25
  107. package/src/programmers/internal/application_tuple.ts +57 -57
  108. package/src/programmers/internal/check_array.ts +30 -30
  109. package/src/programmers/internal/check_array_length.ts +35 -35
  110. package/src/programmers/internal/check_bigint.ts +110 -110
  111. package/src/programmers/internal/check_custom.ts +31 -31
  112. package/src/programmers/internal/check_number.ts +258 -258
  113. package/src/programmers/internal/check_string.ts +25 -25
  114. package/src/programmers/internal/check_string_tags.ts +67 -67
  115. package/src/programmers/internal/check_template.ts +56 -56
  116. package/src/programmers/internal/check_union_array_like.ts +329 -329
  117. package/src/programmers/internal/decode_union_object.ts +84 -84
  118. package/src/programmers/internal/feature_object_entries.ts +63 -63
  119. package/src/programmers/internal/get_comment_tags.ts +23 -23
  120. package/src/programmers/internal/metadata_to_pattern.ts +34 -34
  121. package/src/programmers/internal/prune_object_properties.ts +60 -60
  122. package/src/programmers/internal/random_custom.ts +29 -29
  123. package/src/programmers/internal/stringify_regular_properties.ts +83 -83
  124. package/src/programmers/internal/template_to_pattern.ts +15 -15
  125. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +16 -16
  126. package/src/programmers/json/JsonApplicationProgrammer.ts +47 -47
  127. package/src/programmers/json/JsonAssertParseProgrammer.ts +66 -66
  128. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +66 -66
  129. package/src/programmers/json/JsonIsParseProgrammer.ts +72 -72
  130. package/src/programmers/json/JsonIsStringifyProgrammer.ts +76 -76
  131. package/src/programmers/json/JsonStringifyProgrammer.ts +987 -987
  132. package/src/programmers/json/JsonValidateParseProgrammer.ts +63 -70
  133. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +84 -84
  134. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +71 -71
  135. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +68 -68
  136. package/src/programmers/misc/MiscCloneProgrammer.ts +587 -587
  137. package/src/programmers/misc/MiscIsCloneProgrammer.ts +78 -78
  138. package/src/programmers/misc/MiscLiteralsProgrammer.ts +64 -64
  139. package/src/programmers/misc/MiscPruneProgrammer.ts +542 -542
  140. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +85 -85
  141. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +78 -78
  142. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +66 -69
  143. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +66 -66
  144. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +669 -38
  145. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +814 -920
  146. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +75 -75
  147. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +76 -76
  148. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +178 -178
  149. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +75 -83
  150. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +86 -86
  151. package/src/protobuf.ts +249 -239
  152. package/src/schemas/json/IJsonApplication.ts +8 -8
  153. package/src/schemas/json/IJsonComponents.ts +33 -33
  154. package/src/schemas/json/IJsonSchema.ts +133 -133
  155. package/src/schemas/metadata/ICommentTag.ts +4 -4
  156. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  157. package/src/schemas/metadata/IMetadata.ts +28 -28
  158. package/src/schemas/metadata/IMetadataAlias.ts +14 -14
  159. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  160. package/src/schemas/metadata/IMetadataArray.ts +10 -10
  161. package/src/schemas/metadata/IMetadataCollection.ts +11 -11
  162. package/src/schemas/metadata/IMetadataConstant.ts +16 -16
  163. package/src/schemas/metadata/IMetadataDictionary.ts +14 -14
  164. package/src/schemas/metadata/IMetadataEntry.ts +6 -6
  165. package/src/schemas/metadata/IMetadataObject.ts +18 -18
  166. package/src/schemas/metadata/IMetadataProperty.ts +11 -11
  167. package/src/schemas/metadata/IMetadataResolved.ts +6 -6
  168. package/src/schemas/metadata/IMetadataTag.ts +112 -112
  169. package/src/schemas/metadata/IMetadataTuple.ts +10 -10
  170. package/src/schemas/metadata/Metadata.ts +637 -637
  171. package/src/schemas/metadata/MetadataAlias.ts +66 -66
  172. package/src/schemas/metadata/MetadataArray.ts +55 -55
  173. package/src/schemas/metadata/MetadataConstant.ts +3 -3
  174. package/src/schemas/metadata/MetadataObject.ts +139 -139
  175. package/src/schemas/metadata/MetadataProperty.ts +64 -64
  176. package/src/schemas/metadata/MetadataResolved.ts +51 -51
  177. package/src/schemas/metadata/MetadataTuple.ts +58 -58
  178. package/src/transformers/CallExpressionTransformer.ts +240 -240
  179. package/src/transformers/features/AssertTransformer.ts +11 -11
  180. package/src/transformers/features/CreateAssertTransformer.ts +13 -13
  181. package/src/transformers/features/CreateIsTransformer.ts +11 -11
  182. package/src/transformers/features/CreateRandomTransformer.ts +39 -39
  183. package/src/transformers/features/CreateValidateTransformer.ts +13 -13
  184. package/src/transformers/features/IsTransformer.ts +11 -11
  185. package/src/transformers/features/RandomTransformer.ts +42 -42
  186. package/src/transformers/features/ValidateTransformer.ts +11 -11
  187. package/src/transformers/features/json/JsonApplicationTransformer.ts +111 -111
  188. package/src/transformers/features/json/JsonAssertParseTransformer.ts +10 -10
  189. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +10 -10
  190. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +10 -10
  191. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +12 -12
  192. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +9 -9
  193. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +10 -10
  194. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +9 -9
  195. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +10 -10
  196. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +12 -12
  197. package/src/transformers/features/json/JsonIsParseTransformer.ts +9 -9
  198. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +10 -10
  199. package/src/transformers/features/json/JsonStringifyTransformer.ts +9 -9
  200. package/src/transformers/features/json/JsonValidateParseTransformer.ts +10 -10
  201. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +10 -10
  202. package/src/transformers/features/misc/MetadataTransformer.ts +53 -53
  203. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +10 -10
  204. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +10 -10
  205. package/src/transformers/features/misc/MiscCloneTransformer.ts +9 -9
  206. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +10 -10
  207. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +10 -10
  208. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +9 -9
  209. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +9 -9
  210. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +9 -9
  211. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +9 -9
  212. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +10 -10
  213. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +10 -10
  214. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +9 -9
  215. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +9 -9
  216. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +28 -28
  217. package/src/transformers/features/misc/MiscPruneTransformer.ts +9 -9
  218. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +10 -10
  219. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +10 -10
  220. package/src/transformers/features/protobuf/CreateProtobufAssertDecodeTransformer.ts +12 -12
  221. package/src/transformers/features/protobuf/CreateProtobufAssertEncodeTransformer.ts +12 -12
  222. package/src/transformers/features/protobuf/CreateProtobufDecodeTransformer.ts +9 -9
  223. package/src/transformers/features/protobuf/CreateProtobufEncodeTransformer.ts +9 -9
  224. package/src/transformers/features/protobuf/CreateProtobufIsDecodeTransformer.ts +12 -12
  225. package/src/transformers/features/protobuf/CreateProtobufIsEncodeTransformer.ts +12 -12
  226. package/src/transformers/features/protobuf/CreateProtobufValidateDecodeTransformer.ts +12 -12
  227. package/src/transformers/features/protobuf/CreateProtobufValidateEncodeTransformer.ts +12 -12
  228. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +10 -10
  229. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +10 -10
  230. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +10 -10
  231. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +10 -10
  232. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +10 -10
  233. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +10 -10
  234. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +31 -31
  235. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +12 -12
  236. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +12 -12
  237. package/src/utils/NameEncoder.ts +32 -32
@@ -1,10 +1,10 @@
1
- import { JsonValidateParseProgrammer } from "../../../programmers/json/JsonValidateParseProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace JsonValidateParseTransformer {
6
- export const transform = GenericTransformer.scalar("validatParse")(
7
- (project) => (modulo) =>
8
- JsonValidateParseProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { JsonValidateParseProgrammer } from "../../../programmers/json/JsonValidateParseProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace JsonValidateParseTransformer {
6
+ export const transform = GenericTransformer.scalar("validatParse")(
7
+ (project) => (modulo) =>
8
+ JsonValidateParseProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,10 +1,10 @@
1
- import { JsonValidateStringifyProgrammer } from "../../../programmers/json/JsonValidateStringifyProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace JsonValidateStringifyTransformer {
6
- export const transform = GenericTransformer.scalar("validatStringify")(
7
- (project) => (modulo) =>
8
- JsonValidateStringifyProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { JsonValidateStringifyProgrammer } from "../../../programmers/json/JsonValidateStringifyProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace JsonValidateStringifyTransformer {
6
+ export const transform = GenericTransformer.scalar("validatStringify")(
7
+ (project) => (modulo) =>
8
+ JsonValidateStringifyProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,53 +1,53 @@
1
- import ts from "typescript";
2
-
3
- import { LiteralFactory } from "../../../factories/LiteralFactory";
4
- import { MetadataCollection } from "../../../factories/MetadataCollection";
5
- import { MetadataFactory } from "../../../factories/MetadataFactory";
6
-
7
- import { IMetadataApplication } from "../../../schemas/metadata/IMetadataApplication";
8
- import { Metadata } from "../../../schemas/metadata/Metadata";
9
-
10
- import { IProject } from "../../IProject";
11
-
12
- export namespace MetadataTransformer {
13
- export const transform =
14
- ({ checker }: IProject) =>
15
- (expression: ts.CallExpression): ts.Expression => {
16
- if (!expression.typeArguments?.length)
17
- throw new Error(NO_GENERIC_ARGUMENT);
18
-
19
- // VALIDATE TUPLE ARGUMENTS
20
- const top: ts.Node = expression.typeArguments[0]!;
21
- if (!ts.isTupleTypeNode(top)) return expression;
22
- else if (top.elements.some((child) => !ts.isTypeNode(child)))
23
- return expression;
24
-
25
- // GET TYPES
26
- const types: ts.Type[] = top.elements.map((child) =>
27
- checker.getTypeFromTypeNode(child as ts.TypeNode),
28
- );
29
- if (types.some((t) => t.isTypeParameter()))
30
- throw new Error(GENERIC_ARGUMENT);
31
-
32
- // METADATA
33
- const collection: MetadataCollection = new MetadataCollection();
34
- const metadatas: Array<Metadata> = types.map((type) =>
35
- MetadataFactory.analyze(checker)({
36
- resolve: true,
37
- constant: true,
38
- absorb: true,
39
- })(collection)(type),
40
- );
41
-
42
- // CONVERT TO PRIMITIVE TYPE
43
- const app: IMetadataApplication = {
44
- metadatas: metadatas.map((metadata) => metadata.toJSON()),
45
- collection: collection.toJSON(),
46
- };
47
- return LiteralFactory.generate(app);
48
- };
49
- }
50
-
51
- const NO_GENERIC_ARGUMENT = "Error on typia.metadata(): no generic argument.";
52
- const GENERIC_ARGUMENT =
53
- "Error on typia.metadata(): non-specified generic argument(s).";
1
+ import ts from "typescript";
2
+
3
+ import { LiteralFactory } from "../../../factories/LiteralFactory";
4
+ import { MetadataCollection } from "../../../factories/MetadataCollection";
5
+ import { MetadataFactory } from "../../../factories/MetadataFactory";
6
+
7
+ import { IMetadataApplication } from "../../../schemas/metadata/IMetadataApplication";
8
+ import { Metadata } from "../../../schemas/metadata/Metadata";
9
+
10
+ import { IProject } from "../../IProject";
11
+
12
+ export namespace MetadataTransformer {
13
+ export const transform =
14
+ ({ checker }: IProject) =>
15
+ (expression: ts.CallExpression): ts.Expression => {
16
+ if (!expression.typeArguments?.length)
17
+ throw new Error(NO_GENERIC_ARGUMENT);
18
+
19
+ // VALIDATE TUPLE ARGUMENTS
20
+ const top: ts.Node = expression.typeArguments[0]!;
21
+ if (!ts.isTupleTypeNode(top)) return expression;
22
+ else if (top.elements.some((child) => !ts.isTypeNode(child)))
23
+ return expression;
24
+
25
+ // GET TYPES
26
+ const types: ts.Type[] = top.elements.map((child) =>
27
+ checker.getTypeFromTypeNode(child as ts.TypeNode),
28
+ );
29
+ if (types.some((t) => t.isTypeParameter()))
30
+ throw new Error(GENERIC_ARGUMENT);
31
+
32
+ // METADATA
33
+ const collection: MetadataCollection = new MetadataCollection();
34
+ const metadatas: Array<Metadata> = types.map((type) =>
35
+ MetadataFactory.analyze(checker)({
36
+ resolve: true,
37
+ constant: true,
38
+ absorb: true,
39
+ })(collection)(type),
40
+ );
41
+
42
+ // CONVERT TO PRIMITIVE TYPE
43
+ const app: IMetadataApplication = {
44
+ metadatas: metadatas.map((metadata) => metadata.toJSON()),
45
+ collection: collection.toJSON(),
46
+ };
47
+ return LiteralFactory.generate(app);
48
+ };
49
+ }
50
+
51
+ const NO_GENERIC_ARGUMENT = "Error on typia.metadata(): no generic argument.";
52
+ const GENERIC_ARGUMENT =
53
+ "Error on typia.metadata(): non-specified generic argument(s).";
@@ -1,10 +1,10 @@
1
- import { MiscAssertCloneProgrammer } from "../../../programmers/misc/MiscAssertCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscAssertCloneTransformer {
6
- export const transform = GenericTransformer.scalar("assertClone")(
7
- (project) => (modulo) =>
8
- MiscAssertCloneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscAssertCloneProgrammer } from "../../../programmers/misc/MiscAssertCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscAssertCloneTransformer {
6
+ export const transform = GenericTransformer.scalar("assertClone")(
7
+ (project) => (modulo) =>
8
+ MiscAssertCloneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,10 +1,10 @@
1
- import { MiscAssertPruneProgrammer } from "../../../programmers/misc/MiscAssertPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscAssertPruneTransformer {
6
- export const transform = GenericTransformer.scalar("assertPrune")(
7
- (project) => (modulo) =>
8
- MiscAssertPruneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscAssertPruneProgrammer } from "../../../programmers/misc/MiscAssertPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscAssertPruneTransformer {
6
+ export const transform = GenericTransformer.scalar("assertPrune")(
7
+ (project) => (modulo) =>
8
+ MiscAssertPruneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,9 +1,9 @@
1
- import { MiscCloneProgrammer } from "../../../programmers/misc/MiscCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCloneTransformer {
6
- export const transform = GenericTransformer.scalar("clone")(
7
- (project) => (modulo) => MiscCloneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { MiscCloneProgrammer } from "../../../programmers/misc/MiscCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCloneTransformer {
6
+ export const transform = GenericTransformer.scalar("clone")(
7
+ (project) => (modulo) => MiscCloneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,10 +1,10 @@
1
- import { MiscAssertCloneProgrammer } from "../../../programmers/misc/MiscAssertCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreateAssertCloneTransformer {
6
- export const transform = GenericTransformer.factory("createAssertClone")(
7
- (project) => (modulo) =>
8
- MiscAssertCloneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscAssertCloneProgrammer } from "../../../programmers/misc/MiscAssertCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreateAssertCloneTransformer {
6
+ export const transform = GenericTransformer.factory("createAssertClone")(
7
+ (project) => (modulo) =>
8
+ MiscAssertCloneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,10 +1,10 @@
1
- import { MiscAssertPruneProgrammer } from "../../../programmers/misc/MiscAssertPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreateAssertPruneTransformer {
6
- export const transform = GenericTransformer.factory("createAssertPrune")(
7
- (project) => (modulo) =>
8
- MiscAssertPruneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscAssertPruneProgrammer } from "../../../programmers/misc/MiscAssertPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreateAssertPruneTransformer {
6
+ export const transform = GenericTransformer.factory("createAssertPrune")(
7
+ (project) => (modulo) =>
8
+ MiscAssertPruneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,9 +1,9 @@
1
- import { MiscCloneProgrammer } from "../../../programmers/misc/MiscCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreateCloneTransformer {
6
- export const transform = GenericTransformer.factory("createClone")(
7
- (project) => (modulo) => MiscCloneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { MiscCloneProgrammer } from "../../../programmers/misc/MiscCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreateCloneTransformer {
6
+ export const transform = GenericTransformer.factory("createClone")(
7
+ (project) => (modulo) => MiscCloneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { MiscIsCloneProgrammer } from "../../../programmers/misc/MiscIsCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreateIsCloneTransformer {
6
- export const transform = GenericTransformer.factory("createIsClone")(
7
- (project) => (modulo) => MiscIsCloneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { MiscIsCloneProgrammer } from "../../../programmers/misc/MiscIsCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreateIsCloneTransformer {
6
+ export const transform = GenericTransformer.factory("createIsClone")(
7
+ (project) => (modulo) => MiscIsCloneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { IsPruneProgrammer } from "../../../programmers/IsPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreateIsPruneTransformer {
6
- export const transform = GenericTransformer.factory("createIsPrune")(
7
- (project) => (modulo) => IsPruneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { IsPruneProgrammer } from "../../../programmers/IsPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreateIsPruneTransformer {
6
+ export const transform = GenericTransformer.factory("createIsPrune")(
7
+ (project) => (modulo) => IsPruneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { MiscPruneProgrammer } from "../../../programmers/misc/MiscPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreatePruneTransformer {
6
- export const transform = GenericTransformer.factory("createPrune")(
7
- (project) => (modulo) => MiscPruneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { MiscPruneProgrammer } from "../../../programmers/misc/MiscPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreatePruneTransformer {
6
+ export const transform = GenericTransformer.factory("createPrune")(
7
+ (project) => (modulo) => MiscPruneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,10 +1,10 @@
1
- import { MiscValidateCloneProgrammer } from "../../../programmers/misc/MiscValidateCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreateValidateCloneTransformer {
6
- export const transform = GenericTransformer.factory("createValidateClone")(
7
- (project) => (modulo) =>
8
- MiscValidateCloneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscValidateCloneProgrammer } from "../../../programmers/misc/MiscValidateCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreateValidateCloneTransformer {
6
+ export const transform = GenericTransformer.factory("createValidateClone")(
7
+ (project) => (modulo) =>
8
+ MiscValidateCloneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,10 +1,10 @@
1
- import { MiscValidatePruneProgrammer } from "../../../programmers/misc/MiscValidatePruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscCreateValidatePruneTransformer {
6
- export const transform = GenericTransformer.factory("createValidatePrune")(
7
- (project) => (modulo) =>
8
- MiscValidatePruneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscValidatePruneProgrammer } from "../../../programmers/misc/MiscValidatePruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscCreateValidatePruneTransformer {
6
+ export const transform = GenericTransformer.factory("createValidatePrune")(
7
+ (project) => (modulo) =>
8
+ MiscValidatePruneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,9 +1,9 @@
1
- import { MiscIsCloneProgrammer } from "../../../programmers/misc/MiscIsCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscIsCloneTransformer {
6
- export const transform = GenericTransformer.scalar("isClone")(
7
- (project) => (modulo) => MiscIsCloneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { MiscIsCloneProgrammer } from "../../../programmers/misc/MiscIsCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscIsCloneTransformer {
6
+ export const transform = GenericTransformer.scalar("isClone")(
7
+ (project) => (modulo) => MiscIsCloneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,9 +1,9 @@
1
- import { IsPruneProgrammer } from "../../../programmers/IsPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscIsPruneTransformer {
6
- export const transform = GenericTransformer.scalar("isPrune")(
7
- (project) => (modulo) => IsPruneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { IsPruneProgrammer } from "../../../programmers/IsPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscIsPruneTransformer {
6
+ export const transform = GenericTransformer.scalar("isPrune")(
7
+ (project) => (modulo) => IsPruneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,28 +1,28 @@
1
- import ts from "typescript";
2
-
3
- import { MiscLiteralsProgrammer } from "../../../programmers/misc/MiscLiteralsProgrammer";
4
-
5
- import { IProject } from "../../IProject";
6
-
7
- export namespace MiscLiteralsTransformer {
8
- export const transform =
9
- (project: IProject) =>
10
- (expression: ts.CallExpression): ts.Expression => {
11
- // CHECK GENERIC ARGUMENT EXISTENCE
12
- if (!expression.typeArguments?.[0]) throw new Error(NOT_SPECIFIED);
13
-
14
- // GET TYPE INFO
15
- const node: ts.TypeNode = expression.typeArguments[0];
16
- const type: ts.Type = project.checker.getTypeFromTypeNode(node);
17
-
18
- if (type.isTypeParameter()) throw new Error(NO_GENERIC_ARGUMENT);
19
-
20
- // DO TRANSFORM
21
- return MiscLiteralsProgrammer.write(project)(type);
22
- };
23
- }
24
-
25
- const NOT_SPECIFIED =
26
- "Error on typia.literals(): generic argument is not specified.";
27
- const NO_GENERIC_ARGUMENT =
28
- "Error on typia.literals(): non-specified generic argument.";
1
+ import ts from "typescript";
2
+
3
+ import { MiscLiteralsProgrammer } from "../../../programmers/misc/MiscLiteralsProgrammer";
4
+
5
+ import { IProject } from "../../IProject";
6
+
7
+ export namespace MiscLiteralsTransformer {
8
+ export const transform =
9
+ (project: IProject) =>
10
+ (expression: ts.CallExpression): ts.Expression => {
11
+ // CHECK GENERIC ARGUMENT EXISTENCE
12
+ if (!expression.typeArguments?.[0]) throw new Error(NOT_SPECIFIED);
13
+
14
+ // GET TYPE INFO
15
+ const node: ts.TypeNode = expression.typeArguments[0];
16
+ const type: ts.Type = project.checker.getTypeFromTypeNode(node);
17
+
18
+ if (type.isTypeParameter()) throw new Error(NO_GENERIC_ARGUMENT);
19
+
20
+ // DO TRANSFORM
21
+ return MiscLiteralsProgrammer.write(project)(type);
22
+ };
23
+ }
24
+
25
+ const NOT_SPECIFIED =
26
+ "Error on typia.literals(): generic argument is not specified.";
27
+ const NO_GENERIC_ARGUMENT =
28
+ "Error on typia.literals(): non-specified generic argument.";
@@ -1,9 +1,9 @@
1
- import { MiscPruneProgrammer } from "../../../programmers/misc/MiscPruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscPruneTransformer {
6
- export const transform = GenericTransformer.scalar("prune")(
7
- (project) => (modulo) => MiscPruneProgrammer.write(project)(modulo),
8
- );
9
- }
1
+ import { MiscPruneProgrammer } from "../../../programmers/misc/MiscPruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscPruneTransformer {
6
+ export const transform = GenericTransformer.scalar("prune")(
7
+ (project) => (modulo) => MiscPruneProgrammer.write(project)(modulo),
8
+ );
9
+ }
@@ -1,10 +1,10 @@
1
- import { MiscValidateCloneProgrammer } from "../../../programmers/misc/MiscValidateCloneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscValidateCloneTransformer {
6
- export const transform = GenericTransformer.scalar("validatClone")(
7
- (project) => (modulo) =>
8
- MiscValidateCloneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscValidateCloneProgrammer } from "../../../programmers/misc/MiscValidateCloneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscValidateCloneTransformer {
6
+ export const transform = GenericTransformer.scalar("validatClone")(
7
+ (project) => (modulo) =>
8
+ MiscValidateCloneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,10 +1,10 @@
1
- import { MiscValidatePruneProgrammer } from "../../../programmers/misc/MiscValidatePruneProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace MiscValidatePruneTransformer {
6
- export const transform = GenericTransformer.scalar("validatPrune")(
7
- (project) => (modulo) =>
8
- MiscValidatePruneProgrammer.write(project)(modulo),
9
- );
10
- }
1
+ import { MiscValidatePruneProgrammer } from "../../../programmers/misc/MiscValidatePruneProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace MiscValidatePruneTransformer {
6
+ export const transform = GenericTransformer.scalar("validatPrune")(
7
+ (project) => (modulo) =>
8
+ MiscValidatePruneProgrammer.write(project)(modulo),
9
+ );
10
+ }
@@ -1,12 +1,12 @@
1
- import { ProtobufAssertDecodeProgrammer } from "../../../programmers/protobuf/ProtobufAssertDecodeProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateProtobufAssertDecodeTransformer {
6
- export const transform = GenericTransformer.factory(
7
- "protobuf.createAssertDecode",
8
- )(
9
- (project) => (modulo) =>
10
- ProtobufAssertDecodeProgrammer.write(project)(modulo),
11
- );
12
- }
1
+ import { ProtobufAssertDecodeProgrammer } from "../../../programmers/protobuf/ProtobufAssertDecodeProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateProtobufAssertDecodeTransformer {
6
+ export const transform = GenericTransformer.factory(
7
+ "protobuf.createAssertDecode",
8
+ )(
9
+ (project) => (modulo) =>
10
+ ProtobufAssertDecodeProgrammer.write(project)(modulo),
11
+ );
12
+ }
@@ -1,12 +1,12 @@
1
- import { ProtobufAssertEncodeProgrammer } from "../../../programmers/protobuf/ProtobufAssertEncodeProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateProtobufAssertEncodeTransformer {
6
- export const transform = GenericTransformer.factory(
7
- "protobuf.createAssertEncode",
8
- )(
9
- (project) => (modulo) =>
10
- ProtobufAssertEncodeProgrammer.write(project)(modulo),
11
- );
12
- }
1
+ import { ProtobufAssertEncodeProgrammer } from "../../../programmers/protobuf/ProtobufAssertEncodeProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateProtobufAssertEncodeTransformer {
6
+ export const transform = GenericTransformer.factory(
7
+ "protobuf.createAssertEncode",
8
+ )(
9
+ (project) => (modulo) =>
10
+ ProtobufAssertEncodeProgrammer.write(project)(modulo),
11
+ );
12
+ }
@@ -1,9 +1,9 @@
1
- import { ProtobufDecodeProgrammer } from "../../../programmers/protobuf/ProtobufDecodeProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateProtobufDecodeTransformer {
6
- export const transform = GenericTransformer.factory(
7
- "protobuf.createDecode",
8
- )((project) => (modulo) => ProtobufDecodeProgrammer.write(project)(modulo));
9
- }
1
+ import { ProtobufDecodeProgrammer } from "../../../programmers/protobuf/ProtobufDecodeProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateProtobufDecodeTransformer {
6
+ export const transform = GenericTransformer.factory(
7
+ "protobuf.createDecode",
8
+ )((project) => (modulo) => ProtobufDecodeProgrammer.write(project)(modulo));
9
+ }
@@ -1,9 +1,9 @@
1
- import { ProtobufEncodeProgrammer } from "../../../programmers/protobuf/ProtobufEncodeProgrammer";
2
-
3
- import { GenericTransformer } from "../../internal/GenericTransformer";
4
-
5
- export namespace CreateProtobufEncodeTransformer {
6
- export const transform = GenericTransformer.factory(
7
- "protobuf.createEncode",
8
- )((project) => (modulo) => ProtobufEncodeProgrammer.write(project)(modulo));
9
- }
1
+ import { ProtobufEncodeProgrammer } from "../../../programmers/protobuf/ProtobufEncodeProgrammer";
2
+
3
+ import { GenericTransformer } from "../../internal/GenericTransformer";
4
+
5
+ export namespace CreateProtobufEncodeTransformer {
6
+ export const transform = GenericTransformer.factory(
7
+ "protobuf.createEncode",
8
+ )((project) => (modulo) => ProtobufEncodeProgrammer.write(project)(modulo));
9
+ }