eslint-plugin-import-next 2.8.0 → 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-import-next",
3
- "version": "2.8.0",
3
+ "version": "2.8.1",
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",
package/src/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.clearCircularDependencyCache=exports.configs=exports.plugin=exports.rules=void 0;const eslint_devkit_1=require("@interlace/eslint-devkit");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}};(0,eslint_devkit_1.withCanonicalDocsUrls)("plugin-import-next",exports.rules);exports.plugin={meta:{name:"eslint-plugin-import-next",version:"2.8.0"},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/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;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.clearCircularDependencyCache=exports.configs=exports.plugin=exports.rules=void 0;const eslint_devkit_1=require("@interlace/eslint-devkit");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}};(0,eslint_devkit_1.withCanonicalDocsUrls)("plugin-import-next",exports.rules);exports.plugin={meta:{name:"eslint-plugin-import-next",version:"2.8.1"},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/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;
@@ -1 +1 @@
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");const rebuildWouldDropABinding=node.specifiers.length!==namedSpecifiers.length;if(!isTypeImport&&namedSpecifiers.length>0&&inlineTypeSpecifiers.length===namedSpecifiers.length){context.report({node,messageId:"preferTopLevel",data:{name:namedSpecifiers.map(s=>s.local.name).join(", ")},fix:rebuildWouldDropABinding?void 0:function(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
+ "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=sourceCode.getText(spec.imported);const local=spec.local.name;if(spec.imported.type==="Identifier"&&spec.imported.name===local){return imported}return`${imported} as ${local}`}return{ImportDeclaration(node){const isTypeImport=node.importKind==="type";const rebuildWouldDropAnAttribute=(node.attributes?.length??0)>0;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:rebuildWouldDropAnAttribute?void 0:function(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");const rebuildWouldDropABinding=node.specifiers.length!==namedSpecifiers.length||rebuildWouldDropAnAttribute;if(!isTypeImport&&namedSpecifiers.length>0&&inlineTypeSpecifiers.length===namedSpecifiers.length){context.report({node,messageId:"preferTopLevel",data:{name:namedSpecifiers.map(s=>s.local.name).join(", ")},fix:rebuildWouldDropABinding?void 0:function(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 +1 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{"default":mod}};Object.defineProperty(exports,"__esModule",{value:true});exports.extensions=void 0;const eslint_devkit_1=require("@interlace/eslint-devkit");const eslint_devkit_2=require("@interlace/eslint-devkit");const node_path_1=__importDefault(require("node:path"));exports.extensions=(0,eslint_devkit_1.createRule)({name:"extensions",meta:{type:"suggestion",docs:{url:"https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/extensions.md",description:"Ensure consistent use of file extensions in imports"},fixable:"code",messages:{missingExtension:(0,eslint_devkit_2.formatLLMMessage)({icon:eslint_devkit_2.MessageIcons.ARCHITECTURE,issueName:"Missing Extension",description:"Missing file extension in import",severity:"MEDIUM",fix:"Add the file extension (e.g., .js, .ts)",documentationLink:"https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/extensions.md"}),unexpectedExtension:(0,eslint_devkit_2.formatLLMMessage)({icon:eslint_devkit_2.MessageIcons.ARCHITECTURE,issueName:"Unexpected Extension",description:"Unexpected file extension in import",severity:"MEDIUM",fix:"Remove the file extension",documentationLink:"https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/extensions.md"})},schema:[{type:"object",properties:{pattern:{type:"object",additionalProperties:{type:"string",enum:["always","never"]}},default:{type:"string",enum:["always","never"]}},additionalProperties:false}]},defaultOptions:[{default:"never",pattern:{js:"never",ts:"never",tsx:"never",jsx:"never",json:"always",css:"always",scss:"always",svg:"always",png:"always",jpg:"always"}}],create(context){const[options={}]=context.options;const defaultBehavior=options.default??"never";const pattern=options.pattern??{js:"never",ts:"never",tsx:"never",jsx:"never",json:"always",css:"always",scss:"always"};return{ImportDeclaration(node){const source=node.source.value;if(!source.startsWith("."))return;const ext=node_path_1.default.extname(source).slice(1);const expected=pattern[ext]||defaultBehavior;if(ext&&expected==="never"){context.report({node:node.source,messageId:"unexpectedExtension",fix(fixer){return fixer.replaceText(node.source,`'${source.slice(0,-ext.length-1)}'`)}})}else if(!ext){if(defaultBehavior==="always"){context.report({node:node.source,messageId:"missingExtension"})}}}}}});
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{"default":mod}};Object.defineProperty(exports,"__esModule",{value:true});exports.extensions=void 0;const eslint_devkit_1=require("@interlace/eslint-devkit");const eslint_devkit_2=require("@interlace/eslint-devkit");const node_path_1=__importDefault(require("node:path"));exports.extensions=(0,eslint_devkit_1.createRule)({name:"extensions",meta:{type:"suggestion",docs:{url:"https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/extensions.md",description:"Ensure consistent use of file extensions in imports"},fixable:"code",messages:{missingExtension:(0,eslint_devkit_2.formatLLMMessage)({icon:eslint_devkit_2.MessageIcons.ARCHITECTURE,issueName:"Missing Extension",description:"Missing file extension in import",severity:"MEDIUM",fix:"Add the file extension (e.g., .js, .ts)",documentationLink:"https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/extensions.md"}),unexpectedExtension:(0,eslint_devkit_2.formatLLMMessage)({icon:eslint_devkit_2.MessageIcons.ARCHITECTURE,issueName:"Unexpected Extension",description:"Unexpected file extension in import",severity:"MEDIUM",fix:"Remove the file extension",documentationLink:"https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/extensions.md"})},schema:[{type:"object",properties:{pattern:{type:"object",additionalProperties:{type:"string",enum:["always","never"]}},default:{type:"string",enum:["always","never"]}},additionalProperties:false}]},defaultOptions:[{default:"never",pattern:{js:"never",ts:"never",tsx:"never",jsx:"never",json:"always",css:"always",scss:"always",svg:"always",png:"always",jpg:"always"}}],create(context){const[options={}]=context.options;const defaultBehavior=options.default??"never";const pattern=options.pattern??{js:"never",ts:"never",tsx:"never",jsx:"never",json:"always",css:"always",scss:"always"};function checkSource(source){if(!source)return;const value=source.value;if(!value.startsWith("."))return;const ext=node_path_1.default.extname(value).slice(1);const expected=pattern[ext]||defaultBehavior;if(ext&&expected==="never"){context.report({node:source,messageId:"unexpectedExtension",fix(fixer){return fixer.replaceText(source,`'${value.slice(0,-ext.length-1)}'`)}})}else if(!ext){if(defaultBehavior==="always"){context.report({node:source,messageId:"missingExtension"})}}}return{ImportDeclaration(node){checkSource(node.source)},ExportNamedDeclaration(node){checkSource(node.source)},ExportAllDeclaration(node){checkSource(node.source)}}}});
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.noUnusedModules=void 0;const eslint_devkit_1=require("@interlace/eslint-devkit");const eslint_devkit_2=require("@interlace/eslint-devkit");exports.noUnusedModules=(0,eslint_devkit_1.createRule)({name:"no-unused-modules",meta:{type:"problem",docs:{url:"https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/no-unused-modules.md",description:"Forbid modules without exports"},hasSuggestions:false,messages:{missingExports:(0,eslint_devkit_2.formatLLMMessage)({icon:eslint_devkit_2.MessageIcons.ARCHITECTURE,issueName:"Missing Exports",description:"Module has no exports",severity:"LOW",fix:"Add exports or remove if module is unused",documentationLink:"https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-unused-modules.md"})},schema:[{type:"object",properties:{allowImportOnly:{type:"boolean",default:false,description:"Allow modules that only contain imports."}},additionalProperties:false}]},defaultOptions:[{allowImportOnly:false}],create(context){const[options]=context.options;const{allowImportOnly=false}=options||{};let hasExports=false;return{ExportNamedDeclaration(){hasExports=true},ExportDefaultDeclaration(){hasExports=true},ExportAllDeclaration(){hasExports=true},AssignmentExpression(node){if(node.left.type==="MemberExpression"&&node.left.object.type==="Identifier"&&node.left.object.name==="module"&&(0,eslint_devkit_1.propertyName)(node.left)==="exports"){hasExports=true}if(node.left.type==="MemberExpression"&&node.left.object.type==="Identifier"&&node.left.object.name==="exports"){hasExports=true}},"Program:exit"(){if(!hasExports&&!allowImportOnly){context.report({node:context.sourceCode.ast,messageId:"missingExports"})}}}}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.noUnusedModules=void 0;const eslint_devkit_1=require("@interlace/eslint-devkit");const eslint_devkit_2=require("@interlace/eslint-devkit");exports.noUnusedModules=(0,eslint_devkit_1.createRule)({name:"no-unused-modules",meta:{type:"problem",docs:{url:"https://github.com/ofri-peretz/eslint/blob/main/packages/eslint-plugin-import-next/docs/rules/no-unused-modules.md",description:"Forbid modules without exports"},hasSuggestions:false,messages:{missingExports:(0,eslint_devkit_2.formatLLMMessage)({icon:eslint_devkit_2.MessageIcons.ARCHITECTURE,issueName:"Missing Exports",description:"Module has no exports",severity:"LOW",fix:"Add exports or remove if module is unused",documentationLink:"https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-unused-modules.md"})},schema:[{type:"object",properties:{allowImportOnly:{type:"boolean",default:false,description:"Allow modules that only contain imports."}},additionalProperties:false}]},defaultOptions:[{allowImportOnly:false}],create(context){const[options]=context.options;const{allowImportOnly=false}=options||{};let hasExports=false;let hasImports=false;return{ImportDeclaration(){hasImports=true},ExportNamedDeclaration(){hasExports=true},ExportDefaultDeclaration(){hasExports=true},ExportAllDeclaration(){hasExports=true},AssignmentExpression(node){if(node.left.type==="MemberExpression"&&node.left.object.type==="Identifier"&&node.left.object.name==="module"&&(0,eslint_devkit_1.propertyName)(node.left)==="exports"){hasExports=true}if(node.left.type==="MemberExpression"&&node.left.object.type==="Identifier"&&node.left.object.name==="exports"){hasExports=true}},"Program:exit"(){const importOnly=allowImportOnly&&hasImports;if(!hasExports&&!importOnly){context.report({node:context.sourceCode.ast,messageId:"missingExports"})}}}}});