From 25f35020e6bdf1a1558f962876d25fd123e90fcf Mon Sep 17 00:00:00 2001 From: Bart Veneman Date: Sat, 1 Aug 2026 23:38:11 +0200 Subject: [PATCH 1/3] chore: align GitHub Actions with other projectwallace repositories --- .github/dependabot.yml | 14 +- .github/workflows/dependency-diff.yml | 78 ++++ .github/workflows/release.yml | 85 +++- .github/workflows/test.yml | 62 +-- .npmrc | 1 - .oxlintrc.json | 3 + knip.config.ts | 8 + package.json | 12 +- pnpm-lock.yaml | 586 +++++++++++++++++++++++++- src/complexity.test.ts | 10 +- src/core.test.ts | 2 +- src/index.test.ts | 4 +- src/maintainability.test.ts | 16 +- src/performance.test.ts | 28 +- 14 files changed, 803 insertions(+), 106 deletions(-) create mode 100644 .github/workflows/dependency-diff.yml delete mode 100644 .npmrc create mode 100644 .oxlintrc.json create mode 100644 knip.config.ts diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 4284531..0d70c36 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,17 +3,21 @@ version: 2 updates: - - package-ecosystem: 'npm' # pnpm is detected automatically via pnpm-lock.yaml + - package-ecosystem: 'npm' directory: '/' schedule: interval: 'monthly' groups: - npm-all: - exclude-patterns: - - '@projectwallace/*' projectwallace: patterns: - '@projectwallace/*' + npm-all: + patterns: + - '*' + exclude-patterns: + - '@projectwallace/*' + cooldown: + default-days: 7 - package-ecosystem: 'github-actions' directory: '/' schedule: @@ -22,3 +26,5 @@ updates: github-actions: patterns: - '*' + cooldown: + default-days: 7 diff --git a/.github/workflows/dependency-diff.yml b/.github/workflows/dependency-diff.yml new file mode 100644 index 0000000..dcf1cce --- /dev/null +++ b/.github/workflows/dependency-diff.yml @@ -0,0 +1,78 @@ +name: Dependency Diff + +on: + pull_request: + branches: [main] + +jobs: + build-base: + name: Pack base branch + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6 + with: + ref: main + persist-credentials: false + - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6 + with: + node-version: 22 + cache: pnpm + - run: pnpm install --frozen-lockfile --ignore-scripts + - run: pnpm run build + - run: pnpm pack --pack-destination ./base-packs + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: base-packages + path: ./base-packs/*.tgz + + build-pr: + name: Pack PR branch + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6 + with: + persist-credentials: false + - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6 + with: + node-version: 22 + cache: pnpm + - run: pnpm install --frozen-lockfile --ignore-scripts + - run: pnpm run build + - run: pnpm pack --pack-destination ./source-packs + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: source-packages + path: ./source-packs/*.tgz + + diff-dependencies: + name: Diff dependencies + runs-on: ubuntu-latest + needs: [build-base, build-pr] + permissions: + contents: read + pull-requests: write + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6 + with: + fetch-depth: 0 + persist-credentials: false + - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: base-packages + path: ./base-packs + - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: source-packages + path: ./source-packs + - uses: e18e/action-dependency-diff@8e9b8c1957ab066d36235a43f4c1ff1522e1bdbc # v1.6.1 + with: + base-packages: './base-packs/*.tgz' + source-packages: './source-packs/*.tgz' + pack-size-threshold: -1 + duplicate-threshold: 2 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 916fec3..2b54659 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,35 +4,92 @@ on: release: types: [created] -permissions: - id-token: write # Required for OIDC provenance attestations - contents: write # Required for pushing version bump commit +permissions: {} jobs: - publish-npm: + test: runs-on: ubuntu-latest + permissions: {} steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6 - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6 + with: + persist-credentials: false + - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6 with: node-version: 24 - cache: pnpm - registry-url: https://registry.npmjs.org + package-manager-cache: false - run: pnpm install --frozen-lockfile - run: pnpm test + + build: + needs: test + runs-on: ubuntu-latest + permissions: {} + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6 + with: + persist-credentials: false + - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6 + with: + node-version: 24 + package-manager-cache: false + - run: pnpm install --frozen-lockfile - run: pnpm run build - - name: Bump version from release tag - env: - DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} - run: | + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: dist + path: dist/ + + bump-version: + needs: build + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6 + with: + persist-credentials: true + - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - run: | VERSION=${GITHUB_REF_NAME#v} pnpm version $VERSION --no-git-tag-version + - name: Commit and push version bump + env: + DEFAULT_BRANCH: main + run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git add package.json pnpm-lock.yaml - git commit -m "chore: bump version to $VERSION" + git commit -m "chore: bump version to ${GITHUB_REF_NAME#v}" git push origin HEAD:$DEFAULT_BRANCH + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: package-json + path: package.json + + publish: + needs: bump-version + runs-on: ubuntu-latest + permissions: + id-token: write # Required for OIDC provenance + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6 + with: + persist-credentials: false + - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6 + with: + node-version: 24 + package-manager-cache: false + registry-url: 'https://registry.npmjs.org' + - run: pnpm install --frozen-lockfile + - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: dist + path: dist/ + - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: package-json - run: pnpm publish --no-git-checks - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 85f0dfe..5f63809 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,34 +14,31 @@ jobs: name: Unit tests runs-on: ubuntu-latest steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6 - - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6 + - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - name: Use Node.js + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6 with: + cache: 'pnpm' node-version: 24 - cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm test - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 - with: - token: ${{ secrets.CODECOV_TOKEN }} - slug: projectwallace/css-code-quality check: name: Check types runs-on: ubuntu-latest steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6 - - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6 + - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - name: Use Node.js + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6 with: + cache: 'pnpm' node-version: 24 - cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm run check @@ -49,14 +46,15 @@ jobs: name: Build runs-on: ubuntu-latest steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6 - - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6 + - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - name: Use Node.js + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6 with: + cache: 'pnpm' node-version: 24 - cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm run build @@ -64,15 +62,15 @@ jobs: name: Lint runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6 - - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6 + - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - name: Use Node.js + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6 with: + cache: 'pnpm' node-version: 24 - cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm run lint @@ -80,14 +78,18 @@ jobs: name: Audit packages runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6 - - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6 - with: - node-version: 24 - cache: pnpm - - run: pnpm install --frozen-lockfile + - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - run: pnpm audit --audit-level=high + + knip: + name: Lint unused code + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + - run: pnpm run knip diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 0a13977..0000000 --- a/.npmrc +++ /dev/null @@ -1 +0,0 @@ -# Security settings are configured in pnpm-workspace.yaml diff --git a/.oxlintrc.json b/.oxlintrc.json new file mode 100644 index 0000000..bb8e4e1 --- /dev/null +++ b/.oxlintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["./node_modules/@projectwallace/preset-oxlint/index.json"] +} diff --git a/knip.config.ts b/knip.config.ts new file mode 100644 index 0000000..67833e1 --- /dev/null +++ b/knip.config.ts @@ -0,0 +1,8 @@ +import type { KnipConfig } from 'knip' + +const config: KnipConfig = { + project: ['src/**/*.ts'], + ignoreDependencies: ['@projectwallace/preset-oxlint'], +} + +export default config diff --git a/package.json b/package.json index de2800b..ca73cc5 100644 --- a/package.json +++ b/package.json @@ -46,12 +46,15 @@ "test": "vitest run --coverage", "build": "tsdown", "check": "tsc --noEmit", - "lint": "oxlint; oxfmt --check" + "lint": "oxlint; oxfmt --check", + "knip": "knip" }, "dependencies": { - "@projectwallace/css-analyzer": "^9.8.2" + "@projectwallace/css-analyzer": "^9.9.3", + "knip": "^6.31.0" }, "devDependencies": { + "@projectwallace/preset-oxlint": "^0.0.11", "@vitest/coverage-v8": "^4.1.2", "oxfmt": "^0.61.0", "oxlint": "^1.58.0", @@ -65,10 +68,5 @@ "pnpm": ">=11.0.0" }, "packageManager": "pnpm@11.1.1", - "pnpm": { - "onlyBuiltDependencies": [ - "esbuild" - ] - }, "issues": "https://github.com/projectwallace/css-code-quality/issues" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 45d0ffe..bc4db9a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,9 +9,15 @@ importers: .: dependencies: '@projectwallace/css-analyzer': - specifier: ^9.8.2 + specifier: ^9.9.3 version: 9.9.3 + knip: + specifier: ^6.31.0 + version: 6.31.0 devDependencies: + '@projectwallace/preset-oxlint': + specifier: ^0.0.11 + version: 0.0.11(oxlint@1.76.0) '@vitest/coverage-v8': specifier: ^4.1.2 version: 4.1.10(vitest@4.1.10) @@ -26,13 +32,13 @@ importers: version: 0.3.22 tsdown: specifier: ^0.22.3 - version: 0.22.14(publint@0.3.22)(typescript@7.0.2) + version: 0.22.14(oxc-resolver@11.24.2)(publint@0.3.22)(typescript@7.0.2) typescript: specifier: ^7.0.2 version: 7.0.2 vitest: specifier: ^4.1.2 - version: 4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)) + version: 4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0)) packages: @@ -57,12 +63,21 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} + '@emnapi/core@1.11.2': + resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==} + '@emnapi/core@2.0.0-alpha.3': resolution: {integrity: sha512-AZypUeJ/yByuxyS7BlSNRDOMLMlROYtjYdIAuBmJssVz1UJDSeYxLrdizhXCFYhedC5bqd/ASy8EuNXbVVXp9g==} + '@emnapi/runtime@1.11.2': + resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + '@emnapi/runtime@2.0.0-alpha.3': resolution: {integrity: sha512-hFPAhMUjJD9BSyCANEISPOogeXC9Zo9ZQl7L6vKnaVsMkCtzznaW/naYypeyl0Gv5rYfWYsZbpixTMpjDJzQeA==} + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + '@emnapi/wasi-threads@2.0.1': resolution: {integrity: sha512-9DsSk+o5NBX0CCJT8s0EROGSGxjR/tKu6aBTaVyq+SjAEQH4XcdcRxPBRzsBLizTTJ49MJjF+jgu3qnO9GLQcQ==} @@ -83,12 +98,242 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.3 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.3 + '@oxc-parser/binding-android-arm-eabi@0.142.0': + resolution: {integrity: sha512-ZiRGDutGsv1G6bL/ozy/koC0Sv39T1DqyoC4KD1DOy9ZoACm1O5UWhEK2c02Qdk+4lfLVkvFa/mQ0fm/4h1BtQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxc-parser/binding-android-arm64@0.142.0': + resolution: {integrity: sha512-WZkvGRLNQTz8lR9zP5nLjUdlroRCopBu3g9zF1p/laE6DzT1UbQo8Rdz5MWhaJUPYg/6gp+jo7HUgsyKaN1FtQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxc-parser/binding-darwin-arm64@0.142.0': + resolution: {integrity: sha512-l4khS8LQOOVYsGRVARo1gSaCT/aBSceUVXgtovWc2+drnxVuDr082WA3OCHVdVzIz5JIrP/y9CWsSKxBDNmYGg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxc-parser/binding-darwin-x64@0.142.0': + resolution: {integrity: sha512-QBsNF3nqlXmcH2B1YOPqQYmCJoy4HuIjUxGbBO/k5JAJUl68ghU2psRY2zPk+RyBaWqKP/qfL4oaFgEMCdwskA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxc-parser/binding-freebsd-x64@0.142.0': + resolution: {integrity: sha512-b7Q7m4Cqc6XqNhri3R+QhU+GVy646Pn+bkdhrDdWym/Fdi0ZUa+d73H9dm5H91JtbtAQ/z1d8XKMW3oOV8a4tQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxc-parser/binding-linux-arm-gnueabihf@0.142.0': + resolution: {integrity: sha512-3riVS5IhdH3uCZj1Y9ftDQlR0dvLsIlw/edrRqk8JhgNd5K0XSs+UBtgh50N13CAlW9/TXj6sVGXaKNBocd0Yg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm-musleabihf@0.142.0': + resolution: {integrity: sha512-NmXUOpgpTSkhl795TiXmWppTwmSJ92RC1qvD6e4XOF+slgmo3e6Ah+kEu+6AN8s7NAOEwqGmir58MgSQSWmBSA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm64-gnu@0.142.0': + resolution: {integrity: sha512-gc0EXsKtXgerujmU2Bql3u1L1HsSQ2774R83idq/FoNMPVV/RY/1ErFsvnit7KoiP/sLvzQixeUo4Ut0ic0wmw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-arm64-musl@0.142.0': + resolution: {integrity: sha512-F2XvmWSE0uWpie+jHKKIFgdVOe9ypGhkEZxKx5DuW215K6cbAC274yYaPkcM7EqY4Df3Weyhpcz3lsURyH2LVg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxc-parser/binding-linux-ppc64-gnu@0.142.0': + resolution: {integrity: sha512-wLMbT21U/QxknQsk+VvNF0b9D2/aGWhcaQQQ+VYlE8FwD5+GoWZIPPXNzyHmkYyhm0KB3itL+TBavjMatqNnYA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-riscv64-gnu@0.142.0': + resolution: {integrity: sha512-+G8F/4ckwT7FCJV4H2bt09xEzJbjNCfuL4Sp1AYNaFtFMVtgIGMuJlteT82U+K0UIZ/DzAR/LDlMFnEuajG7Kw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-riscv64-musl@0.142.0': + resolution: {integrity: sha512-hTsHtTLxMAfCo+rpF5K3qZJKW2NpPN/CHd4mYB3y7XlSdspHkd2gehDIofP64AacA9nWQw2tY3O7wR6UY8IVOA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxc-parser/binding-linux-s390x-gnu@0.142.0': + resolution: {integrity: sha512-6y7qYY3TCUDYjqswImdTGl92y+KA/80twALegQPN27kfY+bG7Ib1+L3jbmrCZQx6wrVnai9IPsEZp07I0hx7JQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-x64-gnu@0.142.0': + resolution: {integrity: sha512-i69kAWU+2LgoH5bR+zWiiu+UzAw7Oxkwv7COeJTeY19pn4e70nKQcr9Pm6cL2Z0Z54d+gl9qADlK/0yyuCPiBA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-x64-musl@0.142.0': + resolution: {integrity: sha512-4SQs678MmjYVrmhAgCWD4o0vpaFszXw9xLX5p2Z9MMFcltxiLkA88wQjh80YHjPrXtpyZ2CWI5m+1yNKM0m2Pw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxc-parser/binding-openharmony-arm64@0.142.0': + resolution: {integrity: sha512-YHpx9N7Ln3a++Tc8rv+H7mrK1zyJQOAwCFg8LZ3lTs1T5afGWeZrLPhPT9HLnIwSjCyJqPWVMIrMxbjcmBr2oQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxc-parser/binding-wasm32-wasi@0.142.0': + resolution: {integrity: sha512-3pLDyY3+oogW73RM5uehNgAiR/Xfb7fvO2Q1Z1gIqZ2+50XDVQmBVlRkHXZTU4gKnQHpwETNsYQVsJ3joVB2iA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@oxc-parser/binding-win32-arm64-msvc@0.142.0': + resolution: {integrity: sha512-Had/VeVY28Oyb0K+Q4FV8KCzoBycIh93oDK6pCbya9lkzdq+ikMHMgBubsdqqlybjJmQRawCQRrnBRHyQwYvcQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxc-parser/binding-win32-ia32-msvc@0.142.0': + resolution: {integrity: sha512-GGi3+YphVHavvgs6gum2UXoNCqzHAmPt/nXkn8ZQZstV2Q1qZD1Mn8fz/nWrDkefHQtrG/+1/XrbMxsBTo6Svw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxc-parser/binding-win32-x64-msvc@0.142.0': + resolution: {integrity: sha512-Ny/Wv4Us1LGC/ljwNTp+Hx3r/pH15EFfeDF0p+n898gt+TtRd6C9SccHcuUhDiNTb8s5tt7jdeAMDRQZ4Vq6hg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@oxc-project/types@0.122.0': resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} '@oxc-project/types@0.142.0': resolution: {integrity: sha512-7W+2q5AKQVU36fkaryontrHn3YDt1RyUYXatw9i5H8ocYe2sPKSFB6eS8WNPeRKiN1qAWWZUPm7gwFzJGrccqQ==} + '@oxc-resolver/binding-android-arm-eabi@11.24.2': + resolution: {integrity: sha512-y09e0L0SRI2OA2tUIrjBgoV3eH5hvUKXNkJqXmNo5V2WxIjyC7I7aJfRLMEVpA8yi95f90gFDvO0VMgrDw+vwA==} + cpu: [arm] + os: [android] + + '@oxc-resolver/binding-android-arm64@11.24.2': + resolution: {integrity: sha512-cl4icWaZFnLdg8m6qtnh5rBMuGbxc/ptStFHLeCNwr+2cZjkjNwQu/jYRS0CHlnPecOJMpuS5M6/BH+0J/YkEg==} + cpu: [arm64] + os: [android] + + '@oxc-resolver/binding-darwin-arm64@11.24.2': + resolution: {integrity: sha512-At29QEMF6HajbQvgY8K6OXnHD1x9rad74xBEfmCB6ZqCGsdq75aK7tOYcTbOanMy8qdIBrfL3SMr3p/lfSlb9w==} + cpu: [arm64] + os: [darwin] + + '@oxc-resolver/binding-darwin-x64@11.24.2': + resolution: {integrity: sha512-A5Kqr1EUj4oIL5CF4WRssq/o5P0Y11cwoFouMRmQ7YnC/A8V93nv1nb7aSU8HwcgmXropjLNkVTl4MN87cu28Q==} + cpu: [x64] + os: [darwin] + + '@oxc-resolver/binding-freebsd-x64@11.24.2': + resolution: {integrity: sha512-R5xkRBRRz7ceH/P5Jrc6G7FmdUdgpLYyESFAUDVTNQ9K0sGPxcp4ljiwEwEqsvNcQ4sYbMRrWcHHBCu7ksAJVw==} + cpu: [x64] + os: [freebsd] + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2': + resolution: {integrity: sha512-k/RuYL4L/R58IBn3wT5ma3Wh4k62bp1eYCFRWCmMsasUOqL+H6sW0VGFadEzKWXFFlz+2uIMoeMk9ySSZJHgbg==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2': + resolution: {integrity: sha512-bnHAak3ujYfH5pKk4NieFNbvYvernfoQDgwLddbZ3OtMYrem87/qjlA+u+aKG0oZcqSLGCful/6/CEA+aeAgaA==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm64-gnu@11.24.2': + resolution: {integrity: sha512-vDT3KHgzYp47gmtNOqL2VNhCyl5Zv643eyxm//A68J8DeUGXrvD1pZFiaT4jSfe+RInfnn1R2yVHye4enx6RnA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-arm64-musl@11.24.2': + resolution: {integrity: sha512-+kMlQvbzfyEYtu5FcjE4p+ttBLpKW4d/AsAsuE69BxV6V4twZJeIQZFfD8gh/wqglY0MkPSezWXQH0jBV13MUw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2': + resolution: {integrity: sha512-shjfMhmZ3gq9fv/w7bi3PnZlgOPG+2QAOFf0BJF0EgBSIGZ6PMLN2zbGEblTUYB/NKVDRyYhE2ff3dJ1QqNPkA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2': + resolution: {integrity: sha512-zGelwFR5oRo+b69k8Lrzun86DyUHzfKN6cnjbR9l7Z7NIRznOE/2ZvPa1IUKqAL2PzAXOdwkfVqNvO1H2RlpAw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-riscv64-musl@11.24.2': + resolution: {integrity: sha512-qxZ1SWCXJY0eyhAlP6Lmo9F2Nrtx7EkYj9oCgL8apDPCwXwCEDA2U697bbT81JIc2IrVjxO4KX6WU2N+oN9Z4w==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxc-resolver/binding-linux-s390x-gnu@11.24.2': + resolution: {integrity: sha512-sGCecF3cx2DFlH4t/z7ApnOnXqN48p5p5mlHDEnHTAukQa2P+qMVE4CwyWE9W+q/m3QJ7kKfGrIjax31f44oFQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-x64-gnu@11.24.2': + resolution: {integrity: sha512-k/VlMMcSzMlahb3/fENM4rTlsJ0s3fFROA0KXPBmKggqmTSaE383sl8F3KCOXPLmVsYfW6hCitMhXCEtNeZxxg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-x64-musl@11.24.2': + resolution: {integrity: sha512-8hbnZyNi97b/8wapYaIF9+t9GmZKBW2vunaOc3h9HGJptH7b7XpvZqOTBSm/MpTjr7H497BlgOaSfLUdhmy2bw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxc-resolver/binding-openharmony-arm64@11.24.2': + resolution: {integrity: sha512-MvyGik3a6pVgZ0t/kWlbmFxFLmXQJwgLsY2eYFHLpy0wGwRbfzeIGgDwQ3kXqE30z+kSXennRkCrT7TUvkptNg==} + cpu: [arm64] + os: [openharmony] + + '@oxc-resolver/binding-wasm32-wasi@11.24.2': + resolution: {integrity: sha512-vHcssMPwO08RTvj/c0iOBz90attxyG3wQJ0dTcyEQK43LRpcdLWZlV5feBhv6Isn6ahbQIzHbCgfa81+RiML0Q==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@oxc-resolver/binding-win32-arm64-msvc@11.24.2': + resolution: {integrity: sha512-uokJqro2iBqkFvJdKQLP7d8/BUmFwESQFVmIJUQKj1Xn1a/LysJoe1vmeECLF5b3jsV8CAL5sEMJXX6SdK9Nhg==} + cpu: [arm64] + os: [win32] + + '@oxc-resolver/binding-win32-x64-msvc@11.24.2': + resolution: {integrity: sha512-UqGPmo56KDfLlfXFAFIrNflHT8tFxWGEivWg3Zeyp4Uy2NlKN1FGPr6/BxcLGG3+kZ6Wp14g5Uj+n71boqZfiw==} + cpu: [x64] + os: [win32] + '@oxfmt/binding-android-arm-eabi@0.61.0': resolution: {integrity: sha512-BaS+1OVvg9sr+Xav0+KdWedQRcAzrdoEcwMZeqoc2F6ieC1s/t5eM35YQoRPQ7vAqkZ+p3tbQb1r9I9mrV5oGA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -341,6 +586,11 @@ packages: resolution: {integrity: sha512-XTeexH92z5NLWfNw031emlEdd7P3yxJPv9ac/ZN3tFxyPyz1l8vEdZ6afQsd+cpfclOMvFfWbDxhfZ7IRePoLg==} engines: {pnpm: '>=11.0.0'} + '@projectwallace/preset-oxlint@0.0.11': + resolution: {integrity: sha512-hdrtBKSD3ctKkrug54PfHCJPl0jPs6Uw7Rdl/ZVGvim52jYUXp0lj2fTjEP9GVO1Hy3K/dyXKAeEvaFF1TlC4w==} + peerDependencies: + oxlint: ^1.0.0 + '@publint/pack@0.1.6': resolution: {integrity: sha512-3uVNyGcVplhPZSLVyeIpL7+cIRn1YCSNHLG/rUIlBQMVH8YuN9++YF+5+UDIIO9RW98dujiUoTltO7RDB5bFJA==} engines: {node: '>=18'} @@ -893,6 +1143,9 @@ packages: resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} engines: {node: '>=12.0.0'} + fd-package-json@2.0.0: + resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -902,11 +1155,19 @@ packages: picomatch: optional: true + formatly@0.3.0: + resolution: {integrity: sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==} + engines: {node: '>=18.3.0'} + hasBin: true + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + get-tsconfig@5.0.0-beta.5: resolution: {integrity: sha512-/6gFNr0N04nob252sTQxyFLi3eKFRqIg1I87YcqAMT1i6SQrSF6KujUEQrtrjMV0H/eejTCltLdDSTEMzHbnsQ==} engines: {node: '>=20.20.0'} @@ -937,9 +1198,18 @@ packages: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + js-tokens@10.0.0: resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} + knip@6.31.0: + resolution: {integrity: sha512-NbeIEmUS2VUMjAkbiSNOKPJeV9wpCsr0660sUyKyMQbk4Iom0++nTLInVp4MJ+LfR4kORnw67bDi5tvO7YLnzA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + lightningcss-android-arm64@1.33.0: resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} engines: {node: '>= 12.0.0'} @@ -1037,6 +1307,13 @@ packages: resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} engines: {node: '>=12.20.0'} + oxc-parser@0.142.0: + resolution: {integrity: sha512-kKR+jPiRJYJDexVoziIg/FVGvr1fT1FZSSJOk6tVoMKKSlsf1Cso+cgGCJkOEDWOP174vRntCPFKg+AS7InWvw==} + engines: {node: ^20.19.0 || >=22.12.0} + + oxc-resolver@11.24.2: + resolution: {integrity: sha512-FY91FiDBj7ls5MsFS9jN3tjz2o0/zsdSsymlakySaBwVJZorHhkWyICLZMKxlu1R9vYo+sd3z1jwb4J8x7bNDw==} + oxfmt@0.61.0: resolution: {integrity: sha512-DxdHBEMYpcEnHoUHjjOigUqV2TYKsvxLwUPXnVYBjgFdqrcQ/91OtwubtZ2PUodCs3sStI8R5Qw3fKNGK4e8wQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1132,6 +1409,10 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + smol-toml@1.7.1: + resolution: {integrity: sha512-PPlsspAZ4jbMBu5DMFhfUGDQLu/vrL4SyBROVS37x8ynnVmFIs1VPBz1Co8Xks3TvpIaZXmU85y4DrQ+UyVFoQ==} + engines: {node: '>= 18'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -1142,6 +1423,10 @@ packages: std-env@4.2.0: resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} + strip-json-comments@5.0.3: + resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} + engines: {node: '>=14.16'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -1211,6 +1496,10 @@ packages: engines: {node: '>=16.20.0'} hasBin: true + unbash@4.0.4: + resolution: {integrity: sha512-60m9IVGbavD6jholbxt0jVBXZkEB/HsMZq7Tyaghseve2/Sf0zQRAIfWsD34sde+DKP2tBxJS2wP88ZM0D1FhA==} + engines: {node: '>=14'} + unconfig-core@7.5.0: resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} @@ -1302,11 +1591,20 @@ packages: jsdom: optional: true + walk-up-path@4.0.0: + resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} + engines: {node: 20 || >=22} + why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} hasBin: true + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + yuku-ast@0.8.1: resolution: {integrity: sha512-+k1E2f08y0k1+vpdD1KUCzDh2JXvwirMa8YR2Jr7VCS4zAo3eT5A/HbJCqaVGd6idaPY0gwLM9C4seEY4h10Hw==} @@ -1316,6 +1614,9 @@ packages: yuku-parser@0.8.1: resolution: {integrity: sha512-YvUz2jdFMIq0QjN8LmI32ox+RBCn3l8VToAXVQ5QFfLTxSxmGZS6JP80ptePEju+CpeTdINLmUm7Ewodzh1QnQ==} + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + snapshots: '@babel/helper-string-parser@7.29.7': {} @@ -1333,17 +1634,33 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} + '@emnapi/core@1.11.2': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + '@emnapi/core@2.0.0-alpha.3': dependencies: '@emnapi/wasi-threads': 2.0.1 tslib: 2.8.1 optional: true + '@emnapi/runtime@1.11.2': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/runtime@2.0.0-alpha.3': dependencies: tslib: 2.8.1 optional: true + '@emnapi/wasi-threads@1.2.2': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@2.0.1': dependencies: tslib: 2.8.1 @@ -1358,6 +1675,13 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@tybys/wasm-util': 0.10.3 + optional: true + '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)': dependencies: '@emnapi/core': 2.0.0-alpha.3 @@ -1365,10 +1689,135 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true + '@oxc-parser/binding-android-arm-eabi@0.142.0': + optional: true + + '@oxc-parser/binding-android-arm64@0.142.0': + optional: true + + '@oxc-parser/binding-darwin-arm64@0.142.0': + optional: true + + '@oxc-parser/binding-darwin-x64@0.142.0': + optional: true + + '@oxc-parser/binding-freebsd-x64@0.142.0': + optional: true + + '@oxc-parser/binding-linux-arm-gnueabihf@0.142.0': + optional: true + + '@oxc-parser/binding-linux-arm-musleabihf@0.142.0': + optional: true + + '@oxc-parser/binding-linux-arm64-gnu@0.142.0': + optional: true + + '@oxc-parser/binding-linux-arm64-musl@0.142.0': + optional: true + + '@oxc-parser/binding-linux-ppc64-gnu@0.142.0': + optional: true + + '@oxc-parser/binding-linux-riscv64-gnu@0.142.0': + optional: true + + '@oxc-parser/binding-linux-riscv64-musl@0.142.0': + optional: true + + '@oxc-parser/binding-linux-s390x-gnu@0.142.0': + optional: true + + '@oxc-parser/binding-linux-x64-gnu@0.142.0': + optional: true + + '@oxc-parser/binding-linux-x64-musl@0.142.0': + optional: true + + '@oxc-parser/binding-openharmony-arm64@0.142.0': + optional: true + + '@oxc-parser/binding-wasm32-wasi@0.142.0': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + optional: true + + '@oxc-parser/binding-win32-arm64-msvc@0.142.0': + optional: true + + '@oxc-parser/binding-win32-ia32-msvc@0.142.0': + optional: true + + '@oxc-parser/binding-win32-x64-msvc@0.142.0': + optional: true + '@oxc-project/types@0.122.0': {} '@oxc-project/types@0.142.0': {} + '@oxc-resolver/binding-android-arm-eabi@11.24.2': + optional: true + + '@oxc-resolver/binding-android-arm64@11.24.2': + optional: true + + '@oxc-resolver/binding-darwin-arm64@11.24.2': + optional: true + + '@oxc-resolver/binding-darwin-x64@11.24.2': + optional: true + + '@oxc-resolver/binding-freebsd-x64@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-arm64-gnu@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-arm64-musl@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-riscv64-musl@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-s390x-gnu@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-x64-gnu@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-x64-musl@11.24.2': + optional: true + + '@oxc-resolver/binding-openharmony-arm64@11.24.2': + optional: true + + '@oxc-resolver/binding-wasm32-wasi@11.24.2': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + optional: true + + '@oxc-resolver/binding-win32-arm64-msvc@11.24.2': + optional: true + + '@oxc-resolver/binding-win32-x64-msvc@11.24.2': + optional: true + '@oxfmt/binding-android-arm-eabi@0.61.0': optional: true @@ -1489,6 +1938,10 @@ snapshots: '@projectwallace/css-parser@0.18.1': {} + '@projectwallace/preset-oxlint@0.0.11(oxlint@1.76.0)': + dependencies: + oxlint: 1.76.0 + '@publint/pack@0.1.6': dependencies: tinyexec: 1.2.4 @@ -1569,9 +2022,9 @@ snapshots: '@rolldown/binding-openharmony-arm64@1.2.1': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': dependencies: - '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3) + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -1688,7 +2141,7 @@ snapshots: obug: 2.1.4 std-env: 4.2.0 tinyrainbow: 3.1.1 - vitest: 4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)) + vitest: 4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0)) '@vitest/expect@4.1.10': dependencies: @@ -1699,13 +2152,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.1 - '@vitest/mocker@4.1.10(vite@8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3))': + '@vitest/mocker@4.1.10(vite@8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3) + vite: 8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0) '@vitest/pretty-format@4.1.10': dependencies: @@ -1819,7 +2272,9 @@ snapshots: detect-libc@2.1.2: {} - dts-resolver@3.0.0: {} + dts-resolver@3.0.0(oxc-resolver@11.24.2): + optionalDependencies: + oxc-resolver: 11.24.2 empathic@2.0.1: {} @@ -1831,13 +2286,25 @@ snapshots: expect-type@1.4.0: {} + fd-package-json@2.0.0: + dependencies: + walk-up-path: 4.0.0 + fdir@6.5.0(picomatch@4.0.5): optionalDependencies: picomatch: 4.0.5 + formatly@0.3.0: + dependencies: + fd-package-json: 2.0.0 + fsevents@2.3.3: optional: true + get-tsconfig@4.14.0: + dependencies: + resolve-pkg-maps: 1.0.0 + get-tsconfig@5.0.0-beta.5: dependencies: resolve-pkg-maps: 1.0.0 @@ -1863,8 +2330,26 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + jiti@2.7.0: {} + js-tokens@10.0.0: {} + knip@6.31.0: + dependencies: + fdir: 6.5.0(picomatch@4.0.5) + formatly: 0.3.0 + get-tsconfig: 4.14.0 + jiti: 2.7.0 + oxc-parser: 0.142.0 + oxc-resolver: 11.24.2 + picomatch: 4.0.5 + smol-toml: 1.7.1 + strip-json-comments: 5.0.3 + tinyglobby: 0.2.17 + unbash: 4.0.4 + yaml: 2.9.0 + zod: 4.4.3 + lightningcss-android-arm64@1.33.0: optional: true @@ -1934,6 +2419,53 @@ snapshots: obug@2.1.4: {} + oxc-parser@0.142.0: + dependencies: + '@oxc-project/types': 0.142.0 + optionalDependencies: + '@oxc-parser/binding-android-arm-eabi': 0.142.0 + '@oxc-parser/binding-android-arm64': 0.142.0 + '@oxc-parser/binding-darwin-arm64': 0.142.0 + '@oxc-parser/binding-darwin-x64': 0.142.0 + '@oxc-parser/binding-freebsd-x64': 0.142.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.142.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.142.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.142.0 + '@oxc-parser/binding-linux-arm64-musl': 0.142.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.142.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.142.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.142.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.142.0 + '@oxc-parser/binding-linux-x64-gnu': 0.142.0 + '@oxc-parser/binding-linux-x64-musl': 0.142.0 + '@oxc-parser/binding-openharmony-arm64': 0.142.0 + '@oxc-parser/binding-wasm32-wasi': 0.142.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.142.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.142.0 + '@oxc-parser/binding-win32-x64-msvc': 0.142.0 + + oxc-resolver@11.24.2: + optionalDependencies: + '@oxc-resolver/binding-android-arm-eabi': 11.24.2 + '@oxc-resolver/binding-android-arm64': 11.24.2 + '@oxc-resolver/binding-darwin-arm64': 11.24.2 + '@oxc-resolver/binding-darwin-x64': 11.24.2 + '@oxc-resolver/binding-freebsd-x64': 11.24.2 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.24.2 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.24.2 + '@oxc-resolver/binding-linux-arm64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-arm64-musl': 11.24.2 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-riscv64-musl': 11.24.2 + '@oxc-resolver/binding-linux-s390x-gnu': 11.24.2 + '@oxc-resolver/binding-linux-x64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-x64-musl': 11.24.2 + '@oxc-resolver/binding-openharmony-arm64': 11.24.2 + '@oxc-resolver/binding-wasm32-wasi': 11.24.2 + '@oxc-resolver/binding-win32-arm64-msvc': 11.24.2 + '@oxc-resolver/binding-win32-x64-msvc': 11.24.2 + oxfmt@0.61.0: dependencies: tinypool: 2.1.0 @@ -2005,9 +2537,9 @@ snapshots: resolve-pkg-maps@1.0.0: {} - rolldown-plugin-dts@0.27.14(rolldown@1.2.1)(typescript@7.0.2): + rolldown-plugin-dts@0.27.14(oxc-resolver@11.24.2)(rolldown@1.2.1)(typescript@7.0.2): dependencies: - dts-resolver: 3.0.0 + dts-resolver: 3.0.0(oxc-resolver@11.24.2) get-tsconfig: 5.0.0-beta.5 obug: 2.1.4 rolldown: 1.2.1 @@ -2019,7 +2551,7 @@ snapshots: transitivePeerDependencies: - oxc-resolver - rolldown@1.0.0-rc.12(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3): + rolldown@1.0.0-rc.12(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2): dependencies: '@oxc-project/types': 0.122.0 '@rolldown/pluginutils': 1.0.0-rc.12 @@ -2036,7 +2568,7 @@ snapshots: '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3) + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 transitivePeerDependencies: @@ -2072,12 +2604,16 @@ snapshots: siginfo@2.0.0: {} + smol-toml@1.7.1: {} + source-map-js@1.2.1: {} stackback@0.0.2: {} std-env@4.2.0: {} + strip-json-comments@5.0.3: {} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -2097,7 +2633,7 @@ snapshots: tree-kill@1.2.2: {} - tsdown@0.22.14(publint@0.3.22)(typescript@7.0.2): + tsdown@0.22.14(oxc-resolver@11.24.2)(publint@0.3.22)(typescript@7.0.2): dependencies: ansis: 4.3.1 cac: 7.0.0 @@ -2108,7 +2644,7 @@ snapshots: obug: 2.1.4 picomatch: 4.0.5 rolldown: 1.2.1 - rolldown-plugin-dts: 0.27.14(rolldown@1.2.1)(typescript@7.0.2) + rolldown-plugin-dts: 0.27.14(oxc-resolver@11.24.2)(rolldown@1.2.1)(typescript@7.0.2) tinyexec: 1.2.4 tinyglobby: 0.2.17 tree-kill: 1.2.2 @@ -2149,6 +2685,8 @@ snapshots: '@typescript/typescript-win32-arm64': 7.0.2 '@typescript/typescript-win32-x64': 7.0.2 + unbash@4.0.4: {} + unconfig-core@7.5.0: dependencies: '@quansync/fs': 1.0.0 @@ -2156,23 +2694,25 @@ snapshots: verkit@0.3.1: {} - vite@8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3): + vite@8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0): dependencies: lightningcss: 1.33.0 picomatch: 4.0.5 postcss: 8.5.25 - rolldown: 1.0.0-rc.12(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3) + rolldown: 1.0.0-rc.12(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) tinyglobby: 0.2.17 optionalDependencies: fsevents: 2.3.3 + jiti: 2.7.0 + yaml: 2.9.0 transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' - vitest@4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)): + vitest@4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)) + '@vitest/mocker': 4.1.10(vite@8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -2189,18 +2729,22 @@ snapshots: tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.1 - vite: 8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3) + vite: 8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@vitest/coverage-v8': 4.1.10(vitest@4.1.10) transitivePeerDependencies: - msw + walk-up-path@4.0.0: {} + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 stackback: 0.0.2 + yaml@2.9.0: {} + yuku-ast@0.8.1: dependencies: '@yuku-toolchain/types': 0.8.1 @@ -2237,3 +2781,5 @@ snapshots: '@yuku-parser/binding-linux-x64-musl': 0.8.1 '@yuku-parser/binding-win32-arm64': 0.8.1 '@yuku-parser/binding-win32-x64': 0.8.1 + + zod@4.4.3: {} diff --git a/src/complexity.test.ts b/src/complexity.test.ts index 243992a..dc7406e 100644 --- a/src/complexity.test.ts +++ b/src/complexity.test.ts @@ -2,7 +2,7 @@ import { describe, it, expect } from 'vitest' import { calculate } from './index.js' describe('Complexity', () => { - it('should deduct points for a lot of Selectors more complex than most common Complexity', () => { + test('should deduct points for a lot of Selectors more complex than most common Complexity', () => { const fixture = ` ${Array.from({ length: 1000 }) .fill('') @@ -29,7 +29,7 @@ describe('Complexity', () => { expect(actual.complexity.score).toBe(95) }) - it('should deduct points for a lot of Selectors more complex than most common Specificity', () => { + test('should deduct points for a lot of Selectors more complex than most common Specificity', () => { const fixture = ` ${Array.from({ length: 500 }) .fill('') @@ -56,7 +56,7 @@ describe('Complexity', () => { expect(actual.complexity.score).toBe(98) }) - it('deducts points for selectors with high complexity', () => { + test('deducts points for selectors with high complexity', () => { const fixture = ` a b c d e f {} ` @@ -79,7 +79,7 @@ describe('Complexity', () => { expect(actual.complexity.score).toBe(87) }) - it('deducts points for having a high ratio of ID selectors', () => { + test('deducts points for having a high ratio of ID selectors', () => { const fixture = ` a {} b {} @@ -99,7 +99,7 @@ describe('Complexity', () => { expect(actual.complexity.score).toBe(98) }) - it('deducts points for having a high ratio !importants', () => { + test('deducts points for having a high ratio !importants', () => { const fixture = ` selector { a: b; diff --git a/src/core.test.ts b/src/core.test.ts index 36d96ed..7ea8bc4 100644 --- a/src/core.test.ts +++ b/src/core.test.ts @@ -2,7 +2,7 @@ import { describe, it, expect } from 'vitest' import { calculate } from './core' describe('Core', () => { - it('exports calculate', () => { + test('exports calculate', () => { expect(typeof calculate).toBe('function') }) }) diff --git a/src/index.test.ts b/src/index.test.ts index aa34a2d..c9c1ed8 100644 --- a/src/index.test.ts +++ b/src/index.test.ts @@ -2,11 +2,11 @@ import { describe, it, expect } from 'vitest' import { calculate } from './index.js' describe('Index', () => { - it('exposes a calculate function', () => { + test('exposes a calculate function', () => { expect(typeof calculate).toBe('function') }) - it('smoke test', () => { + test('smoke test', () => { const css = ` @import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap'); diff --git a/src/maintainability.test.ts b/src/maintainability.test.ts index 9315b5b..d5bd89d 100644 --- a/src/maintainability.test.ts +++ b/src/maintainability.test.ts @@ -2,13 +2,13 @@ import { describe, it, expect } from 'vitest' import { calculate } from './index.js' describe('Maintainability', () => { - it('does not deduct points for 1 SLoC', () => { + test('does not deduct points for 1 SLoC', () => { const actual = calculate(`test {}`) expect(actual.maintainability.score).toBe(100) expect(actual.maintainability.violations.length).toBe(0) }) - it('deducts points for having lots of SLoC', () => { + test('deducts points for having lots of SLoC', () => { const fixture = Array.from({ length: 10_000 }) .fill('') .map((_, index) => `selector-${index} { opacity: 0.${index}}`) @@ -25,7 +25,7 @@ describe('Maintainability', () => { ]) }) - it('deducts no points for have few Selectors per RuleSet', () => { + test('deducts no points for have few Selectors per RuleSet', () => { const actual = calculate(` test1 {} @@ -37,7 +37,7 @@ describe('Maintainability', () => { expect(actual.maintainability.violations.length).toBe(0) }) - it('deducts points for having too many Selectors per RuleSet', () => { + test('deducts points for having too many Selectors per RuleSet', () => { const actual = calculate(` test1, test2, @@ -62,7 +62,7 @@ describe('Maintainability', () => { ]) }) - it('deducts points for having too many Selectors in a RuleSet', () => { + test('deducts points for having too many Selectors in a RuleSet', () => { const actual = calculate(` test1, test2, @@ -100,7 +100,7 @@ describe('Maintainability', () => { ]) }) - it('deducts points for having too many Declarations in a single RuleSet', () => { + test('deducts points for having too many Declarations in a single RuleSet', () => { const fixture = ` selector1 { color: tomato; @@ -131,7 +131,7 @@ describe('Maintainability', () => { ]) }) - it('deducts points for having RuleSets with more Selectors than what is most common', () => { + test('deducts points for having RuleSets with more Selectors than what is most common', () => { const fixture = ` ${Array.from({ length: 1000 }) .fill('') @@ -158,7 +158,7 @@ describe('Maintainability', () => { expect(actual.maintainability.score).toBe(95) }) - it('deducts points for having RuleSets with more Declarations than what is most common', () => { + test('deducts points for having RuleSets with more Declarations than what is most common', () => { const fixture = ` ${Array.from({ length: 1000 }) .fill('') diff --git a/src/performance.test.ts b/src/performance.test.ts index 09c4fb4..a0d8c9e 100644 --- a/src/performance.test.ts +++ b/src/performance.test.ts @@ -2,7 +2,7 @@ import { describe, it, expect } from 'vitest' import { calculate } from './index.js' describe('Performance', () => { - it('does not deduct points for not having @import', () => { + test('does not deduct points for not having @import', () => { const actual = calculate(` test { color: green; } `) @@ -10,7 +10,7 @@ describe('Performance', () => { expect(actual.performance.violations.length).toBe(0) }) - it('deducts points for having a single @import', () => { + test('deducts points for having a single @import', () => { const actual = calculate(` @import url('some-url'); test { color: green; } @@ -26,7 +26,7 @@ describe('Performance', () => { ]) }) - it('deducts points for having multiple @imports', () => { + test('deducts points for having multiple @imports', () => { const actual = calculate(` @import url('some-url'); @import url('another-url'); @@ -43,13 +43,13 @@ describe('Performance', () => { ]) }) - it('does not deduct points for not having empty rules', () => { + test('does not deduct points for not having empty rules', () => { const actual = calculate(`test { color: green; }`) expect(actual.performance.score).toBe(100) expect(actual.performance.violations.length).toBe(0) }) - it('deducts points for having a single empty rule', () => { + test('deducts points for having a single empty rule', () => { const actual = calculate(` test-empty {} test { color: green; } @@ -64,7 +64,7 @@ describe('Performance', () => { ]) }) - it('deducts points for having multiple empty rules', () => { + test('deducts points for having multiple empty rules', () => { const actual = calculate(` test-empty1 {} test-empty2 {} @@ -80,7 +80,7 @@ describe('Performance', () => { ]) }) - it('does not deduct points for having unique selectors', () => { + test('does not deduct points for having unique selectors', () => { const actual = calculate(` test1 { color: green; } test2 { color: red; } @@ -88,7 +88,7 @@ describe('Performance', () => { expect(actual.performance.score).toBe(100) }) - it('deducts points for having low selector uniqueness', () => { + test('deducts points for having low selector uniqueness', () => { const actual = calculate(` test1 { color: green; } test1 { color: red; } @@ -105,7 +105,7 @@ describe('Performance', () => { ]) }) - it('does not deduct points for having unique declarations', () => { + test('does not deduct points for having unique declarations', () => { const actual = calculate(` test1 { color: green; } test2 { color: red; } @@ -113,7 +113,7 @@ describe('Performance', () => { expect(actual.performance.score).toBe(100) }) - it('deducts points for having low declaration uniqueness', () => { + test('deducts points for having low declaration uniqueness', () => { const actual = calculate(` test1 { color: green; } test2 { color: green; } @@ -130,14 +130,14 @@ describe('Performance', () => { ]) }) - it('does not deduct points for small stylesheets', () => { + test('does not deduct points for small stylesheets', () => { const actual = calculate(` test { color: green; } `) expect(actual.performance.score).toBe(100) }) - it('deducts points for large stylesheets', () => { + test('deducts points for large stylesheets', () => { const fixture = Array.from({ length: 10_000 }) .fill('') .map((_, index) => `selector-${index} { opacity: 0.${index}}`) @@ -147,7 +147,7 @@ describe('Performance', () => { expect(actual.performance.score).toBe(95) }) - it('deducts points for having comments', () => { + test('deducts points for having comments', () => { const fixture = Array.from({ length: 100 }) .fill('/* a comment to take up some space */') .map((comment, index) => `${comment} selector-${index} { opacity: 0.${index} }`) @@ -164,7 +164,7 @@ describe('Performance', () => { ]) }) - it('deducts points for having embedded content', () => { + test('deducts points for having embedded content', () => { function generateEmbed(index: number) { return `data:image/svg+xml,%3Csvg%20id%3D%22Layer_${index}%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20195.6%20107.8%22%3E%3Cpath%20fill%3D%22%23B5B5B5%22%20class%3D%22st0%22%20d%3D%22M97.8%20107.8c-2.6%200-5.1-1-7.1-2.9L2.9%2017.1C-1%2013.2-1%206.8%202.9%202.9%206.8-1%2013.2-1%2017.1%202.9l80.7%2080.7%2080.7-80.7c3.9-3.9%2010.2-3.9%2014.1%200%203.9%203.9%203.9%2010.2%200%2014.1l-87.8%2087.8c-1.9%202-4.4%203-7%203z%22%2F%3E%3C%2Fsvg%3E` } From 4e60a29825c876b289db578dc061b9d113917d76 Mon Sep 17 00:00:00 2001 From: Bart Veneman Date: Sat, 1 Aug 2026 23:38:48 +0200 Subject: [PATCH 2/3] fix dep --- package.json | 4 ++-- pnpm-lock.yaml | 32 ++++++++++++++++---------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index ca73cc5..1b075da 100644 --- a/package.json +++ b/package.json @@ -50,12 +50,12 @@ "knip": "knip" }, "dependencies": { - "@projectwallace/css-analyzer": "^9.9.3", - "knip": "^6.31.0" + "@projectwallace/css-analyzer": "^9.9.3" }, "devDependencies": { "@projectwallace/preset-oxlint": "^0.0.11", "@vitest/coverage-v8": "^4.1.2", + "knip": "^6.31.0", "oxfmt": "^0.61.0", "oxlint": "^1.58.0", "publint": "^0.3.18", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bc4db9a..3ab94fc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,9 +11,6 @@ importers: '@projectwallace/css-analyzer': specifier: ^9.9.3 version: 9.9.3 - knip: - specifier: ^6.31.0 - version: 6.31.0 devDependencies: '@projectwallace/preset-oxlint': specifier: ^0.0.11 @@ -21,6 +18,9 @@ importers: '@vitest/coverage-v8': specifier: ^4.1.2 version: 4.1.10(vitest@4.1.10) + knip: + specifier: ^6.31.0 + version: 6.31.0 oxfmt: specifier: ^0.61.0 version: 0.61.0 @@ -38,7 +38,7 @@ importers: version: 7.0.2 vitest: specifier: ^4.1.2 - version: 4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0)) + version: 4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)(jiti@2.7.0)(yaml@2.9.0)) packages: @@ -2022,9 +2022,9 @@ snapshots: '@rolldown/binding-openharmony-arm64@1.2.1': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)': dependencies: - '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -2141,7 +2141,7 @@ snapshots: obug: 2.1.4 std-env: 4.2.0 tinyrainbow: 3.1.1 - vitest: 4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0)) + vitest: 4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)(jiti@2.7.0)(yaml@2.9.0)) '@vitest/expect@4.1.10': dependencies: @@ -2152,13 +2152,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.1 - '@vitest/mocker@4.1.10(vite@8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(vite@8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)(jiti@2.7.0)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0) + vite: 8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)(jiti@2.7.0)(yaml@2.9.0) '@vitest/pretty-format@4.1.10': dependencies: @@ -2551,7 +2551,7 @@ snapshots: transitivePeerDependencies: - oxc-resolver - rolldown@1.0.0-rc.12(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2): + rolldown@1.0.0-rc.12(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3): dependencies: '@oxc-project/types': 0.122.0 '@rolldown/pluginutils': 1.0.0-rc.12 @@ -2568,7 +2568,7 @@ snapshots: '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3) '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 transitivePeerDependencies: @@ -2694,12 +2694,12 @@ snapshots: verkit@0.3.1: {} - vite@8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0): + vite@8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)(jiti@2.7.0)(yaml@2.9.0): dependencies: lightningcss: 1.33.0 picomatch: 4.0.5 postcss: 8.5.25 - rolldown: 1.0.0-rc.12(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + rolldown: 1.0.0-rc.12(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3) tinyglobby: 0.2.17 optionalDependencies: fsevents: 2.3.3 @@ -2709,10 +2709,10 @@ snapshots: - '@emnapi/core' - '@emnapi/runtime' - vitest@4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0)): + vitest@4.1.10(@vitest/coverage-v8@4.1.10)(vite@8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)(jiti@2.7.0)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(vite@8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)(jiti@2.7.0)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -2729,7 +2729,7 @@ snapshots: tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.1 - vite: 8.0.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(jiti@2.7.0)(yaml@2.9.0) + vite: 8.0.3(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)(jiti@2.7.0)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@vitest/coverage-v8': 4.1.10(vitest@4.1.10) From 88db86e0ec9d8422367f78ad5aa8cf78a4afabee Mon Sep 17 00:00:00 2001 From: Bart Veneman Date: Sat, 1 Aug 2026 23:45:07 +0200 Subject: [PATCH 3/3] fix test --- src/complexity.test.ts | 2 +- src/core.test.ts | 2 +- src/index.test.ts | 2 +- src/maintainability.test.ts | 2 +- src/performance.test.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/complexity.test.ts b/src/complexity.test.ts index dc7406e..8ebb559 100644 --- a/src/complexity.test.ts +++ b/src/complexity.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from 'vitest' +import { describe, test, expect } from 'vitest' import { calculate } from './index.js' describe('Complexity', () => { diff --git a/src/core.test.ts b/src/core.test.ts index 7ea8bc4..1732348 100644 --- a/src/core.test.ts +++ b/src/core.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from 'vitest' +import { describe, test, expect } from 'vitest' import { calculate } from './core' describe('Core', () => { diff --git a/src/index.test.ts b/src/index.test.ts index c9c1ed8..508e97f 100644 --- a/src/index.test.ts +++ b/src/index.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from 'vitest' +import { describe, test, expect } from 'vitest' import { calculate } from './index.js' describe('Index', () => { diff --git a/src/maintainability.test.ts b/src/maintainability.test.ts index d5bd89d..97f4f5a 100644 --- a/src/maintainability.test.ts +++ b/src/maintainability.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from 'vitest' +import { describe, test, expect } from 'vitest' import { calculate } from './index.js' describe('Maintainability', () => { diff --git a/src/performance.test.ts b/src/performance.test.ts index a0d8c9e..3b6f383 100644 --- a/src/performance.test.ts +++ b/src/performance.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from 'vitest' +import { describe, test, expect } from 'vitest' import { calculate } from './index.js' describe('Performance', () => {