From 273d73a78cd2a39683f781b89c47a386e5472981 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2026 00:13:41 +0000 Subject: [PATCH 1/2] chore(dev)(deps-dev): Bump the development-dependencies group across 1 directory with 6 updates Bumps the development-dependencies group with 6 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@tsconfig/node22](https://github.com/tsconfig/bases/tree/HEAD/bases) | `22.0.5` | `22.0.6` | | [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.10` | `4.1.11` | | [lefthook](https://github.com/evilmartians/lefthook) | `2.1.10` | `2.1.12` | | [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) | `0.62.0` | `0.65.0` | | [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) | `1.77.0` | `1.80.0` | | [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.10` | `4.1.11` | Updates `@tsconfig/node22` from 22.0.5 to 22.0.6 - [Commits](https://github.com/tsconfig/bases/commits/HEAD/bases) Updates `@vitest/coverage-v8` from 4.1.10 to 4.1.11 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.11/packages/coverage-v8) Updates `lefthook` from 2.1.10 to 2.1.12 - [Release notes](https://github.com/evilmartians/lefthook/releases) - [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md) - [Commits](https://github.com/evilmartians/lefthook/compare/v2.1.10...v2.1.12) Updates `oxfmt` from 0.62.0 to 0.65.0 - [Release notes](https://github.com/oxc-project/oxc/releases) - [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxfmt/CHANGELOG.md) - [Commits](https://github.com/oxc-project/oxc/commits/oxfmt_v0.65.0/npm/oxfmt) Updates `oxlint` from 1.77.0 to 1.80.0 - [Release notes](https://github.com/oxc-project/oxc/releases) - [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md) - [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.80.0/npm/oxlint) Updates `vitest` from 4.1.10 to 4.1.11 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.11/packages/vitest) --- updated-dependencies: - dependency-name: "@tsconfig/node22" dependency-version: 22.0.6 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: "@vitest/coverage-v8" dependency-version: 4.1.11 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: lefthook dependency-version: 2.1.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: oxfmt dependency-version: 0.65.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: oxlint dependency-version: 1.80.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: vitest dependency-version: 4.1.11 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies ... Signed-off-by: dependabot[bot] --- package.json | 2 +- pnpm-lock.yaml | 618 ++++++++++++++++++++++++------------------------- 2 files changed, 310 insertions(+), 310 deletions(-) diff --git a/package.json b/package.json index 1ad651b..3e8fca8 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "fast-check": "^4.9.0", "lefthook": "^2.1.10", "markdownlint-cli2": "^0.23.1", - "oxfmt": "^0.62.0", + "oxfmt": "^0.65.0", "oxlint": "^1.75.0", "oxlint-tsgolint": "^7.0.2001", "typescript": "^7.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3ea6d92..5ffc941 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -209,28 +209,28 @@ importers: devDependencies: '@fast-check/vitest': specifier: ^0.4.1 - version: 0.4.1(vitest@4.1.10) + version: 0.4.1(vitest@4.1.11) '@tsconfig/node22': specifier: ^22.0.5 - version: 22.0.5 + version: 22.0.6 '@vitest/coverage-v8': specifier: ^4.1.10 - version: 4.1.10(vitest@4.1.10) + version: 4.1.11(vitest@4.1.11) fast-check: specifier: ^4.9.0 version: 4.9.0 lefthook: specifier: ^2.1.10 - version: 2.1.10 + version: 2.1.12 markdownlint-cli2: specifier: ^0.23.1 version: 0.23.2(supports-color@7.2.0) oxfmt: - specifier: ^0.62.0 - version: 0.62.0 + specifier: ^0.65.0 + version: 0.65.0 oxlint: specifier: ^1.75.0 - version: 1.77.0(oxlint-tsgolint@7.0.2001) + version: 1.80.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: specifier: ^7.0.2001 version: 7.0.2001 @@ -239,7 +239,7 @@ importers: version: 7.0.2 vitest: specifier: ^4.1.10 - version: 4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.16) + version: 4.1.11(@vitest/coverage-v8@4.1.11)(vite@8.0.16) packages: @@ -251,13 +251,13 @@ packages: resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.7': - resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + '@babel/parser@7.29.8': + resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.29.7': - resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@1.0.2': @@ -282,8 +282,8 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} @@ -309,124 +309,124 @@ packages: '@oxc-project/types@0.133.0': resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==} - '@oxfmt/binding-android-arm-eabi@0.62.0': - resolution: {integrity: sha512-pdsv0C4gPjJ8H1+sd8u0BDx+yLACTL+rgeMIOL1ln4ihSnhw8CWXtYWgvcSkyTfgGBIzFKab+d8rx9Xl4en/Kw==} + '@oxfmt/binding-android-arm-eabi@0.65.0': + resolution: {integrity: sha512-M10Gs1SSpTNI6ahGx3M/OlIdUF4hkaP6OgUb+MS79t/Pgflk3r1nW5gPFqsZGUAXg0H1AfANT9AvLdBSTIhZKg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxfmt/binding-android-arm64@0.62.0': - resolution: {integrity: sha512-WC3YQ7uS/KtDrjmqwBviwFKe9qeoi+eXx8aX1z/ffG23Md75myjrJaQqTuJvdOLPoa4EYTjDWH0dHXfwulCVog==} + '@oxfmt/binding-android-arm64@0.65.0': + resolution: {integrity: sha512-6DXH5sftNlaHpWJG50hFMF+Qxtq5D2TmahvcDPxWNcGIf8qrC9Y0YgHYcYZ2hlWzaccKXh/f3GcssH8vtkl4JA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxfmt/binding-darwin-arm64@0.62.0': - resolution: {integrity: sha512-GM8Yf3LjjaR1I8PD0SfeoIlwhsh9GvSF+cQ8sf624Yxnjsyumn95aFzYfKJVefblfDIiOAnZ7QVm2sa21Er/0Q==} + '@oxfmt/binding-darwin-arm64@0.65.0': + resolution: {integrity: sha512-K9m7lr53pcOLETNsC88sWes/GWHUGjZyHx95UhYcSXy0r30haLdeXlSufSenEAtoLaW753WN8/l4M7GYcRt6cg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxfmt/binding-darwin-x64@0.62.0': - resolution: {integrity: sha512-d5THp7F8bCxLqNogEXDORRsQD6dosf3EyFtnXfBer6v+8tGdcWIjoDX9WaXrrF/26zOmL8qHpPTKCEvpBDmZkQ==} + '@oxfmt/binding-darwin-x64@0.65.0': + resolution: {integrity: sha512-sTNwIx1gre3MyiHOPLu7IGW4UyMScYL4DTmJT01p4vzB0En+OJUQz6KuH8t0PpsClRSaMuY3b0QmtoPItfO8Lg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxfmt/binding-freebsd-x64@0.62.0': - resolution: {integrity: sha512-1DnrtXGZooOZ0fHgAXZUaDQzBVh1CM2MNW4oBXyQ2aWKvCHjyljvT9fgBkOM0fEOb96X5eqtcfJ0YUVt9jj66g==} + '@oxfmt/binding-freebsd-x64@0.65.0': + resolution: {integrity: sha512-lYZMVIiIpnjGu5hJb2jxA8NYQ/e0OTGuaiAf4dqlGPNnPmUTu23FZRMltmjro/KkQm1uE4NT4n5yJ2zWmKcpfA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxfmt/binding-linux-arm-gnueabihf@0.62.0': - resolution: {integrity: sha512-4pQDHOYRH+Huqe0StIaWyvk2CVl/aTaqSrbZpA3/pLS2xH24ME7lBgYprhQF2fRkHBzhGGGKliwxFsDdHwx59g==} + '@oxfmt/binding-linux-arm-gnueabihf@0.65.0': + resolution: {integrity: sha512-gIdXFAt/bURnjxuoedDEWdZ0PEWEmdDcm8qdpoFYYvW3QMk/5D4vUaH4mlMeRpeTdST4izUgHVO6RawQ4QulJw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-musleabihf@0.62.0': - resolution: {integrity: sha512-X0jAaZJFMCVKhB6YyWVTQ/wN2DLsBcZKSMqTS76bF6riT+XZdtg2FPEdjDvdVbunO9cG+tWiVaEs4Zs38lxYog==} + '@oxfmt/binding-linux-arm-musleabihf@0.65.0': + resolution: {integrity: sha512-jJVyADto7gA2AaX5qAjAexrxx9PJQaKWOe8PICE7yKMbjBRyOHcmj9TtVJ+MZYDUQ3hodU0AcoTj0jFQ1W4C6Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm64-gnu@0.62.0': - resolution: {integrity: sha512-682Z8T5s8T5ATArYtsejKvbIfd8LEAXyyDkKkoZVq8HND7Vx8TYLlrDjDSeYfodMeVwHOgkj13lJYR8cj6vUSg==} + '@oxfmt/binding-linux-arm64-gnu@0.65.0': + resolution: {integrity: sha512-p3RFkB+u7u+8up99b/NEcI1hdpLDiGgJYNwDorB60n7eH+eKposAKuMBxx+NqB3b+sJP4CZmYDh9G7X62tUsKg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-arm64-musl@0.62.0': - resolution: {integrity: sha512-lk25fAl7KWaLWVJcW0CHEXB7QlQZtx5eDkjpaGMK0hzXTjUe0Wmlu8IKuFHoviSOcEJedRTs4VE/506VqGxGew==} + '@oxfmt/binding-linux-arm64-musl@0.65.0': + resolution: {integrity: sha512-5Prb0uFzJHr+OUD/qS/TmU526wD+PaHDsm3KoRiUXbMIDpTSErjeQYkK3OQeshAvD/PuLa9WGEi9WPajjdOZJg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxfmt/binding-linux-ppc64-gnu@0.62.0': - resolution: {integrity: sha512-SFyNqHQLwySceWNLhiSldx7wPXRAzP0L0WcW9GegP3uWrpZGJiZlQO85NbHAFPEfxR9PhZ9qSnZryEh7+v+4Gw==} + '@oxfmt/binding-linux-ppc64-gnu@0.65.0': + resolution: {integrity: sha512-S8svxTp81obnF3admN9yd+u2rOYXtyzThLGBTg1PY6TPtGcC09BaaXLQD+TBSMa7yvqhCDZ8DFri+S/yG60qCg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-gnu@0.62.0': - resolution: {integrity: sha512-KYj55C1ywJfHo6+aKDuEmUtVEdJALsC5GwayDGsI6FGz2GxFqNr/mA8nxVsNbJzm7sE5MRqTQ9ziImSzhYXysA==} + '@oxfmt/binding-linux-riscv64-gnu@0.65.0': + resolution: {integrity: sha512-WtXBr75G/h2qOHy8SiGtC1R6aS3jt4mE52v1D8AtwMXIgoOmSNP9lKvbSaTRoL0e5wsMPoi6T72QWDYPu+S+nA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-musl@0.62.0': - resolution: {integrity: sha512-BhZDNo5GOU5nC378RhD0/XpvaEBHsH3HLgJp8YZX3A0InC7oivzA63HsRmiXFLtLSHAstEVrDf6fbC7Rs8Jh/A==} + '@oxfmt/binding-linux-riscv64-musl@0.65.0': + resolution: {integrity: sha512-YwSLVvpaz4o/nv/miiPEBJz+eJ+VmbgNIrao6RccK9ce+L5EA8wP+ZD0uFeq6wKOza6zoWv/dR0sj6lip6R3EA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxfmt/binding-linux-s390x-gnu@0.62.0': - resolution: {integrity: sha512-UyAFmyHkgSgUJ/wOM4p3U8AC2yAFvRH5PNBs7TnK0fObTT/XSWcdr/lAzPSWaekHaZFaMeFZyk9n93Joq3J93A==} + '@oxfmt/binding-linux-s390x-gnu@0.65.0': + resolution: {integrity: sha512-XQTPqgvyrgkKcFq+Tp2eK6JS7sqqJ+nRmy2Fav4j3I+i4dJoPJm7YwEdoeSDX9xkqj9jZ/lWfF3bXUWztIrn6A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-gnu@0.62.0': - resolution: {integrity: sha512-1iYMP0leytWazFubD/WnINJuIrzRPuoL1aWEJdlGezEzDbTxcd29R4r8IUzP2oWeKst5V02uMJgR2NILlPlG6w==} + '@oxfmt/binding-linux-x64-gnu@0.65.0': + resolution: {integrity: sha512-cjZlx6S/VkeCNWCbwZriTnLnZeTcV3DEyeRGSw/2wwLP9viq+C0bJ4bC1k/ZLkFxDcB1lUgSasPkYGP1bdraOg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-musl@0.62.0': - resolution: {integrity: sha512-4rA/URtJSTVNVAQz6Q8wf7SaRvOXVy+TizriT9hs/Y1XhLR/R+92uWKRQG8yFWRAIEBbFHJ6WevQcl/G9SXEfw==} + '@oxfmt/binding-linux-x64-musl@0.65.0': + resolution: {integrity: sha512-2azCjxdLtK4zCcIOU1dlXlU0xxfbPi6EjwWx7Ac7teWPidIIDOcIhudup83xNCKYhtqeVd/gaVDOxbUq4syXWA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxfmt/binding-openharmony-arm64@0.62.0': - resolution: {integrity: sha512-mSZuFHU2ar1KLUjXpI2QBQcJ1VsOB3mOCgQXuXCpKs19dgh4u+OaovNfrWDfiJb+ihJ2+f7YFcaO9bS2dlTCXA==} + '@oxfmt/binding-openharmony-arm64@0.65.0': + resolution: {integrity: sha512-KXQ7xi1e/voP0IQaw6fG6XY4Z5+Llf1XmRSZS1t7pVFCecFJ0iXaboKmVwjFtp5MLlT5iWQrJ2U1C3GJdZ2u+Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxfmt/binding-win32-arm64-msvc@0.62.0': - resolution: {integrity: sha512-OfwuhkcjDlqC4EgDojtiV9mzpLqeB9KqTOWPOjLEYBVdDCVSxqW3qzp/xcIxsbtI0UgGCnKvAqYKyY25kf5JZw==} + '@oxfmt/binding-win32-arm64-msvc@0.65.0': + resolution: {integrity: sha512-2FbbjG5jEqLSLKVJwBap84uJfpn5Y5A53KEO0aUNr+zeiRB9nyPUIFMcSbZVMFLitfBytFWRNngozXYjb6Rsbw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxfmt/binding-win32-ia32-msvc@0.62.0': - resolution: {integrity: sha512-P9uDDNFRzghO3X8QAzhkjKhK7JvtABsVn8UYtFX7uor12IAnwNt8nNIctvfWj1JkQU/kE+fmLRPiw7XlrIHsZw==} + '@oxfmt/binding-win32-ia32-msvc@0.65.0': + resolution: {integrity: sha512-LJ+ZacAPSjegDOnSLyA1TMWAhdDrsK4el3REdr1oL2UtVBCMhO2II/Sb3cEW6mF2MfLhl8hDNCSvc7KSbgk3LQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxfmt/binding-win32-x64-msvc@0.62.0': - resolution: {integrity: sha512-dlI5SY7XYQCiCBafntWagCR6HcAJB/NpsLtdlPx8x08+Osz8Ok1HHz1GZuusegCe/VoJ6pAnF5a4pd5OZAq7qQ==} + '@oxfmt/binding-win32-x64-msvc@0.65.0': + resolution: {integrity: sha512-higu9cWEO6XXFzATD1jf0mCK34rNfN2H9JrJie7QB1IhleVpTh0QlLH9Ip2C1H/Nd5n0v5pvRtC+5R0uE4HpVg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -461,124 +461,124 @@ packages: cpu: [x64] os: [win32] - '@oxlint/binding-android-arm-eabi@1.77.0': - resolution: {integrity: sha512-E06sKWS6PiI6HRxS1wyQg22HvApt01hI7fV+T3wUk3OSbaaP4a3hYGY/MIQDmASqCiRjBdpRQYkgMkqH82cWmQ==} + '@oxlint/binding-android-arm-eabi@1.80.0': + resolution: {integrity: sha512-RM3Plj+biQpxa5d1GOOX6ciDlcUROmm4OZ/pLTpitkQt2mJv4jhtY4cbgaetOm5UKWZe05/TGQ6o1Vl8EOHkrA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxlint/binding-android-arm64@1.77.0': - resolution: {integrity: sha512-NvsKz0KZxTp9cYWPLf+FXaSZwB3oO3peAjtukpOMBgse2vhQSoIIVqeO1yR0lEo/UcdZIDL18uq+kL0LzQ0ytA==} + '@oxlint/binding-android-arm64@1.80.0': + resolution: {integrity: sha512-YlO5JEf0Yr2bUUlu8O8daVcUxtcGGbcSmyV7E7nSbJbfAdxTE0PFPwgnIlw7wXJaTYjb+qs5hI5q3jxUkI7cAw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxlint/binding-darwin-arm64@1.77.0': - resolution: {integrity: sha512-bgjTn6nW4bQCFBvSvuHCpDD+sONvmpo4lGI4PxzMt1quBA+xYxhczk6RiCn3GZ9gY8uhaBbwhj9MdKGfu6T9DA==} + '@oxlint/binding-darwin-arm64@1.80.0': + resolution: {integrity: sha512-BULDOyO3AhsmdWfQeIUCykDt3dd7XZBGLhp1eIh56skRv01O+cNjNPwXMIbeW1x4+pxcln5if72wcRgViVo7PA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxlint/binding-darwin-x64@1.77.0': - resolution: {integrity: sha512-aotaIttH1R6j1Rwhx0M0htgeZyGtVQqYNTVEYMN/UcgHPquGA6kmk9OyuDc3a2GKUQBC+3C3GVQCcrRPMYqAFA==} + '@oxlint/binding-darwin-x64@1.80.0': + resolution: {integrity: sha512-YJ4JzLw7N5TDSQFlA0hAQGHvnDZgyypm1yunObVWcWiF9KM7eGCJKYKLgTC2Fi/57OdnBhbj4OkzPGdFQJ6HyA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxlint/binding-freebsd-x64@1.77.0': - resolution: {integrity: sha512-nNx/wta7ksRAdYvq+l4AWjXkLxEXHALhENxjj2cYbQAIR4ybaA5L+hCbE63HOmft5czQ6ks+hb8vmEAnn7YGPg==} + '@oxlint/binding-freebsd-x64@1.80.0': + resolution: {integrity: sha512-AYUIk5QnL0s8oWAYsREZwkRYy1SupJTXALo93J1TgzHywxQtdM99FecRMQ87MXEdPQ0j1TmEpeeq3fGNkpvMqg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxlint/binding-linux-arm-gnueabihf@1.77.0': - resolution: {integrity: sha512-tMLLjM7xXtzXisVCzkOTXNCy9bZVId2wteNwjohlFDR/jY6WagpEDA1c1wu4xRc20Hojaxj+V6DSR7gbKxijWA==} + '@oxlint/binding-linux-arm-gnueabihf@1.80.0': + resolution: {integrity: sha512-9hBZVANupQ89W9dXyE0n8doCyaW5pDyGn3y6XlIMPZ+rIKuyqkr3SNUXmVJIhuvUq0NBU3RBiSXXE69l4XI6KA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm-musleabihf@1.77.0': - resolution: {integrity: sha512-MiAFDFaqR0tmHTAyo0YDcZ5hyLREdYw/RQhc2R3cbT+8O3tB+zqPM2th9TTQ+Uo3jn/embS+DO+HyX9ztCPkOQ==} + '@oxlint/binding-linux-arm-musleabihf@1.80.0': + resolution: {integrity: sha512-SvS2uKqzY+pbfuvAHzH4338R6Zwo805GAwrIMVvK1KxoOWCIjZUdfzTCvilD7z6JK91v011+zYMryabhDo2AsQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm64-gnu@1.77.0': - resolution: {integrity: sha512-/xqQ3B16i1T4cyt/9Mn+4CpzhUXoBXp7kVpIwzOXNFLj5JmK1bIjsbSnX296Gg8A/o7oDtKWikFgBx0SLwztkw==} + '@oxlint/binding-linux-arm64-gnu@1.80.0': + resolution: {integrity: sha512-tCLadyqRVL3pQTRPNg7cjXKvcvS4fbyXeQHhKk5BTJ1oftQln5/yIIWbu/Xom/DX41zv2P9QGt6+D/TtQVtY3A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-arm64-musl@1.77.0': - resolution: {integrity: sha512-LSbwuRKiNCenPDcbARqAZ5RfBy7gmj7vOvfJRLeCDU3gFtSxWbhv/+VTlaUqzUhNj1gFLHB8h7ALnxa/Az6z6g==} + '@oxlint/binding-linux-arm64-musl@1.80.0': + resolution: {integrity: sha512-XfpCNRlOPcLlJl4Bn/FUhjqlR6BVavEykERBf/MV7YA9VZDa5g5znVqYhyviMafcxS9Pe/i/kPvHNO0U6svEHQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxlint/binding-linux-ppc64-gnu@1.77.0': - resolution: {integrity: sha512-QWdcH31mXEUe5Nq1s0CfCpceaKjIo9uZtwDjAuL681g1axf+5x8xrg/eXWaw//4NCxYZ4V4e5Hu5tvdR+pTBlg==} + '@oxlint/binding-linux-ppc64-gnu@1.80.0': + resolution: {integrity: sha512-3I4yMwcFG9NeO8ioY6JBBuKsIm5GL/x7MATt1S4tVWaxPu5HcJ+XnLUbcVBTxG8q2Wu56HSj+NmXQiVYb1lp6A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-gnu@1.77.0': - resolution: {integrity: sha512-GnOfYgJxbcElOiPZaDFDl406ONddwvOWk2jvAAAEjwAl4GofNoHF+/HHUIBYa6bFCArlcGPi0XjC4cU1pkgF/Q==} + '@oxlint/binding-linux-riscv64-gnu@1.80.0': + resolution: {integrity: sha512-E1wAKymkpe1/E8helzBKdm81OBOF+ezxRyXRMEuik3ZpWDER5CPOKZwF66RsdwW98uwZv8UTFremUQtC1CzdJA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-musl@1.77.0': - resolution: {integrity: sha512-AyEMTUCf0xY+hHF+IxqXFQIX0yQOIR8ykpY0lJNOw9xYqOzUX8dyZfRvlG0RfXwuQn2eonf/8NrMmDSZJjdqsA==} + '@oxlint/binding-linux-riscv64-musl@1.80.0': + resolution: {integrity: sha512-+gLRGD4sIo3+VA++iham5UxD9tKSoJ/VOrROCEXIcknrYtQg6iIQgvjN0cpiRF7N6UYC7pJbvHJlDnMge5LRpQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxlint/binding-linux-s390x-gnu@1.77.0': - resolution: {integrity: sha512-sPLzEcNvxd/oyVQ5oZo92CiHkFkpBeRop13E/P3TPY+hZfXHKCOWKI70TE2RYwMKFJDc20EMjH16L7NZICtKTw==} + '@oxlint/binding-linux-s390x-gnu@1.80.0': + resolution: {integrity: sha512-aR0PrzHj9leW3NmzBAAP4EzdoBNoJcs9sjnIQPIwyRnBGYrRbXUIpEB5Q39AqK3PLY5JK5uEhDQDiUa1QSAstw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-gnu@1.77.0': - resolution: {integrity: sha512-1Oh2ssH2L7lwyvkdSqaMUfsGfwU2Wfvew+obBUYjRVqhpBcUpwnsPSEr1IzVi9XqkuY10geiLsNKecqaZC34Dw==} + '@oxlint/binding-linux-x64-gnu@1.80.0': + resolution: {integrity: sha512-vSVh5cSo3Xxs6ghBCcFJlpbkbENzDog1qXtoXLa/HC3aCrR4XO76GZbXmQoCPHnu99nQpdCeC3H9tdNICfDh7A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-musl@1.77.0': - resolution: {integrity: sha512-0j/2wRgNGO+Qj/M1uu/p57h/hFTTWWcfie0ufkbabeus2s5+/QqkCflnMOwLLN5m2GsNeWp4xdl4cPa4n7QCOQ==} + '@oxlint/binding-linux-x64-musl@1.80.0': + resolution: {integrity: sha512-FfzBXpNQ8u7/ZI/p8bl73MeZ508Ax3hxWp3SiJpEFiC+BB9XcXy5FAZHTLKDPSzrUpxQZSZJAVdDmuJp/+HDBQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxlint/binding-openharmony-arm64@1.77.0': - resolution: {integrity: sha512-BJ/j54qS0usEnyDkLYURMj2iiD9h5Cyy+ppzeMSXBGRXaGRNWnj1Mw14NqWMR5E/PzdgB30OOCCzLzbRoduafw==} + '@oxlint/binding-openharmony-arm64@1.80.0': + resolution: {integrity: sha512-zMzbkumtmprCgRwoYNzcB3iC39fXdJIMLMU33KdCjEGLlJGOEt1+LwQ4LF8ndLzAEKVz4BR0y3V6Xrkk3Nm3yA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxlint/binding-win32-arm64-msvc@1.77.0': - resolution: {integrity: sha512-Yh8w+g2Lpx7StrvtYkoz9JJvXjB9wxgFChFNb85nrXm/wj/XTwGWS1hve9+900HL7llrntYB3YP+y32E3tRqzA==} + '@oxlint/binding-win32-arm64-msvc@1.80.0': + resolution: {integrity: sha512-ib6iRcrXsk4t1fm3iKcwksyWh1ZkZXC/2mEzakl0ai2+6HZunf1WWMZ/xP9EJAvw9g9K4UVTC3NF/+G2qLrbTQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxlint/binding-win32-ia32-msvc@1.77.0': - resolution: {integrity: sha512-zja5b7+6a7UsRFgAQSrnax5vrzliEyNPLCjfXONu/vTWswaIVZGFajJZptaeRvPE4LghtFdAzVFlexTm7MVTGA==} + '@oxlint/binding-win32-ia32-msvc@1.80.0': + resolution: {integrity: sha512-xhRWBMpLxZvgKAH6+DJZmpP+W8Y8UdQOSU1JfxSWNXsaBaRGW77j+1hCuNHlzj7OH4SPN8fYd1q0o2qrDtoVyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxlint/binding-win32-x64-msvc@1.77.0': - resolution: {integrity: sha512-+teyvPDZ2RjUvo+SuCqS/UhaJl1QtdW5fWT5NJTV61V5MIuIS90Db9LixmtEGvXixyttiK62P96MSu3UlpviBw==} + '@oxlint/binding-win32-x64-msvc@1.80.0': + resolution: {integrity: sha512-yAnO7lwBYQnz2pcfBPIGQQZWIX5zd5R/1aAKIF3oE+TVj7IhoHcROjOkz3sRDngzqhfPKfFaXqug5j5rE5dn6Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -688,8 +688,8 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@tsconfig/node22@22.0.5': - resolution: {integrity: sha512-hLf2ld+sYN/BtOJjHUWOk568dvjFQkHnLNa6zce25GIH+vxKfvTgm3qpaH6ToF5tu/NN0IH66s+Bb5wElHrLcw==} + '@tsconfig/node22@22.0.6': + resolution: {integrity: sha512-/5thavHAnWDZwH2H6eEn/T8pBEBhtuKaWGMslsj82kJfvzQgOgEMK7X4goBbIUjgVtAzPTtM9Ml64LA0uxO6Iw==} '@tybys/wasm-util@0.10.2': resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} @@ -835,20 +835,20 @@ packages: cpu: [x64] os: [win32] - '@vitest/coverage-v8@4.1.10': - resolution: {integrity: sha512-IM49HmthevbgAO4anp1hwtoT9wYe59w0LR00gr+eagHE+ZJ5lK4sLPeO0ubgoJcwLk6dehU3R24N+FbEEKDc8g==} + '@vitest/coverage-v8@4.1.11': + resolution: {integrity: sha512-8MVGEFnJIcdGjcbfKmeq8z0pZHH0JlVtoVZH9Q/qwUp6wyFnEJUBMrw9DCaj+ra3vShGmhavjalMIhPNxZAUcw==} peerDependencies: - '@vitest/browser': 4.1.10 - vitest: 4.1.10 + '@vitest/browser': 4.1.11 + vitest: 4.1.11 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.1.10': - resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} + '@vitest/expect@4.1.11': + resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==} - '@vitest/mocker@4.1.10': - resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} + '@vitest/mocker@4.1.11': + resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -858,20 +858,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.10': - resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} + '@vitest/pretty-format@4.1.11': + resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==} - '@vitest/runner@4.1.10': - resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} + '@vitest/runner@4.1.11': + resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==} - '@vitest/snapshot@4.1.10': - resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} + '@vitest/snapshot@4.1.11': + resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==} - '@vitest/spy@4.1.10': - resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} + '@vitest/spy@4.1.11': + resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==} - '@vitest/utils@4.1.10': - resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} + '@vitest/utils@4.1.11': + resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} ansi-regex@6.2.2: resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} @@ -938,8 +938,8 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - es-module-lexer@2.3.1: - resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==} + es-module-lexer@2.3.2: + resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -1058,58 +1058,58 @@ packages: resolution: {integrity: sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==} hasBin: true - lefthook-darwin-arm64@2.1.10: - resolution: {integrity: sha512-nw+X8wRNDoUUV6WSteyKBbcLySq+fsmZt5WV/s50ZJpysmsDKJOUMln6SllNfP+60dzUahAO7REco/2633BsLg==} + lefthook-darwin-arm64@2.1.12: + resolution: {integrity: sha512-GSUjqaCuxAYlPOovbjXEWE3HAIa/xOQkTTmZ937zieQldjPLTaC7+s5FHoxKywn+D9riBlofkDqG7Z4f5zzmPA==} cpu: [arm64] os: [darwin] - lefthook-darwin-x64@2.1.10: - resolution: {integrity: sha512-KQ/bHmvpkFdHMn4pZnUdTf+GuSC+aBBgBTxZT4GW+6cSf+qbErKZBhK7cH6BmILsvx43+VzEArvHYY7YOfRFOQ==} + lefthook-darwin-x64@2.1.12: + resolution: {integrity: sha512-qAUHSSw/7Afi5wxkoLkxORxSicCeTBXyVLnRgD6YZra6udviozpK3Aok9Z6FIWeKc5FBijRMSNDxGPTREhsjcQ==} cpu: [x64] os: [darwin] - lefthook-freebsd-arm64@2.1.10: - resolution: {integrity: sha512-8su6DwydP7+pv7kG0zCtjphqsw4ouOnfexRUErapy5GTxYBoUOhYz3RSHTSWNRsK6W4jva7FPUh2Lp5/PSn30w==} + lefthook-freebsd-arm64@2.1.12: + resolution: {integrity: sha512-FHZRfKliFNbyz54zsoGdVe9muq67cNjBTZ6jrPPUjI7xUuyCwSpzA+1OpiwJT00L9pP5ZGONBqnGZKnrpC+7Uw==} cpu: [arm64] os: [freebsd] - lefthook-freebsd-x64@2.1.10: - resolution: {integrity: sha512-GeAJEFxko3Lk+AsnS3NleAFrpyMLFUKOlgJvPKuU0xHwVEI/z+ZoCcmuO0BX+4CS0NLbZhC/YQAvBASqDvvVdQ==} + lefthook-freebsd-x64@2.1.12: + resolution: {integrity: sha512-HYQZPGy2DDEx7dbuotusJpujY5q9igOLgx36qeeQcNQuvvdGHPj2ZGSIsGKhoJ0dw5Qa4knKJoPAHEZQWdV/og==} cpu: [x64] os: [freebsd] - lefthook-linux-arm64@2.1.10: - resolution: {integrity: sha512-1sHTCmpTWjVMs+yKPBLRNT1kuuIr1yjietlk7rCB6wFPVOS6Ph3o2zPFH2AvW1UymHlqwyHXzBr9EtDpQ7j1mQ==} + lefthook-linux-arm64@2.1.12: + resolution: {integrity: sha512-ipjOri2PB/sk4noPrHQuM5fcpNBjmlKo4qMtXyLnxeOxGYHWZzf0Xi0OtrXHQ//tOprcv40ADvhUuSdcGqigLw==} cpu: [arm64] os: [linux] - lefthook-linux-x64@2.1.10: - resolution: {integrity: sha512-z/VlRB3bh6mBvW3r1rwnJ5vP8z+Krx5gJzkZ4veDXh+6FlRTx8wtd3g3fllOv/yZMxkgmL3fQoFXv05Esa7vBQ==} + lefthook-linux-x64@2.1.12: + resolution: {integrity: sha512-DmU6xfvqVoFdW+STyc70YI4Ry8vkHGKHx+IJ1Js/Gacq5dv+fiwNzwle3bi28EkL6P8xY67B/CfQfRj4SRU4tg==} cpu: [x64] os: [linux] - lefthook-openbsd-arm64@2.1.10: - resolution: {integrity: sha512-430zL8sSIKw5P0YXGG6PB+eAhHa06n0PXuaERaAQE4Ss3odfqwnl5Mq9hQmkEnOS1EGiQEKkd0UHv/i4PtMNIQ==} + lefthook-openbsd-arm64@2.1.12: + resolution: {integrity: sha512-vb0J7bElLvoaCWQmna3HntsvoNqMsGAhfjjC99ss1OdCteufZKM3RxCVoMBEbD50Itv2c1Ua2AFVToltVFTy1Q==} cpu: [arm64] os: [openbsd] - lefthook-openbsd-x64@2.1.10: - resolution: {integrity: sha512-bgkO8PphGZVDhQgCJ524aYYPI5491pVmCiLPGjBIo1AvOSlIyw4N1Y+1C3QfqwEmechzw+Aq16SNc8pqv6UuXg==} + lefthook-openbsd-x64@2.1.12: + resolution: {integrity: sha512-QOmhDWqPPK4+99scanfEmbJjUR+JYC93qhr/0bp5Dj3LaR3kVFNWc6zOQUsOTPy/LC6PG759Lej/mr/BtjUL2Q==} cpu: [x64] os: [openbsd] - lefthook-windows-arm64@2.1.10: - resolution: {integrity: sha512-5Q6etF0Fla2DDA4ilDySrdNgiR5+W7cJZwnZ69Je3kvWCaWm4wnkuc8FEdjp3kiL2x3ZXipdI00f5vpO8aWmog==} + lefthook-windows-arm64@2.1.12: + resolution: {integrity: sha512-eErEyr9AHkRFj6TxpCQeKGd0s6IrtL/VEIZ/ssg8dNfG+ycR4jAW/IAlrJSw6/ZQXb3WtWLaQ6QA5c+TLh7vmg==} cpu: [arm64] os: [win32] - lefthook-windows-x64@2.1.10: - resolution: {integrity: sha512-c/XH8YZtylG4XaxzqFfXluvq2LXq2W/p54Bnzn3+Z7E5X2Fk3JlFJAibulMbIt2+w8T7UI/r97ok5GqE4kGaeA==} + lefthook-windows-x64@2.1.12: + resolution: {integrity: sha512-0h+WmDVdDriTjloD/UbjPq/ZtqaaJlPAdGcVwMCEdAxfbF0FTgDbKX3igui9g2U/qG2y6QpVhtz1jeiRe7ctaw==} cpu: [x64] os: [win32] - lefthook@2.1.10: - resolution: {integrity: sha512-K7mM4WoqMwqfXYK11EHy+lSH1uW8XHni3Yn/bSqyerPkUPygGdf3xn18JoV5HyA06xuQL3ofGAOjG01QX9oJ4w==} + lefthook@2.1.12: + resolution: {integrity: sha512-2uOexfsrrRhCiTUWdGyDySxVHHhOFJ8MQejs27dM3hugrQB48/z1ZVlaNoxpZ1SnzQ1GaDIbO5rAvicwyiknYQ==} hasBin: true lightningcss-android-arm64@1.32.0: @@ -1192,8 +1192,8 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.5.3: - resolution: {integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==} + magicast@0.5.4: + resolution: {integrity: sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==} make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} @@ -1315,8 +1315,8 @@ packages: resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} engines: {node: '>=12.20.0'} - oxfmt@0.62.0: - resolution: {integrity: sha512-vxgGHTmnDU9j4CX7dDBLzxgmHxfda/yPcgJkGCMUSCwRmz+euo/V08xXLNgXTeqAB9Fhf3Pe2nO1RNKLCVgphQ==} + oxfmt@0.65.0: + resolution: {integrity: sha512-SgS5VgnP42T0zl3zWD+xoH8FCqg1SAFnSRoOT/qeoa6gxcYIqrDMOmcXIg/EWSN92Du4ogB4riuKhKd6Y4CGhw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -1332,8 +1332,8 @@ packages: resolution: {integrity: sha512-KjK/XLcXr1DSyonKhsuFqJRiuKqcyG9j3LJ8nkOsrLzGvodBPqzHOKauy10asLMDI0sUpvb+1sxlzff3udZvfg==} hasBin: true - oxlint@1.77.0: - resolution: {integrity: sha512-qnGh8XJHaQ0dprrDXNQZgS0FgjI6v+V3+X8DwmaV++5Aamy6jGKfDdQ1TUvhUxtmKFAbEf4/WeO5QZX+5WSngg==} + oxlint@1.80.0: + resolution: {integrity: sha512-5nTiSps4qdbCWLbxzuO00alHkEO2exR9YMN/ig6QXWrLsYSG0KaObOAM+l6oU2LcKPWoSAGYbkZIGEu1ViiWKA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -1358,8 +1358,8 @@ packages: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.5: - resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} engines: {node: '>=12'} postcss@8.5.15: @@ -1429,8 +1429,8 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@1.2.4: - resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + tinyexec@1.3.1: + resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} engines: {node: '>=18'} tinyglobby@0.2.17: @@ -1441,8 +1441,8 @@ packages: resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} engines: {node: ^20.0.0 || >=22.0.0} - tinyrainbow@3.1.0: - resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + tinyrainbow@3.1.1: + resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} engines: {node: '>=14.0.0'} to-regex-range@5.0.1: @@ -1507,20 +1507,20 @@ packages: yaml: optional: true - vitest@4.1.10: - resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} + vitest@4.1.11: + resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.10 - '@vitest/browser-preview': 4.1.10 - '@vitest/browser-webdriverio': 4.1.10 - '@vitest/coverage-istanbul': 4.1.10 - '@vitest/coverage-v8': 4.1.10 - '@vitest/ui': 4.1.10 + '@vitest/browser-playwright': 4.1.11 + '@vitest/browser-preview': 4.1.11 + '@vitest/browser-webdriverio': 4.1.11 + '@vitest/coverage-istanbul': 4.1.11 + '@vitest/coverage-v8': 4.1.11 + '@vitest/ui': 4.1.11 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1559,11 +1559,11 @@ snapshots: '@babel/helper-validator-identifier@7.29.7': {} - '@babel/parser@7.29.7': + '@babel/parser@7.29.8': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 - '@babel/types@7.29.7': + '@babel/types@7.29.8': dependencies: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 @@ -1586,19 +1586,19 @@ snapshots: tslib: 2.8.1 optional: true - '@fast-check/vitest@0.4.1(vitest@4.1.10)': + '@fast-check/vitest@0.4.1(vitest@4.1.11)': dependencies: fast-check: 4.9.0 - vitest: 4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.16) + vitest: 4.1.11(@vitest/coverage-v8@4.1.11)(vite@8.0.16) '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/sourcemap-codec@1.6.0': {} '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: @@ -1621,61 +1621,61 @@ snapshots: '@oxc-project/types@0.133.0': {} - '@oxfmt/binding-android-arm-eabi@0.62.0': + '@oxfmt/binding-android-arm-eabi@0.65.0': optional: true - '@oxfmt/binding-android-arm64@0.62.0': + '@oxfmt/binding-android-arm64@0.65.0': optional: true - '@oxfmt/binding-darwin-arm64@0.62.0': + '@oxfmt/binding-darwin-arm64@0.65.0': optional: true - '@oxfmt/binding-darwin-x64@0.62.0': + '@oxfmt/binding-darwin-x64@0.65.0': optional: true - '@oxfmt/binding-freebsd-x64@0.62.0': + '@oxfmt/binding-freebsd-x64@0.65.0': optional: true - '@oxfmt/binding-linux-arm-gnueabihf@0.62.0': + '@oxfmt/binding-linux-arm-gnueabihf@0.65.0': optional: true - '@oxfmt/binding-linux-arm-musleabihf@0.62.0': + '@oxfmt/binding-linux-arm-musleabihf@0.65.0': optional: true - '@oxfmt/binding-linux-arm64-gnu@0.62.0': + '@oxfmt/binding-linux-arm64-gnu@0.65.0': optional: true - '@oxfmt/binding-linux-arm64-musl@0.62.0': + '@oxfmt/binding-linux-arm64-musl@0.65.0': optional: true - '@oxfmt/binding-linux-ppc64-gnu@0.62.0': + '@oxfmt/binding-linux-ppc64-gnu@0.65.0': optional: true - '@oxfmt/binding-linux-riscv64-gnu@0.62.0': + '@oxfmt/binding-linux-riscv64-gnu@0.65.0': optional: true - '@oxfmt/binding-linux-riscv64-musl@0.62.0': + '@oxfmt/binding-linux-riscv64-musl@0.65.0': optional: true - '@oxfmt/binding-linux-s390x-gnu@0.62.0': + '@oxfmt/binding-linux-s390x-gnu@0.65.0': optional: true - '@oxfmt/binding-linux-x64-gnu@0.62.0': + '@oxfmt/binding-linux-x64-gnu@0.65.0': optional: true - '@oxfmt/binding-linux-x64-musl@0.62.0': + '@oxfmt/binding-linux-x64-musl@0.65.0': optional: true - '@oxfmt/binding-openharmony-arm64@0.62.0': + '@oxfmt/binding-openharmony-arm64@0.65.0': optional: true - '@oxfmt/binding-win32-arm64-msvc@0.62.0': + '@oxfmt/binding-win32-arm64-msvc@0.65.0': optional: true - '@oxfmt/binding-win32-ia32-msvc@0.62.0': + '@oxfmt/binding-win32-ia32-msvc@0.65.0': optional: true - '@oxfmt/binding-win32-x64-msvc@0.62.0': + '@oxfmt/binding-win32-x64-msvc@0.65.0': optional: true '@oxlint-tsgolint/darwin-arm64@7.0.2001': @@ -1696,61 +1696,61 @@ snapshots: '@oxlint-tsgolint/win32-x64@7.0.2001': optional: true - '@oxlint/binding-android-arm-eabi@1.77.0': + '@oxlint/binding-android-arm-eabi@1.80.0': optional: true - '@oxlint/binding-android-arm64@1.77.0': + '@oxlint/binding-android-arm64@1.80.0': optional: true - '@oxlint/binding-darwin-arm64@1.77.0': + '@oxlint/binding-darwin-arm64@1.80.0': optional: true - '@oxlint/binding-darwin-x64@1.77.0': + '@oxlint/binding-darwin-x64@1.80.0': optional: true - '@oxlint/binding-freebsd-x64@1.77.0': + '@oxlint/binding-freebsd-x64@1.80.0': optional: true - '@oxlint/binding-linux-arm-gnueabihf@1.77.0': + '@oxlint/binding-linux-arm-gnueabihf@1.80.0': optional: true - '@oxlint/binding-linux-arm-musleabihf@1.77.0': + '@oxlint/binding-linux-arm-musleabihf@1.80.0': optional: true - '@oxlint/binding-linux-arm64-gnu@1.77.0': + '@oxlint/binding-linux-arm64-gnu@1.80.0': optional: true - '@oxlint/binding-linux-arm64-musl@1.77.0': + '@oxlint/binding-linux-arm64-musl@1.80.0': optional: true - '@oxlint/binding-linux-ppc64-gnu@1.77.0': + '@oxlint/binding-linux-ppc64-gnu@1.80.0': optional: true - '@oxlint/binding-linux-riscv64-gnu@1.77.0': + '@oxlint/binding-linux-riscv64-gnu@1.80.0': optional: true - '@oxlint/binding-linux-riscv64-musl@1.77.0': + '@oxlint/binding-linux-riscv64-musl@1.80.0': optional: true - '@oxlint/binding-linux-s390x-gnu@1.77.0': + '@oxlint/binding-linux-s390x-gnu@1.80.0': optional: true - '@oxlint/binding-linux-x64-gnu@1.77.0': + '@oxlint/binding-linux-x64-gnu@1.80.0': optional: true - '@oxlint/binding-linux-x64-musl@1.77.0': + '@oxlint/binding-linux-x64-musl@1.80.0': optional: true - '@oxlint/binding-openharmony-arm64@1.77.0': + '@oxlint/binding-openharmony-arm64@1.80.0': optional: true - '@oxlint/binding-win32-arm64-msvc@1.77.0': + '@oxlint/binding-win32-arm64-msvc@1.80.0': optional: true - '@oxlint/binding-win32-ia32-msvc@1.77.0': + '@oxlint/binding-win32-ia32-msvc@1.80.0': optional: true - '@oxlint/binding-win32-x64-msvc@1.77.0': + '@oxlint/binding-win32-x64-msvc@1.80.0': optional: true '@rolldown/binding-android-arm64@1.0.3': @@ -1808,7 +1808,7 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@tsconfig/node22@22.0.5': {} + '@tsconfig/node22@22.0.6': {} '@tybys/wasm-util@0.10.2': dependencies: @@ -1894,60 +1894,60 @@ snapshots: '@typescript/typescript-win32-x64@7.0.2': optional: true - '@vitest/coverage-v8@4.1.10(vitest@4.1.10)': + '@vitest/coverage-v8@4.1.11(vitest@4.1.11)': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.1.10 + '@vitest/utils': 4.1.11 ast-v8-to-istanbul: 1.0.5 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-reports: 3.2.0 - magicast: 0.5.3 + magicast: 0.5.4 obug: 2.1.4 std-env: 4.2.0 - tinyrainbow: 3.1.0 - vitest: 4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.16) + tinyrainbow: 3.1.1 + vitest: 4.1.11(@vitest/coverage-v8@4.1.11)(vite@8.0.16) - '@vitest/expect@4.1.10': + '@vitest/expect@4.1.11': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 + '@vitest/spy': 4.1.11 + '@vitest/utils': 4.1.11 chai: 6.2.2 - tinyrainbow: 3.1.0 + tinyrainbow: 3.1.1 - '@vitest/mocker@4.1.10(vite@8.0.16)': + '@vitest/mocker@4.1.11(vite@8.0.16)': dependencies: - '@vitest/spy': 4.1.10 + '@vitest/spy': 4.1.11 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: vite: 8.0.16 - '@vitest/pretty-format@4.1.10': + '@vitest/pretty-format@4.1.11': dependencies: - tinyrainbow: 3.1.0 + tinyrainbow: 3.1.1 - '@vitest/runner@4.1.10': + '@vitest/runner@4.1.11': dependencies: - '@vitest/utils': 4.1.10 + '@vitest/utils': 4.1.11 pathe: 2.0.3 - '@vitest/snapshot@4.1.10': + '@vitest/snapshot@4.1.11': dependencies: - '@vitest/pretty-format': 4.1.10 - '@vitest/utils': 4.1.10 + '@vitest/pretty-format': 4.1.11 + '@vitest/utils': 4.1.11 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.10': {} + '@vitest/spy@4.1.11': {} - '@vitest/utils@4.1.10': + '@vitest/utils@4.1.11': dependencies: - '@vitest/pretty-format': 4.1.10 + '@vitest/pretty-format': 4.1.11 convert-source-map: 2.0.0 - tinyrainbow: 3.1.0 + tinyrainbow: 3.1.1 ansi-regex@6.2.2: {} @@ -1997,7 +1997,7 @@ snapshots: entities@4.5.0: {} - es-module-lexer@2.3.1: {} + es-module-lexer@2.3.2: {} estree-walker@3.0.3: dependencies: @@ -2021,9 +2021,9 @@ snapshots: dependencies: reusify: 1.1.0 - fdir@6.5.0(picomatch@4.0.5): + fdir@6.5.0(picomatch@4.0.7): optionalDependencies: - picomatch: 4.0.5 + picomatch: 4.0.7 fill-range@7.1.1: dependencies: @@ -2101,48 +2101,48 @@ snapshots: dependencies: commander: 8.3.0 - lefthook-darwin-arm64@2.1.10: + lefthook-darwin-arm64@2.1.12: optional: true - lefthook-darwin-x64@2.1.10: + lefthook-darwin-x64@2.1.12: optional: true - lefthook-freebsd-arm64@2.1.10: + lefthook-freebsd-arm64@2.1.12: optional: true - lefthook-freebsd-x64@2.1.10: + lefthook-freebsd-x64@2.1.12: optional: true - lefthook-linux-arm64@2.1.10: + lefthook-linux-arm64@2.1.12: optional: true - lefthook-linux-x64@2.1.10: + lefthook-linux-x64@2.1.12: optional: true - lefthook-openbsd-arm64@2.1.10: + lefthook-openbsd-arm64@2.1.12: optional: true - lefthook-openbsd-x64@2.1.10: + lefthook-openbsd-x64@2.1.12: optional: true - lefthook-windows-arm64@2.1.10: + lefthook-windows-arm64@2.1.12: optional: true - lefthook-windows-x64@2.1.10: + lefthook-windows-x64@2.1.12: optional: true - lefthook@2.1.10: + lefthook@2.1.12: optionalDependencies: - lefthook-darwin-arm64: 2.1.10 - lefthook-darwin-x64: 2.1.10 - lefthook-freebsd-arm64: 2.1.10 - lefthook-freebsd-x64: 2.1.10 - lefthook-linux-arm64: 2.1.10 - lefthook-linux-x64: 2.1.10 - lefthook-openbsd-arm64: 2.1.10 - lefthook-openbsd-x64: 2.1.10 - lefthook-windows-arm64: 2.1.10 - lefthook-windows-x64: 2.1.10 + lefthook-darwin-arm64: 2.1.12 + lefthook-darwin-x64: 2.1.12 + lefthook-freebsd-arm64: 2.1.12 + lefthook-freebsd-x64: 2.1.12 + lefthook-linux-arm64: 2.1.12 + lefthook-linux-x64: 2.1.12 + lefthook-openbsd-arm64: 2.1.12 + lefthook-openbsd-x64: 2.1.12 + lefthook-windows-arm64: 2.1.12 + lefthook-windows-x64: 2.1.12 lightningcss-android-arm64@1.32.0: optional: true @@ -2199,12 +2199,12 @@ snapshots: magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 - magicast@0.5.3: + magicast@0.5.4: dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 source-map-js: 1.2.1 make-dir@4.0.0: @@ -2439,29 +2439,29 @@ snapshots: obug@2.1.4: {} - oxfmt@0.62.0: + oxfmt@0.65.0: dependencies: tinypool: 2.1.0 optionalDependencies: - '@oxfmt/binding-android-arm-eabi': 0.62.0 - '@oxfmt/binding-android-arm64': 0.62.0 - '@oxfmt/binding-darwin-arm64': 0.62.0 - '@oxfmt/binding-darwin-x64': 0.62.0 - '@oxfmt/binding-freebsd-x64': 0.62.0 - '@oxfmt/binding-linux-arm-gnueabihf': 0.62.0 - '@oxfmt/binding-linux-arm-musleabihf': 0.62.0 - '@oxfmt/binding-linux-arm64-gnu': 0.62.0 - '@oxfmt/binding-linux-arm64-musl': 0.62.0 - '@oxfmt/binding-linux-ppc64-gnu': 0.62.0 - '@oxfmt/binding-linux-riscv64-gnu': 0.62.0 - '@oxfmt/binding-linux-riscv64-musl': 0.62.0 - '@oxfmt/binding-linux-s390x-gnu': 0.62.0 - '@oxfmt/binding-linux-x64-gnu': 0.62.0 - '@oxfmt/binding-linux-x64-musl': 0.62.0 - '@oxfmt/binding-openharmony-arm64': 0.62.0 - '@oxfmt/binding-win32-arm64-msvc': 0.62.0 - '@oxfmt/binding-win32-ia32-msvc': 0.62.0 - '@oxfmt/binding-win32-x64-msvc': 0.62.0 + '@oxfmt/binding-android-arm-eabi': 0.65.0 + '@oxfmt/binding-android-arm64': 0.65.0 + '@oxfmt/binding-darwin-arm64': 0.65.0 + '@oxfmt/binding-darwin-x64': 0.65.0 + '@oxfmt/binding-freebsd-x64': 0.65.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.65.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.65.0 + '@oxfmt/binding-linux-arm64-gnu': 0.65.0 + '@oxfmt/binding-linux-arm64-musl': 0.65.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.65.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.65.0 + '@oxfmt/binding-linux-riscv64-musl': 0.65.0 + '@oxfmt/binding-linux-s390x-gnu': 0.65.0 + '@oxfmt/binding-linux-x64-gnu': 0.65.0 + '@oxfmt/binding-linux-x64-musl': 0.65.0 + '@oxfmt/binding-openharmony-arm64': 0.65.0 + '@oxfmt/binding-win32-arm64-msvc': 0.65.0 + '@oxfmt/binding-win32-ia32-msvc': 0.65.0 + '@oxfmt/binding-win32-x64-msvc': 0.65.0 oxlint-tsgolint@7.0.2001: optionalDependencies: @@ -2472,27 +2472,27 @@ snapshots: '@oxlint-tsgolint/win32-arm64': 7.0.2001 '@oxlint-tsgolint/win32-x64': 7.0.2001 - oxlint@1.77.0(oxlint-tsgolint@7.0.2001): + oxlint@1.80.0(oxlint-tsgolint@7.0.2001): optionalDependencies: - '@oxlint/binding-android-arm-eabi': 1.77.0 - '@oxlint/binding-android-arm64': 1.77.0 - '@oxlint/binding-darwin-arm64': 1.77.0 - '@oxlint/binding-darwin-x64': 1.77.0 - '@oxlint/binding-freebsd-x64': 1.77.0 - '@oxlint/binding-linux-arm-gnueabihf': 1.77.0 - '@oxlint/binding-linux-arm-musleabihf': 1.77.0 - '@oxlint/binding-linux-arm64-gnu': 1.77.0 - '@oxlint/binding-linux-arm64-musl': 1.77.0 - '@oxlint/binding-linux-ppc64-gnu': 1.77.0 - '@oxlint/binding-linux-riscv64-gnu': 1.77.0 - '@oxlint/binding-linux-riscv64-musl': 1.77.0 - '@oxlint/binding-linux-s390x-gnu': 1.77.0 - '@oxlint/binding-linux-x64-gnu': 1.77.0 - '@oxlint/binding-linux-x64-musl': 1.77.0 - '@oxlint/binding-openharmony-arm64': 1.77.0 - '@oxlint/binding-win32-arm64-msvc': 1.77.0 - '@oxlint/binding-win32-ia32-msvc': 1.77.0 - '@oxlint/binding-win32-x64-msvc': 1.77.0 + '@oxlint/binding-android-arm-eabi': 1.80.0 + '@oxlint/binding-android-arm64': 1.80.0 + '@oxlint/binding-darwin-arm64': 1.80.0 + '@oxlint/binding-darwin-x64': 1.80.0 + '@oxlint/binding-freebsd-x64': 1.80.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.80.0 + '@oxlint/binding-linux-arm-musleabihf': 1.80.0 + '@oxlint/binding-linux-arm64-gnu': 1.80.0 + '@oxlint/binding-linux-arm64-musl': 1.80.0 + '@oxlint/binding-linux-ppc64-gnu': 1.80.0 + '@oxlint/binding-linux-riscv64-gnu': 1.80.0 + '@oxlint/binding-linux-riscv64-musl': 1.80.0 + '@oxlint/binding-linux-s390x-gnu': 1.80.0 + '@oxlint/binding-linux-x64-gnu': 1.80.0 + '@oxlint/binding-linux-x64-musl': 1.80.0 + '@oxlint/binding-openharmony-arm64': 1.80.0 + '@oxlint/binding-win32-arm64-msvc': 1.80.0 + '@oxlint/binding-win32-ia32-msvc': 1.80.0 + '@oxlint/binding-win32-x64-msvc': 1.80.0 oxlint-tsgolint: 7.0.2001 parse-entities@4.0.2: @@ -2511,7 +2511,7 @@ snapshots: picomatch@2.3.2: {} - picomatch@4.0.5: {} + picomatch@4.0.7: {} postcss@8.5.15: dependencies: @@ -2581,16 +2581,16 @@ snapshots: tinybench@2.9.0: {} - tinyexec@1.2.4: {} + tinyexec@1.3.1: {} tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 tinypool@2.1.0: {} - tinyrainbow@3.1.0: {} + tinyrainbow@3.1.1: {} to-regex-range@5.0.1: dependencies: @@ -2629,37 +2629,37 @@ snapshots: vite@8.0.16: dependencies: lightningcss: 1.32.0 - picomatch: 4.0.5 + picomatch: 4.0.7 postcss: 8.5.15 rolldown: 1.0.3 tinyglobby: 0.2.17 optionalDependencies: fsevents: 2.3.3 - vitest@4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.16): + vitest@4.1.11(@vitest/coverage-v8@4.1.11)(vite@8.0.16): dependencies: - '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@8.0.16) - '@vitest/pretty-format': 4.1.10 - '@vitest/runner': 4.1.10 - '@vitest/snapshot': 4.1.10 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 - es-module-lexer: 2.3.1 + '@vitest/expect': 4.1.11 + '@vitest/mocker': 4.1.11(vite@8.0.16) + '@vitest/pretty-format': 4.1.11 + '@vitest/runner': 4.1.11 + '@vitest/snapshot': 4.1.11 + '@vitest/spy': 4.1.11 + '@vitest/utils': 4.1.11 + es-module-lexer: 2.3.2 expect-type: 1.4.0 magic-string: 0.30.21 obug: 2.1.4 pathe: 2.0.3 - picomatch: 4.0.5 + picomatch: 4.0.7 std-env: 4.2.0 tinybench: 2.9.0 - tinyexec: 1.2.4 + tinyexec: 1.3.1 tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 + tinyrainbow: 3.1.1 vite: 8.0.16 why-is-node-running: 2.3.0 optionalDependencies: - '@vitest/coverage-v8': 4.1.10(vitest@4.1.10) + '@vitest/coverage-v8': 4.1.11(vitest@4.1.11) transitivePeerDependencies: - msw From 2eac87264b7c7b6c0bef6dac6dc60d4de3f3c812 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2026 00:14:32 +0000 Subject: [PATCH 2/2] [autofix.ci] apply automated fixes --- scripts/prepare-release.mjs | 109 +++-- src/parser.ts | 72 +-- tests/arbitraries/vers.ts | 422 +++++++++--------- tests/diagnostics.test.ts | 26 +- tests/official-fixtures.test.ts | 8 +- tests/property-based.test.ts | 26 +- tests/resource-and-package.test.ts | 22 +- .../blocked-subpath-typecheck.mjs | 8 +- tests/runtime-smoke/built-package.mjs | 4 +- tests/runtime-smoke/package-artifacts.mjs | 21 +- tests/runtime-smoke/package-name.mjs | 4 +- tests/setup/fast-check.ts | 23 +- tests/types/package-consumer.ts | 84 ++-- 13 files changed, 400 insertions(+), 429 deletions(-) diff --git a/scripts/prepare-release.mjs b/scripts/prepare-release.mjs index 181e2c7..10c3767 100644 --- a/scripts/prepare-release.mjs +++ b/scripts/prepare-release.mjs @@ -6,37 +6,34 @@ import path from "node:path"; import { createInterface } from "node:readline/promises"; import { fileURLToPath } from "node:url"; -const argumentOffset = 2; -const commandSuccess = 0; -const helpExitCode = 0; -const failureExitCode = 1; -const noHeadingFound = -1; -const releaseDatePattern = /^12\d{3}-\d{2}-\d{2}$/; -const optionAssignments = { - "--help": "help", - "--push": "pushTag", - "--skip-checks": "skipChecks", - "--skip-pack": "skipPack", - "--tag": "createTag", - "-h": "help", -}; - -const scriptDirectory = path.dirname(fileURLToPath(import.meta.url)); -const repositoryRoot = path.join(scriptDirectory, ".."); - -const qualityCommands = [ - ["pnpm", ["run", "fmt:check"]], - ["pnpm", ["run", "lint:ts"]], - ["pnpm", ["run", "lint:md"]], - ["pnpm", ["run", "typecheck"]], - ["pnpm", ["run", "test"]], - ["pnpm", ["run", "test:coverage"]], - ["pnpm", ["run", "build"]], - ["pnpm", ["run", "verify:package"]], - ["pnpm", ["run", "smoke:runtime:node"]], -]; - -const options = parseArguments(process.argv.slice(argumentOffset)); +const argumentOffset = 2, + commandSuccess = 0, + helpExitCode = 0, + failureExitCode = 1, + noHeadingFound = -1, + releaseDatePattern = /^12\d{3}-\d{2}-\d{2}$/, + optionAssignments = { + "--help": "help", + "--push": "pushTag", + "--skip-checks": "skipChecks", + "--skip-pack": "skipPack", + "--tag": "createTag", + "-h": "help", + }, + scriptDirectory = path.dirname(fileURLToPath(import.meta.url)), + repositoryRoot = path.join(scriptDirectory, ".."), + qualityCommands = [ + ["pnpm", ["run", "fmt:check"]], + ["pnpm", ["run", "lint:ts"]], + ["pnpm", ["run", "lint:md"]], + ["pnpm", ["run", "typecheck"]], + ["pnpm", ["run", "test"]], + ["pnpm", ["run", "test:coverage"]], + ["pnpm", ["run", "build"]], + ["pnpm", ["run", "verify:package"]], + ["pnpm", ["run", "smoke:runtime:node"]], + ], + options = parseArguments(process.argv.slice(argumentOffset)); if (options.help) { printHelp(); @@ -59,8 +56,8 @@ async function main(currentOptions) { runQualityChecks(); } - const packSummary = currentOptions.skipPack ? undefined : inspectPackageContents(); - const notesPath = writeReleaseNotes(release.tagName, release.notes); + const packSummary = currentOptions.skipPack ? undefined : inspectPackageContents(), + notesPath = writeReleaseNotes(release.tagName, release.notes); printPreparationSummary(release.tagName, notesPath, packSummary); await maybeCreateTag( @@ -71,9 +68,9 @@ async function main(currentOptions) { } function readReleaseContext() { - const version = readPackageVersion(); - const tagName = `v${version}`; - const changelog = readFileSync("CHANGELOG.md", "utf8"); + const version = readPackageVersion(), + tagName = `v${version}`, + changelog = readFileSync("CHANGELOG.md", "utf8"); assertCleanWorkingTree(); assertCurrentBranchIsMain(); @@ -105,8 +102,8 @@ async function maybeCreateTag(tagName, tagAnnotation, currentOptions) { return; } - const annotationPath = writeTagAnnotation(tagName, tagAnnotation); - const finalAnnotation = await reviewTagAnnotation(annotationPath); + const annotationPath = writeTagAnnotation(tagName, tagAnnotation), + finalAnnotation = await reviewTagAnnotation(annotationPath); writeFileSync(annotationPath, finalAnnotation, "utf8"); runCommand("git", ["tag", "-s", "-a", tagName, "-F", annotationPath]); @@ -149,9 +146,9 @@ async function shouldEditTagAnnotation() { try { const answer = await readline.question( - "\nEdit tag annotation before creating the signed tag? [y/N] ", - ); - const normalizedAnswer = answer.trim().toLowerCase(); + "\nEdit tag annotation before creating the signed tag? [y/N] ", + ), + normalizedAnswer = answer.trim().toLowerCase(); return normalizedAnswer === "y" || normalizedAnswer === "yes"; } finally { @@ -160,12 +157,12 @@ async function shouldEditTagAnnotation() { } function openEditor(annotationPath) { - const editor = process.env.GIT_EDITOR || process.env.VISUAL || process.env.EDITOR || "vi"; - const [command, ...editorArguments] = parseEditorCommand(editor); - const result = spawnSync(command, [...editorArguments, annotationPath], { - cwd: repositoryRoot, - stdio: "inherit", - }); + const editor = process.env.GIT_EDITOR || process.env.VISUAL || process.env.EDITOR || "vi", + [command, ...editorArguments] = parseEditorCommand(editor), + result = spawnSync(command, [...editorArguments, annotationPath], { + cwd: repositoryRoot, + stdio: "inherit", + }); if (result.error) { throw result.error; @@ -305,9 +302,9 @@ function extractReleaseNotes(changelog, version) { throw new Error(`CHANGELOG.md must contain a Human Era section for ${version}`); } - const sectionStart = headingMatch.index + headingMatch.text.length; - const sectionBody = releaseSectionBody(changelog, sectionStart); - const notes = sectionBody.trim(); + const sectionStart = headingMatch.index + headingMatch.text.length, + sectionBody = releaseSectionBody(changelog, sectionStart), + notes = sectionBody.trim(); assertReleaseNotesNotEmpty(notes, version); @@ -342,8 +339,8 @@ function assertReleaseNotesNotEmpty(notes, version) { } function releaseSectionBody(changelog, sectionStart) { - const remainingChangelog = changelog.slice(sectionStart); - const sectionEndIndex = firstSectionTerminatorIndex(remainingChangelog); + const remainingChangelog = changelog.slice(sectionStart), + sectionEndIndex = firstSectionTerminatorIndex(remainingChangelog); if (sectionEndIndex === noHeadingFound) { return remainingChangelog; @@ -353,8 +350,8 @@ function releaseSectionBody(changelog, sectionStart) { } function firstSectionTerminatorIndex(markdown) { - const nextHeadingIndex = markdown.search(/^## /m); - const linkReferenceIndex = markdown.search(/^\[[^\]]+\]: /m); + const nextHeadingIndex = markdown.search(/^## /m), + linkReferenceIndex = markdown.search(/^\[[^\]]+\]: /m); if (nextHeadingIndex === noHeadingFound) { return linkReferenceIndex; @@ -382,8 +379,8 @@ function runQualityChecks() { } function inspectPackageContents() { - const output = captureCommand("pnpm", ["pack", "--json", "--dry-run"], { inheritStderr: true }); - const packResult = JSON.parse(output); + const output = captureCommand("pnpm", ["pack", "--json", "--dry-run"], { inheritStderr: true }), + packResult = JSON.parse(output); return { entryCount: packResult.files.length, diff --git a/src/parser.ts b/src/parser.ts index 3c60fb1..edd9fe5 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -8,36 +8,36 @@ import type { VersVersionComparator, } from "./types.ts"; -const MAX_INPUT_LENGTH = 1024; -const MAX_ISSUES = 16; -const SCHEME = "vers"; -const SCHEME_PREFIX = "vers:"; -const ASCII_TAB = 9; -const ASCII_LINE_FEED = 10; -const ASCII_VERTICAL_TAB = 11; -const ASCII_FORM_FEED = 12; -const ASCII_CARRIAGE_RETURN = 13; -const ASCII_SPACE = 32; -const ASCII_PERCENT = 37; -const LOWERCASE_A = 97; -const LOWERCASE_F = 102; -const LOWERCASE_Z = 122; -const UPPERCASE_A = 65; -const UPPERCASE_F = 70; -const UPPERCASE_Z = 90; -const DIGIT_ZERO = 48; -const DIGIT_NINE = 57; -const ASCII_DASH = 45; -const ASCII_DOT = 46; -const ASCII_UNDERSCORE = 95; -const ASCII_TILDE = 126; -const HEX_RADIX = 16; -const HEX_ESCAPE_WIDTH = 2; -const ESCAPE_WIDTH = 3; -const FIRST_INDEX = 0; -const NOT_FOUND = -1; -const FIRST_ESCAPE_HEX_INDEX = 1; -const SECOND_ESCAPE_HEX_INDEX = 2; +const MAX_INPUT_LENGTH = 1024, + MAX_ISSUES = 16, + SCHEME = "vers", + SCHEME_PREFIX = "vers:", + ASCII_TAB = 9, + ASCII_LINE_FEED = 10, + ASCII_VERTICAL_TAB = 11, + ASCII_FORM_FEED = 12, + ASCII_CARRIAGE_RETURN = 13, + ASCII_SPACE = 32, + ASCII_PERCENT = 37, + LOWERCASE_A = 97, + LOWERCASE_F = 102, + LOWERCASE_Z = 122, + UPPERCASE_A = 65, + UPPERCASE_F = 70, + UPPERCASE_Z = 90, + DIGIT_ZERO = 48, + DIGIT_NINE = 57, + ASCII_DASH = 45, + ASCII_DOT = 46, + ASCII_UNDERSCORE = 95, + ASCII_TILDE = 126, + HEX_RADIX = 16, + HEX_ESCAPE_WIDTH = 2, + ESCAPE_WIDTH = 3, + FIRST_INDEX = 0, + NOT_FOUND = -1, + FIRST_ESCAPE_HEX_INDEX = 1, + SECOND_ESCAPE_HEX_INDEX = 2; interface ParseSuccess { ok: true; @@ -181,8 +181,8 @@ class Parser { } private static compareIssues(left: VersIssue, right: VersIssue): number { - const leftStart = left.span?.start ?? Number.POSITIVE_INFINITY; - const rightStart = right.span?.start ?? Number.POSITIVE_INFINITY; + const leftStart = left.span?.start ?? Number.POSITIVE_INFINITY, + rightStart = right.span?.start ?? Number.POSITIVE_INFINITY; if (leftStart !== rightStart) { return leftStart - rightStart; @@ -353,10 +353,10 @@ class Parser { } #addTypeIssue(type: string, offset: number, index: number): void { - const codeUnit = type.charCodeAt(index); - const code = Parser.isUppercaseLetter(codeUnit) - ? "syntax.invalid_type_case" - : "lexical.invalid_character"; + const codeUnit = type.charCodeAt(index), + code = Parser.isUppercaseLetter(codeUnit) + ? "syntax.invalid_type_case" + : "lexical.invalid_character"; this.#add({ code, span: { end: offset + index + 1, start: offset + index } }); } diff --git a/tests/arbitraries/vers.ts b/tests/arbitraries/vers.ts index b4f1ae9..eea5d95 100644 --- a/tests/arbitraries/vers.ts +++ b/tests/arbitraries/vers.ts @@ -10,71 +10,70 @@ import { uniqueArray, } from "fast-check"; -const MAX_INPUT_LENGTH = 1024; -const MAX_ISSUES = 16; -const MIN_CONSTRAINTS = 1; -const MAX_CONSTRAINTS = 12; -const MIN_VERSIONS = 1; -const MAX_VERSIONS = 8; -const MIN_VERSION_LENGTH = 1; -const MAX_VERSION_LENGTH = 64; -const MAX_TYPE_REST_LENGTH = 24; -const ISSUE_CAP_MIN_MULTIPLIER = 2; -const ISSUE_CAP_MAX_MULTIPLIER = 2; -const OVER_MAX_EXTRA = 1; -const ZERO_INDEX = 0; -const BINARY_BASE = 2; -const MIXED_VALID_WEIGHT = 3; -const MIXED_BROAD_WEIGHT = 1; -const MIXED_OVER_MAX_WEIGHT = 1; -const ANY_BROAD_WEIGHT = 2; -const ANY_VALID_WEIGHT = 1; -const STAR_WEIGHT = 1; -const BARE_VERSION_WEIGHT = 4; -const COMPARATOR_VERSION_WEIGHT = 4; -const HEX_RADIX = 16; -const PERCENT_ESCAPE_LENGTH = 2; -const CODE_POINT_MIN = 0; -const CODE_POINT_STEP = 1; -const UTF8_ONE_BYTE_MAX = 127; -const UTF8_TWO_BYTE_MAX = 2047; -const UTF8_THREE_BYTE_MAX = 65_535; -const UTF8_FOUR_BYTE_MAX = 1_114_111; -const UTF8_TWO_BYTE_PREFIX = 192; -const UTF8_THREE_BYTE_PREFIX = 224; -const UTF8_FOUR_BYTE_PREFIX = 240; -const UTF8_CONTINUATION_PREFIX = 128; -const UTF8_CONTINUATION_MODULO = 64; -const UTF8_TWO_BYTE_SHIFT = 6; -const UTF8_THREE_BYTE_FIRST_SHIFT = 12; -const UTF8_FOUR_BYTE_FIRST_SHIFT = 18; -const UTF8_FOUR_BYTE_SECOND_SHIFT = 12; -const SURROGATE_START = 55_296; -const SURROGATE_END = 57_343; -const BEFORE_SURROGATE_END = SURROGATE_START - CODE_POINT_STEP; -const AFTER_SURROGATE_START = SURROGATE_END + CODE_POINT_STEP; - -const LOWER_ALPHA = "abcdefghijklmnopqrstuvwxyz"; -const DIGITS = "0123456789"; -const TYPE_REST_CHARS = `${LOWER_ALPHA}${DIGITS}.-`; -const UNRESERVED = `${LOWER_ALPHA}ABCDEFGHIJKLMNOPQRSTUVWXYZ${DIGITS}-._~`; -const COMPARATORS = ["!=", "<", "<=", ">", ">=", "="] as const; -const NON_EQUALITY_COMPARATORS = COMPARATORS.filter((comparator) => comparator !== "="); -const NO_COMPARATOR = ""; -const UPPERCASE_PERCENT_FIXTURES = [ - { canonicalVersion: "%E2%82%AC", decodedVersion: "€", encodedVersion: "%e2%82%ac" }, - { canonicalVersion: "%ED%95%9C", decodedVersion: "한", encodedVersion: "%ed%95%9c" }, - { canonicalVersion: "%F0%9F%99%88", decodedVersion: "🙈", encodedVersion: "%f0%9f%99%88" }, -] as const; -const RESERVED_PERCENT_FIXTURES = [ - { canonicalVersion: "%21", decodedVersion: "!" }, - { canonicalVersion: "%27", decodedVersion: "'" }, - { canonicalVersion: "%28", decodedVersion: "(" }, - { canonicalVersion: "%29", decodedVersion: ")" }, - { canonicalVersion: "%2A", decodedVersion: "*" }, -] as const; -const INVALID_PERCENT_ENCODINGS = ["%", "%0", "%xz", "abc%q0"] as const; -const INVALID_UTF8_ENCODINGS = ["%C3%28", "%E2%28%A1", "%F0%28%8C%BC"] as const; +const MAX_INPUT_LENGTH = 1024, + MAX_ISSUES = 16, + MIN_CONSTRAINTS = 1, + MAX_CONSTRAINTS = 12, + MIN_VERSIONS = 1, + MAX_VERSIONS = 8, + MIN_VERSION_LENGTH = 1, + MAX_VERSION_LENGTH = 64, + MAX_TYPE_REST_LENGTH = 24, + ISSUE_CAP_MIN_MULTIPLIER = 2, + ISSUE_CAP_MAX_MULTIPLIER = 2, + OVER_MAX_EXTRA = 1, + ZERO_INDEX = 0, + BINARY_BASE = 2, + MIXED_VALID_WEIGHT = 3, + MIXED_BROAD_WEIGHT = 1, + MIXED_OVER_MAX_WEIGHT = 1, + ANY_BROAD_WEIGHT = 2, + ANY_VALID_WEIGHT = 1, + STAR_WEIGHT = 1, + BARE_VERSION_WEIGHT = 4, + COMPARATOR_VERSION_WEIGHT = 4, + HEX_RADIX = 16, + PERCENT_ESCAPE_LENGTH = 2, + CODE_POINT_MIN = 0, + CODE_POINT_STEP = 1, + UTF8_ONE_BYTE_MAX = 127, + UTF8_TWO_BYTE_MAX = 2047, + UTF8_THREE_BYTE_MAX = 65_535, + UTF8_FOUR_BYTE_MAX = 1_114_111, + UTF8_TWO_BYTE_PREFIX = 192, + UTF8_THREE_BYTE_PREFIX = 224, + UTF8_FOUR_BYTE_PREFIX = 240, + UTF8_CONTINUATION_PREFIX = 128, + UTF8_CONTINUATION_MODULO = 64, + UTF8_TWO_BYTE_SHIFT = 6, + UTF8_THREE_BYTE_FIRST_SHIFT = 12, + UTF8_FOUR_BYTE_FIRST_SHIFT = 18, + UTF8_FOUR_BYTE_SECOND_SHIFT = 12, + SURROGATE_START = 55_296, + SURROGATE_END = 57_343, + BEFORE_SURROGATE_END = SURROGATE_START - CODE_POINT_STEP, + AFTER_SURROGATE_START = SURROGATE_END + CODE_POINT_STEP, + LOWER_ALPHA = "abcdefghijklmnopqrstuvwxyz", + DIGITS = "0123456789", + TYPE_REST_CHARS = `${LOWER_ALPHA}${DIGITS}.-`, + UNRESERVED = `${LOWER_ALPHA}ABCDEFGHIJKLMNOPQRSTUVWXYZ${DIGITS}-._~`, + COMPARATORS = ["!=", "<", "<=", ">", ">=", "="] as const, + NON_EQUALITY_COMPARATORS = COMPARATORS.filter((comparator) => comparator !== "="), + NO_COMPARATOR = "", + UPPERCASE_PERCENT_FIXTURES = [ + { canonicalVersion: "%E2%82%AC", decodedVersion: "€", encodedVersion: "%e2%82%ac" }, + { canonicalVersion: "%ED%95%9C", decodedVersion: "한", encodedVersion: "%ed%95%9c" }, + { canonicalVersion: "%F0%9F%99%88", decodedVersion: "🙈", encodedVersion: "%f0%9f%99%88" }, + ] as const, + RESERVED_PERCENT_FIXTURES = [ + { canonicalVersion: "%21", decodedVersion: "!" }, + { canonicalVersion: "%27", decodedVersion: "'" }, + { canonicalVersion: "%28", decodedVersion: "(" }, + { canonicalVersion: "%29", decodedVersion: ")" }, + { canonicalVersion: "%2A", decodedVersion: "*" }, + ] as const, + INVALID_PERCENT_ENCODINGS = ["%", "%0", "%xz", "abc%q0"] as const, + INVALID_UTF8_ENCODINGS = ["%C3%28", "%E2%28%A1", "%F0%28%8C%BC"] as const; function stringChars(input: string): string[] { const chars: string[] = []; @@ -136,124 +135,107 @@ function encodeCodePointUtf8Bytes(scalar: number): number[] { : encodeFourByteScalar(scalar); } -const typeFirstChar = constantFrom(...stringChars(LOWER_ALPHA)); -const typeRestChar = constantFrom(...stringChars(TYPE_REST_CHARS)); -const unreservedChar = constantFrom(...stringChars(UNRESERVED)); -const comparatorChar = constantFrom(...COMPARATORS); -const nonEqualityComparatorChar = constantFrom(...NON_EQUALITY_COMPARATORS); -const unicodeScalarChar = oneof( - integer({ max: BEFORE_SURROGATE_END, min: CODE_POINT_MIN }), - integer({ max: UTF8_FOUR_BYTE_MAX, min: AFTER_SURROGATE_START }), -).map((codePoint) => String.fromCodePoint(codePoint)); - -const typeArbitrary = tuple( - typeFirstChar, - array(typeRestChar, { maxLength: MAX_TYPE_REST_LENGTH }), -).map(([first, rest]) => `${first}${rest.join("")}`); - -const bareVersionArbitrary = array(unreservedChar, { - maxLength: MAX_VERSION_LENGTH, - minLength: MIN_VERSION_LENGTH, -}).map((chars) => chars.join("")); - -const comparatorVersionConstraintArbitrary = tuple(comparatorChar, bareVersionArbitrary).map( - ([comparator, version]) => `${comparator}${version}`, -); - -const constraintArbitrary = oneof( - { arbitrary: constant("*"), weight: STAR_WEIGHT }, - { arbitrary: bareVersionArbitrary, weight: BARE_VERSION_WEIGHT }, - { arbitrary: comparatorVersionConstraintArbitrary, weight: COMPARATOR_VERSION_WEIGHT }, -); - -const constraintsListArbitrary = array(constraintArbitrary, { - maxLength: MAX_CONSTRAINTS, - minLength: MIN_CONSTRAINTS, -}).map((constraints) => constraints.join("|")); - -const validAsciiDeclarationArbitrary = tuple(typeArbitrary, constraintsListArbitrary).map( - ([type, constraints]) => `vers:${type}/${constraints}`, -); - -const validNonDuplicateDeclarationArbitrary = tuple( - typeArbitrary, - uniqueArray(bareVersionArbitrary, { - maxLength: MAX_VERSIONS, - minLength: MIN_VERSIONS, - selector: (version) => version, +const typeFirstChar = constantFrom(...stringChars(LOWER_ALPHA)), + typeRestChar = constantFrom(...stringChars(TYPE_REST_CHARS)), + unreservedChar = constantFrom(...stringChars(UNRESERVED)), + comparatorChar = constantFrom(...COMPARATORS), + nonEqualityComparatorChar = constantFrom(...NON_EQUALITY_COMPARATORS), + unicodeScalarChar = oneof( + integer({ max: BEFORE_SURROGATE_END, min: CODE_POINT_MIN }), + integer({ max: UTF8_FOUR_BYTE_MAX, min: AFTER_SURROGATE_START }), + ).map((codePoint) => String.fromCodePoint(codePoint)), + typeArbitrary = tuple( + typeFirstChar, + array(typeRestChar, { maxLength: MAX_TYPE_REST_LENGTH }), + ).map(([first, rest]) => `${first}${rest.join("")}`), + bareVersionArbitrary = array(unreservedChar, { + maxLength: MAX_VERSION_LENGTH, + minLength: MIN_VERSION_LENGTH, + }).map((chars) => chars.join("")), + comparatorVersionConstraintArbitrary = tuple(comparatorChar, bareVersionArbitrary).map( + ([comparator, version]) => `${comparator}${version}`, + ), + constraintArbitrary = oneof( + { arbitrary: constant("*"), weight: STAR_WEIGHT }, + { arbitrary: bareVersionArbitrary, weight: BARE_VERSION_WEIGHT }, + { arbitrary: comparatorVersionConstraintArbitrary, weight: COMPARATOR_VERSION_WEIGHT }, + ), + constraintsListArbitrary = array(constraintArbitrary, { + maxLength: MAX_CONSTRAINTS, + minLength: MIN_CONSTRAINTS, + }).map((constraints) => constraints.join("|")), + validAsciiDeclarationArbitrary = tuple(typeArbitrary, constraintsListArbitrary).map( + ([type, constraints]) => `vers:${type}/${constraints}`, + ), + validNonDuplicateDeclarationArbitrary = tuple( + typeArbitrary, + uniqueArray(bareVersionArbitrary, { + maxLength: MAX_VERSIONS, + minLength: MIN_VERSIONS, + selector: (version) => version, + }), + ).map(([type, versions]) => `vers:${type}/${versions.join("|")}`), + validOrderedConstraintDeclarationArbitrary = tuple( + typeArbitrary, + uniqueArray(tuple(nonEqualityComparatorChar, bareVersionArbitrary), { + maxLength: MAX_VERSIONS, + minLength: MIN_VERSIONS, + selector: ([, version]) => version, + }), + ).map(([type, pairs]) => { + const constraints = pairs.map(([comparator, version]) => `${comparator}${version}`); + + return { + comparators: pairs.map(([comparator]) => comparator), + input: `vers:${type}/${constraints.join("|")}`, + versions: pairs.map(([, version]) => version), + }; }), -).map(([type, versions]) => `vers:${type}/${versions.join("|")}`); - -const validOrderedConstraintDeclarationArbitrary = tuple( - typeArbitrary, - uniqueArray(tuple(nonEqualityComparatorChar, bareVersionArbitrary), { - maxLength: MAX_VERSIONS, - minLength: MIN_VERSIONS, - selector: ([, version]) => version, + explicitEqualityDeclarationArbitrary = tuple(typeArbitrary, bareVersionArbitrary).map( + ([type, version]) => `vers:${type}/=${version}`, + ), + starDeclarationArbitrary = typeArbitrary.map((type) => `vers:${type}/*`), + uppercaseTypeDeclarationArbitrary = tuple( + stringMatching(/^[A-Z][A-Za-z0-9.-]{0,24}$/), + bareVersionArbitrary, + ).map(([type, version]) => `vers:${type}/${version}`), + overMaxInputArbitrary = stringMatching(/^[\x20-\x7E]+$/).map((suffix) => { + const prefix = "vers:generic/", + padding = "a".repeat( + Math.max(ZERO_INDEX, MAX_INPUT_LENGTH + OVER_MAX_EXTRA - prefix.length - suffix.length), + ), + candidate = `${prefix}${padding}${suffix}`; + + return candidate.length > MAX_INPUT_LENGTH + ? candidate + : `${candidate}${"a".repeat(MAX_INPUT_LENGTH + OVER_MAX_EXTRA - candidate.length)}`; }), -).map(([type, pairs]) => { - const constraints = pairs.map(([comparator, version]) => `${comparator}${version}`); - - return { - comparators: pairs.map(([comparator]) => comparator), - input: `vers:${type}/${constraints.join("|")}`, - versions: pairs.map(([, version]) => version), - }; -}); + exactMaxInputArbitrary = tuple( + typeArbitrary, + oneof(constant(NO_COMPARATOR), nonEqualityComparatorChar), + ).map(([type, comparator]) => { + const prefix = `vers:${type}/${comparator}`; -const explicitEqualityDeclarationArbitrary = tuple(typeArbitrary, bareVersionArbitrary).map( - ([type, version]) => `vers:${type}/=${version}`, -); - -const starDeclarationArbitrary = typeArbitrary.map((type) => `vers:${type}/*`); - -const uppercaseTypeDeclarationArbitrary = tuple( - stringMatching(/^[A-Z][A-Za-z0-9.-]{0,24}$/), - bareVersionArbitrary, -).map(([type, version]) => `vers:${type}/${version}`); - -const overMaxInputArbitrary = stringMatching(/^[\x20-\x7E]+$/).map((suffix) => { - const prefix = "vers:generic/"; - const padding = "a".repeat( - Math.max(ZERO_INDEX, MAX_INPUT_LENGTH + OVER_MAX_EXTRA - prefix.length - suffix.length), + return `${prefix}${"a".repeat(MAX_INPUT_LENGTH - prefix.length)}`; + }), + issueCapPressureInputArbitrary = integer({ + max: MAX_ISSUES * ISSUE_CAP_MAX_MULTIPLIER, + min: MAX_ISSUES + ISSUE_CAP_MIN_MULTIPLIER, + }).map((pipeCount) => `vers:generic/${"|".repeat(pipeCount)}`), + broadInputArbitrary = stringMatching(/^[\x20-\x7E]{0,128}$/), + broadUnicodeInputArbitrary = string({ + maxLength: MAX_INPUT_LENGTH + OVER_MAX_EXTRA, + size: "max", + }), + mixedVersInputArbitrary = oneof( + { arbitrary: validAsciiDeclarationArbitrary, weight: MIXED_VALID_WEIGHT }, + { arbitrary: broadInputArbitrary, weight: MIXED_BROAD_WEIGHT }, + { arbitrary: overMaxInputArbitrary, weight: MIXED_OVER_MAX_WEIGHT }, + ), + anyVersInputArbitrary = oneof( + { arbitrary: broadInputArbitrary, weight: ANY_BROAD_WEIGHT }, + { arbitrary: validAsciiDeclarationArbitrary, weight: ANY_VALID_WEIGHT }, ); - const candidate = `${prefix}${padding}${suffix}`; - - return candidate.length > MAX_INPUT_LENGTH - ? candidate - : `${candidate}${"a".repeat(MAX_INPUT_LENGTH + OVER_MAX_EXTRA - candidate.length)}`; -}); - -const exactMaxInputArbitrary = tuple( - typeArbitrary, - oneof(constant(NO_COMPARATOR), nonEqualityComparatorChar), -).map(([type, comparator]) => { - const prefix = `vers:${type}/${comparator}`; - - return `${prefix}${"a".repeat(MAX_INPUT_LENGTH - prefix.length)}`; -}); - -const issueCapPressureInputArbitrary = integer({ - max: MAX_ISSUES * ISSUE_CAP_MAX_MULTIPLIER, - min: MAX_ISSUES + ISSUE_CAP_MIN_MULTIPLIER, -}).map((pipeCount) => `vers:generic/${"|".repeat(pipeCount)}`); - -const broadInputArbitrary = stringMatching(/^[\x20-\x7E]{0,128}$/); -const broadUnicodeInputArbitrary = string({ - maxLength: MAX_INPUT_LENGTH + OVER_MAX_EXTRA, - size: "max", -}); - -const mixedVersInputArbitrary = oneof( - { arbitrary: validAsciiDeclarationArbitrary, weight: MIXED_VALID_WEIGHT }, - { arbitrary: broadInputArbitrary, weight: MIXED_BROAD_WEIGHT }, - { arbitrary: overMaxInputArbitrary, weight: MIXED_OVER_MAX_WEIGHT }, -); - -const anyVersInputArbitrary = oneof( - { arbitrary: broadInputArbitrary, weight: ANY_BROAD_WEIGHT }, - { arbitrary: validAsciiDeclarationArbitrary, weight: ANY_VALID_WEIGHT }, -); function encodeUtf8Percent(input: string): string { const encoded: string[] = []; @@ -270,52 +252,46 @@ function encodeUtf8Percent(input: string): string { } const unicodeScalarVersionArbitrary = array(unicodeScalarChar, { - maxLength: MAX_VERSIONS, - minLength: MIN_VERSIONS, -}).map((chars) => chars.join("")); - -const percentEncodedDeclarationArbitrary = tuple(typeArbitrary, bareVersionArbitrary).map( - ([type, version]) => ({ + maxLength: MAX_VERSIONS, + minLength: MIN_VERSIONS, + }).map((chars) => chars.join("")), + percentEncodedDeclarationArbitrary = tuple(typeArbitrary, bareVersionArbitrary).map( + ([type, version]) => ({ + decodedVersion: version, + input: `vers:${type}/${encodeUtf8Percent(version)}`, + }), + ), + percentEncodedUnicodeDeclarationArbitrary = tuple( + typeArbitrary, + unicodeScalarVersionArbitrary, + ).map(([type, version]) => ({ decodedVersion: version, input: `vers:${type}/${encodeUtf8Percent(version)}`, - }), -); - -const percentEncodedUnicodeDeclarationArbitrary = tuple( - typeArbitrary, - unicodeScalarVersionArbitrary, -).map(([type, version]) => ({ - decodedVersion: version, - input: `vers:${type}/${encodeUtf8Percent(version)}`, -})); - -const uppercasePercentEncodedDeclarationArbitrary = tuple( - typeArbitrary, - constantFrom(...UPPERCASE_PERCENT_FIXTURES), -).map(([type, fixture]) => ({ - canonical: `vers:${type}/${fixture.canonicalVersion}`, - decodedVersion: fixture.decodedVersion, - input: `vers:${type}/${fixture.encodedVersion}`, -})); - -const reservedPercentEncodedDeclarationArbitrary = tuple( - typeArbitrary, - constantFrom(...RESERVED_PERCENT_FIXTURES), -).map(([type, fixture]) => ({ - canonical: `vers:${type}/${fixture.canonicalVersion}`, - decodedVersion: fixture.decodedVersion, - input: `vers:${type}/${fixture.canonicalVersion}`, -})); - -const invalidPercentEncodingDeclarationArbitrary = tuple( - typeArbitrary, - constantFrom(...INVALID_PERCENT_ENCODINGS), -).map(([type, version]) => `vers:${type}/${version}`); - -const invalidUtf8DeclarationArbitrary = tuple( - typeArbitrary, - constantFrom(...INVALID_UTF8_ENCODINGS), -).map(([type, version]) => `vers:${type}/${version}`); + })), + uppercasePercentEncodedDeclarationArbitrary = tuple( + typeArbitrary, + constantFrom(...UPPERCASE_PERCENT_FIXTURES), + ).map(([type, fixture]) => ({ + canonical: `vers:${type}/${fixture.canonicalVersion}`, + decodedVersion: fixture.decodedVersion, + input: `vers:${type}/${fixture.encodedVersion}`, + })), + reservedPercentEncodedDeclarationArbitrary = tuple( + typeArbitrary, + constantFrom(...RESERVED_PERCENT_FIXTURES), + ).map(([type, fixture]) => ({ + canonical: `vers:${type}/${fixture.canonicalVersion}`, + decodedVersion: fixture.decodedVersion, + input: `vers:${type}/${fixture.canonicalVersion}`, + })), + invalidPercentEncodingDeclarationArbitrary = tuple( + typeArbitrary, + constantFrom(...INVALID_PERCENT_ENCODINGS), + ).map(([type, version]) => `vers:${type}/${version}`), + invalidUtf8DeclarationArbitrary = tuple( + typeArbitrary, + constantFrom(...INVALID_UTF8_ENCODINGS), + ).map(([type, version]) => `vers:${type}/${version}`); export { anyVersInputArbitrary, diff --git a/tests/diagnostics.test.ts b/tests/diagnostics.test.ts index 143316e..d055d62 100644 --- a/tests/diagnostics.test.ts +++ b/tests/diagnostics.test.ts @@ -10,10 +10,10 @@ import type { } from "../src/types.ts"; import diagnosticFixture from "./fixtures/project-diagnostics.json" with { type: "json" }; -const MAX_INPUT_LENGTH = 1024; -const OVER_MAX_INPUT_LENGTH = 1025; -const ISSUE_CAP_EXCEEDING_PIPE_COUNT = 18; -const EMPTY_LENGTH = 0; +const MAX_INPUT_LENGTH = 1024, + OVER_MAX_INPUT_LENGTH = 1025, + ISSUE_CAP_EXCEEDING_PIPE_COUNT = 18, + EMPTY_LENGTH = 0; type PublicResult = VersCanonicalizeResult | VersParseResult | VersValidationResult; @@ -140,21 +140,21 @@ describe("project diagnostic fixtures", (): void => { }); it("does not reject inputs at exactly 1024 UTF-16 code units solely for length", (): void => { - const prefix = "vers:generic/"; - const input = `${prefix}${"a".repeat(MAX_INPUT_LENGTH - prefix.length)}`; + const prefix = "vers:generic/", + input = `${prefix}${"a".repeat(MAX_INPUT_LENGTH - prefix.length)}`; expect(input.length).toBe(MAX_INPUT_LENGTH); expect(parseVers(input).ok).toBe(true); }); it.each(fixtures)("applies $id to each declared public operation", (fixture): void => { - const input = inputFor(fixture); - const failures = fixture.operations.map((operation): VersFailure => { - const result = runOperation(operation, input); - assertExpectedFailure(result, fixture.expected); - return result; - }); - const [firstFailure] = failures; + const input = inputFor(fixture), + failures = fixture.operations.map((operation): VersFailure => { + const result = runOperation(operation, input); + assertExpectedFailure(result, fixture.expected); + return result; + }), + [firstFailure] = failures; expect(firstFailure).toBeDefined(); diff --git a/tests/official-fixtures.test.ts b/tests/official-fixtures.test.ts index 7645f4a..5b56dba 100644 --- a/tests/official-fixtures.test.ts +++ b/tests/official-fixtures.test.ts @@ -5,8 +5,8 @@ import type { VersConstraint, VersParseResult, VersVersionComparator } from "../ import upstreamFixture from "./fixtures/upstream/vers_canonical_parse_test.json" with { type: "json" }; import dispositionFixture from "./fixtures/vers-canonical-disposition.json" with { type: "json" }; -const VERSION_CONSTRAINT_TUPLE_LENGTH = 2; -const NON_EMPTY_LENGTH = 0; +const VERSION_CONSTRAINT_TUPLE_LENGTH = 2, + NON_EMPTY_LENGTH = 0; interface DispositionRecord { disposition: string; @@ -40,8 +40,8 @@ interface PublicResults { validated: ReturnType; } -const upstream: UpstreamFixture = upstreamFixture; -const dispositions: DispositionRecord[] = dispositionFixture; +const upstream: UpstreamFixture = upstreamFixture, + dispositions: DispositionRecord[] = dispositionFixture; function findDisposition(testCase: UpstreamCase): DispositionRecord { const disposition = dispositions.find( diff --git a/tests/property-based.test.ts b/tests/property-based.test.ts index a0cb837..f994738 100644 --- a/tests/property-based.test.ts +++ b/tests/property-based.test.ts @@ -23,9 +23,9 @@ import { validOrderedConstraintDeclarationArbitrary, } from "./arbitraries/vers.ts"; -const MAX_INPUT_LENGTH = 1024; -const MAX_ISSUES = 16; -const SINGLE_CONSTRAINT_COUNT = 1; +const MAX_INPUT_LENGTH = 1024, + MAX_ISSUES = 16, + SINGLE_CONSTRAINT_COUNT = 1; interface OrderedConstraintFixture { comparators: readonly string[]; @@ -66,9 +66,9 @@ function assertConstraintAtIndex( return; } - const comparator = fixture.comparators[index]; - const version = fixture.versions[index]; - const constraint = result.value.constraints[index]; + const comparator = fixture.comparators[index], + version = fixture.versions[index], + constraint = result.value.constraints[index]; if (comparator !== undefined && version !== undefined && constraint !== undefined) { expect(constraint).toBeDefined(); @@ -143,8 +143,8 @@ describe("property-based VERS invariants", (): void => { test.prop([anyVersInputArbitrary])( "parseVers and validateVers agree on the success boundary", (input) => { - const parseResult = parseVers(input); - const validateResult = validateVers(input); + const parseResult = parseVers(input), + validateResult = validateVers(input); expect(parseResult.ok).toBe(validateResult.ok); }, @@ -153,9 +153,9 @@ describe("property-based VERS invariants", (): void => { test.prop([broadUnicodeInputArbitrary])( "all public operations accept arbitrary strings without throwing", (input) => { - const parseResult = parseVers(input); - const validateResult = validateVers(input); - const canonicalResult = canonicalizeVers(input); + const parseResult = parseVers(input), + validateResult = validateVers(input), + canonicalResult = canonicalizeVers(input); expect(validateResult.ok).toBe(parseResult.ok); expect(canonicalResult.ok).toBe(parseResult.ok); @@ -169,8 +169,8 @@ describe("property-based VERS invariants", (): void => { test.prop([mixedVersInputArbitrary])( "canonicalizeVers matches parseVers canonical projection", (input) => { - const parseResult = parseVers(input); - const canonicalResult = canonicalizeVers(input); + const parseResult = parseVers(input), + canonicalResult = canonicalizeVers(input); expect(canonicalResult.ok).toBe(parseResult.ok); diff --git a/tests/resource-and-package.test.ts b/tests/resource-and-package.test.ts index dfdd028..7833dee 100644 --- a/tests/resource-and-package.test.ts +++ b/tests/resource-and-package.test.ts @@ -2,26 +2,26 @@ import { describe, expect, it } from "vitest"; import { canonicalizeVers, parseVers, validateVers } from "../src/index.ts"; -const MAX_INPUT_LENGTH = 1024; -const OVER_MAX_INPUT_LENGTH = 1025; -const MAX_ISSUES = 16; -const SINGLE_ISSUE_COUNT = 1; -const ISSUE_CAP_EXCEEDING_PIPE_COUNT = 18; -const EMPTY_LENGTH = 0; +const MAX_INPUT_LENGTH = 1024, + OVER_MAX_INPUT_LENGTH = 1025, + MAX_ISSUES = 16, + SINGLE_ISSUE_COUNT = 1, + ISSUE_CAP_EXCEEDING_PIPE_COUNT = 18, + EMPTY_LENGTH = 0; describe("resource limits", (): void => { it("does not reject inputs at exactly 1024 UTF-16 code units solely for length", (): void => { - const prefix = "vers:generic/"; - const input = `${prefix}${"a".repeat(MAX_INPUT_LENGTH - prefix.length)}`; + const prefix = "vers:generic/", + input = `${prefix}${"a".repeat(MAX_INPUT_LENGTH - prefix.length)}`; expect(input.length).toBe(MAX_INPUT_LENGTH); expect(parseVers(input).ok).toBe(true); }); it("rejects inputs above 1024 UTF-16 code units before normal parsing", (): void => { - const prefix = "vers:generic/"; - const input = `${prefix}${"a".repeat(OVER_MAX_INPUT_LENGTH - prefix.length)}`; - const result = parseVers(input); + const prefix = "vers:generic/", + input = `${prefix}${"a".repeat(OVER_MAX_INPUT_LENGTH - prefix.length)}`, + result = parseVers(input); expect(input.length).toBe(OVER_MAX_INPUT_LENGTH); expect(result.ok).toBe(false); diff --git a/tests/runtime-smoke/blocked-subpath-typecheck.mjs b/tests/runtime-smoke/blocked-subpath-typecheck.mjs index 8f8b6c3..4fdfa63 100644 --- a/tests/runtime-smoke/blocked-subpath-typecheck.mjs +++ b/tests/runtime-smoke/blocked-subpath-typecheck.mjs @@ -4,10 +4,10 @@ import { mkdirSync, rmSync, writeFileSync } from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; -const JSON_INDENT = 2; -const SUCCESS_STATUS = 0; -const repositoryRoot = fileURLToPath(new URL("../..", import.meta.url)); -const workspace = path.join(repositoryRoot, ".temp", "blocked-subpath-typecheck"); +const JSON_INDENT = 2, + SUCCESS_STATUS = 0, + repositoryRoot = fileURLToPath(new URL("../..", import.meta.url)), + workspace = path.join(repositoryRoot, ".temp", "blocked-subpath-typecheck"); rmSync(workspace, { force: true, recursive: true }); mkdirSync(workspace, { recursive: true }); diff --git a/tests/runtime-smoke/built-package.mjs b/tests/runtime-smoke/built-package.mjs index cd13f01..fde58a6 100644 --- a/tests/runtime-smoke/built-package.mjs +++ b/tests/runtime-smoke/built-package.mjs @@ -1,7 +1,7 @@ import { canonicalizeVers, parseVers, validateVers } from "../../dist/index.js"; -const minimumIssueCount = 1; -const runtimeExports = await import("../../dist/index.js"); +const minimumIssueCount = 1, + runtimeExports = await import("../../dist/index.js"); function assert(condition, message) { if (!condition) { diff --git a/tests/runtime-smoke/package-artifacts.mjs b/tests/runtime-smoke/package-artifacts.mjs index b0e0620..063d599 100644 --- a/tests/runtime-smoke/package-artifacts.mjs +++ b/tests/runtime-smoke/package-artifacts.mjs @@ -4,17 +4,16 @@ import { existsSync } from "node:fs"; import packageJson from "../../package.json" with { type: "json" }; const expectedArtifacts = [ - "dist/index.js", - "dist/index.js.map", - "dist/index.d.ts", - "dist/index.d.ts.map", - "dist/parser.js", - "dist/parser.d.ts", - "dist/types.js", - "dist/types.d.ts", -]; - -const expectedPackageFiles = ["dist", "CHANGELOG.md", "LICENSE", "README.md", "README.ko.md"]; + "dist/index.js", + "dist/index.js.map", + "dist/index.d.ts", + "dist/index.d.ts.map", + "dist/parser.js", + "dist/parser.d.ts", + "dist/types.js", + "dist/types.d.ts", + ], + expectedPackageFiles = ["dist", "CHANGELOG.md", "LICENSE", "README.md", "README.ko.md"]; for (const path of expectedArtifacts) { assert(existsSync(path), `${path} must exist after package build`); diff --git a/tests/runtime-smoke/package-name.mjs b/tests/runtime-smoke/package-name.mjs index c5b6781..6c446e0 100644 --- a/tests/runtime-smoke/package-name.mjs +++ b/tests/runtime-smoke/package-name.mjs @@ -2,8 +2,8 @@ import assert from "node:assert/strict"; import { canonicalizeVers, parseVers, validateVers } from "@windlass/vers-js"; -const EMPTY_LENGTH = 0; -const vers = await import("@windlass/vers-js"); +const EMPTY_LENGTH = 0, + vers = await import("@windlass/vers-js"); async function assertBlockedSubpath(specifier) { await assert.rejects( diff --git a/tests/setup/fast-check.ts b/tests/setup/fast-check.ts index a2393df..bf7c383 100644 --- a/tests/setup/fast-check.ts +++ b/tests/setup/fast-check.ts @@ -1,9 +1,9 @@ import { configureGlobal } from "fast-check"; -const DEFAULT_NUM_RUNS = 100; -const CI_NUM_RUNS = 100; -const FUZZ_INTERRUPT_MS = 10_000; -const CI_INTERRUPT_MS = 5000; +const DEFAULT_NUM_RUNS = 100, + CI_NUM_RUNS = 100, + FUZZ_INTERRUPT_MS = 10_000, + CI_INTERRUPT_MS = 5000; declare const process: { readonly env: { @@ -14,8 +14,8 @@ declare const process: { }; }; -const isCi = process.env.CI === "true"; -const isFuzzMode = process.env.VERS_PBT_MODE === "fuzz"; +const isCi = process.env.CI === "true", + isFuzzMode = process.env.VERS_PBT_MODE === "fuzz"; function parseSeed(value: string | undefined): number | undefined { if (value === undefined) { @@ -31,12 +31,11 @@ function parseSeed(value: string | undefined): number | undefined { return seed; } -const seed = parseSeed(process.env.VERS_PBT_SEED); -const path = process.env.VERS_PBT_PATH; - -const seedConfig = seed === undefined ? {} : { seed }; -const pathConfig = path === undefined ? {} : { path }; -const baseConfig = { ...seedConfig, ...pathConfig }; +const seed = parseSeed(process.env.VERS_PBT_SEED), + path = process.env.VERS_PBT_PATH, + seedConfig = seed === undefined ? {} : { seed }, + pathConfig = path === undefined ? {} : { path }, + baseConfig = { ...seedConfig, ...pathConfig }; if (isFuzzMode) { configureGlobal({ diff --git a/tests/types/package-consumer.ts b/tests/types/package-consumer.ts index bfe69ff..2e47906 100644 --- a/tests/types/package-consumer.ts +++ b/tests/types/package-consumer.ts @@ -27,53 +27,53 @@ import type { VersVersionConstraint, } from "@windlass/vers-js"; -const parsed: VersParseResult = parseVers("vers:npm/>=1.0.0|<2.0.0"); -const validated: VersValidationResult = validateVers("vers:npm/>=1.0.0|<2.0.0"); -const canonicalized: VersCanonicalizeResult = canonicalizeVers("vers:npm/=1.0.0"); -const success: VersSuccess = { ok: true, value: true }; -const span: VersSpan = { end: 1, start: 0 }; -const issue: VersIssue = { - code: "syntax.invalid_scheme", - message: "Invalid scheme", - severity: "error", - span, -}; -const diagnostics: VersDiagnosticsMetadata = { maxIssues: 16, truncated: true }; -const metadata: VersFailureMetadata = { diagnostics }; -const failure: VersFailure = { issues: [issue], metadata, ok: false }; -const result: VersResult = failure; -const starConstraint: VersStarConstraint = { comparator: "*", version: null }; -const versionComparator: VersVersionComparator = ">="; -const versionConstraint: VersVersionConstraint = { - comparator: versionComparator, - version: "1.0.0", -}; -const constraint: VersConstraint = versionConstraint; -const range: VersRange = { - canonical: "vers:npm/>=1.0.0", - constraints: [constraint, starConstraint], - scheme: "vers", - type: "npm", -}; -const lexicalCode: VersLexicalIssueCode = "lexical.ascii_whitespace"; -const syntaxCode: VersSyntaxIssueCode = "syntax.invalid_scheme"; -const constraintCode: VersConstraintIssueCode = "constraint.empty_version"; -const canonicalCode: VersCanonicalIssueCode = "canonical.duplicate_version"; -const resourceCode: VersResourceIssueCode = "resource.input_too_long"; -const coreCode: VersCoreIssueCode = lexicalCode; -const issueCode: VersIssueCode = syntaxCode; -const reservedCanonicalCode: VersReservedCanonicalIssueCode = "canonical.non_canonical_order"; -const supportCode: VersSupportIssueCode = "support.unknown_type"; -const reservedCode: VersReservedIssueCode = supportCode; +const parsed: VersParseResult = parseVers("vers:npm/>=1.0.0|<2.0.0"), + validated: VersValidationResult = validateVers("vers:npm/>=1.0.0|<2.0.0"), + canonicalized: VersCanonicalizeResult = canonicalizeVers("vers:npm/=1.0.0"), + success: VersSuccess = { ok: true, value: true }, + span: VersSpan = { end: 1, start: 0 }, + issue: VersIssue = { + code: "syntax.invalid_scheme", + message: "Invalid scheme", + severity: "error", + span, + }, + diagnostics: VersDiagnosticsMetadata = { maxIssues: 16, truncated: true }, + metadata: VersFailureMetadata = { diagnostics }, + failure: VersFailure = { issues: [issue], metadata, ok: false }, + result: VersResult = failure, + starConstraint: VersStarConstraint = { comparator: "*", version: null }, + versionComparator: VersVersionComparator = ">=", + versionConstraint: VersVersionConstraint = { + comparator: versionComparator, + version: "1.0.0", + }, + constraint: VersConstraint = versionConstraint, + range: VersRange = { + canonical: "vers:npm/>=1.0.0", + constraints: [constraint, starConstraint], + scheme: "vers", + type: "npm", + }, + lexicalCode: VersLexicalIssueCode = "lexical.ascii_whitespace", + syntaxCode: VersSyntaxIssueCode = "syntax.invalid_scheme", + constraintCode: VersConstraintIssueCode = "constraint.empty_version", + canonicalCode: VersCanonicalIssueCode = "canonical.duplicate_version", + resourceCode: VersResourceIssueCode = "resource.input_too_long", + coreCode: VersCoreIssueCode = lexicalCode, + issueCode: VersIssueCode = syntaxCode, + reservedCanonicalCode: VersReservedCanonicalIssueCode = "canonical.non_canonical_order", + supportCode: VersSupportIssueCode = "support.unknown_type", + reservedCode: VersReservedIssueCode = supportCode; let consumedCount = 0; if (parsed.ok) { - const consumedRange: VersRange = parsed.value; - const combinedConstraints = [...consumedRange.constraints, ...range.constraints]; + const consumedRange: VersRange = parsed.value, + combinedConstraints = [...consumedRange.constraints, ...range.constraints]; consumedCount = combinedConstraints.length; } else { - const consumedFailure: VersFailure = parsed; - const combinedIssues = [...consumedFailure.issues, ...failure.issues]; + const consumedFailure: VersFailure = parsed, + combinedIssues = [...consumedFailure.issues, ...failure.issues]; consumedCount = combinedIssues.length; }