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.
Files changed (121) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +114 -81
  3. package/package.json +1 -1
  4. package/src/files/foo.d.ts +5 -0
  5. package/src/files/foo.js +5 -0
  6. package/src/files/no-default.d.ts +5 -0
  7. package/src/files/no-default.js +5 -0
  8. package/src/index.d.ts +1093 -57
  9. package/src/index.js +97 -9
  10. package/src/rules/consistent-type-specifier-style.d.ts +11 -1
  11. package/src/rules/consistent-type-specifier-style.js +5 -0
  12. package/src/rules/default.d.ts +7 -1
  13. package/src/rules/default.js +5 -0
  14. package/src/rules/dynamic-import-chunkname.d.ts +16 -1
  15. package/src/rules/dynamic-import-chunkname.js +5 -0
  16. package/src/rules/enforce-dependency-direction.d.ts +17 -1
  17. package/src/rules/enforce-dependency-direction.js +5 -0
  18. package/src/rules/enforce-import-order.d.ts +14 -1
  19. package/src/rules/enforce-import-order.js +5 -0
  20. package/src/rules/enforce-team-boundaries.d.ts +45 -0
  21. package/src/rules/enforce-team-boundaries.js +230 -0
  22. package/src/rules/export.d.ts +15 -1
  23. package/src/rules/export.js +5 -0
  24. package/src/rules/exports-last.d.ts +13 -1
  25. package/src/rules/exports-last.js +5 -0
  26. package/src/rules/extensions.d.ts +15 -1
  27. package/src/rules/extensions.js +5 -0
  28. package/src/rules/first.d.ts +7 -1
  29. package/src/rules/first.js +5 -0
  30. package/src/rules/group-exports.d.ts +13 -1
  31. package/src/rules/group-exports.js +5 -0
  32. package/src/rules/max-dependencies.d.ts +14 -1
  33. package/src/rules/max-dependencies.js +5 -0
  34. package/src/rules/named.d.ts +7 -1
  35. package/src/rules/named.js +5 -0
  36. package/src/rules/namespace.d.ts +7 -1
  37. package/src/rules/namespace.js +5 -0
  38. package/src/rules/newline-after-import.d.ts +7 -1
  39. package/src/rules/newline-after-import.js +5 -0
  40. package/src/rules/no-absolute-path.d.ts +15 -1
  41. package/src/rules/no-absolute-path.js +5 -0
  42. package/src/rules/no-amd.d.ts +13 -1
  43. package/src/rules/no-amd.js +5 -0
  44. package/src/rules/no-anonymous-default-export.d.ts +14 -1
  45. package/src/rules/no-anonymous-default-export.js +5 -0
  46. package/src/rules/no-barrel-file.d.ts +53 -0
  47. package/src/rules/no-barrel-file.js +225 -0
  48. package/src/rules/no-barrel-import.d.ts +46 -0
  49. package/src/rules/no-barrel-import.js +160 -0
  50. package/src/rules/no-commonjs.d.ts +14 -1
  51. package/src/rules/no-commonjs.js +5 -0
  52. package/src/rules/no-cross-domain-imports.d.ts +17 -1
  53. package/src/rules/no-cross-domain-imports.js +5 -0
  54. package/src/rules/no-cycle.d.ts +8 -1
  55. package/src/rules/no-cycle.js +5 -0
  56. package/src/rules/no-default-export.d.ts +14 -1
  57. package/src/rules/no-default-export.js +5 -0
  58. package/src/rules/no-deprecated.d.ts +14 -1
  59. package/src/rules/no-deprecated.js +5 -0
  60. package/src/rules/no-duplicates.d.ts +7 -1
  61. package/src/rules/no-duplicates.js +5 -0
  62. package/src/rules/no-dynamic-require.d.ts +16 -1
  63. package/src/rules/no-dynamic-require.js +5 -0
  64. package/src/rules/no-empty-named-blocks.d.ts +15 -1
  65. package/src/rules/no-empty-named-blocks.js +5 -0
  66. package/src/rules/no-extraneous-dependencies.d.ts +13 -1
  67. package/src/rules/no-extraneous-dependencies.js +5 -0
  68. package/src/rules/no-full-package-import.d.ts +40 -0
  69. package/src/rules/no-full-package-import.js +152 -0
  70. package/src/rules/no-import-module-exports.d.ts +15 -1
  71. package/src/rules/no-import-module-exports.js +5 -0
  72. package/src/rules/no-internal-modules.d.ts +14 -1
  73. package/src/rules/no-internal-modules.js +5 -0
  74. package/src/rules/no-legacy-imports.d.ts +45 -0
  75. package/src/rules/no-legacy-imports.js +134 -0
  76. package/src/rules/no-mutable-exports.d.ts +14 -1
  77. package/src/rules/no-mutable-exports.js +5 -0
  78. package/src/rules/no-named-as-default-member.d.ts +13 -1
  79. package/src/rules/no-named-as-default-member.js +5 -0
  80. package/src/rules/no-named-as-default.d.ts +13 -1
  81. package/src/rules/no-named-as-default.js +5 -0
  82. package/src/rules/no-named-default.d.ts +13 -1
  83. package/src/rules/no-named-default.js +5 -0
  84. package/src/rules/no-named-export.d.ts +14 -1
  85. package/src/rules/no-named-export.js +5 -0
  86. package/src/rules/no-namespace.d.ts +15 -1
  87. package/src/rules/no-namespace.js +5 -0
  88. package/src/rules/no-nodejs-modules.d.ts +14 -1
  89. package/src/rules/no-nodejs-modules.js +5 -0
  90. package/src/rules/no-relative-packages.d.ts +15 -1
  91. package/src/rules/no-relative-packages.js +5 -0
  92. package/src/rules/no-relative-parent-imports.d.ts +14 -1
  93. package/src/rules/no-relative-parent-imports.js +5 -0
  94. package/src/rules/no-restricted-paths.d.ts +14 -1
  95. package/src/rules/no-restricted-paths.js +5 -0
  96. package/src/rules/no-self-import.d.ts +9 -1
  97. package/src/rules/no-self-import.js +5 -0
  98. package/src/rules/no-unassigned-import.d.ts +14 -1
  99. package/src/rules/no-unassigned-import.js +5 -0
  100. package/src/rules/no-unresolved.d.ts +10 -1
  101. package/src/rules/no-unresolved.js +5 -0
  102. package/src/rules/no-unused-modules.d.ts +13 -1
  103. package/src/rules/no-unused-modules.js +5 -0
  104. package/src/rules/no-useless-path-segments.d.ts +15 -1
  105. package/src/rules/no-useless-path-segments.js +5 -0
  106. package/src/rules/prefer-default-export.d.ts +14 -1
  107. package/src/rules/prefer-default-export.js +5 -0
  108. package/src/rules/prefer-direct-import.d.ts +49 -0
  109. package/src/rules/prefer-direct-import.js +189 -0
  110. package/src/rules/prefer-modern-api.d.ts +45 -0
  111. package/src/rules/prefer-modern-api.js +232 -0
  112. package/src/rules/prefer-node-protocol.d.ts +13 -1
  113. package/src/rules/prefer-node-protocol.js +5 -0
  114. package/src/rules/prefer-tree-shakeable-imports.d.ts +47 -0
  115. package/src/rules/prefer-tree-shakeable-imports.js +147 -0
  116. package/src/rules/require-import-approval.d.ts +50 -0
  117. package/src/rules/require-import-approval.js +194 -0
  118. package/src/rules/unambiguous.d.ts +13 -1
  119. package/src/rules/unambiguous.js +5 -0
  120. package/src/types/index.d.ts +5 -0
  121. 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
  [![npm version](https://img.shields.io/npm/v/eslint-plugin-import-next.svg)](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` (3 rules)
196
-
197
- | Rule | Description |
198
- | ------------------------------ | --------------------------------------------------- |
199
- | `no-cross-domain-imports` | Enforce clean architecture boundaries |
200
- | `enforce-dependency-direction` | Enforce layered architecture (UI → Services → Data) |
201
- | `prefer-node-protocol` | Prefer `node:fs` over `fs` |
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
- | `errors` | Matches eslint-plugin-import errors preset |
249
- | `warnings` | Matches eslint-plugin-import warnings preset |
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 | Downloads | Description | Rules |
299
- | ---------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | ------------------------------------------------------------ | :---: |
300
- | [`eslint-plugin-secure-coding`](https://www.npmjs.com/package/eslint-plugin-secure-coding) | [![npm](https://img.shields.io/npm/dm/eslint-plugin-secure-coding.svg)](https://npmjs.com/package/eslint-plugin-secure-coding) | Universal security (OWASP Top 10 Web + Mobile) | 89 |
301
- | [`eslint-plugin-jwt`](https://www.npmjs.com/package/eslint-plugin-jwt) | [![npm](https://img.shields.io/npm/dm/eslint-plugin-jwt.svg)](https://npmjs.com/package/eslint-plugin-jwt) | JWT security (algorithm confusion, weak secrets, claims) | 13 |
302
- | [`eslint-plugin-crypto`](https://www.npmjs.com/package/eslint-plugin-crypto) | [![npm](https://img.shields.io/npm/dm/eslint-plugin-crypto.svg)](https://npmjs.com/package/eslint-plugin-crypto) | Cryptographic best practices (weak algorithms, key handling) | 24 |
303
- | [`eslint-plugin-pg`](https://www.npmjs.com/package/eslint-plugin-pg) | [![npm](https://img.shields.io/npm/dm/eslint-plugin-pg.svg)](https://npmjs.com/package/eslint-plugin-pg) | PostgreSQL/node-postgres security | 13 |
304
- | [`eslint-plugin-express-security`](https://www.npmjs.com/package/eslint-plugin-express-security) | [![npm](https://img.shields.io/npm/dm/eslint-plugin-express-security.svg)](https://npmjs.com/package/eslint-plugin-express-security) | Express.js security (CORS, cookies, CSRF, helmet) | 8 |
305
- | [`eslint-plugin-nestjs-security`](https://www.npmjs.com/package/eslint-plugin-nestjs-security) | [![npm](https://img.shields.io/npm/dm/eslint-plugin-nestjs-security.svg)](https://npmjs.com/package/eslint-plugin-nestjs-security) | NestJS security (guards, validation pipes, throttler) | 5 |
306
- | [`eslint-plugin-lambda-security`](https://www.npmjs.com/package/eslint-plugin-lambda-security) | [![npm](https://img.shields.io/npm/dm/eslint-plugin-lambda-security.svg)](https://npmjs.com/package/eslint-plugin-lambda-security) | AWS Lambda/Middy security (API Gateway, CORS, secrets) | 5 |
307
- | [`eslint-plugin-browser-security`](https://www.npmjs.com/package/eslint-plugin-browser-security) | [![npm](https://img.shields.io/npm/dm/eslint-plugin-browser-security.svg)](https://npmjs.com/package/eslint-plugin-browser-security) | Browser security (XSS, postMessage, storage, cookies) | 21 |
308
- | [`eslint-plugin-vercel-ai-security`](https://www.npmjs.com/package/eslint-plugin-vercel-ai-security) | [![npm](https://img.shields.io/npm/dm/eslint-plugin-vercel-ai-security.svg)](https://npmjs.com/package/eslint-plugin-vercel-ai-security) | Vercel AI SDK security (OWASP LLM + Agentic Top 10) | 19 |
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.1.0",
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",
@@ -1,2 +1,7 @@
1
+ /**
2
+ * Copyright (c) 2025 Ofri Peretz
3
+ * Licensed under the MIT License. Use of this source code is governed by the
4
+ * MIT license that can be found in the LICENSE file.
5
+ */
1
6
  export default function foo(): string;
2
7
  export declare const bar = "baz";
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;
@@ -1 +1,6 @@
1
+ /**
2
+ * Copyright (c) 2025 Ofri Peretz
3
+ * Licensed under the MIT License. Use of this source code is governed by the
4
+ * MIT license that can be found in the LICENSE file.
5
+ */
1
6
  export declare const foo = "bar";
@@ -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';