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
@@ -0,0 +1,79 @@
1
+ import ts from "typescript";
2
+
3
+ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { StatementFactory } from "../../factories/StatementFactory";
5
+ import { TypeFactory } from "../../factories/TypeFactory";
6
+
7
+ import { IProject } from "../../transformers/IProject";
8
+
9
+ import { IsProgrammer } from "../IsProgrammer";
10
+ import { NotationGeneralProgrammer } from "./NotationGeneralProgrammer";
11
+
12
+ export namespace NotationIsGeneralProgrammer {
13
+ export const write =
14
+ (rename: (str: string) => string) =>
15
+ (project: IProject) =>
16
+ (modulo: ts.LeftHandSideExpression) =>
17
+ (type: ts.Type, name?: string) =>
18
+ ts.factory.createArrowFunction(
19
+ undefined,
20
+ undefined,
21
+ [
22
+ IdentifierFactory.parameter(
23
+ "input",
24
+ TypeFactory.keyword("any"),
25
+ ),
26
+ ],
27
+ ts.factory.createUnionTypeNode([
28
+ ts.factory.createTypeReferenceNode(
29
+ NotationGeneralProgrammer.returnType(rename)(
30
+ name ??
31
+ TypeFactory.getFullName(project.checker)(type),
32
+ ),
33
+ ),
34
+ ts.factory.createLiteralTypeNode(ts.factory.createNull()),
35
+ ]),
36
+ undefined,
37
+ ts.factory.createBlock([
38
+ StatementFactory.constant(
39
+ "is",
40
+ IsProgrammer.write(project)(modulo)(false)(type, name),
41
+ ),
42
+ StatementFactory.constant(
43
+ "general",
44
+ NotationGeneralProgrammer.write(rename)({
45
+ ...project,
46
+ options: {
47
+ ...project.options,
48
+ functional: false,
49
+ numeric: false,
50
+ },
51
+ })(modulo)(type, name),
52
+ ),
53
+ ts.factory.createIfStatement(
54
+ ts.factory.createPrefixUnaryExpression(
55
+ ts.SyntaxKind.ExclamationToken,
56
+ ts.factory.createCallExpression(
57
+ ts.factory.createIdentifier("is"),
58
+ undefined,
59
+ [ts.factory.createIdentifier("input")],
60
+ ),
61
+ ),
62
+ ts.factory.createReturnStatement(
63
+ ts.factory.createNull(),
64
+ ),
65
+ ),
66
+ StatementFactory.constant(
67
+ "output",
68
+ ts.factory.createCallExpression(
69
+ ts.factory.createIdentifier("general"),
70
+ undefined,
71
+ [ts.factory.createIdentifier("input")],
72
+ ),
73
+ ),
74
+ ts.factory.createReturnStatement(
75
+ ts.factory.createIdentifier("output"),
76
+ ),
77
+ ]),
78
+ );
79
+ }
@@ -0,0 +1,88 @@
1
+ import ts from "typescript";
2
+
3
+ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { StatementFactory } from "../../factories/StatementFactory";
5
+ import { TypeFactory } from "../../factories/TypeFactory";
6
+
7
+ import { IProject } from "../../transformers/IProject";
8
+
9
+ import { ValidateProgrammer } from "../ValidateProgrammer";
10
+ import { NotationGeneralProgrammer } from "./NotationGeneralProgrammer";
11
+
12
+ export namespace NotationValidateGeneralProgrammer {
13
+ export const write =
14
+ (rename: (str: string) => string) =>
15
+ (project: IProject) =>
16
+ (modulo: ts.LeftHandSideExpression) =>
17
+ (type: ts.Type, name?: string) =>
18
+ ts.factory.createArrowFunction(
19
+ undefined,
20
+ undefined,
21
+ [
22
+ IdentifierFactory.parameter(
23
+ "input",
24
+ TypeFactory.keyword("any"),
25
+ ),
26
+ ],
27
+ ts.factory.createTypeReferenceNode(
28
+ `typia.IValidation<${NotationGeneralProgrammer.returnType(
29
+ rename,
30
+ )(
31
+ name ?? TypeFactory.getFullName(project.checker)(type),
32
+ )}>`,
33
+ ),
34
+ undefined,
35
+ ts.factory.createBlock([
36
+ StatementFactory.constant(
37
+ "validate",
38
+ ValidateProgrammer.write({
39
+ ...project,
40
+ options: {
41
+ ...project.options,
42
+ functional: false,
43
+ numeric: true,
44
+ },
45
+ })(modulo)(false)(type, name),
46
+ ),
47
+ StatementFactory.constant(
48
+ "general",
49
+ NotationGeneralProgrammer.write(rename)({
50
+ ...project,
51
+ options: {
52
+ ...project.options,
53
+ functional: false,
54
+ numeric: false,
55
+ },
56
+ })(modulo)(type, name),
57
+ ),
58
+ StatementFactory.constant(
59
+ "output",
60
+ ts.factory.createAsExpression(
61
+ ts.factory.createCallExpression(
62
+ ts.factory.createIdentifier("validate"),
63
+ undefined,
64
+ [ts.factory.createIdentifier("input")],
65
+ ),
66
+ TypeFactory.keyword("any"),
67
+ ),
68
+ ),
69
+ ts.factory.createIfStatement(
70
+ ts.factory.createIdentifier("output.success"),
71
+ ts.factory.createExpressionStatement(
72
+ ts.factory.createBinaryExpression(
73
+ ts.factory.createIdentifier("output.data"),
74
+ ts.SyntaxKind.EqualsToken,
75
+ ts.factory.createCallExpression(
76
+ ts.factory.createIdentifier("general"),
77
+ undefined,
78
+ [ts.factory.createIdentifier("input")],
79
+ ),
80
+ ),
81
+ ),
82
+ ),
83
+ ts.factory.createReturnStatement(
84
+ ts.factory.createIdentifier("output"),
85
+ ),
86
+ ]),
87
+ );
88
+ }