Skip to content

Bug: require('module').property pattern not detected by getNodeRequireCalls utility function #167

@0xlakshan

Description

@0xlakshan

Description

The getNodeRequireCalls utility function currently detects most require statements, including destructured and direct assignments, but it fails to detect cases where a property is accessed directly from the require() call. Ex: require('node:buffer').atob

// Detected
const buffer = require('node:buffer');
const buffer = require('buffer');
const { atob } = require('node:buffer');
const { btoa } = require('node:buffer');
const { atob, btoa } = require('node:buffer');
const { atob: decode } = require('node:buffer');
const { btoa: encode } = require('node:buffer');
const { atob, btoa, Buffer } = require('node:buffer');
const { atob, btoa } = require('buffer');
// Not detected
const atob = require('node:buffer').atob;
const btoa = require('node:buffer').btoa;

Expected Behavior

// Detected
const buffer = require('node:buffer');
const buffer = require('buffer');
const { atob } = require('node:buffer');
const { btoa } = require('node:buffer');
const { atob, btoa } = require('node:buffer');
const { atob: decode } = require('node:buffer');
const { btoa: encode } = require('node:buffer');
const { atob, btoa, Buffer } = require('node:buffer');
const { atob, btoa } = require('buffer');
const atob = require('node:buffer').atob;
const btoa = require('node:buffer').btoa;

Utility function should detect all forms of require imports, including property access directly from the require() expression. This makes sure that consistent codemod coverage happns across different scenarios.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions