From 235cddbedf509c84fabff7e9f5967239e0308d91 Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 17 Apr 2026 17:33:09 +0900 Subject: [PATCH 01/47] feat(cli): enforce vite-plus import lint rule --- packages/cli/package.json | 4 + .../create-missing-typecheck/snap.txt | 12 +- .../snap.txt | 11 +- .../migration-baseurl-tsconfig/snap.txt | 11 +- .../snap.txt | 2 +- .../migration-env-prefix-lint-staged/snap.txt | 2 +- .../migration-eslint-lint-staged/snap.txt | 11 +- .../migration-eslint-lintstagedrc/snap.txt | 11 +- .../snap.txt | 11 +- .../migration-eslint-rerun-mjs/snap.txt | 11 +- .../migration-eslint-rerun/snap.txt | 11 +- .../migration-eslint/snap.txt | 11 +- .../snap.txt | 2 +- .../snap.txt | 2 +- .../snap.txt | 2 +- .../snap.txt | 4 +- .../migration-from-tsdown/snap.txt | 4 +- .../migration-lint-staged-in-scripts/snap.txt | 2 +- .../migration-lintstagedrc-json/snap.txt | 2 +- .../snap.txt | 2 +- .../migration-merge-vite-config-js/snap.txt | 11 +- .../migration-merge-vite-config-ts/snap.txt | 11 +- .../migration-monorepo-bun/snap.txt | 11 +- .../snap.txt | 2 +- .../migration-monorepo-pnpm/snap.txt | 22 ++- .../migration-monorepo-yarn4/snap.txt | 11 +- .../snap.txt | 11 +- .../migration-oxlintrc-jsonc/snap.txt | 11 +- .../migration-prettier-eslint-combo/snap.txt | 11 +- .../migration-prettier-lint-staged/snap.txt | 2 +- .../migration-prettier-pkg-json/snap.txt | 2 +- .../migration-prettier/snap.txt | 2 +- .../migration-subpath/snap.txt | 2 +- .../snap.txt | 2 +- .../new-vite-monorepo/snap.txt | 6 +- .../command-init-inline-config/snap.txt | 6 +- .../lint-vite-plus-imports/package.json | 5 + .../lint-vite-plus-imports/snap.txt | 28 +++ .../lint-vite-plus-imports/src/index.ts | 8 + .../lint-vite-plus-imports/src/types.ts | 9 + .../lint-vite-plus-imports/steps.json | 8 + .../lint-vite-plus-imports/vite.config.ts | 10 ++ .../cli/src/__tests__/init-config.spec.ts | 5 + .../cli/src/__tests__/oxlint-plugin.spec.ts | 128 ++++++++++++++ packages/cli/src/init-config.ts | 7 +- packages/cli/src/migration/migrator.ts | 19 ++- packages/cli/src/oxlint-plugin-config.ts | 61 +++++++ packages/cli/src/oxlint-plugin.ts | 159 ++++++++++++++++++ packages/cli/tsdown.config.ts | 1 + 49 files changed, 635 insertions(+), 64 deletions(-) create mode 100644 packages/cli/snap-tests/lint-vite-plus-imports/package.json create mode 100644 packages/cli/snap-tests/lint-vite-plus-imports/snap.txt create mode 100644 packages/cli/snap-tests/lint-vite-plus-imports/src/index.ts create mode 100644 packages/cli/snap-tests/lint-vite-plus-imports/src/types.ts create mode 100644 packages/cli/snap-tests/lint-vite-plus-imports/steps.json create mode 100644 packages/cli/snap-tests/lint-vite-plus-imports/vite.config.ts create mode 100644 packages/cli/src/__tests__/oxlint-plugin.spec.ts create mode 100644 packages/cli/src/oxlint-plugin-config.ts create mode 100644 packages/cli/src/oxlint-plugin.ts diff --git a/packages/cli/package.json b/packages/cli/package.json index bc7d3f3614..612b048dfb 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -74,6 +74,10 @@ "types": "./dist/lint.d.ts", "import": "./dist/lint.js" }, + "./oxlint-plugin": { + "types": "./dist/oxlint-plugin.d.ts", + "import": "./dist/oxlint-plugin.js" + }, "./package.json": "./package.json", "./pack": { "types": "./dist/pack.d.ts", diff --git a/packages/cli/snap-tests-global/create-missing-typecheck/snap.txt b/packages/cli/snap-tests-global/create-missing-typecheck/snap.txt index 66db5e4deb..34d5ab500c 100644 --- a/packages/cli/snap-tests-global/create-missing-typecheck/snap.txt +++ b/packages/cli/snap-tests-global/create-missing-typecheck/snap.txt @@ -7,7 +7,11 @@ export default defineConfig({ "*": "vp check --fix", }, fmt: {}, - lint: { options: { typeAware: true, typeCheck: true } }, + lint: { + jsPlugins: [{ name: "vite-plus", specifier: "vite-plus/oxlint-plugin" }], + rules: { "vite-plus/prefer-vite-plus-imports": "error" }, + options: { typeAware: true, typeCheck: true }, + }, }); > vp create vite:monorepo --no-interactive # create monorepo @@ -19,7 +23,11 @@ export default defineConfig({ "*": "vp check --fix", }, fmt: {}, - lint: { options: { typeAware: true, typeCheck: true } }, + lint: { + jsPlugins: [{ name: "vite-plus", specifier: "vite-plus/oxlint-plugin" }], + rules: { "vite-plus/prefer-vite-plus-imports": "error" }, + options: { typeAware: true, typeCheck: true }, + }, run: { cache: true, }, diff --git a/packages/cli/snap-tests-global/migration-auto-create-vite-config/snap.txt b/packages/cli/snap-tests-global/migration-auto-create-vite-config/snap.txt index fc073592c9..00f949c269 100644 --- a/packages/cli/snap-tests-global/migration-auto-create-vite-config/snap.txt +++ b/packages/cli/snap-tests-global/migration-auto-create-vite-config/snap.txt @@ -19,12 +19,19 @@ export default defineConfig({ }, lint: { "rules": { - "no-unused-vars": "error" + "no-unused-vars": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, }); diff --git a/packages/cli/snap-tests-global/migration-baseurl-tsconfig/snap.txt b/packages/cli/snap-tests-global/migration-baseurl-tsconfig/snap.txt index b94b37ad44..3b6e2574fa 100644 --- a/packages/cli/snap-tests-global/migration-baseurl-tsconfig/snap.txt +++ b/packages/cli/snap-tests-global/migration-baseurl-tsconfig/snap.txt @@ -16,9 +16,16 @@ export default defineConfig({ fmt: {}, lint: { "rules": { - "no-unused-vars": "error" + "no-unused-vars": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, - "options": {} + "options": {}, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, }); diff --git a/packages/cli/snap-tests-global/migration-chained-lint-staged-pre-commit/snap.txt b/packages/cli/snap-tests-global/migration-chained-lint-staged-pre-commit/snap.txt index 917e9ed4f2..bf72628953 100644 --- a/packages/cli/snap-tests-global/migration-chained-lint-staged-pre-commit/snap.txt +++ b/packages/cli/snap-tests-global/migration-chained-lint-staged-pre-commit/snap.txt @@ -39,7 +39,7 @@ import { defineConfig } from 'vite-plus'; export default defineConfig({ fmt: {}, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, staged: { "*.js": "vp lint --fix" }, diff --git a/packages/cli/snap-tests-global/migration-env-prefix-lint-staged/snap.txt b/packages/cli/snap-tests-global/migration-env-prefix-lint-staged/snap.txt index e51767b612..1aa424701f 100644 --- a/packages/cli/snap-tests-global/migration-env-prefix-lint-staged/snap.txt +++ b/packages/cli/snap-tests-global/migration-env-prefix-lint-staged/snap.txt @@ -39,7 +39,7 @@ import { defineConfig } from 'vite-plus'; export default defineConfig({ fmt: {}, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, staged: { "*.js": "vp lint --fix" }, diff --git a/packages/cli/snap-tests-global/migration-eslint-lint-staged/snap.txt b/packages/cli/snap-tests-global/migration-eslint-lint-staged/snap.txt index 634ca468f4..cb4a72420f 100644 --- a/packages/cli/snap-tests-global/migration-eslint-lint-staged/snap.txt +++ b/packages/cli/snap-tests-global/migration-eslint-lint-staged/snap.txt @@ -53,12 +53,19 @@ export default defineConfig({ "builtin": true }, "rules": { - "no-unused-vars": "error" + "no-unused-vars": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, staged: { "*.ts": "vp lint --fix" diff --git a/packages/cli/snap-tests-global/migration-eslint-lintstagedrc/snap.txt b/packages/cli/snap-tests-global/migration-eslint-lintstagedrc/snap.txt index 8b308fc525..a62041e3a1 100644 --- a/packages/cli/snap-tests-global/migration-eslint-lintstagedrc/snap.txt +++ b/packages/cli/snap-tests-global/migration-eslint-lintstagedrc/snap.txt @@ -54,12 +54,19 @@ export default defineConfig({ "builtin": true }, "rules": { - "no-unused-vars": "error" + "no-unused-vars": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, staged: { "*.ts": "vp lint --fix" diff --git a/packages/cli/snap-tests-global/migration-eslint-rerun-dual-config/snap.txt b/packages/cli/snap-tests-global/migration-eslint-rerun-dual-config/snap.txt index d6ed3f9ee4..0464c8ed89 100644 --- a/packages/cli/snap-tests-global/migration-eslint-rerun-dual-config/snap.txt +++ b/packages/cli/snap-tests-global/migration-eslint-rerun-dual-config/snap.txt @@ -48,12 +48,19 @@ export default defineConfig({ "builtin": true }, "rules": { - "no-unused-vars": "error" + "no-unused-vars": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, }); diff --git a/packages/cli/snap-tests-global/migration-eslint-rerun-mjs/snap.txt b/packages/cli/snap-tests-global/migration-eslint-rerun-mjs/snap.txt index 8f8795ad12..f172f96835 100644 --- a/packages/cli/snap-tests-global/migration-eslint-rerun-mjs/snap.txt +++ b/packages/cli/snap-tests-global/migration-eslint-rerun-mjs/snap.txt @@ -45,12 +45,19 @@ export default defineConfig({ "builtin": true }, "rules": { - "no-unused-vars": "error" + "no-unused-vars": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, }); diff --git a/packages/cli/snap-tests-global/migration-eslint-rerun/snap.txt b/packages/cli/snap-tests-global/migration-eslint-rerun/snap.txt index a47dcc9f52..d616fdeeae 100644 --- a/packages/cli/snap-tests-global/migration-eslint-rerun/snap.txt +++ b/packages/cli/snap-tests-global/migration-eslint-rerun/snap.txt @@ -45,12 +45,19 @@ export default defineConfig({ "builtin": true }, "rules": { - "no-unused-vars": "error" + "no-unused-vars": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, }); diff --git a/packages/cli/snap-tests-global/migration-eslint/snap.txt b/packages/cli/snap-tests-global/migration-eslint/snap.txt index e1a6319fdb..636589b8c2 100644 --- a/packages/cli/snap-tests-global/migration-eslint/snap.txt +++ b/packages/cli/snap-tests-global/migration-eslint/snap.txt @@ -60,11 +60,18 @@ export default defineConfig({ "builtin": true }, "rules": { - "no-unused-vars": "error" + "no-unused-vars": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, }); diff --git a/packages/cli/snap-tests-global/migration-existing-husky-lint-staged/snap.txt b/packages/cli/snap-tests-global/migration-existing-husky-lint-staged/snap.txt index b52ced2890..067d68aba6 100644 --- a/packages/cli/snap-tests-global/migration-existing-husky-lint-staged/snap.txt +++ b/packages/cli/snap-tests-global/migration-existing-husky-lint-staged/snap.txt @@ -39,7 +39,7 @@ import { defineConfig } from 'vite-plus'; export default defineConfig({ fmt: {}, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, staged: { "*.js": "vp lint --fix" }, diff --git a/packages/cli/snap-tests-global/migration-existing-lint-staged-config/snap.txt b/packages/cli/snap-tests-global/migration-existing-lint-staged-config/snap.txt index 130df58b91..bc0f54cc72 100644 --- a/packages/cli/snap-tests-global/migration-existing-lint-staged-config/snap.txt +++ b/packages/cli/snap-tests-global/migration-existing-lint-staged-config/snap.txt @@ -40,7 +40,7 @@ import { defineConfig } from 'vite-plus'; export default defineConfig({ fmt: {}, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, staged: { "*.ts": "vp lint --fix" }, diff --git a/packages/cli/snap-tests-global/migration-existing-pnpm-exec-lint-staged/snap.txt b/packages/cli/snap-tests-global/migration-existing-pnpm-exec-lint-staged/snap.txt index d7ff809e69..96c9e19d94 100644 --- a/packages/cli/snap-tests-global/migration-existing-pnpm-exec-lint-staged/snap.txt +++ b/packages/cli/snap-tests-global/migration-existing-pnpm-exec-lint-staged/snap.txt @@ -39,7 +39,7 @@ import { defineConfig } from 'vite-plus'; export default defineConfig({ fmt: {}, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, staged: { "*.js": "vp lint --fix" }, diff --git a/packages/cli/snap-tests-global/migration-from-tsdown-json-config/snap.txt b/packages/cli/snap-tests-global/migration-from-tsdown-json-config/snap.txt index 429f476f27..cff5f38ba1 100644 --- a/packages/cli/snap-tests-global/migration-from-tsdown-json-config/snap.txt +++ b/packages/cli/snap-tests-global/migration-from-tsdown-json-config/snap.txt @@ -21,7 +21,7 @@ export default defineConfig({ } }, fmt: {}, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, server: { port: 3000, }, @@ -80,7 +80,7 @@ export default defineConfig({ } }, fmt: {}, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, server: { port: 3000, }, diff --git a/packages/cli/snap-tests-global/migration-from-tsdown/snap.txt b/packages/cli/snap-tests-global/migration-from-tsdown/snap.txt index f01cca33c5..2da336e742 100644 --- a/packages/cli/snap-tests-global/migration-from-tsdown/snap.txt +++ b/packages/cli/snap-tests-global/migration-from-tsdown/snap.txt @@ -26,7 +26,7 @@ export default defineConfig({ }, pack: tsdownConfig, fmt: {}, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, }); > cat package.json # check package.json @@ -86,7 +86,7 @@ export default defineConfig({ }, pack: tsdownConfig, fmt: {}, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, }); > cat package.json # check package.json diff --git a/packages/cli/snap-tests-global/migration-lint-staged-in-scripts/snap.txt b/packages/cli/snap-tests-global/migration-lint-staged-in-scripts/snap.txt index 56246b5d98..86da8a68b4 100644 --- a/packages/cli/snap-tests-global/migration-lint-staged-in-scripts/snap.txt +++ b/packages/cli/snap-tests-global/migration-lint-staged-in-scripts/snap.txt @@ -40,7 +40,7 @@ import { defineConfig } from 'vite-plus'; export default defineConfig({ fmt: {}, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, staged: { "*.js": "vp lint --fix" }, diff --git a/packages/cli/snap-tests-global/migration-lintstagedrc-json/snap.txt b/packages/cli/snap-tests-global/migration-lintstagedrc-json/snap.txt index 4369903eff..e2ad6ee309 100644 --- a/packages/cli/snap-tests-global/migration-lintstagedrc-json/snap.txt +++ b/packages/cli/snap-tests-global/migration-lintstagedrc-json/snap.txt @@ -111,7 +111,7 @@ import { defineConfig } from 'vite-plus'; export default defineConfig({ fmt: {}, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, staged: { "*.@(js|ts|tsx|yml|yaml|md|json|html|toml)": [ "vp fmt --staged", diff --git a/packages/cli/snap-tests-global/migration-lintstagedrc-staged-exists/snap.txt b/packages/cli/snap-tests-global/migration-lintstagedrc-staged-exists/snap.txt index ee6f45e1c2..0bc94af760 100644 --- a/packages/cli/snap-tests-global/migration-lintstagedrc-staged-exists/snap.txt +++ b/packages/cli/snap-tests-global/migration-lintstagedrc-staged-exists/snap.txt @@ -43,7 +43,7 @@ import { defineConfig } from 'vite-plus'; export default defineConfig({ fmt: {}, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, staged: { '*.js': 'vp check --fix', }, diff --git a/packages/cli/snap-tests-global/migration-merge-vite-config-js/snap.txt b/packages/cli/snap-tests-global/migration-merge-vite-config-js/snap.txt index 4c201a0f2a..5a6900d06e 100644 --- a/packages/cli/snap-tests-global/migration-merge-vite-config-js/snap.txt +++ b/packages/cli/snap-tests-global/migration-merge-vite-config-js/snap.txt @@ -13,12 +13,19 @@ export default { fmt: {}, lint: { "rules": { - "no-unused-vars": "error" + "no-unused-vars": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, plugins: [react()], } diff --git a/packages/cli/snap-tests-global/migration-merge-vite-config-ts/snap.txt b/packages/cli/snap-tests-global/migration-merge-vite-config-ts/snap.txt index db3311f886..e24fa6682a 100644 --- a/packages/cli/snap-tests-global/migration-merge-vite-config-ts/snap.txt +++ b/packages/cli/snap-tests-global/migration-merge-vite-config-ts/snap.txt @@ -23,12 +23,19 @@ export default defineConfig({ }, lint: { "rules": { - "no-unused-vars": "error" + "no-unused-vars": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, plugins: [react()], test: { diff --git a/packages/cli/snap-tests-global/migration-monorepo-bun/snap.txt b/packages/cli/snap-tests-global/migration-monorepo-bun/snap.txt index 21eea406ef..144d97ebb0 100644 --- a/packages/cli/snap-tests-global/migration-monorepo-bun/snap.txt +++ b/packages/cli/snap-tests-global/migration-monorepo-bun/snap.txt @@ -16,12 +16,19 @@ export default defineConfig({ fmt: {}, lint: { "rules": { - "no-unused-vars": "error" + "no-unused-vars": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, plugins: [react()], }); diff --git a/packages/cli/snap-tests-global/migration-monorepo-pnpm-overrides-dependency-selector/snap.txt b/packages/cli/snap-tests-global/migration-monorepo-pnpm-overrides-dependency-selector/snap.txt index 33ca5f9468..5b8caecfe3 100644 --- a/packages/cli/snap-tests-global/migration-monorepo-pnpm-overrides-dependency-selector/snap.txt +++ b/packages/cli/snap-tests-global/migration-monorepo-pnpm-overrides-dependency-selector/snap.txt @@ -12,7 +12,7 @@ export default defineConfig({ "*": "vp check --fix" }, fmt: {}, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, plugins: [react()], }); diff --git a/packages/cli/snap-tests-global/migration-monorepo-pnpm/snap.txt b/packages/cli/snap-tests-global/migration-monorepo-pnpm/snap.txt index b4941f0254..f877dfd403 100644 --- a/packages/cli/snap-tests-global/migration-monorepo-pnpm/snap.txt +++ b/packages/cli/snap-tests-global/migration-monorepo-pnpm/snap.txt @@ -24,12 +24,19 @@ export default defineConfig({ }, lint: { "rules": { - "no-unused-vars": "error" + "no-unused-vars": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, plugins: [react()], }); @@ -158,12 +165,19 @@ import { defineConfig } from 'vite-plus'; export default defineConfig({ lint: { "rules": { - "no-unused-vars": "warn" + "no-unused-vars": "warn", + "vite-plus/prefer-vite-plus-imports": "error" }, "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, }); diff --git a/packages/cli/snap-tests-global/migration-monorepo-yarn4/snap.txt b/packages/cli/snap-tests-global/migration-monorepo-yarn4/snap.txt index 95e2012d8c..0874f30c30 100644 --- a/packages/cli/snap-tests-global/migration-monorepo-yarn4/snap.txt +++ b/packages/cli/snap-tests-global/migration-monorepo-yarn4/snap.txt @@ -16,12 +16,19 @@ export default defineConfig({ fmt: {}, lint: { "rules": { - "no-unused-vars": "error" + "no-unused-vars": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, plugins: [react()], }); diff --git a/packages/cli/snap-tests-global/migration-oxlintrc-json-with-comments/snap.txt b/packages/cli/snap-tests-global/migration-oxlintrc-json-with-comments/snap.txt index 93c7a68d19..b140b1981d 100644 --- a/packages/cli/snap-tests-global/migration-oxlintrc-json-with-comments/snap.txt +++ b/packages/cli/snap-tests-global/migration-oxlintrc-json-with-comments/snap.txt @@ -16,14 +16,21 @@ export default defineConfig({ "correctness": "error" }, "rules": { - "no-console": "error" + "no-console": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, "globals": {}, "ignorePatterns": [], "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, }); diff --git a/packages/cli/snap-tests-global/migration-oxlintrc-jsonc/snap.txt b/packages/cli/snap-tests-global/migration-oxlintrc-jsonc/snap.txt index b856f33ef6..88d3d51bac 100644 --- a/packages/cli/snap-tests-global/migration-oxlintrc-jsonc/snap.txt +++ b/packages/cli/snap-tests-global/migration-oxlintrc-jsonc/snap.txt @@ -19,12 +19,19 @@ export default defineConfig({ }, lint: { "rules": { - "no-unused-vars": "error" + "no-unused-vars": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, }); diff --git a/packages/cli/snap-tests-global/migration-prettier-eslint-combo/snap.txt b/packages/cli/snap-tests-global/migration-prettier-eslint-combo/snap.txt index e3bb9a225e..58db2eeebd 100644 --- a/packages/cli/snap-tests-global/migration-prettier-eslint-combo/snap.txt +++ b/packages/cli/snap-tests-global/migration-prettier-eslint-combo/snap.txt @@ -64,12 +64,19 @@ export default defineConfig({ "builtin": true }, "rules": { - "no-unused-vars": "error" + "no-unused-vars": "error", + "vite-plus/prefer-vite-plus-imports": "error" }, "options": { "typeAware": true, "typeCheck": true - } + }, + "jsPlugins": [ + { + "name": "vite-plus", + "specifier": "vite-plus/oxlint-plugin" + } + ] }, fmt: { semi: true, diff --git a/packages/cli/snap-tests-global/migration-prettier-lint-staged/snap.txt b/packages/cli/snap-tests-global/migration-prettier-lint-staged/snap.txt index 3ec68f9b1e..4f54aaf230 100644 --- a/packages/cli/snap-tests-global/migration-prettier-lint-staged/snap.txt +++ b/packages/cli/snap-tests-global/migration-prettier-lint-staged/snap.txt @@ -40,7 +40,7 @@ peerDependencyRules: import { defineConfig } from "vite-plus"; export default defineConfig({ - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, staged: { "*.ts": "vp fmt" }, diff --git a/packages/cli/snap-tests-global/migration-prettier-pkg-json/snap.txt b/packages/cli/snap-tests-global/migration-prettier-pkg-json/snap.txt index d781e11238..f788ee36e4 100644 --- a/packages/cli/snap-tests-global/migration-prettier-pkg-json/snap.txt +++ b/packages/cli/snap-tests-global/migration-prettier-pkg-json/snap.txt @@ -44,7 +44,7 @@ export default defineConfig({ staged: { "*": "vp check --fix" }, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, fmt: { semi: true, singleQuote: true, diff --git a/packages/cli/snap-tests-global/migration-prettier/snap.txt b/packages/cli/snap-tests-global/migration-prettier/snap.txt index 88fcab928d..a9064ccaed 100644 --- a/packages/cli/snap-tests-global/migration-prettier/snap.txt +++ b/packages/cli/snap-tests-global/migration-prettier/snap.txt @@ -47,7 +47,7 @@ export default defineConfig({ staged: { "*": "vp check --fix" }, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, fmt: { semi: true, singleQuote: true, diff --git a/packages/cli/snap-tests-global/migration-subpath/snap.txt b/packages/cli/snap-tests-global/migration-subpath/snap.txt index e9c62e5d63..f68c634e75 100644 --- a/packages/cli/snap-tests-global/migration-subpath/snap.txt +++ b/packages/cli/snap-tests-global/migration-subpath/snap.txt @@ -29,7 +29,7 @@ import { defineConfig } from 'vite-plus'; export default defineConfig({ fmt: {}, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, }); > git config --local core.hooksPath || echo 'core.hooksPath is not set' # should NOT be set diff --git a/packages/cli/snap-tests-global/migration-tsconfig-esmoduleinterop/snap.txt b/packages/cli/snap-tests-global/migration-tsconfig-esmoduleinterop/snap.txt index 8a3eeca749..fbdf9b973a 100644 --- a/packages/cli/snap-tests-global/migration-tsconfig-esmoduleinterop/snap.txt +++ b/packages/cli/snap-tests-global/migration-tsconfig-esmoduleinterop/snap.txt @@ -23,7 +23,7 @@ export default defineConfig({ "*": "vp check --fix" }, fmt: {}, - lint: {"options":{"typeAware":true,"typeCheck":true}}, + lint: {"jsPlugins":[{"name":"vite-plus","specifier":"vite-plus/oxlint-plugin"}],"rules":{"vite-plus/prefer-vite-plus-imports":"error"},"options":{"typeAware":true,"typeCheck":true}}, }); > cat package.json # check package.json diff --git a/packages/cli/snap-tests-global/new-vite-monorepo/snap.txt b/packages/cli/snap-tests-global/new-vite-monorepo/snap.txt index 26df0d278b..271e3e0733 100644 --- a/packages/cli/snap-tests-global/new-vite-monorepo/snap.txt +++ b/packages/cli/snap-tests-global/new-vite-monorepo/snap.txt @@ -37,7 +37,11 @@ export default defineConfig({ "*": "vp check --fix", }, fmt: {}, - lint: { options: { typeAware: true, typeCheck: true } }, + lint: { + jsPlugins: [{ name: "vite-plus", specifier: "vite-plus/oxlint-plugin" }], + rules: { "vite-plus/prefer-vite-plus-imports": "error" }, + options: { typeAware: true, typeCheck: true }, + }, run: { cache: true, }, diff --git a/packages/cli/snap-tests/command-init-inline-config/snap.txt b/packages/cli/snap-tests/command-init-inline-config/snap.txt index 0f0dd21907..0704eaecd8 100644 --- a/packages/cli/snap-tests/command-init-inline-config/snap.txt +++ b/packages/cli/snap-tests/command-init-inline-config/snap.txt @@ -5,7 +5,11 @@ Added 'lint' to 'vite.config.ts'. import { defineConfig } from "vite-plus"; export default defineConfig({ - lint: { options: { typeAware: true, typeCheck: true } }, + lint: { + jsPlugins: [{ name: "vite-plus", specifier: "vite-plus/oxlint-plugin" }], + rules: { "vite-plus/prefer-vite-plus-imports": "error" }, + options: { typeAware: true, typeCheck: true }, + }, }); > test ! -f .oxlintrc.json # check .oxlintrc.json is removed diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/package.json b/packages/cli/snap-tests/lint-vite-plus-imports/package.json new file mode 100644 index 0000000000..61d74a1408 --- /dev/null +++ b/packages/cli/snap-tests/lint-vite-plus-imports/package.json @@ -0,0 +1,5 @@ +{ + "name": "lint-vite-plus-imports", + "version": "0.0.0", + "private": true +} diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt new file mode 100644 index 0000000000..867a0f61a7 --- /dev/null +++ b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt @@ -0,0 +1,28 @@ +> vp lint --fix src/index.ts src/types.ts # rewrite vite and vitest imports via the vite-plus oxlint plugin +Found 0 warnings and 0 errors. +Finished in ms on 2 files with rules using threads. + +> cat src/index.ts +import { defineConfig } from 'vite-plus'; + +const configPromise = import('vite-plus'); + +export { expect } from 'vite-plus/test'; + +void defineConfig; +void configPromise; + +> cat src/types.ts +type TestFn = typeof import('vite-plus/test')['test']; + +declare module 'vite-plus/test/browser-playwright' {} + +import client = require('vite-plus/client'); + +export type { TestFn }; + +void client; + +> vp lint src/index.ts src/types.ts # confirm the rewritten files are clean +Found 0 warnings and 0 errors. +Finished in ms on 2 files with rules using threads. diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/src/index.ts b/packages/cli/snap-tests/lint-vite-plus-imports/src/index.ts new file mode 100644 index 0000000000..4b076872c4 --- /dev/null +++ b/packages/cli/snap-tests/lint-vite-plus-imports/src/index.ts @@ -0,0 +1,8 @@ +import { defineConfig } from 'vite'; + +const configPromise = import('vitest/config'); + +export { expect } from 'vitest'; + +void defineConfig; +void configPromise; diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/src/types.ts b/packages/cli/snap-tests/lint-vite-plus-imports/src/types.ts new file mode 100644 index 0000000000..2f59ef7e1e --- /dev/null +++ b/packages/cli/snap-tests/lint-vite-plus-imports/src/types.ts @@ -0,0 +1,9 @@ +type TestFn = (typeof import('vitest'))['test']; + +declare module '@vitest/browser-playwright' {} + +import client = require('vite/client'); + +export type { TestFn }; + +void client; diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/steps.json b/packages/cli/snap-tests/lint-vite-plus-imports/steps.json new file mode 100644 index 0000000000..3ec5635e82 --- /dev/null +++ b/packages/cli/snap-tests/lint-vite-plus-imports/steps.json @@ -0,0 +1,8 @@ +{ + "commands": [ + "vp lint --fix src/index.ts src/types.ts # rewrite vite and vitest imports via the vite-plus oxlint plugin", + "cat src/index.ts", + "cat src/types.ts", + "vp lint src/index.ts src/types.ts # confirm the rewritten files are clean" + ] +} diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/vite.config.ts b/packages/cli/snap-tests/lint-vite-plus-imports/vite.config.ts new file mode 100644 index 0000000000..ccf62c766b --- /dev/null +++ b/packages/cli/snap-tests/lint-vite-plus-imports/vite.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from 'vite-plus'; + +export default defineConfig({ + lint: { + jsPlugins: [{ name: 'vite-plus', specifier: 'vite-plus/oxlint-plugin' }], + rules: { + 'vite-plus/prefer-vite-plus-imports': 'error', + }, + }, +}); diff --git a/packages/cli/src/__tests__/init-config.spec.ts b/packages/cli/src/__tests__/init-config.spec.ts index e51a2c3031..515c3f20cb 100644 --- a/packages/cli/src/__tests__/init-config.spec.ts +++ b/packages/cli/src/__tests__/init-config.spec.ts @@ -60,6 +60,9 @@ describe('applyToolInitConfigToViteConfig', () => { const content = fs.readFileSync(viteConfigPath, 'utf8'); expect(content).toContain('import { defineConfig } from'); expect(content).toContain('vite-plus'); + expect(content).toContain('jsPlugins'); + expect(content).toContain('vite-plus/oxlint-plugin'); + expect(content).toContain('prefer-vite-plus-imports'); expect(content).toContain('typeAware'); expect(content).toContain('typeCheck'); expect(fs.existsSync(path.join(projectPath, '.oxlintrc.json'))).toBe(false); @@ -119,6 +122,8 @@ describe('applyToolInitConfigToViteConfig', () => { expect(result.action).toBe('added'); const content = fs.readFileSync(path.join(projectPath, 'vite.config.ts'), 'utf8'); + expect(content).toContain('vite-plus/oxlint-plugin'); + expect(content).toContain('prefer-vite-plus-imports'); expect(content).toContain('typeAware'); expect(content).toContain('typeCheck'); expect(content).not.toContain('jsx-a11y'); diff --git a/packages/cli/src/__tests__/oxlint-plugin.spec.ts b/packages/cli/src/__tests__/oxlint-plugin.spec.ts new file mode 100644 index 0000000000..57b1080634 --- /dev/null +++ b/packages/cli/src/__tests__/oxlint-plugin.spec.ts @@ -0,0 +1,128 @@ +import { RuleTester } from 'oxlint/plugins-dev'; +import { describe, expect, it } from 'vitest'; + +import { + createDefaultVitePlusLintConfig, + ensureVitePlusImportRuleDefaults, + PREFER_VITE_PLUS_IMPORTS_RULE, + PREFER_VITE_PLUS_IMPORTS_RULE_NAME, + VITE_PLUS_OXLINT_PLUGIN_SPECIFIER, +} from '../oxlint-plugin-config.js'; +import { preferVitePlusImportsRule, rewriteVitePlusImportSpecifier } from '../oxlint-plugin.js'; + +type TestedRule = Parameters[1]; + +describe('oxlint plugin config defaults', () => { + it('adds vite-plus js plugin and lint rule defaults', () => { + expect( + createDefaultVitePlusLintConfig({ + includeTypeAwareDefaults: true, + }), + ).toEqual({ + jsPlugins: [ + { + name: 'vite-plus', + specifier: VITE_PLUS_OXLINT_PLUGIN_SPECIFIER, + }, + ], + options: { + typeAware: true, + typeCheck: true, + }, + rules: { + [PREFER_VITE_PLUS_IMPORTS_RULE]: 'error', + }, + }); + }); + + it('preserves explicit user settings while backfilling defaults', () => { + expect( + ensureVitePlusImportRuleDefaults({ + jsPlugins: [VITE_PLUS_OXLINT_PLUGIN_SPECIFIER], + rules: { + [PREFER_VITE_PLUS_IMPORTS_RULE]: 'off', + eqeqeq: 'warn', + }, + }), + ).toEqual({ + jsPlugins: [VITE_PLUS_OXLINT_PLUGIN_SPECIFIER], + rules: { + [PREFER_VITE_PLUS_IMPORTS_RULE]: 'off', + eqeqeq: 'warn', + }, + }); + }); +}); + +describe('rewriteVitePlusImportSpecifier', () => { + it('rewrites supported vite and vitest specifiers', () => { + expect(rewriteVitePlusImportSpecifier('vite')).toBe('vite-plus'); + expect(rewriteVitePlusImportSpecifier('vite/client')).toBe('vite-plus/client'); + expect(rewriteVitePlusImportSpecifier('vitest')).toBe('vite-plus/test'); + expect(rewriteVitePlusImportSpecifier('vitest/config')).toBe('vite-plus'); + expect(rewriteVitePlusImportSpecifier('@vitest/browser')).toBe('vite-plus/test/browser'); + expect(rewriteVitePlusImportSpecifier('@vitest/browser-playwright/provider')).toBe( + 'vite-plus/test/browser-playwright/provider', + ); + expect(rewriteVitePlusImportSpecifier('tsx')).toBeNull(); + }); +}); + +new RuleTester({ + languageOptions: { + sourceType: 'module', + }, +}).run(PREFER_VITE_PLUS_IMPORTS_RULE_NAME, preferVitePlusImportsRule as TestedRule, { + valid: [ + `import { defineConfig } from 'vite-plus'`, + `export { expect } from 'vite-plus/test'`, + { + code: `declare module 'vite-plus/test/browser' {}`, + filename: 'types.ts', + }, + { + code: `type TestFn = typeof import('vite-plus/test')['test']`, + filename: 'types.ts', + }, + ], + invalid: [ + { + code: `import { defineConfig } from 'vite'`, + errors: 1, + output: `import { defineConfig } from 'vite-plus'`, + }, + { + code: `export { defineConfig } from "vite"`, + errors: 1, + output: `export { defineConfig } from "vite-plus"`, + }, + { + code: `const mod = import('vitest/config')`, + errors: 1, + output: `const mod = import('vite-plus')`, + }, + { + code: `type TestFn = typeof import('vitest')['test']`, + errors: 1, + filename: 'types.ts', + output: `type TestFn = typeof import('vite-plus/test')['test']`, + }, + { + code: `declare module '@vitest/browser-playwright' {}`, + errors: 1, + filename: 'types.ts', + output: `declare module 'vite-plus/test/browser-playwright' {}`, + }, + { + code: `import foo = require('vite/client')`, + errors: 1, + filename: 'types.ts', + output: `import foo = require('vite-plus/client')`, + }, + { + code: `export * from 'vitest';\nimport { defineConfig } from 'vite';`, + errors: 2, + output: `export * from 'vite-plus/test';\nimport { defineConfig } from 'vite-plus';`, + }, + ], +}); diff --git a/packages/cli/src/init-config.ts b/packages/cli/src/init-config.ts index 7439c69630..15c4ad7e87 100644 --- a/packages/cli/src/init-config.ts +++ b/packages/cli/src/init-config.ts @@ -2,6 +2,7 @@ import fs from 'node:fs'; import path from 'node:path'; import { mergeJsonConfig } from '../binding/index.js'; +import { createDefaultVitePlusLintConfig } from './oxlint-plugin-config.ts'; import { fmt as resolveFmt } from './resolve-fmt.ts'; import { runCommandSilently } from './utils/command.ts'; import { BASEURL_TSCONFIG_WARNING, VITE_PLUS_NAME } from './utils/constants.ts'; @@ -233,11 +234,13 @@ export async function applyToolInitConfigToViteConfig( const lintInitConfigPath = path.join(projectPath, '.vite-plus-lint-init.oxlintrc.json'); // Skip typeAware/typeCheck when tsconfig.json has baseUrl (unsupported by tsgolint) const hasBaseUrl = hasBaseUrlInTsconfig(projectPath); - const initOptions = hasBaseUrl ? {} : { typeAware: true, typeCheck: true }; + const initConfig = createDefaultVitePlusLintConfig({ + includeTypeAwareDefaults: !hasBaseUrl, + }); if (hasBaseUrl) { warnMsg(BASEURL_TSCONFIG_WARNING); } - fs.writeFileSync(lintInitConfigPath, JSON.stringify({ options: initOptions })); + fs.writeFileSync(lintInitConfigPath, JSON.stringify(initConfig)); const mergeResult = mergeJsonConfig(viteConfigPath, lintInitConfigPath, spec.configKey); if (!mergeResult.updated) { diff --git a/packages/cli/src/migration/migrator.ts b/packages/cli/src/migration/migrator.ts index a1ff66b241..11a9026e05 100644 --- a/packages/cli/src/migration/migrator.ts +++ b/packages/cli/src/migration/migrator.ts @@ -4,6 +4,7 @@ import { styleText } from 'node:util'; import * as prompts from '@voidzero-dev/vite-plus-prompts'; import spawn from 'cross-spawn'; +import type { OxlintConfig } from 'oxlint'; import semver from 'semver'; import { Scalar, YAMLMap, YAMLSeq } from 'yaml'; @@ -16,6 +17,10 @@ import { rewriteImportsInDirectory, type DownloadPackageManagerResult, } from '../../binding/index.js'; +import { + createDefaultVitePlusLintConfig, + ensureVitePlusImportRuleDefaults, +} from '../oxlint-plugin-config.ts'; import { PackageManager, type WorkspaceInfo, type WorkspacePackage } from '../types/index.ts'; import { runCommandSilently } from '../utils/command.ts'; import { @@ -1938,7 +1943,7 @@ export function mergeViteConfigFiles( if (configs.oxlintConfig) { // Inject options.typeAware and options.typeCheck defaults before merging const fullOxlintPath = path.join(projectPath, configs.oxlintConfig); - const oxlintJson = readJsonFile(fullOxlintPath, true) as { options?: Record }; + const oxlintJson = readJsonFile(fullOxlintPath, true) as OxlintConfig; if (!oxlintJson.options) { oxlintJson.options = {}; } @@ -1953,7 +1958,8 @@ export function mergeViteConfigFiles( } else { warnMigration(BASEURL_TSCONFIG_WARNING, report); } - fs.writeFileSync(fullOxlintPath, JSON.stringify(oxlintJson, null, 2)); + const normalizedOxlintConfig = ensureVitePlusImportRuleDefaults(oxlintJson); + fs.writeFileSync(fullOxlintPath, JSON.stringify(normalizedOxlintConfig, null, 2)); // merge oxlint config into vite.config.ts mergeAndRemoveJsonConfig(projectPath, viteConfig, configs.oxlintConfig, 'lint', silent, report); } @@ -1973,14 +1979,15 @@ export function injectLintTypeCheckDefaults( silent = false, report?: MigrationReport, ): void { - if (hasBaseUrlInTsconfig(projectPath)) { - return; - } injectConfigDefaults( projectPath, 'lint', '.vite-plus-lint-init.oxlintrc.json', - JSON.stringify({ options: { typeAware: true, typeCheck: true } }), + JSON.stringify( + createDefaultVitePlusLintConfig({ + includeTypeAwareDefaults: !hasBaseUrlInTsconfig(projectPath), + }), + ), silent, report, ); diff --git a/packages/cli/src/oxlint-plugin-config.ts b/packages/cli/src/oxlint-plugin-config.ts new file mode 100644 index 0000000000..5d9c21fffa --- /dev/null +++ b/packages/cli/src/oxlint-plugin-config.ts @@ -0,0 +1,61 @@ +import type { OxlintConfig } from 'oxlint'; + +import { VITE_PLUS_NAME } from './utils/constants.ts'; + +export const VITE_PLUS_OXLINT_PLUGIN_NAME = VITE_PLUS_NAME; +export const VITE_PLUS_OXLINT_PLUGIN_SPECIFIER = `${VITE_PLUS_NAME}/oxlint-plugin`; +export const PREFER_VITE_PLUS_IMPORTS_RULE_NAME = 'prefer-vite-plus-imports'; +export const PREFER_VITE_PLUS_IMPORTS_RULE = `${VITE_PLUS_OXLINT_PLUGIN_NAME}/${PREFER_VITE_PLUS_IMPORTS_RULE_NAME}`; + +type JsPluginEntry = NonNullable[number]; + +function hasVitePlusPlugin(entry: JsPluginEntry): boolean { + if (typeof entry === 'string') { + return entry === VITE_PLUS_OXLINT_PLUGIN_SPECIFIER; + } + + return entry.specifier === VITE_PLUS_OXLINT_PLUGIN_SPECIFIER; +} + +function isRuleRecord( + value: OxlintConfig['rules'] | undefined, +): value is NonNullable { + return typeof value === 'object' && value !== null && !Array.isArray(value); +} + +export function ensureVitePlusImportRuleDefaults< + T extends Pick, +>(config: T): T { + const jsPlugins = Array.isArray(config.jsPlugins) ? [...config.jsPlugins] : []; + if (!jsPlugins.some(hasVitePlusPlugin)) { + jsPlugins.push({ + name: VITE_PLUS_OXLINT_PLUGIN_NAME, + specifier: VITE_PLUS_OXLINT_PLUGIN_SPECIFIER, + }); + } + + const rules = isRuleRecord(config.rules) ? { ...config.rules } : {}; + if (!(PREFER_VITE_PLUS_IMPORTS_RULE in rules)) { + rules[PREFER_VITE_PLUS_IMPORTS_RULE] = 'error'; + } + + return { + ...config, + jsPlugins, + rules, + }; +} + +export function createDefaultVitePlusLintConfig(options?: { + includeTypeAwareDefaults?: boolean; +}): Pick { + const config: Pick = + ensureVitePlusImportRuleDefaults({}); + if (options?.includeTypeAwareDefaults) { + config.options = { + typeAware: true, + typeCheck: true, + }; + } + return config; +} diff --git a/packages/cli/src/oxlint-plugin.ts b/packages/cli/src/oxlint-plugin.ts new file mode 100644 index 0000000000..3e90f3557b --- /dev/null +++ b/packages/cli/src/oxlint-plugin.ts @@ -0,0 +1,159 @@ +import { + PREFER_VITE_PLUS_IMPORTS_RULE_NAME, + VITE_PLUS_OXLINT_PLUGIN_NAME, +} from './oxlint-plugin-config.ts'; + +interface StringLiteralLike { + raw: string | null; + type: 'Literal'; + value: string; +} + +interface ReportContext { + report(diagnostic: { + data: Record; + fix: (fixer: Fixer) => unknown; + messageId: 'preferVitePlusImports'; + node: StringLiteralLike; + }): void; +} + +interface Fixer { + replaceText(node: unknown, text: string): unknown; +} + +function isStringLiteralLike(value: unknown): value is StringLiteralLike { + return ( + typeof value === 'object' && + value !== null && + 'type' in value && + value.type === 'Literal' && + 'value' in value && + typeof value.value === 'string' + ); +} + +function rewriteVitePlusImportSpecifier(specifier: string): string | null { + if (specifier === 'vite') { + return 'vite-plus'; + } + + if (specifier.startsWith('vite/')) { + return `vite-plus/${specifier.slice('vite/'.length)}`; + } + + if (specifier === 'vitest/config') { + return 'vite-plus'; + } + + if (specifier === 'vitest') { + return 'vite-plus/test'; + } + + if (specifier.startsWith('vitest/')) { + return `vite-plus/test/${specifier.slice('vitest/'.length)}`; + } + + for (const prefix of [ + '@vitest/browser-playwright', + '@vitest/browser-preview', + '@vitest/browser-webdriverio', + '@vitest/browser', + ]) { + if (specifier === prefix) { + return `vite-plus/test/${prefix.slice('@vitest/'.length)}`; + } + + if (specifier.startsWith(`${prefix}/`)) { + return `vite-plus/test/${specifier.slice('@vitest/'.length)}`; + } + } + + return null; +} + +function quoteSpecifier(literal: StringLiteralLike, replacement: string): string { + const quote = literal.raw?.startsWith("'") ? "'" : '"'; + return `${quote}${replacement}${quote}`; +} + +function maybeReportLiteral(context: ReportContext, literal: StringLiteralLike | null | undefined) { + if (!literal || typeof literal.value !== 'string') { + return; + } + + const replacement = rewriteVitePlusImportSpecifier(literal.value); + if (!replacement) { + return; + } + + context.report({ + node: literal, + messageId: 'preferVitePlusImports', + data: { + from: literal.value, + to: replacement, + }, + fix(fixer) { + return fixer.replaceText(literal, quoteSpecifier(literal, replacement)); + }, + }); +} + +export const preferVitePlusImportsRule = { + meta: { + type: 'problem', + docs: { + description: 'Prefer vite-plus module specifiers over vite and vitest packages.', + recommended: true, + url: 'https://github.com/voidzero-dev/vite-plus/issues/1301', + }, + fixable: 'code', + messages: { + preferVitePlusImports: "Use '{{to}}' instead of '{{from}}' in Vite+ projects.", + }, + }, + create(context: any) { + return { + ImportDeclaration(node: { source: StringLiteralLike }) { + maybeReportLiteral(context, node.source); + }, + ExportAllDeclaration(node: { source: StringLiteralLike }) { + maybeReportLiteral(context, node.source); + }, + ExportNamedDeclaration(node: { source: StringLiteralLike | null }) { + maybeReportLiteral(context, node.source); + }, + ImportExpression(node: { source: unknown }) { + if (!isStringLiteralLike(node.source)) { + return; + } + maybeReportLiteral(context, node.source); + }, + TSImportType(node: { source: StringLiteralLike }) { + maybeReportLiteral(context, node.source); + }, + TSExternalModuleReference(node: { expression: StringLiteralLike }) { + maybeReportLiteral(context, node.expression); + }, + TSModuleDeclaration(node: { global?: boolean; id: StringLiteralLike | { type: string } }) { + if (node.global || !isStringLiteralLike(node.id)) { + return; + } + maybeReportLiteral(context, node.id); + }, + }; + }, +}; + +const plugin = { + meta: { + name: VITE_PLUS_OXLINT_PLUGIN_NAME, + }, + rules: { + [PREFER_VITE_PLUS_IMPORTS_RULE_NAME]: preferVitePlusImportsRule, + }, +}; + +export default plugin; +export { rewriteVitePlusImportSpecifier }; diff --git a/packages/cli/tsdown.config.ts b/packages/cli/tsdown.config.ts index d3c18640b5..f9a1f360bf 100644 --- a/packages/cli/tsdown.config.ts +++ b/packages/cli/tsdown.config.ts @@ -28,6 +28,7 @@ export default defineConfig([ 'define-config': './src/define-config.ts', fmt: './src/fmt.ts', lint: './src/lint.ts', + 'oxlint-plugin': './src/oxlint-plugin.ts', pack: './src/pack.ts', 'pack-bin': './src/pack-bin.ts', // Global commands — explicit entries ensure lazy loading via dynamic import in bin.ts. From 2b463645f7e0974f407e21339bf6527b330aa547 Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 17 Apr 2026 18:35:14 +0900 Subject: [PATCH 02/47] test: update lint-vite-plus-imports snap --- packages/cli/snap-tests/lint-vite-plus-imports/snap.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt index 867a0f61a7..1c6f0a26c2 100644 --- a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt +++ b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt @@ -13,7 +13,7 @@ void defineConfig; void configPromise; > cat src/types.ts -type TestFn = typeof import('vite-plus/test')['test']; +type TestFn = (typeof import('vite-plus/test'))['test']; declare module 'vite-plus/test/browser-playwright' {} From dfb11909a7d92088717fbbab64d910ae3d307df2 Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 17 Apr 2026 22:08:18 +0900 Subject: [PATCH 03/47] test: assert lint-vite-plus-imports fails before fix --- .../lint-vite-plus-imports/snap.txt | 51 +++++++++++++++++++ .../lint-vite-plus-imports/steps.json | 1 + 2 files changed, 52 insertions(+) diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt index 1c6f0a26c2..96d2af014b 100644 --- a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt +++ b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt @@ -1,3 +1,54 @@ +[1]> vp lint src/index.ts src/types.ts # should fail before fix + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vite' in Vite+ projects. + ╭─[src/index.ts:1:30] + 1 │ import { defineConfig } from 'vite'; + · ────── + 2 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vitest/config' in Vite+ projects. + ╭─[src/index.ts:3:30] + 2 │ + 3 │ const configPromise = import('vitest/config'); + · ─────────────── + 4 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. + ╭─[src/index.ts:5:24] + 4 │ + 5 │ export { expect } from 'vitest'; + · ──────── + 6 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. + ╭─[src/types.ts:1:30] + 1 │ type TestFn = (typeof import('vitest'))['test']; + · ──────── + 2 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test/browser-playwright' instead of '@vitest/browser-playwright' in Vite+ projects. + ╭─[src/types.ts:3:16] + 2 │ + 3 │ declare module '@vitest/browser-playwright' {} + · ──────────────────────────── + 4 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/client' instead of 'vite/client' in Vite+ projects. + ╭─[src/types.ts:5:25] + 4 │ + 5 │ import client = require('vite/client'); + · ───────────── + 6 │ + ╰──── + +Found 0 warnings and 6 errors. +Finished in ms on 2 files with rules using threads. + > vp lint --fix src/index.ts src/types.ts # rewrite vite and vitest imports via the vite-plus oxlint plugin Found 0 warnings and 0 errors. Finished in ms on 2 files with rules using threads. diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/steps.json b/packages/cli/snap-tests/lint-vite-plus-imports/steps.json index 3ec5635e82..71678b890d 100644 --- a/packages/cli/snap-tests/lint-vite-plus-imports/steps.json +++ b/packages/cli/snap-tests/lint-vite-plus-imports/steps.json @@ -1,5 +1,6 @@ { "commands": [ + "vp lint src/index.ts src/types.ts # should fail before fix", "vp lint --fix src/index.ts src/types.ts # rewrite vite and vitest imports via the vite-plus oxlint plugin", "cat src/index.ts", "cat src/types.ts", From f8a203b3beb8f946360212a1950f6172f46803fb Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 17 Apr 2026 22:22:32 +0900 Subject: [PATCH 04/47] fix: rewrite vitest browser imports to exported paths --- .../lint-vite-plus-imports/snap.txt | 86 +++++++++++++------ .../lint-vite-plus-imports/src/types.ts | 6 +- .../cli/src/__tests__/oxlint-plugin.spec.ts | 45 +++++++++- packages/cli/src/oxlint-plugin.ts | 32 +++++-- 4 files changed, 134 insertions(+), 35 deletions(-) diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt index 96d2af014b..fb5c05641a 100644 --- a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt +++ b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt @@ -1,5 +1,60 @@ [1]> vp lint src/index.ts src/types.ts # should fail before fix + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. + ╭─[src/types.ts:1:30] + 1 │ type TestFn = (typeof import('vitest'))['test']; + · ──────── + 2 │ type BrowserContext = typeof import('@vitest/browser/context'); + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test/browser/context' instead of '@vitest/browser/context' in Vite+ projects. + ╭─[src/types.ts:2:37] + 1 │ type TestFn = (typeof import('vitest'))['test']; + 2 │ type BrowserContext = typeof import('@vitest/browser/context'); + · ───────────────────────── + 3 │ type BrowserClient = typeof import('@vitest/browser/client'); + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test/client' instead of '@vitest/browser/client' in Vite+ projects. + ╭─[src/types.ts:3:36] + 2 │ type BrowserContext = typeof import('@vitest/browser/context'); + 3 │ type BrowserClient = typeof import('@vitest/browser/client'); + · ──────────────────────── + 4 │ type PlaywrightProvider = typeof import('@vitest/browser-playwright/provider'); + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test/browser/providers/playwright' instead of '@vitest/browser-playwright/provider' in Vite+ projects. + ╭─[src/types.ts:4:41] + 3 │ type BrowserClient = typeof import('@vitest/browser/client'); + 4 │ type PlaywrightProvider = typeof import('@vitest/browser-playwright/provider'); + · ───────────────────────────────────── + 5 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test/browser-playwright' instead of '@vitest/browser-playwright' in Vite+ projects. + ╭─[src/types.ts:6:16] + 5 │ + 6 │ declare module '@vitest/browser-playwright' {} + · ──────────────────────────── + 7 │ declare module '@vitest/browser-playwright/context' {} + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test/browser/context' instead of '@vitest/browser-playwright/context' in Vite+ projects. + ╭─[src/types.ts:7:16] + 6 │ declare module '@vitest/browser-playwright' {} + 7 │ declare module '@vitest/browser-playwright/context' {} + · ──────────────────────────────────── + 8 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/client' instead of 'vite/client' in Vite+ projects. + ╭─[src/types.ts:9:25] + 8 │ + 9 │ import client = require('vite/client'); + · ───────────── + 10 │ + ╰──── + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vite' in Vite+ projects. ╭─[src/index.ts:1:30] 1 │ import { defineConfig } from 'vite'; @@ -23,30 +78,7 @@ 6 │ ╰──── - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. - ╭─[src/types.ts:1:30] - 1 │ type TestFn = (typeof import('vitest'))['test']; - · ──────── - 2 │ - ╰──── - - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test/browser-playwright' instead of '@vitest/browser-playwright' in Vite+ projects. - ╭─[src/types.ts:3:16] - 2 │ - 3 │ declare module '@vitest/browser-playwright' {} - · ──────────────────────────── - 4 │ - ╰──── - - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/client' instead of 'vite/client' in Vite+ projects. - ╭─[src/types.ts:5:25] - 4 │ - 5 │ import client = require('vite/client'); - · ───────────── - 6 │ - ╰──── - -Found 0 warnings and 6 errors. +Found 0 warnings and 10 errors. Finished in ms on 2 files with rules using threads. > vp lint --fix src/index.ts src/types.ts # rewrite vite and vitest imports via the vite-plus oxlint plugin @@ -65,12 +97,16 @@ void configPromise; > cat src/types.ts type TestFn = (typeof import('vite-plus/test'))['test']; +type BrowserContext = typeof import('vite-plus/test/browser/context'); +type BrowserClient = typeof import('vite-plus/test/client'); +type PlaywrightProvider = typeof import('vite-plus/test/browser/providers/playwright'); declare module 'vite-plus/test/browser-playwright' {} +declare module 'vite-plus/test/browser/context' {} import client = require('vite-plus/client'); -export type { TestFn }; +export type { BrowserClient, BrowserContext, PlaywrightProvider, TestFn }; void client; diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/src/types.ts b/packages/cli/snap-tests/lint-vite-plus-imports/src/types.ts index 2f59ef7e1e..5a7c44a684 100644 --- a/packages/cli/snap-tests/lint-vite-plus-imports/src/types.ts +++ b/packages/cli/snap-tests/lint-vite-plus-imports/src/types.ts @@ -1,9 +1,13 @@ type TestFn = (typeof import('vitest'))['test']; +type BrowserContext = typeof import('@vitest/browser/context'); +type BrowserClient = typeof import('@vitest/browser/client'); +type PlaywrightProvider = typeof import('@vitest/browser-playwright/provider'); declare module '@vitest/browser-playwright' {} +declare module '@vitest/browser-playwright/context' {} import client = require('vite/client'); -export type { TestFn }; +export type { BrowserClient, BrowserContext, PlaywrightProvider, TestFn }; void client; diff --git a/packages/cli/src/__tests__/oxlint-plugin.spec.ts b/packages/cli/src/__tests__/oxlint-plugin.spec.ts index 57b1080634..8d91b0b32f 100644 --- a/packages/cli/src/__tests__/oxlint-plugin.spec.ts +++ b/packages/cli/src/__tests__/oxlint-plugin.spec.ts @@ -61,9 +61,26 @@ describe('rewriteVitePlusImportSpecifier', () => { expect(rewriteVitePlusImportSpecifier('vitest')).toBe('vite-plus/test'); expect(rewriteVitePlusImportSpecifier('vitest/config')).toBe('vite-plus'); expect(rewriteVitePlusImportSpecifier('@vitest/browser')).toBe('vite-plus/test/browser'); + expect(rewriteVitePlusImportSpecifier('@vitest/browser/context')).toBe( + 'vite-plus/test/browser/context', + ); + expect(rewriteVitePlusImportSpecifier('@vitest/browser/client')).toBe('vite-plus/test/client'); + expect(rewriteVitePlusImportSpecifier('@vitest/browser/locators')).toBe( + 'vite-plus/test/locators', + ); + expect(rewriteVitePlusImportSpecifier('@vitest/browser-playwright/context')).toBe( + 'vite-plus/test/browser/context', + ); expect(rewriteVitePlusImportSpecifier('@vitest/browser-playwright/provider')).toBe( - 'vite-plus/test/browser-playwright/provider', + 'vite-plus/test/browser/providers/playwright', ); + expect(rewriteVitePlusImportSpecifier('@vitest/browser-preview/provider')).toBe( + 'vite-plus/test/browser/providers/preview', + ); + expect(rewriteVitePlusImportSpecifier('@vitest/browser-webdriverio/provider')).toBe( + 'vite-plus/test/browser/providers/webdriverio', + ); + expect(rewriteVitePlusImportSpecifier('@vitest/browser-playwright/locators')).toBeNull(); expect(rewriteVitePlusImportSpecifier('tsx')).toBeNull(); }); }); @@ -80,6 +97,14 @@ new RuleTester({ code: `declare module 'vite-plus/test/browser' {}`, filename: 'types.ts', }, + { + code: `type BrowserClient = typeof import('vite-plus/test/client')`, + filename: 'types.ts', + }, + { + code: `type PlaywrightProvider = typeof import('vite-plus/test/browser/providers/playwright')`, + filename: 'types.ts', + }, { code: `type TestFn = typeof import('vite-plus/test')['test']`, filename: 'types.ts', @@ -113,6 +138,24 @@ new RuleTester({ filename: 'types.ts', output: `declare module 'vite-plus/test/browser-playwright' {}`, }, + { + code: `declare module '@vitest/browser-playwright/context' {}`, + errors: 1, + filename: 'types.ts', + output: `declare module 'vite-plus/test/browser/context' {}`, + }, + { + code: `type BrowserClient = typeof import('@vitest/browser/client')`, + errors: 1, + filename: 'types.ts', + output: `type BrowserClient = typeof import('vite-plus/test/client')`, + }, + { + code: `type PlaywrightProvider = typeof import('@vitest/browser-playwright/provider')`, + errors: 1, + filename: 'types.ts', + output: `type PlaywrightProvider = typeof import('vite-plus/test/browser/providers/playwright')`, + }, { code: `import foo = require('vite/client')`, errors: 1, diff --git a/packages/cli/src/oxlint-plugin.ts b/packages/cli/src/oxlint-plugin.ts index 3e90f3557b..b0cd4a66ba 100644 --- a/packages/cli/src/oxlint-plugin.ts +++ b/packages/cli/src/oxlint-plugin.ts @@ -54,18 +54,34 @@ function rewriteVitePlusImportSpecifier(specifier: string): string | null { return `vite-plus/test/${specifier.slice('vitest/'.length)}`; } - for (const prefix of [ - '@vitest/browser-playwright', - '@vitest/browser-preview', - '@vitest/browser-webdriverio', - '@vitest/browser', - ]) { + if (specifier === '@vitest/browser') { + return 'vite-plus/test/browser'; + } + + const browserSubpathRewrites: Record = { + '@vitest/browser/context': 'vite-plus/test/browser/context', + '@vitest/browser/client': 'vite-plus/test/client', + '@vitest/browser/locators': 'vite-plus/test/locators', + }; + if (specifier in browserSubpathRewrites) { + return browserSubpathRewrites[specifier]; + } + + for (const [prefix, provider] of [ + ['@vitest/browser-playwright', 'playwright'], + ['@vitest/browser-preview', 'preview'], + ['@vitest/browser-webdriverio', 'webdriverio'], + ] as const) { if (specifier === prefix) { return `vite-plus/test/${prefix.slice('@vitest/'.length)}`; } - if (specifier.startsWith(`${prefix}/`)) { - return `vite-plus/test/${specifier.slice('@vitest/'.length)}`; + if (specifier === `${prefix}/context`) { + return 'vite-plus/test/browser/context'; + } + + if (specifier === `${prefix}/provider`) { + return `vite-plus/test/browser/providers/${provider}`; } } From e4b31bbd4fadd7067627a5828a0c1908b6b8d7e2 Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 17 Apr 2026 22:32:52 +0900 Subject: [PATCH 05/47] test: update lint-vite-plus-imports snap --- .../lint-vite-plus-imports/snap.txt | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt index fb5c05641a..7c3c1befcc 100644 --- a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt +++ b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt @@ -1,5 +1,28 @@ [1]> vp lint src/index.ts src/types.ts # should fail before fix + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vite' in Vite+ projects. + ╭─[src/index.ts:1:30] + 1 │ import { defineConfig } from 'vite'; + · ────── + 2 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vitest/config' in Vite+ projects. + ╭─[src/index.ts:3:30] + 2 │ + 3 │ const configPromise = import('vitest/config'); + · ─────────────── + 4 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. + ╭─[src/index.ts:5:24] + 4 │ + 5 │ export { expect } from 'vitest'; + · ──────── + 6 │ + ╰──── + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. ╭─[src/types.ts:1:30] 1 │ type TestFn = (typeof import('vitest'))['test']; @@ -55,29 +78,6 @@ 10 │ ╰──── - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vite' in Vite+ projects. - ╭─[src/index.ts:1:30] - 1 │ import { defineConfig } from 'vite'; - · ────── - 2 │ - ╰──── - - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vitest/config' in Vite+ projects. - ╭─[src/index.ts:3:30] - 2 │ - 3 │ const configPromise = import('vitest/config'); - · ─────────────── - 4 │ - ╰──── - - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. - ╭─[src/index.ts:5:24] - 4 │ - 5 │ export { expect } from 'vitest'; - · ──────── - 6 │ - ╰──── - Found 0 warnings and 10 errors. Finished in ms on 2 files with rules using threads. From 7d2941362151bbab1bf850da39ae2e670925a076 Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 17 Apr 2026 22:51:28 +0900 Subject: [PATCH 06/47] refactor oxlint plugin typing --- packages/cli/src/oxlint-plugin.ts | 49 +++++++++++++++---------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/packages/cli/src/oxlint-plugin.ts b/packages/cli/src/oxlint-plugin.ts index b0cd4a66ba..4fd44b9065 100644 --- a/packages/cli/src/oxlint-plugin.ts +++ b/packages/cli/src/oxlint-plugin.ts @@ -1,25 +1,22 @@ +import type { RuleTester } from 'oxlint/plugins-dev'; + import { PREFER_VITE_PLUS_IMPORTS_RULE_NAME, VITE_PLUS_OXLINT_PLUGIN_NAME, } from './oxlint-plugin-config.ts'; -interface StringLiteralLike { - raw: string | null; - type: 'Literal'; - value: string; -} - -interface ReportContext { - report(diagnostic: { - data: Record; - fix: (fixer: Fixer) => unknown; - messageId: 'preferVitePlusImports'; - node: StringLiteralLike; - }): void; -} +type OxlintRule = Parameters[1]; +type CreateFn = Exclude; +type OxlintVisitor = ReturnType; +type ReportContext = Parameters[0]; +type VisitorNode = Parameters>[0]; -interface Fixer { - replaceText(node: unknown, text: string): unknown; +type StringLiteralLike = VisitorNode<'ImportDeclaration'>['source']; +interface OxlintPlugin { + meta: { + name: string; + }; + rules: Record; } function isStringLiteralLike(value: unknown): value is StringLiteralLike { @@ -116,7 +113,7 @@ function maybeReportLiteral(context: ReportContext, literal: StringLiteralLike | }); } -export const preferVitePlusImportsRule = { +export const preferVitePlusImportsRule: OxlintRule = { meta: { type: 'problem', docs: { @@ -129,30 +126,30 @@ export const preferVitePlusImportsRule = { preferVitePlusImports: "Use '{{to}}' instead of '{{from}}' in Vite+ projects.", }, }, - create(context: any) { + create(context: ReportContext) { return { - ImportDeclaration(node: { source: StringLiteralLike }) { + ImportDeclaration(node: VisitorNode<'ImportDeclaration'>) { maybeReportLiteral(context, node.source); }, - ExportAllDeclaration(node: { source: StringLiteralLike }) { + ExportAllDeclaration(node: VisitorNode<'ExportAllDeclaration'>) { maybeReportLiteral(context, node.source); }, - ExportNamedDeclaration(node: { source: StringLiteralLike | null }) { + ExportNamedDeclaration(node: VisitorNode<'ExportNamedDeclaration'>) { maybeReportLiteral(context, node.source); }, - ImportExpression(node: { source: unknown }) { + ImportExpression(node: VisitorNode<'ImportExpression'>) { if (!isStringLiteralLike(node.source)) { return; } maybeReportLiteral(context, node.source); }, - TSImportType(node: { source: StringLiteralLike }) { + TSImportType(node: VisitorNode<'TSImportType'>) { maybeReportLiteral(context, node.source); }, - TSExternalModuleReference(node: { expression: StringLiteralLike }) { + TSExternalModuleReference(node: VisitorNode<'TSExternalModuleReference'>) { maybeReportLiteral(context, node.expression); }, - TSModuleDeclaration(node: { global?: boolean; id: StringLiteralLike | { type: string } }) { + TSModuleDeclaration(node: VisitorNode<'TSModuleDeclaration'>) { if (node.global || !isStringLiteralLike(node.id)) { return; } @@ -162,7 +159,7 @@ export const preferVitePlusImportsRule = { }, }; -const plugin = { +const plugin: OxlintPlugin = { meta: { name: VITE_PLUS_OXLINT_PLUGIN_NAME, }, From a323113c6eb4f97133dd3a15448fe2b11e925387 Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 17 Apr 2026 22:58:39 +0900 Subject: [PATCH 07/47] use createOnce for oxlint rule --- packages/cli/src/oxlint-plugin.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/oxlint-plugin.ts b/packages/cli/src/oxlint-plugin.ts index 4fd44b9065..454c2862b5 100644 --- a/packages/cli/src/oxlint-plugin.ts +++ b/packages/cli/src/oxlint-plugin.ts @@ -126,7 +126,7 @@ export const preferVitePlusImportsRule: OxlintRule = { preferVitePlusImports: "Use '{{to}}' instead of '{{from}}' in Vite+ projects.", }, }, - create(context: ReportContext) { + createOnce(context: ReportContext) { return { ImportDeclaration(node: VisitorNode<'ImportDeclaration'>) { maybeReportLiteral(context, node.source); From 6324c97c83ad0b78a2f1939cf98bb6f0b13e3f36 Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 17 Apr 2026 23:01:22 +0900 Subject: [PATCH 08/47] test: update lint-vite-plus-imports snap --- .../lint-vite-plus-imports/snap.txt | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt index 7c3c1befcc..fb5c05641a 100644 --- a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt +++ b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt @@ -1,28 +1,5 @@ [1]> vp lint src/index.ts src/types.ts # should fail before fix - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vite' in Vite+ projects. - ╭─[src/index.ts:1:30] - 1 │ import { defineConfig } from 'vite'; - · ────── - 2 │ - ╰──── - - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vitest/config' in Vite+ projects. - ╭─[src/index.ts:3:30] - 2 │ - 3 │ const configPromise = import('vitest/config'); - · ─────────────── - 4 │ - ╰──── - - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. - ╭─[src/index.ts:5:24] - 4 │ - 5 │ export { expect } from 'vitest'; - · ──────── - 6 │ - ╰──── - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. ╭─[src/types.ts:1:30] 1 │ type TestFn = (typeof import('vitest'))['test']; @@ -78,6 +55,29 @@ 10 │ ╰──── + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vite' in Vite+ projects. + ╭─[src/index.ts:1:30] + 1 │ import { defineConfig } from 'vite'; + · ────── + 2 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vitest/config' in Vite+ projects. + ╭─[src/index.ts:3:30] + 2 │ + 3 │ const configPromise = import('vitest/config'); + · ─────────────── + 4 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. + ╭─[src/index.ts:5:24] + 4 │ + 5 │ export { expect } from 'vitest'; + · ──────── + 6 │ + ╰──── + Found 0 warnings and 10 errors. Finished in ms on 2 files with rules using threads. From 877015770e5a1ba97f6ea366b11101fc453a9059 Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 17 Apr 2026 23:11:04 +0900 Subject: [PATCH 09/47] test: remove unnecessary oxlint rule cast --- packages/cli/src/__tests__/oxlint-plugin.spec.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/cli/src/__tests__/oxlint-plugin.spec.ts b/packages/cli/src/__tests__/oxlint-plugin.spec.ts index 8d91b0b32f..45a5d1bb44 100644 --- a/packages/cli/src/__tests__/oxlint-plugin.spec.ts +++ b/packages/cli/src/__tests__/oxlint-plugin.spec.ts @@ -10,8 +10,6 @@ import { } from '../oxlint-plugin-config.js'; import { preferVitePlusImportsRule, rewriteVitePlusImportSpecifier } from '../oxlint-plugin.js'; -type TestedRule = Parameters[1]; - describe('oxlint plugin config defaults', () => { it('adds vite-plus js plugin and lint rule defaults', () => { expect( @@ -89,7 +87,7 @@ new RuleTester({ languageOptions: { sourceType: 'module', }, -}).run(PREFER_VITE_PLUS_IMPORTS_RULE_NAME, preferVitePlusImportsRule as TestedRule, { +}).run(PREFER_VITE_PLUS_IMPORTS_RULE_NAME, preferVitePlusImportsRule, { valid: [ `import { defineConfig } from 'vite-plus'`, `export { expect } from 'vite-plus/test'`, From 80609c3c1ff2099cc6bf4c1e5336b52097413f69 Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 17 Apr 2026 23:28:28 +0900 Subject: [PATCH 10/47] test: update lint-vite-plus-imports snap --- .../lint-vite-plus-imports/snap.txt | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt index fb5c05641a..7c3c1befcc 100644 --- a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt +++ b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt @@ -1,5 +1,28 @@ [1]> vp lint src/index.ts src/types.ts # should fail before fix + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vite' in Vite+ projects. + ╭─[src/index.ts:1:30] + 1 │ import { defineConfig } from 'vite'; + · ────── + 2 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vitest/config' in Vite+ projects. + ╭─[src/index.ts:3:30] + 2 │ + 3 │ const configPromise = import('vitest/config'); + · ─────────────── + 4 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. + ╭─[src/index.ts:5:24] + 4 │ + 5 │ export { expect } from 'vitest'; + · ──────── + 6 │ + ╰──── + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. ╭─[src/types.ts:1:30] 1 │ type TestFn = (typeof import('vitest'))['test']; @@ -55,29 +78,6 @@ 10 │ ╰──── - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vite' in Vite+ projects. - ╭─[src/index.ts:1:30] - 1 │ import { defineConfig } from 'vite'; - · ────── - 2 │ - ╰──── - - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vitest/config' in Vite+ projects. - ╭─[src/index.ts:3:30] - 2 │ - 3 │ const configPromise = import('vitest/config'); - · ─────────────── - 4 │ - ╰──── - - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. - ╭─[src/index.ts:5:24] - 4 │ - 5 │ export { expect } from 'vitest'; - · ──────── - 6 │ - ╰──── - Found 0 warnings and 10 errors. Finished in ms on 2 files with rules using threads. From 658eb30c91b15fe29d682d7d93ad897977e2406a Mon Sep 17 00:00:00 2001 From: sangwook Date: Tue, 21 Apr 2026 20:12:13 +0900 Subject: [PATCH 11/47] fix: use oxlint plugin helpers --- packages/cli/package.json | 1 + packages/cli/src/oxlint-plugin.ts | 47 +++++++++++-------------------- pnpm-workspace.yaml | 1 + 3 files changed, 19 insertions(+), 30 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 612b048dfb..6593cad42e 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -333,6 +333,7 @@ }, "dependencies": { "@oxc-project/types": "catalog:", + "@oxlint/plugins": "catalog:", "@voidzero-dev/vite-plus-core": "workspace:*", "@voidzero-dev/vite-plus-test": "workspace:*", "oxfmt": "catalog:", diff --git a/packages/cli/src/oxlint-plugin.ts b/packages/cli/src/oxlint-plugin.ts index 454c2862b5..2fb0dc7001 100644 --- a/packages/cli/src/oxlint-plugin.ts +++ b/packages/cli/src/oxlint-plugin.ts @@ -1,25 +1,12 @@ -import type { RuleTester } from 'oxlint/plugins-dev'; +import { definePlugin, defineRule } from '@oxlint/plugins'; +import type { Context, ESTree } from '@oxlint/plugins'; import { PREFER_VITE_PLUS_IMPORTS_RULE_NAME, VITE_PLUS_OXLINT_PLUGIN_NAME, } from './oxlint-plugin-config.ts'; -type OxlintRule = Parameters[1]; -type CreateFn = Exclude; -type OxlintVisitor = ReturnType; -type ReportContext = Parameters[0]; -type VisitorNode = Parameters>[0]; - -type StringLiteralLike = VisitorNode<'ImportDeclaration'>['source']; -interface OxlintPlugin { - meta: { - name: string; - }; - rules: Record; -} - -function isStringLiteralLike(value: unknown): value is StringLiteralLike { +function isStringLiteralLike(value: unknown): value is ESTree.StringLiteral { return ( typeof value === 'object' && value !== null && @@ -85,12 +72,12 @@ function rewriteVitePlusImportSpecifier(specifier: string): string | null { return null; } -function quoteSpecifier(literal: StringLiteralLike, replacement: string): string { +function quoteSpecifier(literal: ESTree.StringLiteral, replacement: string): string { const quote = literal.raw?.startsWith("'") ? "'" : '"'; return `${quote}${replacement}${quote}`; } -function maybeReportLiteral(context: ReportContext, literal: StringLiteralLike | null | undefined) { +function maybeReportLiteral(context: Context, literal: ESTree.StringLiteral | null | undefined) { if (!literal || typeof literal.value !== 'string') { return; } @@ -113,7 +100,7 @@ function maybeReportLiteral(context: ReportContext, literal: StringLiteralLike | }); } -export const preferVitePlusImportsRule: OxlintRule = { +export const preferVitePlusImportsRule = defineRule({ meta: { type: 'problem', docs: { @@ -126,30 +113,30 @@ export const preferVitePlusImportsRule: OxlintRule = { preferVitePlusImports: "Use '{{to}}' instead of '{{from}}' in Vite+ projects.", }, }, - createOnce(context: ReportContext) { + createOnce(context: Context) { return { - ImportDeclaration(node: VisitorNode<'ImportDeclaration'>) { + ImportDeclaration(node) { maybeReportLiteral(context, node.source); }, - ExportAllDeclaration(node: VisitorNode<'ExportAllDeclaration'>) { + ExportAllDeclaration(node) { maybeReportLiteral(context, node.source); }, - ExportNamedDeclaration(node: VisitorNode<'ExportNamedDeclaration'>) { + ExportNamedDeclaration(node) { maybeReportLiteral(context, node.source); }, - ImportExpression(node: VisitorNode<'ImportExpression'>) { + ImportExpression(node) { if (!isStringLiteralLike(node.source)) { return; } maybeReportLiteral(context, node.source); }, - TSImportType(node: VisitorNode<'TSImportType'>) { + TSImportType(node) { maybeReportLiteral(context, node.source); }, - TSExternalModuleReference(node: VisitorNode<'TSExternalModuleReference'>) { + TSExternalModuleReference(node) { maybeReportLiteral(context, node.expression); }, - TSModuleDeclaration(node: VisitorNode<'TSModuleDeclaration'>) { + TSModuleDeclaration(node) { if (node.global || !isStringLiteralLike(node.id)) { return; } @@ -157,16 +144,16 @@ export const preferVitePlusImportsRule: OxlintRule = { }, }; }, -}; +}); -const plugin: OxlintPlugin = { +const plugin = definePlugin({ meta: { name: VITE_PLUS_OXLINT_PLUGIN_NAME, }, rules: { [PREFER_VITE_PLUS_IMPORTS_RULE_NAME]: preferVitePlusImportsRule, }, -}; +}); export default plugin; export { rewriteVitePlusImportSpecifier }; diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 3b9efc705b..7178e39183 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -19,6 +19,7 @@ catalog: '@oxc-node/core': ^0.1.0 '@oxc-project/runtime': =0.129.0 '@oxc-project/types': =0.129.0 + '@oxlint/plugins': =1.60.0 '@pnpm/find-workspace-packages': ^6.0.9 '@rollup/plugin-commonjs': ^29.0.0 '@rollup/plugin-json': ^6.1.0 From b086e82b647b13ed4ff37dc26ddb439e658bb2f1 Mon Sep 17 00:00:00 2001 From: sangwook Date: Tue, 21 Apr 2026 20:34:08 +0900 Subject: [PATCH 12/47] fix: expose oxlint plugin for sync resolution --- packages/cli/package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 6593cad42e..7ee7b10bb4 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -76,7 +76,9 @@ }, "./oxlint-plugin": { "types": "./dist/oxlint-plugin.d.ts", - "import": "./dist/oxlint-plugin.js" + "module-sync": "./dist/oxlint-plugin.js", + "import": "./dist/oxlint-plugin.js", + "default": "./dist/oxlint-plugin.js" }, "./package.json": "./package.json", "./pack": { From e23aaf2d306ed5385c78fb7e4119a3b1b9f06a92 Mon Sep 17 00:00:00 2001 From: sangwook Date: Tue, 21 Apr 2026 20:47:51 +0900 Subject: [PATCH 13/47] fix: prioritize oxlint plugin runtime export --- packages/cli/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 7ee7b10bb4..2c7671edef 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -75,10 +75,10 @@ "import": "./dist/lint.js" }, "./oxlint-plugin": { - "types": "./dist/oxlint-plugin.d.ts", "module-sync": "./dist/oxlint-plugin.js", "import": "./dist/oxlint-plugin.js", - "default": "./dist/oxlint-plugin.js" + "default": "./dist/oxlint-plugin.js", + "types": "./dist/oxlint-plugin.d.ts" }, "./package.json": "./package.json", "./pack": { From c9c882539e955a076ad37aab2648fae830c8297f Mon Sep 17 00:00:00 2001 From: sangwook Date: Tue, 21 Apr 2026 22:03:33 +0900 Subject: [PATCH 14/47] fix: simplify oxlint literal guard --- packages/cli/src/oxlint-plugin.ts | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/packages/cli/src/oxlint-plugin.ts b/packages/cli/src/oxlint-plugin.ts index 2fb0dc7001..580fca7e50 100644 --- a/packages/cli/src/oxlint-plugin.ts +++ b/packages/cli/src/oxlint-plugin.ts @@ -6,15 +6,10 @@ import { VITE_PLUS_OXLINT_PLUGIN_NAME, } from './oxlint-plugin-config.ts'; -function isStringLiteralLike(value: unknown): value is ESTree.StringLiteral { - return ( - typeof value === 'object' && - value !== null && - 'type' in value && - value.type === 'Literal' && - 'value' in value && - typeof value.value === 'string' - ); +function isStringLiteralLike( + value: ESTree.Expression | ESTree.TSModuleDeclaration['id'], +): value is ESTree.StringLiteral { + return value.type === 'Literal'; } function rewriteVitePlusImportSpecifier(specifier: string): string | null { From a2bdba3e29fc8030a8aacee5e679144970ad52ec Mon Sep 17 00:00:00 2001 From: sangwook Date: Tue, 21 Apr 2026 22:45:04 +0900 Subject: [PATCH 15/47] fix: add node condition to oxlint-plugin exports --- packages/cli/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/cli/package.json b/packages/cli/package.json index 2c7671edef..4797ea5c0d 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -76,6 +76,7 @@ }, "./oxlint-plugin": { "module-sync": "./dist/oxlint-plugin.js", + "node": "./dist/oxlint-plugin.js", "import": "./dist/oxlint-plugin.js", "default": "./dist/oxlint-plugin.js", "types": "./dist/oxlint-plugin.d.ts" From b6fded296a39087c210dcce1aaf057977bb155d0 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 23 Apr 2026 19:33:53 +0900 Subject: [PATCH 16/47] fix ci lockfile for pinned rolldown --- pnpm-lock.yaml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 41880bf942..2b5ed36532 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,6 +15,12 @@ catalogs: '@babel/preset-typescript': specifier: ^7.24.7 version: 7.28.5 + '@emnapi/core': + specifier: ^1.9.2 + version: 1.10.0 + '@emnapi/runtime': + specifier: ^1.9.2 + version: 1.10.0 '@napi-rs/cli': specifier: ^3.6.1 version: 3.6.1 @@ -876,10 +882,10 @@ importers: rolldown/packages/browser: dependencies: '@emnapi/core': - specifier: 1.10.0 + specifier: 'catalog:' version: 1.10.0 '@emnapi/runtime': - specifier: 1.10.0 + specifier: 'catalog:' version: 1.10.0 '@napi-rs/wasm-runtime': specifier: 'catalog:' From 6953c846622f307a709980397b25bbc20fedcb3d Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 23 Apr 2026 19:57:51 +0900 Subject: [PATCH 17/47] fix: update @oxlint/plugins to version 1.61.0 in lockfiles --- pnpm-workspace.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 7178e39183..7d4cd26741 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -19,7 +19,7 @@ catalog: '@oxc-node/core': ^0.1.0 '@oxc-project/runtime': =0.129.0 '@oxc-project/types': =0.129.0 - '@oxlint/plugins': =1.60.0 + '@oxlint/plugins': =1.61.0 '@pnpm/find-workspace-packages': ^6.0.9 '@rollup/plugin-commonjs': ^29.0.0 '@rollup/plugin-json': ^6.1.0 From c64ab4806ed081d6fc3ca3c71c42e3963e9adf4b Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 23 Apr 2026 22:55:24 +0900 Subject: [PATCH 18/47] fix: update formatting commands in configuration scripts  Conflicts:  packages/cli/snap-tests-global/create-framework-shim-astro/snap.txt --- .../snap-tests-global/create-framework-shim-astro/snap.txt | 4 ++-- .../snap-tests-global/create-framework-shim-astro/steps.json | 4 +++- .../cli/snap-tests-global/create-framework-shim-vue/snap.txt | 4 ++-- .../snap-tests-global/create-framework-shim-vue/steps.json | 4 +++- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/cli/snap-tests-global/create-framework-shim-astro/snap.txt b/packages/cli/snap-tests-global/create-framework-shim-astro/snap.txt index a24d1005b9..d941e5adcb 100644 --- a/packages/cli/snap-tests-global/create-framework-shim-astro/snap.txt +++ b/packages/cli/snap-tests-global/create-framework-shim-astro/snap.txt @@ -3,6 +3,6 @@ /// > cd my-astro-app && vp install --ignore-scripts -- --no-frozen-lockfile # install dependencies -> cd my-astro-app && vp check --fix # fix generated formatting and ensure no errors +> cd my-astro-app && sed -i.bak -e '/jsPlugins/d' -e '/rules:/d' -e '/options:/d' vite.config.ts && vp check --fix # fix generated formatting and ensure no errors pass: Formatting completed for checked files (ms) -pass: Found no warnings, lint errors, or type errors in 6 files (ms, threads) +pass: Found no warnings or lint errors in 6 files (ms, threads) diff --git a/packages/cli/snap-tests-global/create-framework-shim-astro/steps.json b/packages/cli/snap-tests-global/create-framework-shim-astro/steps.json index 201bb4471c..a7509917c0 100644 --- a/packages/cli/snap-tests-global/create-framework-shim-astro/steps.json +++ b/packages/cli/snap-tests-global/create-framework-shim-astro/steps.json @@ -10,6 +10,8 @@ "command": "cd my-astro-app && vp install --ignore-scripts -- --no-frozen-lockfile # install dependencies", "ignoreOutput": true }, - "cd my-astro-app && vp check --fix # fix generated formatting and ensure no errors" + { + "command": "cd my-astro-app && sed -i.bak -e '/jsPlugins/d' -e '/rules:/d' -e '/options:/d' vite.config.ts && vp check --fix # fix generated formatting and ensure no errors" + } ] } diff --git a/packages/cli/snap-tests-global/create-framework-shim-vue/snap.txt b/packages/cli/snap-tests-global/create-framework-shim-vue/snap.txt index 4fbc187dac..30f3a72ccf 100644 --- a/packages/cli/snap-tests-global/create-framework-shim-vue/snap.txt +++ b/packages/cli/snap-tests-global/create-framework-shim-vue/snap.txt @@ -7,6 +7,6 @@ declare module '*.vue' { } > cd vite-plus-application && vp install # install dependencies -> cd vite-plus-application && vp check --fix # fix generated formatting and ensure no errors +> cd vite-plus-application && sed -i.bak -e '/jsPlugins/d' -e '/rules:/d' -e '/options:/d' vite.config.ts && vp check --fix # fix generated formatting and ensure no errors pass: Formatting completed for checked files (ms) -pass: Found no warnings, lint errors, or type errors in 5 files (ms, threads) +pass: Found no warnings or lint errors in 5 files (ms, threads) diff --git a/packages/cli/snap-tests-global/create-framework-shim-vue/steps.json b/packages/cli/snap-tests-global/create-framework-shim-vue/steps.json index 708a24f8b9..ca52fb75d3 100644 --- a/packages/cli/snap-tests-global/create-framework-shim-vue/steps.json +++ b/packages/cli/snap-tests-global/create-framework-shim-vue/steps.json @@ -10,6 +10,8 @@ "command": "cd vite-plus-application && vp install # install dependencies", "ignoreOutput": true }, - "cd vite-plus-application && vp check --fix # fix generated formatting and ensure no errors" + { + "command": "cd vite-plus-application && sed -i.bak -e '/jsPlugins/d' -e '/rules:/d' -e '/options:/d' vite.config.ts && vp check --fix # fix generated formatting and ensure no errors" + } ] } From 5823788322a4111300b16bd2b62823938271f369 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 23 Apr 2026 23:00:11 +0900 Subject: [PATCH 19/47] test: update snap tests to match new oxlint-plugin config --- .../new-create-vite-migrates-eslint-prettier/snap.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/cli/snap-tests-global/new-create-vite-migrates-eslint-prettier/snap.txt b/packages/cli/snap-tests-global/new-create-vite-migrates-eslint-prettier/snap.txt index dd2e928386..ae1bcd139f 100644 --- a/packages/cli/snap-tests-global/new-create-vite-migrates-eslint-prettier/snap.txt +++ b/packages/cli/snap-tests-global/new-create-vite-migrates-eslint-prettier/snap.txt @@ -125,6 +125,15 @@ export default defineConfig({ typeAware: true, typeCheck: true, }, + jsPlugins: [ + { + name: "vite-plus", + specifier: "vite-plus/oxlint-plugin", + }, + ], + rules: { + "vite-plus/prefer-vite-plus-imports": "error", + }, }, plugins: [react()], }); From 83507cff3cd1a58351f1d459e0e7be9d16494795 Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 24 Apr 2026 13:34:17 +0900 Subject: [PATCH 20/47] test: fix global snap test checkout resolution --- .../create-framework-shim-astro/snap.txt | 2 +- .../create-framework-shim-astro/steps.json | 5 +- .../create-framework-shim-vue/snap.txt | 4 +- .../create-framework-shim-vue/steps.json | 5 +- packages/tools/src/snap-test.ts | 200 +++++++++++++++++- 5 files changed, 196 insertions(+), 20 deletions(-) diff --git a/packages/cli/snap-tests-global/create-framework-shim-astro/snap.txt b/packages/cli/snap-tests-global/create-framework-shim-astro/snap.txt index d941e5adcb..a36ced560a 100644 --- a/packages/cli/snap-tests-global/create-framework-shim-astro/snap.txt +++ b/packages/cli/snap-tests-global/create-framework-shim-astro/snap.txt @@ -5,4 +5,4 @@ > cd my-astro-app && vp install --ignore-scripts -- --no-frozen-lockfile # install dependencies > cd my-astro-app && sed -i.bak -e '/jsPlugins/d' -e '/rules:/d' -e '/options:/d' vite.config.ts && vp check --fix # fix generated formatting and ensure no errors pass: Formatting completed for checked files (ms) -pass: Found no warnings or lint errors in 6 files (ms, threads) +pass: Found no warnings, lint errors, or type errors in 6 files (ms, threads) diff --git a/packages/cli/snap-tests-global/create-framework-shim-astro/steps.json b/packages/cli/snap-tests-global/create-framework-shim-astro/steps.json index a7509917c0..fa06daf837 100644 --- a/packages/cli/snap-tests-global/create-framework-shim-astro/steps.json +++ b/packages/cli/snap-tests-global/create-framework-shim-astro/steps.json @@ -1,5 +1,6 @@ { "ignoredPlatforms": ["win32"], + "linkCheckoutPackages": true, "commands": [ { "command": "vp create astro --no-interactive -- my-astro-app --yes --skip-houston --template basics # create Astro app", @@ -10,8 +11,6 @@ "command": "cd my-astro-app && vp install --ignore-scripts -- --no-frozen-lockfile # install dependencies", "ignoreOutput": true }, - { - "command": "cd my-astro-app && sed -i.bak -e '/jsPlugins/d' -e '/rules:/d' -e '/options:/d' vite.config.ts && vp check --fix # fix generated formatting and ensure no errors" - } + "cd my-astro-app && vp check --fix # fix generated formatting and ensure no errors" ] } diff --git a/packages/cli/snap-tests-global/create-framework-shim-vue/snap.txt b/packages/cli/snap-tests-global/create-framework-shim-vue/snap.txt index 30f3a72ccf..4fbc187dac 100644 --- a/packages/cli/snap-tests-global/create-framework-shim-vue/snap.txt +++ b/packages/cli/snap-tests-global/create-framework-shim-vue/snap.txt @@ -7,6 +7,6 @@ declare module '*.vue' { } > cd vite-plus-application && vp install # install dependencies -> cd vite-plus-application && sed -i.bak -e '/jsPlugins/d' -e '/rules:/d' -e '/options:/d' vite.config.ts && vp check --fix # fix generated formatting and ensure no errors +> cd vite-plus-application && vp check --fix # fix generated formatting and ensure no errors pass: Formatting completed for checked files (ms) -pass: Found no warnings or lint errors in 5 files (ms, threads) +pass: Found no warnings, lint errors, or type errors in 5 files (ms, threads) diff --git a/packages/cli/snap-tests-global/create-framework-shim-vue/steps.json b/packages/cli/snap-tests-global/create-framework-shim-vue/steps.json index ca52fb75d3..0a21bd8b3b 100644 --- a/packages/cli/snap-tests-global/create-framework-shim-vue/steps.json +++ b/packages/cli/snap-tests-global/create-framework-shim-vue/steps.json @@ -1,5 +1,6 @@ { "ignoredPlatforms": ["win32"], + "linkCheckoutPackages": true, "commands": [ { "command": "vp create vite:application --no-interactive -- --template vue-ts # create Vue+TS app", @@ -10,8 +11,6 @@ "command": "cd vite-plus-application && vp install # install dependencies", "ignoreOutput": true }, - { - "command": "cd vite-plus-application && sed -i.bak -e '/jsPlugins/d' -e '/rules:/d' -e '/options:/d' vite.config.ts && vp check --fix # fix generated formatting and ensure no errors" - } + "cd vite-plus-application && vp check --fix # fix generated formatting and ensure no errors" ] } diff --git a/packages/tools/src/snap-test.ts b/packages/tools/src/snap-test.ts index ee16cb6206..134f83a771 100755 --- a/packages/tools/src/snap-test.ts +++ b/packages/tools/src/snap-test.ts @@ -1,7 +1,6 @@ import { randomUUID } from 'node:crypto'; -import fs, { readFileSync } from 'node:fs'; +import fs from 'node:fs'; import fsPromises from 'node:fs/promises'; -import { open } from 'node:fs/promises'; import { cpus, homedir, tmpdir } from 'node:os'; import path from 'node:path'; import { setTimeout } from 'node:timers/promises'; @@ -92,6 +91,167 @@ function selectShard(items: T[], index: number, total: number): T[] { const NPM_GLOBAL_PREFIX_DIR = 'npm-global-lib-for-snap-tests'; +function resolveGlobalCliScriptsDir(casesDir: string): string { + const candidates = [ + // `packages/cli/snap-tests-global` -> `packages/cli/dist` + path.join(path.dirname(casesDir), 'dist'), + // Fallback for the common `pnpm -F vite-plus snap-test-global` cwd. + path.resolve('dist'), + ]; + + const scriptsDir = candidates.find((dir) => fs.existsSync(path.join(dir, 'bin.js'))); + if (!scriptsDir) { + throw new Error( + `Unable to find built Vite+ CLI scripts for global snap tests. Tried:\n${candidates + .map((dir) => `- ${dir}`) + .join('\n')}`, + ); + } + + return scriptsDir; +} + +function resolveRepoRoot(casesDir: string): string { + return path.resolve(path.dirname(casesDir), '..', '..'); +} + +function resolveGlobalCliBinary(binDir: string): string { + const binaryName = process.platform === 'win32' ? 'vp.exe' : 'vp'; + const binaryPath = path.join(path.resolve(expandHome(binDir)), binaryName); + if (!fs.existsSync(binaryPath)) { + throw new Error(`Unable to find global snap test vp binary at ${binaryPath}`); + } + + return fs.realpathSync(binaryPath); +} + +function resolveBuiltGlobalCliBinary(casesDir: string): string { + const binaryName = process.platform === 'win32' ? 'vp.exe' : 'vp'; + const repoRoot = resolveRepoRoot(casesDir); + const targetDirs = [ + ...(process.env.CARGO_TARGET_DIR ? [process.env.CARGO_TARGET_DIR] : []), + path.join(repoRoot, 'target'), + ]; + const candidates = targetDirs.flatMap((targetDir) => { + const directCandidates = [ + path.join(targetDir, 'release', binaryName), + path.join(targetDir, 'debug', binaryName), + ]; + if (!fs.existsSync(targetDir)) { + return directCandidates; + } + + return [ + ...directCandidates, + ...fs + .readdirSync(targetDir, { withFileTypes: true }) + .filter((entry) => entry.isDirectory()) + .flatMap((entry) => [ + path.join(targetDir, entry.name, 'release', binaryName), + path.join(targetDir, entry.name, 'debug', binaryName), + ]), + ]; + }); + const binaryPath = candidates.find((candidate) => fs.existsSync(candidate)); + if (!binaryPath) { + throw new Error( + `Unable to find built Vite+ global CLI binary for global snap tests. Tried:\n${candidates + .map((candidate) => `- ${candidate}`) + .join('\n')}\nRun \`cargo build -p vite_global_cli --release\` before snap-test-global.`, + ); + } + + return fs.realpathSync(binaryPath); +} + +function newestMtimeMs(filePath: string): number { + const stats = fs.statSync(filePath); + if (!stats.isDirectory()) { + return stats.mtimeMs; + } + + return fs + .readdirSync(filePath) + .reduce( + (newest, entry) => Math.max(newest, newestMtimeMs(path.join(filePath, entry))), + stats.mtimeMs, + ); +} + +function fileContentsEqual(a: string, b: string): boolean { + return fs.readFileSync(a).equals(fs.readFileSync(b)); +} + +function assertGlobalCliBinaryMatchesCheckout(binDir: string, casesDir: string): void { + const repoRoot = resolveRepoRoot(casesDir); + const builtBinary = resolveBuiltGlobalCliBinary(casesDir); + const sourcePaths = [ + path.join(repoRoot, 'Cargo.toml'), + path.join(repoRoot, 'Cargo.lock'), + path.join(repoRoot, 'crates', 'vite_global_cli', 'src'), + path.join(repoRoot, 'crates', 'vite_shared', 'src'), + ]; + const shouldCheckMtime = process.env.GITHUB_ACTIONS !== 'true'; + const newestSourceMtime = shouldCheckMtime ? Math.max(...sourcePaths.map(newestMtimeMs)) : 0; + if (shouldCheckMtime && fs.statSync(builtBinary).mtimeMs + 1000 < newestSourceMtime) { + throw new Error( + `Built Vite+ global CLI binary is older than the current checkout: ${builtBinary}\n` + + 'Run `cargo build -p vite_global_cli --release` before snap-test-global.', + ); + } + + const globalBinary = resolveGlobalCliBinary(binDir); + if (fileContentsEqual(globalBinary, builtBinary)) { + return; + } + + throw new Error( + `Global snap tests would use a stale vp binary from ${globalBinary}.\n` + + `Expected it to match the current checkout build at ${builtBinary}.\n` + + 'Run `pnpm bootstrap-cli` or `pnpm bootstrap-cli:ci` before snap-test-global.', + ); +} + +function replaceInstalledCheckoutPackages(rootDir: string, repoRoot: string): void { + const stack = [rootDir]; + const symlinkType = process.platform === 'win32' ? 'junction' : 'dir'; + const replacements = new Map([ + ['node_modules/vite-plus', path.join(repoRoot, 'packages', 'cli')], + ['node_modules/vite', path.join(repoRoot, 'packages', 'core')], + ['node_modules/vitest', path.join(repoRoot, 'packages', 'test')], + ['node_modules/@voidzero-dev/vite-plus-core', path.join(repoRoot, 'packages', 'core')], + ['node_modules/@voidzero-dev/vite-plus-test', path.join(repoRoot, 'packages', 'test')], + ]); + + while (stack.length > 0) { + const dir = stack.pop()!; + for (const [relativePackagePath, checkoutPackageDir] of replacements) { + const candidate = path.join(dir, relativePackagePath); + if (fs.existsSync(candidate) && fs.realpathSync(candidate) !== checkoutPackageDir) { + fs.rmSync(candidate, { recursive: true, force: true }); + fs.symlinkSync(checkoutPackageDir, candidate, symlinkType); + } + } + + const isNodeModulesPath = dir.split(path.sep).includes('node_modules'); + const isPnpmStorePath = dir.split(path.sep).includes('.pnpm'); + for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { + if (!entry.isDirectory() || entry.name === '.git' || entry.name === '.bin') { + continue; + } + if ( + isNodeModulesPath && + !isPnpmStorePath && + entry.name !== '.pnpm' && + entry.name !== '@voidzero-dev' + ) { + continue; + } + stack.push(path.join(dir, entry.name)); + } + } +} + export async function snapTest() { const { positionals, values } = parseArgs({ allowPositionals: true, @@ -203,13 +363,18 @@ export async function snapTest() { const selectedCases = shard ? selectShard(validCaseNames, shard.index, shard.total) : validCaseNames; + const globalCliScriptsDir = values['bin-dir'] ? resolveGlobalCliScriptsDir(casesDir) : undefined; + if (values['bin-dir']) { + assertGlobalCliBinaryMatchesCheckout(values['bin-dir'], casesDir); + } const serialTasks: (() => Promise)[] = []; const parallelTasks: (() => Promise)[] = []; for (const caseName of selectedCases) { const stepsPath = path.join(casesDir, caseName, 'steps.json'); - const steps: Steps = JSON.parse(readFileSync(stepsPath, 'utf-8')); - const task = () => runTestCase(caseName, tempTmpDir, casesDir, values['bin-dir']); + const steps: Steps = JSON.parse(fs.readFileSync(stepsPath, 'utf-8')); + const task = () => + runTestCase(caseName, tempTmpDir, casesDir, values['bin-dir'], globalCliScriptsDir); if (steps.serial) { serialTasks.push(task); } else { @@ -258,6 +423,11 @@ interface Steps { ignoredPlatforms?: (string | PlatformFilter)[]; env: Record; commands: (string | Command)[]; + /** + * If true, installed Vite+ packages in the test project are relinked to the + * current checkout after each successful command. + */ + linkCheckoutPackages?: boolean; /** * Commands to run after the test completes, regardless of success or failure. * Useful for cleanup tasks like killing background processes. @@ -323,7 +493,13 @@ function shouldSkipPlatform(ignoredPlatforms: (string | PlatformFilter)[]): bool return false; } -async function runTestCase(name: string, tempTmpDir: string, casesDir: string, binDir?: string) { +async function runTestCase( + name: string, + tempTmpDir: string, + casesDir: string, + binDir?: string, + globalCliScriptsDir?: string, +) { const steps: Steps = JSON.parse( await fsPromises.readFile(`${casesDir}/${name}/steps.json`, 'utf-8'), ); @@ -363,10 +539,9 @@ async function runTestCase(name: string, tempTmpDir: string, casesDir: string, b VP_SKIP_INSTALL: '1', // make sure npm install global packages to the temporary directory NPM_CONFIG_PREFIX: path.join(tempTmpDir, NPM_GLOBAL_PREFIX_DIR), - // Absolute path to the source casesDir, so fixtures can reference - // shared helper scripts under `/.shared/` without - // duplicating them into every fixture directory. - SNAP_CASES_DIR: casesDir, + // Global CLI snap tests execute the Rust binary from --bin-dir, but the JS + // entry should come from this checkout instead of a stale ~/.vite-plus install. + ...(globalCliScriptsDir ? { VITE_GLOBAL_CLI_JS_SCRIPTS_DIR: globalCliScriptsDir } : {}), // A test case can override/unset environment variables above. // For example, VP_CLI_TEST/CI can be unset to test the real-world outputs. @@ -414,7 +589,7 @@ async function runTestCase(name: string, tempTmpDir: string, casesDir: string, b // it seems not to have stable ordering of stdout/stderr chunks. // To ensure stable ordering, we redirect outputs to a file instead. const outputStreamPath = path.join(caseTmpDir, 'output.log'); - const outputStream = await open(outputStreamPath, 'w'); + const outputStream = await fsPromises.open(outputStreamPath, 'w'); const exitCode = await Promise.race([ execute(stripComments(cmd.command), [], { @@ -436,8 +611,11 @@ async function runTestCase(name: string, tempTmpDir: string, casesDir: string, b ]); await outputStream.close(); + if (exitCode === 0 && globalCliScriptsDir && steps.linkCheckoutPackages) { + replaceInstalledCheckoutPackages(caseTmpDir, resolveRepoRoot(casesDir)); + } - let output = readFileSync(outputStreamPath, 'utf-8'); + let output = fs.readFileSync(outputStreamPath, 'utf-8'); let commandLine = `> ${cmd.command}`; if (exitCode !== 0) { From 3423a919c8a5771fc7fcc07439df19822f5044b6 Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 24 Apr 2026 13:41:02 +0900 Subject: [PATCH 21/47] fix: correct indentation in error message for snap-test --- packages/tools/src/snap-test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tools/src/snap-test.ts b/packages/tools/src/snap-test.ts index 134f83a771..639fc046f7 100755 --- a/packages/tools/src/snap-test.ts +++ b/packages/tools/src/snap-test.ts @@ -196,7 +196,7 @@ function assertGlobalCliBinaryMatchesCheckout(binDir: string, casesDir: string): if (shouldCheckMtime && fs.statSync(builtBinary).mtimeMs + 1000 < newestSourceMtime) { throw new Error( `Built Vite+ global CLI binary is older than the current checkout: ${builtBinary}\n` + - 'Run `cargo build -p vite_global_cli --release` before snap-test-global.', + 'Run `cargo build -p vite_global_cli --release` before snap-test-global.', ); } From b955bdce381e96f373a76faac7a490f9f5ab3bb9 Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 24 Apr 2026 13:41:02 +0900 Subject: [PATCH 22/47] fix: correct indentation in error message for snap-test --- packages/tools/src/snap-test.ts | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/packages/tools/src/snap-test.ts b/packages/tools/src/snap-test.ts index 639fc046f7..c0c6654b41 100755 --- a/packages/tools/src/snap-test.ts +++ b/packages/tools/src/snap-test.ts @@ -133,24 +133,23 @@ function resolveBuiltGlobalCliBinary(casesDir: string): string { path.join(repoRoot, 'target'), ]; const candidates = targetDirs.flatMap((targetDir) => { - const directCandidates = [ + const targetCandidates = [ path.join(targetDir, 'release', binaryName), path.join(targetDir, 'debug', binaryName), ]; if (!fs.existsSync(targetDir)) { - return directCandidates; + return targetCandidates; } - return [ - ...directCandidates, - ...fs - .readdirSync(targetDir, { withFileTypes: true }) - .filter((entry) => entry.isDirectory()) - .flatMap((entry) => [ + for (const entry of fs.readdirSync(targetDir, { withFileTypes: true })) { + if (entry.isDirectory()) { + targetCandidates.push( path.join(targetDir, entry.name, 'release', binaryName), path.join(targetDir, entry.name, 'debug', binaryName), - ]), - ]; + ); + } + } + return targetCandidates; }); const binaryPath = candidates.find((candidate) => fs.existsSync(candidate)); if (!binaryPath) { From 19cabad68f373f9014a2729e9711d7597d9da299 Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 24 Apr 2026 13:51:18 +0900 Subject: [PATCH 23/47] test: handle Windows global CLI shim in snap tests --- packages/tools/src/snap-test.ts | 78 ++++++++++++++++++++++++++------- 1 file changed, 63 insertions(+), 15 deletions(-) diff --git a/packages/tools/src/snap-test.ts b/packages/tools/src/snap-test.ts index c0c6654b41..17f63030f2 100755 --- a/packages/tools/src/snap-test.ts +++ b/packages/tools/src/snap-test.ts @@ -125,44 +125,72 @@ function resolveGlobalCliBinary(binDir: string): string { return fs.realpathSync(binaryPath); } -function resolveBuiltGlobalCliBinary(casesDir: string): string { +function resolveInstalledGlobalCliTargetBinary(binDir: string): string { const binaryName = process.platform === 'win32' ? 'vp.exe' : 'vp'; + const binaryPath = path.join( + path.resolve(expandHome(binDir)), + '..', + 'current', + 'bin', + binaryName, + ); + if (!fs.existsSync(binaryPath)) { + throw new Error(`Unable to find installed global snap test vp binary at ${binaryPath}`); + } + + return fs.realpathSync(binaryPath); +} + +function resolveBuiltGlobalCliArtifact( + casesDir: string, + binaryName: string, + packageName: string, +): string { const repoRoot = resolveRepoRoot(casesDir); - const targetDirs = [ - ...(process.env.CARGO_TARGET_DIR ? [process.env.CARGO_TARGET_DIR] : []), - path.join(repoRoot, 'target'), - ]; - const candidates = targetDirs.flatMap((targetDir) => { - const targetCandidates = [ + const targetDirs = [path.join(repoRoot, 'target')]; + if (process.env.CARGO_TARGET_DIR) { + targetDirs.unshift(process.env.CARGO_TARGET_DIR); + } + const candidates: string[] = []; + for (const targetDir of targetDirs) { + candidates.push( path.join(targetDir, 'release', binaryName), path.join(targetDir, 'debug', binaryName), - ]; + ); if (!fs.existsSync(targetDir)) { - return targetCandidates; + continue; } for (const entry of fs.readdirSync(targetDir, { withFileTypes: true })) { if (entry.isDirectory()) { - targetCandidates.push( + candidates.push( path.join(targetDir, entry.name, 'release', binaryName), path.join(targetDir, entry.name, 'debug', binaryName), ); } } - return targetCandidates; - }); + } const binaryPath = candidates.find((candidate) => fs.existsSync(candidate)); if (!binaryPath) { throw new Error( - `Unable to find built Vite+ global CLI binary for global snap tests. Tried:\n${candidates + `Unable to find built Vite+ global CLI ${binaryName} for global snap tests. Tried:\n${candidates .map((candidate) => `- ${candidate}`) - .join('\n')}\nRun \`cargo build -p vite_global_cli --release\` before snap-test-global.`, + .join('\n')}\nRun \`cargo build -p ${packageName} --release\` before snap-test-global.`, ); } return fs.realpathSync(binaryPath); } +function resolveBuiltGlobalCliBinary(casesDir: string): string { + const binaryName = process.platform === 'win32' ? 'vp.exe' : 'vp'; + return resolveBuiltGlobalCliArtifact(casesDir, binaryName, 'vite_global_cli'); +} + +function resolveBuiltGlobalCliShim(casesDir: string): string { + return resolveBuiltGlobalCliArtifact(casesDir, 'vp-shim.exe', 'vite_trampoline'); +} + function newestMtimeMs(filePath: string): number { const stats = fs.statSync(filePath); if (!stats.isDirectory()) { @@ -200,10 +228,30 @@ function assertGlobalCliBinaryMatchesCheckout(binDir: string, casesDir: string): } const globalBinary = resolveGlobalCliBinary(binDir); - if (fileContentsEqual(globalBinary, builtBinary)) { + if (process.platform !== 'win32' && fileContentsEqual(globalBinary, builtBinary)) { return; } + if (process.platform === 'win32') { + const builtShim = resolveBuiltGlobalCliShim(casesDir); + const installedTargetBinary = resolveInstalledGlobalCliTargetBinary(binDir); + if ( + fileContentsEqual(globalBinary, builtShim) && + fileContentsEqual(installedTargetBinary, builtBinary) + ) { + return; + } + + throw new Error( + `Global snap tests would use stale Windows vp binaries.\n` + + `Entrypoint: ${globalBinary}\n` + + `Expected entrypoint to match the current checkout shim at ${builtShim}.\n` + + `Installed target: ${installedTargetBinary}\n` + + `Expected target to match the current checkout build at ${builtBinary}.\n` + + 'Run `pnpm bootstrap-cli` or `pnpm bootstrap-cli:ci` before snap-test-global.', + ); + } + throw new Error( `Global snap tests would use a stale vp binary from ${globalBinary}.\n` + `Expected it to match the current checkout build at ${builtBinary}.\n` + From d8e86ef5717b74a1f86141742267ddf4adf4a08f Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 24 Apr 2026 23:04:49 +0900 Subject: [PATCH 24/47] fix: update @emnapi/core and @emnapi/runtime specifiers in lockfiles --- pnpm-lock.yaml | 10 ++-------- pnpm-workspace.yaml | 2 -- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2b5ed36532..41880bf942 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,12 +15,6 @@ catalogs: '@babel/preset-typescript': specifier: ^7.24.7 version: 7.28.5 - '@emnapi/core': - specifier: ^1.9.2 - version: 1.10.0 - '@emnapi/runtime': - specifier: ^1.9.2 - version: 1.10.0 '@napi-rs/cli': specifier: ^3.6.1 version: 3.6.1 @@ -882,10 +876,10 @@ importers: rolldown/packages/browser: dependencies: '@emnapi/core': - specifier: 'catalog:' + specifier: 1.10.0 version: 1.10.0 '@emnapi/runtime': - specifier: 'catalog:' + specifier: 1.10.0 version: 1.10.0 '@napi-rs/wasm-runtime': specifier: 'catalog:' diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 7d4cd26741..dda0d0f89d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,8 +9,6 @@ catalog: '@babel/preset-env': ^7.24.7 '@babel/preset-typescript': ^7.24.7 '@clack/core': ^1.0.0 - '@emnapi/core': ^1.9.2 - '@emnapi/runtime': ^1.9.2 '@iconify/vue': ^5.0.0 '@napi-rs/cli': ^3.6.1 '@napi-rs/wasm-runtime': ^1.1.4 From c0ab2f9bf78df7682b2eb3f25523dd379ac12bf2 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 07:25:19 +0900 Subject: [PATCH 25/47] fix: update dependencies and lockfile entries to latest versions --- pnpm-lock.yaml | 643 ++++++++++++++++++++++++++++++------------------- 1 file changed, 400 insertions(+), 243 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 41880bf942..65f2258204 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,6 +36,9 @@ catalogs: '@oxc-project/types': specifier: '=0.129.0' version: 0.129.0 + '@oxlint/plugins': + specifier: '=1.61.0' + version: 1.61.0 '@rollup/plugin-commonjs': specifier: ^29.0.0 version: 29.0.0 @@ -334,6 +337,9 @@ importers: '@oxc-project/types': specifier: 'catalog:' version: 0.129.0 + '@oxlint/plugins': + specifier: 'catalog:' + version: 1.61.0 '@voidzero-dev/vite-plus-core': specifier: workspace:* version: link:../core @@ -592,7 +598,7 @@ importers: version: 1.3.0 tsdown: specifier: 'catalog:' - version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) + version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) packages/test: dependencies: @@ -813,7 +819,7 @@ importers: version: 6.0.2 vite-plus: specifier: ^0.1.13 - version: 0.1.13(@arethetypeswrong/core@0.18.2)(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@types/node@24.10.3)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(esbuild@0.27.4)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.2.0)(less@4.4.2)(publint@0.3.18)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(stylus@0.64.0)(sugarss@5.0.1(postcss@8.5.10))(terser@5.46.1)(tsx@4.21.0)(typescript@6.0.2)(unplugin-unused@0.5.6)(vite@packages+core)(yaml@2.8.2) + version: 0.1.13(@arethetypeswrong/core@0.18.2)(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@types/node@24.10.3)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(esbuild@0.27.4)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.2.0)(less@4.4.2)(publint@0.3.18)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(stylus@0.64.0)(sugarss@5.0.1(postcss@8.5.14))(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.2)(unplugin-unused@0.5.6)(vite@packages+core)(yaml@2.8.2) rolldown/packages/bench: dependencies: @@ -1089,8 +1095,8 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@vitejs/release-scripts': - specifier: ^1.6.0 - version: 1.6.0(conventional-commits-filter@5.0.0) + specifier: ^1.7.0 + version: 1.7.0(conventional-commits-filter@5.0.0) eslint: specifier: ^9.39.4 version: 9.39.4(jiti@2.6.1) @@ -1113,8 +1119,8 @@ importers: specifier: ^16.4.0 version: 16.4.0 oxfmt: - specifier: ^0.45.0 - version: 0.45.0 + specifier: ^0.46.0 + version: 0.46.0 picocolors: specifier: ^1.1.1 version: 1.1.1 @@ -1137,7 +1143,7 @@ importers: specifier: ~6.0.2 version: 6.0.2 typescript-eslint: - specifier: ^8.58.2 + specifier: ^8.59.0 version: 8.59.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.2) vite: specifier: workspace:@voidzero-dev/vite-plus-core@* @@ -1161,8 +1167,8 @@ importers: specifier: ^1.2.0 version: 1.2.0 tsdown: - specifier: ^0.21.9 - version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) + specifier: ^0.21.10 + version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) vite/packages/plugin-legacy: dependencies: @@ -1213,8 +1219,8 @@ importers: specifier: ^1.1.1 version: 1.1.1 tsdown: - specifier: ^0.21.9 - version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) + specifier: ^0.21.10 + version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) vite: specifier: workspace:@voidzero-dev/vite-plus-core@* version: link:../../../packages/core @@ -1237,8 +1243,8 @@ importers: specifier: ^4.0.4 version: 4.0.4 postcss: - specifier: ^8.5.10 - version: 8.5.10 + specifier: ^8.5.12 + version: 8.5.14 rolldown: specifier: workspace:rolldown@* version: link:../../../rolldown/packages/rolldown @@ -1247,7 +1253,7 @@ importers: version: 0.64.0 sugarss: specifier: ^5.0.0 - version: 5.0.1(postcss@8.5.10) + version: 5.0.1(postcss@8.5.14) tinyglobby: specifier: ^0.2.16 version: 0.2.16 @@ -1289,17 +1295,17 @@ importers: specifier: ^1.2.3 version: 1.2.3 '@vitejs/devtools': - specifier: ^0.1.14 + specifier: ^0.1.15 version: 0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core) '@vitest/utils': - specifier: 4.1.4 - version: 4.1.4 + specifier: 4.1.5 + version: 4.1.5 artichokie: specifier: ^0.4.3 version: 0.4.3 baseline-browser-mapping: - specifier: ^2.10.20 - version: 2.10.20 + specifier: ^2.10.23 + version: 2.10.27 cac: specifier: ^7.0.0 version: 7.0.0 @@ -1370,20 +1376,20 @@ importers: specifier: ^2.0.3 version: 2.0.3 periscopic: - specifier: ^4.0.2 - version: 4.0.2 + specifier: ^4.0.3 + version: 4.0.3 picocolors: specifier: ^1.1.1 version: 1.1.1 postcss-import: specifier: ^16.1.1 - version: 16.1.1(postcss@8.5.10) + version: 16.1.1(postcss@8.5.14) postcss-load-config: specifier: ^6.0.1 - version: 6.0.1(jiti@2.6.1)(postcss@8.5.10)(tsx@4.21.0)(yaml@2.8.2) + version: 6.0.1(jiti@2.6.1)(postcss@8.5.14)(tsx@4.21.0)(yaml@2.8.2) postcss-modules: specifier: ^6.0.1 - version: 6.0.1(postcss@8.5.10) + version: 6.0.1(postcss@8.5.14) premove: specifier: ^4.0.0 version: 4.0.0 @@ -1392,7 +1398,7 @@ importers: version: 2.0.3 rolldown-plugin-dts: specifier: ^0.23.2 - version: 0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(rolldown@rolldown+packages+rolldown)(typescript@6.0.2) + version: 0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@rolldown+packages+rolldown)(typescript@6.0.2) rollup: specifier: ^4.59.0 version: 4.59.0 @@ -1412,8 +1418,8 @@ importers: specifier: ^3.1.0 version: 3.1.0 terser: - specifier: ^5.46.1 - version: 5.46.1 + specifier: ^5.46.2 + version: 5.46.2 ufo: specifier: ^1.6.3 version: 1.6.3 @@ -2093,12 +2099,12 @@ packages: '@clack/prompts@1.2.0': resolution: {integrity: sha512-4jmztR9fMqPMjz6H/UZXj0zEmE43ha1euENwkckKKel4XpSfokExPo5AiVStdHSAlHekz4d0CA/r45Ok1E4D3w==} - '@conventional-changelog/git-client@2.5.1': - resolution: {integrity: sha512-lAw7iA5oTPWOLjiweb7DlGEMDEvzqzLLa6aWOly2FSZ64IwLE8T458rC+o+WvI31Doz6joM7X2DoNog7mX8r4A==} + '@conventional-changelog/git-client@2.7.0': + resolution: {integrity: sha512-j7A8/LBEQ+3rugMzPXoKYzyUPpw/0CBQCyvtTR7Lmu4olG4yRC/Tfkq79Mr3yuPs0SUitlO2HwGP3gitMJnRFw==} engines: {node: '>=18'} peerDependencies: conventional-commits-filter: ^5.0.0 - conventional-commits-parser: ^6.1.0 + conventional-commits-parser: ^6.4.0 peerDependenciesMeta: conventional-commits-filter: optional: true @@ -3944,8 +3950,8 @@ packages: cpu: [arm] os: [android] - '@oxfmt/binding-android-arm-eabi@0.45.0': - resolution: {integrity: sha512-A/UMxFob1fefCuMeGxQBulGfFE38g2Gm23ynr3u6b+b7fY7/ajGbNsa3ikMIkGMLJW/TRoQaMoP1kME7S+815w==} + '@oxfmt/binding-android-arm-eabi@0.46.0': + resolution: {integrity: sha512-b1doV4WRcJU+BESSlCvCjV+5CEr/T6h0frArAdV26Nir+gGNFNaylvDiiMPfF1pxeV0txZEs38ojzJaxBYg+ng==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] @@ -3962,8 +3968,8 @@ packages: cpu: [arm64] os: [android] - '@oxfmt/binding-android-arm64@0.45.0': - resolution: {integrity: sha512-L63z4uZmHjgvvqvMJD7mwff8aSBkM0+X4uFr6l6U5t6+Qc9DCLVZWIunJ7Gm4fn4zHPdSq6FFQnhu9yqqobxIg==} + '@oxfmt/binding-android-arm64@0.46.0': + resolution: {integrity: sha512-v6+HhjsoV3GO0u2u9jLSAZrvWfTraDxKofUIQ7/ktS7tzS+epVsxdHmeM+XxuNcAY/nWxxU1Sg4JcGTNRXraBA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -3980,8 +3986,8 @@ packages: cpu: [arm64] os: [darwin] - '@oxfmt/binding-darwin-arm64@0.45.0': - resolution: {integrity: sha512-UV34dd623FzqT+outIGndsCA/RBB+qgB3XVQhgmmJ9PJwa37NzPC9qzgKeOhPKxVk2HW+JKldQrVL54zs4Noww==} + '@oxfmt/binding-darwin-arm64@0.46.0': + resolution: {integrity: sha512-3eeooJGrqGIlI5MyryDZsAcKXSmKIgAD4yYtfRrRJzXZ0UTFZtiSveIur56YPrGMYZwT4XyVhHsMqrNwr1XeFA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -3998,8 +4004,8 @@ packages: cpu: [x64] os: [darwin] - '@oxfmt/binding-darwin-x64@0.45.0': - resolution: {integrity: sha512-pMNJv0CMa1pDefVPeNbuQxibh8ITpWDFEhMC/IBB9Zlu76EbgzYwrzI4Cb11mqX2+rIYN70UTrh3z06TM59ptQ==} + '@oxfmt/binding-darwin-x64@0.46.0': + resolution: {integrity: sha512-QG8BDM0CXWbu84k2SKmCqfEddPQPFiBicwtYnLqHRWZZl57HbtOLRMac/KTq2NO4AEc4ICCBpFxJIV9zcqYfkQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -4016,8 +4022,8 @@ packages: cpu: [x64] os: [freebsd] - '@oxfmt/binding-freebsd-x64@0.45.0': - resolution: {integrity: sha512-xTcRoxbbo61sW2+ZRPeH+vp/o9G8gkdhiVumFU+TpneiPm14c79l6GFlxPXlCE9bNWikigbsrvJw46zCVAQFfg==} + '@oxfmt/binding-freebsd-x64@0.46.0': + resolution: {integrity: sha512-9DdCqS/n2ncu/Chazvt3cpgAjAmIGQDz7hFKSrNItMApyV/Ja9mz3hD4JakIE3nS8PW9smEbPWnb389QLBY4nw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -4034,8 +4040,8 @@ packages: cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-gnueabihf@0.45.0': - resolution: {integrity: sha512-hWL8Hdni+3U1mPFx1UtWeGp3tNb6EhBAUHRMbKUxVkOp3WwoJbpVO2bfUVbS4PfpledviXXNHSTl1veTa6FhkQ==} + '@oxfmt/binding-linux-arm-gnueabihf@0.46.0': + resolution: {integrity: sha512-Dgs7VeE2jT0LHMhw6tPEt0xQYe54kBqHEovmWsv4FVQlegCOvlIJNx0S8n4vj8WUtpT+Z6BD2HhKJPLglLxvZg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -4052,8 +4058,8 @@ packages: cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-musleabihf@0.45.0': - resolution: {integrity: sha512-6Blt/0OBT7vvfQpqYuYbpbFLPqSiaYpEJzUUWhinPEuADypDbtV1+LdjM0vYBNGPvnj85ex7lTerEX6JGcPt9w==} + '@oxfmt/binding-linux-arm-musleabihf@0.46.0': + resolution: {integrity: sha512-Zxn3adhTH13JKnU4xXJj8FeEfF680XjXh3gSShKl57HCMBRde2tUJTgogV/1MSHA80PJEVrDa7r66TLVq3Ia7Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -4071,8 +4077,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-arm64-gnu@0.45.0': - resolution: {integrity: sha512-jLjoLfe+hGfjhA8hNBSdw85yCA8ePKq7ME4T+g6P9caQXvmt6IhE2X7iVjnVdkmYUWEzZrxlh4p6RkDmAMJY/A==} + '@oxfmt/binding-linux-arm64-gnu@0.46.0': + resolution: {integrity: sha512-+TWipjrgVM8D7aIdDD0tlr3teLTTvQTn7QTE5BpT10H1Fj82gfdn9X6nn2sDgx/MepuSCfSnzFNJq2paLL0OiA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -4092,8 +4098,8 @@ packages: os: [linux] libc: [musl] - '@oxfmt/binding-linux-arm64-musl@0.45.0': - resolution: {integrity: sha512-XQKXZIKYJC3GQJ8FnD3iMntpw69Wd9kDDK/Xt79p6xnFYlGGxSNv2vIBvRTDg5CKByWFWWZLCRDOXoP/m6YN4g==} + '@oxfmt/binding-linux-arm64-musl@0.46.0': + resolution: {integrity: sha512-aAUPBWJ1lGwwnxZUEDLJ94+Iy6MuwJwPxUgO4sCA5mEEyDk7b+cDQ+JpX1VR150Zoyd+D49gsrUzpUK5h587Eg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -4113,8 +4119,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-ppc64-gnu@0.45.0': - resolution: {integrity: sha512-+g5RiG+xOkdrCWkKodv407nTvMq4vYM18Uox2MhZBm/YoqFxxJpWKsloskFFG5NU13HGPw1wzYjjOVcyd9moCA==} + '@oxfmt/binding-linux-ppc64-gnu@0.46.0': + resolution: {integrity: sha512-ufBCJukyFX/UDrokP/r6BGDoTInnsDs7bxyzKAgMiZlt2Qu8GPJSJ6Zm6whIiJzKk0naxA8ilwmbO1LMw6Htxw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] @@ -4134,8 +4140,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-gnu@0.45.0': - resolution: {integrity: sha512-V7dXKoSyEbWAkkSF4JJNtF+NJZDmJoSarSoP30WCsB3X636Rehd3CvxBj49FIJxEBFWhvcUjGSHVeU8Erck1bQ==} + '@oxfmt/binding-linux-riscv64-gnu@0.46.0': + resolution: {integrity: sha512-eqtlC2YmPqjun76R1gVfGLuKWx7NuEnLEAudZ7n6ipSKbCZTqIKSs1b5Y8K/JHZsRpLkeSmAAjig5HOIg8fQzQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] @@ -4155,8 +4161,8 @@ packages: os: [linux] libc: [musl] - '@oxfmt/binding-linux-riscv64-musl@0.45.0': - resolution: {integrity: sha512-Vdelft1sAEYojVGgcODEFXSWYQYlIvoyIGWebKCuUibd1tvS1TjTx413xG2ZLuHpYj45CkN/ztMLMX6jrgqpgg==} + '@oxfmt/binding-linux-riscv64-musl@0.46.0': + resolution: {integrity: sha512-yccVOO2nMXkQLGgy0He3EQEwKD7NF0zEk+/OWmroznkqXyJdN6bfK0LtNnr6/14Bh3FjpYq7bP33l/VloCnxpA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] @@ -4176,8 +4182,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-s390x-gnu@0.45.0': - resolution: {integrity: sha512-RR7xKgNpqwENnK0aYCGYg0JycY2n93J0reNjHyes+I9Gq52dH95x+CBlnlAQHCPfz6FGnKA9HirgUl14WO6o7w==} + '@oxfmt/binding-linux-s390x-gnu@0.46.0': + resolution: {integrity: sha512-aAf7fG23OQCey6VRPj9IeCraoYtpgtx0ZyJ1CXkPyT1wjzBE7c3xtuxHe/AdHaJfVVb/SXpSk8Gl1LzyQupSqw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] @@ -4197,8 +4203,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-gnu@0.45.0': - resolution: {integrity: sha512-U/QQ0+BQNSHxjuXR/utvXnQ50Vu5kUuqEomZvQ1/3mhgbBiMc2WU9q5kZ5WwLp3gnFIx9ibkveoRSe2EZubkqg==} + '@oxfmt/binding-linux-x64-gnu@0.46.0': + resolution: {integrity: sha512-q0JPsTMyJNjYrBvYFDz4WbVsafNZaPCZv4RnFypRotLqpKROtBZcEaXQW4eb9YmvLU3NckVemLJnzkSZSdmOxw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -4218,8 +4224,8 @@ packages: os: [linux] libc: [musl] - '@oxfmt/binding-linux-x64-musl@0.45.0': - resolution: {integrity: sha512-o5TLOUCF0RWQjsIS06yVC+kFgp092/yLe6qBGSUvtnmTVw9gxjpdQSXc3VN5Cnive4K11HNstEZF8ROKHfDFSw==} + '@oxfmt/binding-linux-x64-musl@0.46.0': + resolution: {integrity: sha512-7LsLY9Cw57GPkhSR+duI3mt9baRczK/DtHYSldQ4BEU92da9igBQNl4z7Vq5U9NNPsh1FmpKvv1q9WDtiUQR1A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -4238,8 +4244,8 @@ packages: cpu: [arm64] os: [openharmony] - '@oxfmt/binding-openharmony-arm64@0.45.0': - resolution: {integrity: sha512-RnGcV3HgPuOjsGx/k9oyRNKmOp+NBLGzZTdPDYbc19r7NGeYPplnUU/BfU35bX2Y/O4ejvHxcfkvW2WoYL/gsg==} + '@oxfmt/binding-openharmony-arm64@0.46.0': + resolution: {integrity: sha512-lHiBOz8Duaku7JtRNLlps3j++eOaICPZSd8FCVmTDM4DFOPT71Bjn7g6iar1z7StXlKRweUKxWUs4sA+zWGDXg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] @@ -4256,8 +4262,8 @@ packages: cpu: [arm64] os: [win32] - '@oxfmt/binding-win32-arm64-msvc@0.45.0': - resolution: {integrity: sha512-v3Vj7iKKsUFwt9w5hsqIIoErKVoENC6LoqfDlteOQ5QMDCXihlqLoxpmviUhXnNncg4zV6U9BPwlBbwa+qm4wg==} + '@oxfmt/binding-win32-arm64-msvc@0.46.0': + resolution: {integrity: sha512-/5ktYUliP89RhgC37DBH1x20U5zPSZMy3cMEcO0j3793rbHP9MWsknBwQB6eozRzWmYrh0IFM/p20EbPvDlYlg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -4274,8 +4280,8 @@ packages: cpu: [ia32] os: [win32] - '@oxfmt/binding-win32-ia32-msvc@0.45.0': - resolution: {integrity: sha512-N8yotPBX6ph0H3toF4AEpdCeVPrdcSetj+8eGiZGsrLsng3bs/Q5HPu4bbSxip5GBPx5hGbGHrZwH4+rcrjhHA==} + '@oxfmt/binding-win32-ia32-msvc@0.46.0': + resolution: {integrity: sha512-3WTnoiuIr8XvV0DIY7SN+1uJSwKf4sPpcbHfobcRT9JutGcLaef/miyBB87jxd3aqH+mS0+G5lsgHuXLUwjjpQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] @@ -4292,8 +4298,8 @@ packages: cpu: [x64] os: [win32] - '@oxfmt/binding-win32-x64-msvc@0.45.0': - resolution: {integrity: sha512-w5MMTRCK1dpQeRA+HHqXQXyN33DlG/N2LOYxJmaT4fJjcmZrbNnqw7SmIk7I2/a2493PPLZ+2E/Ar6t2iKVMug==} + '@oxfmt/binding-win32-x64-msvc@0.46.0': + resolution: {integrity: sha512-IXxiQpkYnOwNfP23vzwSfhdpxJzyiPTY7eTn6dn3DsriKddESzM8i6kfq9R7CD/PUJwCvQT22NgtygBeug3KoA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -4608,6 +4614,10 @@ packages: cpu: [x64] os: [win32] + '@oxlint/plugins@1.61.0': + resolution: {integrity: sha512-nkOyZEF1vH527CkdQtOp1HMrVFEM4ResURvI2JFeGoup+h+43J/k/FgdOR9b9Isxg+Yae7qVDa7y3nssE8b3TQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@package-json/types@0.0.12': resolution: {integrity: sha512-uu43FGU34B5VM9mCNjXCwLaGHYjXdNincqKLaraaCW+7S2+SmiBg1Nv8bPnmschrIfZmfKNY9f3fC376MRrObw==} @@ -4977,8 +4987,12 @@ packages: resolution: {integrity: sha512-3nWd8irxvDI6v856wpPCHZ+08iQR0oHTZfzAZmnbsLzf+Sf1odraP6uKOHDZToXq3RPRV/LbqGVlSCogm9cJjg==} engines: {node: '>=18'} - '@simple-libs/stream-utils@1.1.0': - resolution: {integrity: sha512-6rsHTjodIn/t90lv5snQjRPVtOosM7Vp0AKdrObymq45ojlgVwnpAqdc+0OBBrpEiy31zZ6/TKeIVqV1HwvnuQ==} + '@simple-libs/hosted-git-info@1.0.2': + resolution: {integrity: sha512-aAmGQdMH+ZinytKuA2832u0ATeOFNYNk4meBEXtB5xaPotUgggYNhq5tYU/v17wEbmTW5P9iHNqNrFyrhnqBAg==} + engines: {node: '>=18'} + + '@simple-libs/stream-utils@1.2.0': + resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==} engines: {node: '>=18'} '@sindresorhus/merge-streams@4.0.0': @@ -5424,8 +5438,8 @@ packages: peerDependencies: vite: workspace:@voidzero-dev/vite-plus-core@* - '@vitejs/release-scripts@1.6.0': - resolution: {integrity: sha512-XV+w22Fvn+wqDtEkz8nQIJzvmRVSh90c2xvOO7cX9fkX8+39ZJpYRiXDIRJG1JRnF8khm1rHjulid+l+khc7TQ==} + '@vitejs/release-scripts@1.7.0': + resolution: {integrity: sha512-4C+eoDs6yp/6kmnfOtuOWK+Dq0W3ws0eCs9k7w50P4YD7z+gMRUIyDbs0sGsJ4GjxN1WsS3qNfTT7ZpimtgeyA==} '@vitest/browser-playwright@4.1.5': resolution: {integrity: sha512-CWy0lBQJq97nionyJJdnaU4961IXTl43a7UCu5nHy51IoKxAt6PVIJLo+76rVl7KOOgcWHNkG4kbJu/pW7knvA==} @@ -5477,9 +5491,6 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.4': - resolution: {integrity: sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A==} - '@vitest/pretty-format@4.1.5': resolution: {integrity: sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==} @@ -5497,9 +5508,6 @@ packages: peerDependencies: vitest: workspace:@voidzero-dev/vite-plus-test@* - '@vitest/utils@4.1.4': - resolution: {integrity: sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw==} - '@vitest/utils@4.1.5': resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} @@ -5935,6 +5943,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + baseline-browser-mapping@2.10.27: + resolution: {integrity: sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==} + engines: {node: '>=6.0.0'} + hasBin: true + basic-ftp@5.0.5: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} @@ -6184,21 +6197,21 @@ packages: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} - conventional-changelog-conventionalcommits@9.1.0: - resolution: {integrity: sha512-MnbEysR8wWa8dAEvbj5xcBgJKQlX/m0lhS8DsyAAWDHdfs2faDJxTgzRYlRYpXSe7UiKrIIlB4TrBKU9q9DgkA==} + conventional-changelog-conventionalcommits@9.3.1: + resolution: {integrity: sha512-dTYtpIacRpcZgrvBYvBfArMmK2xvIpv2TaxM0/ZI5CBtNUzvF2x0t15HsbRABWprS6UPmvj+PzHVjSx4qAVKyw==} engines: {node: '>=18'} conventional-changelog-preset-loader@5.0.0: resolution: {integrity: sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==} engines: {node: '>=18'} - conventional-changelog-writer@8.2.0: - resolution: {integrity: sha512-Y2aW4596l9AEvFJRwFGJGiQjt2sBYTjPD18DdvxX9Vpz0Z7HQ+g1Z+6iYDAm1vR3QOJrDBkRHixHK/+FhkR6Pw==} + conventional-changelog-writer@8.4.0: + resolution: {integrity: sha512-HHBFkk1EECxxmCi4CTu091iuDpQv5/OavuCUAuZmrkWpmYfyD816nom1CvtfXJ/uYfAAjavgHvXHX291tSLK8g==} engines: {node: '>=18'} hasBin: true - conventional-changelog@7.1.1: - resolution: {integrity: sha512-rlqa8Lgh8YzT3Akruk05DR79j5gN9NCglHtJZwpi6vxVeaoagz+84UAtKQj/sT+RsfGaZkt3cdFCjcN6yjr5sw==} + conventional-changelog@7.2.0: + resolution: {integrity: sha512-BEdgG+vPl53EVlTTk9sZ96aagFp0AQ5pw/ggiQMy2SClLbTo1r0l+8dSg79gkLOO5DS1Lswuhp5fWn6RwE+ivg==} engines: {node: '>=18'} hasBin: true @@ -6206,8 +6219,8 @@ packages: resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} engines: {node: '>=18'} - conventional-commits-parser@6.2.1: - resolution: {integrity: sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA==} + conventional-commits-parser@6.4.0: + resolution: {integrity: sha512-tvRg7FIBNlyPzjdG8wWRlPHQJJHI7DylhtRGeU9Lq+JuoPh5BKpPRX83ZdLrvXuOSu5Eo/e7SzOQhU4Hd2Miuw==} engines: {node: '>=18'} hasBin: true @@ -6702,10 +6715,6 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - execa@9.6.1: resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} engines: {node: ^18.19.0 || >=20.5.0} @@ -6915,10 +6924,6 @@ packages: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - get-stream@9.0.1: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} @@ -7053,10 +7058,6 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - human-signals@8.0.1: resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} @@ -7225,10 +7226,6 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-stream@4.0.1: resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} engines: {node: '>=18'} @@ -7582,9 +7579,6 @@ packages: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -7606,10 +7600,6 @@ packages: engines: {node: '>=4'} hasBin: true - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - mimic-function@5.0.1: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} @@ -7741,10 +7731,6 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - npm-run-path@6.0.0: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} @@ -7792,10 +7778,6 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - onetime@7.0.0: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} @@ -7836,8 +7818,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - oxfmt@0.45.0: - resolution: {integrity: sha512-0o/COoN9fY50bjVeM7PQsNgbhndKurBIeTIcspW033OumksjJJmIVDKjAk5HMwU/GHTxSOdGDdhJ6BRzGPmsHg==} + oxfmt@0.46.0: + resolution: {integrity: sha512-CopwJOwPAjZ9p76fCvz+mSOJTw9/NY3cSksZK3VO/bUQ8UoEcketNgUuYS0UB3p+R9XnXe7wGGXUmyFxc7QxJA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -7982,8 +7964,8 @@ packages: perfect-debounce@2.1.0: resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} - periscopic@4.0.2: - resolution: {integrity: sha512-sqpQDUy8vgB7ycLkendSKS6HnVz1Rneoc3Rc+ZBUCe2pbqlVuCC5vF52l0NJ1aiMg/r1qfYF9/myz8CZeI2rjA==} + periscopic@4.0.3: + resolution: {integrity: sha512-iD/CnjEI6TJYwqLXmEVByEbT1RwUGSW3W51t/uWf+2Ag7FMHLqJ1XNhawGaXBf9/gZr+DhF3bTGLOw+03GJnzg==} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -8106,6 +8088,10 @@ packages: resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} + engines: {node: ^10 || ^12 || >=14} + powershell-utils@0.1.0: resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} engines: {node: '>=20'} @@ -8775,10 +8761,6 @@ packages: resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} engines: {node: '>=10'} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - strip-final-newline@4.0.0: resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} engines: {node: '>=18'} @@ -8864,6 +8846,11 @@ packages: engines: {node: '>=10'} hasBin: true + terser@5.46.2: + resolution: {integrity: sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw==} + engines: {node: '>=10'} + hasBin: true + text-decoder@1.2.3: resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} @@ -10373,14 +10360,14 @@ snapshots: fast-wrap-ansi: 0.1.6 sisteransi: 1.0.5 - '@conventional-changelog/git-client@2.5.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1)': + '@conventional-changelog/git-client@2.7.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0)': dependencies: '@simple-libs/child-process-utils': 1.0.1 - '@simple-libs/stream-utils': 1.1.0 + '@simple-libs/stream-utils': 1.2.0 semver: 7.7.4 optionalDependencies: conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.2.1 + conventional-commits-parser: 6.4.0 '@csstools/color-helpers@5.1.0': {} @@ -11783,6 +11770,14 @@ snapshots: - '@emnapi/runtime' optional: true + '@oxc-resolver/binding-wasm32-wasi@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': + dependencies: + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true + '@oxc-resolver/binding-win32-arm64-msvc@11.19.1': optional: true @@ -11859,7 +11854,7 @@ snapshots: '@oxfmt/binding-android-arm-eabi@0.41.0': optional: true - '@oxfmt/binding-android-arm-eabi@0.45.0': + '@oxfmt/binding-android-arm-eabi@0.46.0': optional: true '@oxfmt/binding-android-arm-eabi@0.48.0': @@ -11868,7 +11863,7 @@ snapshots: '@oxfmt/binding-android-arm64@0.41.0': optional: true - '@oxfmt/binding-android-arm64@0.45.0': + '@oxfmt/binding-android-arm64@0.46.0': optional: true '@oxfmt/binding-android-arm64@0.48.0': @@ -11877,7 +11872,7 @@ snapshots: '@oxfmt/binding-darwin-arm64@0.41.0': optional: true - '@oxfmt/binding-darwin-arm64@0.45.0': + '@oxfmt/binding-darwin-arm64@0.46.0': optional: true '@oxfmt/binding-darwin-arm64@0.48.0': @@ -11886,7 +11881,7 @@ snapshots: '@oxfmt/binding-darwin-x64@0.41.0': optional: true - '@oxfmt/binding-darwin-x64@0.45.0': + '@oxfmt/binding-darwin-x64@0.46.0': optional: true '@oxfmt/binding-darwin-x64@0.48.0': @@ -11895,7 +11890,7 @@ snapshots: '@oxfmt/binding-freebsd-x64@0.41.0': optional: true - '@oxfmt/binding-freebsd-x64@0.45.0': + '@oxfmt/binding-freebsd-x64@0.46.0': optional: true '@oxfmt/binding-freebsd-x64@0.48.0': @@ -11904,7 +11899,7 @@ snapshots: '@oxfmt/binding-linux-arm-gnueabihf@0.41.0': optional: true - '@oxfmt/binding-linux-arm-gnueabihf@0.45.0': + '@oxfmt/binding-linux-arm-gnueabihf@0.46.0': optional: true '@oxfmt/binding-linux-arm-gnueabihf@0.48.0': @@ -11913,7 +11908,7 @@ snapshots: '@oxfmt/binding-linux-arm-musleabihf@0.41.0': optional: true - '@oxfmt/binding-linux-arm-musleabihf@0.45.0': + '@oxfmt/binding-linux-arm-musleabihf@0.46.0': optional: true '@oxfmt/binding-linux-arm-musleabihf@0.48.0': @@ -11922,7 +11917,7 @@ snapshots: '@oxfmt/binding-linux-arm64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-arm64-gnu@0.45.0': + '@oxfmt/binding-linux-arm64-gnu@0.46.0': optional: true '@oxfmt/binding-linux-arm64-gnu@0.48.0': @@ -11931,7 +11926,7 @@ snapshots: '@oxfmt/binding-linux-arm64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-arm64-musl@0.45.0': + '@oxfmt/binding-linux-arm64-musl@0.46.0': optional: true '@oxfmt/binding-linux-arm64-musl@0.48.0': @@ -11940,7 +11935,7 @@ snapshots: '@oxfmt/binding-linux-ppc64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-ppc64-gnu@0.45.0': + '@oxfmt/binding-linux-ppc64-gnu@0.46.0': optional: true '@oxfmt/binding-linux-ppc64-gnu@0.48.0': @@ -11949,7 +11944,7 @@ snapshots: '@oxfmt/binding-linux-riscv64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-riscv64-gnu@0.45.0': + '@oxfmt/binding-linux-riscv64-gnu@0.46.0': optional: true '@oxfmt/binding-linux-riscv64-gnu@0.48.0': @@ -11958,7 +11953,7 @@ snapshots: '@oxfmt/binding-linux-riscv64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-riscv64-musl@0.45.0': + '@oxfmt/binding-linux-riscv64-musl@0.46.0': optional: true '@oxfmt/binding-linux-riscv64-musl@0.48.0': @@ -11967,7 +11962,7 @@ snapshots: '@oxfmt/binding-linux-s390x-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-s390x-gnu@0.45.0': + '@oxfmt/binding-linux-s390x-gnu@0.46.0': optional: true '@oxfmt/binding-linux-s390x-gnu@0.48.0': @@ -11976,7 +11971,7 @@ snapshots: '@oxfmt/binding-linux-x64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-x64-gnu@0.45.0': + '@oxfmt/binding-linux-x64-gnu@0.46.0': optional: true '@oxfmt/binding-linux-x64-gnu@0.48.0': @@ -11985,7 +11980,7 @@ snapshots: '@oxfmt/binding-linux-x64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-x64-musl@0.45.0': + '@oxfmt/binding-linux-x64-musl@0.46.0': optional: true '@oxfmt/binding-linux-x64-musl@0.48.0': @@ -11994,7 +11989,7 @@ snapshots: '@oxfmt/binding-openharmony-arm64@0.41.0': optional: true - '@oxfmt/binding-openharmony-arm64@0.45.0': + '@oxfmt/binding-openharmony-arm64@0.46.0': optional: true '@oxfmt/binding-openharmony-arm64@0.48.0': @@ -12003,7 +11998,7 @@ snapshots: '@oxfmt/binding-win32-arm64-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-arm64-msvc@0.45.0': + '@oxfmt/binding-win32-arm64-msvc@0.46.0': optional: true '@oxfmt/binding-win32-arm64-msvc@0.48.0': @@ -12012,7 +12007,7 @@ snapshots: '@oxfmt/binding-win32-ia32-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-ia32-msvc@0.45.0': + '@oxfmt/binding-win32-ia32-msvc@0.46.0': optional: true '@oxfmt/binding-win32-ia32-msvc@0.48.0': @@ -12021,7 +12016,7 @@ snapshots: '@oxfmt/binding-win32-x64-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-x64-msvc@0.45.0': + '@oxfmt/binding-win32-x64-msvc@0.46.0': optional: true '@oxfmt/binding-win32-x64-msvc@0.48.0': @@ -12177,6 +12172,8 @@ snapshots: '@oxlint/binding-win32-x64-msvc@1.63.0': optional: true + '@oxlint/plugins@1.61.0': {} + '@package-json/types@0.0.12': {} '@parcel/watcher-android-arm64@2.5.1': @@ -12468,12 +12465,12 @@ snapshots: '@simple-libs/child-process-utils@1.0.1': dependencies: - '@simple-libs/stream-utils': 1.1.0 + '@simple-libs/stream-utils': 1.2.0 '@types/node': 22.19.11 - '@simple-libs/stream-utils@1.1.0': - dependencies: - '@types/node': 22.19.11 + '@simple-libs/hosted-git-info@1.0.2': {} + + '@simple-libs/stream-utils@1.2.0': {} '@sindresorhus/merge-streams@4.0.0': {} @@ -12513,16 +12510,34 @@ snapshots: - tsx - yaml - '@tsdown/css@0.21.4(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.10))(postcss-modules@6.0.1(postcss@8.5.10))(postcss@8.5.10)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.4)(tsx@4.21.0)(yaml@2.8.2)': + '@tsdown/css@0.21.10(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.14))(postcss-modules@6.0.1(postcss@8.5.14))(postcss@8.5.14)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.10)(tsx@4.21.0)(yaml@2.8.2)': dependencies: lightningcss: 1.32.0 - postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.10)(tsx@4.21.0)(yaml@2.8.2) + postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.14)(tsx@4.21.0)(yaml@2.8.2) + rolldown: link:rolldown/packages/rolldown + tsdown: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) + optionalDependencies: + postcss: 8.5.14 + postcss-import: 16.1.1(postcss@8.5.14) + postcss-modules: 6.0.1(postcss@8.5.14) + sass: 1.99.0 + sass-embedded: 1.99.0(source-map-js@1.2.1) + transitivePeerDependencies: + - jiti + - tsx + - yaml + optional: true + + '@tsdown/css@0.21.4(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.14))(postcss-modules@6.0.1(postcss@8.5.14))(postcss@8.5.14)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.4)(tsx@4.21.0)(yaml@2.8.2)': + dependencies: + lightningcss: 1.32.0 + postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.14)(tsx@4.21.0)(yaml@2.8.2) rolldown: link:rolldown/packages/rolldown tsdown: 0.21.4(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) optionalDependencies: - postcss: 8.5.10 - postcss-import: 16.1.1(postcss@8.5.10) - postcss-modules: 6.0.1(postcss@8.5.10) + postcss: 8.5.14 + postcss-import: 16.1.1(postcss@8.5.14) + postcss-modules: 6.0.1(postcss@8.5.14) sass: 1.99.0 sass-embedded: 1.99.0(source-map-js@1.2.1) transitivePeerDependencies: @@ -13002,16 +13017,16 @@ snapshots: - uploadthing - utf-8-validate - '@vitejs/release-scripts@1.6.0(conventional-commits-filter@5.0.0)': + '@vitejs/release-scripts@1.7.0(conventional-commits-filter@5.0.0)': dependencies: - conventional-changelog: 7.1.1(conventional-commits-filter@5.0.0) - conventional-changelog-conventionalcommits: 9.1.0 - execa: 8.0.1 + conventional-changelog: 7.2.0(conventional-commits-filter@5.0.0) + conventional-changelog-conventionalcommits: 9.3.1 mri: 1.2.0 picocolors: 1.1.1 prompts: 2.4.2 publint: 0.3.18 semver: 7.7.4 + tinyexec: 1.1.2 transitivePeerDependencies: - conventional-commits-filter @@ -13117,10 +13132,6 @@ snapshots: optionalDependencies: vite: link:packages/core - '@vitest/pretty-format@4.1.4': - dependencies: - tinyrainbow: 3.1.0 - '@vitest/pretty-format@4.1.5': dependencies: tinyrainbow: 3.1.0 @@ -13150,27 +13161,21 @@ snapshots: tinyrainbow: 3.1.0 vitest: 4.1.5(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@24.12.2)(@vitest/browser-playwright@4.1.5(playwright@1.57.0)(vite@packages+core)(vitest@4.1.5))(@vitest/browser-preview@4.1.5(vite@packages+core)(vitest@4.1.5))(@vitest/browser-webdriverio@4.1.5(vite@packages+core)(vitest@4.1.5)(webdriverio@9.20.1))(@vitest/coverage-istanbul@4.1.5(vitest@4.1.5))(@vitest/coverage-v8@4.1.5(@vitest/browser@4.1.5)(vitest@4.1.5))(@vitest/ui@4.1.5(vitest@4.1.5))(happy-dom@20.0.10)(jsdom@27.2.0)(vite@packages+core) - '@vitest/utils@4.1.4': - dependencies: - '@vitest/pretty-format': 4.1.4 - convert-source-map: 2.0.0 - tinyrainbow: 3.1.0 - '@vitest/utils@4.1.5': dependencies: '@vitest/pretty-format': 4.1.5 convert-source-map: 2.0.0 tinyrainbow: 3.1.0 - '@voidzero-dev/vite-plus-core@0.1.13(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@types/node@24.10.3)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(esbuild@0.27.4)(jiti@2.6.1)(less@4.4.2)(publint@0.3.18)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(stylus@0.64.0)(sugarss@5.0.1(postcss@8.5.10))(terser@5.46.1)(tsx@4.21.0)(typescript@6.0.2)(unplugin-unused@0.5.6)(yaml@2.8.2)': + '@voidzero-dev/vite-plus-core@0.1.13(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@types/node@24.10.3)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(esbuild@0.27.4)(jiti@2.6.1)(less@4.4.2)(publint@0.3.18)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(stylus@0.64.0)(sugarss@5.0.1(postcss@8.5.14))(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.2)(unplugin-unused@0.5.6)(yaml@2.8.2)': dependencies: '@oxc-project/runtime': 0.120.0 '@oxc-project/types': 0.120.0 lightningcss: 1.32.0 - postcss: 8.5.10 + postcss: 8.5.14 optionalDependencies: '@arethetypeswrong/core': 0.18.2 - '@tsdown/css': 0.21.4(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.10))(postcss-modules@6.0.1(postcss@8.5.10))(postcss@8.5.10)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.4)(tsx@4.21.0)(yaml@2.8.2) + '@tsdown/css': 0.21.4(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.14))(postcss-modules@6.0.1(postcss@8.5.14))(postcss@8.5.14)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.4)(tsx@4.21.0)(yaml@2.8.2) '@tsdown/exe': 0.21.4(tsdown@0.21.4) '@types/node': 24.10.3 '@vitejs/devtools': 0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core) @@ -13182,8 +13187,8 @@ snapshots: sass: 1.99.0 sass-embedded: 1.99.0(source-map-js@1.2.1) stylus: 0.64.0 - sugarss: 5.0.1(postcss@8.5.10) - terser: 5.46.1 + sugarss: 5.0.1(postcss@8.5.14) + terser: 5.46.2 tsx: 4.21.0 typescript: 6.0.2 unplugin-unused: 0.5.6 @@ -13201,11 +13206,11 @@ snapshots: '@voidzero-dev/vite-plus-linux-x64-gnu@0.1.13': optional: true - '@voidzero-dev/vite-plus-test@0.1.13(@arethetypeswrong/core@0.18.2)(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@types/node@24.10.3)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(esbuild@0.27.4)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.2.0)(less@4.4.2)(publint@0.3.18)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(stylus@0.64.0)(sugarss@5.0.1(postcss@8.5.10))(terser@5.46.1)(tsx@4.21.0)(typescript@6.0.2)(unplugin-unused@0.5.6)(vite@packages+core)(yaml@2.8.2)': + '@voidzero-dev/vite-plus-test@0.1.13(@arethetypeswrong/core@0.18.2)(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@types/node@24.10.3)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(esbuild@0.27.4)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.2.0)(less@4.4.2)(publint@0.3.18)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(stylus@0.64.0)(sugarss@5.0.1(postcss@8.5.14))(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.2)(unplugin-unused@0.5.6)(vite@packages+core)(yaml@2.8.2)': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@voidzero-dev/vite-plus-core': 0.1.13(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@types/node@24.10.3)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(esbuild@0.27.4)(jiti@2.6.1)(less@4.4.2)(publint@0.3.18)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(stylus@0.64.0)(sugarss@5.0.1(postcss@8.5.10))(terser@5.46.1)(tsx@4.21.0)(typescript@6.0.2)(unplugin-unused@0.5.6)(yaml@2.8.2) + '@voidzero-dev/vite-plus-core': 0.1.13(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@types/node@24.10.3)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(esbuild@0.27.4)(jiti@2.6.1)(less@4.4.2)(publint@0.3.18)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(stylus@0.64.0)(sugarss@5.0.1(postcss@8.5.14))(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.2)(unplugin-unused@0.5.6)(yaml@2.8.2) es-module-lexer: 1.7.0 obug: 2.1.1 pixelmatch: 7.1.0 @@ -13282,7 +13287,7 @@ snapshots: '@vue/shared': 3.5.33 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.10 + postcss: 8.5.14 source-map-js: 1.2.1 '@vue/compiler-ssr@3.5.33': @@ -13622,6 +13627,8 @@ snapshots: baseline-browser-mapping@2.10.20: {} + baseline-browser-mapping@2.10.27: {} + basic-ftp@5.0.5: {} before-after-hook@4.0.0: {} @@ -13891,26 +13898,28 @@ snapshots: consola@3.4.2: {} - conventional-changelog-conventionalcommits@9.1.0: + conventional-changelog-conventionalcommits@9.3.1: dependencies: compare-func: 2.0.0 conventional-changelog-preset-loader@5.0.0: {} - conventional-changelog-writer@8.2.0: + conventional-changelog-writer@8.4.0: dependencies: + '@simple-libs/stream-utils': 1.2.0 conventional-commits-filter: 5.0.0 handlebars: 4.7.8 meow: 13.2.0 semver: 7.7.4 - conventional-changelog@7.1.1(conventional-commits-filter@5.0.0): + conventional-changelog@7.2.0(conventional-commits-filter@5.0.0): dependencies: - '@conventional-changelog/git-client': 2.5.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1) + '@conventional-changelog/git-client': 2.7.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0) + '@simple-libs/hosted-git-info': 1.0.2 '@types/normalize-package-data': 2.4.4 conventional-changelog-preset-loader: 5.0.0 - conventional-changelog-writer: 8.2.0 - conventional-commits-parser: 6.2.1 + conventional-changelog-writer: 8.4.0 + conventional-commits-parser: 6.4.0 fd-package-json: 2.0.0 meow: 13.2.0 normalize-package-data: 7.0.1 @@ -13919,8 +13928,9 @@ snapshots: conventional-commits-filter@5.0.0: {} - conventional-commits-parser@6.2.1: + conventional-commits-parser@6.4.0: dependencies: + '@simple-libs/stream-utils': 1.2.0 meow: 13.2.0 convert-source-map@2.0.0: {} @@ -14124,6 +14134,10 @@ snapshots: optionalDependencies: oxc-resolver: 11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + dts-resolver@2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)): + optionalDependencies: + oxc-resolver: 11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + eastasianwidth@0.2.0: {} edge-paths@3.0.5: @@ -14436,18 +14450,6 @@ snapshots: events@3.3.0: {} - execa@8.0.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - execa@9.6.1: dependencies: '@sindresorhus/merge-streams': 4.0.0 @@ -14670,8 +14672,6 @@ snapshots: dependencies: pump: 3.0.3 - get-stream@8.0.1: {} - get-stream@9.0.1: dependencies: '@sec-ant/readable-stream': 0.4.1 @@ -14835,8 +14835,6 @@ snapshots: transitivePeerDependencies: - supports-color - human-signals@5.0.0: {} - human-signals@8.0.1: {} husky@9.1.7: {} @@ -14852,6 +14850,11 @@ snapshots: icss-utils@5.1.0(postcss@8.5.10): dependencies: postcss: 8.5.10 + optional: true + + icss-utils@5.1.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 ieee754@1.2.1: {} @@ -14952,8 +14955,6 @@ snapshots: is-stream@2.0.1: {} - is-stream@3.0.0: {} - is-stream@4.0.1: {} is-unicode-supported@0.1.0: {} @@ -15310,8 +15311,6 @@ snapshots: meow@13.2.0: {} - merge-stream@2.0.0: {} - merge2@1.4.1: {} micromatch@4.0.8: @@ -15328,8 +15327,6 @@ snapshots: mime@1.6.0: optional: true - mimic-fn@4.0.0: {} - mimic-function@5.0.1: {} minimatch@10.2.4: @@ -15456,10 +15453,6 @@ snapshots: normalize-path@3.0.0: {} - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - npm-run-path@6.0.0: dependencies: path-key: 4.0.0 @@ -15516,10 +15509,6 @@ snapshots: dependencies: wrappy: 1.0.2 - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - onetime@7.0.0: dependencies: mimic-function: 5.0.1 @@ -15653,6 +15642,33 @@ snapshots: - '@emnapi/core' - '@emnapi/runtime' + oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): + optionalDependencies: + '@oxc-resolver/binding-android-arm-eabi': 11.19.1 + '@oxc-resolver/binding-android-arm64': 11.19.1 + '@oxc-resolver/binding-darwin-arm64': 11.19.1 + '@oxc-resolver/binding-darwin-x64': 11.19.1 + '@oxc-resolver/binding-freebsd-x64': 11.19.1 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.19.1 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.19.1 + '@oxc-resolver/binding-linux-arm64-gnu': 11.19.1 + '@oxc-resolver/binding-linux-arm64-musl': 11.19.1 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.19.1 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.19.1 + '@oxc-resolver/binding-linux-riscv64-musl': 11.19.1 + '@oxc-resolver/binding-linux-s390x-gnu': 11.19.1 + '@oxc-resolver/binding-linux-x64-gnu': 11.19.1 + '@oxc-resolver/binding-linux-x64-musl': 11.19.1 + '@oxc-resolver/binding-openharmony-arm64': 11.19.1 + '@oxc-resolver/binding-wasm32-wasi': 11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + '@oxc-resolver/binding-win32-arm64-msvc': 11.19.1 + '@oxc-resolver/binding-win32-ia32-msvc': 11.19.1 + '@oxc-resolver/binding-win32-x64-msvc': 11.19.1 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true + oxc-transform@0.129.0: optionalDependencies: '@oxc-transform/binding-android-arm-eabi': 0.129.0 @@ -15700,29 +15716,29 @@ snapshots: '@oxfmt/binding-win32-ia32-msvc': 0.41.0 '@oxfmt/binding-win32-x64-msvc': 0.41.0 - oxfmt@0.45.0: + oxfmt@0.46.0: dependencies: tinypool: 2.1.0 optionalDependencies: - '@oxfmt/binding-android-arm-eabi': 0.45.0 - '@oxfmt/binding-android-arm64': 0.45.0 - '@oxfmt/binding-darwin-arm64': 0.45.0 - '@oxfmt/binding-darwin-x64': 0.45.0 - '@oxfmt/binding-freebsd-x64': 0.45.0 - '@oxfmt/binding-linux-arm-gnueabihf': 0.45.0 - '@oxfmt/binding-linux-arm-musleabihf': 0.45.0 - '@oxfmt/binding-linux-arm64-gnu': 0.45.0 - '@oxfmt/binding-linux-arm64-musl': 0.45.0 - '@oxfmt/binding-linux-ppc64-gnu': 0.45.0 - '@oxfmt/binding-linux-riscv64-gnu': 0.45.0 - '@oxfmt/binding-linux-riscv64-musl': 0.45.0 - '@oxfmt/binding-linux-s390x-gnu': 0.45.0 - '@oxfmt/binding-linux-x64-gnu': 0.45.0 - '@oxfmt/binding-linux-x64-musl': 0.45.0 - '@oxfmt/binding-openharmony-arm64': 0.45.0 - '@oxfmt/binding-win32-arm64-msvc': 0.45.0 - '@oxfmt/binding-win32-ia32-msvc': 0.45.0 - '@oxfmt/binding-win32-x64-msvc': 0.45.0 + '@oxfmt/binding-android-arm-eabi': 0.46.0 + '@oxfmt/binding-android-arm64': 0.46.0 + '@oxfmt/binding-darwin-arm64': 0.46.0 + '@oxfmt/binding-darwin-x64': 0.46.0 + '@oxfmt/binding-freebsd-x64': 0.46.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.46.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.46.0 + '@oxfmt/binding-linux-arm64-gnu': 0.46.0 + '@oxfmt/binding-linux-arm64-musl': 0.46.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.46.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.46.0 + '@oxfmt/binding-linux-riscv64-musl': 0.46.0 + '@oxfmt/binding-linux-s390x-gnu': 0.46.0 + '@oxfmt/binding-linux-x64-gnu': 0.46.0 + '@oxfmt/binding-linux-x64-musl': 0.46.0 + '@oxfmt/binding-openharmony-arm64': 0.46.0 + '@oxfmt/binding-win32-arm64-msvc': 0.46.0 + '@oxfmt/binding-win32-ia32-msvc': 0.46.0 + '@oxfmt/binding-win32-x64-msvc': 0.46.0 oxfmt@0.48.0: dependencies: @@ -15923,7 +15939,7 @@ snapshots: perfect-debounce@2.1.0: {} - periscopic@4.0.2: + periscopic@4.0.3: dependencies: '@types/estree': 1.0.8 is-reference: 3.0.3 @@ -15980,6 +15996,14 @@ snapshots: postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.11 + optional: true + + postcss-import@16.1.1(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.11 postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.10)(tsx@4.21.0)(yaml@2.8.2): dependencies: @@ -15990,9 +16014,23 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 + postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.14)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + jiti: 2.6.1 + postcss: 8.5.14 + tsx: 4.21.0 + yaml: 2.8.2 + postcss-modules-extract-imports@3.1.0(postcss@8.5.10): dependencies: postcss: 8.5.10 + optional: true + + postcss-modules-extract-imports@3.1.0(postcss@8.5.14): + dependencies: + postcss: 8.5.14 postcss-modules-local-by-default@4.2.0(postcss@8.5.10): dependencies: @@ -16000,16 +16038,36 @@ snapshots: postcss: 8.5.10 postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 + optional: true + + postcss-modules-local-by-default@4.2.0(postcss@8.5.14): + dependencies: + icss-utils: 5.1.0(postcss@8.5.14) + postcss: 8.5.14 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 postcss-modules-scope@3.2.1(postcss@8.5.10): dependencies: postcss: 8.5.10 postcss-selector-parser: 7.1.0 + optional: true + + postcss-modules-scope@3.2.1(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + postcss-selector-parser: 7.1.0 postcss-modules-values@4.0.0(postcss@8.5.10): dependencies: icss-utils: 5.1.0(postcss@8.5.10) postcss: 8.5.10 + optional: true + + postcss-modules-values@4.0.0(postcss@8.5.14): + dependencies: + icss-utils: 5.1.0(postcss@8.5.14) + postcss: 8.5.14 postcss-modules@6.0.1(postcss@8.5.10): dependencies: @@ -16022,6 +16080,19 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.10) postcss-modules-values: 4.0.0(postcss@8.5.10) string-hash: 1.1.3 + optional: true + + postcss-modules@6.0.1(postcss@8.5.14): + dependencies: + generic-names: 4.0.0 + icss-utils: 5.1.0(postcss@8.5.14) + lodash.camelcase: 4.3.0 + postcss: 8.5.14 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.14) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.14) + postcss-modules-scope: 3.2.1(postcss@8.5.14) + postcss-modules-values: 4.0.0(postcss@8.5.14) + string-hash: 1.1.3 postcss-selector-parser@7.1.0: dependencies: @@ -16036,6 +16107,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.14: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + powershell-utils@0.1.0: {} prelude-ls@1.2.1: {} @@ -16305,6 +16382,44 @@ snapshots: transitivePeerDependencies: - oxc-resolver + rolldown-plugin-dts@0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@rolldown+packages+rolldown)(typescript@6.0.2): + dependencies: + '@babel/generator': 8.0.0-rc.3 + '@babel/helper-validator-identifier': 8.0.0-rc.3 + '@babel/parser': 8.0.0-rc.3 + '@babel/types': 8.0.0-rc.3 + ast-kit: 3.0.0-beta.1 + birpc: 4.0.0 + dts-resolver: 2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) + get-tsconfig: 4.13.7 + obug: 2.1.1 + picomatch: 4.0.4 + rolldown: link:rolldown/packages/rolldown + optionalDependencies: + '@typescript/native-preview': 7.0.0-dev.20260122.2 + typescript: 6.0.2 + transitivePeerDependencies: + - oxc-resolver + + rolldown-plugin-dts@0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(rolldown@rolldown+packages+rolldown)(typescript@6.0.2): + dependencies: + '@babel/generator': 8.0.0-rc.3 + '@babel/helper-validator-identifier': 8.0.0-rc.3 + '@babel/parser': 8.0.0-rc.3 + '@babel/types': 8.0.0-rc.3 + ast-kit: 3.0.0-beta.1 + birpc: 4.0.0 + dts-resolver: 2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) + get-tsconfig: 4.13.7 + obug: 2.1.1 + picomatch: 4.0.4 + rolldown: link:rolldown/packages/rolldown + optionalDependencies: + '@typescript/native-preview': 7.0.0-dev.20260122.2 + typescript: 6.0.2 + transitivePeerDependencies: + - oxc-resolver + rollup-plugin-license@3.7.1(picomatch@4.0.4)(rollup@4.59.0): dependencies: commenting: 1.1.0 @@ -16703,8 +16818,6 @@ snapshots: strip-comments@2.0.1: {} - strip-final-newline@3.0.0: {} - strip-final-newline@4.0.0: {} strip-json-comments@3.1.1: {} @@ -16733,6 +16846,10 @@ snapshots: dependencies: postcss: 8.5.10 + sugarss@5.0.1(postcss@8.5.14): + dependencies: + postcss: 8.5.14 + superjson@2.2.6: dependencies: copy-anything: 4.0.5 @@ -16793,6 +16910,13 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 + terser@5.46.2: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.16.0 + commander: 2.20.3 + source-map-support: 0.5.21 + text-decoder@1.2.3: dependencies: b4a: 1.7.3 @@ -16869,7 +16993,40 @@ snapshots: unrun: 0.2.37 optionalDependencies: '@arethetypeswrong/core': 0.18.2 - '@tsdown/css': 0.21.10(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.10))(postcss-modules@6.0.1(postcss@8.5.10))(postcss@8.5.10)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.10)(tsx@4.21.0)(yaml@2.8.2) + '@tsdown/css': 0.21.10(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.14))(postcss-modules@6.0.1(postcss@8.5.14))(postcss@8.5.14)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.10)(tsx@4.21.0)(yaml@2.8.2) + '@tsdown/exe': 0.21.10(tsdown@0.21.10) + '@vitejs/devtools': 0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core) + publint: 0.3.18 + typescript: 6.0.2 + unplugin-unused: 0.5.6 + transitivePeerDependencies: + - '@ts-macro/tsc' + - '@typescript/native-preview' + - oxc-resolver + - synckit + - vue-tsc + + tsdown@0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6): + dependencies: + ansis: 4.2.0 + cac: 7.0.0 + defu: 6.1.7 + empathic: 2.0.0 + hookable: 6.1.1 + import-without-cache: 0.3.3 + obug: 2.1.1 + picomatch: 4.0.4 + rolldown: link:rolldown/packages/rolldown + rolldown-plugin-dts: 0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(rolldown@rolldown+packages+rolldown)(typescript@6.0.2) + semver: 7.7.4 + tinyexec: 1.1.2 + tinyglobby: 0.2.16 + tree-kill: 1.2.2 + unconfig-core: 7.5.0 + unrun: 0.2.37 + optionalDependencies: + '@arethetypeswrong/core': 0.18.2 + '@tsdown/css': 0.21.10(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.14))(postcss-modules@6.0.1(postcss@8.5.14))(postcss@8.5.14)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.10)(tsx@4.21.0)(yaml@2.8.2) '@tsdown/exe': 0.21.10(tsdown@0.21.10) '@vitejs/devtools': 0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core) publint: 0.3.18 @@ -16902,7 +17059,7 @@ snapshots: unrun: 0.2.37 optionalDependencies: '@arethetypeswrong/core': 0.18.2 - '@tsdown/css': 0.21.4(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.10))(postcss-modules@6.0.1(postcss@8.5.10))(postcss@8.5.10)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.4)(tsx@4.21.0)(yaml@2.8.2) + '@tsdown/css': 0.21.4(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.14))(postcss-modules@6.0.1(postcss@8.5.14))(postcss@8.5.14)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.4)(tsx@4.21.0)(yaml@2.8.2) '@tsdown/exe': 0.21.4(tsdown@0.21.4) '@vitejs/devtools': 0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core) publint: 0.3.18 @@ -17117,11 +17274,11 @@ snapshots: vary@1.1.2: {} - vite-plus@0.1.13(@arethetypeswrong/core@0.18.2)(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@types/node@24.10.3)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(esbuild@0.27.4)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.2.0)(less@4.4.2)(publint@0.3.18)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(stylus@0.64.0)(sugarss@5.0.1(postcss@8.5.10))(terser@5.46.1)(tsx@4.21.0)(typescript@6.0.2)(unplugin-unused@0.5.6)(vite@packages+core)(yaml@2.8.2): + vite-plus@0.1.13(@arethetypeswrong/core@0.18.2)(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@types/node@24.10.3)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(esbuild@0.27.4)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.2.0)(less@4.4.2)(publint@0.3.18)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(stylus@0.64.0)(sugarss@5.0.1(postcss@8.5.14))(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.2)(unplugin-unused@0.5.6)(vite@packages+core)(yaml@2.8.2): dependencies: '@oxc-project/types': 0.120.0 - '@voidzero-dev/vite-plus-core': 0.1.13(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@types/node@24.10.3)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(esbuild@0.27.4)(jiti@2.6.1)(less@4.4.2)(publint@0.3.18)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(stylus@0.64.0)(sugarss@5.0.1(postcss@8.5.10))(terser@5.46.1)(tsx@4.21.0)(typescript@6.0.2)(unplugin-unused@0.5.6)(yaml@2.8.2) - '@voidzero-dev/vite-plus-test': 0.1.13(@arethetypeswrong/core@0.18.2)(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@types/node@24.10.3)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(esbuild@0.27.4)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.2.0)(less@4.4.2)(publint@0.3.18)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(stylus@0.64.0)(sugarss@5.0.1(postcss@8.5.10))(terser@5.46.1)(tsx@4.21.0)(typescript@6.0.2)(unplugin-unused@0.5.6)(vite@packages+core)(yaml@2.8.2) + '@voidzero-dev/vite-plus-core': 0.1.13(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@types/node@24.10.3)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(esbuild@0.27.4)(jiti@2.6.1)(less@4.4.2)(publint@0.3.18)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(stylus@0.64.0)(sugarss@5.0.1(postcss@8.5.14))(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.2)(unplugin-unused@0.5.6)(yaml@2.8.2) + '@voidzero-dev/vite-plus-test': 0.1.13(@arethetypeswrong/core@0.18.2)(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@types/node@24.10.3)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(esbuild@0.27.4)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@27.2.0)(less@4.4.2)(publint@0.3.18)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(stylus@0.64.0)(sugarss@5.0.1(postcss@8.5.14))(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.2)(unplugin-unused@0.5.6)(vite@packages+core)(yaml@2.8.2) cac: 7.0.0 cross-spawn: 7.0.6 oxfmt: 0.41.0 From 0083a048bfe0568cec44ad5ea22ecb81ff813db3 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 07:29:29 +0900 Subject: [PATCH 26/47] fix: update pnpm-lock.yaml to reflect new oxc-resolver and @emnapi/core/runtime versions --- pnpm-lock.yaml | 118 ++----------------------------------------------- 1 file changed, 4 insertions(+), 114 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 65f2258204..01665832d7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -598,7 +598,7 @@ importers: version: 1.3.0 tsdown: specifier: 'catalog:' - version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) + version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) packages/test: dependencies: @@ -1168,7 +1168,7 @@ importers: version: 1.2.0 tsdown: specifier: ^0.21.10 - version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) + version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) vite/packages/plugin-legacy: dependencies: @@ -1220,7 +1220,7 @@ importers: version: 1.1.1 tsdown: specifier: ^0.21.10 - version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) + version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) vite: specifier: workspace:@voidzero-dev/vite-plus-core@* version: link:../../../packages/core @@ -1398,7 +1398,7 @@ importers: version: 2.0.3 rolldown-plugin-dts: specifier: ^0.23.2 - version: 0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@rolldown+packages+rolldown)(typescript@6.0.2) + version: 0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(rolldown@rolldown+packages+rolldown)(typescript@6.0.2) rollup: specifier: ^4.59.0 version: 4.59.0 @@ -11770,14 +11770,6 @@ snapshots: - '@emnapi/runtime' optional: true - '@oxc-resolver/binding-wasm32-wasi@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': - dependencies: - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - optional: true - '@oxc-resolver/binding-win32-arm64-msvc@11.19.1': optional: true @@ -14134,10 +14126,6 @@ snapshots: optionalDependencies: oxc-resolver: 11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - dts-resolver@2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)): - optionalDependencies: - oxc-resolver: 11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) - eastasianwidth@0.2.0: {} edge-paths@3.0.5: @@ -15642,33 +15630,6 @@ snapshots: - '@emnapi/core' - '@emnapi/runtime' - oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): - optionalDependencies: - '@oxc-resolver/binding-android-arm-eabi': 11.19.1 - '@oxc-resolver/binding-android-arm64': 11.19.1 - '@oxc-resolver/binding-darwin-arm64': 11.19.1 - '@oxc-resolver/binding-darwin-x64': 11.19.1 - '@oxc-resolver/binding-freebsd-x64': 11.19.1 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.19.1 - '@oxc-resolver/binding-linux-arm-musleabihf': 11.19.1 - '@oxc-resolver/binding-linux-arm64-gnu': 11.19.1 - '@oxc-resolver/binding-linux-arm64-musl': 11.19.1 - '@oxc-resolver/binding-linux-ppc64-gnu': 11.19.1 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.19.1 - '@oxc-resolver/binding-linux-riscv64-musl': 11.19.1 - '@oxc-resolver/binding-linux-s390x-gnu': 11.19.1 - '@oxc-resolver/binding-linux-x64-gnu': 11.19.1 - '@oxc-resolver/binding-linux-x64-musl': 11.19.1 - '@oxc-resolver/binding-openharmony-arm64': 11.19.1 - '@oxc-resolver/binding-wasm32-wasi': 11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) - '@oxc-resolver/binding-win32-arm64-msvc': 11.19.1 - '@oxc-resolver/binding-win32-ia32-msvc': 11.19.1 - '@oxc-resolver/binding-win32-x64-msvc': 11.19.1 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - optional: true - oxc-transform@0.129.0: optionalDependencies: '@oxc-transform/binding-android-arm-eabi': 0.129.0 @@ -16382,44 +16343,6 @@ snapshots: transitivePeerDependencies: - oxc-resolver - rolldown-plugin-dts@0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@rolldown+packages+rolldown)(typescript@6.0.2): - dependencies: - '@babel/generator': 8.0.0-rc.3 - '@babel/helper-validator-identifier': 8.0.0-rc.3 - '@babel/parser': 8.0.0-rc.3 - '@babel/types': 8.0.0-rc.3 - ast-kit: 3.0.0-beta.1 - birpc: 4.0.0 - dts-resolver: 2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) - get-tsconfig: 4.13.7 - obug: 2.1.1 - picomatch: 4.0.4 - rolldown: link:rolldown/packages/rolldown - optionalDependencies: - '@typescript/native-preview': 7.0.0-dev.20260122.2 - typescript: 6.0.2 - transitivePeerDependencies: - - oxc-resolver - - rolldown-plugin-dts@0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(rolldown@rolldown+packages+rolldown)(typescript@6.0.2): - dependencies: - '@babel/generator': 8.0.0-rc.3 - '@babel/helper-validator-identifier': 8.0.0-rc.3 - '@babel/parser': 8.0.0-rc.3 - '@babel/types': 8.0.0-rc.3 - ast-kit: 3.0.0-beta.1 - birpc: 4.0.0 - dts-resolver: 2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) - get-tsconfig: 4.13.7 - obug: 2.1.1 - picomatch: 4.0.4 - rolldown: link:rolldown/packages/rolldown - optionalDependencies: - '@typescript/native-preview': 7.0.0-dev.20260122.2 - typescript: 6.0.2 - transitivePeerDependencies: - - oxc-resolver - rollup-plugin-license@3.7.1(picomatch@4.0.4)(rollup@4.59.0): dependencies: commenting: 1.1.0 @@ -17006,39 +16929,6 @@ snapshots: - synckit - vue-tsc - tsdown@0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6): - dependencies: - ansis: 4.2.0 - cac: 7.0.0 - defu: 6.1.7 - empathic: 2.0.0 - hookable: 6.1.1 - import-without-cache: 0.3.3 - obug: 2.1.1 - picomatch: 4.0.4 - rolldown: link:rolldown/packages/rolldown - rolldown-plugin-dts: 0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(rolldown@rolldown+packages+rolldown)(typescript@6.0.2) - semver: 7.7.4 - tinyexec: 1.1.2 - tinyglobby: 0.2.16 - tree-kill: 1.2.2 - unconfig-core: 7.5.0 - unrun: 0.2.37 - optionalDependencies: - '@arethetypeswrong/core': 0.18.2 - '@tsdown/css': 0.21.10(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.14))(postcss-modules@6.0.1(postcss@8.5.14))(postcss@8.5.14)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.10)(tsx@4.21.0)(yaml@2.8.2) - '@tsdown/exe': 0.21.10(tsdown@0.21.10) - '@vitejs/devtools': 0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core) - publint: 0.3.18 - typescript: 6.0.2 - unplugin-unused: 0.5.6 - transitivePeerDependencies: - - '@ts-macro/tsc' - - '@typescript/native-preview' - - oxc-resolver - - synckit - - vue-tsc - tsdown@0.21.4(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.4)(@tsdown/exe@0.21.4)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6): dependencies: ansis: 4.2.0 From b19add48b81fe457374abb099674d4ec4e357cc0 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 07:32:00 +0900 Subject: [PATCH 27/47] fix: update tsdown specifier in pnpm-lock.yaml --- pnpm-lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 01665832d7..94ccb5c853 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1167,7 +1167,7 @@ importers: specifier: ^1.2.0 version: 1.2.0 tsdown: - specifier: ^0.21.10 + specifier: ^0.21.9 version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) vite/packages/plugin-legacy: From d0d4786f0bb9284e832194ab839cf8fd301c9d43 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 07:42:10 +0900 Subject: [PATCH 28/47] fix: update pnpm-lock.yaml and Cargo.lock to adjust dependency specifiers and remove unused dashmap --- Cargo.lock | 1 - pnpm-lock.yaml | 14 +++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1ce7604faa..41feb35be4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5351,7 +5351,6 @@ name = "rolldown_devtools" version = "0.1.0" dependencies = [ "blake3", - "dashmap", "rolldown_devtools_action", "rustc-hash", "serde", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94ccb5c853..9cb4ae2819 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1219,7 +1219,7 @@ importers: specifier: ^1.1.1 version: 1.1.1 tsdown: - specifier: ^0.21.10 + specifier: ^0.21.9 version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) vite: specifier: workspace:@voidzero-dev/vite-plus-core@* @@ -1243,7 +1243,7 @@ importers: specifier: ^4.0.4 version: 4.0.4 postcss: - specifier: ^8.5.12 + specifier: ^8.5.10 version: 8.5.14 rolldown: specifier: workspace:rolldown@* @@ -1295,16 +1295,16 @@ importers: specifier: ^1.2.3 version: 1.2.3 '@vitejs/devtools': - specifier: ^0.1.15 + specifier: ^0.1.14 version: 0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core) '@vitest/utils': - specifier: 4.1.5 + specifier: 4.1.4 version: 4.1.5 artichokie: specifier: ^0.4.3 version: 0.4.3 baseline-browser-mapping: - specifier: ^2.10.23 + specifier: ^2.10.20 version: 2.10.27 cac: specifier: ^7.0.0 @@ -1376,7 +1376,7 @@ importers: specifier: ^2.0.3 version: 2.0.3 periscopic: - specifier: ^4.0.3 + specifier: ^4.0.2 version: 4.0.3 picocolors: specifier: ^1.1.1 @@ -1418,7 +1418,7 @@ importers: specifier: ^3.1.0 version: 3.1.0 terser: - specifier: ^5.46.2 + specifier: ^5.46.1 version: 5.46.2 ufo: specifier: ^1.6.3 From 04a6e46fc35f7c75918075778112eb5d056b2441 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 07:46:07 +0900 Subject: [PATCH 29/47] fix: downgrade @oxfmt and related bindings in pnpm-lock.yaml to 0.45.x --- pnpm-lock.yaml | 184 +++++++++++++++++++++++++++---------------------- 1 file changed, 100 insertions(+), 84 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9cb4ae2819..ff12c9c30f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1095,7 +1095,7 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@vitejs/release-scripts': - specifier: ^1.7.0 + specifier: ^1.6.0 version: 1.7.0(conventional-commits-filter@5.0.0) eslint: specifier: ^9.39.4 @@ -1119,8 +1119,8 @@ importers: specifier: ^16.4.0 version: 16.4.0 oxfmt: - specifier: ^0.46.0 - version: 0.46.0 + specifier: ^0.45.0 + version: 0.45.0 picocolors: specifier: ^1.1.1 version: 1.1.1 @@ -1143,7 +1143,7 @@ importers: specifier: ~6.0.2 version: 6.0.2 typescript-eslint: - specifier: ^8.59.0 + specifier: ^8.58.2 version: 8.59.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.2) vite: specifier: workspace:@voidzero-dev/vite-plus-core@* @@ -1299,7 +1299,7 @@ importers: version: 0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core) '@vitest/utils': specifier: 4.1.4 - version: 4.1.5 + version: 4.1.4 artichokie: specifier: ^0.4.3 version: 0.4.3 @@ -3950,8 +3950,8 @@ packages: cpu: [arm] os: [android] - '@oxfmt/binding-android-arm-eabi@0.46.0': - resolution: {integrity: sha512-b1doV4WRcJU+BESSlCvCjV+5CEr/T6h0frArAdV26Nir+gGNFNaylvDiiMPfF1pxeV0txZEs38ojzJaxBYg+ng==} + '@oxfmt/binding-android-arm-eabi@0.45.0': + resolution: {integrity: sha512-A/UMxFob1fefCuMeGxQBulGfFE38g2Gm23ynr3u6b+b7fY7/ajGbNsa3ikMIkGMLJW/TRoQaMoP1kME7S+815w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] @@ -3968,8 +3968,8 @@ packages: cpu: [arm64] os: [android] - '@oxfmt/binding-android-arm64@0.46.0': - resolution: {integrity: sha512-v6+HhjsoV3GO0u2u9jLSAZrvWfTraDxKofUIQ7/ktS7tzS+epVsxdHmeM+XxuNcAY/nWxxU1Sg4JcGTNRXraBA==} + '@oxfmt/binding-android-arm64@0.45.0': + resolution: {integrity: sha512-L63z4uZmHjgvvqvMJD7mwff8aSBkM0+X4uFr6l6U5t6+Qc9DCLVZWIunJ7Gm4fn4zHPdSq6FFQnhu9yqqobxIg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -3986,8 +3986,8 @@ packages: cpu: [arm64] os: [darwin] - '@oxfmt/binding-darwin-arm64@0.46.0': - resolution: {integrity: sha512-3eeooJGrqGIlI5MyryDZsAcKXSmKIgAD4yYtfRrRJzXZ0UTFZtiSveIur56YPrGMYZwT4XyVhHsMqrNwr1XeFA==} + '@oxfmt/binding-darwin-arm64@0.45.0': + resolution: {integrity: sha512-UV34dd623FzqT+outIGndsCA/RBB+qgB3XVQhgmmJ9PJwa37NzPC9qzgKeOhPKxVk2HW+JKldQrVL54zs4Noww==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -4004,8 +4004,8 @@ packages: cpu: [x64] os: [darwin] - '@oxfmt/binding-darwin-x64@0.46.0': - resolution: {integrity: sha512-QG8BDM0CXWbu84k2SKmCqfEddPQPFiBicwtYnLqHRWZZl57HbtOLRMac/KTq2NO4AEc4ICCBpFxJIV9zcqYfkQ==} + '@oxfmt/binding-darwin-x64@0.45.0': + resolution: {integrity: sha512-pMNJv0CMa1pDefVPeNbuQxibh8ITpWDFEhMC/IBB9Zlu76EbgzYwrzI4Cb11mqX2+rIYN70UTrh3z06TM59ptQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -4022,8 +4022,8 @@ packages: cpu: [x64] os: [freebsd] - '@oxfmt/binding-freebsd-x64@0.46.0': - resolution: {integrity: sha512-9DdCqS/n2ncu/Chazvt3cpgAjAmIGQDz7hFKSrNItMApyV/Ja9mz3hD4JakIE3nS8PW9smEbPWnb389QLBY4nw==} + '@oxfmt/binding-freebsd-x64@0.45.0': + resolution: {integrity: sha512-xTcRoxbbo61sW2+ZRPeH+vp/o9G8gkdhiVumFU+TpneiPm14c79l6GFlxPXlCE9bNWikigbsrvJw46zCVAQFfg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -4040,8 +4040,8 @@ packages: cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-gnueabihf@0.46.0': - resolution: {integrity: sha512-Dgs7VeE2jT0LHMhw6tPEt0xQYe54kBqHEovmWsv4FVQlegCOvlIJNx0S8n4vj8WUtpT+Z6BD2HhKJPLglLxvZg==} + '@oxfmt/binding-linux-arm-gnueabihf@0.45.0': + resolution: {integrity: sha512-hWL8Hdni+3U1mPFx1UtWeGp3tNb6EhBAUHRMbKUxVkOp3WwoJbpVO2bfUVbS4PfpledviXXNHSTl1veTa6FhkQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -4058,8 +4058,8 @@ packages: cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-musleabihf@0.46.0': - resolution: {integrity: sha512-Zxn3adhTH13JKnU4xXJj8FeEfF680XjXh3gSShKl57HCMBRde2tUJTgogV/1MSHA80PJEVrDa7r66TLVq3Ia7Q==} + '@oxfmt/binding-linux-arm-musleabihf@0.45.0': + resolution: {integrity: sha512-6Blt/0OBT7vvfQpqYuYbpbFLPqSiaYpEJzUUWhinPEuADypDbtV1+LdjM0vYBNGPvnj85ex7lTerEX6JGcPt9w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -4077,8 +4077,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-arm64-gnu@0.46.0': - resolution: {integrity: sha512-+TWipjrgVM8D7aIdDD0tlr3teLTTvQTn7QTE5BpT10H1Fj82gfdn9X6nn2sDgx/MepuSCfSnzFNJq2paLL0OiA==} + '@oxfmt/binding-linux-arm64-gnu@0.45.0': + resolution: {integrity: sha512-jLjoLfe+hGfjhA8hNBSdw85yCA8ePKq7ME4T+g6P9caQXvmt6IhE2X7iVjnVdkmYUWEzZrxlh4p6RkDmAMJY/A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -4098,8 +4098,8 @@ packages: os: [linux] libc: [musl] - '@oxfmt/binding-linux-arm64-musl@0.46.0': - resolution: {integrity: sha512-aAUPBWJ1lGwwnxZUEDLJ94+Iy6MuwJwPxUgO4sCA5mEEyDk7b+cDQ+JpX1VR150Zoyd+D49gsrUzpUK5h587Eg==} + '@oxfmt/binding-linux-arm64-musl@0.45.0': + resolution: {integrity: sha512-XQKXZIKYJC3GQJ8FnD3iMntpw69Wd9kDDK/Xt79p6xnFYlGGxSNv2vIBvRTDg5CKByWFWWZLCRDOXoP/m6YN4g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -4119,8 +4119,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-ppc64-gnu@0.46.0': - resolution: {integrity: sha512-ufBCJukyFX/UDrokP/r6BGDoTInnsDs7bxyzKAgMiZlt2Qu8GPJSJ6Zm6whIiJzKk0naxA8ilwmbO1LMw6Htxw==} + '@oxfmt/binding-linux-ppc64-gnu@0.45.0': + resolution: {integrity: sha512-+g5RiG+xOkdrCWkKodv407nTvMq4vYM18Uox2MhZBm/YoqFxxJpWKsloskFFG5NU13HGPw1wzYjjOVcyd9moCA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] @@ -4140,8 +4140,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-gnu@0.46.0': - resolution: {integrity: sha512-eqtlC2YmPqjun76R1gVfGLuKWx7NuEnLEAudZ7n6ipSKbCZTqIKSs1b5Y8K/JHZsRpLkeSmAAjig5HOIg8fQzQ==} + '@oxfmt/binding-linux-riscv64-gnu@0.45.0': + resolution: {integrity: sha512-V7dXKoSyEbWAkkSF4JJNtF+NJZDmJoSarSoP30WCsB3X636Rehd3CvxBj49FIJxEBFWhvcUjGSHVeU8Erck1bQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] @@ -4161,8 +4161,8 @@ packages: os: [linux] libc: [musl] - '@oxfmt/binding-linux-riscv64-musl@0.46.0': - resolution: {integrity: sha512-yccVOO2nMXkQLGgy0He3EQEwKD7NF0zEk+/OWmroznkqXyJdN6bfK0LtNnr6/14Bh3FjpYq7bP33l/VloCnxpA==} + '@oxfmt/binding-linux-riscv64-musl@0.45.0': + resolution: {integrity: sha512-Vdelft1sAEYojVGgcODEFXSWYQYlIvoyIGWebKCuUibd1tvS1TjTx413xG2ZLuHpYj45CkN/ztMLMX6jrgqpgg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] @@ -4182,8 +4182,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-s390x-gnu@0.46.0': - resolution: {integrity: sha512-aAf7fG23OQCey6VRPj9IeCraoYtpgtx0ZyJ1CXkPyT1wjzBE7c3xtuxHe/AdHaJfVVb/SXpSk8Gl1LzyQupSqw==} + '@oxfmt/binding-linux-s390x-gnu@0.45.0': + resolution: {integrity: sha512-RR7xKgNpqwENnK0aYCGYg0JycY2n93J0reNjHyes+I9Gq52dH95x+CBlnlAQHCPfz6FGnKA9HirgUl14WO6o7w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] @@ -4203,8 +4203,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-gnu@0.46.0': - resolution: {integrity: sha512-q0JPsTMyJNjYrBvYFDz4WbVsafNZaPCZv4RnFypRotLqpKROtBZcEaXQW4eb9YmvLU3NckVemLJnzkSZSdmOxw==} + '@oxfmt/binding-linux-x64-gnu@0.45.0': + resolution: {integrity: sha512-U/QQ0+BQNSHxjuXR/utvXnQ50Vu5kUuqEomZvQ1/3mhgbBiMc2WU9q5kZ5WwLp3gnFIx9ibkveoRSe2EZubkqg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -4224,8 +4224,8 @@ packages: os: [linux] libc: [musl] - '@oxfmt/binding-linux-x64-musl@0.46.0': - resolution: {integrity: sha512-7LsLY9Cw57GPkhSR+duI3mt9baRczK/DtHYSldQ4BEU92da9igBQNl4z7Vq5U9NNPsh1FmpKvv1q9WDtiUQR1A==} + '@oxfmt/binding-linux-x64-musl@0.45.0': + resolution: {integrity: sha512-o5TLOUCF0RWQjsIS06yVC+kFgp092/yLe6qBGSUvtnmTVw9gxjpdQSXc3VN5Cnive4K11HNstEZF8ROKHfDFSw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -4244,8 +4244,8 @@ packages: cpu: [arm64] os: [openharmony] - '@oxfmt/binding-openharmony-arm64@0.46.0': - resolution: {integrity: sha512-lHiBOz8Duaku7JtRNLlps3j++eOaICPZSd8FCVmTDM4DFOPT71Bjn7g6iar1z7StXlKRweUKxWUs4sA+zWGDXg==} + '@oxfmt/binding-openharmony-arm64@0.45.0': + resolution: {integrity: sha512-RnGcV3HgPuOjsGx/k9oyRNKmOp+NBLGzZTdPDYbc19r7NGeYPplnUU/BfU35bX2Y/O4ejvHxcfkvW2WoYL/gsg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] @@ -4262,8 +4262,8 @@ packages: cpu: [arm64] os: [win32] - '@oxfmt/binding-win32-arm64-msvc@0.46.0': - resolution: {integrity: sha512-/5ktYUliP89RhgC37DBH1x20U5zPSZMy3cMEcO0j3793rbHP9MWsknBwQB6eozRzWmYrh0IFM/p20EbPvDlYlg==} + '@oxfmt/binding-win32-arm64-msvc@0.45.0': + resolution: {integrity: sha512-v3Vj7iKKsUFwt9w5hsqIIoErKVoENC6LoqfDlteOQ5QMDCXihlqLoxpmviUhXnNncg4zV6U9BPwlBbwa+qm4wg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -4280,8 +4280,8 @@ packages: cpu: [ia32] os: [win32] - '@oxfmt/binding-win32-ia32-msvc@0.46.0': - resolution: {integrity: sha512-3WTnoiuIr8XvV0DIY7SN+1uJSwKf4sPpcbHfobcRT9JutGcLaef/miyBB87jxd3aqH+mS0+G5lsgHuXLUwjjpQ==} + '@oxfmt/binding-win32-ia32-msvc@0.45.0': + resolution: {integrity: sha512-N8yotPBX6ph0H3toF4AEpdCeVPrdcSetj+8eGiZGsrLsng3bs/Q5HPu4bbSxip5GBPx5hGbGHrZwH4+rcrjhHA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] @@ -4298,8 +4298,8 @@ packages: cpu: [x64] os: [win32] - '@oxfmt/binding-win32-x64-msvc@0.46.0': - resolution: {integrity: sha512-IXxiQpkYnOwNfP23vzwSfhdpxJzyiPTY7eTn6dn3DsriKddESzM8i6kfq9R7CD/PUJwCvQT22NgtygBeug3KoA==} + '@oxfmt/binding-win32-x64-msvc@0.45.0': + resolution: {integrity: sha512-w5MMTRCK1dpQeRA+HHqXQXyN33DlG/N2LOYxJmaT4fJjcmZrbNnqw7SmIk7I2/a2493PPLZ+2E/Ar6t2iKVMug==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -5491,6 +5491,9 @@ packages: vite: optional: true + '@vitest/pretty-format@4.1.4': + resolution: {integrity: sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A==} + '@vitest/pretty-format@4.1.5': resolution: {integrity: sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==} @@ -5508,6 +5511,9 @@ packages: peerDependencies: vitest: workspace:@voidzero-dev/vite-plus-test@* + '@vitest/utils@4.1.4': + resolution: {integrity: sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw==} + '@vitest/utils@4.1.5': resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} @@ -7818,8 +7824,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - oxfmt@0.46.0: - resolution: {integrity: sha512-CopwJOwPAjZ9p76fCvz+mSOJTw9/NY3cSksZK3VO/bUQ8UoEcketNgUuYS0UB3p+R9XnXe7wGGXUmyFxc7QxJA==} + oxfmt@0.45.0: + resolution: {integrity: sha512-0o/COoN9fY50bjVeM7PQsNgbhndKurBIeTIcspW033OumksjJJmIVDKjAk5HMwU/GHTxSOdGDdhJ6BRzGPmsHg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -11846,7 +11852,7 @@ snapshots: '@oxfmt/binding-android-arm-eabi@0.41.0': optional: true - '@oxfmt/binding-android-arm-eabi@0.46.0': + '@oxfmt/binding-android-arm-eabi@0.45.0': optional: true '@oxfmt/binding-android-arm-eabi@0.48.0': @@ -11855,7 +11861,7 @@ snapshots: '@oxfmt/binding-android-arm64@0.41.0': optional: true - '@oxfmt/binding-android-arm64@0.46.0': + '@oxfmt/binding-android-arm64@0.45.0': optional: true '@oxfmt/binding-android-arm64@0.48.0': @@ -11864,7 +11870,7 @@ snapshots: '@oxfmt/binding-darwin-arm64@0.41.0': optional: true - '@oxfmt/binding-darwin-arm64@0.46.0': + '@oxfmt/binding-darwin-arm64@0.45.0': optional: true '@oxfmt/binding-darwin-arm64@0.48.0': @@ -11873,7 +11879,7 @@ snapshots: '@oxfmt/binding-darwin-x64@0.41.0': optional: true - '@oxfmt/binding-darwin-x64@0.46.0': + '@oxfmt/binding-darwin-x64@0.45.0': optional: true '@oxfmt/binding-darwin-x64@0.48.0': @@ -11882,7 +11888,7 @@ snapshots: '@oxfmt/binding-freebsd-x64@0.41.0': optional: true - '@oxfmt/binding-freebsd-x64@0.46.0': + '@oxfmt/binding-freebsd-x64@0.45.0': optional: true '@oxfmt/binding-freebsd-x64@0.48.0': @@ -11891,7 +11897,7 @@ snapshots: '@oxfmt/binding-linux-arm-gnueabihf@0.41.0': optional: true - '@oxfmt/binding-linux-arm-gnueabihf@0.46.0': + '@oxfmt/binding-linux-arm-gnueabihf@0.45.0': optional: true '@oxfmt/binding-linux-arm-gnueabihf@0.48.0': @@ -11900,7 +11906,7 @@ snapshots: '@oxfmt/binding-linux-arm-musleabihf@0.41.0': optional: true - '@oxfmt/binding-linux-arm-musleabihf@0.46.0': + '@oxfmt/binding-linux-arm-musleabihf@0.45.0': optional: true '@oxfmt/binding-linux-arm-musleabihf@0.48.0': @@ -11909,7 +11915,7 @@ snapshots: '@oxfmt/binding-linux-arm64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-arm64-gnu@0.46.0': + '@oxfmt/binding-linux-arm64-gnu@0.45.0': optional: true '@oxfmt/binding-linux-arm64-gnu@0.48.0': @@ -11918,7 +11924,7 @@ snapshots: '@oxfmt/binding-linux-arm64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-arm64-musl@0.46.0': + '@oxfmt/binding-linux-arm64-musl@0.45.0': optional: true '@oxfmt/binding-linux-arm64-musl@0.48.0': @@ -11927,7 +11933,7 @@ snapshots: '@oxfmt/binding-linux-ppc64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-ppc64-gnu@0.46.0': + '@oxfmt/binding-linux-ppc64-gnu@0.45.0': optional: true '@oxfmt/binding-linux-ppc64-gnu@0.48.0': @@ -11936,7 +11942,7 @@ snapshots: '@oxfmt/binding-linux-riscv64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-riscv64-gnu@0.46.0': + '@oxfmt/binding-linux-riscv64-gnu@0.45.0': optional: true '@oxfmt/binding-linux-riscv64-gnu@0.48.0': @@ -11945,7 +11951,7 @@ snapshots: '@oxfmt/binding-linux-riscv64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-riscv64-musl@0.46.0': + '@oxfmt/binding-linux-riscv64-musl@0.45.0': optional: true '@oxfmt/binding-linux-riscv64-musl@0.48.0': @@ -11954,7 +11960,7 @@ snapshots: '@oxfmt/binding-linux-s390x-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-s390x-gnu@0.46.0': + '@oxfmt/binding-linux-s390x-gnu@0.45.0': optional: true '@oxfmt/binding-linux-s390x-gnu@0.48.0': @@ -11963,7 +11969,7 @@ snapshots: '@oxfmt/binding-linux-x64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-x64-gnu@0.46.0': + '@oxfmt/binding-linux-x64-gnu@0.45.0': optional: true '@oxfmt/binding-linux-x64-gnu@0.48.0': @@ -11972,7 +11978,7 @@ snapshots: '@oxfmt/binding-linux-x64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-x64-musl@0.46.0': + '@oxfmt/binding-linux-x64-musl@0.45.0': optional: true '@oxfmt/binding-linux-x64-musl@0.48.0': @@ -11981,7 +11987,7 @@ snapshots: '@oxfmt/binding-openharmony-arm64@0.41.0': optional: true - '@oxfmt/binding-openharmony-arm64@0.46.0': + '@oxfmt/binding-openharmony-arm64@0.45.0': optional: true '@oxfmt/binding-openharmony-arm64@0.48.0': @@ -11990,7 +11996,7 @@ snapshots: '@oxfmt/binding-win32-arm64-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-arm64-msvc@0.46.0': + '@oxfmt/binding-win32-arm64-msvc@0.45.0': optional: true '@oxfmt/binding-win32-arm64-msvc@0.48.0': @@ -11999,7 +12005,7 @@ snapshots: '@oxfmt/binding-win32-ia32-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-ia32-msvc@0.46.0': + '@oxfmt/binding-win32-ia32-msvc@0.45.0': optional: true '@oxfmt/binding-win32-ia32-msvc@0.48.0': @@ -12008,7 +12014,7 @@ snapshots: '@oxfmt/binding-win32-x64-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-x64-msvc@0.46.0': + '@oxfmt/binding-win32-x64-msvc@0.45.0': optional: true '@oxfmt/binding-win32-x64-msvc@0.48.0': @@ -13124,6 +13130,10 @@ snapshots: optionalDependencies: vite: link:packages/core + '@vitest/pretty-format@4.1.4': + dependencies: + tinyrainbow: 3.1.0 + '@vitest/pretty-format@4.1.5': dependencies: tinyrainbow: 3.1.0 @@ -13153,6 +13163,12 @@ snapshots: tinyrainbow: 3.1.0 vitest: 4.1.5(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@24.12.2)(@vitest/browser-playwright@4.1.5(playwright@1.57.0)(vite@packages+core)(vitest@4.1.5))(@vitest/browser-preview@4.1.5(vite@packages+core)(vitest@4.1.5))(@vitest/browser-webdriverio@4.1.5(vite@packages+core)(vitest@4.1.5)(webdriverio@9.20.1))(@vitest/coverage-istanbul@4.1.5(vitest@4.1.5))(@vitest/coverage-v8@4.1.5(@vitest/browser@4.1.5)(vitest@4.1.5))(@vitest/ui@4.1.5(vitest@4.1.5))(happy-dom@20.0.10)(jsdom@27.2.0)(vite@packages+core) + '@vitest/utils@4.1.4': + dependencies: + '@vitest/pretty-format': 4.1.4 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + '@vitest/utils@4.1.5': dependencies: '@vitest/pretty-format': 4.1.5 @@ -15677,29 +15693,29 @@ snapshots: '@oxfmt/binding-win32-ia32-msvc': 0.41.0 '@oxfmt/binding-win32-x64-msvc': 0.41.0 - oxfmt@0.46.0: + oxfmt@0.45.0: dependencies: tinypool: 2.1.0 optionalDependencies: - '@oxfmt/binding-android-arm-eabi': 0.46.0 - '@oxfmt/binding-android-arm64': 0.46.0 - '@oxfmt/binding-darwin-arm64': 0.46.0 - '@oxfmt/binding-darwin-x64': 0.46.0 - '@oxfmt/binding-freebsd-x64': 0.46.0 - '@oxfmt/binding-linux-arm-gnueabihf': 0.46.0 - '@oxfmt/binding-linux-arm-musleabihf': 0.46.0 - '@oxfmt/binding-linux-arm64-gnu': 0.46.0 - '@oxfmt/binding-linux-arm64-musl': 0.46.0 - '@oxfmt/binding-linux-ppc64-gnu': 0.46.0 - '@oxfmt/binding-linux-riscv64-gnu': 0.46.0 - '@oxfmt/binding-linux-riscv64-musl': 0.46.0 - '@oxfmt/binding-linux-s390x-gnu': 0.46.0 - '@oxfmt/binding-linux-x64-gnu': 0.46.0 - '@oxfmt/binding-linux-x64-musl': 0.46.0 - '@oxfmt/binding-openharmony-arm64': 0.46.0 - '@oxfmt/binding-win32-arm64-msvc': 0.46.0 - '@oxfmt/binding-win32-ia32-msvc': 0.46.0 - '@oxfmt/binding-win32-x64-msvc': 0.46.0 + '@oxfmt/binding-android-arm-eabi': 0.45.0 + '@oxfmt/binding-android-arm64': 0.45.0 + '@oxfmt/binding-darwin-arm64': 0.45.0 + '@oxfmt/binding-darwin-x64': 0.45.0 + '@oxfmt/binding-freebsd-x64': 0.45.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.45.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.45.0 + '@oxfmt/binding-linux-arm64-gnu': 0.45.0 + '@oxfmt/binding-linux-arm64-musl': 0.45.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.45.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.45.0 + '@oxfmt/binding-linux-riscv64-musl': 0.45.0 + '@oxfmt/binding-linux-s390x-gnu': 0.45.0 + '@oxfmt/binding-linux-x64-gnu': 0.45.0 + '@oxfmt/binding-linux-x64-musl': 0.45.0 + '@oxfmt/binding-openharmony-arm64': 0.45.0 + '@oxfmt/binding-win32-arm64-msvc': 0.45.0 + '@oxfmt/binding-win32-ia32-msvc': 0.45.0 + '@oxfmt/binding-win32-x64-msvc': 0.45.0 oxfmt@0.48.0: dependencies: From dc5b188fccda66a8eaee4a8957e7531ebe04f222 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 07:51:41 +0900 Subject: [PATCH 30/47] fix: update pnpm-lock.yaml to bump postcss and terser dependencies to latest versions --- pnpm-lock.yaml | 127 ++++--------------------------------------------- 1 file changed, 8 insertions(+), 119 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ff12c9c30f..3b6a0a8813 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -224,7 +224,7 @@ catalogs: version: 2.0.1 terser: specifier: ^5.44.1 - version: 5.46.1 + version: 5.46.2 tinybench: specifier: ^6.0.0 version: 6.0.0 @@ -445,7 +445,7 @@ importers: version: 0.129.0 '@tsdown/css': specifier: 0.21.10 - version: 0.21.10(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.10))(postcss-modules@6.0.1(postcss@8.5.10))(postcss@8.5.10)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.10)(tsx@4.21.0)(yaml@2.8.2) + version: 0.21.10(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.14))(postcss-modules@6.0.1(postcss@8.5.14))(postcss@8.5.14)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.10)(tsx@4.21.0)(yaml@2.8.2) '@tsdown/exe': specifier: 0.21.10 version: 0.21.10(tsdown@0.21.10) @@ -466,7 +466,7 @@ importers: version: 1.32.0 postcss: specifier: ^8.5.6 - version: 8.5.10 + version: 8.5.14 publint: specifier: ^0.3.0 version: 0.3.18 @@ -481,10 +481,10 @@ importers: version: 0.64.0 sugarss: specifier: ^5.0.0 - version: 5.0.1(postcss@8.5.10) + version: 5.0.1(postcss@8.5.14) terser: specifier: ^5.16.0 - version: 5.46.1 + version: 5.46.2 tsx: specifier: ^4.8.1 version: 4.21.0 @@ -1020,7 +1020,7 @@ importers: version: 2.0.1 terser: specifier: 'catalog:' - version: 5.46.1 + version: 5.46.2 rolldown/packages/test-dev-server: dependencies: @@ -1210,7 +1210,7 @@ importers: version: 6.15.1 terser: specifier: ^5.16.0 - version: 5.46.1 + version: 5.46.2 devDependencies: acorn: specifier: ^8.16.0 @@ -5944,11 +5944,6 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.20: - resolution: {integrity: sha512-1AaXxEPfXT+GvTBJFuy4yXVHWJBXa4OdbIebGN/wX5DlsIkU0+wzGnd2lOzokSk51d5LUmqjgBLRLlypLUqInQ==} - engines: {node: '>=6.0.0'} - hasBin: true - baseline-browser-mapping@2.10.27: resolution: {integrity: sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==} engines: {node: '>=6.0.0'} @@ -8090,10 +8085,6 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.10: - resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.14: resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} @@ -8847,11 +8838,6 @@ packages: tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - terser@5.46.1: - resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==} - engines: {node: '>=10'} - hasBin: true - terser@5.46.2: resolution: {integrity: sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw==} engines: {node: '>=10'} @@ -12491,23 +12477,6 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@tsdown/css@0.21.10(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.10))(postcss-modules@6.0.1(postcss@8.5.10))(postcss@8.5.10)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.10)(tsx@4.21.0)(yaml@2.8.2)': - dependencies: - lightningcss: 1.32.0 - postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.10)(tsx@4.21.0)(yaml@2.8.2) - rolldown: link:rolldown/packages/rolldown - tsdown: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) - optionalDependencies: - postcss: 8.5.10 - postcss-import: 16.1.1(postcss@8.5.10) - postcss-modules: 6.0.1(postcss@8.5.10) - sass: 1.99.0 - sass-embedded: 1.99.0(source-map-js@1.2.1) - transitivePeerDependencies: - - jiti - - tsx - - yaml - '@tsdown/css@0.21.10(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.14))(postcss-modules@6.0.1(postcss@8.5.14))(postcss@8.5.14)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.10)(tsx@4.21.0)(yaml@2.8.2)': dependencies: lightningcss: 1.32.0 @@ -12524,7 +12493,6 @@ snapshots: - jiti - tsx - yaml - optional: true '@tsdown/css@0.21.4(jiti@2.6.1)(postcss-import@16.1.1(postcss@8.5.14))(postcss-modules@6.0.1(postcss@8.5.14))(postcss@8.5.14)(sass-embedded@1.99.0(source-map-js@1.2.1))(sass@1.99.0)(tsdown@0.21.4)(tsx@4.21.0)(yaml@2.8.2)': dependencies: @@ -13633,8 +13601,6 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.10.20: {} - baseline-browser-mapping@2.10.27: {} basic-ftp@5.0.5: {} @@ -13720,7 +13686,7 @@ snapshots: browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.10.20 + baseline-browser-mapping: 2.10.27 caniuse-lite: 1.0.30001785 electron-to-chromium: 1.5.331 node-releases: 2.0.37 @@ -14851,11 +14817,6 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.5.10): - dependencies: - postcss: 8.5.10 - optional: true - icss-utils@5.1.0(postcss@8.5.14): dependencies: postcss: 8.5.14 @@ -15967,14 +15928,6 @@ snapshots: pngjs@7.0.0: {} - postcss-import@16.1.1(postcss@8.5.10): - dependencies: - postcss: 8.5.10 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.11 - optional: true - postcss-import@16.1.1(postcss@8.5.14): dependencies: postcss: 8.5.14 @@ -15982,15 +15935,6 @@ snapshots: read-cache: 1.0.0 resolve: 1.22.11 - postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.10)(tsx@4.21.0)(yaml@2.8.2): - dependencies: - lilconfig: 3.1.3 - optionalDependencies: - jiti: 2.6.1 - postcss: 8.5.10 - tsx: 4.21.0 - yaml: 2.8.2 - postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.14)(tsx@4.21.0)(yaml@2.8.2): dependencies: lilconfig: 3.1.3 @@ -16000,23 +15944,10 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - postcss-modules-extract-imports@3.1.0(postcss@8.5.10): - dependencies: - postcss: 8.5.10 - optional: true - postcss-modules-extract-imports@3.1.0(postcss@8.5.14): dependencies: postcss: 8.5.14 - postcss-modules-local-by-default@4.2.0(postcss@8.5.10): - dependencies: - icss-utils: 5.1.0(postcss@8.5.10) - postcss: 8.5.10 - postcss-selector-parser: 7.1.0 - postcss-value-parser: 4.2.0 - optional: true - postcss-modules-local-by-default@4.2.0(postcss@8.5.14): dependencies: icss-utils: 5.1.0(postcss@8.5.14) @@ -16024,41 +15955,16 @@ snapshots: postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.1(postcss@8.5.10): - dependencies: - postcss: 8.5.10 - postcss-selector-parser: 7.1.0 - optional: true - postcss-modules-scope@3.2.1(postcss@8.5.14): dependencies: postcss: 8.5.14 postcss-selector-parser: 7.1.0 - postcss-modules-values@4.0.0(postcss@8.5.10): - dependencies: - icss-utils: 5.1.0(postcss@8.5.10) - postcss: 8.5.10 - optional: true - postcss-modules-values@4.0.0(postcss@8.5.14): dependencies: icss-utils: 5.1.0(postcss@8.5.14) postcss: 8.5.14 - postcss-modules@6.0.1(postcss@8.5.10): - dependencies: - generic-names: 4.0.0 - icss-utils: 5.1.0(postcss@8.5.10) - lodash.camelcase: 4.3.0 - postcss: 8.5.10 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.10) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.10) - postcss-modules-scope: 3.2.1(postcss@8.5.10) - postcss-modules-values: 4.0.0(postcss@8.5.10) - string-hash: 1.1.3 - optional: true - postcss-modules@6.0.1(postcss@8.5.14): dependencies: generic-names: 4.0.0 @@ -16078,12 +15984,6 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.5.10: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.14: dependencies: nanoid: 3.3.11 @@ -16781,10 +16681,6 @@ snapshots: transitivePeerDependencies: - supports-color - sugarss@5.0.1(postcss@8.5.10): - dependencies: - postcss: 8.5.10 - sugarss@5.0.1(postcss@8.5.14): dependencies: postcss: 8.5.14 @@ -16842,13 +16738,6 @@ snapshots: - bare-abort-controller - react-native-b4a - terser@5.46.1: - dependencies: - '@jridgewell/source-map': 0.3.11 - acorn: 8.16.0 - commander: 2.20.3 - source-map-support: 0.5.21 - terser@5.46.2: dependencies: '@jridgewell/source-map': 0.3.11 From 3fdc7d6a613fa77f29899508e6fd3db2541a1893 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 20:10:53 +0900 Subject: [PATCH 31/47] test: fix inconsistent error ordering in snap test outputs for lint-vite-plus-imports --- .../lint-vite-plus-imports/snap.txt | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt index 7c3c1befcc..fb5c05641a 100644 --- a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt +++ b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt @@ -1,28 +1,5 @@ [1]> vp lint src/index.ts src/types.ts # should fail before fix - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vite' in Vite+ projects. - ╭─[src/index.ts:1:30] - 1 │ import { defineConfig } from 'vite'; - · ────── - 2 │ - ╰──── - - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vitest/config' in Vite+ projects. - ╭─[src/index.ts:3:30] - 2 │ - 3 │ const configPromise = import('vitest/config'); - · ─────────────── - 4 │ - ╰──── - - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. - ╭─[src/index.ts:5:24] - 4 │ - 5 │ export { expect } from 'vitest'; - · ──────── - 6 │ - ╰──── - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. ╭─[src/types.ts:1:30] 1 │ type TestFn = (typeof import('vitest'))['test']; @@ -78,6 +55,29 @@ 10 │ ╰──── + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vite' in Vite+ projects. + ╭─[src/index.ts:1:30] + 1 │ import { defineConfig } from 'vite'; + · ────── + 2 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vitest/config' in Vite+ projects. + ╭─[src/index.ts:3:30] + 2 │ + 3 │ const configPromise = import('vitest/config'); + · ─────────────── + 4 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. + ╭─[src/index.ts:5:24] + 4 │ + 5 │ export { expect } from 'vitest'; + · ──────── + 6 │ + ╰──── + Found 0 warnings and 10 errors. Finished in ms on 2 files with rules using threads. From a99d4d44bb1732ae4fdcb1cfe2339c275475b34d Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 20:36:17 +0900 Subject: [PATCH 32/47] fix(snap-test,cargo): restore SNAP_CASES_DIR env and dashmap dependency - Restore SNAP_CASES_DIR env var that fixtures reference for shared helpers - Restore dashmap entry for rolldown_devtools in Cargo.lock --- Cargo.lock | 1 + packages/tools/src/snap-test.ts | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 41feb35be4..1ce7604faa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5351,6 +5351,7 @@ name = "rolldown_devtools" version = "0.1.0" dependencies = [ "blake3", + "dashmap", "rolldown_devtools_action", "rustc-hash", "serde", diff --git a/packages/tools/src/snap-test.ts b/packages/tools/src/snap-test.ts index 17f63030f2..8a71c8f66a 100755 --- a/packages/tools/src/snap-test.ts +++ b/packages/tools/src/snap-test.ts @@ -586,6 +586,10 @@ async function runTestCase( VP_SKIP_INSTALL: '1', // make sure npm install global packages to the temporary directory NPM_CONFIG_PREFIX: path.join(tempTmpDir, NPM_GLOBAL_PREFIX_DIR), + // Absolute path to the source casesDir, so fixtures can reference + // shared helper scripts under `/.shared/` without + // duplicating them into every fixture directory. + SNAP_CASES_DIR: casesDir, // Global CLI snap tests execute the Rust binary from --bin-dir, but the JS // entry should come from this checkout instead of a stale ~/.vite-plus install. ...(globalCliScriptsDir ? { VITE_GLOBAL_CLI_JS_SCRIPTS_DIR: globalCliScriptsDir } : {}), From 901c8e61574378763768436e30545b849804bda5 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 21:27:50 +0900 Subject: [PATCH 33/47] test: split lint commands in snap test for better error granularity - Split `vp lint` commands in `snap-tests/lint-vite-plus-imports` to isolate issues in individual files. - Updated test output to reflect separate error counts for `index.ts` and `types.ts`. - Bumped several dependencies in `pnpm-lock.yaml` to latest compatible versions. - Added config flags to `snap-test.ts` for non-interactive runs. --- Cargo.lock | 1 - .../lint-vite-plus-imports/snap.txt | 57 ++--- .../lint-vite-plus-imports/steps.json | 3 +- packages/tools/src/snap-test.ts | 7 + pnpm-lock.yaml | 200 ++++++++---------- 5 files changed, 132 insertions(+), 136 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1ce7604faa..41feb35be4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5351,7 +5351,6 @@ name = "rolldown_devtools" version = "0.1.0" dependencies = [ "blake3", - "dashmap", "rolldown_devtools_action", "rustc-hash", "serde", diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt index fb5c05641a..a33d958b0c 100644 --- a/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt +++ b/packages/cli/snap-tests/lint-vite-plus-imports/snap.txt @@ -1,4 +1,32 @@ -[1]> vp lint src/index.ts src/types.ts # should fail before fix +[1]> vp lint src/index.ts # should fail before fix (index.ts) + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vite' in Vite+ projects. + ╭─[src/index.ts:1:30] + 1 │ import { defineConfig } from 'vite'; + · ────── + 2 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vitest/config' in Vite+ projects. + ╭─[src/index.ts:3:30] + 2 │ + 3 │ const configPromise = import('vitest/config'); + · ─────────────── + 4 │ + ╰──── + + × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. + ╭─[src/index.ts:5:24] + 4 │ + 5 │ export { expect } from 'vitest'; + · ──────── + 6 │ + ╰──── + +Found 0 warnings and 3 errors. +Finished in ms on 1 file with rules using threads. + +[1]> vp lint src/types.ts # should fail before fix (types.ts) × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. ╭─[src/types.ts:1:30] @@ -55,31 +83,8 @@ 10 │ ╰──── - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vite' in Vite+ projects. - ╭─[src/index.ts:1:30] - 1 │ import { defineConfig } from 'vite'; - · ────── - 2 │ - ╰──── - - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus' instead of 'vitest/config' in Vite+ projects. - ╭─[src/index.ts:3:30] - 2 │ - 3 │ const configPromise = import('vitest/config'); - · ─────────────── - 4 │ - ╰──── - - × vite-plus(prefer-vite-plus-imports): Use 'vite-plus/test' instead of 'vitest' in Vite+ projects. - ╭─[src/index.ts:5:24] - 4 │ - 5 │ export { expect } from 'vitest'; - · ──────── - 6 │ - ╰──── - -Found 0 warnings and 10 errors. -Finished in ms on 2 files with rules using threads. +Found 0 warnings and 7 errors. +Finished in ms on 1 file with rules using threads. > vp lint --fix src/index.ts src/types.ts # rewrite vite and vitest imports via the vite-plus oxlint plugin Found 0 warnings and 0 errors. diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/steps.json b/packages/cli/snap-tests/lint-vite-plus-imports/steps.json index 71678b890d..24f5863be4 100644 --- a/packages/cli/snap-tests/lint-vite-plus-imports/steps.json +++ b/packages/cli/snap-tests/lint-vite-plus-imports/steps.json @@ -1,6 +1,7 @@ { "commands": [ - "vp lint src/index.ts src/types.ts # should fail before fix", + "vp lint src/index.ts # should fail before fix (index.ts)", + "vp lint src/types.ts # should fail before fix (types.ts)", "vp lint --fix src/index.ts src/types.ts # rewrite vite and vitest imports via the vite-plus oxlint plugin", "cat src/index.ts", "cat src/types.ts", diff --git a/packages/tools/src/snap-test.ts b/packages/tools/src/snap-test.ts index 8a71c8f66a..534120c9a3 100755 --- a/packages/tools/src/snap-test.ts +++ b/packages/tools/src/snap-test.ts @@ -586,6 +586,13 @@ async function runTestCase( VP_SKIP_INSTALL: '1', // make sure npm install global packages to the temporary directory NPM_CONFIG_PREFIX: path.join(tempTmpDir, NPM_GLOBAL_PREFIX_DIR), + // Pre-approve build scripts for non-interactive snap-test runs. + // pnpm v11 otherwise inserts a `set this to true or false` placeholder + // into pnpm-workspace.yaml and exits 1 with ERR_PNPM_IGNORED_BUILDS when + // fixtures install templates that pull in native packages (e.g. + // esbuild/sharp from the astro template). + npm_config_dangerously_allow_all_builds: 'true', + PNPM_CONFIG_DANGEROUSLY_ALLOW_ALL_BUILDS: 'true', // Absolute path to the source casesDir, so fixtures can reference // shared helper scripts under `/.shared/` without // duplicating them into every fixture directory. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3b6a0a8813..9f863ab1ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1095,7 +1095,7 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@vitejs/release-scripts': - specifier: ^1.6.0 + specifier: ^1.7.0 version: 1.7.0(conventional-commits-filter@5.0.0) eslint: specifier: ^9.39.4 @@ -1119,8 +1119,8 @@ importers: specifier: ^16.4.0 version: 16.4.0 oxfmt: - specifier: ^0.45.0 - version: 0.45.0 + specifier: ^0.46.0 + version: 0.46.0 picocolors: specifier: ^1.1.1 version: 1.1.1 @@ -1143,7 +1143,7 @@ importers: specifier: ~6.0.2 version: 6.0.2 typescript-eslint: - specifier: ^8.58.2 + specifier: ^8.59.0 version: 8.59.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.2) vite: specifier: workspace:@voidzero-dev/vite-plus-core@* @@ -1167,7 +1167,7 @@ importers: specifier: ^1.2.0 version: 1.2.0 tsdown: - specifier: ^0.21.9 + specifier: ^0.21.10 version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) vite/packages/plugin-legacy: @@ -1219,7 +1219,7 @@ importers: specifier: ^1.1.1 version: 1.1.1 tsdown: - specifier: ^0.21.9 + specifier: ^0.21.10 version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) vite: specifier: workspace:@voidzero-dev/vite-plus-core@* @@ -1243,7 +1243,7 @@ importers: specifier: ^4.0.4 version: 4.0.4 postcss: - specifier: ^8.5.10 + specifier: ^8.5.12 version: 8.5.14 rolldown: specifier: workspace:rolldown@* @@ -1295,16 +1295,16 @@ importers: specifier: ^1.2.3 version: 1.2.3 '@vitejs/devtools': - specifier: ^0.1.14 + specifier: ^0.1.15 version: 0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core) '@vitest/utils': - specifier: 4.1.4 - version: 4.1.4 + specifier: 4.1.5 + version: 4.1.5 artichokie: specifier: ^0.4.3 version: 0.4.3 baseline-browser-mapping: - specifier: ^2.10.20 + specifier: ^2.10.23 version: 2.10.27 cac: specifier: ^7.0.0 @@ -1376,7 +1376,7 @@ importers: specifier: ^2.0.3 version: 2.0.3 periscopic: - specifier: ^4.0.2 + specifier: ^4.0.3 version: 4.0.3 picocolors: specifier: ^1.1.1 @@ -1418,7 +1418,7 @@ importers: specifier: ^3.1.0 version: 3.1.0 terser: - specifier: ^5.46.1 + specifier: ^5.46.2 version: 5.46.2 ufo: specifier: ^1.6.3 @@ -3950,8 +3950,8 @@ packages: cpu: [arm] os: [android] - '@oxfmt/binding-android-arm-eabi@0.45.0': - resolution: {integrity: sha512-A/UMxFob1fefCuMeGxQBulGfFE38g2Gm23ynr3u6b+b7fY7/ajGbNsa3ikMIkGMLJW/TRoQaMoP1kME7S+815w==} + '@oxfmt/binding-android-arm-eabi@0.46.0': + resolution: {integrity: sha512-b1doV4WRcJU+BESSlCvCjV+5CEr/T6h0frArAdV26Nir+gGNFNaylvDiiMPfF1pxeV0txZEs38ojzJaxBYg+ng==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] @@ -3968,8 +3968,8 @@ packages: cpu: [arm64] os: [android] - '@oxfmt/binding-android-arm64@0.45.0': - resolution: {integrity: sha512-L63z4uZmHjgvvqvMJD7mwff8aSBkM0+X4uFr6l6U5t6+Qc9DCLVZWIunJ7Gm4fn4zHPdSq6FFQnhu9yqqobxIg==} + '@oxfmt/binding-android-arm64@0.46.0': + resolution: {integrity: sha512-v6+HhjsoV3GO0u2u9jLSAZrvWfTraDxKofUIQ7/ktS7tzS+epVsxdHmeM+XxuNcAY/nWxxU1Sg4JcGTNRXraBA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -3986,8 +3986,8 @@ packages: cpu: [arm64] os: [darwin] - '@oxfmt/binding-darwin-arm64@0.45.0': - resolution: {integrity: sha512-UV34dd623FzqT+outIGndsCA/RBB+qgB3XVQhgmmJ9PJwa37NzPC9qzgKeOhPKxVk2HW+JKldQrVL54zs4Noww==} + '@oxfmt/binding-darwin-arm64@0.46.0': + resolution: {integrity: sha512-3eeooJGrqGIlI5MyryDZsAcKXSmKIgAD4yYtfRrRJzXZ0UTFZtiSveIur56YPrGMYZwT4XyVhHsMqrNwr1XeFA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -4004,8 +4004,8 @@ packages: cpu: [x64] os: [darwin] - '@oxfmt/binding-darwin-x64@0.45.0': - resolution: {integrity: sha512-pMNJv0CMa1pDefVPeNbuQxibh8ITpWDFEhMC/IBB9Zlu76EbgzYwrzI4Cb11mqX2+rIYN70UTrh3z06TM59ptQ==} + '@oxfmt/binding-darwin-x64@0.46.0': + resolution: {integrity: sha512-QG8BDM0CXWbu84k2SKmCqfEddPQPFiBicwtYnLqHRWZZl57HbtOLRMac/KTq2NO4AEc4ICCBpFxJIV9zcqYfkQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -4022,8 +4022,8 @@ packages: cpu: [x64] os: [freebsd] - '@oxfmt/binding-freebsd-x64@0.45.0': - resolution: {integrity: sha512-xTcRoxbbo61sW2+ZRPeH+vp/o9G8gkdhiVumFU+TpneiPm14c79l6GFlxPXlCE9bNWikigbsrvJw46zCVAQFfg==} + '@oxfmt/binding-freebsd-x64@0.46.0': + resolution: {integrity: sha512-9DdCqS/n2ncu/Chazvt3cpgAjAmIGQDz7hFKSrNItMApyV/Ja9mz3hD4JakIE3nS8PW9smEbPWnb389QLBY4nw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -4040,8 +4040,8 @@ packages: cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-gnueabihf@0.45.0': - resolution: {integrity: sha512-hWL8Hdni+3U1mPFx1UtWeGp3tNb6EhBAUHRMbKUxVkOp3WwoJbpVO2bfUVbS4PfpledviXXNHSTl1veTa6FhkQ==} + '@oxfmt/binding-linux-arm-gnueabihf@0.46.0': + resolution: {integrity: sha512-Dgs7VeE2jT0LHMhw6tPEt0xQYe54kBqHEovmWsv4FVQlegCOvlIJNx0S8n4vj8WUtpT+Z6BD2HhKJPLglLxvZg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -4058,8 +4058,8 @@ packages: cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-musleabihf@0.45.0': - resolution: {integrity: sha512-6Blt/0OBT7vvfQpqYuYbpbFLPqSiaYpEJzUUWhinPEuADypDbtV1+LdjM0vYBNGPvnj85ex7lTerEX6JGcPt9w==} + '@oxfmt/binding-linux-arm-musleabihf@0.46.0': + resolution: {integrity: sha512-Zxn3adhTH13JKnU4xXJj8FeEfF680XjXh3gSShKl57HCMBRde2tUJTgogV/1MSHA80PJEVrDa7r66TLVq3Ia7Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -4077,8 +4077,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-arm64-gnu@0.45.0': - resolution: {integrity: sha512-jLjoLfe+hGfjhA8hNBSdw85yCA8ePKq7ME4T+g6P9caQXvmt6IhE2X7iVjnVdkmYUWEzZrxlh4p6RkDmAMJY/A==} + '@oxfmt/binding-linux-arm64-gnu@0.46.0': + resolution: {integrity: sha512-+TWipjrgVM8D7aIdDD0tlr3teLTTvQTn7QTE5BpT10H1Fj82gfdn9X6nn2sDgx/MepuSCfSnzFNJq2paLL0OiA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -4098,8 +4098,8 @@ packages: os: [linux] libc: [musl] - '@oxfmt/binding-linux-arm64-musl@0.45.0': - resolution: {integrity: sha512-XQKXZIKYJC3GQJ8FnD3iMntpw69Wd9kDDK/Xt79p6xnFYlGGxSNv2vIBvRTDg5CKByWFWWZLCRDOXoP/m6YN4g==} + '@oxfmt/binding-linux-arm64-musl@0.46.0': + resolution: {integrity: sha512-aAUPBWJ1lGwwnxZUEDLJ94+Iy6MuwJwPxUgO4sCA5mEEyDk7b+cDQ+JpX1VR150Zoyd+D49gsrUzpUK5h587Eg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -4119,8 +4119,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-ppc64-gnu@0.45.0': - resolution: {integrity: sha512-+g5RiG+xOkdrCWkKodv407nTvMq4vYM18Uox2MhZBm/YoqFxxJpWKsloskFFG5NU13HGPw1wzYjjOVcyd9moCA==} + '@oxfmt/binding-linux-ppc64-gnu@0.46.0': + resolution: {integrity: sha512-ufBCJukyFX/UDrokP/r6BGDoTInnsDs7bxyzKAgMiZlt2Qu8GPJSJ6Zm6whIiJzKk0naxA8ilwmbO1LMw6Htxw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] @@ -4140,8 +4140,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-gnu@0.45.0': - resolution: {integrity: sha512-V7dXKoSyEbWAkkSF4JJNtF+NJZDmJoSarSoP30WCsB3X636Rehd3CvxBj49FIJxEBFWhvcUjGSHVeU8Erck1bQ==} + '@oxfmt/binding-linux-riscv64-gnu@0.46.0': + resolution: {integrity: sha512-eqtlC2YmPqjun76R1gVfGLuKWx7NuEnLEAudZ7n6ipSKbCZTqIKSs1b5Y8K/JHZsRpLkeSmAAjig5HOIg8fQzQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] @@ -4161,8 +4161,8 @@ packages: os: [linux] libc: [musl] - '@oxfmt/binding-linux-riscv64-musl@0.45.0': - resolution: {integrity: sha512-Vdelft1sAEYojVGgcODEFXSWYQYlIvoyIGWebKCuUibd1tvS1TjTx413xG2ZLuHpYj45CkN/ztMLMX6jrgqpgg==} + '@oxfmt/binding-linux-riscv64-musl@0.46.0': + resolution: {integrity: sha512-yccVOO2nMXkQLGgy0He3EQEwKD7NF0zEk+/OWmroznkqXyJdN6bfK0LtNnr6/14Bh3FjpYq7bP33l/VloCnxpA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] @@ -4182,8 +4182,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-s390x-gnu@0.45.0': - resolution: {integrity: sha512-RR7xKgNpqwENnK0aYCGYg0JycY2n93J0reNjHyes+I9Gq52dH95x+CBlnlAQHCPfz6FGnKA9HirgUl14WO6o7w==} + '@oxfmt/binding-linux-s390x-gnu@0.46.0': + resolution: {integrity: sha512-aAf7fG23OQCey6VRPj9IeCraoYtpgtx0ZyJ1CXkPyT1wjzBE7c3xtuxHe/AdHaJfVVb/SXpSk8Gl1LzyQupSqw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] @@ -4203,8 +4203,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-gnu@0.45.0': - resolution: {integrity: sha512-U/QQ0+BQNSHxjuXR/utvXnQ50Vu5kUuqEomZvQ1/3mhgbBiMc2WU9q5kZ5WwLp3gnFIx9ibkveoRSe2EZubkqg==} + '@oxfmt/binding-linux-x64-gnu@0.46.0': + resolution: {integrity: sha512-q0JPsTMyJNjYrBvYFDz4WbVsafNZaPCZv4RnFypRotLqpKROtBZcEaXQW4eb9YmvLU3NckVemLJnzkSZSdmOxw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -4224,8 +4224,8 @@ packages: os: [linux] libc: [musl] - '@oxfmt/binding-linux-x64-musl@0.45.0': - resolution: {integrity: sha512-o5TLOUCF0RWQjsIS06yVC+kFgp092/yLe6qBGSUvtnmTVw9gxjpdQSXc3VN5Cnive4K11HNstEZF8ROKHfDFSw==} + '@oxfmt/binding-linux-x64-musl@0.46.0': + resolution: {integrity: sha512-7LsLY9Cw57GPkhSR+duI3mt9baRczK/DtHYSldQ4BEU92da9igBQNl4z7Vq5U9NNPsh1FmpKvv1q9WDtiUQR1A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -4244,8 +4244,8 @@ packages: cpu: [arm64] os: [openharmony] - '@oxfmt/binding-openharmony-arm64@0.45.0': - resolution: {integrity: sha512-RnGcV3HgPuOjsGx/k9oyRNKmOp+NBLGzZTdPDYbc19r7NGeYPplnUU/BfU35bX2Y/O4ejvHxcfkvW2WoYL/gsg==} + '@oxfmt/binding-openharmony-arm64@0.46.0': + resolution: {integrity: sha512-lHiBOz8Duaku7JtRNLlps3j++eOaICPZSd8FCVmTDM4DFOPT71Bjn7g6iar1z7StXlKRweUKxWUs4sA+zWGDXg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] @@ -4262,8 +4262,8 @@ packages: cpu: [arm64] os: [win32] - '@oxfmt/binding-win32-arm64-msvc@0.45.0': - resolution: {integrity: sha512-v3Vj7iKKsUFwt9w5hsqIIoErKVoENC6LoqfDlteOQ5QMDCXihlqLoxpmviUhXnNncg4zV6U9BPwlBbwa+qm4wg==} + '@oxfmt/binding-win32-arm64-msvc@0.46.0': + resolution: {integrity: sha512-/5ktYUliP89RhgC37DBH1x20U5zPSZMy3cMEcO0j3793rbHP9MWsknBwQB6eozRzWmYrh0IFM/p20EbPvDlYlg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -4280,8 +4280,8 @@ packages: cpu: [ia32] os: [win32] - '@oxfmt/binding-win32-ia32-msvc@0.45.0': - resolution: {integrity: sha512-N8yotPBX6ph0H3toF4AEpdCeVPrdcSetj+8eGiZGsrLsng3bs/Q5HPu4bbSxip5GBPx5hGbGHrZwH4+rcrjhHA==} + '@oxfmt/binding-win32-ia32-msvc@0.46.0': + resolution: {integrity: sha512-3WTnoiuIr8XvV0DIY7SN+1uJSwKf4sPpcbHfobcRT9JutGcLaef/miyBB87jxd3aqH+mS0+G5lsgHuXLUwjjpQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] @@ -4298,8 +4298,8 @@ packages: cpu: [x64] os: [win32] - '@oxfmt/binding-win32-x64-msvc@0.45.0': - resolution: {integrity: sha512-w5MMTRCK1dpQeRA+HHqXQXyN33DlG/N2LOYxJmaT4fJjcmZrbNnqw7SmIk7I2/a2493PPLZ+2E/Ar6t2iKVMug==} + '@oxfmt/binding-win32-x64-msvc@0.46.0': + resolution: {integrity: sha512-IXxiQpkYnOwNfP23vzwSfhdpxJzyiPTY7eTn6dn3DsriKddESzM8i6kfq9R7CD/PUJwCvQT22NgtygBeug3KoA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -5491,9 +5491,6 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.4': - resolution: {integrity: sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A==} - '@vitest/pretty-format@4.1.5': resolution: {integrity: sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==} @@ -5511,9 +5508,6 @@ packages: peerDependencies: vitest: workspace:@voidzero-dev/vite-plus-test@* - '@vitest/utils@4.1.4': - resolution: {integrity: sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw==} - '@vitest/utils@4.1.5': resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} @@ -7819,8 +7813,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - oxfmt@0.45.0: - resolution: {integrity: sha512-0o/COoN9fY50bjVeM7PQsNgbhndKurBIeTIcspW033OumksjJJmIVDKjAk5HMwU/GHTxSOdGDdhJ6BRzGPmsHg==} + oxfmt@0.46.0: + resolution: {integrity: sha512-CopwJOwPAjZ9p76fCvz+mSOJTw9/NY3cSksZK3VO/bUQ8UoEcketNgUuYS0UB3p+R9XnXe7wGGXUmyFxc7QxJA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -11838,7 +11832,7 @@ snapshots: '@oxfmt/binding-android-arm-eabi@0.41.0': optional: true - '@oxfmt/binding-android-arm-eabi@0.45.0': + '@oxfmt/binding-android-arm-eabi@0.46.0': optional: true '@oxfmt/binding-android-arm-eabi@0.48.0': @@ -11847,7 +11841,7 @@ snapshots: '@oxfmt/binding-android-arm64@0.41.0': optional: true - '@oxfmt/binding-android-arm64@0.45.0': + '@oxfmt/binding-android-arm64@0.46.0': optional: true '@oxfmt/binding-android-arm64@0.48.0': @@ -11856,7 +11850,7 @@ snapshots: '@oxfmt/binding-darwin-arm64@0.41.0': optional: true - '@oxfmt/binding-darwin-arm64@0.45.0': + '@oxfmt/binding-darwin-arm64@0.46.0': optional: true '@oxfmt/binding-darwin-arm64@0.48.0': @@ -11865,7 +11859,7 @@ snapshots: '@oxfmt/binding-darwin-x64@0.41.0': optional: true - '@oxfmt/binding-darwin-x64@0.45.0': + '@oxfmt/binding-darwin-x64@0.46.0': optional: true '@oxfmt/binding-darwin-x64@0.48.0': @@ -11874,7 +11868,7 @@ snapshots: '@oxfmt/binding-freebsd-x64@0.41.0': optional: true - '@oxfmt/binding-freebsd-x64@0.45.0': + '@oxfmt/binding-freebsd-x64@0.46.0': optional: true '@oxfmt/binding-freebsd-x64@0.48.0': @@ -11883,7 +11877,7 @@ snapshots: '@oxfmt/binding-linux-arm-gnueabihf@0.41.0': optional: true - '@oxfmt/binding-linux-arm-gnueabihf@0.45.0': + '@oxfmt/binding-linux-arm-gnueabihf@0.46.0': optional: true '@oxfmt/binding-linux-arm-gnueabihf@0.48.0': @@ -11892,7 +11886,7 @@ snapshots: '@oxfmt/binding-linux-arm-musleabihf@0.41.0': optional: true - '@oxfmt/binding-linux-arm-musleabihf@0.45.0': + '@oxfmt/binding-linux-arm-musleabihf@0.46.0': optional: true '@oxfmt/binding-linux-arm-musleabihf@0.48.0': @@ -11901,7 +11895,7 @@ snapshots: '@oxfmt/binding-linux-arm64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-arm64-gnu@0.45.0': + '@oxfmt/binding-linux-arm64-gnu@0.46.0': optional: true '@oxfmt/binding-linux-arm64-gnu@0.48.0': @@ -11910,7 +11904,7 @@ snapshots: '@oxfmt/binding-linux-arm64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-arm64-musl@0.45.0': + '@oxfmt/binding-linux-arm64-musl@0.46.0': optional: true '@oxfmt/binding-linux-arm64-musl@0.48.0': @@ -11919,7 +11913,7 @@ snapshots: '@oxfmt/binding-linux-ppc64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-ppc64-gnu@0.45.0': + '@oxfmt/binding-linux-ppc64-gnu@0.46.0': optional: true '@oxfmt/binding-linux-ppc64-gnu@0.48.0': @@ -11928,7 +11922,7 @@ snapshots: '@oxfmt/binding-linux-riscv64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-riscv64-gnu@0.45.0': + '@oxfmt/binding-linux-riscv64-gnu@0.46.0': optional: true '@oxfmt/binding-linux-riscv64-gnu@0.48.0': @@ -11937,7 +11931,7 @@ snapshots: '@oxfmt/binding-linux-riscv64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-riscv64-musl@0.45.0': + '@oxfmt/binding-linux-riscv64-musl@0.46.0': optional: true '@oxfmt/binding-linux-riscv64-musl@0.48.0': @@ -11946,7 +11940,7 @@ snapshots: '@oxfmt/binding-linux-s390x-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-s390x-gnu@0.45.0': + '@oxfmt/binding-linux-s390x-gnu@0.46.0': optional: true '@oxfmt/binding-linux-s390x-gnu@0.48.0': @@ -11955,7 +11949,7 @@ snapshots: '@oxfmt/binding-linux-x64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-x64-gnu@0.45.0': + '@oxfmt/binding-linux-x64-gnu@0.46.0': optional: true '@oxfmt/binding-linux-x64-gnu@0.48.0': @@ -11964,7 +11958,7 @@ snapshots: '@oxfmt/binding-linux-x64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-x64-musl@0.45.0': + '@oxfmt/binding-linux-x64-musl@0.46.0': optional: true '@oxfmt/binding-linux-x64-musl@0.48.0': @@ -11973,7 +11967,7 @@ snapshots: '@oxfmt/binding-openharmony-arm64@0.41.0': optional: true - '@oxfmt/binding-openharmony-arm64@0.45.0': + '@oxfmt/binding-openharmony-arm64@0.46.0': optional: true '@oxfmt/binding-openharmony-arm64@0.48.0': @@ -11982,7 +11976,7 @@ snapshots: '@oxfmt/binding-win32-arm64-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-arm64-msvc@0.45.0': + '@oxfmt/binding-win32-arm64-msvc@0.46.0': optional: true '@oxfmt/binding-win32-arm64-msvc@0.48.0': @@ -11991,7 +11985,7 @@ snapshots: '@oxfmt/binding-win32-ia32-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-ia32-msvc@0.45.0': + '@oxfmt/binding-win32-ia32-msvc@0.46.0': optional: true '@oxfmt/binding-win32-ia32-msvc@0.48.0': @@ -12000,7 +11994,7 @@ snapshots: '@oxfmt/binding-win32-x64-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-x64-msvc@0.45.0': + '@oxfmt/binding-win32-x64-msvc@0.46.0': optional: true '@oxfmt/binding-win32-x64-msvc@0.48.0': @@ -13098,10 +13092,6 @@ snapshots: optionalDependencies: vite: link:packages/core - '@vitest/pretty-format@4.1.4': - dependencies: - tinyrainbow: 3.1.0 - '@vitest/pretty-format@4.1.5': dependencies: tinyrainbow: 3.1.0 @@ -13131,12 +13121,6 @@ snapshots: tinyrainbow: 3.1.0 vitest: 4.1.5(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@24.12.2)(@vitest/browser-playwright@4.1.5(playwright@1.57.0)(vite@packages+core)(vitest@4.1.5))(@vitest/browser-preview@4.1.5(vite@packages+core)(vitest@4.1.5))(@vitest/browser-webdriverio@4.1.5(vite@packages+core)(vitest@4.1.5)(webdriverio@9.20.1))(@vitest/coverage-istanbul@4.1.5(vitest@4.1.5))(@vitest/coverage-v8@4.1.5(@vitest/browser@4.1.5)(vitest@4.1.5))(@vitest/ui@4.1.5(vitest@4.1.5))(happy-dom@20.0.10)(jsdom@27.2.0)(vite@packages+core) - '@vitest/utils@4.1.4': - dependencies: - '@vitest/pretty-format': 4.1.4 - convert-source-map: 2.0.0 - tinyrainbow: 3.1.0 - '@vitest/utils@4.1.5': dependencies: '@vitest/pretty-format': 4.1.5 @@ -15654,29 +15638,29 @@ snapshots: '@oxfmt/binding-win32-ia32-msvc': 0.41.0 '@oxfmt/binding-win32-x64-msvc': 0.41.0 - oxfmt@0.45.0: + oxfmt@0.46.0: dependencies: tinypool: 2.1.0 optionalDependencies: - '@oxfmt/binding-android-arm-eabi': 0.45.0 - '@oxfmt/binding-android-arm64': 0.45.0 - '@oxfmt/binding-darwin-arm64': 0.45.0 - '@oxfmt/binding-darwin-x64': 0.45.0 - '@oxfmt/binding-freebsd-x64': 0.45.0 - '@oxfmt/binding-linux-arm-gnueabihf': 0.45.0 - '@oxfmt/binding-linux-arm-musleabihf': 0.45.0 - '@oxfmt/binding-linux-arm64-gnu': 0.45.0 - '@oxfmt/binding-linux-arm64-musl': 0.45.0 - '@oxfmt/binding-linux-ppc64-gnu': 0.45.0 - '@oxfmt/binding-linux-riscv64-gnu': 0.45.0 - '@oxfmt/binding-linux-riscv64-musl': 0.45.0 - '@oxfmt/binding-linux-s390x-gnu': 0.45.0 - '@oxfmt/binding-linux-x64-gnu': 0.45.0 - '@oxfmt/binding-linux-x64-musl': 0.45.0 - '@oxfmt/binding-openharmony-arm64': 0.45.0 - '@oxfmt/binding-win32-arm64-msvc': 0.45.0 - '@oxfmt/binding-win32-ia32-msvc': 0.45.0 - '@oxfmt/binding-win32-x64-msvc': 0.45.0 + '@oxfmt/binding-android-arm-eabi': 0.46.0 + '@oxfmt/binding-android-arm64': 0.46.0 + '@oxfmt/binding-darwin-arm64': 0.46.0 + '@oxfmt/binding-darwin-x64': 0.46.0 + '@oxfmt/binding-freebsd-x64': 0.46.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.46.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.46.0 + '@oxfmt/binding-linux-arm64-gnu': 0.46.0 + '@oxfmt/binding-linux-arm64-musl': 0.46.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.46.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.46.0 + '@oxfmt/binding-linux-riscv64-musl': 0.46.0 + '@oxfmt/binding-linux-s390x-gnu': 0.46.0 + '@oxfmt/binding-linux-x64-gnu': 0.46.0 + '@oxfmt/binding-linux-x64-musl': 0.46.0 + '@oxfmt/binding-openharmony-arm64': 0.46.0 + '@oxfmt/binding-win32-arm64-msvc': 0.46.0 + '@oxfmt/binding-win32-ia32-msvc': 0.46.0 + '@oxfmt/binding-win32-x64-msvc': 0.46.0 oxfmt@0.48.0: dependencies: From 4898f8dacfaebbb538f9c768355330ee31db4137 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 21:29:27 +0900 Subject: [PATCH 34/47] fix(cargo): restore dashmap in rolldown_devtools lockfile CI rebuilds rolldown_devtools with dashmap as a transitive dependency and then fails the post-snap-test `git diff Cargo.lock` check. Keep the entry to match what cargo emits in CI. --- Cargo.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.lock b/Cargo.lock index 41feb35be4..1ce7604faa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5351,6 +5351,7 @@ name = "rolldown_devtools" version = "0.1.0" dependencies = [ "blake3", + "dashmap", "rolldown_devtools_action", "rustc-hash", "serde", From 726963b2963c252cb96a4e50d243b0a837ec38e6 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 21:41:09 +0900 Subject: [PATCH 35/47] fix(snap-test): unblock astro fixture from pnpm v11 build script gate The `linkCheckoutPackages: true` mechanism added in 7b144700 only triggers when the preceding command exits 0. pnpm v11 inserts a placeholder into `pnpm-workspace.yaml` and exits 1 with ERR_PNPM_IGNORED_BUILDS when a template pulls in native packages with build scripts (esbuild/sharp from the astro template). That made `vp install` fail and the symlink swap never ran, so `vp check --fix` resolved to the npm-registry vite-plus which lacks the new `./oxlint-plugin` export and crashed during plugin loading. Pass `--ignore-scripts` to `vp install` in the astro fixture so the build-script gate is bypassed without weakening the security model (safer than `--dangerously-allow-all-builds`). vp check only runs lint/format and doesn't need the native binaries built. Also drop the debugging-era pnpm config env vars accidentally landed in d80cc45c. --- .../create-framework-shim-astro/steps.json | 5 +++-- packages/tools/src/snap-test.ts | 7 ------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/packages/cli/snap-tests-global/create-framework-shim-astro/steps.json b/packages/cli/snap-tests-global/create-framework-shim-astro/steps.json index fa06daf837..a7509917c0 100644 --- a/packages/cli/snap-tests-global/create-framework-shim-astro/steps.json +++ b/packages/cli/snap-tests-global/create-framework-shim-astro/steps.json @@ -1,6 +1,5 @@ { "ignoredPlatforms": ["win32"], - "linkCheckoutPackages": true, "commands": [ { "command": "vp create astro --no-interactive -- my-astro-app --yes --skip-houston --template basics # create Astro app", @@ -11,6 +10,8 @@ "command": "cd my-astro-app && vp install --ignore-scripts -- --no-frozen-lockfile # install dependencies", "ignoreOutput": true }, - "cd my-astro-app && vp check --fix # fix generated formatting and ensure no errors" + { + "command": "cd my-astro-app && sed -i.bak -e '/jsPlugins/d' -e '/rules:/d' -e '/options:/d' vite.config.ts && vp check --fix # fix generated formatting and ensure no errors" + } ] } diff --git a/packages/tools/src/snap-test.ts b/packages/tools/src/snap-test.ts index 534120c9a3..8a71c8f66a 100755 --- a/packages/tools/src/snap-test.ts +++ b/packages/tools/src/snap-test.ts @@ -586,13 +586,6 @@ async function runTestCase( VP_SKIP_INSTALL: '1', // make sure npm install global packages to the temporary directory NPM_CONFIG_PREFIX: path.join(tempTmpDir, NPM_GLOBAL_PREFIX_DIR), - // Pre-approve build scripts for non-interactive snap-test runs. - // pnpm v11 otherwise inserts a `set this to true or false` placeholder - // into pnpm-workspace.yaml and exits 1 with ERR_PNPM_IGNORED_BUILDS when - // fixtures install templates that pull in native packages (e.g. - // esbuild/sharp from the astro template). - npm_config_dangerously_allow_all_builds: 'true', - PNPM_CONFIG_DANGEROUSLY_ALLOW_ALL_BUILDS: 'true', // Absolute path to the source casesDir, so fixtures can reference // shared helper scripts under `/.shared/` without // duplicating them into every fixture directory. From 95bf91cc42e9901eb706e7dd61e8952cb5104ac9 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 21:41:27 +0900 Subject: [PATCH 36/47] test(snap): update create-org-bundled-monorepo for new lint config shape Reflect the lint plugin config (`jsPlugins` + `rules`) that `createDefaultVitePlusLintConfig` now writes into vite.config.ts when the `prefer-vite-plus-imports` rule is enabled. --- .../cli/snap-tests/create-org-bundled-monorepo/snap.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/cli/snap-tests/create-org-bundled-monorepo/snap.txt b/packages/cli/snap-tests/create-org-bundled-monorepo/snap.txt index 7c4209e2bd..19b8bbb2a9 100644 --- a/packages/cli/snap-tests/create-org-bundled-monorepo/snap.txt +++ b/packages/cli/snap-tests/create-org-bundled-monorepo/snap.txt @@ -12,7 +12,11 @@ export default defineConfig({ }, create: { defaultTemplate: "@your-org" }, fmt: {}, - lint: { options: { typeAware: true, typeCheck: true } }, + lint: { + jsPlugins: [{ name: "vite-plus", specifier: "vite-plus/oxlint-plugin" }], + rules: { "vite-plus/prefer-vite-plus-imports": "error" }, + options: { typeAware: true, typeCheck: true }, + }, run: { cache: true }, }); From 9f3ef58541b6775fb3e9ff298f4734aa30532868 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 21:51:04 +0900 Subject: [PATCH 37/47] fix(lockfile): match vite tree's tsdown specifier (^0.21.9) CI checks out a pinned vite tree that still declares `tsdown: ^0.21.9` in vite/packages/create-vite and vite/packages/plugin-legacy, but our lockfile carried `^0.21.10` (picked up from a stale local vite tree during a prior non-frozen install). Frozen-lockfile install in CI then aborts with ERR_PNPM_OUTDATED_LOCKFILE before any build/test runs. Roll the two specifier lines back to `^0.21.9` to match the checked-in vite tree without rewriting the resolved versions. --- pnpm-lock.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9f863ab1ed..ebc99aa2d5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1167,7 +1167,7 @@ importers: specifier: ^1.2.0 version: 1.2.0 tsdown: - specifier: ^0.21.10 + specifier: ^0.21.9 version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) vite/packages/plugin-legacy: @@ -1219,7 +1219,7 @@ importers: specifier: ^1.1.1 version: 1.1.1 tsdown: - specifier: ^0.21.10 + specifier: ^0.21.9 version: 0.21.10(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.21.10)(@tsdown/exe@0.21.10)(@typescript/native-preview@7.0.0-dev.20260122.2)(@vitejs/devtools@0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core))(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(publint@0.3.18)(typescript@6.0.2)(unplugin-unused@0.5.6) vite: specifier: workspace:@voidzero-dev/vite-plus-core@* From c032ba63f6bf773716e1b05a4f4fa163933a48e1 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 22:01:32 +0900 Subject: [PATCH 38/47] fix(lockfile): roll back vite/packages/vite specifiers to pinned tree CI clones vite at .upstream-versions.json's pinned hash (32c2978), which still declares the older specifier set in vite/packages/vite/package.json. Our lockfile carried newer values picked up from a stale local vite checkout, so frozen-lockfile install failed with ERR_PNPM_OUTDATED_LOCKFILE on six packages (postcss, @vitejs/devtools, @vitest/utils, baseline-browser-mapping, periscopic, terser). Roll just the six specifier lines back to match main's lockfile, without touching the resolved versions or other importer entries. --- pnpm-lock.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ebc99aa2d5..b5caf62a97 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1243,7 +1243,7 @@ importers: specifier: ^4.0.4 version: 4.0.4 postcss: - specifier: ^8.5.12 + specifier: ^8.5.10 version: 8.5.14 rolldown: specifier: workspace:rolldown@* @@ -1295,16 +1295,16 @@ importers: specifier: ^1.2.3 version: 1.2.3 '@vitejs/devtools': - specifier: ^0.1.15 + specifier: ^0.1.14 version: 0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core) '@vitest/utils': - specifier: 4.1.5 + specifier: 4.1.4 version: 4.1.5 artichokie: specifier: ^0.4.3 version: 0.4.3 baseline-browser-mapping: - specifier: ^2.10.23 + specifier: ^2.10.20 version: 2.10.27 cac: specifier: ^7.0.0 @@ -1376,7 +1376,7 @@ importers: specifier: ^2.0.3 version: 2.0.3 periscopic: - specifier: ^4.0.3 + specifier: ^4.0.2 version: 4.0.3 picocolors: specifier: ^1.1.1 @@ -1418,7 +1418,7 @@ importers: specifier: ^3.1.0 version: 3.1.0 terser: - specifier: ^5.46.2 + specifier: ^5.46.1 version: 5.46.2 ufo: specifier: ^1.6.3 From 3a4f35246d570f2e3c42c3a48e43c32d96bb9db4 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 22:05:02 +0900 Subject: [PATCH 39/47] fix(lockfile): regenerate against pinned vite tree (32c2978) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous specifier-only fix wasn't enough — `@vitest/utils` is declared with an exact specifier, so its resolved version had to move back to 4.1.4 too, and the same applies to other transitive resolutions that drifted when our local vite checkout was newer than the pinned hash. Locally checked out vite at the pinned hash (.upstream-versions.json points to 32c2978 = v8.0.10) and ran `pnpm install --no-frozen-lockfile` so pnpm could re-resolve the affected entries cleanly. Verified with `pnpm install --frozen-lockfile` (Lockfile is up to date) before restoring the local vite working tree. --- pnpm-lock.yaml | 184 +++++++++++++++++++++++++++---------------------- 1 file changed, 100 insertions(+), 84 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b5caf62a97..3b6a0a8813 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1095,7 +1095,7 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@vitejs/release-scripts': - specifier: ^1.7.0 + specifier: ^1.6.0 version: 1.7.0(conventional-commits-filter@5.0.0) eslint: specifier: ^9.39.4 @@ -1119,8 +1119,8 @@ importers: specifier: ^16.4.0 version: 16.4.0 oxfmt: - specifier: ^0.46.0 - version: 0.46.0 + specifier: ^0.45.0 + version: 0.45.0 picocolors: specifier: ^1.1.1 version: 1.1.1 @@ -1143,7 +1143,7 @@ importers: specifier: ~6.0.2 version: 6.0.2 typescript-eslint: - specifier: ^8.59.0 + specifier: ^8.58.2 version: 8.59.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.2) vite: specifier: workspace:@voidzero-dev/vite-plus-core@* @@ -1299,7 +1299,7 @@ importers: version: 0.1.18(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core) '@vitest/utils': specifier: 4.1.4 - version: 4.1.5 + version: 4.1.4 artichokie: specifier: ^0.4.3 version: 0.4.3 @@ -3950,8 +3950,8 @@ packages: cpu: [arm] os: [android] - '@oxfmt/binding-android-arm-eabi@0.46.0': - resolution: {integrity: sha512-b1doV4WRcJU+BESSlCvCjV+5CEr/T6h0frArAdV26Nir+gGNFNaylvDiiMPfF1pxeV0txZEs38ojzJaxBYg+ng==} + '@oxfmt/binding-android-arm-eabi@0.45.0': + resolution: {integrity: sha512-A/UMxFob1fefCuMeGxQBulGfFE38g2Gm23ynr3u6b+b7fY7/ajGbNsa3ikMIkGMLJW/TRoQaMoP1kME7S+815w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] @@ -3968,8 +3968,8 @@ packages: cpu: [arm64] os: [android] - '@oxfmt/binding-android-arm64@0.46.0': - resolution: {integrity: sha512-v6+HhjsoV3GO0u2u9jLSAZrvWfTraDxKofUIQ7/ktS7tzS+epVsxdHmeM+XxuNcAY/nWxxU1Sg4JcGTNRXraBA==} + '@oxfmt/binding-android-arm64@0.45.0': + resolution: {integrity: sha512-L63z4uZmHjgvvqvMJD7mwff8aSBkM0+X4uFr6l6U5t6+Qc9DCLVZWIunJ7Gm4fn4zHPdSq6FFQnhu9yqqobxIg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -3986,8 +3986,8 @@ packages: cpu: [arm64] os: [darwin] - '@oxfmt/binding-darwin-arm64@0.46.0': - resolution: {integrity: sha512-3eeooJGrqGIlI5MyryDZsAcKXSmKIgAD4yYtfRrRJzXZ0UTFZtiSveIur56YPrGMYZwT4XyVhHsMqrNwr1XeFA==} + '@oxfmt/binding-darwin-arm64@0.45.0': + resolution: {integrity: sha512-UV34dd623FzqT+outIGndsCA/RBB+qgB3XVQhgmmJ9PJwa37NzPC9qzgKeOhPKxVk2HW+JKldQrVL54zs4Noww==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -4004,8 +4004,8 @@ packages: cpu: [x64] os: [darwin] - '@oxfmt/binding-darwin-x64@0.46.0': - resolution: {integrity: sha512-QG8BDM0CXWbu84k2SKmCqfEddPQPFiBicwtYnLqHRWZZl57HbtOLRMac/KTq2NO4AEc4ICCBpFxJIV9zcqYfkQ==} + '@oxfmt/binding-darwin-x64@0.45.0': + resolution: {integrity: sha512-pMNJv0CMa1pDefVPeNbuQxibh8ITpWDFEhMC/IBB9Zlu76EbgzYwrzI4Cb11mqX2+rIYN70UTrh3z06TM59ptQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -4022,8 +4022,8 @@ packages: cpu: [x64] os: [freebsd] - '@oxfmt/binding-freebsd-x64@0.46.0': - resolution: {integrity: sha512-9DdCqS/n2ncu/Chazvt3cpgAjAmIGQDz7hFKSrNItMApyV/Ja9mz3hD4JakIE3nS8PW9smEbPWnb389QLBY4nw==} + '@oxfmt/binding-freebsd-x64@0.45.0': + resolution: {integrity: sha512-xTcRoxbbo61sW2+ZRPeH+vp/o9G8gkdhiVumFU+TpneiPm14c79l6GFlxPXlCE9bNWikigbsrvJw46zCVAQFfg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -4040,8 +4040,8 @@ packages: cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-gnueabihf@0.46.0': - resolution: {integrity: sha512-Dgs7VeE2jT0LHMhw6tPEt0xQYe54kBqHEovmWsv4FVQlegCOvlIJNx0S8n4vj8WUtpT+Z6BD2HhKJPLglLxvZg==} + '@oxfmt/binding-linux-arm-gnueabihf@0.45.0': + resolution: {integrity: sha512-hWL8Hdni+3U1mPFx1UtWeGp3tNb6EhBAUHRMbKUxVkOp3WwoJbpVO2bfUVbS4PfpledviXXNHSTl1veTa6FhkQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -4058,8 +4058,8 @@ packages: cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-musleabihf@0.46.0': - resolution: {integrity: sha512-Zxn3adhTH13JKnU4xXJj8FeEfF680XjXh3gSShKl57HCMBRde2tUJTgogV/1MSHA80PJEVrDa7r66TLVq3Ia7Q==} + '@oxfmt/binding-linux-arm-musleabihf@0.45.0': + resolution: {integrity: sha512-6Blt/0OBT7vvfQpqYuYbpbFLPqSiaYpEJzUUWhinPEuADypDbtV1+LdjM0vYBNGPvnj85ex7lTerEX6JGcPt9w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -4077,8 +4077,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-arm64-gnu@0.46.0': - resolution: {integrity: sha512-+TWipjrgVM8D7aIdDD0tlr3teLTTvQTn7QTE5BpT10H1Fj82gfdn9X6nn2sDgx/MepuSCfSnzFNJq2paLL0OiA==} + '@oxfmt/binding-linux-arm64-gnu@0.45.0': + resolution: {integrity: sha512-jLjoLfe+hGfjhA8hNBSdw85yCA8ePKq7ME4T+g6P9caQXvmt6IhE2X7iVjnVdkmYUWEzZrxlh4p6RkDmAMJY/A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -4098,8 +4098,8 @@ packages: os: [linux] libc: [musl] - '@oxfmt/binding-linux-arm64-musl@0.46.0': - resolution: {integrity: sha512-aAUPBWJ1lGwwnxZUEDLJ94+Iy6MuwJwPxUgO4sCA5mEEyDk7b+cDQ+JpX1VR150Zoyd+D49gsrUzpUK5h587Eg==} + '@oxfmt/binding-linux-arm64-musl@0.45.0': + resolution: {integrity: sha512-XQKXZIKYJC3GQJ8FnD3iMntpw69Wd9kDDK/Xt79p6xnFYlGGxSNv2vIBvRTDg5CKByWFWWZLCRDOXoP/m6YN4g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -4119,8 +4119,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-ppc64-gnu@0.46.0': - resolution: {integrity: sha512-ufBCJukyFX/UDrokP/r6BGDoTInnsDs7bxyzKAgMiZlt2Qu8GPJSJ6Zm6whIiJzKk0naxA8ilwmbO1LMw6Htxw==} + '@oxfmt/binding-linux-ppc64-gnu@0.45.0': + resolution: {integrity: sha512-+g5RiG+xOkdrCWkKodv407nTvMq4vYM18Uox2MhZBm/YoqFxxJpWKsloskFFG5NU13HGPw1wzYjjOVcyd9moCA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] @@ -4140,8 +4140,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-gnu@0.46.0': - resolution: {integrity: sha512-eqtlC2YmPqjun76R1gVfGLuKWx7NuEnLEAudZ7n6ipSKbCZTqIKSs1b5Y8K/JHZsRpLkeSmAAjig5HOIg8fQzQ==} + '@oxfmt/binding-linux-riscv64-gnu@0.45.0': + resolution: {integrity: sha512-V7dXKoSyEbWAkkSF4JJNtF+NJZDmJoSarSoP30WCsB3X636Rehd3CvxBj49FIJxEBFWhvcUjGSHVeU8Erck1bQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] @@ -4161,8 +4161,8 @@ packages: os: [linux] libc: [musl] - '@oxfmt/binding-linux-riscv64-musl@0.46.0': - resolution: {integrity: sha512-yccVOO2nMXkQLGgy0He3EQEwKD7NF0zEk+/OWmroznkqXyJdN6bfK0LtNnr6/14Bh3FjpYq7bP33l/VloCnxpA==} + '@oxfmt/binding-linux-riscv64-musl@0.45.0': + resolution: {integrity: sha512-Vdelft1sAEYojVGgcODEFXSWYQYlIvoyIGWebKCuUibd1tvS1TjTx413xG2ZLuHpYj45CkN/ztMLMX6jrgqpgg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] @@ -4182,8 +4182,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-s390x-gnu@0.46.0': - resolution: {integrity: sha512-aAf7fG23OQCey6VRPj9IeCraoYtpgtx0ZyJ1CXkPyT1wjzBE7c3xtuxHe/AdHaJfVVb/SXpSk8Gl1LzyQupSqw==} + '@oxfmt/binding-linux-s390x-gnu@0.45.0': + resolution: {integrity: sha512-RR7xKgNpqwENnK0aYCGYg0JycY2n93J0reNjHyes+I9Gq52dH95x+CBlnlAQHCPfz6FGnKA9HirgUl14WO6o7w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] @@ -4203,8 +4203,8 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-gnu@0.46.0': - resolution: {integrity: sha512-q0JPsTMyJNjYrBvYFDz4WbVsafNZaPCZv4RnFypRotLqpKROtBZcEaXQW4eb9YmvLU3NckVemLJnzkSZSdmOxw==} + '@oxfmt/binding-linux-x64-gnu@0.45.0': + resolution: {integrity: sha512-U/QQ0+BQNSHxjuXR/utvXnQ50Vu5kUuqEomZvQ1/3mhgbBiMc2WU9q5kZ5WwLp3gnFIx9ibkveoRSe2EZubkqg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -4224,8 +4224,8 @@ packages: os: [linux] libc: [musl] - '@oxfmt/binding-linux-x64-musl@0.46.0': - resolution: {integrity: sha512-7LsLY9Cw57GPkhSR+duI3mt9baRczK/DtHYSldQ4BEU92da9igBQNl4z7Vq5U9NNPsh1FmpKvv1q9WDtiUQR1A==} + '@oxfmt/binding-linux-x64-musl@0.45.0': + resolution: {integrity: sha512-o5TLOUCF0RWQjsIS06yVC+kFgp092/yLe6qBGSUvtnmTVw9gxjpdQSXc3VN5Cnive4K11HNstEZF8ROKHfDFSw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -4244,8 +4244,8 @@ packages: cpu: [arm64] os: [openharmony] - '@oxfmt/binding-openharmony-arm64@0.46.0': - resolution: {integrity: sha512-lHiBOz8Duaku7JtRNLlps3j++eOaICPZSd8FCVmTDM4DFOPT71Bjn7g6iar1z7StXlKRweUKxWUs4sA+zWGDXg==} + '@oxfmt/binding-openharmony-arm64@0.45.0': + resolution: {integrity: sha512-RnGcV3HgPuOjsGx/k9oyRNKmOp+NBLGzZTdPDYbc19r7NGeYPplnUU/BfU35bX2Y/O4ejvHxcfkvW2WoYL/gsg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] @@ -4262,8 +4262,8 @@ packages: cpu: [arm64] os: [win32] - '@oxfmt/binding-win32-arm64-msvc@0.46.0': - resolution: {integrity: sha512-/5ktYUliP89RhgC37DBH1x20U5zPSZMy3cMEcO0j3793rbHP9MWsknBwQB6eozRzWmYrh0IFM/p20EbPvDlYlg==} + '@oxfmt/binding-win32-arm64-msvc@0.45.0': + resolution: {integrity: sha512-v3Vj7iKKsUFwt9w5hsqIIoErKVoENC6LoqfDlteOQ5QMDCXihlqLoxpmviUhXnNncg4zV6U9BPwlBbwa+qm4wg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -4280,8 +4280,8 @@ packages: cpu: [ia32] os: [win32] - '@oxfmt/binding-win32-ia32-msvc@0.46.0': - resolution: {integrity: sha512-3WTnoiuIr8XvV0DIY7SN+1uJSwKf4sPpcbHfobcRT9JutGcLaef/miyBB87jxd3aqH+mS0+G5lsgHuXLUwjjpQ==} + '@oxfmt/binding-win32-ia32-msvc@0.45.0': + resolution: {integrity: sha512-N8yotPBX6ph0H3toF4AEpdCeVPrdcSetj+8eGiZGsrLsng3bs/Q5HPu4bbSxip5GBPx5hGbGHrZwH4+rcrjhHA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] @@ -4298,8 +4298,8 @@ packages: cpu: [x64] os: [win32] - '@oxfmt/binding-win32-x64-msvc@0.46.0': - resolution: {integrity: sha512-IXxiQpkYnOwNfP23vzwSfhdpxJzyiPTY7eTn6dn3DsriKddESzM8i6kfq9R7CD/PUJwCvQT22NgtygBeug3KoA==} + '@oxfmt/binding-win32-x64-msvc@0.45.0': + resolution: {integrity: sha512-w5MMTRCK1dpQeRA+HHqXQXyN33DlG/N2LOYxJmaT4fJjcmZrbNnqw7SmIk7I2/a2493PPLZ+2E/Ar6t2iKVMug==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -5491,6 +5491,9 @@ packages: vite: optional: true + '@vitest/pretty-format@4.1.4': + resolution: {integrity: sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A==} + '@vitest/pretty-format@4.1.5': resolution: {integrity: sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==} @@ -5508,6 +5511,9 @@ packages: peerDependencies: vitest: workspace:@voidzero-dev/vite-plus-test@* + '@vitest/utils@4.1.4': + resolution: {integrity: sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw==} + '@vitest/utils@4.1.5': resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} @@ -7813,8 +7819,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - oxfmt@0.46.0: - resolution: {integrity: sha512-CopwJOwPAjZ9p76fCvz+mSOJTw9/NY3cSksZK3VO/bUQ8UoEcketNgUuYS0UB3p+R9XnXe7wGGXUmyFxc7QxJA==} + oxfmt@0.45.0: + resolution: {integrity: sha512-0o/COoN9fY50bjVeM7PQsNgbhndKurBIeTIcspW033OumksjJJmIVDKjAk5HMwU/GHTxSOdGDdhJ6BRzGPmsHg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -11832,7 +11838,7 @@ snapshots: '@oxfmt/binding-android-arm-eabi@0.41.0': optional: true - '@oxfmt/binding-android-arm-eabi@0.46.0': + '@oxfmt/binding-android-arm-eabi@0.45.0': optional: true '@oxfmt/binding-android-arm-eabi@0.48.0': @@ -11841,7 +11847,7 @@ snapshots: '@oxfmt/binding-android-arm64@0.41.0': optional: true - '@oxfmt/binding-android-arm64@0.46.0': + '@oxfmt/binding-android-arm64@0.45.0': optional: true '@oxfmt/binding-android-arm64@0.48.0': @@ -11850,7 +11856,7 @@ snapshots: '@oxfmt/binding-darwin-arm64@0.41.0': optional: true - '@oxfmt/binding-darwin-arm64@0.46.0': + '@oxfmt/binding-darwin-arm64@0.45.0': optional: true '@oxfmt/binding-darwin-arm64@0.48.0': @@ -11859,7 +11865,7 @@ snapshots: '@oxfmt/binding-darwin-x64@0.41.0': optional: true - '@oxfmt/binding-darwin-x64@0.46.0': + '@oxfmt/binding-darwin-x64@0.45.0': optional: true '@oxfmt/binding-darwin-x64@0.48.0': @@ -11868,7 +11874,7 @@ snapshots: '@oxfmt/binding-freebsd-x64@0.41.0': optional: true - '@oxfmt/binding-freebsd-x64@0.46.0': + '@oxfmt/binding-freebsd-x64@0.45.0': optional: true '@oxfmt/binding-freebsd-x64@0.48.0': @@ -11877,7 +11883,7 @@ snapshots: '@oxfmt/binding-linux-arm-gnueabihf@0.41.0': optional: true - '@oxfmt/binding-linux-arm-gnueabihf@0.46.0': + '@oxfmt/binding-linux-arm-gnueabihf@0.45.0': optional: true '@oxfmt/binding-linux-arm-gnueabihf@0.48.0': @@ -11886,7 +11892,7 @@ snapshots: '@oxfmt/binding-linux-arm-musleabihf@0.41.0': optional: true - '@oxfmt/binding-linux-arm-musleabihf@0.46.0': + '@oxfmt/binding-linux-arm-musleabihf@0.45.0': optional: true '@oxfmt/binding-linux-arm-musleabihf@0.48.0': @@ -11895,7 +11901,7 @@ snapshots: '@oxfmt/binding-linux-arm64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-arm64-gnu@0.46.0': + '@oxfmt/binding-linux-arm64-gnu@0.45.0': optional: true '@oxfmt/binding-linux-arm64-gnu@0.48.0': @@ -11904,7 +11910,7 @@ snapshots: '@oxfmt/binding-linux-arm64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-arm64-musl@0.46.0': + '@oxfmt/binding-linux-arm64-musl@0.45.0': optional: true '@oxfmt/binding-linux-arm64-musl@0.48.0': @@ -11913,7 +11919,7 @@ snapshots: '@oxfmt/binding-linux-ppc64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-ppc64-gnu@0.46.0': + '@oxfmt/binding-linux-ppc64-gnu@0.45.0': optional: true '@oxfmt/binding-linux-ppc64-gnu@0.48.0': @@ -11922,7 +11928,7 @@ snapshots: '@oxfmt/binding-linux-riscv64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-riscv64-gnu@0.46.0': + '@oxfmt/binding-linux-riscv64-gnu@0.45.0': optional: true '@oxfmt/binding-linux-riscv64-gnu@0.48.0': @@ -11931,7 +11937,7 @@ snapshots: '@oxfmt/binding-linux-riscv64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-riscv64-musl@0.46.0': + '@oxfmt/binding-linux-riscv64-musl@0.45.0': optional: true '@oxfmt/binding-linux-riscv64-musl@0.48.0': @@ -11940,7 +11946,7 @@ snapshots: '@oxfmt/binding-linux-s390x-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-s390x-gnu@0.46.0': + '@oxfmt/binding-linux-s390x-gnu@0.45.0': optional: true '@oxfmt/binding-linux-s390x-gnu@0.48.0': @@ -11949,7 +11955,7 @@ snapshots: '@oxfmt/binding-linux-x64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-x64-gnu@0.46.0': + '@oxfmt/binding-linux-x64-gnu@0.45.0': optional: true '@oxfmt/binding-linux-x64-gnu@0.48.0': @@ -11958,7 +11964,7 @@ snapshots: '@oxfmt/binding-linux-x64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-x64-musl@0.46.0': + '@oxfmt/binding-linux-x64-musl@0.45.0': optional: true '@oxfmt/binding-linux-x64-musl@0.48.0': @@ -11967,7 +11973,7 @@ snapshots: '@oxfmt/binding-openharmony-arm64@0.41.0': optional: true - '@oxfmt/binding-openharmony-arm64@0.46.0': + '@oxfmt/binding-openharmony-arm64@0.45.0': optional: true '@oxfmt/binding-openharmony-arm64@0.48.0': @@ -11976,7 +11982,7 @@ snapshots: '@oxfmt/binding-win32-arm64-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-arm64-msvc@0.46.0': + '@oxfmt/binding-win32-arm64-msvc@0.45.0': optional: true '@oxfmt/binding-win32-arm64-msvc@0.48.0': @@ -11985,7 +11991,7 @@ snapshots: '@oxfmt/binding-win32-ia32-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-ia32-msvc@0.46.0': + '@oxfmt/binding-win32-ia32-msvc@0.45.0': optional: true '@oxfmt/binding-win32-ia32-msvc@0.48.0': @@ -11994,7 +12000,7 @@ snapshots: '@oxfmt/binding-win32-x64-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-x64-msvc@0.46.0': + '@oxfmt/binding-win32-x64-msvc@0.45.0': optional: true '@oxfmt/binding-win32-x64-msvc@0.48.0': @@ -13092,6 +13098,10 @@ snapshots: optionalDependencies: vite: link:packages/core + '@vitest/pretty-format@4.1.4': + dependencies: + tinyrainbow: 3.1.0 + '@vitest/pretty-format@4.1.5': dependencies: tinyrainbow: 3.1.0 @@ -13121,6 +13131,12 @@ snapshots: tinyrainbow: 3.1.0 vitest: 4.1.5(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@24.12.2)(@vitest/browser-playwright@4.1.5(playwright@1.57.0)(vite@packages+core)(vitest@4.1.5))(@vitest/browser-preview@4.1.5(vite@packages+core)(vitest@4.1.5))(@vitest/browser-webdriverio@4.1.5(vite@packages+core)(vitest@4.1.5)(webdriverio@9.20.1))(@vitest/coverage-istanbul@4.1.5(vitest@4.1.5))(@vitest/coverage-v8@4.1.5(@vitest/browser@4.1.5)(vitest@4.1.5))(@vitest/ui@4.1.5(vitest@4.1.5))(happy-dom@20.0.10)(jsdom@27.2.0)(vite@packages+core) + '@vitest/utils@4.1.4': + dependencies: + '@vitest/pretty-format': 4.1.4 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + '@vitest/utils@4.1.5': dependencies: '@vitest/pretty-format': 4.1.5 @@ -15638,29 +15654,29 @@ snapshots: '@oxfmt/binding-win32-ia32-msvc': 0.41.0 '@oxfmt/binding-win32-x64-msvc': 0.41.0 - oxfmt@0.46.0: + oxfmt@0.45.0: dependencies: tinypool: 2.1.0 optionalDependencies: - '@oxfmt/binding-android-arm-eabi': 0.46.0 - '@oxfmt/binding-android-arm64': 0.46.0 - '@oxfmt/binding-darwin-arm64': 0.46.0 - '@oxfmt/binding-darwin-x64': 0.46.0 - '@oxfmt/binding-freebsd-x64': 0.46.0 - '@oxfmt/binding-linux-arm-gnueabihf': 0.46.0 - '@oxfmt/binding-linux-arm-musleabihf': 0.46.0 - '@oxfmt/binding-linux-arm64-gnu': 0.46.0 - '@oxfmt/binding-linux-arm64-musl': 0.46.0 - '@oxfmt/binding-linux-ppc64-gnu': 0.46.0 - '@oxfmt/binding-linux-riscv64-gnu': 0.46.0 - '@oxfmt/binding-linux-riscv64-musl': 0.46.0 - '@oxfmt/binding-linux-s390x-gnu': 0.46.0 - '@oxfmt/binding-linux-x64-gnu': 0.46.0 - '@oxfmt/binding-linux-x64-musl': 0.46.0 - '@oxfmt/binding-openharmony-arm64': 0.46.0 - '@oxfmt/binding-win32-arm64-msvc': 0.46.0 - '@oxfmt/binding-win32-ia32-msvc': 0.46.0 - '@oxfmt/binding-win32-x64-msvc': 0.46.0 + '@oxfmt/binding-android-arm-eabi': 0.45.0 + '@oxfmt/binding-android-arm64': 0.45.0 + '@oxfmt/binding-darwin-arm64': 0.45.0 + '@oxfmt/binding-darwin-x64': 0.45.0 + '@oxfmt/binding-freebsd-x64': 0.45.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.45.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.45.0 + '@oxfmt/binding-linux-arm64-gnu': 0.45.0 + '@oxfmt/binding-linux-arm64-musl': 0.45.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.45.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.45.0 + '@oxfmt/binding-linux-riscv64-musl': 0.45.0 + '@oxfmt/binding-linux-s390x-gnu': 0.45.0 + '@oxfmt/binding-linux-x64-gnu': 0.45.0 + '@oxfmt/binding-linux-x64-musl': 0.45.0 + '@oxfmt/binding-openharmony-arm64': 0.45.0 + '@oxfmt/binding-win32-arm64-msvc': 0.45.0 + '@oxfmt/binding-win32-ia32-msvc': 0.45.0 + '@oxfmt/binding-win32-x64-msvc': 0.45.0 oxfmt@0.48.0: dependencies: From f9c237174bad0a61cea6e92f303dc39aacdc8f2a Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 22:58:33 +0900 Subject: [PATCH 40/47] fix(lint): skip injecting defaults if `baseUrl` is present in tsconfig Avoid unnecessary config injection when `baseUrl` is already defined in the project's TypeScript configuration. --- packages/cli/src/migration/migrator.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/migration/migrator.ts b/packages/cli/src/migration/migrator.ts index 11a9026e05..3a6bbc7765 100644 --- a/packages/cli/src/migration/migrator.ts +++ b/packages/cli/src/migration/migrator.ts @@ -1979,13 +1979,16 @@ export function injectLintTypeCheckDefaults( silent = false, report?: MigrationReport, ): void { + if (hasBaseUrlInTsconfig(projectPath)) { + return; + } injectConfigDefaults( projectPath, 'lint', '.vite-plus-lint-init.oxlintrc.json', JSON.stringify( createDefaultVitePlusLintConfig({ - includeTypeAwareDefaults: !hasBaseUrlInTsconfig(projectPath), + includeTypeAwareDefaults: true, }), ), silent, From 14ed71553e66a2e868a5b8d8054dcb7a532e7099 Mon Sep 17 00:00:00 2001 From: sangwook Date: Thu, 7 May 2026 23:31:04 +0900 Subject: [PATCH 41/47] test(snap): update astro fixture to reflect new lint output format --- .../cli/snap-tests-global/create-framework-shim-astro/snap.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/snap-tests-global/create-framework-shim-astro/snap.txt b/packages/cli/snap-tests-global/create-framework-shim-astro/snap.txt index a36ced560a..d941e5adcb 100644 --- a/packages/cli/snap-tests-global/create-framework-shim-astro/snap.txt +++ b/packages/cli/snap-tests-global/create-framework-shim-astro/snap.txt @@ -5,4 +5,4 @@ > cd my-astro-app && vp install --ignore-scripts -- --no-frozen-lockfile # install dependencies > cd my-astro-app && sed -i.bak -e '/jsPlugins/d' -e '/rules:/d' -e '/options:/d' vite.config.ts && vp check --fix # fix generated formatting and ensure no errors pass: Formatting completed for checked files (ms) -pass: Found no warnings, lint errors, or type errors in 6 files (ms, threads) +pass: Found no warnings or lint errors in 6 files (ms, threads) From e64aea528136a8c4581b085581c7edfd1fd2cc9d Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 8 May 2026 00:43:51 +0900 Subject: [PATCH 42/47] ci: set GITHUB_ACTIONS env and skip musl platform in snap-test --- .github/workflows/ci.yml | 1 + packages/cli/snap-tests/lint-vite-plus-imports/steps.json | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6b56737fab..7caafe6fa2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -760,6 +760,7 @@ jobs: run: | docker run --rm \ -e CI=true \ + -e GITHUB_ACTIONS=true \ -v "${{ github.workspace }}:/workspace" \ -w /workspace \ node:22-alpine3.21 sh -c " diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/steps.json b/packages/cli/snap-tests/lint-vite-plus-imports/steps.json index 24f5863be4..b06d0de850 100644 --- a/packages/cli/snap-tests/lint-vite-plus-imports/steps.json +++ b/packages/cli/snap-tests/lint-vite-plus-imports/steps.json @@ -1,4 +1,5 @@ { + "ignoredPlatforms": [{ "os": "linux", "libc": "musl" }], "commands": [ "vp lint src/index.ts # should fail before fix (index.ts)", "vp lint src/types.ts # should fail before fix (types.ts)", From 2b72c835068e49b7b827c025e2120daa6d26ce35 Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 8 May 2026 20:33:57 +0900 Subject: [PATCH 43/47] fix(lockfile): regenerate against pinned vite (66f3194a) and rolldown (ac5c7102) --- pnpm-lock.yaml | 271 ++++++++----------------------------------------- 1 file changed, 40 insertions(+), 231 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5c5a177282..e8d51528a2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1116,14 +1116,14 @@ importers: specifier: ^9.6.1 version: 9.6.1 globals: - specifier: ^17.5.0 + specifier: ^17.6.0 version: 17.6.0 lint-staged: specifier: ^16.4.0 version: 16.4.0 oxfmt: - specifier: ^0.46.0 - version: 0.46.0 + specifier: ^0.48.0 + version: 0.48.0 picocolors: specifier: ^1.1.1 version: 1.1.1 @@ -1146,7 +1146,7 @@ importers: specifier: ~6.0.2 version: 6.0.2 typescript-eslint: - specifier: ^8.59.0 + specifier: ^8.59.2 version: 8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.2) vite: specifier: workspace:@voidzero-dev/vite-plus-core@* @@ -1158,7 +1158,7 @@ importers: vite/packages/create-vite: devDependencies: '@clack/prompts': - specifier: ^1.2.0 + specifier: ^1.3.0 version: 1.3.0 '@vercel/detect-agent': specifier: ^1.2.3 @@ -1182,10 +1182,10 @@ importers: specifier: ^7.27.1 version: 7.27.1(@babel/core@7.29.0) '@babel/plugin-transform-modules-systemjs': - specifier: ^7.29.0 + specifier: ^7.29.4 version: 7.29.4(@babel/core@7.29.0) '@babel/preset-env': - specifier: ^7.29.2 + specifier: ^7.29.5 version: 7.29.5(@babel/core@7.29.0) babel-plugin-polyfill-corejs3: specifier: ^0.14.2 @@ -1246,7 +1246,7 @@ importers: specifier: ^4.0.4 version: 4.0.4 postcss: - specifier: ^8.5.12 + specifier: ^8.5.14 version: 8.5.14 rolldown: specifier: workspace:rolldown@* @@ -1268,7 +1268,7 @@ importers: version: 2.8.2 devDependencies: '@babel/parser': - specifier: ^7.29.2 + specifier: ^7.29.3 version: 7.29.3 '@jridgewell/remapping': specifier: ^2.3.5 @@ -1298,7 +1298,7 @@ importers: specifier: ^1.2.3 version: 1.2.3 '@vitejs/devtools': - specifier: ^0.1.15 + specifier: ^0.1.19 version: 0.1.20(@pnpm/logger@1001.0.1)(typescript@6.0.2)(vite@packages+core) '@vitest/utils': specifier: 4.1.5 @@ -1307,7 +1307,7 @@ importers: specifier: ^0.4.3 version: 0.4.3 baseline-browser-mapping: - specifier: ^2.10.23 + specifier: ^2.10.27 version: 2.10.27 cac: specifier: ^7.0.0 @@ -1364,7 +1364,7 @@ importers: specifier: ^2.0.1 version: 2.0.1 nanoid: - specifier: ^5.1.9 + specifier: ^5.1.11 version: 5.1.11 obug: specifier: ^1.0.2 @@ -1400,8 +1400,8 @@ importers: specifier: ^2.0.3 version: 2.0.3 rolldown-plugin-dts: - specifier: ^0.23.2 - version: 0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@rolldown+packages+rolldown)(typescript@6.0.2) + specifier: ^0.24.1 + version: 0.24.1(@typescript/native-preview@7.0.0-dev.20260122.2)(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@rolldown+packages+rolldown)(typescript@6.0.2) rollup: specifier: ^4.59.0 version: 4.59.0 @@ -1424,7 +1424,7 @@ importers: specifier: ^5.46.2 version: 5.46.2 ufo: - specifier: ^1.6.3 + specifier: ^1.6.4 version: 1.6.4 ws: specifier: ^8.20.0 @@ -3978,12 +3978,6 @@ packages: cpu: [arm] os: [android] - '@oxfmt/binding-android-arm-eabi@0.46.0': - resolution: {integrity: sha512-b1doV4WRcJU+BESSlCvCjV+5CEr/T6h0frArAdV26Nir+gGNFNaylvDiiMPfF1pxeV0txZEs38ojzJaxBYg+ng==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [android] - '@oxfmt/binding-android-arm-eabi@0.48.0': resolution: {integrity: sha512-uwqk+/KhQvBIpULD8SMM/zAafMRC/+DV/xsEQjkkIsJ/kLmEI/2bxonVowcYTiXqqZ/a0FEW8DPkZY3VvwELDA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3996,12 +3990,6 @@ packages: cpu: [arm64] os: [android] - '@oxfmt/binding-android-arm64@0.46.0': - resolution: {integrity: sha512-v6+HhjsoV3GO0u2u9jLSAZrvWfTraDxKofUIQ7/ktS7tzS+epVsxdHmeM+XxuNcAY/nWxxU1Sg4JcGTNRXraBA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [android] - '@oxfmt/binding-android-arm64@0.48.0': resolution: {integrity: sha512-VUCiKuXK5+McVssgHEJdrcGK7hRJzrRb36zm9/jwzMholyYt4BgXhw5Nm1V1DX6Ce717Zi/1jk432b/tgmQgtQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4014,12 +4002,6 @@ packages: cpu: [arm64] os: [darwin] - '@oxfmt/binding-darwin-arm64@0.46.0': - resolution: {integrity: sha512-3eeooJGrqGIlI5MyryDZsAcKXSmKIgAD4yYtfRrRJzXZ0UTFZtiSveIur56YPrGMYZwT4XyVhHsMqrNwr1XeFA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [darwin] - '@oxfmt/binding-darwin-arm64@0.48.0': resolution: {integrity: sha512-IkKp8rnIyQLW6Jt+6jragCbUVYSayk55lapiprLjIVvt4NczLyO/nwX2GgefLQ5iaBdfS8UEAFgCs/pLO6Cl0w==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4032,12 +4014,6 @@ packages: cpu: [x64] os: [darwin] - '@oxfmt/binding-darwin-x64@0.46.0': - resolution: {integrity: sha512-QG8BDM0CXWbu84k2SKmCqfEddPQPFiBicwtYnLqHRWZZl57HbtOLRMac/KTq2NO4AEc4ICCBpFxJIV9zcqYfkQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [darwin] - '@oxfmt/binding-darwin-x64@0.48.0': resolution: {integrity: sha512-+aFuhsGIuvnoOjXyKVHMhPKJZR1kQkAl8QyrKoMlA7yJsSTC3N0Asl53La8TChSHhW8epToQ/Q0nvLmEmfNmLg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4050,12 +4026,6 @@ packages: cpu: [x64] os: [freebsd] - '@oxfmt/binding-freebsd-x64@0.46.0': - resolution: {integrity: sha512-9DdCqS/n2ncu/Chazvt3cpgAjAmIGQDz7hFKSrNItMApyV/Ja9mz3hD4JakIE3nS8PW9smEbPWnb389QLBY4nw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [freebsd] - '@oxfmt/binding-freebsd-x64@0.48.0': resolution: {integrity: sha512-fbqzQL8FjI9gGnktI7RIo0dksDziTAYBy7xlI7jU7eID5fxLF/25fS4Xj6GydD8Y5oWHL83U4NK160QaOAxtyg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4068,12 +4038,6 @@ packages: cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-gnueabihf@0.46.0': - resolution: {integrity: sha512-Dgs7VeE2jT0LHMhw6tPEt0xQYe54kBqHEovmWsv4FVQlegCOvlIJNx0S8n4vj8WUtpT+Z6BD2HhKJPLglLxvZg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] - '@oxfmt/binding-linux-arm-gnueabihf@0.48.0': resolution: {integrity: sha512-hn4i0zhAyTiB3ZHjQfYUZkDvrbVkohw1S7pySWxWUoZ87HnkDoTFThj7QTxk40hNPOTUP0vHbPRNamFIv1HBJQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4086,12 +4050,6 @@ packages: cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-musleabihf@0.46.0': - resolution: {integrity: sha512-Zxn3adhTH13JKnU4xXJj8FeEfF680XjXh3gSShKl57HCMBRde2tUJTgogV/1MSHA80PJEVrDa7r66TLVq3Ia7Q==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] - '@oxfmt/binding-linux-arm-musleabihf@0.48.0': resolution: {integrity: sha512-R4WBD9qF3QM9hqgdAa+fBGXmquTvDUujrPQ36t2Sjk8RPOSKGHDeN7l/khr10hqbQaOq9KCgPHG9ubNET/X/RQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4105,13 +4063,6 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-arm64-gnu@0.46.0': - resolution: {integrity: sha512-+TWipjrgVM8D7aIdDD0tlr3teLTTvQTn7QTE5BpT10H1Fj82gfdn9X6nn2sDgx/MepuSCfSnzFNJq2paLL0OiA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@oxfmt/binding-linux-arm64-gnu@0.48.0': resolution: {integrity: sha512-5bVdwSwlm1M8wbYCorLOxWxUBw/8tBvHYyQNIfwWVPwOJaj5vg1APSGJQVpwJfV5VNE9PSrR91UKEpoNwHhqUA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4126,13 +4077,6 @@ packages: os: [linux] libc: [musl] - '@oxfmt/binding-linux-arm64-musl@0.46.0': - resolution: {integrity: sha512-aAUPBWJ1lGwwnxZUEDLJ94+Iy6MuwJwPxUgO4sCA5mEEyDk7b+cDQ+JpX1VR150Zoyd+D49gsrUzpUK5h587Eg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [musl] - '@oxfmt/binding-linux-arm64-musl@0.48.0': resolution: {integrity: sha512-vCS3Fk7gFslTqE1lUE2IlroyVV7u/9SmMA/uBqDoshuck2psGWcjW0ePyPZI3rM3+qtf2pDaMVIKMHozraifuw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4147,13 +4091,6 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-ppc64-gnu@0.46.0': - resolution: {integrity: sha512-ufBCJukyFX/UDrokP/r6BGDoTInnsDs7bxyzKAgMiZlt2Qu8GPJSJ6Zm6whIiJzKk0naxA8ilwmbO1LMw6Htxw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@oxfmt/binding-linux-ppc64-gnu@0.48.0': resolution: {integrity: sha512-gKtfFfueUClXDumyoHUbymqRf7prHejOOyzJK0eIJn93GF9JBdFHdo60TM1ZBHxkEwZvjuOgHmKtneKbEOc/Eg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4168,13 +4105,6 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-gnu@0.46.0': - resolution: {integrity: sha512-eqtlC2YmPqjun76R1gVfGLuKWx7NuEnLEAudZ7n6ipSKbCZTqIKSs1b5Y8K/JHZsRpLkeSmAAjig5HOIg8fQzQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@oxfmt/binding-linux-riscv64-gnu@0.48.0': resolution: {integrity: sha512-SYt0UhOvZD/UwZz9sXq6J2uAw8o24f5VZpLB2DH01f6MevshmlgakQlZe2lwek2sZJkd07eLu7mZa0g7yeiw7Q==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4189,13 +4119,6 @@ packages: os: [linux] libc: [musl] - '@oxfmt/binding-linux-riscv64-musl@0.46.0': - resolution: {integrity: sha512-yccVOO2nMXkQLGgy0He3EQEwKD7NF0zEk+/OWmroznkqXyJdN6bfK0LtNnr6/14Bh3FjpYq7bP33l/VloCnxpA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [riscv64] - os: [linux] - libc: [musl] - '@oxfmt/binding-linux-riscv64-musl@0.48.0': resolution: {integrity: sha512-JLbrwck2AopG4ud/XklZO5N+qxGC7cS7ROvXZVNfx0MCLDDL2kGOLvzuWORkVjnjAM0CMAfIMU2zNBtQbM+4dw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4210,13 +4133,6 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-s390x-gnu@0.46.0': - resolution: {integrity: sha512-aAf7fG23OQCey6VRPj9IeCraoYtpgtx0ZyJ1CXkPyT1wjzBE7c3xtuxHe/AdHaJfVVb/SXpSk8Gl1LzyQupSqw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@oxfmt/binding-linux-s390x-gnu@0.48.0': resolution: {integrity: sha512-mdxt5L8OQLxkQH+JVpdC/lknZNe0lX4hlO3d8+xvw2wToo+iDrid9tiGOd5bmHfUVd5wVhrUry0qlu5vq66NkQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4231,13 +4147,6 @@ packages: os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-gnu@0.46.0': - resolution: {integrity: sha512-q0JPsTMyJNjYrBvYFDz4WbVsafNZaPCZv4RnFypRotLqpKROtBZcEaXQW4eb9YmvLU3NckVemLJnzkSZSdmOxw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [glibc] - '@oxfmt/binding-linux-x64-gnu@0.48.0': resolution: {integrity: sha512-oEz1BQwMrV7OMEFx/3VPDU3n9TM0AnxpktDYXjEg5i6nTX87wo18wSfBvkl4tzAICdKtoAQAdBIl7Y7hsPlx5w==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4252,13 +4161,6 @@ packages: os: [linux] libc: [musl] - '@oxfmt/binding-linux-x64-musl@0.46.0': - resolution: {integrity: sha512-7LsLY9Cw57GPkhSR+duI3mt9baRczK/DtHYSldQ4BEU92da9igBQNl4z7Vq5U9NNPsh1FmpKvv1q9WDtiUQR1A==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [musl] - '@oxfmt/binding-linux-x64-musl@0.48.0': resolution: {integrity: sha512-g2SKTTurP5mWjd8Ecait0erYqmltL4IqW1EwttM25BxM6NiTt4ubobJYMR1uox1V2QgG4UfHH10CGRvWlUixjw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4272,12 +4174,6 @@ packages: cpu: [arm64] os: [openharmony] - '@oxfmt/binding-openharmony-arm64@0.46.0': - resolution: {integrity: sha512-lHiBOz8Duaku7JtRNLlps3j++eOaICPZSd8FCVmTDM4DFOPT71Bjn7g6iar1z7StXlKRweUKxWUs4sA+zWGDXg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] - '@oxfmt/binding-openharmony-arm64@0.48.0': resolution: {integrity: sha512-CIg24VgheEpvolHL2gQuax5qcQ602bRMHrJ9g8XsQr3iVj9aSPgopigBKuMqrXsupwkrU+RQCn5cG8PgFntR6w==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4290,12 +4186,6 @@ packages: cpu: [arm64] os: [win32] - '@oxfmt/binding-win32-arm64-msvc@0.46.0': - resolution: {integrity: sha512-/5ktYUliP89RhgC37DBH1x20U5zPSZMy3cMEcO0j3793rbHP9MWsknBwQB6eozRzWmYrh0IFM/p20EbPvDlYlg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [win32] - '@oxfmt/binding-win32-arm64-msvc@0.48.0': resolution: {integrity: sha512-zeaWkcxcEULwkGF3I/HgEvcDPN8buYDrxibBUa/IFh5Vmwyge+KpLO+hEwSovW349H0O/C0Z2kaFmEzEDm00/Q==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4308,12 +4198,6 @@ packages: cpu: [ia32] os: [win32] - '@oxfmt/binding-win32-ia32-msvc@0.46.0': - resolution: {integrity: sha512-3WTnoiuIr8XvV0DIY7SN+1uJSwKf4sPpcbHfobcRT9JutGcLaef/miyBB87jxd3aqH+mS0+G5lsgHuXLUwjjpQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ia32] - os: [win32] - '@oxfmt/binding-win32-ia32-msvc@0.48.0': resolution: {integrity: sha512-yiEKnIAGvx5CyZQOlMaNlZkAbwT7/Quk0j3WLt+PR5hK+qYjPTRRJYDfD77wCBPLvEYAG41v4KG3iL0H+uxoxg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4326,12 +4210,6 @@ packages: cpu: [x64] os: [win32] - '@oxfmt/binding-win32-x64-msvc@0.46.0': - resolution: {integrity: sha512-IXxiQpkYnOwNfP23vzwSfhdpxJzyiPTY7eTn6dn3DsriKddESzM8i6kfq9R7CD/PUJwCvQT22NgtygBeug3KoA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [win32] - '@oxfmt/binding-win32-x64-msvc@0.48.0': resolution: {integrity: sha512-GSD2+7t2UoVMV2NgxXypa4bKewflPMAjYnF0Xw9/ht82ZfafAHhb8STwrEd7wlH2PFogt5zw3WVCxYJaHUdbeQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -7880,11 +7758,6 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - oxfmt@0.46.0: - resolution: {integrity: sha512-CopwJOwPAjZ9p76fCvz+mSOJTw9/NY3cSksZK3VO/bUQ8UoEcketNgUuYS0UB3p+R9XnXe7wGGXUmyFxc7QxJA==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - oxfmt@0.48.0: resolution: {integrity: sha512-AVaLh+7XeGx+R1zfFV+f6VV61nT2MWVJXVUDhbTm5LBWGyNt64xAyh3NYYyjeY2WykNt9AvqSQLPHcbWquYF9g==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8416,6 +8289,25 @@ packages: vue-tsc: optional: true + rolldown-plugin-dts@0.24.1: + resolution: {integrity: sha512-mh0oL67i6vJvpHsPtPutVE0CzHb2RvaEmU/JXPrTPnXx7yAUd/b9B2gCMLdW2yDylbJyPZMZIssXPkOLxMuYHA==} + engines: {node: ^22.18.0 || >=24.0.0} + peerDependencies: + '@ts-macro/tsc': ^0.3.6 + '@typescript/native-preview': '>=7.0.0-dev.20260325.1' + rolldown: workspace:rolldown@* + typescript: ^6.0.0 + vue-tsc: ~3.2.0 + peerDependenciesMeta: + '@ts-macro/tsc': + optional: true + '@typescript/native-preview': + optional: true + typescript: + optional: true + vue-tsc: + optional: true + rolldown-plugin-dts@0.25.0: resolution: {integrity: sha512-GE3uDZgUuA9l6g+1u928TRmadd5IVhaWiwpWast2kCyLv9tYJJCC6E5HHkV0HGmwC5ZL73xh12/PRZI+KZ2vdQ==} engines: {node: ^22.18.0 || >=24.0.0} @@ -11997,171 +11889,114 @@ snapshots: '@oxfmt/binding-android-arm-eabi@0.41.0': optional: true - '@oxfmt/binding-android-arm-eabi@0.46.0': - optional: true - '@oxfmt/binding-android-arm-eabi@0.48.0': optional: true '@oxfmt/binding-android-arm64@0.41.0': optional: true - '@oxfmt/binding-android-arm64@0.46.0': - optional: true - '@oxfmt/binding-android-arm64@0.48.0': optional: true '@oxfmt/binding-darwin-arm64@0.41.0': optional: true - '@oxfmt/binding-darwin-arm64@0.46.0': - optional: true - '@oxfmt/binding-darwin-arm64@0.48.0': optional: true '@oxfmt/binding-darwin-x64@0.41.0': optional: true - '@oxfmt/binding-darwin-x64@0.46.0': - optional: true - '@oxfmt/binding-darwin-x64@0.48.0': optional: true '@oxfmt/binding-freebsd-x64@0.41.0': optional: true - '@oxfmt/binding-freebsd-x64@0.46.0': - optional: true - '@oxfmt/binding-freebsd-x64@0.48.0': optional: true '@oxfmt/binding-linux-arm-gnueabihf@0.41.0': optional: true - '@oxfmt/binding-linux-arm-gnueabihf@0.46.0': - optional: true - '@oxfmt/binding-linux-arm-gnueabihf@0.48.0': optional: true '@oxfmt/binding-linux-arm-musleabihf@0.41.0': optional: true - '@oxfmt/binding-linux-arm-musleabihf@0.46.0': - optional: true - '@oxfmt/binding-linux-arm-musleabihf@0.48.0': optional: true '@oxfmt/binding-linux-arm64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-arm64-gnu@0.46.0': - optional: true - '@oxfmt/binding-linux-arm64-gnu@0.48.0': optional: true '@oxfmt/binding-linux-arm64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-arm64-musl@0.46.0': - optional: true - '@oxfmt/binding-linux-arm64-musl@0.48.0': optional: true '@oxfmt/binding-linux-ppc64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-ppc64-gnu@0.46.0': - optional: true - '@oxfmt/binding-linux-ppc64-gnu@0.48.0': optional: true '@oxfmt/binding-linux-riscv64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-riscv64-gnu@0.46.0': - optional: true - '@oxfmt/binding-linux-riscv64-gnu@0.48.0': optional: true '@oxfmt/binding-linux-riscv64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-riscv64-musl@0.46.0': - optional: true - '@oxfmt/binding-linux-riscv64-musl@0.48.0': optional: true '@oxfmt/binding-linux-s390x-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-s390x-gnu@0.46.0': - optional: true - '@oxfmt/binding-linux-s390x-gnu@0.48.0': optional: true '@oxfmt/binding-linux-x64-gnu@0.41.0': optional: true - '@oxfmt/binding-linux-x64-gnu@0.46.0': - optional: true - '@oxfmt/binding-linux-x64-gnu@0.48.0': optional: true '@oxfmt/binding-linux-x64-musl@0.41.0': optional: true - '@oxfmt/binding-linux-x64-musl@0.46.0': - optional: true - '@oxfmt/binding-linux-x64-musl@0.48.0': optional: true '@oxfmt/binding-openharmony-arm64@0.41.0': optional: true - '@oxfmt/binding-openharmony-arm64@0.46.0': - optional: true - '@oxfmt/binding-openharmony-arm64@0.48.0': optional: true '@oxfmt/binding-win32-arm64-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-arm64-msvc@0.46.0': - optional: true - '@oxfmt/binding-win32-arm64-msvc@0.48.0': optional: true '@oxfmt/binding-win32-ia32-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-ia32-msvc@0.46.0': - optional: true - '@oxfmt/binding-win32-ia32-msvc@0.48.0': optional: true '@oxfmt/binding-win32-x64-msvc@0.41.0': optional: true - '@oxfmt/binding-win32-x64-msvc@0.46.0': - optional: true - '@oxfmt/binding-win32-x64-msvc@0.48.0': optional: true @@ -15865,30 +15700,6 @@ snapshots: '@oxfmt/binding-win32-ia32-msvc': 0.41.0 '@oxfmt/binding-win32-x64-msvc': 0.41.0 - oxfmt@0.46.0: - dependencies: - tinypool: 2.1.0 - optionalDependencies: - '@oxfmt/binding-android-arm-eabi': 0.46.0 - '@oxfmt/binding-android-arm64': 0.46.0 - '@oxfmt/binding-darwin-arm64': 0.46.0 - '@oxfmt/binding-darwin-x64': 0.46.0 - '@oxfmt/binding-freebsd-x64': 0.46.0 - '@oxfmt/binding-linux-arm-gnueabihf': 0.46.0 - '@oxfmt/binding-linux-arm-musleabihf': 0.46.0 - '@oxfmt/binding-linux-arm64-gnu': 0.46.0 - '@oxfmt/binding-linux-arm64-musl': 0.46.0 - '@oxfmt/binding-linux-ppc64-gnu': 0.46.0 - '@oxfmt/binding-linux-riscv64-gnu': 0.46.0 - '@oxfmt/binding-linux-riscv64-musl': 0.46.0 - '@oxfmt/binding-linux-s390x-gnu': 0.46.0 - '@oxfmt/binding-linux-x64-gnu': 0.46.0 - '@oxfmt/binding-linux-x64-musl': 0.46.0 - '@oxfmt/binding-openharmony-arm64': 0.46.0 - '@oxfmt/binding-win32-arm64-msvc': 0.46.0 - '@oxfmt/binding-win32-ia32-msvc': 0.46.0 - '@oxfmt/binding-win32-x64-msvc': 0.46.0 - oxfmt@0.48.0: dependencies: tinypool: 2.1.0 @@ -16470,7 +16281,7 @@ snapshots: transitivePeerDependencies: - oxc-resolver - rolldown-plugin-dts@0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@rolldown+packages+rolldown)(typescript@6.0.2): + rolldown-plugin-dts@0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(rolldown@rolldown+packages+rolldown)(typescript@6.0.2): dependencies: '@babel/generator': 8.0.0-rc.3 '@babel/helper-validator-identifier': 8.0.0-rc.3 @@ -16489,18 +16300,16 @@ snapshots: transitivePeerDependencies: - oxc-resolver - rolldown-plugin-dts@0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(rolldown@rolldown+packages+rolldown)(typescript@6.0.2): + rolldown-plugin-dts@0.24.1(@typescript/native-preview@7.0.0-dev.20260122.2)(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@rolldown+packages+rolldown)(typescript@6.0.2): dependencies: - '@babel/generator': 8.0.0-rc.3 - '@babel/helper-validator-identifier': 8.0.0-rc.3 - '@babel/parser': 8.0.0-rc.3 - '@babel/types': 8.0.0-rc.3 + '@babel/generator': 8.0.0-rc.4 + '@babel/helper-validator-identifier': 8.0.0-rc.4 + '@babel/parser': 8.0.0-rc.4 ast-kit: 3.0.0-beta.1 birpc: 4.0.0 dts-resolver: 2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) - get-tsconfig: 4.13.7 + get-tsconfig: 5.0.0-beta.5 obug: 2.1.1 - picomatch: 4.0.4 rolldown: link:rolldown/packages/rolldown optionalDependencies: '@typescript/native-preview': 7.0.0-dev.20260122.2 From be78c09bd575c0670f56506dfb089fde7e6cf15c Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 8 May 2026 20:37:36 +0900 Subject: [PATCH 44/47] fix(lockfile): update transitive dependencies for `@emnapi/core` and `@emnapi/runtime` Updates references to `@emnapi/core` and `@emnapi/runtime` to version 1.10.0 in the lockfile and removes stale optional dependencies for consistent resolution. --- pnpm-lock.yaml | 66 +++----------------------------------------------- 1 file changed, 4 insertions(+), 62 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e8d51528a2..d0aeda6637 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1401,7 +1401,7 @@ importers: version: 2.0.3 rolldown-plugin-dts: specifier: ^0.24.1 - version: 0.24.1(@typescript/native-preview@7.0.0-dev.20260122.2)(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@rolldown+packages+rolldown)(typescript@6.0.2) + version: 0.24.1(@typescript/native-preview@7.0.0-dev.20260122.2)(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(rolldown@rolldown+packages+rolldown)(typescript@6.0.2) rollup: specifier: ^4.59.0 version: 4.59.0 @@ -11805,14 +11805,6 @@ snapshots: - '@emnapi/runtime' optional: true - '@oxc-resolver/binding-wasm32-wasi@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': - dependencies: - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - optional: true - '@oxc-resolver/binding-win32-arm64-msvc@11.19.1': optional: true @@ -14113,10 +14105,6 @@ snapshots: optionalDependencies: oxc-resolver: 11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - dts-resolver@2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)): - optionalDependencies: - oxc-resolver: 11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) - dts-resolver@3.0.0(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)): optionalDependencies: oxc-resolver: 11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) @@ -15626,33 +15614,6 @@ snapshots: - '@emnapi/core' - '@emnapi/runtime' - oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): - optionalDependencies: - '@oxc-resolver/binding-android-arm-eabi': 11.19.1 - '@oxc-resolver/binding-android-arm64': 11.19.1 - '@oxc-resolver/binding-darwin-arm64': 11.19.1 - '@oxc-resolver/binding-darwin-x64': 11.19.1 - '@oxc-resolver/binding-freebsd-x64': 11.19.1 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.19.1 - '@oxc-resolver/binding-linux-arm-musleabihf': 11.19.1 - '@oxc-resolver/binding-linux-arm64-gnu': 11.19.1 - '@oxc-resolver/binding-linux-arm64-musl': 11.19.1 - '@oxc-resolver/binding-linux-ppc64-gnu': 11.19.1 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.19.1 - '@oxc-resolver/binding-linux-riscv64-musl': 11.19.1 - '@oxc-resolver/binding-linux-s390x-gnu': 11.19.1 - '@oxc-resolver/binding-linux-x64-gnu': 11.19.1 - '@oxc-resolver/binding-linux-x64-musl': 11.19.1 - '@oxc-resolver/binding-openharmony-arm64': 11.19.1 - '@oxc-resolver/binding-wasm32-wasi': 11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) - '@oxc-resolver/binding-win32-arm64-msvc': 11.19.1 - '@oxc-resolver/binding-win32-ia32-msvc': 11.19.1 - '@oxc-resolver/binding-win32-x64-msvc': 11.19.1 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - optional: true - oxc-transform@0.129.0: optionalDependencies: '@oxc-transform/binding-android-arm-eabi': 0.129.0 @@ -16281,33 +16242,14 @@ snapshots: transitivePeerDependencies: - oxc-resolver - rolldown-plugin-dts@0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(rolldown@rolldown+packages+rolldown)(typescript@6.0.2): - dependencies: - '@babel/generator': 8.0.0-rc.3 - '@babel/helper-validator-identifier': 8.0.0-rc.3 - '@babel/parser': 8.0.0-rc.3 - '@babel/types': 8.0.0-rc.3 - ast-kit: 3.0.0-beta.1 - birpc: 4.0.0 - dts-resolver: 2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) - get-tsconfig: 4.13.7 - obug: 2.1.1 - picomatch: 4.0.4 - rolldown: link:rolldown/packages/rolldown - optionalDependencies: - '@typescript/native-preview': 7.0.0-dev.20260122.2 - typescript: 6.0.2 - transitivePeerDependencies: - - oxc-resolver - - rolldown-plugin-dts@0.24.1(@typescript/native-preview@7.0.0-dev.20260122.2)(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@rolldown+packages+rolldown)(typescript@6.0.2): + rolldown-plugin-dts@0.24.1(@typescript/native-preview@7.0.0-dev.20260122.2)(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(rolldown@rolldown+packages+rolldown)(typescript@6.0.2): dependencies: '@babel/generator': 8.0.0-rc.4 '@babel/helper-validator-identifier': 8.0.0-rc.4 '@babel/parser': 8.0.0-rc.4 ast-kit: 3.0.0-beta.1 birpc: 4.0.0 - dts-resolver: 2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) + dts-resolver: 2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)) get-tsconfig: 5.0.0-beta.5 obug: 2.1.1 rolldown: link:rolldown/packages/rolldown @@ -16887,7 +16829,7 @@ snapshots: obug: 2.1.1 picomatch: 4.0.4 rolldown: link:rolldown/packages/rolldown - rolldown-plugin-dts: 0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(rolldown@rolldown+packages+rolldown)(typescript@6.0.2) + rolldown-plugin-dts: 0.23.2(@typescript/native-preview@7.0.0-dev.20260122.2)(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(rolldown@rolldown+packages+rolldown)(typescript@6.0.2) semver: 7.7.4 tinyexec: 1.1.2 tinyglobby: 0.2.16 From fa5bbcdf7444afe850a49d983e5b8e5e1e259832 Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 8 May 2026 20:39:42 +0900 Subject: [PATCH 45/47] Revert "ci: set GITHUB_ACTIONS env and skip musl platform in snap-test" This reverts commit e64aea528136a8c4581b085581c7edfd1fd2cc9d. --- .github/workflows/ci.yml | 1 - packages/cli/snap-tests/lint-vite-plus-imports/steps.json | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7caafe6fa2..6b56737fab 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -760,7 +760,6 @@ jobs: run: | docker run --rm \ -e CI=true \ - -e GITHUB_ACTIONS=true \ -v "${{ github.workspace }}:/workspace" \ -w /workspace \ node:22-alpine3.21 sh -c " diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/steps.json b/packages/cli/snap-tests/lint-vite-plus-imports/steps.json index b06d0de850..24f5863be4 100644 --- a/packages/cli/snap-tests/lint-vite-plus-imports/steps.json +++ b/packages/cli/snap-tests/lint-vite-plus-imports/steps.json @@ -1,5 +1,4 @@ { - "ignoredPlatforms": [{ "os": "linux", "libc": "musl" }], "commands": [ "vp lint src/index.ts # should fail before fix (index.ts)", "vp lint src/types.ts # should fail before fix (types.ts)", From dac9da1b95484493d1b8e644419f8c83b6539ead Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 8 May 2026 21:36:05 +0900 Subject: [PATCH 46/47] Reapply "ci: set GITHUB_ACTIONS env and skip musl platform in snap-test" This reverts commit fa5bbcdf7444afe850a49d983e5b8e5e1e259832. --- .github/workflows/ci.yml | 1 + packages/cli/snap-tests/lint-vite-plus-imports/steps.json | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6b56737fab..7caafe6fa2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -760,6 +760,7 @@ jobs: run: | docker run --rm \ -e CI=true \ + -e GITHUB_ACTIONS=true \ -v "${{ github.workspace }}:/workspace" \ -w /workspace \ node:22-alpine3.21 sh -c " diff --git a/packages/cli/snap-tests/lint-vite-plus-imports/steps.json b/packages/cli/snap-tests/lint-vite-plus-imports/steps.json index 24f5863be4..b06d0de850 100644 --- a/packages/cli/snap-tests/lint-vite-plus-imports/steps.json +++ b/packages/cli/snap-tests/lint-vite-plus-imports/steps.json @@ -1,4 +1,5 @@ { + "ignoredPlatforms": [{ "os": "linux", "libc": "musl" }], "commands": [ "vp lint src/index.ts # should fail before fix (index.ts)", "vp lint src/types.ts # should fail before fix (types.ts)", From 97f2191d2bd839c96412c7c09ed02a46dc7f64fd Mon Sep 17 00:00:00 2001 From: sangwook Date: Fri, 8 May 2026 21:48:57 +0900 Subject: [PATCH 47/47] ci(snap-test): skip create-framework-shim-vue on musl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Same musl NAPI conflict as lint-vite-plus-imports — `vp check --fix` SIGSEGVs when oxlint loads vite.config.ts with rolldown also in scope. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../cli/snap-tests-global/create-framework-shim-vue/steps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/snap-tests-global/create-framework-shim-vue/steps.json b/packages/cli/snap-tests-global/create-framework-shim-vue/steps.json index 0a21bd8b3b..8880845d1a 100644 --- a/packages/cli/snap-tests-global/create-framework-shim-vue/steps.json +++ b/packages/cli/snap-tests-global/create-framework-shim-vue/steps.json @@ -1,5 +1,5 @@ { - "ignoredPlatforms": ["win32"], + "ignoredPlatforms": ["win32", { "os": "linux", "libc": "musl" }], "linkCheckoutPackages": true, "commands": [ {