Skip to content

Commit 45af38f

Browse files
committed
Break change from ts.factory.createNumericLiteral().
Since TypeScript v5.3 update, it no more allows negative numeric value. Instead, it must be combined with `ts.factory.createPrefixUnaryExpression` function like below: ```typescript ts.factory.createPrefixUnaryExpression( ts.SyntaxKind.MinusToken, ts.factory.createNumericLiteral(Math.abs(value)), ) ```
1 parent 1e131e4 commit 45af38f

18 files changed

+64
-72
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "typia",
3-
"version": "5.2.5",
3+
"version": "5.2.6",
44
"description": "Superfast runtime validators with only one line",
55
"main": "lib/index.js",
66
"typings": "lib/index.d.ts",

packages/typescript-json/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "typescript-json",
3-
"version": "5.2.5",
3+
"version": "5.2.6",
44
"description": "Superfast runtime validators with only one line",
55
"main": "lib/index.js",
66
"typings": "lib/index.d.ts",
@@ -72,7 +72,7 @@
7272
},
7373
"homepage": "https://typia.io",
7474
"dependencies": {
75-
"typia": "5.2.5"
75+
"typia": "5.2.6"
7676
},
7777
"peerDependencies": {
7878
"typescript": ">=4.8.0 <5.3.0"

src/factories/ExpressionFactory.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@ import ts from "typescript";
33
import { RandomGenerator } from "../utils/RandomGenerator";
44

55
export namespace ExpressionFactory {
6+
export const number = (value: number) =>
7+
value < 0
8+
? ts.factory.createPrefixUnaryExpression(
9+
ts.SyntaxKind.MinusToken,
10+
ts.factory.createNumericLiteral(Math.abs(value)),
11+
)
12+
: ts.factory.createNumericLiteral(value);
13+
614
export const bigint = (value: number | bigint) =>
715
ts.factory.createCallExpression(
816
ts.factory.createIdentifier("BigInt"),

src/programmers/CheckerProgrammer.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,7 @@ export namespace CheckerProgrammer {
779779
IdentifierFactory.access(input)("slice"),
780780
undefined,
781781
[
782-
ts.factory.createNumericLiteral(
782+
ExpressionFactory.number(
783783
tuple.elements.length - 1,
784784
),
785785
],
@@ -809,7 +809,7 @@ export namespace CheckerProgrammer {
809809
expression:
810810
ts.factory.createStrictEquality(
811811
arrayLength,
812-
ts.factory.createNumericLiteral(
812+
ExpressionFactory.number(
813813
tuple.elements.length,
814814
),
815815
),
@@ -820,7 +820,7 @@ export namespace CheckerProgrammer {
820820
combined: false,
821821
expression: ts.factory.createLogicalAnd(
822822
ts.factory.createLessThanEquals(
823-
ts.factory.createNumericLiteral(
823+
ExpressionFactory.number(
824824
tuple.elements.filter(
825825
(t) =>
826826
t.optional === false,
@@ -829,7 +829,7 @@ export namespace CheckerProgrammer {
829829
arrayLength,
830830
),
831831
ts.factory.createGreaterThanEquals(
832-
ts.factory.createNumericLiteral(
832+
ExpressionFactory.number(
833833
tuple.elements.length,
834834
),
835835
arrayLength,

src/programmers/RandomProgrammer.ts

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ export namespace RandomProgrammer {
123123
IdentifierFactory.parameter(
124124
"_depth",
125125
TypeFactory.keyword("number"),
126-
ts.factory.createNumericLiteral(0),
126+
ExpressionFactory.number(0),
127127
),
128128
],
129129
TypeFactory.keyword("any"),
@@ -163,7 +163,7 @@ export namespace RandomProgrammer {
163163
IdentifierFactory.parameter(
164164
"_depth",
165165
TypeFactory.keyword("number"),
166-
ts.factory.createNumericLiteral(0),
166+
ExpressionFactory.number(0),
167167
),
168168
],
169169
TypeFactory.keyword("any"),
@@ -204,7 +204,7 @@ export namespace RandomProgrammer {
204204
IdentifierFactory.parameter(
205205
"_depth",
206206
TypeFactory.keyword("number"),
207-
ts.factory.createNumericLiteral(0),
207+
ExpressionFactory.number(0),
208208
),
209209
],
210210
TypeFactory.keyword("any"),
@@ -312,7 +312,7 @@ export namespace RandomProgrammer {
312312
typeof value === "boolean"
313313
? ts.factory.createIdentifier(value.toString())
314314
: typeof value === "number"
315-
? ts.factory.createNumericLiteral(value)
315+
? ExpressionFactory.number(value)
316316
: typeof value === "string"
317317
? ts.factory.createStringLiteral(value)
318318
: ExpressionFactory.bigint(Number(value));
@@ -346,16 +346,15 @@ export namespace RandomProgrammer {
346346
return random_custom(COALESCE(importer))("number")(tags)(
347347
RandomRanger.number({
348348
type,
349-
transform: (value) =>
350-
ts.factory.createNumericLiteral(value),
349+
transform: (value) => ExpressionFactory.number(value),
351350
setter: (args) =>
352351
ts.factory.createCallExpression(
353352
type !== "double" || multiply !== undefined
354353
? COALESCE(importer)("integer")
355354
: COALESCE(importer)("number"),
356355
undefined,
357356
args.map((val) =>
358-
ts.factory.createNumericLiteral(val),
357+
ExpressionFactory.number(val),
359358
),
360359
),
361360
})({
@@ -469,10 +468,10 @@ export namespace RandomProgrammer {
469468
ts.factory.createTrue(),
470469
explore.recursive
471470
? ts.factory.createAdd(
472-
ts.factory.createNumericLiteral(1),
471+
ExpressionFactory.number(1),
473472
ts.factory.createIdentifier("_depth"),
474473
)
475-
: ts.factory.createNumericLiteral(0),
474+
: ExpressionFactory.number(0),
476475
],
477476
),
478477
);
@@ -485,7 +484,7 @@ export namespace RandomProgrammer {
485484
ts.factory.createLogicalAnd(
486485
ts.factory.createIdentifier("_recursive"),
487486
ts.factory.createLessThan(
488-
ts.factory.createNumericLiteral(5),
487+
ExpressionFactory.number(5),
489488
ts.factory.createIdentifier("_depth"),
490489
),
491490
),
@@ -512,10 +511,10 @@ export namespace RandomProgrammer {
512511
ts.factory.createTrue(),
513512
explore.recursive
514513
? ts.factory.createAdd(
515-
ts.factory.createNumericLiteral(1),
514+
ExpressionFactory.number(1),
516515
ts.factory.createIdentifier("_depth"),
517516
)
518-
: ts.factory.createNumericLiteral(0),
517+
: ExpressionFactory.number(0),
519518
],
520519
)
521520
: RandomJoiner.tuple(decode(importer)(explore))(
@@ -540,7 +539,7 @@ export namespace RandomProgrammer {
540539
ts.factory.createIdentifier("_recursive"),
541540
undefined,
542541
ts.factory.createAdd(
543-
ts.factory.createNumericLiteral(1),
542+
ExpressionFactory.number(1),
544543
ts.factory.createIdentifier("_depth"),
545544
),
546545
undefined,
@@ -716,7 +715,7 @@ export namespace RandomProgrammer {
716715
const literal =
717716
type === "BigInt64Array" || type === "BigUint64Array"
718717
? ExpressionFactory.bigint
719-
: ts.factory.createNumericLiteral;
718+
: ExpressionFactory.number;
720719
return ts.factory.createNewExpression(
721720
ts.factory.createIdentifier(type),
722721
[],
@@ -812,10 +811,10 @@ export namespace RandomProgrammer {
812811
),
813812
undefined,
814813
[
815-
ts.factory.createNumericLiteral(
814+
ExpressionFactory.number(
816815
0,
817816
),
818-
ts.factory.createNumericLiteral(
817+
ExpressionFactory.number(
819818
255,
820819
),
821820
],
@@ -826,7 +825,7 @@ export namespace RandomProgrammer {
826825
),
827826
],
828827
),
829-
ts.factory.createNumericLiteral(0),
828+
ExpressionFactory.number(0),
830829
],
831830
),
832831
),

src/programmers/ValidateProgrammer.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import ts from "typescript";
22

3+
import { ExpressionFactory } from "../factories/ExpressionFactory";
34
import { IdentifierFactory } from "../factories/IdentifierFactory";
45
import { StatementFactory } from "../factories/StatementFactory";
56
import { TypeFactory } from "../factories/TypeFactory";
@@ -176,7 +177,7 @@ export namespace ValidateProgrammer {
176177
StatementFactory.constant(
177178
"success",
178179
ts.factory.createStrictEquality(
179-
ts.factory.createNumericLiteral(0),
180+
ExpressionFactory.number(0),
180181
ts.factory.createIdentifier("errors.length"),
181182
),
182183
),

src/programmers/helpers/RandomJoiner.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import ts from "typescript";
22

3+
import { ExpressionFactory } from "../../factories/ExpressionFactory";
34
import { StatementFactory } from "../../factories/StatementFactory";
45
import { TypeFactory } from "../../factories/TypeFactory";
56

@@ -36,7 +37,7 @@ export namespace RandomJoiner {
3637
if (explore.recursive === false) return generator;
3738
return ts.factory.createConditionalExpression(
3839
ts.factory.createGreaterThanEquals(
39-
ts.factory.createNumericLiteral(5),
40+
ExpressionFactory.number(5),
4041
ts.factory.createIdentifier("_depth"),
4142
),
4243
undefined,
@@ -99,7 +100,7 @@ export namespace RandomJoiner {
99100
? [
100101
ts.factory.createIfStatement(
101102
ts.factory.createGreaterThanEquals(
102-
ts.factory.createNumericLiteral(5),
103+
ExpressionFactory.number(5),
103104
ts.factory.createIdentifier("_depth"),
104105
),
105106
ts.factory.createBlock(properties, true),
@@ -137,10 +138,7 @@ export namespace RandomJoiner {
137138
ts.factory.createCallExpression(
138139
coalesce("integer"),
139140
undefined,
140-
[
141-
ts.factory.createNumericLiteral(0),
142-
ts.factory.createNumericLiteral(3),
143-
],
141+
[ExpressionFactory.number(0), ExpressionFactory.number(3)],
144142
),
145143
]);
146144
}

src/programmers/helpers/RandomRanger.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import ts from "typescript";
22

3+
import { ExpressionFactory } from "../../factories/ExpressionFactory";
4+
35
import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
46

57
export namespace RandomRanger {
@@ -30,8 +32,8 @@ export namespace RandomRanger {
3032
coalesce("integer"),
3133
undefined,
3234
[
33-
ts.factory.createNumericLiteral(props.minimum),
34-
ts.factory.createNumericLiteral(props.maximum),
35+
ExpressionFactory.number(props.minimum),
36+
ExpressionFactory.number(props.maximum),
3537
],
3638
);
3739
};

src/programmers/http/HttpHeadersProgrammer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ export namespace HttpHeadersProgrammer {
196196
const access = IdentifierFactory.access(output)(key);
197197
return ts.factory.createIfStatement(
198198
ts.factory.createStrictEquality(
199-
ts.factory.createNumericLiteral(0),
199+
ExpressionFactory.number(0),
200200
IdentifierFactory.access(access)("length"),
201201
),
202202
ts.factory.createExpressionStatement(

src/programmers/internal/check_dynamic_properties.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import ts from "typescript";
22

3+
import { ExpressionFactory } from "../../factories/ExpressionFactory";
34
import { IdentifierFactory } from "../../factories/IdentifierFactory";
45
import { StatementFactory } from "../../factories/StatementFactory";
56

@@ -35,7 +36,7 @@ export const check_dynamic_properties =
3536
? props.undefined === true ||
3637
regular.every((r) => r.meta.isRequired())
3738
? ts.factory.createStrictEquality(
38-
ts.factory.createNumericLiteral(
39+
ExpressionFactory.number(
3940
regular.filter((r) => r.meta.isRequired()).length,
4041
),
4142
length,
@@ -45,11 +46,11 @@ export const check_dynamic_properties =
4546
[],
4647
[
4748
length,
48-
ts.factory.createNumericLiteral(
49+
ExpressionFactory.number(
4950
regular.filter((r) => r.meta.isRequired())
5051
.length,
5152
),
52-
ts.factory.createNumericLiteral(regular.length),
53+
ExpressionFactory.number(regular.length),
5354
],
5455
)
5556
: null;

0 commit comments

Comments
 (0)