From 14cc32f92e376df1e084bdcb58ea173dfa8ccab8 Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Sun, 5 Feb 2023 00:00:07 +0900 Subject: [PATCH 01/12] Add typia --- .gitignore | 3 ++ cases/index.ts | 1 + cases/typia/index.ts | 7 ++++ cases/typia/src/index.ts | 20 ++++++++++ cases/typia/tsconfig.json | 11 +++++ docs/results/node-18.json | 1 - index.ts | 5 +++ package-lock.json | 84 +++++++++++++++++++-------------------- package.json | 10 +++-- 9 files changed, 93 insertions(+), 49 deletions(-) create mode 100644 cases/typia/index.ts create mode 100644 cases/typia/src/index.ts create mode 100644 cases/typia/tsconfig.json delete mode 100644 docs/results/node-18.json diff --git a/.gitignore b/.gitignore index 36b533ed3..70177f591 100644 --- a/.gitignore +++ b/.gitignore @@ -105,3 +105,6 @@ cases/spectypes/build # ts-runtime-checks build artifacts cases/ts-runtime-checks/build + +# typia build artifacts +cases/typia/build \ No newline at end of file diff --git a/cases/index.ts b/cases/index.ts index a4e05cfae..65e10679c 100644 --- a/cases/index.ts +++ b/cases/index.ts @@ -31,6 +31,7 @@ export const cases = [ 'ts-utils', 'tson', 'typeofweb-schema', + 'typia', 'valita', 'vality', 'yup', diff --git a/cases/typia/index.ts b/cases/typia/index.ts new file mode 100644 index 000000000..3413dd1b9 --- /dev/null +++ b/cases/typia/index.ts @@ -0,0 +1,7 @@ +import { parseSafe, parseStrict, assertLoose, assertStrict } from './build'; +import { addCase } from '../../benchmarks'; + +addCase('typia', 'parseSafe', parseSafe); +addCase('typia', 'parseStrict', parseStrict); +addCase('typia', 'assertStrict', assertStrict); +addCase('typia', 'assertLoose', assertLoose); diff --git a/cases/typia/src/index.ts b/cases/typia/src/index.ts new file mode 100644 index 000000000..8ee543be1 --- /dev/null +++ b/cases/typia/src/index.ts @@ -0,0 +1,20 @@ +import typia from "typia"; + +interface ToBeChecked { + number: number; + negNumber: number; + maxNumber: number; + string: string; + longString: string; + boolean: boolean; + deeplyNested: { + foo: string; + num: number; + bool: boolean; + }; +} + +export const parseSafe = typia.createIs(); +export const parseStrict = typia.createEquals(); +export const assertStrict = typia.createAssertEquals(); +export const assertLoose = typia.createAssert(); \ No newline at end of file diff --git a/cases/typia/tsconfig.json b/cases/typia/tsconfig.json new file mode 100644 index 000000000..915c1d5a5 --- /dev/null +++ b/cases/typia/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "outDir": "build", + "strict": true, + "plugins": [{ "transform": "typia/lib/transform" }] + }, + "include": ["src/index.ts"] + } + \ No newline at end of file diff --git a/docs/results/node-18.json b/docs/results/node-18.json deleted file mode 100644 index 00a2501f6..000000000 --- a/docs/results/node-18.json +++ /dev/null @@ -1 +0,0 @@ -{"results":[{"benchmark":"assertLoose","name":"ajv","ops":17772010,"margin":0.4,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"ajv","ops":10415157,"margin":0.41,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"bueno","ops":139953,"margin":0.36,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"bueno","ops":137235,"margin":0.79,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"bueno","ops":247877,"margin":0.39,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"bueno","ops":243669,"margin":0.4,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"class-transformer-validator-sync","ops":51994,"margin":2.66,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"computed-types","ops":733541,"margin":0.43,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"computed-types","ops":567824,"margin":0.38,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"computed-types","ops":561579,"margin":0.34,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"decoders","ops":204278,"margin":0.42,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"decoders","ops":123943,"margin":0.38,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"decoders","ops":124461,"margin":0.35,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"io-ts","ops":1208169,"margin":0.4,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"jointz","ops":324228,"margin":0.33,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"jointz","ops":326706,"margin":0.33,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"jointz","ops":419451,"margin":0.32,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"json-decoder","ops":715674,"margin":0.28,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"marshal","ops":19177267,"margin":0.37,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"@mojotech/json-type-validation","ops":1116496,"margin":0.28,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"myzod","ops":1042619,"margin":0.27,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"myzod","ops":1184259,"margin":0.39,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"myzod","ops":1159726,"margin":0.36,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"ok-computer","ops":115315,"margin":0.28,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"ok-computer","ops":118970,"margin":0.3,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"parse-dont-validate (chained function)","ops":337012,"margin":0.49,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"parse-dont-validate (named parameters)","ops":1214376,"margin":0.33,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"purify-ts","ops":635926,"margin":0.29,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"r-assign","ops":537336,"margin":0.36,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"r-assign","ops":523500,"margin":0.4,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"r-assign","ops":535059,"margin":0.33,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"r-assign","ops":518360,"margin":0.49,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"rescript-struct","ops":24242065,"margin":0.46,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"rescript-struct","ops":10118160,"margin":0.42,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"rescript-struct","ops":16593239,"margin":0.35,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"rescript-struct","ops":9994229,"margin":0.26,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"rulr","ops":520949,"margin":0.37,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"runtypes","ops":100052,"margin":0.26,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"@sapphire/shapeshift","ops":198943,"margin":0.31,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"@sapphire/shapeshift","ops":200396,"margin":0.31,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"@sapphire/shapeshift","ops":167754,"margin":0.29,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"@sapphire/shapeshift","ops":196689,"margin":0.35,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"simple-runtypes","ops":1318329,"margin":0.43,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"simple-runtypes","ops":1701066,"margin":0.31,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"simple-runtypes","ops":1693562,"margin":0.38,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"@sinclair/typebox","ops":28274615,"margin":0.42,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"@sinclair/typebox","ops":13641181,"margin":0.36,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"spectypes","ops":17047311,"margin":0.45,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"spectypes","ops":14134516,"margin":0.36,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"spectypes","ops":39547320,"margin":0.41,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"spectypes","ops":13645512,"margin":0.25,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"superstruct","ops":102617,"margin":0.45,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"superstruct","ops":121636,"margin":0.33,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"superstruct","ops":102270,"margin":0.32,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"suretype","ops":19112817,"margin":0.43,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"to-typed","ops":2067562,"margin":0.39,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"to-typed","ops":1506435,"margin":0.3,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"to-typed","ops":60814,"margin":0.55,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"to-typed","ops":1622650,"margin":0.87,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"toi","ops":440156,"margin":0.25,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"toi","ops":481698,"margin":0.4,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"ts-interface-checker","ops":1958484,"margin":0.34,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"ts-json-validator","ops":19112279,"margin":0.34,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"ts-runtime-checks","ops":18012593,"margin":0.43,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"ts-runtime-checks","ops":17542303,"margin":0.37,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"ts-runtime-checks","ops":57809428,"margin":0.29,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"ts-utils","ops":170678,"margin":0.35,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"tson","ops":328514,"margin":0.32,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"tson","ops":383029,"margin":0.38,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"tson","ops":377436,"margin":0.31,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"tson","ops":387558,"margin":0.35,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"@typeofweb/schema","ops":717671,"margin":0.22,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"@typeofweb/schema","ops":705545,"margin":0.33,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"valita","ops":2662589,"margin":0.33,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"valita","ops":2685517,"margin":0.32,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"valita","ops":3100925,"margin":0.35,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"valita","ops":2804645,"margin":0.46,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"vality","ops":124872,"margin":0.5,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"vality","ops":118637,"margin":0.34,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"vality","ops":123034,"margin":0.29,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"vality","ops":119173,"margin":0.25,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"yup","ops":26715,"margin":0.36,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"yup","ops":25846,"margin":0.65,"nodeVersion":"v18.13.0"},{"benchmark":"parseSafe","name":"zod","ops":358399,"margin":0.3,"nodeVersion":"v18.13.0"},{"benchmark":"parseStrict","name":"zod","ops":324665,"margin":0.43,"nodeVersion":"v18.13.0"},{"benchmark":"assertLoose","name":"zod","ops":331805,"margin":0.42,"nodeVersion":"v18.13.0"},{"benchmark":"assertStrict","name":"zod","ops":330655,"margin":0.35,"nodeVersion":"v18.13.0"}]} \ No newline at end of file diff --git a/index.ts b/index.ts index c0c2262f4..beb30d227 100644 --- a/index.ts +++ b/index.ts @@ -31,6 +31,11 @@ async function main() { stdio: 'inherit', }); } + if (c === 'typia') { + childProcess.execSync('npm run compile:typia', { + stdio: 'inherit', + }); + } const cmd = [...process.argv.slice(0, 2), 'run-internal', c]; diff --git a/package-lock.json b/package-lock.json index 07f7a2863..293c79b80 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,8 +55,9 @@ "ts-json-validator": "0.7.1", "ts-node": "10.9.1", "ts-runtime-checks": "0.1.3", - "ttypescript": "1.5.13", - "typescript": "4.6.2", + "ttypescript": "1.5.15", + "typescript": "4.9.5", + "typia": "^3.4.22", "vality": "6.2.1", "vega": "5.22.1", "vega-lite": "4.11.0", @@ -70,7 +71,7 @@ "@babel/preset-typescript": "7.18.6", "@types/clone": "2.1.1", "@types/jest": "29.0.2", - "@types/node": "16.11.59", + "@types/node": "^18.11.18", "@types/svgo": "2.6.0", "@types/yup": "0.29.14", "babel-plugin-spectypes": "2.1.7", @@ -2647,19 +2648,6 @@ "typescript": "^4.6.2" } }, - "node_modules/@skarab/tson/node_modules/typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", - "optional": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "node_modules/@toi/toi": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@toi/toi/-/toi-1.3.0.tgz", @@ -2827,9 +2815,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.11.59", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz", - "integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==" + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -9263,10 +9251,9 @@ } }, "node_modules/ttypescript": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/ttypescript/-/ttypescript-1.5.13.tgz", - "integrity": "sha512-KT/RBfGGlVJFqEI8cVvI3nMsmYcFvPSZh8bU0qX+pAwbi7/ABmYkzn7l/K8skw0xmYjVCoyaV6WLsBQxdadybQ==", - "license": "MIT", + "version": "1.5.15", + "resolved": "https://registry.npmjs.org/ttypescript/-/ttypescript-1.5.15.tgz", + "integrity": "sha512-48ykDNHzFnPMnv4hYX1P8Q84TvCZyL1QlFxeuxsuZ48X2+ameBgPenvmCkHJtoOSxpoWTWi8NcgNrRnVDOmfSg==", "dependencies": { "resolve": ">=1.9.0" }, @@ -9322,10 +9309,9 @@ } }, "node_modules/typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", - "license": "Apache-2.0", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -9334,6 +9320,18 @@ "node": ">=4.2.0" } }, + "node_modules/typia": { + "version": "3.4.22", + "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.22.tgz", + "integrity": "sha512-BuQK6sTw8llkD3VCyHq2q6UaMDQHc+zzdOSGOChTOPlfaK5cMC4Z+XiSx4Sm99zPzMX5KL9L3BLg4NEzLIt/zg==", + "bin": { + "typia": "lib/executable/typia.js" + }, + "peerDependencies": { + "ttypescript": ">= 1.5.15", + "typescript": ">= 4.5.2" + } + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -12080,14 +12078,6 @@ "integrity": "sha512-DZMeweKar8axpt9OtW+8OW7GmAQELM0IBiDHkz1/rkzkW0MR9VmIiKNMx7TP2BxonZnDIaUtEXB47eOU5oRRpw==", "requires": { "typescript": "^4.6.2" - }, - "dependencies": { - "typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", - "optional": true - } } }, "@toi/toi": { @@ -12250,9 +12240,9 @@ "dev": true }, "@types/node": { - "version": "16.11.59", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz", - "integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==" + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -17017,9 +17007,9 @@ } }, "ttypescript": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/ttypescript/-/ttypescript-1.5.13.tgz", - "integrity": "sha512-KT/RBfGGlVJFqEI8cVvI3nMsmYcFvPSZh8bU0qX+pAwbi7/ABmYkzn7l/K8skw0xmYjVCoyaV6WLsBQxdadybQ==", + "version": "1.5.15", + "resolved": "https://registry.npmjs.org/ttypescript/-/ttypescript-1.5.15.tgz", + "integrity": "sha512-48ykDNHzFnPMnv4hYX1P8Q84TvCZyL1QlFxeuxsuZ48X2+ameBgPenvmCkHJtoOSxpoWTWi8NcgNrRnVDOmfSg==", "requires": { "resolve": ">=1.9.0" } @@ -17055,9 +17045,15 @@ } }, "typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==" + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" + }, + "typia": { + "version": "3.4.22", + "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.22.tgz", + "integrity": "sha512-BuQK6sTw8llkD3VCyHq2q6UaMDQHc+zzdOSGOChTOPlfaK5cMC4Z+XiSx4Sm99zPzMX5KL9L3BLg4NEzLIt/zg==", + "requires": {} }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", diff --git a/package.json b/package.json index a635014ec..544ad15c2 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "docs:watch": "tsc --project tsconfig.docs.json --watch --preserveWatchOutput & serve docs", "docs:build": "tsc --project tsconfig.docs.json", "compile:spectypes": "rimraf cases/spectypes/build && tsc -p cases/spectypes/src && babel cases/spectypes/src --out-dir cases/spectypes/build --extensions \".ts\"", - "compile:ts-runtime-checks": "rimraf cases/ts-runtime-checks/build && ttsc -p cases/ts-runtime-checks/src" + "compile:ts-runtime-checks": "rimraf cases/ts-runtime-checks/build && ttsc -p cases/ts-runtime-checks/src", + "compile:typia": "rimraf cases/typia/build && ttsc -p cases/typia/tsconfig.json" }, "dependencies": { "@ailabs/ts-utils": "1.4.0", @@ -67,8 +68,9 @@ "ts-json-validator": "0.7.1", "ts-node": "10.9.1", "ts-runtime-checks": "0.1.3", - "ttypescript": "1.5.13", - "typescript": "4.6.2", + "ttypescript": "1.5.15", + "typescript": "4.9.5", + "typia": "^3.4.22", "vality": "6.2.1", "vega": "5.22.1", "vega-lite": "4.11.0", @@ -82,7 +84,7 @@ "@babel/preset-typescript": "7.18.6", "@types/clone": "2.1.1", "@types/jest": "29.0.2", - "@types/node": "16.11.59", + "@types/node": "^18.11.18", "@types/svgo": "2.6.0", "@types/yup": "0.29.14", "babel-plugin-spectypes": "2.1.7", From 162e69a051dfa749e4eb91a46f9dee25968df3cb Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Sun, 5 Feb 2023 00:05:36 +0900 Subject: [PATCH 02/12] For lint --- cases/typia/src/index.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/cases/typia/src/index.ts b/cases/typia/src/index.ts index 8ee543be1..9f34d2e5c 100644 --- a/cases/typia/src/index.ts +++ b/cases/typia/src/index.ts @@ -1,17 +1,17 @@ -import typia from "typia"; +import typia from 'typia'; interface ToBeChecked { - number: number; - negNumber: number; - maxNumber: number; - string: string; - longString: string; - boolean: boolean; - deeplyNested: { - foo: string; - num: number; - bool: boolean; - }; + number: number; + negNumber: number; + maxNumber: number; + string: string; + longString: string; + boolean: boolean; + deeplyNested: { + foo: string; + num: number; + bool: boolean; + }; } export const parseSafe = typia.createIs(); From dc8e747e77733a438d25cae5b725a9331931d18e Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Sun, 5 Feb 2023 00:11:22 +0900 Subject: [PATCH 03/12] Add new line --- cases/typia/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cases/typia/src/index.ts b/cases/typia/src/index.ts index 9f34d2e5c..8f68b7e70 100644 --- a/cases/typia/src/index.ts +++ b/cases/typia/src/index.ts @@ -17,4 +17,4 @@ interface ToBeChecked { export const parseSafe = typia.createIs(); export const parseStrict = typia.createEquals(); export const assertStrict = typia.createAssertEquals(); -export const assertLoose = typia.createAssert(); \ No newline at end of file +export const assertLoose = typia.createAssert(); From 51abd9f6089c69d760974a52ab79fa4c5152ab7b Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Sun, 5 Feb 2023 00:18:54 +0900 Subject: [PATCH 04/12] typia on npm commands --- .eslintignore | 1 + package-lock.json | 14 +++++++------- package.json | 6 +++--- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/.eslintignore b/.eslintignore index 8f4c05681..76c33c32f 100644 --- a/.eslintignore +++ b/.eslintignore @@ -2,3 +2,4 @@ docs/dist cases/spectypes/build cases/ts-runtime-checks/build +case/typia/build \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 293c79b80..f14ab36e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -56,7 +56,7 @@ "ts-node": "10.9.1", "ts-runtime-checks": "0.1.3", "ttypescript": "1.5.15", - "typescript": "4.9.5", + "typescript": "4.6.2", "typia": "^3.4.22", "vality": "6.2.1", "vega": "5.22.1", @@ -9309,9 +9309,9 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", + "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -17045,9 +17045,9 @@ } }, "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", + "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==" }, "typia": { "version": "3.4.22", diff --git a/package.json b/package.json index 544ad15c2..390745034 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,8 @@ "lint": "gts check", "lint:fix": "gts fix", "start": "ts-node index.ts", - "test:build": "npm run compile:spectypes && npm run compile:ts-runtime-checks && tsc --noEmit", - "test": "npm run compile:spectypes && npm run compile:ts-runtime-checks && jest", + "test:build": "npm run compile:spectypes && npm run compile:ts-runtime-checks && npm run compile:typia && tsc --noEmit", + "test": "npm run compile:spectypes && npm run compile:ts-runtime-checks && npm run compile:typia && jest", "docs:serve": "serve docs", "docs:watch": "tsc --project tsconfig.docs.json --watch --preserveWatchOutput & serve docs", "docs:build": "tsc --project tsconfig.docs.json", @@ -69,7 +69,7 @@ "ts-node": "10.9.1", "ts-runtime-checks": "0.1.3", "ttypescript": "1.5.15", - "typescript": "4.9.5", + "typescript": "4.6.2", "typia": "^3.4.22", "vality": "6.2.1", "vega": "5.22.1", From bcf628ae13d77acbc15288f881fd1dfcf3ec3cf0 Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Sun, 5 Feb 2023 00:41:25 +0900 Subject: [PATCH 05/12] Understood what parseSafe is --- cases/typia/src/index.ts | 28 ++++++++++++++++++++++++---- test/benchmarks.test.ts | 1 + 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/cases/typia/src/index.ts b/cases/typia/src/index.ts index 8f68b7e70..a42175194 100644 --- a/cases/typia/src/index.ts +++ b/cases/typia/src/index.ts @@ -14,7 +14,27 @@ interface ToBeChecked { }; } -export const parseSafe = typia.createIs(); -export const parseStrict = typia.createEquals(); -export const assertStrict = typia.createAssertEquals(); -export const assertLoose = typia.createAssert(); +const is = typia.createIs(); +const equals = typia.createEquals(); +const stringify = typia.createIsStringify(); + +export function assertLoose(input: unknown): boolean { + if (!is(input)) throw new Error('wrong type.'); + return true; +} + +export function assertStrict(input: unknown): boolean { + if (!equals(input)) throw new Error('wrong type.'); + return true; +} + +export function parseStrict(input: unknown): ToBeChecked { + if (!equals(input)) throw new Error('wrong type.'); + return input; +} + +export function parseSafe(input: unknown): ToBeChecked { + const json: string | null = stringify(input); + if (json === null) throw new Error('wrong type.'); + return JSON.parse(json); +} diff --git a/test/benchmarks.test.ts b/test/benchmarks.test.ts index a00ad27f0..3f700d31d 100644 --- a/test/benchmarks.test.ts +++ b/test/benchmarks.test.ts @@ -35,6 +35,7 @@ import '../cases/ts-runtime-checks'; import '../cases/ts-utils'; import '../cases/tson'; import '../cases/typeofweb-schema'; +import '../cases/typia'; import '../cases/valita'; import '../cases/vality'; import '../cases/yup'; From c6b28158e96180f90a031a1835129017f0d914ba Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Sun, 5 Feb 2023 00:55:33 +0900 Subject: [PATCH 06/12] More simple parseSafe --- cases/typia/src/index.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/cases/typia/src/index.ts b/cases/typia/src/index.ts index a42175194..a823029a1 100644 --- a/cases/typia/src/index.ts +++ b/cases/typia/src/index.ts @@ -16,7 +16,7 @@ interface ToBeChecked { const is = typia.createIs(); const equals = typia.createEquals(); -const stringify = typia.createIsStringify(); +const stringify = typia.createStringify(); export function assertLoose(input: unknown): boolean { if (!is(input)) throw new Error('wrong type.'); @@ -34,7 +34,6 @@ export function parseStrict(input: unknown): ToBeChecked { } export function parseSafe(input: unknown): ToBeChecked { - const json: string | null = stringify(input); - if (json === null) throw new Error('wrong type.'); - return JSON.parse(json); + if (!is(input)) throw new Error('wrong type.'); + return JSON.parse(stringify(input)); } From b507bdfb85ac11c9a3f248cc89b547200e40d960 Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Sun, 5 Feb 2023 01:11:33 +0900 Subject: [PATCH 07/12] Update README.md - add typia --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 155a60073..6234fec38 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ * [ts-runtime-checks](https://github.com/GoogleFeud/ts-runtime-checks) * [tson](https://github.com/skarab42/tson) * [ts-utils](https://github.com/ai-labs-team/ts-utils) +* [typia](https://github.com/samchon/typia) * [@typeofweb/schema](https://github.com/typeofweb/schema) * [valita](https://github.com/badrap/valita) * [Vality](https://github.com/jeengbe/vality) From f7fd10774cf6c5a6bf4a9f619604f53736090555 Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Sun, 5 Feb 2023 02:14:35 +0900 Subject: [PATCH 08/12] Change `ITransformOptions.undefined` value --- cases/typia/tsconfig.json | 7 ++++++- package-lock.json | 14 +++++++------- package.json | 2 +- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/cases/typia/tsconfig.json b/cases/typia/tsconfig.json index 915c1d5a5..c94c1b599 100644 --- a/cases/typia/tsconfig.json +++ b/cases/typia/tsconfig.json @@ -4,7 +4,12 @@ "module": "commonjs", "outDir": "build", "strict": true, - "plugins": [{ "transform": "typia/lib/transform" }] + "plugins": [ + { + "transform": "typia/lib/transform", + "undefined": false + } + ] }, "include": ["src/index.ts"] } diff --git a/package-lock.json b/package-lock.json index f14ab36e4..a318613f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,7 +57,7 @@ "ts-runtime-checks": "0.1.3", "ttypescript": "1.5.15", "typescript": "4.6.2", - "typia": "^3.4.22", + "typia": "3.4.23", "vality": "6.2.1", "vega": "5.22.1", "vega-lite": "4.11.0", @@ -9321,9 +9321,9 @@ } }, "node_modules/typia": { - "version": "3.4.22", - "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.22.tgz", - "integrity": "sha512-BuQK6sTw8llkD3VCyHq2q6UaMDQHc+zzdOSGOChTOPlfaK5cMC4Z+XiSx4Sm99zPzMX5KL9L3BLg4NEzLIt/zg==", + "version": "3.4.23", + "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.23.tgz", + "integrity": "sha512-HiX+h5r7zip46szaajd6pQnsTcI5kuAbVEXbI7sO+LMYVIiy2kLcIXl1eRAKQSZCLJ+Gvt7TSK1Y9N/vGzHfuA==", "bin": { "typia": "lib/executable/typia.js" }, @@ -17050,9 +17050,9 @@ "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==" }, "typia": { - "version": "3.4.22", - "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.22.tgz", - "integrity": "sha512-BuQK6sTw8llkD3VCyHq2q6UaMDQHc+zzdOSGOChTOPlfaK5cMC4Z+XiSx4Sm99zPzMX5KL9L3BLg4NEzLIt/zg==", + "version": "3.4.23", + "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.23.tgz", + "integrity": "sha512-HiX+h5r7zip46szaajd6pQnsTcI5kuAbVEXbI7sO+LMYVIiy2kLcIXl1eRAKQSZCLJ+Gvt7TSK1Y9N/vGzHfuA==", "requires": {} }, "unicode-canonical-property-names-ecmascript": { diff --git a/package.json b/package.json index 390745034..a1a929803 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "ts-runtime-checks": "0.1.3", "ttypescript": "1.5.15", "typescript": "4.6.2", - "typia": "^3.4.22", + "typia": "3.4.23", "vality": "6.2.1", "vega": "5.22.1", "vega-lite": "4.11.0", From 13250334267a74ce61fd765df88a3390906a21f5 Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Sun, 5 Feb 2023 02:52:11 +0900 Subject: [PATCH 09/12] Upgrade typia version --- cases/typia/tsconfig.json | 5 +---- package.json | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/cases/typia/tsconfig.json b/cases/typia/tsconfig.json index c94c1b599..768be852e 100644 --- a/cases/typia/tsconfig.json +++ b/cases/typia/tsconfig.json @@ -5,10 +5,7 @@ "outDir": "build", "strict": true, "plugins": [ - { - "transform": "typia/lib/transform", - "undefined": false - } + { "transform": "typia/lib/transform" } ] }, "include": ["src/index.ts"] diff --git a/package.json b/package.json index a1a929803..c83c2cf47 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "ts-runtime-checks": "0.1.3", "ttypescript": "1.5.15", "typescript": "4.6.2", - "typia": "3.4.23", + "typia": "3.4.24", "vality": "6.2.1", "vega": "5.22.1", "vega-lite": "4.11.0", From 0d5f01229cc6cf85a4a3018fa8c225ea1539c767 Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Sun, 5 Feb 2023 03:50:01 +0900 Subject: [PATCH 10/12] Upgrade typia version --- cases/typia/tsconfig.json | 5 ++++- package-lock.json | 14 +++++++------- package.json | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/cases/typia/tsconfig.json b/cases/typia/tsconfig.json index 768be852e..8aa00ec5d 100644 --- a/cases/typia/tsconfig.json +++ b/cases/typia/tsconfig.json @@ -5,7 +5,10 @@ "outDir": "build", "strict": true, "plugins": [ - { "transform": "typia/lib/transform" } + { + "transform": "typia/lib/transform", + "undefined": false, + } ] }, "include": ["src/index.ts"] diff --git a/package-lock.json b/package-lock.json index a318613f5..ba97a6931 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,7 +57,7 @@ "ts-runtime-checks": "0.1.3", "ttypescript": "1.5.15", "typescript": "4.6.2", - "typia": "3.4.23", + "typia": "3.4.25", "vality": "6.2.1", "vega": "5.22.1", "vega-lite": "4.11.0", @@ -9321,9 +9321,9 @@ } }, "node_modules/typia": { - "version": "3.4.23", - "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.23.tgz", - "integrity": "sha512-HiX+h5r7zip46szaajd6pQnsTcI5kuAbVEXbI7sO+LMYVIiy2kLcIXl1eRAKQSZCLJ+Gvt7TSK1Y9N/vGzHfuA==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.25.tgz", + "integrity": "sha512-c5Aggrb1Orz7/CvpDmUoi+QSWSzC3JvI2UwciCD7X7MUx5URnNgqPl3ehd4rAj8uV7slJ33I6NqloxQH1ecyJQ==", "bin": { "typia": "lib/executable/typia.js" }, @@ -17050,9 +17050,9 @@ "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==" }, "typia": { - "version": "3.4.23", - "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.23.tgz", - "integrity": "sha512-HiX+h5r7zip46szaajd6pQnsTcI5kuAbVEXbI7sO+LMYVIiy2kLcIXl1eRAKQSZCLJ+Gvt7TSK1Y9N/vGzHfuA==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.25.tgz", + "integrity": "sha512-c5Aggrb1Orz7/CvpDmUoi+QSWSzC3JvI2UwciCD7X7MUx5URnNgqPl3ehd4rAj8uV7slJ33I6NqloxQH1ecyJQ==", "requires": {} }, "unicode-canonical-property-names-ecmascript": { diff --git a/package.json b/package.json index c83c2cf47..5ed811f72 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "ts-runtime-checks": "0.1.3", "ttypescript": "1.5.15", "typescript": "4.6.2", - "typia": "3.4.24", + "typia": "3.4.25", "vality": "6.2.1", "vega": "5.22.1", "vega-lite": "4.11.0", From c2c36d1a7cf21f06232d91013f19bc699e1652dc Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Sun, 5 Feb 2023 04:16:30 +0900 Subject: [PATCH 11/12] Update typia again --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index ba97a6931..2b64231e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,7 +57,7 @@ "ts-runtime-checks": "0.1.3", "ttypescript": "1.5.15", "typescript": "4.6.2", - "typia": "3.4.25", + "typia": "^3.4.26", "vality": "6.2.1", "vega": "5.22.1", "vega-lite": "4.11.0", @@ -9321,9 +9321,9 @@ } }, "node_modules/typia": { - "version": "3.4.25", - "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.25.tgz", - "integrity": "sha512-c5Aggrb1Orz7/CvpDmUoi+QSWSzC3JvI2UwciCD7X7MUx5URnNgqPl3ehd4rAj8uV7slJ33I6NqloxQH1ecyJQ==", + "version": "3.4.26", + "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.26.tgz", + "integrity": "sha512-iSORsn+pTI12g8Rq0YcD5gci/tVU9AI5P7bxHgg4YgyY8ztMP1lYZtvqmK7+4ZbfSxxGmu2pBz5A7nnYj0tuhA==", "bin": { "typia": "lib/executable/typia.js" }, @@ -17050,9 +17050,9 @@ "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==" }, "typia": { - "version": "3.4.25", - "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.25.tgz", - "integrity": "sha512-c5Aggrb1Orz7/CvpDmUoi+QSWSzC3JvI2UwciCD7X7MUx5URnNgqPl3ehd4rAj8uV7slJ33I6NqloxQH1ecyJQ==", + "version": "3.4.26", + "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.26.tgz", + "integrity": "sha512-iSORsn+pTI12g8Rq0YcD5gci/tVU9AI5P7bxHgg4YgyY8ztMP1lYZtvqmK7+4ZbfSxxGmu2pBz5A7nnYj0tuhA==", "requires": {} }, "unicode-canonical-property-names-ecmascript": { diff --git a/package.json b/package.json index 5ed811f72..2985bffac 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "ts-runtime-checks": "0.1.3", "ttypescript": "1.5.15", "typescript": "4.6.2", - "typia": "3.4.25", + "typia": "3.4.26", "vality": "6.2.1", "vega": "5.22.1", "vega-lite": "4.11.0", From ce6ec223c819d82ca984a42118a609e3c98e3ba2 Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Sun, 5 Feb 2023 04:36:22 +0900 Subject: [PATCH 12/12] block undefined value --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2b64231e4..4a2bccf73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,7 +57,7 @@ "ts-runtime-checks": "0.1.3", "ttypescript": "1.5.15", "typescript": "4.6.2", - "typia": "^3.4.26", + "typia": "3.4.27", "vality": "6.2.1", "vega": "5.22.1", "vega-lite": "4.11.0", @@ -9321,9 +9321,9 @@ } }, "node_modules/typia": { - "version": "3.4.26", - "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.26.tgz", - "integrity": "sha512-iSORsn+pTI12g8Rq0YcD5gci/tVU9AI5P7bxHgg4YgyY8ztMP1lYZtvqmK7+4ZbfSxxGmu2pBz5A7nnYj0tuhA==", + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.27.tgz", + "integrity": "sha512-ixi7OAuZRJ7A1FKrNKgjU/6dkTvJG8n8JvcW7jdpMsKw8BxZ3ue7Xr0gUpvRnBVMI1D+ODjyGjVqkvSRtGMIFQ==", "bin": { "typia": "lib/executable/typia.js" }, @@ -17050,9 +17050,9 @@ "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==" }, "typia": { - "version": "3.4.26", - "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.26.tgz", - "integrity": "sha512-iSORsn+pTI12g8Rq0YcD5gci/tVU9AI5P7bxHgg4YgyY8ztMP1lYZtvqmK7+4ZbfSxxGmu2pBz5A7nnYj0tuhA==", + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/typia/-/typia-3.4.27.tgz", + "integrity": "sha512-ixi7OAuZRJ7A1FKrNKgjU/6dkTvJG8n8JvcW7jdpMsKw8BxZ3ue7Xr0gUpvRnBVMI1D+ODjyGjVqkvSRtGMIFQ==", "requires": {} }, "unicode-canonical-property-names-ecmascript": { diff --git a/package.json b/package.json index 2985bffac..3a4995561 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "ts-runtime-checks": "0.1.3", "ttypescript": "1.5.15", "typescript": "4.6.2", - "typia": "3.4.26", + "typia": "3.4.27", "vality": "6.2.1", "vega": "5.22.1", "vega-lite": "4.11.0",