typia 7.0.0-dev.20241007 → 7.0.0-dev.20241009

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 (244) hide show
  1. package/lib/factories/ExpressionFactory.d.ts +1 -1
  2. package/lib/factories/ValueFactory.d.ts +1 -1
  3. package/lib/internal/$jsonStringifyString.d.ts +13 -1
  4. package/lib/internal/$jsonStringifyString.js +0 -1
  5. package/lib/internal/$jsonStringifyString.js.map +1 -1
  6. package/lib/programmers/AssertProgrammer.d.ts +5 -2
  7. package/lib/programmers/AssertProgrammer.js +12 -5
  8. package/lib/programmers/AssertProgrammer.js.map +1 -1
  9. package/lib/programmers/ImportProgrammer.d.ts +25 -4
  10. package/lib/programmers/ImportProgrammer.js +67 -31
  11. package/lib/programmers/ImportProgrammer.js.map +1 -1
  12. package/lib/programmers/RandomProgrammer.js +48 -32
  13. package/lib/programmers/RandomProgrammer.js.map +1 -1
  14. package/lib/programmers/ValidateProgrammer.js +10 -4
  15. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  16. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js +1 -1
  17. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js.map +1 -1
  18. package/lib/programmers/functional/FunctionalValidateFunctionProgrammer.d.ts +1 -0
  19. package/lib/programmers/functional/FunctionalValidateFunctionProgrammer.js +14 -5
  20. package/lib/programmers/functional/FunctionalValidateFunctionProgrammer.js.map +1 -1
  21. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js +5 -1
  22. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js.map +1 -1
  23. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js +1 -0
  24. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js.map +1 -1
  25. package/lib/programmers/http/HttpAssertFormDataProgrammer.js +4 -1
  26. package/lib/programmers/http/HttpAssertFormDataProgrammer.js.map +1 -1
  27. package/lib/programmers/http/HttpAssertHeadersProgrammer.js +4 -1
  28. package/lib/programmers/http/HttpAssertHeadersProgrammer.js.map +1 -1
  29. package/lib/programmers/http/HttpAssertQueryProgrammer.js +4 -1
  30. package/lib/programmers/http/HttpAssertQueryProgrammer.js.map +1 -1
  31. package/lib/programmers/http/HttpFormDataProgrammer.js +10 -6
  32. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  33. package/lib/programmers/http/HttpHeadersProgrammer.js +10 -6
  34. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  35. package/lib/programmers/http/HttpQueryProgrammer.js +10 -6
  36. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  37. package/lib/programmers/http/HttpValidateFormDataProgrammer.js +5 -3
  38. package/lib/programmers/http/HttpValidateFormDataProgrammer.js.map +1 -1
  39. package/lib/programmers/http/HttpValidateHeadersProgrammer.js +5 -3
  40. package/lib/programmers/http/HttpValidateHeadersProgrammer.js.map +1 -1
  41. package/lib/programmers/http/HttpValidateQueryProgrammer.js +5 -3
  42. package/lib/programmers/http/HttpValidateQueryProgrammer.js.map +1 -1
  43. package/lib/programmers/json/JsonAssertParseProgrammer.js +14 -7
  44. package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
  45. package/lib/programmers/json/JsonAssertStringifyProgrammer.js +4 -1
  46. package/lib/programmers/json/JsonAssertStringifyProgrammer.js.map +1 -1
  47. package/lib/programmers/json/JsonIsParseProgrammer.js +10 -6
  48. package/lib/programmers/json/JsonIsParseProgrammer.js.map +1 -1
  49. package/lib/programmers/json/JsonValidateParseProgrammer.js +16 -4
  50. package/lib/programmers/json/JsonValidateParseProgrammer.js.map +1 -1
  51. package/lib/programmers/json/JsonValidateStringifyProgrammer.js +7 -3
  52. package/lib/programmers/json/JsonValidateStringifyProgrammer.js.map +1 -1
  53. package/lib/programmers/misc/MiscAssertCloneProgrammer.js +4 -1
  54. package/lib/programmers/misc/MiscAssertCloneProgrammer.js.map +1 -1
  55. package/lib/programmers/misc/MiscAssertPruneProgrammer.js +4 -1
  56. package/lib/programmers/misc/MiscAssertPruneProgrammer.js.map +1 -1
  57. package/lib/programmers/misc/MiscCloneProgrammer.js +10 -6
  58. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  59. package/lib/programmers/misc/MiscValidateCloneProgrammer.js +5 -3
  60. package/lib/programmers/misc/MiscValidateCloneProgrammer.js.map +1 -1
  61. package/lib/programmers/misc/MiscValidatePruneProgrammer.js +10 -4
  62. package/lib/programmers/misc/MiscValidatePruneProgrammer.js.map +1 -1
  63. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js +4 -1
  64. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js.map +1 -1
  65. package/lib/programmers/notations/NotationGeneralProgrammer.d.ts +2 -1
  66. package/lib/programmers/notations/NotationGeneralProgrammer.js +13 -5
  67. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  68. package/lib/programmers/notations/NotationValidateGeneralProgrammer.js +5 -3
  69. package/lib/programmers/notations/NotationValidateGeneralProgrammer.js.map +1 -1
  70. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +4 -1
  71. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
  72. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js +4 -1
  73. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js.map +1 -1
  74. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +10 -6
  75. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  76. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js +5 -3
  77. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js.map +1 -1
  78. package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.js +7 -3
  79. package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.js.map +1 -1
  80. package/package.json +1 -1
  81. package/src/factories/JsonMetadataFactory.ts +63 -63
  82. package/src/factories/ProtobufFactory.ts +275 -275
  83. package/src/internal/$jsonStringifyString.ts +0 -1
  84. package/src/programmers/AssertProgrammer.ts +454 -456
  85. package/src/programmers/CheckerProgrammer.ts +1610 -1610
  86. package/src/programmers/ImportProgrammer.ts +184 -109
  87. package/src/programmers/IsProgrammer.ts +273 -273
  88. package/src/programmers/RandomProgrammer.ts +168 -149
  89. package/src/programmers/TypiaProgrammer.ts +171 -171
  90. package/src/programmers/ValidateProgrammer.ts +434 -430
  91. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +1 -1
  92. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +12 -16
  93. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +5 -12
  94. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +1 -0
  95. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  96. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -96
  97. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -96
  98. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -102
  99. package/src/programmers/http/HttpFormDataProgrammer.ts +304 -308
  100. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -404
  101. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  102. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  103. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  104. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  105. package/src/programmers/http/HttpQueryProgrammer.ts +329 -333
  106. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -90
  107. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -90
  108. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -96
  109. package/src/programmers/json/JsonApplicationProgrammer.ts +92 -92
  110. package/src/programmers/json/JsonAssertParseProgrammer.ts +103 -104
  111. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -112
  112. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -118
  113. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  114. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  115. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -95
  116. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -119
  117. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -92
  118. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -113
  119. package/src/programmers/misc/MiscCloneProgrammer.ts +1025 -1029
  120. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  121. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  122. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  123. package/src/programmers/misc/MiscPruneProgrammer.ts +725 -725
  124. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -109
  125. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -109
  126. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -98
  127. package/src/programmers/notations/NotationGeneralProgrammer.ts +977 -973
  128. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  129. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -117
  130. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -95
  131. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -99
  132. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +708 -711
  133. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +1019 -1019
  134. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  135. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  136. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -90
  137. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -114
  138. package/src/transform.ts +35 -35
  139. package/src/transformers/CallExpressionTransformer.ts +540 -540
  140. package/src/transformers/FileTransformer.ts +120 -120
  141. package/src/transformers/IProgrammerProps.ts +11 -11
  142. package/src/transformers/ITransformOptions.ts +62 -62
  143. package/src/transformers/ITransformProps.ts +9 -9
  144. package/src/transformers/ITypiaContext.ts +18 -18
  145. package/src/transformers/ImportTransformer.ts +66 -66
  146. package/src/transformers/NodeTransformer.ts +17 -17
  147. package/src/transformers/TransformerError.ts +59 -59
  148. package/src/transformers/features/AssertTransformer.ts +24 -24
  149. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  150. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  151. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  152. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  153. package/src/transformers/features/IsTransformer.ts +18 -18
  154. package/src/transformers/features/RandomTransformer.ts +41 -41
  155. package/src/transformers/features/ValidateTransformer.ts +18 -18
  156. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  157. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  158. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  159. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  160. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  161. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  162. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  163. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  164. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  165. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  166. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  167. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  168. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  169. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  170. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  171. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  172. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  173. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  174. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  175. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  176. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  177. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  178. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  179. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  180. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  181. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  182. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  183. package/src/transformers/features/json/JsonApplicationTransformer.ts +130 -130
  184. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  185. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  186. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  187. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  188. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  189. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  190. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  191. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  192. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  193. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  194. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  195. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  196. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  197. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  198. package/src/transformers/features/llm/LlmApplicationTransformer.ts +86 -86
  199. package/src/transformers/features/llm/LlmSchemaTransformer.ts +59 -59
  200. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  201. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  202. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  203. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  204. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  205. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  206. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  207. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  208. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  209. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  210. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  211. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  212. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  213. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  214. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  215. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  216. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  217. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  218. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  219. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  220. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  221. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  222. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  223. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  224. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  225. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  226. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  227. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  228. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  229. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  230. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  231. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  232. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  233. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  234. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  235. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  236. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  237. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  238. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  239. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  240. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  241. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  242. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  243. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  244. package/src/transformers/internal/GenericTransformer.ts +101 -101
