eslint-plugin-perfectionist 3.0.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +20 -6
- package/dist/rules/sort-array-includes.js +1 -1
- package/dist/rules/sort-array-includes.mjs +1 -1
- package/dist/rules/sort-astro-attributes.js +1 -1
- package/dist/rules/sort-astro-attributes.mjs +1 -1
- package/dist/rules/sort-classes.js +21 -1
- package/dist/rules/sort-classes.mjs +21 -1
- package/dist/rules/sort-enums.js +9 -5
- package/dist/rules/sort-enums.mjs +9 -5
- package/dist/rules/sort-exports.js +1 -1
- package/dist/rules/sort-exports.mjs +1 -1
- package/dist/rules/sort-imports.js +21 -8
- package/dist/rules/sort-imports.mjs +19 -8
- package/dist/rules/sort-interfaces.js +1 -1
- package/dist/rules/sort-interfaces.mjs +1 -1
- package/dist/rules/sort-intersection-types.js +1 -1
- package/dist/rules/sort-intersection-types.mjs +1 -1
- package/dist/rules/sort-jsx-props.js +102 -117
- package/dist/rules/sort-jsx-props.mjs +91 -104
- package/dist/rules/sort-maps.js +1 -1
- package/dist/rules/sort-maps.mjs +1 -1
- package/dist/rules/sort-named-exports.js +1 -1
- package/dist/rules/sort-named-exports.mjs +1 -1
- package/dist/rules/sort-named-imports.js +1 -1
- package/dist/rules/sort-named-imports.mjs +1 -1
- package/dist/rules/sort-object-types.js +1 -1
- package/dist/rules/sort-object-types.mjs +1 -1
- package/dist/rules/sort-objects.js +9 -12
- package/dist/rules/sort-objects.mjs +9 -12
- package/dist/rules/sort-svelte-attributes.js +1 -1
- package/dist/rules/sort-svelte-attributes.mjs +1 -1
- package/dist/rules/sort-switch-case.js +68 -15
- package/dist/rules/sort-switch-case.mjs +63 -15
- package/dist/rules/sort-union-types.js +1 -1
- package/dist/rules/sort-union-types.mjs +1 -1
- package/dist/rules/sort-variable-declarations.js +1 -1
- package/dist/rules/sort-variable-declarations.mjs +1 -1
- package/dist/rules/sort-vue-attributes.js +1 -1
- package/dist/rules/sort-vue-attributes.mjs +1 -1
- package/dist/utils/get-group-number.js +1 -1
- package/dist/utils/get-group-number.mjs +1 -1
- package/dist/utils/make-fixes.js +1 -1
- package/dist/utils/make-fixes.mjs +1 -1
- package/package.json +3 -3
- package/readme.md +49 -24
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { ClassicConfig } from '@typescript-eslint/utils/ts-eslint'
|
|
2
2
|
import { FlatConfig } from '@typescript-eslint/utils/ts-eslint'
|
|
3
|
-
import { ObjectExpression } from 'node_modules/@typescript-eslint/types/dist/generated/ast-spec'
|
|
4
|
-
import { ObjectPattern } from 'node_modules/@typescript-eslint/types/dist/generated/ast-spec'
|
|
5
3
|
import { RuleListener } from '@typescript-eslint/utils/ts-eslint'
|
|
6
4
|
import { RuleModule } from '@typescript-eslint/utils/ts-eslint'
|
|
7
5
|
|
|
@@ -24,6 +22,7 @@ declare const _default: {
|
|
|
24
22
|
ignoreCase: boolean
|
|
25
23
|
}>,
|
|
26
24
|
],
|
|
25
|
+
unknown,
|
|
27
26
|
RuleListener
|
|
28
27
|
>
|
|
29
28
|
'sort-intersection-types': RuleModule<
|
|
@@ -67,6 +66,7 @@ declare const _default: {
|
|
|
67
66
|
ignoreCase: boolean
|
|
68
67
|
}>,
|
|
69
68
|
],
|
|
69
|
+
unknown,
|
|
70
70
|
RuleListener
|
|
71
71
|
>
|
|
72
72
|
'sort-svelte-attributes': RuleModule<
|
|
@@ -82,6 +82,7 @@ declare const _default: {
|
|
|
82
82
|
ignoreCase: boolean
|
|
83
83
|
}>,
|
|
84
84
|
],
|
|
85
|
+
unknown,
|
|
85
86
|
RuleListener
|
|
86
87
|
>
|
|
87
88
|
'sort-astro-attributes': RuleModule<
|
|
@@ -97,6 +98,7 @@ declare const _default: {
|
|
|
97
98
|
ignoreCase: boolean
|
|
98
99
|
}>,
|
|
99
100
|
],
|
|
101
|
+
unknown,
|
|
100
102
|
RuleListener
|
|
101
103
|
>
|
|
102
104
|
'sort-vue-attributes': RuleModule<
|
|
@@ -112,6 +114,7 @@ declare const _default: {
|
|
|
112
114
|
ignoreCase: boolean
|
|
113
115
|
}>,
|
|
114
116
|
],
|
|
117
|
+
unknown,
|
|
115
118
|
RuleListener
|
|
116
119
|
>
|
|
117
120
|
'sort-array-includes': RuleModule<
|
|
@@ -124,6 +127,7 @@ declare const _default: {
|
|
|
124
127
|
ignoreCase: boolean
|
|
125
128
|
}>,
|
|
126
129
|
],
|
|
130
|
+
unknown,
|
|
127
131
|
RuleListener
|
|
128
132
|
>
|
|
129
133
|
'sort-named-imports': RuleModule<
|
|
@@ -137,6 +141,7 @@ declare const _default: {
|
|
|
137
141
|
ignoreCase: boolean
|
|
138
142
|
}>,
|
|
139
143
|
],
|
|
144
|
+
unknown,
|
|
140
145
|
RuleListener
|
|
141
146
|
>
|
|
142
147
|
'sort-named-exports': RuleModule<
|
|
@@ -149,6 +154,7 @@ declare const _default: {
|
|
|
149
154
|
ignoreCase: boolean
|
|
150
155
|
}>,
|
|
151
156
|
],
|
|
157
|
+
unknown,
|
|
152
158
|
RuleListener
|
|
153
159
|
>
|
|
154
160
|
'sort-object-types': RuleModule<
|
|
@@ -164,6 +170,7 @@ declare const _default: {
|
|
|
164
170
|
customGroups: {}
|
|
165
171
|
}>,
|
|
166
172
|
],
|
|
173
|
+
unknown,
|
|
167
174
|
RuleListener
|
|
168
175
|
>
|
|
169
176
|
'sort-union-types': RuleModule<
|
|
@@ -207,6 +214,7 @@ declare const _default: {
|
|
|
207
214
|
ignoreCase: boolean
|
|
208
215
|
}>,
|
|
209
216
|
],
|
|
217
|
+
unknown,
|
|
210
218
|
RuleListener
|
|
211
219
|
>
|
|
212
220
|
'sort-switch-case': RuleModule<
|
|
@@ -218,6 +226,7 @@ declare const _default: {
|
|
|
218
226
|
ignoreCase: boolean
|
|
219
227
|
}>,
|
|
220
228
|
],
|
|
229
|
+
unknown,
|
|
221
230
|
RuleListener
|
|
222
231
|
>
|
|
223
232
|
'sort-interfaces': RuleModule<
|
|
@@ -236,6 +245,7 @@ declare const _default: {
|
|
|
236
245
|
ignoreCase: boolean
|
|
237
246
|
}>,
|
|
238
247
|
],
|
|
248
|
+
unknown,
|
|
239
249
|
RuleListener
|
|
240
250
|
>
|
|
241
251
|
'sort-jsx-props': RuleModule<
|
|
@@ -252,6 +262,7 @@ declare const _default: {
|
|
|
252
262
|
ignoreCase: boolean
|
|
253
263
|
}>,
|
|
254
264
|
],
|
|
265
|
+
unknown,
|
|
255
266
|
RuleListener
|
|
256
267
|
>
|
|
257
268
|
'sort-classes': RuleModule<
|
|
@@ -268,6 +279,7 @@ declare const _default: {
|
|
|
268
279
|
ignoreCase: boolean
|
|
269
280
|
}>,
|
|
270
281
|
],
|
|
282
|
+
unknown,
|
|
271
283
|
RuleListener
|
|
272
284
|
>
|
|
273
285
|
'sort-imports': RuleModule<
|
|
@@ -298,6 +310,7 @@ declare const _default: {
|
|
|
298
310
|
ignoreCase: boolean
|
|
299
311
|
}>,
|
|
300
312
|
],
|
|
313
|
+
unknown,
|
|
301
314
|
RuleListener
|
|
302
315
|
>
|
|
303
316
|
'sort-exports': RuleModule<
|
|
@@ -309,16 +322,13 @@ declare const _default: {
|
|
|
309
322
|
ignoreCase: boolean
|
|
310
323
|
}>,
|
|
311
324
|
],
|
|
325
|
+
unknown,
|
|
312
326
|
RuleListener
|
|
313
327
|
>
|
|
314
328
|
'sort-objects': RuleModule<
|
|
315
329
|
'unexpectedObjectsOrder',
|
|
316
330
|
[
|
|
317
331
|
Partial<{
|
|
318
|
-
customIgnore: ((
|
|
319
|
-
object: ObjectExpression | ObjectPattern,
|
|
320
|
-
filename: string,
|
|
321
|
-
) => boolean)[]
|
|
322
332
|
customGroups: {
|
|
323
333
|
[key: string]: string[] | string
|
|
324
334
|
}
|
|
@@ -327,11 +337,13 @@ declare const _default: {
|
|
|
327
337
|
groups: (string[] | string)[]
|
|
328
338
|
partitionByNewLine: boolean
|
|
329
339
|
styledComponents: boolean
|
|
340
|
+
destructureOnly: boolean
|
|
330
341
|
ignorePattern: string[]
|
|
331
342
|
order: 'desc' | 'asc'
|
|
332
343
|
ignoreCase: boolean
|
|
333
344
|
}>,
|
|
334
345
|
],
|
|
346
|
+
unknown,
|
|
335
347
|
RuleListener
|
|
336
348
|
>
|
|
337
349
|
'sort-enums': RuleModule<
|
|
@@ -344,6 +356,7 @@ declare const _default: {
|
|
|
344
356
|
ignoreCase: boolean
|
|
345
357
|
}>,
|
|
346
358
|
],
|
|
359
|
+
unknown,
|
|
347
360
|
RuleListener
|
|
348
361
|
>
|
|
349
362
|
'sort-maps': RuleModule<
|
|
@@ -355,6 +368,7 @@ declare const _default: {
|
|
|
355
368
|
ignoreCase: boolean
|
|
356
369
|
}>,
|
|
357
370
|
],
|
|
371
|
+
unknown,
|
|
358
372
|
RuleListener
|
|
359
373
|
>
|
|
360
374
|
}
|
|
@@ -95,8 +95,8 @@ const sortArrayIncludes = createEslintRule.createEslintRule({
|
|
|
95
95
|
? `${element.value}`
|
|
96
96
|
: sourceCode.text.slice(...element.range),
|
|
97
97
|
size: rangeToDiff.rangeToDiff(element.range),
|
|
98
|
+
node: structuredClone(element),
|
|
98
99
|
type: element.type,
|
|
99
|
-
node: element,
|
|
100
100
|
group,
|
|
101
101
|
})
|
|
102
102
|
}
|
|
@@ -132,8 +132,8 @@ const sortAstroAttributes = createEslintRule.createEslintRule({
|
|
|
132
132
|
defineGroup('multiline')
|
|
133
133
|
}
|
|
134
134
|
accumulator.at(-1).push({
|
|
135
|
+
node: structuredClone(attribute),
|
|
135
136
|
size: rangeToDiff.rangeToDiff(attribute.range),
|
|
136
|
-
node: attribute,
|
|
137
137
|
group: getGroup(),
|
|
138
138
|
name,
|
|
139
139
|
})
|
|
@@ -132,8 +132,8 @@ const sortAstroAttributes = createEslintRule({
|
|
|
132
132
|
defineGroup('multiline')
|
|
133
133
|
}
|
|
134
134
|
accumulator.at(-1).push({
|
|
135
|
+
node: structuredClone(attribute),
|
|
135
136
|
size: rangeToDiff(attribute.range),
|
|
136
|
-
node: attribute,
|
|
137
137
|
group: getGroup(),
|
|
138
138
|
name,
|
|
139
139
|
})
|
|
@@ -110,10 +110,12 @@ const sortClasses = createEslintRule.createEslintRule({
|
|
|
110
110
|
groups: [
|
|
111
111
|
'index-signature',
|
|
112
112
|
'static-property',
|
|
113
|
+
'protected-property',
|
|
113
114
|
'private-property',
|
|
114
115
|
'property',
|
|
115
116
|
'constructor',
|
|
116
117
|
'static-method',
|
|
118
|
+
'protected-method',
|
|
117
119
|
'private-method',
|
|
118
120
|
'method',
|
|
119
121
|
['get-method', 'set-method'],
|
|
@@ -129,10 +131,12 @@ const sortClasses = createEslintRule.createEslintRule({
|
|
|
129
131
|
groups: [
|
|
130
132
|
'index-signature',
|
|
131
133
|
'static-property',
|
|
134
|
+
'protected-property',
|
|
132
135
|
'private-property',
|
|
133
136
|
'property',
|
|
134
137
|
'constructor',
|
|
135
138
|
'static-method',
|
|
139
|
+
'protected-method',
|
|
136
140
|
'private-method',
|
|
137
141
|
'method',
|
|
138
142
|
['get-method', 'set-method'],
|
|
@@ -224,6 +228,7 @@ const sortClasses = createEslintRule.createEslintRule({
|
|
|
224
228
|
if (member.kind === 'constructor') {
|
|
225
229
|
defineGroup('constructor')
|
|
226
230
|
}
|
|
231
|
+
let isProtectedMethod = member.accessibility === 'protected'
|
|
227
232
|
let isPrivateMethod =
|
|
228
233
|
member.accessibility === 'private' || isPrivate
|
|
229
234
|
let isStaticMethod = member.static
|
|
@@ -245,6 +250,12 @@ const sortClasses = createEslintRule.createEslintRule({
|
|
|
245
250
|
if (isStaticMethod) {
|
|
246
251
|
defineGroup('static-method')
|
|
247
252
|
}
|
|
253
|
+
if (isProtectedMethod && isStaticMethod) {
|
|
254
|
+
defineGroup('static-protected-method')
|
|
255
|
+
}
|
|
256
|
+
if (isProtectedMethod) {
|
|
257
|
+
defineGroup('protected-method')
|
|
258
|
+
}
|
|
248
259
|
if (member.kind === 'get') {
|
|
249
260
|
defineGroup('get-method')
|
|
250
261
|
}
|
|
@@ -256,6 +267,9 @@ const sortClasses = createEslintRule.createEslintRule({
|
|
|
256
267
|
defineGroup('index-signature')
|
|
257
268
|
} else if (member.type === 'AccessorProperty') {
|
|
258
269
|
if (decorated) {
|
|
270
|
+
if (member.accessibility === 'protected') {
|
|
271
|
+
defineGroup('protected-decorated-accessor-property')
|
|
272
|
+
}
|
|
259
273
|
if (member.accessibility === 'private' || isPrivate) {
|
|
260
274
|
defineGroup('private-decorated-accessor-property')
|
|
261
275
|
}
|
|
@@ -263,11 +277,17 @@ const sortClasses = createEslintRule.createEslintRule({
|
|
|
263
277
|
}
|
|
264
278
|
} else if (member.type === 'PropertyDefinition') {
|
|
265
279
|
if (decorated) {
|
|
280
|
+
if (member.accessibility === 'protected') {
|
|
281
|
+
defineGroup('protected-decorated-property')
|
|
282
|
+
}
|
|
266
283
|
if (member.accessibility === 'private' || isPrivate) {
|
|
267
284
|
defineGroup('private-decorated-property')
|
|
268
285
|
}
|
|
269
286
|
defineGroup('decorated-property')
|
|
270
287
|
}
|
|
288
|
+
if (member.accessibility === 'protected') {
|
|
289
|
+
defineGroup('protected-property')
|
|
290
|
+
}
|
|
271
291
|
if (member.accessibility === 'private' || isPrivate) {
|
|
272
292
|
defineGroup('private-property')
|
|
273
293
|
}
|
|
@@ -284,9 +304,9 @@ const sortClasses = createEslintRule.createEslintRule({
|
|
|
284
304
|
}
|
|
285
305
|
let value = {
|
|
286
306
|
size: rangeToDiff.rangeToDiff(member.range),
|
|
307
|
+
node: structuredClone(member),
|
|
287
308
|
group: getGroup(),
|
|
288
309
|
dependencies,
|
|
289
|
-
node: member,
|
|
290
310
|
name,
|
|
291
311
|
}
|
|
292
312
|
accumulator.at(-1).push(value)
|
|
@@ -109,10 +109,12 @@ const sortClasses = createEslintRule({
|
|
|
109
109
|
groups: [
|
|
110
110
|
'index-signature',
|
|
111
111
|
'static-property',
|
|
112
|
+
'protected-property',
|
|
112
113
|
'private-property',
|
|
113
114
|
'property',
|
|
114
115
|
'constructor',
|
|
115
116
|
'static-method',
|
|
117
|
+
'protected-method',
|
|
116
118
|
'private-method',
|
|
117
119
|
'method',
|
|
118
120
|
['get-method', 'set-method'],
|
|
@@ -128,10 +130,12 @@ const sortClasses = createEslintRule({
|
|
|
128
130
|
groups: [
|
|
129
131
|
'index-signature',
|
|
130
132
|
'static-property',
|
|
133
|
+
'protected-property',
|
|
131
134
|
'private-property',
|
|
132
135
|
'property',
|
|
133
136
|
'constructor',
|
|
134
137
|
'static-method',
|
|
138
|
+
'protected-method',
|
|
135
139
|
'private-method',
|
|
136
140
|
'method',
|
|
137
141
|
['get-method', 'set-method'],
|
|
@@ -221,6 +225,7 @@ const sortClasses = createEslintRule({
|
|
|
221
225
|
if (member.kind === 'constructor') {
|
|
222
226
|
defineGroup('constructor')
|
|
223
227
|
}
|
|
228
|
+
let isProtectedMethod = member.accessibility === 'protected'
|
|
224
229
|
let isPrivateMethod =
|
|
225
230
|
member.accessibility === 'private' || isPrivate
|
|
226
231
|
let isStaticMethod = member.static
|
|
@@ -242,6 +247,12 @@ const sortClasses = createEslintRule({
|
|
|
242
247
|
if (isStaticMethod) {
|
|
243
248
|
defineGroup('static-method')
|
|
244
249
|
}
|
|
250
|
+
if (isProtectedMethod && isStaticMethod) {
|
|
251
|
+
defineGroup('static-protected-method')
|
|
252
|
+
}
|
|
253
|
+
if (isProtectedMethod) {
|
|
254
|
+
defineGroup('protected-method')
|
|
255
|
+
}
|
|
245
256
|
if (member.kind === 'get') {
|
|
246
257
|
defineGroup('get-method')
|
|
247
258
|
}
|
|
@@ -253,6 +264,9 @@ const sortClasses = createEslintRule({
|
|
|
253
264
|
defineGroup('index-signature')
|
|
254
265
|
} else if (member.type === 'AccessorProperty') {
|
|
255
266
|
if (decorated) {
|
|
267
|
+
if (member.accessibility === 'protected') {
|
|
268
|
+
defineGroup('protected-decorated-accessor-property')
|
|
269
|
+
}
|
|
256
270
|
if (member.accessibility === 'private' || isPrivate) {
|
|
257
271
|
defineGroup('private-decorated-accessor-property')
|
|
258
272
|
}
|
|
@@ -260,11 +274,17 @@ const sortClasses = createEslintRule({
|
|
|
260
274
|
}
|
|
261
275
|
} else if (member.type === 'PropertyDefinition') {
|
|
262
276
|
if (decorated) {
|
|
277
|
+
if (member.accessibility === 'protected') {
|
|
278
|
+
defineGroup('protected-decorated-property')
|
|
279
|
+
}
|
|
263
280
|
if (member.accessibility === 'private' || isPrivate) {
|
|
264
281
|
defineGroup('private-decorated-property')
|
|
265
282
|
}
|
|
266
283
|
defineGroup('decorated-property')
|
|
267
284
|
}
|
|
285
|
+
if (member.accessibility === 'protected') {
|
|
286
|
+
defineGroup('protected-property')
|
|
287
|
+
}
|
|
268
288
|
if (member.accessibility === 'private' || isPrivate) {
|
|
269
289
|
defineGroup('private-property')
|
|
270
290
|
}
|
|
@@ -281,9 +301,9 @@ const sortClasses = createEslintRule({
|
|
|
281
301
|
}
|
|
282
302
|
let value = {
|
|
283
303
|
size: rangeToDiff(member.range),
|
|
304
|
+
node: structuredClone(member),
|
|
284
305
|
group: getGroup(),
|
|
285
306
|
dependencies,
|
|
286
|
-
node: member,
|
|
287
307
|
name,
|
|
288
308
|
}
|
|
289
309
|
accumulator.at(-1).push(value)
|
package/dist/rules/sort-enums.js
CHANGED
|
@@ -75,9 +75,13 @@ const sortEnums = createEslintRule.createEslintRule({
|
|
|
75
75
|
],
|
|
76
76
|
create: context => ({
|
|
77
77
|
TSEnumDeclaration: node => {
|
|
78
|
+
let getMembers = nodeValue =>
|
|
79
|
+
/* v8 ignore next 2 */
|
|
80
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
81
|
+
node.body.members || nodeValue.members
|
|
78
82
|
if (
|
|
79
|
-
node.
|
|
80
|
-
node.
|
|
83
|
+
getMembers(node).length > 1 &&
|
|
84
|
+
getMembers(node).every(({ initializer }) => initializer)
|
|
81
85
|
) {
|
|
82
86
|
let options = complete.complete(context.options.at(0), {
|
|
83
87
|
partitionByComment: false,
|
|
@@ -87,7 +91,7 @@ const sortEnums = createEslintRule.createEslintRule({
|
|
|
87
91
|
})
|
|
88
92
|
let sourceCode = getSourceCode.getSourceCode(context)
|
|
89
93
|
let partitionComment = options.partitionByComment
|
|
90
|
-
let formattedMembers = node.
|
|
94
|
+
let formattedMembers = getMembers(node).reduce(
|
|
91
95
|
(accumulator, member) => {
|
|
92
96
|
let comment = getCommentBefore.getCommentBefore(member, sourceCode)
|
|
93
97
|
if (
|
|
@@ -105,9 +109,9 @@ const sortEnums = createEslintRule.createEslintRule({
|
|
|
105
109
|
? `${member.id.value}`
|
|
106
110
|
: `${sourceCode.text.slice(...member.id.range)}`
|
|
107
111
|
let sortingNode = {
|
|
108
|
-
name,
|
|
109
|
-
node: member,
|
|
110
112
|
size: rangeToDiff.rangeToDiff(member.range),
|
|
113
|
+
node: structuredClone(member),
|
|
114
|
+
name,
|
|
111
115
|
}
|
|
112
116
|
accumulator.at(-1).push(sortingNode)
|
|
113
117
|
return accumulator
|
|
@@ -74,9 +74,13 @@ const sortEnums = createEslintRule({
|
|
|
74
74
|
],
|
|
75
75
|
create: context => ({
|
|
76
76
|
TSEnumDeclaration: node => {
|
|
77
|
+
let getMembers = nodeValue =>
|
|
78
|
+
/* v8 ignore next 2 */
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
80
|
+
node.body.members || nodeValue.members
|
|
77
81
|
if (
|
|
78
|
-
node.
|
|
79
|
-
node.
|
|
82
|
+
getMembers(node).length > 1 &&
|
|
83
|
+
getMembers(node).every(({ initializer }) => initializer)
|
|
80
84
|
) {
|
|
81
85
|
let options = complete(context.options.at(0), {
|
|
82
86
|
partitionByComment: false,
|
|
@@ -86,7 +90,7 @@ const sortEnums = createEslintRule({
|
|
|
86
90
|
})
|
|
87
91
|
let sourceCode = getSourceCode(context)
|
|
88
92
|
let partitionComment = options.partitionByComment
|
|
89
|
-
let formattedMembers = node.
|
|
93
|
+
let formattedMembers = getMembers(node).reduce(
|
|
90
94
|
(accumulator, member) => {
|
|
91
95
|
let comment = getCommentBefore(member, sourceCode)
|
|
92
96
|
if (
|
|
@@ -101,9 +105,9 @@ const sortEnums = createEslintRule({
|
|
|
101
105
|
? `${member.id.value}`
|
|
102
106
|
: `${sourceCode.text.slice(...member.id.range)}`
|
|
103
107
|
let sortingNode = {
|
|
104
|
-
name,
|
|
105
|
-
node: member,
|
|
106
108
|
size: rangeToDiff(member.range),
|
|
109
|
+
node: structuredClone(member),
|
|
110
|
+
name,
|
|
107
111
|
}
|
|
108
112
|
accumulator.at(-1).push(sortingNode)
|
|
109
113
|
return accumulator
|
|
@@ -245,10 +245,14 @@ const sortImports = createEslintRule.createEslintRule({
|
|
|
245
245
|
'undici',
|
|
246
246
|
'ws',
|
|
247
247
|
]
|
|
248
|
+
let builtinPrefixOnlyModules = ['sea', 'sqlite', 'test']
|
|
248
249
|
return (
|
|
249
250
|
node_module.builtinModules.includes(
|
|
250
251
|
value.startsWith('node:') ? value.split('node:')[1] : value,
|
|
251
252
|
) ||
|
|
253
|
+
builtinPrefixOnlyModules.some(
|
|
254
|
+
module2 => `node:${module2}` === value,
|
|
255
|
+
) ||
|
|
252
256
|
(options.environment === 'bun' ? bunModules.includes(value) : false)
|
|
253
257
|
)
|
|
254
258
|
}
|
|
@@ -282,10 +286,14 @@ const sortImports = createEslintRule.createEslintRule({
|
|
|
282
286
|
node.type === 'ImportDeclaration' ||
|
|
283
287
|
node.type === 'VariableDeclaration'
|
|
284
288
|
) {
|
|
285
|
-
let value
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
+
let value
|
|
290
|
+
if (node.type === 'ImportDeclaration') {
|
|
291
|
+
;({ value } = node.source)
|
|
292
|
+
} else {
|
|
293
|
+
let decl = node.declarations[0].init
|
|
294
|
+
let declValue = decl.arguments[0].value
|
|
295
|
+
value = declValue.toString()
|
|
296
|
+
}
|
|
289
297
|
setCustomGroups(options.customGroups.value, value)
|
|
290
298
|
if (isSideEffectImport(node) && isStyle(value)) {
|
|
291
299
|
defineGroup('side-effect-style')
|
|
@@ -330,13 +338,14 @@ const sortImports = createEslintRule.createEslintRule({
|
|
|
330
338
|
}
|
|
331
339
|
} else {
|
|
332
340
|
let decl = node.declarations[0].init
|
|
333
|
-
|
|
341
|
+
let { value } = decl.arguments[0]
|
|
342
|
+
name = value.toString()
|
|
334
343
|
}
|
|
335
344
|
nodes.push({
|
|
336
345
|
size: rangeToDiff.rangeToDiff(node.range),
|
|
346
|
+
node: structuredClone(node),
|
|
337
347
|
group: computeGroup(node),
|
|
338
348
|
name,
|
|
339
|
-
node,
|
|
340
349
|
...(options.type === 'line-length' &&
|
|
341
350
|
options.maxLineLength && {
|
|
342
351
|
hasMultipleImportDeclarations: hasMultipleImportDeclarations(node),
|
|
@@ -347,11 +356,15 @@ const sortImports = createEslintRule.createEslintRule({
|
|
|
347
356
|
TSImportEqualsDeclaration: registerNode,
|
|
348
357
|
ImportDeclaration: registerNode,
|
|
349
358
|
VariableDeclaration: node => {
|
|
359
|
+
var _a
|
|
350
360
|
if (
|
|
351
361
|
node.declarations[0].init &&
|
|
352
362
|
node.declarations[0].init.type === 'CallExpression' &&
|
|
353
363
|
node.declarations[0].init.callee.type === 'Identifier' &&
|
|
354
|
-
node.declarations[0].init.callee.name === 'require'
|
|
364
|
+
node.declarations[0].init.callee.name === 'require' &&
|
|
365
|
+
((_a = node.declarations[0].init.arguments[0]) == null
|
|
366
|
+
? void 0
|
|
367
|
+
: _a.type) === 'Literal'
|
|
355
368
|
) {
|
|
356
369
|
registerNode(node)
|
|
357
370
|
}
|
|
@@ -387,7 +400,7 @@ const sortImports = createEslintRule.createEslintRule({
|
|
|
387
400
|
(accumulator, group) => [...accumulator, ...grouped[group]],
|
|
388
401
|
[],
|
|
389
402
|
)
|
|
390
|
-
for (let
|
|
403
|
+
for (let max = formatted.length, i = 0; i < max; i++) {
|
|
391
404
|
let node = formatted.at(i)
|
|
392
405
|
fixes.push(
|
|
393
406
|
fixer.replaceTextRange(
|
|
@@ -242,10 +242,12 @@ const sortImports = createEslintRule({
|
|
|
242
242
|
'undici',
|
|
243
243
|
'ws',
|
|
244
244
|
]
|
|
245
|
+
let builtinPrefixOnlyModules = ['sea', 'sqlite', 'test']
|
|
245
246
|
return (
|
|
246
247
|
builtinModules.includes(
|
|
247
248
|
value.startsWith('node:') ? value.split('node:')[1] : value,
|
|
248
249
|
) ||
|
|
250
|
+
builtinPrefixOnlyModules.some(module => `node:${module}` === value) ||
|
|
249
251
|
(options.environment === 'bun' ? bunModules.includes(value) : false)
|
|
250
252
|
)
|
|
251
253
|
}
|
|
@@ -279,10 +281,14 @@ const sortImports = createEslintRule({
|
|
|
279
281
|
node.type === 'ImportDeclaration' ||
|
|
280
282
|
node.type === 'VariableDeclaration'
|
|
281
283
|
) {
|
|
282
|
-
let value
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
284
|
+
let value
|
|
285
|
+
if (node.type === 'ImportDeclaration') {
|
|
286
|
+
;({ value } = node.source)
|
|
287
|
+
} else {
|
|
288
|
+
let decl = node.declarations[0].init
|
|
289
|
+
let declValue = decl.arguments[0].value
|
|
290
|
+
value = declValue.toString()
|
|
291
|
+
}
|
|
286
292
|
setCustomGroups(options.customGroups.value, value)
|
|
287
293
|
if (isSideEffectImport(node) && isStyle(value)) {
|
|
288
294
|
defineGroup('side-effect-style')
|
|
@@ -327,13 +333,14 @@ const sortImports = createEslintRule({
|
|
|
327
333
|
}
|
|
328
334
|
} else {
|
|
329
335
|
let decl = node.declarations[0].init
|
|
330
|
-
|
|
336
|
+
let { value } = decl.arguments[0]
|
|
337
|
+
name = value.toString()
|
|
331
338
|
}
|
|
332
339
|
nodes.push({
|
|
333
340
|
size: rangeToDiff(node.range),
|
|
341
|
+
node: structuredClone(node),
|
|
334
342
|
group: computeGroup(node),
|
|
335
343
|
name,
|
|
336
|
-
node,
|
|
337
344
|
...(options.type === 'line-length' &&
|
|
338
345
|
options.maxLineLength && {
|
|
339
346
|
hasMultipleImportDeclarations: hasMultipleImportDeclarations(node),
|
|
@@ -344,11 +351,15 @@ const sortImports = createEslintRule({
|
|
|
344
351
|
TSImportEqualsDeclaration: registerNode,
|
|
345
352
|
ImportDeclaration: registerNode,
|
|
346
353
|
VariableDeclaration: node => {
|
|
354
|
+
var _a
|
|
347
355
|
if (
|
|
348
356
|
node.declarations[0].init &&
|
|
349
357
|
node.declarations[0].init.type === 'CallExpression' &&
|
|
350
358
|
node.declarations[0].init.callee.type === 'Identifier' &&
|
|
351
|
-
node.declarations[0].init.callee.name === 'require'
|
|
359
|
+
node.declarations[0].init.callee.name === 'require' &&
|
|
360
|
+
((_a = node.declarations[0].init.arguments[0]) == null
|
|
361
|
+
? void 0
|
|
362
|
+
: _a.type) === 'Literal'
|
|
352
363
|
) {
|
|
353
364
|
registerNode(node)
|
|
354
365
|
}
|
|
@@ -383,7 +394,7 @@ const sortImports = createEslintRule({
|
|
|
383
394
|
(accumulator, group) => [...accumulator, ...grouped[group]],
|
|
384
395
|
[],
|
|
385
396
|
)
|
|
386
|
-
for (let
|
|
397
|
+
for (let max = formatted.length, i = 0; i < max; i++) {
|
|
387
398
|
let node = formatted.at(i)
|
|
388
399
|
fixes.push(
|
|
389
400
|
fixer.replaceTextRange(
|
|
@@ -145,8 +145,8 @@ const sortIntersectionTypes = createEslintRule.createEslintRule({
|
|
|
145
145
|
return {
|
|
146
146
|
name: sourceCode.text.slice(...type.range),
|
|
147
147
|
size: rangeToDiff.rangeToDiff(type.range),
|
|
148
|
+
node: structuredClone(type),
|
|
148
149
|
group: getGroup(),
|
|
149
|
-
node: type,
|
|
150
150
|
}
|
|
151
151
|
})
|
|
152
152
|
pairwise.pairwise(nodes, (left, right) => {
|
|
@@ -144,8 +144,8 @@ const sortIntersectionTypes = createEslintRule({
|
|
|
144
144
|
return {
|
|
145
145
|
name: sourceCode.text.slice(...type.range),
|
|
146
146
|
size: rangeToDiff(type.range),
|
|
147
|
+
node: structuredClone(type),
|
|
147
148
|
group: getGroup(),
|
|
148
|
-
node: type,
|
|
149
149
|
}
|
|
150
150
|
})
|
|
151
151
|
pairwise(nodes, (left, right) => {
|