@@ -89,19 +89,15 @@ const groups = {
89
89
'renderTriggered' , // for Vue.js 3.x
90
90
'errorCaptured' // for Vue.js 2.5.0+
91
91
] ,
92
- ROUTER_GUARDS : [
93
- 'beforeRouteEnter' ,
94
- 'beforeRouteUpdate' ,
95
- 'beforeRouteLeave'
96
- ]
92
+ ROUTER_GUARDS : [ 'beforeRouteEnter' , 'beforeRouteUpdate' , 'beforeRouteLeave' ]
97
93
}
98
94
99
- function getOrderMap ( order ) {
95
+ function getOrderMap ( order ) {
100
96
const orderMap = new Map ( )
101
97
102
98
order . forEach ( ( property , i ) => {
103
99
if ( Array . isArray ( property ) ) {
104
- property . forEach ( p => orderMap . set ( p , i ) )
100
+ property . forEach ( ( p ) => orderMap . set ( p , i ) )
105
101
} else {
106
102
orderMap . set ( property , i )
107
103
}
@@ -110,11 +106,11 @@ function getOrderMap (order) {
110
106
return orderMap
111
107
}
112
108
113
- function isComma ( node ) {
109
+ function isComma ( node ) {
114
110
return node . type === 'Punctuator' && node . value === ','
115
111
}
116
112
117
- const ARITHMETIC_OPERATORS = [ '+' , '-' , '*' , '/' , '%' , '**' /* es2016 */ ]
113
+ const ARITHMETIC_OPERATORS = [ '+' , '-' , '*' , '/' , '%' , '**' /* es2016 */ ]
118
114
const BITWISE_OPERATORS = [ '&' , '|' , '^' , '~' , '<<' , '>>' , '>>>' ]
119
115
const COMPARISON_OPERATORS = [ '==' , '!=' , '===' , '!==' , '>' , '>=' , '<' , '<=' ]
120
116
const RELATIONAL_OPERATORS = [ 'in' , 'instanceof' ]
@@ -124,7 +120,7 @@ const ALL_BINARY_OPERATORS = [].concat(
124
120
COMPARISON_OPERATORS ,
125
121
RELATIONAL_OPERATORS
126
122
)
127
- const LOGICAL_OPERATORS = [ '&&' , '||' , '??' /* es2020 */ ]
123
+ const LOGICAL_OPERATORS = [ '&&' , '||' , '??' /* es2020 */ ]
128
124
129
125
/*
130
126
* Result `true` if the node is sure that there are no side effects
@@ -142,12 +138,12 @@ const LOGICAL_OPERATORS = ['&&', '||', '??'/* es2020 */]
142
138
* @param {Object } visitorKeys sourceCode.visitorKey
143
139
* @returns {Boolean } no side effects
144
140
*/
145
- function isNotSideEffectsNode ( node , visitorKeys ) {
141
+ function isNotSideEffectsNode ( node , visitorKeys ) {
146
142
let result = true
147
143
let skipNode = false
148
144
traverseNodes ( node , {
149
145
visitorKeys,
150
- enterNode ( node ) {
146
+ enterNode ( node ) {
151
147
if ( ! result || skipNode ) {
152
148
return
153
149
}
@@ -166,9 +162,12 @@ function isNotSideEffectsNode (node, visitorKeys) {
166
162
node . type !== 'Property' &&
167
163
node . type !== 'ObjectExpression' &&
168
164
node . type !== 'ArrayExpression' &&
169
- ( node . type !== 'UnaryExpression' || ! [ '!' , '~' , '+' , '-' , 'typeof' ] . includes ( node . operator ) ) &&
170
- ( node . type !== 'BinaryExpression' || ! ALL_BINARY_OPERATORS . includes ( node . operator ) ) &&
171
- ( node . type !== 'LogicalExpression' || ! LOGICAL_OPERATORS . includes ( node . operator ) ) &&
165
+ ( node . type !== 'UnaryExpression' ||
166
+ ! [ '!' , '~' , '+' , '-' , 'typeof' ] . includes ( node . operator ) ) &&
167
+ ( node . type !== 'BinaryExpression' ||
168
+ ! ALL_BINARY_OPERATORS . includes ( node . operator ) ) &&
169
+ ( node . type !== 'LogicalExpression' ||
170
+ ! LOGICAL_OPERATORS . includes ( node . operator ) ) &&
172
171
node . type !== 'MemberExpression' &&
173
172
node . type !== 'ConditionalExpression' &&
174
173
// es2015
@@ -179,7 +178,7 @@ function isNotSideEffectsNode (node, visitorKeys) {
179
178
result = false
180
179
}
181
180
} ,
182
- leaveNode ( node ) {
181
+ leaveNode ( node ) {
183
182
if ( skipNode === node ) {
184
183
skipNode = null
185
184
}
@@ -215,23 +214,25 @@ module.exports = {
215
214
]
216
215
} ,
217
216
218
- create ( context ) {
217
+ create ( context ) {
219
218
const options = context . options [ 0 ] || { }
220
219
const order = options . order || defaultOrder
221
- const extendedOrder = order . map ( property => groups [ property ] || property )
220
+ const extendedOrder = order . map ( ( property ) => groups [ property ] || property )
222
221
const orderMap = getOrderMap ( extendedOrder )
223
222
const sourceCode = context . getSourceCode ( )
224
223
225
- function checkOrder ( propertiesNodes , orderMap ) {
224
+ function checkOrder ( propertiesNodes , orderMap ) {
226
225
const properties = propertiesNodes
227
- . filter ( property => property . type === 'Property' )
228
- . map ( property => property . key )
226
+ . filter ( ( property ) => property . type === 'Property' )
227
+ . map ( ( property ) => property . key )
229
228
230
229
properties . forEach ( ( property , i ) => {
231
230
const propertiesAbove = properties . slice ( 0 , i )
232
231
const unorderedProperties = propertiesAbove
233
- . filter ( p => orderMap . get ( p . name ) > orderMap . get ( property . name ) )
234
- . sort ( ( p1 , p2 ) => orderMap . get ( p1 . name ) > orderMap . get ( p2 . name ) ? 1 : - 1 )
232
+ . filter ( ( p ) => orderMap . get ( p . name ) > orderMap . get ( property . name ) )
233
+ . sort ( ( p1 , p2 ) =>
234
+ orderMap . get ( p1 . name ) > orderMap . get ( p2 . name ) ? 1 : - 1
235
+ )
235
236
236
237
const firstUnorderedProperty = unorderedProperties [ 0 ]
237
238
@@ -245,15 +246,18 @@ module.exports = {
245
246
firstUnorderedPropertyName : firstUnorderedProperty . name ,
246
247
line
247
248
} ,
248
- fix ( fixer ) {
249
+ fix ( fixer ) {
249
250
const propertyNode = property . parent
250
251
const firstUnorderedPropertyNode = firstUnorderedProperty . parent
251
252
const hasSideEffectsPossibility = propertiesNodes
252
253
. slice (
253
254
propertiesNodes . indexOf ( firstUnorderedPropertyNode ) ,
254
255
propertiesNodes . indexOf ( propertyNode ) + 1
255
256
)
256
- . some ( ( property ) => ! isNotSideEffectsNode ( property , sourceCode . visitorKeys ) )
257
+ . some (
258
+ ( property ) =>
259
+ ! isNotSideEffectsNode ( property , sourceCode . visitorKeys )
260
+ )
257
261
if ( hasSideEffectsPossibility ) {
258
262
return undefined
259
263
}
@@ -262,12 +266,20 @@ module.exports = {
262
266
263
267
const beforeComma = sourceCode . getTokenBefore ( propertyNode )
264
268
const codeStart = beforeComma . range [ 1 ] // to include comments
265
- const codeEnd = hasAfterComma ? afterComma . range [ 1 ] : propertyNode . range [ 1 ]
266
-
267
- const propertyCode = sourceCode . text . slice ( codeStart , codeEnd ) + ( hasAfterComma ? '' : ',' )
268
- const insertTarget = sourceCode . getTokenBefore ( firstUnorderedPropertyNode )
269
-
270
- const removeStart = hasAfterComma ? codeStart : beforeComma . range [ 0 ]
269
+ const codeEnd = hasAfterComma
270
+ ? afterComma . range [ 1 ]
271
+ : propertyNode . range [ 1 ]
272
+
273
+ const propertyCode =
274
+ sourceCode . text . slice ( codeStart , codeEnd ) +
275
+ ( hasAfterComma ? '' : ',' )
276
+ const insertTarget = sourceCode . getTokenBefore (
277
+ firstUnorderedPropertyNode
278
+ )
279
+
280
+ const removeStart = hasAfterComma
281
+ ? codeStart
282
+ : beforeComma . range [ 0 ]
271
283
272
284
return [
273
285
fixer . removeRange ( [ removeStart , codeEnd ] ) ,
0 commit comments