eslint-plugin-logical-imports 0.2.2 → 0.2.4
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/README.md +136 -100
- package/build/src/rule.js +167 -94
- package/build/src/rule.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,30 +1,53 @@
|
|
|
1
1
|
# eslint-plugin-logical-imports
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Sort import declarations as an index of local names.
|
|
4
|
+
Autofix in one pass with `--fix`.
|
|
4
5
|
|
|
5
|
-
* [
|
|
6
|
-
* [
|
|
7
|
-
|
|
8
|
-
* [Block glossary](#block-glossary)
|
|
6
|
+
* [What's this?](#whats-this)
|
|
7
|
+
* [Why?](#why)
|
|
8
|
+
* [Show me an example](#show-me-an-example)
|
|
9
9
|
* [Behaviour](#behaviour)
|
|
10
10
|
* [How do I install it?](#how-do-i-install-it)
|
|
11
11
|
* [How do I configure it?](#how-do-i-configure-it)
|
|
12
|
+
* [Options](#options)
|
|
13
|
+
* [Block glossary](#block-glossary)
|
|
12
14
|
* [How do I use it?](#how-do-i-use-it)
|
|
13
|
-
* [What about performance?](#what-about-performance)
|
|
14
15
|
* [Can I control how it handles import blocks?](#can-i-control-how-it-handles-import-blocks)
|
|
15
|
-
* [Single imports is crazy,
|
|
16
|
+
* [Single imports is crazy, what about performance?](#single-imports-is-crazy-what-about-performance)
|
|
17
|
+
* [Single imports is still crazy, can I opt out of that part?](#single-imports-is-still-crazy-can-i-opt-out-of-that-part)
|
|
16
18
|
* [What alternatives exist?](#what-alternatives-exist)
|
|
17
|
-
* [Examples](#examples)
|
|
18
19
|
* [Change log](#change-log)
|
|
19
20
|
* [License](#license)
|
|
20
21
|
|
|
21
|
-
##
|
|
22
|
+
## What's this?
|
|
23
|
+
|
|
24
|
+
An ESLint plugin that enforces
|
|
25
|
+
an unconventional, highly opinionated but also very logical
|
|
26
|
+
import style:
|
|
27
|
+
|
|
28
|
+
1. Declarations are sorted alphabetically by the local name.
|
|
29
|
+
The thing that is actually referenced in the rest of the codebase
|
|
30
|
+
is the thing that drives the ordering of imports.
|
|
31
|
+
|
|
32
|
+
2. One import per declaration.
|
|
33
|
+
If you need multiple imports from a module,
|
|
34
|
+
there must be equally many declarations.
|
|
35
|
+
|
|
36
|
+
Applied in combination,
|
|
37
|
+
these principles ensure imports are ordered like a dictionary,
|
|
38
|
+
or the index of a book.
|
|
39
|
+
|
|
40
|
+
## Why?
|
|
41
|
+
|
|
42
|
+
Because you're sorting imports wrong!
|
|
43
|
+
|
|
44
|
+
> No I'm not.
|
|
22
45
|
|
|
23
46
|
I think you are!
|
|
24
|
-
|
|
25
|
-
If you disagree with any
|
|
26
|
-
|
|
27
|
-
|
|
47
|
+
Allow me to explain why.
|
|
48
|
+
If you disagree with any of these points,
|
|
49
|
+
you can stop reading and move on with your life.
|
|
50
|
+
It's not for everyone. 👍
|
|
28
51
|
|
|
29
52
|
1. **What is the point of sorting anything?**
|
|
30
53
|
|
|
@@ -68,45 +91,45 @@ This tool is not meant for you. 👍
|
|
|
68
91
|
By breaking down declarations to a single import each,
|
|
69
92
|
then sorting them alphabetically by the local name.
|
|
70
93
|
|
|
71
|
-
##
|
|
94
|
+
## Show me an example
|
|
72
95
|
|
|
73
|
-
|
|
74
|
-
an unconventional, highly opinionated but also very logical
|
|
75
|
-
import style:
|
|
96
|
+
Before:
|
|
76
97
|
|
|
77
|
-
|
|
78
|
-
If you need multiple imports from a module,
|
|
79
|
-
there must be equally many declarations.
|
|
98
|
+
<!-- example:before -->
|
|
80
99
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
is the thing that should drive the ordering of imports.
|
|
100
|
+
```js
|
|
101
|
+
'use client';
|
|
84
102
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
103
|
+
import { useState, useEffect } from 'react';
|
|
104
|
+
import Link from 'next/link';
|
|
105
|
+
import { format } from 'date-fns';
|
|
106
|
+
import { z } from 'zod';
|
|
107
|
+
import { useQuery } from '@tanstack/react-query';
|
|
108
|
+
import { Logo } from './components/logo';
|
|
109
|
+
import { Spinner as Loader } from './components/spinner';
|
|
110
|
+
import { Calendar } from 'lucide-react';
|
|
111
|
+
import { useUser } from './hooks/use-user';
|
|
112
|
+
```
|
|
88
113
|
|
|
89
|
-
|
|
114
|
+
After, with recommended config:
|
|
90
115
|
|
|
91
|
-
|
|
92
|
-
------|----|-------|-----------
|
|
93
|
-
`allowMultipleSpecifiers`|`boolean`|`false`|Set to `true` to all multi-imports like `{ a, b }`
|
|
94
|
-
`blocks`|`string[]`|`['builtin', 'external', 'internal']`|Change the handling of import blocks, or use `[]` for a single block.
|
|
116
|
+
<!-- example:after -->
|
|
95
117
|
|
|
96
|
-
|
|
118
|
+
```js
|
|
119
|
+
'use client';
|
|
97
120
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
`internal:types`|Type-only imports of internal dependencies
|
|
121
|
+
import { Calendar } from 'lucide-react';
|
|
122
|
+
import { format } from 'date-fns';
|
|
123
|
+
import Link from 'next/link';
|
|
124
|
+
import { useEffect } from 'react';
|
|
125
|
+
import { useQuery } from '@tanstack/react-query';
|
|
126
|
+
import { useState } from 'react';
|
|
127
|
+
import { z } from 'zod';
|
|
106
128
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
129
|
+
import { Spinner as Loader } from './components/spinner';
|
|
130
|
+
import { Logo } from './components/logo';
|
|
131
|
+
import { useUser } from './hooks/use-user';
|
|
132
|
+
```
|
|
110
133
|
|
|
111
134
|
### Behaviour
|
|
112
135
|
|
|
@@ -124,16 +147,27 @@ so the default config merges types into their runtime blocks.
|
|
|
124
147
|
Comparison is then case-insensitive `localeCompare`,
|
|
125
148
|
with ASCII tie-break for stability.
|
|
126
149
|
|
|
127
|
-
*
|
|
128
|
-
|
|
150
|
+
* Comments stay attached to their import when line-adjacent.
|
|
151
|
+
A leading line or block comment immediately above an import
|
|
152
|
+
moves with that import,
|
|
153
|
+
and a trailing same-line comment stays on the right.
|
|
154
|
+
|
|
155
|
+
* Comments at the very start of a file,
|
|
156
|
+
e.g. license headers,
|
|
157
|
+
are the exception.
|
|
158
|
+
They always stay rooted at the top of the file
|
|
159
|
+
and never move with imports.
|
|
129
160
|
|
|
130
|
-
* Comments
|
|
131
|
-
|
|
132
|
-
|
|
161
|
+
* Comments separated from the following import
|
|
162
|
+
by a blank line
|
|
163
|
+
act as fences.
|
|
164
|
+
Imports either side of a fence
|
|
165
|
+
are sorted independently.
|
|
133
166
|
|
|
134
|
-
*
|
|
135
|
-
|
|
136
|
-
|
|
167
|
+
* Side-effect imports (`import 'foo'`)
|
|
168
|
+
also act as fences.
|
|
169
|
+
They're never reordered
|
|
170
|
+
and imports either side are sorted independently.
|
|
137
171
|
|
|
138
172
|
* Line endings (LF or CRLF)
|
|
139
173
|
are detected per file.
|
|
@@ -144,7 +178,7 @@ so the default config merges types into their runtime blocks.
|
|
|
144
178
|
npm install --save-dev eslint-plugin-logical-imports
|
|
145
179
|
```
|
|
146
180
|
|
|
147
|
-
|
|
181
|
+
Tested with ESLint v10 and Oxlint v1.
|
|
148
182
|
|
|
149
183
|
## How do I configure it?
|
|
150
184
|
|
|
@@ -161,7 +195,22 @@ export default [
|
|
|
161
195
|
];
|
|
162
196
|
```
|
|
163
197
|
|
|
164
|
-
Or
|
|
198
|
+
Or to your `.oxlintrc.json`:
|
|
199
|
+
|
|
200
|
+
```json
|
|
201
|
+
{
|
|
202
|
+
"$schema": "./node_modules/oxlint/configuration_schema.json",
|
|
203
|
+
"jsPlugins": [{
|
|
204
|
+
"name": "logical-imports",
|
|
205
|
+
"specifier": "eslint-plugin-logical-imports"
|
|
206
|
+
}],
|
|
207
|
+
"rules": {
|
|
208
|
+
"logical-imports/order": "error"
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
To configure it manually:
|
|
165
214
|
|
|
166
215
|
```js
|
|
167
216
|
// ...
|
|
@@ -181,19 +230,34 @@ export default [
|
|
|
181
230
|
];
|
|
182
231
|
```
|
|
183
232
|
|
|
184
|
-
|
|
233
|
+
### Options
|
|
185
234
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
235
|
+
Option|Type|Default|Description
|
|
236
|
+
------|----|-------|-----------
|
|
237
|
+
`allowMultipleSpecifiers`|`boolean`|`false`|Set to `true` to allow multi-imports like `{ a, b }`
|
|
238
|
+
`blocks`|`string[]`|`['builtin', 'external', 'internal']`|Change the handling of import blocks, or use `[]` for a single block.
|
|
190
239
|
|
|
191
|
-
|
|
240
|
+
### Block glossary
|
|
192
241
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
242
|
+
Value|Matches
|
|
243
|
+
-----|-------
|
|
244
|
+
`builtin`|Node/Deno/Bun builtins, e.g. `node:fs`, `module`, `bun:test`
|
|
245
|
+
`builtin:types`|Type-only imports of builtins
|
|
246
|
+
`external`|External dependencies (npm packages)
|
|
247
|
+
`external:types`|Type-only imports of external dependencies
|
|
248
|
+
`internal`|Local dependencies, e.g. `./foo/bar`, `../baz`, `/qux`
|
|
249
|
+
`internal:types`|Type-only imports of internal dependencies
|
|
250
|
+
|
|
251
|
+
If a `:types` variant is omitted from `blocks`,
|
|
252
|
+
type imports of that category fall back to the runtime-block peer,
|
|
253
|
+
so the default config merges types into their runtime blocks.
|
|
254
|
+
|
|
255
|
+
## How do I use it?
|
|
256
|
+
|
|
257
|
+
Just run `eslint` or `oxlint` as you normally would.
|
|
258
|
+
The plugin implements a single, atomic fix
|
|
259
|
+
so `eslint --fix` and `oxlint --fix` converge in one pass
|
|
260
|
+
(i.e. they're guaranteed to work).
|
|
197
261
|
|
|
198
262
|
## Can I control how it handles import blocks?
|
|
199
263
|
|
|
@@ -235,7 +299,7 @@ export default [
|
|
|
235
299
|
];
|
|
236
300
|
```
|
|
237
301
|
|
|
238
|
-
Or group all imports
|
|
302
|
+
Or group all imports together in a single block:
|
|
239
303
|
|
|
240
304
|
```js
|
|
241
305
|
// ...
|
|
@@ -254,7 +318,14 @@ export default [
|
|
|
254
318
|
];
|
|
255
319
|
```
|
|
256
320
|
|
|
257
|
-
## Single imports is crazy,
|
|
321
|
+
## Single imports is crazy, what about performance?
|
|
322
|
+
|
|
323
|
+
There's no impact from splitting imports across multiple declarations.
|
|
324
|
+
The [spec](https://262.ecma-international.org/16.0/index.html#sec-HostLoadImportedModule) mandates
|
|
325
|
+
that all imports of a module must resolve to the same cached hit.
|
|
326
|
+
This works in all runtimes and bundlers.
|
|
327
|
+
|
|
328
|
+
## Single imports is still crazy, can I opt out of that part?
|
|
258
329
|
|
|
259
330
|
_Deep sigh, sad face._
|
|
260
331
|
|
|
@@ -293,41 +364,6 @@ the specifiers will not be sorted.
|
|
|
293
364
|
Sorts alphabetically by module path,
|
|
294
365
|
wrong.
|
|
295
366
|
|
|
296
|
-
## Examples
|
|
297
|
-
|
|
298
|
-
Before:
|
|
299
|
-
|
|
300
|
-
<!-- example:before -->
|
|
301
|
-
|
|
302
|
-
```js
|
|
303
|
-
import { z } from 'zod';
|
|
304
|
-
import { format } from 'date-fns';
|
|
305
|
-
import { readFile } from 'node:fs/promises';
|
|
306
|
-
import { useState, useEffect } from 'react';
|
|
307
|
-
import { Component as Widget } from './app/widget';
|
|
308
|
-
import express from 'express';
|
|
309
|
-
import { format as utilFormat } from 'node:util';
|
|
310
|
-
import * as utils from './utils';
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
After, with recommended config:
|
|
314
|
-
|
|
315
|
-
<!-- example:after -->
|
|
316
|
-
|
|
317
|
-
```js
|
|
318
|
-
import { readFile } from 'node:fs/promises';
|
|
319
|
-
import { format as utilFormat } from 'node:util';
|
|
320
|
-
|
|
321
|
-
import express from 'express';
|
|
322
|
-
import { format } from 'date-fns';
|
|
323
|
-
import { useEffect } from 'react';
|
|
324
|
-
import { useState } from 'react';
|
|
325
|
-
import { z } from 'zod';
|
|
326
|
-
|
|
327
|
-
import * as utils from './utils';
|
|
328
|
-
import { Component as Widget } from './app/widget';
|
|
329
|
-
```
|
|
330
|
-
|
|
331
367
|
## Change log
|
|
332
368
|
|
|
333
369
|
[CHANGELOG.md](CHANGELOG.md)
|
package/build/src/rule.js
CHANGED
|
@@ -20,33 +20,46 @@ const Messages = {
|
|
|
20
20
|
muddledBlocks: 'muddledBlocks',
|
|
21
21
|
multipleSpecifiers: 'multipleSpecifiers',
|
|
22
22
|
};
|
|
23
|
+
const BASE_BLOCKS = [
|
|
24
|
+
BlockTypes.builtin,
|
|
25
|
+
BlockTypes.external,
|
|
26
|
+
BlockTypes.internal,
|
|
27
|
+
];
|
|
23
28
|
const rule = {
|
|
24
29
|
create(context) {
|
|
25
30
|
const { allowMultipleSpecifiers, blocks } = (context.options[0] ?? {});
|
|
26
31
|
const blockOrder = blocks ?? DEFAULT_BLOCKS;
|
|
32
|
+
if (blockOrder.length > 0) {
|
|
33
|
+
const missing = BASE_BLOCKS.filter((block) => !blockOrder.includes(block));
|
|
34
|
+
if (missing.length > 0) {
|
|
35
|
+
throw new Error(`logical-imports/order: blocks must include all base categories or be empty (missing: ${missing.join(', ')})`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
27
38
|
const { sourceCode } = context;
|
|
28
39
|
const lineEnding = detectLineEnding(sourceCode.text);
|
|
29
40
|
const isFlat = blockOrder.length === 0;
|
|
30
41
|
return {
|
|
31
42
|
'Program:exit'() {
|
|
32
|
-
for (const chunk of getChunks(sourceCode.ast.body)) {
|
|
33
|
-
const extendedRanges = chunk.map((decl
|
|
43
|
+
for (const chunk of getChunks(sourceCode.ast.body, sourceCode)) {
|
|
44
|
+
const extendedRanges = chunk.map((decl) => getExtendedRange(decl, sourceCode));
|
|
34
45
|
const disorderedSpecDecls = allowMultipleSpecifiers
|
|
35
46
|
? getDisorderedSpecDecls(chunk, sourceCode)
|
|
36
47
|
: [];
|
|
37
48
|
const multiSpecDecls = allowMultipleSpecifiers
|
|
38
49
|
? []
|
|
39
50
|
: chunk.filter((decl) => decl.specifiers.length > 1);
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const
|
|
44
|
-
|
|
51
|
+
const muddledDecl = isFlat
|
|
52
|
+
? null
|
|
53
|
+
: getMuddledBlocksDecl(chunk, extendedRanges, sourceCode, blockOrder);
|
|
54
|
+
const disorderedBlocksDecl = isFlat || muddledDecl !== null
|
|
55
|
+
? null
|
|
56
|
+
: getDisorderedBlocksDecl(chunk, blockOrder);
|
|
57
|
+
const disorderedDecl = getFirstDisorderedDecl(chunk, sourceCode, blockOrder, allowMultipleSpecifiers ?? false);
|
|
45
58
|
if (disorderedSpecDecls.length === 0
|
|
46
59
|
&& multiSpecDecls.length === 0
|
|
47
|
-
&&
|
|
48
|
-
&&
|
|
49
|
-
&&
|
|
60
|
+
&& muddledDecl === null
|
|
61
|
+
&& disorderedBlocksDecl === null
|
|
62
|
+
&& disorderedDecl === null) {
|
|
50
63
|
continue;
|
|
51
64
|
}
|
|
52
65
|
const newText = buildChunkText(chunk, extendedRanges, sourceCode, blockOrder, lineEnding, allowMultipleSpecifiers ?? false);
|
|
@@ -55,16 +68,21 @@ const rule = {
|
|
|
55
68
|
context.report({ fix, messageId: Messages.disorderedSpecifiers, node: decl });
|
|
56
69
|
}
|
|
57
70
|
for (const decl of multiSpecDecls) {
|
|
58
|
-
|
|
71
|
+
if (hasInsideComments(decl, sourceCode)) {
|
|
72
|
+
context.report({ messageId: Messages.multipleSpecifiers, node: decl });
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
context.report({ fix, messageId: Messages.multipleSpecifiers, node: decl });
|
|
76
|
+
}
|
|
59
77
|
}
|
|
60
|
-
if (
|
|
61
|
-
context.report({ fix, messageId: Messages.muddledBlocks, node:
|
|
78
|
+
if (muddledDecl !== null) {
|
|
79
|
+
context.report({ fix, messageId: Messages.muddledBlocks, node: muddledDecl });
|
|
62
80
|
}
|
|
63
|
-
if (
|
|
64
|
-
context.report({ fix, messageId: Messages.disorderedBlocks, node:
|
|
81
|
+
if (disorderedBlocksDecl !== null) {
|
|
82
|
+
context.report({ fix, messageId: Messages.disorderedBlocks, node: disorderedBlocksDecl });
|
|
65
83
|
}
|
|
66
|
-
if (
|
|
67
|
-
context.report({ fix, messageId: Messages.disorderedDeclarations, node:
|
|
84
|
+
if (disorderedDecl !== null) {
|
|
85
|
+
context.report({ fix, messageId: Messages.disorderedDeclarations, node: disorderedDecl });
|
|
68
86
|
}
|
|
69
87
|
}
|
|
70
88
|
},
|
|
@@ -92,20 +110,32 @@ const rule = {
|
|
|
92
110
|
type: 'boolean',
|
|
93
111
|
},
|
|
94
112
|
blocks: {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
113
|
+
anyOf: [
|
|
114
|
+
{
|
|
115
|
+
maxItems: 0,
|
|
116
|
+
type: 'array',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
allOf: [
|
|
120
|
+
{ contains: { const: 'builtin' } },
|
|
121
|
+
{ contains: { const: 'external' } },
|
|
122
|
+
{ contains: { const: 'internal' } },
|
|
123
|
+
],
|
|
124
|
+
items: {
|
|
125
|
+
enum: [
|
|
126
|
+
'builtin',
|
|
127
|
+
'builtin:types',
|
|
128
|
+
'external',
|
|
129
|
+
'external:types',
|
|
130
|
+
'internal',
|
|
131
|
+
'internal:types',
|
|
132
|
+
],
|
|
133
|
+
},
|
|
134
|
+
maxItems: 6,
|
|
135
|
+
type: 'array',
|
|
136
|
+
uniqueItems: true,
|
|
137
|
+
},
|
|
138
|
+
],
|
|
109
139
|
},
|
|
110
140
|
},
|
|
111
141
|
type: 'object',
|
|
@@ -119,12 +149,16 @@ const rule = {
|
|
|
119
149
|
},
|
|
120
150
|
};
|
|
121
151
|
export default rule;
|
|
122
|
-
function getChunks(body) {
|
|
152
|
+
function getChunks(body, sourceCode) {
|
|
123
153
|
const chunks = [];
|
|
124
154
|
let chunk = [];
|
|
125
155
|
for (const node of body) {
|
|
126
156
|
const isSortable = node.type === 'ImportDeclaration' && node.specifiers.length > 0;
|
|
127
157
|
if (isSortable) {
|
|
158
|
+
if (chunk.length > 0 && hasFloatingCommentBetween(chunk[chunk.length - 1], node, sourceCode)) {
|
|
159
|
+
chunks.push(chunk);
|
|
160
|
+
chunk = [];
|
|
161
|
+
}
|
|
128
162
|
chunk.push(node);
|
|
129
163
|
}
|
|
130
164
|
else if (chunk.length > 0) {
|
|
@@ -137,6 +171,22 @@ function getChunks(body) {
|
|
|
137
171
|
}
|
|
138
172
|
return chunks;
|
|
139
173
|
}
|
|
174
|
+
function hasFloatingCommentBetween(prev, curr, sourceCode) {
|
|
175
|
+
const between = sourceCode.getCommentsBefore(curr).filter((comment) => comment.range[0] > prev.range[1]
|
|
176
|
+
&& comment.loc.start.line !== prev.loc.end.line);
|
|
177
|
+
if (between.length === 0) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
let nextLine = curr.loc.start.line;
|
|
181
|
+
for (let i = between.length - 1; i >= 0; i--) {
|
|
182
|
+
const comment = between[i];
|
|
183
|
+
if (nextLine - comment.loc.end.line !== 1) {
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
nextLine = comment.loc.start.line;
|
|
187
|
+
}
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
140
190
|
function buildChunkText(chunk, extendedRanges, sourceCode, blockOrder, lineEnding, allowMultipleSpecifiers) {
|
|
141
191
|
const items = getLogicalImports(chunk, extendedRanges, sourceCode, blockOrder, allowMultipleSpecifiers);
|
|
142
192
|
if (blockOrder.length === 0) {
|
|
@@ -165,12 +215,15 @@ function getLogicalImports(chunk, extendedRanges, sourceCode, blockOrder, allowM
|
|
|
165
215
|
for (let i = 0; i < chunk.length; i++) {
|
|
166
216
|
const decl = chunk[i];
|
|
167
217
|
const block = classify(decl, blockOrder);
|
|
168
|
-
if (decl.specifiers.length > 1
|
|
218
|
+
if (decl.specifiers.length > 1
|
|
219
|
+
&& !allowMultipleSpecifiers
|
|
220
|
+
&& !hasInsideComments(decl, sourceCode)) {
|
|
221
|
+
const tail = getDeclTail(decl, sourceCode);
|
|
169
222
|
for (const specifier of decl.specifiers) {
|
|
170
223
|
items.push({
|
|
171
224
|
block,
|
|
172
225
|
sortKey: specifier.local.name,
|
|
173
|
-
text: formatSpecifier(decl, specifier),
|
|
226
|
+
text: formatSpecifier(decl, specifier, tail),
|
|
174
227
|
});
|
|
175
228
|
}
|
|
176
229
|
}
|
|
@@ -182,11 +235,12 @@ function getLogicalImports(chunk, extendedRanges, sourceCode, blockOrder, allowM
|
|
|
182
235
|
&& !hasInsideComments(decl, sourceCode)
|
|
183
236
|
&& isDisorderedNamed(decl)) {
|
|
184
237
|
const leading = sourceCode.text.slice(start, decl.range[0]);
|
|
238
|
+
const tail = getDeclTail(decl, sourceCode);
|
|
185
239
|
const trailing = sourceCode.text.slice(decl.range[1], end);
|
|
186
240
|
items.push({
|
|
187
241
|
block,
|
|
188
242
|
sortKey,
|
|
189
|
-
text: leading + rebuildMultiSpecifierText(decl) + trailing,
|
|
243
|
+
text: leading + rebuildMultiSpecifierText(decl, tail) + trailing,
|
|
190
244
|
});
|
|
191
245
|
}
|
|
192
246
|
else {
|
|
@@ -200,7 +254,7 @@ function getLogicalImports(chunk, extendedRanges, sourceCode, blockOrder, allowM
|
|
|
200
254
|
}
|
|
201
255
|
return items;
|
|
202
256
|
}
|
|
203
|
-
function rebuildMultiSpecifierText(decl) {
|
|
257
|
+
function rebuildMultiSpecifierText(decl, tail) {
|
|
204
258
|
const named = decl.specifiers.filter(isImportSpecifier);
|
|
205
259
|
const sortedNamedText = [...named]
|
|
206
260
|
.sort((a, b) => compareKeys(a.local.name, b.local.name))
|
|
@@ -212,7 +266,7 @@ function rebuildMultiSpecifierText(decl) {
|
|
|
212
266
|
: `{ ${sortedNamedText} }`;
|
|
213
267
|
const isTypeDecl = decl.importKind === 'type';
|
|
214
268
|
const prefix = isTypeDecl ? 'type ' : '';
|
|
215
|
-
return `import ${prefix}${lhs} from ${decl.source.raw}
|
|
269
|
+
return `import ${prefix}${lhs} from ${decl.source.raw}${tail}`;
|
|
216
270
|
}
|
|
217
271
|
function formatNamedSpecifier(specifier) {
|
|
218
272
|
const isType = specifier.importKind === 'type';
|
|
@@ -255,20 +309,32 @@ function isDisorderedNamed(decl) {
|
|
|
255
309
|
function hasInsideComments(decl, sourceCode) {
|
|
256
310
|
return sourceCode.getCommentsInside(decl).length > 0;
|
|
257
311
|
}
|
|
258
|
-
function getExtendedRange(decl,
|
|
259
|
-
const leading = getLeadingComments(decl,
|
|
312
|
+
function getExtendedRange(decl, sourceCode) {
|
|
313
|
+
const leading = getLeadingComments(decl, sourceCode);
|
|
260
314
|
const trailing = getTrailingSameLineComments(decl, sourceCode);
|
|
261
315
|
const start = leading.length > 0 ? leading[0].range[0] : decl.range[0];
|
|
262
316
|
const end = trailing.length > 0 ? trailing[trailing.length - 1].range[1] : decl.range[1];
|
|
263
317
|
return [start, end];
|
|
264
318
|
}
|
|
265
|
-
function getLeadingComments(decl,
|
|
266
|
-
const
|
|
267
|
-
|
|
268
|
-
|
|
319
|
+
function getLeadingComments(decl, sourceCode) {
|
|
320
|
+
const body = sourceCode.ast.body;
|
|
321
|
+
// File-top comments (e.g. license headers) stay rooted; they belong to the top of the file.
|
|
322
|
+
if (decl === body[0]) {
|
|
323
|
+
return [];
|
|
269
324
|
}
|
|
270
|
-
const prevEndLine =
|
|
271
|
-
|
|
325
|
+
const prevEndLine = body[body.indexOf(decl) - 1].loc.end.line;
|
|
326
|
+
const before = sourceCode.getCommentsBefore(decl).filter((comment) => comment.loc.start.line !== prevEndLine);
|
|
327
|
+
const leading = [];
|
|
328
|
+
let nextLine = decl.loc.start.line;
|
|
329
|
+
for (let i = before.length - 1; i >= 0; i--) {
|
|
330
|
+
const comment = before[i];
|
|
331
|
+
if (nextLine - comment.loc.end.line !== 1) {
|
|
332
|
+
break;
|
|
333
|
+
}
|
|
334
|
+
leading.unshift(comment);
|
|
335
|
+
nextLine = comment.loc.start.line;
|
|
336
|
+
}
|
|
337
|
+
return leading;
|
|
272
338
|
}
|
|
273
339
|
function getTrailingSameLineComments(decl, sourceCode) {
|
|
274
340
|
const after = sourceCode.getCommentsAfter(decl);
|
|
@@ -306,50 +372,49 @@ function isTypeImport(decl) {
|
|
|
306
372
|
}
|
|
307
373
|
return decl.specifiers.some((specifier) => specifier.importKind === 'type');
|
|
308
374
|
}
|
|
309
|
-
function
|
|
310
|
-
const
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
375
|
+
function getMuddledBlocksDecl(chunk, extendedRanges, sourceCode, blockOrder) {
|
|
376
|
+
const closedBlocks = new Set();
|
|
377
|
+
let prevBlock = null;
|
|
378
|
+
for (let i = 0; i < chunk.length; i++) {
|
|
379
|
+
const block = classify(chunk[i], blockOrder);
|
|
380
|
+
if (prevBlock !== null && prevBlock !== block) {
|
|
381
|
+
closedBlocks.add(prevBlock);
|
|
382
|
+
if (closedBlocks.has(block)) {
|
|
383
|
+
return chunk[i];
|
|
384
|
+
}
|
|
385
|
+
const between = sourceCode.text.slice(extendedRanges[i - 1][1], extendedRanges[i][0]);
|
|
386
|
+
const newlines = (between.match(/\n/g) ?? []).length;
|
|
387
|
+
if (newlines < 2) {
|
|
388
|
+
return chunk[i];
|
|
389
|
+
}
|
|
315
390
|
}
|
|
391
|
+
prevBlock = block;
|
|
316
392
|
}
|
|
317
|
-
return
|
|
393
|
+
return null;
|
|
318
394
|
}
|
|
319
|
-
function
|
|
395
|
+
function getDisorderedBlocksDecl(chunk, blockOrder) {
|
|
320
396
|
for (let i = 1; i < chunk.length; i++) {
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
const newlines = (between.match(/\n/g) ?? []).length;
|
|
326
|
-
if (newlines < 2) {
|
|
327
|
-
return true;
|
|
397
|
+
const prevIdx = blockOrder.indexOf(classify(chunk[i - 1], blockOrder));
|
|
398
|
+
const currIdx = blockOrder.indexOf(classify(chunk[i], blockOrder));
|
|
399
|
+
if (currIdx < prevIdx) {
|
|
400
|
+
return chunk[i];
|
|
328
401
|
}
|
|
329
402
|
}
|
|
330
|
-
return
|
|
403
|
+
return null;
|
|
331
404
|
}
|
|
332
|
-
function
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
while (i < blockOrder.length && blockOrder[i] !== run) {
|
|
336
|
-
i++;
|
|
337
|
-
}
|
|
338
|
-
if (i >= blockOrder.length) {
|
|
339
|
-
return false;
|
|
340
|
-
}
|
|
341
|
-
i++;
|
|
405
|
+
function getFirstDisorderedDecl(chunk, sourceCode, blockOrder, allowMultipleSpecifiers) {
|
|
406
|
+
if (chunk.length < 2) {
|
|
407
|
+
return null;
|
|
342
408
|
}
|
|
343
|
-
return true;
|
|
344
|
-
}
|
|
345
|
-
function hasDisorderedDecls(chunk, sourceCode, blockOrder, allowMultipleSpecifiers) {
|
|
346
409
|
const compare = (a, b) => compareKeys(getEffectiveSortKey(a, sourceCode, allowMultipleSpecifiers), getEffectiveSortKey(b, sourceCode, allowMultipleSpecifiers));
|
|
347
410
|
if (blockOrder.length === 0) {
|
|
348
|
-
if (chunk.length < 2) {
|
|
349
|
-
return false;
|
|
350
|
-
}
|
|
351
411
|
const sorted = [...chunk].sort(compare);
|
|
352
|
-
|
|
412
|
+
for (let i = 0; i < sorted.length; i++) {
|
|
413
|
+
if (sorted[i] !== chunk[i]) {
|
|
414
|
+
return sorted[i];
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
return null;
|
|
353
418
|
}
|
|
354
419
|
const buckets = new Map();
|
|
355
420
|
for (const decl of chunk) {
|
|
@@ -358,39 +423,47 @@ function hasDisorderedDecls(chunk, sourceCode, blockOrder, allowMultipleSpecifie
|
|
|
358
423
|
bucket.push(decl);
|
|
359
424
|
buckets.set(block, bucket);
|
|
360
425
|
}
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
426
|
+
const cursors = new Map();
|
|
427
|
+
for (const [block, bucket] of buckets) {
|
|
428
|
+
bucket.sort(compare);
|
|
429
|
+
cursors.set(block, 0);
|
|
430
|
+
}
|
|
431
|
+
for (const decl of chunk) {
|
|
432
|
+
const block = classify(decl, blockOrder);
|
|
433
|
+
const sorted = buckets.get(block);
|
|
434
|
+
const cursor = cursors.get(block);
|
|
435
|
+
if (sorted[cursor] !== decl) {
|
|
436
|
+
return sorted[cursor];
|
|
368
437
|
}
|
|
438
|
+
cursors.set(block, cursor + 1);
|
|
369
439
|
}
|
|
370
|
-
return
|
|
440
|
+
return null;
|
|
371
441
|
}
|
|
372
442
|
function getDisorderedSpecDecls(chunk, sourceCode) {
|
|
373
443
|
return chunk.filter((decl) => decl.specifiers.length > 1
|
|
374
444
|
&& !hasInsideComments(decl, sourceCode)
|
|
375
445
|
&& isDisorderedNamed(decl));
|
|
376
446
|
}
|
|
377
|
-
function formatSpecifier(decl, specifier) {
|
|
447
|
+
function formatSpecifier(decl, specifier, tail) {
|
|
378
448
|
if (isImportDefaultSpecifier(specifier)) {
|
|
379
|
-
return formatImport(specifier.local.name, decl.source.raw);
|
|
449
|
+
return formatImport(specifier.local.name, decl.source.raw, tail);
|
|
380
450
|
}
|
|
381
451
|
if (isImportNamespaceSpecifier(specifier)) {
|
|
382
|
-
return formatImport(`* as ${specifier.local.name}`, decl.source.raw);
|
|
452
|
+
return formatImport(`* as ${specifier.local.name}`, decl.source.raw, tail);
|
|
383
453
|
}
|
|
384
454
|
if (isIdentifier(specifier.imported) && specifier.imported.name === specifier.local.name) {
|
|
385
|
-
return formatImport(`{ ${specifier.local.name} }`, decl.source.raw);
|
|
455
|
+
return formatImport(`{ ${specifier.local.name} }`, decl.source.raw, tail);
|
|
386
456
|
}
|
|
387
457
|
const imported = isIdentifier(specifier.imported)
|
|
388
458
|
? specifier.imported.name
|
|
389
459
|
: specifier.imported.raw;
|
|
390
|
-
return formatImport(`{ ${imported} as ${specifier.local.name} }`, decl.source.raw);
|
|
460
|
+
return formatImport(`{ ${imported} as ${specifier.local.name} }`, decl.source.raw, tail);
|
|
461
|
+
}
|
|
462
|
+
function getDeclTail(decl, sourceCode) {
|
|
463
|
+
return sourceCode.text.slice(decl.source.range[1], decl.range[1]);
|
|
391
464
|
}
|
|
392
465
|
function compareKeys(a, b) {
|
|
393
|
-
const ci = a.localeCompare(b,
|
|
466
|
+
const ci = a.localeCompare(b, 'en', { sensitivity: 'base' });
|
|
394
467
|
if (ci !== 0) {
|
|
395
468
|
return ci;
|
|
396
469
|
}
|
|
@@ -408,7 +481,7 @@ function isImportNamespaceSpecifier(node) {
|
|
|
408
481
|
function isImportSpecifier(node) {
|
|
409
482
|
return node.type === 'ImportSpecifier';
|
|
410
483
|
}
|
|
411
|
-
function formatImport(lhs, rhs) {
|
|
412
|
-
return `import ${lhs} from ${rhs}
|
|
484
|
+
function formatImport(lhs, rhs, tail) {
|
|
485
|
+
return `import ${lhs} from ${rhs}${tail}`;
|
|
413
486
|
}
|
|
414
487
|
//# sourceMappingURL=rule.js.map
|
package/build/src/rule.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../../src/rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAyB7C,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,eAAe;IAC7B,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,gBAAgB;IAC/B,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,gBAAgB;CACvB,CAAC;AAGX,MAAM,cAAc,GAAiB;IACnC,UAAU,CAAC,OAAO;IAClB,UAAU,CAAC,QAAQ;IACnB,UAAU,CAAC,QAAQ;CACpB,CAAC;AAEF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;AAEhD,MAAM,QAAQ,GAAG;IACf,gBAAgB,EAAE,kBAAkB;IACpC,sBAAsB,EAAE,wBAAwB;IAChD,oBAAoB,EAAE,sBAAsB;IAC5C,aAAa,EAAE,eAAe;IAC9B,kBAAkB,EAAE,oBAAoB;CAChC,CAAC;AAGX,MAAM,IAAI,GAAoB;IAC5B,MAAM,CAAC,OAAyB;QAC9B,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAY,CAAC;QAClF,MAAM,UAAU,GAAG,MAAM,IAAI,cAAc,CAAC;QAC5C,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAC/B,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAErD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;QAEvC,OAAO;YACL,cAAc;gBACZ,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnD,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAC3C,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAChE,CAAC;oBACF,MAAM,mBAAmB,GAAG,uBAAuB;wBACjD,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC;wBAC3C,CAAC,CAAC,EAAE,CAAC;oBACP,MAAM,cAAc,GAAG,uBAAuB;wBAC5C,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACvD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;oBAC3D,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAC3B,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM;2BAC/B,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,CACvE,CAAC;oBACF,MAAM,kBAAkB,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBACrF,MAAM,iBAAiB,GAAG,kBAAkB,CAC1C,KAAK,EACL,UAAU,EACV,UAAU,EACV,uBAAuB,IAAI,KAAK,CACjC,CAAC;oBAEF,IACE,mBAAmB,CAAC,MAAM,KAAK,CAAC;2BAC7B,cAAc,CAAC,MAAM,KAAK,CAAC;2BAC3B,CAAC,SAAS;2BACV,CAAC,kBAAkB;2BACnB,CAAC,iBAAiB,EACrB,CAAC;wBACD,SAAS;oBACX,CAAC;oBAED,MAAM,OAAO,GAAG,cAAc,CAC5B,KAAK,EACL,cAAc,EACd,UAAU,EACV,UAAU,EACV,UAAU,EACV,uBAAuB,IAAI,KAAK,CACjC,CAAC;oBACF,MAAM,GAAG,GAAG,CAAC,KAAqB,EAAE,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAC3D,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACpE,OAAO,CACR,CAAC;oBAEF,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE,CAAC;wBACvC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAChF,CAAC;oBAED,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;wBAClC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9E,CAAC;oBAED,IAAI,SAAS,EAAE,CAAC;wBACd,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC7E,CAAC;oBAED,IAAI,kBAAkB,EAAE,CAAC;wBACvB,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,gBAAgB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAChF,CAAC;oBAED,IAAI,iBAAiB,EAAE,CAAC;wBACtB,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,sBAAsB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACtF,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IACD,IAAI,EAAE;QACJ,IAAI,EAAE;YACJ,WAAW,EAAE,8DAA8D;YAC3E,GAAG,EAAE,0FAA0F;SAChG;QACD,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE;YACR,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,mEAAmE;YAChG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,yEAAyE;YAC5G,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,uEAAuE;YACxG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,oEAAoE;YAC9F,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,+FAA+F;SAC/H;QACD,MAAM,EAAE;YACN,KAAK,EAAE;gBACL;oBACE,oBAAoB,EAAE,KAAK;oBAC3B,UAAU,EAAE;wBACV,uBAAuB,EAAE;4BACvB,IAAI,EAAE,SAAS;yBAChB;wBACD,MAAM,EAAE;4BACN,KAAK,EAAE;gCACL,IAAI,EAAE;oCACJ,SAAS;oCACT,eAAe;oCACf,UAAU;oCACV,gBAAgB;oCAChB,UAAU;oCACV,gBAAgB;iCACjB;6BACF;4BACD,QAAQ,EAAE,CAAC;4BACX,QAAQ,EAAE,CAAC;4BACX,IAAI,EAAE,OAAO;4BACb,WAAW,EAAE,IAAI;yBAClB;qBACF;oBACD,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;YACX,IAAI,EAAE,OAAO;SACd;QACD,IAAI,EAAE,YAAY;KACnB;CACF,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,SAAS,SAAS,CAAC,IAAqB;IACtC,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,IAAI,KAAK,GAAwB,EAAE,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAEnF,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,KAAK,GAAG,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CACrB,KAA0B,EAC1B,cAAkC,EAClC,UAAsB,EACtB,UAAwB,EACxB,UAAkB,EAClB,uBAAgC;IAEhC,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,uBAAuB,CAAC,CAAC;IAExG,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK;aACT,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;aACjD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;aACxB,IAAI,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IAEvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,UAAU;SACd,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAClC,MAAM,CAAC,CAAC,MAAM,EAA6B,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;SACxF,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM;SACpB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;SACjD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;SACxB,IAAI,CAAC,UAAU,CAAC,CAAC;SACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,iBAAiB,CACxB,KAA0B,EAC1B,cAAkC,EAClC,UAAsB,EACtB,UAAwB,EACxB,uBAAgC;IAEhC,MAAM,KAAK,GAAoB,EAAE,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAEzC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC3D,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,KAAK,CAAC,IAAI,CAAC;oBACT,KAAK;oBACL,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI;oBAC7B,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC;iBACvC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YAEvC,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,uBAAuB,CAAC,CAAC;YAE/E,IACE,uBAAuB;mBACpB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;mBAC1B,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC;mBACpC,iBAAiB,CAAC,IAAI,CAAC,EAC1B,CAAC;gBACD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7D,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC;oBACT,KAAK;oBACL,OAAO;oBACP,IAAI,EAAE,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,GAAG,QAAQ;iBAC3D,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC;oBACT,KAAK;oBACL,OAAO;oBACP,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;iBACxC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAuB;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,CAAC,GAAG,KAAK,CAAC;SAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACvD,GAAG,CAAC,oBAAoB,CAAC;SACzB,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,WAAW;QACrB,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,OAAO,eAAe,IAAI;QACrD,CAAC,CAAC,KAAK,eAAe,IAAI,CAAC;IAE7B,MAAM,UAAU,GAAI,IAA2C,CAAC,UAAU,KAAK,MAAM,CAAC;IACtF,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzC,OAAO,UAAU,MAAM,GAAG,GAAG,SAAS,IAAI,CAAC,MAAM,CAAC,GAAI,GAAG,CAAC;AAC5D,CAAC;AAED,SAAS,oBAAoB,CAAC,SAA0B;IACtD,MAAM,MAAM,GAAI,SAA8C,CAAC,UAAU,KAAK,MAAM,CAAC;IACrF,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzC,IAAI,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACzF,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC/C,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI;QACzB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAI,CAAC;IAE5B,OAAO,GAAG,UAAU,GAAG,QAAQ,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAuB,EACvB,UAAsB,EACtB,uBAAgC;IAEhC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAErC,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED,IACE,uBAAuB;WACpB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;WAC1B,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,EACvC,CAAC;QACD,OAAO,IAAI,CAAC,UAAU;aACnB,MAAM,CAAC,iBAAiB,CAAC;aACzB,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;aACxC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9B,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAuB;IAChD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAExD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAClE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAuB,EAAE,UAAsB;IACxE,OAAO,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAuB,EACvB,QAAkC,EAClC,UAAsB;IAEtB,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,2BAA2B,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC;IAE3F,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAuB,EACvB,QAAkC,EAClC,UAAsB;IAEtB,MAAM,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAElD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IAE3C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAI,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAuB,EAAE,UAAsB;IAClF,MAAM,KAAK,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IAEvC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAI,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAEnD,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC;AAED,SAAS,QAAQ,CAAC,IAAuB,EAAE,UAAwB;IACjE,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAErC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,GAAG,SAAS,QAAsB,CAAC;QAEtD,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,IAAuB;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAe,CAAC;IAE3C,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACpE,OAAO,UAAU,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAED,OAAO,UAAU,CAAC,QAAQ,CAAC;AAC7B,CAAC;AAED,SAAS,YAAY,CAAC,IAAuB;IAC3C,IAAK,IAA2C,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACzB,CAAC,SAAS,EAAE,EAAE,CAAE,SAA+C,CAAC,UAAU,KAAK,MAAM,CACtF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAA0B,EAAE,UAAwB;IACxE,MAAM,IAAI,GAAiB,EAAE,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAEzC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAA0B,EAC1B,cAAkC,EAClC,UAAsB,EACtB,UAAwB;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC;YAC1E,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAErD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,IAAkB,EAAE,UAAwB;IACjE,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACtD,CAAC,EAAE,CAAC;QACN,CAAC;QAED,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,CAAC,EAAE,CAAC;IACN,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CACzB,KAA0B,EAC1B,UAAsB,EACtB,UAAwB,EACxB,uBAAgC;IAEhC,MAAM,OAAO,GAAG,CAAC,CAAoB,EAAE,CAAoB,EAAE,EAAE,CAAC,WAAW,CACzE,mBAAmB,CAAC,CAAC,EAAE,UAAU,EAAE,uBAAuB,CAAC,EAC3D,mBAAmB,CAAC,CAAC,EAAE,UAAU,EAAE,uBAAuB,CAAC,CAC5D,CAAC;IAEF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAExC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmC,CAAC;IAE3D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAA0B,EAC1B,UAAsB;IAEtB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;WACvB,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC;WACpC,iBAAiB,CAAC,IAAI,CAAC,CAC3B,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,IAAuB,EACvB,SAA8E;IAE9E,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,OAAO,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,0BAA0B,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,OAAO,YAAY,CAAC,QAAQ,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACzF,OAAO,YAAY,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC/C,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI;QACzB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAI,CAAC;IAE5B,OAAO,YAAY,CAAC,KAAK,QAAQ,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,WAAW,CAAC,CAAS,EAAE,CAAS;IACvC,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IAElE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,YAAY,CACnB,IAA0B;IAE1B,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC;AACpC,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAyE;IAEzE,OAAO,IAAI,CAAC,IAAI,KAAK,wBAAwB,CAAC;AAChD,CAAC;AAED,SAAS,0BAA0B,CACjC,IAAyE;IAEzE,OAAO,IAAI,CAAC,IAAI,KAAK,0BAA0B,CAAC;AAClD,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAyE;IAEzE,OAAO,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC;AACzC,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,GAAW;IAC5C,OAAO,UAAU,GAAG,SAAS,GAAG,GAAG,CAAC;AACtC,CAAC"}
|
|
1
|
+
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../../src/rule.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-logical-imports",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "ESLint plugin that enforces one specifier per import statement and alphabetical sort by local symbol name, with configurable block grouping.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Phil Booth (https://philbooth.me/)",
|