Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 8 additions & 12 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -1,30 +1,26 @@
import { defineConfig, globalIgnores } from 'eslint/config'
import eslint from '@eslint/js'
import tseslint from 'typescript-eslint'
import prettierPluginRecommended from 'eslint-plugin-prettier/recommended'

export default [
export default defineConfig(
globalIgnores(['docs/.vitepress', 'coverage', 'dist']),
{
ignores: ['docs/.vitepress', 'coverage', 'dist']
},
...tseslint.config({
extends: [
eslint.configs.recommended,
...tseslint.configs.recommended,
prettierPluginRecommended
],
rules: {
'prettier/prettier': ['error'],
'no-restricted-imports': [
'error',
{
patterns: ['src/*']
}
],
'no-restricted-imports': ['error', { patterns: ['src/*'] }],

'@typescript-eslint/consistent-type-imports': 'error',

// Currently, disabled to avoid a lot of changes during migration
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/ban-ts-comment': 'off'
}
})
]
}
)
17 changes: 9 additions & 8 deletions src/baseWrapper.ts
Original file line number Diff line number Diff line change
@@ -1,36 +1,37 @@
import { VNode } from 'vue'
import type { VNode } from 'vue'
import { textContent } from './utils'
import type { TriggerOptions } from './createDomEvent'
import {
import type {
ComponentInternalInstance,
ComponentOptions,
ComponentPublicInstance,
ComputedOptions,
CreateComponentPublicInstance,
FunctionalComponent,
MethodOptions,
nextTick
MethodOptions
} from 'vue'
import { nextTick } from 'vue'
import { createDOMEvent } from './createDomEvent'
import { DomEventNameWithModifier } from './constants/dom-events'
import type { DomEventNameWithModifier } from './constants/dom-events'
import type { VueWrapper } from './vueWrapper'
import {
import type {
DefinedComponent,
FindAllComponentsSelector,
FindComponentSelector,
NameSelector,
RefSelector,
VueNode
} from './types'
import WrapperLike from './interfaces/wrapperLike'
import type WrapperLike from './interfaces/wrapperLike'
import { find, matches } from './utils/find'
import { createWrapperError } from './errorWrapper'
import { isElementVisible } from './utils/isElementVisible'
import { isElement } from './utils/isElement'
import type { DOMWrapper } from './domWrapper'
import { createDOMWrapper, createVueWrapper } from './wrapperFactory'
import { stringifyNode } from './utils/stringifyNode'
import beautify, { HTMLBeautifyOptions } from 'js-beautify'
import type { HTMLBeautifyOptions } from 'js-beautify'
import beautify from 'js-beautify'

export default abstract class BaseWrapper<ElementType extends Node>
implements WrapperLike
Expand Down
8 changes: 4 additions & 4 deletions src/config.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { GlobalMountOptions, Stub } from './types'
import { VueWrapper } from './vueWrapper'
import { DOMWrapper } from './domWrapper'
import { CustomCreateStub } from './vnodeTransformers/stubComponentsTransformer'
import type { GlobalMountOptions, Stub } from './types'
import type { VueWrapper } from './vueWrapper'
import type { DOMWrapper } from './domWrapper'
import type { CustomCreateStub } from './vnodeTransformers/stubComponentsTransformer'

export interface GlobalConfigOptions {
global: Required<Omit<GlobalMountOptions, 'stubs'>> & {
Expand Down
6 changes: 4 additions & 2 deletions src/createDomEvent.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import domEvents, {
import type {
DomEvent,
DomEventName,
DomEventNameWithModifier,
Modifier
} from './constants/dom-events'
import domEvents, {
KeyName,
Modifier,
ignorableKeyModifiers,
systemKeyModifiers,
mouseKeyModifiers,
Expand Down
18 changes: 9 additions & 9 deletions src/createInstance.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
import type {
AppConfig,
ComponentOptions,
ConcreteComponent,
DefineComponent
} from 'vue'
import {
h,
createApp,
defineComponent,
reactive,
shallowReactive,
ref,
AppConfig,
ComponentOptions,
ConcreteComponent,
DefineComponent,
transformVNodeArgs,
proxyRefs
} from 'vue'

import { MountingOptions, Slot } from './types'
import type { MountingOptions, Slot } from './types'
import {
getComponentsFromStubs,
getDirectivesFromStubs,
Expand All @@ -32,10 +34,8 @@ import {
unwrapLegacyVueExtendComponent
} from './utils/vueCompatSupport'
import { createVNodeTransformer } from './vnodeTransformers/util'
import {
createStubComponentsTransformer,
CreateStubComponentsTransformerConfig
} from './vnodeTransformers/stubComponentsTransformer'
import type { CreateStubComponentsTransformerConfig } from './vnodeTransformers/stubComponentsTransformer'
import { createStubComponentsTransformer } from './vnodeTransformers/stubComponentsTransformer'
import { createStubDirectivesTransformer } from './vnodeTransformers/stubDirectivesTransformer'
import { isDeepRef } from './utils/isDeepRef'

Expand Down
6 changes: 3 additions & 3 deletions src/domWrapper.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { VNode } from 'vue'
import type { VNode } from 'vue'
import { config } from './config'
import BaseWrapper from './baseWrapper'
import WrapperLike from './interfaces/wrapperLike'
import type WrapperLike from './interfaces/wrapperLike'
import {
createDOMWrapper,
registerFactory,
WrapperType
} from './wrapperFactory'
import { RefSelector } from './types'
import type { RefSelector } from './types'
import { isRefSelector } from './utils'
import { createWrapperError } from './errorWrapper'

Expand Down
4 changes: 2 additions & 2 deletions src/emit.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import {
setDevtoolsHook,
import type {
devtools,
ComponentPublicInstance,
ComponentInternalInstance
} from 'vue'
import { setDevtoolsHook } from 'vue'
import { getGlobalThis } from './utils'

type Events<T = unknown> = Record<number, Record<string, T[]>>
Expand Down
7 changes: 3 additions & 4 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@ import { VueWrapper } from './vueWrapper'
import BaseWrapper from './baseWrapper'
import { mount, shallowMount } from './mount'
import { renderToString } from './renderToString'
import { MountingOptions, Stubs } from './types'
import type { MountingOptions, Stubs } from './types'
import { RouterLinkStub } from './components/RouterLinkStub'
import { createWrapperError } from './errorWrapper'
import { config } from './config'
import { flushPromises } from './utils/flushPromises'
import { enableAutoUnmount, disableAutoUnmount } from './utils/autoUnmount'
import type { ComponentMountingOptions } from './mount'

export {
mount,
Expand All @@ -22,9 +23,7 @@ export {
BaseWrapper,
config,
flushPromises,
MountingOptions,
Stubs,
createWrapperError
}

export type { ComponentMountingOptions } from './mount'
export type { MountingOptions, Stubs, ComponentMountingOptions }
10 changes: 5 additions & 5 deletions src/interfaces/wrapperLike.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { DomEventNameWithModifier } from '../constants/dom-events'
import { TriggerOptions } from '../createDomEvent'
import {
import type { DomEventNameWithModifier } from '../constants/dom-events'
import type { TriggerOptions } from '../createDomEvent'
import type {
DefinedComponent,
FindAllComponentsSelector,
FindComponentSelector,
NameSelector,
RefSelector
} from '../types'
import { VueWrapper } from '../vueWrapper'
import { ComponentPublicInstance, FunctionalComponent } from 'vue'
import type { VueWrapper } from '../vueWrapper'
import type { ComponentPublicInstance, FunctionalComponent } from 'vue'
import type { DOMWrapper } from '../domWrapper'

export default interface WrapperLike {
Expand Down
6 changes: 3 additions & 3 deletions src/mount.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { ComponentPublicInstance, DefineComponent, VNode } from 'vue'
import type { ComponentPublicInstance, DefineComponent, VNode } from 'vue'
import type {
ComponentExposed,
ComponentProps,
ComponentSlots
} from 'vue-component-type-helpers'
import { createInstance } from './createInstance'
import { MountingOptions } from './types'
import type { MountingOptions } from './types'
import { trackInstance } from './utils/autoUnmount'
import { VueWrapper } from './vueWrapper'
import type { VueWrapper } from './vueWrapper'
import { createVueWrapper } from './wrapperFactory'

type ShimSlotReturnType<T> = T extends (...args: infer P) => any
Expand Down
6 changes: 3 additions & 3 deletions src/renderToString.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { renderToString as baseRenderToString } from '@vue/server-renderer'
import { DefineComponent } from 'vue'
import type { DefineComponent } from 'vue'
import { createInstance } from './createInstance'
import { ComponentMountingOptions } from './mount'
import { RenderMountingOptions } from './types'
import type { ComponentMountingOptions } from './mount'
import type { RenderMountingOptions } from './types'

export function renderToString<
T,
Expand Down
2 changes: 1 addition & 1 deletion src/stubs.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Component } from 'vue'
import type { Component } from 'vue'

// Stubbing occurs when in vnode transformer we're swapping
// component vnode type due to stubbing either component
Expand Down
2 changes: 1 addition & 1 deletion src/types.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-empty-object-type */
import {
import type {
Component,
ComponentOptions,
Directive,
Expand Down
4 changes: 2 additions & 2 deletions src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { GlobalMountOptions, RefSelector, Stub, Stubs } from './types'
import {
import type { GlobalMountOptions, RefSelector, Stub, Stubs } from './types'
import type {
Component,
ComponentOptions,
ComponentPublicInstance,
Expand Down
2 changes: 1 addition & 1 deletion src/utils/autoUnmount.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ComponentPublicInstance } from 'vue'
import type { ComponentPublicInstance } from 'vue'
import type { VueWrapper } from '../vueWrapper'

let isEnabled = false
Expand Down
2 changes: 1 addition & 1 deletion src/utils/componentName.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ComponentInternalInstance, VNodeTypes } from 'vue'
import type { ComponentInternalInstance, VNodeTypes } from 'vue'
import { isFunctionalComponent, isObjectComponent } from '../utils'
import {
isLegacyExtendedComponent,
Expand Down
4 changes: 2 additions & 2 deletions src/utils/find.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {
import type {
ComponentInternalInstance,
VNode,
VNodeChild,
Expand All @@ -7,7 +7,7 @@ import {
VNodeTypes
} from 'vue'
import { getOriginalComponentFromStub } from '../stubs'
import { FindAllComponentsSelector } from '../types'
import type { FindAllComponentsSelector } from '../types'
import { isComponent } from '../utils'
import { matchName } from './matchName'
import { unwrapLegacyVueExtendComponent } from './vueCompatSupport'
Expand Down
2 changes: 1 addition & 1 deletion src/utils/getRootNodes.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { isNotNullOrUndefined } from '../utils'
import { VNode, VNodeArrayChildren } from 'vue'
import type { VNode, VNodeArrayChildren } from 'vue'
import { ShapeFlags } from './vueShared'

export function getRootNodes(vnode: VNode): Node[] {
Expand Down
22 changes: 10 additions & 12 deletions src/vnodeTransformers/stubComponentsTransformer.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,22 @@
import {
isKeepAlive,
isRootComponent,
isTeleport,
VTUVNodeTypeTransformer
} from './util'
import {
Transition,
TransitionGroup,
BaseTransition,
import type { VTUVNodeTypeTransformer } from './util'
import { isKeepAlive, isRootComponent, isTeleport } from './util'
import type {
Teleport,
KeepAlive,
h,
defineComponent,
VNodeTypes,
ConcreteComponent,
ComponentPropsOptions,
ComponentObjectPropsOptions,
Component,
ComponentOptions
} from 'vue'
import {
Transition,
TransitionGroup,
BaseTransition,
h,
defineComponent
} from 'vue'
import { hyphenate } from '../utils/vueShared'
import { matchName } from '../utils/matchName'
import { isComponent, isFunctionalComponent } from '../utils'
Expand Down
2 changes: 1 addition & 1 deletion src/vnodeTransformers/stubDirectivesTransformer.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Directive } from 'vue'
import type { Directive } from 'vue'
import { isObjectComponent } from '../utils'
import type { VTUVNodeTypeTransformer } from './util'

Expand Down
2 changes: 1 addition & 1 deletion src/vnodeTransformers/util.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { isComponent } from '../utils'
import { registerStub } from '../stubs'
import { Component, ConcreteComponent, transformVNodeArgs } from 'vue'
import type { Component, ConcreteComponent, transformVNodeArgs } from 'vue'

type VNodeArgsTransformerFn = NonNullable<
Parameters<typeof transformVNodeArgs>[0]
Expand Down
5 changes: 3 additions & 2 deletions src/vueWrapper.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { nextTick, App, ComponentPublicInstance, VNode, proxyRefs } from 'vue'
import type { App, ComponentPublicInstance, VNode } from 'vue'
import { nextTick, proxyRefs } from 'vue'

import { config } from './config'
import domEvents from './constants/dom-events'
import { VueElement, VueNode } from './types'
import type { VueElement, VueNode } from './types'
import { hasSetupState, mergeDeep } from './utils'
import { getRootNodes } from './utils/getRootNodes'
import { emitted, recordEvent, removeEventHistory } from './emit'
Expand Down
2 changes: 1 addition & 1 deletion src/wrapperFactory.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ComponentPublicInstance, App, VNode } from 'vue'
import type { ComponentPublicInstance, App, VNode } from 'vue'
import type { DOMWrapper as DOMWrapperType } from './domWrapper'
import type { VueWrapper as VueWrapperType } from './vueWrapper'

Expand Down
5 changes: 3 additions & 2 deletions test-dts/findComponent.d-test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { expectType } from './index'
import { defineComponent } from 'vue'
import { DOMWrapper, mount, VueWrapper } from '../src'
import WrapperLike from '../src/interfaces/wrapperLike'
import type { DOMWrapper, VueWrapper } from '../src'
import { mount } from '../src'
import type WrapperLike from '../src/interfaces/wrapperLike'

const FuncComponent = () => 'hello'

Expand Down
5 changes: 3 additions & 2 deletions test-dts/getComponent.d-test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { expectType } from './index'
import { defineComponent, ComponentPublicInstance } from 'vue'
import type { ComponentPublicInstance } from 'vue'
import { defineComponent } from 'vue'
import { mount } from '../src'
import WrapperLike from '../src/interfaces/wrapperLike'
import type WrapperLike from '../src/interfaces/wrapperLike'

const ComponentToFind = defineComponent({
props: {
Expand Down
Loading