typia 5.0.0-dev.20230827 → 5.0.0-dev.20230829

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 (277) 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/PackageManager.js +1 -1
  6. package/lib/executable/setup/PackageManager.js.map +1 -1
  7. package/lib/executable/setup/PluginConfigurator.js +2 -2
  8. package/lib/executable/setup/PluginConfigurator.js.map +1 -1
  9. package/lib/factories/ExpressionFactory.js +2 -2
  10. package/lib/factories/ExpressionFactory.js.map +1 -1
  11. package/lib/factories/JsonMetadataFactory.d.ts +7 -0
  12. package/lib/factories/JsonMetadataFactory.js +38 -0
  13. package/lib/factories/JsonMetadataFactory.js.map +1 -0
  14. package/lib/factories/LiteralFactory.js +1 -1
  15. package/lib/factories/LiteralFactory.js.map +1 -1
  16. package/lib/factories/MetadataCollection.js +0 -1
  17. package/lib/factories/MetadataCollection.js.map +1 -1
  18. package/lib/factories/MetadataCommentTagFactory.js +129 -118
  19. package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
  20. package/lib/factories/MetadataFactory.d.ts +22 -2
  21. package/lib/factories/MetadataFactory.js +248 -17
  22. package/lib/factories/MetadataFactory.js.map +1 -1
  23. package/lib/factories/MetadataTypeTagFactory.d.ts +3 -2
  24. package/lib/factories/MetadataTypeTagFactory.js +246 -173
  25. package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
  26. package/lib/factories/ProtobufFactory.js +112 -97
  27. package/lib/factories/ProtobufFactory.js.map +1 -1
  28. package/lib/factories/TypeFactory.d.ts +0 -1
  29. package/lib/factories/TypeFactory.js +0 -5
  30. package/lib/factories/TypeFactory.js.map +1 -1
  31. package/lib/factories/internal/metadata/emplace_metadata_alias.d.ts +1 -1
  32. package/lib/factories/internal/metadata/emplace_metadata_alias.js +20 -7
  33. package/lib/factories/internal/metadata/emplace_metadata_alias.js.map +1 -1
  34. package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +1 -1
  35. package/lib/factories/internal/metadata/emplace_metadata_array_type.js +20 -7
  36. package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -1
  37. package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +1 -1
  38. package/lib/factories/internal/metadata/emplace_metadata_object.js +100 -84
  39. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  40. package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +1 -1
  41. package/lib/factories/internal/metadata/emplace_metadata_tuple.js +34 -21
  42. package/lib/factories/internal/metadata/emplace_metadata_tuple.js.map +1 -1
  43. package/lib/factories/internal/metadata/explore_metadata.d.ts +1 -1
  44. package/lib/factories/internal/metadata/explore_metadata.js +12 -12
  45. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  46. package/lib/factories/internal/metadata/iterate_metadata.d.ts +1 -1
  47. package/lib/factories/internal/metadata/iterate_metadata.js +39 -19
  48. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  49. package/lib/factories/internal/metadata/iterate_metadata_alias.d.ts +1 -1
  50. package/lib/factories/internal/metadata/iterate_metadata_alias.js +12 -10
  51. package/lib/factories/internal/metadata/iterate_metadata_alias.js.map +1 -1
  52. package/lib/factories/internal/metadata/iterate_metadata_array.d.ts +1 -1
  53. package/lib/factories/internal/metadata/iterate_metadata_array.js +11 -9
  54. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  55. package/lib/factories/internal/metadata/iterate_metadata_collection.d.ts +2 -1
  56. package/lib/factories/internal/metadata/iterate_metadata_collection.js +47 -45
  57. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  58. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -1
  59. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js +16 -20
  60. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -1
  61. package/lib/factories/internal/metadata/iterate_metadata_intersection.d.ts +1 -1
  62. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +145 -135
  63. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  64. package/lib/factories/internal/metadata/iterate_metadata_map.d.ts +1 -1
  65. package/lib/factories/internal/metadata/iterate_metadata_map.js +28 -15
  66. package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
  67. package/lib/factories/internal/metadata/iterate_metadata_object.d.ts +1 -1
  68. package/lib/factories/internal/metadata/iterate_metadata_object.js +16 -14
  69. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  70. package/lib/factories/internal/metadata/iterate_metadata_resolve.d.ts +1 -1
  71. package/lib/factories/internal/metadata/iterate_metadata_resolve.js +28 -15
  72. package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -1
  73. package/lib/factories/internal/metadata/iterate_metadata_set.d.ts +1 -1
  74. package/lib/factories/internal/metadata/iterate_metadata_set.js +24 -11
  75. package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
  76. package/lib/factories/internal/metadata/iterate_metadata_template.d.ts +1 -1
  77. package/lib/factories/internal/metadata/iterate_metadata_template.js +28 -15
  78. package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
  79. package/lib/factories/internal/metadata/iterate_metadata_tuple.d.ts +1 -1
  80. package/lib/factories/internal/metadata/iterate_metadata_tuple.js +11 -9
  81. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  82. package/lib/factories/internal/metadata/iterate_metadata_union.d.ts +1 -1
  83. package/lib/factories/internal/metadata/iterate_metadata_union.js +20 -7
  84. package/lib/factories/internal/metadata/iterate_metadata_union.js.map +1 -1
  85. package/lib/programmers/CheckerProgrammer.js +13 -8
  86. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  87. package/lib/programmers/FeatureProgrammer.d.ts +1 -1
  88. package/lib/programmers/FeatureProgrammer.js +1 -1
  89. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  90. package/lib/programmers/IsProgrammer.js +1 -1
  91. package/lib/programmers/IsProgrammer.js.map +1 -1
  92. package/lib/programmers/RandomProgrammer.js +9 -4
  93. package/lib/programmers/RandomProgrammer.js.map +1 -1
  94. package/lib/programmers/TypiaProgrammer.js +58 -28
  95. package/lib/programmers/TypiaProgrammer.js.map +1 -1
  96. package/lib/programmers/helpers/ProtobufUtil.js +1 -1
  97. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  98. package/lib/programmers/internal/application_escaped.d.ts +4 -0
  99. package/lib/programmers/internal/{application_resolved.js → application_escaped.js} +4 -4
  100. package/lib/programmers/internal/application_escaped.js.map +1 -0
  101. package/lib/programmers/internal/application_schema.js +5 -5
  102. package/lib/programmers/internal/application_schema.js.map +1 -1
  103. package/lib/programmers/json/JsonApplicationProgrammer.js +5 -1
  104. package/lib/programmers/json/JsonApplicationProgrammer.js.map +1 -1
  105. package/lib/programmers/json/JsonAssertParseProgrammer.js +2 -0
  106. package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
  107. package/lib/programmers/json/JsonIsParseProgrammer.js +2 -0
  108. package/lib/programmers/json/JsonIsParseProgrammer.js.map +1 -1
  109. package/lib/programmers/json/JsonStringifyProgrammer.js +20 -62
  110. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  111. package/lib/programmers/json/JsonValidateParseProgrammer.js +2 -0
  112. package/lib/programmers/json/JsonValidateParseProgrammer.js.map +1 -1
  113. package/lib/programmers/misc/MiscCloneProgrammer.js +13 -8
  114. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  115. package/lib/programmers/misc/MiscLiteralsProgrammer.js +10 -5
  116. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  117. package/lib/programmers/misc/MiscPruneProgrammer.js +13 -8
  118. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  119. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +21 -1
  120. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  121. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +11 -1
  122. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  123. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +22 -1
  124. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  125. package/lib/schemas/metadata/Metadata.js +4 -4
  126. package/lib/schemas/metadata/Metadata.js.map +1 -1
  127. package/lib/transform.d.ts +2 -1
  128. package/lib/transform.js +11 -3
  129. package/lib/transform.js.map +1 -1
  130. package/lib/transformers/CallExpressionTransformer.d.ts +1 -1
  131. package/lib/transformers/CallExpressionTransformer.js +2 -1
  132. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  133. package/lib/transformers/FileTransformer.js +18 -8
  134. package/lib/transformers/FileTransformer.js.map +1 -1
  135. package/lib/transformers/IProject.d.ts +3 -0
  136. package/lib/transformers/NodeTransformer.d.ts +1 -1
  137. package/lib/transformers/TransformerError.d.ts +12 -0
  138. package/lib/transformers/TransformerError.js +66 -0
  139. package/lib/transformers/TransformerError.js.map +1 -0
  140. package/lib/transformers/features/AssertTransformer.d.ts +1 -0
  141. package/lib/transformers/features/CreateAssertTransformer.d.ts +1 -0
  142. package/lib/transformers/features/CreateIsTransformer.d.ts +1 -0
  143. package/lib/transformers/features/CreateRandomTransformer.js +9 -4
  144. package/lib/transformers/features/CreateRandomTransformer.js.map +1 -1
  145. package/lib/transformers/features/CreateValidateTransformer.d.ts +1 -0
  146. package/lib/transformers/features/IsTransformer.d.ts +1 -0
  147. package/lib/transformers/features/RandomTransformer.js +9 -4
  148. package/lib/transformers/features/RandomTransformer.js.map +1 -1
  149. package/lib/transformers/features/ValidateTransformer.d.ts +1 -0
  150. package/lib/transformers/features/json/JsonApplicationTransformer.js +79 -19
  151. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  152. package/lib/transformers/features/json/JsonAssertParseTransformer.d.ts +1 -0
  153. package/lib/transformers/features/json/JsonAssertStringifyTransformer.d.ts +1 -0
  154. package/lib/transformers/features/json/JsonCreateAssertParseTransformer.d.ts +1 -0
  155. package/lib/transformers/features/json/JsonCreateAssertStringifyTransformer.d.ts +1 -0
  156. package/lib/transformers/features/json/JsonCreateIsParseTransformer.d.ts +1 -0
  157. package/lib/transformers/features/json/JsonCreateIsStringifyTransformer.d.ts +1 -0
  158. package/lib/transformers/features/json/JsonCreateStringifyTransformer.d.ts +1 -0
  159. package/lib/transformers/features/json/JsonCreateValidateParseTransformer.d.ts +1 -0
  160. package/lib/transformers/features/json/JsonCreateValidateStringifyProgrammer.d.ts +1 -0
  161. package/lib/transformers/features/json/JsonIsParseTransformer.d.ts +1 -0
  162. package/lib/transformers/features/json/JsonIsStringifyTransformer.d.ts +1 -0
  163. package/lib/transformers/features/json/JsonStringifyTransformer.d.ts +1 -0
  164. package/lib/transformers/features/json/JsonValidateParseTransformer.d.ts +1 -0
  165. package/lib/transformers/features/json/JsonValidateStringifyTransformer.d.ts +1 -0
  166. package/lib/transformers/features/misc/MetadataTransformer.js +13 -5
  167. package/lib/transformers/features/misc/MetadataTransformer.js.map +1 -1
  168. package/lib/transformers/features/misc/MiscAssertCloneTransformer.d.ts +1 -0
  169. package/lib/transformers/features/misc/MiscAssertPruneTransformer.d.ts +1 -0
  170. package/lib/transformers/features/misc/MiscCloneTransformer.d.ts +1 -0
  171. package/lib/transformers/features/misc/MiscCreateAssertCloneTransformer.d.ts +1 -0
  172. package/lib/transformers/features/misc/MiscCreateAssertPruneTransformer.d.ts +1 -0
  173. package/lib/transformers/features/misc/MiscCreateCloneTransformer.d.ts +1 -0
  174. package/lib/transformers/features/misc/MiscCreateIsCloneTransformer.d.ts +1 -0
  175. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.d.ts +1 -0
  176. package/lib/transformers/features/misc/MiscCreatePruneTransformer.d.ts +1 -0
  177. package/lib/transformers/features/misc/MiscCreateValidateCloneTransformer.d.ts +1 -0
  178. package/lib/transformers/features/misc/MiscCreateValidatePruneTransformer.d.ts +1 -0
  179. package/lib/transformers/features/misc/MiscIsCloneTransformer.d.ts +1 -0
  180. package/lib/transformers/features/misc/MiscIsPruneTransformer.d.ts +1 -0
  181. package/lib/transformers/features/misc/MiscLiteralsTransformer.js +9 -4
  182. package/lib/transformers/features/misc/MiscLiteralsTransformer.js.map +1 -1
  183. package/lib/transformers/features/misc/MiscPruneTransformer.d.ts +1 -0
  184. package/lib/transformers/features/misc/MiscValidateCloneTransformer.d.ts +1 -0
  185. package/lib/transformers/features/misc/MiscValidatePruneTransformer.d.ts +1 -0
  186. package/lib/transformers/features/protobuf/CreateProtobufAssertDecodeTransformer.d.ts +1 -0
  187. package/lib/transformers/features/protobuf/CreateProtobufAssertEncodeTransformer.d.ts +1 -0
  188. package/lib/transformers/features/protobuf/CreateProtobufDecodeTransformer.d.ts +1 -0
  189. package/lib/transformers/features/protobuf/CreateProtobufEncodeTransformer.d.ts +1 -0
  190. package/lib/transformers/features/protobuf/CreateProtobufIsDecodeTransformer.d.ts +1 -0
  191. package/lib/transformers/features/protobuf/CreateProtobufIsEncodeTransformer.d.ts +1 -0
  192. package/lib/transformers/features/protobuf/CreateProtobufValidateDecodeTransformer.d.ts +1 -0
  193. package/lib/transformers/features/protobuf/CreateProtobufValidateEncodeTransformer.d.ts +1 -0
  194. package/lib/transformers/features/protobuf/ProtobufAssertDecodeTransformer.d.ts +1 -0
  195. package/lib/transformers/features/protobuf/ProtobufAssertEncodeTransformer.d.ts +1 -0
  196. package/lib/transformers/features/protobuf/ProtobufDecodeTransformer.d.ts +1 -0
  197. package/lib/transformers/features/protobuf/ProtobufEncodeTransformer.d.ts +1 -0
  198. package/lib/transformers/features/protobuf/ProtobufIsDecodeTransformer.d.ts +1 -0
  199. package/lib/transformers/features/protobuf/ProtobufIsEncodeTransformer.d.ts +1 -0
  200. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js +9 -2
  201. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js.map +1 -1
  202. package/lib/transformers/features/protobuf/ProtobufValidateDecodeTransformer.d.ts +1 -0
  203. package/lib/transformers/features/protobuf/ProtobufValidateEncodeTransformer.d.ts +1 -0
  204. package/lib/transformers/internal/GenericTransformer.js +17 -4
  205. package/lib/transformers/internal/GenericTransformer.js.map +1 -1
  206. package/lib/typings/ValidationPipe.d.ts +7 -0
  207. package/lib/typings/ValidationPipe.js +3 -0
  208. package/lib/typings/ValidationPipe.js.map +1 -0
  209. package/package.json +5 -1
  210. package/src/executable/TypiaGenerateWizard.ts +1 -1
  211. package/src/executable/TypiaSetupWizard.ts +1 -1
  212. package/src/executable/setup/PackageManager.ts +1 -1
  213. package/src/executable/setup/PluginConfigurator.ts +2 -2
  214. package/src/factories/ExpressionFactory.ts +2 -2
  215. package/src/factories/JsonMetadataFactory.ts +43 -0
  216. package/src/factories/LiteralFactory.ts +2 -1
  217. package/src/factories/MetadataCollection.ts +0 -5
  218. package/src/factories/MetadataCommentTagFactory.ts +130 -84
  219. package/src/factories/MetadataFactory.ts +175 -7
  220. package/src/factories/MetadataTypeTagFactory.ts +191 -141
  221. package/src/factories/ProtobufFactory.ts +92 -102
  222. package/src/factories/TypeFactory.ts +0 -5
  223. package/src/factories/internal/metadata/emplace_metadata_alias.ts +12 -5
  224. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +12 -5
  225. package/src/factories/internal/metadata/emplace_metadata_object.ts +20 -5
  226. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +12 -2
  227. package/src/factories/internal/metadata/explore_metadata.ts +5 -11
  228. package/src/factories/internal/metadata/iterate_metadata.ts +44 -24
  229. package/src/factories/internal/metadata/iterate_metadata_alias.ts +7 -2
  230. package/src/factories/internal/metadata/iterate_metadata_array.ts +7 -2
  231. package/src/factories/internal/metadata/iterate_metadata_collection.ts +30 -29
  232. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +21 -22
  233. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +33 -17
  234. package/src/factories/internal/metadata/iterate_metadata_map.ts +20 -4
  235. package/src/factories/internal/metadata/iterate_metadata_object.ts +2 -1
  236. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +15 -12
  237. package/src/factories/internal/metadata/iterate_metadata_set.ts +11 -2
  238. package/src/factories/internal/metadata/iterate_metadata_template.ts +12 -3
  239. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +7 -2
  240. package/src/factories/internal/metadata/iterate_metadata_union.ts +10 -7
  241. package/src/programmers/CheckerProgrammer.ts +8 -2
  242. package/src/programmers/FeatureProgrammer.ts +4 -1
  243. package/src/programmers/IsProgrammer.ts +1 -1
  244. package/src/programmers/RandomProgrammer.ts +18 -17
  245. package/src/programmers/TypiaProgrammer.ts +27 -2
  246. package/src/programmers/helpers/ProtobufUtil.ts +1 -1
  247. package/src/programmers/internal/{application_resolved.ts → application_escaped.ts} +1 -1
  248. package/src/programmers/internal/application_schema.ts +5 -5
  249. package/src/programmers/json/JsonApplicationProgrammer.ts +6 -3
  250. package/src/programmers/json/JsonAssertParseProgrammer.ts +7 -2
  251. package/src/programmers/json/JsonIsParseProgrammer.ts +7 -2
  252. package/src/programmers/json/JsonStringifyProgrammer.ts +7 -37
  253. package/src/programmers/json/JsonValidateParseProgrammer.ts +7 -2
  254. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +1 -1
  255. package/src/programmers/misc/MiscCloneProgrammer.ts +14 -11
  256. package/src/programmers/misc/MiscLiteralsProgrammer.ts +11 -6
  257. package/src/programmers/misc/MiscPruneProgrammer.ts +8 -2
  258. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +17 -1
  259. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +15 -1
  260. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +18 -1
  261. package/src/schemas/metadata/Metadata.ts +4 -4
  262. package/src/transform.ts +13 -5
  263. package/src/transformers/CallExpressionTransformer.ts +6 -3
  264. package/src/transformers/FileTransformer.ts +25 -13
  265. package/src/transformers/IProject.ts +3 -0
  266. package/src/transformers/NodeTransformer.ts +1 -1
  267. package/src/transformers/TransformerError.ts +55 -0
  268. package/src/transformers/features/CreateRandomTransformer.ts +11 -7
  269. package/src/transformers/features/RandomTransformer.ts +11 -7
  270. package/src/transformers/features/json/JsonApplicationTransformer.ts +39 -35
  271. package/src/transformers/features/misc/MetadataTransformer.ts +18 -10
  272. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +11 -7
  273. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +9 -7
  274. package/src/transformers/internal/GenericTransformer.ts +17 -10
  275. package/src/typings/ValidationPipe.ts +9 -0
  276. package/lib/programmers/internal/application_resolved.d.ts +0 -4
  277. package/lib/programmers/internal/application_resolved.js.map +0 -1
