diff --git a/.changeset/clean-types-resolve.md b/.changeset/clean-types-resolve.md new file mode 100644 index 00000000..d44948e1 --- /dev/null +++ b/.changeset/clean-types-resolve.md @@ -0,0 +1,9 @@ +--- +'@prefresh/vite': patch +--- + +Fix type resolution under `moduleResolution: NodeNext` and Deno + +The `import` condition now resolves to a real ESM entry (`src/index.mjs`) with matching ESM type declarations (`index.d.mts` using `export default`), while `require` keeps the CommonJS declarations (`index.d.ts` using `export =`). Previously the ESM entry was typed with a CJS-style `export =` declaration, which TypeScript 6 / Deno 2.8.3+ reject as a hard error. + +Also inline the `FilterPattern` type instead of importing it from `@rollup/pluginutils`, whose types do not resolve under NodeNext. diff --git a/packages/vite/index.d.mts b/packages/vite/index.d.mts new file mode 100644 index 00000000..3f38c7b2 --- /dev/null +++ b/packages/vite/index.d.mts @@ -0,0 +1,13 @@ +import { PluginOption } from 'vite'; + +type FilterPattern = ReadonlyArray | string | RegExp | null; + +interface Options { + parserPlugins?: readonly string[]; + include?: FilterPattern; + exclude?: FilterPattern; +} + +declare const prefreshPlugin: (options?: Options) => Promise; + +export default prefreshPlugin; diff --git a/packages/vite/index.d.ts b/packages/vite/index.d.ts index 79140bb0..39d49b1e 100644 --- a/packages/vite/index.d.ts +++ b/packages/vite/index.d.ts @@ -1,6 +1,7 @@ -import { FilterPattern } from '@rollup/pluginutils'; import { PluginOption } from 'vite'; +type FilterPattern = ReadonlyArray | string | RegExp | null; + interface Options { parserPlugins?: readonly string[]; include?: FilterPattern; diff --git a/packages/vite/package.json b/packages/vite/package.json index 1926d4ab..63e9b393 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -6,9 +6,14 @@ "types": "index.d.ts", "exports": { ".": { - "types": "./index.d.ts", - "require": "./src/index.js", - "import": "./src/index.js" + "import": { + "types": "./index.d.mts", + "default": "./src/index.mjs" + }, + "require": { + "types": "./index.d.ts", + "default": "./src/index.js" + } }, "./package.json": "./package.json" }, @@ -16,10 +21,9 @@ "default": "src/index.js" }, "files": [ - "dist", - "runtime", - "utils", - "index.d.ts" + "src", + "index.d.ts", + "index.d.mts" ], "scripts": { "lint": "eslint src", diff --git a/packages/vite/src/index.mjs b/packages/vite/src/index.mjs new file mode 100644 index 00000000..7ee9ee4a --- /dev/null +++ b/packages/vite/src/index.mjs @@ -0,0 +1,3 @@ +import prefreshPlugin from './index.js'; + +export default prefreshPlugin;