typia 5.0.0-dev.20230820-2 → 5.0.0-dev.20230821

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 (217) hide show
  1. package/README.md +1 -1
  2. package/lib/factories/MetadataTagFactory.js.map +1 -1
  3. package/lib/programmers/RandomProgrammer.js +15 -12
  4. package/lib/programmers/RandomProgrammer.js.map +1 -1
  5. package/lib/programmers/helpers/RandomRanger.js +2 -2
  6. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  7. package/lib/programmers/internal/application_number.js +6 -1
  8. package/lib/programmers/internal/application_number.js.map +1 -1
  9. package/lib/programmers/internal/check_bigint.js +8 -11
  10. package/lib/programmers/internal/check_bigint.js.map +1 -1
  11. package/lib/programmers/internal/check_number.js +12 -2
  12. package/lib/programmers/internal/check_number.js.map +1 -1
  13. package/package.json +1 -1
  14. package/src/factories/ExpressionFactory.ts +115 -115
  15. package/src/factories/MetadataCollection.ts +269 -269
  16. package/src/factories/MetadataFactory.ts +34 -34
  17. package/src/factories/MetadataTagFactory.ts +364 -364
  18. package/src/factories/ProtobufFactory.ts +251 -251
  19. package/src/factories/StatementFactory.ts +72 -72
  20. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  21. package/src/factories/internal/metadata/emend_metadata_atomics.ts +33 -33
  22. package/src/factories/internal/metadata/emplace_metadata_alias.ts +40 -40
  23. package/src/factories/internal/metadata/emplace_metadata_array.ts +34 -34
  24. package/src/factories/internal/metadata/emplace_metadata_object.ts +136 -136
  25. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +50 -50
  26. package/src/factories/internal/metadata/explore_metadata.ts +38 -38
  27. package/src/factories/internal/metadata/iterate_metadata.ts +81 -81
  28. package/src/factories/internal/metadata/iterate_metadata_alias.ts +30 -30
  29. package/src/factories/internal/metadata/iterate_metadata_array.ts +24 -24
  30. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  31. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  32. package/src/factories/internal/metadata/iterate_metadata_collection.ts +133 -133
  33. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  34. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +84 -84
  35. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  36. package/src/factories/internal/metadata/iterate_metadata_native.ts +219 -219
  37. package/src/factories/internal/metadata/iterate_metadata_object.ts +43 -43
  38. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +49 -49
  39. package/src/factories/internal/metadata/iterate_metadata_set.ts +33 -33
  40. package/src/factories/internal/metadata/iterate_metadata_sort.ts +69 -69
  41. package/src/factories/internal/metadata/iterate_metadata_tag.ts +31 -31
  42. package/src/factories/internal/metadata/iterate_metadata_template.ts +38 -38
  43. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +24 -24
  44. package/src/factories/internal/metadata/iterate_metadata_union.ts +24 -24
  45. package/src/functional/$ProtobufReader.ts +188 -188
  46. package/src/functional/$ProtobufSizer.ts +144 -144
  47. package/src/functional/$ProtobufWriter.ts +152 -152
  48. package/src/functional/$number.ts +13 -13
  49. package/src/functional/$strlen.ts +7 -7
  50. package/src/functional/$varint.ts +130 -130
  51. package/src/functional/$zigzag.ts +39 -39
  52. package/src/functional/IProtobufWriter.ts +18 -18
  53. package/src/functional/Namespace.ts +149 -149
  54. package/src/json.ts +648 -648
  55. package/src/misc.ts +651 -651
  56. package/src/module.ts +708 -708
  57. package/src/programmers/CheckerProgrammer.ts +1173 -1173
  58. package/src/programmers/FeatureProgrammer.ts +497 -497
  59. package/src/programmers/IsProgrammer.ts +239 -239
  60. package/src/programmers/IsPruneProgrammer.ts +73 -73
  61. package/src/programmers/RandomProgrammer.ts +578 -584
  62. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  63. package/src/programmers/helpers/CloneJoiner.ts +107 -107
  64. package/src/programmers/helpers/FunctionImporeter.ts +89 -89
  65. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  66. package/src/programmers/helpers/ProtobufUtil.ts +24 -24
  67. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  68. package/src/programmers/helpers/PruneJoiner.ts +143 -143
  69. package/src/programmers/helpers/RandomJoiner.ts +173 -173
  70. package/src/programmers/helpers/RandomRanger.ts +208 -216
  71. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  72. package/src/programmers/helpers/UnionExplorer.ts +310 -310
  73. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  74. package/src/programmers/helpers/disable_function_importer_declare.ts +27 -27
  75. package/src/programmers/internal/application_alias.ts +66 -66
  76. package/src/programmers/internal/application_array.ts +30 -30
  77. package/src/programmers/internal/application_constant.ts +26 -26
  78. package/src/programmers/internal/application_default.ts +17 -17
  79. package/src/programmers/internal/application_default_string.ts +33 -33
  80. package/src/programmers/internal/application_native.ts +39 -39
  81. package/src/programmers/internal/application_number.ts +81 -77
  82. package/src/programmers/internal/application_object.ts +165 -165
  83. package/src/programmers/internal/application_resolved.ts +55 -55
  84. package/src/programmers/internal/application_schema.ts +157 -157
  85. package/src/programmers/internal/application_string.ts +44 -44
  86. package/src/programmers/internal/application_templates.ts +25 -25
  87. package/src/programmers/internal/application_tuple.ts +57 -57
  88. package/src/programmers/internal/check_array.ts +30 -30
  89. package/src/programmers/internal/check_array_length.ts +35 -35
  90. package/src/programmers/internal/check_bigint.ts +110 -92
  91. package/src/programmers/internal/check_custom.ts +31 -31
  92. package/src/programmers/internal/check_number.ts +258 -230
  93. package/src/programmers/internal/check_string.ts +25 -25
  94. package/src/programmers/internal/check_string_tags.ts +67 -67
  95. package/src/programmers/internal/check_template.ts +56 -56
  96. package/src/programmers/internal/check_union_array_like.ts +329 -329
  97. package/src/programmers/internal/decode_union_object.ts +84 -84
  98. package/src/programmers/internal/feature_object_entries.ts +63 -63
  99. package/src/programmers/internal/get_comment_tags.ts +23 -23
  100. package/src/programmers/internal/metadata_to_pattern.ts +34 -34
  101. package/src/programmers/internal/prune_object_properties.ts +60 -60
  102. package/src/programmers/internal/random_custom.ts +29 -29
  103. package/src/programmers/internal/stringify_regular_properties.ts +83 -83
  104. package/src/programmers/internal/template_to_pattern.ts +15 -15
  105. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +16 -16
  106. package/src/programmers/json/JsonApplicationProgrammer.ts +47 -47
  107. package/src/programmers/json/JsonAssertParseProgrammer.ts +66 -66
  108. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +66 -66
  109. package/src/programmers/json/JsonIsParseProgrammer.ts +72 -72
  110. package/src/programmers/json/JsonIsStringifyProgrammer.ts +76 -76
  111. package/src/programmers/json/JsonStringifyProgrammer.ts +987 -987
  112. package/src/programmers/json/JsonValidateParseProgrammer.ts +70 -70
  113. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +84 -84
  114. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +71 -71
  115. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +68 -68
  116. package/src/programmers/misc/MiscCloneProgrammer.ts +587 -587
  117. package/src/programmers/misc/MiscIsCloneProgrammer.ts +78 -78
  118. package/src/programmers/misc/MiscLiteralsProgrammer.ts +64 -64
  119. package/src/programmers/misc/MiscPruneProgrammer.ts +542 -542
  120. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +85 -85
  121. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +78 -78
  122. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +69 -69
  123. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +66 -66
  124. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +38 -38
  125. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +920 -920
  126. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +75 -75
  127. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +76 -76
  128. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +178 -178
  129. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +83 -83
  130. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +86 -86
  131. package/src/protobuf.ts +239 -239
  132. package/src/schemas/json/IJsonApplication.ts +8 -8
  133. package/src/schemas/json/IJsonComponents.ts +33 -33
  134. package/src/schemas/json/IJsonSchema.ts +133 -133
  135. package/src/schemas/metadata/ICommentTag.ts +4 -4
  136. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  137. package/src/schemas/metadata/IMetadata.ts +28 -28
  138. package/src/schemas/metadata/IMetadataAlias.ts +14 -14
  139. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  140. package/src/schemas/metadata/IMetadataArray.ts +10 -10
  141. package/src/schemas/metadata/IMetadataCollection.ts +11 -11
  142. package/src/schemas/metadata/IMetadataConstant.ts +16 -16
  143. package/src/schemas/metadata/IMetadataDictionary.ts +14 -14
  144. package/src/schemas/metadata/IMetadataEntry.ts +6 -6
  145. package/src/schemas/metadata/IMetadataObject.ts +18 -18
  146. package/src/schemas/metadata/IMetadataProperty.ts +11 -11
  147. package/src/schemas/metadata/IMetadataResolved.ts +6 -6
  148. package/src/schemas/metadata/IMetadataTag.ts +112 -112
  149. package/src/schemas/metadata/IMetadataTuple.ts +10 -10
  150. package/src/schemas/metadata/Metadata.ts +637 -637
  151. package/src/schemas/metadata/MetadataAlias.ts +66 -66
  152. package/src/schemas/metadata/MetadataArray.ts +55 -55
  153. package/src/schemas/metadata/MetadataConstant.ts +3 -3
  154. package/src/schemas/metadata/MetadataObject.ts +139 -139
  155. package/src/schemas/metadata/MetadataProperty.ts +64 -64
  156. package/src/schemas/metadata/MetadataResolved.ts +51 -51
  157. package/src/schemas/metadata/MetadataTuple.ts +58 -58
  158. package/src/transformers/CallExpressionTransformer.ts +240 -240
  159. package/src/transformers/features/AssertTransformer.ts +11 -11
  160. package/src/transformers/features/CreateAssertTransformer.ts +13 -13
  161. package/src/transformers/features/CreateIsTransformer.ts +11 -11
  162. package/src/transformers/features/CreateRandomTransformer.ts +39 -39
  163. package/src/transformers/features/CreateValidateTransformer.ts +13 -13
  164. package/src/transformers/features/IsTransformer.ts +11 -11
  165. package/src/transformers/features/RandomTransformer.ts +42 -42
  166. package/src/transformers/features/ValidateTransformer.ts +11 -11
  167. package/src/transformers/features/json/JsonApplicationTransformer.ts +111 -111
  168. package/src/transformers/features/json/JsonAssertParseTransformer.ts +10 -10
  169. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +10 -10
  170. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +10 -10
  171. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +12 -12
  172. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +9 -9
  173. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +10 -10
  174. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +9 -9
  175. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +10 -10
  176. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +12 -12
  177. package/src/transformers/features/json/JsonIsParseTransformer.ts +9 -9
  178. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +10 -10
  179. package/src/transformers/features/json/JsonStringifyTransformer.ts +9 -9
  180. package/src/transformers/features/json/JsonValidateParseTransformer.ts +10 -10
  181. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +10 -10
  182. package/src/transformers/features/misc/MetadataTransformer.ts +53 -53
  183. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +10 -10
  184. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +10 -10
  185. package/src/transformers/features/misc/MiscCloneTransformer.ts +9 -9
  186. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +10 -10
  187. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +10 -10
  188. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +9 -9
  189. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +9 -9
  190. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +9 -9
  191. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +9 -9
  192. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +10 -10
  193. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +10 -10
  194. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +9 -9
  195. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +9 -9
  196. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +28 -28
  197. package/src/transformers/features/misc/MiscPruneTransformer.ts +9 -9
  198. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +10 -10
  199. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +10 -10
  200. package/src/transformers/features/protobuf/CreateProtobufAssertDecodeTransformer.ts +12 -12
  201. package/src/transformers/features/protobuf/CreateProtobufAssertEncodeTransformer.ts +12 -12
  202. package/src/transformers/features/protobuf/CreateProtobufDecodeTransformer.ts +9 -9
  203. package/src/transformers/features/protobuf/CreateProtobufEncodeTransformer.ts +9 -9
  204. package/src/transformers/features/protobuf/CreateProtobufIsDecodeTransformer.ts +12 -12
  205. package/src/transformers/features/protobuf/CreateProtobufIsEncodeTransformer.ts +12 -12
  206. package/src/transformers/features/protobuf/CreateProtobufValidateDecodeTransformer.ts +12 -12
  207. package/src/transformers/features/protobuf/CreateProtobufValidateEncodeTransformer.ts +12 -12
  208. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +10 -10
  209. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +10 -10
  210. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +10 -10
  211. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +10 -10
  212. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +10 -10
  213. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +10 -10
  214. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +31 -31
  215. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +12 -12
  216. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +12 -12
  217. package/src/utils/NameEncoder.ts +32 -32
