Skip to content

Commit 189fef4

Browse files
authored
refactor: enforce consistent usage of type imports (#2734)
1 parent 94b2eee commit 189fef4

40 files changed

+129
-116
lines changed

eslint.config.mjs

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,26 @@
1+
import { defineConfig, globalIgnores } from 'eslint/config'
12
import eslint from '@eslint/js'
23
import tseslint from 'typescript-eslint'
34
import prettierPluginRecommended from 'eslint-plugin-prettier/recommended'
45

5-
export default [
6+
export default defineConfig(
7+
globalIgnores(['docs/.vitepress', 'coverage', 'dist']),
68
{
7-
ignores: ['docs/.vitepress', 'coverage', 'dist']
8-
},
9-
...tseslint.config({
109
extends: [
1110
eslint.configs.recommended,
1211
...tseslint.configs.recommended,
1312
prettierPluginRecommended
1413
],
1514
rules: {
1615
'prettier/prettier': ['error'],
17-
'no-restricted-imports': [
18-
'error',
19-
{
20-
patterns: ['src/*']
21-
}
22-
],
16+
'no-restricted-imports': ['error', { patterns: ['src/*'] }],
17+
18+
'@typescript-eslint/consistent-type-imports': 'error',
2319

2420
// Currently, disabled to avoid a lot of changes during migration
2521
'@typescript-eslint/no-explicit-any': 'off',
2622
'@typescript-eslint/no-unused-vars': 'off',
2723
'@typescript-eslint/ban-ts-comment': 'off'
2824
}
29-
})
30-
]
25+
}
26+
)

