Skip to content

Commit

Permalink
feat: Support arbitrary module namespace names in the camelcase rule (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
mdjermanovic committed Jan 6, 2022
1 parent dc26699 commit 359b2c1
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 1 deletion.
8 changes: 7 additions & 1 deletion lib/rules/camelcase.js
Expand Up @@ -5,6 +5,12 @@

"use strict";

//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------

const astUtils = require("./utils/ast-utils");

//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
Expand Down Expand Up @@ -165,7 +171,7 @@ module.exports = {
case "ImportSpecifier":
return (
parent.local === node &&
parent.imported.name === localName
astUtils.getModuleExportName(parent.imported) === localName
);

default:
Expand Down
44 changes: 44 additions & 0 deletions tests/lib/rules/camelcase.js
Expand Up @@ -164,11 +164,32 @@ ruleTester.run("camelcase", rule, {
options: [{ ignoreImports: true }],
parserOptions: { ecmaVersion: 6, sourceType: "module" }
},
{
code: "import { snake_cased as snake_cased } from 'mod'",
options: [{ ignoreImports: true }],
parserOptions: { ecmaVersion: 2022, sourceType: "module" }
},
{
code: "import { 'snake_cased' as snake_cased } from 'mod'",
options: [{ ignoreImports: true }],
parserOptions: { ecmaVersion: 2022, sourceType: "module" }
},
{
code: "import { camelCased } from 'mod'",
options: [{ ignoreImports: false }],
parserOptions: { ecmaVersion: 6, sourceType: "module" }
},

// this rule doesn't apply to quoted module export names, as it doesn't apply to quoted property names.
{
code: "export { a as 'snake_cased' } from 'mod'",
parserOptions: { ecmaVersion: 2022, sourceType: "module" }
},
{
code: "export * as 'snake_cased' from 'mod'",
parserOptions: { ecmaVersion: 2022, sourceType: "module" }
},

{
code: "var _camelCased = aGlobalVariable",
options: [{ ignoreGlobals: false }],
Expand Down Expand Up @@ -668,6 +689,29 @@ ruleTester.run("camelcase", rule, {
}
]
},
{
code: "import { 'snake_cased' as snake_cased } from 'mod'",
parserOptions: { ecmaVersion: 2022, sourceType: "module" },
errors: [
{
messageId: "notCamelCase",
data: { name: "snake_cased" },
type: "Identifier"
}
]
},
{
code: "import { 'snake_cased' as another_snake_cased } from 'mod'",
options: [{ ignoreImports: true }],
parserOptions: { ecmaVersion: 2022, sourceType: "module" },
errors: [
{
messageId: "notCamelCase",
data: { name: "another_snake_cased" },
type: "Identifier"
}
]
},
{
code: "import { camelCased, no_camelcased } from \"external-module\";",
parserOptions: { ecmaVersion: 6, sourceType: "module" },
Expand Down

0 comments on commit 359b2c1

Please sign in to comment.