Skip to content

Commit cd6a60d

Browse files
committed
JS: Treat default-export from .vue file as entry point
1 parent b223049 commit cd6a60d

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,17 @@ module Vue {
1414
override DataFlow::Node getARhs() { none() }
1515
}
1616

17+
/** A value exported from a `.vue` file. */
18+
private class VueExportEntryPoint extends API::EntryPoint {
19+
VueExportEntryPoint() { this = "VueExportEntryPoint" }
20+
21+
override DataFlow::SourceNode getAUse() { none() }
22+
23+
override DataFlow::Node getARhs() {
24+
result = any(SingleFileComponent c).getModule().getAnExportedValue("default")
25+
}
26+
}
27+
1728
/**
1829
* Gets a reference to the `Vue` object.
1930
*/
@@ -521,7 +532,8 @@ module Vue {
521532
endcolumn = 0
522533
}
523534

524-
private Module getModule() {
535+
/** Gets the module defined by the `script` tag in this .vue file, if any. */
536+
Module getModule() {
525537
exists(HTML::ScriptElement elem |
526538
xmlElements(elem, _, _, _, file) and // Avoid materializing all of Locatable.getFile()
527539
result.getTopLevel() = elem.getScript()

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

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,6 @@ private import semmle.javascript.dataflow.internal.FlowSteps as FlowSteps
77

88
/** A minimal adapter for the `vue` model based on API nodes. */
99
private module VueAPI {
10-
/** A value exported from a `.vue` file. */
11-
private class VueExportEntryPoint extends API::EntryPoint {
12-
VueExportEntryPoint() { this = "VueExportEntryPoint" }
13-
14-
override DataFlow::SourceNode getAUse() { none() }
15-
16-
override DataFlow::Node getARhs() {
17-
exists(Module mod |
18-
mod.getFile() instanceof Vue::VueFile and
19-
result = mod.getAnExportedValue("default")
20-
)
21-
}
22-
}
2310

2411
/**
2512
* An API node representing the object passed to the Vue constructor `new Vue({...})`

0 commit comments

Comments
 (0)