From 7f389facf48db97c01135bf482e51cc12486226e Mon Sep 17 00:00:00 2001 From: KazariEX <1364035137@qq.com> Date: Wed, 7 May 2025 10:43:00 +0800 Subject: [PATCH 1/2] feat: generate `GlobalDirectives` --- src/core/declaration.ts | 3 +++ test/__snapshots__/dts.test.ts.snap | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/core/declaration.ts b/src/core/declaration.ts index 4fd2c168..8e86e861 100644 --- a/src/core/declaration.ts +++ b/src/core/declaration.ts @@ -132,6 +132,9 @@ declare module 'vue' {` } if (Object.keys(declarations.directive).length > 0) { code += ` + export interface GlobalDirectives { + ${declarations.directive.join('\n ')} + } export interface ComponentCustomProperties { ${declarations.directive.join('\n ')} }` diff --git a/test/__snapshots__/dts.test.ts.snap b/test/__snapshots__/dts.test.ts.snap index 75752379..cfd7a1fc 100644 --- a/test/__snapshots__/dts.test.ts.snap +++ b/test/__snapshots__/dts.test.ts.snap @@ -29,6 +29,9 @@ export {} /* prettier-ignore */ declare module 'vue' { + export interface GlobalDirectives { + vLoading: typeof import('test/directive/Loading')['default'] + } export interface ComponentCustomProperties { vLoading: typeof import('test/directive/Loading')['default'] } @@ -51,6 +54,9 @@ declare module 'vue' { RouterView: typeof import('vue-router')['RouterView'] TestComp: typeof import('test/component/TestComp')['default'] } + export interface GlobalDirectives { + vLoading: typeof import('test/directive/Loading')['default'] + } export interface ComponentCustomProperties { vLoading: typeof import('test/directive/Loading')['default'] } @@ -130,6 +136,11 @@ declare module 'vue' { SomeComp: typeof import('test/component/SomeComp')['default'] TestComp: typeof import('test/component/TestComp')['default'] } + export interface GlobalDirectives { + vDirective: typeof import('foo') + vLoading: typeof import('test/directive/Loading')['default'] + vSome: typeof import('test/directive/Some')['default'] + } export interface ComponentCustomProperties { vDirective: typeof import('foo') vLoading: typeof import('test/directive/Loading')['default'] @@ -154,6 +165,9 @@ declare module 'vue' { RouterView: typeof import('vue-router')['RouterView'] TestComp: typeof import('test/component/TestComp')['default'] } + export interface GlobalDirectives { + vLoading: typeof import('test/directive/Loading')['default'] + } export interface ComponentCustomProperties { vLoading: typeof import('test/directive/Loading')['default'] } From c1f8a385fe7e94af0ccd09a7963d77c77056ec25 Mon Sep 17 00:00:00 2001 From: KazariEX <1364035137@qq.com> Date: Wed, 7 May 2025 11:56:34 +0800 Subject: [PATCH 2/2] refactor: remove `ComponentCustomProperties` --- src/core/declaration.ts | 5 +---- test/__snapshots__/dts.test.ts.snap | 14 -------------- test/dts.test.ts | 4 ++-- 3 files changed, 3 insertions(+), 20 deletions(-) diff --git a/src/core/declaration.ts b/src/core/declaration.ts index 8e86e861..7259be71 100644 --- a/src/core/declaration.ts +++ b/src/core/declaration.ts @@ -31,7 +31,7 @@ export function parseDeclaration(code: string): DeclarationImports | undefined { if (componentDeclaration) imports.component = extractImports(componentDeclaration) - const directiveDeclaration = /export\s+interface\s+ComponentCustomProperties\s*\{.*?\}/s.exec(code)?.[0] + const directiveDeclaration = /export\s+interface\s+GlobalDirectives\s*\{.*?\}/s.exec(code)?.[0] if (directiveDeclaration) imports.directive = extractImports(directiveDeclaration) @@ -134,9 +134,6 @@ declare module 'vue' {` code += ` export interface GlobalDirectives { ${declarations.directive.join('\n ')} - } - export interface ComponentCustomProperties { - ${declarations.directive.join('\n ')} }` } code += '\n}\n' diff --git a/test/__snapshots__/dts.test.ts.snap b/test/__snapshots__/dts.test.ts.snap index cfd7a1fc..c1d09dda 100644 --- a/test/__snapshots__/dts.test.ts.snap +++ b/test/__snapshots__/dts.test.ts.snap @@ -32,9 +32,6 @@ declare module 'vue' { export interface GlobalDirectives { vLoading: typeof import('test/directive/Loading')['default'] } - export interface ComponentCustomProperties { - vLoading: typeof import('test/directive/Loading')['default'] - } } " `; @@ -57,9 +54,6 @@ declare module 'vue' { export interface GlobalDirectives { vLoading: typeof import('test/directive/Loading')['default'] } - export interface ComponentCustomProperties { - vLoading: typeof import('test/directive/Loading')['default'] - } } " `; @@ -141,11 +135,6 @@ declare module 'vue' { vLoading: typeof import('test/directive/Loading')['default'] vSome: typeof import('test/directive/Some')['default'] } - export interface ComponentCustomProperties { - vDirective: typeof import('foo') - vLoading: typeof import('test/directive/Loading')['default'] - vSome: typeof import('test/directive/Some')['default'] - } } " `; @@ -168,9 +157,6 @@ declare module 'vue' { export interface GlobalDirectives { vLoading: typeof import('test/directive/Loading')['default'] } - export interface ComponentCustomProperties { - vLoading: typeof import('test/directive/Loading')['default'] - } } " `; diff --git a/test/dts.test.ts b/test/dts.test.ts index b26ccba4..9ddf0f5d 100644 --- a/test/dts.test.ts +++ b/test/dts.test.ts @@ -57,7 +57,7 @@ declare module 'vue' { SomeComp: typeof import('test/component/SomeComp')['default'] TestComp: typeof import('test/component/OldComp')['default'] } - export interface ComponentCustomProperties{ + export interface GlobalDirectives{ // with comment: b // a: vSome: typeof import('test/directive/Some')['default'];vDirective:typeof import('foo') @@ -179,7 +179,7 @@ declare module 'vue' { IMdiLightAlarm: typeof import('~icons/mdi-light/alarm')['default'] } - export interface ComponentCustomProperties { + export interface GlobalDirectives { vDirective: typeof import('foo') vLoading: typeof import('test/directive/Loading')['default'] vSome: typeof import('test/directive/Some')['default']