Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ ql/javascript/ql/src/Metrics/FUseOfES6.ql
ql/javascript/ql/src/Metrics/FunCyclomaticComplexity.ql
ql/javascript/ql/src/Metrics/FunLinesOfCode.ql
ql/javascript/ql/src/NodeJS/CyclicImport.ql
ql/javascript/ql/src/NodeJS/DubiousImport.ql
ql/javascript/ql/src/NodeJS/UnresolvableImport.ql
ql/javascript/ql/src/NodeJS/UnusedDependency.ql
ql/javascript/ql/src/Performance/NonLocalForIn.ql
Expand Down
4 changes: 2 additions & 2 deletions javascript/ql/lib/semmle/javascript/Modules.qll
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ abstract class Module extends TopLevel {
/** Gets a module from which this module imports. */
Module getAnImportedModule() { result = this.getAnImport().getImportedModule() }

/** Gets a symbol exported by this module. */
string getAnExportedSymbol() { exists(this.getAnExportedValue(result)) }
/** DEPRECATED. Use `exists(getAnExportedValue(name))` instead. */
deprecated string getAnExportedSymbol() { exists(this.getAnExportedValue(result)) }

/**
* Get a value that is explicitly exported from this module with under `name`.
Expand Down
36 changes: 0 additions & 36 deletions javascript/ql/lib/semmle/javascript/NodeJS.qll
Original file line number Diff line number Diff line change
Expand Up @@ -57,19 +57,6 @@ class NodeModule extends Module {
result.getAValue() = this.getAModuleExportsValue()
}

/** Gets a symbol exported by this module. */
override string getAnExportedSymbol() {
result = super.getAnExportedSymbol()
or
result = this.getAnImplicitlyExportedSymbol()
or
// getters and the like.
exists(DataFlow::PropWrite pwn |
pwn.getBase() = this.getAModuleExportsNode() and
result = pwn.getPropertyName()
)
}

override DataFlow::Node getAnExportedValue(string name) {
// a property write whose base is `exports` or `module.exports`
exists(DataFlow::PropWrite pwn | result = pwn.getRhs() |
Expand Down Expand Up @@ -123,29 +110,6 @@ class NodeModule extends Module {
)
}

/** Gets a symbol that the module object inherits from its prototypes. */
private string getAnImplicitlyExportedSymbol() {
exists(ExternalConstructor ec | ec = this.getPrototypeOfExportedExpr() |
result = ec.getAMember().getName()
or
ec instanceof FunctionExternal and result = "prototype"
or
ec instanceof ArrayExternal and
exists(NumberLiteral nl | result = nl.getValue() and exists(result.toInt()))
)
}

/** Gets an externs declaration of the prototype object of a value exported by this module. */
private ExternalConstructor getPrototypeOfExportedExpr() {
exists(AbstractValue exported | exported = this.getAModuleExportsValue() |
result instanceof ObjectExternal
or
exported instanceof AbstractFunction and result instanceof FunctionExternal
or
exported instanceof AbstractOtherObject and result instanceof ArrayExternal
)
}

deprecated override predicate searchRoot(PathExpr path, Folder searchRoot, int priority) {
path.getEnclosingModule() = this and
exists(string pathval | pathval = path.getValue() |
Expand Down
47 changes: 0 additions & 47 deletions javascript/ql/src/NodeJS/DubiousImport.qhelp

This file was deleted.

68 changes: 0 additions & 68 deletions javascript/ql/src/NodeJS/DubiousImport.ql

This file was deleted.

8 changes: 0 additions & 8 deletions javascript/ql/test/library-tests/NodeJS/tests.expected
Original file line number Diff line number Diff line change
@@ -1,11 +1,3 @@
module_getAnExportedSymbol
| b.js:1:1:8:0 | <toplevel> | sneaky |
| d.js:1:1:7:15 | <toplevel> | baz |
| reexport/a.js:1:1:3:1 | <toplevel> | foo |
| reexport/b.js:1:1:6:1 | <toplevel> | bar |
| reexport/b.js:1:1:6:1 | <toplevel> | foo |
| sub/c.js:1:1:4:0 | <toplevel> | foo |
| sub/f.js:1:1:4:17 | <toplevel> | bar |
module_getAnImport
| a.js:1:1:14:0 | <toplevel> | a.js:1:9:1:22 | require('./b') |
| a.js:1:1:14:0 | <toplevel> | a.js:2:7:2:19 | require('fs') |
Expand Down
4 changes: 0 additions & 4 deletions javascript/ql/test/library-tests/NodeJS/tests.ql
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
import javascript

query predicate module_getAnExportedSymbol(NodeModule m, string symbol) {
symbol = m.getAnExportedSymbol()
}

query predicate module_getAnImport(NodeModule m, Import imp) { imp = m.getAnImport() }

query predicate module_getAnImportedModule(NodeModule m, Module mod) {
Expand Down