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
@@ -33,7 +33,10 @@ exports.noRelativePackages = (0, eslint_devkit_1.createRule)({
33
33
  meta: {
34
34
  type: 'suggestion',
35
35
  docs: {
36
+ url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/no-relative-packages.md',
36
37
  description: 'Forbid importing packages through relative paths',
38
+ cwe: 'CWE-1047',
39
+ cvss: 5,
37
40
  },
38
41
  fixable: 'code',
39
42
  messages: {
@@ -61,7 +64,7 @@ exports.noRelativePackages = (0, eslint_devkit_1.createRule)({
61
64
  create(context) {
62
65
  const options = context.options[0] || {};
63
66
  const { allowSamePackage = true } = options;
64
- const filename = context.getFilename();
67
+ const filename = context.filename;
65
68
  const currentDir = path.dirname(filename);
66
69
  const currentPackageRoot = findPackageJson(currentDir);
67
70
  function checkImport(node, source) {
@@ -13,6 +13,7 @@ exports.noRelativeParentImports = (0, eslint_devkit_1.createRule)({
13
13
  meta: {
14
14
  type: 'problem',
15
15
  docs: {
16
+ url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/no-relative-parent-imports.md',
16
17
  description: 'Prevents ../ imports',
17
18
  },
18
19
  hasSuggestions: false,
@@ -13,6 +13,7 @@ exports.noRestrictedPaths = (0, eslint_devkit_1.createRule)({
13
13
  meta: {
14
14
  type: 'problem',
15
15
  docs: {
16
+ url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/no-restricted-paths.md',
16
17
  description: 'Enforce which files can be imported in a given folder',
17
18
  },
18
19
  hasSuggestions: false,
@@ -15,7 +15,7 @@ const path = tslib_1.__importStar(require("node:path"));
15
15
  const eslint_devkit_1 = require("@interlace/eslint-devkit");
16
16
  const eslint_devkit_2 = require("@interlace/eslint-devkit");
17
17
  function isImportingSelf(context, node, importPath) {
18
- const filename = context.getFilename();
18
+ const filename = context.filename;
19
19
  // If the input is from stdin, this test can't fail
20
20
  if (filename === '<text>') {
21
21
  return false;
@@ -55,6 +55,7 @@ exports.noSelfImport = (0, eslint_devkit_1.createRule)({
55
55
  meta: {
56
56
  type: 'problem',
57
57
  docs: {
58
+ url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/no-self-import.md',
58
59
  description: 'Forbid a module from importing itself',
59
60
  },
60
61
  messages: {
@@ -13,6 +13,7 @@ exports.noUnassignedImport = (0, eslint_devkit_1.createRule)({
13
13
  meta: {
14
14
  type: 'problem',
15
15
  docs: {
16
+ url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/no-unassigned-import.md',
16
17
  description: 'Prevents unassigned imports',
17
18
  },
18
19
  hasSuggestions: false,
@@ -19,6 +19,7 @@ exports.noUnresolved = (0, eslint_devkit_1.createRule)({
19
19
  meta: {
20
20
  type: 'problem',
21
21
  docs: {
22
+ url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/no-unresolved.md',
22
23
  description: 'Ensures imports point to resolvable modules',
23
24
  },
24
25
  hasSuggestions: true,
@@ -117,7 +118,7 @@ exports.noUnresolved = (0, eslint_devkit_1.createRule)({
117
118
  node_module_1.builtinModules.includes(importPath)) {
118
119
  return;
119
120
  }
120
- const filePath = context.filename || context.getFilename();
121
+ const filePath = context.filename;
121
122
  const resolved = (0, eslint_devkit_3.resolveModule)(importPath, filePath, {
122
123
  extensions: options?.extensions,
123
124
  });
@@ -149,7 +150,7 @@ exports.noUnresolved = (0, eslint_devkit_1.createRule)({
149
150
  }
150
151
  statement = statement.parent;
151
152
  }
152
- return fixer.insertTextBefore(statement, '// eslint-disable-next-line eslint-plugin-llm-optimized/no-unresolved\n');
153
+ return fixer.insertTextBefore(statement, '// eslint-disable-next-line import-next/no-unresolved\n');
153
154
  },
154
155
  },
155
156
  ],
@@ -13,6 +13,7 @@ exports.noUnusedModules = (0, eslint_devkit_1.createRule)({
13
13
  meta: {
14
14
  type: 'problem',
15
15
  docs: {
16
+ url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/no-unused-modules.md',
16
17
  description: 'Forbid modules without exports',
17
18
  },
18
19
  hasSuggestions: false,
@@ -14,7 +14,10 @@ exports.noUselessPathSegments = (0, eslint_devkit_1.createRule)({
14
14
  meta: {
15
15
  type: 'suggestion',
16
16
  docs: {
17
+ url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/no-useless-path-segments.md',
17
18
  description: 'Forbid unnecessary path segments in import and require statements',
19
+ cwe: 'CWE-1078',
20
+ cvss: 2.5,
18
21
  },
19
22
  fixable: 'code',
20
23
  messages: {
@@ -13,6 +13,7 @@ exports.preferDefaultExport = (0, eslint_devkit_1.createRule)({
13
13
  meta: {
14
14
  type: 'suggestion',
15
15
  docs: {
16
+ url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/prefer-default-export.md',
16
17
  description: 'Prefer a default export if module exports a single name',
17
18
  },
18
19
  hasSuggestions: true,
@@ -77,7 +78,7 @@ exports.preferDefaultExport = (0, eslint_devkit_1.createRule)({
77
78
  create(context) {
78
79
  const [options] = context.options;
79
80
  const { target = 'single', ignoreFiles = [], allowNamedExports = false, } = options || {};
80
- const filename = context.getFilename();
81
+ const filename = context.filename;
81
82
  if (!filename) {
82
83
  return {};
83
84
  }
@@ -47,6 +47,7 @@ exports.preferDirectImport = (0, eslint_devkit_1.createRule)({
47
47
  meta: {
48
48
  type: 'suggestion',
49
49
  docs: {
50
+ url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/prefer-direct-import.md',
50
51
  description: 'Prefer direct imports over barrel imports for better tree-shaking and build performance',
51
52
  },
52
53
  fixable: 'code',
@@ -126,6 +126,7 @@ exports.preferModernApi = (0, eslint_devkit_1.createRule)({
126
126
  meta: {
127
127
  type: 'suggestion',
128
128
  docs: {
129
+ url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/prefer-modern-api.md',
129
130
  description: 'Suggest modern replacements for deprecated or outdated libraries',
130
131
  },
131
132
  messages: {
@@ -58,6 +58,7 @@ exports.preferNodeProtocol = (0, eslint_devkit_1.createRule)({
58
58
  meta: {
59
59
  type: 'suggestion',
60
60
  docs: {
61
+ url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/prefer-node-protocol.md',
61
62
  description: 'Prefer using the node: protocol when importing Node.js builtin modules',
62
63
  },
63
64
  fixable: 'code',
@@ -160,6 +161,7 @@ exports.preferNodeProtocol = (0, eslint_devkit_1.createRule)({
160
161
  }
161
162
  },
162
163
  };
164
+ // oxlint-disable-next-line consistent-function-scoping
163
165
  function isBuiltInModule(moduleName, modulesToCheck) {
164
166
  // Skip if already using node: protocol
165
167
  if (moduleName.startsWith('node:')) {
@@ -39,6 +39,7 @@ exports.preferTreeShakeableImports = (0, eslint_devkit_1.createRule)({
39
39
  meta: {
40
40
  type: 'suggestion',
41
41
  docs: {
42
+ url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/prefer-tree-shakeable-imports.md',
42
43
  description: 'Prefer import patterns that enable effective tree-shaking',
43
44
  },
44
45
  hasSuggestions: true,
@@ -44,6 +44,7 @@ exports.requireImportApproval = (0, eslint_devkit_1.createRule)({
44
44
  meta: {
45
45
  type: 'problem',
46
46
  docs: {
47
+ url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/require-import-approval.md',
47
48
  description: 'Enforce explicit approval for high-risk package imports',
48
49
  },
49
50
  messages: {
@@ -12,7 +12,10 @@ exports.unambiguous = (0, eslint_devkit_1.createRule)({
12
12
  meta: {
13
13
  type: 'suggestion',
14
14
  docs: {
15
+ url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/unambiguous.md',
15
16
  description: 'Forbid potentially ambiguous parse goal (script vs. module)',
17
+ cwe: 'CWE-1078',
18
+ cvss: 2.5,
16
19
  },
17
20
  messages: {
18
21
  ambiguous: (0, eslint_devkit_1.formatLLMMessage)({