eslint-plugin-import-next 2.1.0 → 2.2.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 +6 -0
- package/README.md +114 -81
- package/package.json +1 -1
- package/src/files/foo.d.ts +5 -0
- package/src/files/foo.js +5 -0
- package/src/files/no-default.d.ts +5 -0
- package/src/files/no-default.js +5 -0
- package/src/index.d.ts +1093 -57
- package/src/index.js +97 -9
- package/src/rules/consistent-type-specifier-style.d.ts +11 -1
- package/src/rules/consistent-type-specifier-style.js +5 -0
- package/src/rules/default.d.ts +7 -1
- package/src/rules/default.js +5 -0
- package/src/rules/dynamic-import-chunkname.d.ts +16 -1
- package/src/rules/dynamic-import-chunkname.js +5 -0
- package/src/rules/enforce-dependency-direction.d.ts +17 -1
- package/src/rules/enforce-dependency-direction.js +5 -0
- package/src/rules/enforce-import-order.d.ts +14 -1
- package/src/rules/enforce-import-order.js +5 -0
- package/src/rules/enforce-team-boundaries.d.ts +45 -0
- package/src/rules/enforce-team-boundaries.js +230 -0
- package/src/rules/export.d.ts +15 -1
- package/src/rules/export.js +5 -0
- package/src/rules/exports-last.d.ts +13 -1
- package/src/rules/exports-last.js +5 -0
- package/src/rules/extensions.d.ts +15 -1
- package/src/rules/extensions.js +5 -0
- package/src/rules/first.d.ts +7 -1
- package/src/rules/first.js +5 -0
- package/src/rules/group-exports.d.ts +13 -1
- package/src/rules/group-exports.js +5 -0
- package/src/rules/max-dependencies.d.ts +14 -1
- package/src/rules/max-dependencies.js +5 -0
- package/src/rules/named.d.ts +7 -1
- package/src/rules/named.js +5 -0
- package/src/rules/namespace.d.ts +7 -1
- package/src/rules/namespace.js +5 -0
- package/src/rules/newline-after-import.d.ts +7 -1
- package/src/rules/newline-after-import.js +5 -0
- package/src/rules/no-absolute-path.d.ts +15 -1
- package/src/rules/no-absolute-path.js +5 -0
- package/src/rules/no-amd.d.ts +13 -1
- package/src/rules/no-amd.js +5 -0
- package/src/rules/no-anonymous-default-export.d.ts +14 -1
- package/src/rules/no-anonymous-default-export.js +5 -0
- package/src/rules/no-barrel-file.d.ts +53 -0
- package/src/rules/no-barrel-file.js +225 -0
- package/src/rules/no-barrel-import.d.ts +46 -0
- package/src/rules/no-barrel-import.js +160 -0
- package/src/rules/no-commonjs.d.ts +14 -1
- package/src/rules/no-commonjs.js +5 -0
- package/src/rules/no-cross-domain-imports.d.ts +17 -1
- package/src/rules/no-cross-domain-imports.js +5 -0
- package/src/rules/no-cycle.d.ts +8 -1
- package/src/rules/no-cycle.js +5 -0
- package/src/rules/no-default-export.d.ts +14 -1
- package/src/rules/no-default-export.js +5 -0
- package/src/rules/no-deprecated.d.ts +14 -1
- package/src/rules/no-deprecated.js +5 -0
- package/src/rules/no-duplicates.d.ts +7 -1
- package/src/rules/no-duplicates.js +5 -0
- package/src/rules/no-dynamic-require.d.ts +16 -1
- package/src/rules/no-dynamic-require.js +5 -0
- package/src/rules/no-empty-named-blocks.d.ts +15 -1
- package/src/rules/no-empty-named-blocks.js +5 -0
- package/src/rules/no-extraneous-dependencies.d.ts +13 -1
- package/src/rules/no-extraneous-dependencies.js +5 -0
- package/src/rules/no-full-package-import.d.ts +40 -0
- package/src/rules/no-full-package-import.js +152 -0
- package/src/rules/no-import-module-exports.d.ts +15 -1
- package/src/rules/no-import-module-exports.js +5 -0
- package/src/rules/no-internal-modules.d.ts +14 -1
- package/src/rules/no-internal-modules.js +5 -0
- package/src/rules/no-legacy-imports.d.ts +45 -0
- package/src/rules/no-legacy-imports.js +134 -0
- package/src/rules/no-mutable-exports.d.ts +14 -1
- package/src/rules/no-mutable-exports.js +5 -0
- package/src/rules/no-named-as-default-member.d.ts +13 -1
- package/src/rules/no-named-as-default-member.js +5 -0
- package/src/rules/no-named-as-default.d.ts +13 -1
- package/src/rules/no-named-as-default.js +5 -0
- package/src/rules/no-named-default.d.ts +13 -1
- package/src/rules/no-named-default.js +5 -0
- package/src/rules/no-named-export.d.ts +14 -1
- package/src/rules/no-named-export.js +5 -0
- package/src/rules/no-namespace.d.ts +15 -1
- package/src/rules/no-namespace.js +5 -0
- package/src/rules/no-nodejs-modules.d.ts +14 -1
- package/src/rules/no-nodejs-modules.js +5 -0
- package/src/rules/no-relative-packages.d.ts +15 -1
- package/src/rules/no-relative-packages.js +5 -0
- package/src/rules/no-relative-parent-imports.d.ts +14 -1
- package/src/rules/no-relative-parent-imports.js +5 -0
- package/src/rules/no-restricted-paths.d.ts +14 -1
- package/src/rules/no-restricted-paths.js +5 -0
- package/src/rules/no-self-import.d.ts +9 -1
- package/src/rules/no-self-import.js +5 -0
- package/src/rules/no-unassigned-import.d.ts +14 -1
- package/src/rules/no-unassigned-import.js +5 -0
- package/src/rules/no-unresolved.d.ts +10 -1
- package/src/rules/no-unresolved.js +5 -0
- package/src/rules/no-unused-modules.d.ts +13 -1
- package/src/rules/no-unused-modules.js +5 -0
- package/src/rules/no-useless-path-segments.d.ts +15 -1
- package/src/rules/no-useless-path-segments.js +5 -0
- package/src/rules/prefer-default-export.d.ts +14 -1
- package/src/rules/prefer-default-export.js +5 -0
- package/src/rules/prefer-direct-import.d.ts +49 -0
- package/src/rules/prefer-direct-import.js +189 -0
- package/src/rules/prefer-modern-api.d.ts +45 -0
- package/src/rules/prefer-modern-api.js +232 -0
- package/src/rules/prefer-node-protocol.d.ts +13 -1
- package/src/rules/prefer-node-protocol.js +5 -0
- package/src/rules/prefer-tree-shakeable-imports.d.ts +47 -0
- package/src/rules/prefer-tree-shakeable-imports.js +147 -0
- package/src/rules/require-import-approval.d.ts +50 -0
- package/src/rules/require-import-approval.js +194 -0
- package/src/rules/unambiguous.d.ts +13 -1
- package/src/rules/unambiguous.js +5 -0
- package/src/types/index.d.ts +5 -0
- package/src/types/index.js +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Documentation
|
|
11
|
+
|
|
12
|
+
- 📘 Launched new documentation site: [eslint.interlace.tools](https://eslint.interlace.tools/)
|
|
13
|
+
|
|
8
14
|
## [2.0.0] - 2025-12-30
|
|
9
15
|
|
|
10
16
|
### Changed
|
package/README.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# eslint-plugin-import-next
|
|
2
2
|
|
|
3
|
+
<div align="center">
|
|
4
|
+
<img src="https://eslint.interlace.tools/images/interlace-hero.png" alt="ESLint Interlace - eslint-plugin-import-next" width="100%" />
|
|
5
|
+
</div>
|
|
6
|
+
|
|
7
|
+
> **📘 Full Documentation:** [https://eslint.interlace.tools/](https://eslint.interlace.tools/)
|
|
8
|
+
>
|
|
3
9
|
> 🔥 **Drop-in replacement for `eslint-plugin-import`.** 100% backwards compatible, 100x faster, zero false positives, AI-optimized fixes.
|
|
4
10
|
|
|
5
11
|
[](https://www.npmjs.com/package/eslint-plugin-import-next)
|
|
@@ -46,6 +52,24 @@ npm install --save-dev eslint-plugin-import-next
|
|
|
46
52
|
|
|
47
53
|
---
|
|
48
54
|
|
|
55
|
+
## 🗣️ Community Pain Points: We Listen
|
|
56
|
+
|
|
57
|
+
This plugin directly addresses the top complaints from the `eslint-plugin-import` community:
|
|
58
|
+
|
|
59
|
+
| Pain Point | GitHub Issue | Status | Notes |
|
|
60
|
+
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ------------------------------------ |
|
|
61
|
+
| **`no-cycle` is extremely slow** | [#1889](https://github.com/import-js/eslint-plugin-import/issues/1889), [#2388](https://github.com/import-js/eslint-plugin-import/issues/2388) | ✅ **Solved** | 100x faster with incremental caching |
|
|
62
|
+
| **`namespace` rule performance** | [#2340](https://github.com/import-js/eslint-plugin-import/issues/2340) | ✅ **Solved** | Shared ExportsMap cache |
|
|
63
|
+
| **ESLint 9 flat config blocked** | [#2556](https://github.com/import-js/eslint-plugin-import/issues/2556), [#2948](https://github.com/import-js/eslint-plugin-import/issues/2948) | ✅ **Solved** | First-class flat config |
|
|
64
|
+
| **`exports` field not supported** | [#1810](https://github.com/import-js/eslint-plugin-import/issues/1810), [#2495](https://github.com/import-js/eslint-plugin-import/issues/2495) | 🟡 Phase 1 | Native exports field support |
|
|
65
|
+
| **No barrel file detection** | [#2922](https://github.com/import-js/eslint-plugin-import/issues/2922) | ✅ **Solved** | 5 bundle optimization rules |
|
|
66
|
+
| **`#imports` not recognized** | [#1868](https://github.com/import-js/eslint-plugin-import/issues/1868) | 🟡 Phase 1 | Subpath imports support |
|
|
67
|
+
| **Double-parsing with TypeScript** | [typescript-eslint docs](https://typescript-eslint.io/troubleshooting/performance-troubleshooting) | ✅ **Solved** | Shared AST, no re-parsing |
|
|
68
|
+
|
|
69
|
+
> 📢 **Found an issue we haven't addressed?** [Open an issue](https://github.com/ofri-peretz/eslint/issues) - we prioritize real developer pain.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
49
73
|
## 🎯 The `no-cycle` Problem (Why This Plugin Exists)
|
|
50
74
|
|
|
51
75
|
### The `maxDepth` Limitation in `eslint-plugin-import`
|
|
@@ -131,74 +155,81 @@ Every rule from `eslint-plugin-import` is implemented with **the same name** and
|
|
|
131
155
|
|
|
132
156
|
### ✅ Static Analysis (13 rules)
|
|
133
157
|
|
|
134
|
-
| Rule | Description | 💼 | 🔧 | 💡 |
|
|
135
|
-
|
|
|
136
|
-
| `no-unresolved` | Ensure imports resolve | 💼 | | 💡 |
|
|
137
|
-
| `named` | Ensure named imports exist | 💼 | | |
|
|
138
|
-
| `default` | Ensure default export exists | 💼 | | |
|
|
139
|
-
| `namespace` | Ensure namespace properties exist | 💼 | | |
|
|
140
|
-
| `no-absolute-path` | Forbid absolute paths | | 🔧 | |
|
|
141
|
-
| `no-dynamic-require` | Forbid dynamic require() | | | |
|
|
142
|
-
| `no-internal-modules` | Enforce entry points only | | | 💡 |
|
|
143
|
-
| `no-relative-packages` | Use package names | | 🔧 | |
|
|
144
|
-
| `no-relative-parent-imports` | Prevent `../` imports | | | |
|
|
145
|
-
| `no-self-import` | Prevent self-imports | 💼 | | 💡 |
|
|
146
|
-
| `no-cycle` | **100x faster** cycle detection | 💼 | | 💡 |
|
|
147
|
-
| `no-useless-path-segments` | Simplify paths | | 🔧 | |
|
|
148
|
-
| `no-restricted-paths` | Custom path restrictions | | | |
|
|
158
|
+
| Rule | CWE | OWASP | CVSS | Description | 💼 | ⚠️ | 🔧 | 💡 | 🚫 |
|
|
159
|
+
| :--------------------------- | :-: | :---: | :--: | :-------------------------------- | :-: | :-: | :-: | :-: | :-: |
|
|
160
|
+
| `no-unresolved` | | | | Ensure imports resolve | 💼 | | | 💡 | |
|
|
161
|
+
| `named` | | | | Ensure named imports exist | 💼 | | | | |
|
|
162
|
+
| `default` | | | | Ensure default export exists | 💼 | | | | |
|
|
163
|
+
| `namespace` | | | | Ensure namespace properties exist | 💼 | | | | |
|
|
164
|
+
| `no-absolute-path` | | | | Forbid absolute paths | | | 🔧 | | |
|
|
165
|
+
| `no-dynamic-require` | | | | Forbid dynamic require() | | | | | |
|
|
166
|
+
| `no-internal-modules` | | | | Enforce entry points only | | | | 💡 | |
|
|
167
|
+
| `no-relative-packages` | | | | Use package names | | | 🔧 | | |
|
|
168
|
+
| `no-relative-parent-imports` | | | | Prevent `../` imports | | | | | |
|
|
169
|
+
| `no-self-import` | | | | Prevent self-imports | 💼 | | | 💡 | |
|
|
170
|
+
| `no-cycle` | | | | **100x faster** cycle detection | 💼 | | | 💡 | |
|
|
171
|
+
| `no-useless-path-segments` | | | | Simplify paths | | | 🔧 | | |
|
|
172
|
+
| `no-restricted-paths` | | | | Custom path restrictions | | | | | |
|
|
149
173
|
|
|
150
174
|
### ✅ Helpful Warnings (8 rules)
|
|
151
175
|
|
|
152
|
-
| Rule | Description | 💼 | 🔧 | 💡 |
|
|
153
|
-
|
|
|
154
|
-
| `export` | Forbid duplicate exports | 💼 | | |
|
|
155
|
-
| `no-deprecated` | Warn on `@deprecated` imports | | | |
|
|
156
|
-
| `no-empty-named-blocks` | Forbid empty `{}` imports | | 🔧 | 💡 |
|
|
157
|
-
| `no-extraneous-dependencies` | Prevent unlisted deps | 💼 | | 💡 |
|
|
158
|
-
| `no-mutable-exports` | Forbid `let`/`var` exports | | | |
|
|
159
|
-
| `no-named-as-default` | Warn on default shadowing | 💼 | | |
|
|
160
|
-
| `no-named-as-default-member` | Warn on property access | 💼 | | |
|
|
161
|
-
| `no-unused-modules` | Find dead code | | | 💡 |
|
|
176
|
+
| Rule | CWE | OWASP | CVSS | Description | 💼 | ⚠️ | 🔧 | 💡 | 🚫 |
|
|
177
|
+
| :--------------------------- | :-: | :---: | :--: | :---------------------------- | :-: | :-: | :-: | :-: | :-: |
|
|
178
|
+
| `export` | | | | Forbid duplicate exports | 💼 | | | | |
|
|
179
|
+
| `no-deprecated` | | | | Warn on `@deprecated` imports | | | | | |
|
|
180
|
+
| `no-empty-named-blocks` | | | | Forbid empty `{}` imports | | | 🔧 | 💡 | |
|
|
181
|
+
| `no-extraneous-dependencies` | | | | Prevent unlisted deps | 💼 | | | 💡 | |
|
|
182
|
+
| `no-mutable-exports` | | | | Forbid `let`/`var` exports | | | | | |
|
|
183
|
+
| `no-named-as-default` | | | | Warn on default shadowing | 💼 | | | | |
|
|
184
|
+
| `no-named-as-default-member` | | | | Warn on property access | 💼 | | | | |
|
|
185
|
+
| `no-unused-modules` | | | | Find dead code | | | | 💡 | |
|
|
162
186
|
|
|
163
187
|
### ✅ Module Systems (5 rules)
|
|
164
188
|
|
|
165
|
-
| Rule | Description | 💼 | 🔧 | 💡 |
|
|
166
|
-
|
|
|
167
|
-
| `no-amd` | Forbid AMD require/define | | | |
|
|
168
|
-
| `no-commonjs` | Forbid CommonJS | | | |
|
|
169
|
-
| `no-nodejs-modules` | Forbid Node.js builtins | | | |
|
|
170
|
-
| `no-import-module-exports` | No mixed ES/CJS | | | |
|
|
171
|
-
| `unambiguous` | Warn on ambiguous modules | | | |
|
|
189
|
+
| Rule | CWE | OWASP | CVSS | Description | 💼 | ⚠️ | 🔧 | 💡 | 🚫 |
|
|
190
|
+
| :------------------------- | :-: | :---: | :--: | :------------------------ | :-: | :-: | :-: | :-: | :-: |
|
|
191
|
+
| `no-amd` | | | | Forbid AMD require/define | | | | | |
|
|
192
|
+
| `no-commonjs` | | | | Forbid CommonJS | | | | | |
|
|
193
|
+
| `no-nodejs-modules` | | | | Forbid Node.js builtins | | | | | |
|
|
194
|
+
| `no-import-module-exports` | | | | No mixed ES/CJS | | | | | |
|
|
195
|
+
| `unambiguous` | | | | Warn on ambiguous modules | | | | | |
|
|
172
196
|
|
|
173
197
|
### ✅ Style Guide (17 rules)
|
|
174
198
|
|
|
175
|
-
| Rule | Description | 💼 | 🔧 | 💡 |
|
|
176
|
-
|
|
|
177
|
-
| `consistent-type-specifier-style` | Type import style | | 🔧 | |
|
|
178
|
-
| `dynamic-import-chunkname` | Require webpack chunk names | | | 💡 |
|
|
179
|
-
| `exports-last` | Exports at end of file | | | |
|
|
180
|
-
| `extensions` | Enforce file extension usage | | | |
|
|
181
|
-
| `first` | Imports must be first | | 🔧 | |
|
|
182
|
-
| `group-exports` | Group exports together | | | |
|
|
183
|
-
| `max-dependencies` | Limit module dependencies | | | |
|
|
184
|
-
| `newline-after-import` | Newline after imports | | 🔧 | |
|
|
185
|
-
| `no-anonymous-default-export` | Require named default exports | | | |
|
|
186
|
-
| `no-default-export` | Forbid default exports | | | 💡 |
|
|
187
|
-
| `no-duplicates` | Merge duplicate imports | 💼 | 🔧 | |
|
|
188
|
-
| `no-named-default` | Use default import syntax | | | |
|
|
189
|
-
| `no-named-export` | Forbid named exports | | | |
|
|
190
|
-
| `no-namespace` | Forbid `* as` imports | | | |
|
|
191
|
-
| `no-unassigned-import` | Forbid side-effect imports | | | |
|
|
192
|
-
| `order` | Sort and group imports | 💼 | 🔧 | |
|
|
193
|
-
| `prefer-default-export` | Prefer default for single exports | | | |
|
|
194
|
-
|
|
195
|
-
### 🆕 Exclusive to `import-next` (
|
|
196
|
-
|
|
197
|
-
| Rule
|
|
198
|
-
|
|
|
199
|
-
| `no-cross-domain-imports` | Enforce clean architecture boundaries |
|
|
200
|
-
| `enforce-dependency-direction`
|
|
201
|
-
| `prefer-node-protocol`
|
|
199
|
+
| Rule | CWE | OWASP | CVSS | Description | 💼 | ⚠️ | 🔧 | 💡 | 🚫 |
|
|
200
|
+
| :-------------------------------- | :-: | :---: | :--: | :-------------------------------- | :-: | :-: | :-: | :-: | :-: |
|
|
201
|
+
| `consistent-type-specifier-style` | | | | Type import style | | | 🔧 | | |
|
|
202
|
+
| `dynamic-import-chunkname` | | | | Require webpack chunk names | | | | 💡 | |
|
|
203
|
+
| `exports-last` | | | | Exports at end of file | | | | | |
|
|
204
|
+
| `extensions` | | | | Enforce file extension usage | | | | | |
|
|
205
|
+
| `first` | | | | Imports must be first | | | 🔧 | | |
|
|
206
|
+
| `group-exports` | | | | Group exports together | | | | | |
|
|
207
|
+
| `max-dependencies` | | | | Limit module dependencies | | | | | |
|
|
208
|
+
| `newline-after-import` | | | | Newline after imports | | | 🔧 | | |
|
|
209
|
+
| `no-anonymous-default-export` | | | | Require named default exports | | | | | |
|
|
210
|
+
| `no-default-export` | | | | Forbid default exports | | | | 💡 | |
|
|
211
|
+
| `no-duplicates` | | | | Merge duplicate imports | 💼 | | 🔧 | | |
|
|
212
|
+
| `no-named-default` | | | | Use default import syntax | | | | | |
|
|
213
|
+
| `no-named-export` | | | | Forbid named exports | | | | | |
|
|
214
|
+
| `no-namespace` | | | | Forbid `* as` imports | | | | | |
|
|
215
|
+
| `no-unassigned-import` | | | | Forbid side-effect imports | | | | | |
|
|
216
|
+
| `order` | | | | Sort and group imports | 💼 | | 🔧 | | |
|
|
217
|
+
| `prefer-default-export` | | | | Prefer default for single exports | | | | | |
|
|
218
|
+
|
|
219
|
+
### 🆕 Exclusive to `import-next` (10 rules)
|
|
220
|
+
|
|
221
|
+
| Rule | CWE | OWASP | CVSS | Description | 💼 | ⚠️ | 🔧 | 💡 | 🚫 |
|
|
222
|
+
| :------------------------------ | :-: | :---: | :--: | :-------------------------------------------------- | :-: | :-: | :-: | :-: | :-: |
|
|
223
|
+
| `no-cross-domain-imports` | | | | Enforce clean architecture boundaries | | | | | |
|
|
224
|
+
| `enforce-dependency-direction` | | | | Enforce layered architecture (UI → Services → Data) | | | | | |
|
|
225
|
+
| `prefer-node-protocol` | | | | Prefer `node:fs` over `fs` | | | | | |
|
|
226
|
+
| `no-barrel-file` | | | | Detect barrel files that harm build performance | | | | | |
|
|
227
|
+
| `no-barrel-import` | | | | Flag imports from barrel files | | | | | |
|
|
228
|
+
| `prefer-tree-shakeable-imports` | | | | Enforce tree-shakeable import patterns | | | | | |
|
|
229
|
+
| `prefer-direct-import` | | | | Suggest direct imports with autofix | | | | | |
|
|
230
|
+
| `no-full-package-import` | | | | Block full imports from large packages | | | | | |
|
|
231
|
+
| `enforce-team-boundaries` | | | | Prevent unauthorized cross-team imports 🔴 NEW | | | | | |
|
|
232
|
+
| `no-legacy-imports` | | | | Detect deprecated imports with autofix 🔴 NEW | | | | | |
|
|
202
233
|
|
|
203
234
|
---
|
|
204
235
|
|
|
@@ -236,17 +267,19 @@ export default [
|
|
|
236
267
|
|
|
237
268
|
## � Available Presets
|
|
238
269
|
|
|
239
|
-
| Preset | Description
|
|
240
|
-
| ------------------- |
|
|
241
|
-
| `recommended` | Essential rules for most projects
|
|
242
|
-
| `strict` | All rules enabled as errors
|
|
243
|
-
| `typescript` | Optimized for TypeScript projects
|
|
244
|
-
| `module-resolution` | Focus on import resolution
|
|
245
|
-
| `import-style` | Focus on import formatting
|
|
246
|
-
| `esm` | Enforce ES Modules only
|
|
247
|
-
| `architecture` | Clean architecture boundaries
|
|
248
|
-
| `
|
|
249
|
-
| `
|
|
270
|
+
| Preset | Description |
|
|
271
|
+
| ------------------- | ----------------------------------------------- |
|
|
272
|
+
| `recommended` | Essential rules for most projects |
|
|
273
|
+
| `strict` | All rules enabled as errors |
|
|
274
|
+
| `typescript` | Optimized for TypeScript projects |
|
|
275
|
+
| `module-resolution` | Focus on import resolution |
|
|
276
|
+
| `import-style` | Focus on import formatting |
|
|
277
|
+
| `esm` | Enforce ES Modules only |
|
|
278
|
+
| `architecture` | Clean architecture boundaries |
|
|
279
|
+
| `performance` | Bundle optimization (barrel detection) |
|
|
280
|
+
| `enterprise` | Team boundaries & legacy import tracking 🔴 NEW |
|
|
281
|
+
| `errors` | Matches eslint-plugin-import errors preset |
|
|
282
|
+
| `warnings` | Matches eslint-plugin-import warnings preset |
|
|
250
283
|
|
|
251
284
|
---
|
|
252
285
|
|
|
@@ -295,17 +328,17 @@ Optimized for **Cursor**, **GitHub Copilot**, and other AI coding tools:
|
|
|
295
328
|
|
|
296
329
|
Part of the **Interlace ESLint Ecosystem** — AI-native security plugins with LLM-optimized error messages:
|
|
297
330
|
|
|
298
|
-
| Plugin |
|
|
299
|
-
|
|
|
300
|
-
| [`eslint-plugin-secure-coding`](https://www.npmjs.com/package/eslint-plugin-secure-coding) |
|
|
301
|
-
| [`eslint-plugin-jwt`](https://www.npmjs.com/package/eslint-plugin-jwt) |
|
|
302
|
-
| [`eslint-plugin-crypto`](https://www.npmjs.com/package/eslint-plugin-crypto) |
|
|
303
|
-
| [`eslint-plugin-pg`](https://www.npmjs.com/package/eslint-plugin-pg) |
|
|
304
|
-
| [`eslint-plugin-express-security`](https://www.npmjs.com/package/eslint-plugin-express-security) |
|
|
305
|
-
| [`eslint-plugin-nestjs-security`](https://www.npmjs.com/package/eslint-plugin-nestjs-security) |
|
|
306
|
-
| [`eslint-plugin-lambda-security`](https://www.npmjs.com/package/eslint-plugin-lambda-security) |
|
|
307
|
-
| [`eslint-plugin-browser-security`](https://www.npmjs.com/package/eslint-plugin-browser-security) |
|
|
308
|
-
| [`eslint-plugin-vercel-ai-security`](https://www.npmjs.com/package/eslint-plugin-vercel-ai-security) |
|
|
331
|
+
| Plugin | Downloads | Description | Rule | CWE | OWASP | CVSS | Description | 💼 | ⚠️ | 🔧 | 💡 | 🚫 |
|
|
332
|
+
| :--------------------------------------------------------------------------------------------------- | :-------: | :---------: | :--: | :-- | :---: | :--: | :---------: | :-: | :-: | --- | --- | --- |
|
|
333
|
+
| [`eslint-plugin-secure-coding`](https://www.npmjs.com/package/eslint-plugin-secure-coding) | | | | | | | | | |
|
|
334
|
+
| [`eslint-plugin-jwt`](https://www.npmjs.com/package/eslint-plugin-jwt) | | | | | | | | | |
|
|
335
|
+
| [`eslint-plugin-crypto`](https://www.npmjs.com/package/eslint-plugin-crypto) | | | | | | | | | |
|
|
336
|
+
| [`eslint-plugin-pg`](https://www.npmjs.com/package/eslint-plugin-pg) | | | | | | | | | |
|
|
337
|
+
| [`eslint-plugin-express-security`](https://www.npmjs.com/package/eslint-plugin-express-security) | | | | | | | | | |
|
|
338
|
+
| [`eslint-plugin-nestjs-security`](https://www.npmjs.com/package/eslint-plugin-nestjs-security) | | | | | | | | | |
|
|
339
|
+
| [`eslint-plugin-lambda-security`](https://www.npmjs.com/package/eslint-plugin-lambda-security) | | | | | | | | | |
|
|
340
|
+
| [`eslint-plugin-browser-security`](https://www.npmjs.com/package/eslint-plugin-browser-security) | | | | | | | | | |
|
|
341
|
+
| [`eslint-plugin-vercel-ai-security`](https://www.npmjs.com/package/eslint-plugin-vercel-ai-security) | | | | | | | | | |
|
|
309
342
|
|
|
310
343
|
---
|
|
311
344
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-import-next",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "Drop-in replacement for eslint-plugin-import. 100x faster no-cycle detection, AI-optimized fixes, zero config migration.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "./src/index.js",
|
package/src/files/foo.d.ts
CHANGED
package/src/files/foo.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.bar = void 0;
|
|
4
9
|
exports.default = foo;
|
package/src/files/no-default.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.foo = void 0;
|
|
4
9
|
exports.foo = 'bar';
|