@@ -3,7 +3,6 @@ import path from "node:path";
33
44// Import Third-party Dependencies
55import { Hex } from "@nodesecure/sec-literal" ;
6- import { walk as doWalk } from "estree-walker" ;
76import {
87 arrayExpressionToString ,
98 getMemberExpressionIdentifier ,
@@ -17,6 +16,7 @@ import {
1716 isLiteral ,
1817 isCallExpression
1918} from "../../types/estree.js" ;
19+ import { walkEnter } from "../../walker/index.js" ;
2020
2121export class RequireCallExpressionWalker {
2222 tracer : VariableTracer ;
@@ -41,47 +41,44 @@ export class RequireCallExpressionWalker {
4141
4242 // we need the `this` context of doWalk.enter
4343 const self = this ;
44- // @ts -expect-error
45- doWalk ( callExprNode , {
46- enter ( node : any ) {
47- if (
48- ! isCallExpression ( node ) ||
49- node . arguments . length === 0
50- ) {
51- return ;
52- }
53-
54- const castedNode = node as ESTree . CallExpression ;
55- const rootArgument = castedNode . arguments . at ( 0 ) ! ;
56- if (
57- rootArgument . type === "Literal" &&
58- typeof rootArgument . value === "string" &&
59- Hex . isHex ( rootArgument . value )
60- ) {
61- self . dependencies . add ( Buffer . from ( rootArgument . value , "hex" ) . toString ( ) ) ;
62- this . skip ( ) ;
63-
64- return ;
65- }
66-
67- const fullName = castedNode . callee . type === "MemberExpression" ?
68- [ ...getMemberExpressionIdentifier ( castedNode . callee ) ] . join ( "." ) :
69- castedNode . callee . name ;
70- const tracedFullName = self . tracer . getDataFromIdentifier ( fullName ) ?. identifierOrMemberExpr ?? fullName ;
71- switch ( tracedFullName ) {
72- case "atob" :
73- self . #handleAtob( castedNode ) ;
74- break ;
75- case "Buffer.from" :
76- self . #handleBufferFrom( castedNode ) ;
77- break ;
78- case "require.resolve" :
79- self . #handleRequireResolve( rootArgument ) ;
80- break ;
81- case "path.join" :
82- self . #handlePathJoin( castedNode ) ;
83- break ;
84- }
44+ walkEnter ( callExprNode , function enter ( node ) {
45+ if (
46+ ! isCallExpression ( node ) ||
47+ node . arguments . length === 0
48+ ) {
49+ return ;
50+ }
51+
52+ const castedNode = node as ESTree . CallExpression ;
53+ const rootArgument = castedNode . arguments . at ( 0 ) ! ;
54+ if (
55+ rootArgument . type === "Literal" &&
56+ typeof rootArgument . value === "string" &&
57+ Hex . isHex ( rootArgument . value )
58+ ) {
59+ self . dependencies . add ( Buffer . from ( rootArgument . value , "hex" ) . toString ( ) ) ;
60+ this . skip ( ) ;
61+
62+ return ;
63+ }
64+
65+ const fullName = castedNode . callee . type === "MemberExpression" ?
66+ [ ...getMemberExpressionIdentifier ( castedNode . callee ) ] . join ( "." ) :
67+ castedNode . callee . name ;
68+ const tracedFullName = self . tracer . getDataFromIdentifier ( fullName ) ?. identifierOrMemberExpr ?? fullName ;
69+ switch ( tracedFullName ) {
70+ case "atob" :
71+ self . #handleAtob( castedNode ) ;
72+ break ;
73+ case "Buffer.from" :
74+ self . #handleBufferFrom( castedNode ) ;
75+ break ;
76+ case "require.resolve" :
77+ self . #handleRequireResolve( rootArgument ) ;
78+ break ;
79+ case "path.join" :
80+ self . #handlePathJoin( castedNode ) ;
81+ break ;
8582 }
8683 } ) ;
8784
0 commit comments