diff --git a/examples/vue/components/GenericProps.vue b/examples/vue/components/GenericProps.vue
new file mode 100644
index 0000000..ed56ffd
--- /dev/null
+++ b/examples/vue/components/GenericProps.vue
@@ -0,0 +1,23 @@
+
+
+
+
+ {{ item.label }}
+
+
+
diff --git a/examples/vue/src/index.ts b/examples/vue/src/index.ts
index ec14484..3264ed9 100644
--- a/examples/vue/src/index.ts
+++ b/examples/vue/src/index.ts
@@ -12,6 +12,7 @@ import OutsideProps from '@/components/outside-props'
import NoDirectExport from '@/components/NoDirectExport.vue'
import OutsideTsProps from '@/components/outside-ts-props'
+import GenericProps from '@/components/GenericProps.vue'
import JsSetup from '../components/JsSetup.vue'
import CssVar from '../components/CssVar.vue'
@@ -45,7 +46,8 @@ export {
NoDirectExport,
JsSetup,
CssVar,
- OutsideTsProps
+ OutsideTsProps,
+ GenericProps
}
export default DefaultImport
diff --git a/src/program.ts b/src/program.ts
index 6e8d181..cc31419 100644
--- a/src/program.ts
+++ b/src/program.ts
@@ -14,7 +14,7 @@ const hasVue = !!tryGetPackageInfo('vue')
// If there has no Vue dependency, we think it's a normal TypeScript project.
// So we use the original createProgram of TypeScript.
-const _createProgram = !hasVue
+export const createProgram = !hasVue
? ts.createProgram
: proxyCreateProgram(ts, ts.createProgram, (ts, options) => {
const { configFilePath } = options.options
@@ -31,49 +31,3 @@ const _createProgram = !hasVue
)
return [vueLanguagePlugin]
})
-
-export const createProgram = !hasVue
- ? ts.createProgram
- : (options: ts.CreateProgramOptions) => {
- const program = _createProgram(options)
-
- const emit = program.emit
- program.emit = (
- targetSourceFile,
- writeFile,
- cancellationToken,
- emitOnlyDtsFiles,
- customTransformers
- ) => {
- if (writeFile) {
- return emit(
- targetSourceFile,
- (fileName, data, writeByteOrderMark, onError, sourceFiles) => {
- if (fileName.endsWith('.d.ts')) {
- // data = removeVolarGlobalTypes(data)
- }
- return writeFile(fileName, data, writeByteOrderMark, onError, sourceFiles)
- },
- cancellationToken,
- emitOnlyDtsFiles,
- customTransformers
- )
- }
-
- return emit(
- targetSourceFile,
- writeFile,
- cancellationToken,
- emitOnlyDtsFiles,
- customTransformers
- )
- }
-
- return program
- }
-
-// const removeVolarGlobalTypesRegexp = /^[^\n]*__VLS_globalTypesStart[\w\W]*__VLS_globalTypesEnd[^\n]*\n?$/mg
-
-// export function removeVolarGlobalTypes(dts: string) {
-// return dts.replace(removeVolarGlobalTypesRegexp, '')
-// }
diff --git a/src/utils.ts b/src/utils.ts
index cbfcd9d..85988cc 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -8,6 +8,7 @@ import {
sep
} from 'node:path'
import { existsSync, lstatSync, readdirSync, rmdirSync } from 'node:fs'
+import { createRequire } from 'node:module'
import ts from 'typescript'
import { getPackageInfoSync, resolveModule } from 'local-pkg'
@@ -438,6 +439,16 @@ export function parseTsAliases(basePath: string, paths: ts.MapLike) {
}
export function tryGetPackageInfo(name: string) {
+ if (process.versions.pnp) {
+ const targetRequire = createRequire(import.meta.url)
+
+ try {
+ return getPackageInfoSync(
+ targetRequire.resolve(`${name}/package.json`, { paths: [process.cwd()] })
+ )
+ } catch (e) {}
+ }
+
try {
return (getPackageInfoSync(name) ??
getPackageInfoSync(name, { paths: [resolveModule(name) || process.cwd()] })) as {