typia 3.4.21 → 3.4.23

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 (127) hide show
  1. package/README.md +57 -23
  2. package/lib/programmers/AssertProgrammer.js +79 -70
  3. package/lib/programmers/AssertProgrammer.js.map +1 -1
  4. package/lib/programmers/IsProgrammer.d.ts +1 -0
  5. package/lib/programmers/IsProgrammer.js +4 -0
  6. package/lib/programmers/IsProgrammer.js.map +1 -1
  7. package/lib/programmers/ValidateProgrammer.js +68 -59
  8. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  9. package/lib/programmers/helpers/OptionPredicator.d.ts +1 -0
  10. package/lib/programmers/helpers/OptionPredicator.js +4 -0
  11. package/lib/programmers/helpers/OptionPredicator.js.map +1 -1
  12. package/lib/programmers/internal/application_schema.js +23 -21
  13. package/lib/programmers/internal/application_schema.js.map +1 -1
  14. package/lib/programmers/internal/check_dynamic_properties.js +5 -0
  15. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  16. package/lib/programmers/internal/check_object.d.ts +1 -0
  17. package/lib/programmers/internal/check_object.js.map +1 -1
  18. package/lib/transformers/ITransformOptions.d.ts +10 -0
  19. package/package.json +2 -2
  20. package/src/IValidation.ts +21 -21
  21. package/src/Primitive.ts +82 -82
  22. package/src/TypeGuardError.ts +36 -36
  23. package/src/executable/internal/CommandParser.ts +15 -15
  24. package/src/factories/CommentFactory.ts +10 -10
  25. package/src/factories/ExpressionFactory.ts +66 -66
  26. package/src/factories/IdentifierFactory.ts +72 -72
  27. package/src/factories/LiteralFactory.ts +44 -44
  28. package/src/factories/StatementFactory.ts +60 -60
  29. package/src/factories/TemplateFactory.ts +56 -56
  30. package/src/factories/TypeFactory.ts +101 -101
  31. package/src/factories/ValueFactory.ts +12 -12
  32. package/src/functional/$every.ts +11 -11
  33. package/src/functional/$is_email.ts +5 -5
  34. package/src/functional/$is_ipv4.ts +5 -5
  35. package/src/functional/$is_ipv6.ts +5 -5
  36. package/src/functional/$is_url.ts +5 -5
  37. package/src/functional/$is_uuid.ts +5 -5
  38. package/src/functional/$join.ts +50 -50
  39. package/src/functional/$report.ts +15 -15
  40. package/src/functional/$rest.ts +3 -3
  41. package/src/functional/$string.ts +37 -37
  42. package/src/functional/$tail.ts +6 -6
  43. package/src/index.ts +4 -4
  44. package/src/metadata/IJsDocTagInfo.ts +10 -10
  45. package/src/metadata/IMetadata.ts +25 -25
  46. package/src/metadata/IMetadataApplication.ts +7 -7
  47. package/src/metadata/IMetadataConstant.ts +16 -16
  48. package/src/metadata/IMetadataEntry.ts +6 -6
  49. package/src/metadata/IMetadataObject.ts +29 -29
  50. package/src/metadata/IMetadataProperty.ts +11 -11
  51. package/src/metadata/MetadataConstant.ts +3 -3
  52. package/src/metadata/MetadataObject.ts +131 -131
  53. package/src/metadata/MetadataProperty.ts +64 -64
  54. package/src/programmers/ApplicationProgrammer.ts +55 -55
  55. package/src/programmers/AssertProgrammer.ts +36 -29
  56. package/src/programmers/IsProgrammer.ts +5 -0
  57. package/src/programmers/ValidateProgrammer.ts +36 -29
  58. package/src/programmers/helpers/AtomicPredicator.ts +15 -15
  59. package/src/programmers/helpers/FunctionImporeter.ts +31 -31
  60. package/src/programmers/helpers/IExpressionEntry.ts +10 -10
  61. package/src/programmers/helpers/OptionPredicator.ts +4 -0
  62. package/src/programmers/helpers/StringifyJoinder.ts +111 -111
  63. package/src/programmers/helpers/StringifyPredicator.ts +18 -18
  64. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  65. package/src/programmers/internal/application_array.ts +47 -47
  66. package/src/programmers/internal/application_boolean.ts +17 -17
  67. package/src/programmers/internal/application_constant.ts +29 -29
  68. package/src/programmers/internal/application_default_string.ts +32 -32
  69. package/src/programmers/internal/application_native.ts +29 -29
  70. package/src/programmers/internal/application_number.ts +76 -76
  71. package/src/programmers/internal/application_schema.ts +9 -6
  72. package/src/programmers/internal/application_string.ts +49 -49
  73. package/src/programmers/internal/application_templates.ts +27 -27
  74. package/src/programmers/internal/application_tuple.ts +29 -29
  75. package/src/programmers/internal/check_dynamic_properties.ts +164 -146
  76. package/src/programmers/internal/check_everything.ts +25 -25
  77. package/src/programmers/internal/check_length.ts +46 -46
  78. package/src/programmers/internal/check_native.ts +9 -9
  79. package/src/programmers/internal/check_object.ts +43 -42
  80. package/src/programmers/internal/check_string.ts +24 -24
  81. package/src/programmers/internal/check_string_tags.ts +63 -63
  82. package/src/programmers/internal/check_template.ts +50 -50
  83. package/src/programmers/internal/decode_union_object.ts +73 -73
  84. package/src/programmers/internal/feature_object_entries.ts +49 -49
  85. package/src/programmers/internal/metadata_to_pattern.ts +31 -31
  86. package/src/programmers/internal/stringify_dynamic_properties.ts +164 -164
  87. package/src/programmers/internal/stringify_native.ts +8 -8
  88. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  89. package/src/programmers/internal/template_to_pattern.ts +15 -15
  90. package/src/schemas/IJsonApplication.ts +9 -9
  91. package/src/schemas/IJsonComponents.ts +26 -26
  92. package/src/transform.ts +20 -20
  93. package/src/transformers/ExpressionWithArgumentTransformer.ts +66 -66
  94. package/src/transformers/FileTransformer.ts +49 -49
  95. package/src/transformers/IProject.ts +11 -11
  96. package/src/transformers/ITransformOptions.ts +11 -0
  97. package/src/transformers/NodeTransformer.ts +19 -19
  98. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +55 -55
  99. package/src/transformers/features/parsers/AssertParseTransformer.ts +36 -36
  100. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +32 -32
  101. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +32 -32
  102. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +32 -32
  103. package/src/transformers/features/parsers/IsParseTransformer.ts +36 -36
  104. package/src/transformers/features/parsers/ValidateParseTransformer.ts +36 -36
  105. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +38 -38
  106. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +32 -32
  107. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +32 -32
  108. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +31 -31
  109. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +32 -32
  110. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +38 -38
  111. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +38 -38
  112. package/src/transformers/features/validators/AssertTransformer.ts +43 -43
  113. package/src/transformers/features/validators/CreateAssertTransformer.ts +35 -35
  114. package/src/transformers/features/validators/CreateIsTransformer.ts +35 -35
  115. package/src/transformers/features/validators/CreateValidateTransformer.ts +35 -35
  116. package/src/transformers/features/validators/IsTransformer.ts +43 -43
  117. package/src/transformers/features/validators/ValidateTransformer.ts +43 -43
  118. package/src/typings/Atomic.ts +17 -17
  119. package/src/typings/ClassProperties.ts +5 -5
  120. package/src/typings/OmitNever.ts +3 -3
  121. package/src/typings/SpecialFields.ts +3 -3
  122. package/src/typings/Writable.ts +11 -11
  123. package/src/utils/ArrayUtil.ts +49 -49
  124. package/src/utils/Escaper.ts +50 -50
  125. package/src/utils/MapUtil.ts +14 -14
  126. package/src/utils/PatternUtil.ts +30 -30
  127. package/src/utils/Singleton.ts +17 -17
