Skip to content

Commit 8cf63f4

Browse files
committed
refactor: enable isolatedDeclarations
1 parent b1d1808 commit 8cf63f4

13 files changed

+224
-59
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
"lint:fix": "pnpm run lint --fix",
6767
"build": "tsup",
6868
"test": "vitest",
69+
"typecheck": "tsc --noEmit",
6970
"release": "bumpp && pnpm publish",
7071
"prepublishOnly": "pnpm run build"
7172
},

src/core/utils.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export const isTS = (id: string) => /\.tsx?$/.test(id)
1+
export const isTS = (id: string): boolean => /\.tsx?$/.test(id)

src/core/vue2.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const transformVue2 = (
1010
code: string,
1111
id: string,
1212
options: OptionsResolved,
13-
) => {
13+
): { code: string; map: any } | undefined => {
1414
const transformOptions: TransformOptions = {
1515
babelrc: false,
1616
configFile: false,

src/core/vue3.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export const transformVue3 = (
99
code: string,
1010
id: string,
1111
options: OptionsResolved,
12-
) => {
12+
): { code: string; map: any } | undefined => {
1313
const transformOptions: TransformOptions = {
1414
babelrc: false,
1515
configFile: false,

src/esbuild.ts

+21-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
1-
import unplugin from '.'
1+
/**
2+
* This entry file is for esbuild plugin.
3+
*
4+
* @module
5+
*/
26

3-
export default unplugin.esbuild
7+
import VueJsx from './index'
8+
9+
/**
10+
* Esbuild plugin
11+
*
12+
* @example
13+
* ```ts
14+
* import { build } from 'esbuild'
15+
* import Starter from 'unplugin-vue-jsx/esbuild'
16+
*
17+
* build({ plugins: [Starter()] })
18+
```
19+
*/
20+
const esbuild = VueJsx.esbuild as typeof VueJsx.esbuild
21+
export default esbuild
22+
export { esbuild as 'module.exports' }

src/farm.ts

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* This entry file is for Farm plugin.
3+
*
4+
* @module
5+
*/
6+
7+
import VueJsx from './index'
8+
9+
/**
10+
* Farm plugin
11+
*
12+
* @example
13+
* ```ts
14+
* // farm.config.js
15+
* import Starter from 'unplugin-vue-jsx/farm'
16+
*
17+
* export default {
18+
* plugins: [Starter()],
19+
* }
20+
* ```
21+
*/
22+
const farm = VueJsx.farm as typeof VueJsx.farm
23+
export default farm
24+
export { farm as 'module.exports' }

src/index.ts

+53-46
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,62 @@
11
import { createFilter } from '@rollup/pluginutils'
2-
import { createUnplugin, type UnpluginOptions } from 'unplugin'
2+
import {
3+
createUnplugin,
4+
type UnpluginInstance,
5+
type UnpluginOptions,
6+
} from 'unplugin'
37
import {
48
resolveOption,
59
type Options,
610
type OptionsResolved,
711
} from './core/options'
812

9-
export default createUnplugin<Options | undefined>((userOptions = {}) => {
10-
let options: OptionsResolved
11-
let filter: (id: unknown) => boolean
12-
13-
const name = 'unplugin-vue-jsx'
14-
const factory: UnpluginOptions = {
15-
name,
16-
17-
async buildStart() {
18-
options = await resolveOption(userOptions)
19-
filter = createFilter(options.include, options.exclude)
20-
},
21-
22-
transformInclude(id) {
23-
return filter(id)
24-
},
25-
26-
async transform(code, id) {
27-
let result: { code: string; map: any } | undefined
28-
if (options.version === 2) {
29-
// Vue 2
30-
const { transformVue2 } = await import('./core/vue2')
31-
result = await transformVue2(code, id, options)
32-
} else {
33-
// Vue 3
34-
const { transformVue3 } = await import('./core/vue3')
35-
result = await transformVue3(code, id, options)
36-
}
37-
38-
if (!result?.code) return
39-
return {
40-
code: result.code,
41-
map: result.map as any,
42-
}
43-
},
44-
45-
vite: {
46-
configResolved(config) {
47-
userOptions.root = config.root
48-
userOptions.sourceMap =
49-
config.command === 'serve' || !!config.build.sourcemap
13+
const VueJsx: UnpluginInstance<Options | undefined, false> = createUnplugin(
14+
(userOptions = {}) => {
15+
let options: OptionsResolved
16+
let filter: (id: unknown) => boolean
17+
18+
const name = 'unplugin-vue-jsx'
19+
const factory: UnpluginOptions = {
20+
name,
21+
22+
async buildStart() {
23+
options = await resolveOption(userOptions)
24+
filter = createFilter(options.include, options.exclude)
25+
},
26+
27+
transformInclude(id) {
28+
return filter(id)
29+
},
30+
31+
async transform(code, id) {
32+
let result: { code: string; map: any } | undefined
33+
if (options.version === 2) {
34+
// Vue 2
35+
const { transformVue2 } = await import('./core/vue2')
36+
result = await transformVue2(code, id, options)
37+
} else {
38+
// Vue 3
39+
const { transformVue3 } = await import('./core/vue3')
40+
result = await transformVue3(code, id, options)
41+
}
42+
43+
if (!result?.code) return
44+
return {
45+
code: result.code,
46+
map: result.map as any,
47+
}
48+
},
49+
50+
vite: {
51+
configResolved(config) {
52+
userOptions.root = config.root
53+
userOptions.sourceMap =
54+
config.command === 'serve' || !!config.build.sourcemap
55+
},
5056
},
51-
},
52-
}
57+
}
5358

54-
return factory
55-
})
59+
return factory
60+
},
61+
)
62+
export default VueJsx

src/rolldown.ts

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* This entry file is for Rolldown plugin.
3+
*
4+
* @module
5+
*/
6+
7+
import VueJsx from './index'
8+
9+
/**
10+
* Rolldown plugin
11+
*
12+
* @example
13+
* ```ts
14+
* // rolldown.config.js
15+
* import Starter from 'unplugin-vue-jsx/rolldown'
16+
*
17+
* export default {
18+
* plugins: [Starter()],
19+
* }
20+
* ```
21+
*/
22+
const rolldown = VueJsx.rolldown as typeof VueJsx.rolldown
23+
export default rolldown
24+
export { rolldown as 'module.exports' }

src/rollup.ts

+23-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
1-
import unplugin from '.'
1+
/**
2+
* This entry file is for Rollup plugin.
3+
*
4+
* @module
5+
*/
26

3-
export default unplugin.rollup
7+
import VueJsx from './index'
8+
9+
/**
10+
* Rollup plugin
11+
*
12+
* @example
13+
* ```ts
14+
* // rollup.config.js
15+
* import Starter from 'unplugin-vue-jsx/rollup'
16+
*
17+
* export default {
18+
* plugins: [Starter()],
19+
* }
20+
* ```
21+
*/
22+
const rollup = VueJsx.rollup as typeof VueJsx.rollup
23+
export default rollup
24+
export { rollup as 'module.exports' }

src/rspack.ts

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* This entry file is for Rspack plugin.
3+
*
4+
* @module
5+
*/
6+
7+
import VueJsx from './index'
8+
9+
/**
10+
* Rspack plugin
11+
*
12+
* @example
13+
* ```js
14+
* // rspack.config.js
15+
* import Starter from 'unplugin-vue-jsx/rspack'
16+
*
17+
* default export {
18+
* plugins: [Starter()],
19+
* }
20+
* ```
21+
*/
22+
const rspack = VueJsx.rspack as typeof VueJsx.rspack
23+
export default rspack
24+
export { rspack as 'module.exports' }

src/vite.ts

+23-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
1-
import unplugin from '.'
1+
/**
2+
* This entry file is for Vite plugin.
3+
*
4+
* @module
5+
*/
26

3-
export default unplugin.vite
7+
import VueJsx from './index'
8+
9+
/**
10+
* Vite plugin
11+
*
12+
* @example
13+
* ```ts
14+
* // vite.config.ts
15+
* import Starter from 'unplugin-vue-jsx/vite'
16+
*
17+
* export default defineConfig({
18+
* plugins: [Starter()],
19+
* })
20+
* ```
21+
*/
22+
const vite = VueJsx.vite as typeof VueJsx.vite
23+
export default vite
24+
export { vite as 'module.exports' }

src/webpack.ts

+23-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
1-
import unplugin from '.'
1+
/**
2+
* This entry file is for webpack plugin.
3+
*
4+
* @module
5+
*/
26

3-
export default unplugin.webpack
7+
import VueJsx from './index'
8+
9+
/**
10+
* Webpack plugin
11+
*
12+
* @example
13+
* ```js
14+
* // webpack.config.js
15+
* import Starter from 'unplugin-vue-jsx/webpack'
16+
*
17+
* default export {
18+
* plugins: [Starter()],
19+
* }
20+
* ```
21+
*/
22+
const webpack = VueJsx.webpack as typeof VueJsx.webpack
23+
export default webpack
24+
export { webpack as 'module.exports' }

tsconfig.json

+5-2
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@
99
"types": ["node"],
1010
"strict": true,
1111
"noUnusedLocals": true,
12-
"noEmit": true,
12+
"declaration": true,
13+
"isolatedDeclarations": true,
1314
"esModuleInterop": true,
1415
"isolatedModules": true,
16+
"verbatimModuleSyntax": true,
1517
"skipLibCheck": true
1618
},
17-
"include": ["src", "tests"]
19+
"include": ["src", "tests"],
20+
"exclude": ["tests/fixtures"]
1821
}

0 commit comments

Comments
 (0)