@futdevpro/dynamo-eslint 1.14.7 → 1.14.8
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/build/plugin/rules/import/import-order.d.ts.map +1 -1
- package/build/plugin/rules/import/import-order.js +41 -10
- package/build/plugin/rules/import/import-order.js.map +1 -1
- package/build/plugin/rules/import/import-order.spec.js +17 -1
- package/build/plugin/rules/import/import-order.spec.js.map +1 -1
- package/futdevpro-dynamo-eslint-1.14.8.tgz +0 -0
- package/package.json +1 -1
- package/src/plugin/rules/import/import-order.spec.ts +17 -1
- package/src/plugin/rules/import/import-order.ts +47 -10
- package/futdevpro-dynamo-eslint-1.14.7.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-order.d.ts","sourceRoot":"","sources":["../../../../src/plugin/rules/import/import-order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAO9B,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"import-order.d.ts","sourceRoot":"","sources":["../../../../src/plugin/rules/import/import-order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAO9B,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UAyLhB,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -77,22 +77,20 @@ const rule = {
|
|
|
77
77
|
});
|
|
78
78
|
// Remove empty groups
|
|
79
79
|
const nonEmptyGroups = groups.filter(group => group.imports.length > 0);
|
|
80
|
-
// Check if imports are in correct order
|
|
80
|
+
// Check if imports are in correct order and detect violations
|
|
81
|
+
let needsReordering = false;
|
|
81
82
|
let currentGroupIndex = 0;
|
|
82
83
|
for (let i = 0; i < importNodes.length; i++) {
|
|
83
84
|
const importNode = importNodes[i];
|
|
84
85
|
const expectedGroupType = getImportGroup(importNode);
|
|
85
|
-
const expectedGroup = nonEmptyGroups.find(g => g.type === expectedGroupType);
|
|
86
86
|
const expectedGroupIndex = nonEmptyGroups.findIndex(g => g.type === expectedGroupType);
|
|
87
87
|
if (expectedGroupIndex < currentGroupIndex) {
|
|
88
|
-
|
|
89
|
-
node: importNode,
|
|
90
|
-
messageId: 'misordered',
|
|
91
|
-
});
|
|
88
|
+
needsReordering = true;
|
|
92
89
|
}
|
|
93
90
|
currentGroupIndex = expectedGroupIndex;
|
|
94
91
|
}
|
|
95
92
|
// Check empty lines between groups
|
|
93
|
+
let needsEmptyLineFix = false;
|
|
96
94
|
for (let i = 0; i < nonEmptyGroups.length - 1; i++) {
|
|
97
95
|
const currentGroup = nonEmptyGroups[i];
|
|
98
96
|
const nextGroup = nonEmptyGroups[i + 1];
|
|
@@ -102,12 +100,45 @@ const rule = {
|
|
|
102
100
|
const lastImportLine = lastImportOfCurrentGroup.loc?.end.line || 0;
|
|
103
101
|
const firstImportLine = firstImportOfNextGroup.loc?.start.line || 0;
|
|
104
102
|
if (firstImportLine - lastImportLine < 2) {
|
|
105
|
-
|
|
106
|
-
node: firstImportOfNextGroup,
|
|
107
|
-
messageId: 'missingEmptyLine',
|
|
108
|
-
});
|
|
103
|
+
needsEmptyLineFix = true;
|
|
109
104
|
}
|
|
110
105
|
}
|
|
106
|
+
// If any violations are detected, provide a comprehensive fix
|
|
107
|
+
if (needsReordering || needsEmptyLineFix) {
|
|
108
|
+
context.report({
|
|
109
|
+
node: importNodes[0],
|
|
110
|
+
messageId: 'misordered',
|
|
111
|
+
fix(fixer) {
|
|
112
|
+
// Sort imports within each group alphabetically
|
|
113
|
+
nonEmptyGroups.forEach(group => {
|
|
114
|
+
group.imports.sort((a, b) => {
|
|
115
|
+
const aSource = a.source.value;
|
|
116
|
+
const bSource = b.source.value;
|
|
117
|
+
return aSource.localeCompare(bSource);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
// Build the corrected import section
|
|
121
|
+
const correctedImports = [];
|
|
122
|
+
nonEmptyGroups.forEach((group, groupIndex) => {
|
|
123
|
+
group.imports.forEach(importNode => {
|
|
124
|
+
const importText = sourceCode.getText(importNode);
|
|
125
|
+
correctedImports.push(importText);
|
|
126
|
+
});
|
|
127
|
+
// Add empty line between groups (except after the last group)
|
|
128
|
+
if (groupIndex < nonEmptyGroups.length - 1) {
|
|
129
|
+
correctedImports.push('');
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
// Calculate the range to replace (from first import to last import)
|
|
133
|
+
const firstImport = importNodes[0];
|
|
134
|
+
const lastImport = importNodes[importNodes.length - 1];
|
|
135
|
+
const startRange = firstImport.range[0];
|
|
136
|
+
const endRange = lastImport.range[1];
|
|
137
|
+
// Replace the entire import section
|
|
138
|
+
return fixer.replaceTextRange([startRange, endRange], correctedImports.join('\n'));
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
}
|
|
111
142
|
}
|
|
112
143
|
return {
|
|
113
144
|
Program(node) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-order.js","sourceRoot":"","sources":["../../../../src/plugin/rules/import/import-order.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"import-order.js","sourceRoot":"","sources":["../../../../src/plugin/rules/import/import-order.ts"],"names":[],"mappings":"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"}
|
|
@@ -140,6 +140,7 @@ describe('| import-order', () => {
|
|
|
140
140
|
});
|
|
141
141
|
it('| should detect missing empty line between groups', () => {
|
|
142
142
|
let reportCount = 0;
|
|
143
|
+
let hasFix = false;
|
|
143
144
|
const mockContext = {
|
|
144
145
|
sourceCode: {
|
|
145
146
|
ast: {},
|
|
@@ -147,12 +148,24 @@ describe('| import-order', () => {
|
|
|
147
148
|
'import { Component } from \'@angular/core\';',
|
|
148
149
|
'import { DyFM_Error } from \'@futdevpro/fsm-dynamo\';',
|
|
149
150
|
],
|
|
151
|
+
getText: (node) => {
|
|
152
|
+
if (node.source?.value === '@angular/core') {
|
|
153
|
+
return 'import { Component } from \'@angular/core\';';
|
|
154
|
+
}
|
|
155
|
+
if (node.source?.value === '@futdevpro/fsm-dynamo') {
|
|
156
|
+
return 'import { DyFM_Error } from \'@futdevpro/fsm-dynamo\';';
|
|
157
|
+
}
|
|
158
|
+
return '';
|
|
159
|
+
},
|
|
150
160
|
},
|
|
151
161
|
filename: 'test.ts',
|
|
152
162
|
report: (options) => {
|
|
153
|
-
if (options.messageId === '
|
|
163
|
+
if (options.messageId === 'misordered') {
|
|
154
164
|
reportCount++;
|
|
155
165
|
}
|
|
166
|
+
if (options.fix) {
|
|
167
|
+
hasFix = true;
|
|
168
|
+
}
|
|
156
169
|
},
|
|
157
170
|
};
|
|
158
171
|
const mockNode = {
|
|
@@ -164,18 +177,21 @@ describe('| import-order', () => {
|
|
|
164
177
|
source: { value: '@angular/core' },
|
|
165
178
|
importKind: 'value',
|
|
166
179
|
loc: { start: { line: 1 }, end: { line: 1 } },
|
|
180
|
+
range: [0, 40],
|
|
167
181
|
},
|
|
168
182
|
{
|
|
169
183
|
type: 'ImportDeclaration',
|
|
170
184
|
source: { value: '@futdevpro/fsm-dynamo' },
|
|
171
185
|
importKind: 'value',
|
|
172
186
|
loc: { start: { line: 2 }, end: { line: 2 } },
|
|
187
|
+
range: [41, 85],
|
|
173
188
|
},
|
|
174
189
|
],
|
|
175
190
|
};
|
|
176
191
|
const rule = import_order_1.default.create(mockContext);
|
|
177
192
|
rule.Program(mockNode);
|
|
178
193
|
expect(reportCount).toBeGreaterThan(0);
|
|
194
|
+
expect(hasFix).toBe(true);
|
|
179
195
|
});
|
|
180
196
|
});
|
|
181
197
|
//# sourceMappingURL=import-order.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-order.spec.js","sourceRoot":"","sources":["../../../../src/plugin/rules/import/import-order.spec.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"import-order.spec.js","sourceRoot":"","sources":["../../../../src/plugin/rules/import/import-order.spec.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -159,6 +159,7 @@ describe('| import-order', () => {
|
|
|
159
159
|
|
|
160
160
|
it('| should detect missing empty line between groups', () => {
|
|
161
161
|
let reportCount = 0;
|
|
162
|
+
let hasFix = false;
|
|
162
163
|
const mockContext = {
|
|
163
164
|
sourceCode: {
|
|
164
165
|
ast: {},
|
|
@@ -166,12 +167,24 @@ describe('| import-order', () => {
|
|
|
166
167
|
'import { Component } from \'@angular/core\';',
|
|
167
168
|
'import { DyFM_Error } from \'@futdevpro/fsm-dynamo\';',
|
|
168
169
|
],
|
|
170
|
+
getText: (node: any) => {
|
|
171
|
+
if (node.source?.value === '@angular/core') {
|
|
172
|
+
return 'import { Component } from \'@angular/core\';';
|
|
173
|
+
}
|
|
174
|
+
if (node.source?.value === '@futdevpro/fsm-dynamo') {
|
|
175
|
+
return 'import { DyFM_Error } from \'@futdevpro/fsm-dynamo\';';
|
|
176
|
+
}
|
|
177
|
+
return '';
|
|
178
|
+
},
|
|
169
179
|
},
|
|
170
180
|
filename: 'test.ts',
|
|
171
181
|
report: (options: any) => {
|
|
172
|
-
if (options.messageId === '
|
|
182
|
+
if (options.messageId === 'misordered') {
|
|
173
183
|
reportCount++;
|
|
174
184
|
}
|
|
185
|
+
if (options.fix) {
|
|
186
|
+
hasFix = true;
|
|
187
|
+
}
|
|
175
188
|
},
|
|
176
189
|
} as any;
|
|
177
190
|
|
|
@@ -184,12 +197,14 @@ describe('| import-order', () => {
|
|
|
184
197
|
source: { value: '@angular/core' },
|
|
185
198
|
importKind: 'value',
|
|
186
199
|
loc: { start: { line: 1 }, end: { line: 1 } },
|
|
200
|
+
range: [0, 40],
|
|
187
201
|
},
|
|
188
202
|
{
|
|
189
203
|
type: 'ImportDeclaration',
|
|
190
204
|
source: { value: '@futdevpro/fsm-dynamo' },
|
|
191
205
|
importKind: 'value',
|
|
192
206
|
loc: { start: { line: 2 }, end: { line: 2 } },
|
|
207
|
+
range: [41, 85],
|
|
193
208
|
},
|
|
194
209
|
],
|
|
195
210
|
} as any;
|
|
@@ -199,5 +214,6 @@ describe('| import-order', () => {
|
|
|
199
214
|
rule.Program(mockNode);
|
|
200
215
|
|
|
201
216
|
expect(reportCount).toBeGreaterThan(0);
|
|
217
|
+
expect(hasFix).toBe(true);
|
|
202
218
|
});
|
|
203
219
|
});
|
|
@@ -100,26 +100,24 @@ const rule: Rule.RuleModule = {
|
|
|
100
100
|
// Remove empty groups
|
|
101
101
|
const nonEmptyGroups = groups.filter(group => group.imports.length > 0);
|
|
102
102
|
|
|
103
|
-
// Check if imports are in correct order
|
|
103
|
+
// Check if imports are in correct order and detect violations
|
|
104
|
+
let needsReordering = false;
|
|
104
105
|
let currentGroupIndex = 0;
|
|
105
106
|
|
|
106
107
|
for (let i = 0; i < importNodes.length; i++) {
|
|
107
108
|
const importNode = importNodes[i];
|
|
108
109
|
const expectedGroupType = getImportGroup(importNode);
|
|
109
|
-
const expectedGroup = nonEmptyGroups.find(g => g.type === expectedGroupType);
|
|
110
110
|
const expectedGroupIndex = nonEmptyGroups.findIndex(g => g.type === expectedGroupType);
|
|
111
111
|
|
|
112
112
|
if (expectedGroupIndex < currentGroupIndex) {
|
|
113
|
-
|
|
114
|
-
node: importNode,
|
|
115
|
-
messageId: 'misordered',
|
|
116
|
-
});
|
|
113
|
+
needsReordering = true;
|
|
117
114
|
}
|
|
118
115
|
|
|
119
116
|
currentGroupIndex = expectedGroupIndex;
|
|
120
117
|
}
|
|
121
118
|
|
|
122
119
|
// Check empty lines between groups
|
|
120
|
+
let needsEmptyLineFix = false;
|
|
123
121
|
for (let i = 0; i < nonEmptyGroups.length - 1; i++) {
|
|
124
122
|
const currentGroup = nonEmptyGroups[i];
|
|
125
123
|
const nextGroup = nonEmptyGroups[i + 1];
|
|
@@ -131,12 +129,51 @@ const rule: Rule.RuleModule = {
|
|
|
131
129
|
const firstImportLine = firstImportOfNextGroup.loc?.start.line || 0;
|
|
132
130
|
|
|
133
131
|
if (firstImportLine - lastImportLine < 2) {
|
|
134
|
-
|
|
135
|
-
node: firstImportOfNextGroup,
|
|
136
|
-
messageId: 'missingEmptyLine',
|
|
137
|
-
});
|
|
132
|
+
needsEmptyLineFix = true;
|
|
138
133
|
}
|
|
139
134
|
}
|
|
135
|
+
|
|
136
|
+
// If any violations are detected, provide a comprehensive fix
|
|
137
|
+
if (needsReordering || needsEmptyLineFix) {
|
|
138
|
+
context.report({
|
|
139
|
+
node: importNodes[0],
|
|
140
|
+
messageId: 'misordered',
|
|
141
|
+
fix(fixer) {
|
|
142
|
+
// Sort imports within each group alphabetically
|
|
143
|
+
nonEmptyGroups.forEach(group => {
|
|
144
|
+
group.imports.sort((a, b) => {
|
|
145
|
+
const aSource = a.source.value as string;
|
|
146
|
+
const bSource = b.source.value as string;
|
|
147
|
+
return aSource.localeCompare(bSource);
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
// Build the corrected import section
|
|
152
|
+
const correctedImports: string[] = [];
|
|
153
|
+
|
|
154
|
+
nonEmptyGroups.forEach((group, groupIndex) => {
|
|
155
|
+
group.imports.forEach(importNode => {
|
|
156
|
+
const importText = sourceCode.getText(importNode);
|
|
157
|
+
correctedImports.push(importText);
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
// Add empty line between groups (except after the last group)
|
|
161
|
+
if (groupIndex < nonEmptyGroups.length - 1) {
|
|
162
|
+
correctedImports.push('');
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
// Calculate the range to replace (from first import to last import)
|
|
167
|
+
const firstImport = importNodes[0];
|
|
168
|
+
const lastImport = importNodes[importNodes.length - 1];
|
|
169
|
+
const startRange = firstImport.range![0];
|
|
170
|
+
const endRange = lastImport.range![1];
|
|
171
|
+
|
|
172
|
+
// Replace the entire import section
|
|
173
|
+
return fixer.replaceTextRange([startRange, endRange], correctedImports.join('\n'));
|
|
174
|
+
},
|
|
175
|
+
});
|
|
176
|
+
}
|
|
140
177
|
}
|
|
141
178
|
|
|
142
179
|
return {
|
|
Binary file
|