Skip to content

Commit 9e2a93a

Browse files
committed
chore: update
1 parent 6f34b25 commit 9e2a93a

11 files changed

+82
-182
lines changed

lib/rules/no-async-in-computed-properties.js

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -85,17 +85,7 @@ module.exports = {
8585
url: 'https://eslint.vuejs.org/rules/no-async-in-computed-properties.html'
8686
},
8787
fixable: null,
88-
schema: [
89-
{
90-
type: 'object',
91-
properties: {
92-
detectAutoImport: {
93-
type: 'boolean'
94-
}
95-
},
96-
additionalProperties: false
97-
}
98-
],
88+
schema: [],
9989
messages: {
10090
unexpectedInFunction:
10191
'Unexpected {{expressionName}} in computed function.',
@@ -273,18 +263,11 @@ module.exports = {
273263
/** @param {Program} program */
274264
Program(program) {
275265
const tracker = new ReferenceTracker(utils.getScope(context, program))
276-
const detectAutoImport = !!context.options?.[0]?.detectAutoImport
277-
278-
for (const { node } of utils.iterateReferencesTraceMap(
279-
tracker,
280-
{
281-
[ReferenceTracker.ESM]: true,
282-
computed: {
283-
[ReferenceTracker.CALL]: true
284-
}
285-
},
286-
detectAutoImport
287-
)) {
266+
for (const { node } of utils.iterateReferencesTraceMap(tracker, {
267+
computed: {
268+
[ReferenceTracker.CALL]: true
269+
}
270+
})) {
288271
if (node.type !== 'CallExpression') {
289272
continue
290273
}

lib/rules/no-lifecycle-after-await.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,8 @@ module.exports = {
6363
/** @param {Program} program */
6464
Program(program) {
6565
const tracker = new ReferenceTracker(utils.getScope(context, program))
66-
const detectAutoImport = !!context.options?.[0]?.detectAutoImport
6766
/** @type {TraceMap} */
68-
const traceMap = {
69-
[ReferenceTracker.ESM]: true
70-
}
67+
const traceMap = {}
7168
for (const lifecycleHook of LIFECYCLE_HOOKS) {
7269
traceMap[lifecycleHook] = {
7370
[ReferenceTracker.CALL]: true
@@ -76,8 +73,7 @@ module.exports = {
7673

7774
for (const { node } of utils.iterateReferencesTraceMap(
7875
tracker,
79-
traceMap,
80-
detectAutoImport
76+
traceMap
8177
)) {
8278
lifecycleHookCallNodes.add(node)
8379
}

lib/rules/no-ref-as-operand.js

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,7 @@ module.exports = {
3434
url: 'https://eslint.vuejs.org/rules/no-ref-as-operand.html'
3535
},
3636
fixable: 'code',
37-
schema: [
38-
{
39-
type: 'object',
40-
properties: {
41-
detectAutoImport: {
42-
type: 'boolean'
43-
}
44-
},
45-
additionalProperties: false
46-
}
47-
],
37+
schema: [],
4838
messages: {
4939
requireDotValue:
5040
'Must use `.value` to read or write the value wrapped by `{{method}}()`.'
@@ -76,8 +66,7 @@ module.exports = {
7666
}
7767
return {
7868
Program() {
79-
const autoImport = !!context.options?.[0]?.detectAutoImport
80-
refReferences = extractRefObjectReferences(context, autoImport)
69+
refReferences = extractRefObjectReferences(context)
8170
},
8271
// if (refValue)
8372
/** @param {Identifier} node */

lib/rules/no-ref-object-reactivity-loss.js

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,7 @@ module.exports = {
5454
url: 'https://eslint.vuejs.org/rules/no-ref-object-reactivity-loss.html'
5555
},
5656
fixable: null,
57-
schema: [
58-
{
59-
type: 'object',
60-
properties: {
61-
detectAutoImport: {
62-
type: 'boolean'
63-
}
64-
},
65-
additionalProperties: false
66-
}
67-
],
57+
schema: [],
6858
messages: {
6959
getValueInSameScope:
7060
'Getting a value from the ref object in the same scope will cause the value to lose reactivity.',
@@ -86,12 +76,8 @@ module.exports = {
8676
let scopeStack = { upper: null, node: context.getSourceCode().ast }
8777
/** @type {Map<CallExpression, ScopeStack>} */
8878
const scopes = new Map()
89-
const detectAutoImport = !!context.options?.[0]?.detectAutoImport
9079

91-
const refObjectReferences = extractRefObjectReferences(
92-
context,
93-
detectAutoImport
94-
)
80+
const refObjectReferences = extractRefObjectReferences(context)
9581
const reactiveVariableReferences =
9682
extractReactiveVariableReferences(context)
9783

lib/rules/no-side-effects-in-computed-properties.js

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,7 @@ module.exports = {
2424
url: 'https://eslint.vuejs.org/rules/no-side-effects-in-computed-properties.html'
2525
},
2626
fixable: null,
27-
schema: [
28-
{
29-
type: 'object',
30-
properties: {
31-
detectAutoImport: {
32-
type: 'boolean'
33-
}
34-
},
35-
additionalProperties: false
36-
}
37-
],
27+
schema: [],
3828
messages: {
3929
unexpectedSideEffectInFunction:
4030
'Unexpected side effect in computed function.',
@@ -193,18 +183,12 @@ module.exports = {
193183
/** @param {Program} program */
194184
Program(program) {
195185
const tracker = new ReferenceTracker(utils.getScope(context, program))
196-
const detectAutoImport = !!context.options?.[0]?.detectAutoImport
197-
198-
for (const { node } of utils.iterateReferencesTraceMap(
199-
tracker,
200-
{
201-
[ReferenceTracker.ESM]: true,
202-
computed: {
203-
[ReferenceTracker.CALL]: true
204-
}
205-
},
206-
detectAutoImport
207-
)) {
186+
187+
for (const { node } of utils.iterateReferencesTraceMap(tracker, {
188+
computed: {
189+
[ReferenceTracker.CALL]: true
190+
}
191+
})) {
208192
if (node.type !== 'CallExpression') {
209193
continue
210194
}

lib/rules/no-watch-after-await.js

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,7 @@ module.exports = {
4949
url: 'https://eslint.vuejs.org/rules/no-watch-after-await.html'
5050
},
5151
fixable: null,
52-
schema: [
53-
{
54-
type: 'object',
55-
properties: {
56-
detectAutoImport: {
57-
type: 'boolean'
58-
}
59-
},
60-
additionalProperties: false
61-
}
62-
],
52+
schema: [],
6353
messages: {
6454
forbidden: '`watch` is forbidden after an `await` expression.'
6555
}
@@ -88,21 +78,15 @@ module.exports = {
8878
/** @param {Program} program */
8979
Program(program) {
9080
const tracker = new ReferenceTracker(utils.getScope(context, program))
91-
const detectAutoImport = !!context.options?.[0]?.detectAutoImport
9281

93-
for (const { node } of utils.iterateReferencesTraceMap(
94-
tracker,
95-
{
96-
[ReferenceTracker.ESM]: true,
97-
watch: {
98-
[ReferenceTracker.CALL]: true
99-
},
100-
watchEffect: {
101-
[ReferenceTracker.CALL]: true
102-
}
82+
for (const { node } of utils.iterateReferencesTraceMap(tracker, {
83+
watch: {
84+
[ReferenceTracker.CALL]: true
10385
},
104-
detectAutoImport
105-
)) {
86+
watchEffect: {
87+
[ReferenceTracker.CALL]: true
88+
}
89+
})) {
10690
watchCallNodes.add(node)
10791
}
10892
}

lib/rules/return-in-computed-property.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@ module.exports = {
2626
properties: {
2727
treatUndefinedAsUnspecified: {
2828
type: 'boolean'
29-
},
30-
detectAutoImport: {
31-
type: 'boolean'
3229
}
3330
},
3431
additionalProperties: false
@@ -61,17 +58,14 @@ module.exports = {
6158
Program(program) {
6259
const tracker = new ReferenceTracker(utils.getScope(context, program))
6360
const map = {
64-
[ReferenceTracker.ESM]: true,
6561
computed: {
6662
[ReferenceTracker.CALL]: true
6763
}
6864
}
6965

70-
const detectAutoImport = !!context.options?.[0]?.detectAutoImport
7166
for (const { node } of utils.iterateReferencesTraceMap(
7267
tracker,
73-
map,
74-
detectAutoImport
68+
map
7569
)) {
7670
if (node.type !== 'CallExpression') {
7771
continue

lib/utils/index.js

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,10 @@ const VUE_BUILTIN_ELEMENT_NAMES = new Set(require('./vue-builtin-elements'))
6262
const path = require('path')
6363
const vueEslintParser = require('vue-eslint-parser')
6464
const { traverseNodes, getFallbackKeys, NS } = vueEslintParser.AST
65-
const { findVariable } = require('@eslint-community/eslint-utils')
65+
const {
66+
findVariable,
67+
ReferenceTracker
68+
} = require('@eslint-community/eslint-utils')
6669
const {
6770
getComponentPropsFromTypeDefine,
6871
getComponentEmitsFromTypeDefine,
@@ -2104,12 +2107,13 @@ module.exports = {
21042107
iterateWatchHandlerValues,
21052108

21062109
/**
2107-
* Wraps composition API trace map in both 'vue' and '@vue/composition-api' imports
2110+
* Wraps composition API trace map in both 'vue' and '@vue/composition-api' imports, or '#imports' from unimport
21082111
* @param {import('@eslint-community/eslint-utils').TYPES.TraceMap} map
21092112
*/
21102113
createCompositionApiTraceMap: (map) => ({
21112114
vue: map,
2112-
'@vue/composition-api': map
2115+
'@vue/composition-api': map,
2116+
'#imports': map
21132117
}),
21142118

21152119
/**
@@ -2118,21 +2122,20 @@ module.exports = {
21182122
*
21192123
* @param {import('@eslint-community/eslint-utils').ReferenceTracker} tracker
21202124
* @param {import('@eslint-community/eslint-utils').TYPES.TraceMap} map
2121-
* @param {boolean} detectAutoImport
21222125
* @returns {ReturnType<import('@eslint-community/eslint-utils').ReferenceTracker['iterateEsmReferences']>}
21232126
*/
2124-
*iterateReferencesTraceMap(tracker, map, detectAutoImport) {
2125-
const traceMap = this.createCompositionApiTraceMap(map)
2127+
*iterateReferencesTraceMap(tracker, map) {
2128+
const esmTraceMap = this.createCompositionApiTraceMap({
2129+
...map,
2130+
[ReferenceTracker.ESM]: true
2131+
})
21262132

2127-
if (detectAutoImport) {
2128-
for (const ref of tracker.iterateGlobalReferences(traceMap)) {
2129-
yield ref
2130-
}
2131-
for (const ref of tracker.iterateEsmReferences(map)) {
2132-
yield ref
2133-
}
2134-
} else {
2135-
return tracker.iterateEsmReferences(traceMap)
2133+
for (const ref of tracker.iterateEsmReferences(esmTraceMap)) {
2134+
yield ref
2135+
}
2136+
2137+
for (const ref of tracker.iterateGlobalReferences(map)) {
2138+
yield ref
21362139
}
21372140
},
21382141

lib/utils/property-references.js

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -119,30 +119,21 @@ function definePropertyReferenceExtractor(
119119
context.getSourceCode().scopeManager.scopes[0]
120120
)
121121
const toRefNodes = new Set()
122-
const detectAutoImport = !!context.options?.[0]?.detectAutoImport
123-
for (const { node } of utils.iterateReferencesTraceMap(
124-
tracker,
125-
{
126-
[eslintUtils.ReferenceTracker.ESM]: true,
127-
toRef: {
128-
[eslintUtils.ReferenceTracker.CALL]: true
129-
}
130-
},
131-
detectAutoImport
132-
)) {
122+
for (const { node } of utils.iterateReferencesTraceMap(tracker, {
123+
[eslintUtils.ReferenceTracker.ESM]: true,
124+
toRef: {
125+
[eslintUtils.ReferenceTracker.CALL]: true
126+
}
127+
})) {
133128
toRefNodes.add(node)
134129
}
135130
const toRefsNodes = new Set()
136-
for (const { node } of utils.iterateReferencesTraceMap(
137-
tracker,
138-
{
139-
[eslintUtils.ReferenceTracker.ESM]: true,
140-
toRefs: {
141-
[eslintUtils.ReferenceTracker.CALL]: true
142-
}
143-
},
144-
detectAutoImport
145-
)) {
131+
for (const { node } of utils.iterateReferencesTraceMap(tracker, {
132+
[eslintUtils.ReferenceTracker.ESM]: true,
133+
toRefs: {
134+
[eslintUtils.ReferenceTracker.CALL]: true
135+
}
136+
})) {
146137
toRefsNodes.add(node)
147138
}
148139

0 commit comments

Comments
 (0)