eslint-plugin-import-next 2.3.5 → 2.3.7

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 (63) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +99 -78
  3. package/package.json +21 -5
  4. package/src/index.d.ts +192 -0
  5. package/src/index.js +13 -1
  6. package/src/oxlint.d.ts +20 -0
  7. package/src/oxlint.js +21 -0
  8. package/src/rules/consistent-type-specifier-style.js +5 -1
  9. package/src/rules/default.js +1 -0
  10. package/src/rules/dynamic-import-chunkname.js +4 -1
  11. package/src/rules/enforce-dependency-direction.js +2 -1
  12. package/src/rules/enforce-import-order.js +4 -2
  13. package/src/rules/enforce-team-boundaries.js +27 -17
  14. package/src/rules/export.js +3 -0
  15. package/src/rules/exports-last.js +3 -0
  16. package/src/rules/extensions.js +1 -0
  17. package/src/rules/first.js +2 -1
  18. package/src/rules/group-exports.js +3 -0
  19. package/src/rules/max-dependencies.js +2 -1
  20. package/src/rules/named.js +1 -1
  21. package/src/rules/namespace.js +1 -0
  22. package/src/rules/newline-after-import.js +1 -0
  23. package/src/rules/no-absolute-path.js +3 -0
  24. package/src/rules/no-amd.js +2 -1
  25. package/src/rules/no-anonymous-default-export.js +2 -0
  26. package/src/rules/no-barrel-file.js +2 -1
  27. package/src/rules/no-barrel-import.js +1 -1
  28. package/src/rules/no-commonjs.js +2 -1
  29. package/src/rules/no-cross-domain-imports.js +2 -1
  30. package/src/rules/no-cycle.d.ts +1 -1
  31. package/src/rules/no-cycle.js +187 -71
  32. package/src/rules/no-default-export.js +2 -1
  33. package/src/rules/no-deprecated.js +2 -1
  34. package/src/rules/no-duplicates.js +1 -0
  35. package/src/rules/no-dynamic-require.js +3 -0
  36. package/src/rules/no-empty-named-blocks.js +4 -1
  37. package/src/rules/no-extraneous-dependencies.js +4 -1
  38. package/src/rules/no-full-package-import.js +1 -0
  39. package/src/rules/no-import-module-exports.js +3 -1
  40. package/src/rules/no-internal-modules.js +1 -0
  41. package/src/rules/no-legacy-imports.js +1 -0
  42. package/src/rules/no-mutable-exports.js +2 -1
  43. package/src/rules/no-named-as-default-member.js +3 -0
  44. package/src/rules/no-named-as-default.js +3 -0
  45. package/src/rules/no-named-default.js +3 -0
  46. package/src/rules/no-named-export.js +2 -1
  47. package/src/rules/no-namespace.js +12 -6
  48. package/src/rules/no-nodejs-modules.js +3 -1
  49. package/src/rules/no-relative-packages.js +4 -1
  50. package/src/rules/no-relative-parent-imports.js +1 -0
  51. package/src/rules/no-restricted-paths.js +1 -0
  52. package/src/rules/no-self-import.js +2 -1
  53. package/src/rules/no-unassigned-import.js +1 -0
  54. package/src/rules/no-unresolved.js +3 -2
  55. package/src/rules/no-unused-modules.js +1 -0
  56. package/src/rules/no-useless-path-segments.js +3 -0
  57. package/src/rules/prefer-default-export.js +2 -1
  58. package/src/rules/prefer-direct-import.js +1 -0
  59. package/src/rules/prefer-modern-api.js +1 -0
  60. package/src/rules/prefer-node-protocol.js +2 -0
  61. package/src/rules/prefer-tree-shakeable-imports.js +1 -0
  62. package/src/rules/require-import-approval.js +1 -0
  63. package/src/rules/unambiguous.js +3 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,47 @@
