@@ -3,7 +3,6 @@ import path from "node:path";
3
3
4
4
// Import Third-party Dependencies
5
5
import { Hex } from "@nodesecure/sec-literal" ;
6
- import { walk as doWalk } from "estree-walker" ;
7
6
import {
8
7
arrayExpressionToString ,
9
8
getMemberExpressionIdentifier ,
@@ -17,6 +16,7 @@ import {
17
16
isLiteral ,
18
17
isCallExpression
19
18
} from "../../types/estree.js" ;
19
+ import { walkEnter } from "../../walker/index.js" ;
20
20
21
21
export class RequireCallExpressionWalker {
22
22
tracer : VariableTracer ;
@@ -41,47 +41,44 @@ export class RequireCallExpressionWalker {
41
41
42
42
// we need the `this` context of doWalk.enter
43
43
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 ;
85
82
}
86
83
} ) ;
87
84
0 commit comments