From 1a4284381ceecf72ce4518872b90b1e989704a71 Mon Sep 17 00:00:00 2001 From: Arianrhod Sandlot Date: Mon, 19 Aug 2024 16:40:52 +0800 Subject: [PATCH] fix: remove redundant dependences to reduce the bundled package size --- package.json | 18 +- pnpm-lock.yaml | 580 ++++++++++++++++++++++------------------------ src/emscripten.ts | 16 -- src/emulator.ts | 67 ++---- src/nostalgist.ts | 10 - src/options.ts | 4 +- src/utils.ts | 25 +- src/vendors.ts | 4 +- 8 files changed, 330 insertions(+), 394 deletions(-) diff --git a/package.json b/package.json index 912ce30..33881c8 100644 --- a/package.json +++ b/package.json @@ -47,24 +47,28 @@ "test:e2e": "playwright test -c tests/e2e", "test:integration": "vitest -c tests/integration/vitest.config" }, - "devDependencies": { - "@arianrhodsandlot/eslint-config": "0.15.9", - "@astrojs/starlight": "0.25.5", - "@playwright/test": "1.46.0", + "bundleDependencies": ["ini", "path-browserify"], + "dependencies": { "@types/emscripten": "1.39.13", "@types/ini": "4.1.1", + "@types/path-browserify": "1.0.2" + }, + "devDependencies": { + "@arianrhodsandlot/eslint-config": "0.15.11", + "@astrojs/starlight": "0.26.1", + "@playwright/test": "1.46.1", "@types/is-ci": "3.0.4", - "@types/node": "22.3.0", + "@types/node": "22.4.1", "@types/wicg-file-system-access": "2023.10.5", "astro": "4.14.2", - "browserfs": "1.4.3", "eslint": "9.9.0", "happy-dom": "14.12.3", "ini": "4.1.3", "is-ci": "3.0.1", + "path-browserify": "1.0.1", "prettier": "3.3.3", "serve": "14.2.3", - "sharp": "0.33.4", + "sharp": "0.33.5", "typescript": "5.5.4", "vite": "5.4.1", "vitest": "2.0.5" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3eba5de..ac35e42 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,37 +7,38 @@ settings: importers: .: - devDependencies: - '@arianrhodsandlot/eslint-config': - specifier: 0.15.9 - version: 0.15.9(@types/eslint@8.56.10)(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(prettier@3.3.3) - '@astrojs/starlight': - specifier: 0.25.5 - version: 0.25.5(astro@4.14.2(@types/node@22.3.0)(rollup@4.20.0)(stylus@0.57.0)(typescript@5.5.4)) - '@playwright/test': - specifier: 1.46.0 - version: 1.46.0 + dependencies: '@types/emscripten': specifier: 1.39.13 version: 1.39.13 '@types/ini': specifier: 4.1.1 version: 4.1.1 + '@types/path-browserify': + specifier: 1.0.2 + version: 1.0.2 + devDependencies: + '@arianrhodsandlot/eslint-config': + specifier: 0.15.11 + version: 0.15.11(@types/eslint@8.56.10)(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(prettier@3.3.3) + '@astrojs/starlight': + specifier: 0.26.1 + version: 0.26.1(astro@4.14.2(@types/node@22.4.1)(rollup@4.21.0)(stylus@0.57.0)(typescript@5.5.4)) + '@playwright/test': + specifier: 1.46.1 + version: 1.46.1 '@types/is-ci': specifier: 3.0.4 version: 3.0.4 '@types/node': - specifier: 22.3.0 - version: 22.3.0 + specifier: 22.4.1 + version: 22.4.1 '@types/wicg-file-system-access': specifier: 2023.10.5 version: 2023.10.5 astro: specifier: 4.14.2 - version: 4.14.2(@types/node@22.3.0)(rollup@4.20.0)(stylus@0.57.0)(typescript@5.5.4) - browserfs: - specifier: 1.4.3 - version: 1.4.3 + version: 4.14.2(@types/node@22.4.1)(rollup@4.21.0)(stylus@0.57.0)(typescript@5.5.4) eslint: specifier: 9.9.0 version: 9.9.0(jiti@1.21.6) @@ -50,6 +51,9 @@ importers: is-ci: specifier: 3.0.1 version: 3.0.1 + path-browserify: + specifier: 1.0.1 + version: 1.0.1 prettier: specifier: 3.3.3 version: 3.3.3 @@ -57,17 +61,17 @@ importers: specifier: 14.2.3 version: 14.2.3 sharp: - specifier: 0.33.4 - version: 0.33.4 + specifier: 0.33.5 + version: 0.33.5 typescript: specifier: 5.5.4 version: 5.5.4 vite: specifier: 5.4.1 - version: 5.4.1(@types/node@22.3.0)(stylus@0.57.0) + version: 5.4.1(@types/node@22.4.1)(stylus@0.57.0) vitest: specifier: 2.0.5 - version: 2.0.5(@types/node@22.3.0)(happy-dom@14.12.3)(stylus@0.57.0) + version: 2.0.5(@types/node@22.4.1)(happy-dom@14.12.3)(stylus@0.57.0) packages: @@ -79,8 +83,8 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@arianrhodsandlot/eslint-config@0.15.9': - resolution: {integrity: sha512-hNwqXcyJxDBSuSes9bFYFaQ/UxnFXijtlk+m9/4wwDyHWCXQVeRa/Mec8zj9tL9Ze+I/t9PZgPJmkr1XTpyiiw==} + '@arianrhodsandlot/eslint-config@0.15.11': + resolution: {integrity: sha512-N7CkByxLeG+WdfmaALvfwZ9X4854Of1y1W6J1gEBfxJHBSBzbP9YWPPSczenCepNVbzaIRkHzSwXk2gaLvos2A==} peerDependencies: eslint: '*' @@ -106,8 +110,8 @@ packages: '@astrojs/sitemap@3.1.6': resolution: {integrity: sha512-1Qp2NvAzVImqA6y+LubKi1DVhve/hXXgFvB0szxiipzh7BvtuKe4oJJ9dXSqaubaTkt4nMa6dv6RCCAYeB6xaQ==} - '@astrojs/starlight@0.25.5': - resolution: {integrity: sha512-JQsfoqRUX/HBpOW8LWPdiIxcfXZ5HOvi4Dz4Ez61U99hDyX3Ix2Q+pmsek1sH5R1MHWx/wlki2VPEqidtKXyiQ==} + '@astrojs/starlight@0.26.1': + resolution: {integrity: sha512-0qNYWZJ+ZOdSfM7du6fGuwUhyTHtAeRIl0zYe+dF0TxDvcakplO1SYLbGGX6lEVYE3PdBne7dcJww85bXZJIIQ==} peerDependencies: astro: ^4.8.6 @@ -415,121 +419,113 @@ packages: resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} engines: {node: '>=18.18'} - '@img/sharp-darwin-arm64@0.33.4': - resolution: {integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.33.4': - resolution: {integrity: sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.0.2': - resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} - engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.0.2': - resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} - engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.0.2': - resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm@1.0.2': - resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-s390x@1.0.2': - resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-x64@1.0.2': - resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.0.2': - resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.0.2': - resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] - '@img/sharp-linux-arm64@0.33.4': - resolution: {integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linux-arm@0.33.4': - resolution: {integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - '@img/sharp-linux-s390x@0.33.4': - resolution: {integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==} - engines: {glibc: '>=2.31', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - '@img/sharp-linux-x64@0.33.4': - resolution: {integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.33.4': - resolution: {integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-x64@0.33.4': - resolution: {integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-wasm32@0.33.4': - resolution: {integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-ia32@0.33.4': - resolution: {integrity: sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.33.4': - resolution: {integrity: sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] - '@intlify/core-base@9.13.1': - resolution: {integrity: sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==} + '@intlify/core-base@9.14.0': + resolution: {integrity: sha512-zJn0imh9HIsZZUtt9v8T16PeVstPv6bP2YzlrYJwoF8F30gs4brZBwW2KK6EI5WYKFi3NeqX6+UU4gniz5TkGg==} engines: {node: '>= 16'} '@intlify/eslint-plugin-vue-i18n@3.0.0': @@ -538,12 +534,12 @@ packages: peerDependencies: eslint: ^8.0.0 || ^9.0.0-0 - '@intlify/message-compiler@9.13.1': - resolution: {integrity: sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==} + '@intlify/message-compiler@9.14.0': + resolution: {integrity: sha512-sXNsoMI0YsipSXW8SR75drmVK56tnJHoYbPXUv2Cf9lz6FzvwsosFm6JtC1oQZI/kU+n7qx0qRrEWkeYFTgETA==} engines: {node: '>= 16'} - '@intlify/shared@9.13.1': - resolution: {integrity: sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==} + '@intlify/shared@9.14.0': + resolution: {integrity: sha512-r+N8KRQL7LgN1TMTs1A2svfuAU0J94Wu9wWdJVJqYsoMMLIeJxrPjazihfHpmJqfgZq0ah3Y9Q4pgWV2O90Fyg==} engines: {node: '>= 16'} '@isaacs/cliui@8.0.2': @@ -634,8 +630,8 @@ packages: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@playwright/test@1.46.0': - resolution: {integrity: sha512-/QYft5VArOrGRP5pgkrfKksqsKA6CEFyGQ/gjNe6q0y4tZ1aaPfq4gIjudr1s3D+pXyrPRdsy4opKDrjBabE5w==} + '@playwright/test@1.46.1': + resolution: {integrity: sha512-Fq6SwLujA/DOIvNC2EL/SojJnkKf/rAwJ//APpJJHRyMi1PdKrY3Az+4XNQ51N4RTbItbIByQ0jgd1tayq1aeA==} engines: {node: '>=18'} hasBin: true @@ -648,88 +644,88 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.20.0': - resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==} + '@rollup/rollup-android-arm-eabi@4.21.0': + resolution: {integrity: sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.20.0': - resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==} + '@rollup/rollup-android-arm64@4.21.0': + resolution: {integrity: sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.20.0': - resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==} + '@rollup/rollup-darwin-arm64@4.21.0': + resolution: {integrity: sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.20.0': - resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==} + '@rollup/rollup-darwin-x64@4.21.0': + resolution: {integrity: sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.20.0': - resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==} + '@rollup/rollup-linux-arm-gnueabihf@4.21.0': + resolution: {integrity: sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.20.0': - resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==} + '@rollup/rollup-linux-arm-musleabihf@4.21.0': + resolution: {integrity: sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.20.0': - resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==} + '@rollup/rollup-linux-arm64-gnu@4.21.0': + resolution: {integrity: sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.20.0': - resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==} + '@rollup/rollup-linux-arm64-musl@4.21.0': + resolution: {integrity: sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': - resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': + resolution: {integrity: sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.20.0': - resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==} + '@rollup/rollup-linux-riscv64-gnu@4.21.0': + resolution: {integrity: sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.20.0': - resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==} + '@rollup/rollup-linux-s390x-gnu@4.21.0': + resolution: {integrity: sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.20.0': - resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==} + '@rollup/rollup-linux-x64-gnu@4.21.0': + resolution: {integrity: sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.20.0': - resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==} + '@rollup/rollup-linux-x64-musl@4.21.0': + resolution: {integrity: sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.20.0': - resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==} + '@rollup/rollup-win32-arm64-msvc@4.21.0': + resolution: {integrity: sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.20.0': - resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==} + '@rollup/rollup-win32-ia32-msvc@4.21.0': + resolution: {integrity: sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.20.0': - resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==} + '@rollup/rollup-win32-x64-msvc@4.21.0': + resolution: {integrity: sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==} cpu: [x64] os: [win32] - '@shikijs/core@1.13.0': - resolution: {integrity: sha512-Mj5NVfbAXcD1GnwOTSPl8hBn/T8UDpfFQTptp+p41n/CbUcJtOq98WaRD7Lz3hCglYotUTHUWtzu3JhK6XlkAA==} + '@shikijs/core@1.14.1': + resolution: {integrity: sha512-KyHIIpKNaT20FtFPFjCQB5WVSTpLR/n+jQXhWHWVUMm9MaOaG9BGOG0MSyt7yA4+Lm+4c9rTc03tt3nYzeYSfw==} '@types/acorn@4.0.6': resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} @@ -797,12 +793,15 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@22.3.0': - resolution: {integrity: sha512-nrWpWVaDZuaVc5X84xJ0vNrLvomM205oQyLsRt7OHNZbSHslcWsvgFR7O7hire2ZonjLrWBbedmotmIlJDVd6g==} + '@types/node@22.4.1': + resolution: {integrity: sha512-1tbpb9325+gPnKK0dMm+/LMriX0vKxf6RnB0SZUqfyVkQ4fMgUSySqhxE/y8Jvs4NyF1yHzTfG9KlnkIODxPKg==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/path-browserify@1.0.2': + resolution: {integrity: sha512-ZkC5IUqqIFPXx3ASTTybTzmQdwHwe2C0u3eL75ldQ6T9E9IWFJodn6hIfbZGab73DfyiHN4Xw15gNxUq2FbvBA==} + '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} @@ -1031,9 +1030,6 @@ packages: engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true - async@2.6.4: - resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - atob@2.1.2: resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} engines: {node: '>= 4.5.0'} @@ -1094,11 +1090,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserfs@1.4.3: - resolution: {integrity: sha512-tz8HClVrzTJshcyIu8frE15cjqjcBIu15Bezxsvl/i+6f59iNCN3kznlWjz0FEb3DlnDx3gW5szxeT6D1x0s0w==} - engines: {node: '>= 0.10'} - hasBin: true - browserslist@4.23.3: resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -1417,8 +1408,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.8: - resolution: {integrity: sha512-4Nx0gP2tPNBLTrFxBMHpkQbtn2hidPVr/+/FTtcCiBYTucqc70zRyVZiOLj17Ui3wTO7SQ1/N+hkHYzJjBzt6A==} + electron-to-chromium@1.5.11: + resolution: {integrity: sha512-R1CccCDYqndR25CaXFd6hp/u9RaaMcftMkphmvuepXr5b1vfLkRml6aWVeBhXJ7rbevHkKEMJtz8XqPf7ffmew==} emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} @@ -2916,9 +2907,6 @@ packages: resolution: {integrity: sha512-1nmj0/vfYcMxNEQj0YDRp6bTVv9hI7HLdPhK/vBBYlrnwjATndQvHyicj5Y7pUHrpCFZpFnLVQXIF829tpFmaw==} hasBin: true - pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -2943,6 +2931,9 @@ packages: parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -3012,13 +3003,13 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - playwright-core@1.46.0: - resolution: {integrity: sha512-9Y/d5UIwuJk8t3+lhmMSAJyNP1BUC/DqP3cQJDQQL/oWqAiuPTLgy7Q5dzglmTLwcBRdetzgNM/gni7ckfTr6A==} + playwright-core@1.46.1: + resolution: {integrity: sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==} engines: {node: '>=18'} hasBin: true - playwright@1.46.0: - resolution: {integrity: sha512-XYJ5WvfefWONh1uPAUAi0H2xXV5S3vrtcnXe6uAOgdGi3aSpqOSXX08IAjXW34xitfuOJsvXU5anXZxPSEQiJw==} + playwright@1.46.1: + resolution: {integrity: sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==} engines: {node: '>=18'} hasBin: true @@ -3270,8 +3261,8 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rollup@4.20.0: - resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==} + rollup@4.21.0: + resolution: {integrity: sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3341,9 +3332,9 @@ packages: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} - sharp@0.33.4: - resolution: {integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==} - engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -3353,8 +3344,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.13.0: - resolution: {integrity: sha512-e0dWfnONbEv6xl7FJy3XIhsVHQ/65XHDZl92+6H9+4xWjfdo7pmkqG7Kg47KWtDiEtzM5Z+oEfb4vtRvoZ/X9w==} + shiki@1.14.1: + resolution: {integrity: sha512-FujAN40NEejeXdzPt+3sZ3F2dx1U24BY2XTY01+MG8mbxCiA2XukXdcbyMyLAHJ/1AUUnQd1tZlvIjefWWEJeA==} side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} @@ -3567,8 +3558,8 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinypool@1.0.0: - resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==} + tinypool@1.0.1: + resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} engines: {node: ^18.0.0 || >=20.0.0} tinyrainbow@1.2.0: @@ -3671,8 +3662,8 @@ packages: unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - undici-types@6.18.2: - resolution: {integrity: sha512-5ruQbENj95yDYJNS3TvcaxPMshV7aizdv/hWYjGIKoANWKjhWNBsr2YEuYZKodQulB1b8l7ILOuDQep3afowQQ==} + undici-types@6.19.6: + resolution: {integrity: sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==} unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -3936,7 +3927,7 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@arianrhodsandlot/eslint-config@0.15.9(@types/eslint@8.56.10)(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(prettier@3.3.3)': + '@arianrhodsandlot/eslint-config@0.15.11(@types/eslint@8.56.10)(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(prettier@3.3.3)': dependencies: '@eslint-community/eslint-plugin-eslint-comments': 4.4.0(eslint@9.9.0(jiti@1.21.6)) '@eslint/compat': 1.1.1 @@ -4006,7 +3997,7 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.0 remark-smartypants: 3.0.2 - shiki: 1.13.0 + shiki: 1.14.1 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 @@ -4015,12 +4006,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@3.1.3(astro@4.14.2(@types/node@22.3.0)(rollup@4.20.0)(stylus@0.57.0)(typescript@5.5.4))': + '@astrojs/mdx@3.1.3(astro@4.14.2(@types/node@22.4.1)(rollup@4.21.0)(stylus@0.57.0)(typescript@5.5.4))': dependencies: '@astrojs/markdown-remark': 5.2.0 '@mdx-js/mdx': 3.0.1 acorn: 8.12.1 - astro: 4.14.2(@types/node@22.3.0)(rollup@4.20.0)(stylus@0.57.0)(typescript@5.5.4) + astro: 4.14.2(@types/node@22.4.1)(rollup@4.21.0)(stylus@0.57.0)(typescript@5.5.4) es-module-lexer: 1.5.4 estree-util-visit: 2.0.0 github-slugger: 2.0.0 @@ -4046,15 +4037,15 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.23.8 - '@astrojs/starlight@0.25.5(astro@4.14.2(@types/node@22.3.0)(rollup@4.20.0)(stylus@0.57.0)(typescript@5.5.4))': + '@astrojs/starlight@0.26.1(astro@4.14.2(@types/node@22.4.1)(rollup@4.21.0)(stylus@0.57.0)(typescript@5.5.4))': dependencies: - '@astrojs/mdx': 3.1.3(astro@4.14.2(@types/node@22.3.0)(rollup@4.20.0)(stylus@0.57.0)(typescript@5.5.4)) + '@astrojs/mdx': 3.1.3(astro@4.14.2(@types/node@22.4.1)(rollup@4.21.0)(stylus@0.57.0)(typescript@5.5.4)) '@astrojs/sitemap': 3.1.6 '@pagefind/default-ui': 1.1.0 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - astro: 4.14.2(@types/node@22.3.0)(rollup@4.20.0)(stylus@0.57.0)(typescript@5.5.4) - astro-expressive-code: 0.35.6(astro@4.14.2(@types/node@22.3.0)(rollup@4.20.0)(stylus@0.57.0)(typescript@5.5.4)) + astro: 4.14.2(@types/node@22.4.1)(rollup@4.21.0)(stylus@0.57.0)(typescript@5.5.4) + astro-expressive-code: 0.35.6(astro@4.14.2(@types/node@22.4.1)(rollup@4.21.0)(stylus@0.57.0)(typescript@5.5.4)) bcp-47: 2.1.0 hast-util-from-html: 2.0.1 hast-util-select: 6.0.2 @@ -4365,7 +4356,7 @@ snapshots: '@expressive-code/plugin-shiki@0.35.6': dependencies: '@expressive-code/core': 0.35.6 - shiki: 1.13.0 + shiki: 1.14.1 '@expressive-code/plugin-text-markers@0.35.6': dependencies: @@ -4375,91 +4366,91 @@ snapshots: '@humanwhocodes/retry@0.3.0': {} - '@img/sharp-darwin-arm64@0.33.4': + '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.2 + '@img/sharp-libvips-darwin-arm64': 1.0.4 optional: true - '@img/sharp-darwin-x64@0.33.4': + '@img/sharp-darwin-x64@0.33.5': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.2 + '@img/sharp-libvips-darwin-x64': 1.0.4 optional: true - '@img/sharp-libvips-darwin-arm64@1.0.2': + '@img/sharp-libvips-darwin-arm64@1.0.4': optional: true - '@img/sharp-libvips-darwin-x64@1.0.2': + '@img/sharp-libvips-darwin-x64@1.0.4': optional: true - '@img/sharp-libvips-linux-arm64@1.0.2': + '@img/sharp-libvips-linux-arm64@1.0.4': optional: true - '@img/sharp-libvips-linux-arm@1.0.2': + '@img/sharp-libvips-linux-arm@1.0.5': optional: true - '@img/sharp-libvips-linux-s390x@1.0.2': + '@img/sharp-libvips-linux-s390x@1.0.4': optional: true - '@img/sharp-libvips-linux-x64@1.0.2': + '@img/sharp-libvips-linux-x64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.0.2': + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.0.2': + '@img/sharp-libvips-linuxmusl-x64@1.0.4': optional: true - '@img/sharp-linux-arm64@0.33.4': + '@img/sharp-linux-arm64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.2 + '@img/sharp-libvips-linux-arm64': 1.0.4 optional: true - '@img/sharp-linux-arm@0.33.4': + '@img/sharp-linux-arm@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.2 + '@img/sharp-libvips-linux-arm': 1.0.5 optional: true - '@img/sharp-linux-s390x@0.33.4': + '@img/sharp-linux-s390x@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.2 + '@img/sharp-libvips-linux-s390x': 1.0.4 optional: true - '@img/sharp-linux-x64@0.33.4': + '@img/sharp-linux-x64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.2 + '@img/sharp-libvips-linux-x64': 1.0.4 optional: true - '@img/sharp-linuxmusl-arm64@0.33.4': + '@img/sharp-linuxmusl-arm64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 optional: true - '@img/sharp-linuxmusl-x64@0.33.4': + '@img/sharp-linuxmusl-x64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.2 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 optional: true - '@img/sharp-wasm32@0.33.4': + '@img/sharp-wasm32@0.33.5': dependencies: '@emnapi/runtime': 1.2.0 optional: true - '@img/sharp-win32-ia32@0.33.4': + '@img/sharp-win32-ia32@0.33.5': optional: true - '@img/sharp-win32-x64@0.33.4': + '@img/sharp-win32-x64@0.33.5': optional: true - '@intlify/core-base@9.13.1': + '@intlify/core-base@9.14.0': dependencies: - '@intlify/message-compiler': 9.13.1 - '@intlify/shared': 9.13.1 + '@intlify/message-compiler': 9.14.0 + '@intlify/shared': 9.14.0 '@intlify/eslint-plugin-vue-i18n@3.0.0(eslint@9.9.0(jiti@1.21.6))': dependencies: '@eslint/eslintrc': 3.1.0 - '@intlify/core-base': 9.13.1 - '@intlify/message-compiler': 9.13.1 + '@intlify/core-base': 9.14.0 + '@intlify/message-compiler': 9.14.0 debug: 4.3.6 eslint: 9.9.0(jiti@1.21.6) eslint-compat-utils: 0.5.1(eslint@9.9.0(jiti@1.21.6)) @@ -4480,12 +4471,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@intlify/message-compiler@9.13.1': + '@intlify/message-compiler@9.14.0': dependencies: - '@intlify/shared': 9.13.1 + '@intlify/shared': 9.14.0 source-map-js: 1.2.0 - '@intlify/shared@9.13.1': {} + '@intlify/shared@9.14.0': {} '@isaacs/cliui@8.0.2': dependencies: @@ -4592,67 +4583,67 @@ snapshots: '@pkgr/core@0.1.1': {} - '@playwright/test@1.46.0': + '@playwright/test@1.46.1': dependencies: - playwright: 1.46.0 + playwright: 1.46.1 - '@rollup/pluginutils@5.1.0(rollup@4.20.0)': + '@rollup/pluginutils@5.1.0(rollup@4.21.0)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.20.0 + rollup: 4.21.0 - '@rollup/rollup-android-arm-eabi@4.20.0': + '@rollup/rollup-android-arm-eabi@4.21.0': optional: true - '@rollup/rollup-android-arm64@4.20.0': + '@rollup/rollup-android-arm64@4.21.0': optional: true - '@rollup/rollup-darwin-arm64@4.20.0': + '@rollup/rollup-darwin-arm64@4.21.0': optional: true - '@rollup/rollup-darwin-x64@4.20.0': + '@rollup/rollup-darwin-x64@4.21.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.20.0': + '@rollup/rollup-linux-arm-gnueabihf@4.21.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.20.0': + '@rollup/rollup-linux-arm-musleabihf@4.21.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.20.0': + '@rollup/rollup-linux-arm64-gnu@4.21.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.20.0': + '@rollup/rollup-linux-arm64-musl@4.21.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.20.0': + '@rollup/rollup-linux-riscv64-gnu@4.21.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.20.0': + '@rollup/rollup-linux-s390x-gnu@4.21.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.20.0': + '@rollup/rollup-linux-x64-gnu@4.21.0': optional: true - '@rollup/rollup-linux-x64-musl@4.20.0': + '@rollup/rollup-linux-x64-musl@4.21.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.20.0': + '@rollup/rollup-win32-arm64-msvc@4.21.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.20.0': + '@rollup/rollup-win32-ia32-msvc@4.21.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.20.0': + '@rollup/rollup-win32-x64-msvc@4.21.0': optional: true - '@shikijs/core@1.13.0': + '@shikijs/core@1.14.1': dependencies: '@types/hast': 3.0.4 @@ -4734,15 +4725,17 @@ snapshots: '@types/node@17.0.45': {} - '@types/node@22.3.0': + '@types/node@22.4.1': dependencies: - undici-types: 6.18.2 + undici-types: 6.19.6 '@types/normalize-package-data@2.4.4': {} + '@types/path-browserify@1.0.2': {} + '@types/sax@1.2.7': dependencies: - '@types/node': 22.3.0 + '@types/node': 22.4.1 '@types/unist@2.0.11': {} @@ -5017,12 +5010,12 @@ snapshots: astring@1.8.6: {} - astro-expressive-code@0.35.6(astro@4.14.2(@types/node@22.3.0)(rollup@4.20.0)(stylus@0.57.0)(typescript@5.5.4)): + astro-expressive-code@0.35.6(astro@4.14.2(@types/node@22.4.1)(rollup@4.21.0)(stylus@0.57.0)(typescript@5.5.4)): dependencies: - astro: 4.14.2(@types/node@22.3.0)(rollup@4.20.0)(stylus@0.57.0)(typescript@5.5.4) + astro: 4.14.2(@types/node@22.4.1)(rollup@4.21.0)(stylus@0.57.0)(typescript@5.5.4) rehype-expressive-code: 0.35.6 - astro@4.14.2(@types/node@22.3.0)(rollup@4.20.0)(stylus@0.57.0)(typescript@5.5.4): + astro@4.14.2(@types/node@22.4.1)(rollup@4.21.0)(stylus@0.57.0)(typescript@5.5.4): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 @@ -5035,7 +5028,7 @@ snapshots: '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 '@oslojs/encoding': 0.4.1 - '@rollup/pluginutils': 5.1.0(rollup@4.20.0) + '@rollup/pluginutils': 5.1.0(rollup@4.21.0) '@types/babel__core': 7.20.5 '@types/cookie': 0.6.0 acorn: 8.12.1 @@ -5077,14 +5070,14 @@ snapshots: prompts: 2.4.2 rehype: 13.0.1 semver: 7.6.3 - shiki: 1.13.0 + shiki: 1.14.1 string-width: 7.2.0 strip-ansi: 7.1.0 tsconfck: 3.1.1(typescript@5.5.4) unist-util-visit: 5.0.0 vfile: 6.0.2 - vite: 5.4.1(@types/node@22.3.0)(stylus@0.57.0) - vitefu: 0.2.5(vite@5.4.1(@types/node@22.3.0)(stylus@0.57.0)) + vite: 5.4.1(@types/node@22.4.1)(stylus@0.57.0) + vitefu: 0.2.5(vite@5.4.1(@types/node@22.4.1)(stylus@0.57.0)) which-pm: 3.0.0 xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 @@ -5092,7 +5085,7 @@ snapshots: zod-to-json-schema: 3.23.2(zod@3.23.8) zod-to-ts: 1.2.0(typescript@5.5.4)(zod@3.23.8) optionalDependencies: - sharp: 0.33.4 + sharp: 0.33.5 transitivePeerDependencies: - '@types/node' - less @@ -5106,10 +5099,6 @@ snapshots: - terser - typescript - async@2.6.4: - dependencies: - lodash: 4.17.21 - atob@2.1.2: {} available-typed-arrays@1.0.7: @@ -5177,15 +5166,10 @@ snapshots: dependencies: fill-range: 7.1.1 - browserfs@1.4.3: - dependencies: - async: 2.6.4 - pako: 1.0.11 - browserslist@4.23.3: dependencies: caniuse-lite: 1.0.30001651 - electron-to-chromium: 1.5.8 + electron-to-chromium: 1.5.11 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) @@ -5479,7 +5463,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.8: {} + electron-to-chromium@1.5.11: {} emoji-regex@10.3.0: {} @@ -7550,8 +7534,6 @@ snapshots: '@pagefind/linux-x64': 1.1.0 '@pagefind/windows-x64': 1.1.0 - pako@1.0.11: {} - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -7601,6 +7583,8 @@ snapshots: dependencies: entities: 4.5.0 + path-browserify@1.0.1: {} + path-exists@4.0.0: {} path-is-absolute@1.0.1: {} @@ -7648,11 +7632,11 @@ snapshots: dependencies: find-up: 4.1.0 - playwright-core@1.46.0: {} + playwright-core@1.46.1: {} - playwright@1.46.0: + playwright@1.46.1: dependencies: - playwright-core: 1.46.0 + playwright-core: 1.46.1 optionalDependencies: fsevents: 2.3.2 @@ -7980,26 +7964,26 @@ snapshots: reusify@1.0.4: {} - rollup@4.20.0: + rollup@4.21.0: dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.20.0 - '@rollup/rollup-android-arm64': 4.20.0 - '@rollup/rollup-darwin-arm64': 4.20.0 - '@rollup/rollup-darwin-x64': 4.20.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.20.0 - '@rollup/rollup-linux-arm-musleabihf': 4.20.0 - '@rollup/rollup-linux-arm64-gnu': 4.20.0 - '@rollup/rollup-linux-arm64-musl': 4.20.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0 - '@rollup/rollup-linux-riscv64-gnu': 4.20.0 - '@rollup/rollup-linux-s390x-gnu': 4.20.0 - '@rollup/rollup-linux-x64-gnu': 4.20.0 - '@rollup/rollup-linux-x64-musl': 4.20.0 - '@rollup/rollup-win32-arm64-msvc': 4.20.0 - '@rollup/rollup-win32-ia32-msvc': 4.20.0 - '@rollup/rollup-win32-x64-msvc': 4.20.0 + '@rollup/rollup-android-arm-eabi': 4.21.0 + '@rollup/rollup-android-arm64': 4.21.0 + '@rollup/rollup-darwin-arm64': 4.21.0 + '@rollup/rollup-darwin-x64': 4.21.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.21.0 + '@rollup/rollup-linux-arm-musleabihf': 4.21.0 + '@rollup/rollup-linux-arm64-gnu': 4.21.0 + '@rollup/rollup-linux-arm64-musl': 4.21.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.21.0 + '@rollup/rollup-linux-riscv64-gnu': 4.21.0 + '@rollup/rollup-linux-s390x-gnu': 4.21.0 + '@rollup/rollup-linux-x64-gnu': 4.21.0 + '@rollup/rollup-linux-x64-musl': 4.21.0 + '@rollup/rollup-win32-arm64-msvc': 4.21.0 + '@rollup/rollup-win32-ia32-msvc': 4.21.0 + '@rollup/rollup-win32-x64-msvc': 4.21.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -8093,31 +8077,31 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - sharp@0.33.4: + sharp@0.33.5: dependencies: color: 4.2.3 detect-libc: 2.0.3 semver: 7.6.3 optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.4 - '@img/sharp-darwin-x64': 0.33.4 - '@img/sharp-libvips-darwin-arm64': 1.0.2 - '@img/sharp-libvips-darwin-x64': 1.0.2 - '@img/sharp-libvips-linux-arm': 1.0.2 - '@img/sharp-libvips-linux-arm64': 1.0.2 - '@img/sharp-libvips-linux-s390x': 1.0.2 - '@img/sharp-libvips-linux-x64': 1.0.2 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 - '@img/sharp-libvips-linuxmusl-x64': 1.0.2 - '@img/sharp-linux-arm': 0.33.4 - '@img/sharp-linux-arm64': 0.33.4 - '@img/sharp-linux-s390x': 0.33.4 - '@img/sharp-linux-x64': 0.33.4 - '@img/sharp-linuxmusl-arm64': 0.33.4 - '@img/sharp-linuxmusl-x64': 0.33.4 - '@img/sharp-wasm32': 0.33.4 - '@img/sharp-win32-ia32': 0.33.4 - '@img/sharp-win32-x64': 0.33.4 + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 shebang-command@2.0.0: dependencies: @@ -8125,9 +8109,9 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.13.0: + shiki@1.14.1: dependencies: - '@shikijs/core': 1.13.0 + '@shikijs/core': 1.14.1 '@types/hast': 3.0.4 side-channel@1.0.6: @@ -8382,7 +8366,7 @@ snapshots: tinybench@2.9.0: {} - tinypool@1.0.0: {} + tinypool@1.0.1: {} tinyrainbow@1.2.0: {} @@ -8481,7 +8465,7 @@ snapshots: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - undici-types@6.18.2: {} + undici-types@6.19.6: {} unified@11.0.5: dependencies: @@ -8583,13 +8567,13 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-node@2.0.5(@types/node@22.3.0)(stylus@0.57.0): + vite-node@2.0.5(@types/node@22.4.1)(stylus@0.57.0): dependencies: cac: 6.7.14 debug: 4.3.6 pathe: 1.1.2 tinyrainbow: 1.2.0 - vite: 5.4.1(@types/node@22.3.0)(stylus@0.57.0) + vite: 5.4.1(@types/node@22.4.1)(stylus@0.57.0) transitivePeerDependencies: - '@types/node' - less @@ -8601,21 +8585,21 @@ snapshots: - supports-color - terser - vite@5.4.1(@types/node@22.3.0)(stylus@0.57.0): + vite@5.4.1(@types/node@22.4.1)(stylus@0.57.0): dependencies: esbuild: 0.21.5 postcss: 8.4.41 - rollup: 4.20.0 + rollup: 4.21.0 optionalDependencies: - '@types/node': 22.3.0 + '@types/node': 22.4.1 fsevents: 2.3.3 stylus: 0.57.0 - vitefu@0.2.5(vite@5.4.1(@types/node@22.3.0)(stylus@0.57.0)): + vitefu@0.2.5(vite@5.4.1(@types/node@22.4.1)(stylus@0.57.0)): optionalDependencies: - vite: 5.4.1(@types/node@22.3.0)(stylus@0.57.0) + vite: 5.4.1(@types/node@22.4.1)(stylus@0.57.0) - vitest@2.0.5(@types/node@22.3.0)(happy-dom@14.12.3)(stylus@0.57.0): + vitest@2.0.5(@types/node@22.4.1)(happy-dom@14.12.3)(stylus@0.57.0): dependencies: '@ampproject/remapping': 2.3.0 '@vitest/expect': 2.0.5 @@ -8631,13 +8615,13 @@ snapshots: pathe: 1.1.2 std-env: 3.7.0 tinybench: 2.9.0 - tinypool: 1.0.0 + tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.1(@types/node@22.3.0)(stylus@0.57.0) - vite-node: 2.0.5(@types/node@22.3.0)(stylus@0.57.0) + vite: 5.4.1(@types/node@22.4.1)(stylus@0.57.0) + vite-node: 2.0.5(@types/node@22.4.1)(stylus@0.57.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.3.0 + '@types/node': 22.4.1 happy-dom: 14.12.3 transitivePeerDependencies: - less diff --git a/src/emscripten.ts b/src/emscripten.ts index 8a35d53..d51a8a5 100644 --- a/src/emscripten.ts +++ b/src/emscripten.ts @@ -1,21 +1,5 @@ -import { EmscriptenFS, FileSystem, initialize } from 'browserfs' import type { RetroArchEmscriptenModuleOptions } from './types/retroarch-emscripten' -const raUserdataDir = '/home/web_user/retroarch/userdata' - -export function createEmscriptenFS({ ERRNO_CODES, FS, PATH }: any) { - const inMemoryFS = new FileSystem.InMemory() - const mountableFS = new FileSystem.MountableFileSystem() - try { - mountableFS.umount(raUserdataDir) - } catch {} - mountableFS.mount(raUserdataDir, inMemoryFS) - - initialize(mountableFS) - - return new EmscriptenFS(FS, PATH, ERRNO_CODES) -} - export function getEmscriptenModuleOverrides(overrides: RetroArchEmscriptenModuleOptions) { let resolveRunDependenciesPromise: () => void const runDependenciesPromise = new Promise((resolve) => { diff --git a/src/emulator.ts b/src/emulator.ts index 89205b8..3353a1f 100644 --- a/src/emulator.ts +++ b/src/emulator.ts @@ -1,36 +1,24 @@ -import type { EmscriptenFS } from 'browserfs' -import ini from 'ini' import { coreInfoMap } from './constants/core-info' import { keyboardCodeMap } from './constants/keyboard-code-map' -import { createEmscriptenFS, getEmscriptenModuleOverrides } from './emscripten' +import { getEmscriptenModuleOverrides } from './emscripten' import type { EmulatorOptions } from './types/emulator-options' import type { RetroArchCommand } from './types/retroarch-command' import type { RetroArchEmscriptenModule } from './types/retroarch-emscripten' -import { - basename, - blobToBuffer, - checkIsAborted, - delay, - dirname, - importCoreJsAsESM, - join, - padZero, - stringToBuffer, - updateStyle, -} from './utils' - -const encoder = new TextEncoder() +import { blobToBuffer, checkIsAborted, delay, importCoreJsAsESM, padZero, textEncoder, updateStyle } from './utils' +import { vendors } from './vendors' + +const { ini, path } = vendors const raUserdataDir = '/home/web_user/retroarch/userdata' const raBundleDir = '/home/web_user/retroarch/bundle' -const raContentDir = join(raUserdataDir, 'content') -const raSystemDir = join(raUserdataDir, 'system') -const raConfigDir = join(raUserdataDir, 'config') -const raShaderDir = join(raBundleDir, 'shaders', 'shaders_glsl') +const raContentDir = path.join(raUserdataDir, 'content') +const raSystemDir = path.join(raUserdataDir, 'system') +const raConfigDir = path.join(raUserdataDir, 'config') +const raShaderDir = path.join(raBundleDir, 'shaders', 'shaders_glsl') -const raConfigPath = join(raUserdataDir, 'retroarch.cfg') -const raCoreConfigPath = join(raUserdataDir, 'retroarch-core-options.cfg') +const raConfigPath = path.join(raUserdataDir, 'retroarch.cfg') +const raCoreConfigPath = path.join(raUserdataDir, 'retroarch-core-options.cfg') type GameStatus = 'initial' | 'paused' | 'running' @@ -47,7 +35,6 @@ export class Emulator { private gameStatus: GameStatus = 'initial' private messageQueue: [Uint8Array, number][] = [] private options: EmulatorOptions - browserFS: EmscriptenFS | undefined emscripten: EmulatorEmscripten | undefined constructor(options: EmulatorOptions) { @@ -159,7 +146,7 @@ export class Emulator { const { rom, signal } = this.options if (!Module.arguments && rom.length > 0) { const [{ fileName }] = rom - raArgs.push(join(raContentDir, fileName)) + raArgs.push(path.join(raContentDir, fileName)) } Module.callMain(raArgs) @@ -193,13 +180,9 @@ export class Emulator { private async setupFileSystem() { const { Module } = this.getEmscripten() - const { ERRNO_CODES, FS, PATH } = Module + const { FS } = Module const { bios, rom, signal, state } = this.options - const browserFS = createEmscriptenFS({ ERRNO_CODES, FS, PATH }) - this.browserFS = browserFS - FS.mount(browserFS, { root: '/home' }, '/home') - if (rom.length > 0) { FS.mkdirTree(raContentDir) } @@ -254,13 +237,13 @@ export class Emulator { if (glslFiles.length === 0) { return } - const glslpContent = glslFiles.map((file) => `#reference "${join(raShaderDir, file.fileName)}"`).join('\n') + const glslpContent = glslFiles.map((file) => `#reference "${path.join(raShaderDir, file.fileName)}"`).join('\n') this.writeTextToDirectory({ directory: raConfigDir, fileContent: glslpContent, fileName: 'global.glslp' }) await Promise.all( shader.map(async ({ fileContent, fileName }) => { - const directory = fileName.endsWith('.glslp') ? raShaderDir : join(raShaderDir, 'shaders') + const directory = fileName.endsWith('.glslp') ? raShaderDir : path.join(raShaderDir, 'shaders') await this.writeBlobToDirectory({ directory, fileContent, fileName }) }), ) @@ -362,7 +345,7 @@ export class Emulator { const encoding = 'binary' const data = FS.readFile(fileName, { encoding }) FS.mkdirTree(directory) - FS.writeFile(join(directory, fileName), data, { encoding }) + FS.writeFile(path.join(directory, fileName), data, { encoding }) FS.unlink(fileName) } @@ -376,8 +359,8 @@ export class Emulator { } let fileContent = ini.stringify(config, { platform: 'linux', whitespace: true }) fileContent = fileContent.replaceAll('__', '"') - const fileName = basename(path) - const directory = dirname(path) + const fileName = vendors.path.basename(path) + const directory = vendors.path.dirname(path) this.writeTextToDirectory({ directory, fileContent, fileName }) } @@ -392,12 +375,12 @@ export class Emulator { }) { const { Module } = this.getEmscripten() const { FS } = Module - const buffer = stringToBuffer(fileContent) + const buffer = textEncoder.encode(fileContent) FS.createDataFile('/', fileName, buffer, true, false) const encoding = 'binary' const data = FS.readFile(fileName, { encoding }) FS.mkdirTree(directory) - FS.writeFile(join(directory, fileName), data, { encoding }) + FS.writeFile(path.join(directory, fileName), data, { encoding }) FS.unlink(fileName) } @@ -553,9 +536,9 @@ export class Emulator { async screenshot() { this.sendCommand('SCREENSHOT') - const screenshotDirectory = join(raUserdataDir, 'screenshots') + const screenshotDirectory = path.join(raUserdataDir, 'screenshots') const screenshotFileName = this.guessScreenshotFileName() - const screenshotPath = join(screenshotDirectory, screenshotFileName) + const screenshotPath = path.join(screenshotDirectory, screenshotFileName) const buffer = await this.waitForEmscriptenFile(screenshotPath) const { Module } = this.getEmscripten() const { FS } = Module @@ -565,7 +548,7 @@ export class Emulator { } sendCommand(msg: RetroArchCommand) { - const bytes = encoder.encode(`${msg}\n`) + const bytes = textEncoder.encode(`${msg}\n`) this.messageQueue.push([bytes, 0]) } @@ -582,11 +565,11 @@ export class Emulator { if (!coreFullName) { throw new Error(`invalid core name: ${core.name}`) } - return join(raUserdataDir, 'states', coreFullName) + return path.join(raUserdataDir, 'states', coreFullName) } private get stateFileName() { - return join(this.stateFileDirectory, `${this.romBaseName}.state`) + return path.join(this.stateFileDirectory, `${this.romBaseName}.state`) } private get stateThumbnailFileName() { diff --git a/src/nostalgist.ts b/src/nostalgist.ts index c56e3f3..110f11d 100644 --- a/src/nostalgist.ts +++ b/src/nostalgist.ts @@ -468,16 +468,6 @@ export class Nostalgist { } } - /** - * Get the BFSEmscriptenFS object of the current running emulator. - * - * @see {@link https://nostalgist.js.org/apis/get-browser-fs/} - */ - getBrowserFS() { - const emulator = this.getEmulator() - return emulator.browserFS - } - /** * Get the canvas DOM element that the current emulator is using. * diff --git a/src/options.ts b/src/options.ts index 637cd1c..ecac699 100644 --- a/src/options.ts +++ b/src/options.ts @@ -1,6 +1,7 @@ import type { NostalgistOptions } from './types/nostalgist-options' import type { RetroArchConfig } from './types/retroarch-config' -import { isAbsoluteUrl, path } from './utils' +import { isAbsoluteUrl } from './utils' +import { vendors } from './vendors' const defaultRetroarchConfig: RetroArchConfig = { menu_driver: 'rgui', @@ -111,6 +112,7 @@ export function getDefaultOptions() { return [] } + const { path } = vendors const preset = `${cdnBaseUrl}/${shaderRepo}@${shaderVersion}/${name}.glslp` const segments = name.split(path.sep) segments.splice(-1, 0, 'shaders') diff --git a/src/utils.ts b/src/utils.ts index 3c9c9b5..660f95f 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,15 +1,15 @@ -import { BFSRequire } from 'browserfs' +import { vendors } from './vendors' -const { Buffer } = BFSRequire('buffer') -export const path = BFSRequire('path') -export const { basename, dirname, extname, join, relative } = path +const { path } = vendors + +export const textEncoder = new TextEncoder() export function urlBaseName(url: string) { let pathname = url try { pathname = new URL(url).pathname } catch {} - const name = basename(pathname) + const name = path.basename(pathname) try { return decodeURIComponent(name) } catch { @@ -30,18 +30,7 @@ export function isAbsoluteUrl(string: string) { export async function blobToBuffer(blob: Blob) { const arrayBuffer = await blob.arrayBuffer() - return Buffer.from(arrayBuffer) -} - -export function stringToBuffer(string: string) { - return Buffer.from(string, 'utf8') -} - -export async function toBuffer(file: Blob | string) { - if (typeof file === 'string') { - return stringToBuffer(file) - } - return await blobToBuffer(file) + return new Uint8Array(arrayBuffer) } export function updateStyle(element: HTMLElement, style: Partial) { @@ -117,7 +106,7 @@ export async function importCoreJsAsESM({ js, name }: { js: string; name: string return await import(/* @vite-ignore */ /* webpackIgnore: true */ jsBlobUrl) } catch { // a dirty hack for using with SystemJS, for example, in StackBlitz - return await eval('import(jsBlobUrl)') + return await new Function('return import(jsBlobUrl)')() } finally { URL.revokeObjectURL(jsBlobUrl) } diff --git a/src/vendors.ts b/src/vendors.ts index f7d9b60..79866a9 100644 --- a/src/vendors.ts +++ b/src/vendors.ts @@ -1,7 +1,7 @@ -import * as browserfs from 'browserfs' import ini from 'ini' +import path from 'path-browserify' export const vendors = { - browserfs, ini, + path, }