Skip to content

Commit

Permalink
fix(isOneLineRequire): must return true for a one line require with n…
Browse files Browse the repository at this point in the history
…o export
  • Loading branch information
fraxken committed Jul 21, 2024
1 parent 6b5e612 commit 497787b
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 6 deletions.
18 changes: 12 additions & 6 deletions src/utils/isOneLineExpressionExport.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,23 @@
import { exportAssignmentHasRequireLeave } from "./exportAssignmentHasRequireLeave.js";

export function isOneLineExpressionExport(body) {
if (body.length > 1) {
if (body.length === 0 || body.length > 1) {
return false;
}

if (body[0].type !== "ExpressionStatement") {
const [firstNode] = body;
if (firstNode.type !== "ExpressionStatement") {
return false;
}

if (body[0].expression.type !== "AssignmentExpression") {
return false;
switch (firstNode.expression.type) {
// module.exports = require('...');
case "AssignmentExpression":
return exportAssignmentHasRequireLeave(firstNode.expression.right);
// require('...');
case "CallExpression":
return exportAssignmentHasRequireLeave(firstNode.expression);
default:
return false;
}

return exportAssignmentHasRequireLeave(body[0].expression.right);
}
19 changes: 19 additions & 0 deletions test/issues/283-oneline-require-minified.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// Import Node.js Dependencies
import { test } from "node:test";
import assert from "node:assert";

// Import Internal Dependencies
import { runASTAnalysis } from "../../index.js";

// Regression test for https://github.com/NodeSecure/js-x-ray/issues/283
test("Given a one line require (with no module.exports) then isOneLineRequire must equal true", () => {
const { isOneLineRequire } = runASTAnalysis(`require('foo.js');`);

assert.ok(isOneLineRequire);
});

test("Given an empty code then isOneLineRequire must equal false", () => {
const { isOneLineRequire } = runASTAnalysis(``);

assert.strictEqual(isOneLineRequire, false);
});

0 comments on commit 497787b

Please sign in to comment.