@@ -1,49 +1,49 @@
1
- import ts from "typescript";
2
-
3
- import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
-
5
- import { MetadataObject } from "../../metadata/MetadataObject";
6
-
7
- import { Escaper } from "../../utils/Escaper";
8
-
9
- import { FeatureProgrammer } from "../FeatureProgrammer";
10
-
11
- export const feature_object_entries =
12
- (config: Pick<FeatureProgrammer.IConfig, "decoder" | "path" | "trace">) =>
13
- (obj: MetadataObject) =>
14
- (input: ts.Expression) =>
15
- obj.properties.map((prop) => {
16
- const sole: string | null = prop.key.getSoleLiteral();
17
- const propInput =
18
- sole === null
19
- ? ts.factory.createIdentifier("value")
20
- : Escaper.variable(sole)
21
- ? ts.factory.createPropertyAccessExpression(
22
- input,
23
- ts.factory.createIdentifier(sole),
24
- )
25
- : ts.factory.createElementAccessExpression(
26
- input,
27
- ts.factory.createStringLiteral(sole),
28
- );
29
-
30
- return {
31
- input: propInput,
32
- key: prop.key,
33
- meta: prop.value,
34
- expression: config.decoder(
35
- propInput,
36
- prop.value,
37
- {
38
- tracable: config.path || config.trace,
39
- source: "object",
40
- from: "object",
41
- postfix:
42
- sole !== null
43
- ? IdentifierFactory.postfix(sole)
44
- : `$join(key)`,
45
- },
46
- prop.tags,
47
- ),
48
- };
49
- });
1
+ import ts from "typescript";
2
+
3
+ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+
5
+ import { MetadataObject } from "../../metadata/MetadataObject";
6
+
7
+ import { Escaper } from "../../utils/Escaper";
8
+
9
+ import { FeatureProgrammer } from "../FeatureProgrammer";
10
+
11
+ export const feature_object_entries =
12
+ (config: Pick<FeatureProgrammer.IConfig, "decoder" | "path" | "trace">) =>
13
+ (obj: MetadataObject) =>
14
+ (input: ts.Expression) =>
15
+ obj.properties.map((prop) => {
16
+ const sole: string | null = prop.key.getSoleLiteral();
17
+ const propInput =
18
+ sole === null
19
+ ? ts.factory.createIdentifier("value")
20
+ : Escaper.variable(sole)
21
+ ? ts.factory.createPropertyAccessExpression(
22
+ input,
23
+ ts.factory.createIdentifier(sole),
24
+ )
25
+ : ts.factory.createElementAccessExpression(
26
+ input,
27
+ ts.factory.createStringLiteral(sole),
28
+ );
29
+
30
+ return {
31
+ input: propInput,
32
+ key: prop.key,
33
+ meta: prop.value,
34
+ expression: config.decoder(
35
+ propInput,
36
+ prop.value,
37
+ {
38
+ tracable: config.path || config.trace,
39
+ source: "object",
40
+ from: "object",
41
+ postfix:
42
+ sole !== null
43
+ ? IdentifierFactory.postfix(sole)
44
+ : `$join(key)`,
45
+ },
46
+ prop.tags,
47
+ ),
48
+ };
49
+ });
@@ -1,31 +1,31 @@
1
- import { Metadata } from "../../metadata/Metadata";
2
-
3
- import { ArrayUtil } from "../../utils/ArrayUtil";
4
- import { PatternUtil } from "../../utils/PatternUtil";
5
-
6
- import { template_to_pattern } from "./template_to_pattern";
7
-
8
- export const metadata_to_pattern =
9
- (top: boolean) =>
10
- (meta: Metadata): string => {
11
- if (meta.atomics.find((type) => type === "string") !== undefined)
12
- return "(.*)";
13
-
14
- const values: string[] = ArrayUtil.flat(
15
- meta.constants.map((c) => {
16
- if (c.type !== "string")
17
- return c.values.map((v) => v.toString());
18
- return c.values.map((str) => PatternUtil.escape(str));
19
- }),
20
- );
21
- for (const type of meta.atomics)
22
- if (type === "number" || type === "bigint")
23
- values.push(PatternUtil.NUMBER);
24
- else if (type === "boolean") values.push(PatternUtil.BOOLEAN);
25
- for (const childTpl of meta.templates)
26
- values.push("(" + template_to_pattern(false)(childTpl) + ")");
27
-
28
- const pattern: string =
29
- values.length === 1 ? values[0]! : "(" + values.join("|") + ")";
30
- return top ? PatternUtil.fix(pattern) : pattern;
31
- };
1
+ import { Metadata } from "../../metadata/Metadata";
2
+
3
+ import { ArrayUtil } from "../../utils/ArrayUtil";
4
+ import { PatternUtil } from "../../utils/PatternUtil";
5
+
6
+ import { template_to_pattern } from "./template_to_pattern";
7
+
8
+ export const metadata_to_pattern =
9
+ (top: boolean) =>
10
+ (meta: Metadata): string => {
11
+ if (meta.atomics.find((type) => type === "string") !== undefined)
12
+ return "(.*)";
13
+
14
+ const values: string[] = ArrayUtil.flat(
15
+ meta.constants.map((c) => {
16
+ if (c.type !== "string")
17
+ return c.values.map((v) => v.toString());
18
+ return c.values.map((str) => PatternUtil.escape(str));
19
+ }),
20
+ );
21
+ for (const type of meta.atomics)
22
+ if (type === "number" || type === "bigint")
23
+ values.push(PatternUtil.NUMBER);
24
+ else if (type === "boolean") values.push(PatternUtil.BOOLEAN);
25
+ for (const childTpl of meta.templates)
26
+ values.push("(" + template_to_pattern(false)(childTpl) + ")");
27
+
28
+ const pattern: string =
29
+ values.length === 1 ? values[0]! : "(" + values.join("|") + ")";
30
+ return top ? PatternUtil.fix(pattern) : pattern;
31
+ };
@@ -1,164 +1,164 @@
1
- import ts from "typescript";
2
-
3
- import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
- import { TemplateFactory } from "../../factories/TemplateFactory";
5
-
6
- import { IExpressionEntry } from "../helpers/IExpressionEntry";
7
- import { metadata_to_pattern } from "./metadata_to_pattern";
8
-
9
- /**
10
- * @internal
11
- */
12
- export function stringify_dynamic_properties(
13
- dynamic: IExpressionEntry[],
14
- regular: string[],
15
- ): ts.Expression {
16
- // BASIC STATMEMENT, CHECK UNDEFINED
17
- const statements: ts.Statement[] = [
18
- ts.factory.createIfStatement(
19
- ts.factory.createStrictEquality(
20
- ts.factory.createIdentifier("undefined"),
21
- ts.factory.createIdentifier("value"),
22
- ),
23
- ts.factory.createReturnStatement(
24
- ts.factory.createStringLiteral(""),
25
- ),
26
- ),
27
- ];
28
-
29
- // PREPARE RETURN FUNCTION
30
- const output = () => {
31
- const mapped = ts.factory.createCallExpression(
32
- IdentifierFactory.join(
33
- ts.factory.createCallExpression(
34
- ts.factory.createIdentifier("Object.entries"),
35
- undefined,
36
- [ts.factory.createIdentifier("input")],
37
- ),
38
- "map",
39
- ),
40
- undefined,
41
- [
42
- ts.factory.createArrowFunction(
43
- undefined,
44
- undefined,
45
- [
46
- IdentifierFactory.parameter(
47
- ts.factory.createArrayBindingPattern([
48
- ts.factory.createBindingElement(
49
- undefined,
50
- undefined,
51
- "key",
52
- ),
53
- ts.factory.createBindingElement(
54
- undefined,
55
- undefined,
56
- "value",
57
- ),
58
- ]),
59
- ),
60
- ],
61
- undefined,
62
- undefined,
63
- ts.factory.createBlock(statements),
64
- ),
65
- ],
66
- );
67
- const filtered = ts.factory.createCallExpression(
68
- IdentifierFactory.join(mapped, "filter"),
69
- undefined,
70
- [
71
- ts.factory.createArrowFunction(
72
- undefined,
73
- undefined,
74
- [IdentifierFactory.parameter("str")],
75
- undefined,
76
- undefined,
77
- ts.factory.createStrictInequality(
78
- ts.factory.createStringLiteral(""),
79
- ts.factory.createIdentifier("str"),
80
- ),
81
- ),
82
- ],
83
- );
84
- return ts.factory.createCallExpression(
85
- IdentifierFactory.join(filtered, "join"),
86
- undefined,
87
- [ts.factory.createStringLiteral(",")],
88
- );
89
- };
90
-
91
- // WHEN REGULAR PROPERTY EXISTS
92
- if (regular.length)
93
- statements.push(
94
- ts.factory.createIfStatement(
95
- ts.factory.createCallExpression(
96
- IdentifierFactory.join(
97
- ts.factory.createArrayLiteralExpression(
98
- regular.map((key) =>
99
- ts.factory.createStringLiteral(key),
100
- ),
101
- ),
102
- "some",
103
- ),
104
- undefined,
105
- [
106
- ts.factory.createArrowFunction(
107
- undefined,
108
- undefined,
109
- [IdentifierFactory.parameter("regular")],
110
- undefined,
111
- undefined,
112
- ts.factory.createStrictEquality(
113
- ts.factory.createIdentifier("regular"),
114
- ts.factory.createIdentifier("key"),
115
- ),
116
- ),
117
- ],
118
- ),
119
- ts.factory.createReturnStatement(
120
- ts.factory.createStringLiteral(""),
121
- ),
122
- ),
123
- );
124
-
125
- // ONLY STRING TYPED KEY EXISTS
126
- const simple: boolean =
127
- dynamic.length === 1 &&
128
- dynamic[0]!.key.size() === 1 &&
129
- dynamic[0]!.key.atomics[0] === "string";
130
- if (simple === true) {
131
- statements.push(stringify(dynamic[0]!));
132
- return output();
133
- }
134
-
135
- // COMPOSITE TEMPLATE LITERAL TYPES
136
- for (const entry of dynamic) {
137
- const condition: ts.IfStatement = ts.factory.createIfStatement(
138
- ts.factory.createCallExpression(
139
- ts.factory.createIdentifier(
140
- `RegExp(/${metadata_to_pattern(true)(entry.key)}/).test`,
141
- ),
142
- undefined,
143
- [ts.factory.createIdentifier("key")],
144
- ),
145
- stringify(entry),
146
- );
147
- statements.push(condition);
148
- }
149
- return output();
150
- }
151
-
152
- function stringify(entry: IExpressionEntry): ts.ReturnStatement {
153
- return ts.factory.createReturnStatement(
154
- TemplateFactory.generate([
155
- ts.factory.createCallExpression(
156
- ts.factory.createIdentifier("JSON.stringify"),
157
- [],
158
- [ts.factory.createIdentifier("key")],
159
- ),
160
- ts.factory.createStringLiteral(":"),
161
- entry.expression,
162
- ]),
163
- );
164
- }
1
+ import ts from "typescript";
2
+
3
+ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { TemplateFactory } from "../../factories/TemplateFactory";
5
+
6
+ import { IExpressionEntry } from "../helpers/IExpressionEntry";
7
+ import { metadata_to_pattern } from "./metadata_to_pattern";
8
+
9
+ /**
10
+ * @internal
11
+ */
12
+ export function stringify_dynamic_properties(
13
+ dynamic: IExpressionEntry[],
14
+ regular: string[],
15
+ ): ts.Expression {
16
+ // BASIC STATMEMENT, CHECK UNDEFINED
17
+ const statements: ts.Statement[] = [
18
+ ts.factory.createIfStatement(
19
+ ts.factory.createStrictEquality(
20
+ ts.factory.createIdentifier("undefined"),
21
+ ts.factory.createIdentifier("value"),
22
+ ),
23
+ ts.factory.createReturnStatement(
24
+ ts.factory.createStringLiteral(""),
25
+ ),
26
+ ),
27
+ ];
28
+
29
+ // PREPARE RETURN FUNCTION
30
+ const output = () => {
31
+ const mapped = ts.factory.createCallExpression(
32
+ IdentifierFactory.join(
33
+ ts.factory.createCallExpression(
34
+ ts.factory.createIdentifier("Object.entries"),
35
+ undefined,
36
+ [ts.factory.createIdentifier("input")],
37
+ ),
38
+ "map",
39
+ ),
40
+ undefined,
41
+ [
42
+ ts.factory.createArrowFunction(
43
+ undefined,
44
+ undefined,
45
+ [
46
+ IdentifierFactory.parameter(
47
+ ts.factory.createArrayBindingPattern([
48
+ ts.factory.createBindingElement(
49
+ undefined,
50
+ undefined,
51
+ "key",
52
+ ),
53
+ ts.factory.createBindingElement(
54
+ undefined,
55
+ undefined,
56
+ "value",
57
+ ),
58
+ ]),
59
+ ),
60
+ ],
61
+ undefined,
62
+ undefined,
63
+ ts.factory.createBlock(statements),
64
+ ),
65
+ ],
66
+ );
67
+ const filtered = ts.factory.createCallExpression(
68
+ IdentifierFactory.join(mapped, "filter"),
69
+ undefined,
70
+ [
71
+ ts.factory.createArrowFunction(
72
+ undefined,
73
+ undefined,
74
+ [IdentifierFactory.parameter("str")],
75
+ undefined,
76
+ undefined,
77
+ ts.factory.createStrictInequality(
78
+ ts.factory.createStringLiteral(""),
79
+ ts.factory.createIdentifier("str"),
80
+ ),
81
+ ),
82
+ ],
83
+ );
84
+ return ts.factory.createCallExpression(
85
+ IdentifierFactory.join(filtered, "join"),
86
+ undefined,
87
+ [ts.factory.createStringLiteral(",")],
88
+ );
89
+ };
90
+
91
+ // WHEN REGULAR PROPERTY EXISTS
92
+ if (regular.length)
93
+ statements.push(
94
+ ts.factory.createIfStatement(
95
+ ts.factory.createCallExpression(
96
+ IdentifierFactory.join(
97
+ ts.factory.createArrayLiteralExpression(
98
+ regular.map((key) =>
99
+ ts.factory.createStringLiteral(key),
100
+ ),
101
+ ),
102
+ "some",
103
+ ),
104
+ undefined,
105
+ [
106
+ ts.factory.createArrowFunction(
107
+ undefined,
108
+ undefined,
109
+ [IdentifierFactory.parameter("regular")],
110
+ undefined,
111
+ undefined,
112
+ ts.factory.createStrictEquality(
113
+ ts.factory.createIdentifier("regular"),
114
+ ts.factory.createIdentifier("key"),
115
+ ),
116
+ ),
117
+ ],
118
+ ),
119
+ ts.factory.createReturnStatement(
120
+ ts.factory.createStringLiteral(""),
121
+ ),
122
+ ),
123
+ );
124
+
125
+ // ONLY STRING TYPED KEY EXISTS
126
+ const simple: boolean =
127
+ dynamic.length === 1 &&
128
+ dynamic[0]!.key.size() === 1 &&
129
+ dynamic[0]!.key.atomics[0] === "string";
130
+ if (simple === true) {
131
+ statements.push(stringify(dynamic[0]!));
132
+ return output();
133
+ }
134
+
135
+ // COMPOSITE TEMPLATE LITERAL TYPES
136
+ for (const entry of dynamic) {
137
+ const condition: ts.IfStatement = ts.factory.createIfStatement(
138
+ ts.factory.createCallExpression(
139
+ ts.factory.createIdentifier(
140
+ `RegExp(/${metadata_to_pattern(true)(entry.key)}/).test`,
141
+ ),
142
+ undefined,
143
+ [ts.factory.createIdentifier("key")],
144
+ ),
145
+ stringify(entry),
146
+ );
147
+ statements.push(condition);
148
+ }
149
+ return output();
150
+ }
151
+
152
+ function stringify(entry: IExpressionEntry): ts.ReturnStatement {
153
+ return ts.factory.createReturnStatement(
154
+ TemplateFactory.generate([
155
+ ts.factory.createCallExpression(
156
+ ts.factory.createIdentifier("JSON.stringify"),
157
+ [],
158
+ [ts.factory.createIdentifier("key")],
159
+ ),
160
+ ts.factory.createStringLiteral(":"),
161
+ entry.expression,
162
+ ]),
163
+ );
164
+ }
@@ -1,8 +1,8 @@
1
- import ts from "typescript";
2
-
3
- /**
4
- * @internal
5
- */
6
- export function stringify_native(): ts.Expression {
7
- return ts.factory.createStringLiteral("{}");
8
- }
1
+ import ts from "typescript";
2
+
3
+ /**
4
+ * @internal
5
+ */
6
+ export function stringify_native(): ts.Expression {
7
+ return ts.factory.createStringLiteral("{}");
8
+ }