Skip to content

Commit d724874

Browse files
committed
JS: Implement babel-plugin-root-import as a PathMapping
1 parent e4420f6 commit d724874

File tree

7 files changed

+23
-7
lines changed

7 files changed

+23
-7
lines changed

javascript/ql/lib/semmle/javascript/frameworks/Babel.qll

+9
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*/
44

55
import javascript
6+
private import semmle.javascript.internal.paths.PathMapping
67

78
module Babel {
89
/**
@@ -202,4 +203,12 @@ module Babel {
202203
)
203204
}
204205
}
206+
207+
private class BabelPathMapping extends PathMapping, RootImportConfig {
208+
override File getAnAffectedFile() { result = this.getConfig().getAContainerInScope() }
209+
210+
override predicate hasPrefixPathMapping(string pattern, Container newContext, string newPath) {
211+
newPath = this.getRoot(pattern) and newContext = this.getFolder()
212+
}
213+
}
205214
}
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
import f from '~/a'; // $ MISSING: importTarget=BabelRootImport/tst1/a.js
1+
import f from '~/a'; // $ importTarget=BabelRootImport/tst1/a.js
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
import f from '~/a'; // $ MISSING: importTarget=BabelRootImport/tst1/a.js
1+
import f from '~/a'; // $ importTarget=BabelRootImport/tst1/a.js
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
import g from '~/b.js'; // $ MISSING: importTarget=BabelRootImport/tst2/src/js/b.js
2-
import f from '#/a'; // $ MISSING: importTarget=BabelRootImport/tst1/a.js
1+
import g from '~/b.js'; // $ importTarget=BabelRootImport/tst2/src/js/b.js
2+
import f from '#/a'; // $ importTarget=BabelRootImport/tst1/a.js
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
import greeting from '~/b.js'; // $ MISSING: importTarget=BabelRootImport/tst3/src/b.js
1+
import greeting from '~/b.js'; // $ importTarget=BabelRootImport/tst3/src/b.js
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
import g from '~/b.js'; // $ MISSING: importTarget=BabelRootImport/tst4/src/js/b.js
2-
import f from '#/a'; // $ MISSING: importTarget=BabelRootImport/tst1/a.js
1+
import g from '~/b.js'; // $ importTarget=BabelRootImport/tst4/src/js/b.js
2+
import f from '#/a'; // $ importTarget=BabelRootImport/tst1/a.js

javascript/ql/test/library-tests/PathResolution/test.expected

+7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
| BabelRootImport/tst1/index.js:1:1:1:20 | import f from '~/a'; | BabelRootImport/tst1/a.js |
2+
| BabelRootImport/tst1/nested/tst.js:1:1:1:20 | import f from '~/a'; | BabelRootImport/tst1/a.js |
3+
| BabelRootImport/tst2/index.js:1:1:1:23 | import ... /b.js'; | BabelRootImport/tst2/src/js/b.js |
4+
| BabelRootImport/tst2/index.js:2:1:2:20 | import f from '#/a'; | BabelRootImport/tst1/a.js |
5+
| BabelRootImport/tst3/index.js:1:1:1:30 | import ... /b.js'; | BabelRootImport/tst3/src/b.js |
6+
| BabelRootImport/tst4/index.js:1:1:1:23 | import ... /b.js'; | BabelRootImport/tst4/src/js/b.js |
7+
| BabelRootImport/tst4/index.js:2:1:2:20 | import f from '#/a'; | BabelRootImport/tst1/a.js |
18
| BaseUrl/src/main.ts:2:1:2:26 | import ... /file"; | BaseUrl/base/lib/file.ts |
29
| BaseUrl/src/main.ts:3:1:3:29 | import ... le.ts"; | BaseUrl/base/lib/file.ts |
310
| BaseUrl/src/main.ts:4:1:4:29 | import ... le.js"; | BaseUrl/base/lib/file.ts |

0 commit comments

Comments
 (0)