diff --git a/package.json b/package.json index 72fa3fd2..e4c5008c 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "prettier": "^3.7.4", "semver": "^7.7.3", "simple-git-hooks": "^2.13.1", + "tsdown": "^0.18.1", "tsx": "4.21.0", "typedoc": "^0.25.4", "typedoc-plugin-frontmatter": "^1.3.1", diff --git a/packages/analytics/build.config.ts b/packages/analytics/build.config.ts deleted file mode 100644 index a74ed9af..00000000 --- a/packages/analytics/build.config.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { defineBuildConfig } from 'unbuild'; -import { resolve } from 'node:path'; - -// Build module and plugins -export default defineBuildConfig({ - rootDir: resolve(__dirname, 'modules/analytics'), - outDir: resolve(__dirname, 'dist'), - entries: [ - { input: 'index.ts', name: 'module' }, - { input: 'client.ts', name: 'index' }, - 'background-plugin.ts', - 'types.ts', - 'providers/google-analytics-4.ts', - 'providers/umami.ts', - ], - externals: ['#analytics'], - replace: { - 'import.meta.env.NPM': 'true', - }, - declaration: true, -}); diff --git a/packages/analytics/modules/analytics/index.ts b/packages/analytics/modules/analytics/index.ts index 317ee5a7..f5ef4b00 100644 --- a/packages/analytics/modules/analytics/index.ts +++ b/packages/analytics/modules/analytics/index.ts @@ -22,10 +22,10 @@ export default defineWxtModule({ // Paths const wxtAnalyticsFolder = resolve(wxt.config.wxtDir, 'analytics'); const wxtAnalyticsIndex = resolve(wxtAnalyticsFolder, 'index.ts'); - const clientModuleId = import.meta.env.NPM + const clientModuleId = process.env.NPM ? '@wxt-dev/analytics' : resolve(wxt.config.modulesDir, 'analytics/client'); - const pluginModuleId = import.meta.env.NPM + const pluginModuleId = process.env.NPM ? '@wxt-dev/analytics/background-plugin' : resolve(wxt.config.modulesDir, 'analytics/background-plugin'); @@ -40,7 +40,7 @@ export default defineWxtModule({ // Generate #analytics module const wxtAnalyticsCode = [ `import { createAnalytics } from '${ - import.meta.env.NPM + process.env.NPM ? clientModuleId : relative(wxtAnalyticsFolder, clientModuleId) }';`, diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 75ee2681..b6d8bfeb 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -35,7 +35,7 @@ } }, "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.mts", "files": [ "dist" ], @@ -43,7 +43,7 @@ "dev": "buildc --deps-only -- wxt", "dev:build": "buildc --deps-only -- wxt build", "check": "pnpm build && check", - "build": "buildc -- unbuild", + "build": "buildc -- tsdown", "prepack": "pnpm -s build", "prepare": "buildc --deps-only -- wxt prepare" }, @@ -55,7 +55,6 @@ "@types/ua-parser-js": "^0.7.39", "publint": "^0.3.16", "typescript": "^5.9.3", - "unbuild": "^3.6.1", "wxt": "workspace:*" }, "dependencies": { diff --git a/packages/analytics/tsdown.config.ts b/packages/analytics/tsdown.config.ts new file mode 100644 index 00000000..26812425 --- /dev/null +++ b/packages/analytics/tsdown.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from 'tsdown'; + +export default defineConfig({ + entry: { + index: './modules/analytics/client.ts', + module: './modules/analytics/index.ts', + 'background-plugin': './modules/analytics/background-plugin.ts', + types: './modules/analytics/types.ts', + 'providers/google-analytics-4': + './modules/analytics/providers/google-analytics-4.ts', + 'providers/umami': './modules/analytics/providers/umami.ts', + }, + external: ['#analytics'], + define: { + 'process.env.NPM': 'true', + }, +}); diff --git a/packages/auto-icons/package.json b/packages/auto-icons/package.json index c63e2431..dcc1aa90 100644 --- a/packages/auto-icons/package.json +++ b/packages/auto-icons/package.json @@ -27,7 +27,7 @@ "version": "1.1.0", "type": "module", "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.mts", "exports": { ".": { "types": "./dist/index.d.mts", @@ -38,7 +38,7 @@ "dist" ], "scripts": { - "build": "buildc -- unbuild", + "build": "buildc -- tsdown", "check": "pnpm build && check" }, "peerDependencies": { diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 77df39b6..fe02eb3d 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -21,7 +21,7 @@ "license": "MIT", "funding": "https://github.com/sponsors/wxt-dev", "scripts": { - "build": "buildc -- unbuild", + "build": "buildc -- tsdown", "check": "buildc --deps-only -- check", "test": "buildc --deps-only -- vitest" }, @@ -45,14 +45,13 @@ "oxlint": "^1.33.0", "publint": "^0.3.16", "typescript": "^5.9.3", - "unbuild": "^3.6.1", "vitest": "^4.0.16", "vitest-plugin-random-seed": "^1.1.2", "wxt": "workspace:*" }, "main": "./dist/index.cjs", "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.mts", "exports": { ".": { "import": { diff --git a/packages/i18n/tsdown.config.ts b/packages/i18n/tsdown.config.ts new file mode 100644 index 00000000..78a74ee2 --- /dev/null +++ b/packages/i18n/tsdown.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'tsdown'; + +const entry = ['src/index.ts', 'src/build.ts', 'src/module.ts']; + +export default defineConfig([ + { + entry, + }, + { + entry, + format: 'cjs', + }, +]); diff --git a/packages/module-react/build.config.ts b/packages/module-react/build.config.ts deleted file mode 100644 index 9d09d1c2..00000000 --- a/packages/module-react/build.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineBuildConfig } from 'unbuild'; -import { resolve } from 'node:path'; - -export default defineBuildConfig({ - rootDir: resolve(__dirname, 'modules'), - outDir: resolve(__dirname, 'dist'), - entries: [{ input: 'react.ts', name: 'index' }], - rollup: { - emitCJS: true, - }, - declaration: true, -}); diff --git a/packages/module-react/package.json b/packages/module-react/package.json index 923174cb..bb6a1510 100644 --- a/packages/module-react/package.json +++ b/packages/module-react/package.json @@ -22,7 +22,7 @@ "type": "module", "main": "./dist/index.cjs", "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.mts", "exports": { ".": { "import": { @@ -41,7 +41,7 @@ "scripts": { "dev": "wxt", "check": "pnpm build && check", - "build": "buildc -- unbuild", + "build": "buildc -- tsdown", "prepare": "buildc --deps-only -- wxt prepare" }, "peerDependencies": { @@ -58,7 +58,6 @@ "react": "^19.2.3", "react-dom": "^19.2.3", "typescript": "^5.9.3", - "unbuild": "^3.6.1", "wxt": "workspace:*" } } diff --git a/packages/module-react/tsdown.config.ts b/packages/module-react/tsdown.config.ts new file mode 100644 index 00000000..78fd7857 --- /dev/null +++ b/packages/module-react/tsdown.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from 'tsdown'; + +const entry = { + index: './modules/react.ts', +}; + +export default defineConfig([ + { + entry, + }, + { + entry, + format: 'cjs', + }, +]); diff --git a/packages/module-solid/build.config.ts b/packages/module-solid/build.config.ts deleted file mode 100644 index f388c74e..00000000 --- a/packages/module-solid/build.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineBuildConfig } from 'unbuild'; -import { resolve } from 'node:path'; - -export default defineBuildConfig({ - rootDir: resolve(__dirname, 'modules'), - outDir: resolve(__dirname, 'dist'), - entries: [{ input: 'solid.ts', name: 'index' }], - rollup: { - emitCJS: true, - }, - declaration: true, -}); diff --git a/packages/module-solid/package.json b/packages/module-solid/package.json index d89ce114..c27ccb46 100644 --- a/packages/module-solid/package.json +++ b/packages/module-solid/package.json @@ -22,7 +22,7 @@ "type": "module", "main": "./dist/index.cjs", "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.mts", "exports": { ".": { "import": { @@ -41,7 +41,7 @@ "scripts": { "dev": "wxt", "check": "pnpm build && check", - "build": "buildc -- unbuild", + "build": "buildc -- tsdown", "prepare": "buildc --deps-only -- wxt prepare" }, "peerDependencies": { @@ -55,7 +55,6 @@ "publint": "^0.3.16", "solid-js": "^1.9.10", "typescript": "^5.9.3", - "unbuild": "^3.6.1", "wxt": "workspace:*" } } diff --git a/packages/module-solid/tsdown.config.ts b/packages/module-solid/tsdown.config.ts new file mode 100644 index 00000000..0dabd842 --- /dev/null +++ b/packages/module-solid/tsdown.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from 'tsdown'; + +const entry = { + index: './modules/solid.ts', +}; + +export default defineConfig([ + { + entry, + }, + { + entry, + format: 'cjs', + }, +]); diff --git a/packages/module-svelte/package.json b/packages/module-svelte/package.json index d8f52b47..3e634ac3 100644 --- a/packages/module-svelte/package.json +++ b/packages/module-svelte/package.json @@ -22,7 +22,7 @@ "type": "module", "main": "./dist/index.cjs", "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.mts", "exports": { ".": { "import": { @@ -39,7 +39,7 @@ "dist" ], "scripts": { - "build": "buildc -- unbuild", + "build": "buildc -- tsdown", "check": "pnpm build && check" }, "peerDependencies": { @@ -53,7 +53,6 @@ "@aklinker1/check": "^2.2.0", "publint": "^0.3.16", "typescript": "^5.9.3", - "unbuild": "^3.6.1", "wxt": "workspace:*" } } diff --git a/packages/module-svelte/tsdown.config.ts b/packages/module-svelte/tsdown.config.ts new file mode 100644 index 00000000..857bd987 --- /dev/null +++ b/packages/module-svelte/tsdown.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from 'tsdown'; + +const entry = { + index: './src/index.ts', +}; + +export default defineConfig([ + { + entry, + }, + { + entry, + format: 'cjs', + }, +]); diff --git a/packages/module-vue/package.json b/packages/module-vue/package.json index 7c909885..4dbe4932 100644 --- a/packages/module-vue/package.json +++ b/packages/module-vue/package.json @@ -22,7 +22,7 @@ "type": "module", "main": "./dist/index.cjs", "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.mts", "exports": { ".": { "import": { @@ -39,7 +39,7 @@ "dist" ], "scripts": { - "build": "buildc -- unbuild", + "build": "buildc -- tsdown", "check": "pnpm build && check" }, "peerDependencies": { @@ -52,7 +52,6 @@ "@aklinker1/check": "^2.2.0", "publint": "^0.3.16", "typescript": "^5.9.3", - "unbuild": "^3.6.1", "wxt": "workspace:*" } } diff --git a/packages/module-vue/tsdown.config.ts b/packages/module-vue/tsdown.config.ts new file mode 100644 index 00000000..857bd987 --- /dev/null +++ b/packages/module-vue/tsdown.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from 'tsdown'; + +const entry = { + index: './src/index.ts', +}; + +export default defineConfig([ + { + entry, + }, + { + entry, + format: 'cjs', + }, +]); diff --git a/packages/runner/package.json b/packages/runner/package.json index 971dfedb..7ce1a68d 100644 --- a/packages/runner/package.json +++ b/packages/runner/package.json @@ -24,21 +24,19 @@ "check": "pnpm build && check", "test": "buildc --deps-only -- vitest", "dev": "tsx --trace-warnings dev.ts", - "build": "buildc -- unbuild", + "build": "buildc -- tsdown", "prepublishOnly": "pnpm build" }, - "dependencies": {}, "devDependencies": { "@aklinker1/check": "^2.2.0", "oxlint": "^1.33.0", "publint": "^0.3.16", "tsx": "4.21.0", "typescript": "^5.9.3", - "unbuild": "^3.6.1", "vitest": "^4.0.16" }, "main": "dist/index.mjs", - "types": "dist/index.d.ts", + "types": "dist/index.d.mts", "exports": { ".": { "types": "./dist/index.d.mts", diff --git a/packages/storage/package.json b/packages/storage/package.json index 13e7401e..4826f890 100644 --- a/packages/storage/package.json +++ b/packages/storage/package.json @@ -25,7 +25,7 @@ "license": "MIT", "funding": "https://github.com/sponsors/wxt-dev", "scripts": { - "build": "buildc -- unbuild", + "build": "buildc -- tsdown", "check": "buildc --deps-only -- check", "test": "buildc --deps-only -- vitest" }, @@ -40,11 +40,10 @@ "oxlint": "^1.33.0", "publint": "^0.3.16", "typescript": "^5.9.3", - "unbuild": "^3.6.1", "vitest": "^4.0.16" }, "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.mts", "exports": { ".": { "types": "./dist/index.d.mts", diff --git a/packages/unocss/package.json b/packages/unocss/package.json index 0f5be300..73ea5b4e 100644 --- a/packages/unocss/package.json +++ b/packages/unocss/package.json @@ -21,7 +21,7 @@ "license": "MIT", "type": "module", "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.mts", "exports": { ".": { "types": "./dist/index.d.mts", @@ -32,7 +32,7 @@ "dist" ], "scripts": { - "build": "buildc -- unbuild", + "build": "buildc -- tsdown", "check": "buildc --deps-only -- check" }, "peerDependencies": { @@ -44,7 +44,6 @@ "oxlint": "^1.33.0", "publint": "^0.3.16", "typescript": "^5.9.3", - "unbuild": "^3.6.1", "unocss": "^0.64.0 || ^0.65.0 || ^65.0.0 || ^66.0.0", "wxt": "workspace:*" }, diff --git a/packages/webextension-polyfill/build.config.ts b/packages/webextension-polyfill/build.config.ts deleted file mode 100644 index 64a6c1bf..00000000 --- a/packages/webextension-polyfill/build.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineBuildConfig } from 'unbuild'; -import { resolve } from 'node:path'; - -export default defineBuildConfig({ - rootDir: resolve(__dirname, 'modules/webextension-polyfill'), - outDir: resolve(__dirname, 'dist'), - entries: [ - { input: 'index.ts', name: 'index' }, - { input: 'browser.ts', name: 'browser' }, - ], - replace: { - 'process.env.NPM': 'true', - }, - declaration: true, -}); diff --git a/packages/webextension-polyfill/package.json b/packages/webextension-polyfill/package.json index 58faf5bf..fb5f170f 100644 --- a/packages/webextension-polyfill/package.json +++ b/packages/webextension-polyfill/package.json @@ -20,7 +20,7 @@ "version": "1.0.0", "type": "module", "main": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.mts", "exports": { ".": { "types": "./dist/index.d.mts", @@ -37,7 +37,7 @@ "scripts": { "dev": "wxt", "check": "pnpm build && check", - "build": "buildc -- unbuild", + "build": "buildc -- tsdown", "prepare": "buildc --deps-only -- wxt prepare" }, "peerDependencies": { @@ -49,7 +49,6 @@ "@types/webextension-polyfill": "^0.12.4", "publint": "^0.3.16", "typescript": "^5.9.3", - "unbuild": "^3.6.1", "webextension-polyfill": "^0.12.0", "wxt": "workspace:*" } diff --git a/packages/webextension-polyfill/tsdown.config.ts b/packages/webextension-polyfill/tsdown.config.ts new file mode 100644 index 00000000..566b31a6 --- /dev/null +++ b/packages/webextension-polyfill/tsdown.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from 'tsdown'; + +export default defineConfig({ + entry: { + index: 'modules/webextension-polyfill/index.ts', + browser: 'modules/webextension-polyfill/browser.ts', + }, + define: { + 'process.env.NPM': 'true', + }, +}); diff --git a/packages/wxt/build.config.ts b/packages/wxt/build.config.ts deleted file mode 100644 index bd2300a7..00000000 --- a/packages/wxt/build.config.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { defineBuildConfig } from 'unbuild'; -import { version, exports } from './package.json'; -import { readFile, writeFile } from 'fs/promises'; -import { - virtualEntrypointModuleNames, - virtualModuleNames, -} from './src/core/utils/virtual-modules'; - -export default defineBuildConfig([ - // Non-virtual modules can be transpiled with mkdist - { - entries: [ - { - builder: 'mkdist', - input: 'src', - pattern: ['**/*', '!**/__tests__', '!**/*.md', '!virtual', '!@types'], - declaration: true, - }, - ], - hooks: { - async 'build:done'() { - // Replace any template variables in output files - await replaceVars('dist/version.mjs', { version }); - }, - }, - }, - - // Virtual modules must be bundled individually - ...virtualModuleNames.map((moduleName) => ({ - entries: [`src/virtual/${moduleName}.ts`], - externals: [ - ...virtualEntrypointModuleNames.map((name) => `virtual:user-${name}`), - 'virtual:wxt-plugins', - 'virtual:app-config', - ...Object.keys(exports).map((path) => 'wxt' + path.slice(1)), // ./utils/storage => wxt/utils/storage - ], - })), -]); - -async function replaceVars(file: string, vars: Record) { - let text = await readFile(file, 'utf8'); - Object.entries(vars).forEach(([name, value]) => { - text = text.replaceAll(`{{${name}}}`, value); - }); - await writeFile(file, text, 'utf8'); -} diff --git a/packages/wxt/e2e/tests/output-structure.test.ts b/packages/wxt/e2e/tests/output-structure.test.ts index 79d6e848..0db84f04 100644 --- a/packages/wxt/e2e/tests/output-structure.test.ts +++ b/packages/wxt/e2e/tests/output-structure.test.ts @@ -343,44 +343,40 @@ describe('Output Directory Structure', () => { expect(await project.serializeFile('.output/chrome-mv3/background.js')) .toMatchInlineSnapshot(` - ".output/chrome-mv3/background.js - ---------------------------------------- - import { l as logHello, i as initPlugins } from "./chunks/_virtual_wxt-plugins-OjKtWpmY.js"; - function defineBackground(arg) { - if (arg == null || typeof arg === "function") return { main: arg }; - return arg; - } - const definition = defineBackground({ - type: "module", - main() { - logHello("background"); + ".output/chrome-mv3/background.js + ---------------------------------------- + import { l as logHello, i as initPlugins } from "./chunks/_virtual_wxt-plugins-OjKtWpmY.js"; + function defineBackground(arg) { + if (arg == null || typeof arg === "function") return { main: arg }; + return arg; } - }); - globalThis.browser?.runtime?.id ? globalThis.browser : globalThis.chrome; - function print(method, ...args) { - return; - } - const logger = { - debug: (...args) => print(console.debug, ...args), - log: (...args) => print(console.log, ...args), - warn: (...args) => print(console.warn, ...args), - error: (...args) => print(console.error, ...args) - }; - let result; - try { - initPlugins(); - result = definition.main(); - if (result instanceof Promise) { - console.warn( - "The background's main() function return a promise, but it must be synchronous" - ); + const definition = defineBackground({ + type: "module", + main() { + logHello("background"); + } + }); + globalThis.browser?.runtime?.id ? globalThis.browser : globalThis.chrome; + function print(method, ...args) { + return; } - } catch (err) { - logger.error("The background crashed on startup!"); - throw err; - } - " - `); + const logger = { + debug: (...args) => print(console.debug, ...args), + log: (...args) => print(console.log, ...args), + warn: (...args) => print(console.warn, ...args), + error: (...args) => print(console.error, ...args) + }; + let result; + try { + initPlugins(); + result = definition.main(); + if (result instanceof Promise) console.warn("The background's main() function return a promise, but it must be synchronous"); + } catch (err) { + logger.error("The background crashed on startup!"); + throw err; + } + " + `); }); it('should generate IIFE background script when type=undefined', async () => { @@ -420,51 +416,47 @@ describe('Output Directory Structure', () => { expect(await project.serializeFile('.output/chrome-mv3/background.js')) .toMatchInlineSnapshot(` - ".output/chrome-mv3/background.js - ---------------------------------------- - var background = (function() { - "use strict"; - function defineBackground(arg) { - if (arg == null || typeof arg === "function") return { main: arg }; - return arg; + ".output/chrome-mv3/background.js + ---------------------------------------- + var background = (function() { + "use strict"; + function defineBackground(arg) { + if (arg == null || typeof arg === "function") return { main: arg }; + return arg; + } + function logHello(name) { + console.log(\`Hello \${name}!\`); + } + const definition = defineBackground({ + main() { + logHello("background"); } - function logHello(name) { - console.log(\`Hello \${name}!\`); - } - const definition = defineBackground({ - main() { - logHello("background"); - } - }); - function initPlugins() { - } - globalThis.browser?.runtime?.id ? globalThis.browser : globalThis.chrome; - function print(method, ...args) { - return; - } - const logger = { - debug: (...args) => print(console.debug, ...args), - log: (...args) => print(console.log, ...args), - warn: (...args) => print(console.warn, ...args), - error: (...args) => print(console.error, ...args) - }; - let result; - try { - initPlugins(); - result = definition.main(); - if (result instanceof Promise) { - console.warn( - "The background's main() function return a promise, but it must be synchronous" - ); - } - } catch (err) { - logger.error("The background crashed on startup!"); - throw err; - } - const result$1 = result; - return result$1; - })(); - " - `); + }); + function initPlugins() { + } + globalThis.browser?.runtime?.id ? globalThis.browser : globalThis.chrome; + function print(method, ...args) { + return; + } + const logger = { + debug: (...args) => print(console.debug, ...args), + log: (...args) => print(console.log, ...args), + warn: (...args) => print(console.warn, ...args), + error: (...args) => print(console.error, ...args) + }; + let result; + try { + initPlugins(); + result = definition.main(); + if (result instanceof Promise) console.warn("The background's main() function return a promise, but it must be synchronous"); + } catch (err) { + logger.error("The background crashed on startup!"); + throw err; + } + var background_entrypoint_default = result; + return background_entrypoint_default; + })(); + " + `); }); }); diff --git a/packages/wxt/package.json b/packages/wxt/package.json index 9346c139..d591d62e 100644 --- a/packages/wxt/package.json +++ b/packages/wxt/package.json @@ -6,7 +6,7 @@ "license": "MIT", "scripts": { "wxt": "tsx src/cli/index.ts", - "build": "buildc -- unbuild", + "build": "buildc -- tsdown --config-loader unrun", "check": "pnpm build && pnpm run --reporter-hide-prefix /^check:.*/", "check:default": "check", "check:tsc-virtual": "tsc --noEmit -p src/virtual", @@ -76,7 +76,6 @@ "oxlint": "^1.33.0", "publint": "^0.3.16", "typescript": "^5.9.3", - "unbuild": "^3.6.1", "vitest": "^4.0.16", "vitest-plugin-random-seed": "^1.1.2" }, @@ -109,93 +108,93 @@ "wxt-publish-extension": "./bin/wxt-publish-extension.cjs" }, "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.mts", "exports": { ".": { - "types": "./dist/index.d.ts", + "types": "./dist/index.d.mts", "default": "./dist/index.mjs" }, "./utils/app-config": { - "types": "./dist/utils/app-config.d.ts", + "types": "./dist/utils/app-config.d.mts", "default": "./dist/utils/app-config.mjs" }, "./utils/inject-script": { - "types": "./dist/utils/inject-script.d.ts", + "types": "./dist/utils/inject-script.d.mts", "default": "./dist/utils/inject-script.mjs" }, "./utils/content-script-context": { - "types": "./dist/utils/content-script-context.d.ts", + "types": "./dist/utils/content-script-context.d.mts", "default": "./dist/utils/content-script-context.mjs" }, "./utils/content-script-ui/types": { - "types": "./dist/utils/content-script-ui/types.d.ts", + "types": "./dist/utils/content-script-ui/types.d.mts", "default": "./dist/utils/content-script-ui/types.mjs" }, "./utils/content-script-ui/integrated": { - "types": "./dist/utils/content-script-ui/integrated.d.ts", + "types": "./dist/utils/content-script-ui/integrated.d.mts", "default": "./dist/utils/content-script-ui/integrated.mjs" }, "./utils/content-script-ui/shadow-root": { - "types": "./dist/utils/content-script-ui/shadow-root.d.ts", + "types": "./dist/utils/content-script-ui/shadow-root.d.mts", "default": "./dist/utils/content-script-ui/shadow-root.mjs" }, "./utils/content-script-ui/iframe": { - "types": "./dist/utils/content-script-ui/iframe.d.ts", + "types": "./dist/utils/content-script-ui/iframe.d.mts", "default": "./dist/utils/content-script-ui/iframe.mjs" }, "./utils/define-app-config": { - "types": "./dist/utils/define-app-config.d.ts", + "types": "./dist/utils/define-app-config.d.mts", "default": "./dist/utils/define-app-config.mjs" }, "./utils/define-background": { - "types": "./dist/utils/define-background.d.ts", + "types": "./dist/utils/define-background.d.mts", "default": "./dist/utils/define-background.mjs" }, "./utils/define-content-script": { - "types": "./dist/utils/define-content-script.d.ts", + "types": "./dist/utils/define-content-script.d.mts", "default": "./dist/utils/define-content-script.mjs" }, "./utils/define-unlisted-script": { - "types": "./dist/utils/define-unlisted-script.d.ts", + "types": "./dist/utils/define-unlisted-script.d.mts", "default": "./dist/utils/define-unlisted-script.mjs" }, "./utils/define-wxt-plugin": { - "types": "./dist/utils/define-wxt-plugin.d.ts", + "types": "./dist/utils/define-wxt-plugin.d.mts", "default": "./dist/utils/define-wxt-plugin.mjs" }, "./utils/match-patterns": { - "types": "./dist/utils/match-patterns.d.ts", + "types": "./dist/utils/match-patterns.d.mts", "default": "./dist/utils/match-patterns.mjs" }, "./utils/split-shadow-root-css": { - "types": "./dist/utils/split-shadow-root-css.d.ts", + "types": "./dist/utils/split-shadow-root-css.d.mts", "default": "./dist/utils/split-shadow-root-css.mjs" }, "./utils/storage": { - "types": "./dist/utils/storage.d.ts", + "types": "./dist/utils/storage.d.mts", "default": "./dist/utils/storage.mjs" }, "./browser": { - "types": "./dist/browser.d.ts", + "types": "./dist/browser.d.mts", "default": "./dist/browser.mjs" }, "./testing/fake-browser": { - "types": "./dist/testing/fake-browser.d.ts", + "types": "./dist/testing/fake-browser.d.mts", "default": "./dist/testing/fake-browser.mjs" }, "./testing/vitest-plugin": { - "types": "./dist/testing/wxt-vitest-plugin.d.ts", + "types": "./dist/testing/wxt-vitest-plugin.d.mts", "default": "./dist/testing/wxt-vitest-plugin.mjs" }, "./testing": { - "types": "./dist/testing/index.d.ts", + "types": "./dist/testing/index.d.mts", "default": "./dist/testing/index.mjs" }, "./vite-builder-env": { "types": "./dist/vite-builder-env.d.ts" }, "./modules": { - "types": "./dist/modules.d.ts", + "types": "./dist/modules.d.mts", "default": "./dist/modules.mjs" } } diff --git a/packages/wxt/tsdown.config.ts b/packages/wxt/tsdown.config.ts new file mode 100644 index 00000000..635ef074 --- /dev/null +++ b/packages/wxt/tsdown.config.ts @@ -0,0 +1,62 @@ +import { defineConfig, UserConfig } from 'tsdown'; +import pkgJson from './package.json' with { type: 'json' }; +import { readFile, writeFile } from 'node:fs/promises'; +import { + virtualEntrypointModuleNames, + virtualModuleNames, +} from './src/core/utils/virtual-modules'; + +export default defineConfig([ + // Non-virtual modules can be transpiled in-place to make debugging in node_modules easier + { + entry: [ + // Exports + ...Object.values(pkgJson.exports) + .filter((ex: any) => ex.default) + .map((ex: any) => + ex.default.replace('./dist', 'src').replace('.mjs', '.ts'), + ), + + // CLI + 'src/cli/index.ts', + ], + unbundle: true, + external: ['wxt/browser', 'virtual:app-config'], + copy: [ + // If tsdown bundles this file, it removes the triple-slash reference, so + // we need to copy it into the out dir manually instead of building it. + 'src/vite-builder-env.d.ts', + ], + onSuccess: async () => { + // Don't rely on importing the package.json file at runtime, hardcode the + // version to avoid issues with different runtimes handling JSON imports + // differently. + await replaceVars('dist/version.mjs', { version: pkgJson.version }); + }, + }, + + // Virtual modules must be bundled individually + ...virtualModuleNames.map( + (moduleName): UserConfig => ({ + entry: `src/virtual/${moduleName}.ts`, + outDir: 'dist/virtual', + external: [ + ...virtualEntrypointModuleNames.map((name) => `virtual:user-${name}`), + 'virtual:wxt-plugins', + 'virtual:app-config', + ...Object.keys(pkgJson.exports).map((path) => 'wxt' + path.slice(1)), // ./utils/storage => wxt/utils/storage + ], + }), + ), +]); + +async function replaceVars( + file: string, + vars: Record, +): Promise { + let text = await readFile(file, 'utf8'); + Object.entries(vars).forEach(([name, value]) => { + text = text.replaceAll(`{{${name}}}`, value); + }); + await writeFile(file, text, 'utf8'); +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index be4f4553..ed10febd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -73,6 +73,9 @@ importers: simple-git-hooks: specifier: ^2.13.1 version: 2.13.1 + tsdown: + specifier: ^0.18.1 + version: 0.18.1(publint@0.3.16)(typescript@5.9.3) tsx: specifier: 4.21.0 version: 4.21.0 @@ -131,9 +134,6 @@ importers: typescript: specifier: ^5.9.3 version: 5.9.3 - unbuild: - specifier: ^3.6.1 - version: 3.6.1(sass@1.97.0)(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) wxt: specifier: workspace:* version: link:../wxt @@ -227,9 +227,6 @@ importers: typescript: specifier: ^5.9.3 version: 5.9.3 - unbuild: - specifier: ^3.6.1 - version: 3.6.1(sass@1.97.0)(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) vitest: specifier: ^4.0.16 version: 4.0.16(@types/node@20.19.13)(happy-dom@20.0.11)(jiti@2.6.1)(sass@1.97.0)(tsx@4.21.0)(yaml@2.8.1) @@ -267,9 +264,6 @@ importers: typescript: specifier: ^5.9.3 version: 5.9.3 - unbuild: - specifier: ^3.6.1 - version: 3.6.1(sass@1.97.0)(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) wxt: specifier: workspace:* version: link:../wxt @@ -292,9 +286,6 @@ importers: typescript: specifier: ^5.9.3 version: 5.9.3 - unbuild: - specifier: ^3.6.1 - version: 3.6.1(sass@1.97.0)(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) wxt: specifier: workspace:* version: link:../wxt @@ -314,9 +305,6 @@ importers: typescript: specifier: ^5.9.3 version: 5.9.3 - unbuild: - specifier: ^3.6.1 - version: 3.6.1(sass@1.97.0)(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) wxt: specifier: workspace:* version: link:../wxt @@ -336,9 +324,6 @@ importers: typescript: specifier: ^5.9.3 version: 5.9.3 - unbuild: - specifier: ^3.6.1 - version: 3.6.1(sass@1.97.0)(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) wxt: specifier: workspace:* version: link:../wxt @@ -360,9 +345,6 @@ importers: typescript: specifier: ^5.9.3 version: 5.9.3 - unbuild: - specifier: ^3.6.1 - version: 3.6.1(sass@1.97.0)(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) vitest: specifier: ^4.0.16 version: 4.0.16(@types/node@20.19.13)(happy-dom@20.0.11)(jiti@2.6.1)(sass@1.97.0)(tsx@4.21.0)(yaml@2.8.1) @@ -394,9 +376,6 @@ importers: typescript: specifier: ^5.9.3 version: 5.9.3 - unbuild: - specifier: ^3.6.1 - version: 3.6.1(sass@1.97.0)(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) vitest: specifier: ^4.0.16 version: 4.0.16(@types/node@20.19.13)(happy-dom@20.0.11)(jiti@2.6.1)(sass@1.97.0)(tsx@4.21.0)(yaml@2.8.1) @@ -422,9 +401,6 @@ importers: typescript: specifier: ^5.9.3 version: 5.9.3 - unbuild: - specifier: ^3.6.1 - version: 3.6.1(sass@1.97.0)(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) unocss: specifier: ^0.64.0 || ^0.65.0 || ^65.0.0 || ^66.0.0 version: 66.5.0(vite@7.3.0(@types/node@20.19.13)(jiti@2.6.1)(sass@1.97.0)(tsx@4.21.0)(yaml@2.8.1)) @@ -446,9 +422,6 @@ importers: typescript: specifier: ^5.9.3 version: 5.9.3 - unbuild: - specifier: ^3.6.1 - version: 3.6.1(sass@1.97.0)(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) webextension-polyfill: specifier: ^0.12.0 version: 0.12.0 @@ -633,9 +606,6 @@ importers: typescript: specifier: ^5.9.3 version: 5.9.3 - unbuild: - specifier: ^3.6.1 - version: 3.6.1(sass@1.97.0)(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) vitest: specifier: ^4.0.16 version: 4.0.16(@types/node@20.19.13)(happy-dom@20.0.11)(jiti@2.6.1)(sass@1.97.0)(tsx@4.21.0)(yaml@2.8.1) @@ -811,6 +781,10 @@ packages: resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} engines: {node: '>=6.9.0'} + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.27.2': resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} @@ -962,9 +936,15 @@ packages: search-insights: optional: true + '@emnapi/core@1.7.1': + resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} + '@emnapi/runtime@1.7.1': resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} @@ -1605,6 +1585,9 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@napi-rs/wasm-runtime@1.1.0': + resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1617,6 +1600,9 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@oxc-project/types@0.103.0': + resolution: {integrity: sha512-bkiYX5kaXWwUessFRSoXFkGIQTmc6dLGdxuRTrC+h8PSnIdZyuXHHlLAeTmOue5Br/a0/a7dHH0Gca6eXn9MKg==} + '@oxlint/darwin-arm64@1.33.0': resolution: {integrity: sha512-PmEQDLHAxiAdyttQ1ZWXd+5VpHLbHf3FTMJL9bg5TZamDnhNiW/v0Pamv3MTAdymnoDI3H8IVLAN/SAseV/adw==} cpu: [arm64] @@ -1761,12 +1747,95 @@ packages: '@quansync/fs@0.1.5': resolution: {integrity: sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA==} + '@quansync/fs@1.0.0': + resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} + + '@rolldown/binding-android-arm64@1.0.0-beta.55': + resolution: {integrity: sha512-5cPpHdO+zp+klznZnIHRO1bMHDq5hS9cqXodEKAaa/dQTPDjnE91OwAsy3o1gT2x4QaY8NzdBXAvutYdaw0WeA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-beta.55': + resolution: {integrity: sha512-l0887CGU2SXZr0UJmeEcXSvtDCOhDTTYXuoWbhrEJ58YQhQk24EVhDhHMTyjJb1PBRniUgNc1G0T51eF8z+TWw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-beta.55': + resolution: {integrity: sha512-d7qP2AVYzN0tYIP4vJ7nmr26xvmlwdkLD/jWIc9Z9dqh5y0UGPigO3m5eHoHq9BNazmwdD9WzDHbQZyXFZjgtA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-beta.55': + resolution: {integrity: sha512-j311E4NOB0VMmXHoDDZhrWidUf7L/Sa6bu/+i2cskvHKU40zcUNPSYeD2YiO2MX+hhDFa5bJwhliYfs+bTrSZw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.55': + resolution: {integrity: sha512-lAsaYWhfNTW2A/9O7zCpb5eIJBrFeNEatOS/DDOZ5V/95NHy50g4b/5ViCqchfyFqRb7MKUR18/+xWkIcDkeIw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.55': + resolution: {integrity: sha512-2x6ffiVLZrQv7Xii9+JdtyT1U3bQhKj59K3eRnYlrXsKyjkjfmiDUVx2n+zSyijisUqD62fcegmx2oLLfeTkCA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.55': + resolution: {integrity: sha512-QbNncvqAXziya5wleI+OJvmceEE15vE4yn4qfbI/hwT/+8ZcqxyfRZOOh62KjisXxp4D0h3JZspycXYejxAU3w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.55': + resolution: {integrity: sha512-YZCTZZM+rujxwVc6A+QZaNMJXVtmabmFYLG2VGQTKaBfYGvBKUgtbMEttnp/oZ88BMi2DzadBVhOmfQV8SuHhw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.55': + resolution: {integrity: sha512-28q9OQ/DDpFh2keS4BVAlc3N65/wiqKbk5K1pgLdu/uWbKa8hgUJofhXxqO+a+Ya2HVTUuYHneWsI2u+eu3N5Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-openharmony-arm64@1.0.0-beta.55': + resolution: {integrity: sha512-LiCA4BjCnm49B+j1lFzUtlC+4ZphBv0d0g5VqrEJua/uyv9Ey1v9tiaMql1C8c0TVSNDUmrkfHQ71vuQC7YfpQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.55': + resolution: {integrity: sha512-nZ76tY7T0Oe8vamz5Cv5CBJvrqeQxwj1WaJ2GxX8Msqs0zsQMMcvoyxOf0glnJlxxgKjtoBxAOxaAU8ERbW6Tg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.55': + resolution: {integrity: sha512-TFVVfLfhL1G+pWspYAgPK/FSqjiBtRKYX9hixfs508QVEZPQlubYAepHPA7kEa6lZXYj5ntzF87KC6RNhxo+ew==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.55': + resolution: {integrity: sha512-j1WBlk0p+ISgLzMIgl0xHp1aBGXenoK2+qWYc/wil2Vse7kVOdFq9aeQ8ahK6/oxX2teQ5+eDvgjdywqTL+daA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@rolldown/pluginutils@1.0.0-beta.29': resolution: {integrity: sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==} '@rolldown/pluginutils@1.0.0-beta.34': resolution: {integrity: sha512-LyAREkZHP5pMom7c24meKmJCdhf2hEyvam2q0unr3or9ydwDL+DJ8chTF6Av/RFPb3rH8UFBdMzO5MxTZW97oA==} + '@rolldown/pluginutils@1.0.0-beta.55': + resolution: {integrity: sha512-vajw/B3qoi7aYnnD4BQ4VoCcXQWnF0roSwE2iynbNxgW4l9mFwtLmLmUhpDdcTBfKyZm1p/T0D13qG94XBLohA==} + '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} engines: {node: '>=14.0.0'} @@ -1968,6 +2037,9 @@ packages: svelte: ^5.0.0 vite: ^6.3.0 || ^7.0.0 + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -2371,6 +2443,10 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + ansis@4.2.0: + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} + engines: {node: '>=14'} + any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -2392,6 +2468,10 @@ packages: resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==} engines: {node: '>=12'} + ast-kit@2.2.0: + resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} + engines: {node: '>=20.19.0'} + ast-v8-to-istanbul@0.3.9: resolution: {integrity: sha512-dSC6tJeOJxbZrPzPbv5mMd6CMiQ1ugaVXXPRad2fXUSsy1kstFn9XQWemV9VW7Y7kpxgQ/4WMoZfwdH8XSU48w==} @@ -2442,6 +2522,9 @@ packages: birpc@2.5.0: resolution: {integrity: sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==} + birpc@4.0.0: + resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} + bl@5.1.0: resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} @@ -2862,6 +2945,15 @@ packages: resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} engines: {node: '>=12'} + dts-resolver@2.1.3: + resolution: {integrity: sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==} + engines: {node: '>=20.19.0'} + peerDependencies: + oxc-resolver: '>=11.0.0' + peerDependenciesMeta: + oxc-resolver: + optional: true + duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} @@ -2883,6 +2975,10 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + empathic@2.0.0: + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} + engines: {node: '>=14'} + end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} @@ -3057,6 +3153,9 @@ packages: get-tsconfig@4.10.1: resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + get-tsconfig@4.13.0: + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + giget@2.0.0: resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} hasBin: true @@ -3160,6 +3259,10 @@ packages: import-meta-resolve@4.2.0: resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + import-without-cache@0.2.4: + resolution: {integrity: sha512-b/Ke0y4n26ffQhkLvgBxV/NVO/QEE6AZlrMj8DYuxBWNAAu4iMQWZTFWzKcCTEmv7VQ0ae0j8KwrlGzSy8sYQQ==} + engines: {node: '>=20.19.0'} + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -4170,6 +4273,9 @@ packages: quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + quansync@1.0.0: + resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -4263,6 +4369,30 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rolldown-plugin-dts@0.19.1: + resolution: {integrity: sha512-6z501zDTGq6ZrIEdk57qNUwq7kBRGzv3I3SAN2HMJ2KFYjHLnAuPYOmvfiwdxbRZMJ0iMdkV9rYdC3GjurT2cg==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@ts-macro/tsc': ^0.3.6 + '@typescript/native-preview': '>=7.0.0-dev.20250601.1' + rolldown: ^1.0.0-beta.55 + typescript: ^5.0.0 + vue-tsc: ~3.1.0 + peerDependenciesMeta: + '@ts-macro/tsc': + optional: true + '@typescript/native-preview': + optional: true + typescript: + optional: true + vue-tsc: + optional: true + + rolldown@1.0.0-beta.55: + resolution: {integrity: sha512-r8Ws43aYCnfO07ao0SvQRz4TBAtZJjGWNvScRBOHuiNHvjfECOJBIqJv0nUkL1GYcltjvvHswRilDF1ocsC0+g==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup-plugin-dts@6.2.3: resolution: {integrity: sha512-UgnEsfciXSPpASuOelix7m4DrmyQgiaWBnvI0TM4GxuDh5FkqW8E5hu57bCxXB90VvR1WNfLV80yEDN18UogSA==} engines: {node: '>=16'} @@ -4589,6 +4719,10 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -4600,6 +4734,31 @@ packages: typescript: optional: true + tsdown@0.18.1: + resolution: {integrity: sha512-na4MdVA8QS9Zw++0KovGpjvw1BY5WvoCWcE4Aw0dyfff9nWK8BPzniQEVs+apGUg3DHaYMDfs+XiFaDDgqDDzQ==} + engines: {node: '>=20.19.0'} + hasBin: true + peerDependencies: + '@arethetypeswrong/core': ^0.18.1 + '@vitejs/devtools': '*' + publint: ^0.3.0 + typescript: ^5.0.0 + unplugin-lightningcss: ^0.4.0 + unplugin-unused: ^0.5.0 + peerDependenciesMeta: + '@arethetypeswrong/core': + optional: true + '@vitejs/devtools': + optional: true + publint: + optional: true + typescript: + optional: true + unplugin-lightningcss: + optional: true + unplugin-unused: + optional: true + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -4673,6 +4832,9 @@ packages: typescript: optional: true + unconfig-core@7.4.2: + resolution: {integrity: sha512-VgPCvLWugINbXvMQDf8Jh0mlbvNjNC6eSUziHsBCMpxR05OPrNrvDnyatdMjRgcHaaNsCqz+wjNXxNw1kRLHUg==} + unconfig@7.3.3: resolution: {integrity: sha512-QCkQoOnJF8L107gxfHL0uavn7WD9b3dpBcFX6HtfQYmjw2YzWxGuFQ0N0J6tE9oguCBJn9KOvfqYDCMPHIZrBA==} @@ -4726,6 +4888,16 @@ packages: resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==} engines: {node: '>=18.12.0'} + unrun@0.2.20: + resolution: {integrity: sha512-YhobStTk93HYRN/4iBs3q3/sd7knvju1XrzwwrVVfRujyTG1K88hGONIxCoJN0PWBuO+BX7fFiHH0sVDfE3MWw==} + engines: {node: '>=20.19.0'} + hasBin: true + peerDependencies: + synckit: ^0.11.11 + peerDependenciesMeta: + synckit: + optional: true + untyped@2.0.0: resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==} hasBin: true @@ -5211,7 +5383,7 @@ snapshots: '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.3.0 - tinyexec: 1.0.1 + tinyexec: 1.0.2 '@antfu/utils@9.2.0': {} @@ -5251,6 +5423,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.30 jsesc: 3.1.0 + '@babel/generator@7.28.5': + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + '@babel/helper-compilation-targets@7.27.2': dependencies: '@babel/compat-data': 7.28.0 @@ -5334,7 +5514,7 @@ snapshots: '@babel/traverse@7.27.7': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 + '@babel/generator': 7.28.5 '@babel/parser': 7.28.5 '@babel/template': 7.27.2 '@babel/types': 7.28.5 @@ -5346,7 +5526,7 @@ snapshots: '@babel/traverse@7.28.3': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 + '@babel/generator': 7.28.5 '@babel/helper-globals': 7.28.0 '@babel/parser': 7.28.5 '@babel/template': 7.27.2 @@ -5415,11 +5595,22 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' + '@emnapi/core@1.7.1': + dependencies: + '@emnapi/wasi-threads': 1.1.0 + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.7.1': dependencies: tslib: 2.8.1 optional: true + '@emnapi/wasi-threads@1.1.0': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.21.5': optional: true @@ -5815,6 +6006,13 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@napi-rs/wasm-runtime@1.1.0': + dependencies: + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 + '@tybys/wasm-util': 0.10.1 + optional: true + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -5827,6 +6025,8 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 + '@oxc-project/types@0.103.0': {} + '@oxlint/darwin-arm64@1.33.0': optional: true @@ -5932,10 +6132,57 @@ snapshots: dependencies: quansync: 0.2.11 + '@quansync/fs@1.0.0': + dependencies: + quansync: 1.0.0 + + '@rolldown/binding-android-arm64@1.0.0-beta.55': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-beta.55': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-beta.55': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-beta.55': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.55': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.55': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.55': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.55': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.55': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-beta.55': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.55': + dependencies: + '@napi-rs/wasm-runtime': 1.1.0 + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.55': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.55': + optional: true + '@rolldown/pluginutils@1.0.0-beta.29': {} '@rolldown/pluginutils@1.0.0-beta.34': {} + '@rolldown/pluginutils@1.0.0-beta.55': {} + '@rollup/plugin-alias@5.1.1(rollup@4.50.0)': optionalDependencies: rollup: 4.50.0 @@ -6107,6 +6354,11 @@ snapshots: transitivePeerDependencies: - supports-color + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.28.3 @@ -6617,6 +6869,8 @@ snapshots: ansi-styles@6.2.1: {} + ansis@4.2.0: {} + any-promise@1.3.0: {} anymatch@3.1.3: @@ -6632,6 +6886,11 @@ snapshots: array-union@3.0.1: {} + ast-kit@2.2.0: + dependencies: + '@babel/parser': 7.28.5 + pathe: 2.0.3 + ast-v8-to-istanbul@0.3.9: dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -6686,6 +6945,8 @@ snapshots: birpc@2.5.0: {} + birpc@4.0.0: {} + bl@5.1.0: dependencies: buffer: 6.0.3 @@ -7144,6 +7405,8 @@ snapshots: dotenv@17.2.3: {} + dts-resolver@2.1.3: {} + duplexer@0.1.2: {} eastasianwidth@0.2.0: {} @@ -7158,6 +7421,8 @@ snapshots: emoji-regex@9.2.2: {} + empathic@2.0.0: {} + end-of-stream@1.4.5: dependencies: once: 1.4.0 @@ -7387,6 +7652,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@4.13.0: + dependencies: + resolve-pkg-maps: 1.0.0 + giget@2.0.0: dependencies: citty: 0.1.6 @@ -7492,6 +7761,8 @@ snapshots: import-meta-resolve@4.2.0: {} + import-without-cache@0.2.4: {} + inherits@2.0.4: {} ini@1.3.8: {} @@ -8096,7 +8367,7 @@ snapshots: postcss: 8.5.6 postcss-nested: 7.0.2(postcss@8.5.6) semver: 7.7.3 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 optionalDependencies: sass: 1.97.0 typescript: 5.9.3 @@ -8603,6 +8874,8 @@ snapshots: quansync@0.2.11: {} + quansync@1.0.0: {} + queue-microtask@1.2.3: {} quick-format-unescaped@4.0.4: {} @@ -8696,6 +8969,41 @@ snapshots: rfdc@1.4.1: {} + rolldown-plugin-dts@0.19.1(rolldown@1.0.0-beta.55)(typescript@5.9.3): + dependencies: + '@babel/generator': 7.28.5 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + ast-kit: 2.2.0 + birpc: 4.0.0 + dts-resolver: 2.1.3 + get-tsconfig: 4.13.0 + obug: 2.1.1 + rolldown: 1.0.0-beta.55 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - oxc-resolver + + rolldown@1.0.0-beta.55: + dependencies: + '@oxc-project/types': 0.103.0 + '@rolldown/pluginutils': 1.0.0-beta.55 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-beta.55 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.55 + '@rolldown/binding-darwin-x64': 1.0.0-beta.55 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.55 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.55 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.55 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.55 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.55 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.55 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.55 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.55 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.55 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.55 + rollup-plugin-dts@6.2.3(rollup@4.50.0)(typescript@5.9.3): dependencies: magic-string: 0.30.18 @@ -9057,12 +9365,42 @@ snapshots: totalist@3.0.1: {} + tree-kill@1.2.2: {} + trim-lines@3.0.1: {} ts-essentials@10.1.1(typescript@5.9.3): optionalDependencies: typescript: 5.9.3 + tsdown@0.18.1(publint@0.3.16)(typescript@5.9.3): + dependencies: + ansis: 4.2.0 + cac: 6.7.14 + defu: 6.1.4 + empathic: 2.0.0 + hookable: 5.5.3 + import-without-cache: 0.2.4 + obug: 2.1.1 + picomatch: 4.0.3 + rolldown: 1.0.0-beta.55 + rolldown-plugin-dts: 0.19.1(rolldown@1.0.0-beta.55)(typescript@5.9.3) + semver: 7.7.3 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + unconfig-core: 7.4.2 + unrun: 0.2.20 + optionalDependencies: + publint: 0.3.16 + typescript: 5.9.3 + transitivePeerDependencies: + - '@ts-macro/tsc' + - '@typescript/native-preview' + - oxc-resolver + - synckit + - vue-tsc + tslib@2.8.1: {} tsx@4.20.5: @@ -9150,6 +9488,11 @@ snapshots: - vue-sfc-transformer - vue-tsc + unconfig-core@7.4.2: + dependencies: + '@quansync/fs': 1.0.0 + quansync: 1.0.0 + unconfig@7.3.3: dependencies: '@quansync/fs': 0.1.5 @@ -9244,6 +9587,10 @@ snapshots: picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 + unrun@0.2.20: + dependencies: + rolldown: 1.0.0-beta.55 + untyped@2.0.0: dependencies: citty: 0.1.6