diff --git a/codacy-plugins-api/src/main/scala/com/codacy/plugins/api/languages/Language.scala b/codacy-plugins-api/src/main/scala/com/codacy/plugins/api/languages/Language.scala index 0e48e73..341c6b1 100644 --- a/codacy-plugins-api/src/main/scala/com/codacy/plugins/api/languages/Language.scala +++ b/codacy-plugins-api/src/main/scala/com/codacy/plugins/api/languages/Language.scala @@ -99,7 +99,7 @@ object Languages { // Support startdate: Always case object Javascript - extends Language(extensions = Set(".js", ".jsx", ".jsm", ".vue", ".mjs"), + extends Language(extensions = Set(".js", ".jsx", ".jsm", ".vue", ".mjs", ".cjs"), files = Set("package.json", "package-lock.json", "yarn.lock", "pnpm-lock.yaml")) case object Scala extends Language(extensions = Set(".scala"), files = Set("build.sbt.lock")) @@ -145,7 +145,8 @@ object Languages { // Support startdate: 24 November 2016 case object TypeScript - extends Language(extensions = Set(".ts", ".tsx"), files = Set("package.json", "package-lock.json", "yarn.lock")) + extends Language(extensions = Set(".ts", ".tsx", ".mts", ".cts"), + files = Set("package.json", "package-lock.json", "yarn.lock")) // Support startdate: December 2016 case object Dockerfile extends Language(extensions = Set(".dockerfile"), files = Set("Dockerfile")) diff --git a/codacy-plugins-api/src/test/scala/com.codacy.plugins.api.languages/LanguageSpec.scala b/codacy-plugins-api/src/test/scala/com.codacy.plugins.api.languages/LanguageSpec.scala index 32c4efb..b57898f 100644 --- a/codacy-plugins-api/src/test/scala/com.codacy.plugins.api.languages/LanguageSpec.scala +++ b/codacy-plugins-api/src/test/scala/com.codacy.plugins.api.languages/LanguageSpec.scala @@ -33,6 +33,13 @@ class LanguageSpec extends AnyWordSpec with Matchers with OptionValues { Languages.forPath("src/File3.mjs").value shouldBe Languages.Javascript } + "forPath resolves the Node.js module-format extensions" in { + // CommonJS / ES module variants: .cjs/.mjs for JavaScript, .cts/.mts for TypeScript + Languages.forPath("scripts/count-issues.cjs").value shouldBe Languages.Javascript + Languages.forPath("src/index.mts").value shouldBe Languages.TypeScript + Languages.forPath("src/config.cts").value shouldBe Languages.TypeScript + } + "forPath resolves extensions case-insensitively" in { // extensions are stored lowercase; lookup lowercases the file's extension too Languages.forPath("src/analysis.R").value shouldBe Languages.R