JavaScript: Simplify NoSQL framework modelling.

This commit is contained in:
Max Schaefer
2020-11-23 10:27:52 +00:00
parent b3ab6efd1d
commit 7a229d9381

View File

@@ -825,31 +825,9 @@ private module Redis {
class RedisKeyArgument extends NoSQL::Query {
RedisKeyArgument() {
exists(string method, int argIndex |
QuerySignatures::argumentIsAmbiguousKey(method, argIndex)
|
this =
[promisify(redis().getMember(method)), redis().getMember(method)]
.getACall()
.getArgument(argIndex)
.asExpr()
QuerySignatures::argumentIsAmbiguousKey(method, argIndex) and
this = redis().getMember(method).getParameter(argIndex).getARhs().asExpr()
)
}
}
/**
* Gets a promisified version of `method`.
*/
private API::Node promisify(API::Node method) {
exists(API::Node promisify |
promisify = API::moduleImport(["util", "bluebird"]).getMember("promisify").getReturn() and
method
.getAnImmediateUse()
.flowsTo(promisify.getAnImmediateUse().(DataFlow::CallNode).getArgument(0))
|
result = promisify
or
result = promisify.getMember("bind").getReturn() and
result.getAnImmediateUse().(DataFlow::CallNode).getNumArgument() = 1
)
}
}