src/baseWrapper.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,37 @@
1-
import { VNode } from 'vue'
1+
import type { VNode } from 'vue'
22
import { textContent } from './utils'
33
import type { TriggerOptions } from './createDomEvent'
4-
import {
4+
import type {
55
ComponentInternalInstance,
66
ComponentOptions,
77
ComponentPublicInstance,
88
ComputedOptions,
99
CreateComponentPublicInstance,
1010
FunctionalComponent,
11-
MethodOptions,
12-
nextTick
11+
MethodOptions
1312
} from 'vue'
13+
import { nextTick } from 'vue'
1414
import { createDOMEvent } from './createDomEvent'
15-
import { DomEventNameWithModifier } from './constants/dom-events'
15+
import type { DomEventNameWithModifier } from './constants/dom-events'
1616
import type { VueWrapper } from './vueWrapper'
17-
import {
17+
import type {
1818
DefinedComponent,
1919
FindAllComponentsSelector,
2020
FindComponentSelector,
2121
NameSelector,
2222
RefSelector,
2323
VueNode
2424
} from './types'
25-
import WrapperLike from './interfaces/wrapperLike'
25+
import type WrapperLike from './interfaces/wrapperLike'
2626
import { find, matches } from './utils/find'
2727
import { createWrapperError } from './errorWrapper'
2828
import { isElementVisible } from './utils/isElementVisible'
2929
import { isElement } from './utils/isElement'
3030
import type { DOMWrapper } from './domWrapper'
3131
import { createDOMWrapper, createVueWrapper } from './wrapperFactory'
3232
import { stringifyNode } from './utils/stringifyNode'
33-
import beautify, { HTMLBeautifyOptions } from 'js-beautify'
33+
import type { HTMLBeautifyOptions } from 'js-beautify'
34+
import beautify from 'js-beautify'
3435

3536
export default abstract class BaseWrapper<ElementType extends Node>
3637
implements WrapperLike

src/config.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { GlobalMountOptions, Stub } from './types'
2-
import { VueWrapper } from './vueWrapper'
3-
import { DOMWrapper } from './domWrapper'
4-
import { CustomCreateStub } from './vnodeTransformers/stubComponentsTransformer'
1+
import type { GlobalMountOptions, Stub } from './types'
2+
import type { VueWrapper } from './vueWrapper'
3+
import type { DOMWrapper } from './domWrapper'
4+
import type { CustomCreateStub } from './vnodeTransformers/stubComponentsTransformer'
55

66
export interface GlobalConfigOptions {
77
global: Required<Omit<GlobalMountOptions, 'stubs'>> & {

src/createDomEvent.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
import domEvents, {
1+
import type {
22
DomEvent,
33
DomEventName,
44
DomEventNameWithModifier,
5+
Modifier
6+
} from './constants/dom-events'
7+
import domEvents, {
58
KeyName,
6-
Modifier,
79
ignorableKeyModifiers,
810
systemKeyModifiers,
911
mouseKeyModifiers,

src/createInstance.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
1+
import type {
2+
AppConfig,
3+
ComponentOptions,
4+
ConcreteComponent,
5+
DefineComponent
6+
} from 'vue'
17
import {
28
h,
39
createApp,
410
defineComponent,
511
reactive,
612
shallowReactive,
713
ref,
8-
AppConfig,
9-
ComponentOptions,
10-
ConcreteComponent,
11-
DefineComponent,
1214
transformVNodeArgs,
1315
proxyRefs
1416
} from 'vue'
1517

16-
import { MountingOptions, Slot } from './types'
18+
import type { MountingOptions, Slot } from './types'
1719
import {
1820
getComponentsFromStubs,
1921
getDirectivesFromStubs,
@@ -32,10 +34,8 @@ import {
3234
unwrapLegacyVueExtendComponent
3335
} from './utils/vueCompatSupport'
3436
import { createVNodeTransformer } from './vnodeTransformers/util'
35-
import {
36-
createStubComponentsTransformer,
37-
CreateStubComponentsTransformerConfig
38-
} from './vnodeTransformers/stubComponentsTransformer'
37+
import type { CreateStubComponentsTransformerConfig } from './vnodeTransformers/stubComponentsTransformer'
38+
import { createStubComponentsTransformer } from './vnodeTransformers/stubComponentsTransformer'
3939
import { createStubDirectivesTransformer } from './vnodeTransformers/stubDirectivesTransformer'
4040
import { isDeepRef } from './utils/isDeepRef'
4141

src/domWrapper.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import { VNode } from 'vue'
1+
import type { VNode } from 'vue'
22
import { config } from './config'
33
import BaseWrapper from './baseWrapper'
4-
import WrapperLike from './interfaces/wrapperLike'
4+
import type WrapperLike from './interfaces/wrapperLike'
55
import {
66
createDOMWrapper,
77
registerFactory,
88
WrapperType
99
} from './wrapperFactory'
10-
import { RefSelector } from './types'
10+
import type { RefSelector } from './types'
1111
import { isRefSelector } from './utils'
1212
import { createWrapperError } from './errorWrapper'
1313

src/emit.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import {
2-
setDevtoolsHook,
1+
import type {
32
devtools,
43
ComponentPublicInstance,
54
ComponentInternalInstance
65
} from 'vue'
6+
import { setDevtoolsHook } from 'vue'
77
import { getGlobalThis } from './utils'
88

99
type Events<T = unknown> = Record<number, Record<string, T[]>>

src/index.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ import { VueWrapper } from './vueWrapper'
33
import BaseWrapper from './baseWrapper'
44
import { mount, shallowMount } from './mount'
55
import { renderToString } from './renderToString'
6-
import { MountingOptions, Stubs } from './types'
6+
import type { MountingOptions, Stubs } from './types'
77
import { RouterLinkStub } from './components/RouterLinkStub'
88
import { createWrapperError } from './errorWrapper'
99
import { config } from './config'
1010
import { flushPromises } from './utils/flushPromises'
1111
import { enableAutoUnmount, disableAutoUnmount } from './utils/autoUnmount'
12+
import type { ComponentMountingOptions } from './mount'
1213

1314
export {
1415
mount,
@@ -22,9 +23,7 @@ export {
2223
BaseWrapper,
2324
config,
2425
flushPromises,
25-
MountingOptions,
26-
Stubs,
2726
createWrapperError
2827
}
2928

30-
export type { ComponentMountingOptions } from './mount'
29+
export type { MountingOptions, Stubs, ComponentMountingOptions }

src/interfaces/wrapperLike.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import { DomEventNameWithModifier } from '../constants/dom-events'
2-
import { TriggerOptions } from '../createDomEvent'
3-
import {
1+
import type { DomEventNameWithModifier } from '../constants/dom-events'
2+
import type { TriggerOptions } from '../createDomEvent'
3+
import type {
44
DefinedComponent,
55
FindAllComponentsSelector,
66
FindComponentSelector,
77
NameSelector,
88
RefSelector
99
} from '../types'
10-
import { VueWrapper } from '../vueWrapper'
11-
import { ComponentPublicInstance, FunctionalComponent } from 'vue'
10+
import type { VueWrapper } from '../vueWrapper'
11+
import type { ComponentPublicInstance, FunctionalComponent } from 'vue'
1212
import type { DOMWrapper } from '../domWrapper'
1313

1414
export default interface WrapperLike {

src/mount.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import { ComponentPublicInstance, DefineComponent, VNode } from 'vue'
1+
import type { ComponentPublicInstance, DefineComponent, VNode } from 'vue'
22
import type {
33
ComponentExposed,
44
ComponentProps,
55
ComponentSlots
66
} from 'vue-component-type-helpers'
77
import { createInstance } from './createInstance'
8-
import { MountingOptions } from './types'
8+
import type { MountingOptions } from './types'
99
import { trackInstance } from './utils/autoUnmount'
10-
import { VueWrapper } from './vueWrapper'
10+
import type { VueWrapper } from './vueWrapper'
1111
import { createVueWrapper } from './wrapperFactory'
1212

1313
type ShimSlotReturnType<T> = T extends (...args: infer P) => any

0 commit comments

Comments
 (0)