@@ -1,31 +1,31 @@
1
- import { Metadata } from "../../schemas/metadata/Metadata";
2
-
3
- import { Atomic } from "../../typings/Atomic";
4
-
5
- import { ArrayUtil } from "../../utils/ArrayUtil";
6
-
7
- export namespace AtomicPredicator {
8
- export const constant =
9
- (meta: Metadata) =>
10
- (name: Atomic.Literal): boolean =>
11
- !ArrayUtil.has(meta.atomics, (atomic) => atomic === name) &&
12
- !ArrayUtil.has(
13
- meta.natives,
14
- (native) => native.toLowerCase() === name,
15
- );
16
-
17
- export const atomic =
18
- (meta: Metadata) =>
19
- (name: Atomic.Literal): boolean =>
20
- !ArrayUtil.has(
21
- meta.natives,
22
- (native) => native.toLowerCase() === name,
23
- );
24
-
25
- export const native = (name: string) => LIKE.has(name.toLowerCase());
26
-
27
- export const template = (meta: Metadata): boolean =>
28
- !ArrayUtil.has(meta.atomics, (type) => type === "string");
29
- }
30
-
31
- const LIKE = new Set(["boolean", "number", "string"]);
1
+ import { Metadata } from "../../schemas/metadata/Metadata";
2
+
3
+ import { Atomic } from "../../typings/Atomic";
4
+
5
+ import { ArrayUtil } from "../../utils/ArrayUtil";
6
+
7
+ export namespace AtomicPredicator {
8
+ export const constant =
9
+ (meta: Metadata) =>
10
+ (name: Atomic.Literal): boolean =>
11
+ !ArrayUtil.has(meta.atomics, (atomic) => atomic === name) &&
12
+ !ArrayUtil.has(
13
+ meta.natives,
14
+ (native) => native.toLowerCase() === name,
15
+ );
16
+
17
+ export const atomic =
18
+ (meta: Metadata) =>
19
+ (name: Atomic.Literal): boolean =>
20
+ !ArrayUtil.has(
21
+ meta.natives,
22
+ (native) => native.toLowerCase() === name,
23
+ );
24
+
25
+ export const native = (name: string) => LIKE.has(name.toLowerCase());
26
+
27
+ export const template = (meta: Metadata): boolean =>
28
+ !ArrayUtil.has(meta.atomics, (type) => type === "string");
29
+ }
30
+
31
+ const LIKE = new Set(["boolean", "number", "string"]);
@@ -1,107 +1,107 @@
1
- import ts from "typescript";
2
-
3
- import { StatementFactory } from "../../factories/StatementFactory";
4
- import { TypeFactory } from "../../factories/TypeFactory";
5
-
6
- import { Escaper } from "../../utils/Escaper";
7
-
8
- import { metadata_to_pattern } from "../internal/metadata_to_pattern";
9
- import { IExpressionEntry } from "./IExpressionEntry";
10
-
11
- export namespace CloneJoiner {
12
- export const object = (
13
- input: ts.Expression,
14
- entries: IExpressionEntry<ts.Expression>[],
15
- ): ts.ConciseBody => {
16
- if (entries.length === 0) return ts.factory.createIdentifier("{}");
17
-
18
- const regular = entries.filter((e) => e.key.isSoleLiteral());
19
- const dynamic = entries.filter((e) => !e.key.isSoleLiteral());
20
- const literal = ts.factory.createObjectLiteralExpression(
21
- regular.map((entry) => {
22
- const str: string = entry.key.getSoleLiteral()!;
23
- return ts.factory.createPropertyAssignment(
24
- Escaper.variable(str)
25
- ? str
26
- : ts.factory.createStringLiteral(str),
27
- entry.expression,
28
- );
29
- }),
30
- true,
31
- );
32
- if (dynamic.length === 0) return literal;
33
-
34
- const key = ts.factory.createIdentifier("key");
35
- const output = ts.factory.createIdentifier("output");
36
-
37
- const statements: ts.Statement[] = dynamic.map((entry) =>
38
- ts.factory.createIfStatement(
39
- ts.factory.createCallExpression(
40
- ts.factory.createIdentifier(
41
- `RegExp(/${metadata_to_pattern(true)(
42
- entry.key,
43
- )}/).test`,
44
- ),
45
- undefined,
46
- [key],
47
- ),
48
- ts.factory.createBlock([
49
- ts.factory.createExpressionStatement(
50
- ts.factory.createBinaryExpression(
51
- ts.factory.createElementAccessExpression(
52
- output,
53
- key,
54
- ),
55
- ts.factory.createToken(ts.SyntaxKind.EqualsToken),
56
- entry.expression,
57
- ),
58
- ),
59
- ts.factory.createContinueStatement(),
60
- ]),
61
- ),
62
- );
63
-
64
- return ts.factory.createBlock([
65
- StatementFactory.constant(
66
- "output",
67
- ts.factory.createAsExpression(
68
- literal,
69
- TypeFactory.keyword("any"),
70
- ),
71
- ),
72
- ts.factory.createForOfStatement(
73
- undefined,
74
- StatementFactory.entry("key")("value"),
75
- ts.factory.createCallExpression(
76
- ts.factory.createIdentifier("Object.entries"),
77
- undefined,
78
- [input],
79
- ),
80
- ts.factory.createBlock(statements),
81
- ),
82
- ts.factory.createReturnStatement(output),
83
- ]);
84
- };
85
-
86
- export const tuple = (
87
- children: ts.Expression[],
88
- rest: ts.Expression | null,
89
- ): ts.Expression => {
90
- return ts.factory.createAsExpression(
91
- ts.factory.createArrayLiteralExpression(
92
- rest === null
93
- ? children
94
- : [...children, ts.factory.createSpreadElement(rest)],
95
- true,
96
- ),
97
- TypeFactory.keyword("any"),
98
- );
99
- };
100
-
101
- export const array = (input: ts.Expression, arrow: ts.Expression) =>
102
- ts.factory.createCallExpression(
103
- ts.factory.createPropertyAccessExpression(input, "map"),
104
- undefined,
105
- [arrow],
106
- );
107
- }
1
+ import ts from "typescript";
2
+
3
+ import { StatementFactory } from "../../factories/StatementFactory";
4
+ import { TypeFactory } from "../../factories/TypeFactory";
5
+
6
+ import { Escaper } from "../../utils/Escaper";
7
+
8
+ import { metadata_to_pattern } from "../internal/metadata_to_pattern";
9
+ import { IExpressionEntry } from "./IExpressionEntry";
10
+
11
+ export namespace CloneJoiner {
12
+ export const object = (
13
+ input: ts.Expression,
14
+ entries: IExpressionEntry<ts.Expression>[],
15
+ ): ts.ConciseBody => {
16
+ if (entries.length === 0) return ts.factory.createIdentifier("{}");
17
+
18
+ const regular = entries.filter((e) => e.key.isSoleLiteral());
19
+ const dynamic = entries.filter((e) => !e.key.isSoleLiteral());
20
+ const literal = ts.factory.createObjectLiteralExpression(
21
+ regular.map((entry) => {
22
+ const str: string = entry.key.getSoleLiteral()!;
23
+ return ts.factory.createPropertyAssignment(
24
+ Escaper.variable(str)
25
+ ? str
26
+ : ts.factory.createStringLiteral(str),
27
+ entry.expression,
28
+ );
29
+ }),
30
+ true,
31
+ );
32
+ if (dynamic.length === 0) return literal;
33
+
34
+ const key = ts.factory.createIdentifier("key");
35
+ const output = ts.factory.createIdentifier("output");
36
+
37
+ const statements: ts.Statement[] = dynamic.map((entry) =>
38
+ ts.factory.createIfStatement(
39
+ ts.factory.createCallExpression(
40
+ ts.factory.createIdentifier(
41
+ `RegExp(/${metadata_to_pattern(true)(
42
+ entry.key,
43
+ )}/).test`,
44
+ ),
45
+ undefined,
46
+ [key],
47
+ ),
48
+ ts.factory.createBlock([
49
+ ts.factory.createExpressionStatement(
50
+ ts.factory.createBinaryExpression(
51
+ ts.factory.createElementAccessExpression(
52
+ output,
53
+ key,
54
+ ),
55
+ ts.factory.createToken(ts.SyntaxKind.EqualsToken),
56
+ entry.expression,
57
+ ),
58
+ ),
59
+ ts.factory.createContinueStatement(),
60
+ ]),
61
+ ),
62
+ );
63
+
64
+ return ts.factory.createBlock([
65
+ StatementFactory.constant(
66
+ "output",
67
+ ts.factory.createAsExpression(
68
+ literal,
69
+ TypeFactory.keyword("any"),
70
+ ),
71
+ ),
72
+ ts.factory.createForOfStatement(
73
+ undefined,
74
+ StatementFactory.entry("key")("value"),
75
+ ts.factory.createCallExpression(
76
+ ts.factory.createIdentifier("Object.entries"),
77
+ undefined,
78
+ [input],
79
+ ),
80
+ ts.factory.createBlock(statements),
81
+ ),
82
+ ts.factory.createReturnStatement(output),
83
+ ]);
84
+ };
85
+
86
+ export const tuple = (
87
+ children: ts.Expression[],
88
+ rest: ts.Expression | null,
89
+ ): ts.Expression => {
90
+ return ts.factory.createAsExpression(
91
+ ts.factory.createArrayLiteralExpression(
92
+ rest === null
93
+ ? children
94
+ : [...children, ts.factory.createSpreadElement(rest)],
95
+ true,
96
+ ),
97
+ TypeFactory.keyword("any"),
98
+ );
99
+ };
100
+
101
+ export const array = (input: ts.Expression, arrow: ts.Expression) =>
102
+ ts.factory.createCallExpression(
103
+ ts.factory.createPropertyAccessExpression(input, "map"),
104
+ undefined,
105
+ [arrow],
106
+ );
107
+ }
@@ -1,89 +1,89 @@
1
- import ts from "typescript";
2
-
3
- import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
- import { StatementFactory } from "../../factories/StatementFactory";
5
- import { TypeFactory } from "../../factories/TypeFactory";
6
-
7
- export class FunctionImporter {
8
- private readonly used_: Set<string> = new Set();
9
- private readonly local_: Set<string> = new Set();
10
- private readonly unions_: Map<string, [string, ts.ArrowFunction]> =
11
- new Map();
12
- private sequence_: number = 0;
13
-
14
- public empty(): boolean {
15
- return this.used_.size === 0;
16
- }
17
-
18
- public use(name: string): ts.Identifier {
19
- this.used_.add(name);
20
- return ts.factory.createIdentifier("$" + name);
21
- }
22
-
23
- public useLocal(name: string): string {
24
- this.local_.add(name);
25
- return name;
26
- }
27
-
28
- public hasLocal(name: string): boolean {
29
- return this.local_.has(name);
30
- }
31
-
32
- public declare(
33
- modulo: ts.LeftHandSideExpression,
34
- includeUnions: boolean = true,
35
- ): ts.Statement[] {
36
- return [
37
- ...[...this.used_].map((name) =>
38
- StatementFactory.constant(
39
- "$" + name,
40
- IdentifierFactory.access(
41
- ts.factory.createParenthesizedExpression(
42
- ts.factory.createAsExpression(
43
- modulo,
44
- TypeFactory.keyword("any"),
45
- ),
46
- ),
47
- )(name),
48
- ),
49
- ),
50
- ...(includeUnions === true
51
- ? [...this.unions_.values()].map(([key, arrow]) =>
52
- StatementFactory.constant(key, arrow),
53
- )
54
- : []),
55
- ];
56
- }
57
-
58
- public declareUnions(): ts.Statement[] {
59
- return [...this.unions_.values()].map(([key, arrow]) =>
60
- StatementFactory.constant(key, arrow),
61
- );
62
- }
63
-
64
- public increment(): number {
65
- return ++this.sequence_;
66
- }
67
-
68
- public emplaceUnion(
69
- prefix: string,
70
- name: string,
71
- factory: () => ts.ArrowFunction,
72
- ): string {
73
- const oldbie = this.unions_.get(name);
74
- if (oldbie) return oldbie[0];
75
-
76
- const index: number = this.unions_.size;
77
- const accessor: string = `${prefix}p${index}`;
78
-
79
- const tuple: [string, ReturnType<typeof factory>] = [accessor, null!];
80
- this.unions_.set(name, tuple);
81
- tuple[1] = factory();
82
- return accessor;
83
- }
84
-
85
- public trace(): void {
86
- console.log(...this.used_);
87
- console.log(...this.local_);
88
- }
89
- }
1
+ import ts from "typescript";
2
+
3
+ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { StatementFactory } from "../../factories/StatementFactory";
5
+ import { TypeFactory } from "../../factories/TypeFactory";
6
+
7
+ export class FunctionImporter {
8
+ private readonly used_: Set<string> = new Set();
9
+ private readonly local_: Set<string> = new Set();
10
+ private readonly unions_: Map<string, [string, ts.ArrowFunction]> =
11
+ new Map();
12
+ private sequence_: number = 0;
13
+
14
+ public empty(): boolean {
15
+ return this.used_.size === 0;
16
+ }
17
+
18
+ public use(name: string): ts.Identifier {
19
+ this.used_.add(name);
20
+ return ts.factory.createIdentifier("$" + name);
21
+ }
22
+
23
+ public useLocal(name: string): string {
24
+ this.local_.add(name);
25
+ return name;
26
+ }
27
+
28
+ public hasLocal(name: string): boolean {
29
+ return this.local_.has(name);
30
+ }
31
+
32
+ public declare(
33
+ modulo: ts.LeftHandSideExpression,
34
+ includeUnions: boolean = true,
35
+ ): ts.Statement[] {
36
+ return [
37
+ ...[...this.used_].map((name) =>
38
+ StatementFactory.constant(
39
+ "$" + name,
40
+ IdentifierFactory.access(
41
+ ts.factory.createParenthesizedExpression(
42
+ ts.factory.createAsExpression(
43
+ modulo,
44
+ TypeFactory.keyword("any"),
45
+ ),
46
+ ),
47
+ )(name),
48
+ ),
49
+ ),
50
+ ...(includeUnions === true
51
+ ? [...this.unions_.values()].map(([key, arrow]) =>
52
+ StatementFactory.constant(key, arrow),
53
+ )
54
+ : []),
55
+ ];
56
+ }
57
+
58
+ public declareUnions(): ts.Statement[] {
59
+ return [...this.unions_.values()].map(([key, arrow]) =>
60
+ StatementFactory.constant(key, arrow),
61
+ );
62
+ }
63
+
64
+ public increment(): number {
65
+ return ++this.sequence_;
66
+ }
67
+
68
+ public emplaceUnion(
69
+ prefix: string,
70
+ name: string,
71
+ factory: () => ts.ArrowFunction,
72
+ ): string {
73
+ const oldbie = this.unions_.get(name);
74
+ if (oldbie) return oldbie[0];
75
+
76
+ const index: number = this.unions_.size;
77
+ const accessor: string = `${prefix}p${index}`;
78
+
79
+ const tuple: [string, ReturnType<typeof factory>] = [accessor, null!];
80
+ this.unions_.set(name, tuple);
81
+ tuple[1] = factory();
82
+ return accessor;
83
+ }
84
+
85
+ public trace(): void {
86
+ console.log(...this.used_);
87
+ console.log(...this.local_);
88
+ }
89
+ }
@@ -1,12 +1,12 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../schemas/metadata/Metadata";
4
-
5
- export interface IExpressionEntry<
6
- Expression extends ts.ConciseBody = ts.ConciseBody,
7
- > {
8
- input: ts.Expression;
9
- key: Metadata;
10
- meta: Metadata;
11
- expression: Expression;
12
- }
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../schemas/metadata/Metadata";
4
+
5
+ export interface IExpressionEntry<
6
+ Expression extends ts.ConciseBody = ts.ConciseBody,
7
+ > {
8
+ input: ts.Expression;
9
+ key: Metadata;
10
+ meta: Metadata;
11
+ expression: Expression;
12
+ }
@@ -1,24 +1,24 @@
1
- import { Metadata } from "../../schemas/metadata/Metadata";
2
-
3
- import { Atomic } from "../../typings/Atomic";
4
-
5
- export namespace ProtobufUtil {
6
- export const atomics = (meta: Metadata) => {
7
- const set: Set<Atomic.Literal> = new Set();
8
-
9
- for (const atomic of meta.atomics) set.add(atomic);
10
- for (const constant of meta.constants) set.add(constant.type);
11
- if (meta.templates.length) set.add("string");
12
-
13
- return [...set].sort(
14
- (x, y) => ATOMIC_ORDER.get(x)! - ATOMIC_ORDER.get(y)!,
15
- );
16
- };
17
- }
18
-
19
- const ATOMIC_ORDER = new Map<Atomic.Literal, number>([
20
- ["boolean", 0],
21
- ["bigint", 1],
22
- ["number", 2],
23
- ["string", 3],
24
- ]);
1
+ import { Metadata } from "../../schemas/metadata/Metadata";
2
+
3
+ import { Atomic } from "../../typings/Atomic";
4
+
5
+ export namespace ProtobufUtil {
6
+ export const atomics = (meta: Metadata) => {
7
+ const set: Set<Atomic.Literal> = new Set();
8
+
9
+ for (const atomic of meta.atomics) set.add(atomic);
10
+ for (const constant of meta.constants) set.add(constant.type);
11
+ if (meta.templates.length) set.add("string");
12
+
13
+ return [...set].sort(
14
+ (x, y) => ATOMIC_ORDER.get(x)! - ATOMIC_ORDER.get(y)!,
15
+ );
16
+ };
17
+ }
18
+
19
+ const ATOMIC_ORDER = new Map<Atomic.Literal, number>([
20
+ ["boolean", 0],
21
+ ["bigint", 1],
22
+ ["number", 2],
23
+ ["string", 3],
24
+ ]);
@@ -1,34 +1,34 @@
1
- export const enum ProtobufWire {
2
- /**
3
- * - integers
4
- * - bool
5
- * - enum
6
- */
7
- VARIANT = 0,
8
-
9
- /**
10
- * - fixed64
11
- * - sfixed64
12
- * - double
13
- */
14
- I64 = 1,
15
-
16
- /**
17
- * - string
18
- * - bytes
19
- * - mebedded messages
20
- * - packed repeated fields
21
- */
22
- LEN = 2,
23
-
24
- START_GROUP = 3,
25
-
26
- END_GROUP = 4,
27
-
28
- /**
29
- * - fixed
30
- * - sfixed32
31
- * - float
32
- */
33
- I32 = 5,
34
- }
1
+ export const enum ProtobufWire {
2
+ /**
3
+ * - integers
4
+ * - bool
5
+ * - enum
6
+ */
7
+ VARIANT = 0,
8
+
9
+ /**
10
+ * - fixed64
11
+ * - sfixed64
12
+ * - double
13
+ */
14
+ I64 = 1,
15
+
16
+ /**
17
+ * - string
18
+ * - bytes
19
+ * - mebedded messages
20
+ * - packed repeated fields
21
+ */
22
+ LEN = 2,
23
+
24
+ START_GROUP = 3,
25
+
26
+ END_GROUP = 4,
27
+
28
+ /**
29
+ * - fixed
30
+ * - sfixed32
31
+ * - float
32
+ */
33
+ I32 = 5,
34
+ }