typia 5.1.6 → 5.2.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 (223) hide show
  1. package/lib/CamelCase.d.ts +32 -0
  2. package/lib/CamelCase.js +3 -0
  3. package/lib/CamelCase.js.map +1 -0
  4. package/lib/PascalCase.d.ts +32 -0
  5. package/lib/PascalCase.js +3 -0
  6. package/lib/PascalCase.js.map +1 -0
  7. package/lib/Primitive.d.ts +1 -1
  8. package/lib/Resolved.d.ts +5 -5
  9. package/lib/SnakeCase.d.ts +34 -0
  10. package/lib/SnakeCase.js +3 -0
  11. package/lib/SnakeCase.js.map +1 -0
  12. package/lib/functional/$convention.d.ts +1 -0
  13. package/lib/functional/$convention.js +63 -0
  14. package/lib/functional/$convention.js.map +1 -0
  15. package/lib/functional/Namespace.js +9 -0
  16. package/lib/functional/Namespace.js.map +1 -1
  17. package/lib/module.d.ts +5 -1
  18. package/lib/module.js +6 -2
  19. package/lib/module.js.map +1 -1
  20. package/lib/notations.d.ts +538 -0
  21. package/lib/notations.js +146 -0
  22. package/lib/notations.js.map +1 -0
  23. package/lib/programmers/helpers/NotationJoiner.d.ts +7 -0
  24. package/lib/programmers/helpers/NotationJoiner.js +85 -0
  25. package/lib/programmers/helpers/NotationJoiner.js.map +1 -0
  26. package/lib/programmers/misc/MiscCloneProgrammer.js +12 -1
  27. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  28. package/lib/programmers/misc/MiscPruneProgrammer.js +2 -1
  29. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  30. package/lib/programmers/notations/NotationAssertGeneralProgrammer.d.ts +5 -0
  31. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js +44 -0
  32. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js.map +1 -0
  33. package/lib/programmers/notations/NotationGeneralProgrammer.d.ts +6 -0
  34. package/lib/programmers/notations/NotationGeneralProgrammer.js +490 -0
  35. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -0
  36. package/lib/programmers/notations/NotationIsGeneralProgrammer.d.ts +5 -0
  37. package/lib/programmers/notations/NotationIsGeneralProgrammer.js +47 -0
  38. package/lib/programmers/notations/NotationIsGeneralProgrammer.js.map +1 -0
  39. package/lib/programmers/notations/NotationValidateGeneralProgrammer.d.ts +5 -0
  40. package/lib/programmers/notations/NotationValidateGeneralProgrammer.js +44 -0
  41. package/lib/programmers/notations/NotationValidateGeneralProgrammer.js.map +1 -0
  42. package/lib/transformers/CallExpressionTransformer.js +99 -16
  43. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  44. package/lib/transformers/features/json/JsonAssertParseTransformer.js +1 -1
  45. package/lib/transformers/features/json/JsonAssertParseTransformer.js.map +1 -1
  46. package/lib/transformers/features/json/JsonAssertStringifyTransformer.js +1 -1
  47. package/lib/transformers/features/json/JsonAssertStringifyTransformer.js.map +1 -1
  48. package/lib/transformers/features/json/JsonCreateAssertParseTransformer.js +1 -1
  49. package/lib/transformers/features/json/JsonCreateAssertParseTransformer.js.map +1 -1
  50. package/lib/transformers/features/json/JsonCreateAssertStringifyTransformer.js +1 -1
  51. package/lib/transformers/features/json/JsonCreateAssertStringifyTransformer.js.map +1 -1
  52. package/lib/transformers/features/json/JsonCreateIsParseTransformer.js +1 -1
  53. package/lib/transformers/features/json/JsonCreateIsParseTransformer.js.map +1 -1
  54. package/lib/transformers/features/json/JsonCreateIsStringifyTransformer.js +1 -1
  55. package/lib/transformers/features/json/JsonCreateIsStringifyTransformer.js.map +1 -1
  56. package/lib/transformers/features/json/JsonCreateStringifyTransformer.js +1 -1
  57. package/lib/transformers/features/json/JsonCreateStringifyTransformer.js.map +1 -1
  58. package/lib/transformers/features/json/JsonCreateValidateParseTransformer.js +1 -1
  59. package/lib/transformers/features/json/JsonCreateValidateParseTransformer.js.map +1 -1
  60. package/lib/transformers/features/json/JsonCreateValidateStringifyProgrammer.js +1 -1
  61. package/lib/transformers/features/json/JsonCreateValidateStringifyProgrammer.js.map +1 -1
  62. package/lib/transformers/features/json/JsonIsParseTransformer.js +1 -1
  63. package/lib/transformers/features/json/JsonIsParseTransformer.js.map +1 -1
  64. package/lib/transformers/features/json/JsonIsStringifyTransformer.js +1 -1
  65. package/lib/transformers/features/json/JsonIsStringifyTransformer.js.map +1 -1
  66. package/lib/transformers/features/json/JsonStringifyTransformer.js +1 -1
  67. package/lib/transformers/features/json/JsonStringifyTransformer.js.map +1 -1
  68. package/lib/transformers/features/json/JsonValidateParseTransformer.js +1 -1
  69. package/lib/transformers/features/json/JsonValidateParseTransformer.js.map +1 -1
  70. package/lib/transformers/features/json/JsonValidateStringifyTransformer.js +1 -1
  71. package/lib/transformers/features/json/JsonValidateStringifyTransformer.js.map +1 -1
  72. package/lib/transformers/features/misc/MiscAssertCloneTransformer.js +1 -1
  73. package/lib/transformers/features/misc/MiscAssertCloneTransformer.js.map +1 -1
  74. package/lib/transformers/features/misc/MiscAssertPruneTransformer.js +1 -1
  75. package/lib/transformers/features/misc/MiscAssertPruneTransformer.js.map +1 -1
  76. package/lib/transformers/features/misc/MiscCloneTransformer.js +1 -1
  77. package/lib/transformers/features/misc/MiscCloneTransformer.js.map +1 -1
  78. package/lib/transformers/features/misc/MiscCreateAssertCloneTransformer.js +1 -1
  79. package/lib/transformers/features/misc/MiscCreateAssertCloneTransformer.js.map +1 -1
  80. package/lib/transformers/features/misc/MiscCreateAssertPruneTransformer.js +1 -1
  81. package/lib/transformers/features/misc/MiscCreateAssertPruneTransformer.js.map +1 -1
  82. package/lib/transformers/features/misc/MiscCreateCloneTransformer.js +1 -1
  83. package/lib/transformers/features/misc/MiscCreateCloneTransformer.js.map +1 -1
  84. package/lib/transformers/features/misc/MiscCreateIsCloneTransformer.js +1 -1
  85. package/lib/transformers/features/misc/MiscCreateIsCloneTransformer.js.map +1 -1
  86. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js +1 -1
  87. package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js.map +1 -1
  88. package/lib/transformers/features/misc/MiscCreatePruneTransformer.js +1 -1
  89. package/lib/transformers/features/misc/MiscCreatePruneTransformer.js.map +1 -1
  90. package/lib/transformers/features/misc/MiscCreateValidateCloneTransformer.js +1 -1
  91. package/lib/transformers/features/misc/MiscCreateValidateCloneTransformer.js.map +1 -1
  92. package/lib/transformers/features/misc/MiscCreateValidatePruneTransformer.js +1 -1
  93. package/lib/transformers/features/misc/MiscCreateValidatePruneTransformer.js.map +1 -1
  94. package/lib/transformers/features/misc/MiscIsCloneTransformer.js +1 -1
  95. package/lib/transformers/features/misc/MiscIsCloneTransformer.js.map +1 -1
  96. package/lib/transformers/features/misc/MiscIsPruneTransformer.js +1 -1
  97. package/lib/transformers/features/misc/MiscIsPruneTransformer.js.map +1 -1
  98. package/lib/transformers/features/misc/MiscPruneTransformer.js +1 -1
  99. package/lib/transformers/features/misc/MiscPruneTransformer.js.map +1 -1
  100. package/lib/transformers/features/misc/MiscValidateCloneTransformer.js +1 -1
  101. package/lib/transformers/features/misc/MiscValidateCloneTransformer.js.map +1 -1
  102. package/lib/transformers/features/misc/MiscValidatePruneTransformer.js +1 -1
  103. package/lib/transformers/features/misc/MiscValidatePruneTransformer.js.map +1 -1
  104. package/lib/transformers/features/notations/NotationAssertGeneralTransformer.d.ts +4 -0
  105. package/lib/transformers/features/notations/NotationAssertGeneralTransformer.js +15 -0
  106. package/lib/transformers/features/notations/NotationAssertGeneralTransformer.js.map +1 -0
  107. package/lib/transformers/features/notations/NotationCreateAssertGeneralTransformer.d.ts +4 -0
  108. package/lib/transformers/features/notations/NotationCreateAssertGeneralTransformer.js +15 -0
  109. package/lib/transformers/features/notations/NotationCreateAssertGeneralTransformer.js.map +1 -0
  110. package/lib/transformers/features/notations/NotationCreateGeneralTransformer.d.ts +4 -0
  111. package/lib/transformers/features/notations/NotationCreateGeneralTransformer.js +15 -0
  112. package/lib/transformers/features/notations/NotationCreateGeneralTransformer.js.map +1 -0
  113. package/lib/transformers/features/notations/NotationCreateIsGeneralTransformer.d.ts +4 -0
  114. package/lib/transformers/features/notations/NotationCreateIsGeneralTransformer.js +15 -0
  115. package/lib/transformers/features/notations/NotationCreateIsGeneralTransformer.js.map +1 -0
  116. package/lib/transformers/features/notations/NotationCreateValidateGeneralTransformer.d.ts +4 -0
  117. package/lib/transformers/features/notations/NotationCreateValidateGeneralTransformer.js +15 -0
  118. package/lib/transformers/features/notations/NotationCreateValidateGeneralTransformer.js.map +1 -0
  119. package/lib/transformers/features/notations/NotationGeneralTransformer.d.ts +4 -0
  120. package/lib/transformers/features/notations/NotationGeneralTransformer.js +14 -0
  121. package/lib/transformers/features/notations/NotationGeneralTransformer.js.map +1 -0
  122. package/lib/transformers/features/notations/NotationIsGeneralTransformer.d.ts +4 -0
  123. package/lib/transformers/features/notations/NotationIsGeneralTransformer.js +15 -0
  124. package/lib/transformers/features/notations/NotationIsGeneralTransformer.js.map +1 -0
  125. package/lib/transformers/features/notations/NotationValidateGeneralTransformer.d.ts +4 -0
  126. package/lib/transformers/features/notations/NotationValidateGeneralTransformer.js +15 -0
  127. package/lib/transformers/features/notations/NotationValidateGeneralTransformer.js.map +1 -0
  128. package/lib/transformers/features/protobuf/{CreateProtobufAssertDecodeTransformer.d.ts → ProtobufCreateAssertDecodeTransformer.d.ts} +1 -1
  129. package/lib/transformers/features/protobuf/{CreateProtobufAssertDecodeTransformer.js → ProtobufCreateAssertDecodeTransformer.js} +6 -6
  130. package/lib/transformers/features/protobuf/{CreateProtobufAssertEncodeTransformer.js.map → ProtobufCreateAssertDecodeTransformer.js.map} +1 -1
  131. package/lib/transformers/features/protobuf/{CreateProtobufAssertEncodeTransformer.d.ts → ProtobufCreateAssertEncodeTransformer.d.ts} +1 -1
  132. package/lib/transformers/features/protobuf/{CreateProtobufAssertEncodeTransformer.js → ProtobufCreateAssertEncodeTransformer.js} +6 -6
  133. package/lib/transformers/features/protobuf/{CreateProtobufAssertDecodeTransformer.js.map → ProtobufCreateAssertEncodeTransformer.js.map} +1 -1
  134. package/lib/transformers/features/protobuf/{CreateProtobufDecodeTransformer.d.ts → ProtobufCreateDecodeTransformer.d.ts} +1 -1
  135. package/lib/transformers/features/protobuf/{CreateProtobufDecodeTransformer.js → ProtobufCreateDecodeTransformer.js} +6 -6
  136. package/lib/transformers/features/protobuf/{CreateProtobufDecodeTransformer.js.map → ProtobufCreateDecodeTransformer.js.map} +1 -1
  137. package/lib/transformers/features/protobuf/{CreateProtobufEncodeTransformer.d.ts → ProtobufCreateEncodeTransformer.d.ts} +1 -1
  138. package/lib/transformers/features/protobuf/{CreateProtobufEncodeTransformer.js → ProtobufCreateEncodeTransformer.js} +6 -6
  139. package/lib/transformers/features/protobuf/{CreateProtobufEncodeTransformer.js.map → ProtobufCreateEncodeTransformer.js.map} +1 -1
  140. package/lib/transformers/features/protobuf/{CreateProtobufIsDecodeTransformer.d.ts → ProtobufCreateIsDecodeTransformer.d.ts} +1 -1
  141. package/lib/transformers/features/protobuf/{CreateProtobufIsDecodeTransformer.js → ProtobufCreateIsDecodeTransformer.js} +6 -6
  142. package/lib/transformers/features/protobuf/{CreateProtobufIsDecodeTransformer.js.map → ProtobufCreateIsDecodeTransformer.js.map} +1 -1
  143. package/lib/transformers/features/protobuf/{CreateProtobufIsEncodeTransformer.d.ts → ProtobufCreateIsEncodeTransformer.d.ts} +1 -1
  144. package/lib/transformers/features/protobuf/{CreateProtobufIsEncodeTransformer.js → ProtobufCreateIsEncodeTransformer.js} +6 -6
  145. package/lib/transformers/features/protobuf/{CreateProtobufIsEncodeTransformer.js.map → ProtobufCreateIsEncodeTransformer.js.map} +1 -1
  146. package/lib/transformers/features/protobuf/{CreateProtobufValidateDecodeTransformer.d.ts → ProtobufCreateValidateDecodeTransformer.d.ts} +1 -1
  147. package/lib/transformers/features/protobuf/{CreateProtobufValidateDecodeTransformer.js → ProtobufCreateValidateDecodeTransformer.js} +6 -6
  148. package/lib/transformers/features/protobuf/{CreateProtobufValidateDecodeTransformer.js.map → ProtobufCreateValidateDecodeTransformer.js.map} +1 -1
  149. package/lib/transformers/features/protobuf/{CreateProtobufValidateEncodeTransformer.d.ts → ProtobufCreateValidateEncodeTransformer.d.ts} +1 -1
  150. package/lib/transformers/features/protobuf/{CreateProtobufValidateEncodeTransformer.js → ProtobufCreateValidateEncodeTransformer.js} +6 -6
  151. package/lib/transformers/features/protobuf/{CreateProtobufValidateEncodeTransformer.js.map → ProtobufCreateValidateEncodeTransformer.js.map} +1 -1
  152. package/lib/utils/NamingConvention.d.ts +5 -0
  153. package/lib/utils/NamingConvention.js +115 -0
  154. package/lib/utils/NamingConvention.js.map +1 -0
  155. package/lib/utils/StringUtil.d.ts +3 -0
  156. package/lib/utils/StringUtil.js +10 -0
  157. package/lib/utils/StringUtil.js.map +1 -0
  158. package/package.json +2 -1
  159. package/src/CamelCase.ts +116 -0
  160. package/src/PascalCase.ts +116 -0
  161. package/src/Primitive.ts +135 -135
  162. package/src/Resolved.ts +116 -116
  163. package/src/SnakeCase.ts +156 -0
  164. package/src/functional/$convention.ts +40 -0
  165. package/src/functional/Namespace.ts +164 -142
  166. package/src/module.ts +662 -657
  167. package/src/notations.ts +855 -0
  168. package/src/programmers/helpers/NotationJoiner.ts +146 -0
  169. package/src/programmers/misc/MiscCloneProgrammer.ts +790 -774
  170. package/src/programmers/misc/MiscPruneProgrammer.ts +552 -550
  171. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +72 -0
  172. package/src/programmers/notations/NotationGeneralProgrammer.ts +720 -0
  173. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +79 -0
  174. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +88 -0
  175. package/src/transformers/CallExpressionTransformer.ts +380 -289
  176. package/src/transformers/features/json/JsonAssertParseTransformer.ts +10 -10
  177. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +10 -10
  178. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +12 -10
  179. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +12 -12
  180. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +9 -9
  181. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +12 -10
  182. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +9 -9
  183. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +12 -10
  184. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +12 -12
  185. package/src/transformers/features/json/JsonIsParseTransformer.ts +9 -9
  186. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +10 -10
  187. package/src/transformers/features/json/JsonStringifyTransformer.ts +9 -9
  188. package/src/transformers/features/json/JsonValidateParseTransformer.ts +10 -10
  189. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +10 -10
  190. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +10 -10
  191. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +10 -10
  192. package/src/transformers/features/misc/MiscCloneTransformer.ts +9 -9
  193. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +12 -10
  194. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +12 -10
  195. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +9 -9
  196. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +9 -9
  197. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +9 -9
  198. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +9 -9
  199. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +12 -10
  200. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +12 -10
  201. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +9 -9
  202. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +9 -9
  203. package/src/transformers/features/misc/MiscPruneTransformer.ts +9 -9
  204. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +10 -10
  205. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +10 -10
  206. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +15 -0
  207. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +15 -0
  208. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +15 -0
  209. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +15 -0
  210. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +17 -0
  211. package/src/transformers/features/notations/NotationGeneralTransformer.ts +11 -0
  212. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +15 -0
  213. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +17 -0
  214. package/src/transformers/features/protobuf/{CreateProtobufAssertDecodeTransformer.ts → ProtobufCreateAssertDecodeTransformer.ts} +12 -12
  215. package/src/transformers/features/protobuf/{CreateProtobufAssertEncodeTransformer.ts → ProtobufCreateAssertEncodeTransformer.ts} +12 -12
  216. package/src/transformers/features/protobuf/{CreateProtobufDecodeTransformer.ts → ProtobufCreateDecodeTransformer.ts} +9 -9
  217. package/src/transformers/features/protobuf/{CreateProtobufEncodeTransformer.ts → ProtobufCreateEncodeTransformer.ts} +9 -9
  218. package/src/transformers/features/protobuf/{CreateProtobufIsDecodeTransformer.ts → ProtobufCreateIsDecodeTransformer.ts} +12 -12
  219. package/src/transformers/features/protobuf/{CreateProtobufIsEncodeTransformer.ts → ProtobufCreateIsEncodeTransformer.ts} +12 -12
  220. package/src/transformers/features/protobuf/{CreateProtobufValidateDecodeTransformer.ts → ProtobufCreateValidateDecodeTransformer.ts} +12 -12
  221. package/src/transformers/features/protobuf/{CreateProtobufValidateEncodeTransformer.ts → ProtobufCreateValidateEncodeTransformer.ts} +12 -12
  222. package/src/utils/NamingConvention.ts +91 -0
  223. package/src/utils/StringUtil.ts +4 -0
