diff --git a/.gitattributes b/.gitattributes index c9eedd2a..4a0480e2 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,2 @@ -crates/jsshaker/tests/fixtures/** linguist-vendored -crates/jsshaker/tests/snapshots/** linguist-generated +crates/jsshaker/tests/fixtures/** linguist-vendored text eol=lf +crates/jsshaker/tests/snapshots/** linguist-generated text eol=lf diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c2e3d12c..5799d014 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,7 +11,10 @@ env: jobs: snapshot: - runs-on: ubuntu-latest + strategy: + matrix: + os: [ubuntu-latest, windows-latest] + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - name: Setup Rust diff --git a/crates/jsshaker/src/vfs.rs b/crates/jsshaker/src/vfs.rs index 170fb3fb..9256fab1 100644 --- a/crates/jsshaker/src/vfs.rs +++ b/crates/jsshaker/src/vfs.rs @@ -59,6 +59,9 @@ impl Vfs for StdFs { pub struct SingleFileFs(pub String); impl SingleFileFs { + #[cfg(windows)] + pub const ENTRY_PATH: &'static str = "\\entry.js"; + #[cfg(not(windows))] pub const ENTRY_PATH: &'static str = "/entry.js"; } diff --git a/packages/rollup-plugin/index.ts b/packages/rollup-plugin/index.ts index 871dd6d5..65fc5bd9 100644 --- a/packages/rollup-plugin/index.ts +++ b/packages/rollup-plugin/index.ts @@ -1,6 +1,7 @@ import { OutputChunk, Plugin } from "rollup"; import { Options as JsShakerOptions, shakeMultiModule } from "jsshaker"; import { createFilter, FilterPattern } from "unplugin-utils"; +import { normalize } from "node:path"; export interface Options { preset?: "safest" | "recommended" | "smallest" | "disabled"; @@ -63,7 +64,7 @@ export default function rollupPluginJsShaker( [entryFileName]: entrySource, }; for (const [fileName, module] of Object.entries(bundle)) { - sources[fileName] = module.code; + sources[normalize(fileName)] = module.code; } const startTime = Date.now(); @@ -79,31 +80,26 @@ export default function rollupPluginJsShaker( delete shaken.output[entryFileName]; const maxFileNameLength = Math.max( - ...Object.keys(shaken.output).map((n) => n.length), + ...Object.keys(bundle).map((n) => n.length), ); let totalOriginalSize = 0; let totalShakenSize = 0; - for (const [fileName, chunk] of Object.entries(shaken.output)) { - const module = bundle[fileName]; - if (module && module.type === "chunk") { - const percentage = ( - (chunk.code.length / module.code.length) * - 100 - ).toFixed(2); - this.info( - `- ${fileName.padEnd(maxFileNameLength)} ${percentage}% (${module.code.length} -> ${chunk.code.length} bytes)`, - ); - totalOriginalSize += module.code.length; - totalShakenSize += chunk.code.length; - module.code = chunk.code; - // if (chunk.sourceMapJson) { - // module.map = JSON.parse(chunk.sourceMapJson); - // } - } else { - throw new Error( - `JsShaker Vite plugin expected to find module ${fileName} in the bundle.`, - ); - } + for (const [fileName, module] of Object.entries(bundle)) { + const chunk = shaken.output[normalize(fileName)]; + if (!chunk) continue; + const percentage = ( + (chunk.code.length / module.code.length) * + 100 + ).toFixed(2); + this.info( + `- ${fileName.padEnd(maxFileNameLength)} ${percentage}% (${module.code.length} -> ${chunk.code.length} bytes)`, + ); + totalOriginalSize += module.code.length; + totalShakenSize += chunk.code.length; + module.code = chunk.code; + // if (chunk.sourceMapJson) { + // module.map = JSON.parse(chunk.sourceMapJson); + // } } const totalPercentage = ( diff --git a/packages/rollup-plugin/package.json b/packages/rollup-plugin/package.json index f13a9ed5..d83a1a1a 100644 --- a/packages/rollup-plugin/package.json +++ b/packages/rollup-plugin/package.json @@ -27,6 +27,7 @@ "jsshaker": "workspace:*" }, "devDependencies": { + "@types/node": "^25.0.0", "rollup": "^4.53.5", "tsdown": "^0.18.1", "unplugin-utils": "^0.3.1" diff --git a/packages/rollup-plugin/tsconfig.json b/packages/rollup-plugin/tsconfig.json new file mode 100644 index 00000000..7812f071 --- /dev/null +++ b/packages/rollup-plugin/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "types": ["node"] + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 68fbc618..df7cf958 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 0.61.9 '@vitejs/plugin-vue': specifier: ^5.1.4 - version: 5.2.4(vite@5.4.19(@types/node@25.0.3)(lightningcss@1.30.2))(vue@3.5.21(typescript@5.9.2)) + version: 5.2.4(vite@5.4.19(@types/node@25.0.3))(vue@3.5.21(typescript@5.9.2)) '@vueuse/core': specifier: ^11.1.0 version: 11.3.0(vue@3.5.21(typescript@5.9.2)) @@ -66,13 +66,13 @@ importers: version: 1.29.2 unocss: specifier: ^0.61.9 - version: 0.61.9(postcss@8.5.6)(rollup@4.53.5)(vite@5.4.19(@types/node@25.0.3)(lightningcss@1.30.2)) + version: 0.61.9(postcss@8.5.6)(rollup@4.53.5)(vite@5.4.19(@types/node@25.0.3)) vite: specifier: ^5.4.7 - version: 5.4.19(@types/node@25.0.3)(lightningcss@1.30.2) + version: 5.4.19(@types/node@25.0.3) vite-plugin-wasm: specifier: ^3.3.0 - version: 3.5.0(vite@5.4.19(@types/node@25.0.3)(lightningcss@1.30.2)) + version: 3.5.0(vite@5.4.19(@types/node@25.0.3)) vue: specifier: ^3.5.7 version: 3.5.21(typescript@5.9.2) @@ -83,6 +83,9 @@ importers: specifier: workspace:* version: link:../napi devDependencies: + '@types/node': + specifier: ^25.0.0 + version: 25.0.3 rollup: specifier: ^4.53.5 version: 4.53.5 @@ -106,13 +109,13 @@ importers: version: 18.3.7(@types/react@18.3.24) '@vitejs/plugin-react': specifier: ^4.3.3 - version: 4.7.0(vite@5.4.19(@types/node@22.18.0)(lightningcss@1.30.2)) + version: 4.7.0(vite@5.4.19(@types/node@22.18.0)) '@vitejs/plugin-vue': specifier: ^5.1.4 - version: 5.2.4(vite@5.4.19(@types/node@22.18.0)(lightningcss@1.30.2))(vue@3.5.21(typescript@5.9.2)) + version: 5.2.4(vite@5.4.19(@types/node@22.18.0))(vue@3.5.21(typescript@5.9.2)) '@vitest/browser': specifier: ^2.1.3 - version: 2.1.9(@types/node@22.18.0)(playwright@1.55.0)(typescript@5.9.2)(vite@5.4.19(@types/node@22.18.0)(lightningcss@1.30.2))(vitest@2.1.9) + version: 2.1.9(@types/node@22.18.0)(playwright@1.55.0)(typescript@5.9.2)(vite@5.4.19(@types/node@22.18.0))(vitest@2.1.9) antd: specifier: ^5.22.2 version: 5.27.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -136,16 +139,16 @@ importers: version: 18.3.1(react@18.3.1) tsup: specifier: ^8.3.5 - version: 8.5.0(jiti@2.5.1)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1) + version: 8.5.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2) typescript: specifier: ^5.6.3 version: 5.9.2 vite: specifier: ^5.4.9 - version: 5.4.19(@types/node@22.18.0)(lightningcss@1.30.2) + version: 5.4.19(@types/node@22.18.0) vitest: specifier: ^2.1.3 - version: 2.1.9(@types/node@22.18.0)(@vitest/browser@2.1.9)(lightningcss@1.30.2)(msw@2.11.1(@types/node@22.18.0)(typescript@5.9.2)) + version: 2.1.9(@types/node@22.18.0)(@vitest/browser@2.1.9)(msw@2.11.1(@types/node@22.18.0)(typescript@5.9.2)) vue: specifier: ^3.5.12 version: 3.5.21(typescript@5.9.2) @@ -1142,42 +1145,49 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@napi-rs/lzma-linux-arm64-musl@1.4.5': resolution: {integrity: sha512-yWjcPDgJ2nIL3KNvi4536dlT/CcCWO0DUyEOlBs/SacG7BeD6IjGh6yYzd3/X1Y3JItCbZoDoLUH8iB1lTXo3w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@napi-rs/lzma-linux-ppc64-gnu@1.4.5': resolution: {integrity: sha512-0XRhKuIU/9ZjT4WDIG/qnX7Xz7mSQHYZo9Gb3MP2gcvBgr6BA4zywQ9k3gmQaPn9ECE+CZg2V7DV7kT+x2pUMQ==} engines: {node: '>= 10'} cpu: [ppc64] os: [linux] + libc: [glibc] '@napi-rs/lzma-linux-riscv64-gnu@1.4.5': resolution: {integrity: sha512-QrqDIPEUUB23GCpyQj/QFyMlr8SGxxyExeZz9OWFnHfb70kXdTLWrHS/hEI1Ru+lSbQ/6xRqeoGyQ4Aqdg+/RA==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] + libc: [glibc] '@napi-rs/lzma-linux-s390x-gnu@1.4.5': resolution: {integrity: sha512-k8RVM5aMhW86E9H0QXdquwojew4H3SwPxbRVbl49/COJQWCUjGi79X6mYruMnMPEznZinUiT1jgKbFo2A00NdA==} engines: {node: '>= 10'} cpu: [s390x] os: [linux] + libc: [glibc] '@napi-rs/lzma-linux-x64-gnu@1.4.5': resolution: {integrity: sha512-6rMtBgnIq2Wcl1rQdZsnM+rtCcVCbws1nF8S2NzaUsVaZv8bjrPiAa0lwg4Eqnn1d9lgwqT+cZgm5m+//K08Kw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@napi-rs/lzma-linux-x64-musl@1.4.5': resolution: {integrity: sha512-eiadGBKi7Vd0bCArBUOO/qqRYPHt/VQVvGyYvDFt6C2ZSIjlD+HuOl+2oS1sjf4CFjK4eDIog6EdXnL0NE6iyQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@napi-rs/lzma-wasm32-wasi@1.4.5': resolution: {integrity: sha512-+VyHHlr68dvey6fXc2hehw9gHVFIW3TtGF1XkcbAu65qVXsA9D/T+uuoRVqhE+JCyFHFrO0ixRbZDRK1XJt1sA==} @@ -1247,36 +1257,42 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@napi-rs/tar-linux-arm64-musl@1.1.0': resolution: {integrity: sha512-L/y1/26q9L/uBqiW/JdOb/Dc94egFvNALUZV2WCGKQXc6UByPBMgdiEyW2dtoYxYYYYc+AKD+jr+wQPcvX2vrQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@napi-rs/tar-linux-ppc64-gnu@1.1.0': resolution: {integrity: sha512-EPE1K/80RQvPbLRJDJs1QmCIcH+7WRi0F73+oTe1582y9RtfGRuzAkzeBuAGRXAQEjRQw/RjtNqr6UTJ+8UuWQ==} engines: {node: '>= 10'} cpu: [ppc64] os: [linux] + libc: [glibc] '@napi-rs/tar-linux-s390x-gnu@1.1.0': resolution: {integrity: sha512-B2jhWiB1ffw1nQBqLUP1h4+J1ovAxBOoe5N2IqDMOc63fsPZKNqF1PvO/dIem8z7LL4U4bsfmhy3gBfu547oNQ==} engines: {node: '>= 10'} cpu: [s390x] os: [linux] + libc: [glibc] '@napi-rs/tar-linux-x64-gnu@1.1.0': resolution: {integrity: sha512-tbZDHnb9617lTnsDMGo/eAMZxnsQFnaRe+MszRqHguKfMwkisc9CCJnks/r1o84u5fECI+J/HOrKXgczq/3Oww==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@napi-rs/tar-linux-x64-musl@1.1.0': resolution: {integrity: sha512-dV6cODlzbO8u6Anmv2N/ilQHq/AWz0xyltuXoLU3yUyXbZcnWYZuB2rL8OBGPmqNcD+x9NdScBNXh7vWN0naSQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@napi-rs/tar-wasm32-wasi@1.1.0': resolution: {integrity: sha512-jIa9nb2HzOrfH0F8QQ9g3WE4aMH5vSI5/1NYVNm9ysCmNjCCtMXCAhlI3WKCdm/DwHf0zLqdrrtDFXODcNaqMw==} @@ -1346,24 +1362,28 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@napi-rs/wasm-tools-linux-arm64-musl@1.0.1': resolution: {integrity: sha512-jAasbIvjZXCgX0TCuEFQr+4D6Lla/3AAVx2LmDuMjgG4xoIXzjKWl7c4chuaD+TI+prWT0X6LJcdzFT+ROKGHQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@napi-rs/wasm-tools-linux-x64-gnu@1.0.1': resolution: {integrity: sha512-Plgk5rPqqK2nocBGajkMVbGm010Z7dnUgq0wtnYRZbzWWxwWcXfZMPa8EYxrK4eE8SzpI7VlZP1tdVsdjgGwMw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@napi-rs/wasm-tools-linux-x64-musl@1.0.1': resolution: {integrity: sha512-GW7AzGuWxtQkyHknHWYFdR0CHmW6is8rG2Rf4V6GNmMpmwtXt/ItWYWtBe4zqJWycMNazpfZKSw/BpT7/MVCXQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@napi-rs/wasm-tools-wasm32-wasi@1.0.1': resolution: {integrity: sha512-/nQVSTrqSsn7YdAc2R7Ips/tnw5SPUcl3D7QrXCNGPqjbatIspnaexvaOYNyKMU6xPu+pc0BTnKVmqhlJJCPLA==} @@ -1576,24 +1596,28 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [glibc] '@rolldown/binding-linux-arm64-musl@1.0.0-beta.55': resolution: {integrity: sha512-QbNncvqAXziya5wleI+OJvmceEE15vE4yn4qfbI/hwT/+8ZcqxyfRZOOh62KjisXxp4D0h3JZspycXYejxAU3w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [musl] '@rolldown/binding-linux-x64-gnu@1.0.0-beta.55': resolution: {integrity: sha512-YZCTZZM+rujxwVc6A+QZaNMJXVtmabmFYLG2VGQTKaBfYGvBKUgtbMEttnp/oZ88BMi2DzadBVhOmfQV8SuHhw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [glibc] '@rolldown/binding-linux-x64-musl@1.0.0-beta.55': resolution: {integrity: sha512-28q9OQ/DDpFh2keS4BVAlc3N65/wiqKbk5K1pgLdu/uWbKa8hgUJofhXxqO+a+Ya2HVTUuYHneWsI2u+eu3N5Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [musl] '@rolldown/binding-openharmony-arm64@1.0.0-beta.55': resolution: {integrity: sha512-LiCA4BjCnm49B+j1lFzUtlC+4ZphBv0d0g5VqrEJua/uyv9Ey1v9tiaMql1C8c0TVSNDUmrkfHQ71vuQC7YfpQ==} @@ -1697,111 +1721,133 @@ packages: resolution: {integrity: sha512-u72Mzc6jyJwKjJbZZcIYmd9bumJu7KNmHYdue43vT1rXPm2rITwmPWF0mmPzLm9/vJWxIRbao/jrQmxTO0Sm9w==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-gnueabihf@4.53.5': resolution: {integrity: sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.50.0': resolution: {integrity: sha512-S4UefYdV0tnynDJV1mdkNawp0E5Qm2MtSs330IyHgaccOFrwqsvgigUD29uT+B/70PDY1eQ3t40+xf6wIvXJyg==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm-musleabihf@4.53.5': resolution: {integrity: sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.50.0': resolution: {integrity: sha512-1EhkSvUQXJsIhk4msxP5nNAUWoB4MFDHhtc4gAYvnqoHlaL9V3F37pNHabndawsfy/Tp7BPiy/aSa6XBYbaD1g==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-gnu@4.53.5': resolution: {integrity: sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.50.0': resolution: {integrity: sha512-EtBDIZuDtVg75xIPIK1l5vCXNNCIRM0OBPUG+tbApDuJAy9mKago6QxX+tfMzbCI6tXEhMuZuN1+CU8iDW+0UQ==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-musl@4.53.5': resolution: {integrity: sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.53.5': resolution: {integrity: sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-loongarch64-gnu@4.50.0': resolution: {integrity: sha512-BGYSwJdMP0hT5CCmljuSNx7+k+0upweM2M4YGfFBjnFSZMHOLYR0gEEj/dxyYJ6Zc6AiSeaBY8dWOa11GF/ppQ==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-gnu@4.50.0': resolution: {integrity: sha512-I1gSMzkVe1KzAxKAroCJL30hA4DqSi+wGc5gviD0y3IL/VkvcnAqwBf4RHXHyvH66YVHxpKO8ojrgc4SrWAnLg==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-gnu@4.53.5': resolution: {integrity: sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.50.0': resolution: {integrity: sha512-bSbWlY3jZo7molh4tc5dKfeSxkqnf48UsLqYbUhnkdnfgZjgufLS/NTA8PcP/dnvct5CCdNkABJ56CbclMRYCA==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.53.5': resolution: {integrity: sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.50.0': resolution: {integrity: sha512-LSXSGumSURzEQLT2e4sFqFOv3LWZsEF8FK7AAv9zHZNDdMnUPYH3t8ZlaeYYZyTXnsob3htwTKeWtBIkPV27iQ==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-riscv64-musl@4.53.5': resolution: {integrity: sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.50.0': resolution: {integrity: sha512-CxRKyakfDrsLXiCyucVfVWVoaPA4oFSpPpDwlMcDFQvrv3XY6KEzMtMZrA+e/goC8xxp2WSOxHQubP8fPmmjOQ==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-s390x-gnu@4.53.5': resolution: {integrity: sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.50.0': resolution: {integrity: sha512-8PrJJA7/VU8ToHVEPu14FzuSAqVKyo5gg/J8xUerMbyNkWkO9j2ExBho/68RnJsMGNJq4zH114iAttgm7BZVkA==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.53.5': resolution: {integrity: sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.50.0': resolution: {integrity: sha512-SkE6YQp+CzpyOrbw7Oc4MgXFvTw2UIBElvAvLCo230pyxOLmYwRPwZ/L5lBe/VW/qT1ZgND9wJfOsdy0XptRvw==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-linux-x64-musl@4.53.5': resolution: {integrity: sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-openharmony-arm64@4.50.0': resolution: {integrity: sha512-PZkNLPfvXeIOgJWA804zjSFH7fARBBCpCXxgkGDRjjAhRLOR8o0IGS01ykh5GYfod4c2yiiREuDM8iZ+pVsT+Q==} @@ -2410,10 +2456,6 @@ packages: destr@2.0.5: resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} - detect-libc@2.1.2: - resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} - engines: {node: '>=8'} - devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -2704,10 +2746,6 @@ packages: resolution: {integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==} hasBin: true - jiti@2.5.1: - resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} - hasBin: true - joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -2739,76 +2777,6 @@ packages: kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - lightningcss-android-arm64@1.30.2: - resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [android] - - lightningcss-darwin-arm64@1.30.2: - resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - - lightningcss-darwin-x64@1.30.2: - resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - - lightningcss-freebsd-x64@1.30.2: - resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [freebsd] - - lightningcss-linux-arm-gnueabihf@1.30.2: - resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - - lightningcss-linux-arm64-gnu@1.30.2: - resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - - lightningcss-linux-arm64-musl@1.30.2: - resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - - lightningcss-linux-x64-gnu@1.30.2: - resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - - lightningcss-linux-x64-musl@1.30.2: - resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - - lightningcss-win32-arm64-msvc@1.30.2: - resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [win32] - - lightningcss-win32-x64-msvc@1.30.2: - resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - - lightningcss@1.30.2: - resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} - engines: {node: '>= 12.0.0'} - lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} @@ -3956,11 +3924,6 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@2.8.1: - resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} - engines: {node: '>= 14.6'} - hasBin: true - yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -5463,13 +5426,13 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@unocss/astro@0.61.9(rollup@4.53.5)(vite@5.4.19(@types/node@25.0.3)(lightningcss@1.30.2))': + '@unocss/astro@0.61.9(rollup@4.53.5)(vite@5.4.19(@types/node@25.0.3))': dependencies: '@unocss/core': 0.61.9 '@unocss/reset': 0.61.9 - '@unocss/vite': 0.61.9(rollup@4.53.5)(vite@5.4.19(@types/node@25.0.3)(lightningcss@1.30.2)) + '@unocss/vite': 0.61.9(rollup@4.53.5)(vite@5.4.19(@types/node@25.0.3)) optionalDependencies: - vite: 5.4.19(@types/node@25.0.3)(lightningcss@1.30.2) + vite: 5.4.19(@types/node@25.0.3) transitivePeerDependencies: - rollup - supports-color @@ -5606,7 +5569,7 @@ snapshots: dependencies: '@unocss/core': 0.61.9 - '@unocss/vite@0.61.9(rollup@4.53.5)(vite@5.4.19(@types/node@25.0.3)(lightningcss@1.30.2))': + '@unocss/vite@0.61.9(rollup@4.53.5)(vite@5.4.19(@types/node@25.0.3))': dependencies: '@ampproject/remapping': 2.3.0 '@rollup/pluginutils': 5.2.0(rollup@4.53.5) @@ -5618,7 +5581,7 @@ snapshots: chokidar: 3.6.0 fast-glob: 3.3.3 magic-string: 0.30.18 - vite: 5.4.19(@types/node@25.0.3)(lightningcss@1.30.2) + vite: 5.4.19(@types/node@25.0.3) transitivePeerDependencies: - rollup - supports-color @@ -5627,7 +5590,7 @@ snapshots: dependencies: valibot: 1.2.0(typescript@5.9.2) - '@vitejs/plugin-react@4.7.0(vite@5.4.19(@types/node@22.18.0)(lightningcss@1.30.2))': + '@vitejs/plugin-react@4.7.0(vite@5.4.19(@types/node@22.18.0))': dependencies: '@babel/core': 7.28.3 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.3) @@ -5635,31 +5598,31 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 5.4.19(@types/node@22.18.0)(lightningcss@1.30.2) + vite: 5.4.19(@types/node@22.18.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@22.18.0)(lightningcss@1.30.2))(vue@3.5.21(typescript@5.9.2))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@22.18.0))(vue@3.5.21(typescript@5.9.2))': dependencies: - vite: 5.4.19(@types/node@22.18.0)(lightningcss@1.30.2) + vite: 5.4.19(@types/node@22.18.0) vue: 3.5.21(typescript@5.9.2) - '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@25.0.3)(lightningcss@1.30.2))(vue@3.5.21(typescript@5.9.2))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@25.0.3))(vue@3.5.21(typescript@5.9.2))': dependencies: - vite: 5.4.19(@types/node@25.0.3)(lightningcss@1.30.2) + vite: 5.4.19(@types/node@25.0.3) vue: 3.5.21(typescript@5.9.2) - '@vitest/browser@2.1.9(@types/node@22.18.0)(playwright@1.55.0)(typescript@5.9.2)(vite@5.4.19(@types/node@22.18.0)(lightningcss@1.30.2))(vitest@2.1.9)': + '@vitest/browser@2.1.9(@types/node@22.18.0)(playwright@1.55.0)(typescript@5.9.2)(vite@5.4.19(@types/node@22.18.0))(vitest@2.1.9)': dependencies: '@testing-library/dom': 10.4.1 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) - '@vitest/mocker': 2.1.9(msw@2.11.1(@types/node@22.18.0)(typescript@5.9.2))(vite@5.4.19(@types/node@22.18.0)(lightningcss@1.30.2)) + '@vitest/mocker': 2.1.9(msw@2.11.1(@types/node@22.18.0)(typescript@5.9.2))(vite@5.4.19(@types/node@22.18.0)) '@vitest/utils': 2.1.9 magic-string: 0.30.18 msw: 2.11.1(@types/node@22.18.0)(typescript@5.9.2) sirv: 3.0.2 tinyrainbow: 1.2.0 - vitest: 2.1.9(@types/node@22.18.0)(@vitest/browser@2.1.9)(lightningcss@1.30.2)(msw@2.11.1(@types/node@22.18.0)(typescript@5.9.2)) + vitest: 2.1.9(@types/node@22.18.0)(@vitest/browser@2.1.9)(msw@2.11.1(@types/node@22.18.0)(typescript@5.9.2)) ws: 8.18.3 optionalDependencies: playwright: 1.55.0 @@ -5677,14 +5640,14 @@ snapshots: chai: 5.3.3 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.9(msw@2.11.1(@types/node@22.18.0)(typescript@5.9.2))(vite@5.4.19(@types/node@22.18.0)(lightningcss@1.30.2))': + '@vitest/mocker@2.1.9(msw@2.11.1(@types/node@22.18.0)(typescript@5.9.2))(vite@5.4.19(@types/node@22.18.0))': dependencies: '@vitest/spy': 2.1.9 estree-walker: 3.0.3 magic-string: 0.30.18 optionalDependencies: msw: 2.11.1(@types/node@22.18.0)(typescript@5.9.2) - vite: 5.4.19(@types/node@22.18.0)(lightningcss@1.30.2) + vite: 5.4.19(@types/node@22.18.0) '@vitest/pretty-format@2.1.9': dependencies: @@ -6094,9 +6057,6 @@ snapshots: destr@2.0.5: {} - detect-libc@2.1.2: - optional: true - devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -6428,9 +6388,6 @@ snapshots: jiti@2.0.0-beta.3: {} - jiti@2.5.1: - optional: true - joycon@3.1.1: {} js-tokens@4.0.0: {} @@ -6453,56 +6410,6 @@ snapshots: kolorist@1.8.0: {} - lightningcss-android-arm64@1.30.2: - optional: true - - lightningcss-darwin-arm64@1.30.2: - optional: true - - lightningcss-darwin-x64@1.30.2: - optional: true - - lightningcss-freebsd-x64@1.30.2: - optional: true - - lightningcss-linux-arm-gnueabihf@1.30.2: - optional: true - - lightningcss-linux-arm64-gnu@1.30.2: - optional: true - - lightningcss-linux-arm64-musl@1.30.2: - optional: true - - lightningcss-linux-x64-gnu@1.30.2: - optional: true - - lightningcss-linux-x64-musl@1.30.2: - optional: true - - lightningcss-win32-arm64-msvc@1.30.2: - optional: true - - lightningcss-win32-x64-msvc@1.30.2: - optional: true - - lightningcss@1.30.2: - dependencies: - detect-libc: 2.1.2 - optionalDependencies: - lightningcss-android-arm64: 1.30.2 - lightningcss-darwin-arm64: 1.30.2 - lightningcss-darwin-x64: 1.30.2 - lightningcss-freebsd-x64: 1.30.2 - lightningcss-linux-arm-gnueabihf: 1.30.2 - lightningcss-linux-arm64-gnu: 1.30.2 - lightningcss-linux-arm64-musl: 1.30.2 - lightningcss-linux-x64-gnu: 1.30.2 - lightningcss-linux-x64-musl: 1.30.2 - lightningcss-win32-arm64-msvc: 1.30.2 - lightningcss-win32-x64-msvc: 1.30.2 - optional: true - lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} @@ -6732,14 +6639,13 @@ snapshots: optionalDependencies: fsevents: 2.3.2 - postcss-load-config@6.0.1(jiti@2.5.1)(postcss@8.5.6)(tsx@4.20.5)(yaml@2.8.1): + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5): dependencies: lilconfig: 3.1.3 optionalDependencies: - jiti: 2.5.1 + jiti: 1.21.7 postcss: 8.5.6 tsx: 4.20.5 - yaml: 2.8.1 postcss@8.5.6: dependencies: @@ -7449,7 +7355,7 @@ snapshots: tslib@2.8.1: {} - tsup@8.5.0(jiti@2.5.1)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1): + tsup@8.5.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2): dependencies: bundle-require: 5.1.0(esbuild@0.25.9) cac: 6.7.14 @@ -7460,7 +7366,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.5.1)(postcss@8.5.6)(tsx@4.20.5)(yaml@2.8.1) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5) resolve-from: 5.0.0 rollup: 4.50.0 source-map: 0.8.0-beta.0 @@ -7538,9 +7444,9 @@ snapshots: universal-user-agent@7.0.3: {} - unocss@0.61.9(postcss@8.5.6)(rollup@4.53.5)(vite@5.4.19(@types/node@25.0.3)(lightningcss@1.30.2)): + unocss@0.61.9(postcss@8.5.6)(rollup@4.53.5)(vite@5.4.19(@types/node@25.0.3)): dependencies: - '@unocss/astro': 0.61.9(rollup@4.53.5)(vite@5.4.19(@types/node@25.0.3)(lightningcss@1.30.2)) + '@unocss/astro': 0.61.9(rollup@4.53.5)(vite@5.4.19(@types/node@25.0.3)) '@unocss/cli': 0.61.9(rollup@4.53.5) '@unocss/core': 0.61.9 '@unocss/extractor-arbitrary-variants': 0.61.9 @@ -7559,9 +7465,9 @@ snapshots: '@unocss/transformer-compile-class': 0.61.9 '@unocss/transformer-directives': 0.61.9 '@unocss/transformer-variant-group': 0.61.9 - '@unocss/vite': 0.61.9(rollup@4.53.5)(vite@5.4.19(@types/node@25.0.3)(lightningcss@1.30.2)) + '@unocss/vite': 0.61.9(rollup@4.53.5)(vite@5.4.19(@types/node@25.0.3)) optionalDependencies: - vite: 5.4.19(@types/node@25.0.3)(lightningcss@1.30.2) + vite: 5.4.19(@types/node@25.0.3) transitivePeerDependencies: - postcss - rollup @@ -7596,13 +7502,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@2.1.9(@types/node@22.18.0)(lightningcss@1.30.2): + vite-node@2.1.9(@types/node@22.18.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 1.1.2 - vite: 5.4.19(@types/node@22.18.0)(lightningcss@1.30.2) + vite: 5.4.19(@types/node@22.18.0) transitivePeerDependencies: - '@types/node' - less @@ -7614,11 +7520,11 @@ snapshots: - supports-color - terser - vite-plugin-wasm@3.5.0(vite@5.4.19(@types/node@25.0.3)(lightningcss@1.30.2)): + vite-plugin-wasm@3.5.0(vite@5.4.19(@types/node@25.0.3)): dependencies: - vite: 5.4.19(@types/node@25.0.3)(lightningcss@1.30.2) + vite: 5.4.19(@types/node@25.0.3) - vite@5.4.19(@types/node@22.18.0)(lightningcss@1.30.2): + vite@5.4.19(@types/node@22.18.0): dependencies: esbuild: 0.21.5 postcss: 8.5.6 @@ -7626,9 +7532,8 @@ snapshots: optionalDependencies: '@types/node': 22.18.0 fsevents: 2.3.3 - lightningcss: 1.30.2 - vite@5.4.19(@types/node@25.0.3)(lightningcss@1.30.2): + vite@5.4.19(@types/node@25.0.3): dependencies: esbuild: 0.21.5 postcss: 8.5.6 @@ -7636,12 +7541,11 @@ snapshots: optionalDependencies: '@types/node': 25.0.3 fsevents: 2.3.3 - lightningcss: 1.30.2 - vitest@2.1.9(@types/node@22.18.0)(@vitest/browser@2.1.9)(lightningcss@1.30.2)(msw@2.11.1(@types/node@22.18.0)(typescript@5.9.2)): + vitest@2.1.9(@types/node@22.18.0)(@vitest/browser@2.1.9)(msw@2.11.1(@types/node@22.18.0)(typescript@5.9.2)): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(msw@2.11.1(@types/node@22.18.0)(typescript@5.9.2))(vite@5.4.19(@types/node@22.18.0)(lightningcss@1.30.2)) + '@vitest/mocker': 2.1.9(msw@2.11.1(@types/node@22.18.0)(typescript@5.9.2))(vite@5.4.19(@types/node@22.18.0)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 @@ -7657,12 +7561,12 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.1.1 tinyrainbow: 1.2.0 - vite: 5.4.19(@types/node@22.18.0)(lightningcss@1.30.2) - vite-node: 2.1.9(@types/node@22.18.0)(lightningcss@1.30.2) + vite: 5.4.19(@types/node@22.18.0) + vite-node: 2.1.9(@types/node@22.18.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.18.0 - '@vitest/browser': 2.1.9(@types/node@22.18.0)(playwright@1.55.0)(typescript@5.9.2)(vite@5.4.19(@types/node@22.18.0)(lightningcss@1.30.2))(vitest@2.1.9) + '@vitest/browser': 2.1.9(@types/node@22.18.0)(playwright@1.55.0)(typescript@5.9.2)(vite@5.4.19(@types/node@22.18.0))(vitest@2.1.9) transitivePeerDependencies: - less - lightningcss @@ -7749,9 +7653,6 @@ snapshots: yallist@3.1.1: {} - yaml@2.8.1: - optional: true - yargs-parser@20.2.9: {} yargs-parser@21.1.1: {}