1
+ ## [2.3.6] - 2026-05-03
2
+
3
+ ## 2.3.7
4
+
5
+ ### Patch Changes
6
+
7
+ - [#141](https://github.com/ofri-peretz/eslint/pull/141) [`38ab670`](https://github.com/ofri-peretz/eslint/commit/38ab670a0221684f4fd3d5dc3c05ddec7458ca2b) Thanks [@ofri-peretz](https://github.com/ofri-peretz)! - fix: remove false `meta.fixable: 'code'` declarations from 21 rules that had no `fix()` function
8
+
9
+ Rules that declared `fixable: 'code'` in their ESLint meta without an actual `fix()` implementation would show the ⚡ auto-fix icon in editors and CI formatters but apply no change when `--fix` was run. This patch removes the misleading declaration from:
10
+ - `browser-security/no-clickjacking`
11
+ - `import-next/first`, `named`, `no-barrel-import`, `no-import-module-exports`, `no-namespace`
12
+ - `node-security/no-buffer-overread`, `no-unsafe-dynamic-require`, `no-zip-slip`
13
+ - `react-features/react-no-inline-functions`
14
+ - `reliability/no-jsdoc-terminator-in-example` (uses `suggest`, not auto-fix; corrected to `hasSuggestions: true` only)
15
+ - `secure-coding/no-directive-injection`, `no-electron-security-issues`, `no-graphql-injection`, `no-improper-sanitization`, `no-improper-type-validation`, `no-ldap-injection`, `no-unchecked-loop-condition`, `no-unlimited-resource-allocation`, `no-weak-password-recovery`, `no-xpath-injection`
16
+
17
+ - [#186](https://github.com/ofri-peretz/eslint/pull/186) [`edf208d`](https://github.com/ofri-peretz/eslint/commit/edf208d67ac2357312c97d8964fcf6a462e407eb) Thanks [@ofri-peretz](https://github.com/ofri-peretz)! - Consolidation cleanup — no rule behavior change:
18
+ - **react-features**: the README rules table now lists the 8 `componentApi`
19
+ preset rules. The README generator (`sync-readme-rules.ts`) and the
20
+ `plugin-rule-source-drift` validator now recurse into nested
21
+ `docs/rules/<category>/` subfolders, so every documented rule is advertised
22
+ consistently (previously the nested componentApi docs were silently dropped,
23
+ which an earlier `readme` exception had papered over — that exception is now
24
+ removed in favour of the real fix).
25
+ - **node-security**: remove the orphaned `no-pii-in-logs` rule source — the rule
26
+ was migrated to `eslint-plugin-secure-coding` and is no longer exported here;
27
+ the dead source was still compiling into `dist`.
28
+ - **import-next**: restore the `no-cycle` unit test after [#180](https://github.com/ofri-peretz/eslint/issues/180)'s SCC refactor
29
+ (`computeSCCsFromFile` + `findShortestCyclePath` are now bridged in the mock).
30
+
31
+ Also fixes `scripts/ilb-plugin-scope-audit.ts` to stop mis-reading config-preset
32
+ keys (`'recommended-strict': {`) as rules.
33
+
34
+ - Updated dependencies [[`736a5fe`](https://github.com/ofri-peretz/eslint/commit/736a5fed47e673f6157ea900b29fe2a54e4bc7df)]:
35
+ - @interlace/eslint-devkit@1.4.1
36
+
37
+ ### Changed
38
+
39
+ - `no-cycle` rewritten to per-import targeted DFS (replaces upfront full-graph BFS+Tarjan SCC). The `nonCyclicFiles` cache provides O(1) rejection after first visit; only files along the actual DFS path are read. Detection parity with the previous algorithm is preserved.
40
+
41
+ ## 2.3.5 (2026-02-09)
42
+
43
+ This was a version bump only for eslint-plugin-import-next to align it with other projects, there were no code changes.
44
+
1
45
  ## [2.3.3] - 2026-02-08
2
46
 
3
47
  ### Bug Fixes
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <a href="https://eslint.interlace.tools" target="blank"><img src="https://eslint.interlace.tools/eslint-interlace-logo-light.svg" alt="ESLint Interlace Logo" width="120" /></a>
2
+ <a href="https://eslint.interlace.tools/?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next" target="blank"><img src="https://eslint.interlace.tools/eslint-interlace-logo-light.svg" alt="ESLint Interlace Logo" width="120" /></a>
3
3
  </p>
4
4
 
5
5
  <p align="center">
@@ -10,14 +10,15 @@
10
10
  <a href="https://www.npmjs.com/package/eslint-plugin-import-next" target="_blank"><img src="https://img.shields.io/npm/v/eslint-plugin-import-next.svg" alt="NPM Version" /></a>
11
11
  <a href="https://www.npmjs.com/package/eslint-plugin-import-next" target="_blank"><img src="https://img.shields.io/npm/dm/eslint-plugin-import-next.svg" alt="NPM Downloads" /></a>
12
12
  <a href="https://opensource.org/licenses/MIT" target="_blank"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="Package License" /></a>
13
- <a href="https://app.codecov.io/gh/ofri-peretz/eslint/components?components%5B0%5D=eslint-plugin-import-next" target="_blank"><img src="https://codecov.io/gh/ofri-peretz/eslint/graph/badge.svg?component=eslint-plugin-import-next" alt="Codecov" /></a>
13
+ <a href="https://app.codecov.io/gh/ofri-peretz/eslint/components?components%5B0%5D=import-next" target="_blank"><img src="https://codecov.io/gh/ofri-peretz/eslint/graph/badge.svg?component=import-next" alt="Codecov" /></a>
14
14
  <a href="https://github.com/ofri-peretz/eslint" target="_blank"><img src="https://img.shields.io/badge/Since-Dec_2025-blue?logo=rocket&logoColor=white" alt="Since Dec 2025" /></a>
15
15
  </p>
16
16
 
17
+ > ⭐ If this plugin caught a real bug for you, [**star the repo**](https://github.com/ofri-peretz/eslint) — it's the signal that keeps these rules maintained.
18
+
17
19
  ## Description
18
20
 
19
21
  This plugin provides Next-generation import sorting, validation, and architectural boundaries.
20
- By using this plugin, you can proactively identify and mitigate security risks across your entire codebase.
21
22
 
22
23
  ## Philosophy
23
24
 
@@ -25,24 +26,17 @@ By using this plugin, you can proactively identify and mitigate security risks a
25
26
 
26
27
  ## Getting Started
27
28
 
28
- - To check out the [guide](https://eslint.interlace.tools/docs/quality/plugin-import-next), visit [eslint.interlace.tools](https://eslint.interlace.tools). 📚
29
- - 要查看中文 [指南](https://eslint.interlace.tools/docs/quality/plugin-import-next), 请访问 [eslint.interlace.tools](https://eslint.interlace.tools). 📚
30
- - [가이드](https://eslint.interlace.tools/docs/quality/plugin-import-next) 문서는 [eslint.interlace.tools](https://eslint.interlace.tools)에서 확인하실 수 있습니다. 📚
31
- - [ガイド](https://eslint.interlace.tools/docs/quality/plugin-import-next)は [eslint.interlace.tools](https://eslint.interlace.tools)でご確認ください。 📚
32
- - Para ver la [guía](https://eslint.interlace.tools/docs/quality/plugin-import-next), visita [eslint.interlace.tools](https://eslint.interlace.tools). 📚
33
- - للاطلاع على [الدليل](https://eslint.interlace.tools/docs/quality/plugin-import-next)، قم بزيارة [eslint.interlace.tools](https://eslint.interlace.tools). 📚
29
+ - To check out the [guide](https://eslint.interlace.tools/docs/quality/plugin-import-next?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next), visit [eslint.interlace.tools](https://eslint.interlace.tools/?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next). 📚
30
+ - 要查看中文 [指南](https://eslint.interlace.tools/docs/quality/plugin-import-next?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next), 请访问 [eslint.interlace.tools](https://eslint.interlace.tools/?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next). 📚
31
+ - [가이드](https://eslint.interlace.tools/docs/quality/plugin-import-next?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) 문서는 [eslint.interlace.tools](https://eslint.interlace.tools/?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next)에서 확인하실 수 있습니다. 📚
32
+ - [ガイド](https://eslint.interlace.tools/docs/quality/plugin-import-next?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next)は [eslint.interlace.tools](https://eslint.interlace.tools/?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next)でご確認ください。 📚
33
+ - Para ver la [guía](https://eslint.interlace.tools/docs/quality/plugin-import-next?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next), visita [eslint.interlace.tools](https://eslint.interlace.tools/?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next). 📚
34
+ - للاطلاع على [الدليل](https://eslint.interlace.tools/docs/quality/plugin-import-next?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next)، قم بزيارة [eslint.interlace.tools](https://eslint.interlace.tools/?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next). 📚
34
35
 
35
36
  ```bash
36
37
  npm install eslint-plugin-import-next --save-dev
37
38
  ```
38
39
 
39
- ## 🔄 Compatibility Matrix
40
- | Rule | Original Plugin | Status | Notes |
41
- | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------- | :----------------------- |
42
- | All Rules | [`eslint-plugin-import`](https://www.npmjs.com/package/eslint-plugin-import) [![npm](https://img.shields.io/npm/v/eslint-plugin-import.svg?style=flat-square)](https://www.npmjs.com/package/eslint-plugin-import) | ✅ Supported | Full drop-in replacement |
43
-
44
- ---
45
-
46
40
  ## ⚙️ Configuration Presets
47
41
  | Preset | Description |
48
42
  | :------------------ | :----------------------------------------------- |
@@ -58,6 +52,19 @@ npm install eslint-plugin-import-next --save-dev
58
52
  | `errors` | Matches eslint-plugin-import errors preset |
59
53
  | `warnings` | Matches eslint-plugin-import warnings preset |
60
54
 
55
+ ## 🔄 Parity with `eslint-plugin-import`
56
+ | Rule | Original Plugin | Status | Notes |
57
+ | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------- | :----------------------- |
58
+ | All Rules | [`eslint-plugin-import`](https://www.npmjs.com/package/eslint-plugin-import) [![npm](https://img.shields.io/npm/v/eslint-plugin-import.svg?style=flat-square)](https://www.npmjs.com/package/eslint-plugin-import) | ✅ Supported | Full drop-in replacement |
59
+
60
+ ## 📦 Compatibility
61
+ | Package | Version |
62
+ | :--- | :--- |
63
+ | ESLint | `^8.0.0 \|\| ^9.0.0 \|\| ^10.0.0` |
64
+ | Node.js | `>=18.0.0` |
65
+
66
+ See the [ESLint Version Support Policy](../../docs/ESLINT_VERSION_SUPPORT.md) for the full matrix.
67
+
61
68
  ## Rules
62
69
 
63
70
  **Legend**
@@ -65,69 +72,74 @@ npm install eslint-plugin-import-next --save-dev
65
72
  | Icon | Description |
66
73
  | :---: | :--- |
67
74
  | 💼 | **Recommended**: Included in the recommended preset. |
68
- | ⚠️ | **Warns**: Set towarn in recommended preset. |
75
+ | ⚠️ | **Warns**: Set to warn in recommended preset. |
69
76
  | 🔧 | **Auto-fixable**: Automatically fixable by the `--fix` CLI option. |
70
77
  | 💡 | **Suggestions**: Providing code suggestions in IDE. |
71
78
  | 🚫 | **Deprecated**: This rule is deprecated. |
72
-
73
- | Rule | CWE | OWASP | CVSS | Description | 💼 | ⚠️ | 🔧 | 💡 | 🚫 |
74
- | :--- | :---: | :---: | :---: | :--- | :---: | :---: | :---: | :---: | :---: |
75
- | [consistent-type-specifier-style](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/consistent-type-specifier-style) | | | | ESLint rule documentation for consistent-type-specifier-style | | | | | |
76
- | [default](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/default) | | | | ESLint rule documentation for default | | | | | |
77
- | [dynamic-import-chunkname](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/dynamic-import-chunkname) | | | | ESLint rule documentation for dynamic-import-chunkname | | | | | |
78
- | [enforce-dependency-direction](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/enforce-dependency-direction) | | | | ESLint rule documentation for enforce-dependency-direction | | | | | |
79
- | [enforce-import-order](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/enforce-import-order) | | | | ESLint rule documentation for enforce-import-order | | | | | |
80
- | [enforce-team-boundaries](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/enforce-team-boundaries) | | | | ESLint rule documentation for enforce-team-boundaries | | | | | |
81
- | [export](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/export) | | | | ESLint rule documentation for export | | | | | |
82
- | [exports-last](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/exports-last) | | | | ESLint rule documentation for exports-last | | | | | |
83
- | [extensions](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/extensions) | | | | ESLint rule documentation for extensions | | | | | |
84
- | [first](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/first) | | | | ESLint rule documentation for first | | | | | |
85
- | [group-exports](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/group-exports) | | | | ESLint rule documentation for group-exports | | | | | |
86
- | [max-dependencies](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/max-dependencies) | | | | ESLint rule documentation for max-dependencies | | | | | |
87
- | [named](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/named) | | | | ESLint rule documentation for named | | | | | |
88
- | [namespace](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/namespace) | | | | ESLint rule documentation for namespace | | | | | |
89
- | [newline-after-import](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/newline-after-import) | | | | ESLint rule documentation for newline-after-import | | | | | |
90
- | [no-absolute-path](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-absolute-path) | | | | ESLint rule documentation for no-absolute-path | | | | | |
91
- | [no-amd](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-amd) | | | | ESLint rule documentation for no-amd | | | | | |
92
- | [no-anonymous-default-export](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-anonymous-default-export) | | | | ESLint rule documentation for no-anonymous-default-export | | | | | |
93
- | [no-barrel-file](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-barrel-file) | | | | ESLint rule documentation for no-barrel-file | | | | | |
94
- | [no-barrel-import](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-barrel-import) | | | | ESLint rule documentation for no-barrel-import | | | | | |
95
- | [no-commonjs](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-commonjs) | | | | ESLint rule documentation for no-commonjs | | | | | |
96
- | [no-cross-domain-imports](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-cross-domain-imports) | | | | ESLint rule documentation for no-cross-domain-imports | | | | | |
97
- | [no-cycle](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-cycle) | | | | ESLint rule documentation for no-cycle | | | | | |
98
- | [no-default-export](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-default-export) | | | | ESLint rule documentation for no-default-export | | | | | |
99
- | [no-deprecated](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-deprecated) | | | | ESLint rule documentation for no-deprecated | | | | | |
100
- | [no-duplicates](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-duplicates) | | | | ESLint rule documentation for no-duplicates | | | | | |
101
- | [no-dynamic-require](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-dynamic-require) | | | | ESLint rule documentation for no-dynamic-require | | | | | |
102
- | [no-empty-named-blocks](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-empty-named-blocks) | | | | ESLint rule documentation for no-empty-named-blocks | | | | | |
103
- | [no-extraneous-dependencies](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-extraneous-dependencies) | | | | ESLint rule documentation for no-extraneous-dependencies | | | | | |
104
- | [no-full-package-import](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-full-package-import) | | | | ESLint rule documentation for no-full-package-import | | | | | |
105
- | [no-import-module-exports](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-import-module-exports) | | | | ESLint rule documentation for no-import-module-exports | | | | | |
106
- | [no-internal-modules](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-internal-modules) | | | | ESLint rule documentation for no-internal-modules | | | | | |
107
- | [no-legacy-imports](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-legacy-imports) | | | | ESLint rule documentation for no-legacy-imports | | | | | |
108
- | [no-mutable-exports](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-mutable-exports) | | | | ESLint rule documentation for no-mutable-exports | | | | | |
109
- | [no-named-as-default](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-named-as-default) | | | | ESLint rule documentation for no-named-as-default | | | | | |
110
- | [no-named-as-default-member](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-named-as-default-member) | | | | ESLint rule documentation for no-named-as-default-member | | | | | |
111
- | [no-named-default](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-named-default) | | | | ESLint rule documentation for no-named-default | | | | | |
112
- | [no-named-export](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-named-export) | | | | ESLint rule documentation for no-named-export | | | | | |
113
- | [no-namespace](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-namespace) | | | | ESLint rule documentation for no-namespace | | | | | |
114
- | [no-nodejs-modules](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-nodejs-modules) | | | | ESLint rule documentation for no-nodejs-modules | | | | | |
115
- | [no-relative-packages](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-relative-packages) | | | | ESLint rule documentation for no-relative-packages | | | | | |
116
- | [no-relative-parent-imports](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-relative-parent-imports) | | | | ESLint rule documentation for no-relative-parent-imports | | | | | |
117
- | [no-restricted-paths](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-restricted-paths) | | | | ESLint rule documentation for no-restricted-paths | | | | | |
118
- | [no-self-import](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-self-import) | | | | ESLint rule documentation for no-self-import | | | | | |
119
- | [no-unassigned-import](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-unassigned-import) | | | | ESLint rule documentation for no-unassigned-import | | | | | |
120
- | [no-unresolved](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-unresolved) | | | | ESLint rule documentation for no-unresolved | | | | | |
121
- | [no-unused-modules](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-unused-modules) | | | | ESLint rule documentation for no-unused-modules | | | | | |
122
- | [no-useless-path-segments](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-useless-path-segments) | | | | ESLint rule documentation for no-useless-path-segments | | | | | |
123
- | [prefer-default-export](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/prefer-default-export) | | | | ESLint rule documentation for prefer-default-export | | | | | |
124
- | [prefer-direct-import](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/prefer-direct-import) | | | | ESLint rule documentation for prefer-direct-import | | | | | |
125
- | [prefer-modern-api](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/prefer-modern-api) | | | | ESLint rule documentation for prefer-modern-api | | | | | |
126
- | [prefer-node-protocol](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/prefer-node-protocol) | | | | ESLint rule documentation for prefer-node-protocol | | | | | |
127
- | [prefer-tree-shakeable-imports](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/prefer-tree-shakeable-imports) | | | | ESLint rule documentation for prefer-tree-shakeable-imports | | | | | |
128
- | [require-import-approval](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/require-import-approval) | | | | ESLint rule documentation for require-import-approval | | | | | |
129
- | [unambiguous](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/unambiguous) | | | | ESLint rule documentation for unambiguous | | | | | |
130
-
79
+ | 🟢 | **Type-unaware**: AST-only, runs in oxlint JS-plugin tier. |
80
+ | 🟡 | **Type-aware (refining)**: pure-AST primary path; types refine precision. |
81
+ | 🟠 | **Type-aware (graceful)**: requires TS program; silent without it. |
82
+
83
+ <!-- AUTO-GENERATED:RULES_TABLE:START - Do not edit manually -->
84
+ | Rule | CWE | OWASP | CVSS | Description | 🧠 | 💼 | ⚠️ | 🔧 | 💡 | 🚫 |
85
+ | :--- | :---: | :---: | :---: | :--- | :---: | :---: | :---: | :---: | :---: | :---: |
86
+ | [consistent-type-specifier-style](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/consistent-type-specifier-style?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
87
+ | [default](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/default?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟡 | 💼 | | | | |
88
+ | [dynamic-import-chunkname](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/dynamic-import-chunkname?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
89
+ | [enforce-dependency-direction](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/enforce-dependency-direction?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
90
+ | [enforce-import-order](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/enforce-import-order?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
91
+ | [enforce-team-boundaries](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/enforce-team-boundaries?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
92
+ | [export](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/export?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | 💼 | | | | |
93
+ | [exports-last](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/exports-last?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
94
+ | [extensions](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/extensions?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
95
+ | [first](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/first?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | ⚠️ | | | |
96
+ | [group-exports](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/group-exports?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
97
+ | [max-dependencies](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/max-dependencies?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
98
+ | [named](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/named?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟡 | 💼 | | | | |
99
+ | [namespace](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/namespace?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟡 | | ⚠️ | | | |
100
+ | [newline-after-import](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/newline-after-import?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | ⚠️ | | | |
101
+ | [no-absolute-path](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-absolute-path?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
102
+ | [no-amd](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-amd?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | ⚠️ | | | |
103
+ | [no-anonymous-default-export](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-anonymous-default-export?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
104
+ | [no-barrel-file](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-barrel-file?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
105
+ | [no-barrel-import](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-barrel-import?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
106
+ | [no-commonjs](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-commonjs?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
107
+ | [no-cross-domain-imports](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-cross-domain-imports?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
108
+ | [no-cycle](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-cycle?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | A05:2021 | | | 🟢 | 💼 | | | | |
109
+ | [no-default-export](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-default-export?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
110
+ | [no-deprecated](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-deprecated?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | A09:2021 | | | 🟢 | | | | | |
111
+ | [no-duplicates](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-duplicates?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | 💼 | | | | |
112
+ | [no-dynamic-require](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-dynamic-require?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
113
+ | [no-empty-named-blocks](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-empty-named-blocks?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | ⚠️ | | | |
114
+ | [no-extraneous-dependencies](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-extraneous-dependencies?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | ⚠️ | | | |
115
+ | [no-full-package-import](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-full-package-import?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
116
+ | [no-import-module-exports](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-import-module-exports?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
117
+ | [no-internal-modules](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-internal-modules?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
118
+ | [no-legacy-imports](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-legacy-imports?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
119
+ | [no-mutable-exports](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-mutable-exports?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
120
+ | [no-named-as-default](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-named-as-default?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | ⚠️ | | | |
121
+ | [no-named-as-default-member](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-named-as-default-member?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | ⚠️ | | | |
122
+ | [no-named-default](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-named-default?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
123
+ | [no-named-export](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-named-export?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
124
+ | [no-namespace](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-namespace?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
125
+ | [no-nodejs-modules](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-nodejs-modules?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
126
+ | [no-relative-packages](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-relative-packages?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
127
+ | [no-relative-parent-imports](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-relative-parent-imports?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
128
+ | [no-restricted-paths](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-restricted-paths?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
129
+ | [no-self-import](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-self-import?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | 💼 | | | | |
130
+ | [no-unassigned-import](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-unassigned-import?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
131
+ | [no-unresolved](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-unresolved?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | A03:2021 | | | 🟢 | 💼 | | | | |
132
+ | [no-unused-modules](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-unused-modules?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
133
+ | [no-useless-path-segments](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/no-useless-path-segments?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
134
+ | [order](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/order?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | ⚠️ | | | |
135
+ | [prefer-default-export](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/prefer-default-export?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
136
+ | [prefer-direct-import](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/prefer-direct-import?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
137
+ | [prefer-modern-api](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/prefer-modern-api?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
138
+ | [prefer-node-protocol](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/prefer-node-protocol?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
139
+ | [prefer-tree-shakeable-imports](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/prefer-tree-shakeable-imports?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
140
+ | [require-import-approval](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/require-import-approval?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
141
+ | [unambiguous](https://eslint.interlace.tools/docs/quality/plugin-import-next/rules/unambiguous?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next) | | | | | 🟢 | | | | | |
142
+ <!-- AUTO-GENERATED:RULES_TABLE:END -->
131
143
  ## 🔗 Related ESLint Plugins
132
144
 
133
145
  Part of the **Interlace ESLint Ecosystem** — AI-native security plugins with LLM-optimized error messages:
@@ -136,7 +148,7 @@ Part of the **Interlace ESLint Ecosystem** — AI-native security plugins with L
136
148
  | :--- | :---: | :--- |
137
149
  | [`eslint-plugin-secure-coding`](https://www.npmjs.com/package/eslint-plugin-secure-coding) | [![downloads](https://img.shields.io/npm/dt/eslint-plugin-secure-coding.svg?style=flat-square)](https://www.npmjs.com/package/eslint-plugin-secure-coding) | General security rules & OWASP guidelines. |
138
150
  | [`eslint-plugin-pg`](https://www.npmjs.com/package/eslint-plugin-pg) | [![downloads](https://img.shields.io/npm/dt/eslint-plugin-pg.svg?style=flat-square)](https://www.npmjs.com/package/eslint-plugin-pg) | PostgreSQL security & best practices. |
139
- | [`eslint-plugin-crypto`](https://www.npmjs.com/package/eslint-plugin-crypto) | [![downloads](https://img.shields.io/npm/dt/eslint-plugin-crypto.svg?style=flat-square)](https://www.npmjs.com/package/eslint-plugin-crypto) | NodeJS Cryptography security rules. |
151
+ | [`eslint-plugin-node-security`](https://www.npmjs.com/package/eslint-plugin-node-security) | [![downloads](https://img.shields.io/npm/dt/eslint-plugin-node-security.svg?style=flat-square)](https://www.npmjs.com/package/eslint-plugin-node-security) | Node.js core-module security (fs, child_process, vm, crypto, Buffer). |
140
152
  | [`eslint-plugin-jwt`](https://www.npmjs.com/package/eslint-plugin-jwt) | [![downloads](https://img.shields.io/npm/dt/eslint-plugin-jwt.svg?style=flat-square)](https://www.npmjs.com/package/eslint-plugin-jwt) | JWT security & best practices. |
141
153
  | [`eslint-plugin-browser-security`](https://www.npmjs.com/package/eslint-plugin-browser-security) | [![downloads](https://img.shields.io/npm/dt/eslint-plugin-browser-security.svg?style=flat-square)](https://www.npmjs.com/package/eslint-plugin-browser-security) | Browser-specific security & XSS prevention. |
142
154
  | [`eslint-plugin-express-security`](https://www.npmjs.com/package/eslint-plugin-express-security) | [![downloads](https://img.shields.io/npm/dt/eslint-plugin-express-security.svg?style=flat-square)](https://www.npmjs.com/package/eslint-plugin-express-security) | Express.js security hardening rules. |
@@ -146,10 +158,19 @@ Part of the **Interlace ESLint Ecosystem** — AI-native security plugins with L
146
158
  | [`eslint-plugin-vercel-ai-security`](https://www.npmjs.com/package/eslint-plugin-vercel-ai-security) | [![downloads](https://img.shields.io/npm/dt/eslint-plugin-vercel-ai-security.svg?style=flat-square)](https://www.npmjs.com/package/eslint-plugin-vercel-ai-security) | Vercel AI SDK security hardening. |
147
159
  | [`eslint-plugin-import-next`](https://www.npmjs.com/package/eslint-plugin-import-next) | [![downloads](https://img.shields.io/npm/dt/eslint-plugin-import-next.svg?style=flat-square)](https://www.npmjs.com/package/eslint-plugin-import-next) | Next-gen import sorting & architecture. |
148
160
 
161
+ <!-- INTERLACE:STAR_CTA:START -->
162
+ ## ⭐ Support & follow
163
+
164
+ If this plugin caught a real bug for you, **[star the repo](https://github.com/ofri-peretz/eslint)** — stars are the signal that keeps the Interlace ESLint ecosystem maintained — and **[follow the writeups on Dev.to](https://dev.to/ofri-peretz)** for the benchmarks and security research behind these rules.
165
+
166
+ [![GitHub stars](https://img.shields.io/github/stars/ofri-peretz/eslint?style=social)](https://github.com/ofri-peretz/eslint)
167
+
168
+ <!-- INTERLACE:STAR_CTA:END -->
169
+
149
170
  ## 📄 License
150
171
 
151
172
  MIT © [Ofri Peretz](https://github.com/ofri-peretz)
152
173
 
153
174
  <p align="center">
154
- <a href="https://eslint.interlace.tools/docs/quality/plugin-import-next"><img src="https://eslint.interlace.tools/images/og-import-next.png" alt="ESLint Interlace Plugin" width="100%" /></a>
175
+ <a href="https://eslint.interlace.tools/docs/quality/plugin-import-next?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-import-next"><img src="https://eslint.interlace.tools/images/og-import-next.png" alt="ESLint Interlace Plugin" width="100%" /></a>
155
176
  </p>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-import-next",
3
- "version": "2.3.5",
3
+ "version": "2.3.7",
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",
@@ -13,11 +13,15 @@
13
13
  "./types": {
14
14
  "types": "./src/types/index.d.ts",
15
15
  "default": "./src/types/index.js"
16
+ },
17
+ "./oxlint": {
18
+ "types": "./src/oxlint.d.ts",
19
+ "default": "./src/oxlint.js"
16
20
  }
17
21
  },
18
22
  "author": "Ofri Peretz <ofriperetzdev@gmail.com>",
19
23
  "license": "MIT",
20
- "homepage": "https://github.com/ofri-peretz/eslint/tree/main/packages/eslint-plugin-import-next#readme",
24
+ "homepage": "https://eslint.interlace.tools/docs/quality/plugin-import-next?utm_source=npm&utm_medium=referral&utm_campaign=eslint-plugin-import-next",
21
25
  "repository": {
22
26
  "type": "git",
23
27
  "url": "https://github.com/ofri-peretz/eslint",
@@ -64,13 +68,25 @@
64
68
  "engines": {
65
69
  "node": ">=18.0.0"
66
70
  },
67
- "peerDependencies": {},
71
+ "peerDependencies": {
72
+ "eslint": "^8.0.0 || ^9.0.0 || ^10.0.0"
73
+ },
68
74
  "dependencies": {
69
75
  "tslib": "^2.3.0",
70
- "@interlace/eslint-devkit": "^1.2.1"
76
+ "@interlace/eslint-devkit": "^1.4.1"
71
77
  },
72
78
  "devDependencies": {
73
79
  "@typescript-eslint/parser": "^8.46.2",
74
80
  "@typescript-eslint/rule-tester": "^8.46.2"
81
+ },
82
+ "scripts": {
83
+ "build": "tsx ../../scripts/build-package.ts",
84
+ "test": "vitest run",
85
+ "test:coverage": "vitest run --coverage",
86
+ "typecheck": "tsc -p tsconfig.lib.json --noEmit"
87
+ },
88
+ "funding": {
89
+ "type": "github",
90
+ "url": "https://github.com/ofri-peretz/eslint"
75
91
  }
76
- }
92
+ }
package/src/index.d.ts CHANGED
@@ -379,6 +379,198 @@ export declare const plugin: {
379
379
  * Preset configurations for common use cases
380
380
  */
381
381
  export declare const configs: {
382
+ /**
383
+ * Flagship preset — exactly the rule from this plugin that appears in the
384
+ * ecosystem-wide flagship list (`.agent/flagship-rules.md`). Use this when
385
+ * you want the highest-signal subset shippable in CI gates without the
386
+ * noise of `recommended`.
387
+ */
388
+ flagship: {
389
+ plugins: {
390
+ 'import-next': {
391
+ meta: {
392
+ name: string;
393
+ version: string;
394
+ };
395
+ rules: {
396
+ 'no-duplicates': TSESLint.RuleModule<"noDuplicates", import("./rules/no-duplicates").RuleOptions, unknown, TSESLint.RuleListener> & {
397
+ name: string;
398
+ };
399
+ named: TSESLint.RuleModule<"named", import("./rules/named").RuleOptions, unknown, TSESLint.RuleListener> & {
400
+ name: string;
401
+ };
402
+ default: TSESLint.RuleModule<"noDefaultExport", [], unknown, TSESLint.RuleListener> & {
403
+ name: string;
404
+ };
405
+ namespace: TSESLint.RuleModule<"namespace", import("./rules/namespace").RuleOptions, unknown, TSESLint.RuleListener> & {
406
+ name: string;
407
+ };
408
+ extensions: TSESLint.RuleModule<"missingExtension" | "unexpectedExtension", [{
409
+ pattern?: Record<string, "always" | "never">;
410
+ default?: "always" | "never";
411
+ }], unknown, TSESLint.RuleListener> & {
412
+ name: string;
413
+ };
414
+ 'no-self-import': TSESLint.RuleModule<"selfImport", [(import("./rules/no-self-import").Options | undefined)?], unknown, TSESLint.RuleListener> & {
415
+ name: string;
416
+ };
417
+ 'no-unresolved': TSESLint.RuleModule<"unresolvedImport" | "moduleNotFound" | "invalidExtension" | "addIgnoreComment", [(import("./rules/no-unresolved").Options | undefined)?], unknown, TSESLint.RuleListener> & {
418
+ name: string;
419
+ };
420
+ 'no-absolute-path': TSESLint.RuleModule<"absolutePath", [(import("./rules/no-absolute-path").Options | undefined)?], unknown, TSESLint.RuleListener> & {
421
+ name: string;
422
+ };
423
+ 'no-dynamic-require': TSESLint.RuleModule<"dynamicRequire" | "dynamicImport", [(import("./rules/no-dynamic-require").Options | undefined)?], unknown, TSESLint.RuleListener> & {
424
+ name: string;
425
+ };
426
+ 'no-relative-packages': TSESLint.RuleModule<"relativePackage", [(import("./rules/no-relative-packages").Options | undefined)?], unknown, TSESLint.RuleListener> & {
427
+ name: string;
428
+ };
429
+ 'no-useless-path-segments': TSESLint.RuleModule<"uselessPathSegments", [(import("./rules/no-useless-path-segments").Options | undefined)?], unknown, TSESLint.RuleListener> & {
430
+ name: string;
431
+ };
432
+ 'no-amd': TSESLint.RuleModule<"preferES6", [(import("./rules/no-amd").Options | undefined)?], unknown, TSESLint.RuleListener> & {
433
+ name: string;
434
+ };
435
+ 'no-commonjs': TSESLint.RuleModule<"preferES6" | "commonjsRequire" | "commonjsExport" | "commonjsModule", [(import("./rules/no-commonjs").Options | undefined)?], unknown, TSESLint.RuleListener> & {
436
+ name: string;
437
+ };
438
+ 'no-nodejs-modules': TSESLint.RuleModule<"nodejsBuiltinImport" | "nodejsBuiltinRequire" | "nodejsBuiltinDynamic", [(import("./rules/no-nodejs-modules").Options | undefined)?], unknown, TSESLint.RuleListener> & {
439
+ name: string;
440
+ };
441
+ 'no-import-module-exports': TSESLint.RuleModule<"importModuleExports", [(import("./rules/no-import-module-exports").Options | undefined)?], unknown, TSESLint.RuleListener> & {
442
+ name: string;
443
+ };
444
+ unambiguous: TSESLint.RuleModule<"ambiguous", [], unknown, TSESLint.RuleListener> & {
445
+ name: string;
446
+ };
447
+ 'no-cycle': TSESLint.RuleModule<"moduleSplit" | "directImport" | "extractShared" | "dependencyInjection", import("./rules/no-cycle").RuleOptions, unknown, TSESLint.RuleListener> & {
448
+ name: string;
449
+ };
450
+ 'no-internal-modules': TSESLint.RuleModule<"internalModuleImport" | "suggestPublicApi" | "suggestBarrelExport", [(import("./rules/no-internal-modules").Options | undefined)?], unknown, TSESLint.RuleListener> & {
451
+ name: string;
452
+ };
453
+ 'no-cross-domain-imports': TSESLint.RuleModule<"crossDomainImport" | "useSharedModule" | "useEvents" | "useApplicationService", [(import("./rules/no-cross-domain-imports").Options | undefined)?], unknown, TSESLint.RuleListener> & {
454
+ name: string;
455
+ };
456
+ 'enforce-dependency-direction': TSESLint.RuleModule<"dependencyDirectionViolation" | "useDependencyInversion" | "refactorDependency", [(import("./rules/enforce-dependency-direction").Options | undefined)?], unknown, TSESLint.RuleListener> & {
457
+ name: string;
458
+ };
459
+ 'no-restricted-paths': TSESLint.RuleModule<"restrictedPath" | "pathViolation" | "zoneViolation", [(import("./rules/no-restricted-paths").Options | undefined)?], unknown, TSESLint.RuleListener> & {
460
+ name: string;
461
+ };
462
+ 'no-relative-parent-imports': TSESLint.RuleModule<"relativeParentImport" | "preferAbsoluteImport" | "suggestAlias", [(import("./rules/no-relative-parent-imports").Options | undefined)?], unknown, TSESLint.RuleListener> & {
463
+ name: string;
464
+ };
465
+ export: TSESLint.RuleModule<"duplicateExport" | "duplicateDefault", [], unknown, TSESLint.RuleListener> & {
466
+ name: string;
467
+ };
468
+ 'no-default-export': TSESLint.RuleModule<"defaultExport" | "preferNamedExport" | "defaultExportRefactor", [(import("./rules/no-default-export").Options | undefined)?], unknown, TSESLint.RuleListener> & {
469
+ name: string;
470
+ };
471
+ 'no-named-export': TSESLint.RuleModule<"namedExport" | "suggestDefault", [(import("./rules/no-named-export").Options | undefined)?], unknown, TSESLint.RuleListener> & {
472
+ name: string;
473
+ };
474
+ 'prefer-default-export': TSESLint.RuleModule<"preferDefaultExport" | "singleNamedExport" | "multipleNamedToDefault", [(import("./rules/prefer-default-export").Options | undefined)?], unknown, TSESLint.RuleListener> & {
475
+ name: string;
476
+ };
477
+ 'no-anonymous-default-export': TSESLint.RuleModule<"anonymousDefaultExport" | "suggestNamedExport" | "arrowFunctionExport" | "useNamedExport", [(import("./rules/no-anonymous-default-export").Options | undefined)?], unknown, TSESLint.RuleListener> & {
478
+ name: string;
479
+ };
480
+ 'no-mutable-exports': TSESLint.RuleModule<"mutableExport" | "varExport" | "letExport", [(import("./rules/no-mutable-exports").Options | undefined)?], unknown, TSESLint.RuleListener> & {
481
+ name: string;
482
+ };
483
+ 'no-deprecated': TSESLint.RuleModule<"deprecatedImport" | "deprecatedExport" | "deprecatedUsage", [(import("./rules/no-deprecated").Options | undefined)?], unknown, TSESLint.RuleListener> & {
484
+ name: string;
485
+ };
486
+ 'exports-last': TSESLint.RuleModule<"exportNotLast", [], unknown, TSESLint.RuleListener> & {
487
+ name: string;
488
+ };
489
+ 'group-exports': TSESLint.RuleModule<"groupExports", [], unknown, TSESLint.RuleListener> & {
490
+ name: string;
491
+ };
492
+ 'enforce-import-order': TSESLint.RuleModule<"importOrder" | "alphabeticalOrder" | "importsNotContiguous", [(import("./rules/enforce-import-order").Options | undefined)?], unknown, TSESLint.RuleListener> & {
493
+ name: string;
494
+ };
495
+ order: TSESLint.RuleModule<"importOrder" | "alphabeticalOrder" | "importsNotContiguous", [(import("./rules/enforce-import-order").Options | undefined)?], unknown, TSESLint.RuleListener> & {
496
+ name: string;
497
+ };
498
+ 'no-unassigned-import': TSESLint.RuleModule<"unassignedImport" | "sideEffectOnly" | "missingAssignment", [(import("./rules/no-unassigned-import").Options | undefined)?], unknown, TSESLint.RuleListener> & {
499
+ name: string;
500
+ };
501
+ first: TSESLint.RuleModule<"first", import("./rules/first").RuleOptions, unknown, TSESLint.RuleListener> & {
502
+ name: string;
503
+ };
504
+ 'newline-after-import': TSESLint.RuleModule<"newlineAfterImport", import("./rules/newline-after-import").RuleOptions, unknown, TSESLint.RuleListener> & {
505
+ name: string;
506
+ };
507
+ 'no-empty-named-blocks': TSESLint.RuleModule<"emptyNamedBlock" | "suggestRemove", [], unknown, TSESLint.RuleListener> & {
508
+ name: string;
509
+ };
510
+ 'no-named-as-default': TSESLint.RuleModule<"namedAsDefault", [], unknown, TSESLint.RuleListener> & {
511
+ name: string;
512
+ };
513
+ 'no-named-as-default-member': TSESLint.RuleModule<"namedAsDefaultMember", [], unknown, TSESLint.RuleListener> & {
514
+ name: string;
515
+ };
516
+ 'no-named-default': TSESLint.RuleModule<"namedDefault", [], unknown, TSESLint.RuleListener> & {
517
+ name: string;
518
+ };
519
+ 'no-namespace': TSESLint.RuleModule<"noNamespace", [(import("./rules/no-namespace").Options | undefined)?], unknown, TSESLint.RuleListener> & {
520
+ name: string;
521
+ };
522
+ 'consistent-type-specifier-style': TSESLint.RuleModule<"preferInline" | "preferTopLevel", [(("prefer-inline" | "prefer-top-level") | undefined)?], unknown, TSESLint.RuleListener> & {
523
+ name: string;
524
+ };
525
+ 'dynamic-import-chunkname': TSESLint.RuleModule<"missingChunkName" | "invalidChunkName" | "suggestChunkName", [(import("./rules/dynamic-import-chunkname").Options | undefined)?], unknown, TSESLint.RuleListener> & {
526
+ name: string;
527
+ };
528
+ 'no-extraneous-dependencies': TSESLint.RuleModule<"extraneousDependency" | "missingDependency" | "devDependencyInProduction" | "addToDependencies" | "addToDevDependencies" | "moveToDependencies", [(import("./rules/no-extraneous-dependencies").Options | undefined)?], unknown, TSESLint.RuleListener> & {
529
+ name: string;
530
+ };
531
+ 'no-unused-modules': TSESLint.RuleModule<"missingExports", [(import("./rules/no-unused-modules").Options | undefined)?], unknown, TSESLint.RuleListener> & {
532
+ name: string;
533
+ };
534
+ 'max-dependencies': TSESLint.RuleModule<"maxDependencies" | "suggestRefactor" | "dependencyAnalysis", [(import("./rules/max-dependencies").Options | undefined)?], unknown, TSESLint.RuleListener> & {
535
+ name: string;
536
+ };
537
+ 'prefer-node-protocol': TSESLint.RuleModule<"preferNodeProtocol", [(import("./rules/prefer-node-protocol").Options | undefined)?], unknown, TSESLint.RuleListener> & {
538
+ name: string;
539
+ };
540
+ 'no-barrel-file': TSESLint.RuleModule<"barrelFileDetected" | "considerDirectExports", [(import("./rules/no-barrel-file").NoBarrelFileOptions | undefined)?], unknown, TSESLint.RuleListener> & {
541
+ name: string;
542
+ };
543
+ 'no-barrel-import': TSESLint.RuleModule<"barrelImportDetected", [(import("./rules/no-barrel-import").NoBarrelImportOptions | undefined)?], unknown, TSESLint.RuleListener> & {
544
+ name: string;
545
+ };
546
+ 'prefer-tree-shakeable-imports': TSESLint.RuleModule<"namespaceImport" | "defaultImportFromLargePackage", [(import("./rules/prefer-tree-shakeable-imports").PreferTreeShakeableOptions | undefined)?], unknown, TSESLint.RuleListener> & {
547
+ name: string;
548
+ };
549
+ 'prefer-direct-import': TSESLint.RuleModule<"preferDirectImport", [(import("./rules/prefer-direct-import").PreferDirectImportOptions | undefined)?], unknown, TSESLint.RuleListener> & {
550
+ name: string;
551
+ };
552
+ 'no-full-package-import': TSESLint.RuleModule<"fullPackageImport", [(import("./rules/no-full-package-import").NoFullPackageImportOptions | undefined)?], unknown, TSESLint.RuleListener> & {
553
+ name: string;
554
+ };
555
+ 'enforce-team-boundaries': TSESLint.RuleModule<"unauthorizedTeamImport", [import("./rules/enforce-team-boundaries").EnforceTeamBoundariesOptions], unknown, TSESLint.RuleListener> & {
556
+ name: string;
557
+ };
558
+ 'no-legacy-imports': TSESLint.RuleModule<"legacyImport", [import("./rules/no-legacy-imports").NoLegacyImportsOptions], unknown, TSESLint.RuleListener> & {
559
+ name: string;
560
+ };
561
+ 'require-import-approval': TSESLint.RuleModule<"unapprovedPackage" | "blockedPackage", [import("./rules/require-import-approval").RequireImportApprovalOptions], unknown, TSESLint.RuleListener> & {
562
+ name: string;
563
+ };
564
+ 'prefer-modern-api': TSESLint.RuleModule<"preferModernApi", [(import("./rules/prefer-modern-api").PreferModernApiOptions | undefined)?], unknown, TSESLint.RuleListener> & {
565
+ name: string;
566
+ };
567
+ };
568
+ };
569
+ };
570
+ rules: {
571
+ 'import-next/no-cycle': string;
572
+ };
573
+ };
382
574
  /**
383
575
  * Recommended configuration for most projects
384
576
  *