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.