diff --git a/.eslintrc.js b/.eslintrc.js
index 8485d76f53e..cdbb1dffd91 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -69,6 +69,14 @@ module.exports = {
'no-restricted-globals': ['error', ...NodeGlobals],
'no-restricted-syntax': 'off'
}
+ },
+ // Node scripts
+ {
+ files: ['scripts/**', './*.js', 'packages/**/index.js', 'packages/size-check/**'],
+ rules: {
+ 'no-restricted-globals': 'off',
+ 'no-restricted-syntax': 'off'
+ }
}
]
}
diff --git a/packages/compiler-core/src/transforms/vOn.ts b/packages/compiler-core/src/transforms/vOn.ts
index a9dfe77eff7..ed39ecee12f 100644
--- a/packages/compiler-core/src/transforms/vOn.ts
+++ b/packages/compiler-core/src/transforms/vOn.ts
@@ -54,9 +54,9 @@ export const transformOn: DirectiveTransform = (
? // for component and vnode lifecycle event listeners, auto convert
// it to camelCase. See issue #2249
toHandlerKey(camelize(rawName))
- // preserve case for plain element listeners that have uppercase
+ : // preserve case for plain element listeners that have uppercase
// letters, as these may be custom elements' custom events
- : `on:${rawName}`
+ `on:${rawName}`
eventName = createSimpleExpression(eventString, true, arg.loc)
} else {
// #2388
diff --git a/packages/compiler-sfc/__tests__/rewriteDefault.spec.ts b/packages/compiler-sfc/__tests__/rewriteDefault.spec.ts
index 9fb4c64bbb3..40561da17db 100644
--- a/packages/compiler-sfc/__tests__/rewriteDefault.spec.ts
+++ b/packages/compiler-sfc/__tests__/rewriteDefault.spec.ts
@@ -206,7 +206,10 @@ describe('compiler sfc: rewriteDefault', () => {
test('@Component\nexport default class w/ comments', async () => {
expect(
- rewriteDefault(`// export default\n@Component\nexport default class Foo {}`, 'script')
+ rewriteDefault(
+ `// export default\n@Component\nexport default class Foo {}`,
+ 'script'
+ )
).toMatchInlineSnapshot(`
"// export default
@Component
@@ -231,7 +234,8 @@ describe('compiler sfc: rewriteDefault', () => {
test('@Component\nexport default class w/ comments 3', async () => {
expect(
rewriteDefault(
- `/*\n@Component\nexport default class Foo {}*/\n` + `export default class Bar {}`,
+ `/*\n@Component\nexport default class Foo {}*/\n` +
+ `export default class Bar {}`,
'script'
)
).toMatchInlineSnapshot(`
diff --git a/packages/compiler-ssr/src/ssrCodegenTransform.ts b/packages/compiler-ssr/src/ssrCodegenTransform.ts
index 4d142162073..d7d1645a0e7 100644
--- a/packages/compiler-ssr/src/ssrCodegenTransform.ts
+++ b/packages/compiler-ssr/src/ssrCodegenTransform.ts
@@ -49,8 +49,7 @@ export function ssrCodegenTransform(ast: RootNode, options: CompilerOptions) {
createCompoundExpression([`const _cssVars = { style: `, varsExp, `}`])
)
Array.from(cssContext.helpers.keys()).forEach(helper => {
- if (!ast.helpers.includes(helper))
- ast.helpers.push(helper)
+ if (!ast.helpers.includes(helper)) ast.helpers.push(helper)
})
}
diff --git a/packages/compiler-ssr/src/transforms/ssrTransformTransitionGroup.ts b/packages/compiler-ssr/src/transforms/ssrTransformTransitionGroup.ts
index dedf1f64075..00b0d9dd45a 100644
--- a/packages/compiler-ssr/src/transforms/ssrTransformTransitionGroup.ts
+++ b/packages/compiler-ssr/src/transforms/ssrTransformTransitionGroup.ts
@@ -33,8 +33,8 @@ export function ssrTransformTransitionGroup(
node,
context,
otherProps,
- true, /* isComponent */
- false, /* isDynamicComponent */
+ true /* isComponent */,
+ false /* isDynamicComponent */,
true /* ssr (skip event listeners) */
)
let propsExp = null
diff --git a/packages/runtime-core/__tests__/apiOptions.spec.ts b/packages/runtime-core/__tests__/apiOptions.spec.ts
index da5fe346c32..96601b7870f 100644
--- a/packages/runtime-core/__tests__/apiOptions.spec.ts
+++ b/packages/runtime-core/__tests__/apiOptions.spec.ts
@@ -1048,7 +1048,6 @@ describe('api: options', () => {
expect(root.innerHTML).toBe(`
Foo
`)
})
-
test('options defined in component have higher priority', async () => {
const Mixin = {
msg1: 'base'
diff --git a/packages/runtime-core/src/components/BaseTransition.ts b/packages/runtime-core/src/components/BaseTransition.ts
index a671bef6560..5e5e216d34a 100644
--- a/packages/runtime-core/src/components/BaseTransition.ts
+++ b/packages/runtime-core/src/components/BaseTransition.ts
@@ -274,7 +274,7 @@ if (__COMPAT__) {
// export the public type for h/tsx inference
// also to avoid inline import() in generated d.ts files
-export const BaseTransition = BaseTransitionImpl as any as {
+export const BaseTransition = BaseTransitionImpl as unknown as {
new (): {
$props: BaseTransitionProps
}
diff --git a/packages/runtime-core/src/components/Suspense.ts b/packages/runtime-core/src/components/Suspense.ts
index 8408cab388d..baf57088626 100644
--- a/packages/runtime-core/src/components/Suspense.ts
+++ b/packages/runtime-core/src/components/Suspense.ts
@@ -89,7 +89,9 @@ export const SuspenseImpl = {
}
// Force-casted public typing for h and TSX props inference
-export const Suspense = (__FEATURE_SUSPENSE__ ? SuspenseImpl : null) as any as {
+export const Suspense = (__FEATURE_SUSPENSE__
+ ? SuspenseImpl
+ : null) as unknown as {
__isSuspense: true
new (): { $props: VNodeProps & SuspenseProps }
}
diff --git a/packages/runtime-core/src/components/Teleport.ts b/packages/runtime-core/src/components/Teleport.ts
index 06b69aff4ec..e519aa2bb3a 100644
--- a/packages/runtime-core/src/components/Teleport.ts
+++ b/packages/runtime-core/src/components/Teleport.ts
@@ -52,13 +52,13 @@ const resolveTarget = (
`ideally should be outside of the entire Vue component tree.`
)
}
- return target as any
+ return target as T
}
} else {
if (__DEV__ && !targetSelector && !isTeleportDisabled(props)) {
warn(`Invalid Teleport target: ${targetSelector}`)
}
- return targetSelector as any
+ return targetSelector as T
}
}
@@ -388,7 +388,7 @@ function hydrateTeleport(
}
// Force-casted public typing for h and TSX props inference
-export const Teleport = TeleportImpl as any as {
+export const Teleport = TeleportImpl as unknown as {
__isTeleport: true
new (): { $props: VNodeProps & TeleportProps }
}
diff --git a/packages/runtime-core/src/devtools.ts b/packages/runtime-core/src/devtools.ts
index 83d7483df39..f05128d47aa 100644
--- a/packages/runtime-core/src/devtools.ts
+++ b/packages/runtime-core/src/devtools.ts
@@ -28,7 +28,11 @@ interface DevtoolsHook {
once: (event: string, handler: Function) => void
off: (event: string, handler: Function) => void
appRecords: AppRecord[]
- _buffer: any[][]
+ /**
+ * Added at https://github.com/vuejs/devtools/commit/f2ad51eea789006ab66942e5a27c0f0986a257f9
+ * Returns wether the arg was buffered or not
+ */
+ cleanupBuffer?: (matchArg: unknown) => boolean
}
export let devtools: DevtoolsHook
@@ -109,18 +113,14 @@ const _devtoolsComponentRemoved = /*#__PURE__*/ createDevtoolsComponentHook(
export const devtoolsComponentRemoved = (
component: ComponentInternalInstance
) => {
- if (devtools && devtools._buffer.length) {
- let wasBuffered = false
- devtools._buffer = devtools._buffer.filter(item => {
- if (item.some(arg => arg === component)) {
- wasBuffered = true
- return false
- }
- return true
- })
- if (wasBuffered) return
+ if (
+ devtools &&
+ typeof devtools.cleanupBuffer === 'function' &&
+ // remove the component if it wasn't buffered
+ !devtools.cleanupBuffer(component)
+ ) {
+ _devtoolsComponentRemoved(component)
}
- _devtoolsComponentRemoved(component)
}
function createDevtoolsComponentHook(hook: DevtoolsHooks) {
diff --git a/packages/runtime-core/src/h.ts b/packages/runtime-core/src/h.ts
index f22e4bb30d0..44f91340827 100644
--- a/packages/runtime-core/src/h.ts
+++ b/packages/runtime-core/src/h.ts
@@ -108,7 +108,7 @@ export function h(
export function h(
type: typeof Teleport,
props: RawProps & TeleportProps,
- children: RawChildren
+ children: RawChildren | RawSlots
): VNode
// suspense
diff --git a/packages/runtime-core/src/helpers/withMemo.ts b/packages/runtime-core/src/helpers/withMemo.ts
index 002b9e27a88..76b0f055f39 100644
--- a/packages/runtime-core/src/helpers/withMemo.ts
+++ b/packages/runtime-core/src/helpers/withMemo.ts
@@ -23,7 +23,7 @@ export function isMemoSame(cached: VNode, memo: any[]) {
if (prev.length != memo.length) {
return false
}
-
+
for (let i = 0; i < prev.length; i++) {
if (hasChanged(prev[i], memo[i])) {
return false
diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts
index f3fee4c45e7..8e3020f9e37 100644
--- a/packages/shared/src/index.ts
+++ b/packages/shared/src/index.ts
@@ -52,7 +52,8 @@ export const isMap = (val: unknown): val is Map =>
export const isSet = (val: unknown): val is Set =>
toTypeString(val) === '[object Set]'
-export const isDate = (val: unknown): val is Date => toTypeString(val) === '[object Date]'
+export const isDate = (val: unknown): val is Date =>
+ toTypeString(val) === '[object Date]'
export const isFunction = (val: unknown): val is Function =>
typeof val === 'function'
export const isString = (val: unknown): val is string => typeof val === 'string'
@@ -99,7 +100,7 @@ const cacheStringFunction = string>(fn: T): T => {
return ((str: string) => {
const hit = cache[str]
return hit || (cache[str] = fn(str))
- }) as any
+ }) as T
}
const camelizeRE = /-(\w)/g
diff --git a/packages/template-explorer/src/index.ts b/packages/template-explorer/src/index.ts
index d676c717373..3cf9c6b52cf 100644
--- a/packages/template-explorer/src/index.ts
+++ b/packages/template-explorer/src/index.ts
@@ -275,5 +275,5 @@ function debounce any>(
fn(...args)
prevTimer = null
}, delay)
- }) as any
+ }) as T
}
diff --git a/test-dts/h.test-d.ts b/test-dts/h.test-d.ts
index c71b54a2aa8..5318f71fe94 100644
--- a/test-dts/h.test-d.ts
+++ b/test-dts/h.test-d.ts
@@ -47,6 +47,7 @@ describe('h inference w/ Fragment', () => {
describe('h inference w/ Teleport', () => {
h(Teleport, { to: '#foo' }, 'hello')
+ h(Teleport, { to: '#foo' }, { default() {} })
// @ts-expect-error
expectError(h(Teleport))
// @ts-expect-error