eslint-plugin-fast-import 2.0.0 → 2.1.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 2.1.0 (3/13/2026)
4
+
5
+ - Fixed logic errors in `prefer-alias-imports` rule
6
+ - Renamed `relative-if-descendant` mode to `relative-if-local` to accurately represent what it actually does
7
+ - Technically this is a breaking change, but due to the previous release being so recent and very few downloads of 2.0.0, I'm instead going to just deprecate 2.0.0
8
+ - Added configurable `minSharedPathDepth` option to `prefer-alias-imports` rule
9
+
3
10
  ## 2.0.0 (3/13/2026)
4
11
 
5
12
  - Added `prefer-alias-imports` rule
package/dist/plugin.d.ts CHANGED
@@ -63,7 +63,8 @@ declare const plugin: {
63
63
  name: string;
64
64
  };
65
65
  'prefer-alias-imports': TSESLint.RuleModule<"preferAlias" | "preferRelative", [{
66
- mode?: "always" | "relative-if-descendant" | undefined;
66
+ mode?: "always" | "relative-if-local" | undefined;
67
+ minSharedPathDepth?: number | undefined;
67
68
  } | undefined], unknown, TSESLint.RuleListener> & {
68
69
  name: string;
69
70
  };
@@ -1,5 +1,6 @@
1
1
  export declare const preferAliasImports: import("@typescript-eslint/utils/ts-eslint").RuleModule<"preferAlias" | "preferRelative", [{
2
- mode?: "always" | "relative-if-descendant" | undefined;
2
+ mode?: "always" | "relative-if-local" | undefined;
3
+ minSharedPathDepth?: number | undefined;
3
4
  } | undefined], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
4
5
  name: string;
5
6
  };
@@ -2,10 +2,12 @@ import { dirname, relative, resolve } from 'node:path';
2
2
  import { z } from 'zod';
3
3
  import { InternalError } from '../../util/error.js';
4
4
  import { createRule, getESMInfo, getLocFromRange } from '../util.js';
5
- const MODE_DEFAULT = 'relative-if-descendant';
5
+ const MODE_DEFAULT = 'relative-if-local';
6
+ const MIN_SHARED_PATH_DEPTH_DEFAULT = 1;
6
7
  const schema = z
7
8
  .strictObject({
8
- mode: z.enum(['always', 'relative-if-descendant']).optional(),
9
+ mode: z.enum(['always', 'relative-if-local']).optional(),
10
+ minSharedPathDepth: z.number().int().min(0).optional(),
9
11
  })
10
12
  .optional();
