typia 4.0.0-dev.20230604 → 4.0.0

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 (290) hide show
  1. package/lib/executable/TypiaGenerateWizard.js +1 -1
  2. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  3. package/lib/executable/TypiaSetupWizard.js +1 -1
  4. package/lib/executable/TypiaSetupWizard.js.map +1 -1
  5. package/lib/executable/setup/ArgumentParser.js +1 -1
  6. package/lib/executable/setup/ArgumentParser.js.map +1 -1
  7. package/lib/executable/setup/CommandExecutor.js +1 -1
  8. package/lib/executable/setup/CommandExecutor.js.map +1 -1
  9. package/lib/executable/setup/FileRetriever.js +1 -1
  10. package/lib/executable/setup/FileRetriever.js.map +1 -1
  11. package/lib/executable/setup/PluginConfigurator.js +1 -1
  12. package/lib/executable/setup/PluginConfigurator.js.map +1 -1
  13. package/lib/factories/CommentFactory.js +1 -1
  14. package/lib/factories/CommentFactory.js.map +1 -1
  15. package/lib/factories/ExpressionFactory.js +1 -1
  16. package/lib/factories/ExpressionFactory.js.map +1 -1
  17. package/lib/factories/IdentifierFactory.js +1 -1
  18. package/lib/factories/IdentifierFactory.js.map +1 -1
  19. package/lib/factories/LiteralFactory.js +1 -1
  20. package/lib/factories/LiteralFactory.js.map +1 -1
  21. package/lib/factories/MetadataCollection.js +1 -2
  22. package/lib/factories/MetadataCollection.js.map +1 -1
  23. package/lib/factories/MetadataFactory.js +1 -1
  24. package/lib/factories/MetadataFactory.js.map +1 -1
  25. package/lib/factories/MetadataTagFactory.js +4 -2
  26. package/lib/factories/MetadataTagFactory.js.map +1 -1
  27. package/lib/factories/StatementFactory.js +1 -1
  28. package/lib/factories/StatementFactory.js.map +1 -1
  29. package/lib/factories/TemplateFactory.js +1 -1
  30. package/lib/factories/TemplateFactory.js.map +1 -1
  31. package/lib/factories/TypeFactory.js +1 -1
  32. package/lib/factories/TypeFactory.js.map +1 -1
  33. package/lib/factories/ValueFactory.js +1 -1
  34. package/lib/factories/ValueFactory.js.map +1 -1
  35. package/lib/factories/internal/metadata/MetadataHelper.js +1 -1
  36. package/lib/factories/internal/metadata/MetadataHelper.js.map +1 -1
  37. package/lib/factories/internal/metadata/iterate_metadata_array.js +1 -2
  38. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  39. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  40. package/lib/functional/Namespace.js +1 -1
  41. package/lib/functional/Namespace.js.map +1 -1
  42. package/lib/metadata/Metadata.js +1 -2
  43. package/lib/metadata/Metadata.js.map +1 -1
  44. package/lib/metadata/MetadataObject.js +1 -2
  45. package/lib/metadata/MetadataObject.js.map +1 -1
  46. package/lib/programmers/ApplicationProgrammer.js +1 -1
  47. package/lib/programmers/ApplicationProgrammer.js.map +1 -1
  48. package/lib/programmers/AssertCloneProgrammer.js +1 -1
  49. package/lib/programmers/AssertCloneProgrammer.js.map +1 -1
  50. package/lib/programmers/AssertParseProgrammer.js +1 -1
  51. package/lib/programmers/AssertParseProgrammer.js.map +1 -1
  52. package/lib/programmers/AssertProgrammer.js +1 -1
  53. package/lib/programmers/AssertProgrammer.js.map +1 -1
  54. package/lib/programmers/AssertPruneProgrammer.js +1 -1
  55. package/lib/programmers/AssertPruneProgrammer.js.map +1 -1
  56. package/lib/programmers/AssertStringifyProgrammer.js +1 -1
  57. package/lib/programmers/AssertStringifyProgrammer.js.map +1 -1
  58. package/lib/programmers/CheckerProgrammer.js +1 -1
  59. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  60. package/lib/programmers/CloneProgrammer.js +1 -1
  61. package/lib/programmers/CloneProgrammer.js.map +1 -1
  62. package/lib/programmers/FeatureProgrammer.js +1 -1
  63. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  64. package/lib/programmers/IsCloneProgrammer.js +1 -1
  65. package/lib/programmers/IsCloneProgrammer.js.map +1 -1
  66. package/lib/programmers/IsParseProgrammer.js +1 -1
  67. package/lib/programmers/IsParseProgrammer.js.map +1 -1
  68. package/lib/programmers/IsProgrammer.js +1 -1
  69. package/lib/programmers/IsProgrammer.js.map +1 -1
  70. package/lib/programmers/IsPruneProgrammer.js +1 -1
  71. package/lib/programmers/IsPruneProgrammer.js.map +1 -1
  72. package/lib/programmers/IsStringifyProgrammer.js +1 -1
  73. package/lib/programmers/IsStringifyProgrammer.js.map +1 -1
  74. package/lib/programmers/LiteralsProgrammer.js +1 -1
  75. package/lib/programmers/LiteralsProgrammer.js.map +1 -1
  76. package/lib/programmers/PruneProgrammer.js +1 -1
  77. package/lib/programmers/PruneProgrammer.js.map +1 -1
  78. package/lib/programmers/RandomProgrammer.js +1 -1
  79. package/lib/programmers/RandomProgrammer.js.map +1 -1
  80. package/lib/programmers/StringifyProgrammer.js +1 -1
  81. package/lib/programmers/StringifyProgrammer.js.map +1 -1
  82. package/lib/programmers/TypiaProgrammer.js +1 -1
  83. package/lib/programmers/TypiaProgrammer.js.map +1 -1
  84. package/lib/programmers/ValidateCloneProgrammer.js +1 -1
  85. package/lib/programmers/ValidateCloneProgrammer.js.map +1 -1
  86. package/lib/programmers/ValidateParseProgrammer.js +1 -1
  87. package/lib/programmers/ValidateParseProgrammer.js.map +1 -1
  88. package/lib/programmers/ValidateProgrammer.js +1 -1
  89. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  90. package/lib/programmers/ValidatePruneProgrammer.js +1 -1
  91. package/lib/programmers/ValidatePruneProgrammer.js.map +1 -1
  92. package/lib/programmers/ValidateStringifyProgrammer.js +1 -1
  93. package/lib/programmers/ValidateStringifyProgrammer.js.map +1 -1
  94. package/lib/programmers/helpers/AtomicPredicator.js +1 -1
  95. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  96. package/lib/programmers/helpers/CloneJoiner.js +1 -1
  97. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  98. package/lib/programmers/helpers/OptionPredicator.js +1 -1
  99. package/lib/programmers/helpers/OptionPredicator.js.map +1 -1
  100. package/lib/programmers/helpers/PruneJoiner.js +1 -1
  101. package/lib/programmers/helpers/PruneJoiner.js.map +1 -1
  102. package/lib/programmers/helpers/RandomJoiner.js +1 -1
  103. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  104. package/lib/programmers/helpers/RandomRanger.js +1 -1
  105. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  106. package/lib/programmers/helpers/StringifyJoinder.js +1 -1
  107. package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
  108. package/lib/programmers/helpers/StringifyPredicator.js +1 -1
  109. package/lib/programmers/helpers/StringifyPredicator.js.map +1 -1
  110. package/lib/programmers/helpers/UnionExplorer.js +1 -1
  111. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  112. package/lib/programmers/helpers/UnionPredicator.js +1 -1
  113. package/lib/programmers/helpers/UnionPredicator.js.map +1 -1
  114. package/lib/programmers/internal/application_number.js +4 -1
  115. package/lib/programmers/internal/application_number.js.map +1 -1
  116. package/lib/transformers/CallExpressionTransformer.js +1 -1
  117. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  118. package/lib/transformers/FileTransformer.js +1 -1
  119. package/lib/transformers/FileTransformer.js.map +1 -1
  120. package/lib/transformers/ImportTransformer.js +1 -1
  121. package/lib/transformers/ImportTransformer.js.map +1 -1
  122. package/lib/transformers/NodeTransformer.js +1 -1
  123. package/lib/transformers/NodeTransformer.js.map +1 -1
  124. package/lib/transformers/features/miscellaneous/ApplicationTransformer.js +1 -1
  125. package/lib/transformers/features/miscellaneous/ApplicationTransformer.js.map +1 -1
  126. package/lib/transformers/features/miscellaneous/AssertCloneTransformer.js +1 -1
  127. package/lib/transformers/features/miscellaneous/AssertCloneTransformer.js.map +1 -1
  128. package/lib/transformers/features/miscellaneous/AssertPruneTransformer.js +1 -1
  129. package/lib/transformers/features/miscellaneous/AssertPruneTransformer.js.map +1 -1
  130. package/lib/transformers/features/miscellaneous/CloneTransformer.js +1 -1
  131. package/lib/transformers/features/miscellaneous/CloneTransformer.js.map +1 -1
  132. package/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.js +1 -1
  133. package/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.js.map +1 -1
  134. package/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.js +1 -1
  135. package/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.js.map +1 -1
  136. package/lib/transformers/features/miscellaneous/CreateCloneTransformer.js +1 -1
  137. package/lib/transformers/features/miscellaneous/CreateCloneTransformer.js.map +1 -1
  138. package/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.js +1 -1
  139. package/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.js.map +1 -1
  140. package/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.js +1 -1
  141. package/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.js.map +1 -1
  142. package/lib/transformers/features/miscellaneous/CreatePruneTransformer.js +1 -1
  143. package/lib/transformers/features/miscellaneous/CreatePruneTransformer.js.map +1 -1
  144. package/lib/transformers/features/miscellaneous/CreateRandomTransformer.js +1 -1
  145. package/lib/transformers/features/miscellaneous/CreateRandomTransformer.js.map +1 -1
  146. package/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.js +1 -1
  147. package/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.js.map +1 -1
  148. package/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.js +1 -1
  149. package/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.js.map +1 -1
  150. package/lib/transformers/features/miscellaneous/IsCloneTransformer.js +1 -1
  151. package/lib/transformers/features/miscellaneous/IsCloneTransformer.js.map +1 -1
  152. package/lib/transformers/features/miscellaneous/IsPruneTransformer.js +1 -1
  153. package/lib/transformers/features/miscellaneous/IsPruneTransformer.js.map +1 -1
  154. package/lib/transformers/features/miscellaneous/LiteralsTransformer.js +1 -1
  155. package/lib/transformers/features/miscellaneous/LiteralsTransformer.js.map +1 -1
  156. package/lib/transformers/features/miscellaneous/MetadataTransformer.js +1 -1
  157. package/lib/transformers/features/miscellaneous/MetadataTransformer.js.map +1 -1
  158. package/lib/transformers/features/miscellaneous/PruneTransformer.js +1 -1
  159. package/lib/transformers/features/miscellaneous/PruneTransformer.js.map +1 -1
  160. package/lib/transformers/features/miscellaneous/RandomTransformer.js +1 -1
  161. package/lib/transformers/features/miscellaneous/RandomTransformer.js.map +1 -1
  162. package/lib/transformers/features/miscellaneous/ValidateCloneTransformer.js +1 -1
  163. package/lib/transformers/features/miscellaneous/ValidateCloneTransformer.js.map +1 -1
  164. package/lib/transformers/features/miscellaneous/ValidatePruneTransformer.js +1 -1
  165. package/lib/transformers/features/miscellaneous/ValidatePruneTransformer.js.map +1 -1
  166. package/lib/transformers/features/parsers/AssertParseTransformer.js +1 -1
  167. package/lib/transformers/features/parsers/AssertParseTransformer.js.map +1 -1
  168. package/lib/transformers/features/parsers/CreateAssertParseTransformer.js +1 -1
  169. package/lib/transformers/features/parsers/CreateAssertParseTransformer.js.map +1 -1
  170. package/lib/transformers/features/parsers/CreateIsParseTransformer.js +1 -1
  171. package/lib/transformers/features/parsers/CreateIsParseTransformer.js.map +1 -1
  172. package/lib/transformers/features/parsers/CreateValidateParseTransformer.js +1 -1
  173. package/lib/transformers/features/parsers/CreateValidateParseTransformer.js.map +1 -1
  174. package/lib/transformers/features/parsers/IsParseTransformer.js +1 -1
  175. package/lib/transformers/features/parsers/IsParseTransformer.js.map +1 -1
  176. package/lib/transformers/features/parsers/ValidateParseTransformer.js +1 -1
  177. package/lib/transformers/features/parsers/ValidateParseTransformer.js.map +1 -1
  178. package/lib/transformers/features/stringifiers/AssertStringifyTransformer.js +1 -1
  179. package/lib/transformers/features/stringifiers/AssertStringifyTransformer.js.map +1 -1
  180. package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.js +1 -1
  181. package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.js.map +1 -1
  182. package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.js +1 -1
  183. package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.js.map +1 -1
  184. package/lib/transformers/features/stringifiers/CreateStringifyTransformer.js +1 -1
  185. package/lib/transformers/features/stringifiers/CreateStringifyTransformer.js.map +1 -1
  186. package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.js +1 -1
  187. package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.js.map +1 -1
  188. package/lib/transformers/features/stringifiers/IsStringifyTransformer.js +1 -1
  189. package/lib/transformers/features/stringifiers/IsStringifyTransformer.js.map +1 -1
  190. package/lib/transformers/features/stringifiers/StringifyTransformer.js +1 -1
  191. package/lib/transformers/features/stringifiers/StringifyTransformer.js.map +1 -1
  192. package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.js +1 -1
  193. package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.js.map +1 -1
  194. package/lib/transformers/features/validators/AssertTransformer.js +1 -1
  195. package/lib/transformers/features/validators/AssertTransformer.js.map +1 -1
  196. package/lib/transformers/features/validators/CreateAssertTransformer.js +1 -1
  197. package/lib/transformers/features/validators/CreateAssertTransformer.js.map +1 -1
  198. package/lib/transformers/features/validators/CreateIsTransformer.js +1 -1
  199. package/lib/transformers/features/validators/CreateIsTransformer.js.map +1 -1
  200. package/lib/transformers/features/validators/CreateValidateTransformer.js +1 -1
  201. package/lib/transformers/features/validators/CreateValidateTransformer.js.map +1 -1
  202. package/lib/transformers/features/validators/IsTransformer.js +1 -1
  203. package/lib/transformers/features/validators/IsTransformer.js.map +1 -1
  204. package/lib/transformers/features/validators/ValidateTransformer.js +1 -1
  205. package/lib/transformers/features/validators/ValidateTransformer.js.map +1 -1
  206. package/lib/transformers/internal/GenericTransformer.js +1 -1
  207. package/lib/transformers/internal/GenericTransformer.js.map +1 -1
  208. package/lib/utils/ArrayUtil.js +1 -1
  209. package/lib/utils/ArrayUtil.js.map +1 -1
  210. package/lib/utils/Escaper.js +1 -1
  211. package/lib/utils/Escaper.js.map +1 -1
  212. package/lib/utils/MapUtil.js +1 -1
  213. package/lib/utils/MapUtil.js.map +1 -1
  214. package/lib/utils/PatternUtil.js +1 -1
  215. package/lib/utils/PatternUtil.js.map +1 -1
  216. package/lib/utils/RandomGenerator.js +1 -1
  217. package/lib/utils/RandomGenerator.js.map +1 -1
  218. package/package.json +3 -3
  219. package/src/IRandomGenerator.ts +34 -34
  220. package/src/factories/IdentifierFactory.ts +65 -65
  221. package/src/factories/MetadataCollection.ts +254 -254
  222. package/src/factories/MetadataFactory.ts +40 -40
  223. package/src/factories/MetadataTagFactory.ts +300 -298
  224. package/src/factories/internal/metadata/emplace_metadata_array.ts +34 -34
  225. package/src/factories/internal/metadata/emplace_metadata_definition.ts +35 -35
  226. package/src/factories/internal/metadata/emplace_metadata_object.ts +142 -142
  227. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +50 -50
  228. package/src/factories/internal/metadata/explore_metadata.ts +66 -66
  229. package/src/factories/internal/metadata/iterate_metadata.ts +77 -77
  230. package/src/factories/internal/metadata/iterate_metadata_array.ts +25 -29
  231. package/src/factories/internal/metadata/iterate_metadata_collection.ts +130 -130
  232. package/src/factories/internal/metadata/iterate_metadata_definition.ts +30 -30
  233. package/src/factories/internal/metadata/iterate_metadata_object.ts +49 -49
  234. package/src/factories/internal/metadata/iterate_metadata_sort.ts +68 -68
  235. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +24 -25
  236. package/src/factories/internal/metadata/iterate_metadata_union.ts +68 -68
  237. package/src/metadata/IMetadata.ts +27 -27
  238. package/src/metadata/IMetadataAlias.ts +12 -12
  239. package/src/metadata/IMetadataApplication.ts +7 -7
  240. package/src/metadata/IMetadataArray.ts +10 -10
  241. package/src/metadata/IMetadataCollection.ts +11 -11
  242. package/src/metadata/IMetadataDictionary.ts +14 -14
  243. package/src/metadata/IMetadataObject.ts +18 -18
  244. package/src/metadata/IMetadataProperty.ts +11 -11
  245. package/src/metadata/IMetadataTuple.ts +10 -10
  246. package/src/metadata/Metadata.ts +585 -585
  247. package/src/metadata/MetadataAlias.ts +61 -61
  248. package/src/metadata/MetadataArray.ts +52 -52
  249. package/src/metadata/MetadataObject.ts +114 -114
  250. package/src/metadata/MetadataProperty.ts +64 -64
  251. package/src/metadata/MetadataTuple.ts +53 -53
  252. package/src/programmers/ApplicationProgrammer.ts +55 -55
  253. package/src/programmers/AssertProgrammer.ts +291 -291
  254. package/src/programmers/CheckerProgrammer.ts +1182 -1182
  255. package/src/programmers/CloneProgrammer.ts +595 -595
  256. package/src/programmers/FeatureProgrammer.ts +495 -495
  257. package/src/programmers/IsProgrammer.ts +250 -250
  258. package/src/programmers/LiteralsProgrammer.ts +66 -66
  259. package/src/programmers/PruneProgrammer.ts +550 -550
  260. package/src/programmers/RandomProgrammer.ts +589 -589
  261. package/src/programmers/StringifyProgrammer.ts +990 -990
  262. package/src/programmers/ValidateProgrammer.ts +313 -313
  263. package/src/programmers/helpers/FunctionImporeter.ts +78 -78
  264. package/src/programmers/helpers/RandomJoiner.ts +173 -173
  265. package/src/programmers/helpers/UnionExplorer.ts +301 -301
  266. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  267. package/src/programmers/helpers/disable_function_importer_declare.ts +26 -26
  268. package/src/programmers/internal/JSON_SCHEMA_PREFIX.ts +1 -1
  269. package/src/programmers/internal/application_array.ts +64 -64
  270. package/src/programmers/internal/application_boolean.ts +15 -15
  271. package/src/programmers/internal/application_constant.ts +26 -26
  272. package/src/programmers/internal/application_default.ts +17 -17
  273. package/src/programmers/internal/application_definition.ts +45 -45
  274. package/src/programmers/internal/application_native.ts +39 -39
  275. package/src/programmers/internal/application_number.ts +74 -71
  276. package/src/programmers/internal/application_object.ts +167 -167
  277. package/src/programmers/internal/application_schema.ts +164 -164
  278. package/src/programmers/internal/application_tuple.ts +77 -77
  279. package/src/programmers/internal/check_union_array_like.ts +329 -329
  280. package/src/programmers/internal/feature_object_entries.ts +63 -63
  281. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +16 -16
  282. package/src/schemas/IJsonApplication.ts +8 -8
  283. package/src/schemas/IJsonComponents.ts +45 -45
  284. package/src/schemas/IJsonSchema.ts +134 -134
  285. package/src/transformers/CallExpressionTransformer.ts +179 -179
  286. package/src/transformers/FileTransformer.ts +47 -47
  287. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +104 -104
  288. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +53 -53
  289. package/src/utils/ArrayUtil.ts +45 -45
  290. package/src/utils/RandomGenerator.ts +81 -81
