From 08cd7940e2d3a395cfec054caabc0213cca1b99e Mon Sep 17 00:00:00 2001 From: Alex <8125011+alex-kinokon@users.noreply.github.com> Date: Wed, 5 Feb 2025 21:59:03 -0500 Subject: [PATCH] Optimization --- package.json | 15 +- pnpm-lock.yaml | 838 +++++++++++------- scripts/update-tags.ts | 34 + src/__tests__/__snapshots__/emit.test.ts.snap | 2 +- src/__tests__/emit.test.ts | 2 +- src/__tests__/error.test.ts | 1 + src/__tests__/merge.test.ts | 44 +- src/babel/index.ts | 87 +- src/babel/macro.ts | 34 + src/macro.d.ts | 36 +- 10 files changed, 755 insertions(+), 338 deletions(-) diff --git a/package.json b/package.json index 84042b4..7f7c956 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@aet/tailwind", - "version": "1.0.23", + "version": "1.0.24", "license": "MIT", "type": "module", "scripts": { @@ -33,12 +33,13 @@ } }, "devDependencies": { - "@aet/eslint-rules": "2.0.35", + "@aet/eslint-rules": "2.0.36", "@types/babel__core": "^7.20.5", - "@types/bun": "^1.2.0", + "@types/babel__traverse": "^7.20.6", + "@types/bun": "^1.2.2", "@types/dedent": "^0.7.2", "@types/lodash-es": "^4.17.12", - "@types/node": "^22.13.0", + "@types/node": "^22.13.1", "@types/postcss-safe-parser": "^5.0.4", "@types/react": "^19.0.8", "@types/stylis": "^4.2.7", @@ -56,8 +57,8 @@ "tslib": "^2.8.1", "tsup": "^8.3.6", "typescript": "^5.7.3", - "vite": "^6.0.11", - "vitest": "^3.0.4" + "vite": "^6.1.0", + "vitest": "^3.0.5" }, "peerDependencies": { "tailwindcss": "^3.4.17" @@ -87,4 +88,4 @@ "is-core-module": "npm:@nolyfill/is-core-module@^1" } } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 50a7291..48365dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,14 +43,20 @@ importers: version: 4.33.0 devDependencies: '@aet/eslint-rules': - specifier: 2.0.35 - version: 2.0.35(eslint@9.19.0(jiti@2.4.2))(ts-api-utils@2.0.0(typescript@5.7.3))(typescript@5.7.3) + specifier: 2.0.36 + version: 2.0.36(eslint@9.19.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.7.3))(typescript@5.7.3) + '@babel/traverse': + specifier: ^7.26.7 + version: 7.26.7 '@types/babel__core': specifier: ^7.20.5 version: 7.20.5 + '@types/babel__traverse': + specifier: ^7.20.6 + version: 7.20.6 '@types/bun': - specifier: ^1.2.0 - version: 1.2.0 + specifier: ^1.2.2 + version: 1.2.2 '@types/dedent': specifier: ^0.7.2 version: 0.7.2 @@ -58,8 +64,8 @@ importers: specifier: ^4.17.12 version: 4.17.12 '@types/node': - specifier: ^22.13.0 - version: 22.13.0 + specifier: ^22.13.1 + version: 22.13.1 '@types/postcss-safe-parser': specifier: ^5.0.4 version: 5.0.4 @@ -112,20 +118,20 @@ importers: specifier: ^5.7.3 version: 5.7.3 vite: - specifier: ^6.0.11 - version: 6.0.11(@types/node@22.13.0)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0) + specifier: ^6.1.0 + version: 6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0) vitest: - specifier: ^3.0.4 - version: 3.0.4(@types/node@22.13.0)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0) + specifier: ^3.0.5 + version: 3.0.5(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0) packages: - '@aet/eslint-define-config@0.1.6': - resolution: {integrity: sha512-g02d4ZzTbeKi2Zy4/Z2FnpGHIWyTvwuiYqQ8hCpSNuamGukbzV9f72KhLD/RwdYHk6LOs3s1YcahYYRvOqqJXw==} + '@aet/eslint-define-config@0.1.7': + resolution: {integrity: sha512-i/9iKIAn8NFqFh5RPQ1rPOnm8mwqYchrbAtN9yEuPa7dXCZ9PSyBRsXdsOeaLQaYgPhKLUIVo9RNqDKdIf5UTg==} engines: {node: '>=18.0.0', npm: '>=9.0.0'} - '@aet/eslint-rules@2.0.35': - resolution: {integrity: sha512-IXEdCK7GbBKMb4QknNG2hff9TZ7CxXNDQYnFX6N/lmD/R2gizxEd+JKzEKL3BJndMXiJeaCHiR3btPq3O97riw==} + '@aet/eslint-rules@2.0.36': + resolution: {integrity: sha512-CBEOsrQhy2iD1ZW7pW8C2oJhyRF0kR01SnaPj71R5Unev+hu6ZareQkTLXnpKMPQpAljPXjaoEd+jII5p1YTqQ==} hasBin: true peerDependencies: eslint: ^9.15.0 @@ -385,20 +391,20 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-react/ast@1.25.0': - resolution: {integrity: sha512-oAJXlso0ktvD1mGZOyIgd07xlj6BEooHmHukuvojEGCrThasHyHkpL0VoGpnwuVEdMXy4mdEYaBQtQY0NCdmNg==} + '@eslint-react/ast@1.26.1': + resolution: {integrity: sha512-h9Z7gO0y382vs+pCsfAYuMSHHCbYywS1t8JHdsbO0GH2C5JQJAUM0n3zjcBckgTk+X4OlJSXD9v0QVlpFDvUlw==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} - '@eslint-react/core@1.25.0': - resolution: {integrity: sha512-LuyMMZT6hjbyk3G3GKsVq8KkacvOTKHipAHEaCujTfOWaQlifCxRmdyE6WetTR1nipPMFY8z46NEuNSSpxaRyg==} + '@eslint-react/core@1.26.1': + resolution: {integrity: sha512-HRfuZPaB0MVwoHFAN9mdppxdtieSxW2vEG1T+zCz1rXO8sUnrQv9OC5ij3AVhF0AXEL6vqScKGjVOMyLlUE3zA==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} - '@eslint-react/eff@1.25.0': - resolution: {integrity: sha512-Unaj5Fn8xkIbMKEPn3O/rWmTNIAzG8m8semLUys/ia0k5PdqnGI1/7ujZBFnJEIZDpfItG3h0kchPLmITIDH2w==} + '@eslint-react/eff@1.26.1': + resolution: {integrity: sha512-21Mh/qqA6kCKLPpFae9rucDkXRBWH0X1dCz7FYmCxA00UOO4EI9aXPjwj5az1bXvAqAQM9pI/kZ8RrR4TyIUDQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} - '@eslint-react/eslint-plugin@1.25.0': - resolution: {integrity: sha512-fTyhXzm18U9QrByk7p2Qs9TVzDPns6ahIcVXYZ0V+lETfTFifKVbFqfaQQ1c0c1EviPXCu+ZttGejJLSypJ2ew==} + '@eslint-react/eslint-plugin@1.26.1': + resolution: {integrity: sha512-4WPJdbUY6ZjJyrgfka2SfMhySs1J7i+GbbLVUBgK+zMwAzwgBvdAQtzYzFZDeNwjVGnAgpLtzEHkGc6nccR6ZQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -407,16 +413,16 @@ packages: typescript: optional: true - '@eslint-react/jsx@1.25.0': - resolution: {integrity: sha512-A8aFM2+zv/GOc6TgSCSXqx/9ChklZ+hkYMFCpThnGj/wyQYe1VTI7VQ/A8r4D6m2EOBtcyaKdrOO6lPu/sNEag==} + '@eslint-react/jsx@1.26.1': + resolution: {integrity: sha512-C0QHFJBK6jZ7KlpxicYGgUIk5oVSFO1j/qU3OGwM0iEDe+JudMJeNYffbsEMrWkHtWVsWoVsgECdCiiLkC8F/w==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} - '@eslint-react/shared@1.25.0': - resolution: {integrity: sha512-XFP07anK8LdsATmvpM/vC5fqyuPQsDE8OzLCkGoBYJRMt1M6MK2mTFXPVRfztwuiLSLlg6rr6XXFJEiGMrtuzQ==} + '@eslint-react/shared@1.26.1': + resolution: {integrity: sha512-vPXVU5yxiysMmmMplk2nK9TO5VqyKfS2MW1SG6d3ydGlcw6qO9MRRwMVVf5UpyFUo4B9varqFsOO2dGui6F4fg==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} - '@eslint-react/var@1.25.0': - resolution: {integrity: sha512-br7JklOre9rgb52offLct1yEoBZ3ulrZXIg36RdP1PWs4Se02Wc7DQvXICEuxb4+tNSo9U+KQFvVIdoeThVzPQ==} + '@eslint-react/var@1.26.1': + resolution: {integrity: sha512-A+2GD1AvL8SI42ZnZGmLnIG6Lfd9hgUq+LYeL8aiB+2ZnA70asePdjV/MVXZHQ6xzUmXw/Ko/UMaA42Eb+PhoA==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} '@eslint/config-array@0.19.0': @@ -510,91 +516,186 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.34.4': + resolution: {integrity: sha512-gGi5adZWvjtJU7Axs//CWaQbQd/vGy8KGcnEaCWiyCqxWYDxwIlAHFuSe6Guoxtd0SRvSfVTDMPd5H+4KE2kKA==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.27.4': resolution: {integrity: sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.34.4': + resolution: {integrity: sha512-1aRlh1gqtF7vNPMnlf1vJKk72Yshw5zknR/ZAVh7zycRAGF2XBMVDAHmFQz/Zws5k++nux3LOq/Ejj1WrDR6xg==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.27.4': resolution: {integrity: sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.34.4': + resolution: {integrity: sha512-drHl+4qhFj+PV/jrQ78p9ch6A0MfNVZScl/nBps5a7u01aGf/GuBRrHnRegA9bP222CBDfjYbFdjkIJ/FurvSQ==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.27.4': resolution: {integrity: sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.34.4': + resolution: {integrity: sha512-hQqq/8QALU6t1+fbNmm6dwYsa0PDD4L5r3TpHx9dNl+aSEMnIksHZkSO3AVH+hBMvZhpumIGrTFj8XCOGuIXjw==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.27.4': resolution: {integrity: sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.34.4': + resolution: {integrity: sha512-/L0LixBmbefkec1JTeAQJP0ETzGjFtNml2gpQXA8rpLo7Md+iXQzo9kwEgzyat5Q+OG/C//2B9Fx52UxsOXbzw==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.27.4': resolution: {integrity: sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.34.4': + resolution: {integrity: sha512-6Rk3PLRK+b8L/M6m/x6Mfj60LhAUcLJ34oPaxufA+CfqkUrDoUPQYFdRrhqyOvtOKXLJZJwxlOLbQjNYQcRQfw==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.27.4': resolution: {integrity: sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.34.4': + resolution: {integrity: sha512-kmT3x0IPRuXY/tNoABp2nDvI9EvdiS2JZsd4I9yOcLCCViKsP0gB38mVHOhluzx+SSVnM1KNn9k6osyXZhLoCA==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.27.4': resolution: {integrity: sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.34.4': + resolution: {integrity: sha512-3iSA9tx+4PZcJH/Wnwsvx/BY4qHpit/u2YoZoXugWVfc36/4mRkgGEoRbRV7nzNBSCOgbWMeuQ27IQWgJ7tRzw==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.27.4': resolution: {integrity: sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.34.4': + resolution: {integrity: sha512-7CwSJW+sEhM9sESEk+pEREF2JL0BmyCro8UyTq0Kyh0nu1v0QPNY3yfLPFKChzVoUmaKj8zbdgBxUhBRR+xGxg==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.27.4': resolution: {integrity: sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.34.4': + resolution: {integrity: sha512-GZdafB41/4s12j8Ss2izofjeFXRAAM7sHCb+S4JsI9vaONX/zQ8cXd87B9MRU/igGAJkKvmFmJJBeeT9jJ5Cbw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.34.4': + resolution: {integrity: sha512-uuphLuw1X6ur11675c2twC6YxbzyLSpWggvdawTUamlsoUv81aAXRMPBC1uvQllnBGls0Qt5Siw8reSIBnbdqQ==} + cpu: [loong64] + os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.27.4': resolution: {integrity: sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.34.4': + resolution: {integrity: sha512-KvLEw1os2gSmD6k6QPCQMm2T9P2GYvsMZMRpMz78QpSoEevHbV/KOUbI/46/JRalhtSAYZBYLAnT9YE4i/l4vg==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.27.4': resolution: {integrity: sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.34.4': + resolution: {integrity: sha512-wcpCLHGM9yv+3Dql/CI4zrY2mpQ4WFergD3c9cpRowltEh5I84pRT/EuHZsG0In4eBPPYthXnuR++HrFkeqwkA==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.27.4': resolution: {integrity: sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.34.4': + resolution: {integrity: sha512-nLbfQp2lbJYU8obhRQusXKbuiqm4jSJteLwfjnunDT5ugBKdxqw1X9KWwk8xp1OMC6P5d0WbzxzhWoznuVK6XA==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.27.4': resolution: {integrity: sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.34.4': + resolution: {integrity: sha512-JGejzEfVzqc/XNiCKZj14eb6s5w8DdWlnQ5tWUbs99kkdvfq9btxxVX97AaxiUX7xJTKFA0LwoS0KU8C2faZRg==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.27.4': resolution: {integrity: sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.34.4': + resolution: {integrity: sha512-/iFIbhzeyZZy49ozAWJ1ZR2KW6ZdYUbQXLT4O5n1cRZRoTpwExnHLjlurDXXPKEGxiAg0ujaR9JDYKljpr2fDg==} + cpu: [x64] + os: [linux] + '@rollup/rollup-win32-arm64-msvc@4.27.4': resolution: {integrity: sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.34.4': + resolution: {integrity: sha512-qORc3UzoD5UUTneiP2Afg5n5Ti1GAW9Gp5vHPxzvAFFA3FBaum9WqGvYXGf+c7beFdOKNos31/41PRMUwh1tpA==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.27.4': resolution: {integrity: sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.34.4': + resolution: {integrity: sha512-5g7E2PHNK2uvoD5bASBD9aelm44nf1w4I5FEI7MPHLWcCSrR8JragXZWgKPXk5i2FU3JFfa6CGZLw2RrGBHs2Q==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.27.4': resolution: {integrity: sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.34.4': + resolution: {integrity: sha512-p0scwGkR4kZ242xLPBuhSckrJ734frz6v9xZzD+kHVYRAkSUmdSLCIJRfql6H5//aF8Q10K+i7q8DiPfZp0b7A==} + cpu: [x64] + os: [win32] + '@stylistic/eslint-plugin@3.0.1': resolution: {integrity: sha512-rQ3tcT5N2cynofJfbjUsnL4seoewTaOVBLyUEwtNldo7iNMPo3h/GUQk+Cl3iHEWwRxjq2wuH6q0FufQrbVL1A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -618,8 +719,8 @@ packages: '@types/babel__traverse@7.20.6': resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - '@types/bun@1.2.0': - resolution: {integrity: sha512-5N1JqdahfpBlAv4wy6svEYcd/YfO2GNrbL95JOmFx8nkE6dbK4R0oSE5SpBA4vBRqgrOUAXF8Dpiz+gi7r80SA==} + '@types/bun@1.2.2': + resolution: {integrity: sha512-tr74gdku+AEDN5ergNiBnplr7hpDp3V1h7fqI2GcR/rsUaM39jpSeKH0TFibRvU0KwniRx5POgaYnaXbk0hU+w==} '@types/dedent@0.7.2': resolution: {integrity: sha512-kRiitIeUg1mPV9yH4VUJ/1uk2XjyANfeL8/7rH1tsjvHeO9PJLBHJIYsFWmAvmGj5u8rj+1TZx7PZzW2qLw3Lw==} @@ -642,8 +743,8 @@ packages: '@types/lodash@4.17.10': resolution: {integrity: sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==} - '@types/node@22.13.0': - resolution: {integrity: sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==} + '@types/node@22.13.1': + resolution: {integrity: sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -660,49 +761,43 @@ packages: '@types/ws@8.5.12': resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - '@typescript-eslint/eslint-plugin@8.22.0': - resolution: {integrity: sha512-4Uta6REnz/xEJMvwf72wdUnC3rr4jAQf5jnTkeRQ9b6soxLxhDEbS/pfMPoJLDfFPNVRdryqWUIV/2GZzDJFZw==} + '@typescript-eslint/eslint-plugin@8.23.0': + resolution: {integrity: sha512-vBz65tJgRrA1Q5gWlRfvoH+w943dq9K1p1yDBY2pc+a1nbBLZp7fB9+Hk8DaALUbzjqlMfgaqlVPT1REJdkt/w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.22.0': - resolution: {integrity: sha512-MqtmbdNEdoNxTPzpWiWnqNac54h8JDAmkWtJExBVVnSrSmi9z+sZUt0LfKqk9rjqmKOIeRhO4fHHJ1nQIjduIQ==} + '@typescript-eslint/parser@8.23.0': + resolution: {integrity: sha512-h2lUByouOXFAlMec2mILeELUbME5SZRN/7R9Cw2RD2lRQQY08MWMM+PmVVKKJNK1aIwqTo9t/0CvOxwPbRIE2Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.21.0': - resolution: {integrity: sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.22.0': resolution: {integrity: sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.22.0': - resolution: {integrity: sha512-NzE3aB62fDEaGjaAYZE4LH7I1MUwHooQ98Byq0G0y3kkibPJQIXVUspzlFOmOfHhiDLwKzMlWxaNv+/qcZurJA==} + '@typescript-eslint/scope-manager@8.23.0': + resolution: {integrity: sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.23.0': + resolution: {integrity: sha512-iIuLdYpQWZKbiH+RkCGc6iu+VwscP5rCtQ1lyQ7TYuKLrcZoeJVpcLiG8DliXVkUxirW/PWlmS+d6yD51L9jvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.21.0': - resolution: {integrity: sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.22.0': resolution: {integrity: sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.21.0': - resolution: {integrity: sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==} + '@typescript-eslint/types@8.23.0': + resolution: {integrity: sha512-1sK4ILJbCmZOTt9k4vkoulT6/y5CHJ1qUYxqpF1K/DBAd8+ZUL4LlSCxOssuH5m4rUaaN0uS0HlVPvd45zjduQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.8.0' '@typescript-eslint/typescript-estree@8.22.0': resolution: {integrity: sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w==} @@ -710,26 +805,32 @@ packages: peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.22.0': - resolution: {integrity: sha512-T8oc1MbF8L+Bk2msAvCUzjxVB2Z2f+vXYfcucE2wOmYs7ZUwco5Ep0fYZw8quNwOiw9K8GYVL+Kgc2pETNTLOg==} + '@typescript-eslint/typescript-estree@8.23.0': + resolution: {integrity: sha512-LcqzfipsB8RTvH8FX24W4UUFk1bl+0yTOf9ZA08XngFwMg4Kj8A+9hwz8Cr/ZS4KwHrmo9PJiLZkOt49vPnuvQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/utils@8.23.0': + resolution: {integrity: sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.21.0': - resolution: {integrity: sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.22.0': resolution: {integrity: sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vitest/expect@3.0.4': - resolution: {integrity: sha512-Nm5kJmYw6P2BxhJPkO3eKKhGYKRsnqJqf+r0yOGRKpEP+bSCBDsjXgiu1/5QFrnPMEgzfC38ZEjvCFgaNBC0Eg==} + '@typescript-eslint/visitor-keys@8.23.0': + resolution: {integrity: sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vitest/mocker@3.0.4': - resolution: {integrity: sha512-gEef35vKafJlfQbnyOXZ0Gcr9IBUsMTyTLXsEQwuyYAerpHqvXhzdBnDFuHLpFqth3F7b6BaFr4qV/Cs1ULx5A==} + '@vitest/expect@3.0.5': + resolution: {integrity: sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==} + + '@vitest/mocker@3.0.5': + resolution: {integrity: sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 || ^6.0.0 @@ -739,20 +840,20 @@ packages: vite: optional: true - '@vitest/pretty-format@3.0.4': - resolution: {integrity: sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g==} + '@vitest/pretty-format@3.0.5': + resolution: {integrity: sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==} - '@vitest/runner@3.0.4': - resolution: {integrity: sha512-dKHzTQ7n9sExAcWH/0sh1elVgwc7OJ2lMOBrAm73J7AH6Pf9T12Zh3lNE1TETZaqrWFXtLlx3NVrLRb5hCK+iw==} + '@vitest/runner@3.0.5': + resolution: {integrity: sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==} - '@vitest/snapshot@3.0.4': - resolution: {integrity: sha512-+p5knMLwIk7lTQkM3NonZ9zBewzVp9EVkVpvNta0/PlFWpiqLaRcF4+33L1it3uRUCh0BGLOaXPPGEjNKfWb4w==} + '@vitest/snapshot@3.0.5': + resolution: {integrity: sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==} - '@vitest/spy@3.0.4': - resolution: {integrity: sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q==} + '@vitest/spy@3.0.5': + resolution: {integrity: sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==} - '@vitest/utils@3.0.4': - resolution: {integrity: sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ==} + '@vitest/utils@3.0.5': + resolution: {integrity: sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -841,8 +942,8 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - bun-types@1.2.0: - resolution: {integrity: sha512-KEaJxyZfbV/c4eyG0vyehDpYmBGreNiQbZIqvVHJwZ4BmeuWlNZ7EAzMN2Zcd7ailmS/tGVW0BgYbGf+lGEpWw==} + bun-types@1.2.2: + resolution: {integrity: sha512-RCbMH5elr9gjgDGDhkTTugA21XtJAy/9jkKe/G3WR2q17VPGhcquf9Sir6uay9iW+7P/BV0CAHA1XlHXMAVKHg==} bundle-require@5.0.0: resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} @@ -1029,8 +1130,8 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - enhanced-resolve@5.18.0: - resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} error-ex@1.3.2: @@ -1114,8 +1215,8 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 - eslint-plugin-react-debug@1.25.0: - resolution: {integrity: sha512-vP439y9jBQcsoIN/E9GY/iX30RQf6Y9cqqVn3OCZJIsNiy5DhBZy2PlZpB/PcBHtxQwT+6ZKqW17sVOY+53wjw==} + eslint-plugin-react-debug@1.26.1: + resolution: {integrity: sha512-DHwCl4wX6B33WVav8qKLCnRo98bjSkz+9FK1VIBLAngqNLX5xTQNz4mrPp3Yxtdv1z0q528EB/7e62DAX4nJYw==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1124,8 +1225,8 @@ packages: typescript: optional: true - eslint-plugin-react-dom@1.25.0: - resolution: {integrity: sha512-Nn+7G52adN7eb1ugFyR4cZzobqAfGy2s/uKCLZExqZWQEm/r8DYn5HmxodVToc4Npc7z2S6xHZWHc3yq+BZhXw==} + eslint-plugin-react-dom@1.26.1: + resolution: {integrity: sha512-fiHTZ8SGDr0LCayg5h/rHP1+TW53g87jXFTyly7i9YZP7nHLyr0CZJ7D888XCWK2JY5hszbKn6tKOU0DdS7Xiw==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1134,8 +1235,8 @@ packages: typescript: optional: true - eslint-plugin-react-hooks-extra@1.25.0: - resolution: {integrity: sha512-aUTBNSE4asgoMPyAXKHsHXsq6g5g9OkHegzvFawsL7ttGI788qbD/epxpa3LqxdF9yJZNiS31l17BW/F3dKUlg==} + eslint-plugin-react-hooks-extra@1.26.1: + resolution: {integrity: sha512-WgGaEUI7W84JvyCLAVI4yAm1iNDMjedOxj7x7V1XXdiPIao6w/9CJQQi87G8O0Uu8LSrU5OooPICB7vOVXwKpQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1144,8 +1245,8 @@ packages: typescript: optional: true - eslint-plugin-react-naming-convention@1.25.0: - resolution: {integrity: sha512-NenZDL2TLsK5n244xsHDOLV7cD6nhzn9nuf6aZmc2v3mAcQ2CVGhOK3fPnrgP+0qbfcycFyzcZRNSUcRvWquCA==} + eslint-plugin-react-naming-convention@1.26.1: + resolution: {integrity: sha512-EwpsGuX8pUe7IjwC/+hzTAcaUAb/hEW+InRIon6rPdKlI02R25bOpTPcylD37ut164Z5Aw0g/4X0Q3M7S3Xdgw==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1154,8 +1255,8 @@ packages: typescript: optional: true - eslint-plugin-react-web-api@1.25.0: - resolution: {integrity: sha512-1Tw1E9MhZMBN9isEtMkw9JhY7oDqyQNo0zQXMt3pddvICVXu2K5saGsEZiPWQwPjrYbIBZKdKlSzb0jw668mBA==} + eslint-plugin-react-web-api@1.26.1: + resolution: {integrity: sha512-09k3gcy1BWn39hzNehgRtvC5fdMtdEGOXMTDS9OZEjrFMeWB9NcuzHv49p9iEbN2Cf/UjOEbdqDwf1vWtP4iGQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1164,8 +1265,8 @@ packages: typescript: optional: true - eslint-plugin-react-x@1.25.0: - resolution: {integrity: sha512-Ur0h86SjKJDtc49prwah3Byz0SfVvVVOnuPoGK1CrW3QH5+XqSV21RlZWMyQuvqA4hptc0+AxlpXP38C6ejKJw==} + eslint-plugin-react-x@1.26.1: + resolution: {integrity: sha512-m8W8vLS0l2xTD8d+QFPebHXblyZEJ4Wyg4REKNdLfbHHgdtaVKvOtFKMnVGwnL4gRHG1DyFlZzQJIgHy53hpfw==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1868,6 +1969,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.34.4: + resolution: {integrity: sha512-spF66xoyD7rz3o08sHP7wogp1gZ6itSq22SGa/IZTcUDXDlOyrShwMwkVSB+BUxFRZZCUYqdb3KWDEOMVQZxuw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -1879,8 +1985,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.0: - resolution: {integrity: sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==} + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} engines: {node: '>=10'} hasBin: true @@ -2033,6 +2139,12 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-api-utils@2.0.1: + resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-declaration-location@1.0.4: resolution: {integrity: sha512-r4JoxYhKULbZuH81Pjrp9OEG5St7XWk7zXwGkLKhmVcjiBVHTJXV5wK6dEa9JKW5QGSTW6b1lOjxAKp8R1SQhg==} peerDependencies: @@ -2082,8 +2194,8 @@ packages: resolution: {integrity: sha512-s6zVrxuyKbbAsSAD5ZPTB77q4YIdRctkTbJ2/Dqlinwz+8ooH2gd+YA7VA6Pa93KML9GockVvoxjZ2vHP+mu8g==} engines: {node: '>=16'} - typescript-eslint@8.22.0: - resolution: {integrity: sha512-Y2rj210FW1Wb6TWXzQc5+P+EWI9/zdS57hLEc0gnyuvdzWo8+Y8brKlbj0muejonhMI/xAZCnZZwjbIfv1CkOw==} + typescript-eslint@8.23.0: + resolution: {integrity: sha512-/LBRo3HrXr5LxmrdYSOCvoAMm7p2jNizNfbIpCgvG4HMsnoprRUOce/+8VJ9BDYWW68rqIENE/haVLWPeFZBVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2112,13 +2224,13 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - vite-node@3.0.4: - resolution: {integrity: sha512-7JZKEzcYV2Nx3u6rlvN8qdo3QV7Fxyt6hx+CCKz9fbWxdX5IvUOmTWEAxMrWxaiSf7CKGLJQ5rFu8prb/jBjOA==} + vite-node@3.0.5: + resolution: {integrity: sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@6.0.11: - resolution: {integrity: sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==} + vite@6.1.0: + resolution: {integrity: sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -2157,16 +2269,16 @@ packages: yaml: optional: true - vitest@3.0.4: - resolution: {integrity: sha512-6XG8oTKy2gnJIFTHP6LD7ExFeNLxiTkK3CfMvT7IfR8IN+BYICCf0lXUQmX7i7JoxUP8QmeP4mTnWXgflu4yjw==} + vitest@3.0.5: + resolution: {integrity: sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.4 - '@vitest/ui': 3.0.4 + '@vitest/browser': 3.0.5 + '@vitest/ui': 3.0.5 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -2239,22 +2351,22 @@ packages: snapshots: - '@aet/eslint-define-config@0.1.6': {} + '@aet/eslint-define-config@0.1.7': {} - '@aet/eslint-rules@2.0.35(eslint@9.19.0(jiti@2.4.2))(ts-api-utils@2.0.0(typescript@5.7.3))(typescript@5.7.3)': + '@aet/eslint-rules@2.0.36(eslint@9.19.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.7.3))(typescript@5.7.3)': dependencies: - '@aet/eslint-define-config': 0.1.6 + '@aet/eslint-define-config': 0.1.7 '@antfu/install-pkg': 1.0.0 '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@2.4.2)) - '@eslint-react/eslint-plugin': 1.25.0(eslint@9.19.0(jiti@2.4.2))(ts-api-utils@2.0.0(typescript@5.7.3))(typescript@5.7.3) + '@eslint-react/eslint-plugin': 1.26.1(eslint@9.19.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.7.3))(typescript@5.7.3) '@eslint/js': 9.19.0 '@nolyfill/is-core-module': 1.0.39 '@stylistic/eslint-plugin': 3.0.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) '@types/eslint': 9.6.1 - '@typescript-eslint/eslint-plugin': 8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/parser': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/type-utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/eslint-plugin': 8.23.0(@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/type-utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) aria-query: 5.3.2 axe-core: 4.10.2 axobject-query: 4.1.0 @@ -2262,12 +2374,12 @@ snapshots: debug: 4.4.0 doctrine: 3.0.0 emoji-regex: 10.4.0 - enhanced-resolve: 5.18.0 + enhanced-resolve: 5.18.1 eslint: 9.19.0(jiti@2.4.2) eslint-config-prettier: 10.0.1(eslint@9.19.0(jiti@2.4.2)) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import-x@4.6.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2)) - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import-x@4.6.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2)))(eslint@9.19.0(jiti@2.4.2)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import-x@4.6.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2)))(eslint@9.19.0(jiti@2.4.2)) eslint-plugin-import-x: 4.6.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) eslint-plugin-unicorn: 56.0.1(eslint@9.19.0(jiti@2.4.2)) esprima: 4.0.1 @@ -2282,9 +2394,9 @@ snapshots: language-tags: 2.0.1 lodash-es: 4.17.21 minimatch: 10.0.1 - semver: 7.7.0 + semver: 7.7.1 typescript: 5.7.3 - typescript-eslint: 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + typescript-eslint: 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) optionalDependencies: '@tanstack/eslint-plugin-query': 5.64.2(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) transitivePeerDependencies: @@ -2501,12 +2613,12 @@ snapshots: '@eslint-community/regexpp@4.12.1': {} - '@eslint-react/ast@1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + '@eslint-react/ast@1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-react/eff': 1.25.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.1 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) string-ts: 2.2.0 ts-pattern: 5.6.2 transitivePeerDependencies: @@ -2514,17 +2626,17 @@ snapshots: - supports-color - typescript - '@eslint-react/core@1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + '@eslint-react/core@1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-react/ast': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.25.0 - '@eslint-react/jsx': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/shared': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/var': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/ast': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.1 + '@eslint-react/jsx': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/shared': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/var': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/type-utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) birecord: 0.1.1 ts-pattern: 5.6.2 transitivePeerDependencies: @@ -2532,47 +2644,47 @@ snapshots: - supports-color - typescript - '@eslint-react/eff@1.25.0': {} + '@eslint-react/eff@1.26.1': {} - '@eslint-react/eslint-plugin@1.25.0(eslint@9.19.0(jiti@2.4.2))(ts-api-utils@2.0.0(typescript@5.7.3))(typescript@5.7.3)': + '@eslint-react/eslint-plugin@1.26.1(eslint@9.19.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.7.3))(typescript@5.7.3)': dependencies: - '@eslint-react/eff': 1.25.0 - '@eslint-react/shared': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.1 + '@eslint-react/shared': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/type-utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.19.0(jiti@2.4.2) - eslint-plugin-react-debug: 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - eslint-plugin-react-dom: 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - eslint-plugin-react-hooks-extra: 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - eslint-plugin-react-naming-convention: 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - eslint-plugin-react-web-api: 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - eslint-plugin-react-x: 1.25.0(eslint@9.19.0(jiti@2.4.2))(ts-api-utils@2.0.0(typescript@5.7.3))(typescript@5.7.3) + eslint-plugin-react-debug: 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + eslint-plugin-react-dom: 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + eslint-plugin-react-hooks-extra: 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + eslint-plugin-react-naming-convention: 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + eslint-plugin-react-web-api: 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + eslint-plugin-react-x: 1.26.1(eslint@9.19.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.7.3))(typescript@5.7.3) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: - supports-color - ts-api-utils - '@eslint-react/jsx@1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + '@eslint-react/jsx@1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-react/ast': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.25.0 - '@eslint-react/var': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/ast': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.1 + '@eslint-react/var': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) ts-pattern: 5.6.2 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/shared@1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + '@eslint-react/shared@1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-react/eff': 1.25.0 - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.1 + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) picomatch: 4.0.2 ts-pattern: 5.6.2 transitivePeerDependencies: @@ -2580,13 +2692,13 @@ snapshots: - supports-color - typescript - '@eslint-react/var@1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + '@eslint-react/var@1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-react/ast': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.25.0 - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/ast': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.1 + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) string-ts: 2.2.0 ts-pattern: 5.6.2 transitivePeerDependencies: @@ -2688,60 +2800,117 @@ snapshots: '@rollup/rollup-android-arm-eabi@4.27.4': optional: true + '@rollup/rollup-android-arm-eabi@4.34.4': + optional: true + '@rollup/rollup-android-arm64@4.27.4': optional: true + '@rollup/rollup-android-arm64@4.34.4': + optional: true + '@rollup/rollup-darwin-arm64@4.27.4': optional: true + '@rollup/rollup-darwin-arm64@4.34.4': + optional: true + '@rollup/rollup-darwin-x64@4.27.4': optional: true + '@rollup/rollup-darwin-x64@4.34.4': + optional: true + '@rollup/rollup-freebsd-arm64@4.27.4': optional: true + '@rollup/rollup-freebsd-arm64@4.34.4': + optional: true + '@rollup/rollup-freebsd-x64@4.27.4': optional: true + '@rollup/rollup-freebsd-x64@4.34.4': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.27.4': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.34.4': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.27.4': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.34.4': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.27.4': optional: true + '@rollup/rollup-linux-arm64-gnu@4.34.4': + optional: true + '@rollup/rollup-linux-arm64-musl@4.27.4': optional: true + '@rollup/rollup-linux-arm64-musl@4.34.4': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.34.4': + optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.27.4': optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.34.4': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.27.4': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.34.4': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.27.4': optional: true + '@rollup/rollup-linux-s390x-gnu@4.34.4': + optional: true + '@rollup/rollup-linux-x64-gnu@4.27.4': optional: true + '@rollup/rollup-linux-x64-gnu@4.34.4': + optional: true + '@rollup/rollup-linux-x64-musl@4.27.4': optional: true + '@rollup/rollup-linux-x64-musl@4.34.4': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.27.4': optional: true + '@rollup/rollup-win32-arm64-msvc@4.34.4': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.27.4': optional: true + '@rollup/rollup-win32-ia32-msvc@4.34.4': + optional: true + '@rollup/rollup-win32-x64-msvc@4.27.4': optional: true + '@rollup/rollup-win32-x64-msvc@4.34.4': + optional: true + '@stylistic/eslint-plugin@3.0.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.19.0(jiti@2.4.2) eslint-visitor-keys: 4.2.0 espree: 10.3.0 @@ -2753,7 +2922,7 @@ snapshots: '@tanstack/eslint-plugin-query@5.64.2(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.19.0(jiti@2.4.2) transitivePeerDependencies: - supports-color @@ -2779,11 +2948,11 @@ snapshots: '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.26.7 - '@types/bun@1.2.0': + '@types/bun@1.2.2': dependencies: - bun-types: 1.2.0 + bun-types: 1.2.2 '@types/dedent@0.7.2': {} @@ -2804,7 +2973,7 @@ snapshots: '@types/lodash@4.17.10': {} - '@types/node@22.13.0': + '@types/node@22.13.1': dependencies: undici-types: 6.20.0 @@ -2822,75 +2991,61 @@ snapshots: '@types/ws@8.5.12': dependencies: - '@types/node': 22.13.0 + '@types/node': 22.13.1 - '@typescript-eslint/eslint-plugin@8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.23.0(@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.22.0 - '@typescript-eslint/type-utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.22.0 + '@typescript-eslint/parser': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.23.0 + '@typescript-eslint/type-utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.23.0 eslint: 9.19.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 2.0.0(typescript@5.7.3) + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.22.0 - '@typescript-eslint/types': 8.22.0 - '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.22.0 + '@typescript-eslint/scope-manager': 8.23.0 + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.23.0 debug: 4.4.0 eslint: 9.19.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.21.0': - dependencies: - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/visitor-keys': 8.21.0 - '@typescript-eslint/scope-manager@8.22.0': dependencies: '@typescript-eslint/types': 8.22.0 '@typescript-eslint/visitor-keys': 8.22.0 - '@typescript-eslint/type-utils@8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/scope-manager@8.23.0': dependencies: - '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/visitor-keys': 8.23.0 + + '@typescript-eslint/type-utils@8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) debug: 4.4.0 eslint: 9.19.0(jiti@2.4.2) - ts-api-utils: 2.0.0(typescript@5.7.3) + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.21.0': {} - '@typescript-eslint/types@8.22.0': {} - '@typescript-eslint/typescript-estree@8.21.0(typescript@5.7.3)': - dependencies: - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/visitor-keys': 8.21.0 - debug: 4.4.0 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.0 - ts-api-utils: 2.0.0(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types@8.23.0': {} '@typescript-eslint/typescript-estree@8.22.0(typescript@5.7.3)': dependencies: @@ -2900,70 +3055,84 @@ snapshots: fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.0 + semver: 7.7.1 ts-api-utils: 2.0.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.23.0(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.22.0 - '@typescript-eslint/types': 8.22.0 - '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) - eslint: 9.19.0(jiti@2.4.2) + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/visitor-keys': 8.23.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.21.0': + '@typescript-eslint/utils@8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.21.0 - eslint-visitor-keys: 4.2.0 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.23.0 + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) + eslint: 9.19.0(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color '@typescript-eslint/visitor-keys@8.22.0': dependencies: '@typescript-eslint/types': 8.22.0 eslint-visitor-keys: 4.2.0 - '@vitest/expect@3.0.4': + '@typescript-eslint/visitor-keys@8.23.0': dependencies: - '@vitest/spy': 3.0.4 - '@vitest/utils': 3.0.4 + '@typescript-eslint/types': 8.23.0 + eslint-visitor-keys: 4.2.0 + + '@vitest/expect@3.0.5': + dependencies: + '@vitest/spy': 3.0.5 + '@vitest/utils': 3.0.5 chai: 5.1.2 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.4(vite@6.0.11(@types/node@22.13.0)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0))': + '@vitest/mocker@3.0.5(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0))': dependencies: - '@vitest/spy': 3.0.4 + '@vitest/spy': 3.0.5 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.0.11(@types/node@22.13.0)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0) + vite: 6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0) - '@vitest/pretty-format@3.0.4': + '@vitest/pretty-format@3.0.5': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.0.4': + '@vitest/runner@3.0.5': dependencies: - '@vitest/utils': 3.0.4 + '@vitest/utils': 3.0.5 pathe: 2.0.2 - '@vitest/snapshot@3.0.4': + '@vitest/snapshot@3.0.5': dependencies: - '@vitest/pretty-format': 3.0.4 + '@vitest/pretty-format': 3.0.5 magic-string: 0.30.17 pathe: 2.0.2 - '@vitest/spy@3.0.4': + '@vitest/spy@3.0.5': dependencies: tinyspy: 3.0.2 - '@vitest/utils@3.0.4': + '@vitest/utils@3.0.5': dependencies: - '@vitest/pretty-format': 3.0.4 + '@vitest/pretty-format': 3.0.5 loupe: 3.1.2 tinyrainbow: 2.0.0 @@ -3037,9 +3206,9 @@ snapshots: builtin-modules@3.3.0: {} - bun-types@1.2.0: + bun-types@1.2.2: dependencies: - '@types/node': 22.13.0 + '@types/node': 22.13.1 '@types/ws': 8.5.12 bundle-require@5.0.0(esbuild@0.24.2): @@ -3190,7 +3359,7 @@ snapshots: emoji-regex@9.2.2: {} - enhanced-resolve@5.18.0: + enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 @@ -3260,7 +3429,7 @@ snapshots: dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.0 - enhanced-resolve: 5.18.0 + enhanced-resolve: 5.18.1 eslint: 9.19.0(jiti@2.4.2) fast-glob: 3.3.3 get-tsconfig: 4.10.0 @@ -3272,11 +3441,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import-x@4.6.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2)))(eslint@9.19.0(jiti@2.4.2)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import-x@4.6.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2)))(eslint@9.19.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.19.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import-x@4.6.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2)) @@ -3286,35 +3455,35 @@ snapshots: eslint-plugin-import-x@4.6.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3): dependencies: '@types/doctrine': 0.0.9 - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) debug: 4.4.0 doctrine: 3.0.0 - enhanced-resolve: 5.18.0 + enhanced-resolve: 5.18.1 eslint: 9.19.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.10.0 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.0 + semver: 7.7.1 stable-hash: 0.0.4 tslib: 2.8.1 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-react-debug@1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3): + eslint-plugin-react-debug@1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@eslint-react/ast': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/core': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.25.0 - '@eslint-react/jsx': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/shared': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/var': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/ast': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/core': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.1 + '@eslint-react/jsx': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/shared': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/var': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/type-utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.19.0(jiti@2.4.2) string-ts: 2.2.0 ts-pattern: 5.6.2 @@ -3323,17 +3492,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3): + eslint-plugin-react-dom@1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@eslint-react/ast': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/core': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.25.0 - '@eslint-react/jsx': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/shared': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/var': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/ast': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/core': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.1 + '@eslint-react/jsx': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/shared': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/var': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) compare-versions: 6.1.1 eslint: 9.19.0(jiti@2.4.2) string-ts: 2.2.0 @@ -3343,18 +3512,18 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks-extra@1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3): + eslint-plugin-react-hooks-extra@1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@eslint-react/ast': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/core': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.25.0 - '@eslint-react/jsx': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/shared': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/var': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/ast': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/core': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.1 + '@eslint-react/jsx': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/shared': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/var': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/type-utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.19.0(jiti@2.4.2) string-ts: 2.2.0 ts-pattern: 5.6.2 @@ -3363,17 +3532,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-naming-convention@1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3): + eslint-plugin-react-naming-convention@1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@eslint-react/ast': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/core': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.25.0 - '@eslint-react/jsx': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/shared': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/ast': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/core': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.1 + '@eslint-react/jsx': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/shared': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/type-utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.19.0(jiti@2.4.2) string-ts: 2.2.0 ts-pattern: 5.6.2 @@ -3382,17 +3551,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-web-api@1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3): + eslint-plugin-react-web-api@1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@eslint-react/ast': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/core': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.25.0 - '@eslint-react/jsx': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/shared': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/var': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/ast': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/core': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.1 + '@eslint-react/jsx': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/shared': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/var': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.19.0(jiti@2.4.2) string-ts: 2.2.0 ts-pattern: 5.6.2 @@ -3401,25 +3570,25 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-x@1.25.0(eslint@9.19.0(jiti@2.4.2))(ts-api-utils@2.0.0(typescript@5.7.3))(typescript@5.7.3): + eslint-plugin-react-x@1.26.1(eslint@9.19.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.7.3))(typescript@5.7.3): dependencies: - '@eslint-react/ast': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/core': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.25.0 - '@eslint-react/jsx': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/shared': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/var': 1.25.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/ast': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/core': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.1 + '@eslint-react/jsx': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/shared': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/var': 1.26.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/type-utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) compare-versions: 6.1.1 eslint: 9.19.0(jiti@2.4.2) is-immutable-type: 5.0.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) string-ts: 2.2.0 ts-pattern: 5.6.2 optionalDependencies: - ts-api-utils: 2.0.0(typescript@5.7.3) + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -3441,7 +3610,7 @@ snapshots: read-pkg-up: 7.0.1 regexp-tree: 0.1.27 regjsparser: 0.10.0 - semver: 7.7.0 + semver: 7.7.1 strip-indent: 3.0.0 eslint-scope@8.2.0: @@ -3641,7 +3810,7 @@ snapshots: is-bun-module@1.3.0: dependencies: - semver: 7.7.0 + semver: 7.7.1 is-extglob@2.1.1: {} @@ -3653,7 +3822,7 @@ snapshots: is-immutable-type@5.0.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@typescript-eslint/type-utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/type-utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.19.0(jiti@2.4.2) ts-api-utils: 2.0.0(typescript@5.7.3) ts-declaration-location: 1.0.4(typescript@5.7.3) @@ -4054,6 +4223,31 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.27.4 fsevents: 2.3.3 + rollup@4.34.4: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.34.4 + '@rollup/rollup-android-arm64': 4.34.4 + '@rollup/rollup-darwin-arm64': 4.34.4 + '@rollup/rollup-darwin-x64': 4.34.4 + '@rollup/rollup-freebsd-arm64': 4.34.4 + '@rollup/rollup-freebsd-x64': 4.34.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.34.4 + '@rollup/rollup-linux-arm-musleabihf': 4.34.4 + '@rollup/rollup-linux-arm64-gnu': 4.34.4 + '@rollup/rollup-linux-arm64-musl': 4.34.4 + '@rollup/rollup-linux-loongarch64-gnu': 4.34.4 + '@rollup/rollup-linux-powerpc64le-gnu': 4.34.4 + '@rollup/rollup-linux-riscv64-gnu': 4.34.4 + '@rollup/rollup-linux-s390x-gnu': 4.34.4 + '@rollup/rollup-linux-x64-gnu': 4.34.4 + '@rollup/rollup-linux-x64-musl': 4.34.4 + '@rollup/rollup-win32-arm64-msvc': 4.34.4 + '@rollup/rollup-win32-ia32-msvc': 4.34.4 + '@rollup/rollup-win32-x64-msvc': 4.34.4 + fsevents: 2.3.3 + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -4062,7 +4256,7 @@ snapshots: semver@6.3.1: {} - semver@7.7.0: {} + semver@7.7.1: {} shebang-command@2.0.0: dependencies: @@ -4216,6 +4410,10 @@ snapshots: dependencies: typescript: 5.7.3 + ts-api-utils@2.0.1(typescript@5.7.3): + dependencies: + typescript: 5.7.3 + ts-declaration-location@1.0.4(typescript@5.7.3): dependencies: minimatch: 10.0.1 @@ -4264,11 +4462,11 @@ snapshots: type-fest@4.33.0: {} - typescript-eslint@8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3): + typescript-eslint@8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/parser': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/eslint-plugin': 8.23.0(@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) eslint: 9.19.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: @@ -4295,13 +4493,13 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-node@3.0.4(@types/node@22.13.0)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0): + vite-node@3.0.5(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.2 - vite: 6.0.11(@types/node@22.13.0)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0) + vite: 6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0) transitivePeerDependencies: - '@types/node' - jiti @@ -4316,27 +4514,27 @@ snapshots: - tsx - yaml - vite@6.0.11(@types/node@22.13.0)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0): + vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0): dependencies: esbuild: 0.24.2 postcss: 8.5.1 - rollup: 4.27.4 + rollup: 4.34.4 optionalDependencies: - '@types/node': 22.13.0 + '@types/node': 22.13.1 fsevents: 2.3.3 jiti: 2.4.2 lightningcss: 1.29.1 yaml: 2.5.0 - vitest@3.0.4(@types/node@22.13.0)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0): + vitest@3.0.5(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0): dependencies: - '@vitest/expect': 3.0.4 - '@vitest/mocker': 3.0.4(vite@6.0.11(@types/node@22.13.0)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0)) - '@vitest/pretty-format': 3.0.4 - '@vitest/runner': 3.0.4 - '@vitest/snapshot': 3.0.4 - '@vitest/spy': 3.0.4 - '@vitest/utils': 3.0.4 + '@vitest/expect': 3.0.5 + '@vitest/mocker': 3.0.5(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0)) + '@vitest/pretty-format': 3.0.5 + '@vitest/runner': 3.0.5 + '@vitest/snapshot': 3.0.5 + '@vitest/spy': 3.0.5 + '@vitest/utils': 3.0.5 chai: 5.1.2 debug: 4.4.0 expect-type: 1.1.0 @@ -4347,11 +4545,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.0.11(@types/node@22.13.0)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0) - vite-node: 3.0.4(@types/node@22.13.0)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0) + vite: 6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0) + vite-node: 3.0.5(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.5.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.13.0 + '@types/node': 22.13.1 transitivePeerDependencies: - jiti - less diff --git a/scripts/update-tags.ts b/scripts/update-tags.ts index 0bd272c..21c8caa 100755 --- a/scripts/update-tags.ts +++ b/scripts/update-tags.ts @@ -4,32 +4,59 @@ import fs from "node:fs"; const supportedTags = [ "a", "abbr", + "address", "article", + "b", + "bdi", "blockquote", "button", + "caption", "cite", "code", + "col", + "colgroup", + "dd", + "del", "details", + "dialog", "div", + "dl", + "dt", + "em", + "fieldset", + "figcaption", "figure", "footer", + "form", "h1", "h2", "h3", "h4", + "h5", + "h6", + "header", "hr", + "i", "iframe", "img", "input", "ins", + "kbd", "label", + "legend", "li", "main", + "mark", + "menu", + "meter", "nav", "ol", "output", "p", + "picture", "pre", + "progress", + "q", "rt", "ruby", "section", @@ -39,14 +66,21 @@ const supportedTags = [ "sub", "summary", "sup", + "svg", "table", "tbody", "td", + "textarea", + "tfoot", + "th", "thead", + "time", "tr", + "u", "ul", "var", "video", + "wbr", ].sort(); function replaceFile(file: string, search: string | RegExp, replace: string) { diff --git a/src/__tests__/__snapshots__/emit.test.ts.snap b/src/__tests__/__snapshots__/emit.test.ts.snap index 7a4cede..b69cff0 100644 --- a/src/__tests__/__snapshots__/emit.test.ts.snap +++ b/src/__tests__/__snapshots__/emit.test.ts.snap @@ -1,7 +1,7 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`emit > supports emitting as CSS module 1`] = ` -"// babel-tailwind:/Users/aet/Documents/Git/babel-tailwind/src/.temp-attr/index.module.css +"// babel-tailwind:/Users/aet/Documents/Git/babel-tailwind/src/.temp-emit/index.module.css var index_default = { "tw-gqn2k6": "index_tw-gqn2k6", "tw-1qtvvjy": "index_tw-1qtvvjy" diff --git a/src/__tests__/emit.test.ts b/src/__tests__/emit.test.ts index 589a804..5ab9e01 100644 --- a/src/__tests__/emit.test.ts +++ b/src/__tests__/emit.test.ts @@ -3,7 +3,7 @@ import { describe, it } from "vitest"; import { getBuild, matchSnapshot } from "./utils"; describe("emit", () => { - const compileESBuild = getBuild("attr"); + const compileESBuild = getBuild("emit"); it("supports emitting as CSS module", async () => { const { files } = await compileESBuild({ diff --git a/src/__tests__/error.test.ts b/src/__tests__/error.test.ts index 30786a7..9351936 100644 --- a/src/__tests__/error.test.ts +++ b/src/__tests__/error.test.ts @@ -1,4 +1,5 @@ import { describe, expect, it } from "vitest"; + import { getBuild } from "./utils"; describe("babel-tailwind", () => { diff --git a/src/__tests__/merge.test.ts b/src/__tests__/merge.test.ts index 713c084..e34753b 100644 --- a/src/__tests__/merge.test.ts +++ b/src/__tests__/merge.test.ts @@ -45,8 +45,50 @@ describe("merges with existing className attribute", () => { const clsName = getClassName("text-center"); expect(files.js.text).toContain( - `className: ({\n isEntering\n }) => _cx(isEntering ? "enter" : "exit", "${clsName}")` + `className: ({\n isEntering\n }) => _cx("${clsName}", isEntering ? "enter" : "exit")` ); expect(files.css.text).toMatch(`.${clsName} {\n text-align: center;\n}`); }); + + it("reuses clsx in scope", async () => { + const { files } = await compileESBuild({ + clsx: "clsx", + expectFiles: 2, + javascript: /* tsx */ ` + import { clsx } from "clsx"; + + export function Hello(className) { + return ( +
+ ); + } + `, + }); + + expect([...files.js.text.match(/from "clsx"/g)!]).toHaveLength(1); + expect(files.js.text).toContain( + '{ className: clsx("tw-gqn2k6", "font-semibold", className)' + ); + }); + + it("does not reuse invalid clsx", async () => { + const { files } = await compileESBuild({ + clsx: "clsx", + expectFiles: 2, + javascript: /* tsx */ ` + import { clsx } from "clsx"; + + export function Hello(className) { + let clsx = () => {}; + return ( +
+ ); + } + `, + }); + + expect(files.js.text).toContain( + 'className: _cx("tw-gqn2k6", clsx("font-semibold", className))' + ); + }); }); diff --git a/src/babel/index.ts b/src/babel/index.ts index 19a5a7d..fa7e89d 100644 --- a/src/babel/index.ts +++ b/src/babel/index.ts @@ -2,6 +2,7 @@ import { basename, dirname, extname, join } from "node:path"; import type b from "@babel/core"; import { type NodePath, type types as t } from "@babel/core"; +import type { Scope } from "@babel/traverse"; import hash from "@emotion/hash"; import invariant from "tiny-invariant"; @@ -17,6 +18,14 @@ type Type = "css" | "js"; export type BabelPluginUtils = ReturnType; +interface Import { + source: string; + specifiers: { + local: string; + imported: string; + }[]; +} + function getUtils({ path, state, @@ -47,6 +56,36 @@ function getUtils({ const cssMap = new Map(); const jsMap = new Map(); + const imports: Import[] = path.node.body + .filter(node => t.isImportDeclaration(node)) + .map(i => ({ + source: i.source.value, + specifiers: i.specifiers + .filter(x => t.isImportSpecifier(x)) + .filter(x => x.importKind === "value") + .map(x => ({ + local: x.local.name, + imported: t.isStringLiteral(x.imported) ? x.imported.value : x.imported.name, + })), + })); + + let existingCx: string | undefined; + switch (clsx) { + case "emotion": + existingCx = imports + .find(i => i.source === "@emotion/css") + ?.specifiers.find(s => s.imported === "cx")?.local; + break; + case "clsx": + existingCx = imports + .find(i => i.source === "clsx") + ?.specifiers.find(s => s.imported === "clsx")?.local; + break; + case "classnames": + existingCx = imports.find(i => i.source === "classnames")?.specifiers[0]?.local; + break; + } + function getStyleImport() { styleImport ??= path.scope.generateUidIdentifier("styles"); return t.cloneNode(styleImport); @@ -59,7 +98,16 @@ function getUtils({ return t.cloneNode(cssModuleImport); }; + const reuseImport = (scope: Scope, id?: string) => { + if (id && scope.getBinding(id) === path.scope.getBinding(id)) { + return t.identifier(id); + } + }; + return { + program: path, + existingCx, + getClass(type: Type, value: string) { return type === "css" ? getClass(value) : "tw_" + hash(value); }, @@ -74,7 +122,7 @@ function getUtils({ .join("\n"), }), - recordIfAbsent(type: "css", entry: StyleMapEntry) { + recordIfAbsent(type: Type, entry: StyleMapEntry) { const map = type === "css" ? cssMap : jsMap; if (!map.has(entry.key)) { map.set(entry.key, entry); @@ -100,8 +148,11 @@ function getUtils({ } }, - getCx: () => { + getCx: (localScope: Scope) => { if (cx == null) { + const reuse = reuseImport(localScope, existingCx); + if (reuse) return reuse; + cx = path.scope.generateUidIdentifier("cx"); path.node.body.unshift(getClsxImport(t, cx, clsx)); } @@ -295,8 +346,8 @@ export function babelTailwind( if (classNameAttribute) { const attrValue = classNameAttribute.value!; - const wrap = (originalValue: b.types.Expression) => - t.callExpression(_.getCx(), [originalValue, valuePathNode]); + const wrap = (...originalValue: (b.types.Expression | b.types.SpreadElement)[]) => + t.callExpression(_.getCx(path.scope), [valuePathNode, ...originalValue]); // If both are string literals, we can merge them directly here if (t.isStringLiteral(attrValue) && t.isStringLiteral(valuePathNode)) { @@ -309,13 +360,32 @@ export function babelTailwind( !t.isBlockStatement(internalAttrValue.body) ) { internalAttrValue.body = wrap(internalAttrValue.body); + } else if ( + // if the existing className is already wrapped with cx, we unwrap it + // to avoid double calling: cx(cx()) + t.isCallExpression(internalAttrValue) && + t.isIdentifier(internalAttrValue.callee) && + _.existingCx && + _.program.scope + .getBinding(_.existingCx) + ?.referencePaths.map(p => p.node) + .includes(internalAttrValue.callee) + ) { + classNameAttribute.value = t.jsxExpressionContainer( + wrap( + ...(internalAttrValue.arguments as ( + | b.types.Expression + | b.types.SpreadElement + )[]) + ) + ); } else { classNameAttribute.value = t.jsxExpressionContainer(wrap(internalAttrValue)); } } } else { const wrap = (originalValue: b.types.Expression) => - t.callExpression(_.getCx(), [valuePathNode, originalValue]); + t.callExpression(_.getCx(path.scope), [valuePathNode, originalValue]); const rest = parent.attributes.filter(attr => t.isJSXSpreadAttribute(attr)); let arg; @@ -368,7 +438,7 @@ export function babelTailwind( } else { const containerValue = t.isStringLiteral(valuePathNode) ? valuePathNode - : t.callExpression(_.getCx(), [valuePathNode]); + : t.callExpression(_.getCx(path.scope), [valuePathNode]); parent.attributes.push( t.jsxAttribute( @@ -400,7 +470,10 @@ function getClsxImport(t: BabelTypes, cx: t.Identifier, clsx: string) { t.stringLiteral("@emotion/css") ); case "clsx": - return t.importDeclaration([t.importDefaultSpecifier(cx)], t.stringLiteral("clsx")); + return t.importDeclaration( + [t.importSpecifier(cx, t.identifier("clsx"))], + t.stringLiteral("clsx") + ); case "classnames": return t.importDeclaration( [t.importDefaultSpecifier(cx)], diff --git a/src/babel/macro.ts b/src/babel/macro.ts index e73b52f..5671b3c 100644 --- a/src/babel/macro.ts +++ b/src/babel/macro.ts @@ -164,32 +164,59 @@ const isNodePath = ( const supportedTags = new Set([ "a", "abbr", + "address", "article", + "b", + "bdi", "blockquote", "button", + "caption", "cite", "code", + "col", + "colgroup", + "dd", + "del", "details", + "dialog", "div", + "dl", + "dt", + "em", + "fieldset", + "figcaption", "figure", "footer", + "form", "h1", "h2", "h3", "h4", + "h5", + "h6", + "header", "hr", + "i", "iframe", "img", "input", "ins", + "kbd", "label", + "legend", "li", "main", + "mark", + "menu", + "meter", "nav", "ol", "output", "p", + "picture", "pre", + "progress", + "q", "rt", "ruby", "section", @@ -199,12 +226,19 @@ const supportedTags = new Set([ "sub", "summary", "sup", + "svg", "table", "tbody", "td", + "textarea", + "tfoot", + "th", "thead", + "time", "tr", + "u", "ul", "var", "video", + "wbr", ]); diff --git a/src/macro.d.ts b/src/macro.d.ts index 295a1d7..ae6298c 100644 --- a/src/macro.d.ts +++ b/src/macro.d.ts @@ -13,32 +13,59 @@ type CSSAttributeValue = string | (string | RecursiveStringObject)[]; export type SupportedTag = | "a" | "abbr" + | "address" | "article" + | "b" + | "bdi" | "blockquote" | "button" + | "caption" | "cite" | "code" + | "col" + | "colgroup" + | "dd" + | "del" | "details" + | "dialog" | "div" + | "dl" + | "dt" + | "em" + | "fieldset" + | "figcaption" | "figure" | "footer" + | "form" | "h1" | "h2" | "h3" | "h4" + | "h5" + | "h6" + | "header" | "hr" + | "i" | "iframe" | "img" | "input" | "ins" + | "kbd" | "label" + | "legend" | "li" | "main" + | "mark" + | "menu" + | "meter" | "nav" | "ol" | "output" | "p" + | "picture" | "pre" + | "progress" + | "q" | "rt" | "ruby" | "section" @@ -48,14 +75,21 @@ export type SupportedTag = | "sub" | "summary" | "sup" + | "svg" | "table" | "tbody" | "td" + | "textarea" + | "tfoot" + | "th" | "thead" + | "time" | "tr" + | "u" | "ul" | "var" - | "video"; + | "video" + | "wbr"; type Modifier = | "2xl"