11
13
  /**
@@ -22,18 +24,41 @@ function findBestWildcardAlias(absolutePath, wildcardAliases) {
22
24
  }
23
25
  return best;
24
26
  }
27
+ function getAliasInternalPathSegments(absolutePath, aliasPath) {
28
+ if (!absolutePath.startsWith(aliasPath)) {
29
+ return;
30
+ }
31
+ return absolutePath
32
+ .slice(aliasPath.length)
33
+ .split(/[/\\]+/)
34
+ .filter(Boolean);
35
+ }
36
+ function getSharedPathDepth(sourcePath, targetPath, aliasPath) {
37
+ const sourceSegments = getAliasInternalPathSegments(sourcePath, aliasPath);
38
+ const targetSegments = getAliasInternalPathSegments(targetPath, aliasPath);
39
+ if (!sourceSegments || !targetSegments) {
40
+ return;
41
+ }
42
+ let sharedPathDepth = 0;
43
+ while (sharedPathDepth < sourceSegments.length &&
44
+ sharedPathDepth < targetSegments.length &&
45
+ sourceSegments[sharedPathDepth] === targetSegments[sharedPathDepth]) {
46
+ sharedPathDepth++;
47
+ }
48
+ return sharedPathDepth;
49
+ }
25
50
  export const preferAliasImports = createRule({
26
51
  name: 'prefer-alias-imports',
27
52
  meta: {
28
53
  docs: {
29
- description: 'Enforces the use of alias imports instead of relative paths when an alias is available, and vice versa for files under the same alias',
54
+ description: 'Enforces the use of alias imports instead of relative paths when an alias is available, and vice versa for sufficiently local files under the same alias',
30
55
  },
31
56
  schema: [schema.toJSONSchema()],
32
57
  fixable: 'code',
33
58
  type: 'suggestion',
34
59
  messages: {
35
60
  preferAlias: 'Use alias import "{{alias}}" instead of relative path "{{relative}}"',
36
- preferRelative: 'Use relative import "{{relative}}" instead of alias "{{alias}}" for files under the same alias',
61
+ preferRelative: 'Use relative import "{{relative}}" instead of alias "{{alias}}" for local files under the same alias',
37
62
  },
38
63
  },
39
64
  defaultOptions: [{ mode: MODE_DEFAULT }],
@@ -54,8 +79,8 @@ export const preferAliasImports = createRule({
54
79
  Object.keys(fixedAliases).length === 0) {
55
80
  return {};
56
81
  }
57
- const { mode = MODE_DEFAULT } = context.options[0] ?? {};
58
- // Pre-compute the current file's "home alias" for relative-if-descendant mode
82
+ const { mode = MODE_DEFAULT, minSharedPathDepth = MIN_SHARED_PATH_DEPTH_DEFAULT, } = context.options[0] ?? {};
83
+ // Pre-compute the current file's "home alias" for relative-if-local mode
59
84
  const homeAlias = findBestWildcardAlias(context.filename, wildcardAliases);
60
85
  for (const importEntry of [
61
86
  ...fileInfo.singleImports,
@@ -86,9 +111,8 @@ export const preferAliasImports = createRule({
86
111
  }
87
112
  }
88
113
  // Check wildcard aliases
89
- if (!matchedAliasName) {
90
- const absolutePath = resolve(dirname(context.filename), moduleSpecifier);
91
- const match = findBestWildcardAlias(absolutePath, wildcardAliases);
114
+ if (!matchedAliasName && resolvedModulePath) {
115
+ const match = findBestWildcardAlias(resolvedModulePath, wildcardAliases);
92
116
  if (match) {
93
117
  matchedAliasSymbol = match.symbol;
94
118
  matchedAliasPath = match.path;
@@ -97,15 +121,22 @@ export const preferAliasImports = createRule({
97
121
  if (!matchedAliasName && !matchedAliasSymbol) {
98
122
  continue;
99
123
  }
100
- // In relative-if-descendant mode, skip if same alias as home
101
- if (mode === 'relative-if-descendant') {
124
+ const sharedPathDepth = homeAlias &&
125
+ resolvedModulePath &&
126
+ matchedAliasSymbol === homeAlias.symbol &&
127
+ matchedAliasPath === homeAlias.path
128
+ ? getSharedPathDepth(context.filename, resolvedModulePath, homeAlias.path)
129
+ : undefined;
130
+ // In relative-if-local mode, skip if the files are local enough
131
+ if (mode === 'relative-if-local') {
102
132
  if (matchedAliasName) {
103
133
  // Fixed alias — always different from a wildcard home alias, so report
104
134
  }
105
135
  else if (homeAlias &&
106
136
  matchedAliasSymbol === homeAlias.symbol &&
107
- matchedAliasPath === homeAlias.path) {
108
- // Same wildcard alias — relative is preferred
137
+ matchedAliasPath === homeAlias.path &&
138
+ sharedPathDepth !== undefined &&
139
+ sharedPathDepth >= minSharedPathDepth) {
109
140
  continue;
110
141
  }
111
142
  }
@@ -135,28 +166,25 @@ export const preferAliasImports = createRule({
135
166
  },
136
167
  });
137
168
  }
138
- else if (mode === 'relative-if-descendant') {
169
+ else if (mode === 'relative-if-local') {
139
170
  // --- Alias import: check if it should be relative ---
140
- // Check wildcard aliases
141
- let matchedSymbol;
142
- let matchedPath;
143
- for (const [symbol, path] of Object.entries(wildcardAliases)) {
144
- if (moduleSpecifier.startsWith(symbol) &&
145
- (!matchedSymbol || path.length > (matchedPath?.length ?? 0))) {
146
- matchedSymbol = symbol;
147
- matchedPath = path;
148
- }
171
+ if (moduleSpecifier in fixedAliases) {
172
+ continue;
173
+ }
174
+ if (!importEntry.resolvedModulePath) {
175
+ continue;
149
176
  }
150
- // Only convert wildcard aliases that match the home alias
151
- if (matchedSymbol &&
152
- matchedPath &&
177
+ const matchedAlias = findBestWildcardAlias(importEntry.resolvedModulePath, wildcardAliases);
178
+ const sharedPathDepth = homeAlias && matchedAlias && matchedAlias.path === homeAlias.path
179
+ ? getSharedPathDepth(context.filename, importEntry.resolvedModulePath, homeAlias.path)
180
+ : undefined;
181
+ if (matchedAlias &&
153
182
  homeAlias &&
154
- matchedSymbol === homeAlias.symbol &&
155
- matchedPath === homeAlias.path) {
156
- // Compute the absolute target path and then a relative path from current file
157
- const targetAbsPath = matchedPath + moduleSpecifier.slice(matchedSymbol.length);
158
- let newSpecifier = relative(dirname(context.filename), targetAbsPath);
159
- // Ensure it starts with ./ or ../
183
+ matchedAlias.symbol === homeAlias.symbol &&
184
+ matchedAlias.path === homeAlias.path &&
185
+ sharedPathDepth !== undefined &&
186
+ sharedPathDepth >= minSharedPathDepth) {
187
+ let newSpecifier = relative(dirname(context.filename), resolve(matchedAlias.path, moduleSpecifier.slice(matchedAlias.symbol.length)));
160
188
  if (!newSpecifier.startsWith('.')) {
161
189
  newSpecifier = './' + newSpecifier;
162
190
  }
@@ -1 +1 @@
1
- {"version":3,"file":"alias.js","sourceRoot":"","sources":["../../../src/rules/alias/alias.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alias.js","sourceRoot":"","sources":["../../../src/rules/alias/alias.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-fast-import",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "ESLint plugin with rules to ensure proper usage of imports and exports",
5
5
  "keywords": [
6
6
  "eslint",