From cfa04fb51ccf679d22afa514f470526c83350ef1 Mon Sep 17 00:00:00 2001 From: pooya parsa Date: Fri, 25 Aug 2023 23:55:11 +0200 Subject: [PATCH] fix(isValidNodeImport): detect invalid cjs modules (#187) --- src/syntax.ts | 2 +- test/fixture/imports/js-cjs/index.js | 2 ++ test/fixture/imports/mixed/index.js | 12 ++++++++++++ test/fixture/imports/mixed/package.json | 5 +++++ test/syntax.test.ts | 1 + 5 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 test/fixture/imports/mixed/index.js create mode 100644 test/fixture/imports/mixed/package.json diff --git a/src/syntax.ts b/src/syntax.ts index d0759ba..05d12f5 100644 --- a/src/syntax.ts +++ b/src/syntax.ts @@ -94,5 +94,5 @@ export async function isValidNodeImport( (await fsp.readFile(resolvedPath, "utf8").catch(() => {})) || ""; - return hasCJSSyntax(code) || !hasESMSyntax(code); + return !hasESMSyntax(code); } diff --git a/test/fixture/imports/js-cjs/index.js b/test/fixture/imports/js-cjs/index.js index 093faf7..07205e0 100644 --- a/test/fixture/imports/js-cjs/index.js +++ b/test/fixture/imports/js-cjs/index.js @@ -1,2 +1,4 @@ // eslint-disable-next-line unicorn/prefer-module module.exports = "js-cjs"; + +console.log(import("node:fs")); diff --git a/test/fixture/imports/mixed/index.js b/test/fixture/imports/mixed/index.js new file mode 100644 index 0000000..f51cf0f --- /dev/null +++ b/test/fixture/imports/mixed/index.js @@ -0,0 +1,12 @@ +/* eslint-disable unicorn/prefer-module */ +export const isCrtAvailable = () => { + try { + if ( + typeof require === "function" && + typeof module !== "undefined" && + require("aws-crt") + ) { + return ["md/crt-avail"]; + } + } catch {} +}; diff --git a/test/fixture/imports/mixed/package.json b/test/fixture/imports/mixed/package.json new file mode 100644 index 0000000..c28b65a --- /dev/null +++ b/test/fixture/imports/mixed/package.json @@ -0,0 +1,5 @@ +{ + "name": "mixed", + "version": "1.0.0", + "main": "index.cjs" +} diff --git a/test/syntax.test.ts b/test/syntax.test.ts index 882c06f..c679880 100644 --- a/test/syntax.test.ts +++ b/test/syntax.test.ts @@ -110,6 +110,7 @@ const nodeImportTests = { [join(import.meta.url, "../fixture/imports/js-esm")]: false, [join(import.meta.url, "../fixture/imports/js-esm/es/index.mjs")]: true, [join(import.meta.url, "../fixture/imports/js-esm/es/index.js")]: false, + [join(import.meta.url, "../fixture/imports/mixed")]: false, }; describe("isValidNodeImport", () => {