diff --git a/package.json b/package.json index d80a11bda376b..279763e394418 100644 --- a/package.json +++ b/package.json @@ -61,10 +61,11 @@ "oxlint": "^1.55.0", "playwright": "^1.58.2", "react-select-event": "^5.5.1", + "rolldown": "^1.0.0-rc.9", "storybook": "^10.2.14", "svgo": "^4.0.1", "typescript": "^5.9.3", - "vite": "^7.3.1" + "vite": "^8.0.0" }, "dependencies": { "@codemirror/autocomplete": "^6.20.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d673b8b228197..713b5cbb70ed5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -132,7 +132,7 @@ importers: version: 10.2.14(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) '@storybook/react-vite': specifier: ^10.2.14 - version: 10.2.14(esbuild@0.27.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(storybook@10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2)) + version: 10.2.14(esbuild@0.27.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)(vite@8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2)) '@testing-library/jest-dom': specifier: ^6.9.1 version: 6.9.1 @@ -211,6 +211,9 @@ importers: react-select-event: specifier: ^5.5.1 version: 5.5.1 + rolldown: + specifier: ^1.0.0-rc.9 + version: 1.0.0-rc.9 storybook: specifier: ^10.2.14 version: 10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -221,8 +224,8 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^7.3.1 - version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2) + specifier: ^8.0.0 + version: 8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2) e/web/teleport: {} @@ -250,8 +253,8 @@ importers: specifier: ^27.0.0 version: 27.0.0 '@vitejs/plugin-react-swc': - specifier: ^4.2.3 - version: 4.2.3(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2)) + specifier: ^4.3.0 + version: 4.3.0(vite@8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2)) babel-plugin-styled-components: specifier: ^2.1.4 version: 2.1.4(@babel/core@7.29.0)(styled-components@6.3.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) @@ -269,16 +272,13 @@ importers: version: 28.1.0 rollup-plugin-visualizer: specifier: ^6.0.5 - version: 6.0.5(rollup@4.59.0) + version: 6.0.5(rolldown@1.0.0-rc.9) vite-plugin-compression2: specifier: ^2.5.0 - version: 2.5.0(rollup@4.59.0) + version: 2.5.0 vite-plugin-wasm: specifier: ^3.5.0 - version: 3.5.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2)) - vite-tsconfig-paths: - specifier: ^6.1.1 - version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2)) + version: 3.5.0(vite@8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2)) web/packages/design: dependencies: @@ -486,7 +486,7 @@ importers: version: 6.8.3 electron-vite: specifier: ^5.0.0 - version: 5.0.0(@swc/core@1.15.18)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2)) + version: 5.0.0(@swc/core@1.15.18)(vite@8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2)) events: specifier: 3.3.0 version: 3.3.0 @@ -1522,14 +1522,14 @@ packages: resolution: {integrity: sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==} engines: {node: '>=16.4'} - '@emnapi/core@1.5.0': - resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} + '@emnapi/core@1.9.0': + resolution: {integrity: sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==} - '@emnapi/runtime@1.5.0': - resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} + '@emnapi/runtime@1.9.0': + resolution: {integrity: sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==} - '@emnapi/wasi-threads@1.1.0': - resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emnapi/wasi-threads@1.2.0': + resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} '@emotion/babel-plugin@11.13.5': resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} @@ -2187,6 +2187,9 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + '@napi-rs/wasm-runtime@1.1.1': + resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} + '@nivo/annotations@0.99.0': resolution: {integrity: sha512-jCuuXPbvpaqaz4xF7k5dv0OT2ubn5Nt0gWryuTe/8oVsC/9bzSuK8bM9vBty60m9tfO+X8vUYliuaCDwGksC2g==} peerDependencies: @@ -2369,6 +2372,13 @@ packages: resolution: {integrity: sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw==} engines: {node: '>=14'} + '@oxc-project/runtime@0.115.0': + resolution: {integrity: sha512-Rg8Wlt5dCbXhQnsXPrkOjL1DTSvXLgb2R/KYfnf1/K+R0k6UMLEmbQXPM+kwrWqSmWA2t0B1EtHy2/3zikQpvQ==} + engines: {node: ^20.19.0 || >=22.12.0} + + '@oxc-project/types@0.115.0': + resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==} + '@oxfmt/binding-android-arm-eabi@0.36.0': resolution: {integrity: sha512-Z4yVHJWx/swHHjtr0dXrBZb6LxS+qNz1qdza222mWwPTUK4L790+5i3LTgjx3KYGBzcYpjaiZBw4vOx94dH7MQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2698,155 +2708,115 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@rolldown/pluginutils@1.0.0-rc.2': - resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} - - '@rollup/pluginutils@5.3.0': - resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/rollup-android-arm-eabi@4.59.0': - resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.59.0': - resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} + '@rolldown/binding-android-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.59.0': - resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.59.0': - resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} + '@rolldown/binding-darwin-x64@1.0.0-rc.9': + resolution: {integrity: sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.59.0': - resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.59.0': - resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.9': + resolution: {integrity: sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': - resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm-musleabihf@4.59.0': - resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': + resolution: {integrity: sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.59.0': - resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.59.0': - resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': + resolution: {integrity: sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.59.0': - resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} - cpu: [loong64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-loong64-musl@4.59.0': - resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} - cpu: [loong64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-ppc64-gnu@4.59.0': - resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-ppc64-musl@4.59.0': - resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - libc: [musl] - - '@rollup/rollup-linux-riscv64-gnu@4.59.0': - resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} - cpu: [riscv64] - os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.59.0': - resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-s390x-gnu@4.59.0': - resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.59.0': - resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.59.0': - resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': + resolution: {integrity: sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.59.0': - resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} - cpu: [x64] - os: [openbsd] - - '@rollup/rollup-openharmony-arm64@4.59.0': - resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.59.0': - resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} - cpu: [arm64] - os: [win32] + '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': + resolution: {integrity: sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] - '@rollup/rollup-win32-ia32-msvc@4.59.0': - resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} - cpu: [ia32] + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': + resolution: {integrity: sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.59.0': - resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': + resolution: {integrity: sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.59.0': - resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} - cpu: [x64] - os: [win32] + '@rolldown/pluginutils@1.0.0-rc.7': + resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} + + '@rolldown/pluginutils@1.0.0-rc.9': + resolution: {integrity: sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==} + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -3500,11 +3470,11 @@ packages: cpu: [x64] os: [win32] - '@vitejs/plugin-react-swc@4.2.3': - resolution: {integrity: sha512-QIluDil2prhY1gdA3GGwxZzTAmLdi8cQ2CcuMW4PB/Wu4e/1pzqrwhYWVd09LInCRlDUidQjd0B70QWbjWtLxA==} + '@vitejs/plugin-react-swc@4.3.0': + resolution: {integrity: sha512-mOkXCII839dHyAt/gpoSlm28JIVDwhZ6tnG6wJxUy2bmOx7UaPjvOyIDf3SFv5s7Eo7HVaq6kRcu6YMEzt5Z7w==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^4 || ^5 || ^6 || ^7 + vite: ^4 || ^5 || ^6 || ^7 || ^8 '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} @@ -4730,9 +4700,6 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -5248,6 +5215,80 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -5720,8 +5761,8 @@ packages: resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -5977,6 +6018,11 @@ packages: resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} engines: {node: '>=8.0'} + rolldown@1.0.0-rc.9: + resolution: {integrity: sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup-plugin-visualizer@6.0.5: resolution: {integrity: sha512-9+HlNgKCVbJDs8tVtjQ43US12eqaiHyyiLMdBwQ7vSZPiHMysGNo2E88TAp1si5wx8NAoYriI2A5kuKfIakmJg==} engines: {node: '>=18'} @@ -5990,11 +6036,6 @@ packages: rollup: optional: true - rollup@4.59.0: - resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} @@ -6380,16 +6421,6 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} - tsconfck@3.1.6: - resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} - engines: {node: ^18 || >=20} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - tsconfig-paths@4.2.0: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} @@ -6537,20 +6568,16 @@ packages: peerDependencies: vite: ^2 || ^3 || ^4 || ^5 || ^6 || ^7 - vite-tsconfig-paths@6.1.1: - resolution: {integrity: sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg==} - peerDependencies: - vite: '*' - - vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + vite@8.0.0: + resolution: {integrity: sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.0.0-alpha.31 + esbuild: ^0.27.0 jiti: '>=1.21.0' less: ^4.0.0 - lightningcss: ^1.21.0 sass: ^1.70.0 sass-embedded: ^1.70.0 stylus: '>=0.54.8' @@ -6561,12 +6588,14 @@ packages: peerDependenciesMeta: '@types/node': optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true jiti: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true sass-embedded: @@ -8028,18 +8057,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@emnapi/core@1.5.0': + '@emnapi/core@1.9.0': dependencies: - '@emnapi/wasi-threads': 1.1.0 + '@emnapi/wasi-threads': 1.2.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.5.0': + '@emnapi/runtime@1.9.0': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.1.0': + '@emnapi/wasi-threads@1.2.0': dependencies: tslib: 2.8.1 optional: true @@ -8614,11 +8643,11 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@5.9.3)(vite@8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2))': dependencies: glob: 13.0.6 react-docgen-typescript: 2.4.0(typescript@5.9.3) - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2) + vite: 8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2) optionalDependencies: typescript: 5.9.3 @@ -8679,8 +8708,15 @@ snapshots: '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.5.0 - '@emnapi/runtime': 1.5.0 + '@emnapi/core': 1.9.0 + '@emnapi/runtime': 1.9.0 + '@tybys/wasm-util': 0.10.1 + optional: true + + '@napi-rs/wasm-runtime@1.1.1': + dependencies: + '@emnapi/core': 1.9.0 + '@emnapi/runtime': 1.9.0 '@tybys/wasm-util': 0.10.1 optional: true @@ -8976,6 +9012,10 @@ snapshots: '@opentelemetry/semantic-conventions@1.40.0': {} + '@oxc-project/runtime@0.115.0': {} + + '@oxc-project/types@0.115.0': {} + '@oxfmt/binding-android-arm-eabi@0.36.0': optional: true @@ -9168,90 +9208,62 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@rolldown/pluginutils@1.0.0-rc.2': {} - - '@rollup/pluginutils@5.3.0(rollup@4.59.0)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.59.0 - - '@rollup/rollup-android-arm-eabi@4.59.0': - optional: true - - '@rollup/rollup-android-arm64@4.59.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.59.0': - optional: true - - '@rollup/rollup-darwin-x64@4.59.0': - optional: true - - '@rollup/rollup-freebsd-arm64@4.59.0': - optional: true - - '@rollup/rollup-freebsd-x64@4.59.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + '@rolldown/binding-android-arm64@1.0.0-rc.9': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.59.0': + '@rolldown/binding-darwin-arm64@1.0.0-rc.9': optional: true - '@rollup/rollup-linux-arm64-gnu@4.59.0': + '@rolldown/binding-darwin-x64@1.0.0-rc.9': optional: true - '@rollup/rollup-linux-arm64-musl@4.59.0': + '@rolldown/binding-freebsd-x64@1.0.0-rc.9': optional: true - '@rollup/rollup-linux-loong64-gnu@4.59.0': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': optional: true - '@rollup/rollup-linux-loong64-musl@4.59.0': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.59.0': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': optional: true - '@rollup/rollup-linux-ppc64-musl@4.59.0': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.59.0': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': optional: true - '@rollup/rollup-linux-riscv64-musl@4.59.0': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': optional: true - '@rollup/rollup-linux-s390x-gnu@4.59.0': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': optional: true - '@rollup/rollup-linux-x64-gnu@4.59.0': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': optional: true - '@rollup/rollup-linux-x64-musl@4.59.0': - optional: true - - '@rollup/rollup-openbsd-x64@4.59.0': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': + dependencies: + '@napi-rs/wasm-runtime': 1.1.1 optional: true - '@rollup/rollup-openharmony-arm64@4.59.0': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': optional: true - '@rollup/rollup-win32-arm64-msvc@4.59.0': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': optional: true - '@rollup/rollup-win32-ia32-msvc@4.59.0': - optional: true + '@rolldown/pluginutils@1.0.0-rc.7': {} - '@rollup/rollup-win32-x64-gnu@4.59.0': - optional: true + '@rolldown/pluginutils@1.0.0-rc.9': {} - '@rollup/rollup-win32-x64-msvc@4.59.0': - optional: true + '@rollup/pluginutils@5.3.0': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 '@sinclair/typebox@0.27.8': {} @@ -9283,25 +9295,24 @@ snapshots: - react - react-dom - '@storybook/builder-vite@10.2.14(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2))': + '@storybook/builder-vite@10.2.14(esbuild@0.27.3)(storybook@10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2))': dependencies: - '@storybook/csf-plugin': 10.2.14(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2)) + '@storybook/csf-plugin': 10.2.14(esbuild@0.27.3)(storybook@10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2)) storybook: 10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) ts-dedent: 2.2.0 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2) + vite: 8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2) transitivePeerDependencies: - esbuild - rollup - webpack - '@storybook/csf-plugin@10.2.14(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2))': + '@storybook/csf-plugin@10.2.14(esbuild@0.27.3)(storybook@10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2))': dependencies: storybook: 10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) unplugin: 2.3.11 optionalDependencies: esbuild: 0.27.3 - rollup: 4.59.0 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2) + vite: 8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2) '@storybook/global@5.0.0': {} @@ -9316,11 +9327,11 @@ snapshots: react-dom: 19.2.4(react@19.2.4) storybook: 10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@storybook/react-vite@10.2.14(esbuild@0.27.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(storybook@10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2))': + '@storybook/react-vite@10.2.14(esbuild@0.27.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)(vite@8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2)) - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) - '@storybook/builder-vite': 10.2.14(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@5.9.3)(vite@8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2)) + '@rollup/pluginutils': 5.3.0 + '@storybook/builder-vite': 10.2.14(esbuild@0.27.3)(storybook@10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2)) '@storybook/react': 10.2.14(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) empathic: 2.0.0 magic-string: 0.30.21 @@ -9330,7 +9341,7 @@ snapshots: resolve: 1.22.11 storybook: 10.2.14(@testing-library/dom@10.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tsconfig-paths: 4.2.0 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2) + vite: 8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2) transitivePeerDependencies: - esbuild - rollup @@ -9882,11 +9893,11 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-react-swc@4.2.3(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2))': + '@vitejs/plugin-react-swc@4.3.0(vite@8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2))': dependencies: - '@rolldown/pluginutils': 1.0.0-rc.2 + '@rolldown/pluginutils': 1.0.0-rc.7 '@swc/core': 1.15.18 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2) + vite: 8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2) transitivePeerDependencies: - '@swc/helpers' @@ -10887,7 +10898,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron-vite@5.0.0(@swc/core@1.15.18)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2)): + electron-vite@5.0.0(@swc/core@1.15.18)(vite@8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2)): dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) @@ -10895,7 +10906,7 @@ snapshots: esbuild: 0.25.12 magic-string: 0.30.21 picocolors: 1.1.1 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2) + vite: 8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2) optionalDependencies: '@swc/core': 1.15.18 transitivePeerDependencies: @@ -11363,8 +11374,6 @@ snapshots: gopd: 1.2.0 optional: true - globrex@0.1.2: {} - gopd@1.2.0: {} got@11.8.6: @@ -12077,6 +12086,55 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.0.4 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + lines-and-columns@1.2.4: {} locate-path@5.0.0: @@ -12567,7 +12625,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.6: + postcss@8.5.8: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -12874,45 +12932,35 @@ snapshots: sprintf-js: 1.1.3 optional: true - rollup-plugin-visualizer@6.0.5(rollup@4.59.0): + rolldown@1.0.0-rc.9: + dependencies: + '@oxc-project/types': 0.115.0 + '@rolldown/pluginutils': 1.0.0-rc.9 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.9 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.9 + '@rolldown/binding-darwin-x64': 1.0.0-rc.9 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.9 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.9 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.9 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.9 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.9 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.9 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.9 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.9 + + rollup-plugin-visualizer@6.0.5(rolldown@1.0.0-rc.9): dependencies: open: 8.4.2 picomatch: 4.0.3 source-map: 0.7.4 yargs: 17.7.2 optionalDependencies: - rollup: 4.59.0 - - rollup@4.59.0: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.59.0 - '@rollup/rollup-android-arm64': 4.59.0 - '@rollup/rollup-darwin-arm64': 4.59.0 - '@rollup/rollup-darwin-x64': 4.59.0 - '@rollup/rollup-freebsd-arm64': 4.59.0 - '@rollup/rollup-freebsd-x64': 4.59.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 - '@rollup/rollup-linux-arm-musleabihf': 4.59.0 - '@rollup/rollup-linux-arm64-gnu': 4.59.0 - '@rollup/rollup-linux-arm64-musl': 4.59.0 - '@rollup/rollup-linux-loong64-gnu': 4.59.0 - '@rollup/rollup-linux-loong64-musl': 4.59.0 - '@rollup/rollup-linux-ppc64-gnu': 4.59.0 - '@rollup/rollup-linux-ppc64-musl': 4.59.0 - '@rollup/rollup-linux-riscv64-gnu': 4.59.0 - '@rollup/rollup-linux-riscv64-musl': 4.59.0 - '@rollup/rollup-linux-s390x-gnu': 4.59.0 - '@rollup/rollup-linux-x64-gnu': 4.59.0 - '@rollup/rollup-linux-x64-musl': 4.59.0 - '@rollup/rollup-openbsd-x64': 4.59.0 - '@rollup/rollup-openharmony-arm64': 4.59.0 - '@rollup/rollup-win32-arm64-msvc': 4.59.0 - '@rollup/rollup-win32-ia32-msvc': 4.59.0 - '@rollup/rollup-win32-x64-gnu': 4.59.0 - '@rollup/rollup-win32-x64-msvc': 4.59.0 - fsevents: 2.3.3 + rolldown: 1.0.0-rc.9 rrweb-cssom@0.8.0: {} @@ -13295,10 +13343,6 @@ snapshots: ts-dedent@2.2.0: {} - tsconfck@3.1.6(typescript@5.9.3): - optionalDependencies: - typescript: 5.9.3 - tsconfig-paths@4.2.0: dependencies: json5: 2.2.3 @@ -13437,37 +13481,28 @@ snapshots: extsprintf: 1.4.1 optional: true - vite-plugin-compression2@2.5.0(rollup@4.59.0): + vite-plugin-compression2@2.5.0: dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0 tar-mini: 0.2.0 transitivePeerDependencies: - rollup - vite-plugin-wasm@3.5.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2)): - dependencies: - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2) - - vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2)): + vite-plugin-wasm@3.5.0(vite@8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2)): dependencies: - debug: 4.4.3 - globrex: 0.1.2 - tsconfck: 3.1.6(typescript@5.9.3) - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2) - transitivePeerDependencies: - - supports-color - - typescript + vite: 8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2) - vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(yaml@2.8.2): + vite@8.0.0(@types/node@24.10.9)(esbuild@0.27.3)(jiti@2.6.1)(yaml@2.8.2): dependencies: - esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) + '@oxc-project/runtime': 0.115.0 + lightningcss: 1.32.0 picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.59.0 + postcss: 8.5.8 + rolldown: 1.0.0-rc.9 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.9 + esbuild: 0.27.3 fsevents: 2.3.3 jiti: 2.6.1 yaml: 2.8.2 diff --git a/web/.storybook/vite.config.mts b/web/.storybook/vite.config.mts index 3bd030caba261..11367c34ce716 100644 --- a/web/.storybook/vite.config.mts +++ b/web/.storybook/vite.config.mts @@ -1,8 +1,10 @@ import { defineConfig } from 'vite'; import { reactPlugin } from '@gravitational/build/vite/react.mjs'; -import { tsconfigPathsPlugin } from '@gravitational/build/vite/tsconfigPaths.mjs'; export default defineConfig(({ mode }) => ({ - plugins: [tsconfigPathsPlugin(), reactPlugin(mode)], + resolve: { + tsconfigPaths: true, + }, + plugins: [reactPlugin(mode)], })); diff --git a/web/packages/build/package.json b/web/packages/build/package.json index f6d8d463de433..8d935c952135d 100644 --- a/web/packages/build/package.json +++ b/web/packages/build/package.json @@ -17,7 +17,7 @@ "@swc/core": "^1.15.18", "@swc/plugin-styled-components": "^12.7.0", "@types/jsdom": "^27.0.0", - "@vitejs/plugin-react-swc": "^4.2.3", + "@vitejs/plugin-react-swc": "^4.3.0", "babel-plugin-styled-components": "^2.1.4", "globals": "^17.4.0", "jest-environment-jsdom": "^30.2.0", @@ -25,7 +25,6 @@ "jsdom": "^28.1.0", "rollup-plugin-visualizer": "^6.0.5", "vite-plugin-compression2": "^2.5.0", - "vite-plugin-wasm": "^3.5.0", - "vite-tsconfig-paths": "^6.1.1" + "vite-plugin-wasm": "^3.5.0" } } diff --git a/web/packages/build/vite/config.ts b/web/packages/build/vite/config.ts index 7a999ed2ab18b..158ca0f424f81 100644 --- a/web/packages/build/vite/config.ts +++ b/web/packages/build/vite/config.ts @@ -27,7 +27,6 @@ import wasm from 'vite-plugin-wasm'; import { generateAppHashFile } from './apphash'; import { htmlPlugin, transformPlugin } from './html'; import { reactPlugin } from './react.mjs'; -import { tsconfigPathsPlugin } from './tsconfigPaths.mjs'; const DEFAULT_PROXY_TARGET = '127.0.0.1:3080'; const ENTRY_FILE_NAME = 'app/app.js'; @@ -65,11 +64,33 @@ export function createViteConfig( host: '0.0.0.0', port: 3000, }, + resolve: { + tsconfigPaths: true, + }, build: { outDir: outputDirectory, assetsDir: 'app', emptyOutDir: true, - rollupOptions: { + reportCompressedSize: false, + rolldownOptions: { + checks: { + // We don't really need rolldown to complain about react/assets/wasm taking a "long" + // time - the entire build takes ~7s with compression, which is plenty fast. + pluginTimings: false, + }, + onLog(level, log, defaultHandler) { + // Suppress direct eval warning from @protobufjs/inquire. + // The eval is intentional (to call require without bundler detection) and patching + // it to indirect eval would break Electron's module-scoped require. + if ( + log.code === 'EVAL' && + log.id?.includes('@protobufjs/inquire') + ) { + return; + } + + defaultHandler(level, log); + }, output: { // removes hashing from our entry point file. entryFileNames: ENTRY_FILE_NAME, @@ -98,7 +119,6 @@ export function createViteConfig( }, plugins: [ reactPlugin(mode), - tsconfigPathsPlugin(), transformPlugin(), generateAppHashFile(outputDirectory, ENTRY_FILE_NAME), wasm(), diff --git a/web/packages/build/vite/gen-event-reference-config.mts b/web/packages/build/vite/gen-event-reference-config.mts index 2fcba5fb97da4..ee5e5c6ae79a7 100644 --- a/web/packages/build/vite/gen-event-reference-config.mts +++ b/web/packages/build/vite/gen-event-reference-config.mts @@ -2,8 +2,6 @@ import path from 'node:path'; import { defineConfig } from 'vite'; -import { tsconfigPathsPlugin } from './tsconfigPaths.mjs'; - const rootDirectory = path.resolve( __dirname, '../../teleport/src/services/audit/gen-event-reference' @@ -14,7 +12,9 @@ const outputDirectory = path.resolve( ); export default defineConfig(() => ({ - plugins: [tsconfigPathsPlugin()], + resolve: { + tsconfigPaths: true, + }, build: { outDir: outputDirectory, minify: false, @@ -26,7 +26,7 @@ export default defineConfig(() => ({ entry: path.resolve(rootDirectory, 'index.ts'), formats: ['cjs' as const], }, - rollupOptions: { + rolldownOptions: { external: ['node:fs'], }, }, diff --git a/web/packages/shared/components/TextEditor/TextEditor.jsx b/web/packages/shared/components/TextEditor/TextEditor.jsx index f830e174a9228..a3dd9bdbcc3c7 100644 --- a/web/packages/shared/components/TextEditor/TextEditor.jsx +++ b/web/packages/shared/components/TextEditor/TextEditor.jsx @@ -16,11 +16,6 @@ * along with this program. If not, see . */ -import ace from 'ace-builds/src-min-noconflict/ace'; -import 'ace-builds/src-noconflict/ext-searchbox'; -import 'ace-builds/src-noconflict/mode-json'; -import 'ace-builds/src-noconflict/mode-terraform.js'; -import 'ace-builds/src-noconflict/mode-yaml'; import { Component } from 'react'; import styled from 'styled-components'; @@ -30,6 +25,8 @@ import { Copy, Download } from 'design/Icon'; import { copyToClipboard } from 'design/utils/copyToClipboard'; import { downloadObject } from 'shared/utils/download'; +import ace from './ace'; +import './ace-includes'; import StyledTextEditor from './StyledTextEditor'; const { UndoManager } = ace.require('ace/undomanager'); diff --git a/web/packages/shared/components/TextEditor/ace-includes.js b/web/packages/shared/components/TextEditor/ace-includes.js new file mode 100644 index 0000000000000..07c634f9e07c5 --- /dev/null +++ b/web/packages/shared/components/TextEditor/ace-includes.js @@ -0,0 +1,27 @@ +/* + * Teleport + * Copyright (C) 2026 Gravitational, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +// These are in a separate file that is imported after ace.js, so that we can +// ensure that `ace` is defined as a global. +// Importing them directly from TextEditor.jsx would result in oxfmt rearranging +// the imports and putting these above the ace import, which would then cause them +// to fail to load. +import 'ace-builds/src-noconflict/ext-searchbox'; +import 'ace-builds/src-noconflict/mode-json'; +import 'ace-builds/src-noconflict/mode-terraform.js'; +import 'ace-builds/src-noconflict/mode-yaml'; diff --git a/web/packages/build/vite/tsconfigPaths.mjs b/web/packages/shared/components/TextEditor/ace.js similarity index 56% rename from web/packages/build/vite/tsconfigPaths.mjs rename to web/packages/shared/components/TextEditor/ace.js index 2eb491554e6b9..d00060b5bc5b3 100644 --- a/web/packages/build/vite/tsconfigPaths.mjs +++ b/web/packages/shared/components/TextEditor/ace.js @@ -1,6 +1,6 @@ -/** +/* * Teleport - * Copyright (C) 2024 Gravitational, Inc. + * Copyright (C) 2026 Gravitational, Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -16,20 +16,13 @@ * along with this program. If not, see . */ -/** - * This needs to be an .mjs file, - * because Vite can't import .ts files from a workspace out of the box. - * https://github.com/vitejs/vite/issues/5370 - */ - -import path from 'node:path'; - -import tsconfigPaths from 'vite-tsconfig-paths'; +import ace from 'ace-builds/src-min-noconflict/ace'; -const rootDirectory = path.resolve(import.meta.dirname, '../../../..'); +// Ace extension and mode files (e.g. mode-json.js, ext-searchbox.js) reference +// `ace` as a bare global identifier (`ace.define(...)`). The ace.js IIFE tries +// to set `window.ace` via `(function(){ return this })()`, but Vite 8's bundler +// (Rolldown) can drop or scope that assignment. Explicitly assign it here so +// that subsequently-evaluated extension modules can resolve the bare `ace` ref. +globalThis.ace = ace; -export function tsconfigPathsPlugin() { - return tsconfigPaths({ - root: rootDirectory, - }); -} +export default ace; diff --git a/web/packages/teleport/src/Audit/fixtures/index.ts b/web/packages/teleport/src/Audit/fixtures/index.ts index 98d67daeaa036..66a5dd4a70fdb 100644 --- a/web/packages/teleport/src/Audit/fixtures/index.ts +++ b/web/packages/teleport/src/Audit/fixtures/index.ts @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -import { makeEvent } from 'teleport/services/audit'; +import makeEvent from 'teleport/services/audit/makeEvent'; // events contains sample JSON's of ALL supported event types export const events = [ diff --git a/web/packages/teleport/src/boot.tsx b/web/packages/teleport/src/boot.tsx index 8a93ff93ef040..01d5b347854af 100644 --- a/web/packages/teleport/src/boot.tsx +++ b/web/packages/teleport/src/boot.tsx @@ -18,7 +18,6 @@ import { createRoot } from 'react-dom/client'; -import 'teleport/lib/polyfillRandomUuid'; import cfg from './config'; import { KeysEnum } from './services/storageService'; import Teleport from './Teleport'; diff --git a/web/packages/teleport/src/lib/polyfillRandomUuid.js b/web/packages/teleport/src/lib/polyfillRandomUuid.js deleted file mode 100644 index 53db99a522218..0000000000000 --- a/web/packages/teleport/src/lib/polyfillRandomUuid.js +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Teleport - * Copyright (C) 2023 Gravitational, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -if (typeof crypto?.randomUUID != 'function') { - window.crypto.randomUUID = randomUUID; -} - -// This polyfill is from https://github.com/uuidjs/randomUUID/tree/0273d4a16e25e05627ff4797739d976f6302bd6c - -// Code based on Node.js' `lib/internal/crypto/random.js`, subject -// to Node.js license found at: -// https://raw.githubusercontent.com/nodejs/node/master/LICENSE - -// -// internal/errors -// -class ERR_INVALID_ARG_TYPE extends TypeError { - constructor(name, type, value) { - super(`${name} variable is not of type ${type} (value: '${value}')`); - } - - code = 'ERR_INVALID_ARG_TYPE'; -} - -// -// internal/validators -// - -function validateBoolean(value, name) { - if (typeof value !== 'boolean') - throw new ERR_INVALID_ARG_TYPE(name, 'boolean', value); -} - -function validateObject(value, name) { - if (value === null || Array.isArray(value) || typeof value !== 'object') { - throw new ERR_INVALID_ARG_TYPE(name, 'Object', value); - } -} - -// -// crypto -// - -const randomFillSync = - typeof window === 'undefined' - ? require('crypto').randomFillSync - : window.crypto.getRandomValues.bind(window.crypto); - -// Implements an RFC 4122 version 4 random UUID. -// To improve performance, random data is generated in batches -// large enough to cover kBatchSize UUID's at a time. The uuidData -// and uuid buffers are reused. Each call to randomUUID() consumes -// 16 bytes from the buffer. - -const kHexDigits = [ - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102, -]; - -const kBatchSize = 128; -let uuidData; -let uuidNotBuffered; -let uuid; -let uuidBatch = 0; - -function getBufferedUUID() { - if (uuidData === undefined) { - uuidData = new Uint8Array(16 * kBatchSize); - } - - if (uuidBatch === 0) randomFillSync(uuidData); - uuidBatch = (uuidBatch + 1) % kBatchSize; - return uuidData.slice(uuidBatch * 16, uuidBatch * 16 + 16); -} - -function randomUUID(options) { - if (options !== undefined) validateObject(options, 'options'); - const { disableEntropyCache = false } = { ...options }; - - validateBoolean(disableEntropyCache, 'options.disableEntropyCache'); - - if (uuid === undefined) { - uuid = new Uint8Array(36); - uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'.charCodeAt(0); - uuid[14] = 52; // '4', identifies the UUID version - } - - let uuidBuf; - if (!disableEntropyCache) { - uuidBuf = getBufferedUUID(); - } else { - uuidBuf = uuidNotBuffered; - if (uuidBuf === undefined) uuidBuf = uuidNotBuffered = new Uint8Array(16); - randomFillSync(uuidBuf); - } - - // Variant byte: 10xxxxxx (variant 1) - uuidBuf[8] = (uuidBuf[8] & 0x3f) | 0x80; - - // This function is structured the way it is for performance. - // The uuid buffer stores the serialization of the random - // bytes from uuidData. - // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - let n = 0; - uuid[0] = kHexDigits[uuidBuf[n] >> 4]; - uuid[1] = kHexDigits[uuidBuf[n++] & 0xf]; - uuid[2] = kHexDigits[uuidBuf[n] >> 4]; - uuid[3] = kHexDigits[uuidBuf[n++] & 0xf]; - uuid[4] = kHexDigits[uuidBuf[n] >> 4]; - uuid[5] = kHexDigits[uuidBuf[n++] & 0xf]; - uuid[6] = kHexDigits[uuidBuf[n] >> 4]; - uuid[7] = kHexDigits[uuidBuf[n++] & 0xf]; - // - - uuid[9] = kHexDigits[uuidBuf[n] >> 4]; - uuid[10] = kHexDigits[uuidBuf[n++] & 0xf]; - uuid[11] = kHexDigits[uuidBuf[n] >> 4]; - uuid[12] = kHexDigits[uuidBuf[n++] & 0xf]; - // - - // 4, uuid[14] is set already... - uuid[15] = kHexDigits[uuidBuf[n++] & 0xf]; - uuid[16] = kHexDigits[uuidBuf[n] >> 4]; - uuid[17] = kHexDigits[uuidBuf[n++] & 0xf]; - // - - uuid[19] = kHexDigits[uuidBuf[n] >> 4]; - uuid[20] = kHexDigits[uuidBuf[n++] & 0xf]; - uuid[21] = kHexDigits[uuidBuf[n] >> 4]; - uuid[22] = kHexDigits[uuidBuf[n++] & 0xf]; - // - - uuid[24] = kHexDigits[uuidBuf[n] >> 4]; - uuid[25] = kHexDigits[uuidBuf[n++] & 0xf]; - uuid[26] = kHexDigits[uuidBuf[n] >> 4]; - uuid[27] = kHexDigits[uuidBuf[n++] & 0xf]; - uuid[28] = kHexDigits[uuidBuf[n] >> 4]; - uuid[29] = kHexDigits[uuidBuf[n++] & 0xf]; - uuid[30] = kHexDigits[uuidBuf[n] >> 4]; - uuid[31] = kHexDigits[uuidBuf[n++] & 0xf]; - uuid[32] = kHexDigits[uuidBuf[n] >> 4]; - uuid[33] = kHexDigits[uuidBuf[n++] & 0xf]; - uuid[34] = kHexDigits[uuidBuf[n] >> 4]; - uuid[35] = kHexDigits[uuidBuf[n] & 0xf]; - - return String.fromCharCode.apply(null, uuid); -} diff --git a/web/packages/teleterm/electron.vite.config.mts b/web/packages/teleterm/electron.vite.config.mts index 2113fc1e092a3..9c33aa9e13001 100644 --- a/web/packages/teleterm/electron.vite.config.mts +++ b/web/packages/teleterm/electron.vite.config.mts @@ -16,13 +16,15 @@ * along with this program. If not, see . */ +import { createRequire } from 'node:module'; +import { builtinModules } from 'node:module'; import path from 'node:path'; -import { defineConfig, externalizeDepsPlugin, UserConfig } from 'electron-vite'; +import { defineConfig, UserConfig } from 'electron-vite'; +import type { RolldownOptions } from 'rolldown'; import type { Plugin } from 'vite'; import { reactPlugin } from '@gravitational/build/vite/react.mjs'; -import { tsconfigPathsPlugin } from '@gravitational/build/vite/tsconfigPaths.mjs'; import { getConnectCsp } from './csp'; @@ -33,19 +35,54 @@ const outputDirectory = path.resolve(__dirname, 'build', 'app'); // if Vite complains about a dependency, add it here const externalizeDeps = ['strip-ansi', 'ansi-regex', 'd3-color']; -const config = defineConfig(env => { - const tsConfigPathsPlugin = tsconfigPathsPlugin(); +// electron-vite's externalizeDepsPlugin sets build.rollupOptions.external, which +// Vite 8 ignores (it uses rolldownOptions). +// TODO(ryan): Remove this once electron-vite supports Vite 8. +// +// electron-vite externalizes electron, Node.js built-in modules, and package.json +// dependencies for main and preload, but bundles everything for the renderer. +// See https://electron-vite.org/guide/dependency-handling. +const pkg = createRequire(import.meta.url)('./package.json'); +const deps = Object.keys(pkg.dependencies || {}).filter( + dep => !externalizeDeps.includes(dep) +); + +const commonRolldownOptions: RolldownOptions = { + onLog(level, log, defaultHandler) { + // Suppress direct eval warning from @protobufjs/inquire. + // The eval is intentional (to call require without bundler detection) and patching + // it to indirect eval would break Electron's module-scoped require. + if (log.code === 'EVAL' && log.id?.includes('@protobufjs/inquire')) { + return; + } + + defaultHandler(level, log); + }, +}; - const commonPlugins = [ - externalizeDepsPlugin({ exclude: externalizeDeps }), - tsConfigPathsPlugin, - ]; +// Main and preload run in Node.js, so we externalize electron, Node.js built-in +// modules, and package.json dependencies (they'll be included during packaging). +const nodeExternalOptions: RolldownOptions = { + external: [ + 'electron', + /^electron\/.+/, + ...builtinModules.flatMap(m => [m, `node:${m}`]), + ...deps, + new RegExp(`^(${deps.join('|')})/.+`), + ], +}; +const config = defineConfig(env => { const config: UserConfig = { main: { + resolve: { + tsconfigPaths: true, + }, build: { outDir: path.resolve(outputDirectory, 'main'), - rollupOptions: { + rolldownOptions: { + ...commonRolldownOptions, + ...nodeExternalOptions, input: { index: path.resolve(__dirname, 'src/main.ts'), sharedProcess: path.resolve( @@ -58,11 +95,11 @@ const config = defineConfig(env => { ), }, output: { + format: 'cjs', manualChunks, }, }, }, - plugins: commonPlugins, define: { // It's not common to pre-process Node code with NODE_ENV, but this is what our Webpack // config used to do, so for compatibility purposes we kept the Vite config this way. @@ -73,29 +110,38 @@ const config = defineConfig(env => { }, }, preload: { + resolve: { + tsconfigPaths: true, + }, build: { outDir: path.resolve(outputDirectory, 'preload'), - rollupOptions: { + rolldownOptions: { + ...commonRolldownOptions, + ...nodeExternalOptions, input: { index: path.resolve(__dirname, 'src/preload.ts'), }, output: { + format: 'cjs', manualChunks, }, }, }, - plugins: commonPlugins, define: { // Preload is also mean to be run by Node, see the comment for define under main. 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), }, }, renderer: { + resolve: { + tsconfigPaths: true, + }, assetsInclude: ['**/shared/libs/ironrdp/**/*.wasm'], root: '.', build: { outDir: path.resolve(outputDirectory, 'renderer'), - rollupOptions: { + rolldownOptions: { + ...commonRolldownOptions, input: { index: path.resolve(__dirname, 'index.html'), }, @@ -111,7 +157,6 @@ const config = defineConfig(env => { plugins: [ reactPlugin(env.mode), cspPlugin(getConnectCsp(env.mode === 'development')), - tsConfigPathsPlugin, { // The IronRDP wasm module is embedded into the renderer app earlier in the build. // Exclude it here, otherwise rollup still emits it as a static asset by default.