@@ -1,63 +1,63 @@
1
- import ts from "typescript";
2
-
3
- import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
-
5
- import { MetadataObject } from "../../metadata/MetadataObject";
6
-
7
- import { Escaper } from "../../utils/Escaper";
8
-
9
- import { FeatureProgrammer } from "../FeatureProgrammer";
10
- import { FunctionImporter } from "../helpers/FunctionImporeter";
11
-
12
- /**
13
- * @internal
14
- */
15
- export const feature_object_entries =
16
- <Output extends ts.ConciseBody>(
17
- config: Pick<
18
- FeatureProgrammer.IConfig<Output>,
19
- "decoder" | "path" | "trace"
20
- >,
21
- ) =>
22
- (importer: FunctionImporter) =>
23
- (obj: MetadataObject) =>
24
- (input: ts.Expression) =>
25
- obj.properties.map((prop) => {
26
- const sole: string | null = prop.key.getSoleLiteral();
27
- const propInput =
28
- sole === null
29
- ? ts.factory.createIdentifier("value")
30
- : Escaper.variable(sole)
31
- ? ts.factory.createPropertyAccessExpression(
32
- input,
33
- ts.factory.createIdentifier(sole),
34
- )
35
- : ts.factory.createElementAccessExpression(
36
- input,
37
- ts.factory.createStringLiteral(sole),
38
- );
39
-
40
- return {
41
- input: propInput,
42
- key: prop.key,
43
- meta: prop.value,
44
- expression: config.decoder()(
45
- propInput,
46
- prop.value,
47
- {
48
- tracable: config.path || config.trace,
49
- source: "function",
50
- from: "object",
51
- postfix:
52
- sole !== null
53
- ? IdentifierFactory.postfix(sole)
54
- : (() => {
55
- importer.use("join");
56
- return `$join(key)`;
57
- })(),
58
- },
59
- prop.tags,
60
- prop.jsDocTags,
61
- ),
62
- };
63
- });
1
+ import ts from "typescript";
2
+
3
+ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+
5
+ import { MetadataObject } from "../../metadata/MetadataObject";
6
+
7
+ import { Escaper } from "../../utils/Escaper";
8
+
9
+ import { FeatureProgrammer } from "../FeatureProgrammer";
10
+ import { FunctionImporter } from "../helpers/FunctionImporeter";
11
+
12
+ /**
13
+ * @internal
14
+ */
15
+ export const feature_object_entries =
16
+ <Output extends ts.ConciseBody>(
17
+ config: Pick<
18
+ FeatureProgrammer.IConfig<Output>,
19
+ "decoder" | "path" | "trace"
20
+ >,
21
+ ) =>
22
+ (importer: FunctionImporter) =>
23
+ (obj: MetadataObject) =>
24
+ (input: ts.Expression) =>
25
+ obj.properties.map((prop) => {
26
+ const sole: string | null = prop.key.getSoleLiteral();
27
+ const propInput =
28
+ sole === null
29
+ ? ts.factory.createIdentifier("value")
30
+ : Escaper.variable(sole)
31
+ ? ts.factory.createPropertyAccessExpression(
32
+ input,
33
+ ts.factory.createIdentifier(sole),
34
+ )
35
+ : ts.factory.createElementAccessExpression(
36
+ input,
37
+ ts.factory.createStringLiteral(sole),
38
+ );
39
+
40
+ return {
41
+ input: propInput,
42
+ key: prop.key,
43
+ meta: prop.value,
44
+ expression: config.decoder()(
45
+ propInput,
46
+ prop.value,
47
+ {
48
+ tracable: config.path || config.trace,
49
+ source: "function",
50
+ from: "object",
51
+ postfix:
52
+ sole !== null
53
+ ? IdentifierFactory.postfix(sole)
54
+ : (() => {
55
+ importer.use("join");
56
+ return `$join(key)`;
57
+ })(),
58
+ },
59
+ prop.tags,
60
+ prop.jsDocTags,
61
+ ),
62
+ };
63
+ });
@@ -1,16 +1,16 @@
1
- import { Metadata } from "../../metadata/Metadata";
2
- import { MetadataArray } from "../../metadata/MetadataArray";
3
-
4
- export const wrap_metadata_rest_tuple = (rest: Metadata) => {
5
- const wrapper: Metadata = Metadata.initialize();
6
- wrapper.arrays.push(
7
- MetadataArray.create({
8
- name: `...${rest.getName()}`,
9
- value: rest,
10
- nullables: [],
11
- recursive: false,
12
- index: null,
13
- }),
14
- );
15
- return wrapper;
16
- };
1
+ import { Metadata } from "../../metadata/Metadata";
2
+ import { MetadataArray } from "../../metadata/MetadataArray";
3
+
4
+ export const wrap_metadata_rest_tuple = (rest: Metadata) => {
5
+ const wrapper: Metadata = Metadata.initialize();
6
+ wrapper.arrays.push(
7
+ MetadataArray.create({
8
+ name: `...${rest.getName()}`,
9
+ value: rest,
10
+ nullables: [],
11
+ recursive: false,
12
+ index: null,
13
+ }),
14
+ );
15
+ return wrapper;
16
+ };
@@ -1,8 +1,8 @@
1
- import { IJsonComponents } from "./IJsonComponents";
2
- import { IJsonSchema } from "./IJsonSchema";
3
-
4
- export interface IJsonApplication {
5
- schemas: IJsonSchema[];
6
- components: IJsonComponents;
7
- purpose: "swagger" | "ajv";
8
- }
1
+ import { IJsonComponents } from "./IJsonComponents";
2
+ import { IJsonSchema } from "./IJsonSchema";
3
+
4
+ export interface IJsonApplication {
5
+ schemas: IJsonSchema[];
6
+ components: IJsonComponents;
7
+ purpose: "swagger" | "ajv";
8
+ }
@@ -1,45 +1,45 @@
1
- import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
2
-
3
- import { IJsonSchema } from "./IJsonSchema";
4
-
5
- export interface IJsonComponents {
6
- objects?: Record<string, IJsonComponents.IObject>;
7
- aliases?: Record<string, IJsonComponents.IAlias>;
8
- arrays?: Record<string, IJsonComponents.IArray>;
9
- tuples?: Record<string, IJsonComponents.ITuple | IJsonComponents.IArray>;
10
- }
11
- export namespace IJsonComponents {
12
- export interface IArray extends IJsonSchema.IArray {
13
- $id?: string;
14
- $recursiveAnchor?: true;
15
- }
16
- export interface ITuple extends IJsonSchema.ITuple {
17
- $id?: string;
18
- $recursiveAnchor?: true;
19
- }
20
- export interface IObject {
21
- $id?: string;
22
- $recursiveAnchor?: boolean;
23
- type: "object";
24
-
25
- /**
26
- * Only when swagger mode.
27
- */
28
- nullable?: boolean;
29
-
30
- properties: Record<string, IJsonSchema>;
31
- patternProperties?: Record<string, IJsonSchema>;
32
- additionalProperties?: IJsonSchema;
33
-
34
- required?: string[];
35
- description?: string;
36
- "x-typia-jsDocTags"?: IJsDocTagInfo[];
37
- "x-typia-patternProperties"?: Record<string, IJsonSchema>;
38
- "x-typia-additionalProperties"?: IJsonSchema;
39
- }
40
-
41
- export type IAlias = IJsonSchema & {
42
- $id?: string;
43
- $recursiveAnchor?: boolean;
44
- };
45
- }
1
+ import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
2
+
3
+ import { IJsonSchema } from "./IJsonSchema";
4
+
5
+ export interface IJsonComponents {
6
+ objects?: Record<string, IJsonComponents.IObject>;
7
+ aliases?: Record<string, IJsonComponents.IAlias>;
8
+ arrays?: Record<string, IJsonComponents.IArray>;
9
+ tuples?: Record<string, IJsonComponents.ITuple | IJsonComponents.IArray>;
10
+ }
11
+ export namespace IJsonComponents {
12
+ export interface IArray extends IJsonSchema.IArray {
13
+ $id?: string;
14
+ $recursiveAnchor?: true;
15
+ }
16
+ export interface ITuple extends IJsonSchema.ITuple {
17
+ $id?: string;
18
+ $recursiveAnchor?: true;
19
+ }
20
+ export interface IObject {
21
+ $id?: string;
22
+ $recursiveAnchor?: boolean;
23
+ type: "object";
24
+
25
+ /**
26
+ * Only when swagger mode.
27
+ */
28
+ nullable?: boolean;
29
+
30
+ properties: Record<string, IJsonSchema>;
31
+ patternProperties?: Record<string, IJsonSchema>;
32
+ additionalProperties?: IJsonSchema;
33
+
34
+ required?: string[];
35
+ description?: string;
36
+ "x-typia-jsDocTags"?: IJsDocTagInfo[];
37
+ "x-typia-patternProperties"?: Record<string, IJsonSchema>;
38
+ "x-typia-additionalProperties"?: IJsonSchema;
39
+ }
40
+
41
+ export type IAlias = IJsonSchema & {
42
+ $id?: string;
43
+ $recursiveAnchor?: boolean;
44
+ };
45
+ }
@@ -1,134 +1,134 @@
1
- import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
2
- import { IMetadataTag } from "../metadata/IMetadataTag";
3
-
4
- import { Atomic } from "../typings/Atomic";
5
-
6
- export type IJsonSchema = IJsonSchema.Known | IJsonSchema.IUnknown;
7
- export namespace IJsonSchema {
8
- export type Known =
9
- | IEnumeration<"boolean">
10
- | IEnumeration<"number">
11
- | IEnumeration<"string">
12
- | IBoolean
13
- | IInteger
14
- | INumber
15
- | IString
16
- | IArray
17
- | ITuple
18
- | IOneOf
19
- | IReference
20
- | IRecursiveReference
21
- | INullOnly;
22
-
23
- export interface IUnknown extends IAttribute {
24
- type?: undefined;
25
- }
26
-
27
- /**
28
- * @deprecated Use {@link Known} type instead.
29
- */
30
- export type NotUnknown = Known;
31
-
32
- /* -----------------------------------------------------------
33
- ATOMICS
34
- ----------------------------------------------------------- */
35
- export interface IEnumeration<
36
- Literal extends Exclude<Atomic.Literal, "bigint">,
37
- > extends IAtomic<Literal> {
38
- enum: Array<Atomic.Mapper[Literal]>;
39
- }
40
- export interface IAtomic<Literal extends Exclude<Atomic.Literal, "bigint">>
41
- extends ISignificant<Literal> {
42
- default?: Atomic.Mapper[Literal];
43
- }
44
- export interface IString extends IAtomic<"string"> {
45
- /**
46
- * @type uint
47
- */
48
- minLength?: number;
49
- /**
50
- * @type uint
51
- */
52
- maxLength?: number;
53
- pattern?: string;
54
- format?: string;
55
- }
56
- export interface INumber extends IAtomic<"number"> {
57
- minimum?: number;
58
- maximum?: number;
59
- exclusiveMinimum?: boolean;
60
- exclusiveMaximum?: boolean;
61
- multipleOf?: number;
62
- }
63
- export interface IInteger extends IAtomic<"integer"> {
64
- /**
65
- * @type int
66
- */
67
- minimum?: number;
68
- /**
69
- * @type int
70
- */
71
- maximum?: number;
72
- exclusiveMinimum?: boolean;
73
- exclusiveMaximum?: boolean;
74
- /**
75
- * @type int
76
- */
77
- multipleOf?: number;
78
- }
79
- export interface IBoolean extends IAtomic<"boolean"> {}
80
-
81
- /* -----------------------------------------------------------
82
- OBJECTS
83
- ----------------------------------------------------------- */
84
- export interface IArray extends ISignificant<"array"> {
85
- items: IJsonSchema;
86
- /**
87
- * @type uint
88
- */
89
- minItems?: number;
90
- /**
91
- * @type uint
92
- */
93
- maxItems?: number;
94
- "x-typia-tuple"?: ITuple;
95
- }
96
- export interface ITuple extends ISignificant<"array"> {
97
- items: IJsonSchema[];
98
- "x-typia-rest": boolean;
99
- }
100
- export interface IReference extends IAttribute {
101
- $ref: string;
102
- }
103
- export interface IRecursiveReference extends IAttribute {
104
- $recursiveRef: string;
105
- }
106
- export interface INullOnly extends IAttribute {
107
- type: "null";
108
- }
109
-
110
- /* -----------------------------------------------------------
111
- MISCELLANEOUS
112
- ----------------------------------------------------------- */
113
- export interface IOneOf extends IAttribute {
114
- oneOf: IJsonSchema[];
115
- }
116
-
117
- export interface ISignificant<Literal extends string> extends IAttribute {
118
- type: Literal;
119
-
120
- /**
121
- * Only when swagger mode.
122
- */
123
- nullable?: boolean;
124
- }
125
- export interface IAttribute {
126
- deprecated?: boolean;
127
- title?: string;
128
- description?: string;
129
- "x-typia-metaTags"?: IMetadataTag[];
130
- "x-typia-jsDocTags"?: IJsDocTagInfo[];
131
- "x-typia-required"?: boolean;
132
- "x-typia-optional"?: boolean;
133
- }
134
- }
1
+ import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
2
+ import { IMetadataTag } from "../metadata/IMetadataTag";
3
+
4
+ import { Atomic } from "../typings/Atomic";
5
+
6
+ export type IJsonSchema = IJsonSchema.Known | IJsonSchema.IUnknown;
7
+ export namespace IJsonSchema {
8
+ export type Known =
9
+ | IEnumeration<"boolean">
10
+ | IEnumeration<"number">
11
+ | IEnumeration<"string">
12
+ | IBoolean
13
+ | IInteger
14
+ | INumber
15
+ | IString
16
+ | IArray
17
+ | ITuple
18
+ | IOneOf
19
+ | IReference
20
+ | IRecursiveReference
21
+ | INullOnly;
22
+
23
+ export interface IUnknown extends IAttribute {
24
+ type?: undefined;
25
+ }
26
+
27
+ /**
28
+ * @deprecated Use {@link Known} type instead.
29
+ */
30
+ export type NotUnknown = Known;
31
+
32
+ /* -----------------------------------------------------------
33
+ ATOMICS
34
+ ----------------------------------------------------------- */
35
+ export interface IEnumeration<
36
+ Literal extends Exclude<Atomic.Literal, "bigint">,
37
+ > extends IAtomic<Literal> {
38
+ enum: Array<Atomic.Mapper[Literal]>;
39
+ }
40
+ export interface IAtomic<Literal extends Exclude<Atomic.Literal, "bigint">>
41
+ extends ISignificant<Literal> {
42
+ default?: Atomic.Mapper[Literal];
43
+ }
44
+ export interface IString extends IAtomic<"string"> {
45
+ /**
46
+ * @type uint
47
+ */
48
+ minLength?: number;
49
+ /**
50
+ * @type uint
51
+ */
52
+ maxLength?: number;
53
+ pattern?: string;
54
+ format?: string;
55
+ }
56
+ export interface INumber extends IAtomic<"number"> {
57
+ minimum?: number;
58
+ maximum?: number;
59
+ exclusiveMinimum?: boolean;
60
+ exclusiveMaximum?: boolean;
61
+ multipleOf?: number;
62
+ }
63
+ export interface IInteger extends IAtomic<"integer"> {
64
+ /**
65
+ * @type int
66
+ */
67
+ minimum?: number;
68
+ /**
69
+ * @type int
70
+ */
71
+ maximum?: number;
72
+ exclusiveMinimum?: boolean;
73
+ exclusiveMaximum?: boolean;
74
+ /**
75
+ * @type int
76
+ */
77
+ multipleOf?: number;
78
+ }
79
+ export interface IBoolean extends IAtomic<"boolean"> {}
80
+
81
+ /* -----------------------------------------------------------
82
+ OBJECTS
83
+ ----------------------------------------------------------- */
84
+ export interface IArray extends ISignificant<"array"> {
85
+ items: IJsonSchema;
86
+ /**
87
+ * @type uint
88
+ */
89
+ minItems?: number;
90
+ /**
91
+ * @type uint
92
+ */
93
+ maxItems?: number;
94
+ "x-typia-tuple"?: ITuple;
95
+ }
96
+ export interface ITuple extends ISignificant<"array"> {
97
+ items: IJsonSchema[];
98
+ "x-typia-rest": boolean;
99
+ }
100
+ export interface IReference extends IAttribute {
101
+ $ref: string;
102
+ }
103
+ export interface IRecursiveReference extends IAttribute {
104
+ $recursiveRef: string;
105
+ }
106
+ export interface INullOnly extends IAttribute {
107
+ type: "null";
108
+ }
109
+
110
+ /* -----------------------------------------------------------
111
+ MISCELLANEOUS
112
+ ----------------------------------------------------------- */
113
+ export interface IOneOf extends IAttribute {
114
+ oneOf: IJsonSchema[];
115
+ }
116
+
117
+ export interface ISignificant<Literal extends string> extends IAttribute {
118
+ type: Literal;
119
+
120
+ /**
121
+ * Only when swagger mode.
122
+ */
123
+ nullable?: boolean;
124
+ }
125
+ export interface IAttribute {
126
+ deprecated?: boolean;
127
+ title?: string;
128
+ description?: string;
129
+ "x-typia-metaTags"?: IMetadataTag[];
130
+ "x-typia-jsDocTags"?: IJsDocTagInfo[];
131
+ "x-typia-required"?: boolean;
132
+ "x-typia-optional"?: boolean;
133
+ }
134
+ }