@@ -5,7 +5,7 @@ import { IJsonComponents, IJsonSchema } from "../../module";
5
5
  import { JsonApplicationProgrammer } from "../json/JsonApplicationProgrammer";
6
6
  import { application_schema } from "./application_schema";
7
7
 
8
- export const application_resolved =
8
+ export const application_escaped =
9
9
  (options: JsonApplicationProgrammer.IOptions) =>
10
10
  <BlockNever extends boolean>(blockNever: BlockNever) =>
11
11
  (components: IJsonComponents) =>
@@ -9,10 +9,10 @@ import { application_alias } from "./application_alias";
9
9
  import { application_array } from "./application_array";
10
10
  import { application_boolean } from "./application_boolean";
11
11
  import { application_constant } from "./application_constant";
12
+ import { application_escaped } from "./application_escaped";
12
13
  import { application_native } from "./application_native";
13
14
  import { application_number } from "./application_number";
14
15
  import { application_object } from "./application_object";
15
- import { application_resolved } from "./application_resolved";
16
16
  import { application_string } from "./application_string";
17
17
  import { application_templates } from "./application_templates";
18
18
  import { application_tuple } from "./application_tuple";
@@ -61,7 +61,7 @@ export const application_schema =
61
61
  // toJSON() METHOD
62
62
  if (meta.escaped !== null)
