From 0808d58317490de88f2bffac6e7e1418e1035978 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Fri, 10 Jul 2026 20:28:17 -0300 Subject: [PATCH] build(core-typings,ui-kit): move typia emit to ttsc for TS7 TS7's native compiler dropped the transformer plugin API that ts-patch used, so the typia transform (createIs / json.schemas) can't run under plain tsc. Switch these two packages to ttsc (typescript-go plugin toolchain) with the @typescript/native-preview tsgo binary, bump typia 9.7.2 -> 13.x. - build: 'ts-patch install && typia patch && tsc' -> 'ttsc --binary ' - @typescript/native-preview provides tsgo without tripping yarn's builtin compat/typescript patch (yarnpkg/berry#7191) - moduleResolution bundler for the ttsc build configs (base still uses node) - drop vestigial ts-jest from ui-kit (jest runs on @swc/jest) - typia@13 API verified in POC: createIs + json.schemas emit correct validators on TS 7.0.2, runtime-checked on complex nested/union types --- packages/core-typings/package.json | 12 +- packages/core-typings/tsconfig.json | 7 +- packages/ui-kit/package.json | 11 +- packages/ui-kit/tsconfig.build.json | 4 +- yarn.lock | 258 ++++++++++++++++++++++------ 5 files changed, 225 insertions(+), 67 deletions(-) diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json index 2529d8c3a9cf9..b069aa105f0fc 100644 --- a/packages/core-typings/package.json +++ b/packages/core-typings/package.json @@ -8,11 +8,10 @@ "/dist" ], "scripts": { - ".:build:build": "tsc -p tsconfig.json", + ".:build:build": "ttsc --binary \"$(node -e 'const p=require(`path`);process.stdout.write(p.join(p.dirname(require.resolve(`@typescript/native-preview/package.json`)),`bin`,`tsgo`))')\" -p tsconfig.json", ".:build:clean": "rimraf dist", - ".:build:prepare": "ts-patch install && typia patch", - "build": "run-s .:build:prepare .:build:clean .:build:build", - "dev": "tsc --watch --preserveWatchOutput -p tsconfig.json", + "build": "run-s .:build:clean .:build:build", + "dev": "ttsc --binary \"$(node -e 'const p=require(`path`);process.stdout.write(p.join(p.dirname(require.resolve(`@typescript/native-preview/package.json`)),`bin`,`tsgo`))')\" --watch --preserveWatchOutput -p tsconfig.json", "lint": "eslint .", "lint:fix": "eslint --fix .", "test": "echo \"no tests\" && exit 1" @@ -21,18 +20,19 @@ "@rocket.chat/icons": "^0.48.0", "@rocket.chat/message-parser": "workspace:^", "@rocket.chat/ui-kit": "workspace:~", - "typia": "patch:typia@npm%3A9.7.2#~/.yarn/patches/typia-npm-9.7.2-5c5d9c80b4.patch", + "typia": "^13.0.2", "zod": "~4.3.6" }, "devDependencies": { "@rocket.chat/apps-engine": "workspace:^", "@types/express": "^4.17.25", + "@typescript/native-preview": "7.0.0-dev.20260707.2", "eslint": "~9.39.4", "mongodb": "6.16.0", "npm-run-all": "~4.1.5", "prettier": "~3.3.3", "rimraf": "^6.0.1", - "ts-patch": "^3.3.0", + "ttsc": "^0.18.4", "typescript": "~5.9.3" }, "volta": { diff --git a/packages/core-typings/tsconfig.json b/packages/core-typings/tsconfig.json index e4e3cb7cf46d1..abd1952ed4ac9 100644 --- a/packages/core-typings/tsconfig.json +++ b/packages/core-typings/tsconfig.json @@ -1,10 +1,15 @@ { "extends": "@rocket.chat/tsconfig/server.json", "compilerOptions": { - "lib": ["dom", "dom.iterable"], + "lib": ["es2023", "dom", "dom.iterable"], "declaration": true, "rootDir": "./src", "outDir": "./dist", + // ttsc/TS7 build: the shared base still targets es5 / moduleResolution node, + // and TS7 no longer auto-includes ambient @types, so name node explicitly. + "target": "es2022", + "moduleResolution": "bundler", + "types": ["node"], "plugins": [{ "transform": "typia/lib/transform" }] }, "include": ["./src/**/*"] diff --git a/packages/ui-kit/package.json b/packages/ui-kit/package.json index 5f3e130078cff..b48ec7eff1102 100644 --- a/packages/ui-kit/package.json +++ b/packages/ui-kit/package.json @@ -22,29 +22,28 @@ ], "scripts": { ".:build:clean": "rimraf dist", - ".:build:prepare": "ts-patch install && typia patch", - ".:build:tsc": "tsc -p tsconfig.build.json", - "build": "run-s .:build:prepare .:build:clean .:build:tsc", + ".:build:tsc": "ttsc --binary \"$(node -e 'const p=require(`path`);process.stdout.write(p.join(p.dirname(require.resolve(`@typescript/native-preview/package.json`)),`bin`,`tsgo`))')\" -p tsconfig.build.json", + "build": "run-s .:build:clean .:build:tsc", "lint": "eslint .", "test": "jest", "testunit": "jest", "typecheck": "tsc --noEmit" }, "dependencies": { - "typia": "patch:typia@npm%3A9.7.2#~/.yarn/patches/typia-npm-9.7.2-5c5d9c80b4.patch" + "typia": "^13.0.2" }, "devDependencies": { "@rocket.chat/icons": "^0.48.0", "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", + "@typescript/native-preview": "7.0.0-dev.20260707.2", "eslint": "~9.39.4", "jest": "~30.2.0", "npm-run-all": "~4.1.5", "prettier": "~3.3.3", "rimraf": "~6.0.1", - "ts-jest": "~29.4.9", - "ts-patch": "^3.3.0", + "ttsc": "^0.18.4", "typescript": "~5.9.3" }, "peerDependencies": { diff --git a/packages/ui-kit/tsconfig.build.json b/packages/ui-kit/tsconfig.build.json index be44792f03784..329f8f47e6c19 100644 --- a/packages/ui-kit/tsconfig.build.json +++ b/packages/ui-kit/tsconfig.build.json @@ -3,7 +3,9 @@ "compilerOptions": { "rootDir": "./src", "outDir": "./dist", - "removeComments": false + "removeComments": false, + // ttsc/TS7 build only: the shared base still uses the removed moduleResolution node. + "moduleResolution": "bundler" }, "include": ["./src/**/*"], "exclude": ["./src/**/*.spec.ts"] diff --git a/yarn.lock b/yarn.lock index a2c9d52d3f32a..64a402aafa495 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8924,14 +8924,15 @@ __metadata: "@rocket.chat/message-parser": "workspace:^" "@rocket.chat/ui-kit": "workspace:~" "@types/express": "npm:^4.17.25" + "@typescript/native-preview": "npm:7.0.0-dev.20260707.2" eslint: "npm:~9.39.4" mongodb: "npm:6.16.0" npm-run-all: "npm:~4.1.5" prettier: "npm:~3.3.3" rimraf: "npm:^6.0.1" - ts-patch: "npm:^3.3.0" + ttsc: "npm:^0.18.4" typescript: "npm:~5.9.3" - typia: "patch:typia@npm%3A9.7.2#~/.yarn/patches/typia-npm-9.7.2-5c5d9c80b4.patch" + typia: "npm:^13.0.2" zod: "npm:~4.3.6" languageName: unknown linkType: soft @@ -10910,15 +10911,15 @@ __metadata: "@rocket.chat/jest-presets": "workspace:~" "@rocket.chat/tsconfig": "workspace:*" "@types/jest": "npm:~30.0.0" + "@typescript/native-preview": "npm:7.0.0-dev.20260707.2" eslint: "npm:~9.39.4" jest: "npm:~30.2.0" npm-run-all: "npm:~4.1.5" prettier: "npm:~3.3.3" rimraf: "npm:~6.0.1" - ts-jest: "npm:~29.4.9" - ts-patch: "npm:^3.3.0" + ttsc: "npm:^0.18.4" typescript: "npm:~5.9.3" - typia: "patch:typia@npm%3A9.7.2#~/.yarn/patches/typia-npm-9.7.2-5c5d9c80b4.patch" + typia: "npm:^13.0.2" peerDependencies: "@rocket.chat/icons": "*" languageName: unknown @@ -13151,6 +13152,55 @@ __metadata: languageName: node linkType: hard +"@ttsc/darwin-arm64@npm:0.18.4": + version: 0.18.4 + resolution: "@ttsc/darwin-arm64@npm:0.18.4" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@ttsc/darwin-x64@npm:0.18.4": + version: 0.18.4 + resolution: "@ttsc/darwin-x64@npm:0.18.4" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@ttsc/linux-arm64@npm:0.18.4": + version: 0.18.4 + resolution: "@ttsc/linux-arm64@npm:0.18.4" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@ttsc/linux-arm@npm:0.18.4": + version: 0.18.4 + resolution: "@ttsc/linux-arm@npm:0.18.4" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@ttsc/linux-x64@npm:0.18.4": + version: 0.18.4 + resolution: "@ttsc/linux-x64@npm:0.18.4" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@ttsc/win32-arm64@npm:0.18.4": + version: 0.18.4 + resolution: "@ttsc/win32-arm64@npm:0.18.4" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@ttsc/win32-x64@npm:0.18.4": + version: 0.18.4 + resolution: "@ttsc/win32-x64@npm:0.18.4" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@turbo/darwin-64@npm:2.9.14": version: 2.9.14 resolution: "@turbo/darwin-64@npm:2.9.14" @@ -15207,6 +15257,103 @@ __metadata: languageName: node linkType: hard +"@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260707.2": + version: 7.0.0-dev.20260707.2 + resolution: "@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260707.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260707.2": + version: 7.0.0-dev.20260707.2 + resolution: "@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260707.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260707.2": + version: 7.0.0-dev.20260707.2 + resolution: "@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260707.2" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260707.2": + version: 7.0.0-dev.20260707.2 + resolution: "@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260707.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260707.2": + version: 7.0.0-dev.20260707.2 + resolution: "@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260707.2" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260707.2": + version: 7.0.0-dev.20260707.2 + resolution: "@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260707.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260707.2": + version: 7.0.0-dev.20260707.2 + resolution: "@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260707.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@typescript/native-preview@npm:7.0.0-dev.20260707.2": + version: 7.0.0-dev.20260707.2 + resolution: "@typescript/native-preview@npm:7.0.0-dev.20260707.2" + dependencies: + "@typescript/native-preview-darwin-arm64": "npm:7.0.0-dev.20260707.2" + "@typescript/native-preview-darwin-x64": "npm:7.0.0-dev.20260707.2" + "@typescript/native-preview-linux-arm": "npm:7.0.0-dev.20260707.2" + "@typescript/native-preview-linux-arm64": "npm:7.0.0-dev.20260707.2" + "@typescript/native-preview-linux-x64": "npm:7.0.0-dev.20260707.2" + "@typescript/native-preview-win32-arm64": "npm:7.0.0-dev.20260707.2" + "@typescript/native-preview-win32-x64": "npm:7.0.0-dev.20260707.2" + dependenciesMeta: + "@typescript/native-preview-darwin-arm64": + optional: true + "@typescript/native-preview-darwin-x64": + optional: true + "@typescript/native-preview-linux-arm": + optional: true + "@typescript/native-preview-linux-arm64": + optional: true + "@typescript/native-preview-linux-x64": + optional: true + "@typescript/native-preview-win32-arm64": + optional: true + "@typescript/native-preview-win32-x64": + optional: true + bin: + tsgo: bin/tsgo + checksum: 10/c0fa2e0326b205e5542bd063e85e34622d11db6c364f43d898e4f7473cc73dc40244b7616252f28d5e9ace71126bd09cc7c9eb3e26788fe20daa30091f77afcb + languageName: node + linkType: hard + +"@typia/interface@npm:^13.0.2": + version: 13.0.2 + resolution: "@typia/interface@npm:13.0.2" + checksum: 10/485788eb3cf9846babe3c976e9e91a859c6546ae63b9f7255a01bdc9035e72637992a200ef32ad96debbc6ff9abacf3f3bbd034990c4f21ac7650ef3c436b78b + languageName: node + linkType: hard + +"@typia/utils@npm:^13.0.2": + version: 13.0.2 + resolution: "@typia/utils@npm:13.0.2" + dependencies: + "@typia/interface": "npm:^13.0.2" + checksum: 10/e4f02beeddc252f85e680a280d63debc300d35d3f65d9d191973d32b854136187e7279b3207114686d71b6169a9c9cb7495ae560895e640cbc44c80a0099d513 + languageName: node + linkType: hard + "@ungap/promise-all-settled@npm:1.1.2": version: 1.1.2 resolution: "@ungap/promise-all-settled@npm:1.1.2" @@ -23093,17 +23240,6 @@ __metadata: languageName: node linkType: hard -"global-prefix@npm:^4.0.0": - version: 4.0.0 - resolution: "global-prefix@npm:4.0.0" - dependencies: - ini: "npm:^4.1.3" - kind-of: "npm:^6.0.3" - which: "npm:^4.0.0" - checksum: 10/535489396c0e5828682f081f5227556a3b7a30ebecde9f5eb35aee4aea121fe5c5fb1b04e0fba85d1e34e6004687e51b306bdd446d391eca8449adbb4666dbe2 - languageName: node - linkType: hard - "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" @@ -24194,13 +24330,6 @@ __metadata: languageName: node linkType: hard -"ini@npm:^4.1.3": - version: 4.1.3 - resolution: "ini@npm:4.1.3" - checksum: 10/f536b414d1442e5b233429e2b56efcdb354109b2d65ddd489e5939d8f0f5ad23c88aa2b19c92987249d0dd63ba8192e9aeb1a02b0459549c5a9ff31acd729a5d - languageName: node - linkType: hard - "inquirer@npm:^8.2.5": version: 8.2.6 resolution: "inquirer@npm:8.2.6" @@ -32772,7 +32901,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.11.1, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.2, resolve@npm:^1.22.4, resolve@npm:^1.22.8": +"resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.11.1, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4, resolve@npm:^1.22.8": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -32828,7 +32957,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.11.1#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin": +"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.11.1#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -35730,23 +35859,6 @@ __metadata: languageName: node linkType: hard -"ts-patch@npm:^3.3.0": - version: 3.3.0 - resolution: "ts-patch@npm:3.3.0" - dependencies: - chalk: "npm:^4.1.2" - global-prefix: "npm:^4.0.0" - minimist: "npm:^1.2.8" - resolve: "npm:^1.22.2" - semver: "npm:^7.6.3" - strip-ansi: "npm:^6.0.1" - bin: - ts-patch: bin/ts-patch.js - tspc: bin/tspc.js - checksum: 10/5b0a42cacdfef2136b18b785b4ca6579d470001560d42139057fccf6ed85a622a73e5efba1b20426b047bf9aaf2090a23a9afca4e72ab330b166344dd45b3386 - languageName: node - linkType: hard - "tsconfig-paths@npm:^3.15.0": version: 3.15.0 resolution: "tsconfig-paths@npm:3.15.0" @@ -35836,6 +35948,40 @@ __metadata: languageName: node linkType: hard +"ttsc@npm:^0.18.4": + version: 0.18.4 + resolution: "ttsc@npm:0.18.4" + dependencies: + "@ttsc/darwin-arm64": "npm:0.18.4" + "@ttsc/darwin-x64": "npm:0.18.4" + "@ttsc/linux-arm": "npm:0.18.4" + "@ttsc/linux-arm64": "npm:0.18.4" + "@ttsc/linux-x64": "npm:0.18.4" + "@ttsc/win32-arm64": "npm:0.18.4" + "@ttsc/win32-x64": "npm:0.18.4" + dependenciesMeta: + "@ttsc/darwin-arm64": + optional: true + "@ttsc/darwin-x64": + optional: true + "@ttsc/linux-arm": + optional: true + "@ttsc/linux-arm64": + optional: true + "@ttsc/linux-x64": + optional: true + "@ttsc/win32-arm64": + optional: true + "@ttsc/win32-x64": + optional: true + bin: + ttsc: lib/launcher/ttsc.js + ttscserver: lib/launcher/ttscserver.js + ttsx: lib/launcher/ttsx.js + checksum: 10/c33232ddb7f76d51cf4262517269592484bee38b4dbb4f4b995907c15f7f7be92112372a615b76a33b9d346622381eb1c7e274e5328fea5df77df57cbd0c5bc8 + languageName: node + linkType: hard + "tty-browserify@npm:0.0.1": version: 0.0.1 resolution: "tty-browserify@npm:0.0.1" @@ -36129,6 +36275,23 @@ __metadata: languageName: node linkType: hard +"typia@npm:^13.0.2": + version: 13.0.2 + resolution: "typia@npm:13.0.2" + dependencies: + "@standard-schema/spec": "npm:^1.0.0" + "@typia/interface": "npm:^13.0.2" + "@typia/utils": "npm:^13.0.2" + commander: "npm:^10.0.0" + inquirer: "npm:^8.2.5" + randexp: "npm:^0.5.3" + tinyglobby: "npm:^0.2.12" + bin: + typia: lib/executable/typia.js + checksum: 10/a6aeb24b8e3a50e4cb20f514cdd82b296980c9928f51a4a56acc5337eef007b23074a08b62c07d3ba49b10399cc107bdcd04765aee89647040922b1a3e9a6842 + languageName: node + linkType: hard + "typia@patch:typia@npm%3A9.7.2#~/.yarn/patches/typia-npm-9.7.2-5c5d9c80b4.patch": version: 9.7.2 resolution: "typia@patch:typia@npm%3A9.7.2#~/.yarn/patches/typia-npm-9.7.2-5c5d9c80b4.patch::version=9.7.2&hash=cc0415" @@ -37379,17 +37542,6 @@ __metadata: languageName: node linkType: hard -"which@npm:^4.0.0": - version: 4.0.0 - resolution: "which@npm:4.0.0" - dependencies: - isexe: "npm:^3.1.1" - bin: - node-which: bin/which.js - checksum: 10/f17e84c042592c21e23c8195108cff18c64050b9efb8459589116999ea9da6dd1509e6a1bac3aeebefd137be00fabbb61b5c2bc0aa0f8526f32b58ee2f545651 - languageName: node - linkType: hard - "which@npm:^5.0.0": version: 5.0.0 resolution: "which@npm:5.0.0"