Merge pull request #2757 from max-schaefer/js/resolveMainModule-extensions

Approved by asgerf
This commit is contained in:
semmle-qlci
2020-02-04 13:07:08 +00:00
committed by GitHub
6 changed files with 17 additions and 3 deletions

View File

@@ -84,10 +84,16 @@ File tryExtensions(Folder dir, string basename, int priority) {
File resolveMainModule(PackageJSON pkg, int priority) {
if exists(MainModulePath::of(pkg))
then
exists(Container c | c = MainModulePath::of(pkg).resolve() |
result = c and priority = 0
exists(PathExpr main | main = MainModulePath::of(pkg) |
result = main.resolve() and priority = 0
or
result = tryExtensions(c, "index", priority)
result = tryExtensions(main.resolve(), "index", priority)
or
not exists(main.resolve()) and
not exists(main.getExtension()) and
exists(int n | n = main.getNumComponent() |
result = tryExtensions(main.resolveUpTo(n-1), main.getComponent(n-1), priority)
)
)
else result = tryExtensions(pkg.getFile().getParentContainer(), "index", priority)
}

View File

@@ -1,6 +1,7 @@
| b | src/node_modules/b/lib/index.js:1:1:2:0 | <toplevel> |
| b | src/node_modules/b/lib/index.ts:1:1:2:0 | <toplevel> |
| c | src/node_modules/c/src/index.js:1:1:2:0 | <toplevel> |
| d | src/node_modules/d/main.js:1:1:2:0 | <toplevel> |
| test-package | src/index.js:1:1:4:0 | <toplevel> |
| test-package | src/lib/tst2.js:1:1:1:14 | <toplevel> |
| test-package | src/lib/tst.js:1:1:4:0 | <toplevel> |

View File

@@ -1,4 +1,5 @@
| b | src/node_modules/b/lib/index.ts:1:1:2:0 | <toplevel> |
| c | src/node_modules/c/src/index.js:1:1:2:0 | <toplevel> |
| d | src/node_modules/d/main.js:1:1:2:0 | <toplevel> |
| test-package | src/index.js:1:1:4:0 | <toplevel> |
| third-party-module | src/node_modules/third-party-module/fancy.js:1:1:4:0 | <toplevel> |

View File

@@ -1,4 +1,5 @@
| src/node_modules/b/package.json:1:1:4:1 | {\\n "na ... "lib"\\n} |
| src/node_modules/c/package.json:1:1:4:1 | {\\n "na ... src/"\\n} |
| src/node_modules/d/package.json:1:1:4:1 | {\\n "na ... main"\\n} |
| src/node_modules/third-party-module/package.json:1:1:5:1 | {\\n "na ... y.js"\\n} |
| src/package.json:1:1:18:1 | {\\n "na ... "\\n }\\n} |

View File

@@ -0,0 +1 @@
export default "d";

View File

@@ -0,0 +1,4 @@
{
"name": "d",
"main": "main"
}