@@ -1,289 +1,380 @@
1
- import path from "path";
2
- import ts from "typescript";
3
-
4
- import { IProject } from "./IProject";
5
- import { AssertTransformer } from "./features/AssertTransformer";
6
- import { CreateAssertTransformer } from "./features/CreateAssertTransformer";
7
- import { CreateIsTransformer } from "./features/CreateIsTransformer";
8
- import { CreateRandomTransformer } from "./features/CreateRandomTransformer";
9
- import { CreateValidateTransformer } from "./features/CreateValidateTransformer";
10
- import { IsTransformer } from "./features/IsTransformer";
11
- import { RandomTransformer } from "./features/RandomTransformer";
12
- import { ValidateTransformer } from "./features/ValidateTransformer";
13
- import { CreateHttpAssertHeadersTransformer } from "./features/http/CreateHttpAssertHeadersTransformer";
14
- import { CreateHttpAssertQueryTransformer } from "./features/http/CreateHttpAssertQueryTransformer";
15
- import { CreateHttpHeadersTransformer } from "./features/http/CreateHttpHeadersTransformer";
16
- import { CreateHttpIsHeadersTransformer } from "./features/http/CreateHttpIsHeadersTransformer";
17
- import { CreateHttpIsQueryTransformer } from "./features/http/CreateHttpIsQueryTransformer";
18
- import { CreateHttpParameterTransformer } from "./features/http/CreateHttpParameterTransformer";
19
- import { CreateHttpQueryTransformer } from "./features/http/CreateHttpQueryTransformer";
20
- import { CreateHttpValidateHeadersTransformer } from "./features/http/CreateHttpValidateHeadersTransformer";
21
- import { CreateHttpValidateQueryTransformer } from "./features/http/CreateHttpValidateQueryTransformer";
22
- import { HttpAssertHeadersTransformer } from "./features/http/HttpAssertHeadersTransformer";
23
- import { HttpAssertQueryTransformer } from "./features/http/HttpAssertQueryTransformer";
24
- import { HttpHeadersTransformer } from "./features/http/HttpHeadersTransformer";
25
- import { HttpIsHeadersTransformer } from "./features/http/HttpIsHeadersTransformer";
26
- import { HttpIsQueryTransformer } from "./features/http/HttpIsQueryTransformer";
27
- import { HttpParameterTransformer } from "./features/http/HttpParameterTransformer";
28
- import { HttpQueryTransformer } from "./features/http/HttpQueryTransformer";
29
- import { HttpValidateHeadersTransformer } from "./features/http/HttpValidateHeadersTransformer";
30
- import { HttpValidateQueryTransformer } from "./features/http/HttpValidateQueryTransformer";
31
- import { JsonApplicationTransformer } from "./features/json/JsonApplicationTransformer";
32
- import { JsonAssertParseTransformer } from "./features/json/JsonAssertParseTransformer";
33
- import { JsonAssertStringifyTransformer } from "./features/json/JsonAssertStringifyTransformer";
34
- import { JsonCreateAssertParseTransformer } from "./features/json/JsonCreateAssertParseTransformer";
35
- import { JsonCreateAssertStringifyTransformer } from "./features/json/JsonCreateAssertStringifyTransformer";
36
- import { JsonCreateIsParseTransformer } from "./features/json/JsonCreateIsParseTransformer";
37
- import { JsonCreateIsStringifyTransformer } from "./features/json/JsonCreateIsStringifyTransformer";
38
- import { JsonCreateStringifyTransformer } from "./features/json/JsonCreateStringifyTransformer";
39
- import { JsonCreateValidateParseTransformer } from "./features/json/JsonCreateValidateParseTransformer";
40
- import { JsonCreateValidateStringifyTransformer } from "./features/json/JsonCreateValidateStringifyProgrammer";
41
- import { JsonIsParseTransformer } from "./features/json/JsonIsParseTransformer";
42
- import { JsonIsStringifyTransformer } from "./features/json/JsonIsStringifyTransformer";
43
- import { JsonStringifyTransformer } from "./features/json/JsonStringifyTransformer";
44
- import { JsonValidateParseTransformer } from "./features/json/JsonValidateParseTransformer";
45
- import { JsonValidateStringifyTransformer } from "./features/json/JsonValidateStringifyTransformer";
46
- import { MetadataTransformer } from "./features/misc/MetadataTransformer";
47
- import { MiscAssertCloneTransformer } from "./features/misc/MiscAssertCloneTransformer";
48
- import { MiscAssertPruneTransformer } from "./features/misc/MiscAssertPruneTransformer";
49
- import { MiscCloneTransformer } from "./features/misc/MiscCloneTransformer";
50
- import { MiscCreateAssertCloneTransformer } from "./features/misc/MiscCreateAssertCloneTransformer";
51
- import { MiscCreateAssertPruneTransformer } from "./features/misc/MiscCreateAssertPruneTransformer";
52
- import { MiscCreateCloneTransformer } from "./features/misc/MiscCreateCloneTransformer";
53
- import { MiscCreateIsCloneTransformer } from "./features/misc/MiscCreateIsCloneTransformer";
54
- import { MiscCreateIsPruneTransformer } from "./features/misc/MiscCreateIsPruneTransformer";
55
- import { MiscCreatePruneTransformer } from "./features/misc/MiscCreatePruneTransformer";
56
- import { MiscCreateValidateCloneTransformer } from "./features/misc/MiscCreateValidateCloneTransformer";
57
- import { MiscCreateValidatePruneTransformer } from "./features/misc/MiscCreateValidatePruneTransformer";
58
- import { MiscIsCloneTransformer } from "./features/misc/MiscIsCloneTransformer";
59
- import { MiscIsPruneTransformer } from "./features/misc/MiscIsPruneTransformer";
60
- import { MiscLiteralsTransformer } from "./features/misc/MiscLiteralsTransformer";
61
- import { MiscPruneTransformer } from "./features/misc/MiscPruneTransformer";
62
- import { MiscValidateCloneTransformer } from "./features/misc/MiscValidateCloneTransformer";
63
- import { MiscValidatePruneTransformer } from "./features/misc/MiscValidatePruneTransformer";
64
- import { CreateProtobufAssertDecodeTransformer } from "./features/protobuf/CreateProtobufAssertDecodeTransformer";
65
- import { CreateProtobufAssertEncodeTransformer } from "./features/protobuf/CreateProtobufAssertEncodeTransformer";
66
- import { CreateProtobufDecodeTransformer } from "./features/protobuf/CreateProtobufDecodeTransformer";
67
- import { CreateProtobufEncodeTransformer } from "./features/protobuf/CreateProtobufEncodeTransformer";
68
- import { CreateProtobufIsDecodeTransformer } from "./features/protobuf/CreateProtobufIsDecodeTransformer";
69
- import { CreateProtobufIsEncodeTransformer } from "./features/protobuf/CreateProtobufIsEncodeTransformer";
70
- import { CreateProtobufValidateDecodeTransformer } from "./features/protobuf/CreateProtobufValidateDecodeTransformer";
71
- import { CreateProtobufValidateEncodeTransformer } from "./features/protobuf/CreateProtobufValidateEncodeTransformer";
72
- import { ProtobufAssertDecodeTransformer } from "./features/protobuf/ProtobufAssertDecodeTransformer";
73
- import { ProtobufAssertEncodeTransformer } from "./features/protobuf/ProtobufAssertEncodeTransformer";
74
- import { ProtobufDecodeTransformer } from "./features/protobuf/ProtobufDecodeTransformer";
75
- import { ProtobufEncodeTransformer } from "./features/protobuf/ProtobufEncodeTransformer";
76
- import { ProtobufIsDecodeTransformer } from "./features/protobuf/ProtobufIsDecodeTransformer";
77
- import { ProtobufIsEncodeTransformer } from "./features/protobuf/ProtobufIsEncodeTransformer";
78
- import { ProtobufMessageTransformer } from "./features/protobuf/ProtobufMessageTransformer";
79
- import { ProtobufValidateDecodeTransformer } from "./features/protobuf/ProtobufValidateDecodeTransformer";
80
- import { ProtobufValidateEncodeTransformer } from "./features/protobuf/ProtobufValidateEncodeTransformer";
81
-
82
- export namespace CallExpressionTransformer {
83
- export const transform =
84
- (project: IProject) =>
85
- (expression: ts.CallExpression): ts.Expression | null => {
86
- //----
87
- // VALIDATIONS
88
- //----
89
- // SIGNATURE DECLARATION
90
- const declaration: ts.Declaration | undefined =
91
- project.checker.getResolvedSignature(expression)?.declaration;
92
- if (!declaration) return expression;
93
-
94
- // FILE PATH
95
- const location: string = path.resolve(
96
- declaration.getSourceFile().fileName,
97
- );
98
- if (isTarget(location) === false) return expression;
99
-
100
- //----
101
- // TRANSFORMATION
102
- //----
103
- // FUNCTION NAME
104
- const module: string = location
105
- .split(path.sep)
106
- .at(-1)!
107
- .split(".")[0]!;
108
- const { name } =
109
- project.checker.getTypeAtLocation(declaration).symbol;
110
-
111
- // FIND TRANSFORMER
112
- const functor: (() => Task) | undefined = FUNCTORS[module]?.[name];
113
- if (functor === undefined) return expression;
114
-
115
- // RETURNS WITH TRANSFORMATION
116
- const result: ts.Expression | null = functor()(project)(
117
- expression.expression,
118
- )(expression);
119
- return result ?? expression;
120
- };
121
-
122
- const isTarget = (location: string): boolean => {
123
- const files: string[] = Object.keys(FUNCTORS);
124
- return files.some(
125
- (f) =>
126
- location.includes(
127
- path.join("node_modules", "typia", "lib", `${f}.d.ts`),
128
- ) ||
129
- location ===
130
- path.resolve(path.join(__dirname, "..", `${f}.ts`)) ||
131
- location ===
132
- path.resolve(
133
- path.join(
134
- __dirname,
135
- "..",
136
- "..",
137
- "..",
138
- "src",
139
- `${f}.ts`,
140
- ),
141
- ),
142
- );
143
- };
144
- }
145
-
146
- type Task = (
147
- project: IProject,
148
- ) => (
149
- modulo: ts.LeftHandSideExpression,
150
- ) => (expression: ts.CallExpression) => ts.Expression | null;
151
-
152
- const FUNCTORS: Record<string, Record<string, () => Task>> = {
153
- module: {
154
- // BASIC
155
- assert: () => AssertTransformer.transform(false),
156
- assertType: () => AssertTransformer.transform(false),
157
- is: () => IsTransformer.transform(false),
158
- validate: () => ValidateTransformer.transform(false),
159
-
160
- // STRICT
161
- assertEquals: () => AssertTransformer.transform(true),
162
- equals: () => IsTransformer.transform(true),
163
- validateEquals: () => ValidateTransformer.transform(true),
164
-
165
- // RANDOM + INTERNAL
166
- random: () => RandomTransformer.transform,
167
- metadata: () => (P) => () => MetadataTransformer.transform(P),
168
-
169
- // FACTORIES
170
- createAssert: () => CreateAssertTransformer.transform(false),
171
- createAssertType: () => CreateAssertTransformer.transform(false),
172
- createIs: () => CreateIsTransformer.transform(false),
173
- createValidate: () => CreateValidateTransformer.transform(false),
174
- createAssertEquals: () => CreateAssertTransformer.transform(true),
175
- createEquals: () => CreateIsTransformer.transform(true),
176
- createValidateEquals: () => CreateValidateTransformer.transform(true),
177
- createRandom: () => CreateRandomTransformer.transform,
178
- },
179
- http: {
180
- // HEADERS
181
- headers: () => HttpHeadersTransformer.transform,
182
- isHeaders: () => HttpIsHeadersTransformer.transform,
183
- assertHeaders: () => HttpAssertHeadersTransformer.transform,
184
- validateHeaders: () => HttpValidateHeadersTransformer.transform,
185
-
186
- // PARAMETER
187
- parameter: () => HttpParameterTransformer.transform,
188
-
189
- // QUERY
190
- query: () => HttpQueryTransformer.transform,
191
- isQuery: () => HttpIsQueryTransformer.transform,
192
- assertQuery: () => HttpAssertQueryTransformer.transform,
193
- validateQuery: () => HttpValidateQueryTransformer.transform,
194
-
195
- // FACTORIES
196
- createHeaders: () => CreateHttpHeadersTransformer.transform,
197
- createIsHeaders: () => CreateHttpIsHeadersTransformer.transform,
198
- createAssertHeaders: () => CreateHttpAssertHeadersTransformer.transform,
199
- createValidateHeaders: () =>
200
- CreateHttpValidateHeadersTransformer.transform,
201
- createParameter: () => CreateHttpParameterTransformer.transform,
202
- createQuery: () => CreateHttpQueryTransformer.transform,
203
- createIsQuery: () => CreateHttpIsQueryTransformer.transform,
204
- createAssertQuery: () => CreateHttpAssertQueryTransformer.transform,
205
- createValidateQuery: () => CreateHttpValidateQueryTransformer.transform,
206
- },
207
- json: {
208
- // SCHEMA
209
- application: () => (P) => () => JsonApplicationTransformer.transform(P),
210
-
211
- // PARSER
212
- isParse: () => JsonIsParseTransformer.transform,
213
- assertParse: () => JsonAssertParseTransformer.transform,
214
- validateParse: () => JsonValidateParseTransformer.transform,
215
-
216
- // STRINGIFY
217
- stringify: () => JsonStringifyTransformer.transform,
218
- assertStringify: () => JsonAssertStringifyTransformer.transform,
219
- isStringify: () => JsonIsStringifyTransformer.transform,
220
- validateStringify: () => JsonValidateStringifyTransformer.transform,
221
-
222
- // FACTORIES
223
- createIsParse: () => JsonCreateIsParseTransformer.transform,
224
- createAssertParse: () => JsonCreateAssertParseTransformer.transform,
225
- createValidateParse: () => JsonCreateValidateParseTransformer.transform,
226
- createStringify: () => JsonCreateStringifyTransformer.transform,
227
- createAssertStringify: () =>
228
- JsonCreateAssertStringifyTransformer.transform,
229
- createIsStringify: () => JsonCreateIsStringifyTransformer.transform,
230
- createValidateStringify: () =>
231
- JsonCreateValidateStringifyTransformer.transform,
232
- },
233
- protobuf: {
234
- // SCHEMA
235
- message: () => ProtobufMessageTransformer.transform,
236
-
237
- // ENCODE
238
- encode: () => ProtobufEncodeTransformer.transform,
239
- assertEncode: () => ProtobufAssertEncodeTransformer.transform,
240
- isEncode: () => ProtobufIsEncodeTransformer.transform,
241
- validateEncode: () => ProtobufValidateEncodeTransformer.transform,
242
-
243
- // DECODE
244
- decode: () => ProtobufDecodeTransformer.transform,
245
- assertDecode: () => ProtobufAssertDecodeTransformer.transform,
246
- isDecode: () => ProtobufIsDecodeTransformer.transform,
247
- validateDecode: () => ProtobufValidateDecodeTransformer.transform,
248
-
249
- // FACTORIES
250
- createEncode: () => CreateProtobufEncodeTransformer.transform,
251
- createAssertEncode: () =>
252
- CreateProtobufAssertEncodeTransformer.transform,
253
- createIsEncode: () => CreateProtobufIsEncodeTransformer.transform,
254
- createValidateEncode: () =>
255
- CreateProtobufValidateEncodeTransformer.transform,
256
- createDecode: () => CreateProtobufDecodeTransformer.transform,
257
- createAssertDecode: () =>
258
- CreateProtobufAssertDecodeTransformer.transform,
259
- createIsDecode: () => CreateProtobufIsDecodeTransformer.transform,
260
- createValidateDecode: () =>
261
- CreateProtobufValidateDecodeTransformer.transform,
262
- },
263
- misc: {
264
- literals: () => (project) => () =>
265
- MiscLiteralsTransformer.transform(project),
266
-
267
- // CLONE
268
- clone: () => MiscCloneTransformer.transform,
269
- assertClone: () => MiscAssertCloneTransformer.transform,
270
- isClone: () => MiscIsCloneTransformer.transform,
271
- validateClone: () => MiscValidateCloneTransformer.transform,
272
-
273
- // PRUNE
274
- prune: () => MiscPruneTransformer.transform,
275
- assertPrune: () => MiscAssertPruneTransformer.transform,
276
- isPrune: () => MiscIsPruneTransformer.transform,
277
- validatePrune: () => MiscValidatePruneTransformer.transform,
278
-
279
- // FACTORIES
280
- createClone: () => MiscCreateCloneTransformer.transform,
281
- createAssertClone: () => MiscCreateAssertCloneTransformer.transform,
282
- createIsClone: () => MiscCreateIsCloneTransformer.transform,
283
- createValidateClone: () => MiscCreateValidateCloneTransformer.transform,
284
- createPrune: () => MiscCreatePruneTransformer.transform,
285
- createAssertPrune: () => MiscCreateAssertPruneTransformer.transform,
286
- createIsPrune: () => MiscCreateIsPruneTransformer.transform,
287
- createValidatePrune: () => MiscCreateValidatePruneTransformer.transform,
288
- },
289
- };
1
+ import path from "path";
2
+ import ts from "typescript";
3
+
4
+ import { NamingConvention } from "../utils/NamingConvention";
5
+
6
+ import { IProject } from "./IProject";
7
+ import { AssertTransformer } from "./features/AssertTransformer";
8
+ import { CreateAssertTransformer } from "./features/CreateAssertTransformer";
9
+ import { CreateIsTransformer } from "./features/CreateIsTransformer";
10
+ import { CreateRandomTransformer } from "./features/CreateRandomTransformer";
11
+ import { CreateValidateTransformer } from "./features/CreateValidateTransformer";
12
+ import { IsTransformer } from "./features/IsTransformer";
13
+ import { RandomTransformer } from "./features/RandomTransformer";
14
+ import { ValidateTransformer } from "./features/ValidateTransformer";
15
+ import { CreateHttpAssertHeadersTransformer } from "./features/http/CreateHttpAssertHeadersTransformer";
16
+ import { CreateHttpAssertQueryTransformer } from "./features/http/CreateHttpAssertQueryTransformer";
17
+ import { CreateHttpHeadersTransformer } from "./features/http/CreateHttpHeadersTransformer";
18
+ import { CreateHttpIsHeadersTransformer } from "./features/http/CreateHttpIsHeadersTransformer";
19
+ import { CreateHttpIsQueryTransformer } from "./features/http/CreateHttpIsQueryTransformer";
20
+ import { CreateHttpParameterTransformer } from "./features/http/CreateHttpParameterTransformer";
21
+ import { CreateHttpQueryTransformer } from "./features/http/CreateHttpQueryTransformer";
22
+ import { CreateHttpValidateHeadersTransformer } from "./features/http/CreateHttpValidateHeadersTransformer";
23
+ import { CreateHttpValidateQueryTransformer } from "./features/http/CreateHttpValidateQueryTransformer";
24
+ import { HttpAssertHeadersTransformer } from "./features/http/HttpAssertHeadersTransformer";
25
+ import { HttpAssertQueryTransformer } from "./features/http/HttpAssertQueryTransformer";
26
+ import { HttpHeadersTransformer } from "./features/http/HttpHeadersTransformer";
27
+ import { HttpIsHeadersTransformer } from "./features/http/HttpIsHeadersTransformer";
28
+ import { HttpIsQueryTransformer } from "./features/http/HttpIsQueryTransformer";
29
+ import { HttpParameterTransformer } from "./features/http/HttpParameterTransformer";
30
+ import { HttpQueryTransformer } from "./features/http/HttpQueryTransformer";
31
+ import { HttpValidateHeadersTransformer } from "./features/http/HttpValidateHeadersTransformer";
32
+ import { HttpValidateQueryTransformer } from "./features/http/HttpValidateQueryTransformer";
33
+ import { JsonApplicationTransformer } from "./features/json/JsonApplicationTransformer";
34
+ import { JsonAssertParseTransformer } from "./features/json/JsonAssertParseTransformer";
35
+ import { JsonAssertStringifyTransformer } from "./features/json/JsonAssertStringifyTransformer";
36
+ import { JsonCreateAssertParseTransformer } from "./features/json/JsonCreateAssertParseTransformer";
37
+ import { JsonCreateAssertStringifyTransformer } from "./features/json/JsonCreateAssertStringifyTransformer";
38
+ import { JsonCreateIsParseTransformer } from "./features/json/JsonCreateIsParseTransformer";
39
+ import { JsonCreateIsStringifyTransformer } from "./features/json/JsonCreateIsStringifyTransformer";
40
+ import { JsonCreateStringifyTransformer } from "./features/json/JsonCreateStringifyTransformer";
41
+ import { JsonCreateValidateParseTransformer } from "./features/json/JsonCreateValidateParseTransformer";
42
+ import { JsonCreateValidateStringifyTransformer } from "./features/json/JsonCreateValidateStringifyProgrammer";
43
+ import { JsonIsParseTransformer } from "./features/json/JsonIsParseTransformer";
44
+ import { JsonIsStringifyTransformer } from "./features/json/JsonIsStringifyTransformer";
45
+ import { JsonStringifyTransformer } from "./features/json/JsonStringifyTransformer";
46
+ import { JsonValidateParseTransformer } from "./features/json/JsonValidateParseTransformer";
47
+ import { JsonValidateStringifyTransformer } from "./features/json/JsonValidateStringifyTransformer";
48
+ import { MetadataTransformer } from "./features/misc/MetadataTransformer";
49
+ import { MiscAssertCloneTransformer } from "./features/misc/MiscAssertCloneTransformer";
50
+ import { MiscAssertPruneTransformer } from "./features/misc/MiscAssertPruneTransformer";
51
+ import { MiscCloneTransformer } from "./features/misc/MiscCloneTransformer";
52
+ import { MiscCreateAssertCloneTransformer } from "./features/misc/MiscCreateAssertCloneTransformer";
53
+ import { MiscCreateAssertPruneTransformer } from "./features/misc/MiscCreateAssertPruneTransformer";
54
+ import { MiscCreateCloneTransformer } from "./features/misc/MiscCreateCloneTransformer";
55
+ import { MiscCreateIsCloneTransformer } from "./features/misc/MiscCreateIsCloneTransformer";
56
+ import { MiscCreateIsPruneTransformer } from "./features/misc/MiscCreateIsPruneTransformer";
57
+ import { MiscCreatePruneTransformer } from "./features/misc/MiscCreatePruneTransformer";
58
+ import { MiscCreateValidateCloneTransformer } from "./features/misc/MiscCreateValidateCloneTransformer";
59
+ import { MiscCreateValidatePruneTransformer } from "./features/misc/MiscCreateValidatePruneTransformer";
60
+ import { MiscIsCloneTransformer } from "./features/misc/MiscIsCloneTransformer";
61
+ import { MiscIsPruneTransformer } from "./features/misc/MiscIsPruneTransformer";
62
+ import { MiscLiteralsTransformer } from "./features/misc/MiscLiteralsTransformer";
63
+ import { MiscPruneTransformer } from "./features/misc/MiscPruneTransformer";
64
+ import { MiscValidateCloneTransformer } from "./features/misc/MiscValidateCloneTransformer";
65
+ import { MiscValidatePruneTransformer } from "./features/misc/MiscValidatePruneTransformer";
66
+ import { NotationAssertGeneralTransformer } from "./features/notations/NotationAssertGeneralTransformer";
67
+ import { NotationCreateAssertGeneralTransformer } from "./features/notations/NotationCreateAssertGeneralTransformer";
68
+ import { NotationCreateGeneralTransformer } from "./features/notations/NotationCreateGeneralTransformer";
69
+ import { NotationCreateIsGeneralTransformer } from "./features/notations/NotationCreateIsGeneralTransformer";
70
+ import { NotationCreateValidateGeneralTransformer } from "./features/notations/NotationCreateValidateGeneralTransformer";
71
+ import { NotationGeneralTransformer } from "./features/notations/NotationGeneralTransformer";
72
+ import { NotationIsGeneralTransformer } from "./features/notations/NotationIsGeneralTransformer";
73
+ import { NotationValidateGeneralTransformer } from "./features/notations/NotationValidateGeneralTransformer";
74
+ import { ProtobufAssertDecodeTransformer } from "./features/protobuf/ProtobufAssertDecodeTransformer";
75
+ import { ProtobufAssertEncodeTransformer } from "./features/protobuf/ProtobufAssertEncodeTransformer";
76
+ import { ProtobufCreateAssertDecodeTransformer } from "./features/protobuf/ProtobufCreateAssertDecodeTransformer";
77
+ import { ProtobufCreateAssertEncodeTransformer } from "./features/protobuf/ProtobufCreateAssertEncodeTransformer";
78
+ import { ProtobufCreateDecodeTransformer } from "./features/protobuf/ProtobufCreateDecodeTransformer";
79
+ import { ProtobufCreateEncodeTransformer } from "./features/protobuf/ProtobufCreateEncodeTransformer";
80
+ import { ProtobufCreateIsDecodeTransformer } from "./features/protobuf/ProtobufCreateIsDecodeTransformer";
81
+ import { ProtobufCreateIsEncodeTransformer } from "./features/protobuf/ProtobufCreateIsEncodeTransformer";
82
+ import { ProtobufCreateValidateDecodeTransformer } from "./features/protobuf/ProtobufCreateValidateDecodeTransformer";
83
+ import { ProtobufCreateValidateEncodeTransformer } from "./features/protobuf/ProtobufCreateValidateEncodeTransformer";
84
+ import { ProtobufDecodeTransformer } from "./features/protobuf/ProtobufDecodeTransformer";
85
+ import { ProtobufEncodeTransformer } from "./features/protobuf/ProtobufEncodeTransformer";
86
+ import { ProtobufIsDecodeTransformer } from "./features/protobuf/ProtobufIsDecodeTransformer";
87
+ import { ProtobufIsEncodeTransformer } from "./features/protobuf/ProtobufIsEncodeTransformer";
88
+ import { ProtobufMessageTransformer } from "./features/protobuf/ProtobufMessageTransformer";
89
+ import { ProtobufValidateDecodeTransformer } from "./features/protobuf/ProtobufValidateDecodeTransformer";
90
+ import { ProtobufValidateEncodeTransformer } from "./features/protobuf/ProtobufValidateEncodeTransformer";
91
+
92
+ export namespace CallExpressionTransformer {
93
+ export const transform =
94
+ (project: IProject) =>
95
+ (expression: ts.CallExpression): ts.Expression | null => {
96
+ //----
97
+ // VALIDATIONS
98
+ //----
99
+ // SIGNATURE DECLARATION
100
+ const declaration: ts.Declaration | undefined =
101
+ project.checker.getResolvedSignature(expression)?.declaration;
102
+ if (!declaration) return expression;
103
+
104
+ // FILE PATH
105
+ const location: string = path.resolve(
106
+ declaration.getSourceFile().fileName,
107
+ );
108
+ if (isTarget(location) === false) return expression;
109
+
110
+ //----
111
+ // TRANSFORMATION
112
+ //----
113
+ // FUNCTION NAME
114
+ const module: string = location
115
+ .split(path.sep)
116
+ .at(-1)!
117
+ .split(".")[0]!;
118
+ const { name } =
119
+ project.checker.getTypeAtLocation(declaration).symbol;
120
+
121
+ // FIND TRANSFORMER
122
+ const functor: (() => Task) | undefined = FUNCTORS[module]?.[name];
123
+ if (functor === undefined) return expression;
124
+
125
+ // RETURNS WITH TRANSFORMATION
126
+ const result: ts.Expression | null = functor()(project)(
127
+ expression.expression,
128
+ )(expression);
129
+ return result ?? expression;
130
+ };
131
+
132
+ const isTarget = (location: string): boolean => {
133
+ const files: string[] = Object.keys(FUNCTORS);
134
+ return files.some(
135
+ (f) =>
136
+ location.includes(
137
+ path.join("node_modules", "typia", "lib", `${f}.d.ts`),
138
+ ) ||
139
+ location ===
140
+ path.resolve(path.join(__dirname, "..", `${f}.ts`)) ||
141
+ location ===
142
+ path.resolve(
143
+ path.join(
144
+ __dirname,
145
+ "..",
146
+ "..",
147
+ "..",
148
+ "src",
149
+ `${f}.ts`,
150
+ ),
151
+ ),
152
+ );
153
+ };
154
+ }
155
+
156
+ type Task = (
157
+ project: IProject,
158
+ ) => (
159
+ modulo: ts.LeftHandSideExpression,
160
+ ) => (expression: ts.CallExpression) => ts.Expression | null;
161
+
162
+ const FUNCTORS: Record<string, Record<string, () => Task>> = {
163
+ module: {
164
+ // BASIC
165
+ assert: () => AssertTransformer.transform(false),
166
+ assertType: () => AssertTransformer.transform(false),
167
+ is: () => IsTransformer.transform(false),
168
+ validate: () => ValidateTransformer.transform(false),
169
+
170
+ // STRICT
171
+ assertEquals: () => AssertTransformer.transform(true),
172
+ equals: () => IsTransformer.transform(true),
173
+ validateEquals: () => ValidateTransformer.transform(true),
174
+
175
+ // RANDOM + INTERNAL
176
+ random: () => RandomTransformer.transform,
177
+ metadata: () => (P) => () => MetadataTransformer.transform(P),
178
+
179
+ // FACTORIES
180
+ createAssert: () => CreateAssertTransformer.transform(false),
181
+ createAssertType: () => CreateAssertTransformer.transform(false),
182
+ createIs: () => CreateIsTransformer.transform(false),
183
+ createValidate: () => CreateValidateTransformer.transform(false),
184
+ createAssertEquals: () => CreateAssertTransformer.transform(true),
185
+ createEquals: () => CreateIsTransformer.transform(true),
186
+ createValidateEquals: () => CreateValidateTransformer.transform(true),
187
+ createRandom: () => CreateRandomTransformer.transform,
188
+ },
189
+ http: {
190
+ // HEADERS
191
+ headers: () => HttpHeadersTransformer.transform,
192
+ isHeaders: () => HttpIsHeadersTransformer.transform,
193
+ assertHeaders: () => HttpAssertHeadersTransformer.transform,
194
+ validateHeaders: () => HttpValidateHeadersTransformer.transform,
195
+
196
+ // PARAMETER
197
+ parameter: () => HttpParameterTransformer.transform,
198
+
199
+ // QUERY
200
+ query: () => HttpQueryTransformer.transform,
201
+ isQuery: () => HttpIsQueryTransformer.transform,
202
+ assertQuery: () => HttpAssertQueryTransformer.transform,
203
+ validateQuery: () => HttpValidateQueryTransformer.transform,
204
+
205
+ // FACTORIES
206
+ createHeaders: () => CreateHttpHeadersTransformer.transform,
207
+ createIsHeaders: () => CreateHttpIsHeadersTransformer.transform,
208
+ createAssertHeaders: () => CreateHttpAssertHeadersTransformer.transform,
209
+ createValidateHeaders: () =>
210
+ CreateHttpValidateHeadersTransformer.transform,
211
+ createParameter: () => CreateHttpParameterTransformer.transform,
212
+ createQuery: () => CreateHttpQueryTransformer.transform,
213
+ createIsQuery: () => CreateHttpIsQueryTransformer.transform,
214
+ createAssertQuery: () => CreateHttpAssertQueryTransformer.transform,
215
+ createValidateQuery: () => CreateHttpValidateQueryTransformer.transform,
216
+ },
217
+ json: {
218
+ // SCHEMA
219
+ application: () => (P) => () => JsonApplicationTransformer.transform(P),
220
+
221
+ // PARSER
222
+ isParse: () => JsonIsParseTransformer.transform,
223
+ assertParse: () => JsonAssertParseTransformer.transform,
224
+ validateParse: () => JsonValidateParseTransformer.transform,
225
+
226
+ // STRINGIFY
227
+ stringify: () => JsonStringifyTransformer.transform,
228
+ assertStringify: () => JsonAssertStringifyTransformer.transform,
229
+ isStringify: () => JsonIsStringifyTransformer.transform,
230
+ validateStringify: () => JsonValidateStringifyTransformer.transform,
231
+
232
+ // FACTORIES
233
+ createIsParse: () => JsonCreateIsParseTransformer.transform,
234
+ createAssertParse: () => JsonCreateAssertParseTransformer.transform,
235
+ createValidateParse: () => JsonCreateValidateParseTransformer.transform,
236
+ createStringify: () => JsonCreateStringifyTransformer.transform,
237
+ createAssertStringify: () =>
238
+ JsonCreateAssertStringifyTransformer.transform,
239
+ createIsStringify: () => JsonCreateIsStringifyTransformer.transform,
240
+ createValidateStringify: () =>
241
+ JsonCreateValidateStringifyTransformer.transform,
242
+ },
243
+ protobuf: {
244
+ // SCHEMA
245
+ message: () => ProtobufMessageTransformer.transform,
246
+
247
+ // ENCODE
248
+ encode: () => ProtobufEncodeTransformer.transform,
249
+ assertEncode: () => ProtobufAssertEncodeTransformer.transform,
250
+ isEncode: () => ProtobufIsEncodeTransformer.transform,
251
+ validateEncode: () => ProtobufValidateEncodeTransformer.transform,
252
+
253
+ // DECODE
254
+ decode: () => ProtobufDecodeTransformer.transform,
255
+ assertDecode: () => ProtobufAssertDecodeTransformer.transform,
256
+ isDecode: () => ProtobufIsDecodeTransformer.transform,
257
+ validateDecode: () => ProtobufValidateDecodeTransformer.transform,
258
+
259
+ // FACTORIES
260
+ createEncode: () => ProtobufCreateEncodeTransformer.transform,
261
+ createAssertEncode: () =>
262
+ ProtobufCreateAssertEncodeTransformer.transform,
263
+ createIsEncode: () => ProtobufCreateIsEncodeTransformer.transform,
264
+ createValidateEncode: () =>
265
+ ProtobufCreateValidateEncodeTransformer.transform,
266
+ createDecode: () => ProtobufCreateDecodeTransformer.transform,
267
+ createAssertDecode: () =>
268
+ ProtobufCreateAssertDecodeTransformer.transform,
269
+ createIsDecode: () => ProtobufCreateIsDecodeTransformer.transform,
270
+ createValidateDecode: () =>
271
+ ProtobufCreateValidateDecodeTransformer.transform,
272
+ },
273
+ misc: {
274
+ literals: () => (project) => () =>
275
+ MiscLiteralsTransformer.transform(project),
276
+
277
+ // CLONE
278
+ clone: () => MiscCloneTransformer.transform,
279
+ assertClone: () => MiscAssertCloneTransformer.transform,
280
+ isClone: () => MiscIsCloneTransformer.transform,
281
+ validateClone: () => MiscValidateCloneTransformer.transform,
282
+
283
+ // PRUNE
284
+ prune: () => MiscPruneTransformer.transform,
285
+ assertPrune: () => MiscAssertPruneTransformer.transform,
286
+ isPrune: () => MiscIsPruneTransformer.transform,
287
+ validatePrune: () => MiscValidatePruneTransformer.transform,
288
+
289
+ // FACTORIES
290
+ createClone: () => MiscCreateCloneTransformer.transform,
291
+ createAssertClone: () => MiscCreateAssertCloneTransformer.transform,
292
+ createIsClone: () => MiscCreateIsCloneTransformer.transform,
293
+ createValidateClone: () => MiscCreateValidateCloneTransformer.transform,
294
+ createPrune: () => MiscCreatePruneTransformer.transform,
295
+ createAssertPrune: () => MiscCreateAssertPruneTransformer.transform,
296
+ createIsPrune: () => MiscCreateIsPruneTransformer.transform,
297
+ createValidatePrune: () => MiscCreateValidatePruneTransformer.transform,
298
+ },
299
+ notations: {
300
+ // CAMEL
301
+ camel: () =>
302
+ NotationGeneralTransformer.transform(NamingConvention.camel),
303
+ assertCamel: () =>
304
+ NotationAssertGeneralTransformer.transform(NamingConvention.camel),
305
+ isCamel: () =>
306
+ NotationIsGeneralTransformer.transform(NamingConvention.camel),
307
+ validateCamel: () =>
308
+ NotationValidateGeneralTransformer.transform(
309
+ NamingConvention.camel,
310
+ ),
311
+
312
+ // PASCAL
313
+ pascal: () =>
314
+ NotationGeneralTransformer.transform(NamingConvention.pascal),
315
+ assertPascal: () =>
316
+ NotationAssertGeneralTransformer.transform(NamingConvention.pascal),
317
+ isPascal: () =>
318
+ NotationIsGeneralTransformer.transform(NamingConvention.pascal),
319
+ validatePascal: () =>
320
+ NotationValidateGeneralTransformer.transform(
321
+ NamingConvention.pascal,
322
+ ),
323
+
324
+ // SNAKE
325
+ snake: () =>
326
+ NotationGeneralTransformer.transform(NamingConvention.snake),
327
+ assertSnake: () =>
328
+ NotationAssertGeneralTransformer.transform(NamingConvention.snake),
329
+ isSnake: () =>
330
+ NotationIsGeneralTransformer.transform(NamingConvention.snake),
331
+ validateSnake: () =>
332
+ NotationValidateGeneralTransformer.transform(
333
+ NamingConvention.snake,
334
+ ),
335
+
336
+ // FACTORIES
337
+ createCamel: () =>
338
+ NotationCreateGeneralTransformer.transform(NamingConvention.camel),
339
+ createAssertCamel: () =>
340
+ NotationCreateAssertGeneralTransformer.transform(
341
+ NamingConvention.camel,
342
+ ),
343
+ createIsCamel: () =>
344
+ NotationCreateIsGeneralTransformer.transform(
345
+ NamingConvention.camel,
346
+ ),
347
+ createValidateCamel: () =>
348
+ NotationCreateValidateGeneralTransformer.transform(
349
+ NamingConvention.camel,
350
+ ),
351
+ createPascal: () =>
352
+ NotationCreateGeneralTransformer.transform(NamingConvention.pascal),
353
+ createAssertPascal: () =>
354
+ NotationCreateAssertGeneralTransformer.transform(
355
+ NamingConvention.pascal,
356
+ ),
357
+ createIsPascal: () =>
358
+ NotationCreateIsGeneralTransformer.transform(
359
+ NamingConvention.pascal,
360
+ ),
361
+ createValidatePascal: () =>
362
+ NotationCreateValidateGeneralTransformer.transform(
363
+ NamingConvention.pascal,
364
+ ),
365
+ createSnake: () =>
366
+ NotationCreateGeneralTransformer.transform(NamingConvention.snake),
367
+ createAssertSnake: () =>
368
+ NotationCreateAssertGeneralTransformer.transform(
369
+ NamingConvention.snake,
370
+ ),
371
+ createIsSnake: () =>
372
+ NotationCreateIsGeneralTransformer.transform(
373
+ NamingConvention.snake,
374
+ ),
375
+ createValidateSnake: () =>
376
+ NotationCreateValidateGeneralTransformer.transform(
377
+ NamingConvention.snake,
378
+ ),
379
+ },
380
+ };