eslint-plugin-import-next 2.3.14 → 2.3.16

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 (62) hide show
  1. package/package.json +9 -4
  2. package/src/files/foo.js +1 -6
  3. package/src/files/no-default.js +1 -4
  4. package/src/index.js +1 -326
  5. package/src/oxlint.js +1 -3
  6. package/src/rules/consistent-type-specifier-style.js +1 -109
  7. package/src/rules/default.js +1 -56
  8. package/src/rules/dynamic-import-chunkname.js +1 -115
  9. package/src/rules/enforce-dependency-direction.js +1 -213
  10. package/src/rules/enforce-import-order.js +1 -299
  11. package/src/rules/enforce-team-boundaries.js +1 -191
  12. package/src/rules/export.js +1 -111
  13. package/src/rules/exports-last.js +1 -67
  14. package/src/rules/extensions.js +1 -105
  15. package/src/rules/first.js +1 -53
  16. package/src/rules/group-exports.js +1 -69
  17. package/src/rules/max-dependencies.js +1 -241
  18. package/src/rules/named.js +1 -67
  19. package/src/rules/namespace.js +1 -64
  20. package/src/rules/newline-after-import.js +1 -57
  21. package/src/rules/no-absolute-path.js +1 -107
  22. package/src/rules/no-amd.js +1 -108
  23. package/src/rules/no-anonymous-default-export.js +1 -135
  24. package/src/rules/no-barrel-file.js +1 -194
  25. package/src/rules/no-barrel-import.js +1 -135
  26. package/src/rules/no-commonjs.js +1 -312
  27. package/src/rules/no-cross-domain-imports.js +1 -233
  28. package/src/rules/no-cycle.js +2 -396
  29. package/src/rules/no-default-export.js +2 -213
  30. package/src/rules/no-deprecated.js +1 -316
  31. package/src/rules/no-duplicates.js +1 -81
  32. package/src/rules/no-dynamic-require.js +1 -78
  33. package/src/rules/no-empty-named-blocks.js +1 -103
  34. package/src/rules/no-extraneous-dependencies.js +7 -385
  35. package/src/rules/no-full-package-import.js +1 -134
  36. package/src/rules/no-import-module-exports.js +1 -76
  37. package/src/rules/no-internal-modules.js +1 -256
  38. package/src/rules/no-legacy-imports.js +1 -125
  39. package/src/rules/no-mutable-exports.js +1 -146
  40. package/src/rules/no-named-as-default-member.js +1 -73
  41. package/src/rules/no-named-as-default.js +1 -90
  42. package/src/rules/no-named-default.js +1 -48
  43. package/src/rules/no-named-export.js +1 -174
  44. package/src/rules/no-namespace.js +1 -71
  45. package/src/rules/no-nodejs-modules.js +1 -229
  46. package/src/rules/no-relative-packages.js +1 -129
  47. package/src/rules/no-relative-parent-imports.js +1 -118
  48. package/src/rules/no-restricted-paths.js +1 -89
  49. package/src/rules/no-self-import.js +1 -113
  50. package/src/rules/no-unassigned-import.js +1 -115
  51. package/src/rules/no-unresolved.js +1 -189
  52. package/src/rules/no-unused-modules.js +1 -82
  53. package/src/rules/no-useless-path-segments.js +1 -107
  54. package/src/rules/prefer-default-export.js +1 -188
  55. package/src/rules/prefer-direct-import.js +1 -170
  56. package/src/rules/prefer-modern-api.js +1 -212
  57. package/src/rules/prefer-node-protocol.js +1 -174
  58. package/src/rules/prefer-tree-shakeable-imports.js +1 -134
  59. package/src/rules/require-import-approval.js +1 -174
  60. package/src/rules/unambiguous.js +1 -70
  61. package/src/types/index.js +1 -2
  62. package/src/utils/typescript-peer.js +1 -23
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-import-next",
3
- "version": "2.3.14",
3
+ "version": "2.3.16",
4
4
  "description": "ESLint plugin for imports and module boundaries — drop-in replacement for eslint-plugin-import, 3.1x faster end-to-end, zero-config migration.",
5
5
  "type": "commonjs",
6
6
  "main": "./src/index.js",
@@ -72,15 +72,20 @@
72
72
  "node": ">=18.0.0"
73
73
  },
74
74
  "peerDependencies": {
75
- "eslint": "^8.0.0 || ^9.0.0 || ^10.0.0"
75
+ "eslint": "^8.0.0 || ^9.0.0 || ^10.0.0",
76
+ "typescript": ">=4.8.4"
76
77
  },
77
78
  "dependencies": {
78
- "tslib": "^2.3.0",
79
- "@interlace/eslint-devkit": "^1.6.1",
79
+ "@interlace/eslint-devkit": "^1.10.0",
80
80
  "oxc-resolver": "^11.24.2"
81
81
  },
82
82
  "funding": {
83
83
  "type": "github",
84
84
  "url": "git+https://github.com/ofri-peretz/eslint.git"
85
+ },
86
+ "peerDependenciesMeta": {
87
+ "typescript": {
88
+ "optional": true
89
+ }
85
90
  }
86
91
  }