@@ -1,59 +1,59 @@
1
- import { MetadataFactory } from "../factories/MetadataFactory";
2
-
3
- import { MetadataObject } from "../schemas/metadata/MetadataObject";
4
-
5
- import { Escaper } from "../utils/Escaper";
6
-
7
- export class TransformerError extends Error {
8
- public readonly code: string;
9
-
10
- public constructor(props: TransformerError.IProps) {
11
- super(props.message);
12
- this.code = props.code;
13
-
14
- // INHERITANCE POLYFILL
15
- const proto = new.target.prototype;
16
- if (Object.setPrototypeOf) Object.setPrototypeOf(this, proto);
17
- else (this as any).__proto__ = proto;
18
- }
19
- }
20
- export namespace TransformerError {
21
- export interface IProps {
22
- code: string;
23
- message: string;
24
- }
25
-
26
- export const from = (props: {
27
- code: string;
28
- errors: MetadataFactory.IError[];
29
- }): TransformerError => {
30
- const body: string = props.errors
31
- .map((e) => {
32
- const subject: string =
33
- e.explore.object === null
34
- ? ""
35
- : join(e.explore.object)(e.explore.property);
36
- const middle: string = e.explore.parameter
37
- ? `(parameter: ${JSON.stringify(e.explore.parameter)})`
38
- : e.explore.output
39
- ? "(return type)"
40
- : "";
41
- const type: string = `${subject.length ? `${subject}: ` : ""}${e.name}`;
42
- return `- ${type}${middle}\n${e.messages
43
- .map((msg) => ` - ${msg}`)
44
- .join("\n")}`;
45
- })
46
- .join("\n\n");
47
- return new TransformerError({
48
- code: props.code,
49
- message: `unsupported type detected\n\n${body}`,
50
- });
51
- };
52
-
53
- const join = (object: MetadataObject) => (key: string | object | null) => {
54
- if (key === null) return object.name;
55
- else if (typeof key === "object") return `${object.name}[key]`;
56
- else if (Escaper.variable(key)) return `${object.name}.${key}`;
57
- return `${object.name}[${JSON.stringify(key)}]`;
58
- };
59
- }
1
+ import { MetadataFactory } from "../factories/MetadataFactory";
2
+
3
+ import { MetadataObject } from "../schemas/metadata/MetadataObject";
4
+
5
+ import { Escaper } from "../utils/Escaper";
6
+
7
+ export class TransformerError extends Error {
8
+ public readonly code: string;
9
+
10
+ public constructor(props: TransformerError.IProps) {
11
+ super(props.message);
12
+ this.code = props.code;
13
+
14
+ // INHERITANCE POLYFILL
15
+ const proto = new.target.prototype;
16
+ if (Object.setPrototypeOf) Object.setPrototypeOf(this, proto);
17
+ else (this as any).__proto__ = proto;
18
+ }
19
+ }
20
+ export namespace TransformerError {
21
+ export interface IProps {
22
+ code: string;
23
+ message: string;
24
+ }
25
+
26
+ export const from = (props: {
27
+ code: string;
28
+ errors: MetadataFactory.IError[];
29
+ }): TransformerError => {
30
+ const body: string = props.errors
31
+ .map((e) => {
32
+ const subject: string =
33
+ e.explore.object === null
34
+ ? ""
35
+ : join(e.explore.object)(e.explore.property);
36
+ const middle: string = e.explore.parameter
37
+ ? `(parameter: ${JSON.stringify(e.explore.parameter)})`
38
+ : e.explore.output
39
+ ? "(return type)"
40
+ : "";
41
+ const type: string = `${subject.length ? `${subject}: ` : ""}${e.name}`;
42
+ return `- ${type}${middle}\n${e.messages
43
+ .map((msg) => ` - ${msg}`)
44
+ .join("\n")}`;
45
+ })
46
+ .join("\n\n");
47
+ return new TransformerError({
48
+ code: props.code,
49
+ message: `unsupported type detected\n\n${body}`,
50
+ });
51
+ };
52
+
53
+ const join = (object: MetadataObject) => (key: string | object | null) => {
54
+ if (key === null) return object.name;
55
+ else if (typeof key === "object") return `${object.name}[key]`;
56
+ else if (Escaper.variable(key)) return `${object.name}.${key}`;
57
+ return `${object.name}[${JSON.stringify(key)}]`;
58
+ };
59
+ }
@@ -1,24 +1,24 @@
1
- import { AssertProgrammer } from "../../programmers/AssertProgrammer";
2
-
3
- import { ITransformProps } from "../ITransformProps";
4
- import { GenericTransformer } from "../internal/GenericTransformer";
5
-
6
- export namespace AssertTransformer {
7
- export const transform =
8
- (config: AssertProgrammer.IConfig) => (props: ITransformProps) =>
9
- GenericTransformer.scalar({
10
- ...props,
11
- method: config.equals
12
- ? config.guard
13
- ? "assertGuardEquals"
14
- : "assertEquals"
15
- : config.guard
16
- ? "assertGuard"
17
- : "assert",
18
- write: (x) =>
19
- AssertProgrammer.write({
20
- ...x,
21
- config,
22
- }),
23
- });
24
- }
1
+ import { AssertProgrammer } from "../../programmers/AssertProgrammer";
2
+
3
+ import { ITransformProps } from "../ITransformProps";
4
+ import { GenericTransformer } from "../internal/GenericTransformer";
5
+
6
+ export namespace AssertTransformer {
7
+ export const transform =
8
+ (config: AssertProgrammer.IConfig) => (props: ITransformProps) =>
9
+ GenericTransformer.scalar({
10
+ ...props,
11
+ method: config.equals
12
+ ? config.guard
13
+ ? "assertGuardEquals"
14
+ : "assertEquals"
15
+ : config.guard
16
+ ? "assertGuard"
17
+ : "assert",
18
+ write: (x) =>
19
+ AssertProgrammer.write({
20
+ ...x,
21
+ config,
22
+ }),
23
+ });
24
+ }
@@ -1,24 +1,24 @@
1
- import { AssertProgrammer } from "../../programmers/AssertProgrammer";
2
-
3
- import { ITransformProps } from "../ITransformProps";
4
- import { GenericTransformer } from "../internal/GenericTransformer";
5
-
6
- export namespace CreateAssertTransformer {
7
- export const transform =
8
- (config: AssertProgrammer.IConfig) => (props: ITransformProps) =>
9
- GenericTransformer.factory({
10
- ...props,
11
- method: config.equals
12
- ? config.guard
13
- ? "assertGuardEquals"
14
- : "assertEquals"
15
- : config.guard
16
- ? "assertGuard"
17
- : "assert",
18
- write: (x) =>
19
- AssertProgrammer.write({
20
- ...x,
21
- config,
22
- }),
23
- });
24
- }
1
+ import { AssertProgrammer } from "../../programmers/AssertProgrammer";
2
+
3
+ import { ITransformProps } from "../ITransformProps";
4
+ import { GenericTransformer } from "../internal/GenericTransformer";
5
+
6
+ export namespace CreateAssertTransformer {
7
+ export const transform =
8
+ (config: AssertProgrammer.IConfig) => (props: ITransformProps) =>
9
+ GenericTransformer.factory({
10
+ ...props,
11
+ method: config.equals
12
+ ? config.guard
13
+ ? "assertGuardEquals"
14
+ : "assertEquals"
15
+ : config.guard
16
+ ? "assertGuard"
17
+ : "assert",
18
+ write: (x) =>
19
+ AssertProgrammer.write({
20
+ ...x,
21
+ config,
22
+ }),
23
+ });
24
+ }
@@ -1,18 +1,18 @@
1
- import { IsProgrammer } from "../../programmers/IsProgrammer";
2
-
3
- import { ITransformProps } from "../ITransformProps";
4
- import { GenericTransformer } from "../internal/GenericTransformer";
5
-
6
- export namespace CreateIsTransformer {
7
- export const transform =
8
- (config: IsProgrammer.IConfig) => (props: ITransformProps) =>
9
- GenericTransformer.factory({
10
- ...props,
11
- method: config.equals ? "equals" : "is",
12
- write: (x) =>
13
- IsProgrammer.write({
14
- ...x,
15
- config,
16
- }),
17
- });
18
- }
1
+ import { IsProgrammer } from "../../programmers/IsProgrammer";
2
+
3
+ import { ITransformProps } from "../ITransformProps";
4
+ import { GenericTransformer } from "../internal/GenericTransformer";
5
+
6
+ export namespace CreateIsTransformer {
7
+ export const transform =
8
+ (config: IsProgrammer.IConfig) => (props: ITransformProps) =>
9
+ GenericTransformer.factory({
10
+ ...props,
11
+ method: config.equals ? "equals" : "is",
12
+ write: (x) =>
13
+ IsProgrammer.write({
14
+ ...x,
15
+ config,
16
+ }),
17
+ });
18
+ }
@@ -1,43 +1,43 @@
1
- import ts from "typescript";
2
-
3
- import { RandomProgrammer } from "../../programmers/RandomProgrammer";
4
-
5
- import { ITransformProps } from "../ITransformProps";
6
- import { TransformerError } from "../TransformerError";
7
-
8
- export namespace CreateRandomTransformer {
9
- export const transform = (props: ITransformProps): ts.Expression => {
10
- // CHECK GENERIC ARGUMENT EXISTENCE
11
- if (!props.expression.typeArguments?.[0])
12
- throw new TransformerError({
13
- code: "typia.createRandom",
14
- message: "generic argument is not specified.",
15
- });
16
-
17
- // GET TYPE INFO
18
- const node: ts.TypeNode = props.expression.typeArguments[0];
19
- const type: ts.Type = props.context.checker.getTypeFromTypeNode(node);
20
-
21
- if (type.isTypeParameter())
22
- throw new TransformerError({
23
- code: "typia.createRandom",
24
- message: "non-specified generic argument.",
25
- });
26
-
27
- // DO TRANSFORM
28
- return RandomProgrammer.write({
29
- context: {
30
- ...props.context,
31
- options: {
32
- ...props.context.options,
33
- functional: false,
34
- numeric: false,
35
- },
36
- },
37
- modulo: props.modulo,
38
- type,
39
- name: node.getFullText().trim(),
40
- init: props.expression.arguments?.[0],
41
- });
42
- };
43
- }
1
+ import ts from "typescript";
2
+
3
+ import { RandomProgrammer } from "../../programmers/RandomProgrammer";
4
+
5
+ import { ITransformProps } from "../ITransformProps";
6
+ import { TransformerError } from "../TransformerError";
7
+
8
+ export namespace CreateRandomTransformer {
9
+ export const transform = (props: ITransformProps): ts.Expression => {
10
+ // CHECK GENERIC ARGUMENT EXISTENCE
11
+ if (!props.expression.typeArguments?.[0])
12
+ throw new TransformerError({
13
+ code: "typia.createRandom",
14
+ message: "generic argument is not specified.",
15
+ });
16
+
17
+ // GET TYPE INFO
18
+ const node: ts.TypeNode = props.expression.typeArguments[0];
19
+ const type: ts.Type = props.context.checker.getTypeFromTypeNode(node);
20
+
21
+ if (type.isTypeParameter())
22
+ throw new TransformerError({
23
+ code: "typia.createRandom",
24
+ message: "non-specified generic argument.",
25
+ });
26
+
27
+ // DO TRANSFORM
28
+ return RandomProgrammer.write({
29
+ context: {
30
+ ...props.context,
31
+ options: {
32
+ ...props.context.options,
33
+ functional: false,
34
+ numeric: false,
35
+ },
36
+ },
37
+ modulo: props.modulo,
38
+ type,
39
+ name: node.getFullText().trim(),
40
+ init: props.expression.arguments?.[0],
41
+ });
42
+ };
43
+ }
@@ -1,18 +1,18 @@
1
- import { ValidateProgrammer } from "../../programmers/ValidateProgrammer";
2
-
3
- import { ITransformProps } from "../ITransformProps";
4
- import { GenericTransformer } from "../internal/GenericTransformer";
5
-
6
- export namespace CreateValidateTransformer {
7
- export const transform =
8
- (config: ValidateProgrammer.IConfig) => (props: ITransformProps) =>
9
- GenericTransformer.factory({
10
- ...props,
11
- method: config.equals ? "validateEquals" : "validate",
12
- write: (x) =>
13
- ValidateProgrammer.write({
14
- ...x,
15
- config,
16
- }),
17
- });
18
- }
1
+ import { ValidateProgrammer } from "../../programmers/ValidateProgrammer";
2
+
3
+ import { ITransformProps } from "../ITransformProps";
4
+ import { GenericTransformer } from "../internal/GenericTransformer";
5
+
6
+ export namespace CreateValidateTransformer {
7
+ export const transform =
8
+ (config: ValidateProgrammer.IConfig) => (props: ITransformProps) =>
9
+ GenericTransformer.factory({
10
+ ...props,
11
+ method: config.equals ? "validateEquals" : "validate",
12
+ write: (x) =>
13
+ ValidateProgrammer.write({
14
+ ...x,
15
+ config,
16
+ }),
17
+ });
18
+ }
@@ -1,18 +1,18 @@
1
- import { IsProgrammer } from "../../programmers/IsProgrammer";
2
-
3
- import { ITransformProps } from "../ITransformProps";
4
- import { GenericTransformer } from "../internal/GenericTransformer";
5
-
6
- export namespace IsTransformer {
7
- export const transform =
8
- (config: IsProgrammer.IConfig) => (props: ITransformProps) =>
9
- GenericTransformer.scalar({
10
- ...props,
11
- method: config.equals ? "equals" : "is",
12
- write: (x) =>
13
- IsProgrammer.write({
14
- ...x,
15
- config,
16
- }),
17
- });
18
- }
1
+ import { IsProgrammer } from "../../programmers/IsProgrammer";
2
+
3
+ import { ITransformProps } from "../ITransformProps";
4
+ import { GenericTransformer } from "../internal/GenericTransformer";
5
+
6
+ export namespace IsTransformer {
7
+ export const transform =
8
+ (config: IsProgrammer.IConfig) => (props: ITransformProps) =>
9
+ GenericTransformer.scalar({
10
+ ...props,
11
+ method: config.equals ? "equals" : "is",
12
+ write: (x) =>
13
+ IsProgrammer.write({
14
+ ...x,
15
+ config,
16
+ }),
17
+ });
18
+ }
@@ -1,41 +1,41 @@
1
- import ts from "typescript";
2
-
3
- import { RandomProgrammer } from "../../programmers/RandomProgrammer";
4
-
5
- import { ITransformProps } from "../ITransformProps";
6
- import { TransformerError } from "../TransformerError";
7
-
8
- export namespace RandomTransformer {
9
- export const transform = (props: ITransformProps): ts.Expression => {
10
- // CHECK GENERIC ARGUMENT EXISTENCE
11
- if (!props.expression.typeArguments?.[0])
12
- throw new TransformerError({
13
- code: `typia.${props.modulo.getText()}`,
14
- message: "generic argument is not specified.",
15
- });
16
-
17
- // GET TYPE INFO
18
- const node: ts.TypeNode = props.expression.typeArguments[0];
19
- const type: ts.Type = props.context.checker.getTypeFromTypeNode(node);
20
-
21
- if (type.isTypeParameter())
22
- throw new TransformerError({
23
- code: `typia.${props.modulo.getText()}`,
24
- message: "non-specified generic argument.",
25
- });
26
-
27
- return ts.factory.createCallExpression(
28
- RandomProgrammer.write({
29
- context: props.context,
30
- modulo: props.modulo,
31
- type,
32
- name: node.getFullText().trim(),
33
- init: undefined,
34
- }),
35
- undefined,
36
- props.expression.arguments.length
37
- ? [props.expression.arguments[0]!]
38
- : undefined,
39
- );
40
- };
41
- }
1
+ import ts from "typescript";
2
+
3
+ import { RandomProgrammer } from "../../programmers/RandomProgrammer";
4
+
5
+ import { ITransformProps } from "../ITransformProps";
6
+ import { TransformerError } from "../TransformerError";
7
+
8
+ export namespace RandomTransformer {
9
+ export const transform = (props: ITransformProps): ts.Expression => {
10
+ // CHECK GENERIC ARGUMENT EXISTENCE
11
+ if (!props.expression.typeArguments?.[0])
12
+ throw new TransformerError({
13
+ code: `typia.${props.modulo.getText()}`,
14
+ message: "generic argument is not specified.",
15
+ });
16
+
17
+ // GET TYPE INFO
18
+ const node: ts.TypeNode = props.expression.typeArguments[0];
19
+ const type: ts.Type = props.context.checker.getTypeFromTypeNode(node);
20
+
21
+ if (type.isTypeParameter())
22
+ throw new TransformerError({
23
+ code: `typia.${props.modulo.getText()}`,
24
+ message: "non-specified generic argument.",
25
+ });
26
+
27
+ return ts.factory.createCallExpression(
28
+ RandomProgrammer.write({
29
+ context: props.context,
30
+ modulo: props.modulo,
31
+ type,
32
+ name: node.getFullText().trim(),
33
+ init: undefined,
34
+ }),
35
+ undefined,
36
+ props.expression.arguments.length
37
+ ? [props.expression.arguments[0]!]
38
+ : undefined,
39
+ );
40
+ };
41
+ }
@@ -1,18 +1,18 @@
1
- import { ValidateProgrammer } from "../../programmers/ValidateProgrammer";
2
-
3
- import { ITransformProps } from "../ITransformProps";
4
- import { GenericTransformer } from "../internal/GenericTransformer";
5
-
6
- export namespace ValidateTransformer {
7
- export const transform =
8
- (config: ValidateProgrammer.IConfig) => (props: ITransformProps) =>
9
- GenericTransformer.scalar({
10
- ...props,
11
- method: config.equals ? "validateEquals" : "validate",
12
- write: (x) =>
13
- ValidateProgrammer.write({
14
- ...x,
15
- config,
16
- }),
17
- });
18
- }
1
+ import { ValidateProgrammer } from "../../programmers/ValidateProgrammer";
2
+
3
+ import { ITransformProps } from "../ITransformProps";
4
+ import { GenericTransformer } from "../internal/GenericTransformer";
5
+
6
+ export namespace ValidateTransformer {
7
+ export const transform =
8
+ (config: ValidateProgrammer.IConfig) => (props: ITransformProps) =>
9
+ GenericTransformer.scalar({
10
+ ...props,
11
+ method: config.equals ? "validateEquals" : "validate",
12
+ write: (x) =>
13
+ ValidateProgrammer.write({
14
+ ...x,
15
+ config,
16
+ }),
17
+ });
18
+ }
@@ -1,57 +1,57 @@
1
- import ts from "typescript";
2
-
3
- import { TypeFactory } from "../../../factories/TypeFactory";
4
-
5
- import { ITransformProps } from "../../ITransformProps";
6
- import { ITypiaContext } from "../../ITypiaContext";
7
- import { TransformerError } from "../../TransformerError";
8
-
9
- export namespace FunctionalGenericTransformer {
10
- export interface IConfig {
11
- equals: boolean;
12
- }
13
- export interface ISpecification {
14
- method: string;
15
- config: IConfig;
16
- programmer: (p: {
17
- context: ITypiaContext;
18
- modulo: ts.LeftHandSideExpression;
19
- expression: ts.Expression;
20
- declaration: ts.FunctionDeclaration;
21
- config: IConfig;
22
- init?: ts.Expression;
23
- }) => ts.Expression;
24
- }
25
- export const transform =
26
- (spec: ISpecification) =>
27
- (props: ITransformProps): ts.Expression => {
28
- // CHECK PARAMETER
29
- if (props.expression.arguments.length === 0)
30
- throw new TransformerError({
31
- code: `typia.functional.${spec.method}`,
32
- message: `no input value.`,
33
- });
34
-
35
- // GET TYPE INFO
36
- const type: ts.Type =
37
- props.expression.typeArguments && props.expression.typeArguments[0]
38
- ? props.context.checker.getTypeFromTypeNode(
39
- props.expression.typeArguments[0],
40
- )
41
- : props.context.checker.getTypeAtLocation(
42
- props.expression.arguments[0]!,
43
- );
44
- if (TypeFactory.isFunction(type) === false)
45
- throw new TransformerError({
46
- code: `typia.functional.${spec.method}`,
47
- message: `input value is not a function.`,
48
- });
49
- return spec.programmer({
50
- ...props,
51
- config: spec.config,
52
- expression: props.expression.arguments[0] as ts.Expression,
53
- declaration: type.symbol!.declarations![0] as ts.FunctionDeclaration,
54
- init: props.expression.arguments[1],
55
- });
56
- };
57
- }
1
+ import ts from "typescript";
2
+
3
+ import { TypeFactory } from "../../../factories/TypeFactory";
4
+
5
+ import { ITransformProps } from "../../ITransformProps";
6
+ import { ITypiaContext } from "../../ITypiaContext";
7
+ import { TransformerError } from "../../TransformerError";
8
+
9
+ export namespace FunctionalGenericTransformer {
10
+ export interface IConfig {
11
+ equals: boolean;
12
+ }
13
+ export interface ISpecification {
14
+ method: string;
15
+ config: IConfig;
16
+ programmer: (p: {
17
+ context: ITypiaContext;
18
+ modulo: ts.LeftHandSideExpression;
19
+ expression: ts.Expression;
20
+ declaration: ts.FunctionDeclaration;
21
+ config: IConfig;
22
+ init?: ts.Expression;
23
+ }) => ts.Expression;
24
+ }
25
+ export const transform =
26
+ (spec: ISpecification) =>
27
+ (props: ITransformProps): ts.Expression => {
28
+ // CHECK PARAMETER
29
+ if (props.expression.arguments.length === 0)
30
+ throw new TransformerError({
31
+ code: `typia.functional.${spec.method}`,
32
+ message: `no input value.`,
33
+ });
34
+
35
+ // GET TYPE INFO
36
+ const type: ts.Type =
37
+ props.expression.typeArguments && props.expression.typeArguments[0]
38
+ ? props.context.checker.getTypeFromTypeNode(
39
+ props.expression.typeArguments[0],
40
+ )
41
+ : props.context.checker.getTypeAtLocation(
42
+ props.expression.arguments[0]!,
43
+ );
44
+ if (TypeFactory.isFunction(type) === false)
45
+ throw new TransformerError({
46
+ code: `typia.functional.${spec.method}`,
47
+ message: `input value is not a function.`,
48
+ });
49
+ return spec.programmer({
50
+ ...props,
51
+ config: spec.config,
52
+ expression: props.expression.arguments[0] as ts.Expression,
53
+ declaration: type.symbol!.declarations![0] as ts.FunctionDeclaration,
54
+ init: props.expression.arguments[1],
55
+ });
56
+ };
57
+ }