Skip to content

Commit 22f5b7a

Browse files
committed
JS: check scoped package and normal package
1 parent be9c8d2 commit 22f5b7a

File tree

1 file changed

+10
-4
lines changed
  • javascript/ql/lib/semmle/javascript

1 file changed

+10
-4
lines changed

javascript/ql/lib/semmle/javascript/NPM.qll

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,20 @@ class PackageJson extends JsonObject {
1919
string getPackageName() {
2020
result = this.getPropStringValue("name")
2121
or
22-
exists(PackageJson parentPkg, Container currentDir, Container parentDir |
22+
exists(PackageJson parentPkg, Container currentDir, Container parentDir, string parentPkgName |
2323
currentDir = this.getJsonFile().getParentContainer() and
2424
parentDir = parentPkg.getJsonFile().getParentContainer() and
25-
parentDir.getParentContainer+().getBaseName() = "node_modules" and
25+
parentPkgName = parentPkg.getPropStringValue("name") and
26+
(
27+
parentDir.getParentContainer().getBaseName() = "node_modules"
28+
or
29+
// Scoped package is located in node_modules/@scope/pkgname
30+
parentDir.getParentContainer().getParentContainer().getBaseName() = "node_modules" and
31+
exists(parentPkgName.indexOf("/"))
32+
) and
2633
parentDir.getAChildContainer+() = currentDir and
2734
result =
28-
parentPkg.getPropStringValue("name") +
29-
currentDir.getAbsolutePath().suffix(parentDir.getAbsolutePath().length())
35+
parentPkgName + currentDir.getAbsolutePath().suffix(parentDir.getAbsolutePath().length())
3036
)
3137
}
3238

0 commit comments

Comments
 (0)