Merge pull request #20733 from asgerf/js/incremental-api-graphs

JS: Incremental API graph
This commit is contained in:
Asger F
2026-01-14 12:49:41 +01:00
committed by GitHub
32 changed files with 1334 additions and 938 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -192,6 +192,7 @@ module DOM {
* A data flow node or other program element that may refer to
* a DOM element.
*/
overlay[global]
abstract class Element extends Locatable {
ElementDefinition defn;

View File

@@ -29,6 +29,7 @@ class ES2015Module extends Module {
override string getName() { result = this.getFile().getStem() }
/** Gets an export declaration in this module. */
pragma[nomagic]
ExportDeclaration getAnExport() { result.getTopLevel() = this }
overlay[global]
@@ -38,6 +39,7 @@ class ES2015Module extends Module {
/** Holds if this module exports variable `v` under the name `name`. */
overlay[global]
pragma[nomagic]
predicate exportsAs(LexicalName v, string name) { this.getAnExport().exportsAs(v, name) }
override predicate isStrict() {
@@ -345,6 +347,7 @@ abstract class ExportDeclaration extends Stmt, @export_declaration {
/** Holds if this export declaration exports variable `v` under the name `name`. */
overlay[global]
pragma[nomagic]
final predicate exportsAs(LexicalName v, string name) {
this.exportsDirectlyAs(v, name)
or
@@ -821,18 +824,31 @@ class SelectiveReExportDeclaration extends ReExportDeclaration, ExportNamedDecla
result = ExportNamedDeclaration.super.getImportedPath()
}
overlay[global]
pragma[nomagic]
private predicate reExportsFrom(ES2015Module mod, string originalName, string reExportedName) {
exists(ExportSpecifier spec |
spec = this.getASpecifier() and
reExportedName = spec.getExportedName() and
originalName = spec.getLocalName() and
mod = this.getReExportedES2015Module()
)
}
overlay[global]
override predicate reExportsAs(LexicalName v, string name) {
exists(ExportSpecifier spec | spec = this.getASpecifier() and name = spec.getExportedName() |
this.getReExportedES2015Module().exportsAs(v, spec.getLocalName())
exists(ES2015Module mod, string originalName |
this.reExportsFrom(mod, originalName, name) and
mod.exportsAs(v, originalName)
) and
not (this.isTypeOnly() and v instanceof Variable)
}
overlay[global]
override DataFlow::Node getReExportedSourceNode(string name) {
exists(ExportSpecifier spec | spec = this.getASpecifier() and name = spec.getExportedName() |
result = this.getReExportedES2015Module().getAnExport().getSourceNode(spec.getLocalName())
exists(ES2015Module mod, string originalName |
this.reExportsFrom(mod, originalName, name) and
result = mod.getAnExport().getSourceNode(originalName)
)
}
}

View File

@@ -198,6 +198,7 @@ module ClientRequest {
private string urlPropertyName() { result = "url" or result = "uri" }
/** An API entry-point for the global variable `axios`. */
overlay[local?]
private class AxiosGlobalEntryPoint extends API::EntryPoint {
AxiosGlobalEntryPoint() { this = "axiosGlobal" }

View File

@@ -6,6 +6,7 @@ private import semmle.javascript.security.dataflow.DomBasedXssCustomizations
/** Provides classes and predicates modeling aspects of the `d3` library. */
module D3 {
/** The global variable `d3` as an entry point for API graphs. */
overlay[local?]
private class D3GlobalEntry extends API::EntryPoint {
D3GlobalEntry() { this = "D3GlobalEntry" }

View File

@@ -41,6 +41,7 @@ module Electron {
BrowserView() { this = DataFlow::moduleMember("electron", "BrowserView").getAnInstantiation() }
}
overlay[local?]
private class ElectronEntryPoint extends API::EntryPoint {
ElectronEntryPoint() { this = "Electron.Browser" }

View File

@@ -94,6 +94,7 @@ module EventRegistration {
/**
* A registration of an event handler on an EventEmitter.
*/
overlay[global]
abstract class Range extends DataFlow::Node {
EventEmitter::Range emitter;
@@ -148,6 +149,7 @@ module EventDispatch {
/**
* A dispatch of an event on an EventEmitter.
*/
overlay[global]
abstract class Range extends DataFlow::Node {
EventEmitter::Range emitter;

View File

@@ -5,6 +5,7 @@ import javascript
/** Provides classes modeling the [`history`](https://npmjs.org/package/history) library. */
module History {
/** The global variable `HistoryLibrary` as an entry point for API graphs. */
overlay[local?]
private class HistoryGlobalEntry extends API::EntryPoint {
HistoryGlobalEntry() { this = "HistoryLibrary" }

View File

@@ -13,6 +13,7 @@ private module Immutable {
/**
* An API entrypoint for the global `Immutable` variable.
*/
overlay[local?]
private class ImmutableGlobalEntry extends API::EntryPoint {
ImmutableGlobalEntry() { this = "ImmutableGlobalEntry" }

View File

@@ -32,6 +32,7 @@ private module Console {
/**
* An API entrypoint for the global `console` variable.
*/
overlay[local?]
private class ConsoleGlobalEntry extends API::EntryPoint {
ConsoleGlobalEntry() { this = "ConsoleGlobalEntry" }

View File

@@ -140,6 +140,7 @@ module NestJS {
}
/** API node entry point for custom implementations of `ValidationPipe` (a common pattern). */
overlay[local?]
private class ValidationNodeEntry extends API::EntryPoint {
ValidationNodeEntry() { this = "ValidationNodeEntry" }

View File

@@ -260,6 +260,7 @@ module NodeJSLib {
DataFlow::Node getRouteHandlerNode() { result = handler }
}
overlay[global]
abstract private class HeaderDefinition extends Http::Servers::StandardHeaderDefinition {
ResponseNode r;

View File

@@ -1099,6 +1099,7 @@ module Redux {
* Used to catch cases where the `connect` function was not recognized by API graphs (usually because of it being
* wrapped in another function, which API graphs won't look through).
*/
overlay[local?]
private class HeuristicConnectEntryPoint extends API::EntryPoint {
HeuristicConnectEntryPoint() { this = "react-redux-connect" }

View File

@@ -16,6 +16,7 @@ module SQL {
* An dataflow node that sanitizes a string to make it safe to embed into
* a SQL command.
*/
overlay[global]
abstract class SqlSanitizer extends DataFlow::Node {
DataFlow::Node input;
DataFlow::Node output;

View File

@@ -33,7 +33,7 @@ module Templating {
*/
bindingset[prefix]
string getDelimiterMatchingRegexpWithPrefix(string prefix) {
result = "(?s)" + prefix + "(" + concat("\\Q" + getADelimiter() + "\\E", "|") + ").*"
result = "(?s)" + prefix + "(" + strictconcat("\\Q" + getADelimiter() + "\\E", "|") + ").*"
}
/** A placeholder tag for a templating engine. */
@@ -703,7 +703,7 @@ module Templating {
*
* These API nodes are used in the `getTemplateInput` predicate.
*/
overlay[global]
overlay[local?]
private class IncludeFunctionAsEntryPoint extends API::EntryPoint {
IncludeFunctionAsEntryPoint() { this = "IncludeFunctionAsEntryPoint" }

View File

@@ -11,6 +11,7 @@ private import semmle.javascript.security.dataflow.CodeInjectionCustomizations
* Module for working with uses of the [Trusted Types API](https://developer.mozilla.org/en-US/docs/Web/API/Trusted_Types_API).
*/
module TrustedTypes {
overlay[local?]
private class TrustedTypesEntry extends API::EntryPoint {
TrustedTypesEntry() { this = "TrustedTypesEntry" }

View File

@@ -7,6 +7,7 @@ import semmle.javascript.ViewComponentInput
module Vue {
/** The global variable `Vue`, as an API graph entry point. */
overlay[local?]
private class GlobalVueEntryPoint extends API::EntryPoint {
GlobalVueEntryPoint() { this = "VueEntryPoint" }
@@ -18,6 +19,7 @@ module Vue {
*
* This `EntryPoint` is used by `SingleFileComponent::getOwnOptions()`.
*/
overlay[local?]
private class VueExportEntryPoint extends API::EntryPoint {
VueExportEntryPoint() { this = "VueExportEntryPoint" }
@@ -437,6 +439,7 @@ module Vue {
*
* This entry point is used in `SingleFileComponent::getComponentRef()`.
*/
overlay[local?]
private class VueFileImportEntryPoint extends API::EntryPoint {
VueFileImportEntryPoint() { this = "VueFileImportEntryPoint" }

View File

@@ -5,6 +5,7 @@
private import javascript
/** Treats `Response` as an entry point for API graphs. */
overlay[local?]
private class ResponseEntryPoint extends API::EntryPoint {
ResponseEntryPoint() { this = "global.Response" }
@@ -12,6 +13,7 @@ private class ResponseEntryPoint extends API::EntryPoint {
}
/** Treats `Headers` as an entry point for API graphs. */
overlay[local?]
private class HeadersEntryPoint extends API::EntryPoint {
HeadersEntryPoint() { this = "global.Headers" }

View File

@@ -48,6 +48,7 @@ private predicate areLibrariesCompatible(
}
/** Treats `WebSocket` as an entry point for API graphs. */
overlay[local?]
private class WebSocketEntryPoint extends API::EntryPoint {
WebSocketEntryPoint() { this = "global.WebSocket" }
@@ -55,6 +56,7 @@ private class WebSocketEntryPoint extends API::EntryPoint {
}
/** Treats `SockJS` as an entry point for API graphs. */
overlay[local?]
private class SockJSEntryPoint extends API::EntryPoint {
SockJSEntryPoint() { this = "global.SockJS" }

View File

@@ -9,6 +9,7 @@ private import javascript
*/
module Webix {
/** The global variable `webix` as an entry point for API graphs. */
overlay[local?]
private class WebixGlobalEntry extends API::EntryPoint {
WebixGlobalEntry() { this = "WebixGlobalEntry" }

View File

@@ -492,6 +492,7 @@ private predicate invocationMatchesCallSiteFilter(
Specific::invocationMatchesExtraCallSiteFilter(invoke, token)
}
overlay[local?]
private class TypeModelUseEntry extends API::EntryPoint {
private string type;
@@ -505,6 +506,7 @@ private class TypeModelUseEntry extends API::EntryPoint {
API::Node getNodeForType(string type_) { type = type_ and result = this.getANode() }
}
overlay[local?]
private class TypeModelDefEntry extends API::EntryPoint {
private string type;

View File

@@ -93,6 +93,7 @@ private predicate parseRelevantTypeString(string rawType, string package, string
}
/** Holds if `global` is a global variable referenced via a the `global` package in a CSV row. */
overlay[local]
private predicate isRelevantGlobal(string global) {
exists(AccessPath path, AccessPathToken token |
isRelevantFullPath("global", path) and
@@ -103,6 +104,7 @@ private predicate isRelevantGlobal(string global) {
}
/** An API graph entry point for global variables mentioned in a model. */
overlay[local?]
private class GlobalApiEntryPoint extends API::EntryPoint {
string global;

View File

@@ -114,6 +114,7 @@ class ClientSideRemoteFlowKind extends string {
* `name` and `address` of global variable `user` should be considered as remote flow sources with
* source type "user input".
*/
overlay[local?]
private class RemoteFlowSourceAccessPath extends JsonString {
string sourceType;
@@ -167,6 +168,7 @@ private class RemoteFlowSourceAccessPath extends JsonString {
* The global variable referenced by a `RemoteFlowSourceAccessPath`, declared as an API
* entry point.
*/
overlay[local?]
private class ExternalRemoteFlowSourceSpecEntryPoint extends API::EntryPoint {
string name;

View File

@@ -129,6 +129,7 @@ module SecondOrderCommandInjection {
/**
* A sink that invokes a command described by the `VulnerableCommand` class.
*/
overlay[global]
abstract class VulnerableCommandSink extends Sink {
VulnerableCommand cmd;

View File

@@ -194,6 +194,7 @@ module TaintedPath {
* There are currently four flow labels, representing the different combinations of
* normalization and absoluteness.
*/
overlay[global]
abstract class PosixPath extends DataFlow::FlowLabel {
Normalization normalization;
Relativeness relativeness;

View File

@@ -101,6 +101,7 @@ module UnsafeHtmlConstruction {
* A sink for `js/html-constructed-from-input` that constructs some HTML where
* that HTML is later used in `xssSink`.
*/
overlay[global]
abstract class XssSink extends Sink {
DomBasedXss::Sink xssSink;

View File

@@ -1,3 +1,4 @@
overlay[local?]
class CustomEntryPoint extends API::EntryPoint {
CustomEntryPoint() { this = "CustomEntryPoint" }

View File

@@ -1,7 +1,7 @@
testFailures
ambiguousPreferredPredecessor
| pack2/lib.js:1:1:3:1 | def moduleImport("pack2").getMember("exports").getMember("lib").getMember("LibClass").getInstance() |
| pack2/lib.js:8:22:8:34 | def moduleImport("pack2").getMember("exports").getMember("lib").getMember("LibClass").getMember("foo") |
| pack2/main.js:1:1:3:1 | def moduleImport("pack2").getMember("exports").getMember("MainClass").getInstance() |
| pack2/lib.js:1:1:3:1 | instance of class A ... ethod\\n} |
| pack2/lib.js:8:22:8:34 | def function() {} |
| pack2/main.js:1:1:3:1 | instance of class A ... ethod\\n} |
ambiguousSinkName
ambiguousFunctionName

View File

@@ -25,208 +25,208 @@ sqlString
| tst.js:166:43:166:63 | 'col DE ... S LAST' |
| tst.js:178:14:178:24 | 'count > ?' |
knexLibrary
| file://:0:0:0:0 | use moduleImport("knex").getMember("exports") |
| file://:0:0:0:0 | module import knex |
knexObject
| tst.js:3:14:3:30 | use moduleImport("knex").getMember("exports").getReturn() |
| tst.js:5:1:5:32 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:5:1:9:4 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("select").getReturn() |
| tst.js:5:1:10:52 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("select").getReturn().getMember("whereRaw").getReturn() |
| tst.js:12:1:12:48 | use moduleImport("knex").getMember("exports").getReturn().getMember("withUserParams").getReturn() |
| tst.js:12:1:12:59 | use moduleImport("knex").getMember("exports").getReturn().getMember("withUserParams").getReturn().getMember("table").getReturn() |
| tst.js:12:1:12:71 | use moduleImport("knex").getMember("exports").getReturn().getMember("withUserParams").getReturn().getMember("table").getReturn().getMember("select").getReturn() |
| tst.js:14:1:14:13 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:14:1:14:27 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:14:1:14:41 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("timeout").getReturn() |
| tst.js:15:1:15:38 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:15:1:15:52 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:17:1:17:23 | use moduleImport("knex").getMember("exports").getReturn().getMember("avg").getReturn() |
| tst.js:17:1:19:4 | use moduleImport("knex").getMember("exports").getReturn().getMember("avg").getReturn().getMember("from").getReturn() |
| tst.js:17:1:19:24 | use moduleImport("knex").getMember("exports").getReturn().getMember("avg").getReturn().getMember("from").getReturn().getMember("as").getReturn() |
| tst.js:17:30:17:29 | use moduleImport("knex").getMember("exports").getReturn().getMember("avg").getReturn().getMember("from").getParameter(0).getReceiver() |
| tst.js:18:5:18:38 | use moduleImport("knex").getMember("exports").getReturn().getMember("avg").getReturn().getMember("from").getParameter(0).getReceiver().getMember("sum").getReturn() |
| tst.js:18:5:18:49 | use moduleImport("knex").getMember("exports").getReturn().getMember("avg").getReturn().getMember("from").getParameter(0).getReceiver().getMember("sum").getReturn().getMember("from").getReturn() |
| tst.js:18:5:18:68 | use moduleImport("knex").getMember("exports").getReturn().getMember("avg").getReturn().getMember("from").getParameter(0).getReceiver().getMember("sum").getReturn().getMember("from").getReturn().getMember("groupBy").getReturn() |
| tst.js:18:5:18:77 | use moduleImport("knex").getMember("exports").getReturn().getMember("avg").getReturn().getMember("from").getParameter(0).getReceiver().getMember("sum").getReturn().getMember("from").getReturn().getMember("groupBy").getReturn().getMember("as").getReturn() |
| tst.js:21:1:21:38 | use moduleImport("knex").getMember("exports").getReturn().getMember("column").getReturn() |
| tst.js:21:1:21:47 | use moduleImport("knex").getMember("exports").getReturn().getMember("column").getReturn().getMember("select").getReturn() |
| tst.js:21:1:21:61 | use moduleImport("knex").getMember("exports").getReturn().getMember("column").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:23:1:23:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:23:1:23:30 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:25:1:25:85 | use moduleImport("knex").getMember("exports").getReturn().getMember("with").getReturn() |
| tst.js:25:1:25:97 | use moduleImport("knex").getMember("exports").getReturn().getMember("with").getReturn().getMember("select").getReturn() |
| tst.js:25:1:25:116 | use moduleImport("knex").getMember("exports").getReturn().getMember("with").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:25:25:25:84 | use moduleImport("knex").getMember("exports").getReturn().getMember("raw").getReturn() |
| tst.js:27:1:31:4 | use moduleImport("knex").getMember("exports").getReturn().getMember("withRecursive").getReturn() |
| tst.js:27:1:31:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("withRecursive").getReturn().getMember("select").getReturn() |
| tst.js:27:1:31:34 | use moduleImport("knex").getMember("exports").getReturn().getMember("withRecursive").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:33:1:33:25 | use moduleImport("knex").getMember("exports").getReturn().getMember("withSchema").getReturn() |
| tst.js:33:1:33:37 | use moduleImport("knex").getMember("exports").getReturn().getMember("withSchema").getReturn().getMember("select").getReturn() |
| tst.js:33:1:33:51 | use moduleImport("knex").getMember("exports").getReturn().getMember("withSchema").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:35:1:35:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:35:1:38:4 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn() |
| tst.js:35:1:38:17 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn().getMember("select").getReturn() |
| tst.js:40:1:40:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:40:1:40:28 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn() |
| tst.js:42:1:42:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:42:1:45:3 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn() |
| tst.js:42:1:48:4 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn().getMember("andWhere").getReturn() |
| tst.js:46:13:46:12 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn().getMember("andWhere").getParameter(0).getReceiver() |
| tst.js:47:5:47:29 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn().getMember("andWhere").getParameter(0).getReceiver().getMember("where").getReturn() |
| tst.js:50:1:50:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:50:1:52:2 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn() |
| tst.js:50:1:52:28 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn().getMember("orWhere").getReturn() |
| tst.js:50:21:50:20 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getParameter(0).getReceiver() |
| tst.js:51:3:51:21 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getParameter(0).getReceiver().getMember("where").getReturn() |
| tst.js:51:3:51:44 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getParameter(0).getReceiver().getMember("where").getReturn().getMember("orWhere").getReturn() |
| tst.js:54:1:54:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:54:1:54:56 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn() |
| tst.js:56:1:56:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:56:1:56:38 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn() |
| tst.js:58:18:58:30 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:58:18:58:55 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn() |
| tst.js:58:18:58:84 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn().getMember("andWhere").getReturn() |
| tst.js:58:18:58:108 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn().getMember("andWhere").getReturn().getMember("orWhere").getReturn() |
| tst.js:58:18:58:121 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn().getMember("andWhere").getReturn().getMember("orWhere").getReturn().getMember("select").getReturn() |
| tst.js:59:1:59:16 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:59:1:59:44 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn() |
| tst.js:61:1:61:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:61:1:61:28 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn() |
| tst.js:61:1:61:64 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn().getMember("orWhere").getReturn() |
| tst.js:63:1:63:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:63:1:66:2 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNot").getReturn() |
| tst.js:63:1:66:15 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNot").getReturn().getMember("select").getReturn() |
| tst.js:68:1:68:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:68:1:68:31 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNot").getReturn() |
| tst.js:70:1:70:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:70:1:72:2 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNot").getReturn() |
| tst.js:70:1:72:31 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNot").getReturn().getMember("orWhereNot").getReturn() |
| tst.js:70:24:70:23 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNot").getParameter(0).getReceiver() |
| tst.js:71:3:71:21 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNot").getParameter(0).getReceiver().getMember("where").getReturn() |
| tst.js:71:3:71:47 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNot").getParameter(0).getReceiver().getMember("where").getReturn().getMember("orWhereNot").getReturn() |
| tst.js:74:19:74:31 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:74:19:75:30 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNot").getReturn() |
| tst.js:74:19:76:31 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNot").getReturn().getMember("andWhere").getReturn() |
| tst.js:74:19:77:26 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNot").getReturn().getMember("andWhere").getReturn().getMember("orWhere").getReturn() |
| tst.js:74:19:78:15 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNot").getReturn().getMember("andWhere").getReturn().getMember("orWhere").getReturn().getMember("select").getReturn() |
| tst.js:80:1:80:16 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:80:1:80:49 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn() |
| tst.js:82:1:82:19 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:82:1:82:33 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:82:1:83:27 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("whereIn").getReturn() |
| tst.js:82:1:84:29 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("whereIn").getReturn().getMember("orWhereIn").getReturn() |
| tst.js:86:1:86:19 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:86:1:86:33 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:86:1:89:4 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("whereIn").getReturn() |
| tst.js:91:1:91:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:91:1:91:41 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNotIn").getReturn() |
| tst.js:93:1:93:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:93:1:93:45 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn() |
| tst.js:93:1:93:75 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("where").getReturn().getMember("orWhereNotIn").getReturn() |
| tst.js:95:1:95:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:95:1:95:37 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNull").getReturn() |
| tst.js:97:1:97:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:97:1:97:40 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNotNull").getReturn() |
| tst.js:99:1:99:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:99:1:101:2 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereExists").getReturn() |
| tst.js:99:27:99:26 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereExists").getParameter(0).getReceiver() |
| tst.js:100:3:100:18 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereExists").getParameter(0).getReceiver().getMember("select").getReturn() |
| tst.js:100:3:100:35 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereExists").getParameter(0).getReceiver().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:100:3:100:78 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereExists").getParameter(0).getReceiver().getMember("select").getReturn().getMember("from").getReturn().getMember("whereRaw").getReturn() |
| tst.js:103:1:103:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:103:1:103:103 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereExists").getReturn() |
| tst.js:103:27:103:42 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:103:27:103:59 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:103:27:103:102 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("whereRaw").getReturn() |
| tst.js:105:1:105:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:105:1:107:2 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNotExists").getReturn() |
| tst.js:105:30:105:29 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNotExists").getParameter(0).getReceiver() |
| tst.js:106:3:106:18 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNotExists").getParameter(0).getReceiver().getMember("select").getReturn() |
| tst.js:106:3:106:35 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNotExists").getParameter(0).getReceiver().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:106:3:106:78 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNotExists").getParameter(0).getReceiver().getMember("select").getReturn().getMember("from").getReturn().getMember("whereRaw").getReturn() |
| tst.js:109:1:109:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:109:1:109:45 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereBetween").getReturn() |
| tst.js:111:1:111:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:111:1:111:48 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereNotBetween").getReturn() |
| tst.js:113:1:113:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:113:1:113:37 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("whereRaw").getReturn() |
| tst.js:115:1:115:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:115:1:116:56 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("join").getReturn() |
| tst.js:115:1:117:39 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("join").getReturn().getMember("select").getReturn() |
| tst.js:119:1:119:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:119:1:120:51 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("join").getReturn() |
| tst.js:119:1:121:39 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("join").getReturn().getMember("select").getReturn() |
| tst.js:123:1:123:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:123:1:123:30 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:123:1:125:2 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("join").getReturn() |
| tst.js:127:1:127:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:127:1:127:30 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:127:1:132:2 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("join").getReturn() |
| tst.js:134:1:134:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:134:1:134:30 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:134:1:134:90 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("join").getReturn() |
| tst.js:134:66:134:89 | use moduleImport("knex").getMember("exports").getReturn().getMember("raw").getReturn() |
| tst.js:136:1:136:18 | use moduleImport("knex").getMember("exports").getReturn().getMember("from").getReturn() |
| tst.js:136:1:136:72 | use moduleImport("knex").getMember("exports").getReturn().getMember("from").getReturn().getMember("innerJoin").getReturn() |
| tst.js:138:1:138:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:138:1:138:30 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:138:1:138:83 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("leftJoin").getReturn() |
| tst.js:140:1:140:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:140:1:140:30 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:140:1:140:88 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("leftOuterJoin").getReturn() |
| tst.js:142:1:142:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:142:1:142:30 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:142:1:142:84 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("rightJoin").getReturn() |
| tst.js:144:1:144:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:144:1:144:30 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:144:1:144:89 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("rightOuterJoin").getReturn() |
| tst.js:146:1:146:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:146:1:146:30 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:146:1:146:88 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("fullOuterJoin").getReturn() |
| tst.js:148:1:148:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:148:1:148:30 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:148:1:148:52 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("crossJoin").getReturn() |
| tst.js:150:1:150:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:150:1:150:33 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:150:1:150:69 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("joinRaw").getReturn() |
| tst.js:150:1:150:84 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("joinRaw").getReturn().getMember("where").getReturn() |
| tst.js:152:1:152:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:152:1:152:30 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:152:1:154:2 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("join").getReturn() |
| tst.js:156:1:156:28 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:156:1:156:42 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:156:1:156:63 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("where").getReturn() |
| tst.js:156:1:156:79 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("where").getReturn().getMember("clear").getReturn() |
| tst.js:156:1:156:94 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("where").getReturn().getMember("clear").getReturn().getMember("clear").getReturn() |
| tst.js:158:1:158:17 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:158:1:158:53 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("distinct").getReturn() |
| tst.js:160:1:160:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:160:1:160:31 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("distinctOn").getReturn() |
| tst.js:162:1:162:44 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:162:1:162:58 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:162:1:162:89 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("groupByRaw").getReturn() |
| tst.js:162:21:162:43 | use moduleImport("knex").getMember("exports").getReturn().getMember("raw").getReturn() |
| tst.js:164:1:164:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:164:1:164:30 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("orderBy").getReturn() |
| tst.js:166:1:166:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:166:1:166:30 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:166:1:166:64 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("orderByRaw").getReturn() |
| tst.js:168:1:168:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:168:1:169:19 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("groupBy").getReturn() |
| tst.js:168:1:170:26 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("groupBy").getReturn().getMember("orderBy").getReturn() |
| tst.js:168:1:171:28 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("groupBy").getReturn().getMember("orderBy").getReturn().getMember("having").getReturn() |
| tst.js:173:1:173:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:173:1:173:30 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn() |
| tst.js:173:1:173:61 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn().getMember("from").getReturn().getMember("havingIn").getReturn() |
| tst.js:175:1:175:13 | use moduleImport("knex").getMember("exports").getReturn().getReturn() |
| tst.js:175:1:176:19 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("groupBy").getReturn() |
| tst.js:175:1:177:26 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("groupBy").getReturn().getMember("orderBy").getReturn() |
| tst.js:175:1:178:32 | use moduleImport("knex").getMember("exports").getReturn().getReturn().getMember("groupBy").getReturn().getMember("orderBy").getReturn().getMember("havingRaw").getReturn() |
| tst.js:180:1:180:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:181:1:181:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:182:1:182:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:183:1:183:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:184:1:184:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:185:1:185:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:186:1:186:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:187:1:187:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:188:1:188:16 | use moduleImport("knex").getMember("exports").getReturn().getMember("select").getReturn() |
| tst.js:3:14:3:30 | use require('knex')() |
| tst.js:5:1:5:32 | use knex({ ... ble' }) |
| tst.js:5:1:9:4 | use knex({ ... e'\\n }) |
| tst.js:5:1:10:52 | use knex({ ... mn_2']) |
| tst.js:12:1:12:48 | use knex.wi ... ble1'}) |
| tst.js:12:1:12:59 | use knex.wi ... le('t') |
| tst.js:12:1:12:71 | use knex.wi ... ct('x') |
| tst.js:14:1:14:13 | use knex.select() |
| tst.js:14:1:14:27 | use knex.se ... books') |
| tst.js:14:1:14:41 | use knex.se ... t(1000) |
| tst.js:15:1:15:38 | use knex.se ... 'year') |
| tst.js:15:1:15:52 | use knex.se ... books') |
| tst.js:17:1:17:23 | use knex.av ... lumn1') |
| tst.js:17:1:19:4 | use knex.av ... ')\\n }) |
| tst.js:17:1:19:24 | use knex.av ... alias') |
| tst.js:17:30:17:29 | use this |
| tst.js:18:5:18:38 | use this.su ... lumn1') |
| tst.js:18:5:18:49 | use this.su ... m('t1') |
| tst.js:18:5:18:68 | use this.su ... lumn1') |
| tst.js:18:5:18:77 | use this.su ... s('t1') |
| tst.js:21:1:21:38 | use knex.co ... 'year') |
| tst.js:21:1:21:47 | use knex.co ... elect() |
| tst.js:21:1:21:61 | use knex.co ... books') |
| tst.js:23:1:23:16 | use knex.select('*') |
| tst.js:23:1:23:30 | use knex.se ... users') |
| tst.js:25:1:25:85 | use knex.wi ... Test')) |
| tst.js:25:1:25:97 | use knex.wi ... ct('*') |
| tst.js:25:1:25:116 | use knex.wi ... alias') |
| tst.js:25:25:25:84 | use knex.ra ... 'Test') |
| tst.js:27:1:31:4 | use knex.wi ... })\\n }) |
| tst.js:27:1:31:16 | use knex.wi ... ct('*') |
| tst.js:27:1:31:34 | use knex.wi ... stors') |
| tst.js:33:1:33:25 | use knex.wi ... ublic') |
| tst.js:33:1:33:37 | use knex.wi ... ct('*') |
| tst.js:33:1:33:51 | use knex.wi ... users') |
| tst.js:35:1:35:13 | use knex('users') |
| tst.js:35:1:38:4 | use knex('u ... r'\\n }) |
| tst.js:35:1:38:17 | use knex('u ... t('id') |
| tst.js:40:1:40:13 | use knex('users') |
| tst.js:40:1:40:28 | use knex('u ... id', 1) |
| tst.js:42:1:42:13 | use knex('users') |
| tst.js:42:1:45:3 | use knex('u ... 9])\\n ) |
| tst.js:42:1:48:4 | use knex('u ... 0)\\n }) |
| tst.js:46:13:46:12 | use this |
| tst.js:47:5:47:29 | use this.wh ... >', 10) |
| tst.js:50:1:50:13 | use knex('users') |
| tst.js:50:1:52:2 | use knex('u ... 10)\\n}) |
| tst.js:50:1:52:28 | use knex('u ... ster'}) |
| tst.js:50:21:50:20 | use this |
| tst.js:51:3:51:21 | use this.where('id', 1) |
| tst.js:51:3:51:44 | use this.wh ... >', 10) |
| tst.js:54:1:54:13 | use knex('users') |
| tst.js:54:1:54:56 | use knex('u ... keme%') |
| tst.js:56:1:56:13 | use knex('users') |
| tst.js:56:1:56:38 | use knex('u ... ', 100) |
| tst.js:58:18:58:30 | use knex('users') |
| tst.js:58:18:58:55 | use knex('u ... ', 100) |
| tst.js:58:18:58:84 | use knex('u ... ctive') |
| tst.js:58:18:58:108 | use knex('u ... 'John') |
| tst.js:58:18:58:121 | use knex('u ... t('id') |
| tst.js:59:1:59:16 | use knex('accounts') |
| tst.js:59:1:59:44 | use knex('a ... bquery) |
| tst.js:61:1:61:13 | use knex('users') |
| tst.js:61:1:61:28 | use knex('u ... id', 1) |
| tst.js:61:1:61:64 | use knex('u ... knex'}) |
| tst.js:63:1:63:13 | use knex('users') |
| tst.js:63:1:66:2 | use knex('u ... ser'\\n}) |
| tst.js:63:1:66:15 | use knex('u ... t('id') |
| tst.js:68:1:68:13 | use knex('users') |
| tst.js:68:1:68:31 | use knex('u ... id', 1) |
| tst.js:70:1:70:13 | use knex('users') |
| tst.js:70:1:72:2 | use knex('u ... 10)\\n}) |
| tst.js:70:1:72:31 | use knex('u ... ster'}) |
| tst.js:70:24:70:23 | use this |
| tst.js:71:3:71:21 | use this.where('id', 1) |
| tst.js:71:3:71:47 | use this.wh ... >', 10) |
| tst.js:74:19:74:31 | use knex('users') |
| tst.js:74:19:75:30 | use knex('u ... ', 100) |
| tst.js:74:19:76:31 | use knex('u ... ctive') |
| tst.js:74:19:77:26 | use knex('u ... 'John') |
| tst.js:74:19:78:15 | use knex('u ... t('id') |
| tst.js:80:1:80:16 | use knex('accounts') |
| tst.js:80:1:80:49 | use knex('a ... query2) |
| tst.js:82:1:82:19 | use knex.select('name') |
| tst.js:82:1:82:33 | use knex.se ... users') |
| tst.js:82:1:83:27 | use knex.se ... 2, 3]) |
| tst.js:82:1:84:29 | use knex.se ... 5, 6]) |
| tst.js:86:1:86:19 | use knex.select('name') |
| tst.js:86:1:86:33 | use knex.se ... users') |
| tst.js:86:1:89:4 | use knex.se ... );\\n }) |
| tst.js:91:1:91:13 | use knex('users') |
| tst.js:91:1:91:41 | use knex('u ... 2, 3]) |
| tst.js:93:1:93:13 | use knex('users') |
| tst.js:93:1:93:45 | use knex('u ... Test%') |
| tst.js:93:1:93:75 | use knex('u ... 2, 3]) |
| tst.js:95:1:95:13 | use knex('users') |
| tst.js:95:1:95:37 | use knex('u ... ed_at') |
| tst.js:97:1:97:13 | use knex('users') |
| tst.js:97:1:97:40 | use knex('u ... ed_at') |
| tst.js:99:1:99:13 | use knex('users') |
| tst.js:99:1:101:2 | use knex('u ... d');\\n}) |
| tst.js:99:27:99:26 | use this |
| tst.js:100:3:100:18 | use this.select('*') |
| tst.js:100:3:100:35 | use this.se ... ounts') |
| tst.js:100:3:100:78 | use this.se ... ts.id') |
| tst.js:103:1:103:13 | use knex('users') |
| tst.js:103:1:103:103 | use knex('u ... s.id')) |
| tst.js:103:27:103:42 | use knex.select('*') |
| tst.js:103:27:103:59 | use knex.se ... ounts') |
| tst.js:103:27:103:102 | use knex.se ... ts.id') |
| tst.js:105:1:105:13 | use knex('users') |
| tst.js:105:1:107:2 | use knex('u ... d');\\n}) |
| tst.js:105:30:105:29 | use this |
| tst.js:106:3:106:18 | use this.select('*') |
| tst.js:106:3:106:35 | use this.se ... ounts') |
| tst.js:106:3:106:78 | use this.se ... ts.id') |
| tst.js:109:1:109:13 | use knex('users') |
| tst.js:109:1:109:45 | use knex('u ... , 100]) |
| tst.js:111:1:111:13 | use knex('users') |
| tst.js:111:1:111:48 | use knex('u ... , 100]) |
| tst.js:113:1:113:13 | use knex('users') |
| tst.js:113:1:113:37 | use knex('u ... ', [1]) |
| tst.js:115:1:115:13 | use knex('users') |
| tst.js:115:1:116:56 | use knex('u ... er_id') |
| tst.js:115:1:117:39 | use knex('u ... phone') |
| tst.js:119:1:119:13 | use knex('users') |
| tst.js:119:1:120:51 | use knex('u ... er_id') |
| tst.js:119:1:121:39 | use knex('u ... phone') |
| tst.js:123:1:123:16 | use knex.select('*') |
| tst.js:123:1:123:30 | use knex.se ... users') |
| tst.js:123:1:125:2 | use knex.se ... id')\\n}) |
| tst.js:127:1:127:16 | use knex.select('*') |
| tst.js:127:1:127:30 | use knex.se ... users') |
| tst.js:127:1:132:2 | use knex.se ... })\\n}) |
| tst.js:134:1:134:16 | use knex.select('*') |
| tst.js:134:1:134:30 | use knex.se ... users') |
| tst.js:134:1:134:90 | use knex.se ... min'])) |
| tst.js:134:66:134:89 | use knex.ra ... dmin']) |
| tst.js:136:1:136:18 | use knex.from('users') |
| tst.js:136:1:136:72 | use knex.fr ... er_id') |
| tst.js:138:1:138:16 | use knex.select('*') |
| tst.js:138:1:138:30 | use knex.se ... users') |
| tst.js:138:1:138:83 | use knex.se ... er_id') |
| tst.js:140:1:140:16 | use knex.select('*') |
| tst.js:140:1:140:30 | use knex.se ... users') |
| tst.js:140:1:140:88 | use knex.se ... er_id') |
| tst.js:142:1:142:16 | use knex.select('*') |
| tst.js:142:1:142:30 | use knex.se ... users') |
| tst.js:142:1:142:84 | use knex.se ... er_id') |
| tst.js:144:1:144:16 | use knex.select('*') |
| tst.js:144:1:144:30 | use knex.se ... users') |
| tst.js:144:1:144:89 | use knex.se ... er_id') |
| tst.js:146:1:146:16 | use knex.select('*') |
| tst.js:146:1:146:30 | use knex.se ... users') |
| tst.js:146:1:146:88 | use knex.se ... er_id') |
| tst.js:148:1:148:16 | use knex.select('*') |
| tst.js:148:1:148:30 | use knex.se ... users') |
| tst.js:148:1:148:52 | use knex.se ... ounts') |
| tst.js:150:1:150:16 | use knex.select('*') |
| tst.js:150:1:150:33 | use knex.se ... ounts') |
| tst.js:150:1:150:69 | use knex.se ... able1') |
| tst.js:150:1:150:84 | use knex.se ... id', 1) |
| tst.js:152:1:152:16 | use knex.select('*') |
| tst.js:152:1:152:30 | use knex.se ... users') |
| tst.js:152:1:154:2 | use knex.se ... il')\\n}) |
| tst.js:156:1:156:28 | use knex.se ... 'name') |
| tst.js:156:1:156:42 | use knex.se ... users') |
| tst.js:156:1:156:63 | use knex.se ... <', 10) |
| tst.js:156:1:156:79 | use knex.se ... elect') |
| tst.js:156:1:156:94 | use knex.se ... where') |
| tst.js:158:1:158:17 | use knex('customers') |
| tst.js:158:1:158:53 | use knex('c ... _name') |
| tst.js:160:1:160:13 | use knex('users') |
| tst.js:160:1:160:31 | use knex('u ... ('age') |
| tst.js:162:1:162:44 | use knex.se ... fit)')) |
| tst.js:162:1:162:58 | use knex.se ... sales') |
| tst.js:162:1:162:89 | use knex.se ... OLLUP') |
| tst.js:162:21:162:43 | use knex.ra ... ofit)') |
| tst.js:164:1:164:13 | use knex('users') |
| tst.js:164:1:164:30 | use knex('u ... email') |
| tst.js:166:1:166:16 | use knex.select('*') |
| tst.js:166:1:166:30 | use knex.se ... table') |
| tst.js:166:1:166:64 | use knex.se ... LAST') |
| tst.js:168:1:168:13 | use knex('users') |
| tst.js:168:1:169:19 | use knex('u ... count') |
| tst.js:168:1:170:26 | use knex('u ... 'desc') |
| tst.js:168:1:171:28 | use knex('u ... ', 100) |
| tst.js:173:1:173:16 | use knex.select('*') |
| tst.js:173:1:173:30 | use knex.se ... users') |
| tst.js:173:1:173:61 | use knex.se ... 0, 17]) |
| tst.js:175:1:175:13 | use knex('users') |
| tst.js:175:1:176:19 | use knex('u ... count') |
| tst.js:175:1:177:26 | use knex('u ... 'desc') |
| tst.js:175:1:178:32 | use knex('u ... [100]) |
| tst.js:180:1:180:16 | use knex.select('x') |
| tst.js:181:1:181:16 | use knex.select('x') |
| tst.js:182:1:182:16 | use knex.select('x') |
| tst.js:183:1:183:16 | use knex.select('x') |
| tst.js:184:1:184:16 | use knex.select('x') |
| tst.js:185:1:185:16 | use knex.select('x') |
| tst.js:186:1:186:16 | use knex.select('x') |
| tst.js:187:1:187:16 | use knex.select('x') |
| tst.js:188:1:188:16 | use knex.select('x') |

View File

@@ -126,11 +126,11 @@ getAffectedStateAccessPath
| react-redux.jsx:61:13:61:25 | manualReducer | manual |
| trivial.js:130:14:130:46 | wrapper ... state) | wrapped |
getADispatchFunctionNode
| react-redux.jsx:65:20:65:32 | use moduleImport("react-redux").getMember("exports").getMember("useDispatch").getReturn() |
| react-redux.jsx:65:20:65:32 | use useDispatch() |
getADispatchedValueNode
| react-redux.jsx:27:12:30:5 | def entryPoint("react-redux-connect").getParameter(1).getMember("manualAction").getReturn() |
| react-redux.jsx:69:18:69:39 | def moduleImport("react-redux").getMember("exports").getMember("useDispatch").getReturn().getParameter(0) |
| react-redux.jsx:70:18:70:38 | def moduleImport("react-redux").getMember("exports").getMember("useDispatch").getReturn().getParameter(0) |
| react-redux.jsx:27:12:30:5 | def {\\n ... x\\n } |
| react-redux.jsx:69:18:69:39 | def manualA ... urce()) |
| react-redux.jsx:70:18:70:38 | def asyncAc ... urce()) |
getAnUntypedActionInReducer
| exportedReducer.js:12:20:12:25 | action |
| react-redux.jsx:32:31:32:36 | action |
@@ -167,23 +167,23 @@ reducerToStateStep
| react-redux.jsx:39:42:39:55 | action.payload | react-redux.jsx:87:32:87:56 | state.m ... lValue2 |
| react-redux.jsx:44:27:46:14 | [1, 2, ... }) | react-redux.jsx:88:32:88:56 | state.m ... lValue3 |
getRootStateAccessPath
| manual | react-redux.jsx:86:31:86:42 | use entryPoint("react-redux-connect").getParameter(0).getParameter(0).getMember("manual") |
| manual | react-redux.jsx:87:32:87:43 | use entryPoint("react-redux-connect").getParameter(0).getParameter(0).getMember("manual") |
| manual | react-redux.jsx:88:32:88:43 | use entryPoint("react-redux-connect").getParameter(0).getParameter(0).getMember("manual") |
| manual.manualValue | react-redux.jsx:86:31:86:54 | use entryPoint("react-redux-connect").getParameter(0).getParameter(0).getMember("manual").getMember("manualValue") |
| manual.manualValue2 | react-redux.jsx:87:32:87:56 | use entryPoint("react-redux-connect").getParameter(0).getParameter(0).getMember("manual").getMember("manualValue2") |
| manual.manualValue3 | react-redux.jsx:88:32:88:56 | use entryPoint("react-redux-connect").getParameter(0).getParameter(0).getMember("manual").getMember("manualValue3") |
| toolkit | react-redux.jsx:84:32:84:44 | use entryPoint("react-redux-connect").getParameter(0).getParameter(0).getMember("toolkit") |
| toolkit | react-redux.jsx:85:24:85:36 | use entryPoint("react-redux-connect").getParameter(0).getParameter(0).getMember("toolkit") |
| toolkit.asyncValue | react-redux.jsx:85:24:85:47 | use entryPoint("react-redux-connect").getParameter(0).getParameter(0).getMember("toolkit").getMember("asyncValue") |
| toolkit.value | react-redux.jsx:84:32:84:50 | use entryPoint("react-redux-connect").getParameter(0).getParameter(0).getMember("toolkit").getMember("value") |
| x1 | accessPaths.js:8:16:8:52 | use moduleImport("react-redux").getMember("exports").getMember("useSelector").getForwardingFunction().getReturn() |
| x1 | accessPaths.js:8:44:8:51 | use moduleImport("react-redux").getMember("exports").getMember("useSelector").getParameter(0).getParameter(0).getMember("x1") |
| x2 | accessPaths.js:9:16:9:52 | use moduleImport("react-redux").getMember("exports").getMember("useSelector").getForwardingFunction().getReturn() |
| x2 | accessPaths.js:9:44:9:51 | use moduleImport("react-redux").getMember("exports").getMember("useSelector").getParameter(0).getParameter(0).getMember("x2") |
| x3 | accessPaths.js:10:16:10:52 | use moduleImport("react-redux").getMember("exports").getMember("useSelector").getForwardingFunction().getReturn() |
| x3 | accessPaths.js:10:44:10:51 | use moduleImport("react-redux").getMember("exports").getMember("useSelector").getParameter(0).getParameter(0).getMember("x3") |
| x4 | accessPaths.js:11:16:11:52 | use moduleImport("react-redux").getMember("exports").getMember("useSelector").getForwardingFunction().getReturn() |
| x4 | accessPaths.js:11:44:11:51 | use moduleImport("react-redux").getMember("exports").getMember("useSelector").getParameter(0).getParameter(0).getMember("x4") |
| x5 | accessPaths.js:12:16:12:52 | use moduleImport("react-redux").getMember("exports").getMember("useSelector").getForwardingFunction().getReturn() |
| x5 | accessPaths.js:12:44:12:51 | use moduleImport("react-redux").getMember("exports").getMember("useSelector").getParameter(0).getParameter(0).getMember("x5") |
| manual | react-redux.jsx:86:31:86:42 | use state.manual |
| manual | react-redux.jsx:87:32:87:43 | use state.manual |
| manual | react-redux.jsx:88:32:88:43 | use state.manual |
| manual.manualValue | react-redux.jsx:86:31:86:54 | use state.m ... alValue |
| manual.manualValue2 | react-redux.jsx:87:32:87:56 | use state.m ... lValue2 |
| manual.manualValue3 | react-redux.jsx:88:32:88:56 | use state.m ... lValue3 |
| toolkit | react-redux.jsx:84:32:84:44 | use state.toolkit |
| toolkit | react-redux.jsx:85:24:85:36 | use state.toolkit |
| toolkit.asyncValue | react-redux.jsx:85:24:85:47 | use state.t ... ncValue |
| toolkit.value | react-redux.jsx:84:32:84:50 | use state.toolkit.value |
| x1 | accessPaths.js:8:16:8:52 | use useSele ... ate.x1) |
| x1 | accessPaths.js:8:44:8:51 | use state.x1 |
| x2 | accessPaths.js:9:16:9:52 | use useSele ... ate.x2) |
| x2 | accessPaths.js:9:44:9:51 | use state.x2 |
| x3 | accessPaths.js:10:16:10:52 | use useSele ... ate.x3) |
| x3 | accessPaths.js:10:44:10:51 | use state.x3 |
| x4 | accessPaths.js:11:16:11:52 | use useSele ... ate.x4) |
| x4 | accessPaths.js:11:44:11:51 | use state.x4 |
| x5 | accessPaths.js:12:16:12:52 | use useSele ... ate.x5) |
| x5 | accessPaths.js:12:44:12:51 | use state.x5 |