package/src/files/foo.js CHANGED
@@ -1,6 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.bar = void 0;
4
- exports.default = foo;
5
- function foo() { return 'bar'; }
6
- exports.bar = 'baz';
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.bar=void 0;exports.default=foo;function foo(){return"bar"}exports.bar="baz";
@@ -1,4 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.foo = void 0;
4
- exports.foo = 'bar';
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.foo=void 0;exports.foo="bar";
package/src/index.js CHANGED
@@ -1,326 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.clearCircularDependencyCache = exports.configs = exports.plugin = exports.rules = void 0;
4
- const no_duplicates_1 = require("./rules/no-duplicates");
5
- const named_1 = require("./rules/named");
6
- const default_1 = require("./rules/default");
7
- const namespace_1 = require("./rules/namespace");
8
- const extensions_1 = require("./rules/extensions");
9
- const no_self_import_1 = require("./rules/no-self-import");
10
- const no_unresolved_1 = require("./rules/no-unresolved");
11
- const no_absolute_path_1 = require("./rules/no-absolute-path");
12
- const no_dynamic_require_1 = require("./rules/no-dynamic-require");
13
- const no_relative_packages_1 = require("./rules/no-relative-packages");
14
- const no_useless_path_segments_1 = require("./rules/no-useless-path-segments");
15
- const no_amd_1 = require("./rules/no-amd");
16
- const no_commonjs_1 = require("./rules/no-commonjs");
17
- const no_nodejs_modules_1 = require("./rules/no-nodejs-modules");
18
- const no_import_module_exports_1 = require("./rules/no-import-module-exports");
19
- const unambiguous_1 = require("./rules/unambiguous");
20
- const no_cycle_1 = require("./rules/no-cycle");
21
- Object.defineProperty(exports, "clearCircularDependencyCache", { enumerable: true, get: function () { return no_cycle_1.clearCircularDependencyCache; } });
22
- const no_internal_modules_1 = require("./rules/no-internal-modules");
23
- const no_cross_domain_imports_1 = require("./rules/no-cross-domain-imports");
24
- const enforce_dependency_direction_1 = require("./rules/enforce-dependency-direction");
25
- const no_restricted_paths_1 = require("./rules/no-restricted-paths");
26
- const no_relative_parent_imports_1 = require("./rules/no-relative-parent-imports");
27
- const export_1 = require("./rules/export");
28
- const no_default_export_1 = require("./rules/no-default-export");
29
- const no_named_export_1 = require("./rules/no-named-export");
30
- const prefer_default_export_1 = require("./rules/prefer-default-export");
31
- const no_anonymous_default_export_1 = require("./rules/no-anonymous-default-export");
32
- const no_mutable_exports_1 = require("./rules/no-mutable-exports");
33
- const no_deprecated_1 = require("./rules/no-deprecated");
34
- const exports_last_1 = require("./rules/exports-last");
35
- const group_exports_1 = require("./rules/group-exports");
36
- const enforce_import_order_1 = require("./rules/enforce-import-order");
37
- const no_unassigned_import_1 = require("./rules/no-unassigned-import");
38
- const first_1 = require("./rules/first");
39
- const newline_after_import_1 = require("./rules/newline-after-import");
40
- const no_empty_named_blocks_1 = require("./rules/no-empty-named-blocks");
41
- const no_named_as_default_1 = require("./rules/no-named-as-default");
42
- const no_named_as_default_member_1 = require("./rules/no-named-as-default-member");
43
- const no_named_default_1 = require("./rules/no-named-default");
44
- const no_namespace_1 = require("./rules/no-namespace");
45
- const consistent_type_specifier_style_1 = require("./rules/consistent-type-specifier-style");
46
- const dynamic_import_chunkname_1 = require("./rules/dynamic-import-chunkname");
47
- const no_extraneous_dependencies_1 = require("./rules/no-extraneous-dependencies");
48
- const no_unused_modules_1 = require("./rules/no-unused-modules");
49
- const max_dependencies_1 = require("./rules/max-dependencies");
50
- const prefer_node_protocol_1 = require("./rules/prefer-node-protocol");
51
- const no_barrel_file_1 = require("./rules/no-barrel-file");
52
- const no_barrel_import_1 = require("./rules/no-barrel-import");
53
- const prefer_tree_shakeable_imports_1 = require("./rules/prefer-tree-shakeable-imports");
54
- const prefer_direct_import_1 = require("./rules/prefer-direct-import");
55
- const no_full_package_import_1 = require("./rules/no-full-package-import");
56
- const enforce_team_boundaries_1 = require("./rules/enforce-team-boundaries");
57
- const no_legacy_imports_1 = require("./rules/no-legacy-imports");
58
- const require_import_approval_1 = require("./rules/require-import-approval");
59
- const prefer_modern_api_1 = require("./rules/prefer-modern-api");
60
- exports.rules = {
61
- 'no-duplicates': no_duplicates_1.noDuplicates,
62
- named: named_1.named,
63
- default: default_1.defaultRule,
64
- namespace: namespace_1.namespace,
65
- extensions: extensions_1.extensions,
66
- 'no-self-import': no_self_import_1.noSelfImport,
67
- 'no-unresolved': no_unresolved_1.noUnresolved,
68
- 'no-absolute-path': no_absolute_path_1.noAbsolutePath,
69
- 'no-dynamic-require': no_dynamic_require_1.noDynamicRequire,
70
- 'no-relative-packages': no_relative_packages_1.noRelativePackages,
71
- 'no-useless-path-segments': no_useless_path_segments_1.noUselessPathSegments,
72
- 'no-amd': no_amd_1.noAmd,
73
- 'no-commonjs': no_commonjs_1.noCommonjs,
74
- 'no-nodejs-modules': no_nodejs_modules_1.noNodejsModules,
75
- 'no-import-module-exports': no_import_module_exports_1.noImportModuleExports,
76
- unambiguous: unambiguous_1.unambiguous,
77
- 'no-cycle': no_cycle_1.noCycle,
78
- 'no-internal-modules': no_internal_modules_1.noInternalModules,
79
- 'no-cross-domain-imports': no_cross_domain_imports_1.noCrossDomainImports,
80
- 'enforce-dependency-direction': enforce_dependency_direction_1.enforceDependencyDirection,
81
- 'no-restricted-paths': no_restricted_paths_1.noRestrictedPaths,
82
- 'no-relative-parent-imports': no_relative_parent_imports_1.noRelativeParentImports,
83
- export: export_1.exportRule,
84
- 'no-default-export': no_default_export_1.noDefaultExport,
85
- 'no-named-export': no_named_export_1.noNamedExport,
86
- 'prefer-default-export': prefer_default_export_1.preferDefaultExport,
87
- 'no-anonymous-default-export': no_anonymous_default_export_1.noAnonymousDefaultExport,
88
- 'no-mutable-exports': no_mutable_exports_1.noMutableExports,
89
- 'no-deprecated': no_deprecated_1.noDeprecated,
90
- 'exports-last': exports_last_1.exportsLast,
91
- 'group-exports': group_exports_1.groupExports,
92
- 'enforce-import-order': enforce_import_order_1.enforceImportOrder,
93
- order: enforce_import_order_1.enforceImportOrder,
94
- 'no-unassigned-import': no_unassigned_import_1.noUnassignedImport,
95
- first: first_1.first,
96
- 'newline-after-import': newline_after_import_1.newlineAfterImport,
97
- 'no-empty-named-blocks': no_empty_named_blocks_1.noEmptyNamedBlocks,
98
- 'no-named-as-default': no_named_as_default_1.noNamedAsDefault,
99
- 'no-named-as-default-member': no_named_as_default_member_1.noNamedAsDefaultMember,
100
- 'no-named-default': no_named_default_1.noNamedDefault,
101
- 'no-namespace': no_namespace_1.noNamespace,
102
- 'consistent-type-specifier-style': consistent_type_specifier_style_1.consistentTypeSpecifierStyle,
103
- 'dynamic-import-chunkname': dynamic_import_chunkname_1.dynamicImportChunkname,
104
- 'no-extraneous-dependencies': no_extraneous_dependencies_1.noExtraneousDependencies,
105
- 'no-unused-modules': no_unused_modules_1.noUnusedModules,
106
- 'max-dependencies': max_dependencies_1.maxDependencies,
107
- 'prefer-node-protocol': prefer_node_protocol_1.preferNodeProtocol,
108
- 'no-barrel-file': no_barrel_file_1.noBarrelFile,
109
- 'no-barrel-import': no_barrel_import_1.noBarrelImport,
110
- 'prefer-tree-shakeable-imports': prefer_tree_shakeable_imports_1.preferTreeShakeableImports,
111
- 'prefer-direct-import': prefer_direct_import_1.preferDirectImport,
112
- 'no-full-package-import': no_full_package_import_1.noFullPackageImport,
113
- 'enforce-team-boundaries': enforce_team_boundaries_1.enforceTeamBoundaries,
114
- 'no-legacy-imports': no_legacy_imports_1.noLegacyImports,
115
- 'require-import-approval': require_import_approval_1.requireImportApproval,
116
- 'prefer-modern-api': prefer_modern_api_1.preferModernApi,
117
- };
118
- exports.plugin = {
119
- meta: {
120
- name: 'eslint-plugin-import-next',
121
- version: '2.3.14',
122
- },
123
- rules: exports.rules,
124
- };
125
- exports.configs = {
126
- flagship: {
127
- plugins: { 'import-next': exports.plugin },
128
- rules: {
129
- 'import-next/no-cycle': 'error',
130
- },
131
- },
132
- recommended: {
133
- plugins: {
134
- 'import-next': exports.plugin,
135
- },
136
- rules: {
137
- 'import-next/no-unresolved': 'error',
138
- 'import-next/named': 'error',
139
- 'import-next/default': 'error',
140
- 'import-next/namespace': 'warn',
141
- 'import-next/no-duplicates': 'error',
142
- 'import-next/export': 'error',
143
- 'import-next/no-cycle': 'error',
144
- 'import-next/no-self-import': 'error',
145
- 'import-next/no-named-as-default': 'warn',
146
- 'import-next/no-named-as-default-member': 'warn',
147
- 'import-next/no-amd': 'warn',
148
- 'import-next/order': 'warn',
149
- 'import-next/first': 'warn',
150
- 'import-next/newline-after-import': 'warn',
151
- 'import-next/no-empty-named-blocks': 'warn',
152
- 'import-next/no-extraneous-dependencies': 'warn',
153
- },
154
- },
155
- strict: {
156
- plugins: {
157
- 'import-next': exports.plugin,
158
- },
159
- rules: {
160
- 'import-next/no-unresolved': 'error',
161
- 'import-next/named': 'error',
162
- 'import-next/default': 'error',
163
- 'import-next/namespace': 'error',
164
- 'import-next/extensions': 'error',
165
- 'import-next/no-self-import': 'error',
166
- 'import-next/no-duplicates': 'error',
167
- 'import-next/no-absolute-path': 'error',
168
- 'import-next/no-dynamic-require': 'error',
169
- 'import-next/no-useless-path-segments': 'error',
170
- 'import-next/export': 'error',
171
- 'import-next/no-amd': 'error',
172
- 'import-next/no-commonjs': 'error',
173
- 'import-next/no-nodejs-modules': 'error',
174
- 'import-next/no-import-module-exports': 'error',
175
- 'import-next/unambiguous': 'error',
176
- 'import-next/no-cycle': 'error',
177
- 'import-next/no-internal-modules': 'error',
178
- 'import-next/no-cross-domain-imports': 'error',
179
- 'import-next/enforce-dependency-direction': 'error',
180
- 'import-next/no-restricted-paths': 'error',
181
- 'import-next/no-relative-parent-imports': 'error',
182
- 'import-next/no-relative-packages': 'error',
183
- 'import-next/no-anonymous-default-export': 'error',
184
- 'import-next/no-mutable-exports': 'error',
185
- 'import-next/no-deprecated': 'error',
186
- 'import-next/exports-last': 'error',
187
- 'import-next/group-exports': 'error',
188
- 'import-next/order': 'error',
189
- 'import-next/no-unassigned-import': 'error',
190
- 'import-next/first': 'error',
191
- 'import-next/newline-after-import': 'error',
192
- 'import-next/no-empty-named-blocks': 'error',
193
- 'import-next/no-named-as-default': 'error',
194
- 'import-next/no-named-as-default-member': 'error',
195
- 'import-next/no-named-default': 'error',
196
- 'import-next/no-namespace': 'error',
197
- 'import-next/consistent-type-specifier-style': 'error',
198
- 'import-next/no-extraneous-dependencies': 'error',
199
- 'import-next/no-unused-modules': 'error',
200
- 'import-next/max-dependencies': 'error',
201
- 'import-next/prefer-node-protocol': 'error',
202
- },
203
- },
204
- typescript: {
205
- plugins: {
206
- 'import-next': exports.plugin,
207
- },
208
- rules: {
209
- 'import-next/no-unresolved': 'error',
210
- 'import-next/named': 'off',
211
- 'import-next/default': 'error',
212
- 'import-next/namespace': 'error',
213
- 'import-next/export': 'error',
214
- 'import-next/no-cycle': 'error',
215
- 'import-next/no-duplicates': 'error',
216
- 'import-next/order': 'warn',
217
- 'import-next/first': 'warn',
218
- 'import-next/newline-after-import': 'warn',
219
- 'import-next/consistent-type-specifier-style': ['warn', 'prefer-inline'],
220
- },
221
- },
222
- 'module-resolution': {
223
- plugins: {
224
- 'import-next': exports.plugin,
225
- },
226
- rules: {
227
- 'import-next/no-unresolved': 'error',
228
- 'import-next/named': 'error',
229
- 'import-next/default': 'error',
230
- 'import-next/namespace': 'error',
231
- 'import-next/extensions': 'warn',
232
- 'import-next/no-self-import': 'error',
233
- 'import-next/no-duplicates': 'error',
234
- 'import-next/no-absolute-path': 'error',
235
- 'import-next/no-useless-path-segments': 'warn',
236
- },
237
- },
238
- 'import-style': {
239
- plugins: {
240
- 'import-next': exports.plugin,
241
- },
242
- rules: {
243
- 'import-next/order': 'error',
244
- 'import-next/first': 'error',
245
- 'import-next/newline-after-import': 'error',
246
- 'import-next/no-duplicates': 'error',
247
- 'import-next/no-unassigned-import': 'warn',
248
- 'import-next/no-empty-named-blocks': 'error',
249
- 'import-next/no-namespace': 'warn',
250
- },
251
- },
252
- esm: {
253
- plugins: {
254
- 'import-next': exports.plugin,
255
- },
256
- rules: {
257
- 'import-next/no-amd': 'error',
258
- 'import-next/no-commonjs': 'error',
259
- 'import-next/no-import-module-exports': 'error',
260
- 'import-next/unambiguous': 'error',
261
- 'import-next/prefer-node-protocol': 'error',
262
- },
263
- },
264
- architecture: {
265
- plugins: {
266
- 'import-next': exports.plugin,
267
- },
268
- rules: {
269
- 'import-next/no-cycle': 'error',
270
- 'import-next/no-internal-modules': 'error',
271
- 'import-next/no-cross-domain-imports': 'error',
272
- 'import-next/enforce-dependency-direction': 'error',
273
- 'import-next/no-restricted-paths': 'error',
274
- 'import-next/no-relative-parent-imports': 'warn',
275
- 'import-next/no-relative-packages': 'error',
276
- },
277
- },
278
- errors: {
279
- plugins: {
280
- 'import-next': exports.plugin,
281
- },
282
- rules: {
283
- 'import-next/no-unresolved': 'error',
284
- 'import-next/named': 'error',
285
- 'import-next/default': 'error',
286
- 'import-next/namespace': 'error',
287
- 'import-next/export': 'error',
288
- },
289
- },
290
- warnings: {
291
- plugins: {
292
- 'import-next': exports.plugin,
293
- },
294
- rules: {
295
- 'import-next/no-named-as-default': 'warn',
296
- 'import-next/no-named-as-default-member': 'warn',
297
- 'import-next/no-duplicates': 'warn',
298
- },
299
- },
300
- performance: {
301
- plugins: {
302
- 'import-next': exports.plugin,
303
- },
304
- rules: {
305
- 'import-next/no-barrel-file': 'error',
306
- 'import-next/no-barrel-import': 'warn',
307
- 'import-next/prefer-tree-shakeable-imports': 'warn',
308
- 'import-next/prefer-direct-import': 'warn',
309
- 'import-next/no-full-package-import': 'warn',
310
- 'import-next/no-cycle': 'error',
311
- },
312
- },
313
- enterprise: {
314
- plugins: {
315
- 'import-next': exports.plugin,
316
- },
317
- rules: {
318
- 'import-next/enforce-team-boundaries': 'off',
319
- 'import-next/no-legacy-imports': 'off',
320
- 'import-next/no-cross-domain-imports': 'warn',
321
- 'import-next/enforce-dependency-direction': 'warn',
322
- 'import-next/no-internal-modules': 'warn',
323
- },
324
- },
325
- };
326
- exports.default = exports.plugin;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.clearCircularDependencyCache=exports.configs=exports.plugin=exports.rules=void 0;const no_cycle_1=require("./rules/no-cycle");Object.defineProperty(exports,"clearCircularDependencyCache",{enumerable:true,get:function(){return no_cycle_1.clearCircularDependencyCache}});exports.rules={get"no-duplicates"(){return require("./rules/no-duplicates").noDuplicates},get named(){return require("./rules/named").named},get default(){return require("./rules/default").defaultRule},get namespace(){return require("./rules/namespace").namespace},get extensions(){return require("./rules/extensions").extensions},get"no-self-import"(){return require("./rules/no-self-import").noSelfImport},get"no-unresolved"(){return require("./rules/no-unresolved").noUnresolved},get"no-absolute-path"(){return require("./rules/no-absolute-path").noAbsolutePath},get"no-dynamic-require"(){return require("./rules/no-dynamic-require").noDynamicRequire},get"no-relative-packages"(){return require("./rules/no-relative-packages").noRelativePackages},get"no-useless-path-segments"(){return require("./rules/no-useless-path-segments").noUselessPathSegments},get"no-amd"(){return require("./rules/no-amd").noAmd},get"no-commonjs"(){return require("./rules/no-commonjs").noCommonjs},get"no-nodejs-modules"(){return require("./rules/no-nodejs-modules").noNodejsModules},get"no-import-module-exports"(){return require("./rules/no-import-module-exports").noImportModuleExports},get unambiguous(){return require("./rules/unambiguous").unambiguous},get"no-cycle"(){return require("./rules/no-cycle").noCycle},get"no-internal-modules"(){return require("./rules/no-internal-modules").noInternalModules},get"no-cross-domain-imports"(){return require("./rules/no-cross-domain-imports").noCrossDomainImports},get"enforce-dependency-direction"(){return require("./rules/enforce-dependency-direction").enforceDependencyDirection},get"no-restricted-paths"(){return require("./rules/no-restricted-paths").noRestrictedPaths},get"no-relative-parent-imports"(){return require("./rules/no-relative-parent-imports").noRelativeParentImports},get export(){return require("./rules/export").exportRule},get"no-default-export"(){return require("./rules/no-default-export").noDefaultExport},get"no-named-export"(){return require("./rules/no-named-export").noNamedExport},get"prefer-default-export"(){return require("./rules/prefer-default-export").preferDefaultExport},get"no-anonymous-default-export"(){return require("./rules/no-anonymous-default-export").noAnonymousDefaultExport},get"no-mutable-exports"(){return require("./rules/no-mutable-exports").noMutableExports},get"no-deprecated"(){return require("./rules/no-deprecated").noDeprecated},get"exports-last"(){return require("./rules/exports-last").exportsLast},get"group-exports"(){return require("./rules/group-exports").groupExports},get"enforce-import-order"(){return require("./rules/enforce-import-order").enforceImportOrder},get order(){return require("./rules/enforce-import-order").enforceImportOrder},get"no-unassigned-import"(){return require("./rules/no-unassigned-import").noUnassignedImport},get first(){return require("./rules/first").first},get"newline-after-import"(){return require("./rules/newline-after-import").newlineAfterImport},get"no-empty-named-blocks"(){return require("./rules/no-empty-named-blocks").noEmptyNamedBlocks},get"no-named-as-default"(){return require("./rules/no-named-as-default").noNamedAsDefault},get"no-named-as-default-member"(){return require("./rules/no-named-as-default-member").noNamedAsDefaultMember},get"no-named-default"(){return require("./rules/no-named-default").noNamedDefault},get"no-namespace"(){return require("./rules/no-namespace").noNamespace},get"consistent-type-specifier-style"(){return require("./rules/consistent-type-specifier-style").consistentTypeSpecifierStyle},get"dynamic-import-chunkname"(){return require("./rules/dynamic-import-chunkname").dynamicImportChunkname},get"no-extraneous-dependencies"(){return require("./rules/no-extraneous-dependencies").noExtraneousDependencies},get"no-unused-modules"(){return require("./rules/no-unused-modules").noUnusedModules},get"max-dependencies"(){return require("./rules/max-dependencies").maxDependencies},get"prefer-node-protocol"(){return require("./rules/prefer-node-protocol").preferNodeProtocol},get"no-barrel-file"(){return require("./rules/no-barrel-file").noBarrelFile},get"no-barrel-import"(){return require("./rules/no-barrel-import").noBarrelImport},get"prefer-tree-shakeable-imports"(){return require("./rules/prefer-tree-shakeable-imports").preferTreeShakeableImports},get"prefer-direct-import"(){return require("./rules/prefer-direct-import").preferDirectImport},get"no-full-package-import"(){return require("./rules/no-full-package-import").noFullPackageImport},get"enforce-team-boundaries"(){return require("./rules/enforce-team-boundaries").enforceTeamBoundaries},get"no-legacy-imports"(){return require("./rules/no-legacy-imports").noLegacyImports},get"require-import-approval"(){return require("./rules/require-import-approval").requireImportApproval},get"prefer-modern-api"(){return require("./rules/prefer-modern-api").preferModernApi}};exports.plugin={meta:{name:"eslint-plugin-import-next",version:"2.3.16"},rules:exports.rules};exports.configs={flagship:{plugins:{"import-next":exports.plugin},rules:{"import-next/no-cycle":"error"}},recommended:{plugins:{"import-next":exports.plugin},rules:{"import-next/no-unresolved":"error","import-next/named":"error","import-next/default":"error","import-next/namespace":"warn","import-next/no-duplicates":"error","import-next/export":"error","import-next/no-cycle":"error","import-next/no-self-import":"error","import-next/no-named-as-default":"warn","import-next/no-named-as-default-member":"warn","import-next/no-amd":"warn","import-next/order":"warn","import-next/first":"warn","import-next/newline-after-import":"warn","import-next/no-empty-named-blocks":"warn","import-next/no-extraneous-dependencies":"warn"}},strict:{plugins:{"import-next":exports.plugin},rules:{"import-next/no-unresolved":"error","import-next/named":"error","import-next/default":"error","import-next/namespace":"error","import-next/extensions":"error","import-next/no-self-import":"error","import-next/no-duplicates":"error","import-next/no-absolute-path":"error","import-next/no-dynamic-require":"error","import-next/no-useless-path-segments":"error","import-next/export":"error","import-next/no-amd":"error","import-next/no-commonjs":"error","import-next/no-nodejs-modules":"error","import-next/no-import-module-exports":"error","import-next/unambiguous":"error","import-next/no-cycle":"error","import-next/no-internal-modules":"error","import-next/no-cross-domain-imports":"error","import-next/enforce-dependency-direction":"error","import-next/no-restricted-paths":"error","import-next/no-relative-parent-imports":"error","import-next/no-relative-packages":"error","import-next/no-anonymous-default-export":"error","import-next/no-mutable-exports":"error","import-next/no-deprecated":"error","import-next/exports-last":"error","import-next/group-exports":"error","import-next/order":"error","import-next/no-unassigned-import":"error","import-next/first":"error","import-next/newline-after-import":"error","import-next/no-empty-named-blocks":"error","import-next/no-named-as-default":"error","import-next/no-named-as-default-member":"error","import-next/no-named-default":"error","import-next/no-namespace":"error","import-next/consistent-type-specifier-style":"error","import-next/no-extraneous-dependencies":"error","import-next/no-unused-modules":"error","import-next/max-dependencies":"error","import-next/prefer-node-protocol":"error"}},typescript:{plugins:{"import-next":exports.plugin},rules:{"import-next/no-unresolved":"error","import-next/named":"off","import-next/default":"error","import-next/namespace":"error","import-next/export":"error","import-next/no-cycle":"error","import-next/no-duplicates":"error","import-next/order":"warn","import-next/first":"warn","import-next/newline-after-import":"warn","import-next/consistent-type-specifier-style":["warn","prefer-inline"]}},"module-resolution":{plugins:{"import-next":exports.plugin},rules:{"import-next/no-unresolved":"error","import-next/named":"error","import-next/default":"error","import-next/namespace":"error","import-next/extensions":"warn","import-next/no-self-import":"error","import-next/no-duplicates":"error","import-next/no-absolute-path":"error","import-next/no-useless-path-segments":"warn"}},"import-style":{plugins:{"import-next":exports.plugin},rules:{"import-next/order":"error","import-next/first":"error","import-next/newline-after-import":"error","import-next/no-duplicates":"error","import-next/no-unassigned-import":"warn","import-next/no-empty-named-blocks":"error","import-next/no-namespace":"warn"}},esm:{plugins:{"import-next":exports.plugin},rules:{"import-next/no-amd":"error","import-next/no-commonjs":"error","import-next/no-import-module-exports":"error","import-next/unambiguous":"error","import-next/prefer-node-protocol":"error"}},architecture:{plugins:{"import-next":exports.plugin},rules:{"import-next/no-cycle":"error","import-next/no-internal-modules":"error","import-next/no-cross-domain-imports":"error","import-next/enforce-dependency-direction":"error","import-next/no-restricted-paths":"error","import-next/no-relative-parent-imports":"warn","import-next/no-relative-packages":"error"}},errors:{plugins:{"import-next":exports.plugin},rules:{"import-next/no-unresolved":"error","import-next/named":"error","import-next/default":"error","import-next/namespace":"error","import-next/export":"error"}},warnings:{plugins:{"import-next":exports.plugin},rules:{"import-next/no-named-as-default":"warn","import-next/no-named-as-default-member":"warn","import-next/no-duplicates":"warn"}},performance:{plugins:{"import-next":exports.plugin},rules:{"import-next/no-barrel-file":"error","import-next/no-barrel-import":"warn","import-next/prefer-tree-shakeable-imports":"warn","import-next/prefer-direct-import":"warn","import-next/no-full-package-import":"warn","import-next/no-cycle":"error"}},enterprise:{plugins:{"import-next":exports.plugin},rules:{"import-next/enforce-team-boundaries":"off","import-next/no-legacy-imports":"off","import-next/no-cross-domain-imports":"warn","import-next/enforce-dependency-direction":"warn","import-next/no-internal-modules":"warn"}}};exports.default=exports.plugin;
package/src/oxlint.js CHANGED
@@ -1,3 +1 @@
1
- "use strict";
2
- const index_1 = require("./index");
3
- module.exports = index_1.plugin;
1
+ "use strict";const index_1=require("./index");module.exports=index_1.plugin;
@@ -1,109 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.consistentTypeSpecifierStyle = void 0;
4
- const eslint_devkit_1 = require("@interlace/eslint-devkit");
5
- exports.consistentTypeSpecifierStyle = (0, eslint_devkit_1.createRule)({
6
- name: 'consistent-type-specifier-style',
7
- meta: {
8
- type: 'suggestion',
9
- docs: {
10
- url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/consistent-type-specifier-style.md',
11
- description: 'Enforce or ban the use of inline type-only markers for named imports',
12
- cwe: 'CWE-1078',
13
- cvss: 2.5,
14
- },
15
- fixable: 'code',
16
- messages: {
17
- preferInline: (0, eslint_devkit_1.formatLLMMessage)({
18
- icon: eslint_devkit_1.MessageIcons.ARCHITECTURE,
19
- issueName: 'Type Import Style',
20
- cwe: 'CWE-1078',
21
- description: 'Use inline type specifier: import { type Foo }',
22
- severity: 'LOW',
23
- fix: 'Convert to inline type: import { type {{name}} } from ...',
24
- documentationLink: 'https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/consistent-type-specifier-style.md',
25
- }),
26
- preferTopLevel: (0, eslint_devkit_1.formatLLMMessage)({
27
- icon: eslint_devkit_1.MessageIcons.ARCHITECTURE,
28
- issueName: 'Type Import Style',
29
- cwe: 'CWE-1078',
30
- description: 'Use top-level type import: import type { Foo }',
31
- severity: 'LOW',
32
- fix: 'Convert to top-level type: import type { {{name}} } from ...',
33
- documentationLink: 'https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/consistent-type-specifier-style.md',
34
- }),
35
- },
36
- schema: [
37
- {
38
- type: 'string',
39
- enum: ['prefer-inline', 'prefer-top-level'],
40
- default: 'prefer-inline',
41
- },
42
- ],
43
- },
44
- defaultOptions: ['prefer-inline'],
45
- create(context) {
46
- const style = context.options[0] || 'prefer-inline';
47
- const sourceCode = context.sourceCode;
48
- function getSpecifierText(spec) {
49
- const imported = spec.imported.type === 'Identifier'
50
- ? spec.imported.name
51
- : spec.imported.value;
52
- const local = spec.local.name;
53
- if (imported === local) {
54
- return imported;
55
- }
56
- return `${imported} as ${local}`;
57
- }
58
- return {
59
- ImportDeclaration(node) {
60
- const isTypeImport = node.importKind === 'type';
61
- if (style === 'prefer-inline') {
62
- if (isTypeImport && node.specifiers.length > 0) {
63
- const namedSpecifiers = node.specifiers.filter((s) => s.type === 'ImportSpecifier');
64
- if (namedSpecifiers.length > 0) {
65
- context.report({
66
- node,
67
- messageId: 'preferInline',
68
- data: {
69
- name: namedSpecifiers.map((s) => s.local.name).join(', '),
70
- },
71
- fix(fixer) {
72
- const specifiersText = namedSpecifiers
73
- .map((spec) => `type ${getSpecifierText(spec)}`)
74
- .join(', ');
75
- const sourceText = sourceCode.getText(node.source);
76
- const newImport = `import { ${specifiersText} } from ${sourceText};`;
77
- return fixer.replaceText(node, newImport);
78
- },
79
- });
80
- }
81
- }
82
- }
83
- else {
84
- const namedSpecifiers = node.specifiers.filter((s) => s.type === 'ImportSpecifier');
85
- const inlineTypeSpecifiers = namedSpecifiers.filter((s) => s.importKind === 'type');
86
- if (!isTypeImport &&
87
- namedSpecifiers.length > 0 &&
88
- inlineTypeSpecifiers.length === namedSpecifiers.length) {
89
- context.report({
90
- node,
91
- messageId: 'preferTopLevel',
92
- data: {
93
- name: namedSpecifiers.map((s) => s.local.name).join(', '),
94
- },
95
- fix(fixer) {
96
- const specifiersText = namedSpecifiers
97
- .map((spec) => getSpecifierText(spec))
98
- .join(', ');
99
- const sourceText = sourceCode.getText(node.source);
100
- const newImport = `import type { ${specifiersText} } from ${sourceText};`;
101
- return fixer.replaceText(node, newImport);
102
- },
103
- });
104
- }
105
- }
106
- },
107
- };
108
- },
109
- });
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.consistentTypeSpecifierStyle=void 0;const eslint_devkit_1=require("@interlace/eslint-devkit");exports.consistentTypeSpecifierStyle=(0,eslint_devkit_1.createRule)({name:"consistent-type-specifier-style",meta:{type:"suggestion",docs:{url:"https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/consistent-type-specifier-style.md",description:"Enforce or ban the use of inline type-only markers for named imports",cwe:"CWE-1078",cvss:2.5},fixable:"code",messages:{preferInline:(0,eslint_devkit_1.formatLLMMessage)({icon:eslint_devkit_1.MessageIcons.ARCHITECTURE,issueName:"Type Import Style",cwe:"CWE-1078",description:"Use inline type specifier: import { type Foo }",severity:"LOW",fix:"Convert to inline type: import { type {{name}} } from ...",documentationLink:"https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/consistent-type-specifier-style.md"}),preferTopLevel:(0,eslint_devkit_1.formatLLMMessage)({icon:eslint_devkit_1.MessageIcons.ARCHITECTURE,issueName:"Type Import Style",cwe:"CWE-1078",description:"Use top-level type import: import type { Foo }",severity:"LOW",fix:"Convert to top-level type: import type { {{name}} } from ...",documentationLink:"https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/consistent-type-specifier-style.md"})},schema:[{type:"string",enum:["prefer-inline","prefer-top-level"],default:"prefer-inline"}]},defaultOptions:["prefer-inline"],create(context){const style=context.options[0]||"prefer-inline";const sourceCode=context.sourceCode;function getSpecifierText(spec){const imported=spec.imported.type==="Identifier"?spec.imported.name:spec.imported.value;const local=spec.local.name;if(imported===local){return imported}return`${imported} as ${local}`}return{ImportDeclaration(node){const isTypeImport=node.importKind==="type";if(style==="prefer-inline"){if(isTypeImport&&node.specifiers.length>0){const namedSpecifiers=node.specifiers.filter(s=>s.type==="ImportSpecifier");if(namedSpecifiers.length>0){context.report({node,messageId:"preferInline",data:{name:namedSpecifiers.map(s=>s.local.name).join(", ")},fix(fixer){const specifiersText=namedSpecifiers.map(spec=>`type ${getSpecifierText(spec)}`).join(", ");const sourceText=sourceCode.getText(node.source);const newImport=`import { ${specifiersText} } from ${sourceText};`;return fixer.replaceText(node,newImport)}})}}}else{const namedSpecifiers=node.specifiers.filter(s=>s.type==="ImportSpecifier");const inlineTypeSpecifiers=namedSpecifiers.filter(s=>s.importKind==="type");if(!isTypeImport&&namedSpecifiers.length>0&&inlineTypeSpecifiers.length===namedSpecifiers.length){context.report({node,messageId:"preferTopLevel",data:{name:namedSpecifiers.map(s=>s.local.name).join(", ")},fix(fixer){const specifiersText=namedSpecifiers.map(spec=>getSpecifierText(spec)).join(", ");const sourceText=sourceCode.getText(node.source);const newImport=`import type { ${specifiersText} } from ${sourceText};`;return fixer.replaceText(node,newImport)}})}}}}}});
@@ -1,56 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defaultRule = void 0;
4
- const eslint_devkit_1 = require("@interlace/eslint-devkit");
5
- const eslint_devkit_2 = require("@interlace/eslint-devkit");
6
- const typescript_peer_1 = require("../utils/typescript-peer");
7
- exports.defaultRule = (0, eslint_devkit_1.createRule)({
8
- name: 'default',
9
- meta: {
10
- type: 'problem',
11
- docs: {
12
- url: 'https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/default.md',
13
- description: 'Ensure a default export is present, given a default import',
14
- },
15
- messages: {
16
- noDefaultExport: (0, eslint_devkit_2.formatLLMMessage)({
17
- icon: eslint_devkit_2.MessageIcons.QUALITY,
18
- issueName: 'Missing Default Export',
19
- description: 'No default export found in imported module',
20
- severity: 'HIGH',
21
- fix: 'Use named imports or add a default export to the module',
22
- documentationLink: 'https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/default.md',
23
- }),
24
- },
25
- schema: [],
26
- },
27
- defaultOptions: [],
28
- create(context) {
29
- if (!(0, eslint_devkit_2.hasParserServices)(context))
30
- return {};
31
- const services = (0, eslint_devkit_2.getParserServices)(context);
32
- const checker = services.program?.getTypeChecker?.();
33
- return {
34
- ImportDefaultSpecifier(node) {
35
- if (node.parent.type === 'ImportDeclaration' &&
36
- node.parent.importKind === 'type')
37
- return;
38
- const tsNode = services.esTreeNodeToTSNodeMap.get(node);
39
- const symbol = checker?.getSymbolAtLocation?.(tsNode);
40
- const moduleNode = services.esTreeNodeToTSNodeMap.get(node.parent.source);
41
- const moduleSymbol = checker?.getSymbolAtLocation?.(moduleNode);
42
- if (moduleSymbol && !symbol) {
43
- const tsModule = (0, typescript_peer_1.loadTypeScript)();
44
- if (tsModule &&
45
- moduleSymbol.exports &&
46
- !moduleSymbol.exports.has(tsModule.InternalSymbolName.Default)) {
47
- context.report({
48
- node,
49
- messageId: 'noDefaultExport',
50
- });
51
- }
52
- }
53
- },
54
- };
55
- },
56
- });
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.defaultRule=void 0;const eslint_devkit_1=require("@interlace/eslint-devkit");const eslint_devkit_2=require("@interlace/eslint-devkit");const typescript_peer_1=require("../utils/typescript-peer");exports.defaultRule=(0,eslint_devkit_1.createRule)({name:"default",meta:{type:"problem",docs:{url:"https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/default.md",description:"Ensure a default export is present, given a default import"},messages:{noDefaultExport:(0,eslint_devkit_2.formatLLMMessage)({icon:eslint_devkit_2.MessageIcons.QUALITY,issueName:"Missing Default Export",description:"No default export found in imported module",severity:"HIGH",fix:"Use named imports or add a default export to the module",documentationLink:"https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/default.md"})},schema:[]},defaultOptions:[],create(context){if(!(0,eslint_devkit_2.hasParserServices)(context))return{};const services=(0,eslint_devkit_2.getParserServices)(context);const checker=services.program?.getTypeChecker?.();return{ImportDefaultSpecifier(node){if(node.parent.type==="ImportDeclaration"&&node.parent.importKind==="type")return;const tsNode=services.esTreeNodeToTSNodeMap.get(node);const symbol=checker?.getSymbolAtLocation?.(tsNode);const moduleNode=services.esTreeNodeToTSNodeMap.get(node.parent.source);const moduleSymbol=checker?.getSymbolAtLocation?.(moduleNode);if(moduleSymbol&&!symbol){const tsModule=(0,typescript_peer_1.loadTypeScript)();if(tsModule&&moduleSymbol.exports&&!moduleSymbol.exports.has(tsModule.InternalSymbolName.Default)){context.report({node,messageId:"noDefaultExport"})}}}}}});