@@ -6,7 +6,9 @@ import type { SgRoot, Edit } from "@codemod.com/jssg-types/main";
6
6
* @returns The "scripts" node, or null if not found.
7
7
*/
8
8
export const getScriptsNode = ( packageJsonRootNode : SgRoot ) =>
9
- packageJsonRootNode . root ( ) . findAll ( {
9
+ packageJsonRootNode
10
+ . root ( )
11
+ . findAll ( {
10
12
rule : {
11
13
kind : "pair" ,
12
14
inside : {
@@ -31,12 +33,9 @@ export const getScriptsNode = (packageJsonRootNode: SgRoot) =>
31
33
* @param packageJsonRootNode The root node of the package.json AST.
32
34
* @returns An array of nodes representing the usage of Node.js.
33
35
*/
34
- export const getNodeJsUsage = ( packageJsonRootNode : SgRoot ) => {
35
- const scriptsNode = getScriptsNode ( packageJsonRootNode ) ;
36
-
37
- if ( ! scriptsNode ) return [ ] ;
38
-
39
- return scriptsNode . flatMap ( ( node ) =>
36
+ export const getNodeJsUsage = ( packageJsonRootNode : SgRoot ) =>
37
+ getScriptsNode ( packageJsonRootNode )
38
+ . flatMap ( ( node ) =>
40
39
node . findAll ( {
41
40
rule : {
42
41
kind : "string_content" ,
@@ -50,7 +49,6 @@ export const getNodeJsUsage = (packageJsonRootNode: SgRoot) => {
50
49
}
51
50
} )
52
51
) ;
53
- } ;
54
52
55
53
/**
56
54
* Replace Node.js arguments in the "scripts" node of a package.json AST.
@@ -59,17 +57,15 @@ export const getNodeJsUsage = (packageJsonRootNode: SgRoot) => {
59
57
* @param edits An array to collect the edits made.
60
58
*/
61
59
export const replaceNodeJsArgs = ( packageJsonRootNode : SgRoot , argsToValues : Record < string , string > , edits : Edit [ ] ) => {
62
- const nodeJsUsageNodes = getNodeJsUsage ( packageJsonRootNode ) ;
63
-
64
- if ( ! nodeJsUsageNodes . length ) return ;
65
-
66
- for ( const nodeJsUsageNode of nodeJsUsageNodes ) {
60
+ for ( const nodeJsUsageNode of getNodeJsUsage ( packageJsonRootNode ) ) {
67
61
const text = nodeJsUsageNode . text ( ) ;
68
62
69
63
for ( const [ argC , argP ] of Object . entries ( argsToValues ) ) {
70
64
const regex = new RegExp ( `(?<!\\S)${ argC } (?!\\S)` , 'g' ) ; // Match standalone arguments
65
+
71
66
if ( regex . test ( text ) ) {
72
67
const newText = text . replace ( regex , argP ) ;
68
+
73
69
edits . push ( nodeJsUsageNode . replace ( newText ) ) ;
74
70
}
75
71
}
0 commit comments