63
63
  union.push(
64
- ...application_resolved(options)(blockNever)(components)(
64
+ ...application_escaped(options)(blockNever)(components)(
65
65
  meta.escaped,
66
66
  )(attribute),
67
67
  );
@@ -70,7 +70,7 @@ export const application_schema =
70
70
  if (meta.templates.length && AtomicPredicator.template(meta))
71
71
  insert(application_templates(meta)(attribute));
72
72
  for (const constant of meta.constants)
73
- if (constant.type === "bigint") throw new Error(NO_BIGINT);
73
+ if (constant.type === "bigint") throw new TypeError(NO_BIGINT);
74
74
  else if (
75
75
  (constant.type === "string" && meta.templates.length) ||
76
76
  AtomicPredicator.constant(meta)(constant.type) === false
@@ -78,7 +78,7 @@ export const application_schema =
78
78
  continue;
79
79
  else insert(application_constant(constant)(attribute));
80
80
  for (const a of meta.atomics)
81
- if (a.type === "bigint") throw new Error(NO_BIGINT);
81
+ if (a.type === "bigint") throw new TypeError(NO_BIGINT);
82
82
  else if (a.type === "boolean")
83
83
  insert(application_boolean(attribute));
84
84
  else if (a.type === "number")
@@ -103,7 +103,7 @@ export const application_schema =
103
103
  if (AtomicPredicator.native(native)) {
104
104
  const type: string = native.toLowerCase();
105
105
  if (meta.atomics.some((a) => a.type === type)) continue;
106
- else if (type === "bigint") throw new Error(NO_BIGINT);
106
+ else if (type === "bigint") throw new TypeError(NO_BIGINT);
107
107
  else if (type === "boolean")
108
108
  insert(application_boolean(attribute));
109
109
  else if (type === "number")
@@ -3,6 +3,8 @@ import { IJsonComponents } from "../../schemas/json/IJsonComponents";
3
3
  import { IJsonSchema } from "../../schemas/json/IJsonSchema";
4
4
  import { Metadata } from "../../schemas/metadata/Metadata";
5
5
 
6
+ import { TransformerError } from "../../transformers/TransformerError";
7
+
6
8
  import { application_schema } from "../internal/application_schema";
7
9
 
8
10
  export namespace JsonApplicationProgrammer {
@@ -35,9 +37,10 @@ export namespace JsonApplicationProgrammer {
35
37
  schemas: metadatas.map((meta, i) => {
36
38
  const schema: IJsonSchema | null = generator(meta)({});
37
39
  if (schema === null)
38
- throw new Error(
39
- `Error on typia.application(): invalid type on argument - (${meta.getName()}, ${i})`,
40
- );
40
+ throw new TransformerError({
41
+ code: "typia.json.application",
42
+ message: `invalid type on argument - (${meta.getName()}, ${i})`,
43
+ });
41
44
  return schema;
42
45
  }),
43
46
  components,
@@ -1,6 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { JsonMetadataFactory } from "../../factories/JsonMetadataFactory";
4
5
  import { StatementFactory } from "../../factories/StatementFactory";
5
6
  import { TypeFactory } from "../../factories/TypeFactory";
6
7
 
@@ -12,8 +13,11 @@ export namespace JsonAssertParseProgrammer {
12
13
  export const write =
13
14
  (project: IProject) =>
14
15
  (modulo: ts.LeftHandSideExpression) =>
15
- (type: ts.Type, name?: string) =>
16
- ts.factory.createArrowFunction(
16
+ (type: ts.Type, name?: string): ts.ArrowFunction => {
17
+ JsonMetadataFactory.analyze(`typia.json.${modulo.getText()}`)(
18
+ project.checker,
19
+ )(type);
20
+ return ts.factory.createArrowFunction(
17
21
  undefined,
18
22
  undefined,
19
23
  [
@@ -63,4 +67,5 @@ export namespace JsonAssertParseProgrammer {
63
67
  ),
64
68
  ]),
65
69
  );
70
+ };
66
71
  }
@@ -1,6 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { JsonMetadataFactory } from "../../factories/JsonMetadataFactory";
4
5
  import { StatementFactory } from "../../factories/StatementFactory";
5
6
  import { TypeFactory } from "../../factories/TypeFactory";
6
7
 
@@ -12,8 +13,11 @@ export namespace JsonIsParseProgrammer {
12
13
  export const write =
13
14
  (project: IProject) =>
14
15
  (modulo: ts.LeftHandSideExpression) =>
15
- (type: ts.Type, name?: string) =>
16
- ts.factory.createArrowFunction(
16
+ (type: ts.Type, name?: string): ts.ArrowFunction => {
17
+ JsonMetadataFactory.analyze(`typia.json.${modulo.getText()}`)(
18
+ project.checker,
19
+ )(type);
20
+ return ts.factory.createArrowFunction(
17
21
  undefined,
18
22
  undefined,
19
23
  [
@@ -69,4 +73,5 @@ export namespace JsonIsParseProgrammer {
69
73
  ),
70
74
  ]),
71
75
  );
76
+ };
72
77
  }
@@ -2,8 +2,8 @@ import ts from "typescript";
2
2
 
3
3
  import { ExpressionFactory } from "../../factories/ExpressionFactory";
4
4
  import { IdentifierFactory } from "../../factories/IdentifierFactory";
5
+ import { JsonMetadataFactory } from "../../factories/JsonMetadataFactory";
5
6
  import { MetadataCollection } from "../../factories/MetadataCollection";
6
- import { MetadataFactory } from "../../factories/MetadataFactory";
7
7
  import { StatementFactory } from "../../factories/StatementFactory";
8
8
  import { TypeFactory } from "../../factories/TypeFactory";
9
9
  import { ValueFactory } from "../../factories/ValueFactory";
@@ -315,12 +315,7 @@ export namespace JsonStringifyProgrammer {
315
315
  });
316
316
 
317
317
  // TUPLES
318
- for (const tuple of meta.tuples) {
319
- for (const child of tuple.type.elements)
320
- if (StringifyPredicator.undefindable(meta))
321
- throw new Error(
322
- `Error on typia.json.stringify(): tuple cannot contain undefined value - (${child.getName()}).`,
323
- );
318
+ for (const tuple of meta.tuples)
324
319
  unions.push({
325
320
  type: "tuple",
326
321
  is: () =>
@@ -340,15 +335,9 @@ export namespace JsonStringifyProgrammer {
340
335
  explore,
341
336
  ),
342
337
  });
343
- }
344
338
 
345
339
  // ARRAYS
346
340
  if (meta.arrays.length) {
347
- for (const child of meta.arrays)
348
- if (StringifyPredicator.undefindable(child.type.value))
349
- throw new Error(
350
- `Error on typia.json.stringify(): array cannot contain undefined value (${child.type.value.getName()}).`,
351
- );
352
341
  const value: () => ts.Expression =
353
342
  meta.arrays.length === 1
354
343
  ? () =>
@@ -935,25 +924,11 @@ export namespace JsonStringifyProgrammer {
935
924
 
936
925
  const initializer: FeatureProgrammer.IConfig["initializer"] =
937
926
  ({ checker }) =>
938
- (type) => {
939
- const collection: MetadataCollection = new MetadataCollection();
940
- const meta: Metadata = MetadataFactory.analyze(checker)({
941
- escape: true,
942
- constant: true,
943
- absorb: true,
944
- validate: (meta) => {
945
- if (meta.atomics.find((a) => a.type === "bigint"))
946
- throw new Error(NO_BIGINT);
947
- else if (
948
- meta.arrays.some(
949
- (array) => array.type.value.isRequired() === false,
950
- )
951
- )
952
- throw new Error(NO_UNDEFINED_IN_ARRAY);
953
- },
954
- })(collection)(type);
955
- return [collection, meta];
956
- };
927
+ (importer) =>
928
+ (type) =>
929
+ JsonMetadataFactory.analyze(`typia.json.${importer.method}`)(
930
+ checker,
931
+ )(type);
957
932
 
958
933
  const create_throw_error =
959
934
  (importer: FunctionImporter) =>
@@ -987,8 +962,3 @@ interface IUnion {
987
962
  is: () => ts.Expression;
988
963
  value: () => ts.Expression;
989
964
  }
990
-
991
- const NO_BIGINT =
992
- "Error on typia.json.stringify(): does not allow bigint type.";
993
- const NO_UNDEFINED_IN_ARRAY =
994
- "Error on typia.json.stringify(): does not allow undefined type in array.";
@@ -1,6 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { JsonMetadataFactory } from "../../factories/JsonMetadataFactory";
4
5
  import { StatementFactory } from "../../factories/StatementFactory";
5
6
  import { TypeFactory } from "../../factories/TypeFactory";
6
7
 
@@ -12,8 +13,11 @@ export namespace JsonValidateParseProgrammer {
12
13
  export const write =
13
14
  (project: IProject) =>
14
15
  (modulo: ts.LeftHandSideExpression) =>
15
- (type: ts.Type, name?: string) =>
16
- ts.factory.createArrowFunction(
16
+ (type: ts.Type, name?: string): ts.ArrowFunction => {
17
+ JsonMetadataFactory.analyze(`typia.json.${modulo.getText()}`)(
18
+ project.checker,
19
+ )(type);
20
+ return ts.factory.createArrowFunction(
17
21
  undefined,
18
22
  undefined,
19
23
  [
@@ -60,4 +64,5 @@ export namespace JsonValidateParseProgrammer {
60
64
  ),
61
65
  ]),
62
66
  );
67
+ };
63
68
  }
@@ -13,7 +13,7 @@ export namespace JsonValidateStringifyProgrammer {
13
13
  export const write =
14
14
  (project: IProject) =>
15
15
  (modulo: ts.LeftHandSideExpression) =>
16
- (type: ts.Type, name?: string) =>
16
+ (type: ts.Type, name?: string): ts.ArrowFunction =>
17
17
  ts.factory.createArrowFunction(
18
18
  undefined,
19
19
  undefined,
@@ -13,6 +13,7 @@ import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
13
13
  import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
14
14
 
15
15
  import { IProject } from "../../transformers/IProject";
16
+ import { TransformerError } from "../../transformers/TransformerError";
16
17
 
17
18
  import { FeatureProgrammer } from "../FeatureProgrammer";
18
19
  import { IsProgrammer } from "../IsProgrammer";
@@ -696,7 +697,7 @@ export namespace MiscCloneProgrammer {
696
697
  prefix: PREFIX,
697
698
  trace: false,
698
699
  path: false,
699
- initializer: initializer(importer.method),
700
+ initializer,
700
701
  decoder: () => decode(project)(config)(importer),
701
702
  objector: {
702
703
  checker: () => IsProgrammer.decode(project)(importer),
@@ -720,27 +721,29 @@ export namespace MiscCloneProgrammer {
720
721
  return config;
721
722
  };
722
723
 
723
- const initializer =
724
- (method: string): FeatureProgrammer.IConfig["initializer"] =>
724
+ const initializer: FeatureProgrammer.IConfig["initializer"] =
725
725
  ({ checker }) =>
726
+ (importer) =>
726
727
  (type) => {
727
728
  const collection = new MetadataCollection();
728
- const meta = MetadataFactory.analyze(checker)({
729
+ const result = MetadataFactory.analyze(checker)({
729
730
  escape: false,
730
731
  constant: true,
731
732
  absorb: true,
732
733
  validate: (meta) => {
734
+ const output: string[] = [];
733
735
  if (meta.natives.some((n) => n === "WeakSet"))
734
- throw new Error(
735
- `Error on ${method}(): WeakSet is not supported.`,
736
- );
736
+ output.push("unable to clone WeakSet");
737
737
  else if (meta.natives.some((n) => n === "WeakMap"))
738
- throw new Error(
739
- `Error on ${method}(): WeakMap is not supported.`,
740
- );
738
+ output.push("unable to clone WeakMap");
739
+ return output;
741
740
  },
742
741
  })(collection)(type);
743
- return [collection, meta];
742
+ if (result.success === false)
743
+ throw TransformerError.from(`typia.misc.${importer.method}`)(
744
+ result.errors,
745
+ );
746
+ return [collection, result.data];
744
747
  };
745
748
 
746
749
  const create_throw_error =
@@ -7,6 +7,7 @@ import { MetadataFactory } from "../../factories/MetadataFactory";
7
7
  import { Metadata } from "../../schemas/metadata/Metadata";
8
8
 
9
9
  import { IProject } from "../../transformers/IProject";
10
+ import { TransformerError } from "../../transformers/TransformerError";
10
11
 
11
12
  import { Atomic } from "../../typings/Atomic";
12
13
 
@@ -14,7 +15,7 @@ import { ArrayUtil } from "../../utils/ArrayUtil";
14
15
 
15
16
  export namespace MiscLiteralsProgrammer {
16
17
  export const write = (project: IProject) => (type: ts.Type) => {
17
- const meta: Metadata = MetadataFactory.analyze(project.checker)({
18
+ const result = MetadataFactory.analyze(project.checker)({
18
19
  escape: true,
19
20
  constant: true,
20
21
  absorb: true,
@@ -24,11 +25,15 @@ export namespace MiscLiteralsProgrammer {
24
25
  .map((c) => c.values.length)
25
26
  .reduce((a, b) => a + b, 0) +
26
27
  meta.atomics.filter((a) => a.type === "boolean").length;
27
- if (0 === length) throw new Error(ErrorMessages.NO);
28
- else if (meta.size() !== length)
29
- throw new Error(ErrorMessages.ONLY);
28
+ if (0 === length) return [ErrorMessages.NO];
29
+ else if (meta.size() !== length) return [ErrorMessages.ONLY];
30
+ return [];
30
31
  },
31
32
  })(new MetadataCollection())(type);
33
+ if (result.success === false)
34
+ throw TransformerError.from(`typia.misc.literals`)(result.errors);
35
+
36
+ const meta: Metadata = result.data;
32
37
  const values: Set<Atomic.Type | null> = new Set([
33
38
  ...ArrayUtil.flat<Atomic.Type>(meta.constants.map((c) => c.values)),
34
39
  ...(meta.atomics.filter((a) => a.type === "boolean").length
@@ -59,6 +64,6 @@ export namespace MiscLiteralsProgrammer {
59
64
  }
60
65
 
61
66
  enum ErrorMessages {
62
- NO = "Error on typia.literals(): no literal type found.",
63
- ONLY = "Error on typia.literals(): only literal type allowed.",
67
+ NO = "no constant literal type found.",
68
+ ONLY = "only constant literal types are allowed.",
64
69
  }
@@ -13,6 +13,7 @@ import { MetadataTuple } from "../../schemas/metadata/MetadataTuple";
13
13
  import { MetadataTupleType } from "../../schemas/metadata/MetadataTupleType";
14
14
 
15
15
  import { IProject } from "../../transformers/IProject";
16
+ import { TransformerError } from "../../transformers/TransformerError";
16
17
 
17
18
  import { FeatureProgrammer } from "../FeatureProgrammer";
18
19
  import { IsProgrammer } from "../IsProgrammer";
@@ -506,14 +507,19 @@ export namespace MiscPruneProgrammer {
506
507
 
507
508
  const initializer: FeatureProgrammer.IConfig["initializer"] =
508
509
  ({ checker }) =>
510
+ (importer) =>
509
511
  (type) => {
510
512
  const collection = new MetadataCollection();
511
- const meta = MetadataFactory.analyze(checker)({
513
+ const result = MetadataFactory.analyze(checker)({
512
514
  escape: false,
513
515
  constant: true,
514
516
  absorb: true,
515
517
  })(collection)(type);
516
- return [collection, meta];
518
+ if (result.success === false)
519
+ throw TransformerError.from(`typia.misc.${importer.method}`)(
520
+ result.errors,
521
+ );
522
+ return [collection, result.data];
517
523
  };
518
524
 
519
525
  const create_throw_error =
@@ -10,6 +10,7 @@ import { TypeFactory } from "../../factories/TypeFactory";
10
10
 
11
11
  import { Metadata } from "../../schemas/metadata/Metadata";
12
12
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
13
+ import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
13
14
  import { MetadataObject } from "../../schemas/metadata/MetadataObject";
14
15
  import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
15
16
 
@@ -529,7 +530,22 @@ export namespace ProtobufDecodeProgrammer {
529
530
  ts.factory.createToken(ts.SyntaxKind.EqualsToken),
530
531
  ts.factory.createIdentifier("entry.value"),
531
532
  ),
532
- })(top, required);
533
+ })(
534
+ MetadataProperty.create({
535
+ ...top,
536
+ key: (() => {
537
+ const key: Metadata = Metadata.initialize();
538
+ key.atomics.push(
539
+ MetadataAtomic.create({
540
+ type: "string",
541
+ tags: [],
542
+ }),
543
+ );
544
+ return key;
545
+ })(),
546
+ }),
547
+ required,
548
+ );
533
549
  };
534
550
 
535
551
  const decode_map =
@@ -10,6 +10,7 @@ import { TypeFactory } from "../../factories/TypeFactory";
10
10
 
11
11
  import { Metadata } from "../../schemas/metadata/Metadata";
12
12
  import { MetadataArray } from "../../schemas/metadata/MetadataArray";
13
+ import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
13
14
  import { MetadataObject } from "../../schemas/metadata/MetadataObject";
14
15
  import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
15
16
 
@@ -364,6 +365,7 @@ export namespace ProtobufEncodeProgrammer {
364
365
  });
365
366
 
366
367
  // RETURNS
368
+ // if (unions.length === 0) console.log(meta.getName());
367
369
  if (unions.length === 1) return wrapper(unions[0]!.value(index));
368
370
  else
369
371
  return wrapper(
@@ -471,7 +473,19 @@ export namespace ProtobufEncodeProgrammer {
471
473
  [],
472
474
  [input],
473
475
  ),
474
- top,
476
+ MetadataProperty.create({
477
+ ...top,
478
+ key: (() => {
479
+ const key: Metadata = Metadata.initialize();
480
+ key.atomics.push(
481
+ MetadataAtomic.create({
482
+ type: "string",
483
+ tags: [],
484
+ }),
485
+ );
486
+ return key;
487
+ })(),
488
+ }),
475
489
  explore,
476
490
  );
477
491
  return ts.factory.createBlock(
@@ -4,7 +4,9 @@ import { MetadataCollection } from "../../factories/MetadataCollection";
4
4
  import { ProtobufFactory } from "../../factories/ProtobufFactory";
5
5
 
6
6
  import { Metadata } from "../../schemas/metadata/Metadata";
7
+ import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
7
8
  import { MetadataObject } from "../../schemas/metadata/MetadataObject";
9
+ import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
8
10
 
9
11
  import { IProject } from "../../transformers/IProject";
10
12
 
@@ -111,7 +113,22 @@ export namespace ProtobufMessageProgrammer {
111
113
  for (const obj of meta.objects)
112
114
  elements.add(
113
115
  is_dynamic_object(obj)
114
- ? decode_map(ptr)(obj.properties[0]!)
116
+ ? decode_map(ptr)(
117
+ MetadataProperty.create({
118
+ ...obj.properties[0]!,
119
+ key: (() => {
120
+ const key: Metadata =
121
+ Metadata.initialize();
122
+ key.atomics.push(
123
+ MetadataAtomic.create({
124
+ type: "string",
125
+ tags: [],
126
+ }),
127
+ );
128
+ return key;
129
+ })(),
130
+ }),
131
+ )
115
132
  : NameEncoder.encode(obj.name),
116
133
  );
117
134
  for (const map of meta.maps) elements.add(decode_map(ptr)(map));
@@ -236,7 +236,7 @@ export class Metadata {
236
236
  arrays: meta.arrays.map((ref) => {
237
237
  const type = dict.arrays.get(ref.name);
238
238
  if (type === undefined)
239
- throw new Error(
239
+ throw new RangeError(
240
240
  `Error on Metadata.from(): failed to find array "${ref.name}".`,
241
241
  );
242
242
  return MetadataArray.create({
@@ -247,7 +247,7 @@ export class Metadata {
247
247
  tuples: meta.tuples.map((t) => {
248
248
  const type = dict.tuples.get(t.name);
249
249
  if (type === undefined)
250
- throw new Error(
250
+ throw new RangeError(
251
251
  `Error on Metadata.from(): failed to find tuple "${t.name}".`,
252
252
  );
253
253
  return MetadataTuple.create({
@@ -258,7 +258,7 @@ export class Metadata {
258
258
  objects: meta.objects.map((name) => {
259
259
  const found = dict.objects.get(name);
260
260
  if (found === undefined)
261
- throw new Error(
261
+ throw new RangeError(
262
262
  `Error on Metadata.from(): failed to find object "${name}".`,
263
263
  );
264
264
  return found;
@@ -266,7 +266,7 @@ export class Metadata {
266
266
  aliases: meta.aliases.map((alias) => {
267
267
  const found = dict.aliases.get(alias);
268
268
  if (found === undefined)
269
- throw new Error(
269
+ throw new RangeError(
270
270
  `Error on Metadata.from(): failed to find alias "${alias}".`,
271
271
  );
272
272
  return found;
package/src/transform.ts CHANGED
@@ -1,11 +1,13 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { FileTransformer } from "./transformers/FileTransformer";
4
+ import { IProject } from "./transformers/IProject";
4
5
  import { ITransformOptions } from "./transformers/ITransformOptions";
5
6
 
6
7
  export const transform = (
7
8
  program: ts.Program,
8
- options?: ITransformOptions,
9
+ options: ITransformOptions | undefined,
10
+ extras: IProject["extras"],
9
11
  ): ts.TransformerFactory<ts.SourceFile> => {
10
12
  const compilerOptions: ts.CompilerOptions = program.getCompilerOptions();
11
13
  const strict: boolean =
@@ -13,15 +15,21 @@ export const transform = (
13
15
  ? !!compilerOptions.strictNullChecks
14
16
  : !!compilerOptions.strict;
15
17
  if (strict === false)
16
- throw new Error(
17
- `Error on "tsconfig.json": typia requires \`compilerOptions.strictNullChecks\` to be true.`,
18
- );
18
+ extras.addDiagnostic({
19
+ category: ts.DiagnosticCategory.Error,
20
+ code: "(typia)" as any,
21
+ file: undefined,
22
+ start: undefined,
23
+ length: undefined,
24
+ messageText: "strict mode is required.",
25
+ });
19
26
  return FileTransformer.transform({
20
27
  program,
21
28
  compilerOptions,
22
29
  checker: program.getTypeChecker(),
23
30
  printer: ts.createPrinter(),
24
- options: options || {},
31
+ options: options ?? {},
32
+ extras,
25
33
  });
26
34
  };
27
35
  export default transform;
@@ -64,7 +64,7 @@ import { ProtobufValidateEncodeTransformer } from "./features/protobuf/ProtobufV
64
64
  export namespace CallExpressionTransformer {
65
65
  export const transform =
66
66
  (project: IProject) =>
67
- (expression: ts.CallExpression): ts.Expression => {
67
+ (expression: ts.CallExpression): ts.Expression | null => {
68
68
  //----
69
69
  // VALIDATIONS
70
70
  //----
@@ -95,7 +95,10 @@ export namespace CallExpressionTransformer {
95
95
  if (functor === undefined) return expression;
96
96
 
97
97
  // RETURNS WITH TRANSFORMATION
98
- return functor()(project)(expression.expression)(expression);
98
+ const result: ts.Expression | null = functor()(project)(
99
+ expression.expression,
100
+ )(expression);
101
+ return result ?? expression;
99
102
  };
100
103
 
101
104
  const isTarget = (location: string): boolean => {
@@ -126,7 +129,7 @@ type Task = (
126
129
  project: IProject,
127
130
  ) => (
128
131
  modulo: ts.LeftHandSideExpression,
129
- ) => (expression: ts.CallExpression) => ts.Expression;
132
+ ) => (expression: ts.CallExpression) => ts.Expression | null;
130
133
 
131
134
  const FUNCTORS: Record<string, Record<string, () => Task>> = {
132
135
  module: {