diff --git a/eslint.config.js b/eslint.config.js index 3587a815067..334787fd988 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -45,6 +45,12 @@ export default tseslint.config( message: 'Our output target is ES2016, so async/await syntax should be avoided.', }, + { + selector: 'ChainExpression', + message: + 'Our output target is ES2016, and optional chaining results in ' + + 'verbose helpers and should be avoided.', + }, ], 'sort-imports': ['error', { ignoreDeclarationSort: true }], @@ -134,7 +140,7 @@ export default tseslint.config( { files: [ 'eslint.config.js', - 'rollup.config.js', + 'rollup*.config.js', 'scripts/**', './*.{js,ts}', 'packages/*/*.js', diff --git a/packages/compiler-core/src/babelUtils.ts b/packages/compiler-core/src/babelUtils.ts index d3812f84ce6..7482494e17a 100644 --- a/packages/compiler-core/src/babelUtils.ts +++ b/packages/compiler-core/src/babelUtils.ts @@ -53,6 +53,7 @@ export function walkIdentifiers( } } else if ( node.type === 'ObjectProperty' && + // eslint-disable-next-line no-restricted-syntax parent?.type === 'ObjectPattern' ) { // mark property in destructure pattern @@ -407,6 +408,7 @@ function isReferenced(node: Node, parent: Node, grandparent?: Node): boolean { // no: export { NODE as foo } from "foo"; case 'ExportSpecifier': // @ts-expect-error + // eslint-disable-next-line no-restricted-syntax if (grandparent?.source) { return false } diff --git a/packages/reactivity/src/effect.ts b/packages/reactivity/src/effect.ts index 29d29cc4241..1528f4b1d89 100644 --- a/packages/reactivity/src/effect.ts +++ b/packages/reactivity/src/effect.ts @@ -281,6 +281,7 @@ export function trackEffect( effect._depsLength++ } if (__DEV__) { + // eslint-disable-next-line no-restricted-syntax effect.onTrack?.(extend({ effect }, debuggerEventExtraInfo!)) } } @@ -309,6 +310,7 @@ export function triggerEffects( (tracking ??= dep.get(effect) === effect._trackId) ) { if (__DEV__) { + // eslint-disable-next-line no-restricted-syntax effect.onTrigger?.(extend({ effect }, debuggerEventExtraInfo)) } effect.trigger() diff --git a/packages/runtime-core/src/devtools.ts b/packages/runtime-core/src/devtools.ts index 5bff57a4165..2af81be8370 100644 --- a/packages/runtime-core/src/devtools.ts +++ b/packages/runtime-core/src/devtools.ts @@ -63,6 +63,7 @@ export function setDevtoolsHook(hook: DevtoolsHook, target: any) { // some envs mock window but not fully window.HTMLElement && // also exclude jsdom + // eslint-disable-next-line no-restricted-syntax !window.navigator?.userAgent?.includes('jsdom') ) { const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ = diff --git a/packages/runtime-core/src/hydration.ts b/packages/runtime-core/src/hydration.ts index 87e4c60a253..3be8837ce4b 100644 --- a/packages/runtime-core/src/hydration.ts +++ b/packages/runtime-core/src/hydration.ts @@ -757,11 +757,14 @@ function propHasMismatch( } } + // eslint-disable-next-line no-restricted-syntax const root = instance?.subTree if ( vnode === root || + // eslint-disable-next-line no-restricted-syntax (root?.type === Fragment && (root.children as VNode[]).includes(vnode)) ) { + // eslint-disable-next-line no-restricted-syntax const cssVars = instance?.getCssVars?.() for (const key in cssVars) { expectedMap.set(`--${key}`, String(cssVars[key])) @@ -842,7 +845,9 @@ function toStyleMap(str: string): Map { const styleMap: Map = new Map() for (const item of str.split(';')) { let [key, value] = item.split(':') + // eslint-disable-next-line no-restricted-syntax key = key?.trim() + // eslint-disable-next-line no-restricted-syntax value = value?.trim() if (key && value) { styleMap.set(key, value) diff --git a/packages/runtime-core/src/warning.ts b/packages/runtime-core/src/warning.ts index c3b2ebbd02d..d130638b6af 100644 --- a/packages/runtime-core/src/warning.ts +++ b/packages/runtime-core/src/warning.ts @@ -45,6 +45,7 @@ export function warn(msg: string, ...args: any[]) { instance, ErrorCodes.APP_WARN_HANDLER, [ + // eslint-disable-next-line no-restricted-syntax msg + args.map(a => a.toString?.() ?? JSON.stringify(a)).join(''), instance && instance.proxy, trace