@@ -8,50 +8,89 @@ class CdsUtilsModuleAccess extends API::Node {
88 CdsUtilsModuleAccess ( ) { exists ( CdsFacade cds | this = cds .getMember ( "utils" ) ) }
99}
1010
11+ /**
12+ * CDS Utils:
13+ * `decodeURI`, `decodeURIComponent`, `local`
14+ */
1115class PathConverters extends DataFlow:: CallNode {
1216 PathConverters ( ) {
1317 exists ( CdsUtilsModuleAccess utils |
1418 utils .getMember ( [ "decodeURI" , "decodeURIComponent" , "local" ] ) .getACall ( ) = this
1519 )
1620 }
1721
22+ /**
23+ * Gets the arguments to these calls.
24+ */
1825 DataFlow:: Node getPath ( ) { this .getAnArgument ( ) = result }
1926}
2027
28+ /**
29+ * CDS Utils:
30+ * `isdir`, `isfile`
31+ */
2132class PathPredicates extends DataFlow:: CallNode {
2233 PathPredicates ( ) {
2334 exists ( CdsUtilsModuleAccess utils | utils .getMember ( [ "isdir" , "isfile" ] ) .getACall ( ) = this )
2435 }
2536
37+ /**
38+ * Gets the arguments to these calls.
39+ */
2640 DataFlow:: Node getPath ( ) { this .getAnArgument ( ) = result }
2741}
2842
43+ /**
44+ * CDS Utils:
45+ * `find`, `stat`, `readdir`
46+ */
2947class DirectoryReaders extends DataFlow:: CallNode {
3048 DirectoryReaders ( ) {
3149 exists ( CdsUtilsModuleAccess utils |
3250 utils .getMember ( [ "find" , "stat" , "readdir" ] ) .getACall ( ) = this
3351 )
3452 }
3553
54+ /**
55+ * Gets the arguments to these calls.
56+ */
3657 DataFlow:: Node getPath ( ) { this .getAnArgument ( ) = result }
3758}
3859
60+ /**
61+ * CDS Utils:
62+ * `mkdirp`, `rmdir`, `rimraf`, `rm`
63+ */
3964class DirectoryWriters extends DataFlow:: CallNode {
4065 DirectoryWriters ( ) {
4166 exists ( CdsUtilsModuleAccess utils |
4267 utils .getMember ( [ "mkdirp" , "rmdir" , "rimraf" , "rm" ] ) .getACall ( ) = this
4368 )
4469 }
4570
71+ /**
72+ * Gets the arguments to these calls.
73+ */
4674 DataFlow:: Node getPath ( ) { this .getAnArgument ( ) = result }
4775}
4876
77+ /**
78+ * CDS Utils:
79+ * `read`
80+ */
4981class FileReaders extends DataFlow:: CallNode {
5082 FileReaders ( ) { exists ( CdsUtilsModuleAccess utils | utils .getMember ( [ "read" ] ) .getACall ( ) = this ) }
5183
84+ /**
85+ * Gets the 0th argument to these calls.
86+ */
5287 DataFlow:: Node getPath ( ) { this .getArgument ( 0 ) = result }
5388}
5489
90+ /**
91+ * CDS Utils:
92+ * `append`, `write`
93+ */
5594class FileWriters extends DataFlow:: CallNode {
5695 FileWriters ( ) {
5796 exists ( CdsUtilsModuleAccess utils | utils .getMember ( [ "append" , "write" ] ) .getACall ( ) = this )
@@ -66,6 +105,9 @@ class FileWriters extends DataFlow::CallNode {
66105
67106 SourceNode fileReaderWriterUtils ( ) { result = fileReaderWriterUtils ( TypeTracker:: end ( ) ) }
68107
108+ /**
109+ * Gets the arguments to these calls that represent data.
110+ */
69111 DataFlow:: Node getData ( ) {
70112 this .getNumArgument ( ) = 1 and
71113 this .getArgument ( 0 ) = result
@@ -74,6 +116,10 @@ class FileWriters extends DataFlow::CallNode {
74116 this .getArgument ( 1 ) = result
75117 }
76118
119+ /**
120+ * Gets the arguments to these calls that represent a path.
121+ * Includes arguments to chained calls `to`, where that argument also represents a path.
122+ */
77123 DataFlow:: Node getPath ( ) {
78124 fileReaderWriterUtils ( ) .getAMemberCall ( "to" ) .getAnArgument ( ) = result
79125 or
@@ -82,6 +128,10 @@ class FileWriters extends DataFlow::CallNode {
82128 }
83129}
84130
131+ /**
132+ * CDS Utils:
133+ * `copy`
134+ */
85135class FileReaderWriters extends DataFlow:: CallNode {
86136 FileReaderWriters ( ) {
87137 exists ( CdsUtilsModuleAccess utils | utils .getMember ( [ "copy" ] ) .getACall ( ) = this )
@@ -96,6 +146,10 @@ class FileReaderWriters extends DataFlow::CallNode {
96146
97147 SourceNode fileReaderWriterUtils ( ) { result = fileReaderWriterUtils ( TypeTracker:: end ( ) ) }
98148
149+ /**
150+ * Gets the arguments to these calls that represent a path.
151+ * Includes arguments to chained calls `to`, where that argument also represents a path.
152+ */
99153 DataFlow:: Node getPath ( ) {
100154 fileReaderWriterUtils ( ) .getAMemberCall ( "to" ) .getArgument ( _) = result
101155 or
0 commit comments