@@ -22,25 +22,25 @@ class PackageJson extends JsonObject {
22
22
pragma [ nomagic]
23
23
string getDeclaredPackageName ( ) { result = this .getPropStringValue ( "name" ) }
24
24
25
+ private PackageJson getEnclosingNamedPackage ( ) {
26
+ result .getFolder ( ) = packageInternalParent * ( this .getFolder ( ) .getParentContainer ( ) ) and
27
+ not result .isPrivate ( ) and
28
+ exists ( result .getDeclaredPackageName ( ) )
29
+ }
30
+
25
31
/**
26
32
* Gets the name of this package.
27
33
* If the package is located under the package `pkg1` and its relative path is `foo/bar`, then the resulting package name will be `pkg1/foo/bar`.
28
34
*/
29
35
string getPackageName ( ) {
30
36
result = this .getDeclaredPackageName ( )
31
37
or
32
- exists (
33
- PackageJson parentPkg , Container currentDir , Container parentDir , string parentPkgName ,
34
- string pkgNameDiff
35
- |
36
- currentDir = this .getJsonFile ( ) .getParentContainer ( ) and
37
- parentDir = parentPkg .getJsonFile ( ) .getParentContainer ( ) and
38
- parentPkgName = parentPkg .getPropStringValue ( "name" ) and
39
- parentDir .getAChildContainer + ( ) = currentDir and
40
- pkgNameDiff = currentDir .getAbsolutePath ( ) .suffix ( parentDir .getAbsolutePath ( ) .length ( ) ) and
41
- not exists ( pkgNameDiff .indexOf ( "/node_modules/" ) ) and
42
- result = parentPkgName + pkgNameDiff and
43
- not parentPkg .isPrivate ( )
38
+ not exists ( this .getDeclaredPackageName ( ) ) and
39
+ exists ( PackageJson parent |
40
+ parent = this .getEnclosingNamedPackage ( ) and
41
+ result =
42
+ parent .getDeclaredPackageName ( ) +
43
+ this .getFolder ( ) .getRelativePath ( ) .suffix ( parent .getFolder ( ) .getRelativePath ( ) .length ( ) )
44
44
)
45
45
}
46
46
@@ -405,5 +405,6 @@ class NpmPackage extends @folder {
405
405
*/
406
406
private Folder packageInternalParent ( Container c ) {
407
407
result = c .getParentContainer ( ) and
408
- not c .( Folder ) .getBaseName ( ) = "node_modules"
408
+ not c .( Folder ) .getBaseName ( ) = "node_modules" and
409
+ not c = any ( PackageJson pkg ) .getFolder ( )
409
410
}
0 commit comments