Skip to content

Commit d25374a

Browse files
committed
feat(oxlint-config): review fixes
1 parent 0b3da27 commit d25374a

3 files changed

Lines changed: 26 additions & 1 deletion

File tree

packages/oxlint-config/src/plugin/import-order.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,18 @@ function canFix(sourceCode, items) {
235235
return !hasInnerComments(sourceCode, items)
236236
}
237237

238+
function hasSkippedImportsBetween(imports, items) {
239+
const itemNodes = new Set(items.map(({ node }) => node))
240+
const [
241+
start,
242+
end
243+
] = getImportBlockRange(items)
244+
245+
return imports.some(node => !itemNodes.has(node)
246+
&& node.range[0] > start
247+
&& node.range[1] < end)
248+
}
249+
238250
function getFixedImportText(sourceCode, items, options) {
239251
const linebreak = getLinebreak(sourceCode.text)
240252
const separator = options['newlines-between'] === 'always'
@@ -346,6 +358,7 @@ export default {
346358
}
347359

348360
const fix = canFix(sourceCode, items)
361+
&& !hasSkippedImportsBetween(imports, items)
349362
? fixer => fixer.replaceTextRange(
350363
getImportBlockRange(items),
351364
getFixedImportText(sourceCode, items, options)

packages/oxlint-config/src/plugin/type-import-style.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
function shouldConvert(node) {
22
return node.importKind !== 'type'
3+
&& !hasImportAttributes(node)
34
&& node.specifiers.length > 0
45
&& node.specifiers.every(specifier => specifier.type === 'ImportSpecifier'
56
&& specifier.importKind === 'type')
@@ -28,6 +29,16 @@ function hasCommentsBetween(sourceCode, left, right) {
2829
&& comment.range[1] < right.range[0])
2930
}
3031

32+
function getLocalName(specifier) {
33+
return specifier.local?.name ?? null
34+
}
35+
36+
function hasOverlappingLocalNames(left, right) {
37+
const leftNames = new Set(left.specifiers.map(getLocalName))
38+
39+
return right.specifiers.some(specifier => leftNames.has(getLocalName(specifier)))
40+
}
41+
3142
function canMerge(sourceCode, typeNode, valueNode) {
3243
return typeNode.source.value === valueNode.source.value
3344
&& isTypeImport(typeNode)
@@ -36,6 +47,7 @@ function canMerge(sourceCode, typeNode, valueNode) {
3647
&& !isTypeImport(valueNode)
3748
&& !hasImportAttributes(typeNode)
3849
&& !hasImportAttributes(valueNode)
50+
&& !hasOverlappingLocalNames(typeNode, valueNode)
3951
&& !hasCommentsBetween(sourceCode, typeNode, valueNode)
4052
}
4153

packages/oxlint-config/src/subconfigs/basic.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ export default {
162162
'eslint/no-useless-concat': 'error',
163163
'eslint/no-useless-return': 'error',
164164
'eslint/no-void': [
165-
'off',
165+
'error',
166166
{
167167
allowAsStatement: true
168168
}

0 commit comments

Comments
 (0)