typia 5.0.5 → 5.1.0-dev.20230922

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 (292) hide show
  1. package/lib/factories/MetadataCollection.js +25 -9
  2. package/lib/factories/MetadataCollection.js.map +1 -1
  3. package/package.json +1 -1
  4. package/src/IRandomGenerator.ts +35 -35
  5. package/src/IValidation.ts +21 -21
  6. package/src/Primitive.ts +135 -135
  7. package/src/Resolved.ts +116 -116
  8. package/src/TypeGuardError.ts +36 -36
  9. package/src/executable/TypiaGenerateWizard.ts +85 -85
  10. package/src/executable/TypiaSetupWizard.ts +153 -153
  11. package/src/executable/setup/ArgumentParser.ts +45 -45
  12. package/src/executable/setup/CommandExecutor.ts +8 -8
  13. package/src/executable/setup/FileRetriever.ts +22 -22
  14. package/src/executable/setup/PackageManager.ts +71 -71
  15. package/src/executable/setup/PluginConfigurator.ts +70 -70
  16. package/src/executable/typia.ts +52 -52
  17. package/src/factories/CommentFactory.ts +84 -84
  18. package/src/factories/ExpressionFactory.ts +159 -159
  19. package/src/factories/IdentifierFactory.ts +74 -74
  20. package/src/factories/JsonMetadataFactory.ts +43 -43
  21. package/src/factories/LiteralFactory.ts +47 -47
  22. package/src/factories/MetadataCollection.ts +274 -269
  23. package/src/factories/MetadataCommentTagFactory.ts +629 -629
  24. package/src/factories/MetadataFactory.ts +214 -214
  25. package/src/factories/MetadataTypeTagFactory.ts +313 -313
  26. package/src/factories/NumericRangeFactory.ts +33 -33
  27. package/src/factories/ProtobufFactory.ts +272 -272
  28. package/src/factories/StatementFactory.ts +72 -72
  29. package/src/factories/TemplateFactory.ts +58 -58
  30. package/src/factories/TypeFactory.ts +119 -119
  31. package/src/factories/ValueFactory.ts +12 -12
  32. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  33. package/src/factories/internal/metadata/emend_metadata_atomics.ts +40 -40
  34. package/src/factories/internal/metadata/emplace_metadata_alias.ts +41 -41
  35. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +41 -41
  36. package/src/factories/internal/metadata/emplace_metadata_object.ts +150 -150
  37. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +60 -60
  38. package/src/factories/internal/metadata/explore_metadata.ts +32 -32
  39. package/src/factories/internal/metadata/iterate_metadata.ts +101 -101
  40. package/src/factories/internal/metadata/iterate_metadata_alias.ts +35 -35
  41. package/src/factories/internal/metadata/iterate_metadata_array.ts +37 -37
  42. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  43. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  44. package/src/factories/internal/metadata/iterate_metadata_collection.ts +141 -141
  45. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +26 -26
  46. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  47. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +197 -197
  48. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  49. package/src/factories/internal/metadata/iterate_metadata_native.ts +210 -210
  50. package/src/factories/internal/metadata/iterate_metadata_object.ts +44 -44
  51. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +52 -52
  52. package/src/factories/internal/metadata/iterate_metadata_set.ts +42 -42
  53. package/src/factories/internal/metadata/iterate_metadata_sort.ts +69 -69
  54. package/src/factories/internal/metadata/iterate_metadata_template.ts +47 -47
  55. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +37 -37
  56. package/src/factories/internal/metadata/iterate_metadata_union.ts +27 -27
  57. package/src/functional/$ProtobufReader.ts +201 -201
  58. package/src/functional/$ProtobufSizer.ts +147 -147
  59. package/src/functional/$ProtobufWriter.ts +151 -151
  60. package/src/functional/$any.ts +4 -4
  61. package/src/functional/$clone.ts +4 -4
  62. package/src/functional/$dictionary.ts +25 -25
  63. package/src/functional/$every.ts +11 -11
  64. package/src/functional/$guard.ts +35 -35
  65. package/src/functional/$is_between.ts +2 -2
  66. package/src/functional/$join.ts +46 -46
  67. package/src/functional/$number.ts +13 -13
  68. package/src/functional/$report.ts +15 -15
  69. package/src/functional/$rest.ts +3 -3
  70. package/src/functional/$string.ts +50 -50
  71. package/src/functional/$strlen.ts +7 -7
  72. package/src/functional/$tail.ts +5 -5
  73. package/src/functional/$varint.ts +130 -130
  74. package/src/functional/$zigzag.ts +39 -39
  75. package/src/functional/IProtobufWriter.ts +18 -18
  76. package/src/functional/Namespace.ts +133 -133
  77. package/src/index.ts +4 -4
  78. package/src/json.ts +648 -648
  79. package/src/misc.ts +651 -651
  80. package/src/module.ts +656 -656
  81. package/src/programmers/AssertProgrammer.ts +317 -317
  82. package/src/programmers/CheckerProgrammer.ts +1137 -1137
  83. package/src/programmers/FeatureProgrammer.ts +478 -478
  84. package/src/programmers/IsProgrammer.ts +252 -252
  85. package/src/programmers/RandomProgrammer.ts +878 -878
  86. package/src/programmers/TypiaProgrammer.ts +169 -169
  87. package/src/programmers/ValidateProgrammer.ts +346 -346
  88. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  89. package/src/programmers/helpers/CloneJoiner.ts +144 -144
  90. package/src/programmers/helpers/FunctionImporeter.ts +91 -91
  91. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  92. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  93. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  94. package/src/programmers/helpers/ProtobufUtil.ts +125 -125
  95. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  96. package/src/programmers/helpers/PruneJoiner.ts +143 -143
  97. package/src/programmers/helpers/RandomJoiner.ts +151 -151
  98. package/src/programmers/helpers/RandomRanger.ts +173 -173
  99. package/src/programmers/helpers/StringifyJoinder.ts +113 -113
  100. package/src/programmers/helpers/StringifyPredicator.ts +12 -12
  101. package/src/programmers/helpers/UnionExplorer.ts +305 -305
  102. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  103. package/src/programmers/helpers/disable_function_importer_declare.ts +32 -32
  104. package/src/programmers/internal/JSON_SCHEMA_PREFIX.ts +1 -1
  105. package/src/programmers/internal/application_alias.ts +65 -65
  106. package/src/programmers/internal/application_array.ts +53 -53
  107. package/src/programmers/internal/application_boolean.ts +15 -15
  108. package/src/programmers/internal/application_constant.ts +26 -26
  109. package/src/programmers/internal/application_default.ts +17 -17
  110. package/src/programmers/internal/application_default_string.ts +37 -37
  111. package/src/programmers/internal/application_escaped.ts +55 -55
  112. package/src/programmers/internal/application_native.ts +39 -39
  113. package/src/programmers/internal/application_number.ts +88 -88
  114. package/src/programmers/internal/application_object.ts +162 -162
  115. package/src/programmers/internal/application_schema.ts +175 -175
  116. package/src/programmers/internal/application_string.ts +51 -51
  117. package/src/programmers/internal/application_templates.ts +25 -25
  118. package/src/programmers/internal/application_tuple.ts +58 -58
  119. package/src/programmers/internal/check_array_length.ts +41 -41
  120. package/src/programmers/internal/check_bigint.ts +45 -45
  121. package/src/programmers/internal/check_dynamic_properties.ts +194 -194
  122. package/src/programmers/internal/check_everything.ts +28 -28
  123. package/src/programmers/internal/check_native.ts +21 -21
  124. package/src/programmers/internal/check_number.ts +105 -105
  125. package/src/programmers/internal/check_object.ts +55 -55
  126. package/src/programmers/internal/check_string.ts +45 -45
  127. package/src/programmers/internal/check_template.ts +61 -61
  128. package/src/programmers/internal/check_union_array_like.ts +323 -323
  129. package/src/programmers/internal/decode_union_object.ts +84 -84
  130. package/src/programmers/internal/feature_object_entries.ts +58 -58
  131. package/src/programmers/internal/metadata_to_pattern.ts +34 -34
  132. package/src/programmers/internal/prune_object_properties.ts +60 -60
  133. package/src/programmers/internal/random_custom.ts +37 -37
  134. package/src/programmers/internal/stringify_dynamic_properties.ts +171 -171
  135. package/src/programmers/internal/stringify_native.ts +7 -7
  136. package/src/programmers/internal/stringify_regular_properties.ts +83 -83
  137. package/src/programmers/internal/template_to_pattern.ts +15 -15
  138. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +20 -20
  139. package/src/programmers/json/JsonApplicationProgrammer.ts +50 -50
  140. package/src/programmers/json/JsonAssertParseProgrammer.ts +71 -71
  141. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +66 -66
  142. package/src/programmers/json/JsonIsParseProgrammer.ts +77 -77
  143. package/src/programmers/json/JsonIsStringifyProgrammer.ts +76 -76
  144. package/src/programmers/json/JsonStringifyProgrammer.ts +964 -964
  145. package/src/programmers/json/JsonValidateParseProgrammer.ts +68 -68
  146. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +84 -84
  147. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +71 -71
  148. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +68 -68
  149. package/src/programmers/misc/MiscCloneProgrammer.ts +774 -774
  150. package/src/programmers/misc/MiscIsCloneProgrammer.ts +78 -78
  151. package/src/programmers/misc/MiscIsPruneProgrammer.ts +73 -73
  152. package/src/programmers/misc/MiscLiteralsProgrammer.ts +69 -69
  153. package/src/programmers/misc/MiscPruneProgrammer.ts +550 -550
  154. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +85 -85
  155. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +78 -78
  156. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +75 -75
  157. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +66 -66
  158. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +655 -655
  159. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +883 -883
  160. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +85 -85
  161. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +76 -76
  162. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +165 -165
  163. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +75 -75
  164. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +86 -86
  165. package/src/protobuf.ts +881 -881
  166. package/src/schemas/json/IJsonApplication.ts +8 -8
  167. package/src/schemas/json/IJsonComponents.ts +33 -33
  168. package/src/schemas/json/IJsonSchema.ts +110 -110
  169. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  170. package/src/schemas/metadata/IMetadata.ts +34 -34
  171. package/src/schemas/metadata/IMetadataAlias.ts +12 -12
  172. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  173. package/src/schemas/metadata/IMetadataArray.ts +7 -7
  174. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  175. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  176. package/src/schemas/metadata/IMetadataCollection.ts +11 -11
  177. package/src/schemas/metadata/IMetadataConstant.ts +16 -16
  178. package/src/schemas/metadata/IMetadataDictionary.ts +14 -14
  179. package/src/schemas/metadata/IMetadataEntry.ts +6 -6
  180. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  181. package/src/schemas/metadata/IMetadataObject.ts +18 -18
  182. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  183. package/src/schemas/metadata/IMetadataTuple.ts +7 -7
  184. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  185. package/src/schemas/metadata/IMetadataTypeTag.ts +8 -8
  186. package/src/schemas/metadata/Metadata.ts +685 -685
  187. package/src/schemas/metadata/MetadataAlias.ts +61 -61
  188. package/src/schemas/metadata/MetadataArray.ts +49 -49
  189. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  190. package/src/schemas/metadata/MetadataAtomic.ts +42 -42
  191. package/src/schemas/metadata/MetadataConstant.ts +3 -3
  192. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  193. package/src/schemas/metadata/MetadataObject.ts +139 -139
  194. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  195. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  196. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  197. package/src/tags/ExclusiveMaximum.ts +13 -13
  198. package/src/tags/ExclusiveMinimum.ts +13 -13
  199. package/src/tags/Format.ts +30 -30
  200. package/src/tags/MaxItems.ts +9 -9
  201. package/src/tags/MaxLength.ts +9 -9
  202. package/src/tags/Maximum.ts +13 -13
  203. package/src/tags/MinItems.ts +9 -9
  204. package/src/tags/MinLength.ts +9 -9
  205. package/src/tags/Minimum.ts +13 -13
  206. package/src/tags/MultipleOf.ts +15 -15
  207. package/src/tags/Pattern.ts +8 -8
  208. package/src/tags/TagBase.ts +68 -68
  209. package/src/tags/Type.ts +27 -27
  210. package/src/tags/index.ts +13 -13
  211. package/src/transform.ts +35 -35
  212. package/src/transformers/CallExpressionTransformer.ts +243 -243
  213. package/src/transformers/FileTransformer.ts +57 -57
  214. package/src/transformers/IProject.ts +15 -15
  215. package/src/transformers/ITransformOptions.ts +62 -62
  216. package/src/transformers/ImportTransformer.ts +66 -66
  217. package/src/transformers/NodeTransformer.ts +13 -13
  218. package/src/transformers/TransformerError.ts +55 -55
  219. package/src/transformers/features/AssertTransformer.ts +11 -11
  220. package/src/transformers/features/CreateAssertTransformer.ts +13 -13
  221. package/src/transformers/features/CreateIsTransformer.ts +11 -11
  222. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  223. package/src/transformers/features/CreateValidateTransformer.ts +13 -13
  224. package/src/transformers/features/IsTransformer.ts +11 -11
  225. package/src/transformers/features/RandomTransformer.ts +46 -46
  226. package/src/transformers/features/ValidateTransformer.ts +11 -11
  227. package/src/transformers/features/json/JsonApplicationTransformer.ts +118 -118
  228. package/src/transformers/features/json/JsonAssertParseTransformer.ts +10 -10
  229. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +10 -10
  230. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +10 -10
  231. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +12 -12
  232. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +9 -9
  233. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +10 -10
  234. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +9 -9
  235. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +10 -10
  236. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +12 -12
  237. package/src/transformers/features/json/JsonIsParseTransformer.ts +9 -9
  238. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +10 -10
  239. package/src/transformers/features/json/JsonStringifyTransformer.ts +9 -9
  240. package/src/transformers/features/json/JsonValidateParseTransformer.ts +10 -10
  241. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +10 -10
  242. package/src/transformers/features/misc/MetadataTransformer.ts +61 -61
  243. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +10 -10
  244. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +10 -10
  245. package/src/transformers/features/misc/MiscCloneTransformer.ts +9 -9
  246. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +10 -10
  247. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +10 -10
  248. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +9 -9
  249. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +9 -9
  250. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +9 -9
  251. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +9 -9
  252. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +10 -10
  253. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +10 -10
  254. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +9 -9
  255. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +9 -9
  256. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +32 -32
  257. package/src/transformers/features/misc/MiscPruneTransformer.ts +9 -9
  258. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +10 -10
  259. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +10 -10
  260. package/src/transformers/features/protobuf/CreateProtobufAssertDecodeTransformer.ts +12 -12
  261. package/src/transformers/features/protobuf/CreateProtobufAssertEncodeTransformer.ts +12 -12
  262. package/src/transformers/features/protobuf/CreateProtobufDecodeTransformer.ts +9 -9
  263. package/src/transformers/features/protobuf/CreateProtobufEncodeTransformer.ts +9 -9
  264. package/src/transformers/features/protobuf/CreateProtobufIsDecodeTransformer.ts +12 -12
  265. package/src/transformers/features/protobuf/CreateProtobufIsEncodeTransformer.ts +12 -12
  266. package/src/transformers/features/protobuf/CreateProtobufValidateDecodeTransformer.ts +12 -12
  267. package/src/transformers/features/protobuf/CreateProtobufValidateEncodeTransformer.ts +12 -12
  268. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +10 -10
  269. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +10 -10
  270. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +10 -10
  271. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +10 -10
  272. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +10 -10
  273. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +10 -10
  274. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +33 -33
  275. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +12 -12
  276. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +12 -12
  277. package/src/transformers/internal/GenericTransformer.ts +104 -104
  278. package/src/typings/Atomic.ts +18 -18
  279. package/src/typings/ClassProperties.ts +5 -5
  280. package/src/typings/Customizable.ts +5 -5
  281. package/src/typings/OmitNever.ts +3 -3
  282. package/src/typings/ProtobufAtomic.ts +19 -19
  283. package/src/typings/SpecialFields.ts +3 -3
  284. package/src/typings/ValidationPipe.ts +9 -9
  285. package/src/typings/Writable.ts +11 -11
  286. package/src/utils/ArrayUtil.ts +45 -45
  287. package/src/utils/Escaper.ts +46 -46
  288. package/src/utils/MapUtil.ts +12 -12
  289. package/src/utils/NameEncoder.ts +32 -32
  290. package/src/utils/PatternUtil.ts +33 -33
  291. package/src/utils/RandomGenerator.ts +83 -83
  292. package/src/utils/Singleton.ts +17 -17
@@ -1,72 +1,72 @@
1
- import ts from "typescript";
2
-
3
- export namespace StatementFactory {
4
- export const mut = (name: string, initializer?: ts.Expression) =>
5
- ts.factory.createVariableStatement(
6
- undefined,
7
- ts.factory.createVariableDeclarationList(
8
- [
9
- ts.factory.createVariableDeclaration(
10
- name,
11
- undefined,
12
- undefined,
13
- initializer,
14
- ),
15
- ],
16
- ts.NodeFlags.Let,
17
- ),
18
- );
19
-
20
- export const constant = (name: string, initializer?: ts.Expression) =>
21
- ts.factory.createVariableStatement(
22
- undefined,
23
- ts.factory.createVariableDeclarationList(
24
- [
25
- ts.factory.createVariableDeclaration(
26
- name,
27
- undefined,
28
- undefined,
29
- initializer,
30
- ),
31
- ],
32
- ts.NodeFlags.Const,
33
- ),
34
- );
35
-
36
- export const entry = (key: string) => (value: string) =>
37
- ts.factory.createVariableDeclarationList(
38
- [
39
- ts.factory.createVariableDeclaration(
40
- ts.factory.createArrayBindingPattern([
41
- ts.factory.createBindingElement(
42
- undefined,
43
- undefined,
44
- ts.factory.createIdentifier(key),
45
- undefined,
46
- ),
47
- ts.factory.createBindingElement(
48
- undefined,
49
- undefined,
50
- ts.factory.createIdentifier(value),
51
- undefined,
52
- ),
53
- ]),
54
- undefined,
55
- undefined,
56
- undefined,
57
- ),
58
- ],
59
- ts.NodeFlags.Const,
60
- );
61
-
62
- export const transpile = (script: string) =>
63
- ts.factory.createExpressionStatement(
64
- ts.factory.createIdentifier(ts.transpile(script)),
65
- );
66
-
67
- export const block = (expression: ts.Expression) =>
68
- ts.factory.createBlock(
69
- [ts.factory.createExpressionStatement(expression)],
70
- true,
71
- );
72
- }
1
+ import ts from "typescript";
2
+
3
+ export namespace StatementFactory {
4
+ export const mut = (name: string, initializer?: ts.Expression) =>
5
+ ts.factory.createVariableStatement(
6
+ undefined,
7
+ ts.factory.createVariableDeclarationList(
8
+ [
9
+ ts.factory.createVariableDeclaration(
10
+ name,
11
+ undefined,
12
+ undefined,
13
+ initializer,
14
+ ),
15
+ ],
16
+ ts.NodeFlags.Let,
17
+ ),
18
+ );
19
+
20
+ export const constant = (name: string, initializer?: ts.Expression) =>
21
+ ts.factory.createVariableStatement(
22
+ undefined,
23
+ ts.factory.createVariableDeclarationList(
24
+ [
25
+ ts.factory.createVariableDeclaration(
26
+ name,
27
+ undefined,
28
+ undefined,
29
+ initializer,
30
+ ),
31
+ ],
32
+ ts.NodeFlags.Const,
33
+ ),
34
+ );
35
+
36
+ export const entry = (key: string) => (value: string) =>
37
+ ts.factory.createVariableDeclarationList(
38
+ [
39
+ ts.factory.createVariableDeclaration(
40
+ ts.factory.createArrayBindingPattern([
41
+ ts.factory.createBindingElement(
42
+ undefined,
43
+ undefined,
44
+ ts.factory.createIdentifier(key),
45
+ undefined,
46
+ ),
47
+ ts.factory.createBindingElement(
48
+ undefined,
49
+ undefined,
50
+ ts.factory.createIdentifier(value),
51
+ undefined,
52
+ ),
53
+ ]),
54
+ undefined,
55
+ undefined,
56
+ undefined,
57
+ ),
58
+ ],
59
+ ts.NodeFlags.Const,
60
+ );
61
+
62
+ export const transpile = (script: string) =>
63
+ ts.factory.createExpressionStatement(
64
+ ts.factory.createIdentifier(ts.transpile(script)),
65
+ );
66
+
67
+ export const block = (expression: ts.Expression) =>
68
+ ts.factory.createBlock(
69
+ [ts.factory.createExpressionStatement(expression)],
70
+ true,
71
+ );
72
+ }
@@ -1,58 +1,58 @@
1
- import ts from "typescript";
2
-
3
- export namespace TemplateFactory {
4
- export const generate = (expressions: ts.Expression[]): ts.Expression => {
5
- if (expressions.every((exp) => ts.isStringLiteral(exp)))
6
- return ts.factory.createStringLiteral(
7
- (expressions as ts.StringLiteral[])
8
- .map((str) => str.text)
9
- .join(""),
10
- );
11
-
12
- const it: IIterator = {
13
- value: "",
14
- index: 0,
15
- };
16
- gather(expressions)(it);
17
-
18
- const head: ts.TemplateHead = ts.factory.createTemplateHead(it.value);
19
- const spans: ts.TemplateSpan[] = [];
20
-
21
- while (true) {
22
- const elem: ts.Expression = expressions[it.index++]!;
23
- gather(expressions)(it);
24
-
25
- const broken: boolean = it.index === expressions.length;
26
- spans.push(
27
- ts.factory.createTemplateSpan(
28
- elem,
29
- broken
30
- ? ts.factory.createTemplateTail(it.value)
31
- : ts.factory.createTemplateMiddle(it.value),
32
- ),
33
- );
34
- if (broken === true) break;
35
- }
36
- return ts.factory.createTemplateExpression(head, spans);
37
- };
38
-
39
- const gather =
40
- (expressions: ts.Expression[]) =>
41
- (it: IIterator): void => {
42
- const found: number = expressions.findIndex(
43
- (elem, index) => index >= it.index && !ts.isStringLiteral(elem),
44
- );
45
-
46
- const last: number = found !== -1 ? found : expressions.length;
47
- it.value = expressions
48
- .slice(it.index, last)
49
- .map((elem) => (elem as ts.StringLiteral).text)
50
- .reduce((x, y) => x + y, "");
51
- it.index = last;
52
- };
53
-
54
- interface IIterator {
55
- value: string;
56
- index: number;
57
- }
58
- }
1
+ import ts from "typescript";
2
+
3
+ export namespace TemplateFactory {
4
+ export const generate = (expressions: ts.Expression[]): ts.Expression => {
5
+ if (expressions.every((exp) => ts.isStringLiteral(exp)))
6
+ return ts.factory.createStringLiteral(
7
+ (expressions as ts.StringLiteral[])
8
+ .map((str) => str.text)
9
+ .join(""),
10
+ );
11
+
12
+ const it: IIterator = {
13
+ value: "",
14
+ index: 0,
15
+ };
16
+ gather(expressions)(it);
17
+
18
+ const head: ts.TemplateHead = ts.factory.createTemplateHead(it.value);
19
+ const spans: ts.TemplateSpan[] = [];
20
+
21
+ while (true) {
22
+ const elem: ts.Expression = expressions[it.index++]!;
23
+ gather(expressions)(it);
24
+
25
+ const broken: boolean = it.index === expressions.length;
26
+ spans.push(
27
+ ts.factory.createTemplateSpan(
28
+ elem,
29
+ broken
30
+ ? ts.factory.createTemplateTail(it.value)
31
+ : ts.factory.createTemplateMiddle(it.value),
32
+ ),
33
+ );
34
+ if (broken === true) break;
35
+ }
36
+ return ts.factory.createTemplateExpression(head, spans);
37
+ };
38
+
39
+ const gather =
40
+ (expressions: ts.Expression[]) =>
41
+ (it: IIterator): void => {
42
+ const found: number = expressions.findIndex(
43
+ (elem, index) => index >= it.index && !ts.isStringLiteral(elem),
44
+ );
45
+
46
+ const last: number = found !== -1 ? found : expressions.length;
47
+ it.value = expressions
48
+ .slice(it.index, last)
49
+ .map((elem) => (elem as ts.StringLiteral).text)
50
+ .reduce((x, y) => x + y, "");
51
+ it.index = last;
52
+ };
53
+
54
+ interface IIterator {
55
+ value: string;
56
+ index: number;
57
+ }
58
+ }
@@ -1,119 +1,119 @@
1
- import ts from "typescript";
2
-
3
- export namespace TypeFactory {
4
- export const isFunction = (type: ts.Type): boolean =>
5
- getFunction(type) !== null;
6
-
7
- const getFunction = (type: ts.Type) => {
8
- const node = type.symbol?.declarations?.[0];
9
- if (node === undefined) return null;
10
-
11
- return ts.isFunctionLike(node)
12
- ? node
13
- : ts.isPropertyAssignment(node) || ts.isPropertyDeclaration(node)
14
- ? ts.isFunctionLike(node.initializer)
15
- ? node.initializer
16
- : null
17
- : null;
18
- };
19
-
20
- export const getReturnType =
21
- (checker: ts.TypeChecker) =>
22
- (type: ts.Type) =>
23
- (name: string): ts.Type | null => {
24
- // FIND TO-JSON METHOD
25
- const symbol: ts.Symbol | undefined = type.getProperty(name);
26
- if (!symbol) return null;
27
- else if (!symbol.valueDeclaration) return null;
28
-
29
- // GET FUNCTION DECLARATION
30
- const functor: ts.Type = checker.getTypeOfSymbolAtLocation(
31
- symbol,
32
- symbol.valueDeclaration,
33
- );
34
-
35
- // RETURNS THE RETURN-TYPE
36
- const signature: ts.Signature | undefined =
37
- checker.getSignaturesOfType(functor, ts.SignatureKind.Call)[0];
38
- return signature ? signature.getReturnType() : null;
39
- };
40
-
41
- export const getFullName =
42
- (checker: ts.TypeChecker) =>
43
- (type: ts.Type, symbol?: ts.Symbol): string => {
44
- // PRIMITIVE
45
- symbol ??= type.aliasSymbol ?? type.getSymbol();
46
- if (symbol === undefined) return checker.typeToString(type);
47
-
48
- // UNION OR INTERSECT
49
- if (
50
- type.aliasSymbol === undefined &&
51
- type.isUnionOrIntersection()
52
- ) {
53
- const joiner: string = type.isIntersection() ? " & " : " | ";
54
- return type.types
55
- .map((child) => getFullName(checker)(child))
56
- .join(joiner);
57
- }
58
-
59
- //----
60
- // SPECIALIZATION
61
- //----
62
- const name: string = get_name(symbol);
63
-
64
- // CHECK GENERIC
65
- const generic: readonly ts.Type[] = type.aliasSymbol
66
- ? type.aliasTypeArguments || []
67
- : checker.getTypeArguments(type as ts.TypeReference);
68
- return generic.length
69
- ? name === "Promise"
70
- ? getFullName(checker)(generic[0]!)
71
- : `${name}<${generic
72
- .map((child) => getFullName(checker)(child))
73
- .join(", ")}>`
74
- : name;
75
- };
76
-
77
- const explore_name =
78
- (decl: ts.Node) =>
79
- (name: string): string =>
80
- ts.isModuleBlock(decl)
81
- ? explore_name(decl.parent.parent)(
82
- `${decl.parent.name.getFullText().trim()}.${name}`,
83
- )
84
- : name;
85
-
86
- const get_name = (symbol: ts.Symbol): string => {
87
- const parent = symbol.getDeclarations()?.[0]?.parent;
88
- return parent
89
- ? explore_name(parent)(symbol.escapedName.toString())
90
- : "__type";
91
- };
92
-
93
- export const keyword = (
94
- type:
95
- | "void"
96
- | "any"
97
- | "unknown"
98
- | "boolean"
99
- | "number"
100
- | "bigint"
101
- | "string",
102
- ) => {
103
- return ts.factory.createKeywordTypeNode(
104
- type === "void"
105
- ? ts.SyntaxKind.VoidKeyword
106
- : type === "any"
107
- ? ts.SyntaxKind.AnyKeyword
108
- : type === "unknown"
109
- ? ts.SyntaxKind.UnknownKeyword
110
- : type === "boolean"
111
- ? ts.SyntaxKind.BooleanKeyword
112
- : type === "number"
113
- ? ts.SyntaxKind.NumberKeyword
114
- : type === "bigint"
115
- ? ts.SyntaxKind.BigIntKeyword
116
- : ts.SyntaxKind.StringKeyword,
117
- );
118
- };
119
- }
1
+ import ts from "typescript";
2
+
3
+ export namespace TypeFactory {
4
+ export const isFunction = (type: ts.Type): boolean =>
5
+ getFunction(type) !== null;
6
+
7
+ const getFunction = (type: ts.Type) => {
8
+ const node = type.symbol?.declarations?.[0];
9
+ if (node === undefined) return null;
10
+
11
+ return ts.isFunctionLike(node)
12
+ ? node
13
+ : ts.isPropertyAssignment(node) || ts.isPropertyDeclaration(node)
14
+ ? ts.isFunctionLike(node.initializer)
15
+ ? node.initializer
16
+ : null
17
+ : null;
18
+ };
19
+
20
+ export const getReturnType =
21
+ (checker: ts.TypeChecker) =>
22
+ (type: ts.Type) =>
23
+ (name: string): ts.Type | null => {
24
+ // FIND TO-JSON METHOD
25
+ const symbol: ts.Symbol | undefined = type.getProperty(name);
26
+ if (!symbol) return null;
27
+ else if (!symbol.valueDeclaration) return null;
28
+
29
+ // GET FUNCTION DECLARATION
30
+ const functor: ts.Type = checker.getTypeOfSymbolAtLocation(
31
+ symbol,
32
+ symbol.valueDeclaration,
33
+ );
34
+
35
+ // RETURNS THE RETURN-TYPE
36
+ const signature: ts.Signature | undefined =
37
+ checker.getSignaturesOfType(functor, ts.SignatureKind.Call)[0];
38
+ return signature ? signature.getReturnType() : null;
39
+ };
40
+
41
+ export const getFullName =
42
+ (checker: ts.TypeChecker) =>
43
+ (type: ts.Type, symbol?: ts.Symbol): string => {
44
+ // PRIMITIVE
45
+ symbol ??= type.aliasSymbol ?? type.getSymbol();
46
+ if (symbol === undefined) return checker.typeToString(type);
47
+
48
+ // UNION OR INTERSECT
49
+ if (
50
+ type.aliasSymbol === undefined &&
51
+ type.isUnionOrIntersection()
52
+ ) {
53
+ const joiner: string = type.isIntersection() ? " & " : " | ";
54
+ return type.types
55
+ .map((child) => getFullName(checker)(child))
56
+ .join(joiner);
57
+ }
58
+
59
+ //----
60
+ // SPECIALIZATION
61
+ //----
62
+ const name: string = get_name(symbol);
63
+
64
+ // CHECK GENERIC
65
+ const generic: readonly ts.Type[] = type.aliasSymbol
66
+ ? type.aliasTypeArguments || []
67
+ : checker.getTypeArguments(type as ts.TypeReference);
68
+ return generic.length
69
+ ? name === "Promise"
70
+ ? getFullName(checker)(generic[0]!)
71
+ : `${name}<${generic
72
+ .map((child) => getFullName(checker)(child))
73
+ .join(", ")}>`
74
+ : name;
75
+ };
76
+
77
+ const explore_name =
78
+ (decl: ts.Node) =>
79
+ (name: string): string =>
80
+ ts.isModuleBlock(decl)
81
+ ? explore_name(decl.parent.parent)(
82
+ `${decl.parent.name.getFullText().trim()}.${name}`,
83
+ )
84
+ : name;
85
+
86
+ const get_name = (symbol: ts.Symbol): string => {
87
+ const parent = symbol.getDeclarations()?.[0]?.parent;
88
+ return parent
89
+ ? explore_name(parent)(symbol.escapedName.toString())
90
+ : "__type";
91
+ };
92
+
93
+ export const keyword = (
94
+ type:
95
+ | "void"
96
+ | "any"
97
+ | "unknown"
98
+ | "boolean"
99
+ | "number"
100
+ | "bigint"
101
+ | "string",
102
+ ) => {
103
+ return ts.factory.createKeywordTypeNode(
104
+ type === "void"
105
+ ? ts.SyntaxKind.VoidKeyword
106
+ : type === "any"
107
+ ? ts.SyntaxKind.AnyKeyword
108
+ : type === "unknown"
109
+ ? ts.SyntaxKind.UnknownKeyword
110
+ : type === "boolean"
111
+ ? ts.SyntaxKind.BooleanKeyword
112
+ : type === "number"
113
+ ? ts.SyntaxKind.NumberKeyword
114
+ : type === "bigint"
115
+ ? ts.SyntaxKind.BigIntKeyword
116
+ : ts.SyntaxKind.StringKeyword,
117
+ );
118
+ };
119
+ }
@@ -1,12 +1,12 @@
1
- import ts from "typescript";
2
-
3
- export namespace ValueFactory {
4
- export const NULL = () => ts.factory.createNull();
5
- export const UNDEFINED = () => ts.factory.createIdentifier("undefined");
6
- export const BOOLEAN = (value: boolean) =>
7
- value ? ts.factory.createTrue() : ts.factory.createFalse();
8
- export const INPUT = (str: string = "input") =>
9
- ts.factory.createIdentifier(str);
10
- export const TYPEOF = (input: ts.Expression) =>
11
- ts.factory.createTypeOfExpression(input);
12
- }
1
+ import ts from "typescript";
2
+
3
+ export namespace ValueFactory {
4
+ export const NULL = () => ts.factory.createNull();
5
+ export const UNDEFINED = () => ts.factory.createIdentifier("undefined");
6
+ export const BOOLEAN = (value: boolean) =>
7
+ value ? ts.factory.createTrue() : ts.factory.createFalse();
8
+ export const INPUT = (str: string = "input") =>
9
+ ts.factory.createIdentifier(str);
10
+ export const TYPEOF = (input: ts.Expression) =>
11
+ ts.factory.createTypeOfExpression(input);
12
+ }
@@ -1,12 +1,12 @@
1
- import { Metadata } from "../../../schemas/metadata/Metadata";
2
-
3
- export namespace MetadataHelper {
4
- export const literal_to_metadata = (key: string): Metadata => {
5
- const metadata: Metadata = Metadata.initialize();
6
- metadata.constants.push({
7
- type: "string",
8
- values: [key],
9
- });
10
- return metadata;
11
- };
12
- }
1
+ import { Metadata } from "../../../schemas/metadata/Metadata";
2
+
3
+ export namespace MetadataHelper {
4
+ export const literal_to_metadata = (key: string): Metadata => {
5
+ const metadata: Metadata = Metadata.initialize();
6
+ metadata.constants.push({
7
+ type: "string",
8
+ values: [key],
9
+ });
10
+ return metadata;
11
+ };
12
+ }
@@ -1,40 +1,40 @@
1
- import { Metadata } from "../../../schemas/metadata/Metadata";
2
- import { MetadataAtomic } from "../../../schemas/metadata/MetadataAtomic";
3
-
4
- import { ArrayUtil } from "../../../utils/ArrayUtil";
5
-
6
- export const emend_metadata_atomics = (meta: Metadata) => {
7
- // ATOMICS
8
- for (const a of meta.atomics) {
9
- const index: number = meta.constants.findIndex(
10
- (c) => c.type === a.type,
11
- );
12
- if (index !== -1) meta.constants.splice(index, 1);
13
- }
14
-
15
- // BOOLEAN
16
- {
17
- const index: number = meta.constants.findIndex(
18
- (c) => c.type === "boolean",
19
- );
20
- if (index !== -1 && meta.constants[index]!.values.length === 2) {
21
- meta.constants.splice(index, 1);
22
- ArrayUtil.take(
23
- meta.atomics,
24
- (a) => a.type === "boolean",
25
- () =>
26
- MetadataAtomic.create({
27
- type: "boolean" as const,
28
- tags: [],
29
- }),
30
- );
31
- }
32
- }
33
-
34
- // TEMPLATE
35
- if (
36
- meta.templates.length &&
37
- meta.atomics.find((a) => a.type === "string") !== undefined
38
- )
39
- meta.templates.splice(0, meta.templates.length);
40
- };
1
+ import { Metadata } from "../../../schemas/metadata/Metadata";
2
+ import { MetadataAtomic } from "../../../schemas/metadata/MetadataAtomic";
3
+
4
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
5
+
6
+ export const emend_metadata_atomics = (meta: Metadata) => {
7
+ // ATOMICS
8
+ for (const a of meta.atomics) {
9
+ const index: number = meta.constants.findIndex(
10
+ (c) => c.type === a.type,
11
+ );
12
+ if (index !== -1) meta.constants.splice(index, 1);
13
+ }
14
+
15
+ // BOOLEAN
16
+ {
17
+ const index: number = meta.constants.findIndex(
18
+ (c) => c.type === "boolean",
19
+ );
20
+ if (index !== -1 && meta.constants[index]!.values.length === 2) {
21
+ meta.constants.splice(index, 1);
22
+ ArrayUtil.take(
23
+ meta.atomics,
24
+ (a) => a.type === "boolean",
25
+ () =>
26
+ MetadataAtomic.create({
27
+ type: "boolean" as const,
28
+ tags: [],
29
+ }),
30
+ );
31
+ }
32
+ }
33
+
34
+ // TEMPLATE
35
+ if (
36
+ meta.templates.length &&
37
+ meta.atomics.find((a) => a.type === "string") !== undefined
38
+ )
39
+ meta.templates.splice(0, meta.templates.length);
40
+ };