diff --git a/javascript/ql/lib/ext/anthropic.model.json b/javascript/ql/lib/ext/anthropic.model.json new file mode 100644 index 000000000000..565cb230d515 --- /dev/null +++ b/javascript/ql/lib/ext/anthropic.model.json @@ -0,0 +1,28 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["anthropic.Client", "@anthropic-ai/sdk", "Instance"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["anthropic.Client", "Member[messages].Member[create].Argument[0].Member[system]", "system-prompt-injection"], + ["anthropic.Client", "Member[completions].Member[create].Argument[0].Member[prompt]", "user-prompt-injection"], + ["anthropic.Client", "Member[messages].Member[create].Argument[0].Member[system].ArrayElement.Member[text]", "system-prompt-injection"], + ["anthropic.Client", "Member[beta].Member[messages].Member[create].Argument[0].Member[system]", "system-prompt-injection"], + ["anthropic.Client", "Member[beta].Member[messages].Member[create].Argument[0].Member[system].ArrayElement.Member[text]", "system-prompt-injection"], + ["anthropic.Client", "Member[beta].Member[agents].Member[create].Argument[0].Member[system]", "system-prompt-injection"], + ["anthropic.Client", "Member[beta].Member[agents].Member[update].Argument[1].Member[system]", "system-prompt-injection"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/anthropic.model.yml b/javascript/ql/lib/ext/anthropic.model.yml deleted file mode 100644 index 80e829256971..000000000000 --- a/javascript/ql/lib/ext/anthropic.model.yml +++ /dev/null @@ -1,18 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["anthropic.Client", "@anthropic-ai/sdk", "Instance"] - - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["anthropic.Client", "Member[messages].Member[create].Argument[0].Member[system]", "system-prompt-injection"] - - ["anthropic.Client", "Member[completions].Member[create].Argument[0].Member[prompt]", "user-prompt-injection"] - - ["anthropic.Client", "Member[messages].Member[create].Argument[0].Member[system].ArrayElement.Member[text]", "system-prompt-injection"] - - ["anthropic.Client", "Member[beta].Member[messages].Member[create].Argument[0].Member[system]", "system-prompt-injection"] - - ["anthropic.Client", "Member[beta].Member[messages].Member[create].Argument[0].Member[system].ArrayElement.Member[text]", "system-prompt-injection"] - - ["anthropic.Client", "Member[beta].Member[agents].Member[create].Argument[0].Member[system]", "system-prompt-injection"] - - ["anthropic.Client", "Member[beta].Member[agents].Member[update].Argument[1].Member[system]", "system-prompt-injection"] diff --git a/javascript/ql/lib/ext/apollo-server.model.json b/javascript/ql/lib/ext/apollo-server.model.json new file mode 100644 index 000000000000..927b48a109ac --- /dev/null +++ b/javascript/ql/lib/ext/apollo-server.model.json @@ -0,0 +1,41 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["@apollo/server", "Member[ApolloServer,ApolloServerBase].Argument[0].AnyMember.AnyMember.AnyMember.Parameter[1]", "remote"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["@apollo/server", "Member[gql].Argument[0]", "sql-injection"], + ["@apollo/server", "Member[ApolloServer,ApolloServerBase].Argument[0].Member[cors].Member[origin]", "cors-origin"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["@apollo/server", "@apollo/server/standalone", ""], + ["@apollo/server", "apollo-server-express", ""], + ["@apollo/server", "apollo-server-core", ""], + ["@apollo/server", "apollo-server", ""], + ["@apollo/server", "@apollo/apollo-server-express", ""], + ["@apollo/server", "apollo-server-express", ""], + ["@apollo/server", "@apollo/server", ""], + ["@apollo/server", "@apollo/apollo-server-core", ""], + ["ApolloServer", "@apollo/server", "Member[ApolloServer]"], + ["GraphQLApollo", "@apollo/server", "Member[gql]"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/apollo-server.model.yml b/javascript/ql/lib/ext/apollo-server.model.yml deleted file mode 100644 index aa9755265b27..000000000000 --- a/javascript/ql/lib/ext/apollo-server.model.yml +++ /dev/null @@ -1,28 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - ["@apollo/server", "Member[ApolloServer,ApolloServerBase].Argument[0].AnyMember.AnyMember.AnyMember.Parameter[1]", "remote"] - - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["@apollo/server", "Member[gql].Argument[0]", "sql-injection"] - - ["@apollo/server", "Member[ApolloServer,ApolloServerBase].Argument[0].Member[cors].Member[origin]", "cors-origin"] - - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["@apollo/server", "@apollo/server/standalone", ""] - - ["@apollo/server", "apollo-server-express", ""] - - ["@apollo/server", "apollo-server-core", ""] - - ["@apollo/server", "apollo-server", ""] - - ["@apollo/server", "@apollo/apollo-server-express", ""] - - ["@apollo/server", "apollo-server-express", ""] - - ["@apollo/server", "@apollo/server", ""] - - ["@apollo/server", "@apollo/apollo-server-core", ""] - - ["ApolloServer", "@apollo/server", "Member[ApolloServer]"] - - ["GraphQLApollo", "@apollo/server", "Member[gql]"] diff --git a/javascript/ql/lib/ext/aws-sdk.model.json b/javascript/ql/lib/ext/aws-sdk.model.json new file mode 100644 index 000000000000..eddc1d5a31f9 --- /dev/null +++ b/javascript/ql/lib/ext/aws-sdk.model.json @@ -0,0 +1,71 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["aws-sdk.Athena", "aws-sdk", "Member[Athena]"], + ["aws-sdk.S3", "aws-sdk", "Member[S3]"], + ["aws-sdk.RDSDataService", "aws-sdk", "Member[RDSDataService]"], + ["aws-sdk.DynamoDB", "aws-sdk", "Member[DynamoDB]"], + ["@aws-sdk/client.Client", "@aws-sdk/client-athena", "Member[AthenaClient]"], + ["@aws-sdk/client.Client", "@aws-sdk/client-s3", "Member[S3Client]"], + ["@aws-sdk/client.Client", "@aws-sdk/client-dynamodb", "Member[DynamoDBClient,DynamoDB]"], + ["@aws-sdk/client.Client", "@aws-sdk/client-rds-data", "Member[RDSDataClient]"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["aws-sdk", "AnyMember.Argument[0].Member[secretAccessKey,accessKeyId]", "credentials-key"], + ["aws-sdk", "AnyMember.Member[secretAccessKey,accessKeyId]", "credentials-key"], + ["aws-sdk", "Member[Credentials].Argument[0,1]", "credentials-key"], + ["@aws-sdk/client.Client", "ReturnValue.Member[send].Argument[0]", "sql-injection"], + ["aws-sdk.Athena", "ReturnValue.Member[startQueryExecution,createNamedQuery,updateNamedQuery].Argument[0].Member[QueryString]", "sql-injection"], + ["aws-sdk.S3", "ReturnValue.Member[selectObjectContent].Argument[0].Member[Expression]", "sql-injection"], + ["aws-sdk.RDSDataService", "ReturnValue.Member[executeStatement,batchExecuteStatement].Argument[0].Member[sql]", "sql-injection"], + ["aws-sdk.RDSDataService", "ReturnValue.Member[batchExecuteStatement].Argument[0].Member[parameterSets].ArrayElement.Member[sql]", "sql-injection"], + ["aws-sdk.DynamoDB", "ReturnValue.Member[executeStatement].Argument[0].Member[Statement]", "sql-injection"], + ["aws-sdk.DynamoDB", "ReturnValue.Member[batchExecuteStatement].Argument[0].Member[Statements].ArrayElement.Member[Statement]", "sql-injection"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["@aws-sdk/client-athena", "Member[StartQueryExecutionCommand,CreateNamedQueryCommand,UpdateNamedQueryCommand]", "Argument[0].Member[QueryString]", "ReturnValue", "taint"], + ["@aws-sdk/client-athena", "Member[CreatePreparedStatementCommand]", "Argument[0].Member[QueryStatement]", "ReturnValue", "taint"], + ["@aws-sdk/client-s3", "Member[SelectObjectContentCommand]", "Argument[0].Member[Expression]", "ReturnValue", "taint"], + ["@aws-sdk/client-rds-data", "Member[ExecuteStatementCommand,BatchExecuteStatementCommand]", "Argument[0].Member[sql]", "ReturnValue", "taint"], + ["@aws-sdk/client-rds-data", "Member[BatchExecuteStatementCommand]", "Argument[0].Member[parameterSets].ArrayElement.Member[sql]", "ReturnValue", "taint"], + ["@aws-sdk/client-rds-data", "Member[ExecuteSqlCommand]", "Argument[0].Member[sqlStatements]", "ReturnValue", "taint"], + ["@aws-sdk/client-dynamodb", "Member[ExecuteStatementCommand]", "Argument[0].Member[Statement]", "ReturnValue", "taint"], + ["@aws-sdk/client-dynamodb", "Member[BatchExecuteStatementCommand]", "Argument[0].Member[Statements].ArrayElement.Member[Statement]", "ReturnValue", "taint"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["@aws-sdk/client.Client", "ReturnValue.Member[send].ReturnValue.Awaited", "database-access-result"], + ["aws-sdk.Athena", "ReturnValue.Member[getQueryResults].ReturnValue.Member[promise].ReturnValue.Awaited", "database-access-result"], + ["aws-sdk.Athena", "ReturnValue.Member[getQueryResults].Argument[1].Parameter[1]", "database-access-result"], + ["aws-sdk.S3", "ReturnValue.Member[getObject].ReturnValue.Member[promise].ReturnValue.Awaited", "database-access-result"], + ["aws-sdk.S3", "ReturnValue.Member[getObject].Argument[1].Parameter[1]", "database-access-result"], + ["aws-sdk.RDSDataService", "ReturnValue.Member[executeStatement,batchExecuteStatement].ReturnValue.Member[promise].ReturnValue.Awaited", "database-access-result"], + ["aws-sdk.RDSDataService", "ReturnValue.Member[executeStatement,batchExecuteStatement].Argument[1].Parameter[1]", "database-access-result"], + ["aws-sdk.DynamoDB", "ReturnValue.Member[executeStatement,batchExecuteStatement,query,scan,getItem,batchGetItem].ReturnValue.Member[promise].ReturnValue.Awaited", "database-access-result"], + ["aws-sdk.DynamoDB", "ReturnValue.Member[executeStatement,batchExecuteStatement,query,scan,getItem,batchGetItem].Argument[1].Parameter[1]", "database-access-result"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/aws-sdk.model.yml b/javascript/ql/lib/ext/aws-sdk.model.yml deleted file mode 100644 index 40fa4b8b703a..000000000000 --- a/javascript/ql/lib/ext/aws-sdk.model.yml +++ /dev/null @@ -1,52 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["aws-sdk.Athena", "aws-sdk", "Member[Athena]"] - - ["aws-sdk.S3", "aws-sdk", "Member[S3]"] - - ["aws-sdk.RDSDataService", "aws-sdk", "Member[RDSDataService]"] - - ["aws-sdk.DynamoDB", "aws-sdk", "Member[DynamoDB]"] - - ["@aws-sdk/client.Client", "@aws-sdk/client-athena", "Member[AthenaClient]"] - - ["@aws-sdk/client.Client", "@aws-sdk/client-s3", "Member[S3Client]"] - - ["@aws-sdk/client.Client", "@aws-sdk/client-dynamodb", "Member[DynamoDBClient,DynamoDB]"] - - ["@aws-sdk/client.Client", "@aws-sdk/client-rds-data", "Member[RDSDataClient]"] - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["aws-sdk", "AnyMember.Argument[0].Member[secretAccessKey,accessKeyId]", "credentials-key"] - - ["aws-sdk", "AnyMember.Member[secretAccessKey,accessKeyId]", "credentials-key"] - - ["aws-sdk", "Member[Credentials].Argument[0,1]", "credentials-key"] - - ["@aws-sdk/client.Client", "ReturnValue.Member[send].Argument[0]", "sql-injection"] - - ["aws-sdk.Athena", "ReturnValue.Member[startQueryExecution,createNamedQuery,updateNamedQuery].Argument[0].Member[QueryString]", "sql-injection"] - - ["aws-sdk.S3", "ReturnValue.Member[selectObjectContent].Argument[0].Member[Expression]", "sql-injection"] - - ["aws-sdk.RDSDataService", "ReturnValue.Member[executeStatement,batchExecuteStatement].Argument[0].Member[sql]", "sql-injection"] - - ["aws-sdk.RDSDataService", "ReturnValue.Member[batchExecuteStatement].Argument[0].Member[parameterSets].ArrayElement.Member[sql]", "sql-injection"] - - ["aws-sdk.DynamoDB", "ReturnValue.Member[executeStatement].Argument[0].Member[Statement]", "sql-injection"] - - ["aws-sdk.DynamoDB", "ReturnValue.Member[batchExecuteStatement].Argument[0].Member[Statements].ArrayElement.Member[Statement]", "sql-injection"] - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - ["@aws-sdk/client-athena", "Member[StartQueryExecutionCommand,CreateNamedQueryCommand,UpdateNamedQueryCommand]", "Argument[0].Member[QueryString]", "ReturnValue", "taint"] - - ["@aws-sdk/client-athena", "Member[CreatePreparedStatementCommand]", "Argument[0].Member[QueryStatement]", "ReturnValue", "taint"] - - ["@aws-sdk/client-s3", "Member[SelectObjectContentCommand]", "Argument[0].Member[Expression]", "ReturnValue", "taint"] - - ["@aws-sdk/client-rds-data", "Member[ExecuteStatementCommand,BatchExecuteStatementCommand]", "Argument[0].Member[sql]", "ReturnValue", "taint"] - - ["@aws-sdk/client-rds-data", "Member[BatchExecuteStatementCommand]", "Argument[0].Member[parameterSets].ArrayElement.Member[sql]", "ReturnValue", "taint"] - - ["@aws-sdk/client-rds-data", "Member[ExecuteSqlCommand]", "Argument[0].Member[sqlStatements]", "ReturnValue", "taint"] - - ["@aws-sdk/client-dynamodb", "Member[ExecuteStatementCommand]", "Argument[0].Member[Statement]", "ReturnValue", "taint"] - - ["@aws-sdk/client-dynamodb", "Member[BatchExecuteStatementCommand]", "Argument[0].Member[Statements].ArrayElement.Member[Statement]", "ReturnValue", "taint"] - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - ["@aws-sdk/client.Client", "ReturnValue.Member[send].ReturnValue.Awaited", "database-access-result"] - - ["aws-sdk.Athena", "ReturnValue.Member[getQueryResults].ReturnValue.Member[promise].ReturnValue.Awaited", "database-access-result"] - - ["aws-sdk.Athena", "ReturnValue.Member[getQueryResults].Argument[1].Parameter[1]", "database-access-result"] - - ["aws-sdk.S3", "ReturnValue.Member[getObject].ReturnValue.Member[promise].ReturnValue.Awaited", "database-access-result"] - - ["aws-sdk.S3", "ReturnValue.Member[getObject].Argument[1].Parameter[1]", "database-access-result"] - - ["aws-sdk.RDSDataService", "ReturnValue.Member[executeStatement,batchExecuteStatement].ReturnValue.Member[promise].ReturnValue.Awaited", "database-access-result"] - - ["aws-sdk.RDSDataService", "ReturnValue.Member[executeStatement,batchExecuteStatement].Argument[1].Parameter[1]", "database-access-result"] - - ["aws-sdk.DynamoDB", "ReturnValue.Member[executeStatement,batchExecuteStatement,query,scan,getItem,batchGetItem].ReturnValue.Member[promise].ReturnValue.Awaited", "database-access-result"] - - ["aws-sdk.DynamoDB", "ReturnValue.Member[executeStatement,batchExecuteStatement,query,scan,getItem,batchGetItem].Argument[1].Parameter[1]", "database-access-result"] diff --git a/javascript/ql/lib/ext/axios.model.json b/javascript/ql/lib/ext/axios.model.json new file mode 100644 index 000000000000..94e0bd719775 --- /dev/null +++ b/javascript/ql/lib/ext/axios.model.json @@ -0,0 +1,22 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["axios", "Member[interceptors].Member[request].Member[use].Argument[0].Parameter[0].Member[url]", "request-forgery"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["axios", "Member[interceptors].Member[response].Member[use].Argument[0].Parameter[0]", "response"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/axios.model.yml b/javascript/ql/lib/ext/axios.model.yml deleted file mode 100644 index 69740c31e299..000000000000 --- a/javascript/ql/lib/ext/axios.model.yml +++ /dev/null @@ -1,12 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["axios", "Member[interceptors].Member[request].Member[use].Argument[0].Parameter[0].Member[url]", "request-forgery"] - - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - ["axios", "Member[interceptors].Member[response].Member[use].Argument[0].Parameter[0]", "response"] diff --git a/javascript/ql/lib/ext/call-me-maybe.model.json b/javascript/ql/lib/ext/call-me-maybe.model.json new file mode 100644 index 000000000000..4c892e7384ad --- /dev/null +++ b/javascript/ql/lib/ext/call-me-maybe.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["call-me-maybe", "", "Argument[1]", "ReturnValue", "value"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/call-me-maybe.model.yml b/javascript/ql/lib/ext/call-me-maybe.model.yml deleted file mode 100644 index ceda3e8b0922..000000000000 --- a/javascript/ql/lib/ext/call-me-maybe.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - ["call-me-maybe", "", "Argument[1]", "ReturnValue", "value"] diff --git a/javascript/ql/lib/ext/cors.model.json b/javascript/ql/lib/ext/cors.model.json new file mode 100644 index 000000000000..f6a2f4623476 --- /dev/null +++ b/javascript/ql/lib/ext/cors.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["cors", "Argument[0].Member[origin]", "cors-origin"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/cors.model.yml b/javascript/ql/lib/ext/cors.model.yml deleted file mode 100644 index 31125d454b9b..000000000000 --- a/javascript/ql/lib/ext/cors.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["cors", "Argument[0].Member[origin]", "cors-origin"] diff --git a/javascript/ql/lib/ext/default-threat-models-fixup.model.json b/javascript/ql/lib/ext/default-threat-models-fixup.model.json new file mode 100644 index 000000000000..5a15fb203014 --- /dev/null +++ b/javascript/ql/lib/ext/default-threat-models-fixup.model.json @@ -0,0 +1,15 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/threat-models", + "extensible": "threatModelConfiguration" + }, + "data": [ + // Since responses are enabled by default in the shared threat-models configuration, + // we need to disable it here to keep existing behavior for the javascript analysis. + ["response", false, -2147483647] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/default-threat-models-fixup.model.yml b/javascript/ql/lib/ext/default-threat-models-fixup.model.yml deleted file mode 100644 index 31363571544b..000000000000 --- a/javascript/ql/lib/ext/default-threat-models-fixup.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/threat-models - extensible: threatModelConfiguration - data: - # Since responses are enabled by default in the shared threat-models configuration, - # we need to disable it here to keep existing behavior for the javascript analysis. - - ["response", false, -2147483647] diff --git a/javascript/ql/lib/ext/fastmcp.model.json b/javascript/ql/lib/ext/fastmcp.model.json new file mode 100644 index 000000000000..9454219ef982 --- /dev/null +++ b/javascript/ql/lib/ext/fastmcp.model.json @@ -0,0 +1,25 @@ +// Sources for MCP servers built with the npm package "fastmcp": the arguments of tools, resource +// templates and prompts. +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["fastmcp.FastMCP", "fastmcp", "Member[FastMCP].Instance"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["fastmcp.FastMCP", "Member[addTool].Argument[0].Member[execute].Parameter[0]", "ai"], + ["fastmcp.FastMCP", "Member[addResourceTemplate,addPrompt].Argument[0].Member[load].Parameter[0]", "ai"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/fastmcp.model.yml b/javascript/ql/lib/ext/fastmcp.model.yml deleted file mode 100644 index bc784820c864..000000000000 --- a/javascript/ql/lib/ext/fastmcp.model.yml +++ /dev/null @@ -1,15 +0,0 @@ -# Sources for MCP servers built with the npm package "fastmcp": the arguments of tools, resource -# templates and prompts. -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["fastmcp.FastMCP", "fastmcp", "Member[FastMCP].Instance"] - - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - ["fastmcp.FastMCP", "Member[addTool].Argument[0].Member[execute].Parameter[0]", "ai"] - - ["fastmcp.FastMCP", "Member[addResourceTemplate,addPrompt].Argument[0].Member[load].Parameter[0]", "ai"] diff --git a/javascript/ql/lib/ext/google-genai.model.json b/javascript/ql/lib/ext/google-genai.model.json new file mode 100644 index 000000000000..4a5a8ffa3b39 --- /dev/null +++ b/javascript/ql/lib/ext/google-genai.model.json @@ -0,0 +1,34 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["google-genai.Client", "@google/genai", "Member[GoogleGenAI].Instance"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["google-genai.Client", "Member[models].Member[generateContent,generateContentStream].Argument[0].Member[config].Member[systemInstruction]", "system-prompt-injection"], + ["google-genai.Client", "Member[chats].Member[create].Argument[0].Member[config].Member[systemInstruction]", "system-prompt-injection"], + ["google-genai.Client", "Member[chats].Member[create].ReturnValue.Member[sendMessage].Argument[0].Member[config].Member[systemInstruction]", "system-prompt-injection"], + ["google-genai.Client", "Member[live].Member[connect].Argument[0].Member[config].Member[systemInstruction]", "system-prompt-injection"], + ["google-genai.Client", "Member[caches].Member[create].Argument[0].Member[config].Member[systemInstruction]", "system-prompt-injection"], + ["google-genai.Client", "Member[models].Member[generateContent,generateContentStream].Argument[0].Member[contents]", "user-prompt-injection"], + ["google-genai.Client", "Member[models].Member[generateImages].Argument[0].Member[prompt]", "user-prompt-injection"], + ["google-genai.Client", "Member[models].Member[editImage].Argument[0].Member[prompt]", "user-prompt-injection"], + ["google-genai.Client", "Member[models].Member[generateVideos].Argument[0].Member[prompt]", "user-prompt-injection"], + ["google-genai.Client", "Member[chats].Member[create].ReturnValue.Member[sendMessage,sendMessageStream].Argument[0].Member[message]", "user-prompt-injection"], + ["google-genai.Client", "Member[chats].Member[create].ReturnValue.Member[sendMessage,sendMessageStream].Argument[0].Member[content]", "user-prompt-injection"], + ["google-genai.Client", "Member[interactions].Member[create].Argument[0].Member[input]", "user-prompt-injection"], + ["google-genai.Client", "Member[caches].Member[create].Argument[0].Member[config].Member[contents]", "user-prompt-injection"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/google-genai.model.yml b/javascript/ql/lib/ext/google-genai.model.yml deleted file mode 100644 index 9b9796d4fa9a..000000000000 --- a/javascript/ql/lib/ext/google-genai.model.yml +++ /dev/null @@ -1,24 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["google-genai.Client", "@google/genai", "Member[GoogleGenAI].Instance"] - - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["google-genai.Client", "Member[models].Member[generateContent,generateContentStream].Argument[0].Member[config].Member[systemInstruction]", "system-prompt-injection"] - - ["google-genai.Client", "Member[chats].Member[create].Argument[0].Member[config].Member[systemInstruction]", "system-prompt-injection"] - - ["google-genai.Client", "Member[chats].Member[create].ReturnValue.Member[sendMessage].Argument[0].Member[config].Member[systemInstruction]", "system-prompt-injection"] - - ["google-genai.Client", "Member[live].Member[connect].Argument[0].Member[config].Member[systemInstruction]", "system-prompt-injection"] - - ["google-genai.Client", "Member[caches].Member[create].Argument[0].Member[config].Member[systemInstruction]", "system-prompt-injection"] - - ["google-genai.Client", "Member[models].Member[generateContent,generateContentStream].Argument[0].Member[contents]", "user-prompt-injection"] - - ["google-genai.Client", "Member[models].Member[generateImages].Argument[0].Member[prompt]", "user-prompt-injection"] - - ["google-genai.Client", "Member[models].Member[editImage].Argument[0].Member[prompt]", "user-prompt-injection"] - - ["google-genai.Client", "Member[models].Member[generateVideos].Argument[0].Member[prompt]", "user-prompt-injection"] - - ["google-genai.Client", "Member[chats].Member[create].ReturnValue.Member[sendMessage,sendMessageStream].Argument[0].Member[message]", "user-prompt-injection"] - - ["google-genai.Client", "Member[chats].Member[create].ReturnValue.Member[sendMessage,sendMessageStream].Argument[0].Member[content]", "user-prompt-injection"] - - ["google-genai.Client", "Member[interactions].Member[create].Argument[0].Member[input]", "user-prompt-injection"] - - ["google-genai.Client", "Member[caches].Member[create].Argument[0].Member[config].Member[contents]", "user-prompt-injection"] diff --git a/javascript/ql/lib/ext/graph-ql.model.json b/javascript/ql/lib/ext/graph-ql.model.json new file mode 100644 index 000000000000..dfff94f001a5 --- /dev/null +++ b/javascript/ql/lib/ext/graph-ql.model.json @@ -0,0 +1,22 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["graphql", "Member[graphql]", "Argument[0].Member[source,variableValues]", "Argument[0].Member[rootValue].AnyMember.Parameter[0]", "taint"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["graphql", "Member[GraphQLObjectType].Argument[0].Member[fields].AnyMember.Member[resolve].Parameter[1]", "remote"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/graph-ql.model.yml b/javascript/ql/lib/ext/graph-ql.model.yml deleted file mode 100644 index 2ea1c41ed9fc..000000000000 --- a/javascript/ql/lib/ext/graph-ql.model.yml +++ /dev/null @@ -1,11 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - ["graphql", "Member[graphql]", "Argument[0].Member[source,variableValues]", "Argument[0].Member[rootValue].AnyMember.Parameter[0]", "taint"] - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - ["graphql", "Member[GraphQLObjectType].Argument[0].Member[fields].AnyMember.Member[resolve].Parameter[1]", "remote"] diff --git a/javascript/ql/lib/ext/hana-db-client.model.json b/javascript/ql/lib/ext/hana-db-client.model.json new file mode 100644 index 000000000000..917478818763 --- /dev/null +++ b/javascript/ql/lib/ext/hana-db-client.model.json @@ -0,0 +1,40 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["@sap/hana-client", "Member[createConnection].ReturnValue.Member[exec,prepare].Argument[0]", "sql-injection"], + ["hdb.Client", "Member[exec,prepare,execute].Argument[0]", "sql-injection"], + ["@sap/hdbext", "Member[loadProcedure].Argument[2]", "sql-injection"], + ["@sap/hana-client/extension/Stream", "Member[createProcStatement].Argument[1]", "sql-injection"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["hdb.Client", "hdb", "Member[createClient].ReturnValue"], + ["hdb.Client", "@sap/hdbext", "Member[middleware].ReturnValue.GuardedRouteHandler.Parameter[0].Member[db]"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["@sap/hana-client", "Member[createConnection].ReturnValue.Member[exec].Argument[1].Parameter[1]", "database-access-result"], + ["@sap/hana-client", "Member[createConnection].ReturnValue.Member[prepare].ReturnValue.Member[execBatch,exec,execQuery].Argument[1].Parameter[1]", "database-access-result"], + ["hdb.Client", "Member[exec,execute].Argument[1..2].Parameter[1]", "database-access-result"], + ["hdb.Client", "Member[prepare].Argument[1].Parameter[1].Member[exec].Argument[1].Parameter[2..]", "database-access-result"], + ["@sap/hana-client/extension/Stream", "Member[createProcStatement].Argument[2].Parameter[1].Member[exec].Argument[1].Parameter[2..]", "database-access-result"], + ["@sap/hdbext", "Member[loadProcedure].Argument[3].Parameter[1].Argument[2].Parameter[2..]", "database-access-result"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/hana-db-client.model.yml b/javascript/ql/lib/ext/hana-db-client.model.yml deleted file mode 100644 index 1a6b1e8425a6..000000000000 --- a/javascript/ql/lib/ext/hana-db-client.model.yml +++ /dev/null @@ -1,27 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["@sap/hana-client", "Member[createConnection].ReturnValue.Member[exec,prepare].Argument[0]", "sql-injection"] - - ["hdb.Client", "Member[exec,prepare,execute].Argument[0]", "sql-injection"] - - ["@sap/hdbext", "Member[loadProcedure].Argument[2]", "sql-injection"] - - ["@sap/hana-client/extension/Stream", "Member[createProcStatement].Argument[1]", "sql-injection"] - - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["hdb.Client", "hdb", "Member[createClient].ReturnValue"] - - ["hdb.Client", "@sap/hdbext", "Member[middleware].ReturnValue.GuardedRouteHandler.Parameter[0].Member[db]"] - - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - ['@sap/hana-client', 'Member[createConnection].ReturnValue.Member[exec].Argument[1].Parameter[1]', 'database-access-result'] - - ['@sap/hana-client', 'Member[createConnection].ReturnValue.Member[prepare].ReturnValue.Member[execBatch,exec,execQuery].Argument[1].Parameter[1]', 'database-access-result'] - - ['hdb.Client', 'Member[exec,execute].Argument[1..2].Parameter[1]', 'database-access-result'] - - ['hdb.Client', 'Member[prepare].Argument[1].Parameter[1].Member[exec].Argument[1].Parameter[2..]', 'database-access-result'] - - ["@sap/hana-client/extension/Stream", "Member[createProcStatement].Argument[2].Parameter[1].Member[exec].Argument[1].Parameter[2..]", "database-access-result"] - - ['@sap/hdbext', 'Member[loadProcedure].Argument[3].Parameter[1].Argument[2].Parameter[2..]', 'database-access-result'] diff --git a/javascript/ql/lib/ext/langchain.model.json b/javascript/ql/lib/ext/langchain.model.json new file mode 100644 index 000000000000..2ce8b53704ac --- /dev/null +++ b/javascript/ql/lib/ext/langchain.model.json @@ -0,0 +1,58 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["langchain.ChatModel", "@langchain/openai", "Member[ChatOpenAI].Instance"], + ["langchain.ChatModel", "@langchain/anthropic", "Member[ChatAnthropic].Instance"], + ["langchain.ChatModel", "@langchain/google-genai", "Member[ChatGoogleGenerativeAI].Instance"], + ["langchain.ChatModel", "@langchain/mistralai", "Member[ChatMistralAI].Instance"], + ["langchain.ChatModel", "@langchain/groq", "Member[ChatGroq].Instance"], + ["langchain.ChatModel", "@langchain/cohere", "Member[ChatCohere].Instance"], + ["langchain.ChatModel", "@langchain/community/chat_models/fireworks", "Member[ChatFireworks].Instance"], + ["langchain.ChatModel", "@langchain/ollama", "Member[ChatOllama].Instance"], + ["langchain.ChatModel", "@langchain/aws", "Member[BedrockChat,ChatBedrockConverse].Instance"], + ["langchain.ChatModel", "@langchain/community/chat_models/togetherai", "Member[ChatTogetherAI].Instance"], + ["langchain.ChatModel", "@langchain/xai", "Member[ChatXAI].Instance"], + ["langchain.ChatModel", "@langchain/openrouter", "Member[ChatOpenRouter].Instance"], + ["langchain.ChatModel", "langchain", "Member[initChatModel].ReturnValue.Awaited"], + ["langchain.AgentExecutor", "langchain/agents", "Member[AgentExecutor].Instance"], + ["langchain.AgentExecutor", "langchain/agents", "Member[AgentExecutor].Member[fromAgentAndTools].ReturnValue"], + ["langchain.Agent", "langchain", "Member[createAgent].ReturnValue"], + ["langchain.LLMChain", "langchain/chains", "Member[LLMChain].Instance"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["@langchain/core/messages", "Member[HumanMessage].Argument[0]", "user-prompt-injection"], + ["@langchain/core/messages", "Member[HumanMessage].Argument[0].Member[content]", "user-prompt-injection"], + ["langchain", "Member[HumanMessage].Argument[0]", "user-prompt-injection"], + ["langchain", "Member[HumanMessage].Argument[0].Member[content]", "user-prompt-injection"], + ["@langchain/core/messages", "Member[SystemMessage].Argument[0]", "system-prompt-injection"], + ["@langchain/core/messages", "Member[SystemMessage].Argument[0].Member[content]", "system-prompt-injection"], + ["langchain", "Member[SystemMessage].Argument[0]", "system-prompt-injection"], + ["langchain", "Member[SystemMessage].Argument[0].Member[content]", "system-prompt-injection"], + ["langchain.ChatModel", "Member[invoke].Argument[0]", "user-prompt-injection"], + ["langchain.ChatModel", "Member[stream].Argument[0]", "user-prompt-injection"], + ["langchain.ChatModel", "Member[call].Argument[0]", "user-prompt-injection"], + ["langchain.ChatModel", "Member[predict].Argument[0]", "user-prompt-injection"], + ["langchain.ChatModel", "Member[batch].Argument[0].ArrayElement", "user-prompt-injection"], + ["langchain.ChatModel", "Member[generate].Argument[0].ArrayElement.ArrayElement", "user-prompt-injection"], + ["langchain.AgentExecutor", "Member[invoke].Argument[0].Member[input]", "user-prompt-injection"], + ["langchain.Agent", "Member[invoke].Argument[0].Member[messages].ArrayElement.Member[content]", "user-prompt-injection"], + ["langchain.Agent", "Member[stream].Argument[0].Member[messages].ArrayElement.Member[content]", "user-prompt-injection"], + ["langchain", "Member[createAgent].Argument[0].Member[systemPrompt]", "system-prompt-injection"], + ["langchain.LLMChain", "Member[call,invoke].Argument[0].Member[input]", "user-prompt-injection"], + ["@langchain/core/prompts", "Member[ChatPromptTemplate].Member[fromMessages].Argument[0].ArrayElement.ArrayElement", "user-prompt-injection"], + ["@langchain/core/prompts", "Member[PromptTemplate].Instance.Member[format].Argument[0]", "user-prompt-injection"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/langchain.model.yml b/javascript/ql/lib/ext/langchain.model.yml deleted file mode 100644 index 76c3f5359a08..000000000000 --- a/javascript/ql/lib/ext/langchain.model.yml +++ /dev/null @@ -1,48 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["langchain.ChatModel", "@langchain/openai", "Member[ChatOpenAI].Instance"] - - ["langchain.ChatModel", "@langchain/anthropic", "Member[ChatAnthropic].Instance"] - - ["langchain.ChatModel", "@langchain/google-genai", "Member[ChatGoogleGenerativeAI].Instance"] - - ["langchain.ChatModel", "@langchain/mistralai", "Member[ChatMistralAI].Instance"] - - ["langchain.ChatModel", "@langchain/groq", "Member[ChatGroq].Instance"] - - ["langchain.ChatModel", "@langchain/cohere", "Member[ChatCohere].Instance"] - - ["langchain.ChatModel", "@langchain/community/chat_models/fireworks", "Member[ChatFireworks].Instance"] - - ["langchain.ChatModel", "@langchain/ollama", "Member[ChatOllama].Instance"] - - ["langchain.ChatModel", "@langchain/aws", "Member[BedrockChat,ChatBedrockConverse].Instance"] - - ["langchain.ChatModel", "@langchain/community/chat_models/togetherai", "Member[ChatTogetherAI].Instance"] - - ["langchain.ChatModel", "@langchain/xai", "Member[ChatXAI].Instance"] - - ["langchain.ChatModel", "@langchain/openrouter", "Member[ChatOpenRouter].Instance"] - - ["langchain.ChatModel", "langchain", "Member[initChatModel].ReturnValue.Awaited"] - - ["langchain.AgentExecutor", "langchain/agents", "Member[AgentExecutor].Instance"] - - ["langchain.AgentExecutor", "langchain/agents", "Member[AgentExecutor].Member[fromAgentAndTools].ReturnValue"] - - ["langchain.Agent", "langchain", "Member[createAgent].ReturnValue"] - - ["langchain.LLMChain", "langchain/chains", "Member[LLMChain].Instance"] - - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["@langchain/core/messages", "Member[HumanMessage].Argument[0]", "user-prompt-injection"] - - ["@langchain/core/messages", "Member[HumanMessage].Argument[0].Member[content]", "user-prompt-injection"] - - ["langchain", "Member[HumanMessage].Argument[0]", "user-prompt-injection"] - - ["langchain", "Member[HumanMessage].Argument[0].Member[content]", "user-prompt-injection"] - - ["@langchain/core/messages", "Member[SystemMessage].Argument[0]", "system-prompt-injection"] - - ["@langchain/core/messages", "Member[SystemMessage].Argument[0].Member[content]", "system-prompt-injection"] - - ["langchain", "Member[SystemMessage].Argument[0]", "system-prompt-injection"] - - ["langchain", "Member[SystemMessage].Argument[0].Member[content]", "system-prompt-injection"] - - ["langchain.ChatModel", "Member[invoke].Argument[0]", "user-prompt-injection"] - - ["langchain.ChatModel", "Member[stream].Argument[0]", "user-prompt-injection"] - - ["langchain.ChatModel", "Member[call].Argument[0]", "user-prompt-injection"] - - ["langchain.ChatModel", "Member[predict].Argument[0]", "user-prompt-injection"] - - ["langchain.ChatModel", "Member[batch].Argument[0].ArrayElement", "user-prompt-injection"] - - ["langchain.ChatModel", "Member[generate].Argument[0].ArrayElement.ArrayElement", "user-prompt-injection"] - - ["langchain.AgentExecutor", "Member[invoke].Argument[0].Member[input]", "user-prompt-injection"] - - ["langchain.Agent", "Member[invoke].Argument[0].Member[messages].ArrayElement.Member[content]", "user-prompt-injection"] - - ["langchain.Agent", "Member[stream].Argument[0].Member[messages].ArrayElement.Member[content]", "user-prompt-injection"] - - ["langchain", "Member[createAgent].Argument[0].Member[systemPrompt]", "system-prompt-injection"] - - ["langchain.LLMChain", "Member[call,invoke].Argument[0].Member[input]", "user-prompt-injection"] - - ["@langchain/core/prompts", "Member[ChatPromptTemplate].Member[fromMessages].Argument[0].ArrayElement.ArrayElement", "user-prompt-injection"] - - ["@langchain/core/prompts", "Member[PromptTemplate].Instance.Member[format].Argument[0]", "user-prompt-injection"] diff --git a/javascript/ql/lib/ext/make-dir.model.json b/javascript/ql/lib/ext/make-dir.model.json new file mode 100644 index 000000000000..74a21c84ac84 --- /dev/null +++ b/javascript/ql/lib/ext/make-dir.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["make-dir", "Member[makeDirectory,makeDirectorySync].Argument[0]", "path-injection"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/make-dir.model.yml b/javascript/ql/lib/ext/make-dir.model.yml deleted file mode 100644 index 512259126a66..000000000000 --- a/javascript/ql/lib/ext/make-dir.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["make-dir", "Member[makeDirectory,makeDirectorySync].Argument[0]", "path-injection"] diff --git a/javascript/ql/lib/ext/markdown-table.model.json b/javascript/ql/lib/ext/markdown-table.model.json new file mode 100644 index 000000000000..2d7e21867eb3 --- /dev/null +++ b/javascript/ql/lib/ext/markdown-table.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["markdown-table", "", "Argument[0].ArrayElement.ArrayElement", "ReturnValue", "taint"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/markdown-table.model.yml b/javascript/ql/lib/ext/markdown-table.model.yml deleted file mode 100644 index 4dcf36164c99..000000000000 --- a/javascript/ql/lib/ext/markdown-table.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - ["markdown-table", "", "Argument[0].ArrayElement.ArrayElement", "ReturnValue", "taint"] diff --git a/javascript/ql/lib/ext/mcp.model.json b/javascript/ql/lib/ext/mcp.model.json new file mode 100644 index 000000000000..79018cd4382e --- /dev/null +++ b/javascript/ql/lib/ext/mcp.model.json @@ -0,0 +1,46 @@ +// Sources for MCP servers built with the TypeScript SDK: "@modelcontextprotocol/sdk" (1.x) and +// "@modelcontextprotocol/server" (2.x). The arguments of tool, prompt and resource callbacks are +// input the server receives through MCP, and so are the transport headers and the bearer token the +// SDK hands to a callback. +// +// A package name that contains a dot must be quoted with single quotes; otherwise CodeQL reads the +// text after the first dot as a type name. +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["@modelcontextprotocol/sdk.McpServer", "'@modelcontextprotocol/sdk/server/mcp.js'", "Member[McpServer].Instance"], + ["@modelcontextprotocol/sdk.McpServer", "@modelcontextprotocol/sdk/server/mcp", "Member[McpServer].Instance"], + ["@modelcontextprotocol/sdk.McpServer", "@modelcontextprotocol/server", "Member[McpServer].Instance"], + ["@modelcontextprotocol/sdk.McpServer", "'@modelcontextprotocol/sdk/server/mcp.js'.McpServer", ""], + ["@modelcontextprotocol/sdk.Server", "'@modelcontextprotocol/sdk/server/index.js'", "Member[Server].Instance"], + ["@modelcontextprotocol/sdk.Server", "@modelcontextprotocol/sdk/server/index", "Member[Server].Instance"], + ["@modelcontextprotocol/sdk.Server", "@modelcontextprotocol/server", "Member[Server].Instance"], + ["@modelcontextprotocol/sdk.Server", "@modelcontextprotocol/sdk.McpServer", "Member[server]"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + // High-level server: the callback is the last argument; its first parameter holds the arguments + ["@modelcontextprotocol/sdk.McpServer", "Member[tool,registerTool,prompt,registerPrompt].Argument[1..].Parameter[0]", "ai"], + ["@modelcontextprotocol/sdk.McpServer", "Member[resource,registerResource].Argument[1..].Parameter[0,1]", "ai"], + // Transport headers and the bearer token: `extra` in 1.x, `ctx` in 2.x + ["@modelcontextprotocol/sdk.McpServer", "Member[tool,registerTool,prompt,registerPrompt].Argument[1..].Parameter[1,2].Member[requestInfo].Member[headers]", "remote"], + ["@modelcontextprotocol/sdk.McpServer", "Member[tool,registerTool,prompt,registerPrompt].Argument[1..].Parameter[1,2].Member[authInfo].Member[token]", "remote"], + ["@modelcontextprotocol/sdk.McpServer", "Member[tool,registerTool,prompt,registerPrompt].Argument[1..].Parameter[1,2].Member[http].Member[req].Member[headers].Member[get].ReturnValue", "remote"], + ["@modelcontextprotocol/sdk.McpServer", "Member[tool,registerTool,prompt,registerPrompt].Argument[1..].Parameter[1,2].Member[http].Member[authInfo].Member[token]", "remote"], + // Low-level server: request handlers receive the request; custom methods (2.x) its params + ["@modelcontextprotocol/sdk.Server", "Member[setRequestHandler].Argument[1].Parameter[0].Member[params]", "ai"], + ["@modelcontextprotocol/sdk.Server", "Member[setRequestHandler].Argument[2].Parameter[0]", "ai"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/mcp.model.yml b/javascript/ql/lib/ext/mcp.model.yml deleted file mode 100644 index 30b3bb599947..000000000000 --- a/javascript/ql/lib/ext/mcp.model.yml +++ /dev/null @@ -1,36 +0,0 @@ -# Sources for MCP servers built with the TypeScript SDK: "@modelcontextprotocol/sdk" (1.x) and -# "@modelcontextprotocol/server" (2.x). The arguments of tool, prompt and resource callbacks are -# input the server receives through MCP, and so are the transport headers and the bearer token the -# SDK hands to a callback. -# -# A package name that contains a dot must be quoted with single quotes; otherwise CodeQL reads the -# text after the first dot as a type name. -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["@modelcontextprotocol/sdk.McpServer", "'@modelcontextprotocol/sdk/server/mcp.js'", "Member[McpServer].Instance"] - - ["@modelcontextprotocol/sdk.McpServer", "@modelcontextprotocol/sdk/server/mcp", "Member[McpServer].Instance"] - - ["@modelcontextprotocol/sdk.McpServer", "@modelcontextprotocol/server", "Member[McpServer].Instance"] - - ["@modelcontextprotocol/sdk.McpServer", "'@modelcontextprotocol/sdk/server/mcp.js'.McpServer", ""] - - ["@modelcontextprotocol/sdk.Server", "'@modelcontextprotocol/sdk/server/index.js'", "Member[Server].Instance"] - - ["@modelcontextprotocol/sdk.Server", "@modelcontextprotocol/sdk/server/index", "Member[Server].Instance"] - - ["@modelcontextprotocol/sdk.Server", "@modelcontextprotocol/server", "Member[Server].Instance"] - - ["@modelcontextprotocol/sdk.Server", "@modelcontextprotocol/sdk.McpServer", "Member[server]"] - - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - # High-level server: the callback is the last argument; its first parameter holds the arguments - - ["@modelcontextprotocol/sdk.McpServer", "Member[tool,registerTool,prompt,registerPrompt].Argument[1..].Parameter[0]", "ai"] - - ["@modelcontextprotocol/sdk.McpServer", "Member[resource,registerResource].Argument[1..].Parameter[0,1]", "ai"] - # Transport headers and the bearer token: `extra` in 1.x, `ctx` in 2.x - - ["@modelcontextprotocol/sdk.McpServer", "Member[tool,registerTool,prompt,registerPrompt].Argument[1..].Parameter[1,2].Member[requestInfo].Member[headers]", "remote"] - - ["@modelcontextprotocol/sdk.McpServer", "Member[tool,registerTool,prompt,registerPrompt].Argument[1..].Parameter[1,2].Member[authInfo].Member[token]", "remote"] - - ["@modelcontextprotocol/sdk.McpServer", "Member[tool,registerTool,prompt,registerPrompt].Argument[1..].Parameter[1,2].Member[http].Member[req].Member[headers].Member[get].ReturnValue", "remote"] - - ["@modelcontextprotocol/sdk.McpServer", "Member[tool,registerTool,prompt,registerPrompt].Argument[1..].Parameter[1,2].Member[http].Member[authInfo].Member[token]", "remote"] - # Low-level server: request handlers receive the request; custom methods (2.x) its params - - ["@modelcontextprotocol/sdk.Server", "Member[setRequestHandler].Argument[1].Parameter[0].Member[params]", "ai"] - - ["@modelcontextprotocol/sdk.Server", "Member[setRequestHandler].Argument[2].Parameter[0]", "ai"] diff --git a/javascript/ql/lib/ext/mkdirp.model.json b/javascript/ql/lib/ext/mkdirp.model.json new file mode 100644 index 000000000000..a22222e9cb91 --- /dev/null +++ b/javascript/ql/lib/ext/mkdirp.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["mkdirp", "Member[nativeSync,native,manual,manualSync,mkdirpNative,mkdirpManual,mkdirpManualSync,mkdirpNativeSync,mkdirpSync,sync].Argument[0]", "path-injection"], + ["mkdirp", "Argument[0]", "path-injection"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/mkdirp.model.yml b/javascript/ql/lib/ext/mkdirp.model.yml deleted file mode 100644 index 1a3bcce767c5..000000000000 --- a/javascript/ql/lib/ext/mkdirp.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["mkdirp", "Member[nativeSync,native,manual,manualSync,mkdirpNative,mkdirpManual,mkdirpManualSync,mkdirpNativeSync,mkdirpSync,sync].Argument[0]", "path-injection"] - - ["mkdirp", "Argument[0]", "path-injection"] diff --git a/javascript/ql/lib/ext/open.model.json b/javascript/ql/lib/ext/open.model.json new file mode 100644 index 000000000000..88cc25a5e197 --- /dev/null +++ b/javascript/ql/lib/ext/open.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["open", "Argument[0]", "path-injection"], + ["open", "Member[openApp].Argument[0]", "path-injection"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/open.model.yml b/javascript/ql/lib/ext/open.model.yml deleted file mode 100644 index 2159fe794d74..000000000000 --- a/javascript/ql/lib/ext/open.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["open", "Argument[0]", "path-injection"] - - ["open", "Member[openApp].Argument[0]", "path-injection"] diff --git a/javascript/ql/lib/ext/openai.model.json b/javascript/ql/lib/ext/openai.model.json new file mode 100644 index 000000000000..680868dc46aa --- /dev/null +++ b/javascript/ql/lib/ext/openai.model.json @@ -0,0 +1,39 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["openai.Client", "openai", "Instance"], + ["openai.Client", "openai", "Member[OpenAI,AzureOpenAI].Instance"], + ["openai.Client", "@openai/guardrails", "Member[GuardrailsOpenAI,GuardrailsAzureOpenAI].Member[create].ReturnValue.Awaited"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["openai.Client", "Member[responses].Member[create].Argument[0].Member[instructions]", "system-prompt-injection"], + ["openai.Client", "Member[beta].Member[realtime].Member[sessions].Member[create].Argument[0].Member[instructions]", "system-prompt-injection"], + ["openai.Client", "Member[beta].Member[assistants].Member[create].Argument[0].Member[instructions]", "system-prompt-injection"], + ["openai.Client", "Member[beta].Member[assistants].Member[update].Argument[1].Member[instructions]", "system-prompt-injection"], + ["openai.Client", "Member[beta].Member[threads].Member[runs].Member[create].Argument[1].Member[instructions,additional_instructions]", "system-prompt-injection"], + ["@openai/agents", "Member[Agent].Argument[0].Member[instructions,handoffDescription]", "system-prompt-injection"], + ["@openai/guardrails", "Member[Agent].Argument[0].Member[instructions,handoffDescription]", "system-prompt-injection"], + ["@openai/agents", "Member[Agent].Instance.Member[asTool].Argument[0].Member[toolDescription]", "system-prompt-injection"], + ["@openai/guardrails", "Member[Agent].Instance.Member[asTool].Argument[0].Member[toolDescription]", "system-prompt-injection"], + ["@openai/agents", "Member[tool].Argument[0].Member[description]", "system-prompt-injection"], + ["@openai/guardrails", "Member[tool].Argument[0].Member[description]", "system-prompt-injection"], + ["@openai/guardrails", "Member[GuardrailAgent].Member[create].Argument[2]", "system-prompt-injection"], + ["@openai/agents", "Member[run].Argument[1]", "user-prompt-injection"], + ["@openai/agents", "Member[Runner].Instance.Member[run].Argument[1]", "user-prompt-injection"], + ["openai.Client", "Member[videos].Member[create,edit,extend].Argument[0].Member[prompt]", "user-prompt-injection"], + ["openai.Client", "Member[videos].Member[remix].Argument[1].Member[prompt]", "user-prompt-injection"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/openai.model.yml b/javascript/ql/lib/ext/openai.model.yml deleted file mode 100644 index bbccbe5a8020..000000000000 --- a/javascript/ql/lib/ext/openai.model.yml +++ /dev/null @@ -1,29 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["openai.Client", "openai", "Instance"] - - ["openai.Client", "openai", "Member[OpenAI,AzureOpenAI].Instance"] - - ["openai.Client", "@openai/guardrails", "Member[GuardrailsOpenAI,GuardrailsAzureOpenAI].Member[create].ReturnValue.Awaited"] - - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["openai.Client", "Member[responses].Member[create].Argument[0].Member[instructions]", "system-prompt-injection"] - - ["openai.Client", "Member[beta].Member[realtime].Member[sessions].Member[create].Argument[0].Member[instructions]", "system-prompt-injection"] - - ["openai.Client", "Member[beta].Member[assistants].Member[create].Argument[0].Member[instructions]", "system-prompt-injection"] - - ["openai.Client", "Member[beta].Member[assistants].Member[update].Argument[1].Member[instructions]", "system-prompt-injection"] - - ["openai.Client", "Member[beta].Member[threads].Member[runs].Member[create].Argument[1].Member[instructions,additional_instructions]", "system-prompt-injection"] - - ["@openai/agents", "Member[Agent].Argument[0].Member[instructions,handoffDescription]", "system-prompt-injection"] - - ["@openai/guardrails", "Member[Agent].Argument[0].Member[instructions,handoffDescription]", "system-prompt-injection"] - - ["@openai/agents", "Member[Agent].Instance.Member[asTool].Argument[0].Member[toolDescription]", "system-prompt-injection"] - - ["@openai/guardrails", "Member[Agent].Instance.Member[asTool].Argument[0].Member[toolDescription]", "system-prompt-injection"] - - ["@openai/agents", "Member[tool].Argument[0].Member[description]", "system-prompt-injection"] - - ["@openai/guardrails", "Member[tool].Argument[0].Member[description]", "system-prompt-injection"] - - ["@openai/guardrails", "Member[GuardrailAgent].Member[create].Argument[2]", "system-prompt-injection"] - - ["@openai/agents", "Member[run].Argument[1]", "user-prompt-injection"] - - ["@openai/agents", "Member[Runner].Instance.Member[run].Argument[1]", "user-prompt-injection"] - - ["openai.Client", "Member[videos].Member[create,edit,extend].Argument[0].Member[prompt]", "user-prompt-injection"] - - ["openai.Client", "Member[videos].Member[remix].Argument[1].Member[prompt]", "user-prompt-injection"] diff --git a/javascript/ql/lib/ext/openrouter.model.json b/javascript/ql/lib/ext/openrouter.model.json new file mode 100644 index 000000000000..59fc7f643130 --- /dev/null +++ b/javascript/ql/lib/ext/openrouter.model.json @@ -0,0 +1,29 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["openrouter.Client", "@openrouter/sdk", "Instance"], + ["openrouter.Client", "@openrouter/sdk", "Member[OpenRouter].Instance"], + ["openrouter.Agent", "@openrouter/agent", "Member[OpenRouter].Instance"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["@openrouter/agent", "Member[callModel].Argument[0].Member[instructions]", "system-prompt-injection"], + ["openrouter.Agent", "Member[callModel].Argument[0].Member[instructions]", "system-prompt-injection"], + ["@openrouter/agent", "Member[tool].Argument[0].Member[description]", "system-prompt-injection"], + ["openrouter.Client", "Member[embeddings].Member[create].Argument[0].Member[input]", "user-prompt-injection"], + ["@openrouter/agent", "Member[callModel].Argument[0].Member[input]", "user-prompt-injection"], + ["openrouter.Agent", "Member[callModel].Argument[0].Member[input]", "user-prompt-injection"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/openrouter.model.yml b/javascript/ql/lib/ext/openrouter.model.yml deleted file mode 100644 index 44cf6c9759a6..000000000000 --- a/javascript/ql/lib/ext/openrouter.model.yml +++ /dev/null @@ -1,19 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["openrouter.Client", "@openrouter/sdk", "Instance"] - - ["openrouter.Client", "@openrouter/sdk", "Member[OpenRouter].Instance"] - - ["openrouter.Agent", "@openrouter/agent", "Member[OpenRouter].Instance"] - - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["@openrouter/agent", "Member[callModel].Argument[0].Member[instructions]", "system-prompt-injection"] - - ["openrouter.Agent", "Member[callModel].Argument[0].Member[instructions]", "system-prompt-injection"] - - ["@openrouter/agent", "Member[tool].Argument[0].Member[description]", "system-prompt-injection"] - - ["openrouter.Client", "Member[embeddings].Member[create].Argument[0].Member[input]", "user-prompt-injection"] - - ["@openrouter/agent", "Member[callModel].Argument[0].Member[input]", "user-prompt-injection"] - - ["openrouter.Agent", "Member[callModel].Argument[0].Member[input]", "user-prompt-injection"] diff --git a/javascript/ql/lib/ext/react-relay-threat.model.json b/javascript/ql/lib/ext/react-relay-threat.model.json new file mode 100644 index 000000000000..321df292532a --- /dev/null +++ b/javascript/ql/lib/ext/react-relay-threat.model.json @@ -0,0 +1,22 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["react-relay", "Member[useFragment].ReturnValue", "response"], + ["react-relay", "Member[useLazyLoadQuery].ReturnValue", "response"], + ["react-relay", "Member[usePreloadedQuery].ReturnValue", "response"], + ["react-relay", "Member[useClientQuery].ReturnValue", "response"], + ["react-relay", "Member[useRefetchableFragment].ReturnValue.Member[0]", "response"], + ["react-relay", "Member[usePaginationFragment].ReturnValue.Member[data]", "response"], + ["react-relay", "Member[useMutation].ReturnValue.Member[0].Argument[0].Member[onCompleted].Parameter[0]", "response"], + ["react-relay", "Member[useSubscription].Argument[0].Member[onNext].Parameter[0]", "response"], + ["react-relay", "Member[fetchQuery].ReturnValue.Member[subscribe].Argument[0].Member[next].Parameter[0]", "response"], + ["relay-runtime", "Member[readFragment].ReturnValue", "response"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/react-relay-threat.model.yml b/javascript/ql/lib/ext/react-relay-threat.model.yml deleted file mode 100644 index 47b1d086533e..000000000000 --- a/javascript/ql/lib/ext/react-relay-threat.model.yml +++ /dev/null @@ -1,15 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - ["react-relay", "Member[useFragment].ReturnValue", "response"] - - ["react-relay", "Member[useLazyLoadQuery].ReturnValue", "response"] - - ["react-relay", "Member[usePreloadedQuery].ReturnValue", "response"] - - ["react-relay", "Member[useClientQuery].ReturnValue", "response"] - - ["react-relay", "Member[useRefetchableFragment].ReturnValue.Member[0]", "response"] - - ["react-relay", "Member[usePaginationFragment].ReturnValue.Member[data]", "response"] - - ["react-relay", "Member[useMutation].ReturnValue.Member[0].Argument[0].Member[onCompleted].Parameter[0]", "response"] - - ["react-relay", "Member[useSubscription].Argument[0].Member[onNext].Parameter[0]", "response"] - - ["react-relay", "Member[fetchQuery].ReturnValue.Member[subscribe].Argument[0].Member[next].Parameter[0]", "response"] - - ["relay-runtime", "Member[readFragment].ReturnValue", "response"] diff --git a/javascript/ql/lib/ext/react.model.json b/javascript/ql/lib/ext/react.model.json new file mode 100644 index 000000000000..ee7e7129bcbb --- /dev/null +++ b/javascript/ql/lib/ext/react.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["react", "Member[use]", "Argument[0].Awaited", "ReturnValue", "value"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/react.model.yml b/javascript/ql/lib/ext/react.model.yml deleted file mode 100644 index 51b6aaefc46d..000000000000 --- a/javascript/ql/lib/ext/react.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - ["react", "Member[use]", "Argument[0].Awaited", "ReturnValue", "value"] diff --git a/javascript/ql/lib/ext/rimraf.model.json b/javascript/ql/lib/ext/rimraf.model.json new file mode 100644 index 000000000000..a08d65f28f39 --- /dev/null +++ b/javascript/ql/lib/ext/rimraf.model.json @@ -0,0 +1,15 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["rimraf", "Member[sync,native,manual,windows,moveRemove,posix].Argument[0]", "path-injection"], + ["rimraf", "Member[rimrafSync,nativeSync,manualSync,windowsSync,moveRemoveSync,posixSync].Argument[0]", "path-injection"], + ["rimraf", "Member[native,manual,windows,moveRemove,posix].Member[sync].Argument[0]", "path-injection"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/rimraf.model.yml b/javascript/ql/lib/ext/rimraf.model.yml deleted file mode 100644 index 8afd53e47efe..000000000000 --- a/javascript/ql/lib/ext/rimraf.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["rimraf", "Member[sync,native,manual,windows,moveRemove,posix].Argument[0]", "path-injection"] - - ["rimraf", "Member[rimrafSync,nativeSync,manualSync,windowsSync,moveRemoveSync,posixSync].Argument[0]", "path-injection"] - - ["rimraf", "Member[native,manual,windows,moveRemove,posix].Member[sync].Argument[0]", "path-injection"] diff --git a/javascript/ql/lib/ext/shelljs.model.json b/javascript/ql/lib/ext/shelljs.model.json new file mode 100644 index 000000000000..1d5392d05112 --- /dev/null +++ b/javascript/ql/lib/ext/shelljs.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["shelljs", "Member[env]", "environment"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/shelljs.model.yml b/javascript/ql/lib/ext/shelljs.model.yml deleted file mode 100644 index 8d2c8db645d8..000000000000 --- a/javascript/ql/lib/ext/shelljs.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - ["shelljs", "Member[env]", "environment"] diff --git a/javascript/ql/lib/ext/tanstack.model.json b/javascript/ql/lib/ext/tanstack.model.json new file mode 100644 index 000000000000..375bd2a63b5b --- /dev/null +++ b/javascript/ql/lib/ext/tanstack.model.json @@ -0,0 +1,18 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["@tanstack/angular-query-experimental", "Member[injectQuery]", "Argument[0].ReturnValue.Member[queryFn].ReturnValue", "ReturnValue.Member[data].Awaited", "value"], + ["@tanstack/angular-query", "Member[injectQuery]", "Argument[0].ReturnValue.Member[queryFn].ReturnValue", "ReturnValue.Member[data].Awaited", "value"], + ["@tanstack/vue-query", "Member[useQuery]", "Argument[0].Member[queryFn].ReturnValue.Awaited", "ReturnValue.Member[data]", "value"], + ["@tanstack/vue-query", "Member[useQueries]", "Argument[0].Member[queries].ArrayElement.Member[queryFn].ReturnValue.Awaited", "ReturnValue.ArrayElement.Member[data]", "value"], + ["@tanstack/react-query", "Member[useQueries]", "Argument[0].Member[queries].ArrayElement.Member[queryFn].ReturnValue.Awaited", "ReturnValue.ArrayElement.Member[data]", "value"], + ["@tanstack/react-query", "Member[useQuery]", "Argument[0].Member[queryFn].ReturnValue.Awaited", "ReturnValue.Member[data]", "value"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/tanstack.model.yml b/javascript/ql/lib/ext/tanstack.model.yml deleted file mode 100644 index 2c07fcf9727c..000000000000 --- a/javascript/ql/lib/ext/tanstack.model.yml +++ /dev/null @@ -1,11 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - ["@tanstack/angular-query-experimental", "Member[injectQuery]", "Argument[0].ReturnValue.Member[queryFn].ReturnValue", "ReturnValue.Member[data].Awaited", "value"] - - ["@tanstack/angular-query", "Member[injectQuery]", "Argument[0].ReturnValue.Member[queryFn].ReturnValue", "ReturnValue.Member[data].Awaited", "value"] - - ["@tanstack/vue-query", "Member[useQuery]", "Argument[0].Member[queryFn].ReturnValue.Awaited", "ReturnValue.Member[data]", "value"] - - ["@tanstack/vue-query", "Member[useQueries]", "Argument[0].Member[queries].ArrayElement.Member[queryFn].ReturnValue.Awaited", "ReturnValue.ArrayElement.Member[data]", "value"] - - ["@tanstack/react-query", "Member[useQueries]", "Argument[0].Member[queries].ArrayElement.Member[queryFn].ReturnValue.Awaited", "ReturnValue.ArrayElement.Member[data]", "value"] - - ["@tanstack/react-query", "Member[useQuery]", "Argument[0].Member[queryFn].ReturnValue.Awaited", "ReturnValue.Member[data]", "value"] diff --git a/javascript/ql/lib/ext/underscore.string.model.json b/javascript/ql/lib/ext/underscore.string.model.json new file mode 100644 index 000000000000..243d822f6e5f --- /dev/null +++ b/javascript/ql/lib/ext/underscore.string.model.json @@ -0,0 +1,45 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["'underscore.string'.Wrapper", "'underscore.string'", "ReturnValue"], + ["'underscore.string'.Wrapper", "'underscore.string'.Wrapper", "Member[slugify,capitalize,decapitalize,clean,cleanDiacritics,swapCase,escapeHTML,unescapeHTML,wrap,dedent,reverse,pred,succ,titleize,camelize,classify,underscored,dasherize,humanize,trim,ltrim,rtrim,truncate,sprintf,strRight,strRightBack,strLeft,strLeftBack,stripTags,unquote,strip,lstrip,rstrip,camelcase].ReturnValue"], + ["'underscore.string'.Wrapper", "'underscore.string'.Wrapper", "Member[insert,replaceAll,join,splice,prune,pad,lpad,rpad,repeat,surround,quote,q,rjust,ljust].ReturnValue"], + ["'underscore.string'.Wrapper", "'underscore.string'.Wrapper", "Member[toUpperCase,toLowerCase,replace,slice,substring,substr,concat].ReturnValue"], + ["'underscore.string'.Wrapper", "'underscore.string'.Wrapper", "Member[tap].ReturnValue"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["'underscore.string'", "Member[slugify,capitalize,decapitalize,clean,cleanDiacritics,swapCase,escapeHTML,unescapeHTML,wrap,dedent,reverse,pred,succ,titleize,camelize,classify,underscored,dasherize,humanize,trim,ltrim,rtrim,truncate,sprintf,strRight,strRightBack,strLeft,strLeftBack,stripTags,unquote,strip,lstrip,rstrip,camelcase]", "Argument[0]", "ReturnValue", "taint"], + ["'underscore.string'", "Member[chop,chars,words,lines]", "Argument[0]", "ReturnValue.ArrayElement", "taint"], + ["'underscore.string'", "Member[toSentence,toSentenceSerial]", "Argument[0].ArrayElement", "ReturnValue", "taint"], + ["'underscore.string'", "Member[insert,replaceAll,splice,prune,pad,lpad,rpad,repeat,rjust,ljust]", "Argument[0,2]", "ReturnValue", "taint"], + ["'underscore.string'", "Member[splice]", "Argument[0,3]", "ReturnValue", "taint"], + ["'underscore.string'", "Member[join]", "Argument[0..]", "ReturnValue", "taint"], + ["'underscore.string'", "Member[surround,quote,q]", "Argument[0,1]", "ReturnValue", "taint"], + ["'underscore.string'", "", "Argument[0]", "ReturnValue", "taint"], + ["'underscore.string'.Wrapper", "Member[slugify,capitalize,decapitalize,clean,cleanDiacritics,swapCase,escapeHTML,unescapeHTML,wrap,dedent,reverse,pred,succ,titleize,camelize,classify,underscored,dasherize,humanize,trim,ltrim,rtrim,truncate,sprintf,strRight,strRightBack,strLeft,strLeftBack,stripTags,unquote,value,strip,lstrip,rstrip,camelcase]", "Argument[this]", "ReturnValue", "taint"], + ["'underscore.string'.Wrapper", "Member[insert,replaceAll,join,splice,prune,pad,lpad,rpad,repeat,surround,quote,q,rjust,ljust]", "Argument[this]", "ReturnValue", "taint"], + ["'underscore.string'.Wrapper", "Member[insert,replaceAll,prune,pad,lpad,rpad,repeat,rjust,ljust]", "Argument[1]", "ReturnValue", "taint"], + ["'underscore.string'.Wrapper", "Member[surround,quote,q]", "Argument[0]", "ReturnValue", "taint"], + ["'underscore.string'.Wrapper", "Member[splice]", "Argument[2]", "ReturnValue", "taint"], + ["'underscore.string'.Wrapper", "Member[join,concat]", "Argument[0..]", "ReturnValue", "taint"], + ["'underscore.string'.Wrapper", "Member[toUpperCase,toLowerCase,replace,slice,substring,substr,split]", "Argument[this]", "ReturnValue", "taint"], + ["'underscore.string'.Wrapper", "Member[tap]", "Argument[this]", "ReturnValue", "taint"], + ["'underscore.string'.Wrapper", "Member[tap]", "Argument[0].ReturnValue", "ReturnValue", "taint"], + ["'underscore.string'.Wrapper", "Member[tap]", "Argument[this]", "Argument[0].Parameter[1]", "taint"], + ["'underscore.string'", "Member[map]", "Argument[0]", "Argument[1].Parameter[0]", "taint"], + ["'underscore.string'", "Member[map]", "Argument[1].ReturnValue", "ReturnValue", "taint"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/underscore.string.model.yml b/javascript/ql/lib/ext/underscore.string.model.yml deleted file mode 100644 index d1330279f74b..000000000000 --- a/javascript/ql/lib/ext/underscore.string.model.yml +++ /dev/null @@ -1,35 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["'underscore.string'.Wrapper", "'underscore.string'", "ReturnValue"] - - ["'underscore.string'.Wrapper", "'underscore.string'.Wrapper", "Member[slugify,capitalize,decapitalize,clean,cleanDiacritics,swapCase,escapeHTML,unescapeHTML,wrap,dedent,reverse,pred,succ,titleize,camelize,classify,underscored,dasherize,humanize,trim,ltrim,rtrim,truncate,sprintf,strRight,strRightBack,strLeft,strLeftBack,stripTags,unquote,strip,lstrip,rstrip,camelcase].ReturnValue"] - - ["'underscore.string'.Wrapper", "'underscore.string'.Wrapper", "Member[insert,replaceAll,join,splice,prune,pad,lpad,rpad,repeat,surround,quote,q,rjust,ljust].ReturnValue"] - - ["'underscore.string'.Wrapper", "'underscore.string'.Wrapper", "Member[toUpperCase,toLowerCase,replace,slice,substring,substr,concat].ReturnValue"] - - ["'underscore.string'.Wrapper", "'underscore.string'.Wrapper", "Member[tap].ReturnValue"] - - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - ["'underscore.string'", "Member[slugify,capitalize,decapitalize,clean,cleanDiacritics,swapCase,escapeHTML,unescapeHTML,wrap,dedent,reverse,pred,succ,titleize,camelize,classify,underscored,dasherize,humanize,trim,ltrim,rtrim,truncate,sprintf,strRight,strRightBack,strLeft,strLeftBack,stripTags,unquote,strip,lstrip,rstrip,camelcase]", "Argument[0]", "ReturnValue", "taint"] - - ["'underscore.string'", "Member[chop,chars,words,lines]", "Argument[0]", "ReturnValue.ArrayElement", "taint"] - - ["'underscore.string'", "Member[toSentence,toSentenceSerial]", "Argument[0].ArrayElement", "ReturnValue", "taint"] - - ["'underscore.string'", "Member[insert,replaceAll,splice,prune,pad,lpad,rpad,repeat,rjust,ljust]", "Argument[0,2]", "ReturnValue", "taint"] - - ["'underscore.string'", "Member[splice]", "Argument[0,3]", "ReturnValue", "taint"] - - ["'underscore.string'", "Member[join]", "Argument[0..]", "ReturnValue", "taint"] - - ["'underscore.string'", "Member[surround,quote,q]", "Argument[0,1]", "ReturnValue", "taint"] - - ["'underscore.string'", "", "Argument[0]", "ReturnValue", "taint"] - - ["'underscore.string'.Wrapper", "Member[slugify,capitalize,decapitalize,clean,cleanDiacritics,swapCase,escapeHTML,unescapeHTML,wrap,dedent,reverse,pred,succ,titleize,camelize,classify,underscored,dasherize,humanize,trim,ltrim,rtrim,truncate,sprintf,strRight,strRightBack,strLeft,strLeftBack,stripTags,unquote,value,strip,lstrip,rstrip,camelcase]", "Argument[this]", "ReturnValue", "taint"] - - ["'underscore.string'.Wrapper", "Member[insert,replaceAll,join,splice,prune,pad,lpad,rpad,repeat,surround,quote,q,rjust,ljust]", "Argument[this]", "ReturnValue", "taint"] - - ["'underscore.string'.Wrapper", "Member[insert,replaceAll,prune,pad,lpad,rpad,repeat,rjust,ljust]", "Argument[1]", "ReturnValue", "taint"] - - ["'underscore.string'.Wrapper", "Member[surround,quote,q]", "Argument[0]", "ReturnValue", "taint"] - - ["'underscore.string'.Wrapper", "Member[splice]", "Argument[2]", "ReturnValue", "taint"] - - ["'underscore.string'.Wrapper", "Member[join,concat]", "Argument[0..]", "ReturnValue", "taint"] - - ["'underscore.string'.Wrapper", "Member[toUpperCase,toLowerCase,replace,slice,substring,substr,split]", "Argument[this]", "ReturnValue", "taint"] - - ["'underscore.string'.Wrapper", "Member[tap]", "Argument[this]", "ReturnValue", "taint"] - - ["'underscore.string'.Wrapper", "Member[tap]", "Argument[0].ReturnValue", "ReturnValue", "taint"] - - ["'underscore.string'.Wrapper", "Member[tap]", "Argument[this]", "Argument[0].Parameter[1]", "taint"] - - ["'underscore.string'", "Member[map]", "Argument[0]", "Argument[1].Parameter[0]", "taint"] - - ["'underscore.string'", "Member[map]", "Argument[1].ReturnValue", "ReturnValue", "taint"] diff --git a/javascript/ql/lib/ext/vue.model.json b/javascript/ql/lib/ext/vue.model.json new file mode 100644 index 000000000000..93a120284ed2 --- /dev/null +++ b/javascript/ql/lib/ext/vue.model.json @@ -0,0 +1,33 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + // `useRoute()` — Vue Router's Composition API returns a route object whose URL-derived + // members are client-side remote flow sources. + ["vue-router", "Member[useRoute].ReturnValue.Member[params,path,fullPath]", "browser-url-path"], + ["vue-router", "Member[useRoute].ReturnValue.Member[query]", "browser-url-query"], + ["vue-router", "Member[useRoute].ReturnValue.Member[hash]", "browser-url-fragment"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + // `ref`, `shallowRef`, `toRef` — the wrapped argument flows to `.value`. + ["vue", "Member[ref,shallowRef,toRef]", "Argument[0]", "ReturnValue.Member[value]", "value"], + // `reactive` — the wrapped argument taints the returned reactive object. + ["vue", "Member[reactive]", "Argument[0]", "ReturnValue", "taint"], + // `computed(() => ...)` — function overload: the getter's return value flows to `.value`. + ["vue", "Member[computed]", "Argument[0].ReturnValue", "ReturnValue.Member[value]", "value"], + // `computed({ get() { ... } })` — object overload: the `get` getter's return value flows to `.value`. + ["vue", "Member[computed]", "Argument[0].Member[get].ReturnValue", "ReturnValue.Member[value]", "value"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/vue.model.yml b/javascript/ql/lib/ext/vue.model.yml deleted file mode 100644 index 17d473210335..000000000000 --- a/javascript/ql/lib/ext/vue.model.yml +++ /dev/null @@ -1,22 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - # `useRoute()` — Vue Router's Composition API returns a route object whose URL-derived - # members are client-side remote flow sources. - - ["vue-router", "Member[useRoute].ReturnValue.Member[params,path,fullPath]", "browser-url-path"] - - ["vue-router", "Member[useRoute].ReturnValue.Member[query]", "browser-url-query"] - - ["vue-router", "Member[useRoute].ReturnValue.Member[hash]", "browser-url-fragment"] - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - # `ref`, `shallowRef`, `toRef` — the wrapped argument flows to `.value`. - - ["vue", "Member[ref,shallowRef,toRef]", "Argument[0]", "ReturnValue.Member[value]", "value"] - # `reactive` — the wrapped argument taints the returned reactive object. - - ["vue", "Member[reactive]", "Argument[0]", "ReturnValue", "taint"] - # `computed(() => ...)` — function overload: the getter's return value flows to `.value`. - - ["vue", "Member[computed]", "Argument[0].ReturnValue", "ReturnValue.Member[value]", "value"] - # `computed({ get() { ... } })` — object overload: the `get` getter's return value flows to `.value`. - - ["vue", "Member[computed]", "Argument[0].Member[get].ReturnValue", "ReturnValue.Member[value]", "value"] diff --git a/javascript/ql/lib/ext/zod.model.json b/javascript/ql/lib/ext/zod.model.json new file mode 100644 index 000000000000..e38d8543a8ca --- /dev/null +++ b/javascript/ql/lib/ext/zod.model.json @@ -0,0 +1,26 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["zod", "zod/v3", ""], + ["zod", "zod/v4", ""] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["zod", "Fuzzy.Member[parse]", "Argument[0]", "ReturnValue", "value"], + ["zod", "Fuzzy.Member[safeParse]", "Argument[0]", "ReturnValue.Member[data]", "value"], + ["zod", "Fuzzy.Member[parseAsync]", "Argument[0]", "ReturnValue.Awaited", "value"], + ["zod", "Fuzzy.Member[safeParseAsync]", "Argument[0]", "ReturnValue.Awaited.Member[data]", "value"] + ] + } + ] +} diff --git a/javascript/ql/lib/ext/zod.model.yml b/javascript/ql/lib/ext/zod.model.yml deleted file mode 100644 index 234a0aec9d01..000000000000 --- a/javascript/ql/lib/ext/zod.model.yml +++ /dev/null @@ -1,16 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["zod", "zod/v3", ""] - - ["zod", "zod/v4", ""] - - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - ["zod", "Fuzzy.Member[parse]", "Argument[0]", "ReturnValue", "value"] - - ["zod", "Fuzzy.Member[safeParse]", "Argument[0]", "ReturnValue.Member[data]", "value"] - - ["zod", "Fuzzy.Member[parseAsync]", "Argument[0]", "ReturnValue.Awaited", "value"] - - ["zod", "Fuzzy.Member[safeParseAsync]", "Argument[0]", "ReturnValue.Awaited.Member[data]", "value"] diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index d42fdd6cb52e..7b53f67e2a96 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -18,9 +18,11 @@ dependencies: codeql/xml: ${workspace} codeql/yaml: ${workspace} dataExtensions: - - semmle/javascript/frameworks/**/model.yml - semmle/javascript/frameworks/**/*.model.yml - semmle/javascript/security/domains/**/*.model.yml - ext/*.model.yml + - semmle/javascript/frameworks/**/*.model.json + - semmle/javascript/security/domains/**/*.model.json + - ext/*.model.json warnOnImplicitThis: true compileForOverlayEval: true diff --git a/javascript/ql/lib/semmle/javascript/frameworks/NoSQL.model.json b/javascript/ql/lib/semmle/javascript/frameworks/NoSQL.model.json new file mode 100644 index 000000000000..6b6992a28917 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/frameworks/NoSQL.model.json @@ -0,0 +1,20 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + // In Mongo version 2.x, a client and a database handle were the same concept, but in 3.x + // they were separated. To handle everything with a single model, we treat them as the same here. + ["mongodb.Db", "mongodb.MongoClient", ""], + // 'marsdb' has no typings and is archived. + // We just model is as a variant of 'mongoose'. + ["mongoose.Model", "marsdb", "Member[Collection].Instance"], + ["mongoose.Query", "marsdb", "Member[Collection].Instance"], + ["mongoose.Query", "mongoose.Query", "Member[sortFunc].ReturnValue"] + ] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/frameworks/NoSQL.model.yml b/javascript/ql/lib/semmle/javascript/frameworks/NoSQL.model.yml deleted file mode 100644 index e1b47704c30c..000000000000 --- a/javascript/ql/lib/semmle/javascript/frameworks/NoSQL.model.yml +++ /dev/null @@ -1,13 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - # In Mongo version 2.x, a client and a database handle were the same concept, but in 3.x - # they were separated. To handle everything with a single model, we treat them as the same here. - - ['mongodb.Db', 'mongodb.MongoClient', ''] - # 'marsdb' has no typings and is archived. - # We just model is as a variant of 'mongoose'. - - ['mongoose.Model', 'marsdb', 'Member[Collection].Instance'] - - ['mongoose.Query', 'marsdb', 'Member[Collection].Instance'] - - ['mongoose.Query', 'mongoose.Query', 'Member[sortFunc].ReturnValue'] diff --git a/javascript/ql/lib/semmle/javascript/frameworks/NodeJSLib.model.json b/javascript/ql/lib/semmle/javascript/frameworks/NodeJSLib.model.json new file mode 100644 index 000000000000..6caceccb18d2 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/frameworks/NodeJSLib.model.json @@ -0,0 +1,17 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["fs", "Member[promises].Member[readFile].ReturnValue.Member[then].Argument[0].Parameter[0]", "file"], + ["global", "Member[process].Member[stdin].Member[read].ReturnValue", "stdin"], + ["global", "Member[process].Member[stdin].Member[on,addListener].WithStringArgument[0=data].Argument[1].Parameter[0]", "stdin"], + ["readline", "Member[createInterface].ReturnValue.Member[question].Argument[1].Parameter[0]", "stdin"], + ["readline", "Member[createInterface].ReturnValue.Member[on,addListener].WithStringArgument[0=line].Argument[1].Parameter[0]", "stdin"] + ] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/frameworks/NodeJSLib.model.yml b/javascript/ql/lib/semmle/javascript/frameworks/NodeJSLib.model.yml deleted file mode 100644 index 43035615a126..000000000000 --- a/javascript/ql/lib/semmle/javascript/frameworks/NodeJSLib.model.yml +++ /dev/null @@ -1,10 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - ['fs', 'Member[promises].Member[readFile].ReturnValue.Member[then].Argument[0].Parameter[0]', 'file'] - - ['global', 'Member[process].Member[stdin].Member[read].ReturnValue', 'stdin'] - - ['global', 'Member[process].Member[stdin].Member[on,addListener].WithStringArgument[0=data].Argument[1].Parameter[0]', 'stdin'] - - ['readline', 'Member[createInterface].ReturnValue.Member[question].Argument[1].Parameter[0]', 'stdin'] - - ['readline', 'Member[createInterface].ReturnValue.Member[on,addListener].WithStringArgument[0=line].Argument[1].Parameter[0]', 'stdin'] diff --git a/javascript/ql/lib/semmle/javascript/frameworks/SQL.model.json b/javascript/ql/lib/semmle/javascript/frameworks/SQL.model.json new file mode 100644 index 000000000000..1f1e59138ade --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/frameworks/SQL.model.json @@ -0,0 +1,29 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["@google-cloud/spanner.~SpannerObject", "Member[executeSql].Argument[0..].Parameter[1]", "database-access-result"], + ["@google-cloud/spanner.~SpannerObject", "Member[executeSql].ReturnValue.Awaited.Member[0]", "database-access-result"], + ["@google-cloud/spanner.~SpannerObject", "Member[run].Argument[0..].Parameter[1]", "database-access-result"], + ["@google-cloud/spanner.~SpannerObject", "Member[run].ReturnValue.Awaited", "database-access-result"], + ["sequelize.Sequelize", "Member[query].ReturnValue.Awaited", "database-access-result"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["@google-cloud/spanner.Transaction", "Member[batchUpdate].Argument[0]", "sql-injection"], + ["@google-cloud/spanner.Transaction", "Member[batchUpdate].Argument[0].ArrayElement.Member[sql]", "sql-injection"], + ["@google-cloud/spanner.~SqlExecutorDirect", "Argument[0]", "sql-injection"], + ["@google-cloud/spanner.~SqlExecutorDirect", "Argument[0].Member[sql]", "sql-injection"] + ] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/frameworks/SQL.model.yml b/javascript/ql/lib/semmle/javascript/frameworks/SQL.model.yml deleted file mode 100644 index c7a7aa0aee3f..000000000000 --- a/javascript/ql/lib/semmle/javascript/frameworks/SQL.model.yml +++ /dev/null @@ -1,19 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - ['@google-cloud/spanner.~SpannerObject', 'Member[executeSql].Argument[0..].Parameter[1]', 'database-access-result'] - - ['@google-cloud/spanner.~SpannerObject', 'Member[executeSql].ReturnValue.Awaited.Member[0]', 'database-access-result'] - - ['@google-cloud/spanner.~SpannerObject', 'Member[run].Argument[0..].Parameter[1]', 'database-access-result'] - - ['@google-cloud/spanner.~SpannerObject', 'Member[run].ReturnValue.Awaited', 'database-access-result'] - - ['sequelize.Sequelize', 'Member[query].ReturnValue.Awaited', 'database-access-result'] - - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ['@google-cloud/spanner.Transaction', 'Member[batchUpdate].Argument[0]', 'sql-injection'] - - ['@google-cloud/spanner.Transaction', 'Member[batchUpdate].Argument[0].ArrayElement.Member[sql]', 'sql-injection'] - - ['@google-cloud/spanner.~SqlExecutorDirect', 'Argument[0]', 'sql-injection'] - - ['@google-cloud/spanner.~SqlExecutorDirect', 'Argument[0].Member[sql]', 'sql-injection'] diff --git a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/empty.model.json b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/empty.model.json new file mode 100644 index 000000000000..f9c094a70615 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/empty.model.json @@ -0,0 +1,62 @@ +{ + "extensions": [ + // Make sure that the extensible model predicates have at least one definition + // to avoid errors about undefined extensionals. + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "barrierModel" + }, + "data": [] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "barrierGuardModel" + }, + "data": [] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "neutralModel" + }, + "data": [] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeVariableModel" + }, + "data": [] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/empty.model.yml b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/empty.model.yml deleted file mode 100644 index 6542a1194cab..000000000000 --- a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/empty.model.yml +++ /dev/null @@ -1,42 +0,0 @@ -extensions: - # Make sure that the extensible model predicates have at least one definition - # to avoid errors about undefined extensionals. - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: [] - - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: [] - - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: [] - - - addsTo: - pack: codeql/javascript-all - extensible: barrierModel - data: [] - - - addsTo: - pack: codeql/javascript-all - extensible: barrierGuardModel - data: [] - - - addsTo: - pack: codeql/javascript-all - extensible: neutralModel - data: [] - - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: [] - - - addsTo: - pack: codeql/javascript-all - extensible: typeVariableModel - data: [] diff --git a/javascript/ql/lib/semmle/javascript/frameworks/helmet/Helmet.Required.Setting.model.json b/javascript/ql/lib/semmle/javascript/frameworks/helmet/Helmet.Required.Setting.model.json new file mode 100644 index 000000000000..c6fd6450cc66 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/frameworks/helmet/Helmet.Required.Setting.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "requiredHelmetSecuritySetting" + }, + "data": [ + ["frameguard"], + ["contentSecurityPolicy"] + ] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/frameworks/helmet/Helmet.Required.Setting.model.yml b/javascript/ql/lib/semmle/javascript/frameworks/helmet/Helmet.Required.Setting.model.yml deleted file mode 100644 index a8c145321520..000000000000 --- a/javascript/ql/lib/semmle/javascript/frameworks/helmet/Helmet.Required.Setting.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: requiredHelmetSecuritySetting - data: - - ["frameguard"] - - ["contentSecurityPolicy"] diff --git a/javascript/ql/lib/semmle/javascript/frameworks/minimongo/minimongo.model.json b/javascript/ql/lib/semmle/javascript/frameworks/minimongo/minimongo.model.json new file mode 100644 index 000000000000..92d96ab3b918 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/frameworks/minimongo/minimongo.model.json @@ -0,0 +1,87 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["minimongo.HybridCollection", "minimongo.HybridCollectionStatic", "Instance"], + ["minimongo.HybridCollection", "minimongo/lib/HybridDb.HybridCollection", ""], + ["minimongo.HybridCollection", "minimongo/lib/HybridDb.default", "Member[collections].AnyMember"], + ["minimongo.HybridCollectionStatic", "minimongo/lib/HybridDb.HybridCollectionStatic", ""], + ["minimongo.HybridCollectionStatic", "minimongo/lib/HybridDb", "Member[HybridCollection]"], + ["minimongo.HybridCollectionStatic", "minimongo", "Member[HybridCollection]"], + ["minimongo.MinimongoBaseCollection", "minimongo.HybridCollection", ""], + ["minimongo.MinimongoBaseCollection", "minimongo.MinimongoCollection", ""], + ["minimongo.MinimongoBaseCollection", "minimongo.MinimongoDb", "AnyMember"], + ["minimongo.MinimongoBaseCollection", "minimongo.MinimongoLocalCollection", ""], + ["minimongo.MinimongoBaseCollection", "minimongo/RemoteDb.Collection", ""], + ["minimongo.MinimongoBaseCollection", "minimongo/lib/types.MinimongoBaseCollection", ""], + ["minimongo.MinimongoCollection", "minimongo.HybridCollection", "Member[remoteCol]"], + ["minimongo.MinimongoCollection", "minimongo.MinimongoDb", "Member[collections].AnyMember"], + ["minimongo.MinimongoCollection", "minimongo/lib/LocalStorageDb.default", "Member[collections].AnyMember"], + ["minimongo.MinimongoCollection", "minimongo/lib/WebSQLDb.default", "Member[collections].AnyMember"], + ["minimongo.MinimongoCollection", "minimongo/lib/types.MinimongoCollection", ""], + ["minimongo.MinimongoDb", "minimongo.MinimongoDb", "Member[remoteDb]"], + ["minimongo.MinimongoDb", "minimongo.MinimongoLocalDb", ""], + ["minimongo.MinimongoDb", "minimongo/lib/HybridDb.default", ""], + ["minimongo.MinimongoDb", "minimongo/lib/HybridDb.default", "Member[remoteDb]"], + ["minimongo.MinimongoDb", "minimongo/lib/LocalStorageDb.default", ""], + ["minimongo.MinimongoDb", "minimongo/lib/MemoryDb.default", ""], + ["minimongo.MinimongoDb", "minimongo/lib/RemoteDb.default", ""], + ["minimongo.MinimongoDb", "minimongo/lib/ReplicatingDb.default", "Member[masterDb,replicaDb]"], + ["minimongo.MinimongoDb", "minimongo/lib/WebSQLDb.default", ""], + ["minimongo.MinimongoDb", "minimongo/lib/types.MinimongoDb", ""], + ["minimongo.MinimongoLocalCollection", "minimongo.HybridCollection", "Member[localCol]"], + ["minimongo.MinimongoLocalCollection", "minimongo.MinimongoCollection", ""], + ["minimongo.MinimongoLocalCollection", "minimongo.MinimongoLocalDb", "Member[addCollection].Argument[2].Argument[0]"], + ["minimongo.MinimongoLocalCollection", "minimongo.MinimongoLocalDb", "Member[collections].AnyMember"], + ["minimongo.MinimongoLocalCollection", "minimongo/IndexedDb.IndexedDbCollection", ""], + ["minimongo.MinimongoLocalCollection", "minimongo/MemoryDb.Collection", ""], + ["minimongo.MinimongoLocalCollection", "minimongo/ReplicatingDb.Collection", ""], + ["minimongo.MinimongoLocalCollection", "minimongo/ReplicatingDb.Collection", "Member[masterCol,replicaCol]"], + ["minimongo.MinimongoLocalCollection", "minimongo/lib/types.MinimongoLocalCollection", ""], + ["minimongo.MinimongoLocalDb", "minimongo.MinimongoDb", "Member[localDb]"], + ["minimongo.MinimongoLocalDb", "minimongo/lib/HybridDb.default", "Member[localDb]"], + ["minimongo.MinimongoLocalDb", "minimongo/lib/IndexedDb.default", ""], + ["minimongo.MinimongoLocalDb", "minimongo/lib/ReplicatingDb.default", ""], + ["minimongo.MinimongoLocalDb", "minimongo/lib/types.MinimongoLocalDb", ""], + ["minimongo/IndexedDb.IndexedDbCollection", "minimongo/IndexedDb.IndexedDbCollectionStatic", "Instance"], + ["minimongo/IndexedDb.IndexedDbCollection", "minimongo/lib/IndexedDb.default", "Member[collections].AnyMember"], + ["minimongo/MemoryDb.Collection", "minimongo/MemoryDb.CollectionStatic", "Instance"], + ["minimongo/MemoryDb.Collection", "minimongo/lib/MemoryDb.default", "Member[collections].AnyMember"], + ["minimongo/RemoteDb.Collection", "minimongo/RemoteDb.CollectionStatic", "Instance"], + ["minimongo/RemoteDb.Collection", "minimongo/lib/RemoteDb.default", "Member[collections].AnyMember"], + ["minimongo/ReplicatingDb.Collection", "minimongo/ReplicatingDb.CollectionStatic", "Instance"], + ["minimongo/ReplicatingDb.Collection", "minimongo/lib/ReplicatingDb.default", "Member[collections].AnyMember"], + ["minimongo/lib/HybridDb.default", "minimongo/lib/HybridDb.defaultStatic", "Instance"], + ["minimongo/lib/HybridDb.defaultStatic", "minimongo/lib/HybridDb", "Member[default]"], + ["minimongo/lib/HybridDb.defaultStatic", "minimongo", "Member[HybridDb]"], + ["minimongo/lib/IndexedDb.default", "minimongo/lib/IndexedDb.defaultStatic", "Instance"], + ["minimongo/lib/IndexedDb.default", "minimongo", "Member[utils].Member[autoselectLocalDb].ReturnValue"], + ["minimongo/lib/IndexedDb.defaultStatic", "minimongo/lib/IndexedDb", "Member[default]"], + ["minimongo/lib/IndexedDb.defaultStatic", "minimongo", "Member[IndexedDb]"], + ["minimongo/lib/LocalStorageDb.default", "minimongo/lib/LocalStorageDb.defaultStatic", "Instance"], + ["minimongo/lib/LocalStorageDb.default", "minimongo", "Member[utils].Member[autoselectLocalDb].ReturnValue"], + ["minimongo/lib/LocalStorageDb.defaultStatic", "minimongo/lib/LocalStorageDb", "Member[default]"], + ["minimongo/lib/LocalStorageDb.defaultStatic", "minimongo", "Member[LocalStorageDb]"], + ["minimongo/lib/MemoryDb.default", "minimongo/lib/MemoryDb.defaultStatic", "Instance"], + ["minimongo/lib/MemoryDb.default", "minimongo", "Member[utils].Member[autoselectLocalDb].ReturnValue"], + ["minimongo/lib/MemoryDb.defaultStatic", "minimongo/lib/MemoryDb", "Member[default]"], + ["minimongo/lib/MemoryDb.defaultStatic", "minimongo", "Member[MemoryDb]"], + ["minimongo/lib/RemoteDb.default", "minimongo/lib/RemoteDb.defaultStatic", "Instance"], + ["minimongo/lib/RemoteDb.defaultStatic", "minimongo/lib/RemoteDb", "Member[default]"], + ["minimongo/lib/RemoteDb.defaultStatic", "minimongo", "Member[RemoteDb]"], + ["minimongo/lib/ReplicatingDb.default", "minimongo/lib/ReplicatingDb.defaultStatic", "Instance"], + ["minimongo/lib/ReplicatingDb.defaultStatic", "minimongo/lib/ReplicatingDb", "Member[default]"], + ["minimongo/lib/ReplicatingDb.defaultStatic", "minimongo", "Member[ReplicatingDb]"], + ["minimongo/lib/WebSQLDb.default", "minimongo/lib/WebSQLDb.defaultStatic", "Instance"], + ["minimongo/lib/WebSQLDb.default", "minimongo", "Member[utils].Member[autoselectLocalDb].ReturnValue"], + ["minimongo/lib/WebSQLDb.defaultStatic", "minimongo/lib/WebSQLDb", "Member[default]"], + ["minimongo/lib/WebSQLDb.defaultStatic", "minimongo", "Member[WebSQLDb]"], + ["mongodb.Collection", "minimongo.MinimongoBaseCollection", ""] + ] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/frameworks/minimongo/model.yml b/javascript/ql/lib/semmle/javascript/frameworks/minimongo/model.yml deleted file mode 100644 index 0c0d443fc3f1..000000000000 --- a/javascript/ql/lib/semmle/javascript/frameworks/minimongo/model.yml +++ /dev/null @@ -1,80 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - [minimongo.HybridCollection, minimongo.HybridCollectionStatic, Instance] - - [minimongo.HybridCollection, "minimongo/lib/HybridDb.HybridCollection", ""] - - [minimongo.HybridCollection, "minimongo/lib/HybridDb.default", "Member[collections].AnyMember"] - - [minimongo.HybridCollectionStatic, "minimongo/lib/HybridDb.HybridCollectionStatic", ""] - - [minimongo.HybridCollectionStatic, "minimongo/lib/HybridDb", "Member[HybridCollection]"] - - [minimongo.HybridCollectionStatic, minimongo, "Member[HybridCollection]"] - - [minimongo.MinimongoBaseCollection, minimongo.HybridCollection, ""] - - [minimongo.MinimongoBaseCollection, minimongo.MinimongoCollection, ""] - - [minimongo.MinimongoBaseCollection, minimongo.MinimongoDb, AnyMember] - - [minimongo.MinimongoBaseCollection, minimongo.MinimongoLocalCollection, ""] - - [minimongo.MinimongoBaseCollection, "minimongo/RemoteDb.Collection", ""] - - [minimongo.MinimongoBaseCollection, "minimongo/lib/types.MinimongoBaseCollection", ""] - - [minimongo.MinimongoCollection, minimongo.HybridCollection, "Member[remoteCol]"] - - [minimongo.MinimongoCollection, minimongo.MinimongoDb, "Member[collections].AnyMember"] - - [minimongo.MinimongoCollection, "minimongo/lib/LocalStorageDb.default", "Member[collections].AnyMember"] - - [minimongo.MinimongoCollection, "minimongo/lib/WebSQLDb.default", "Member[collections].AnyMember"] - - [minimongo.MinimongoCollection, "minimongo/lib/types.MinimongoCollection", ""] - - [minimongo.MinimongoDb, minimongo.MinimongoDb, "Member[remoteDb]"] - - [minimongo.MinimongoDb, minimongo.MinimongoLocalDb, ""] - - [minimongo.MinimongoDb, "minimongo/lib/HybridDb.default", ""] - - [minimongo.MinimongoDb, "minimongo/lib/HybridDb.default", "Member[remoteDb]"] - - [minimongo.MinimongoDb, "minimongo/lib/LocalStorageDb.default", ""] - - [minimongo.MinimongoDb, "minimongo/lib/MemoryDb.default", ""] - - [minimongo.MinimongoDb, "minimongo/lib/RemoteDb.default", ""] - - [minimongo.MinimongoDb, "minimongo/lib/ReplicatingDb.default", "Member[masterDb,replicaDb]"] - - [minimongo.MinimongoDb, "minimongo/lib/WebSQLDb.default", ""] - - [minimongo.MinimongoDb, "minimongo/lib/types.MinimongoDb", ""] - - [minimongo.MinimongoLocalCollection, minimongo.HybridCollection, "Member[localCol]"] - - [minimongo.MinimongoLocalCollection, minimongo.MinimongoCollection, ""] - - [minimongo.MinimongoLocalCollection, minimongo.MinimongoLocalDb, "Member[addCollection].Argument[2].Argument[0]"] - - [minimongo.MinimongoLocalCollection, minimongo.MinimongoLocalDb, "Member[collections].AnyMember"] - - [minimongo.MinimongoLocalCollection, "minimongo/IndexedDb.IndexedDbCollection", ""] - - [minimongo.MinimongoLocalCollection, "minimongo/MemoryDb.Collection", ""] - - [minimongo.MinimongoLocalCollection, "minimongo/ReplicatingDb.Collection", ""] - - [minimongo.MinimongoLocalCollection, "minimongo/ReplicatingDb.Collection", "Member[masterCol,replicaCol]"] - - [minimongo.MinimongoLocalCollection, "minimongo/lib/types.MinimongoLocalCollection", ""] - - [minimongo.MinimongoLocalDb, minimongo.MinimongoDb, "Member[localDb]"] - - [minimongo.MinimongoLocalDb, "minimongo/lib/HybridDb.default", "Member[localDb]"] - - [minimongo.MinimongoLocalDb, "minimongo/lib/IndexedDb.default", ""] - - [minimongo.MinimongoLocalDb, "minimongo/lib/ReplicatingDb.default", ""] - - [minimongo.MinimongoLocalDb, "minimongo/lib/types.MinimongoLocalDb", ""] - - ["minimongo/IndexedDb.IndexedDbCollection", "minimongo/IndexedDb.IndexedDbCollectionStatic", Instance] - - ["minimongo/IndexedDb.IndexedDbCollection", "minimongo/lib/IndexedDb.default", "Member[collections].AnyMember"] - - ["minimongo/MemoryDb.Collection", "minimongo/MemoryDb.CollectionStatic", Instance] - - ["minimongo/MemoryDb.Collection", "minimongo/lib/MemoryDb.default", "Member[collections].AnyMember"] - - ["minimongo/RemoteDb.Collection", "minimongo/RemoteDb.CollectionStatic", Instance] - - ["minimongo/RemoteDb.Collection", "minimongo/lib/RemoteDb.default", "Member[collections].AnyMember"] - - ["minimongo/ReplicatingDb.Collection", "minimongo/ReplicatingDb.CollectionStatic", Instance] - - ["minimongo/ReplicatingDb.Collection", "minimongo/lib/ReplicatingDb.default", "Member[collections].AnyMember"] - - ["minimongo/lib/HybridDb.default", "minimongo/lib/HybridDb.defaultStatic", Instance] - - ["minimongo/lib/HybridDb.defaultStatic", "minimongo/lib/HybridDb", "Member[default]"] - - ["minimongo/lib/HybridDb.defaultStatic", minimongo, "Member[HybridDb]"] - - ["minimongo/lib/IndexedDb.default", "minimongo/lib/IndexedDb.defaultStatic", Instance] - - ["minimongo/lib/IndexedDb.default", minimongo, "Member[utils].Member[autoselectLocalDb].ReturnValue"] - - ["minimongo/lib/IndexedDb.defaultStatic", "minimongo/lib/IndexedDb", "Member[default]"] - - ["minimongo/lib/IndexedDb.defaultStatic", minimongo, "Member[IndexedDb]"] - - ["minimongo/lib/LocalStorageDb.default", "minimongo/lib/LocalStorageDb.defaultStatic", Instance] - - ["minimongo/lib/LocalStorageDb.default", minimongo, "Member[utils].Member[autoselectLocalDb].ReturnValue"] - - ["minimongo/lib/LocalStorageDb.defaultStatic", "minimongo/lib/LocalStorageDb", "Member[default]"] - - ["minimongo/lib/LocalStorageDb.defaultStatic", minimongo, "Member[LocalStorageDb]"] - - ["minimongo/lib/MemoryDb.default", "minimongo/lib/MemoryDb.defaultStatic", Instance] - - ["minimongo/lib/MemoryDb.default", minimongo, "Member[utils].Member[autoselectLocalDb].ReturnValue"] - - ["minimongo/lib/MemoryDb.defaultStatic", "minimongo/lib/MemoryDb", "Member[default]"] - - ["minimongo/lib/MemoryDb.defaultStatic", minimongo, "Member[MemoryDb]"] - - ["minimongo/lib/RemoteDb.default", "minimongo/lib/RemoteDb.defaultStatic", Instance] - - ["minimongo/lib/RemoteDb.defaultStatic", "minimongo/lib/RemoteDb", "Member[default]"] - - ["minimongo/lib/RemoteDb.defaultStatic", minimongo, "Member[RemoteDb]"] - - ["minimongo/lib/ReplicatingDb.default", "minimongo/lib/ReplicatingDb.defaultStatic", Instance] - - ["minimongo/lib/ReplicatingDb.defaultStatic", "minimongo/lib/ReplicatingDb", "Member[default]"] - - ["minimongo/lib/ReplicatingDb.defaultStatic", minimongo, "Member[ReplicatingDb]"] - - ["minimongo/lib/WebSQLDb.default", "minimongo/lib/WebSQLDb.defaultStatic", Instance] - - ["minimongo/lib/WebSQLDb.default", minimongo, "Member[utils].Member[autoselectLocalDb].ReturnValue"] - - ["minimongo/lib/WebSQLDb.defaultStatic", "minimongo/lib/WebSQLDb", "Member[default]"] - - ["minimongo/lib/WebSQLDb.defaultStatic", minimongo, "Member[WebSQLDb]"] - - [mongodb.Collection, minimongo.MinimongoBaseCollection, ""] diff --git a/javascript/ql/lib/semmle/javascript/frameworks/mongodb/model.yml b/javascript/ql/lib/semmle/javascript/frameworks/mongodb/model.yml deleted file mode 100644 index e2f3f20ee29c..000000000000 --- a/javascript/ql/lib/semmle/javascript/frameworks/mongodb/model.yml +++ /dev/null @@ -1,791 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - [mongodb.Collection, "Member[aggregate,count,countDocuments,deleteMany,deleteOne,find,findOne,findOneAndDelete,findOneAndReplace,remove,replaceOne,watch].Argument[0]", mongodb.sink] - - [mongodb.Collection, "Member[distinct].Argument[1]", mongodb.sink] - - [mongodb.Collection, "Member[findOneAndUpdate,update,updateMany,updateOne].Argument[0,1]", mongodb.sink] - - [mongodb.Db, "Member[aggregate,watch].Argument[0]", mongodb.sink] - - [mongodb.DeleteManyModel, "Member[filter]", mongodb.sink] - - [mongodb.DeleteOneModel, "Member[filter]", mongodb.sink] - - [mongodb.MongoClient, "Member[watch].Argument[0]", mongodb.sink] - - [mongodb.UpdateManyModel, "Member[filter,update]", mongodb.sink] - - [mongodb.UpdateOneModel, "Member[filter,update]", mongodb.sink] - - [mongoose.CollectionBase, "Member[findAndModify].Argument[0]", mongodb.sink] - - [mongoose.Connection, "Member[watch].Argument[0]", mongodb.sink] - - [mongoose.Document, "Member[update,updateOne].Argument[0]", mongodb.sink] - - [mongoose.Model, "Member[$where,aggregate,exists,find,findById,findByIdAndDelete,findByIdAndRemove,findOne,findOneAndDelete,findOneAndRemove,findOneAndReplace,geoSearch,remove,replaceOne,watch].Argument[0]", mongodb.sink] - - [mongoose.Model, "Member[count,where].WithArity[1,2].Argument[0]", mongodb.sink] - - [mongoose.Model, "Member[countDocuments].WithArity[1,2,3].Argument[0]", mongodb.sink] - - [mongoose.Model, "Member[deleteMany,deleteOne].WithArity[0,1,2,3].Argument[0]", mongodb.sink] - - [mongoose.Model, "Member[distinct,where].Argument[1]", mongodb.sink] - - [mongoose.Model, "Member[findByIdAndUpdate,findOneAndUpdate,update,updateMany,updateOne].Argument[0,1]", mongodb.sink] - - [mongoose.Model, "Member[find].WithArity[1,2,3,4].Argument[0]", mongodb.sink] - - [mongoose.Query, "Member[$where,and,find,findByIdAndDelete,findOne,findOneAndDelete,findOneAndRemove,nor,or,remove,replaceOne,setUpdate].Argument[0]", mongodb.sink] - - [mongoose.Query, "Member[count,where].WithArity[1,2].Argument[0]", mongodb.sink] - - [mongoose.Query, "Member[deleteMany,deleteOne].WithArity[0,1,2,3].Argument[0]", mongodb.sink] - - [mongoose.Query, "Member[distinct,where].Argument[1]", mongodb.sink] - - [mongoose.Query, "Member[findByIdAndUpdate,findOneAndUpdate,update,updateMany,updateOne].Argument[0,1]", mongodb.sink] - - [mongoose.Query, "Member[find].WithArity[1,2,3,4].Argument[0]", mongodb.sink] - - [mongoose.QueryStatic, "Argument[2]", mongodb.sink] - - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - [mongodb.AbstractCursor, mongodb.FindCursor, ""] - - [mongodb.AbstractCursor, mongodb.ListCollectionsCursor, ""] - - [mongodb.AbstractCursor, mongodb.ListIndexesCursor, ""] - - [mongodb.AbstractCursorOptions, mongodb.AggregationCursorOptions, ""] - - [mongodb.AbstractCursorOptions, "mongodb/mongodb.AbstractCursorOptions", ""] - - [mongodb.AbstractCursorOptions, mongoose.mongodb.AbstractCursorOptions, ""] - - [mongodb.AddUserOptions, mongodb.Admin, "Member[addUser].Argument[1,2]"] - - [mongodb.AddUserOptions, mongodb.Db, "Member[addUser].Argument[1,2]"] - - [mongodb.AddUserOptions, "mongodb/mongodb.AddUserOptions", ""] - - [mongodb.AddUserOptions, mongoose.mongodb.AddUserOptions, ""] - - [mongodb.Admin, mongodb.AdminStatic, Instance] - - [mongodb.Admin, mongodb.Db, "Member[admin].ReturnValue"] - - [mongodb.Admin, "mongodb/mongodb.Admin", ""] - - [mongodb.Admin, mongoose.mongodb.Admin, ""] - - [mongodb.AdminStatic, "mongodb/mongodb.AdminStatic", ""] - - [mongodb.AdminStatic, mongodb, "Member[Admin]"] - - [mongodb.AdminStatic, mongoose.mongodb.AdminStatic, ""] - - [mongodb.AggregateOptions, mongodb.AggregationCursorOptions, ""] - - [mongodb.AggregateOptions, mongodb.ChangeStreamOptions, ""] - - [mongodb.AggregateOptions, mongodb.Collection, "Member[aggregate].Argument[1]"] - - [mongodb.AggregateOptions, mongodb.CountDocumentsOptions, ""] - - [mongodb.AggregateOptions, mongodb.Db, "Member[aggregate].Argument[1]"] - - [mongodb.AggregateOptions, "mongodb/mongodb.AggregateOptions", ""] - - [mongodb.AggregateOptions, mongoose.mongodb.AggregateOptions, ""] - - [mongodb.AggregationCursorOptions, "mongodb/mongodb.AggregationCursorOptions", ""] - - [mongodb.AggregationCursorOptions, mongoose.mongodb.AggregationCursorOptions, ""] - - [mongodb.AnyBulkWriteOperation, mongodb.BulkOperationBase, "Member[raw].Argument[0]"] - - [mongodb.AnyBulkWriteOperation, mongodb.Collection, "Member[bulkWrite].Argument[0].ArrayElement"] - - [mongodb.AnyBulkWriteOperation, "mongodb/mongodb.AnyBulkWriteOperation", ""] - - [mongodb.AnyBulkWriteOperation, mongoose.mongodb.AnyBulkWriteOperation, ""] - - [mongodb.Auth, mongodb.MongoClientOptions, "Member[auth]"] - - [mongodb.Auth, "mongodb/mongodb.Auth", ""] - - [mongodb.Auth, mongoose.mongodb.Auth, ""] - - [mongodb.AutoEncrypter, mongodb.AutoEncrypter, Instance] - - [mongodb.AutoEncrypter, mongodb.ConnectionOptions, "Member[autoEncrypter]"] - - [mongodb.AutoEncrypter, mongodb.MongoClient, "Member[autoEncrypter]"] - - [mongodb.AutoEncrypter, mongodb.MongoOptions, "Member[autoEncrypter]"] - - [mongodb.AutoEncrypter, "mongodb/mongodb.AutoEncrypter", ""] - - [mongodb.AutoEncrypter, mongoose.mongodb.AutoEncrypter, ""] - - [mongodb.AutoEncryptionOptions, mongodb.AutoEncrypter, "Argument[1]"] - - [mongodb.AutoEncryptionOptions, mongodb.MongoClientOptions, "Member[autoEncryption]"] - - [mongodb.AutoEncryptionOptions, "mongodb/mongodb.AutoEncryptionOptions", ""] - - [mongodb.AutoEncryptionOptions, mongoose.mongodb.AutoEncryptionOptions, ""] - - [mongodb.BulkOperationBase, mongodb.BulkOperationBase, "Member[addToOperationsList,insert,raw].ReturnValue"] - - [mongodb.BulkOperationBase, mongodb.BulkOperationBaseStatic, Instance] - - [mongodb.BulkOperationBase, mongodb.FindOperators, "Member[bulkOperation]"] - - [mongodb.BulkOperationBase, mongodb.FindOperators, "Member[delete,deleteOne,replaceOne,update,updateOne].ReturnValue"] - - [mongodb.BulkOperationBase, mongodb.OrderedBulkOperation, ""] - - [mongodb.BulkOperationBase, mongodb.UnorderedBulkOperation, ""] - - [mongodb.BulkOperationBase, "mongodb/mongodb.BulkOperationBase", ""] - - [mongodb.BulkOperationBase, mongoose.mongodb.BulkOperationBase, ""] - - [mongodb.BulkOperationBaseStatic, "mongodb/mongodb.BulkOperationBaseStatic", ""] - - [mongodb.BulkOperationBaseStatic, mongodb, "Member[BulkOperationBase]"] - - [mongodb.BulkOperationBaseStatic, mongoose.mongodb.BulkOperationBaseStatic, ""] - - [mongodb.BulkWriteOptions, mongodb.BulkOperationBase, "Member[execute].WithArity[0,1,2].Argument[0]"] - - [mongodb.BulkWriteOptions, mongodb.Collection, "Member[bulkWrite,insert,insertMany].Argument[1]"] - - [mongodb.BulkWriteOptions, mongodb.Collection, "Member[initializeOrderedBulkOp,initializeUnorderedBulkOp].Argument[0]"] - - [mongodb.BulkWriteOptions, mongodb.OrderedBulkOperationStatic, "Argument[1]"] - - [mongodb.BulkWriteOptions, mongodb.UnorderedBulkOperationStatic, "Argument[1]"] - - [mongodb.BulkWriteOptions, "mongodb/mongodb.BulkWriteOptions", ""] - - [mongodb.BulkWriteOptions, mongoose.mongodb.BulkWriteOptions, ""] - - [mongodb.ChangeStream, mongodb.ChangeStreamStatic, Instance] - - [mongodb.ChangeStream, mongodb.Collection, "Member[watch].ReturnValue"] - - [mongodb.ChangeStream, mongodb.Db, "Member[watch].ReturnValue"] - - [mongodb.ChangeStream, mongodb.MongoClient, "Member[watch].ReturnValue"] - - [mongodb.ChangeStream, "mongodb/mongodb.ChangeStream", ""] - - [mongodb.ChangeStream, mongoose.mongodb.ChangeStream, ""] - - [mongodb.ChangeStreamOptions, mongodb.ChangeStream, "Member[options]"] - - [mongodb.ChangeStreamOptions, mongodb.Collection, "Member[watch].Argument[1]"] - - [mongodb.ChangeStreamOptions, mongodb.Db, "Member[watch].Argument[1]"] - - [mongodb.ChangeStreamOptions, mongodb.MongoClient, "Member[watch].Argument[1]"] - - [mongodb.ChangeStreamOptions, "mongodb/mongodb.ChangeStreamOptions", ""] - - [mongodb.ChangeStreamOptions, mongoose.mongodb.ChangeStreamOptions, ""] - - [mongodb.ChangeStreamStatic, "mongodb/mongodb.ChangeStreamStatic", ""] - - [mongodb.ChangeStreamStatic, mongodb, "Member[ChangeStream]"] - - [mongodb.ChangeStreamStatic, mongoose.mongodb.ChangeStreamStatic, ""] - - [mongodb.ClientSession, mongodb.AbstractCursorOptions, "Member[session]"] - - [mongodb.ClientSession, mongodb.ClientSession, "Member[equals].Argument[0]"] - - [mongodb.ClientSession, mongodb.ClientSessionEvents, "Member[ended].Argument[0]"] - - [mongodb.ClientSession, mongodb.ClientSessionStatic, Instance] - - [mongodb.ClientSession, mongodb.IndexInformationOptions, "Member[session]"] - - [mongodb.ClientSession, mongodb.MongoClient, "Member[startSession].ReturnValue"] - - [mongodb.ClientSession, mongodb.OperationOptions, "Member[session]"] - - [mongodb.ClientSession, mongodb.ReadPreferenceFromOptions, "Member[session]"] - - [mongodb.ClientSession, mongodb.SelectServerOptions, "Member[session]"] - - [mongodb.ClientSession, mongodb.WithSessionCallback, "Argument[0]"] - - [mongodb.ClientSession, mongodb.WithTransactionCallback, "Argument[0]"] - - [mongodb.ClientSession, "mongodb/mongodb.ClientSession", ""] - - [mongodb.ClientSession, mongoose.mongodb.ClientSession, ""] - - [mongodb.ClientSessionEvents, "mongodb/mongodb.ClientSessionEvents", ""] - - [mongodb.ClientSessionEvents, mongoose.mongodb.ClientSessionEvents, ""] - - [mongodb.ClientSessionOptions, mongodb.MongoClient, "Member[startSession].Argument[0]"] - - [mongodb.ClientSessionOptions, mongodb.MongoClient, "Member[withSession].WithArity[2].Argument[0]"] - - [mongodb.ClientSessionOptions, "mongodb/mongodb.ClientSessionOptions", ""] - - [mongodb.ClientSessionOptions, mongoose.mongodb.ClientSessionOptions, ""] - - [mongodb.ClientSessionStatic, "mongodb/mongodb.ClientSessionStatic", ""] - - [mongodb.ClientSessionStatic, mongodb, "Member[ClientSession]"] - - [mongodb.ClientSessionStatic, mongoose.mongodb.ClientSessionStatic, ""] - - [mongodb.CollStatsOptions, mongodb.Collection, "Member[stats].Argument[0]"] - - [mongodb.CollStatsOptions, "mongodb/mongodb.CollStatsOptions", ""] - - [mongodb.CollStatsOptions, mongoose.mongodb.CollStatsOptions, ""] - - [mongodb.Collection, mongodb.ChangeStream, "Member[parent]"] - - [mongodb.Collection, mongodb.Collection, "Member[rename].Argument[1,2].TypeVar[mongodb.Callback.0]"] - - [mongodb.Collection, mongodb.Collection, "Member[rename].WithArity[1,2].ReturnValue.Awaited"] - - [mongodb.Collection, mongodb.CollectionStatic, Instance] - - [mongodb.Collection, mongodb.Db, "Member[collection].ReturnValue"] - - [mongodb.Collection, mongodb.Db, "Member[collections].Argument[0,1].TypeVar[mongodb.Callback.0].ArrayElement"] - - [mongodb.Collection, mongodb.Db, "Member[collections].WithArity[0,1].ReturnValue.Awaited.ArrayElement"] - - [mongodb.Collection, mongodb.Db, "Member[createCollection].Argument[2].TypeVar[mongodb.Callback.0]"] - - [mongodb.Collection, mongodb.Db, "Member[createCollection].WithArity[1,2].ReturnValue.Awaited"] - - [mongodb.Collection, mongodb.Db, "Member[createCollection].WithArity[2].Argument[1].TypeVar[mongodb.Callback.0]"] - - [mongodb.Collection, mongodb.Db, "Member[renameCollection].Argument[2,3].TypeVar[mongodb.Callback.0]"] - - [mongodb.Collection, mongodb.Db, "Member[renameCollection].WithArity[2,3].ReturnValue.Awaited"] - - [mongodb.Collection, mongodb.GridFSBucketWriteStream, "Member[chunks,files]"] - - [mongodb.Collection, mongodb.ListIndexesCursor, "Member[parent]"] - - [mongodb.Collection, mongodb.ListIndexesCursorStatic, "Argument[0]"] - - [mongodb.Collection, mongodb.OrderedBulkOperationStatic, "Argument[0]"] - - [mongodb.Collection, mongodb.UnorderedBulkOperationStatic, "Argument[0]"] - - [mongodb.Collection, "mongodb/mongodb.Collection", ""] - - [mongodb.Collection, mongoose.mongodb.Collection, ""] - - [mongodb.CollectionStatic, "mongodb/mongodb.CollectionStatic", ""] - - [mongodb.CollectionStatic, mongodb, "Member[Collection]"] - - [mongodb.CollectionStatic, mongoose.mongodb.CollectionStatic, ""] - - [mongodb.CommandOperationOptions, mongodb.AddUserOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.Admin, "Member[buildInfo,ping,replSetGetStatus,serverInfo,serverStatus].Argument[0]"] - - [mongodb.CommandOperationOptions, mongodb.AggregateOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.BulkWriteOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.CollStatsOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.CountOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.CreateCollectionOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.CreateIndexesOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.DbStatsOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.DeleteOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.DistinctOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.DropCollectionOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.DropDatabaseOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.DropIndexesOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.EstimatedDocumentCountOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.EvalOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.FindOneAndDeleteOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.FindOneAndReplaceOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.FindOneAndUpdateOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.FindOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.InsertOneOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.ListCollectionsOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.ListDatabasesOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.ListIndexesOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.MapReduceOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.ProfilingLevelOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.RemoveUserOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.RenameOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.ReplaceOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.RunCommandOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.SetProfilingLevelOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.TransactionOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.UpdateOptions, ""] - - [mongodb.CommandOperationOptions, mongodb.ValidateCollectionOptions, ""] - - [mongodb.CommandOperationOptions, "mongodb/mongodb.CommandOperationOptions", ""] - - [mongodb.CommandOperationOptions, mongoose.mongodb.CommandOperationOptions, ""] - - [mongodb.ConnectionOptions, "mongodb/mongodb.ConnectionOptions", ""] - - [mongodb.ConnectionOptions, mongoose.mongodb.ConnectionOptions, ""] - - [mongodb.CountDocumentsOptions, mongodb.Collection, "Member[countDocuments].Argument[1]"] - - [mongodb.CountDocumentsOptions, "mongodb/mongodb.CountDocumentsOptions", ""] - - [mongodb.CountDocumentsOptions, mongoose.mongodb.CountDocumentsOptions, ""] - - [mongodb.CountOptions, mongodb.Collection, "Member[count].Argument[1]"] - - [mongodb.CountOptions, mongodb.FindCursor, "Member[count].Argument[0]"] - - [mongodb.CountOptions, "mongodb/mongodb.CountOptions", ""] - - [mongodb.CountOptions, mongoose.mongodb.CountOptions, ""] - - [mongodb.CreateCollectionOptions, mongodb.Db, "Member[createCollection].WithArity[1,2,3].Argument[1]"] - - [mongodb.CreateCollectionOptions, "mongodb/mongodb.CreateCollectionOptions", ""] - - [mongodb.CreateCollectionOptions, mongoose.mongodb.CreateCollectionOptions, ""] - - [mongodb.CreateIndexesOptions, mongodb.Collection, "Member[createIndex,createIndexes].Argument[1]"] - - [mongodb.CreateIndexesOptions, mongodb.Db, "Member[createIndex].Argument[2]"] - - [mongodb.CreateIndexesOptions, "mongodb/mongodb.CreateIndexesOptions", ""] - - [mongodb.CreateIndexesOptions, mongoose.mongodb.CreateIndexesOptions, ""] - - [mongodb.Db, mongodb.ChangeStream, "Member[parent]"] - - [mongodb.Db, mongodb.DbStatic, Instance] - - [mongodb.Db, mongodb.GridFSBucketStatic, "Argument[0]"] - - [mongodb.Db, mongodb.ListCollectionsCursor, "Member[parent]"] - - [mongodb.Db, mongodb.ListCollectionsCursorStatic, "Argument[0]"] - - [mongodb.Db, mongodb.MongoClient, "Member[db].ReturnValue"] - - [mongodb.Db, "mongodb/mongodb.Db", ""] - - [mongodb.Db, mongoose.mongodb.Db, ""] - - [mongodb.DbStatic, "mongodb/mongodb.DbStatic", ""] - - [mongodb.DbStatic, mongodb, "Member[Db]"] - - [mongodb.DbStatic, mongoose.mongodb.DbStatic, ""] - - [mongodb.DbStatsOptions, mongodb.Db, "Member[stats].Argument[0]"] - - [mongodb.DbStatsOptions, "mongodb/mongodb.DbStatsOptions", ""] - - [mongodb.DbStatsOptions, mongoose.mongodb.DbStatsOptions, ""] - - [mongodb.DeleteManyModel, mongodb.AnyBulkWriteOperation, "Member[deleteMany]"] - - [mongodb.DeleteManyModel, "mongodb/mongodb.DeleteManyModel", ""] - - [mongodb.DeleteManyModel, mongoose.mongodb.DeleteManyModel, ""] - - [mongodb.DeleteOneModel, mongodb.AnyBulkWriteOperation, "Member[deleteOne]"] - - [mongodb.DeleteOneModel, "mongodb/mongodb.DeleteOneModel", ""] - - [mongodb.DeleteOneModel, mongoose.mongodb.DeleteOneModel, ""] - - [mongodb.DeleteOptions, mongodb.Collection, "Member[deleteMany,deleteOne,remove].Argument[1]"] - - [mongodb.DeleteOptions, "mongodb/mongodb.DeleteOptions", ""] - - [mongodb.DeleteOptions, mongoose.mongodb.DeleteOptions, ""] - - [mongodb.DistinctOptions, mongodb.Collection, "Member[distinct].Argument[2]"] - - [mongodb.DistinctOptions, "mongodb/mongodb.DistinctOptions", ""] - - [mongodb.DistinctOptions, mongoose.mongodb.DistinctOptions, ""] - - [mongodb.DropCollectionOptions, mongodb.Collection, "Member[drop].Argument[0]"] - - [mongodb.DropCollectionOptions, mongodb.Db, "Member[dropCollection].Argument[1]"] - - [mongodb.DropCollectionOptions, "mongodb/mongodb.DropCollectionOptions", ""] - - [mongodb.DropCollectionOptions, mongoose.mongodb.DropCollectionOptions, ""] - - [mongodb.DropDatabaseOptions, mongodb.Db, "Member[dropDatabase].Argument[0]"] - - [mongodb.DropDatabaseOptions, "mongodb/mongodb.DropDatabaseOptions", ""] - - [mongodb.DropDatabaseOptions, mongoose.mongodb.DropDatabaseOptions, ""] - - [mongodb.DropIndexesOptions, mongodb.Collection, "Member[dropIndex].Argument[1]"] - - [mongodb.DropIndexesOptions, mongodb.Collection, "Member[dropIndexes].Argument[0]"] - - [mongodb.DropIndexesOptions, "mongodb/mongodb.DropIndexesOptions", ""] - - [mongodb.DropIndexesOptions, mongoose.mongodb.DropIndexesOptions, ""] - - [mongodb.EstimatedDocumentCountOptions, mongodb.Collection, "Member[estimatedDocumentCount].Argument[0]"] - - [mongodb.EstimatedDocumentCountOptions, "mongodb/mongodb.EstimatedDocumentCountOptions", ""] - - [mongodb.EstimatedDocumentCountOptions, mongoose.mongodb.EstimatedDocumentCountOptions, ""] - - [mongodb.EvalOptions, "mongodb/mongodb.EvalOptions", ""] - - [mongodb.EvalOptions, mongoose.mongodb.EvalOptions, ""] - - [mongodb.FindCursor, mongodb.Collection, "Member[find].WithArity[0,1,2].ReturnValue"] - - [mongodb.FindCursor, mongodb.FindCursor, "Member[addQueryModifier,allowDiskUse,clone,collation,comment,filter,hint,limit,map,max,maxAwaitTimeMS,maxTimeMS,min,project,returnKey,showRecordId,skip,sort].ReturnValue"] - - [mongodb.FindCursor, mongodb.FindCursorStatic, Instance] - - [mongodb.FindCursor, mongodb.GridFSBucket, "Member[find].ReturnValue"] - - [mongodb.FindCursor, "mongodb/mongodb.FindCursor", ""] - - [mongodb.FindCursor, mongoose.mongodb.FindCursor, ""] - - [mongodb.FindCursorStatic, "mongodb/mongodb.FindCursorStatic", ""] - - [mongodb.FindCursorStatic, mongodb, "Member[FindCursor]"] - - [mongodb.FindCursorStatic, mongoose.mongodb.FindCursorStatic, ""] - - [mongodb.FindOneAndDeleteOptions, mongodb.Collection, "Member[findOneAndDelete].Argument[1]"] - - [mongodb.FindOneAndDeleteOptions, "mongodb/mongodb.FindOneAndDeleteOptions", ""] - - [mongodb.FindOneAndDeleteOptions, mongoose.mongodb.FindOneAndDeleteOptions, ""] - - [mongodb.FindOneAndReplaceOptions, mongodb.Collection, "Member[findOneAndReplace].Argument[2]"] - - [mongodb.FindOneAndReplaceOptions, "mongodb/mongodb.FindOneAndReplaceOptions", ""] - - [mongodb.FindOneAndReplaceOptions, mongoose.mongodb.FindOneAndReplaceOptions, ""] - - [mongodb.FindOneAndUpdateOptions, mongodb.Collection, "Member[findOneAndUpdate].Argument[2]"] - - [mongodb.FindOneAndUpdateOptions, "mongodb/mongodb.FindOneAndUpdateOptions", ""] - - [mongodb.FindOneAndUpdateOptions, mongoose.mongodb.FindOneAndUpdateOptions, ""] - - [mongodb.FindOperators, mongodb.BulkOperationBase, "Member[find].ReturnValue"] - - [mongodb.FindOperators, mongodb.FindOperators, "Member[arrayFilters,collation,upsert].ReturnValue"] - - [mongodb.FindOperators, mongodb.FindOperatorsStatic, Instance] - - [mongodb.FindOperators, "mongodb/mongodb.FindOperators", ""] - - [mongodb.FindOperators, mongoose.mongodb.FindOperators, ""] - - [mongodb.FindOperatorsStatic, "mongodb/mongodb.FindOperatorsStatic", ""] - - [mongodb.FindOperatorsStatic, mongodb, "Member[FindOperators]"] - - [mongodb.FindOperatorsStatic, mongoose.mongodb.FindOperatorsStatic, ""] - - [mongodb.FindOptions, mongodb.Collection, "Member[find,findOne].Argument[1]"] - - [mongodb.FindOptions, mongodb.GridFSBucket, "Member[find].Argument[1]"] - - [mongodb.FindOptions, "mongodb/mongodb.FindOptions", ""] - - [mongodb.FindOptions, mongoose.mongodb.FindOptions, ""] - - [mongodb.GridFSBucket, mongodb.GridFSBucketStatic, Instance] - - [mongodb.GridFSBucket, mongodb.GridFSBucketWriteStream, "Member[bucket]"] - - [mongodb.GridFSBucket, "mongodb/mongodb.GridFSBucket", ""] - - [mongodb.GridFSBucket, mongoose.mongodb.GridFSBucket, ""] - - [mongodb.GridFSBucketStatic, "mongodb/mongodb.GridFSBucketStatic", ""] - - [mongodb.GridFSBucketStatic, mongodb, "Member[GridFSBucket]"] - - [mongodb.GridFSBucketStatic, mongoose.mongodb.GridFSBucketStatic, ""] - - [mongodb.GridFSBucketWriteStream, mongodb.GridFSBucket, "Member[openUploadStream,openUploadStreamWithId].ReturnValue"] - - [mongodb.GridFSBucketWriteStream, mongodb.GridFSBucketWriteStream, "Member[end].ReturnValue"] - - [mongodb.GridFSBucketWriteStream, mongodb.GridFSBucketWriteStreamStatic, Instance] - - [mongodb.GridFSBucketWriteStream, "mongodb/mongodb.GridFSBucketWriteStream", ""] - - [mongodb.GridFSBucketWriteStream, mongoose.mongodb.GridFSBucketWriteStream, ""] - - [mongodb.GridFSBucketWriteStreamStatic, "mongodb/mongodb.GridFSBucketWriteStreamStatic", ""] - - [mongodb.GridFSBucketWriteStreamStatic, mongodb, "Member[GridFSBucketWriteStream]"] - - [mongodb.GridFSBucketWriteStreamStatic, mongoose.mongodb.GridFSBucketWriteStreamStatic, ""] - - [mongodb.IndexInformationOptions, mongodb.Collection, "Member[indexExists].Argument[1]"] - - [mongodb.IndexInformationOptions, mongodb.Collection, "Member[indexInformation,indexes].Argument[0]"] - - [mongodb.IndexInformationOptions, mongodb.Db, "Member[indexInformation].Argument[1]"] - - [mongodb.IndexInformationOptions, "mongodb/mongodb.IndexInformationOptions", ""] - - [mongodb.IndexInformationOptions, mongoose.mongodb.IndexInformationOptions, ""] - - [mongodb.InsertOneOptions, mongodb.Collection, "Member[insertOne].Argument[1]"] - - [mongodb.InsertOneOptions, "mongodb/mongodb.InsertOneOptions", ""] - - [mongodb.InsertOneOptions, mongoose.mongodb.InsertOneOptions, ""] - - [mongodb.ListCollectionsCursor, mongodb.Db, "Member[listCollections].WithArity[0,1,2].ReturnValue"] - - [mongodb.ListCollectionsCursor, mongodb.ListCollectionsCursor, "Member[clone].ReturnValue"] - - [mongodb.ListCollectionsCursor, mongodb.ListCollectionsCursorStatic, Instance] - - [mongodb.ListCollectionsCursor, "mongodb/mongodb.ListCollectionsCursor", ""] - - [mongodb.ListCollectionsCursor, mongoose.mongodb.ListCollectionsCursor, ""] - - [mongodb.ListCollectionsCursorStatic, "mongodb/mongodb.ListCollectionsCursorStatic", ""] - - [mongodb.ListCollectionsCursorStatic, mongodb, "Member[ListCollectionsCursor]"] - - [mongodb.ListCollectionsCursorStatic, mongoose.mongodb.ListCollectionsCursorStatic, ""] - - [mongodb.ListCollectionsOptions, mongodb.Db, "Member[collections].Argument[0]"] - - [mongodb.ListCollectionsOptions, mongodb.Db, "Member[listCollections].WithArity[0,1,2].Argument[1]"] - - [mongodb.ListCollectionsOptions, mongodb.ListCollectionsCursor, "Member[options]"] - - [mongodb.ListCollectionsOptions, mongodb.ListCollectionsCursorStatic, "Argument[2]"] - - [mongodb.ListCollectionsOptions, "mongodb/mongodb.ListCollectionsOptions", ""] - - [mongodb.ListCollectionsOptions, mongoose.mongodb.ListCollectionsOptions, ""] - - [mongodb.ListDatabasesOptions, mongodb.Admin, "Member[listDatabases].Argument[0]"] - - [mongodb.ListDatabasesOptions, "mongodb/mongodb.ListDatabasesOptions", ""] - - [mongodb.ListDatabasesOptions, mongoose.mongodb.ListDatabasesOptions, ""] - - [mongodb.ListIndexesCursor, mongodb.Collection, "Member[listIndexes].ReturnValue"] - - [mongodb.ListIndexesCursor, mongodb.ListIndexesCursor, "Member[clone].ReturnValue"] - - [mongodb.ListIndexesCursor, mongodb.ListIndexesCursorStatic, Instance] - - [mongodb.ListIndexesCursor, "mongodb/mongodb.ListIndexesCursor", ""] - - [mongodb.ListIndexesCursor, mongoose.mongodb.ListIndexesCursor, ""] - - [mongodb.ListIndexesCursorStatic, "mongodb/mongodb.ListIndexesCursorStatic", ""] - - [mongodb.ListIndexesCursorStatic, mongodb, "Member[ListIndexesCursor]"] - - [mongodb.ListIndexesCursorStatic, mongoose.mongodb.ListIndexesCursorStatic, ""] - - [mongodb.ListIndexesOptions, mongodb.Collection, "Member[listIndexes].Argument[0]"] - - [mongodb.ListIndexesOptions, mongodb.ListIndexesCursor, "Member[options]"] - - [mongodb.ListIndexesOptions, mongodb.ListIndexesCursorStatic, "Argument[1]"] - - [mongodb.ListIndexesOptions, "mongodb/mongodb.ListIndexesOptions", ""] - - [mongodb.ListIndexesOptions, mongoose.mongodb.ListIndexesOptions, ""] - - [mongodb.MapReduceOptions, mongodb.Collection, "Member[mapReduce].Argument[2]"] - - [mongodb.MapReduceOptions, "mongodb/mongodb.MapReduceOptions", ""] - - [mongodb.MapReduceOptions, mongoose.mongodb.MapReduceOptions, ""] - - [mongodb.MongoClient, mongodb.AutoEncrypter, "Argument[0]"] - - [mongodb.MongoClient, mongodb.AutoEncryptionOptions, "Member[keyVaultClient]"] - - [mongodb.MongoClient, mongodb.ChangeStream, "Member[parent]"] - - [mongodb.MongoClient, mongodb.DbStatic, "Argument[0]"] - - [mongodb.MongoClient, mongodb.MongoClient, "Member[connect].Argument[0].TypeVar[mongodb.Callback.0]"] - - [mongodb.MongoClient, mongodb.MongoClient, "Member[connect].WithArity[0].ReturnValue.Awaited"] - - [mongodb.MongoClient, mongodb.MongoClientEvents, "Member[open].Argument[0]"] - - [mongodb.MongoClient, mongodb.MongoClientStatic, Instance] - - [mongodb.MongoClient, mongodb.MongoClientStatic, "Member[connect].Argument[1,2].TypeVar[mongodb.Callback.0]"] - - [mongodb.MongoClient, mongodb.MongoClientStatic, "Member[connect].WithArity[1,2].ReturnValue.Awaited"] - - [mongodb.MongoClient, "mongodb/mongodb.MongoClient", ""] - - [mongodb.MongoClient, mongoose.mongodb.MongoClient, ""] - - [mongodb.MongoClientEvents, "mongodb/mongodb.MongoClientEvents", ""] - - [mongodb.MongoClientEvents, mongoose.mongodb.MongoClientEvents, ""] - - [mongodb.MongoClientOptions, mongodb.MongoClientStatic, "Argument[1]"] - - [mongodb.MongoClientOptions, mongodb.MongoClientStatic, "Member[connect].Argument[1]"] - - [mongodb.MongoClientOptions, "mongodb/mongodb.MongoClientOptions", ""] - - [mongodb.MongoClientOptions, mongoose.mongodb.MongoClientOptions, ""] - - [mongodb.MongoClientStatic, "mongodb/mongodb.MongoClientStatic", ""] - - [mongodb.MongoClientStatic, mongodb, "Member[MongoClient]"] - - [mongodb.MongoClientStatic, mongoose.mongodb.MongoClientStatic, ""] - - [mongodb.MongoOptions, mongodb.ClientSession, "Member[clientOptions]"] - - [mongodb.MongoOptions, mongodb.MongoClient, "Member[options]"] - - [mongodb.MongoOptions, "mongodb/mongodb.MongoOptions", ""] - - [mongodb.MongoOptions, mongoose.mongodb.MongoOptions, ""] - - [mongodb.OperationOptions, mongodb.Collection, "Member[isCapped,options].Argument[0]"] - - [mongodb.OperationOptions, mongodb.CommandOperationOptions, ""] - - [mongodb.OperationOptions, "mongodb/mongodb.OperationOptions", ""] - - [mongodb.OperationOptions, mongoose.mongodb.OperationOptions, ""] - - [mongodb.OrderedBulkOperation, mongodb.Collection, "Member[initializeOrderedBulkOp].ReturnValue"] - - [mongodb.OrderedBulkOperation, mongodb.OrderedBulkOperation, "Member[addToOperationsList].ReturnValue"] - - [mongodb.OrderedBulkOperation, mongodb.OrderedBulkOperationStatic, Instance] - - [mongodb.OrderedBulkOperation, "mongodb/mongodb.OrderedBulkOperation", ""] - - [mongodb.OrderedBulkOperation, mongoose.mongodb.OrderedBulkOperation, ""] - - [mongodb.OrderedBulkOperationStatic, "mongodb/mongodb.OrderedBulkOperationStatic", ""] - - [mongodb.OrderedBulkOperationStatic, mongodb, "Member[OrderedBulkOperation]"] - - [mongodb.OrderedBulkOperationStatic, mongoose.mongodb.OrderedBulkOperationStatic, ""] - - [mongodb.ProfilingLevelOptions, mongodb.Db, "Member[profilingLevel].Argument[0]"] - - [mongodb.ProfilingLevelOptions, "mongodb/mongodb.ProfilingLevelOptions", ""] - - [mongodb.ProfilingLevelOptions, mongoose.mongodb.ProfilingLevelOptions, ""] - - [mongodb.ReadPreferenceFromOptions, mongodb.ReadPreferenceStatic, "Member[fromOptions].Argument[0]"] - - [mongodb.ReadPreferenceFromOptions, "mongodb/mongodb.ReadPreferenceFromOptions", ""] - - [mongodb.ReadPreferenceFromOptions, mongoose.mongodb.ReadPreferenceFromOptions, ""] - - [mongodb.ReadPreferenceStatic, "mongodb/mongodb.ReadPreferenceStatic", ""] - - [mongodb.ReadPreferenceStatic, mongodb, "Member[ReadPreference]"] - - [mongodb.ReadPreferenceStatic, mongoose.mongodb.ReadPreferenceStatic, ""] - - [mongodb.RemoveUserOptions, mongodb.Admin, "Member[removeUser].Argument[1]"] - - [mongodb.RemoveUserOptions, mongodb.Db, "Member[removeUser].Argument[1]"] - - [mongodb.RemoveUserOptions, "mongodb/mongodb.RemoveUserOptions", ""] - - [mongodb.RemoveUserOptions, mongoose.mongodb.RemoveUserOptions, ""] - - [mongodb.RenameOptions, mongodb.Collection, "Member[rename].Argument[1]"] - - [mongodb.RenameOptions, mongodb.Db, "Member[renameCollection].Argument[2]"] - - [mongodb.RenameOptions, "mongodb/mongodb.RenameOptions", ""] - - [mongodb.RenameOptions, mongoose.mongodb.RenameOptions, ""] - - [mongodb.ReplaceOptions, mongodb.Collection, "Member[replaceOne].Argument[2]"] - - [mongodb.ReplaceOptions, "mongodb/mongodb.ReplaceOptions", ""] - - [mongodb.ReplaceOptions, mongoose.mongodb.ReplaceOptions, ""] - - [mongodb.RunCommandOptions, mongodb.Admin, "Member[command].Argument[1]"] - - [mongodb.RunCommandOptions, mongodb.Db, "Member[command].Argument[1]"] - - [mongodb.RunCommandOptions, "mongodb/mongodb.RunCommandOptions", ""] - - [mongodb.RunCommandOptions, mongoose.mongodb.RunCommandOptions, ""] - - [mongodb.SelectServerOptions, "mongodb/mongodb.SelectServerOptions", ""] - - [mongodb.SelectServerOptions, mongoose.mongodb.SelectServerOptions, ""] - - [mongodb.SetProfilingLevelOptions, mongodb.Db, "Member[setProfilingLevel].Argument[1]"] - - [mongodb.SetProfilingLevelOptions, "mongodb/mongodb.SetProfilingLevelOptions", ""] - - [mongodb.SetProfilingLevelOptions, mongoose.mongodb.SetProfilingLevelOptions, ""] - - [mongodb.Transaction, mongodb.ClientSession, "Member[transaction]"] - - [mongodb.Transaction, mongodb.TransactionStatic, Instance] - - [mongodb.Transaction, "mongodb/mongodb.Transaction", ""] - - [mongodb.Transaction, mongoose.mongodb.Transaction, ""] - - [mongodb.TransactionOptions, mongodb.ClientSession, "Member[defaultTransactionOptions]"] - - [mongodb.TransactionOptions, mongodb.ClientSession, "Member[startTransaction].Argument[0]"] - - [mongodb.TransactionOptions, mongodb.ClientSession, "Member[withTransaction].Argument[1]"] - - [mongodb.TransactionOptions, mongodb.ClientSessionOptions, "Member[defaultTransactionOptions]"] - - [mongodb.TransactionOptions, mongodb.Transaction, "Member[options]"] - - [mongodb.TransactionOptions, "mongodb/mongodb.TransactionOptions", ""] - - [mongodb.TransactionOptions, mongoose.mongodb.TransactionOptions, ""] - - [mongodb.TransactionStatic, "mongodb/mongodb.TransactionStatic", ""] - - [mongodb.TransactionStatic, mongodb, "Member[Transaction]"] - - [mongodb.TransactionStatic, mongoose.mongodb.TransactionStatic, ""] - - [mongodb.TypedEventEmitter, mongodb.AbstractCursor, ""] - - [mongodb.TypedEventEmitter, mongodb.ChangeStream, ""] - - [mongodb.TypedEventEmitter, mongodb.ClientSession, ""] - - [mongodb.TypedEventEmitter, mongodb.GridFSBucket, ""] - - [mongodb.TypedEventEmitter, mongodb.MongoClient, ""] - - [mongodb.UnorderedBulkOperation, mongodb.Collection, "Member[initializeUnorderedBulkOp].ReturnValue"] - - [mongodb.UnorderedBulkOperation, mongodb.UnorderedBulkOperation, "Member[addToOperationsList].ReturnValue"] - - [mongodb.UnorderedBulkOperation, mongodb.UnorderedBulkOperationStatic, Instance] - - [mongodb.UnorderedBulkOperation, "mongodb/mongodb.UnorderedBulkOperation", ""] - - [mongodb.UnorderedBulkOperation, mongoose.mongodb.UnorderedBulkOperation, ""] - - [mongodb.UnorderedBulkOperationStatic, "mongodb/mongodb.UnorderedBulkOperationStatic", ""] - - [mongodb.UnorderedBulkOperationStatic, mongodb, "Member[UnorderedBulkOperation]"] - - [mongodb.UnorderedBulkOperationStatic, mongoose.mongodb.UnorderedBulkOperationStatic, ""] - - [mongodb.UpdateManyModel, mongodb.AnyBulkWriteOperation, "Member[updateMany]"] - - [mongodb.UpdateManyModel, "mongodb/mongodb.UpdateManyModel", ""] - - [mongodb.UpdateManyModel, mongoose.mongodb.UpdateManyModel, ""] - - [mongodb.UpdateOneModel, mongodb.AnyBulkWriteOperation, "Member[updateOne]"] - - [mongodb.UpdateOneModel, "mongodb/mongodb.UpdateOneModel", ""] - - [mongodb.UpdateOneModel, mongoose.mongodb.UpdateOneModel, ""] - - [mongodb.UpdateOptions, mongodb.Collection, "Member[update,updateMany,updateOne].Argument[2]"] - - [mongodb.UpdateOptions, "mongodb/mongodb.UpdateOptions", ""] - - [mongodb.UpdateOptions, mongoose.mongodb.UpdateOptions, ""] - - [mongodb.ValidateCollectionOptions, mongodb.Admin, "Member[validateCollection].Argument[1]"] - - [mongodb.ValidateCollectionOptions, "mongodb/mongodb.ValidateCollectionOptions", ""] - - [mongodb.ValidateCollectionOptions, mongoose.mongodb.ValidateCollectionOptions, ""] - - [mongodb.WithSessionCallback, mongodb.MongoClient, "Member[withSession].Argument[1]"] - - [mongodb.WithSessionCallback, mongodb.MongoClient, "Member[withSession].WithArity[1].Argument[0]"] - - [mongodb.WithSessionCallback, "mongodb/mongodb.WithSessionCallback", ""] - - [mongodb.WithSessionCallback, mongoose.mongodb.WithSessionCallback, ""] - - [mongodb.WithTransactionCallback, mongodb.ClientSession, "Member[withTransaction].Argument[0]"] - - [mongodb.WithTransactionCallback, "mongodb/mongodb.WithTransactionCallback", ""] - - [mongodb.WithTransactionCallback, mongoose.mongodb.WithTransactionCallback, ""] - - [mongodb, mongoose, "Member[mongodb]"] - - [mongoose.AcceptsDiscriminator, mongoose.Model, ""] - - [mongoose.AcceptsDiscriminator, mongoose.Schema.Types.Array, ""] - - [mongoose.AcceptsDiscriminator, mongoose.Schema.Types.DocumentArray, ""] - - [mongoose.AcceptsDiscriminator, mongoose.Schema.Types.Subdocument, ""] - - [mongoose.Aggregate, mongoose.Aggregate, "Member[addCursorFlag,addFields,allowDiskUse,append,collation,count,facet,graphLookup,group,hint,limit,lookup,match,model,near,option,project,read,readConcern,redact,replaceRoot,sample,search,session,skip,sort,sortByCount,unionWith,unwind].ReturnValue"] - - [mongoose.Aggregate, mongoose.AggregateStatic, Instance] - - [mongoose.Aggregate, mongoose.Model, "Member[aggregate].ReturnValue"] - - [mongoose.AggregateStatic, mongoose, "Member[Aggregate]"] - - [mongoose.Collection, mongoose.Collection, Instance] - - [mongoose.Collection, mongoose.Connection, "Member[collection].ReturnValue"] - - [mongoose.Collection, mongoose.Connection, "Member[collections].AnyMember"] - - [mongoose.Collection, mongoose.Document, "Member[collection]"] - - [mongoose.Collection, mongoose.Model, "Member[collection]"] - - [mongoose.Collection, mongoose, "Member[Collection]"] - - [mongoose.CollectionBase, mongoose.Collection, ""] - - [mongoose.CompileModelOptions, mongoose.Connection, "Member[model].Argument[3]"] - - [mongoose.CompileModelOptions, mongoose, "Member[model].Argument[3]"] - - [mongoose.ConnectOptions, mongoose.Connection, "Member[openUri].WithArity[1,2,3].Argument[1]"] - - [mongoose.ConnectOptions, mongoose, "Member[connect,createConnection].WithArity[1,2,3].Argument[1]"] - - [mongoose.Connection, mongoose.Collection, "Argument[1]"] - - [mongoose.Connection, mongoose.CollectionBase, "Member[conn]"] - - [mongoose.Connection, mongoose.CompileModelOptions, "Member[connection]"] - - [mongoose.Connection, mongoose.Connection, "Member[asPromise].ReturnValue.Awaited"] - - [mongoose.Connection, mongoose.Connection, "Member[deleteModel,plugin,setClient,useDb].ReturnValue"] - - [mongoose.Connection, mongoose.Connection, "Member[openUri].Argument[2].TypeVar[mongoose.Callback.0]"] - - [mongoose.Connection, mongoose.Connection, "Member[openUri].WithArity[1,2].ReturnValue.Awaited"] - - [mongoose.Connection, mongoose.Connection, "Member[openUri].WithArity[2,3].ReturnValue"] - - [mongoose.Connection, mongoose.Connection, "Member[openUri].WithArity[2].Argument[1].TypeVar[mongoose.Callback.0]"] - - [mongoose.Connection, mongoose.ConnectionStatic, Instance] - - [mongoose.Connection, mongoose.Document, "Member[db]"] - - [mongoose.Connection, mongoose.Model, "Member[db]"] - - [mongoose.Connection, mongoose, "Member[connection]"] - - [mongoose.Connection, mongoose, "Member[connections].ArrayElement"] - - [mongoose.Connection, mongoose, "Member[createConnection].Argument[2].TypeVar[mongoose.Callback.0]"] - - [mongoose.Connection, mongoose, "Member[createConnection].WithArity[0,1,2].ReturnValue"] - - [mongoose.Connection, mongoose, "Member[createConnection].WithArity[2].Argument[1].TypeVar[mongoose.Callback.0]"] - - [mongoose.ConnectionStatic, mongoose, "Member[Connection]"] - - [mongoose.Cursor, mongoose.Query, "Member[cursor].ReturnValue"] - - [mongoose.DiscriminatorModel, mongoose.DiscriminatorSchema, "TypeVar[mongoose.Schema.1]"] - - [mongoose.Document, mongoose.Document, "Member[$getAllSubdocs,$getPopulatedDocs].ReturnValue.ArrayElement"] - - [mongoose.Document, mongoose.Document, "Member[$inc,$parent,$set,depopulate,increment,init,overwrite,set].ReturnValue"] - - [mongoose.Document, mongoose.Document, "Member[delete,deleteOne].WithArity[0,1].ReturnValue.TypeVar[mongoose.QueryWithHelpers.1]"] - - [mongoose.Document, mongoose.Document, "Member[equals].Argument[0]"] - - [mongoose.Document, mongoose.Document, "Member[init].Argument[2].TypeVar[mongoose.Callback.0]"] - - [mongoose.Document, mongoose.Document, "Member[remove,save].WithArity[0,1].ReturnValue.Awaited"] - - [mongoose.Document, mongoose.Document, "Member[replaceOne,update,updateOne].ReturnValue.TypeVar[mongoose.Query.1]"] - - [mongoose.Document, mongoose.Document, "Member[save].Argument[1].TypeVar[mongoose.Callback.0]"] - - [mongoose.Document, mongoose.Document, "Member[save].WithArity[1].Argument[0].TypeVar[mongoose.Callback.0]"] - - [mongoose.Document, mongoose.DocumentStatic, Instance] - - [mongoose.Document, mongoose.Error.VersionErrorStatic, "Argument[0]"] - - [mongoose.Document, mongoose.HydratedDocument, ""] - - [mongoose.Document, mongoose.HydratedDocument, "TypeVar[mongoose.Require_id.0]"] - - [mongoose.Document, mongoose.Model, "Member[bulkSave].Argument[0].ArrayElement"] - - [mongoose.Document, mongoose.TVirtualPathFN, "Argument[2]"] - - [mongoose.Document, mongoose.Types.Subdocument, ""] - - [mongoose.Document, mongoose.Types.Subdocument, "Member[$parent,ownerDocument,parent].ReturnValue"] - - [mongoose.Document, mongoose.VirtualType, "Member[applyGetters,applySetters].Argument[1]"] - - [mongoose.DocumentStatic, mongoose, "Member[Document]"] - - [mongoose.Error.VersionErrorStatic, mongoose, "Member[Error].Member[VersionError]"] - - [mongoose.HydratedDocument, mongoose.Model, Instance] - - [mongoose.HydratedDocument, mongoose.Model, "Member[$where,count,countDocuments,deleteMany,deleteOne,distinct,estimatedDocumentCount,find,geoSearch,remove,replaceOne,update,updateMany,updateOne,where].ReturnValue.TypeVar[mongoose.QueryWithHelpers.1]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[$where,find,geoSearch,where].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0].ArrayElement"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[create,insertMany].WithArity[2].Argument[1].TypeVar[mongoose.Callback.0].ArrayElement"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[create].WithArity[0..,1,2].ReturnValue.Awaited.ArrayElement"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[create].WithArity[1].ReturnValue.Awaited"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[create].WithArity[2].Argument[1].TypeVar[mongoose.Callback.0]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[exists].WithArity[1,2].ReturnValue.TypeVar[mongoose.QueryWithHelpers.1]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[find,insertMany].WithArity[3].Argument[2].TypeVar[mongoose.Callback.0].ArrayElement"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[findById,findByIdAndDelete,findByIdAndRemove,findOne,findOneAndDelete,findOneAndRemove].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0,mongoose.QueryWithHelpers.1]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[findById,findOne].Argument[3].TypeVar[mongoose.Callback.0]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[findByIdAndDelete,findByIdAndRemove,findOneAndDelete,findOneAndRemove].Argument[2].Argument[1]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[findByIdAndUpdate,findOneAndReplace,findOneAndUpdate].WithArity[0,1,2,3,4].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0,mongoose.QueryWithHelpers.1]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[findByIdAndUpdate,findOneAndReplace,findOneAndUpdate].WithArity[3,4].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0].TypeVar[mongoose.ModifyResult.0]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[findByIdAndUpdate].WithArity[0,1,2,4].Argument[3].Argument[1]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[findByIdAndUpdate].WithArity[3].Argument[2,3].Argument[1]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[findById].WithArity[1,2,3].Argument[2].TypeVar[mongoose.Callback.0]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[findOneAndReplace].WithArity[0,1,2,3,4].Argument[3].Argument[1]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[findOneAndUpdate].WithArity[3,4].Argument[3].Argument[1]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[findOne].WithArity[0,1,2].Argument[1,2].TypeVar[mongoose.Callback.0]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[findOne].WithArity[3].Argument[2].TypeVar[mongoose.Callback.0]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[find].Argument[3].TypeVar[mongoose.Callback.0].ArrayElement"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[find].WithArity[0].Argument[0].TypeVar[mongoose.Callback.0].ArrayElement"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[find].WithArity[1].Argument[0,1,2].TypeVar[mongoose.Callback.0].ArrayElement"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[find].WithArity[2].Argument[1,2].TypeVar[mongoose.Callback.0].ArrayElement"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[geoSearch].Argument[2].TypeVar[mongoose.Callback.0].ArrayElement"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[hydrate].ReturnValue"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[init].ReturnValue.Awaited"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[insertMany].WithArity[1,2].ReturnValue.Awaited.ArrayElement"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[populate].WithArity[2,3].Argument[2].TypeVar[mongoose.Callback.0]"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[populate].WithArity[2,3].Argument[2].TypeVar[mongoose.Callback.0].ArrayElement"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[populate].WithArity[2,3].ReturnValue.Awaited"] - - [mongoose.HydratedDocument, mongoose.Model, "Member[populate].WithArity[2,3].ReturnValue.Awaited.ArrayElement"] - - [mongoose.HydratedDocument, mongoose.TVirtualPathFN, "Argument[1].TypeVar[mongoose.VirtualType.0]"] - - [mongoose.HydratedDocument, mongoose.VirtualPathFunctions, "Member[options].TypeVar[mongoose.VirtualTypeOptions.0]"] - - [mongoose.InsertManyOptions, mongoose.Model, "Member[insertMany].WithArity[2,3].Argument[1]"] - - [mongoose.Model, mongoose.AcceptsDiscriminator, "Member[discriminator].WithArity[2,3].ReturnValue"] - - [mongoose.Model, mongoose.Aggregate, "Member[model].Argument[0]"] - - [mongoose.Model, mongoose.Connection, "Member[model].WithArity[1,2,3,4].ReturnValue"] - - [mongoose.Model, mongoose.Connection, "Member[models].AnyMember"] - - [mongoose.Model, mongoose.DiscriminatorModel, ""] - - [mongoose.Model, mongoose.Document, "Member[$model].ReturnValue"] - - [mongoose.Model, mongoose.Document, "Member[populate].Argument[2]"] - - [mongoose.Model, mongoose.Model, "Member[discriminators].AnyMember"] - - [mongoose.Model, mongoose.Models, AnyMember] - - [mongoose.Model, mongoose.PopulateOptions, "Member[model]"] - - [mongoose.Model, mongoose.Query, "Member[cast].Argument[0]"] - - [mongoose.Model, mongoose.Query, "Member[populate].Argument[2]"] - - [mongoose.Model, mongoose.Schema.Types.Array, "Member[discriminator].WithArity[2,3].ReturnValue"] - - [mongoose.Model, mongoose.Schema.Types.DocumentArray, "Member[discriminator].WithArity[2,3].ReturnValue"] - - [mongoose.Model, mongoose.Schema.Types.Subdocument, "Member[discriminator].WithArity[2,3].ReturnValue"] - - [mongoose.Model, mongoose.SchemaStatic, "Instance.TypeVar[mongoose.Schema.1]"] - - [mongoose.Model, mongoose, "Member[Model]"] - - [mongoose.Model, mongoose, "Member[model].ReturnValue"] - - [mongoose.Models, mongoose, "Member[models]"] - - [mongoose.PopulateOption, mongoose.InsertManyOptions, ""] - - [mongoose.PopulateOption, mongoose.QueryOptions, ""] - - [mongoose.PopulateOptions, mongoose.Document, "Member[populate].Argument[4]"] - - [mongoose.PopulateOptions, mongoose.Document, "Member[populate].WithArity[1,2].Argument[0]"] - - [mongoose.PopulateOptions, mongoose.Document, "Member[populate].WithArity[1,2].Argument[0].ArrayElement"] - - [mongoose.PopulateOptions, mongoose.Model, "Member[populate].Argument[1]"] - - [mongoose.PopulateOptions, mongoose.Model, "Member[populate].Argument[1].ArrayElement"] - - [mongoose.PopulateOptions, mongoose.PopulateOption, "Member[populate]"] - - [mongoose.PopulateOptions, mongoose.PopulateOption, "Member[populate].ArrayElement"] - - [mongoose.PopulateOptions, mongoose.PopulateOptions, "Member[populate]"] - - [mongoose.PopulateOptions, mongoose.PopulateOptions, "Member[populate].ArrayElement"] - - [mongoose.PopulateOptions, mongoose.Query, "Member[populate].WithArity[1].Argument[0]"] - - [mongoose.PopulateOptions, mongoose.Query, "Member[populate].WithArity[1].Argument[0].ArrayElement"] - - [mongoose.Query, mongoose.Document, "Member[replaceOne,update,updateOne].ReturnValue"] - - [mongoose.Query, mongoose.HydratedDocument, "TypeVar[mongoose.Require_id.0]"] - - [mongoose.Query, mongoose.Query, "Member[all,allowDiskUse,and,batchSize,box,circle,clone,collation,comment,elemMatch,equals,exists,explain,geometry,gt,gte,hint,in,intersects,j,limit,lt,lte,maxDistance,maxScan,maxTimeMS,merge,mod,ne,near,nin,nor,or,polygon,read,readConcern,regex,remove,select,session,set,setOptions,size,skip,slice,snapshot,sort,tailable,w,where,within,wtimeout].ReturnValue"] - - [mongoose.Query, mongoose.Query, "Member[error].WithArity[1].ReturnValue"] - - [mongoose.Query, mongoose.Query, "Member[merge].Argument[0]"] - - [mongoose.Query, mongoose.QueryStatic, Instance] - - [mongoose.Query, mongoose.QueryWithHelpers, ""] - - [mongoose.QueryOptions, mongoose.Document, "Member[delete,deleteOne,remove].WithArity[0,1,2].Argument[0]"] - - [mongoose.QueryOptions, mongoose.Document, "Member[replaceOne,update,updateOne].Argument[1]"] - - [mongoose.QueryOptions, mongoose.Model, "Member[countDocuments,findByIdAndDelete,findByIdAndRemove,findOneAndDelete,findOneAndRemove].Argument[1]"] - - [mongoose.QueryOptions, mongoose.Model, "Member[deleteMany,deleteOne].WithArity[0,1,2,3].Argument[1]"] - - [mongoose.QueryOptions, mongoose.Model, "Member[estimatedDocumentCount].Argument[0]"] - - [mongoose.QueryOptions, mongoose.Model, "Member[find,findById].WithArity[1,2,3,4].Argument[2]"] - - [mongoose.QueryOptions, mongoose.Model, "Member[findByIdAndUpdate,findOne,findOneAndReplace,findOneAndUpdate].WithArity[0,1,2,3,4].Argument[2]"] - - [mongoose.QueryOptions, mongoose.Model, "Member[replaceOne,update,updateMany,updateOne].Argument[2]"] - - [mongoose.QueryOptions, mongoose.PopulateOptions, "Member[options]"] - - [mongoose.QueryOptions, mongoose.Query, "Member[countDocuments,findByIdAndDelete,findOneAndDelete,findOneAndRemove].Argument[1]"] - - [mongoose.QueryOptions, mongoose.Query, "Member[cursor,estimatedDocumentCount,setOptions].Argument[0]"] - - [mongoose.QueryOptions, mongoose.Query, "Member[cursor].ReturnValue.TypeVar[mongoose.Cursor.1]"] - - [mongoose.QueryOptions, mongoose.Query, "Member[deleteMany,deleteOne].WithArity[0,1,2,3].Argument[1]"] - - [mongoose.QueryOptions, mongoose.Query, "Member[findByIdAndUpdate,findOne,findOneAndUpdate].WithArity[0,1,2,3,4].Argument[2]"] - - [mongoose.QueryOptions, mongoose.Query, "Member[find].WithArity[1,2,3,4].Argument[2]"] - - [mongoose.QueryOptions, mongoose.Query, "Member[getOptions].ReturnValue"] - - [mongoose.QueryOptions, mongoose.Query, "Member[replaceOne,update,updateMany,updateOne].Argument[2]"] - - [mongoose.QueryOptions, mongoose.VirtualTypeOptions, "Member[options]"] - - [mongoose.QueryStatic, mongoose, "Member[Query]"] - - [mongoose.QueryWithHelpers, mongoose.Document, "Member[delete,deleteOne].WithArity[0,1].ReturnValue"] - - [mongoose.QueryWithHelpers, mongoose.Model, "Member[$where,count,countDocuments,deleteMany,deleteOne,distinct,estimatedDocumentCount,find,findById,findByIdAndDelete,findByIdAndRemove,findOne,findOneAndDelete,findOneAndRemove,geoSearch,remove,replaceOne,update,updateMany,updateOne,where].ReturnValue"] - - [mongoose.QueryWithHelpers, mongoose.Model, "Member[exists].WithArity[1,2].ReturnValue"] - - [mongoose.QueryWithHelpers, mongoose.Model, "Member[findByIdAndUpdate,findOneAndReplace,findOneAndUpdate].WithArity[0,1,2,3,4].ReturnValue"] - - [mongoose.QueryWithHelpers, mongoose.Query, "Member[$where,count,countDocuments,deleteMany,deleteOne,distinct,estimatedDocumentCount,find,findByIdAndDelete,findOne,findOneAndDelete,findOneAndRemove,lean,orFail,populate,replaceOne,transform,update,updateMany,updateOne].ReturnValue"] - - [mongoose.QueryWithHelpers, mongoose.Query, "Member[findByIdAndUpdate,findOneAndUpdate].WithArity[0,1,2,3,4].ReturnValue"] - - [mongoose.QueryWithHelpers, mongoose.Query, "Member[toConstructor].ReturnValue.Instance"] - - [mongoose.Schema.Types.Array, mongoose.Schema.Types.Array, "Member[enum].ReturnValue"] - - [mongoose.Schema.Types.Array, mongoose.Schema.Types.ArrayStatic, Instance] - - [mongoose.Schema.Types.ArrayStatic, mongoose, "Member[Schema].Member[Types].Member[Array]"] - - [mongoose.Schema.Types.DocumentArray, mongoose.Schema.Types.DocumentArrayStatic, Instance] - - [mongoose.Schema.Types.DocumentArrayStatic, mongoose, "Member[Schema].Member[Types].Member[DocumentArray]"] - - [mongoose.Schema.Types.Subdocument, mongoose.Schema.Types.SubdocumentStatic, Instance] - - [mongoose.Schema.Types.SubdocumentStatic, mongoose.Schema.Types.DocumentArray, "Member[caster]"] - - [mongoose.Schema.Types.SubdocumentStatic, mongoose, "Member[Schema].Member[Types].Member[Subdocument]"] - - [mongoose.SchemaStatic, mongoose, "Member[Schema]"] - - [mongoose.SessionOperation, mongoose.Aggregate, ""] - - [mongoose.SessionOperation, mongoose.Query, ""] - - [mongoose.TVirtualPathFN, mongoose.VirtualPathFunctions, "Member[get,set]"] - - [mongoose.Types.Array, mongoose.Types.DocumentArray, ""] - - [mongoose.Types.ArraySubdocument, mongoose.Types.ArraySubdocumentStatic, Instance] - - [mongoose.Types.ArraySubdocumentStatic, mongoose, "Member[Types].Member[ArraySubdocument]"] - - [mongoose.Types.DocumentArray, mongoose.Types.ArraySubdocument, "Member[parentArray].ReturnValue"] - - [mongoose.Types.DocumentArray, mongoose.Types.DocumentArrayStatic, Instance] - - [mongoose.Types.DocumentArray, "mongoose/inferschematype.ResolvePathType", "TypeVar[mongoose.IfEquals.3]"] - - [mongoose.Types.DocumentArrayStatic, mongoose, "Member[Types].Member[DocumentArray]"] - - [mongoose.Types.ObjectId, "mongoose/inferschematype.ResolvePathType", ""] - - [mongoose.Types.Subdocument, mongoose.Types.ArraySubdocument, ""] - - [mongoose.Types.Subdocument, mongoose.Types.DocumentArray, "Member[create,id].ReturnValue"] - - [mongoose.Types.Subdocument, mongoose.Types.DocumentArray, "TypeVar[mongoose.Types.Array.0]"] - - [mongoose.Types.Subdocument, mongoose.Types.SubdocumentStatic, Instance] - - [mongoose.Types.SubdocumentStatic, mongoose, "Member[Types].Member[Subdocument]"] - - [mongoose.VirtualType, mongoose.TVirtualPathFN, "Argument[1]"] - - [mongoose.VirtualType, mongoose.VirtualType, "Member[get,set].Argument[0].Argument[1]"] - - [mongoose.VirtualType, mongoose.VirtualType, "Member[get,set].ReturnValue"] - - [mongoose.VirtualType, mongoose.VirtualTypeStatic, Instance] - - [mongoose.VirtualTypeOptions, mongoose.VirtualPathFunctions, "Member[options]"] - - [mongoose.VirtualTypeStatic, mongoose, "Member[VirtualType]"] - - ["mongoose/inferschematype.ResolvePathType", "mongoose/inferschematype.ObtainDocumentPathType", ""] - - ["mongoose/inferschematype.ResolvePathType", "mongoose/inferschematype.ResolvePathType", "TypeVar[mongoose.IfEquals.3].ArrayElement"] - - ["mongoose/inferschematype.ResolvePathType", "mongoose/inferschematype.ResolvePathType", "TypeVar[mongoose.IfEquals.3].TypeVar[mongoose.Types.DocumentArray.0]"] - - [mongoose, mongoose, "Member[mongoose]"] - - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - [mongodb.AbstractCursor, "", "", "Member[addCursorFlag,batchSize,maxTimeMS,withReadConcern,withReadPreference].ReturnValue", type] - - [mongodb.BulkOperationBase, "", "", "Member[addToOperationsList,raw].ReturnValue", type] - - [mongodb.FindCursor, "", "", "Member[addQueryModifier,allowDiskUse,collation,comment,filter,hint,limit,max,maxAwaitTimeMS,maxTimeMS,min,returnKey,showRecordId,skip,sort].ReturnValue", type] - - [mongodb.FindOperators, "", "", "Member[arrayFilters,collation,upsert].ReturnValue", type] - - [mongodb.GridFSBucketWriteStream, "", "", "Member[end].ReturnValue", type] - - [mongodb.MongoClient, "", "", "Member[connect].Argument[0].TypeVar[mongodb.Callback.0]", type] - - [mongodb.MongoClient, "", "", "Member[connect].WithArity[0].ReturnValue.Awaited", type] - - [mongodb.OrderedBulkOperation, "", "", "Member[addToOperationsList].ReturnValue", type] - - [mongodb.TypedEventEmitter, "", "", "Member[addListener,off,on,once,prependListener,prependOnceListener,removeAllListeners,removeListener,setMaxListeners].ReturnValue", type] - - [mongodb.UnorderedBulkOperation, "", "", "Member[addToOperationsList].ReturnValue", type] - - [mongoose.Aggregate, "", "", "Member[addCursorFlag,addFields,allowDiskUse,append,collation,count,facet,graphLookup,group,hint,limit,lookup,match,model,near,option,project,read,readConcern,redact,replaceRoot,sample,search,session,skip,sort,sortByCount,unionWith,unwind].ReturnValue", type] - - [mongoose.Connection, "", "", "Member[asPromise].ReturnValue.Awaited", type] - - [mongoose.Connection, "", "", "Member[deleteModel,setClient].ReturnValue", type] - - [mongoose.Cursor, "", "", "Member[addCursorFlag].ReturnValue", type] - - [mongoose.Document, "", "", "Member[$inc,$set,depopulate,increment,init,overwrite,set].ReturnValue", type] - - [mongoose.Document, "", "", "Member[delete,deleteOne].WithArity[0,1].ReturnValue.TypeVar[mongoose.QueryWithHelpers.1]", type] - - [mongoose.Document, "", "", "Member[getChanges].ReturnValue.TypeVar[mongoose.UpdateQuery.0]", type] - - [mongoose.Document, "", "", "Member[init].Argument[2].TypeVar[mongoose.Callback.0]", type] - - [mongoose.Document, "", "", "Member[populate].Argument[1,5].TypeVar[mongoose.Callback.0].TypeVar[mongoose.MergeType.0]", type] - - [mongoose.Document, "", "", "Member[populate].WithArity[1,2,3,4,5].ReturnValue.Awaited.TypeVar[mongoose.MergeType.0]", type] - - [mongoose.Document, "", "", "Member[remove,save].WithArity[0,1].ReturnValue.Awaited", type] - - [mongoose.Document, "", "", "Member[replaceOne,update,updateOne].ReturnValue.TypeVar[mongoose.Query.1]", type] - - [mongoose.Document, "", "", "Member[save].Argument[1].TypeVar[mongoose.Callback.0]", type] - - [mongoose.Document, "", "", "Member[save].WithArity[1].Argument[0].TypeVar[mongoose.Callback.0]", type] - - [mongoose.Document, "", "", "Member[update,updateOne].Argument[0].TypeVar[mongoose.UpdateQuery.0]", type] - - [mongoose.Query, "", "", "Member[all,allowDiskUse,and,batchSize,box,circle,clone,collation,comment,elemMatch,equals,exists,explain,geometry,gt,gte,hint,in,intersects,j,limit,lt,lte,maxDistance,maxScan,maxTimeMS,merge,mod,ne,near,nin,nor,or,polygon,read,readConcern,regex,select,session,set,setOptions,size,skip,slice,snapshot,sort,tailable,w,where,within,wtimeout].ReturnValue", type] - - [mongoose.Query, "", "", "Member[error].WithArity[1].ReturnValue", type] - - [mongoose.Schema.Types.Array, "", "", "Member[enum].ReturnValue", type] - - [mongoose.SessionOperation, "", "", "Member[session].ReturnValue", type] - - [mongoose.Types.Array, "", "", "Member[pull,remove,set].ReturnValue", type] - - [mongoose.Types.ObjectId, "", "", "Member[_id]", type] - - [mongoose.VirtualType, "", "", "Member[get,set].ReturnValue", type] - - - addsTo: - pack: codeql/javascript-all - extensible: typeVariableModel - data: - - [mongodb.Callback.0, "Argument[1]"] - - [mongoose.Callback.0, "Argument[1]"] - - [mongoose.Cursor.0, "Member[eachAsync].WithArity[1,2,3].Argument[0].Argument[0]"] - - [mongoose.Cursor.0, "Member[eachAsync].WithArity[2,3].Argument[0].Argument[0].ArrayElement"] - - [mongoose.Cursor.0, "Member[map].Argument[0].Argument[0]"] - - [mongoose.Cursor.0, "Member[next].Argument[0].TypeVar[mongoose.Callback.0]"] - - [mongoose.Cursor.0, "Member[next].WithArity[0].ReturnValue.Awaited"] - - [mongoose.Cursor.1, "Member[map].ReturnValue.TypeVar[mongoose.Cursor.1]"] - - [mongoose.Cursor.1, "Member[options]"] - - [mongoose.DiscriminatorSchema.1, "TypeVar[mongoose.Schema.1]"] - - [mongoose.DiscriminatorSchema.1, "TypeVar[mongoose.Schema.1].TypeVar[mongoose.DiscriminatorModel.1]"] - - [mongoose.Document.0, "Member[_id]"] - - [mongoose.Document.0, "Member[equals].Argument[0].TypeVar[mongoose.Document.0]"] - - [mongoose.FilterQuery.0, "TypeVar[mongoose._FilterQuery.0]"] - - [mongoose.IfAny.1, ""] - - [mongoose.IfAny.2, ""] - - [mongoose.IfEquals.3, ""] - - [mongoose.LeanDocumentOrArray.0, ""] - - [mongoose.LeanDocumentOrArray.0, "TypeVar[mongoose.LeanDocument.0]"] - - [mongoose.LeanDocumentOrArrayWithRawType.0, ""] - - [mongoose.ModifyResult.0, "Member[value].TypeVar[mongoose.Require_id.0]"] - - [mongoose.PluginFunction.1, "Argument[0].TypeVar[mongoose.Schema.1]"] - - [mongoose.PostMiddlewareFunction.1, "Argument[0]"] - - [mongoose.Query.0, "Member[exec].Argument[0].TypeVar[mongoose.Callback.0]"] - - [mongoose.Query.0, "Member[exec].WithArity[0].ReturnValue.Awaited"] - - [mongoose.Query.0, "Member[lean].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0].TypeVar[mongoose.LeanDocumentOrArray.0,mongoose.LeanDocumentOrArrayWithRawType.0]"] - - [mongoose.Query.0, "Member[orFail].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0]"] - - [mongoose.Query.0, "Member[populate].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0].TypeVar[mongoose.UnpackedIntersection.0]"] - - [mongoose.Query.0, "Member[then,transform].Argument[0].Argument[0]"] - - [mongoose.Query.0, "Member[toConstructor].ReturnValue.Instance.TypeVar[mongoose.QueryWithHelpers.0]"] - - [mongoose.Query.1, "Member[$where,count,countDocuments,deleteMany,deleteOne,distinct,estimatedDocumentCount,find,lean,orFail,populate,replaceOne,transform,update,updateMany,updateOne].ReturnValue.TypeVar[mongoose.QueryWithHelpers.1]"] - - [mongoose.Query.1, "Member[$where,find].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0].ArrayElement"] - - [mongoose.Query.1, "Member[_mongooseOptions].TypeVar[mongoose.MongooseQueryOptions.0]"] - - [mongoose.Query.1, "Member[and,nor,or].Argument[0].ArrayElement.TypeVar[mongoose.FilterQuery.0]"] - - [mongoose.Query.1, "Member[countDocuments,findByIdAndDelete,findOneAndDelete,findOneAndRemove].Argument[1].TypeVar[mongoose.QueryOptions.0]"] - - [mongoose.Query.1, "Member[countDocuments].WithArity[1,2,3].Argument[0].TypeVar[mongoose.FilterQuery.0]"] - - [mongoose.Query.1, "Member[count].WithArity[1,2].Argument[0].TypeVar[mongoose.FilterQuery.0]"] - - [mongoose.Query.1, "Member[cursor,estimatedDocumentCount,setOptions].Argument[0].TypeVar[mongoose.QueryOptions.0]"] - - [mongoose.Query.1, "Member[cursor].ReturnValue.TypeVar[mongoose.Cursor.0]"] - - [mongoose.Query.1, "Member[cursor].ReturnValue.TypeVar[mongoose.Cursor.1].TypeVar[mongoose.QueryOptions.0]"] - - [mongoose.Query.1, "Member[deleteMany,deleteOne].WithArity[0,1,2,3].Argument[0].TypeVar[mongoose.FilterQuery.0]"] - - [mongoose.Query.1, "Member[deleteMany,deleteOne].WithArity[0,1,2,3].Argument[1].TypeVar[mongoose.QueryOptions.0]"] - - [mongoose.Query.1, "Member[distinct].Argument[1].TypeVar[mongoose.FilterQuery.0]"] - - [mongoose.Query.1, "Member[findByIdAndDelete,findOne,findOneAndDelete,findOneAndRemove].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0,mongoose.QueryWithHelpers.1]"] - - [mongoose.Query.1, "Member[findByIdAndDelete,findOneAndDelete,findOneAndRemove].Argument[2].Argument[1]"] - - [mongoose.Query.1, "Member[findByIdAndUpdate,findOneAndUpdate,update,updateMany,updateOne].Argument[1].TypeVar[mongoose.UpdateQuery.0]"] - - [mongoose.Query.1, "Member[findByIdAndUpdate,findOneAndUpdate].WithArity[0,1,2,3,4].Argument[2].TypeVar[mongoose.QueryOptions.0]"] - - [mongoose.Query.1, "Member[findByIdAndUpdate,findOneAndUpdate].WithArity[0,1,2,3,4].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0,mongoose.QueryWithHelpers.1]"] - - [mongoose.Query.1, "Member[findByIdAndUpdate].WithArity[0,1,2,4].Argument[3].Argument[1]"] - - [mongoose.Query.1, "Member[findByIdAndUpdate].WithArity[3].Argument[2,3].Argument[1]"] - - [mongoose.Query.1, "Member[findOne,findOneAndDelete,findOneAndRemove,findOneAndUpdate,merge,remove,replaceOne,setQuery,update,updateMany,updateOne].Argument[0].TypeVar[mongoose.FilterQuery.0]"] - - [mongoose.Query.1, "Member[findOneAndUpdate].Argument[3].Argument[1]"] - - [mongoose.Query.1, "Member[findOneAndUpdate].Argument[3].Argument[2].TypeVar[mongoose.ModifyResult.0]"] - - [mongoose.Query.1, "Member[findOneAndUpdate].WithArity[3,4].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0].TypeVar[mongoose.ModifyResult.0]"] - - [mongoose.Query.1, "Member[findOne].Argument[3].TypeVar[mongoose.Callback.0]"] - - [mongoose.Query.1, "Member[findOne].WithArity[0,1,2,3].Argument[2].TypeVar[mongoose.Callback.0,mongoose.QueryOptions.0]"] - - [mongoose.Query.1, "Member[findOne].WithArity[0,1,2].Argument[1].TypeVar[mongoose.Callback.0,mongoose.ProjectionType.0]"] - - [mongoose.Query.1, "Member[findOne].WithArity[3,4].Argument[1].TypeVar[mongoose.ProjectionType.0]"] - - [mongoose.Query.1, "Member[findOne].WithArity[4].Argument[2].TypeVar[mongoose.QueryOptions.0]"] - - [mongoose.Query.1, "Member[find].Argument[3].TypeVar[mongoose.Callback.0].ArrayElement"] - - [mongoose.Query.1, "Member[find].WithArity[0].Argument[0].TypeVar[mongoose.Callback.0].ArrayElement"] - - [mongoose.Query.1, "Member[find].WithArity[1,2,3,4].Argument[0].TypeVar[mongoose.FilterQuery.0]"] - - [mongoose.Query.1, "Member[find].WithArity[1,2,3,4].Argument[1].TypeVar[mongoose.ProjectionType.0]"] - - [mongoose.Query.1, "Member[find].WithArity[1,2,3,4].Argument[2].TypeVar[mongoose.QueryOptions.0]"] - - [mongoose.Query.1, "Member[find].WithArity[1].Argument[0,1,2].TypeVar[mongoose.Callback.0].ArrayElement"] - - [mongoose.Query.1, "Member[find].WithArity[2].Argument[1,2].TypeVar[mongoose.Callback.0].ArrayElement"] - - [mongoose.Query.1, "Member[find].WithArity[3].Argument[2].TypeVar[mongoose.Callback.0].ArrayElement"] - - [mongoose.Query.1, "Member[getFilter,getQuery].ReturnValue.TypeVar[mongoose.FilterQuery.0]"] - - [mongoose.Query.1, "Member[getOptions].ReturnValue.TypeVar[mongoose.QueryOptions.0]"] - - [mongoose.Query.1, "Member[getUpdate].ReturnValue.TypeVar[mongoose.UpdateQuery.0]"] - - [mongoose.Query.1, "Member[projection].WithArity[0,1].Argument[0].TypeVar[mongoose.ProjectionFields.0]"] - - [mongoose.Query.1, "Member[projection].WithArity[0,1].ReturnValue.TypeVar[mongoose.ProjectionFields.0]"] - - [mongoose.Query.1, "Member[remove].ReturnValue.TypeVar[mongoose.Query.1]"] - - [mongoose.Query.1, "Member[replaceOne,update,updateMany,updateOne].Argument[2].TypeVar[mongoose.QueryOptions.0]"] - - [mongoose.Query.1, "Member[replaceOne].Argument[1]"] - - [mongoose.Query.1, "Member[setUpdate].Argument[0].TypeVar[mongoose.UpdateQuery.0]"] - - [mongoose.Query.1, "Member[toConstructor].ReturnValue.Instance.TypeVar[mongoose.QueryWithHelpers.1]"] - - [mongoose.QueryOptions.0, "Member[projection].TypeVar[mongoose.ProjectionType.0]"] - - [mongoose.QueryWithHelpers.0, "TypeVar[mongoose.Query.0]"] - - [mongoose.QueryWithHelpers.1, "TypeVar[mongoose.Query.1]"] - - [mongoose.Require_id.0, ""] - - [mongoose.Require_id.0, "TypeVar[mongoose.IfAny.1,mongoose.IfAny.2]"] - - [mongoose.RootQuerySelector.0, "Member[$and,$nor,$or].ArrayElement.TypeVar[mongoose.FilterQuery.0]"] - - [mongoose.Schema.1, "Member[discriminator].ReturnValue.TypeVar[mongoose.DiscriminatorSchema.1]"] - - [mongoose.Schema.1, "Member[plugin].Argument[0].TypeVar[mongoose.PluginFunction.1]"] - - [mongoose.Schema.1, "Member[post].Argument[2].TypeVar[mongoose.ErrorHandlingMiddlewareFunction.0,mongoose.PostMiddlewareFunction.0,mongoose.PostMiddlewareFunction.1]"] - - [mongoose.Schema.1, "Member[post].WithArity[2].WithStringArgument[0=insertMany].Argument[1].TypeVar[mongoose.ErrorHandlingMiddlewareFunction.0,mongoose.PostMiddlewareFunction.0,mongoose.PostMiddlewareFunction.1]"] - - [mongoose.Types.Array.0, "Member[$pop,$shift,shift].ReturnValue"] - - [mongoose.Types.Array.0, "Member[set].Argument[1]"] - - [mongoose.Types.DocumentArray.0, "Member[create,id].ReturnValue"] - - [mongoose.Types.DocumentArray.0, "Member[create,id].ReturnValue.TypeVar[mongoose.Types.Subdocument.0].TypeVar[mongoose.InferId.0]"] - - [mongoose.Types.DocumentArray.0, "Member[push].Argument[0].ArrayElement.TypeVar[mongoose.AnyKeys.0]"] - - [mongoose.Types.DocumentArray.0, "TypeVar[mongoose.Types.Array.0]"] - - [mongoose.Types.DocumentArray.0, "TypeVar[mongoose.Types.Array.0].TypeVar[mongoose.Types.Subdocument.0].TypeVar[mongoose.InferId.0]"] - - [mongoose.Types.Subdocument.0, "TypeVar[mongoose.Document.0]"] - - [mongoose.UnpackedIntersection.0, ""] - - [mongoose.UpdateQuery.0, "TypeVar[mongoose._UpdateQuery.0].TypeVar[mongoose._UpdateQueryDef.0]"] - - [mongoose.VirtualType.0, "Member[get,set].Argument[0].Argument[1].TypeVar[mongoose.VirtualType.0]"] - - [mongoose.VirtualType.0, "Member[get,set].Argument[0].Argument[2]"] - - [mongoose.VirtualTypeOptions.0, "Member[foreignField,localField].Argument[0]"] - - [mongoose._FilterQuery.0, "TypeVar[mongoose.RootQuerySelector.0]"] - - [mongoose._UpdateQuery.0, "Member[$currentDate,$inc,$max,$min,$mul,$pop,$pull,$pullAll,$push,$set,$setOnInsert,$unset].TypeVar[mongoose.AnyKeys.0]"] diff --git a/javascript/ql/lib/semmle/javascript/frameworks/mongodb/mongodb.model.json b/javascript/ql/lib/semmle/javascript/frameworks/mongodb/mongodb.model.json new file mode 100644 index 000000000000..64d22ebff0e5 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/frameworks/mongodb/mongodb.model.json @@ -0,0 +1,807 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["mongodb.Collection", "Member[aggregate,count,countDocuments,deleteMany,deleteOne,find,findOne,findOneAndDelete,findOneAndReplace,remove,replaceOne,watch].Argument[0]", "mongodb.sink"], + ["mongodb.Collection", "Member[distinct].Argument[1]", "mongodb.sink"], + ["mongodb.Collection", "Member[findOneAndUpdate,update,updateMany,updateOne].Argument[0,1]", "mongodb.sink"], + ["mongodb.Db", "Member[aggregate,watch].Argument[0]", "mongodb.sink"], + ["mongodb.DeleteManyModel", "Member[filter]", "mongodb.sink"], + ["mongodb.DeleteOneModel", "Member[filter]", "mongodb.sink"], + ["mongodb.MongoClient", "Member[watch].Argument[0]", "mongodb.sink"], + ["mongodb.UpdateManyModel", "Member[filter,update]", "mongodb.sink"], + ["mongodb.UpdateOneModel", "Member[filter,update]", "mongodb.sink"], + ["mongoose.CollectionBase", "Member[findAndModify].Argument[0]", "mongodb.sink"], + ["mongoose.Connection", "Member[watch].Argument[0]", "mongodb.sink"], + ["mongoose.Document", "Member[update,updateOne].Argument[0]", "mongodb.sink"], + ["mongoose.Model", "Member[$where,aggregate,exists,find,findById,findByIdAndDelete,findByIdAndRemove,findOne,findOneAndDelete,findOneAndRemove,findOneAndReplace,geoSearch,remove,replaceOne,watch].Argument[0]", "mongodb.sink"], + ["mongoose.Model", "Member[count,where].WithArity[1,2].Argument[0]", "mongodb.sink"], + ["mongoose.Model", "Member[countDocuments].WithArity[1,2,3].Argument[0]", "mongodb.sink"], + ["mongoose.Model", "Member[deleteMany,deleteOne].WithArity[0,1,2,3].Argument[0]", "mongodb.sink"], + ["mongoose.Model", "Member[distinct,where].Argument[1]", "mongodb.sink"], + ["mongoose.Model", "Member[findByIdAndUpdate,findOneAndUpdate,update,updateMany,updateOne].Argument[0,1]", "mongodb.sink"], + ["mongoose.Model", "Member[find].WithArity[1,2,3,4].Argument[0]", "mongodb.sink"], + ["mongoose.Query", "Member[$where,and,find,findByIdAndDelete,findOne,findOneAndDelete,findOneAndRemove,nor,or,remove,replaceOne,setUpdate].Argument[0]", "mongodb.sink"], + ["mongoose.Query", "Member[count,where].WithArity[1,2].Argument[0]", "mongodb.sink"], + ["mongoose.Query", "Member[deleteMany,deleteOne].WithArity[0,1,2,3].Argument[0]", "mongodb.sink"], + ["mongoose.Query", "Member[distinct,where].Argument[1]", "mongodb.sink"], + ["mongoose.Query", "Member[findByIdAndUpdate,findOneAndUpdate,update,updateMany,updateOne].Argument[0,1]", "mongodb.sink"], + ["mongoose.Query", "Member[find].WithArity[1,2,3,4].Argument[0]", "mongodb.sink"], + ["mongoose.QueryStatic", "Argument[2]", "mongodb.sink"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["mongodb.AbstractCursor", "mongodb.FindCursor", ""], + ["mongodb.AbstractCursor", "mongodb.ListCollectionsCursor", ""], + ["mongodb.AbstractCursor", "mongodb.ListIndexesCursor", ""], + ["mongodb.AbstractCursorOptions", "mongodb.AggregationCursorOptions", ""], + ["mongodb.AbstractCursorOptions", "mongodb/mongodb.AbstractCursorOptions", ""], + ["mongodb.AbstractCursorOptions", "mongoose.mongodb.AbstractCursorOptions", ""], + ["mongodb.AddUserOptions", "mongodb.Admin", "Member[addUser].Argument[1,2]"], + ["mongodb.AddUserOptions", "mongodb.Db", "Member[addUser].Argument[1,2]"], + ["mongodb.AddUserOptions", "mongodb/mongodb.AddUserOptions", ""], + ["mongodb.AddUserOptions", "mongoose.mongodb.AddUserOptions", ""], + ["mongodb.Admin", "mongodb.AdminStatic", "Instance"], + ["mongodb.Admin", "mongodb.Db", "Member[admin].ReturnValue"], + ["mongodb.Admin", "mongodb/mongodb.Admin", ""], + ["mongodb.Admin", "mongoose.mongodb.Admin", ""], + ["mongodb.AdminStatic", "mongodb/mongodb.AdminStatic", ""], + ["mongodb.AdminStatic", "mongodb", "Member[Admin]"], + ["mongodb.AdminStatic", "mongoose.mongodb.AdminStatic", ""], + ["mongodb.AggregateOptions", "mongodb.AggregationCursorOptions", ""], + ["mongodb.AggregateOptions", "mongodb.ChangeStreamOptions", ""], + ["mongodb.AggregateOptions", "mongodb.Collection", "Member[aggregate].Argument[1]"], + ["mongodb.AggregateOptions", "mongodb.CountDocumentsOptions", ""], + ["mongodb.AggregateOptions", "mongodb.Db", "Member[aggregate].Argument[1]"], + ["mongodb.AggregateOptions", "mongodb/mongodb.AggregateOptions", ""], + ["mongodb.AggregateOptions", "mongoose.mongodb.AggregateOptions", ""], + ["mongodb.AggregationCursorOptions", "mongodb/mongodb.AggregationCursorOptions", ""], + ["mongodb.AggregationCursorOptions", "mongoose.mongodb.AggregationCursorOptions", ""], + ["mongodb.AnyBulkWriteOperation", "mongodb.BulkOperationBase", "Member[raw].Argument[0]"], + ["mongodb.AnyBulkWriteOperation", "mongodb.Collection", "Member[bulkWrite].Argument[0].ArrayElement"], + ["mongodb.AnyBulkWriteOperation", "mongodb/mongodb.AnyBulkWriteOperation", ""], + ["mongodb.AnyBulkWriteOperation", "mongoose.mongodb.AnyBulkWriteOperation", ""], + ["mongodb.Auth", "mongodb.MongoClientOptions", "Member[auth]"], + ["mongodb.Auth", "mongodb/mongodb.Auth", ""], + ["mongodb.Auth", "mongoose.mongodb.Auth", ""], + ["mongodb.AutoEncrypter", "mongodb.AutoEncrypter", "Instance"], + ["mongodb.AutoEncrypter", "mongodb.ConnectionOptions", "Member[autoEncrypter]"], + ["mongodb.AutoEncrypter", "mongodb.MongoClient", "Member[autoEncrypter]"], + ["mongodb.AutoEncrypter", "mongodb.MongoOptions", "Member[autoEncrypter]"], + ["mongodb.AutoEncrypter", "mongodb/mongodb.AutoEncrypter", ""], + ["mongodb.AutoEncrypter", "mongoose.mongodb.AutoEncrypter", ""], + ["mongodb.AutoEncryptionOptions", "mongodb.AutoEncrypter", "Argument[1]"], + ["mongodb.AutoEncryptionOptions", "mongodb.MongoClientOptions", "Member[autoEncryption]"], + ["mongodb.AutoEncryptionOptions", "mongodb/mongodb.AutoEncryptionOptions", ""], + ["mongodb.AutoEncryptionOptions", "mongoose.mongodb.AutoEncryptionOptions", ""], + ["mongodb.BulkOperationBase", "mongodb.BulkOperationBase", "Member[addToOperationsList,insert,raw].ReturnValue"], + ["mongodb.BulkOperationBase", "mongodb.BulkOperationBaseStatic", "Instance"], + ["mongodb.BulkOperationBase", "mongodb.FindOperators", "Member[bulkOperation]"], + ["mongodb.BulkOperationBase", "mongodb.FindOperators", "Member[delete,deleteOne,replaceOne,update,updateOne].ReturnValue"], + ["mongodb.BulkOperationBase", "mongodb.OrderedBulkOperation", ""], + ["mongodb.BulkOperationBase", "mongodb.UnorderedBulkOperation", ""], + ["mongodb.BulkOperationBase", "mongodb/mongodb.BulkOperationBase", ""], + ["mongodb.BulkOperationBase", "mongoose.mongodb.BulkOperationBase", ""], + ["mongodb.BulkOperationBaseStatic", "mongodb/mongodb.BulkOperationBaseStatic", ""], + ["mongodb.BulkOperationBaseStatic", "mongodb", "Member[BulkOperationBase]"], + ["mongodb.BulkOperationBaseStatic", "mongoose.mongodb.BulkOperationBaseStatic", ""], + ["mongodb.BulkWriteOptions", "mongodb.BulkOperationBase", "Member[execute].WithArity[0,1,2].Argument[0]"], + ["mongodb.BulkWriteOptions", "mongodb.Collection", "Member[bulkWrite,insert,insertMany].Argument[1]"], + ["mongodb.BulkWriteOptions", "mongodb.Collection", "Member[initializeOrderedBulkOp,initializeUnorderedBulkOp].Argument[0]"], + ["mongodb.BulkWriteOptions", "mongodb.OrderedBulkOperationStatic", "Argument[1]"], + ["mongodb.BulkWriteOptions", "mongodb.UnorderedBulkOperationStatic", "Argument[1]"], + ["mongodb.BulkWriteOptions", "mongodb/mongodb.BulkWriteOptions", ""], + ["mongodb.BulkWriteOptions", "mongoose.mongodb.BulkWriteOptions", ""], + ["mongodb.ChangeStream", "mongodb.ChangeStreamStatic", "Instance"], + ["mongodb.ChangeStream", "mongodb.Collection", "Member[watch].ReturnValue"], + ["mongodb.ChangeStream", "mongodb.Db", "Member[watch].ReturnValue"], + ["mongodb.ChangeStream", "mongodb.MongoClient", "Member[watch].ReturnValue"], + ["mongodb.ChangeStream", "mongodb/mongodb.ChangeStream", ""], + ["mongodb.ChangeStream", "mongoose.mongodb.ChangeStream", ""], + ["mongodb.ChangeStreamOptions", "mongodb.ChangeStream", "Member[options]"], + ["mongodb.ChangeStreamOptions", "mongodb.Collection", "Member[watch].Argument[1]"], + ["mongodb.ChangeStreamOptions", "mongodb.Db", "Member[watch].Argument[1]"], + ["mongodb.ChangeStreamOptions", "mongodb.MongoClient", "Member[watch].Argument[1]"], + ["mongodb.ChangeStreamOptions", "mongodb/mongodb.ChangeStreamOptions", ""], + ["mongodb.ChangeStreamOptions", "mongoose.mongodb.ChangeStreamOptions", ""], + ["mongodb.ChangeStreamStatic", "mongodb/mongodb.ChangeStreamStatic", ""], + ["mongodb.ChangeStreamStatic", "mongodb", "Member[ChangeStream]"], + ["mongodb.ChangeStreamStatic", "mongoose.mongodb.ChangeStreamStatic", ""], + ["mongodb.ClientSession", "mongodb.AbstractCursorOptions", "Member[session]"], + ["mongodb.ClientSession", "mongodb.ClientSession", "Member[equals].Argument[0]"], + ["mongodb.ClientSession", "mongodb.ClientSessionEvents", "Member[ended].Argument[0]"], + ["mongodb.ClientSession", "mongodb.ClientSessionStatic", "Instance"], + ["mongodb.ClientSession", "mongodb.IndexInformationOptions", "Member[session]"], + ["mongodb.ClientSession", "mongodb.MongoClient", "Member[startSession].ReturnValue"], + ["mongodb.ClientSession", "mongodb.OperationOptions", "Member[session]"], + ["mongodb.ClientSession", "mongodb.ReadPreferenceFromOptions", "Member[session]"], + ["mongodb.ClientSession", "mongodb.SelectServerOptions", "Member[session]"], + ["mongodb.ClientSession", "mongodb.WithSessionCallback", "Argument[0]"], + ["mongodb.ClientSession", "mongodb.WithTransactionCallback", "Argument[0]"], + ["mongodb.ClientSession", "mongodb/mongodb.ClientSession", ""], + ["mongodb.ClientSession", "mongoose.mongodb.ClientSession", ""], + ["mongodb.ClientSessionEvents", "mongodb/mongodb.ClientSessionEvents", ""], + ["mongodb.ClientSessionEvents", "mongoose.mongodb.ClientSessionEvents", ""], + ["mongodb.ClientSessionOptions", "mongodb.MongoClient", "Member[startSession].Argument[0]"], + ["mongodb.ClientSessionOptions", "mongodb.MongoClient", "Member[withSession].WithArity[2].Argument[0]"], + ["mongodb.ClientSessionOptions", "mongodb/mongodb.ClientSessionOptions", ""], + ["mongodb.ClientSessionOptions", "mongoose.mongodb.ClientSessionOptions", ""], + ["mongodb.ClientSessionStatic", "mongodb/mongodb.ClientSessionStatic", ""], + ["mongodb.ClientSessionStatic", "mongodb", "Member[ClientSession]"], + ["mongodb.ClientSessionStatic", "mongoose.mongodb.ClientSessionStatic", ""], + ["mongodb.CollStatsOptions", "mongodb.Collection", "Member[stats].Argument[0]"], + ["mongodb.CollStatsOptions", "mongodb/mongodb.CollStatsOptions", ""], + ["mongodb.CollStatsOptions", "mongoose.mongodb.CollStatsOptions", ""], + ["mongodb.Collection", "mongodb.ChangeStream", "Member[parent]"], + ["mongodb.Collection", "mongodb.Collection", "Member[rename].Argument[1,2].TypeVar[mongodb.Callback.0]"], + ["mongodb.Collection", "mongodb.Collection", "Member[rename].WithArity[1,2].ReturnValue.Awaited"], + ["mongodb.Collection", "mongodb.CollectionStatic", "Instance"], + ["mongodb.Collection", "mongodb.Db", "Member[collection].ReturnValue"], + ["mongodb.Collection", "mongodb.Db", "Member[collections].Argument[0,1].TypeVar[mongodb.Callback.0].ArrayElement"], + ["mongodb.Collection", "mongodb.Db", "Member[collections].WithArity[0,1].ReturnValue.Awaited.ArrayElement"], + ["mongodb.Collection", "mongodb.Db", "Member[createCollection].Argument[2].TypeVar[mongodb.Callback.0]"], + ["mongodb.Collection", "mongodb.Db", "Member[createCollection].WithArity[1,2].ReturnValue.Awaited"], + ["mongodb.Collection", "mongodb.Db", "Member[createCollection].WithArity[2].Argument[1].TypeVar[mongodb.Callback.0]"], + ["mongodb.Collection", "mongodb.Db", "Member[renameCollection].Argument[2,3].TypeVar[mongodb.Callback.0]"], + ["mongodb.Collection", "mongodb.Db", "Member[renameCollection].WithArity[2,3].ReturnValue.Awaited"], + ["mongodb.Collection", "mongodb.GridFSBucketWriteStream", "Member[chunks,files]"], + ["mongodb.Collection", "mongodb.ListIndexesCursor", "Member[parent]"], + ["mongodb.Collection", "mongodb.ListIndexesCursorStatic", "Argument[0]"], + ["mongodb.Collection", "mongodb.OrderedBulkOperationStatic", "Argument[0]"], + ["mongodb.Collection", "mongodb.UnorderedBulkOperationStatic", "Argument[0]"], + ["mongodb.Collection", "mongodb/mongodb.Collection", ""], + ["mongodb.Collection", "mongoose.mongodb.Collection", ""], + ["mongodb.CollectionStatic", "mongodb/mongodb.CollectionStatic", ""], + ["mongodb.CollectionStatic", "mongodb", "Member[Collection]"], + ["mongodb.CollectionStatic", "mongoose.mongodb.CollectionStatic", ""], + ["mongodb.CommandOperationOptions", "mongodb.AddUserOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.Admin", "Member[buildInfo,ping,replSetGetStatus,serverInfo,serverStatus].Argument[0]"], + ["mongodb.CommandOperationOptions", "mongodb.AggregateOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.BulkWriteOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.CollStatsOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.CountOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.CreateCollectionOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.CreateIndexesOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.DbStatsOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.DeleteOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.DistinctOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.DropCollectionOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.DropDatabaseOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.DropIndexesOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.EstimatedDocumentCountOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.EvalOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.FindOneAndDeleteOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.FindOneAndReplaceOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.FindOneAndUpdateOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.FindOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.InsertOneOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.ListCollectionsOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.ListDatabasesOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.ListIndexesOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.MapReduceOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.ProfilingLevelOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.RemoveUserOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.RenameOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.ReplaceOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.RunCommandOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.SetProfilingLevelOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.TransactionOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.UpdateOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb.ValidateCollectionOptions", ""], + ["mongodb.CommandOperationOptions", "mongodb/mongodb.CommandOperationOptions", ""], + ["mongodb.CommandOperationOptions", "mongoose.mongodb.CommandOperationOptions", ""], + ["mongodb.ConnectionOptions", "mongodb/mongodb.ConnectionOptions", ""], + ["mongodb.ConnectionOptions", "mongoose.mongodb.ConnectionOptions", ""], + ["mongodb.CountDocumentsOptions", "mongodb.Collection", "Member[countDocuments].Argument[1]"], + ["mongodb.CountDocumentsOptions", "mongodb/mongodb.CountDocumentsOptions", ""], + ["mongodb.CountDocumentsOptions", "mongoose.mongodb.CountDocumentsOptions", ""], + ["mongodb.CountOptions", "mongodb.Collection", "Member[count].Argument[1]"], + ["mongodb.CountOptions", "mongodb.FindCursor", "Member[count].Argument[0]"], + ["mongodb.CountOptions", "mongodb/mongodb.CountOptions", ""], + ["mongodb.CountOptions", "mongoose.mongodb.CountOptions", ""], + ["mongodb.CreateCollectionOptions", "mongodb.Db", "Member[createCollection].WithArity[1,2,3].Argument[1]"], + ["mongodb.CreateCollectionOptions", "mongodb/mongodb.CreateCollectionOptions", ""], + ["mongodb.CreateCollectionOptions", "mongoose.mongodb.CreateCollectionOptions", ""], + ["mongodb.CreateIndexesOptions", "mongodb.Collection", "Member[createIndex,createIndexes].Argument[1]"], + ["mongodb.CreateIndexesOptions", "mongodb.Db", "Member[createIndex].Argument[2]"], + ["mongodb.CreateIndexesOptions", "mongodb/mongodb.CreateIndexesOptions", ""], + ["mongodb.CreateIndexesOptions", "mongoose.mongodb.CreateIndexesOptions", ""], + ["mongodb.Db", "mongodb.ChangeStream", "Member[parent]"], + ["mongodb.Db", "mongodb.DbStatic", "Instance"], + ["mongodb.Db", "mongodb.GridFSBucketStatic", "Argument[0]"], + ["mongodb.Db", "mongodb.ListCollectionsCursor", "Member[parent]"], + ["mongodb.Db", "mongodb.ListCollectionsCursorStatic", "Argument[0]"], + ["mongodb.Db", "mongodb.MongoClient", "Member[db].ReturnValue"], + ["mongodb.Db", "mongodb/mongodb.Db", ""], + ["mongodb.Db", "mongoose.mongodb.Db", ""], + ["mongodb.DbStatic", "mongodb/mongodb.DbStatic", ""], + ["mongodb.DbStatic", "mongodb", "Member[Db]"], + ["mongodb.DbStatic", "mongoose.mongodb.DbStatic", ""], + ["mongodb.DbStatsOptions", "mongodb.Db", "Member[stats].Argument[0]"], + ["mongodb.DbStatsOptions", "mongodb/mongodb.DbStatsOptions", ""], + ["mongodb.DbStatsOptions", "mongoose.mongodb.DbStatsOptions", ""], + ["mongodb.DeleteManyModel", "mongodb.AnyBulkWriteOperation", "Member[deleteMany]"], + ["mongodb.DeleteManyModel", "mongodb/mongodb.DeleteManyModel", ""], + ["mongodb.DeleteManyModel", "mongoose.mongodb.DeleteManyModel", ""], + ["mongodb.DeleteOneModel", "mongodb.AnyBulkWriteOperation", "Member[deleteOne]"], + ["mongodb.DeleteOneModel", "mongodb/mongodb.DeleteOneModel", ""], + ["mongodb.DeleteOneModel", "mongoose.mongodb.DeleteOneModel", ""], + ["mongodb.DeleteOptions", "mongodb.Collection", "Member[deleteMany,deleteOne,remove].Argument[1]"], + ["mongodb.DeleteOptions", "mongodb/mongodb.DeleteOptions", ""], + ["mongodb.DeleteOptions", "mongoose.mongodb.DeleteOptions", ""], + ["mongodb.DistinctOptions", "mongodb.Collection", "Member[distinct].Argument[2]"], + ["mongodb.DistinctOptions", "mongodb/mongodb.DistinctOptions", ""], + ["mongodb.DistinctOptions", "mongoose.mongodb.DistinctOptions", ""], + ["mongodb.DropCollectionOptions", "mongodb.Collection", "Member[drop].Argument[0]"], + ["mongodb.DropCollectionOptions", "mongodb.Db", "Member[dropCollection].Argument[1]"], + ["mongodb.DropCollectionOptions", "mongodb/mongodb.DropCollectionOptions", ""], + ["mongodb.DropCollectionOptions", "mongoose.mongodb.DropCollectionOptions", ""], + ["mongodb.DropDatabaseOptions", "mongodb.Db", "Member[dropDatabase].Argument[0]"], + ["mongodb.DropDatabaseOptions", "mongodb/mongodb.DropDatabaseOptions", ""], + ["mongodb.DropDatabaseOptions", "mongoose.mongodb.DropDatabaseOptions", ""], + ["mongodb.DropIndexesOptions", "mongodb.Collection", "Member[dropIndex].Argument[1]"], + ["mongodb.DropIndexesOptions", "mongodb.Collection", "Member[dropIndexes].Argument[0]"], + ["mongodb.DropIndexesOptions", "mongodb/mongodb.DropIndexesOptions", ""], + ["mongodb.DropIndexesOptions", "mongoose.mongodb.DropIndexesOptions", ""], + ["mongodb.EstimatedDocumentCountOptions", "mongodb.Collection", "Member[estimatedDocumentCount].Argument[0]"], + ["mongodb.EstimatedDocumentCountOptions", "mongodb/mongodb.EstimatedDocumentCountOptions", ""], + ["mongodb.EstimatedDocumentCountOptions", "mongoose.mongodb.EstimatedDocumentCountOptions", ""], + ["mongodb.EvalOptions", "mongodb/mongodb.EvalOptions", ""], + ["mongodb.EvalOptions", "mongoose.mongodb.EvalOptions", ""], + ["mongodb.FindCursor", "mongodb.Collection", "Member[find].WithArity[0,1,2].ReturnValue"], + ["mongodb.FindCursor", "mongodb.FindCursor", "Member[addQueryModifier,allowDiskUse,clone,collation,comment,filter,hint,limit,map,max,maxAwaitTimeMS,maxTimeMS,min,project,returnKey,showRecordId,skip,sort].ReturnValue"], + ["mongodb.FindCursor", "mongodb.FindCursorStatic", "Instance"], + ["mongodb.FindCursor", "mongodb.GridFSBucket", "Member[find].ReturnValue"], + ["mongodb.FindCursor", "mongodb/mongodb.FindCursor", ""], + ["mongodb.FindCursor", "mongoose.mongodb.FindCursor", ""], + ["mongodb.FindCursorStatic", "mongodb/mongodb.FindCursorStatic", ""], + ["mongodb.FindCursorStatic", "mongodb", "Member[FindCursor]"], + ["mongodb.FindCursorStatic", "mongoose.mongodb.FindCursorStatic", ""], + ["mongodb.FindOneAndDeleteOptions", "mongodb.Collection", "Member[findOneAndDelete].Argument[1]"], + ["mongodb.FindOneAndDeleteOptions", "mongodb/mongodb.FindOneAndDeleteOptions", ""], + ["mongodb.FindOneAndDeleteOptions", "mongoose.mongodb.FindOneAndDeleteOptions", ""], + ["mongodb.FindOneAndReplaceOptions", "mongodb.Collection", "Member[findOneAndReplace].Argument[2]"], + ["mongodb.FindOneAndReplaceOptions", "mongodb/mongodb.FindOneAndReplaceOptions", ""], + ["mongodb.FindOneAndReplaceOptions", "mongoose.mongodb.FindOneAndReplaceOptions", ""], + ["mongodb.FindOneAndUpdateOptions", "mongodb.Collection", "Member[findOneAndUpdate].Argument[2]"], + ["mongodb.FindOneAndUpdateOptions", "mongodb/mongodb.FindOneAndUpdateOptions", ""], + ["mongodb.FindOneAndUpdateOptions", "mongoose.mongodb.FindOneAndUpdateOptions", ""], + ["mongodb.FindOperators", "mongodb.BulkOperationBase", "Member[find].ReturnValue"], + ["mongodb.FindOperators", "mongodb.FindOperators", "Member[arrayFilters,collation,upsert].ReturnValue"], + ["mongodb.FindOperators", "mongodb.FindOperatorsStatic", "Instance"], + ["mongodb.FindOperators", "mongodb/mongodb.FindOperators", ""], + ["mongodb.FindOperators", "mongoose.mongodb.FindOperators", ""], + ["mongodb.FindOperatorsStatic", "mongodb/mongodb.FindOperatorsStatic", ""], + ["mongodb.FindOperatorsStatic", "mongodb", "Member[FindOperators]"], + ["mongodb.FindOperatorsStatic", "mongoose.mongodb.FindOperatorsStatic", ""], + ["mongodb.FindOptions", "mongodb.Collection", "Member[find,findOne].Argument[1]"], + ["mongodb.FindOptions", "mongodb.GridFSBucket", "Member[find].Argument[1]"], + ["mongodb.FindOptions", "mongodb/mongodb.FindOptions", ""], + ["mongodb.FindOptions", "mongoose.mongodb.FindOptions", ""], + ["mongodb.GridFSBucket", "mongodb.GridFSBucketStatic", "Instance"], + ["mongodb.GridFSBucket", "mongodb.GridFSBucketWriteStream", "Member[bucket]"], + ["mongodb.GridFSBucket", "mongodb/mongodb.GridFSBucket", ""], + ["mongodb.GridFSBucket", "mongoose.mongodb.GridFSBucket", ""], + ["mongodb.GridFSBucketStatic", "mongodb/mongodb.GridFSBucketStatic", ""], + ["mongodb.GridFSBucketStatic", "mongodb", "Member[GridFSBucket]"], + ["mongodb.GridFSBucketStatic", "mongoose.mongodb.GridFSBucketStatic", ""], + ["mongodb.GridFSBucketWriteStream", "mongodb.GridFSBucket", "Member[openUploadStream,openUploadStreamWithId].ReturnValue"], + ["mongodb.GridFSBucketWriteStream", "mongodb.GridFSBucketWriteStream", "Member[end].ReturnValue"], + ["mongodb.GridFSBucketWriteStream", "mongodb.GridFSBucketWriteStreamStatic", "Instance"], + ["mongodb.GridFSBucketWriteStream", "mongodb/mongodb.GridFSBucketWriteStream", ""], + ["mongodb.GridFSBucketWriteStream", "mongoose.mongodb.GridFSBucketWriteStream", ""], + ["mongodb.GridFSBucketWriteStreamStatic", "mongodb/mongodb.GridFSBucketWriteStreamStatic", ""], + ["mongodb.GridFSBucketWriteStreamStatic", "mongodb", "Member[GridFSBucketWriteStream]"], + ["mongodb.GridFSBucketWriteStreamStatic", "mongoose.mongodb.GridFSBucketWriteStreamStatic", ""], + ["mongodb.IndexInformationOptions", "mongodb.Collection", "Member[indexExists].Argument[1]"], + ["mongodb.IndexInformationOptions", "mongodb.Collection", "Member[indexInformation,indexes].Argument[0]"], + ["mongodb.IndexInformationOptions", "mongodb.Db", "Member[indexInformation].Argument[1]"], + ["mongodb.IndexInformationOptions", "mongodb/mongodb.IndexInformationOptions", ""], + ["mongodb.IndexInformationOptions", "mongoose.mongodb.IndexInformationOptions", ""], + ["mongodb.InsertOneOptions", "mongodb.Collection", "Member[insertOne].Argument[1]"], + ["mongodb.InsertOneOptions", "mongodb/mongodb.InsertOneOptions", ""], + ["mongodb.InsertOneOptions", "mongoose.mongodb.InsertOneOptions", ""], + ["mongodb.ListCollectionsCursor", "mongodb.Db", "Member[listCollections].WithArity[0,1,2].ReturnValue"], + ["mongodb.ListCollectionsCursor", "mongodb.ListCollectionsCursor", "Member[clone].ReturnValue"], + ["mongodb.ListCollectionsCursor", "mongodb.ListCollectionsCursorStatic", "Instance"], + ["mongodb.ListCollectionsCursor", "mongodb/mongodb.ListCollectionsCursor", ""], + ["mongodb.ListCollectionsCursor", "mongoose.mongodb.ListCollectionsCursor", ""], + ["mongodb.ListCollectionsCursorStatic", "mongodb/mongodb.ListCollectionsCursorStatic", ""], + ["mongodb.ListCollectionsCursorStatic", "mongodb", "Member[ListCollectionsCursor]"], + ["mongodb.ListCollectionsCursorStatic", "mongoose.mongodb.ListCollectionsCursorStatic", ""], + ["mongodb.ListCollectionsOptions", "mongodb.Db", "Member[collections].Argument[0]"], + ["mongodb.ListCollectionsOptions", "mongodb.Db", "Member[listCollections].WithArity[0,1,2].Argument[1]"], + ["mongodb.ListCollectionsOptions", "mongodb.ListCollectionsCursor", "Member[options]"], + ["mongodb.ListCollectionsOptions", "mongodb.ListCollectionsCursorStatic", "Argument[2]"], + ["mongodb.ListCollectionsOptions", "mongodb/mongodb.ListCollectionsOptions", ""], + ["mongodb.ListCollectionsOptions", "mongoose.mongodb.ListCollectionsOptions", ""], + ["mongodb.ListDatabasesOptions", "mongodb.Admin", "Member[listDatabases].Argument[0]"], + ["mongodb.ListDatabasesOptions", "mongodb/mongodb.ListDatabasesOptions", ""], + ["mongodb.ListDatabasesOptions", "mongoose.mongodb.ListDatabasesOptions", ""], + ["mongodb.ListIndexesCursor", "mongodb.Collection", "Member[listIndexes].ReturnValue"], + ["mongodb.ListIndexesCursor", "mongodb.ListIndexesCursor", "Member[clone].ReturnValue"], + ["mongodb.ListIndexesCursor", "mongodb.ListIndexesCursorStatic", "Instance"], + ["mongodb.ListIndexesCursor", "mongodb/mongodb.ListIndexesCursor", ""], + ["mongodb.ListIndexesCursor", "mongoose.mongodb.ListIndexesCursor", ""], + ["mongodb.ListIndexesCursorStatic", "mongodb/mongodb.ListIndexesCursorStatic", ""], + ["mongodb.ListIndexesCursorStatic", "mongodb", "Member[ListIndexesCursor]"], + ["mongodb.ListIndexesCursorStatic", "mongoose.mongodb.ListIndexesCursorStatic", ""], + ["mongodb.ListIndexesOptions", "mongodb.Collection", "Member[listIndexes].Argument[0]"], + ["mongodb.ListIndexesOptions", "mongodb.ListIndexesCursor", "Member[options]"], + ["mongodb.ListIndexesOptions", "mongodb.ListIndexesCursorStatic", "Argument[1]"], + ["mongodb.ListIndexesOptions", "mongodb/mongodb.ListIndexesOptions", ""], + ["mongodb.ListIndexesOptions", "mongoose.mongodb.ListIndexesOptions", ""], + ["mongodb.MapReduceOptions", "mongodb.Collection", "Member[mapReduce].Argument[2]"], + ["mongodb.MapReduceOptions", "mongodb/mongodb.MapReduceOptions", ""], + ["mongodb.MapReduceOptions", "mongoose.mongodb.MapReduceOptions", ""], + ["mongodb.MongoClient", "mongodb.AutoEncrypter", "Argument[0]"], + ["mongodb.MongoClient", "mongodb.AutoEncryptionOptions", "Member[keyVaultClient]"], + ["mongodb.MongoClient", "mongodb.ChangeStream", "Member[parent]"], + ["mongodb.MongoClient", "mongodb.DbStatic", "Argument[0]"], + ["mongodb.MongoClient", "mongodb.MongoClient", "Member[connect].Argument[0].TypeVar[mongodb.Callback.0]"], + ["mongodb.MongoClient", "mongodb.MongoClient", "Member[connect].WithArity[0].ReturnValue.Awaited"], + ["mongodb.MongoClient", "mongodb.MongoClientEvents", "Member[open].Argument[0]"], + ["mongodb.MongoClient", "mongodb.MongoClientStatic", "Instance"], + ["mongodb.MongoClient", "mongodb.MongoClientStatic", "Member[connect].Argument[1,2].TypeVar[mongodb.Callback.0]"], + ["mongodb.MongoClient", "mongodb.MongoClientStatic", "Member[connect].WithArity[1,2].ReturnValue.Awaited"], + ["mongodb.MongoClient", "mongodb/mongodb.MongoClient", ""], + ["mongodb.MongoClient", "mongoose.mongodb.MongoClient", ""], + ["mongodb.MongoClientEvents", "mongodb/mongodb.MongoClientEvents", ""], + ["mongodb.MongoClientEvents", "mongoose.mongodb.MongoClientEvents", ""], + ["mongodb.MongoClientOptions", "mongodb.MongoClientStatic", "Argument[1]"], + ["mongodb.MongoClientOptions", "mongodb.MongoClientStatic", "Member[connect].Argument[1]"], + ["mongodb.MongoClientOptions", "mongodb/mongodb.MongoClientOptions", ""], + ["mongodb.MongoClientOptions", "mongoose.mongodb.MongoClientOptions", ""], + ["mongodb.MongoClientStatic", "mongodb/mongodb.MongoClientStatic", ""], + ["mongodb.MongoClientStatic", "mongodb", "Member[MongoClient]"], + ["mongodb.MongoClientStatic", "mongoose.mongodb.MongoClientStatic", ""], + ["mongodb.MongoOptions", "mongodb.ClientSession", "Member[clientOptions]"], + ["mongodb.MongoOptions", "mongodb.MongoClient", "Member[options]"], + ["mongodb.MongoOptions", "mongodb/mongodb.MongoOptions", ""], + ["mongodb.MongoOptions", "mongoose.mongodb.MongoOptions", ""], + ["mongodb.OperationOptions", "mongodb.Collection", "Member[isCapped,options].Argument[0]"], + ["mongodb.OperationOptions", "mongodb.CommandOperationOptions", ""], + ["mongodb.OperationOptions", "mongodb/mongodb.OperationOptions", ""], + ["mongodb.OperationOptions", "mongoose.mongodb.OperationOptions", ""], + ["mongodb.OrderedBulkOperation", "mongodb.Collection", "Member[initializeOrderedBulkOp].ReturnValue"], + ["mongodb.OrderedBulkOperation", "mongodb.OrderedBulkOperation", "Member[addToOperationsList].ReturnValue"], + ["mongodb.OrderedBulkOperation", "mongodb.OrderedBulkOperationStatic", "Instance"], + ["mongodb.OrderedBulkOperation", "mongodb/mongodb.OrderedBulkOperation", ""], + ["mongodb.OrderedBulkOperation", "mongoose.mongodb.OrderedBulkOperation", ""], + ["mongodb.OrderedBulkOperationStatic", "mongodb/mongodb.OrderedBulkOperationStatic", ""], + ["mongodb.OrderedBulkOperationStatic", "mongodb", "Member[OrderedBulkOperation]"], + ["mongodb.OrderedBulkOperationStatic", "mongoose.mongodb.OrderedBulkOperationStatic", ""], + ["mongodb.ProfilingLevelOptions", "mongodb.Db", "Member[profilingLevel].Argument[0]"], + ["mongodb.ProfilingLevelOptions", "mongodb/mongodb.ProfilingLevelOptions", ""], + ["mongodb.ProfilingLevelOptions", "mongoose.mongodb.ProfilingLevelOptions", ""], + ["mongodb.ReadPreferenceFromOptions", "mongodb.ReadPreferenceStatic", "Member[fromOptions].Argument[0]"], + ["mongodb.ReadPreferenceFromOptions", "mongodb/mongodb.ReadPreferenceFromOptions", ""], + ["mongodb.ReadPreferenceFromOptions", "mongoose.mongodb.ReadPreferenceFromOptions", ""], + ["mongodb.ReadPreferenceStatic", "mongodb/mongodb.ReadPreferenceStatic", ""], + ["mongodb.ReadPreferenceStatic", "mongodb", "Member[ReadPreference]"], + ["mongodb.ReadPreferenceStatic", "mongoose.mongodb.ReadPreferenceStatic", ""], + ["mongodb.RemoveUserOptions", "mongodb.Admin", "Member[removeUser].Argument[1]"], + ["mongodb.RemoveUserOptions", "mongodb.Db", "Member[removeUser].Argument[1]"], + ["mongodb.RemoveUserOptions", "mongodb/mongodb.RemoveUserOptions", ""], + ["mongodb.RemoveUserOptions", "mongoose.mongodb.RemoveUserOptions", ""], + ["mongodb.RenameOptions", "mongodb.Collection", "Member[rename].Argument[1]"], + ["mongodb.RenameOptions", "mongodb.Db", "Member[renameCollection].Argument[2]"], + ["mongodb.RenameOptions", "mongodb/mongodb.RenameOptions", ""], + ["mongodb.RenameOptions", "mongoose.mongodb.RenameOptions", ""], + ["mongodb.ReplaceOptions", "mongodb.Collection", "Member[replaceOne].Argument[2]"], + ["mongodb.ReplaceOptions", "mongodb/mongodb.ReplaceOptions", ""], + ["mongodb.ReplaceOptions", "mongoose.mongodb.ReplaceOptions", ""], + ["mongodb.RunCommandOptions", "mongodb.Admin", "Member[command].Argument[1]"], + ["mongodb.RunCommandOptions", "mongodb.Db", "Member[command].Argument[1]"], + ["mongodb.RunCommandOptions", "mongodb/mongodb.RunCommandOptions", ""], + ["mongodb.RunCommandOptions", "mongoose.mongodb.RunCommandOptions", ""], + ["mongodb.SelectServerOptions", "mongodb/mongodb.SelectServerOptions", ""], + ["mongodb.SelectServerOptions", "mongoose.mongodb.SelectServerOptions", ""], + ["mongodb.SetProfilingLevelOptions", "mongodb.Db", "Member[setProfilingLevel].Argument[1]"], + ["mongodb.SetProfilingLevelOptions", "mongodb/mongodb.SetProfilingLevelOptions", ""], + ["mongodb.SetProfilingLevelOptions", "mongoose.mongodb.SetProfilingLevelOptions", ""], + ["mongodb.Transaction", "mongodb.ClientSession", "Member[transaction]"], + ["mongodb.Transaction", "mongodb.TransactionStatic", "Instance"], + ["mongodb.Transaction", "mongodb/mongodb.Transaction", ""], + ["mongodb.Transaction", "mongoose.mongodb.Transaction", ""], + ["mongodb.TransactionOptions", "mongodb.ClientSession", "Member[defaultTransactionOptions]"], + ["mongodb.TransactionOptions", "mongodb.ClientSession", "Member[startTransaction].Argument[0]"], + ["mongodb.TransactionOptions", "mongodb.ClientSession", "Member[withTransaction].Argument[1]"], + ["mongodb.TransactionOptions", "mongodb.ClientSessionOptions", "Member[defaultTransactionOptions]"], + ["mongodb.TransactionOptions", "mongodb.Transaction", "Member[options]"], + ["mongodb.TransactionOptions", "mongodb/mongodb.TransactionOptions", ""], + ["mongodb.TransactionOptions", "mongoose.mongodb.TransactionOptions", ""], + ["mongodb.TransactionStatic", "mongodb/mongodb.TransactionStatic", ""], + ["mongodb.TransactionStatic", "mongodb", "Member[Transaction]"], + ["mongodb.TransactionStatic", "mongoose.mongodb.TransactionStatic", ""], + ["mongodb.TypedEventEmitter", "mongodb.AbstractCursor", ""], + ["mongodb.TypedEventEmitter", "mongodb.ChangeStream", ""], + ["mongodb.TypedEventEmitter", "mongodb.ClientSession", ""], + ["mongodb.TypedEventEmitter", "mongodb.GridFSBucket", ""], + ["mongodb.TypedEventEmitter", "mongodb.MongoClient", ""], + ["mongodb.UnorderedBulkOperation", "mongodb.Collection", "Member[initializeUnorderedBulkOp].ReturnValue"], + ["mongodb.UnorderedBulkOperation", "mongodb.UnorderedBulkOperation", "Member[addToOperationsList].ReturnValue"], + ["mongodb.UnorderedBulkOperation", "mongodb.UnorderedBulkOperationStatic", "Instance"], + ["mongodb.UnorderedBulkOperation", "mongodb/mongodb.UnorderedBulkOperation", ""], + ["mongodb.UnorderedBulkOperation", "mongoose.mongodb.UnorderedBulkOperation", ""], + ["mongodb.UnorderedBulkOperationStatic", "mongodb/mongodb.UnorderedBulkOperationStatic", ""], + ["mongodb.UnorderedBulkOperationStatic", "mongodb", "Member[UnorderedBulkOperation]"], + ["mongodb.UnorderedBulkOperationStatic", "mongoose.mongodb.UnorderedBulkOperationStatic", ""], + ["mongodb.UpdateManyModel", "mongodb.AnyBulkWriteOperation", "Member[updateMany]"], + ["mongodb.UpdateManyModel", "mongodb/mongodb.UpdateManyModel", ""], + ["mongodb.UpdateManyModel", "mongoose.mongodb.UpdateManyModel", ""], + ["mongodb.UpdateOneModel", "mongodb.AnyBulkWriteOperation", "Member[updateOne]"], + ["mongodb.UpdateOneModel", "mongodb/mongodb.UpdateOneModel", ""], + ["mongodb.UpdateOneModel", "mongoose.mongodb.UpdateOneModel", ""], + ["mongodb.UpdateOptions", "mongodb.Collection", "Member[update,updateMany,updateOne].Argument[2]"], + ["mongodb.UpdateOptions", "mongodb/mongodb.UpdateOptions", ""], + ["mongodb.UpdateOptions", "mongoose.mongodb.UpdateOptions", ""], + ["mongodb.ValidateCollectionOptions", "mongodb.Admin", "Member[validateCollection].Argument[1]"], + ["mongodb.ValidateCollectionOptions", "mongodb/mongodb.ValidateCollectionOptions", ""], + ["mongodb.ValidateCollectionOptions", "mongoose.mongodb.ValidateCollectionOptions", ""], + ["mongodb.WithSessionCallback", "mongodb.MongoClient", "Member[withSession].Argument[1]"], + ["mongodb.WithSessionCallback", "mongodb.MongoClient", "Member[withSession].WithArity[1].Argument[0]"], + ["mongodb.WithSessionCallback", "mongodb/mongodb.WithSessionCallback", ""], + ["mongodb.WithSessionCallback", "mongoose.mongodb.WithSessionCallback", ""], + ["mongodb.WithTransactionCallback", "mongodb.ClientSession", "Member[withTransaction].Argument[0]"], + ["mongodb.WithTransactionCallback", "mongodb/mongodb.WithTransactionCallback", ""], + ["mongodb.WithTransactionCallback", "mongoose.mongodb.WithTransactionCallback", ""], + ["mongodb", "mongoose", "Member[mongodb]"], + ["mongoose.AcceptsDiscriminator", "mongoose.Model", ""], + ["mongoose.AcceptsDiscriminator", "mongoose.Schema.Types.Array", ""], + ["mongoose.AcceptsDiscriminator", "mongoose.Schema.Types.DocumentArray", ""], + ["mongoose.AcceptsDiscriminator", "mongoose.Schema.Types.Subdocument", ""], + ["mongoose.Aggregate", "mongoose.Aggregate", "Member[addCursorFlag,addFields,allowDiskUse,append,collation,count,facet,graphLookup,group,hint,limit,lookup,match,model,near,option,project,read,readConcern,redact,replaceRoot,sample,search,session,skip,sort,sortByCount,unionWith,unwind].ReturnValue"], + ["mongoose.Aggregate", "mongoose.AggregateStatic", "Instance"], + ["mongoose.Aggregate", "mongoose.Model", "Member[aggregate].ReturnValue"], + ["mongoose.AggregateStatic", "mongoose", "Member[Aggregate]"], + ["mongoose.Collection", "mongoose.Collection", "Instance"], + ["mongoose.Collection", "mongoose.Connection", "Member[collection].ReturnValue"], + ["mongoose.Collection", "mongoose.Connection", "Member[collections].AnyMember"], + ["mongoose.Collection", "mongoose.Document", "Member[collection]"], + ["mongoose.Collection", "mongoose.Model", "Member[collection]"], + ["mongoose.Collection", "mongoose", "Member[Collection]"], + ["mongoose.CollectionBase", "mongoose.Collection", ""], + ["mongoose.CompileModelOptions", "mongoose.Connection", "Member[model].Argument[3]"], + ["mongoose.CompileModelOptions", "mongoose", "Member[model].Argument[3]"], + ["mongoose.ConnectOptions", "mongoose.Connection", "Member[openUri].WithArity[1,2,3].Argument[1]"], + ["mongoose.ConnectOptions", "mongoose", "Member[connect,createConnection].WithArity[1,2,3].Argument[1]"], + ["mongoose.Connection", "mongoose.Collection", "Argument[1]"], + ["mongoose.Connection", "mongoose.CollectionBase", "Member[conn]"], + ["mongoose.Connection", "mongoose.CompileModelOptions", "Member[connection]"], + ["mongoose.Connection", "mongoose.Connection", "Member[asPromise].ReturnValue.Awaited"], + ["mongoose.Connection", "mongoose.Connection", "Member[deleteModel,plugin,setClient,useDb].ReturnValue"], + ["mongoose.Connection", "mongoose.Connection", "Member[openUri].Argument[2].TypeVar[mongoose.Callback.0]"], + ["mongoose.Connection", "mongoose.Connection", "Member[openUri].WithArity[1,2].ReturnValue.Awaited"], + ["mongoose.Connection", "mongoose.Connection", "Member[openUri].WithArity[2,3].ReturnValue"], + ["mongoose.Connection", "mongoose.Connection", "Member[openUri].WithArity[2].Argument[1].TypeVar[mongoose.Callback.0]"], + ["mongoose.Connection", "mongoose.ConnectionStatic", "Instance"], + ["mongoose.Connection", "mongoose.Document", "Member[db]"], + ["mongoose.Connection", "mongoose.Model", "Member[db]"], + ["mongoose.Connection", "mongoose", "Member[connection]"], + ["mongoose.Connection", "mongoose", "Member[connections].ArrayElement"], + ["mongoose.Connection", "mongoose", "Member[createConnection].Argument[2].TypeVar[mongoose.Callback.0]"], + ["mongoose.Connection", "mongoose", "Member[createConnection].WithArity[0,1,2].ReturnValue"], + ["mongoose.Connection", "mongoose", "Member[createConnection].WithArity[2].Argument[1].TypeVar[mongoose.Callback.0]"], + ["mongoose.ConnectionStatic", "mongoose", "Member[Connection]"], + ["mongoose.Cursor", "mongoose.Query", "Member[cursor].ReturnValue"], + ["mongoose.DiscriminatorModel", "mongoose.DiscriminatorSchema", "TypeVar[mongoose.Schema.1]"], + ["mongoose.Document", "mongoose.Document", "Member[$getAllSubdocs,$getPopulatedDocs].ReturnValue.ArrayElement"], + ["mongoose.Document", "mongoose.Document", "Member[$inc,$parent,$set,depopulate,increment,init,overwrite,set].ReturnValue"], + ["mongoose.Document", "mongoose.Document", "Member[delete,deleteOne].WithArity[0,1].ReturnValue.TypeVar[mongoose.QueryWithHelpers.1]"], + ["mongoose.Document", "mongoose.Document", "Member[equals].Argument[0]"], + ["mongoose.Document", "mongoose.Document", "Member[init].Argument[2].TypeVar[mongoose.Callback.0]"], + ["mongoose.Document", "mongoose.Document", "Member[remove,save].WithArity[0,1].ReturnValue.Awaited"], + ["mongoose.Document", "mongoose.Document", "Member[replaceOne,update,updateOne].ReturnValue.TypeVar[mongoose.Query.1]"], + ["mongoose.Document", "mongoose.Document", "Member[save].Argument[1].TypeVar[mongoose.Callback.0]"], + ["mongoose.Document", "mongoose.Document", "Member[save].WithArity[1].Argument[0].TypeVar[mongoose.Callback.0]"], + ["mongoose.Document", "mongoose.DocumentStatic", "Instance"], + ["mongoose.Document", "mongoose.Error.VersionErrorStatic", "Argument[0]"], + ["mongoose.Document", "mongoose.HydratedDocument", ""], + ["mongoose.Document", "mongoose.HydratedDocument", "TypeVar[mongoose.Require_id.0]"], + ["mongoose.Document", "mongoose.Model", "Member[bulkSave].Argument[0].ArrayElement"], + ["mongoose.Document", "mongoose.TVirtualPathFN", "Argument[2]"], + ["mongoose.Document", "mongoose.Types.Subdocument", ""], + ["mongoose.Document", "mongoose.Types.Subdocument", "Member[$parent,ownerDocument,parent].ReturnValue"], + ["mongoose.Document", "mongoose.VirtualType", "Member[applyGetters,applySetters].Argument[1]"], + ["mongoose.DocumentStatic", "mongoose", "Member[Document]"], + ["mongoose.Error.VersionErrorStatic", "mongoose", "Member[Error].Member[VersionError]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Instance"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[$where,count,countDocuments,deleteMany,deleteOne,distinct,estimatedDocumentCount,find,geoSearch,remove,replaceOne,update,updateMany,updateOne,where].ReturnValue.TypeVar[mongoose.QueryWithHelpers.1]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[$where,find,geoSearch,where].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0].ArrayElement"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[create,insertMany].WithArity[2].Argument[1].TypeVar[mongoose.Callback.0].ArrayElement"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[create].WithArity[0..,1,2].ReturnValue.Awaited.ArrayElement"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[create].WithArity[1].ReturnValue.Awaited"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[create].WithArity[2].Argument[1].TypeVar[mongoose.Callback.0]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[exists].WithArity[1,2].ReturnValue.TypeVar[mongoose.QueryWithHelpers.1]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[find,insertMany].WithArity[3].Argument[2].TypeVar[mongoose.Callback.0].ArrayElement"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[findById,findByIdAndDelete,findByIdAndRemove,findOne,findOneAndDelete,findOneAndRemove].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0,mongoose.QueryWithHelpers.1]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[findById,findOne].Argument[3].TypeVar[mongoose.Callback.0]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[findByIdAndDelete,findByIdAndRemove,findOneAndDelete,findOneAndRemove].Argument[2].Argument[1]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[findByIdAndUpdate,findOneAndReplace,findOneAndUpdate].WithArity[0,1,2,3,4].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0,mongoose.QueryWithHelpers.1]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[findByIdAndUpdate,findOneAndReplace,findOneAndUpdate].WithArity[3,4].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0].TypeVar[mongoose.ModifyResult.0]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[findByIdAndUpdate].WithArity[0,1,2,4].Argument[3].Argument[1]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[findByIdAndUpdate].WithArity[3].Argument[2,3].Argument[1]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[findById].WithArity[1,2,3].Argument[2].TypeVar[mongoose.Callback.0]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[findOneAndReplace].WithArity[0,1,2,3,4].Argument[3].Argument[1]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[findOneAndUpdate].WithArity[3,4].Argument[3].Argument[1]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[findOne].WithArity[0,1,2].Argument[1,2].TypeVar[mongoose.Callback.0]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[findOne].WithArity[3].Argument[2].TypeVar[mongoose.Callback.0]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[find].Argument[3].TypeVar[mongoose.Callback.0].ArrayElement"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[find].WithArity[0].Argument[0].TypeVar[mongoose.Callback.0].ArrayElement"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[find].WithArity[1].Argument[0,1,2].TypeVar[mongoose.Callback.0].ArrayElement"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[find].WithArity[2].Argument[1,2].TypeVar[mongoose.Callback.0].ArrayElement"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[geoSearch].Argument[2].TypeVar[mongoose.Callback.0].ArrayElement"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[hydrate].ReturnValue"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[init].ReturnValue.Awaited"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[insertMany].WithArity[1,2].ReturnValue.Awaited.ArrayElement"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[populate].WithArity[2,3].Argument[2].TypeVar[mongoose.Callback.0]"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[populate].WithArity[2,3].Argument[2].TypeVar[mongoose.Callback.0].ArrayElement"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[populate].WithArity[2,3].ReturnValue.Awaited"], + ["mongoose.HydratedDocument", "mongoose.Model", "Member[populate].WithArity[2,3].ReturnValue.Awaited.ArrayElement"], + ["mongoose.HydratedDocument", "mongoose.TVirtualPathFN", "Argument[1].TypeVar[mongoose.VirtualType.0]"], + ["mongoose.HydratedDocument", "mongoose.VirtualPathFunctions", "Member[options].TypeVar[mongoose.VirtualTypeOptions.0]"], + ["mongoose.InsertManyOptions", "mongoose.Model", "Member[insertMany].WithArity[2,3].Argument[1]"], + ["mongoose.Model", "mongoose.AcceptsDiscriminator", "Member[discriminator].WithArity[2,3].ReturnValue"], + ["mongoose.Model", "mongoose.Aggregate", "Member[model].Argument[0]"], + ["mongoose.Model", "mongoose.Connection", "Member[model].WithArity[1,2,3,4].ReturnValue"], + ["mongoose.Model", "mongoose.Connection", "Member[models].AnyMember"], + ["mongoose.Model", "mongoose.DiscriminatorModel", ""], + ["mongoose.Model", "mongoose.Document", "Member[$model].ReturnValue"], + ["mongoose.Model", "mongoose.Document", "Member[populate].Argument[2]"], + ["mongoose.Model", "mongoose.Model", "Member[discriminators].AnyMember"], + ["mongoose.Model", "mongoose.Models", "AnyMember"], + ["mongoose.Model", "mongoose.PopulateOptions", "Member[model]"], + ["mongoose.Model", "mongoose.Query", "Member[cast].Argument[0]"], + ["mongoose.Model", "mongoose.Query", "Member[populate].Argument[2]"], + ["mongoose.Model", "mongoose.Schema.Types.Array", "Member[discriminator].WithArity[2,3].ReturnValue"], + ["mongoose.Model", "mongoose.Schema.Types.DocumentArray", "Member[discriminator].WithArity[2,3].ReturnValue"], + ["mongoose.Model", "mongoose.Schema.Types.Subdocument", "Member[discriminator].WithArity[2,3].ReturnValue"], + ["mongoose.Model", "mongoose.SchemaStatic", "Instance.TypeVar[mongoose.Schema.1]"], + ["mongoose.Model", "mongoose", "Member[Model]"], + ["mongoose.Model", "mongoose", "Member[model].ReturnValue"], + ["mongoose.Models", "mongoose", "Member[models]"], + ["mongoose.PopulateOption", "mongoose.InsertManyOptions", ""], + ["mongoose.PopulateOption", "mongoose.QueryOptions", ""], + ["mongoose.PopulateOptions", "mongoose.Document", "Member[populate].Argument[4]"], + ["mongoose.PopulateOptions", "mongoose.Document", "Member[populate].WithArity[1,2].Argument[0]"], + ["mongoose.PopulateOptions", "mongoose.Document", "Member[populate].WithArity[1,2].Argument[0].ArrayElement"], + ["mongoose.PopulateOptions", "mongoose.Model", "Member[populate].Argument[1]"], + ["mongoose.PopulateOptions", "mongoose.Model", "Member[populate].Argument[1].ArrayElement"], + ["mongoose.PopulateOptions", "mongoose.PopulateOption", "Member[populate]"], + ["mongoose.PopulateOptions", "mongoose.PopulateOption", "Member[populate].ArrayElement"], + ["mongoose.PopulateOptions", "mongoose.PopulateOptions", "Member[populate]"], + ["mongoose.PopulateOptions", "mongoose.PopulateOptions", "Member[populate].ArrayElement"], + ["mongoose.PopulateOptions", "mongoose.Query", "Member[populate].WithArity[1].Argument[0]"], + ["mongoose.PopulateOptions", "mongoose.Query", "Member[populate].WithArity[1].Argument[0].ArrayElement"], + ["mongoose.Query", "mongoose.Document", "Member[replaceOne,update,updateOne].ReturnValue"], + ["mongoose.Query", "mongoose.HydratedDocument", "TypeVar[mongoose.Require_id.0]"], + ["mongoose.Query", "mongoose.Query", "Member[all,allowDiskUse,and,batchSize,box,circle,clone,collation,comment,elemMatch,equals,exists,explain,geometry,gt,gte,hint,in,intersects,j,limit,lt,lte,maxDistance,maxScan,maxTimeMS,merge,mod,ne,near,nin,nor,or,polygon,read,readConcern,regex,remove,select,session,set,setOptions,size,skip,slice,snapshot,sort,tailable,w,where,within,wtimeout].ReturnValue"], + ["mongoose.Query", "mongoose.Query", "Member[error].WithArity[1].ReturnValue"], + ["mongoose.Query", "mongoose.Query", "Member[merge].Argument[0]"], + ["mongoose.Query", "mongoose.QueryStatic", "Instance"], + ["mongoose.Query", "mongoose.QueryWithHelpers", ""], + ["mongoose.QueryOptions", "mongoose.Document", "Member[delete,deleteOne,remove].WithArity[0,1,2].Argument[0]"], + ["mongoose.QueryOptions", "mongoose.Document", "Member[replaceOne,update,updateOne].Argument[1]"], + ["mongoose.QueryOptions", "mongoose.Model", "Member[countDocuments,findByIdAndDelete,findByIdAndRemove,findOneAndDelete,findOneAndRemove].Argument[1]"], + ["mongoose.QueryOptions", "mongoose.Model", "Member[deleteMany,deleteOne].WithArity[0,1,2,3].Argument[1]"], + ["mongoose.QueryOptions", "mongoose.Model", "Member[estimatedDocumentCount].Argument[0]"], + ["mongoose.QueryOptions", "mongoose.Model", "Member[find,findById].WithArity[1,2,3,4].Argument[2]"], + ["mongoose.QueryOptions", "mongoose.Model", "Member[findByIdAndUpdate,findOne,findOneAndReplace,findOneAndUpdate].WithArity[0,1,2,3,4].Argument[2]"], + ["mongoose.QueryOptions", "mongoose.Model", "Member[replaceOne,update,updateMany,updateOne].Argument[2]"], + ["mongoose.QueryOptions", "mongoose.PopulateOptions", "Member[options]"], + ["mongoose.QueryOptions", "mongoose.Query", "Member[countDocuments,findByIdAndDelete,findOneAndDelete,findOneAndRemove].Argument[1]"], + ["mongoose.QueryOptions", "mongoose.Query", "Member[cursor,estimatedDocumentCount,setOptions].Argument[0]"], + ["mongoose.QueryOptions", "mongoose.Query", "Member[cursor].ReturnValue.TypeVar[mongoose.Cursor.1]"], + ["mongoose.QueryOptions", "mongoose.Query", "Member[deleteMany,deleteOne].WithArity[0,1,2,3].Argument[1]"], + ["mongoose.QueryOptions", "mongoose.Query", "Member[findByIdAndUpdate,findOne,findOneAndUpdate].WithArity[0,1,2,3,4].Argument[2]"], + ["mongoose.QueryOptions", "mongoose.Query", "Member[find].WithArity[1,2,3,4].Argument[2]"], + ["mongoose.QueryOptions", "mongoose.Query", "Member[getOptions].ReturnValue"], + ["mongoose.QueryOptions", "mongoose.Query", "Member[replaceOne,update,updateMany,updateOne].Argument[2]"], + ["mongoose.QueryOptions", "mongoose.VirtualTypeOptions", "Member[options]"], + ["mongoose.QueryStatic", "mongoose", "Member[Query]"], + ["mongoose.QueryWithHelpers", "mongoose.Document", "Member[delete,deleteOne].WithArity[0,1].ReturnValue"], + ["mongoose.QueryWithHelpers", "mongoose.Model", "Member[$where,count,countDocuments,deleteMany,deleteOne,distinct,estimatedDocumentCount,find,findById,findByIdAndDelete,findByIdAndRemove,findOne,findOneAndDelete,findOneAndRemove,geoSearch,remove,replaceOne,update,updateMany,updateOne,where].ReturnValue"], + ["mongoose.QueryWithHelpers", "mongoose.Model", "Member[exists].WithArity[1,2].ReturnValue"], + ["mongoose.QueryWithHelpers", "mongoose.Model", "Member[findByIdAndUpdate,findOneAndReplace,findOneAndUpdate].WithArity[0,1,2,3,4].ReturnValue"], + ["mongoose.QueryWithHelpers", "mongoose.Query", "Member[$where,count,countDocuments,deleteMany,deleteOne,distinct,estimatedDocumentCount,find,findByIdAndDelete,findOne,findOneAndDelete,findOneAndRemove,lean,orFail,populate,replaceOne,transform,update,updateMany,updateOne].ReturnValue"], + ["mongoose.QueryWithHelpers", "mongoose.Query", "Member[findByIdAndUpdate,findOneAndUpdate].WithArity[0,1,2,3,4].ReturnValue"], + ["mongoose.QueryWithHelpers", "mongoose.Query", "Member[toConstructor].ReturnValue.Instance"], + ["mongoose.Schema.Types.Array", "mongoose.Schema.Types.Array", "Member[enum].ReturnValue"], + ["mongoose.Schema.Types.Array", "mongoose.Schema.Types.ArrayStatic", "Instance"], + ["mongoose.Schema.Types.ArrayStatic", "mongoose", "Member[Schema].Member[Types].Member[Array]"], + ["mongoose.Schema.Types.DocumentArray", "mongoose.Schema.Types.DocumentArrayStatic", "Instance"], + ["mongoose.Schema.Types.DocumentArrayStatic", "mongoose", "Member[Schema].Member[Types].Member[DocumentArray]"], + ["mongoose.Schema.Types.Subdocument", "mongoose.Schema.Types.SubdocumentStatic", "Instance"], + ["mongoose.Schema.Types.SubdocumentStatic", "mongoose.Schema.Types.DocumentArray", "Member[caster]"], + ["mongoose.Schema.Types.SubdocumentStatic", "mongoose", "Member[Schema].Member[Types].Member[Subdocument]"], + ["mongoose.SchemaStatic", "mongoose", "Member[Schema]"], + ["mongoose.SessionOperation", "mongoose.Aggregate", ""], + ["mongoose.SessionOperation", "mongoose.Query", ""], + ["mongoose.TVirtualPathFN", "mongoose.VirtualPathFunctions", "Member[get,set]"], + ["mongoose.Types.Array", "mongoose.Types.DocumentArray", ""], + ["mongoose.Types.ArraySubdocument", "mongoose.Types.ArraySubdocumentStatic", "Instance"], + ["mongoose.Types.ArraySubdocumentStatic", "mongoose", "Member[Types].Member[ArraySubdocument]"], + ["mongoose.Types.DocumentArray", "mongoose.Types.ArraySubdocument", "Member[parentArray].ReturnValue"], + ["mongoose.Types.DocumentArray", "mongoose.Types.DocumentArrayStatic", "Instance"], + ["mongoose.Types.DocumentArray", "mongoose/inferschematype.ResolvePathType", "TypeVar[mongoose.IfEquals.3]"], + ["mongoose.Types.DocumentArrayStatic", "mongoose", "Member[Types].Member[DocumentArray]"], + ["mongoose.Types.ObjectId", "mongoose/inferschematype.ResolvePathType", ""], + ["mongoose.Types.Subdocument", "mongoose.Types.ArraySubdocument", ""], + ["mongoose.Types.Subdocument", "mongoose.Types.DocumentArray", "Member[create,id].ReturnValue"], + ["mongoose.Types.Subdocument", "mongoose.Types.DocumentArray", "TypeVar[mongoose.Types.Array.0]"], + ["mongoose.Types.Subdocument", "mongoose.Types.SubdocumentStatic", "Instance"], + ["mongoose.Types.SubdocumentStatic", "mongoose", "Member[Types].Member[Subdocument]"], + ["mongoose.VirtualType", "mongoose.TVirtualPathFN", "Argument[1]"], + ["mongoose.VirtualType", "mongoose.VirtualType", "Member[get,set].Argument[0].Argument[1]"], + ["mongoose.VirtualType", "mongoose.VirtualType", "Member[get,set].ReturnValue"], + ["mongoose.VirtualType", "mongoose.VirtualTypeStatic", "Instance"], + ["mongoose.VirtualTypeOptions", "mongoose.VirtualPathFunctions", "Member[options]"], + ["mongoose.VirtualTypeStatic", "mongoose", "Member[VirtualType]"], + ["mongoose/inferschematype.ResolvePathType", "mongoose/inferschematype.ObtainDocumentPathType", ""], + ["mongoose/inferschematype.ResolvePathType", "mongoose/inferschematype.ResolvePathType", "TypeVar[mongoose.IfEquals.3].ArrayElement"], + ["mongoose/inferschematype.ResolvePathType", "mongoose/inferschematype.ResolvePathType", "TypeVar[mongoose.IfEquals.3].TypeVar[mongoose.Types.DocumentArray.0]"], + ["mongoose", "mongoose", "Member[mongoose]"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["mongodb.AbstractCursor", "", "", "Member[addCursorFlag,batchSize,maxTimeMS,withReadConcern,withReadPreference].ReturnValue", "type"], + ["mongodb.BulkOperationBase", "", "", "Member[addToOperationsList,raw].ReturnValue", "type"], + ["mongodb.FindCursor", "", "", "Member[addQueryModifier,allowDiskUse,collation,comment,filter,hint,limit,max,maxAwaitTimeMS,maxTimeMS,min,returnKey,showRecordId,skip,sort].ReturnValue", "type"], + ["mongodb.FindOperators", "", "", "Member[arrayFilters,collation,upsert].ReturnValue", "type"], + ["mongodb.GridFSBucketWriteStream", "", "", "Member[end].ReturnValue", "type"], + ["mongodb.MongoClient", "", "", "Member[connect].Argument[0].TypeVar[mongodb.Callback.0]", "type"], + ["mongodb.MongoClient", "", "", "Member[connect].WithArity[0].ReturnValue.Awaited", "type"], + ["mongodb.OrderedBulkOperation", "", "", "Member[addToOperationsList].ReturnValue", "type"], + ["mongodb.TypedEventEmitter", "", "", "Member[addListener,off,on,once,prependListener,prependOnceListener,removeAllListeners,removeListener,setMaxListeners].ReturnValue", "type"], + ["mongodb.UnorderedBulkOperation", "", "", "Member[addToOperationsList].ReturnValue", "type"], + ["mongoose.Aggregate", "", "", "Member[addCursorFlag,addFields,allowDiskUse,append,collation,count,facet,graphLookup,group,hint,limit,lookup,match,model,near,option,project,read,readConcern,redact,replaceRoot,sample,search,session,skip,sort,sortByCount,unionWith,unwind].ReturnValue", "type"], + ["mongoose.Connection", "", "", "Member[asPromise].ReturnValue.Awaited", "type"], + ["mongoose.Connection", "", "", "Member[deleteModel,setClient].ReturnValue", "type"], + ["mongoose.Cursor", "", "", "Member[addCursorFlag].ReturnValue", "type"], + ["mongoose.Document", "", "", "Member[$inc,$set,depopulate,increment,init,overwrite,set].ReturnValue", "type"], + ["mongoose.Document", "", "", "Member[delete,deleteOne].WithArity[0,1].ReturnValue.TypeVar[mongoose.QueryWithHelpers.1]", "type"], + ["mongoose.Document", "", "", "Member[getChanges].ReturnValue.TypeVar[mongoose.UpdateQuery.0]", "type"], + ["mongoose.Document", "", "", "Member[init].Argument[2].TypeVar[mongoose.Callback.0]", "type"], + ["mongoose.Document", "", "", "Member[populate].Argument[1,5].TypeVar[mongoose.Callback.0].TypeVar[mongoose.MergeType.0]", "type"], + ["mongoose.Document", "", "", "Member[populate].WithArity[1,2,3,4,5].ReturnValue.Awaited.TypeVar[mongoose.MergeType.0]", "type"], + ["mongoose.Document", "", "", "Member[remove,save].WithArity[0,1].ReturnValue.Awaited", "type"], + ["mongoose.Document", "", "", "Member[replaceOne,update,updateOne].ReturnValue.TypeVar[mongoose.Query.1]", "type"], + ["mongoose.Document", "", "", "Member[save].Argument[1].TypeVar[mongoose.Callback.0]", "type"], + ["mongoose.Document", "", "", "Member[save].WithArity[1].Argument[0].TypeVar[mongoose.Callback.0]", "type"], + ["mongoose.Document", "", "", "Member[update,updateOne].Argument[0].TypeVar[mongoose.UpdateQuery.0]", "type"], + ["mongoose.Query", "", "", "Member[all,allowDiskUse,and,batchSize,box,circle,clone,collation,comment,elemMatch,equals,exists,explain,geometry,gt,gte,hint,in,intersects,j,limit,lt,lte,maxDistance,maxScan,maxTimeMS,merge,mod,ne,near,nin,nor,or,polygon,read,readConcern,regex,select,session,set,setOptions,size,skip,slice,snapshot,sort,tailable,w,where,within,wtimeout].ReturnValue", "type"], + ["mongoose.Query", "", "", "Member[error].WithArity[1].ReturnValue", "type"], + ["mongoose.Schema.Types.Array", "", "", "Member[enum].ReturnValue", "type"], + ["mongoose.SessionOperation", "", "", "Member[session].ReturnValue", "type"], + ["mongoose.Types.Array", "", "", "Member[pull,remove,set].ReturnValue", "type"], + ["mongoose.Types.ObjectId", "", "", "Member[_id]", "type"], + ["mongoose.VirtualType", "", "", "Member[get,set].ReturnValue", "type"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeVariableModel" + }, + "data": [ + ["mongodb.Callback.0", "Argument[1]"], + ["mongoose.Callback.0", "Argument[1]"], + ["mongoose.Cursor.0", "Member[eachAsync].WithArity[1,2,3].Argument[0].Argument[0]"], + ["mongoose.Cursor.0", "Member[eachAsync].WithArity[2,3].Argument[0].Argument[0].ArrayElement"], + ["mongoose.Cursor.0", "Member[map].Argument[0].Argument[0]"], + ["mongoose.Cursor.0", "Member[next].Argument[0].TypeVar[mongoose.Callback.0]"], + ["mongoose.Cursor.0", "Member[next].WithArity[0].ReturnValue.Awaited"], + ["mongoose.Cursor.1", "Member[map].ReturnValue.TypeVar[mongoose.Cursor.1]"], + ["mongoose.Cursor.1", "Member[options]"], + ["mongoose.DiscriminatorSchema.1", "TypeVar[mongoose.Schema.1]"], + ["mongoose.DiscriminatorSchema.1", "TypeVar[mongoose.Schema.1].TypeVar[mongoose.DiscriminatorModel.1]"], + ["mongoose.Document.0", "Member[_id]"], + ["mongoose.Document.0", "Member[equals].Argument[0].TypeVar[mongoose.Document.0]"], + ["mongoose.FilterQuery.0", "TypeVar[mongoose._FilterQuery.0]"], + ["mongoose.IfAny.1", ""], + ["mongoose.IfAny.2", ""], + ["mongoose.IfEquals.3", ""], + ["mongoose.LeanDocumentOrArray.0", ""], + ["mongoose.LeanDocumentOrArray.0", "TypeVar[mongoose.LeanDocument.0]"], + ["mongoose.LeanDocumentOrArrayWithRawType.0", ""], + ["mongoose.ModifyResult.0", "Member[value].TypeVar[mongoose.Require_id.0]"], + ["mongoose.PluginFunction.1", "Argument[0].TypeVar[mongoose.Schema.1]"], + ["mongoose.PostMiddlewareFunction.1", "Argument[0]"], + ["mongoose.Query.0", "Member[exec].Argument[0].TypeVar[mongoose.Callback.0]"], + ["mongoose.Query.0", "Member[exec].WithArity[0].ReturnValue.Awaited"], + ["mongoose.Query.0", "Member[lean].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0].TypeVar[mongoose.LeanDocumentOrArray.0,mongoose.LeanDocumentOrArrayWithRawType.0]"], + ["mongoose.Query.0", "Member[orFail].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0]"], + ["mongoose.Query.0", "Member[populate].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0].TypeVar[mongoose.UnpackedIntersection.0]"], + ["mongoose.Query.0", "Member[then,transform].Argument[0].Argument[0]"], + ["mongoose.Query.0", "Member[toConstructor].ReturnValue.Instance.TypeVar[mongoose.QueryWithHelpers.0]"], + ["mongoose.Query.1", "Member[$where,count,countDocuments,deleteMany,deleteOne,distinct,estimatedDocumentCount,find,lean,orFail,populate,replaceOne,transform,update,updateMany,updateOne].ReturnValue.TypeVar[mongoose.QueryWithHelpers.1]"], + ["mongoose.Query.1", "Member[$where,find].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0].ArrayElement"], + ["mongoose.Query.1", "Member[_mongooseOptions].TypeVar[mongoose.MongooseQueryOptions.0]"], + ["mongoose.Query.1", "Member[and,nor,or].Argument[0].ArrayElement.TypeVar[mongoose.FilterQuery.0]"], + ["mongoose.Query.1", "Member[countDocuments,findByIdAndDelete,findOneAndDelete,findOneAndRemove].Argument[1].TypeVar[mongoose.QueryOptions.0]"], + ["mongoose.Query.1", "Member[countDocuments].WithArity[1,2,3].Argument[0].TypeVar[mongoose.FilterQuery.0]"], + ["mongoose.Query.1", "Member[count].WithArity[1,2].Argument[0].TypeVar[mongoose.FilterQuery.0]"], + ["mongoose.Query.1", "Member[cursor,estimatedDocumentCount,setOptions].Argument[0].TypeVar[mongoose.QueryOptions.0]"], + ["mongoose.Query.1", "Member[cursor].ReturnValue.TypeVar[mongoose.Cursor.0]"], + ["mongoose.Query.1", "Member[cursor].ReturnValue.TypeVar[mongoose.Cursor.1].TypeVar[mongoose.QueryOptions.0]"], + ["mongoose.Query.1", "Member[deleteMany,deleteOne].WithArity[0,1,2,3].Argument[0].TypeVar[mongoose.FilterQuery.0]"], + ["mongoose.Query.1", "Member[deleteMany,deleteOne].WithArity[0,1,2,3].Argument[1].TypeVar[mongoose.QueryOptions.0]"], + ["mongoose.Query.1", "Member[distinct].Argument[1].TypeVar[mongoose.FilterQuery.0]"], + ["mongoose.Query.1", "Member[findByIdAndDelete,findOne,findOneAndDelete,findOneAndRemove].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0,mongoose.QueryWithHelpers.1]"], + ["mongoose.Query.1", "Member[findByIdAndDelete,findOneAndDelete,findOneAndRemove].Argument[2].Argument[1]"], + ["mongoose.Query.1", "Member[findByIdAndUpdate,findOneAndUpdate,update,updateMany,updateOne].Argument[1].TypeVar[mongoose.UpdateQuery.0]"], + ["mongoose.Query.1", "Member[findByIdAndUpdate,findOneAndUpdate].WithArity[0,1,2,3,4].Argument[2].TypeVar[mongoose.QueryOptions.0]"], + ["mongoose.Query.1", "Member[findByIdAndUpdate,findOneAndUpdate].WithArity[0,1,2,3,4].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0,mongoose.QueryWithHelpers.1]"], + ["mongoose.Query.1", "Member[findByIdAndUpdate].WithArity[0,1,2,4].Argument[3].Argument[1]"], + ["mongoose.Query.1", "Member[findByIdAndUpdate].WithArity[3].Argument[2,3].Argument[1]"], + ["mongoose.Query.1", "Member[findOne,findOneAndDelete,findOneAndRemove,findOneAndUpdate,merge,remove,replaceOne,setQuery,update,updateMany,updateOne].Argument[0].TypeVar[mongoose.FilterQuery.0]"], + ["mongoose.Query.1", "Member[findOneAndUpdate].Argument[3].Argument[1]"], + ["mongoose.Query.1", "Member[findOneAndUpdate].Argument[3].Argument[2].TypeVar[mongoose.ModifyResult.0]"], + ["mongoose.Query.1", "Member[findOneAndUpdate].WithArity[3,4].ReturnValue.TypeVar[mongoose.QueryWithHelpers.0].TypeVar[mongoose.ModifyResult.0]"], + ["mongoose.Query.1", "Member[findOne].Argument[3].TypeVar[mongoose.Callback.0]"], + ["mongoose.Query.1", "Member[findOne].WithArity[0,1,2,3].Argument[2].TypeVar[mongoose.Callback.0,mongoose.QueryOptions.0]"], + ["mongoose.Query.1", "Member[findOne].WithArity[0,1,2].Argument[1].TypeVar[mongoose.Callback.0,mongoose.ProjectionType.0]"], + ["mongoose.Query.1", "Member[findOne].WithArity[3,4].Argument[1].TypeVar[mongoose.ProjectionType.0]"], + ["mongoose.Query.1", "Member[findOne].WithArity[4].Argument[2].TypeVar[mongoose.QueryOptions.0]"], + ["mongoose.Query.1", "Member[find].Argument[3].TypeVar[mongoose.Callback.0].ArrayElement"], + ["mongoose.Query.1", "Member[find].WithArity[0].Argument[0].TypeVar[mongoose.Callback.0].ArrayElement"], + ["mongoose.Query.1", "Member[find].WithArity[1,2,3,4].Argument[0].TypeVar[mongoose.FilterQuery.0]"], + ["mongoose.Query.1", "Member[find].WithArity[1,2,3,4].Argument[1].TypeVar[mongoose.ProjectionType.0]"], + ["mongoose.Query.1", "Member[find].WithArity[1,2,3,4].Argument[2].TypeVar[mongoose.QueryOptions.0]"], + ["mongoose.Query.1", "Member[find].WithArity[1].Argument[0,1,2].TypeVar[mongoose.Callback.0].ArrayElement"], + ["mongoose.Query.1", "Member[find].WithArity[2].Argument[1,2].TypeVar[mongoose.Callback.0].ArrayElement"], + ["mongoose.Query.1", "Member[find].WithArity[3].Argument[2].TypeVar[mongoose.Callback.0].ArrayElement"], + ["mongoose.Query.1", "Member[getFilter,getQuery].ReturnValue.TypeVar[mongoose.FilterQuery.0]"], + ["mongoose.Query.1", "Member[getOptions].ReturnValue.TypeVar[mongoose.QueryOptions.0]"], + ["mongoose.Query.1", "Member[getUpdate].ReturnValue.TypeVar[mongoose.UpdateQuery.0]"], + ["mongoose.Query.1", "Member[projection].WithArity[0,1].Argument[0].TypeVar[mongoose.ProjectionFields.0]"], + ["mongoose.Query.1", "Member[projection].WithArity[0,1].ReturnValue.TypeVar[mongoose.ProjectionFields.0]"], + ["mongoose.Query.1", "Member[remove].ReturnValue.TypeVar[mongoose.Query.1]"], + ["mongoose.Query.1", "Member[replaceOne,update,updateMany,updateOne].Argument[2].TypeVar[mongoose.QueryOptions.0]"], + ["mongoose.Query.1", "Member[replaceOne].Argument[1]"], + ["mongoose.Query.1", "Member[setUpdate].Argument[0].TypeVar[mongoose.UpdateQuery.0]"], + ["mongoose.Query.1", "Member[toConstructor].ReturnValue.Instance.TypeVar[mongoose.QueryWithHelpers.1]"], + ["mongoose.QueryOptions.0", "Member[projection].TypeVar[mongoose.ProjectionType.0]"], + ["mongoose.QueryWithHelpers.0", "TypeVar[mongoose.Query.0]"], + ["mongoose.QueryWithHelpers.1", "TypeVar[mongoose.Query.1]"], + ["mongoose.Require_id.0", ""], + ["mongoose.Require_id.0", "TypeVar[mongoose.IfAny.1,mongoose.IfAny.2]"], + ["mongoose.RootQuerySelector.0", "Member[$and,$nor,$or].ArrayElement.TypeVar[mongoose.FilterQuery.0]"], + ["mongoose.Schema.1", "Member[discriminator].ReturnValue.TypeVar[mongoose.DiscriminatorSchema.1]"], + ["mongoose.Schema.1", "Member[plugin].Argument[0].TypeVar[mongoose.PluginFunction.1]"], + ["mongoose.Schema.1", "Member[post].Argument[2].TypeVar[mongoose.ErrorHandlingMiddlewareFunction.0,mongoose.PostMiddlewareFunction.0,mongoose.PostMiddlewareFunction.1]"], + ["mongoose.Schema.1", "Member[post].WithArity[2].WithStringArgument[0=insertMany].Argument[1].TypeVar[mongoose.ErrorHandlingMiddlewareFunction.0,mongoose.PostMiddlewareFunction.0,mongoose.PostMiddlewareFunction.1]"], + ["mongoose.Types.Array.0", "Member[$pop,$shift,shift].ReturnValue"], + ["mongoose.Types.Array.0", "Member[set].Argument[1]"], + ["mongoose.Types.DocumentArray.0", "Member[create,id].ReturnValue"], + ["mongoose.Types.DocumentArray.0", "Member[create,id].ReturnValue.TypeVar[mongoose.Types.Subdocument.0].TypeVar[mongoose.InferId.0]"], + ["mongoose.Types.DocumentArray.0", "Member[push].Argument[0].ArrayElement.TypeVar[mongoose.AnyKeys.0]"], + ["mongoose.Types.DocumentArray.0", "TypeVar[mongoose.Types.Array.0]"], + ["mongoose.Types.DocumentArray.0", "TypeVar[mongoose.Types.Array.0].TypeVar[mongoose.Types.Subdocument.0].TypeVar[mongoose.InferId.0]"], + ["mongoose.Types.Subdocument.0", "TypeVar[mongoose.Document.0]"], + ["mongoose.UnpackedIntersection.0", ""], + ["mongoose.UpdateQuery.0", "TypeVar[mongoose._UpdateQuery.0].TypeVar[mongoose._UpdateQueryDef.0]"], + ["mongoose.VirtualType.0", "Member[get,set].Argument[0].Argument[1].TypeVar[mongoose.VirtualType.0]"], + ["mongoose.VirtualType.0", "Member[get,set].Argument[0].Argument[2]"], + ["mongoose.VirtualTypeOptions.0", "Member[foreignField,localField].Argument[0]"], + ["mongoose._FilterQuery.0", "TypeVar[mongoose.RootQuerySelector.0]"], + ["mongoose._UpdateQuery.0", "Member[$currentDate,$inc,$max,$min,$mul,$pop,$pull,$pullAll,$push,$set,$setOnInsert,$unset].TypeVar[mongoose.AnyKeys.0]"] + ] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/frameworks/mssql/model.yml b/javascript/ql/lib/semmle/javascript/frameworks/mssql/model.yml deleted file mode 100644 index bbc3279b81d3..000000000000 --- a/javascript/ql/lib/semmle/javascript/frameworks/mssql/model.yml +++ /dev/null @@ -1,39 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - [mssql.ConnectionPool, mssql.ConnectionPool, "Member[connect].WithArity[0].ReturnValue.Awaited"] - - [mssql.ConnectionPool, mssql.ConnectionPoolStatic, Instance] - - [mssql.ConnectionPool, "mssql/msnodesqlv8", "Member[connect].ReturnValue.Awaited"] - - [mssql.ConnectionPool, "mssql/msnodesqlv8", "Member[pool]"] - - [mssql.ConnectionPool, mssql, "Member[connect].ReturnValue.Awaited"] - - [mssql.ConnectionPool, mssql, "Member[pool]"] - - [mssql.ConnectionPoolStatic, "mssql/msnodesqlv8", "Member[ConnectionPool]"] - - [mssql.ConnectionPoolStatic, mssql, "Member[ConnectionPool]"] - - [mssql.PreparedStatement, mssql.PreparedStatement, "Member[input,output].ReturnValue"] - - [mssql.PreparedStatement, mssql.PreparedStatement, "Member[prepare].WithArity[0,1,2].ReturnValue"] - - [mssql.PreparedStatement, mssql.PreparedStatement, "Member[unprepare].WithArity[1].ReturnValue"] - - [mssql.PreparedStatement, mssql.PreparedStatementStatic, Instance] - - [mssql.PreparedStatement, mssql.Request, "Member[pstatement]"] - - [mssql.PreparedStatementStatic, "mssql/msnodesqlv8", "Member[PreparedStatement]"] - - [mssql.PreparedStatementStatic, mssql, "Member[PreparedStatement]"] - - [mssql.Request, mssql.ConnectionPool, "Member[request].ReturnValue"] - - [mssql.Request, mssql.PreparedStatement, "Member[execute].WithArity[2].ReturnValue"] - - [mssql.Request, mssql.Request, "Member[input,output,replaceInput].ReturnValue"] - - [mssql.Request, mssql.Request, "Member[replaceOutput].ReturnValue"] - - [mssql.Request, mssql.RequestStatic, Instance] - - [mssql.Request, mssql.Transaction, "Member[request].ReturnValue"] - - [mssql.RequestStatic, "mssql/msnodesqlv8", "Member[Request]"] - - [mssql.RequestStatic, mssql, "Member[Request]"] - - [mssql.Transaction, mssql.ConnectionPool, "Member[transaction].ReturnValue"] - - [mssql.Transaction, mssql.PreparedStatement, "Member[transaction]"] - - [mssql.Transaction, mssql.Request, "Member[transaction]"] - - [mssql.Transaction, mssql.Transaction, "Member[begin].WithArity[0,1,2].ReturnValue"] - - [mssql.Transaction, mssql.Transaction, "Member[begin].WithArity[0,1].ReturnValue.Awaited"] - - [mssql.Transaction, mssql.TransactionStatic, Instance] - - [mssql.TransactionStatic, "mssql/msnodesqlv8", "Member[Transaction]"] - - [mssql.TransactionStatic, mssql, "Member[Transaction]"] - - [mssql.config, mssql.ConnectionPoolStatic, "WithArity[1,2].Argument[0]"] - - [mssql.config, "mssql/msnodesqlv8", "Member[connect].Argument[0]"] - - [mssql.config, mssql, "Member[connect].Argument[0]"] diff --git a/javascript/ql/lib/semmle/javascript/frameworks/mssql/mssql.model.json b/javascript/ql/lib/semmle/javascript/frameworks/mssql/mssql.model.json new file mode 100644 index 000000000000..d2247521f5cc --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/frameworks/mssql/mssql.model.json @@ -0,0 +1,46 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["mssql.ConnectionPool", "mssql.ConnectionPool", "Member[connect].WithArity[0].ReturnValue.Awaited"], + ["mssql.ConnectionPool", "mssql.ConnectionPoolStatic", "Instance"], + ["mssql.ConnectionPool", "mssql/msnodesqlv8", "Member[connect].ReturnValue.Awaited"], + ["mssql.ConnectionPool", "mssql/msnodesqlv8", "Member[pool]"], + ["mssql.ConnectionPool", "mssql", "Member[connect].ReturnValue.Awaited"], + ["mssql.ConnectionPool", "mssql", "Member[pool]"], + ["mssql.ConnectionPoolStatic", "mssql/msnodesqlv8", "Member[ConnectionPool]"], + ["mssql.ConnectionPoolStatic", "mssql", "Member[ConnectionPool]"], + ["mssql.PreparedStatement", "mssql.PreparedStatement", "Member[input,output].ReturnValue"], + ["mssql.PreparedStatement", "mssql.PreparedStatement", "Member[prepare].WithArity[0,1,2].ReturnValue"], + ["mssql.PreparedStatement", "mssql.PreparedStatement", "Member[unprepare].WithArity[1].ReturnValue"], + ["mssql.PreparedStatement", "mssql.PreparedStatementStatic", "Instance"], + ["mssql.PreparedStatement", "mssql.Request", "Member[pstatement]"], + ["mssql.PreparedStatementStatic", "mssql/msnodesqlv8", "Member[PreparedStatement]"], + ["mssql.PreparedStatementStatic", "mssql", "Member[PreparedStatement]"], + ["mssql.Request", "mssql.ConnectionPool", "Member[request].ReturnValue"], + ["mssql.Request", "mssql.PreparedStatement", "Member[execute].WithArity[2].ReturnValue"], + ["mssql.Request", "mssql.Request", "Member[input,output,replaceInput].ReturnValue"], + ["mssql.Request", "mssql.Request", "Member[replaceOutput].ReturnValue"], + ["mssql.Request", "mssql.RequestStatic", "Instance"], + ["mssql.Request", "mssql.Transaction", "Member[request].ReturnValue"], + ["mssql.RequestStatic", "mssql/msnodesqlv8", "Member[Request]"], + ["mssql.RequestStatic", "mssql", "Member[Request]"], + ["mssql.Transaction", "mssql.ConnectionPool", "Member[transaction].ReturnValue"], + ["mssql.Transaction", "mssql.PreparedStatement", "Member[transaction]"], + ["mssql.Transaction", "mssql.Request", "Member[transaction]"], + ["mssql.Transaction", "mssql.Transaction", "Member[begin].WithArity[0,1,2].ReturnValue"], + ["mssql.Transaction", "mssql.Transaction", "Member[begin].WithArity[0,1].ReturnValue.Awaited"], + ["mssql.Transaction", "mssql.TransactionStatic", "Instance"], + ["mssql.TransactionStatic", "mssql/msnodesqlv8", "Member[Transaction]"], + ["mssql.TransactionStatic", "mssql", "Member[Transaction]"], + ["mssql.config", "mssql.ConnectionPoolStatic", "WithArity[1,2].Argument[0]"], + ["mssql.config", "mssql/msnodesqlv8", "Member[connect].Argument[0]"], + ["mssql.config", "mssql", "Member[connect].Argument[0]"] + ] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/frameworks/mysql/model.yml b/javascript/ql/lib/semmle/javascript/frameworks/mysql/model.yml deleted file mode 100644 index 506dc42b7c3b..000000000000 --- a/javascript/ql/lib/semmle/javascript/frameworks/mysql/model.yml +++ /dev/null @@ -1,70 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - [mysql.Connection, mysql.Pool, "Member[on,addListener].WithStringArgument[0=acquire,0=connection,0=release].Argument[1].Argument[0]"] - - [mysql.Connection, mysql.PoolConnection, ""] - - [mysql.Connection, mysql.Query, "Member[RowDataPacket].Argument[2]"] - - [mysql.Connection, mysql, "Member[createConnection].ReturnValue"] - - [mysql.ConnectionConfig, mysql.Connection, "Member[config]"] - - [mysql.ConnectionConfig, mysql.PoolConfig, ""] - - [mysql.ConnectionConfig, mysql, "Member[createConnection].Argument[0]"] - - [mysql.ConnectionOptions, mysql.Connection, "Member[changeUser].WithArity[1,2].Argument[0]"] - - [mysql.ConnectionOptions, mysql.ConnectionConfig, ""] - - [mysql.Pool, mysql.PoolCluster, "Member[of].ReturnValue"] - - [mysql.Pool, mysql, "Member[createPool].ReturnValue"] - - [mysql.PoolCluster, mysql, "Member[createPoolCluster].ReturnValue"] - - [mysql.PoolConfig, mysql.PoolCluster, "Member[add].Argument[1]"] - - [mysql.PoolConfig, mysql.PoolCluster, "Member[add].WithArity[1].Argument[0]"] - - [mysql.PoolConfig, mysql, "Member[createPool].Argument[0]"] - - [mysql.PoolConnection, mysql.Pool, "Member[acquireConnection].Argument[0]"] - - [mysql.PoolConnection, mysql.Pool, "Member[acquireConnection].Argument[1].Argument[1]"] - - [mysql.PoolConnection, mysql.Pool, "Member[getConnection].Argument[0].Argument[1]"] - - [mysql.PoolConnection, mysql.PoolCluster, "Member[getConnection].Argument[1,2].Argument[1]"] - - [mysql.PoolConnection, mysql.PoolCluster, "Member[getConnection].WithArity[1].Argument[0].Argument[1]"] - - [mysql.Query, mysql.Query, "Member[on].ReturnValue"] - - [mysql.Query, mysql.QueryFunction, ReturnValue] - - [mysql.Query, mysql.QueryFunction, "WithArity[1].Argument[0]"] - - [mysql.QueryFunction, mysql.Connection, "Member[createQuery,query]"] - - [mysql.QueryFunction, mysql.Pool, "Member[query]"] - - [mysql2.Connection, mysql2.PoolConnection, ""] - - [mysql2.Connection, mysql2.authPlugins, "Argument[0].Member[connection]"] - - [mysql2.Connection, mysql2, "Member[createConnection].ReturnValue"] - - [mysql2.ConnectionOptions, mysql2.PoolOptions, ""] - - [mysql2.ConnectionOptions, "mysql2/promise.Connection", "Member[changeUser].Argument[0]"] - - [mysql2.ConnectionOptions, "mysql2/promise.Connection", "Member[config]"] - - [mysql2.ConnectionOptions, "mysql2/promise", "Member[createConnection].Argument[0]"] - - [mysql2.ConnectionOptions, mysql2, "Member[createConnection].Argument[0]"] - - [mysql2.Pool, mysql2.Pool, "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue"] - - [mysql2.Pool, mysql2, "Member[createPool].ReturnValue"] - - [mysql2.PoolConnection, mysql2.Pool, "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=acquire,0=connection,0=release].Argument[1].Argument[0]"] - - [mysql2.PoolConnection, mysql2.Pool, "Member[getConnection].Argument[0].Argument[1]"] - - [mysql2.PoolOptions, "mysql2/promise", "Member[createPool].Argument[0]"] - - [mysql2.PoolOptions, mysql2, "Member[createPool].Argument[0]"] - - [mysql2.authPlugins, mysql2.ConnectionOptions, "Member[authPlugins].AnyMember"] - - ["mysql2/promise.Connection", mysql2.Connection, "Member[promise].ReturnValue"] - - ["mysql2/promise.Connection", "mysql2/promise.PoolConnection", ""] - - ["mysql2/promise.Connection", "mysql2/promise", "Member[createConnectionPromise].ReturnValue.Awaited"] - - ["mysql2/promise.Connection", "mysql2/promise", "Member[createConnection].ReturnValue.Awaited"] - - ["mysql2/promise.Connection", mysql2, "Member[createConnectionPromise].ReturnValue.Awaited"] - - ["mysql2/promise.Pool", mysql2.Pool, "Member[promise].ReturnValue"] - - ["mysql2/promise.Pool", "mysql2/promise.Pool", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue"] - - ["mysql2/promise.Pool", "mysql2/promise", "Member[createPool].ReturnValue"] - - ["mysql2/promise.PoolConnection", mysql2.PoolConnection, "Member[promise].ReturnValue"] - - ["mysql2/promise.PoolConnection", "mysql2/promise.Pool", "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=acquire,0=connection,0=release].Argument[1].Argument[0]"] - - ["mysql2/promise.PoolConnection", "mysql2/promise.Pool", "Member[getConnection].ReturnValue.Awaited"] - - ["mysql2/typings/mysql.Connection", mysql2.Connection, ""] - - ["mysql2/typings/mysql.Connection", mysql2.Pool, ""] - - ["mysql2/typings/mysql.PoolConnection", mysql2.PoolConnection, ""] - - ["mysql2/typings/mysql/lib/Connection", "mysql2/typings/mysql.Connection", ""] - - ["mysql2/typings/mysql/lib/Connection", "mysql2/typings/mysql/lib/PoolConnection", ""] - - ["mysql2/typings/mysql/lib/PoolConnection", "mysql2/typings/mysql.PoolConnection", ""] - - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - [mysql2.Pool, "", "", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue", type] - - ["mysql2/promise.Pool", "", "", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue", type] - - ["mysql2/typings/mysql/lib/Connection", "", "", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue", type] diff --git a/javascript/ql/lib/semmle/javascript/frameworks/mysql/mysql.model.json b/javascript/ql/lib/semmle/javascript/frameworks/mysql/mysql.model.json new file mode 100644 index 000000000000..41cbd1549f75 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/frameworks/mysql/mysql.model.json @@ -0,0 +1,80 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["mysql.Connection", "mysql.Pool", "Member[on,addListener].WithStringArgument[0=acquire,0=connection,0=release].Argument[1].Argument[0]"], + ["mysql.Connection", "mysql.PoolConnection", ""], + ["mysql.Connection", "mysql.Query", "Member[RowDataPacket].Argument[2]"], + ["mysql.Connection", "mysql", "Member[createConnection].ReturnValue"], + ["mysql.ConnectionConfig", "mysql.Connection", "Member[config]"], + ["mysql.ConnectionConfig", "mysql.PoolConfig", ""], + ["mysql.ConnectionConfig", "mysql", "Member[createConnection].Argument[0]"], + ["mysql.ConnectionOptions", "mysql.Connection", "Member[changeUser].WithArity[1,2].Argument[0]"], + ["mysql.ConnectionOptions", "mysql.ConnectionConfig", ""], + ["mysql.Pool", "mysql.PoolCluster", "Member[of].ReturnValue"], + ["mysql.Pool", "mysql", "Member[createPool].ReturnValue"], + ["mysql.PoolCluster", "mysql", "Member[createPoolCluster].ReturnValue"], + ["mysql.PoolConfig", "mysql.PoolCluster", "Member[add].Argument[1]"], + ["mysql.PoolConfig", "mysql.PoolCluster", "Member[add].WithArity[1].Argument[0]"], + ["mysql.PoolConfig", "mysql", "Member[createPool].Argument[0]"], + ["mysql.PoolConnection", "mysql.Pool", "Member[acquireConnection].Argument[0]"], + ["mysql.PoolConnection", "mysql.Pool", "Member[acquireConnection].Argument[1].Argument[1]"], + ["mysql.PoolConnection", "mysql.Pool", "Member[getConnection].Argument[0].Argument[1]"], + ["mysql.PoolConnection", "mysql.PoolCluster", "Member[getConnection].Argument[1,2].Argument[1]"], + ["mysql.PoolConnection", "mysql.PoolCluster", "Member[getConnection].WithArity[1].Argument[0].Argument[1]"], + ["mysql.Query", "mysql.Query", "Member[on].ReturnValue"], + ["mysql.Query", "mysql.QueryFunction", "ReturnValue"], + ["mysql.Query", "mysql.QueryFunction", "WithArity[1].Argument[0]"], + ["mysql.QueryFunction", "mysql.Connection", "Member[createQuery,query]"], + ["mysql.QueryFunction", "mysql.Pool", "Member[query]"], + ["mysql2.Connection", "mysql2.PoolConnection", ""], + ["mysql2.Connection", "mysql2.authPlugins", "Argument[0].Member[connection]"], + ["mysql2.Connection", "mysql2", "Member[createConnection].ReturnValue"], + ["mysql2.ConnectionOptions", "mysql2.PoolOptions", ""], + ["mysql2.ConnectionOptions", "mysql2/promise.Connection", "Member[changeUser].Argument[0]"], + ["mysql2.ConnectionOptions", "mysql2/promise.Connection", "Member[config]"], + ["mysql2.ConnectionOptions", "mysql2/promise", "Member[createConnection].Argument[0]"], + ["mysql2.ConnectionOptions", "mysql2", "Member[createConnection].Argument[0]"], + ["mysql2.Pool", "mysql2.Pool", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue"], + ["mysql2.Pool", "mysql2", "Member[createPool].ReturnValue"], + ["mysql2.PoolConnection", "mysql2.Pool", "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=acquire,0=connection,0=release].Argument[1].Argument[0]"], + ["mysql2.PoolConnection", "mysql2.Pool", "Member[getConnection].Argument[0].Argument[1]"], + ["mysql2.PoolOptions", "mysql2/promise", "Member[createPool].Argument[0]"], + ["mysql2.PoolOptions", "mysql2", "Member[createPool].Argument[0]"], + ["mysql2.authPlugins", "mysql2.ConnectionOptions", "Member[authPlugins].AnyMember"], + ["mysql2/promise.Connection", "mysql2.Connection", "Member[promise].ReturnValue"], + ["mysql2/promise.Connection", "mysql2/promise.PoolConnection", ""], + ["mysql2/promise.Connection", "mysql2/promise", "Member[createConnectionPromise].ReturnValue.Awaited"], + ["mysql2/promise.Connection", "mysql2/promise", "Member[createConnection].ReturnValue.Awaited"], + ["mysql2/promise.Connection", "mysql2", "Member[createConnectionPromise].ReturnValue.Awaited"], + ["mysql2/promise.Pool", "mysql2.Pool", "Member[promise].ReturnValue"], + ["mysql2/promise.Pool", "mysql2/promise.Pool", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue"], + ["mysql2/promise.Pool", "mysql2/promise", "Member[createPool].ReturnValue"], + ["mysql2/promise.PoolConnection", "mysql2.PoolConnection", "Member[promise].ReturnValue"], + ["mysql2/promise.PoolConnection", "mysql2/promise.Pool", "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=acquire,0=connection,0=release].Argument[1].Argument[0]"], + ["mysql2/promise.PoolConnection", "mysql2/promise.Pool", "Member[getConnection].ReturnValue.Awaited"], + ["mysql2/typings/mysql.Connection", "mysql2.Connection", ""], + ["mysql2/typings/mysql.Connection", "mysql2.Pool", ""], + ["mysql2/typings/mysql.PoolConnection", "mysql2.PoolConnection", ""], + ["mysql2/typings/mysql/lib/Connection", "mysql2/typings/mysql.Connection", ""], + ["mysql2/typings/mysql/lib/Connection", "mysql2/typings/mysql/lib/PoolConnection", ""], + ["mysql2/typings/mysql/lib/PoolConnection", "mysql2/typings/mysql.PoolConnection", ""] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["mysql2.Pool", "", "", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue", "type"], + ["mysql2/promise.Pool", "", "", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue", "type"], + ["mysql2/typings/mysql/lib/Connection", "", "", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue", "type"] + ] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/frameworks/pg/model.yml b/javascript/ql/lib/semmle/javascript/frameworks/pg/model.yml deleted file mode 100644 index 27207b6aff9c..000000000000 --- a/javascript/ql/lib/semmle/javascript/frameworks/pg/model.yml +++ /dev/null @@ -1,108 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - [events, "pg-cursor", ""] - - [events, "pg-promise/pg-subset.pg.IClient", ""] - - [events, "pg-promise/pg-subset.pg.IConnection", ""] - - [events, "pg-promise/pg-subset.pg.IPool", ""] - - [events, pg.ClientBase, ""] - - [events, pg.Events, ""] - - [events, pg.Pool, ""] - - [global.NodeJS.EventEmitter, events, ""] - - ["pg-cursor.Static", "pg-cursor", ""] - - ["pg-cursor", "pg-cursor.Static", Instance] - - ["pg-pool.Static", "pg-pool", ""] - - ["pg-pool", "pg-pool.Static", Instance] - - ["pg-pool", "pg-pool", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue"] - - ["pg-promise.IBaseProtocol", "pg-promise.IConnected", ""] - - ["pg-promise.IBaseProtocol", "pg-promise.IDatabase", ""] - - ["pg-promise.IBaseProtocol", "pg-promise.ITask", ""] - - ["pg-promise.IBaseProtocol", "pg-promise/typescript/pg-promise.IBaseProtocol", ""] - - ["pg-promise.IConnected", "pg-promise.IDatabase", "Member[connect].ReturnValue.Awaited"] - - ["pg-promise.IConnected", "pg-promise/typescript/pg-promise.IConnected", ""] - - ["pg-promise.IDatabase", "pg-promise.IInitOptions", "Member[extend].Argument[0]"] - - ["pg-promise.IDatabase", "pg-promise.IMain", ReturnValue] - - ["pg-promise.IDatabase", "pg-promise/typescript/pg-promise.IDatabase", ""] - - ["pg-promise.IInitOptions", "pg-promise.ILibConfig", "Member[options]"] - - ["pg-promise.IInitOptions", "pg-promise/typescript/pg-promise.IInitOptions", ""] - - ["pg-promise.IInitOptions", "pg-promise", "Argument[0]"] - - ["pg-promise.ILibConfig", "pg-promise.IDatabase", "Member[$config]"] - - ["pg-promise.ILibConfig", "pg-promise/typescript/pg-promise.ILibConfig", ""] - - ["pg-promise.IMain", "pg-promise.ILibConfig", "Member[pgp]"] - - ["pg-promise.IMain", "pg-promise/typescript/pg-promise.IMain", ""] - - ["pg-promise.IMain", "pg-promise", ReturnValue] - - ["pg-promise.ITask", "pg-promise.IBaseProtocol", "Member[task,taskIf,tx,txIf].Argument[1].Argument[0]"] - - ["pg-promise.ITask", "pg-promise.IBaseProtocol", "Member[task,taskIf,tx,txIf].WithArity[1].Argument[0].Argument[0]"] - - ["pg-promise.ITask", "pg-promise.IBaseProtocol", "Member[taskIf].WithArity[2].Argument[0].Member[cnd].Argument[0]"] - - ["pg-promise.ITask", "pg-promise.IBaseProtocol", "Member[txIf].WithArity[2].Argument[0].Member[cnd,reusable].Argument[0]"] - - ["pg-promise.ITask", "pg-promise/typescript/pg-promise.ITask", ""] - - ["pg-promise/pg-subset.pg.IClient", "pg-promise.IMain", "Argument[0].TypeVar[pg-promise/pg-subset.pg.IConnectionParameters.0]"] - - ["pg-promise/pg-subset.pg.IClient", "pg-promise.IMain", "ReturnValue.TypeVar[pg-promise.IDatabase.1]"] - - ["pg-promise/pg-subset.pg.IClient", "pg-promise/pg-subset", "Member[Client].Instance"] - - ["pg-promise/pg-subset.pg.IClient", "pg-promise", "Argument[0].TypeVar[pg-promise.IInitOptions.1]"] - - ["pg-promise/pg-subset.pg.IConnection", "pg-promise/pg-subset.pg.IClient", "Member[connection]"] - - ["pg-promise/pg-subset.pg.IPool", "pg-promise.IDatabase", "Member[$pool]"] - - [pg.Client, "pg-pool.Static", "Instance.TypeVar[pg-pool.0]"] - - [pg.Client, "pg-promise/pg-subset.pg.IClient", ""] - - [pg.Client, pg.ClientStatic, Instance] - - [pg.Client, pg.Events, "Member[addListener,on,once,prependListener,prependOnceListener].Argument[1].Argument[1]"] - - [pg.ClientBase, pg.Client, ""] - - [pg.ClientBase, pg.PoolClient, ""] - - [pg.ClientStatic, pg, "Member[Client]"] - - [pg.Connection, "pg-promise/pg-subset.pg.IConnection", ""] - - [pg.Events, pg.Events, "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue"] - - [pg.Events, pg.EventsStatic, Instance] - - [pg.EventsStatic, pg, "Member[Events]"] - - [pg.Pool, "pg-pool", ""] - - [pg.Pool, "pg-promise/pg-subset.pg.IPool", ""] - - [pg.Pool, pg.Pool, "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue"] - - [pg.Pool, pg.PoolStatic, Instance] - - [pg.PoolClient, "pg-pool", "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=acquire,0=connect,0=remove].Argument[1].Argument[0]"] - - [pg.PoolClient, "pg-pool", "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=error].Argument[1].Argument[1]"] - - [pg.PoolClient, "pg-pool", "Member[connect].Argument[0].Argument[1]"] - - [pg.PoolClient, "pg-pool", "Member[connect].WithArity[0].ReturnValue.Awaited"] - - [pg.PoolClient, pg.Pool, "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=acquire,0=connect,0=remove].Argument[1].Argument[0]"] - - [pg.PoolClient, pg.Pool, "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=error].Argument[1].Argument[1]"] - - [pg.PoolClient, pg.Pool, "Member[connect].Argument[0].Argument[1]"] - - [pg.PoolClient, pg.Pool, "Member[connect].WithArity[0].ReturnValue.Awaited"] - - [pg.PoolStatic, pg, "Member[Pool]"] - - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - [global.NodeJS.EventEmitter, "", "", "Member[addListener,off,on,once,prependListener,prependOnceListener,removeAllListeners,removeListener,setMaxListeners].ReturnValue", type] - - ["pg-pool", "", "", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue", type] - - [pg.ClientBase, "", "", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue", type] - - [pg.Events, "", "", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue", type] - - [pg.Pool, "", "", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue", type] - - - addsTo: - pack: codeql/javascript-all - extensible: typeVariableModel - data: - - ["pg-pool.0", "Member[Client].TypeVar[pg-pool.ClientLikeCtr.0]"] - - ["pg-pool.0", "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=acquire,0=connect,0=remove].Argument[1].Argument[0]"] - - ["pg-pool.0", "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=error].Argument[1].Argument[1]"] - - ["pg-pool.0", "Member[connect].Argument[0].Argument[1]"] - - ["pg-pool.0", "Member[connect].WithArity[0].ReturnValue.Awaited"] - - ["pg-pool.ClientLikeCtr.0", Instance] - - ["pg-promise.IConnected.1", "Member[client]"] - - ["pg-promise.IConnectionOptions.0", "Member[onLost].Argument[1].TypeVar[pg-promise.ILostContext.0]"] - - ["pg-promise.IDatabase.1", "Member[$cn].TypeVar[pg-promise/pg-subset.pg.IConnectionParameters.0]"] - - ["pg-promise.IDatabase.1", "Member[$config].TypeVar[pg-promise.ILibConfig.1]"] - - ["pg-promise.IDatabase.1", "Member[connect].Argument[0].TypeVar[pg-promise.IConnectionOptions.0]"] - - ["pg-promise.IDatabase.1", "Member[connect].ReturnValue.Awaited.TypeVar[pg-promise.IConnected.1]"] - - ["pg-promise.IEventContext.0", "Member[client]"] - - ["pg-promise.IInitOptions.1", "Member[connect,disconnect].Argument[0]"] - - ["pg-promise.IInitOptions.1", "Member[error].Argument[1].TypeVar[pg-promise.IEventContext.0]"] - - ["pg-promise.IInitOptions.1", "Member[extend].Argument[0].TypeVar[pg-promise.IDatabase.1]"] - - ["pg-promise.IInitOptions.1", "Member[query,task,transact].Argument[0].TypeVar[pg-promise.IEventContext.0]"] - - ["pg-promise.IInitOptions.1", "Member[receive].Argument[2].TypeVar[pg-promise.IEventContext.0]"] - - ["pg-promise.ILibConfig.1", "Member[options].TypeVar[pg-promise.IInitOptions.1]"] - - ["pg-promise.ILibConfig.1", "Member[pgp].TypeVar[pg-promise.IMain.1]"] - - ["pg-promise.ILostContext.0", "Member[client]"] - - ["pg-promise/pg-promise.XPromise.0", Awaited] - - ["pg-promise/pg-subset.pg.IConnectionParameters.0", "Member[Client].Instance"] diff --git a/javascript/ql/lib/semmle/javascript/frameworks/pg/pg.model.json b/javascript/ql/lib/semmle/javascript/frameworks/pg/pg.model.json new file mode 100644 index 000000000000..be02435a7dbc --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/frameworks/pg/pg.model.json @@ -0,0 +1,121 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["events", "pg-cursor", ""], + ["events", "pg-promise/pg-subset.pg.IClient", ""], + ["events", "pg-promise/pg-subset.pg.IConnection", ""], + ["events", "pg-promise/pg-subset.pg.IPool", ""], + ["events", "pg.ClientBase", ""], + ["events", "pg.Events", ""], + ["events", "pg.Pool", ""], + ["global.NodeJS.EventEmitter", "events", ""], + ["pg-cursor.Static", "pg-cursor", ""], + ["pg-cursor", "pg-cursor.Static", "Instance"], + ["pg-pool.Static", "pg-pool", ""], + ["pg-pool", "pg-pool.Static", "Instance"], + ["pg-pool", "pg-pool", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue"], + ["pg-promise.IBaseProtocol", "pg-promise.IConnected", ""], + ["pg-promise.IBaseProtocol", "pg-promise.IDatabase", ""], + ["pg-promise.IBaseProtocol", "pg-promise.ITask", ""], + ["pg-promise.IBaseProtocol", "pg-promise/typescript/pg-promise.IBaseProtocol", ""], + ["pg-promise.IConnected", "pg-promise.IDatabase", "Member[connect].ReturnValue.Awaited"], + ["pg-promise.IConnected", "pg-promise/typescript/pg-promise.IConnected", ""], + ["pg-promise.IDatabase", "pg-promise.IInitOptions", "Member[extend].Argument[0]"], + ["pg-promise.IDatabase", "pg-promise.IMain", "ReturnValue"], + ["pg-promise.IDatabase", "pg-promise/typescript/pg-promise.IDatabase", ""], + ["pg-promise.IInitOptions", "pg-promise.ILibConfig", "Member[options]"], + ["pg-promise.IInitOptions", "pg-promise/typescript/pg-promise.IInitOptions", ""], + ["pg-promise.IInitOptions", "pg-promise", "Argument[0]"], + ["pg-promise.ILibConfig", "pg-promise.IDatabase", "Member[$config]"], + ["pg-promise.ILibConfig", "pg-promise/typescript/pg-promise.ILibConfig", ""], + ["pg-promise.IMain", "pg-promise.ILibConfig", "Member[pgp]"], + ["pg-promise.IMain", "pg-promise/typescript/pg-promise.IMain", ""], + ["pg-promise.IMain", "pg-promise", "ReturnValue"], + ["pg-promise.ITask", "pg-promise.IBaseProtocol", "Member[task,taskIf,tx,txIf].Argument[1].Argument[0]"], + ["pg-promise.ITask", "pg-promise.IBaseProtocol", "Member[task,taskIf,tx,txIf].WithArity[1].Argument[0].Argument[0]"], + ["pg-promise.ITask", "pg-promise.IBaseProtocol", "Member[taskIf].WithArity[2].Argument[0].Member[cnd].Argument[0]"], + ["pg-promise.ITask", "pg-promise.IBaseProtocol", "Member[txIf].WithArity[2].Argument[0].Member[cnd,reusable].Argument[0]"], + ["pg-promise.ITask", "pg-promise/typescript/pg-promise.ITask", ""], + ["pg-promise/pg-subset.pg.IClient", "pg-promise.IMain", "Argument[0].TypeVar[pg-promise/pg-subset.pg.IConnectionParameters.0]"], + ["pg-promise/pg-subset.pg.IClient", "pg-promise.IMain", "ReturnValue.TypeVar[pg-promise.IDatabase.1]"], + ["pg-promise/pg-subset.pg.IClient", "pg-promise/pg-subset", "Member[Client].Instance"], + ["pg-promise/pg-subset.pg.IClient", "pg-promise", "Argument[0].TypeVar[pg-promise.IInitOptions.1]"], + ["pg-promise/pg-subset.pg.IConnection", "pg-promise/pg-subset.pg.IClient", "Member[connection]"], + ["pg-promise/pg-subset.pg.IPool", "pg-promise.IDatabase", "Member[$pool]"], + ["pg.Client", "pg-pool.Static", "Instance.TypeVar[pg-pool.0]"], + ["pg.Client", "pg-promise/pg-subset.pg.IClient", ""], + ["pg.Client", "pg.ClientStatic", "Instance"], + ["pg.Client", "pg.Events", "Member[addListener,on,once,prependListener,prependOnceListener].Argument[1].Argument[1]"], + ["pg.ClientBase", "pg.Client", ""], + ["pg.ClientBase", "pg.PoolClient", ""], + ["pg.ClientStatic", "pg", "Member[Client]"], + ["pg.Connection", "pg-promise/pg-subset.pg.IConnection", ""], + ["pg.Events", "pg.Events", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue"], + ["pg.Events", "pg.EventsStatic", "Instance"], + ["pg.EventsStatic", "pg", "Member[Events]"], + ["pg.Pool", "pg-pool", ""], + ["pg.Pool", "pg-promise/pg-subset.pg.IPool", ""], + ["pg.Pool", "pg.Pool", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue"], + ["pg.Pool", "pg.PoolStatic", "Instance"], + ["pg.PoolClient", "pg-pool", "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=acquire,0=connect,0=remove].Argument[1].Argument[0]"], + ["pg.PoolClient", "pg-pool", "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=error].Argument[1].Argument[1]"], + ["pg.PoolClient", "pg-pool", "Member[connect].Argument[0].Argument[1]"], + ["pg.PoolClient", "pg-pool", "Member[connect].WithArity[0].ReturnValue.Awaited"], + ["pg.PoolClient", "pg.Pool", "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=acquire,0=connect,0=remove].Argument[1].Argument[0]"], + ["pg.PoolClient", "pg.Pool", "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=error].Argument[1].Argument[1]"], + ["pg.PoolClient", "pg.Pool", "Member[connect].Argument[0].Argument[1]"], + ["pg.PoolClient", "pg.Pool", "Member[connect].WithArity[0].ReturnValue.Awaited"], + ["pg.PoolStatic", "pg", "Member[Pool]"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["global.NodeJS.EventEmitter", "", "", "Member[addListener,off,on,once,prependListener,prependOnceListener,removeAllListeners,removeListener,setMaxListeners].ReturnValue", "type"], + ["pg-pool", "", "", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue", "type"], + ["pg.ClientBase", "", "", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue", "type"], + ["pg.Events", "", "", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue", "type"], + ["pg.Pool", "", "", "Member[addListener,on,once,prependListener,prependOnceListener].ReturnValue", "type"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeVariableModel" + }, + "data": [ + ["pg-pool.0", "Member[Client].TypeVar[pg-pool.ClientLikeCtr.0]"], + ["pg-pool.0", "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=acquire,0=connect,0=remove].Argument[1].Argument[0]"], + ["pg-pool.0", "Member[addListener,on,once,prependListener,prependOnceListener].WithArity[2].WithStringArgument[0=error].Argument[1].Argument[1]"], + ["pg-pool.0", "Member[connect].Argument[0].Argument[1]"], + ["pg-pool.0", "Member[connect].WithArity[0].ReturnValue.Awaited"], + ["pg-pool.ClientLikeCtr.0", "Instance"], + ["pg-promise.IConnected.1", "Member[client]"], + ["pg-promise.IConnectionOptions.0", "Member[onLost].Argument[1].TypeVar[pg-promise.ILostContext.0]"], + ["pg-promise.IDatabase.1", "Member[$cn].TypeVar[pg-promise/pg-subset.pg.IConnectionParameters.0]"], + ["pg-promise.IDatabase.1", "Member[$config].TypeVar[pg-promise.ILibConfig.1]"], + ["pg-promise.IDatabase.1", "Member[connect].Argument[0].TypeVar[pg-promise.IConnectionOptions.0]"], + ["pg-promise.IDatabase.1", "Member[connect].ReturnValue.Awaited.TypeVar[pg-promise.IConnected.1]"], + ["pg-promise.IEventContext.0", "Member[client]"], + ["pg-promise.IInitOptions.1", "Member[connect,disconnect].Argument[0]"], + ["pg-promise.IInitOptions.1", "Member[error].Argument[1].TypeVar[pg-promise.IEventContext.0]"], + ["pg-promise.IInitOptions.1", "Member[extend].Argument[0].TypeVar[pg-promise.IDatabase.1]"], + ["pg-promise.IInitOptions.1", "Member[query,task,transact].Argument[0].TypeVar[pg-promise.IEventContext.0]"], + ["pg-promise.IInitOptions.1", "Member[receive].Argument[2].TypeVar[pg-promise.IEventContext.0]"], + ["pg-promise.ILibConfig.1", "Member[options].TypeVar[pg-promise.IInitOptions.1]"], + ["pg-promise.ILibConfig.1", "Member[pgp].TypeVar[pg-promise.IMain.1]"], + ["pg-promise.ILostContext.0", "Member[client]"], + ["pg-promise/pg-promise.XPromise.0", "Awaited"], + ["pg-promise/pg-subset.pg.IConnectionParameters.0", "Member[Client].Instance"] + ] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/frameworks/sequelize/model.yml b/javascript/ql/lib/semmle/javascript/frameworks/sequelize/model.yml deleted file mode 100644 index b25152b37642..000000000000 --- a/javascript/ql/lib/semmle/javascript/frameworks/sequelize/model.yml +++ /dev/null @@ -1,282 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - [sequelize.Sequelize, "Member[query].Argument[0].Member[query]", "sql-injection"] - - [sequelize.Sequelize, "Member[query].Argument[0]", "sql-injection"] - - [sequelize.SequelizeStaticAndInstance, "Member[asIs,literal].Argument[0]", "sql-injection"] - - [sequelize, "Argument[0..].Member[password]", "credentials-password"] - - [sequelize, "Argument[0..].Member[username]", "credentials-username"] - - [sequelize, "Argument[1]", "credentials-username"] - - [sequelize, "Argument[2]", "credentials-password"] - - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["sequelize-typescript.AssociationCountOptions", "sequelize-typescript.Model", "Member[$count].Argument[1]"] - - ["sequelize-typescript.AssociationCountOptions", "sequelize-typescript/model/model/association/association-count-options.AssociationCountOptions", ""] - - ["sequelize-typescript.AssociationGetOptions", "sequelize-typescript.Model", "Member[$get].Argument[1]"] - - ["sequelize-typescript.AssociationGetOptions", "sequelize-typescript.Model", "Member[$has].Argument[2]"] - - ["sequelize-typescript.AssociationGetOptions", "sequelize-typescript/model/model/association/association-get-options.AssociationGetOptions", ""] - - ["sequelize-typescript.BaseAssociation", "sequelize-typescript.BaseAssociationStatic", Instance] - - ["sequelize-typescript.BaseAssociation", "sequelize-typescript.BelongsToAssociation", ""] - - ["sequelize-typescript.BaseAssociation", "sequelize-typescript.BelongsToManyAssociation", ""] - - ["sequelize-typescript.BaseAssociation", "sequelize-typescript.HasAssociation", ""] - - ["sequelize-typescript.BaseAssociation", "sequelize-typescript/associations/shared/association-service", "Member[addAssociation].Argument[1]"] - - ["sequelize-typescript.BaseAssociation", "sequelize-typescript/associations/shared/association-service", "Member[getAssociations,getAssociationsByRelation].ReturnValue.ArrayElement"] - - ["sequelize-typescript.BaseAssociation", "sequelize-typescript/associations/shared/association-service", "Member[setAssociations].Argument[1].ArrayElement"] - - ["sequelize-typescript.BaseAssociation", "sequelize-typescript/associations/shared/base-association.BaseAssociation", ""] - - ["sequelize-typescript.BaseAssociation", "sequelize-typescript", "Member[addAssociation].Argument[1]"] - - ["sequelize-typescript.BaseAssociation", "sequelize-typescript", "Member[getAssociations,getAssociationsByRelation].ReturnValue.ArrayElement"] - - ["sequelize-typescript.BaseAssociation", "sequelize-typescript", "Member[setAssociations].Argument[1].ArrayElement"] - - ["sequelize-typescript.BaseAssociationStatic", "sequelize-typescript/associations/shared/base-association.BaseAssociationStatic", ""] - - ["sequelize-typescript.BaseAssociationStatic", "sequelize-typescript/associations/shared/base-association", "Member[BaseAssociation]"] - - ["sequelize-typescript.BaseAssociationStatic", "sequelize-typescript", "Member[BaseAssociation]"] - - ["sequelize-typescript.BelongsToAssociation", "sequelize-typescript.BelongsToAssociationStatic", Instance] - - ["sequelize-typescript.BelongsToAssociation", "sequelize-typescript/associations/belongs-to/belongs-to-association.BelongsToAssociation", ""] - - ["sequelize-typescript.BelongsToAssociationStatic", "sequelize-typescript/associations/belongs-to/belongs-to-association.BelongsToAssociationStatic", ""] - - ["sequelize-typescript.BelongsToAssociationStatic", "sequelize-typescript/associations/belongs-to/belongs-to-association", "Member[BelongsToAssociation]"] - - ["sequelize-typescript.BelongsToAssociationStatic", "sequelize-typescript", "Member[BelongsToAssociation]"] - - ["sequelize-typescript.BelongsToManyAssociation", "sequelize-typescript.BelongsToManyAssociationStatic", Instance] - - ["sequelize-typescript.BelongsToManyAssociation", "sequelize-typescript/associations/belongs-to-many/belongs-to-many-association.BelongsToManyAssociation", ""] - - ["sequelize-typescript.BelongsToManyAssociationStatic", "sequelize-typescript/associations/belongs-to-many/belongs-to-many-association.BelongsToManyAssociationStatic", ""] - - ["sequelize-typescript.BelongsToManyAssociationStatic", "sequelize-typescript/associations/belongs-to-many/belongs-to-many-association", "Member[BelongsToManyAssociation]"] - - ["sequelize-typescript.BelongsToManyAssociationStatic", "sequelize-typescript", "Member[BelongsToManyAssociation]"] - - ["sequelize-typescript.DefaultScopeGetter", "sequelize-typescript.ScopeOptionsGetters", "Member[getDefaultScope]"] - - ["sequelize-typescript.DefaultScopeGetter", "sequelize-typescript/scopes/default-scope", "Member[DefaultScope].Argument[0]"] - - ["sequelize-typescript.DefaultScopeGetter", "sequelize-typescript/scopes/scope-options.DefaultScopeGetter", ""] - - ["sequelize-typescript.DefaultScopeGetter", "sequelize-typescript", "Member[DefaultScope].Argument[0]"] - - ["sequelize-typescript.HasAssociation", "sequelize-typescript.HasAssociationStatic", Instance] - - ["sequelize-typescript.HasAssociation", "sequelize-typescript/associations/has/has-association.HasAssociation", ""] - - ["sequelize-typescript.HasAssociationStatic", "sequelize-typescript/associations/has/has-association.HasAssociationStatic", ""] - - ["sequelize-typescript.HasAssociationStatic", "sequelize-typescript/associations/has/has-association", "Member[HasAssociation]"] - - ["sequelize-typescript.HasAssociationStatic", "sequelize-typescript", "Member[HasAssociation]"] - - ["sequelize-typescript.Model", "sequelize-typescript.Model", "Member[$add,$has,$remove,$set].Argument[1]"] - - ["sequelize-typescript.Model", "sequelize-typescript.Model", "Member[$add,$has,$remove,$set].Argument[1].ArrayElement"] - - ["sequelize-typescript.Model", "sequelize-typescript.Model", "Member[$create,reload].ReturnValue.Awaited"] - - ["sequelize-typescript.Model", "sequelize-typescript.ModelStatic~", Instance] - - ["sequelize-typescript.Model", "sequelize-typescript.ModelStatic~", "Member[initialize].ReturnValue.TypeVar[sequelize-typescript.ModelStatic.0]"] - - ["sequelize-typescript.Model", "sequelize-typescript.ModelType", Instance] - - ["sequelize-typescript.Model", "sequelize-typescript.Sequelize", "Member[getRepository].Argument[0].Instance"] - - ["sequelize-typescript.Model", "sequelize-typescript.Sequelize", "Member[getRepository].ReturnValue.TypeVar[sequelize-typescript.Repository.0]"] - - ["sequelize-typescript.Model", "sequelize-typescript/model/model/model.Model", ""] - - ["sequelize-typescript.ModelClassGetter", "sequelize-typescript.BaseAssociationStatic", "Argument[0]"] - - ["sequelize-typescript.ModelClassGetter", "sequelize-typescript.BelongsToAssociationStatic", "Argument[0]"] - - ["sequelize-typescript.ModelClassGetter", "sequelize-typescript.BelongsToManyAssociationStatic", "Argument[0]"] - - ["sequelize-typescript.ModelClassGetter", "sequelize-typescript.HasAssociationStatic", "Argument[0]"] - - ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/associations/belongs-to-many/belongs-to-many", "Member[BelongsToMany].Argument[0,1]"] - - ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/associations/belongs-to/belongs-to", "Member[BelongsTo].Argument[0]"] - - ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/associations/foreign-key/foreign-key-meta.ForeignKeyMeta", "Member[relatedClassGetter]"] - - ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/associations/foreign-key/foreign-key-service", "Member[addForeignKey].Argument[1]"] - - ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/associations/foreign-key/foreign-key", "Member[ForeignKey].Argument[0]"] - - ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/associations/has/has-many", "Member[HasMany].Argument[0]"] - - ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/associations/has/has-one", "Member[HasOne].Argument[0]"] - - ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/model/shared/model-class-getter.ModelClassGetter", ""] - - ["sequelize-typescript.ModelClassGetter", "sequelize-typescript", "Member[BelongsTo,ForeignKey,HasMany,HasOne].Argument[0]"] - - ["sequelize-typescript.ModelClassGetter", "sequelize-typescript", "Member[BelongsToMany].Argument[0,1]"] - - ["sequelize-typescript.ModelStatic~", "sequelize-typescript/model/model/model.ModelStatic~", ""] - - ["sequelize-typescript.ModelStatic~", "sequelize-typescript/model/model/model", "Member[Model]"] - - ["sequelize-typescript.ModelStatic~", "sequelize-typescript/model/shared/model-not-initialized-error.ModelNotInitializedErrorStatic", "Argument[0]"] - - ["sequelize-typescript.ModelStatic~", "sequelize-typescript", "Member[Model]"] - - ["sequelize-typescript.ModelType", "sequelize-typescript.BaseAssociation", "Member[getAssociatedClass].ReturnValue"] - - ["sequelize-typescript.ModelType", "sequelize-typescript.BaseAssociation", "Member[getSequelizeOptions].Argument[0]"] - - ["sequelize-typescript.ModelType", "sequelize-typescript.BelongsToAssociation", "Member[getSequelizeOptions].Argument[0]"] - - ["sequelize-typescript.ModelType", "sequelize-typescript.BelongsToManyAssociation", "Member[getSequelizeOptions].Argument[0]"] - - ["sequelize-typescript.ModelType", "sequelize-typescript.HasAssociation", "Member[getSequelizeOptions].Argument[0]"] - - ["sequelize-typescript.ModelType", "sequelize-typescript.ModelClassGetter", ReturnValue] - - ["sequelize-typescript.ModelType", "sequelize-typescript.Sequelize", "Member[model].Argument[0]"] - - ["sequelize-typescript.ModelType", "sequelize-typescript/associations/foreign-key/foreign-key-service", "Member[getForeignKeyOptions].Argument[0,1]"] - - ["sequelize-typescript.ModelType", "sequelize-typescript/model/model/model.ModelType", ""] - - ["sequelize-typescript.ScopeOptionsGetters", "sequelize-typescript/scopes/scope-options.ScopeOptionsGetters", ""] - - ["sequelize-typescript.ScopeOptionsGetters", "sequelize-typescript/scopes/scope-service", "Member[addScopeOptionsGetter,setScopeOptionsGetters].Argument[1]"] - - ["sequelize-typescript.ScopeOptionsGetters", "sequelize-typescript/scopes/scope-service", "Member[getScopeOptionsGetters].ReturnValue"] - - ["sequelize-typescript.ScopeOptionsGetters", "sequelize-typescript", "Member[addScopeOptionsGetter,setScopeOptionsGetters].Argument[1]"] - - ["sequelize-typescript.ScopeOptionsGetters", "sequelize-typescript", "Member[getScopeOptionsGetters].ReturnValue"] - - ["sequelize-typescript.ScopesOptions", "sequelize-typescript.ScopesOptionsGetter", ReturnValue.AnyMember] - - ["sequelize-typescript.ScopesOptions", "sequelize-typescript/scopes/scope-options.ScopesOptions", ""] - - ["sequelize-typescript.ScopesOptions", "sequelize-typescript/scopes/scope-service", "Member[resolveScope].Argument[2]"] - - ["sequelize-typescript.ScopesOptions", "sequelize-typescript", "Member[resolveScope].Argument[2]"] - - ["sequelize-typescript.ScopesOptionsGetter", "sequelize-typescript.ScopeOptionsGetters", "Member[getScopes]"] - - ["sequelize-typescript.ScopesOptionsGetter", "sequelize-typescript/scopes/scope-options.ScopesOptionsGetter", ""] - - ["sequelize-typescript.ScopesOptionsGetter", "sequelize-typescript/scopes/scopes", "Member[Scopes].Argument[0]"] - - ["sequelize-typescript.ScopesOptionsGetter", "sequelize-typescript", "Member[Scopes].Argument[0]"] - - ["sequelize-typescript.Sequelize", "sequelize-typescript.BaseAssociation", "Member[getSequelizeOptions].Argument[1]"] - - ["sequelize-typescript.Sequelize", "sequelize-typescript.BelongsToManyAssociation", "Member[getSequelizeOptions].Argument[1]"] - - ["sequelize-typescript.Sequelize", "sequelize-typescript.SequelizeStatic", Instance] - - ["sequelize-typescript.Sequelize", "sequelize-typescript/sequelize/sequelize/sequelize.Sequelize", ""] - - ["sequelize-typescript.SequelizeOptions", "sequelize-typescript.Sequelize", "Member[options]"] - - ["sequelize-typescript.SequelizeOptions", "sequelize-typescript.SequelizeStatic", "Argument[3]"] - - ["sequelize-typescript.SequelizeOptions", "sequelize-typescript.SequelizeStatic", "WithArity[0].Argument[0]"] - - ["sequelize-typescript.SequelizeOptions", "sequelize-typescript.SequelizeStatic", "WithArity[1].Argument[0,1]"] - - ["sequelize-typescript.SequelizeOptions", "sequelize-typescript.SequelizeStatic", "WithArity[2].Argument[1,2]"] - - ["sequelize-typescript.SequelizeOptions", "sequelize-typescript.SequelizeStatic", "WithArity[3].Argument[2]"] - - ["sequelize-typescript.SequelizeOptions", "sequelize-typescript/sequelize/sequelize/sequelize-options.SequelizeOptions", ""] - - ["sequelize-typescript.SequelizeOptions", "sequelize-typescript/sequelize/sequelize/sequelize-service", "Member[prepareArgs].ReturnValue.Member[options]"] - - ["sequelize-typescript.SequelizeOptions", "sequelize-typescript/sequelize/sequelize/sequelize-service", "Member[prepareOptions].Argument[0]"] - - ["sequelize-typescript.SequelizeOptions", "sequelize-typescript/sequelize/sequelize/sequelize-service", "Member[prepareOptions].ReturnValue"] - - ["sequelize-typescript.SequelizeOptions", "sequelize-typescript", "Member[prepareArgs].ReturnValue.Member[options]"] - - ["sequelize-typescript.SequelizeOptions", "sequelize-typescript", "Member[prepareOptions].Argument[0]"] - - ["sequelize-typescript.SequelizeOptions", "sequelize-typescript", "Member[prepareOptions].ReturnValue"] - - ["sequelize-typescript.SequelizeStatic", "sequelize-typescript/sequelize/sequelize/sequelize.SequelizeStatic", ""] - - ["sequelize-typescript.SequelizeStatic", "sequelize-typescript/sequelize/sequelize/sequelize", "Member[Sequelize]"] - - ["sequelize-typescript.SequelizeStatic", "sequelize-typescript", "Member[Sequelize]"] - - ["sequelize-typescript/associations/foreign-key/foreign-key-meta.ForeignKeyMeta", "sequelize-typescript/associations/foreign-key/foreign-key-service", "Member[getForeignKeys].ReturnValue.ArrayElement"] - - ["sequelize-typescript/model/model/association/association-create-options.AssociationCreateOptions", "sequelize-typescript.Model", "Member[$create].Argument[2]"] - - ["sequelize-typescript/model/shared/model-not-initialized-error.ModelNotInitializedErrorStatic", "sequelize-typescript/model/shared/model-not-initialized-error", "Member[ModelNotInitializedError]"] - - [sequelize.AnyFindOptions, sequelize.BelongsToManyAddAssociationMixin, "Argument[1]"] - - [sequelize.AnyFindOptions, sequelize.BelongsToManyAddAssociationsMixin, "Argument[1]"] - - [sequelize.AnyFindOptions, sequelize.BelongsToManySetAssociationsMixin, "Argument[1]"] - - [sequelize.AnyFindOptions, sequelize.DefineOptions, "Member[defaultScope]"] - - [sequelize.AnyFindOptions, sequelize.DefineScopeOptions, AnyMember] - - [sequelize.AnyFindOptions, sequelize.HasManySetAssociationsMixin, "Argument[1]"] - - [sequelize.AnyFindOptions, sequelize.Instance, "Member[reload].Argument[0]"] - - [sequelize.AnyFindOptions, sequelize.Model, "Member[addScope].Argument[1]"] - - [sequelize.AssociationOptionsBelongsToMany, sequelize.Associations, "Member[belongsToMany].Argument[1]"] - - [sequelize.Associations, sequelize.Model, ""] - - [sequelize.Associations, sequelize.SequelizeStaticAndInstance.Model, ""] - - [sequelize.BuildOptions, "sequelize-typescript.ModelStatic~", "Argument[1]"] - - [sequelize.BuildOptions, sequelize.CreateOptions, ""] - - [sequelize.BuildOptions, sequelize.Model, "Member[build,bulkBuild].Argument[1]"] - - [sequelize.CountOptions, sequelize.Model, "Member[count].Argument[0]"] - - [sequelize.CreateOptions, "sequelize-typescript/model/model/association/association-create-options.AssociationCreateOptions", ""] - - [sequelize.CreateOptions, sequelize.BelongsToCreateAssociationMixin, "Argument[1]"] - - [sequelize.CreateOptions, sequelize.BelongsToManyCreateAssociationMixin, "Argument[1]"] - - [sequelize.CreateOptions, sequelize.HasManyCreateAssociationMixin, "Argument[1]"] - - [sequelize.CreateOptions, sequelize.HasOneCreateAssociationMixin, "Argument[1]"] - - [sequelize.CreateOptions, sequelize.Model, "Member[create].Argument[1]"] - - [sequelize.DefineAttributeColumnOptions, sequelize.DefineAttributes, AnyMember] - - [sequelize.DefineAttributeColumnOptions, sequelize.QueryInterface, "Member[addColumn,changeColumn].Argument[2]"] - - [sequelize.DefineAttributeColumnReferencesOptions, sequelize.DefineAttributeColumnOptions, "Member[references]"] - - [sequelize.DefineAttributes, sequelize.Hooks, "Member[beforeDefine].Argument[1].Argument[0]"] - - [sequelize.DefineAttributes, sequelize.Hooks, "Member[beforeDefine].WithArity[1].Argument[0].Argument[0]"] - - [sequelize.DefineAttributes, sequelize.QueryInterface, "Member[createTable].Argument[1]"] - - [sequelize.DefineOptions, sequelize.Options, "Member[define]"] - - [sequelize.DefineOptions, sequelize.Sequelize, "Member[define].Argument[2]"] - - [sequelize.DefineScopeOptions, sequelize.DefineOptions, "Member[scopes]"] - - [sequelize.FindCreateFindOptions, sequelize.Model, "Member[findCreateFind].Argument[0]"] - - [sequelize.FindOptions, "sequelize-typescript.AssociationCountOptions", ""] - - [sequelize.FindOptions, "sequelize-typescript.AssociationGetOptions", ""] - - [sequelize.FindOptions, "sequelize-typescript.DefaultScopeGetter", ReturnValue] - - [sequelize.FindOptions, "sequelize-typescript.Model", "Member[reload].Argument[0]"] - - [sequelize.FindOptions, "sequelize-typescript.ScopesOptions", ""] - - [sequelize.FindOptions, "sequelize-typescript.ScopesOptions", ReturnValue] - - [sequelize.FindOptions, sequelize.AnyFindOptions, ""] - - [sequelize.FindOptions, sequelize.FindCreateFindOptions, ""] - - [sequelize.FindOptions, sequelize.FindOrInitializeOptions, ""] - - [sequelize.FindOptions, sequelize.Model, "Member[all,find,findAll,findAndCount,findAndCountAll,findOne].Argument[0]"] - - [sequelize.FindOptionsOrderArray, sequelize.FindOptions, "Member[order]"] - - [sequelize.FindOptionsOrderArray, sequelize.FindOptions, "Member[order].ArrayElement"] - - [sequelize.FindOrInitializeOptions, sequelize.Model, "Member[findOrBuild,findOrCreate,findOrInitialize].Argument[0]"] - - [sequelize.HasManyGetAssociationsMixinOptions, sequelize.HasManyGetAssociationsMixin, "Argument[0]"] - - [sequelize.HasManyGetAssociationsMixinOptions, sequelize.HasManyHasAssociationMixin, "Argument[1]"] - - [sequelize.HasManyGetAssociationsMixinOptions, sequelize.HasManyHasAssociationsMixin, "Argument[1]"] - - [sequelize.Hooks, sequelize.Hooks, "Member[addHook,hook,removeHook].ReturnValue"] - - [sequelize.Hooks, sequelize.Model, ""] - - [sequelize.Hooks, sequelize.Sequelize, ""] - - [sequelize.Hooks, sequelize.SequelizeStaticAndInstance.Model, ""] - - [sequelize.IncludeAssociation, sequelize.Associations, "Member[belongsTo,belongsToMany,hasMany,hasOne].ReturnValue"] - - [sequelize.IncludeAssociation, sequelize.IncludeOptions, "Member[association]"] - - [sequelize.IncludeOptions, sequelize.BuildOptions, "Member[include].ArrayElement"] - - [sequelize.IncludeOptions, sequelize.CountOptions, "Member[include]"] - - [sequelize.IncludeOptions, sequelize.CountOptions, "Member[include].ArrayElement"] - - [sequelize.IncludeOptions, sequelize.FindOptions, "Member[include]"] - - [sequelize.IncludeOptions, sequelize.FindOptions, "Member[include].ArrayElement"] - - [sequelize.IncludeOptions, sequelize.HasManyGetAssociationsMixinOptions, "Member[include]"] - - [sequelize.IncludeOptions, sequelize.IncludeOptions, "Member[include]"] - - [sequelize.IncludeOptions, sequelize.IncludeOptions, "Member[include].ArrayElement"] - - [sequelize.Instance, sequelize.Instance, "Member[decrement,increment,reload,save,update,updateAttributes].ReturnValue.Awaited"] - - [sequelize.Instance, sequelize.Instance, "Member[equalsOneOf].Argument[0].ArrayElement"] - - [sequelize.Instance, sequelize.Instance, "Member[equals].Argument[0]"] - - [sequelize.Instance, sequelize.Instance, "Member[set,setAttributes].ReturnValue"] - - [sequelize.Instance, sequelize.Model, "Member[Instance,build].ReturnValue"] - - [sequelize.Instance, sequelize.Model, "Member[all,bulkCreate,findAll].ReturnValue.Awaited.ArrayElement"] - - [sequelize.Instance, sequelize.Model, "Member[bulkBuild].ReturnValue.ArrayElement"] - - [sequelize.Instance, sequelize.Model, "Member[create,find,findById,findByPk,findByPrimary,findOne].ReturnValue.Awaited"] - - [sequelize.Instance, sequelize.Model, "Member[findAndCount,findAndCountAll].ReturnValue.Awaited.Member[rows].ArrayElement"] - - [sequelize.Instance, sequelize.QueryInterface, "Member[delete,increment,insert,update].Argument[0]"] - - [sequelize.Instance, sequelize.QueryOptions, "Member[instance]"] - - [sequelize.Instance, sequelize.SequelizeStaticAndInstance, "Member[Instance]"] - - [sequelize.Model, sequelize.AssociationOptionsBelongsToMany, "Member[through]"] - - [sequelize.Model, sequelize.Associations, "Member[belongsTo,belongsToMany,hasMany,hasOne].Argument[0]"] - - [sequelize.Model, sequelize.BuildOptions, "Member[include].ArrayElement"] - - [sequelize.Model, sequelize.CountOptions, "Member[include]"] - - [sequelize.Model, sequelize.CountOptions, "Member[include].ArrayElement"] - - [sequelize.Model, sequelize.DefineAttributeColumnReferencesOptions, "Member[model]"] - - [sequelize.Model, sequelize.FindOptions, "Member[include]"] - - [sequelize.Model, sequelize.FindOptions, "Member[include].ArrayElement"] - - [sequelize.Model, sequelize.FindOptions, "Member[lock].Member[of]"] - - [sequelize.Model, sequelize.FindOptionsOrderArray, ArrayElement] - - [sequelize.Model, sequelize.FindOptionsOrderArray, "ArrayElement.Member[model]"] - - [sequelize.Model, sequelize.Hooks, "Member[afterDefine].Argument[1].Argument[0]"] - - [sequelize.Model, sequelize.Hooks, "Member[afterDefine].WithArity[1].Argument[0].Argument[0]"] - - [sequelize.Model, sequelize.IncludeAssociation, "Member[source,target]"] - - [sequelize.Model, sequelize.IncludeOptions, "Member[include,model]"] - - [sequelize.Model, sequelize.IncludeOptions, "Member[include].ArrayElement"] - - [sequelize.Model, sequelize.Instance, "Member[Model]"] - - [sequelize.Model, sequelize.Model, "Member[schema,scope,unscoped].ReturnValue"] - - [sequelize.Model, sequelize.Model, "Member[sync].ReturnValue.Awaited"] - - [sequelize.Model, sequelize.Models, AnyMember] - - [sequelize.Model, sequelize.ModelsHashInterface, AnyMember] - - [sequelize.Model, sequelize.QueryInterface, "Member[bulkDelete,rawSelect,upsert].Argument[3]"] - - [sequelize.Model, sequelize.QueryInterface, "Member[select].Argument[0]"] - - [sequelize.Model, sequelize.QueryOptions, "Member[model]"] - - [sequelize.Model, sequelize.Sequelize, "Member[define,import,model].ReturnValue"] - - [sequelize.Model, sequelize.Sequelize, "Member[import].Argument[1].ReturnValue"] - - [sequelize.Model, sequelize.SequelizeStaticAndInstance, "Member[Model]"] - - [sequelize.Model, sequelize.ThroughOptions, "Member[model]"] - - [sequelize.Model, sequelize.Utils, "Member[mapOptionFieldNames].Argument[1]"] - - [sequelize.Model, sequelize.Utils, "Member[mapValueFieldNames].Argument[2]"] - - [sequelize.Models, sequelize.Model, "Member[associate].Argument[0]"] - - [sequelize.ModelsHashInterface, sequelize.Sequelize, "Member[models]"] - - [sequelize.Options, "sequelize-typescript.SequelizeOptions", ""] - - [sequelize.Options, sequelize.Sequelize, "Member[options]"] - - [sequelize.Options, sequelize.SequelizeStatic, "Argument[3]"] - - [sequelize.Options, sequelize.SequelizeStatic, "WithArity[1].Argument[0,1]"] - - [sequelize.Options, sequelize.SequelizeStatic, "WithArity[2].Argument[1,2]"] - - [sequelize.Options, sequelize.SequelizeStatic, "WithArity[3].Argument[2]"] - - [sequelize.QueryInterface, sequelize.Sequelize, "Member[getQueryInterface].ReturnValue"] - - [sequelize.QueryOptions, sequelize.Options, "Member[query]"] - - [sequelize.QueryOptions, sequelize.QueryInterface, "Member[bulkDelete,bulkInsert,createTable,select,setAutocommit,setIsolationLevel].Argument[2]"] - - [sequelize.QueryOptions, sequelize.QueryInterface, "Member[bulkUpdate,delete,insert].Argument[3]"] - - [sequelize.QueryOptions, sequelize.QueryInterface, "Member[commitTransaction,deferConstraints,dropTable,rawSelect,rollbackTransaction,showIndex,startTransaction].Argument[1]"] - - [sequelize.QueryOptions, sequelize.QueryInterface, "Member[createFunction].Argument[5]"] - - [sequelize.QueryOptions, sequelize.QueryInterface, "Member[dropAllEnums,dropAllTables,showAllSchemas,showAllTables].Argument[0]"] - - [sequelize.QueryOptions, sequelize.QueryInterface, "Member[increment,update,upsert].Argument[4]"] - - [sequelize.QueryOptions, sequelize.Sequelize, "Member[authenticate,validate].Argument[0]"] - - [sequelize.QueryOptions, sequelize.Sequelize, "Member[query].Argument[1]"] - - [sequelize.Sequelize, "sequelize-typescript.Sequelize", ""] - - [sequelize.Sequelize, sequelize.Hooks, "Member[afterInit].Argument[1].Argument[0]"] - - [sequelize.Sequelize, sequelize.Hooks, "Member[afterInit].WithArity[1].Argument[0].Argument[0]"] - - [sequelize.Sequelize, sequelize.Instance, "Member[sequelize]"] - - [sequelize.Sequelize, sequelize.QueryInterface, "Member[sequelize]"] - - [sequelize.Sequelize, sequelize.Sequelize, "Member[import].Argument[1].Argument[0]"] - - [sequelize.Sequelize, sequelize.SequelizeStatic, Instance] - - [sequelize.Sequelize, sequelize.SequelizeStatic, "Member[useCLS].ReturnValue"] - - [sequelize.SequelizeStatic, "sequelize-typescript.Sequelize", ""] - - [sequelize.SequelizeStatic, sequelize.Sequelize, "Member[Sequelize]"] - - [sequelize.SequelizeStatic, sequelize.SequelizeStatic, "Member[Sequelize,default]"] - - [sequelize.SequelizeStatic, sequelize, ""] - - [sequelize.SequelizeStaticAndInstance.Model, "sequelize-typescript.Model", ""] - - [sequelize.SequelizeStaticAndInstance, sequelize.Sequelize, ""] - - [sequelize.SequelizeStaticAndInstance, sequelize.SequelizeStatic, ""] - - [sequelize.ThroughOptions, sequelize.AssociationOptionsBelongsToMany, "Member[through]"] - - [sequelize.Utils, sequelize.SequelizeStaticAndInstance, "Member[Utils]"] - - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - ["sequelize-typescript.Model", "", "", "Member[reload].ReturnValue.Awaited", type] - - [sequelize.Instance, "", "", "Member[decrement,increment,reload,save,update,updateAttributes].ReturnValue.Awaited", type] - - [sequelize.Instance, "", "", "Member[set,setAttributes].ReturnValue", type] - - [sequelize.Model, "", "", "Member[schema,scope,unscoped].ReturnValue", type] - - [sequelize.Model, "", "", "Member[sync].ReturnValue.Awaited", type] - - - addsTo: - pack: codeql/javascript-all - extensible: typeVariableModel - data: - - ["sequelize-typescript.ModelStatic.0", Instance] - - ["sequelize-typescript.Repository.0", Instance] diff --git a/javascript/ql/lib/semmle/javascript/frameworks/sequelize/sequelize.model.json b/javascript/ql/lib/semmle/javascript/frameworks/sequelize/sequelize.model.json new file mode 100644 index 000000000000..fc6b15f31c87 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/frameworks/sequelize/sequelize.model.json @@ -0,0 +1,298 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["sequelize.Sequelize", "Member[query].Argument[0].Member[query]", "sql-injection"], + ["sequelize.Sequelize", "Member[query].Argument[0]", "sql-injection"], + ["sequelize.SequelizeStaticAndInstance", "Member[asIs,literal].Argument[0]", "sql-injection"], + ["sequelize", "Argument[0..].Member[password]", "credentials-password"], + ["sequelize", "Argument[0..].Member[username]", "credentials-username"], + ["sequelize", "Argument[1]", "credentials-username"], + ["sequelize", "Argument[2]", "credentials-password"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["sequelize-typescript.AssociationCountOptions", "sequelize-typescript.Model", "Member[$count].Argument[1]"], + ["sequelize-typescript.AssociationCountOptions", "sequelize-typescript/model/model/association/association-count-options.AssociationCountOptions", ""], + ["sequelize-typescript.AssociationGetOptions", "sequelize-typescript.Model", "Member[$get].Argument[1]"], + ["sequelize-typescript.AssociationGetOptions", "sequelize-typescript.Model", "Member[$has].Argument[2]"], + ["sequelize-typescript.AssociationGetOptions", "sequelize-typescript/model/model/association/association-get-options.AssociationGetOptions", ""], + ["sequelize-typescript.BaseAssociation", "sequelize-typescript.BaseAssociationStatic", "Instance"], + ["sequelize-typescript.BaseAssociation", "sequelize-typescript.BelongsToAssociation", ""], + ["sequelize-typescript.BaseAssociation", "sequelize-typescript.BelongsToManyAssociation", ""], + ["sequelize-typescript.BaseAssociation", "sequelize-typescript.HasAssociation", ""], + ["sequelize-typescript.BaseAssociation", "sequelize-typescript/associations/shared/association-service", "Member[addAssociation].Argument[1]"], + ["sequelize-typescript.BaseAssociation", "sequelize-typescript/associations/shared/association-service", "Member[getAssociations,getAssociationsByRelation].ReturnValue.ArrayElement"], + ["sequelize-typescript.BaseAssociation", "sequelize-typescript/associations/shared/association-service", "Member[setAssociations].Argument[1].ArrayElement"], + ["sequelize-typescript.BaseAssociation", "sequelize-typescript/associations/shared/base-association.BaseAssociation", ""], + ["sequelize-typescript.BaseAssociation", "sequelize-typescript", "Member[addAssociation].Argument[1]"], + ["sequelize-typescript.BaseAssociation", "sequelize-typescript", "Member[getAssociations,getAssociationsByRelation].ReturnValue.ArrayElement"], + ["sequelize-typescript.BaseAssociation", "sequelize-typescript", "Member[setAssociations].Argument[1].ArrayElement"], + ["sequelize-typescript.BaseAssociationStatic", "sequelize-typescript/associations/shared/base-association.BaseAssociationStatic", ""], + ["sequelize-typescript.BaseAssociationStatic", "sequelize-typescript/associations/shared/base-association", "Member[BaseAssociation]"], + ["sequelize-typescript.BaseAssociationStatic", "sequelize-typescript", "Member[BaseAssociation]"], + ["sequelize-typescript.BelongsToAssociation", "sequelize-typescript.BelongsToAssociationStatic", "Instance"], + ["sequelize-typescript.BelongsToAssociation", "sequelize-typescript/associations/belongs-to/belongs-to-association.BelongsToAssociation", ""], + ["sequelize-typescript.BelongsToAssociationStatic", "sequelize-typescript/associations/belongs-to/belongs-to-association.BelongsToAssociationStatic", ""], + ["sequelize-typescript.BelongsToAssociationStatic", "sequelize-typescript/associations/belongs-to/belongs-to-association", "Member[BelongsToAssociation]"], + ["sequelize-typescript.BelongsToAssociationStatic", "sequelize-typescript", "Member[BelongsToAssociation]"], + ["sequelize-typescript.BelongsToManyAssociation", "sequelize-typescript.BelongsToManyAssociationStatic", "Instance"], + ["sequelize-typescript.BelongsToManyAssociation", "sequelize-typescript/associations/belongs-to-many/belongs-to-many-association.BelongsToManyAssociation", ""], + ["sequelize-typescript.BelongsToManyAssociationStatic", "sequelize-typescript/associations/belongs-to-many/belongs-to-many-association.BelongsToManyAssociationStatic", ""], + ["sequelize-typescript.BelongsToManyAssociationStatic", "sequelize-typescript/associations/belongs-to-many/belongs-to-many-association", "Member[BelongsToManyAssociation]"], + ["sequelize-typescript.BelongsToManyAssociationStatic", "sequelize-typescript", "Member[BelongsToManyAssociation]"], + ["sequelize-typescript.DefaultScopeGetter", "sequelize-typescript.ScopeOptionsGetters", "Member[getDefaultScope]"], + ["sequelize-typescript.DefaultScopeGetter", "sequelize-typescript/scopes/default-scope", "Member[DefaultScope].Argument[0]"], + ["sequelize-typescript.DefaultScopeGetter", "sequelize-typescript/scopes/scope-options.DefaultScopeGetter", ""], + ["sequelize-typescript.DefaultScopeGetter", "sequelize-typescript", "Member[DefaultScope].Argument[0]"], + ["sequelize-typescript.HasAssociation", "sequelize-typescript.HasAssociationStatic", "Instance"], + ["sequelize-typescript.HasAssociation", "sequelize-typescript/associations/has/has-association.HasAssociation", ""], + ["sequelize-typescript.HasAssociationStatic", "sequelize-typescript/associations/has/has-association.HasAssociationStatic", ""], + ["sequelize-typescript.HasAssociationStatic", "sequelize-typescript/associations/has/has-association", "Member[HasAssociation]"], + ["sequelize-typescript.HasAssociationStatic", "sequelize-typescript", "Member[HasAssociation]"], + ["sequelize-typescript.Model", "sequelize-typescript.Model", "Member[$add,$has,$remove,$set].Argument[1]"], + ["sequelize-typescript.Model", "sequelize-typescript.Model", "Member[$add,$has,$remove,$set].Argument[1].ArrayElement"], + ["sequelize-typescript.Model", "sequelize-typescript.Model", "Member[$create,reload].ReturnValue.Awaited"], + ["sequelize-typescript.Model", "sequelize-typescript.ModelStatic~", "Instance"], + ["sequelize-typescript.Model", "sequelize-typescript.ModelStatic~", "Member[initialize].ReturnValue.TypeVar[sequelize-typescript.ModelStatic.0]"], + ["sequelize-typescript.Model", "sequelize-typescript.ModelType", "Instance"], + ["sequelize-typescript.Model", "sequelize-typescript.Sequelize", "Member[getRepository].Argument[0].Instance"], + ["sequelize-typescript.Model", "sequelize-typescript.Sequelize", "Member[getRepository].ReturnValue.TypeVar[sequelize-typescript.Repository.0]"], + ["sequelize-typescript.Model", "sequelize-typescript/model/model/model.Model", ""], + ["sequelize-typescript.ModelClassGetter", "sequelize-typescript.BaseAssociationStatic", "Argument[0]"], + ["sequelize-typescript.ModelClassGetter", "sequelize-typescript.BelongsToAssociationStatic", "Argument[0]"], + ["sequelize-typescript.ModelClassGetter", "sequelize-typescript.BelongsToManyAssociationStatic", "Argument[0]"], + ["sequelize-typescript.ModelClassGetter", "sequelize-typescript.HasAssociationStatic", "Argument[0]"], + ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/associations/belongs-to-many/belongs-to-many", "Member[BelongsToMany].Argument[0,1]"], + ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/associations/belongs-to/belongs-to", "Member[BelongsTo].Argument[0]"], + ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/associations/foreign-key/foreign-key-meta.ForeignKeyMeta", "Member[relatedClassGetter]"], + ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/associations/foreign-key/foreign-key-service", "Member[addForeignKey].Argument[1]"], + ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/associations/foreign-key/foreign-key", "Member[ForeignKey].Argument[0]"], + ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/associations/has/has-many", "Member[HasMany].Argument[0]"], + ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/associations/has/has-one", "Member[HasOne].Argument[0]"], + ["sequelize-typescript.ModelClassGetter", "sequelize-typescript/model/shared/model-class-getter.ModelClassGetter", ""], + ["sequelize-typescript.ModelClassGetter", "sequelize-typescript", "Member[BelongsTo,ForeignKey,HasMany,HasOne].Argument[0]"], + ["sequelize-typescript.ModelClassGetter", "sequelize-typescript", "Member[BelongsToMany].Argument[0,1]"], + ["sequelize-typescript.ModelStatic~", "sequelize-typescript/model/model/model.ModelStatic~", ""], + ["sequelize-typescript.ModelStatic~", "sequelize-typescript/model/model/model", "Member[Model]"], + ["sequelize-typescript.ModelStatic~", "sequelize-typescript/model/shared/model-not-initialized-error.ModelNotInitializedErrorStatic", "Argument[0]"], + ["sequelize-typescript.ModelStatic~", "sequelize-typescript", "Member[Model]"], + ["sequelize-typescript.ModelType", "sequelize-typescript.BaseAssociation", "Member[getAssociatedClass].ReturnValue"], + ["sequelize-typescript.ModelType", "sequelize-typescript.BaseAssociation", "Member[getSequelizeOptions].Argument[0]"], + ["sequelize-typescript.ModelType", "sequelize-typescript.BelongsToAssociation", "Member[getSequelizeOptions].Argument[0]"], + ["sequelize-typescript.ModelType", "sequelize-typescript.BelongsToManyAssociation", "Member[getSequelizeOptions].Argument[0]"], + ["sequelize-typescript.ModelType", "sequelize-typescript.HasAssociation", "Member[getSequelizeOptions].Argument[0]"], + ["sequelize-typescript.ModelType", "sequelize-typescript.ModelClassGetter", "ReturnValue"], + ["sequelize-typescript.ModelType", "sequelize-typescript.Sequelize", "Member[model].Argument[0]"], + ["sequelize-typescript.ModelType", "sequelize-typescript/associations/foreign-key/foreign-key-service", "Member[getForeignKeyOptions].Argument[0,1]"], + ["sequelize-typescript.ModelType", "sequelize-typescript/model/model/model.ModelType", ""], + ["sequelize-typescript.ScopeOptionsGetters", "sequelize-typescript/scopes/scope-options.ScopeOptionsGetters", ""], + ["sequelize-typescript.ScopeOptionsGetters", "sequelize-typescript/scopes/scope-service", "Member[addScopeOptionsGetter,setScopeOptionsGetters].Argument[1]"], + ["sequelize-typescript.ScopeOptionsGetters", "sequelize-typescript/scopes/scope-service", "Member[getScopeOptionsGetters].ReturnValue"], + ["sequelize-typescript.ScopeOptionsGetters", "sequelize-typescript", "Member[addScopeOptionsGetter,setScopeOptionsGetters].Argument[1]"], + ["sequelize-typescript.ScopeOptionsGetters", "sequelize-typescript", "Member[getScopeOptionsGetters].ReturnValue"], + ["sequelize-typescript.ScopesOptions", "sequelize-typescript.ScopesOptionsGetter", "ReturnValue.AnyMember"], + ["sequelize-typescript.ScopesOptions", "sequelize-typescript/scopes/scope-options.ScopesOptions", ""], + ["sequelize-typescript.ScopesOptions", "sequelize-typescript/scopes/scope-service", "Member[resolveScope].Argument[2]"], + ["sequelize-typescript.ScopesOptions", "sequelize-typescript", "Member[resolveScope].Argument[2]"], + ["sequelize-typescript.ScopesOptionsGetter", "sequelize-typescript.ScopeOptionsGetters", "Member[getScopes]"], + ["sequelize-typescript.ScopesOptionsGetter", "sequelize-typescript/scopes/scope-options.ScopesOptionsGetter", ""], + ["sequelize-typescript.ScopesOptionsGetter", "sequelize-typescript/scopes/scopes", "Member[Scopes].Argument[0]"], + ["sequelize-typescript.ScopesOptionsGetter", "sequelize-typescript", "Member[Scopes].Argument[0]"], + ["sequelize-typescript.Sequelize", "sequelize-typescript.BaseAssociation", "Member[getSequelizeOptions].Argument[1]"], + ["sequelize-typescript.Sequelize", "sequelize-typescript.BelongsToManyAssociation", "Member[getSequelizeOptions].Argument[1]"], + ["sequelize-typescript.Sequelize", "sequelize-typescript.SequelizeStatic", "Instance"], + ["sequelize-typescript.Sequelize", "sequelize-typescript/sequelize/sequelize/sequelize.Sequelize", ""], + ["sequelize-typescript.SequelizeOptions", "sequelize-typescript.Sequelize", "Member[options]"], + ["sequelize-typescript.SequelizeOptions", "sequelize-typescript.SequelizeStatic", "Argument[3]"], + ["sequelize-typescript.SequelizeOptions", "sequelize-typescript.SequelizeStatic", "WithArity[0].Argument[0]"], + ["sequelize-typescript.SequelizeOptions", "sequelize-typescript.SequelizeStatic", "WithArity[1].Argument[0,1]"], + ["sequelize-typescript.SequelizeOptions", "sequelize-typescript.SequelizeStatic", "WithArity[2].Argument[1,2]"], + ["sequelize-typescript.SequelizeOptions", "sequelize-typescript.SequelizeStatic", "WithArity[3].Argument[2]"], + ["sequelize-typescript.SequelizeOptions", "sequelize-typescript/sequelize/sequelize/sequelize-options.SequelizeOptions", ""], + ["sequelize-typescript.SequelizeOptions", "sequelize-typescript/sequelize/sequelize/sequelize-service", "Member[prepareArgs].ReturnValue.Member[options]"], + ["sequelize-typescript.SequelizeOptions", "sequelize-typescript/sequelize/sequelize/sequelize-service", "Member[prepareOptions].Argument[0]"], + ["sequelize-typescript.SequelizeOptions", "sequelize-typescript/sequelize/sequelize/sequelize-service", "Member[prepareOptions].ReturnValue"], + ["sequelize-typescript.SequelizeOptions", "sequelize-typescript", "Member[prepareArgs].ReturnValue.Member[options]"], + ["sequelize-typescript.SequelizeOptions", "sequelize-typescript", "Member[prepareOptions].Argument[0]"], + ["sequelize-typescript.SequelizeOptions", "sequelize-typescript", "Member[prepareOptions].ReturnValue"], + ["sequelize-typescript.SequelizeStatic", "sequelize-typescript/sequelize/sequelize/sequelize.SequelizeStatic", ""], + ["sequelize-typescript.SequelizeStatic", "sequelize-typescript/sequelize/sequelize/sequelize", "Member[Sequelize]"], + ["sequelize-typescript.SequelizeStatic", "sequelize-typescript", "Member[Sequelize]"], + ["sequelize-typescript/associations/foreign-key/foreign-key-meta.ForeignKeyMeta", "sequelize-typescript/associations/foreign-key/foreign-key-service", "Member[getForeignKeys].ReturnValue.ArrayElement"], + ["sequelize-typescript/model/model/association/association-create-options.AssociationCreateOptions", "sequelize-typescript.Model", "Member[$create].Argument[2]"], + ["sequelize-typescript/model/shared/model-not-initialized-error.ModelNotInitializedErrorStatic", "sequelize-typescript/model/shared/model-not-initialized-error", "Member[ModelNotInitializedError]"], + ["sequelize.AnyFindOptions", "sequelize.BelongsToManyAddAssociationMixin", "Argument[1]"], + ["sequelize.AnyFindOptions", "sequelize.BelongsToManyAddAssociationsMixin", "Argument[1]"], + ["sequelize.AnyFindOptions", "sequelize.BelongsToManySetAssociationsMixin", "Argument[1]"], + ["sequelize.AnyFindOptions", "sequelize.DefineOptions", "Member[defaultScope]"], + ["sequelize.AnyFindOptions", "sequelize.DefineScopeOptions", "AnyMember"], + ["sequelize.AnyFindOptions", "sequelize.HasManySetAssociationsMixin", "Argument[1]"], + ["sequelize.AnyFindOptions", "sequelize.Instance", "Member[reload].Argument[0]"], + ["sequelize.AnyFindOptions", "sequelize.Model", "Member[addScope].Argument[1]"], + ["sequelize.AssociationOptionsBelongsToMany", "sequelize.Associations", "Member[belongsToMany].Argument[1]"], + ["sequelize.Associations", "sequelize.Model", ""], + ["sequelize.Associations", "sequelize.SequelizeStaticAndInstance.Model", ""], + ["sequelize.BuildOptions", "sequelize-typescript.ModelStatic~", "Argument[1]"], + ["sequelize.BuildOptions", "sequelize.CreateOptions", ""], + ["sequelize.BuildOptions", "sequelize.Model", "Member[build,bulkBuild].Argument[1]"], + ["sequelize.CountOptions", "sequelize.Model", "Member[count].Argument[0]"], + ["sequelize.CreateOptions", "sequelize-typescript/model/model/association/association-create-options.AssociationCreateOptions", ""], + ["sequelize.CreateOptions", "sequelize.BelongsToCreateAssociationMixin", "Argument[1]"], + ["sequelize.CreateOptions", "sequelize.BelongsToManyCreateAssociationMixin", "Argument[1]"], + ["sequelize.CreateOptions", "sequelize.HasManyCreateAssociationMixin", "Argument[1]"], + ["sequelize.CreateOptions", "sequelize.HasOneCreateAssociationMixin", "Argument[1]"], + ["sequelize.CreateOptions", "sequelize.Model", "Member[create].Argument[1]"], + ["sequelize.DefineAttributeColumnOptions", "sequelize.DefineAttributes", "AnyMember"], + ["sequelize.DefineAttributeColumnOptions", "sequelize.QueryInterface", "Member[addColumn,changeColumn].Argument[2]"], + ["sequelize.DefineAttributeColumnReferencesOptions", "sequelize.DefineAttributeColumnOptions", "Member[references]"], + ["sequelize.DefineAttributes", "sequelize.Hooks", "Member[beforeDefine].Argument[1].Argument[0]"], + ["sequelize.DefineAttributes", "sequelize.Hooks", "Member[beforeDefine].WithArity[1].Argument[0].Argument[0]"], + ["sequelize.DefineAttributes", "sequelize.QueryInterface", "Member[createTable].Argument[1]"], + ["sequelize.DefineOptions", "sequelize.Options", "Member[define]"], + ["sequelize.DefineOptions", "sequelize.Sequelize", "Member[define].Argument[2]"], + ["sequelize.DefineScopeOptions", "sequelize.DefineOptions", "Member[scopes]"], + ["sequelize.FindCreateFindOptions", "sequelize.Model", "Member[findCreateFind].Argument[0]"], + ["sequelize.FindOptions", "sequelize-typescript.AssociationCountOptions", ""], + ["sequelize.FindOptions", "sequelize-typescript.AssociationGetOptions", ""], + ["sequelize.FindOptions", "sequelize-typescript.DefaultScopeGetter", "ReturnValue"], + ["sequelize.FindOptions", "sequelize-typescript.Model", "Member[reload].Argument[0]"], + ["sequelize.FindOptions", "sequelize-typescript.ScopesOptions", ""], + ["sequelize.FindOptions", "sequelize-typescript.ScopesOptions", "ReturnValue"], + ["sequelize.FindOptions", "sequelize.AnyFindOptions", ""], + ["sequelize.FindOptions", "sequelize.FindCreateFindOptions", ""], + ["sequelize.FindOptions", "sequelize.FindOrInitializeOptions", ""], + ["sequelize.FindOptions", "sequelize.Model", "Member[all,find,findAll,findAndCount,findAndCountAll,findOne].Argument[0]"], + ["sequelize.FindOptionsOrderArray", "sequelize.FindOptions", "Member[order]"], + ["sequelize.FindOptionsOrderArray", "sequelize.FindOptions", "Member[order].ArrayElement"], + ["sequelize.FindOrInitializeOptions", "sequelize.Model", "Member[findOrBuild,findOrCreate,findOrInitialize].Argument[0]"], + ["sequelize.HasManyGetAssociationsMixinOptions", "sequelize.HasManyGetAssociationsMixin", "Argument[0]"], + ["sequelize.HasManyGetAssociationsMixinOptions", "sequelize.HasManyHasAssociationMixin", "Argument[1]"], + ["sequelize.HasManyGetAssociationsMixinOptions", "sequelize.HasManyHasAssociationsMixin", "Argument[1]"], + ["sequelize.Hooks", "sequelize.Hooks", "Member[addHook,hook,removeHook].ReturnValue"], + ["sequelize.Hooks", "sequelize.Model", ""], + ["sequelize.Hooks", "sequelize.Sequelize", ""], + ["sequelize.Hooks", "sequelize.SequelizeStaticAndInstance.Model", ""], + ["sequelize.IncludeAssociation", "sequelize.Associations", "Member[belongsTo,belongsToMany,hasMany,hasOne].ReturnValue"], + ["sequelize.IncludeAssociation", "sequelize.IncludeOptions", "Member[association]"], + ["sequelize.IncludeOptions", "sequelize.BuildOptions", "Member[include].ArrayElement"], + ["sequelize.IncludeOptions", "sequelize.CountOptions", "Member[include]"], + ["sequelize.IncludeOptions", "sequelize.CountOptions", "Member[include].ArrayElement"], + ["sequelize.IncludeOptions", "sequelize.FindOptions", "Member[include]"], + ["sequelize.IncludeOptions", "sequelize.FindOptions", "Member[include].ArrayElement"], + ["sequelize.IncludeOptions", "sequelize.HasManyGetAssociationsMixinOptions", "Member[include]"], + ["sequelize.IncludeOptions", "sequelize.IncludeOptions", "Member[include]"], + ["sequelize.IncludeOptions", "sequelize.IncludeOptions", "Member[include].ArrayElement"], + ["sequelize.Instance", "sequelize.Instance", "Member[decrement,increment,reload,save,update,updateAttributes].ReturnValue.Awaited"], + ["sequelize.Instance", "sequelize.Instance", "Member[equalsOneOf].Argument[0].ArrayElement"], + ["sequelize.Instance", "sequelize.Instance", "Member[equals].Argument[0]"], + ["sequelize.Instance", "sequelize.Instance", "Member[set,setAttributes].ReturnValue"], + ["sequelize.Instance", "sequelize.Model", "Member[Instance,build].ReturnValue"], + ["sequelize.Instance", "sequelize.Model", "Member[all,bulkCreate,findAll].ReturnValue.Awaited.ArrayElement"], + ["sequelize.Instance", "sequelize.Model", "Member[bulkBuild].ReturnValue.ArrayElement"], + ["sequelize.Instance", "sequelize.Model", "Member[create,find,findById,findByPk,findByPrimary,findOne].ReturnValue.Awaited"], + ["sequelize.Instance", "sequelize.Model", "Member[findAndCount,findAndCountAll].ReturnValue.Awaited.Member[rows].ArrayElement"], + ["sequelize.Instance", "sequelize.QueryInterface", "Member[delete,increment,insert,update].Argument[0]"], + ["sequelize.Instance", "sequelize.QueryOptions", "Member[instance]"], + ["sequelize.Instance", "sequelize.SequelizeStaticAndInstance", "Member[Instance]"], + ["sequelize.Model", "sequelize.AssociationOptionsBelongsToMany", "Member[through]"], + ["sequelize.Model", "sequelize.Associations", "Member[belongsTo,belongsToMany,hasMany,hasOne].Argument[0]"], + ["sequelize.Model", "sequelize.BuildOptions", "Member[include].ArrayElement"], + ["sequelize.Model", "sequelize.CountOptions", "Member[include]"], + ["sequelize.Model", "sequelize.CountOptions", "Member[include].ArrayElement"], + ["sequelize.Model", "sequelize.DefineAttributeColumnReferencesOptions", "Member[model]"], + ["sequelize.Model", "sequelize.FindOptions", "Member[include]"], + ["sequelize.Model", "sequelize.FindOptions", "Member[include].ArrayElement"], + ["sequelize.Model", "sequelize.FindOptions", "Member[lock].Member[of]"], + ["sequelize.Model", "sequelize.FindOptionsOrderArray", "ArrayElement"], + ["sequelize.Model", "sequelize.FindOptionsOrderArray", "ArrayElement.Member[model]"], + ["sequelize.Model", "sequelize.Hooks", "Member[afterDefine].Argument[1].Argument[0]"], + ["sequelize.Model", "sequelize.Hooks", "Member[afterDefine].WithArity[1].Argument[0].Argument[0]"], + ["sequelize.Model", "sequelize.IncludeAssociation", "Member[source,target]"], + ["sequelize.Model", "sequelize.IncludeOptions", "Member[include,model]"], + ["sequelize.Model", "sequelize.IncludeOptions", "Member[include].ArrayElement"], + ["sequelize.Model", "sequelize.Instance", "Member[Model]"], + ["sequelize.Model", "sequelize.Model", "Member[schema,scope,unscoped].ReturnValue"], + ["sequelize.Model", "sequelize.Model", "Member[sync].ReturnValue.Awaited"], + ["sequelize.Model", "sequelize.Models", "AnyMember"], + ["sequelize.Model", "sequelize.ModelsHashInterface", "AnyMember"], + ["sequelize.Model", "sequelize.QueryInterface", "Member[bulkDelete,rawSelect,upsert].Argument[3]"], + ["sequelize.Model", "sequelize.QueryInterface", "Member[select].Argument[0]"], + ["sequelize.Model", "sequelize.QueryOptions", "Member[model]"], + ["sequelize.Model", "sequelize.Sequelize", "Member[define,import,model].ReturnValue"], + ["sequelize.Model", "sequelize.Sequelize", "Member[import].Argument[1].ReturnValue"], + ["sequelize.Model", "sequelize.SequelizeStaticAndInstance", "Member[Model]"], + ["sequelize.Model", "sequelize.ThroughOptions", "Member[model]"], + ["sequelize.Model", "sequelize.Utils", "Member[mapOptionFieldNames].Argument[1]"], + ["sequelize.Model", "sequelize.Utils", "Member[mapValueFieldNames].Argument[2]"], + ["sequelize.Models", "sequelize.Model", "Member[associate].Argument[0]"], + ["sequelize.ModelsHashInterface", "sequelize.Sequelize", "Member[models]"], + ["sequelize.Options", "sequelize-typescript.SequelizeOptions", ""], + ["sequelize.Options", "sequelize.Sequelize", "Member[options]"], + ["sequelize.Options", "sequelize.SequelizeStatic", "Argument[3]"], + ["sequelize.Options", "sequelize.SequelizeStatic", "WithArity[1].Argument[0,1]"], + ["sequelize.Options", "sequelize.SequelizeStatic", "WithArity[2].Argument[1,2]"], + ["sequelize.Options", "sequelize.SequelizeStatic", "WithArity[3].Argument[2]"], + ["sequelize.QueryInterface", "sequelize.Sequelize", "Member[getQueryInterface].ReturnValue"], + ["sequelize.QueryOptions", "sequelize.Options", "Member[query]"], + ["sequelize.QueryOptions", "sequelize.QueryInterface", "Member[bulkDelete,bulkInsert,createTable,select,setAutocommit,setIsolationLevel].Argument[2]"], + ["sequelize.QueryOptions", "sequelize.QueryInterface", "Member[bulkUpdate,delete,insert].Argument[3]"], + ["sequelize.QueryOptions", "sequelize.QueryInterface", "Member[commitTransaction,deferConstraints,dropTable,rawSelect,rollbackTransaction,showIndex,startTransaction].Argument[1]"], + ["sequelize.QueryOptions", "sequelize.QueryInterface", "Member[createFunction].Argument[5]"], + ["sequelize.QueryOptions", "sequelize.QueryInterface", "Member[dropAllEnums,dropAllTables,showAllSchemas,showAllTables].Argument[0]"], + ["sequelize.QueryOptions", "sequelize.QueryInterface", "Member[increment,update,upsert].Argument[4]"], + ["sequelize.QueryOptions", "sequelize.Sequelize", "Member[authenticate,validate].Argument[0]"], + ["sequelize.QueryOptions", "sequelize.Sequelize", "Member[query].Argument[1]"], + ["sequelize.Sequelize", "sequelize-typescript.Sequelize", ""], + ["sequelize.Sequelize", "sequelize.Hooks", "Member[afterInit].Argument[1].Argument[0]"], + ["sequelize.Sequelize", "sequelize.Hooks", "Member[afterInit].WithArity[1].Argument[0].Argument[0]"], + ["sequelize.Sequelize", "sequelize.Instance", "Member[sequelize]"], + ["sequelize.Sequelize", "sequelize.QueryInterface", "Member[sequelize]"], + ["sequelize.Sequelize", "sequelize.Sequelize", "Member[import].Argument[1].Argument[0]"], + ["sequelize.Sequelize", "sequelize.SequelizeStatic", "Instance"], + ["sequelize.Sequelize", "sequelize.SequelizeStatic", "Member[useCLS].ReturnValue"], + ["sequelize.SequelizeStatic", "sequelize-typescript.Sequelize", ""], + ["sequelize.SequelizeStatic", "sequelize.Sequelize", "Member[Sequelize]"], + ["sequelize.SequelizeStatic", "sequelize.SequelizeStatic", "Member[Sequelize,default]"], + ["sequelize.SequelizeStatic", "sequelize", ""], + ["sequelize.SequelizeStaticAndInstance.Model", "sequelize-typescript.Model", ""], + ["sequelize.SequelizeStaticAndInstance", "sequelize.Sequelize", ""], + ["sequelize.SequelizeStaticAndInstance", "sequelize.SequelizeStatic", ""], + ["sequelize.ThroughOptions", "sequelize.AssociationOptionsBelongsToMany", "Member[through]"], + ["sequelize.Utils", "sequelize.SequelizeStaticAndInstance", "Member[Utils]"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["sequelize-typescript.Model", "", "", "Member[reload].ReturnValue.Awaited", "type"], + ["sequelize.Instance", "", "", "Member[decrement,increment,reload,save,update,updateAttributes].ReturnValue.Awaited", "type"], + ["sequelize.Instance", "", "", "Member[set,setAttributes].ReturnValue", "type"], + ["sequelize.Model", "", "", "Member[schema,scope,unscoped].ReturnValue", "type"], + ["sequelize.Model", "", "", "Member[sync].ReturnValue.Awaited", "type"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeVariableModel" + }, + "data": [ + ["sequelize-typescript.ModelStatic.0", "Instance"], + ["sequelize-typescript.Repository.0", "Instance"] + ] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/frameworks/spanner/model.yml b/javascript/ql/lib/semmle/javascript/frameworks/spanner/model.yml deleted file mode 100644 index bf6e3fa4e5a3..000000000000 --- a/javascript/ql/lib/semmle/javascript/frameworks/spanner/model.yml +++ /dev/null @@ -1,189 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["@google-cloud/spanner.BackupStatic", "@google-cloud/spanner/backup.BackupStatic", ""] - - ["@google-cloud/spanner.BackupStatic", "@google-cloud/spanner/backup", "Member[Backup]"] - - ["@google-cloud/spanner.BackupStatic", "@google-cloud/spanner", "Member[Backup]"] - - ["@google-cloud/spanner.BatchTransaction", "@google-cloud/spanner/batch-transaction.BatchTransaction", ""] - - ["@google-cloud/spanner.Database", "@google-cloud/spanner.DatabaseStatic", Instance] - - ["@google-cloud/spanner.Database", "@google-cloud/spanner.Instance", "Member[database].ReturnValue"] - - ["@google-cloud/spanner.Database", "@google-cloud/spanner.SessionPool", "Member[database]"] - - ["@google-cloud/spanner.Database", "@google-cloud/spanner.SessionPoolStatic", "Argument[0]"] - - ["@google-cloud/spanner.Database", "@google-cloud/spanner.SessionStatic", "Argument[0]"] - - ["@google-cloud/spanner.Database", "@google-cloud/spanner.Table", "Member[database]"] - - ["@google-cloud/spanner.Database", "@google-cloud/spanner.TableStatic", "Argument[0]"] - - ["@google-cloud/spanner.Database", "@google-cloud/spanner/database.Database", ""] - - ["@google-cloud/spanner.Database", "@google-cloud/spanner/database.DatabaseCallback", "TypeVar[@google-cloud/spanner/common.ResourceCallback.0]"] - - ["@google-cloud/spanner.Database", "@google-cloud/spanner/database.RestoreDatabaseCallback", "TypeVar[@google-cloud/spanner/common.LongRunningCallback.0]"] - - ["@google-cloud/spanner.Database", "@google-cloud/spanner/database.SessionPoolConstructor", "Argument[0]"] - - ["@google-cloud/spanner.Database", "@google-cloud/spanner/instance.CreateDatabaseCallback", "TypeVar[@google-cloud/spanner/common.LongRunningCallback.0]"] - - ["@google-cloud/spanner.Database", "@google-cloud/spanner/instance.GetDatabasesCallback", "TypeVar[@google-cloud/spanner/common.RequestCallback.0]"] - - ["@google-cloud/spanner.DatabaseStatic", "@google-cloud/spanner/database.DatabaseStatic", ""] - - ["@google-cloud/spanner.DatabaseStatic", "@google-cloud/spanner/database", "Member[Database]"] - - ["@google-cloud/spanner.DatabaseStatic", "@google-cloud/spanner", "Member[Database]"] - - ["@google-cloud/spanner.GetInstancesCallback", "@google-cloud/spanner.Spanner", "Member[getInstances].Argument[1]"] - - ["@google-cloud/spanner.GetInstancesCallback", "@google-cloud/spanner.Spanner", "Member[getInstances].WithArity[1].Argument[0]"] - - ["@google-cloud/spanner.GetInstancesCallback", "@google-cloud/spanner/build/src.GetInstancesCallback", ""] - - ["@google-cloud/spanner.Instance", "@google-cloud/spanner.BackupStatic", "Argument[0]"] - - ["@google-cloud/spanner.Instance", "@google-cloud/spanner.DatabaseStatic", "Argument[0]"] - - ["@google-cloud/spanner.Instance", "@google-cloud/spanner.GetInstancesCallback", "TypeVar[@google-cloud/spanner/common.PagedCallback.0]"] - - ["@google-cloud/spanner.Instance", "@google-cloud/spanner.InstanceStatic", Instance] - - ["@google-cloud/spanner.Instance", "@google-cloud/spanner.Spanner", "Member[instance].ReturnValue"] - - ["@google-cloud/spanner.Instance", "@google-cloud/spanner/instance.CreateInstanceCallback", "TypeVar[@google-cloud/spanner/common.LongRunningCallback.0]"] - - ["@google-cloud/spanner.Instance", "@google-cloud/spanner/instance.GetInstanceCallback", "TypeVar[@google-cloud/spanner/common.ResourceCallback.0]"] - - ["@google-cloud/spanner.Instance", "@google-cloud/spanner/instance.Instance", ""] - - ["@google-cloud/spanner.InstanceStatic", "@google-cloud/spanner/instance.InstanceStatic", ""] - - ["@google-cloud/spanner.InstanceStatic", "@google-cloud/spanner/instance", "Member[Instance]"] - - ["@google-cloud/spanner.InstanceStatic", "@google-cloud/spanner", "Member[Instance]"] - - ["@google-cloud/spanner.PartitionedDml", "@google-cloud/spanner.PartitionedDmlStatic", Instance] - - ["@google-cloud/spanner.PartitionedDml", "@google-cloud/spanner.Session", "Member[partitionedDml].ReturnValue"] - - ["@google-cloud/spanner.PartitionedDml", "@google-cloud/spanner/transaction.PartitionedDml", ""] - - ["@google-cloud/spanner.PartitionedDmlStatic", "@google-cloud/spanner/transaction.PartitionedDmlStatic", ""] - - ["@google-cloud/spanner.PartitionedDmlStatic", "@google-cloud/spanner/transaction", "Member[PartitionedDml]"] - - ["@google-cloud/spanner.PartitionedDmlStatic", "@google-cloud/spanner", "Member[PartitionedDml]"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner.Database", "Member[_runPartitionedUpdate].Argument[0]"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner.Database", "Member[makePooledRequest_].WithArity[1].ReturnValue.Awaited"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner.Database", "Member[session].ReturnValue"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner.SessionPool", "Member[_acquire,_getSession].ReturnValue.Awaited"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner.SessionPool", "Member[_borrow,_destroy,_isValidSession,_ping,_prepareTransaction,_release,release].Argument[0]"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner.SessionPool", "Member[_borrowFrom,_borrowNextAvailableSession].ReturnValue"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner.SessionPool", "Member[_getIdleSessions].ReturnValue.ArrayElement"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner.SessionStatic", Instance] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner.Snapshot", "Member[session]"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner/batch-transaction.TransactionIdentifier", "Member[session]"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner/database.BatchCreateSessionsCallback", "TypeVar[@google-cloud/spanner/common.ResourceCallback.0].ArrayElement"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner/database.CreateSessionCallback", "TypeVar[@google-cloud/spanner/common.ResourceCallback.0]"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner/database.GetSessionsCallback", "TypeVar[@google-cloud/spanner/common.RequestCallback.0]"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner/database.PoolRequestCallback", "TypeVar[@google-cloud/spanner/common.RequestCallback.0]"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner/session-pool.GetReadSessionCallback", "TypeVar[@google-cloud/spanner/common.NormalCallback.0]"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner/session-pool.GetWriteSessionCallback", "Argument[1]"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner/session-pool.SessionPoolInterface", "Member[release].Argument[0]"] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner/session.Session", ""] - - ["@google-cloud/spanner.Session", "@google-cloud/spanner/transaction-runner.Runner", "Member[session]"] - - ["@google-cloud/spanner.SessionPool", "@google-cloud/spanner.SessionPoolStatic", Instance] - - ["@google-cloud/spanner.SessionPool", "@google-cloud/spanner/instance.CreateDatabaseOptions", "Member[poolCtor]"] - - ["@google-cloud/spanner.SessionPool", "@google-cloud/spanner/session-pool.SessionPool", ""] - - ["@google-cloud/spanner.SessionPoolStatic", "@google-cloud/spanner/session-pool.SessionPoolStatic", ""] - - ["@google-cloud/spanner.SessionPoolStatic", "@google-cloud/spanner/session-pool", "Member[SessionPool]"] - - ["@google-cloud/spanner.SessionPoolStatic", "@google-cloud/spanner", "Member[SessionPool]"] - - ["@google-cloud/spanner.SessionStatic", "@google-cloud/spanner/session.SessionStatic", ""] - - ["@google-cloud/spanner.SessionStatic", "@google-cloud/spanner/session", "Member[Session]"] - - ["@google-cloud/spanner.SessionStatic", "@google-cloud/spanner", "Member[Session]"] - - ["@google-cloud/spanner.Snapshot", "@google-cloud/spanner.Session", "Member[snapshot].ReturnValue"] - - ["@google-cloud/spanner.Snapshot", "@google-cloud/spanner.SnapshotStatic", Instance] - - ["@google-cloud/spanner.Snapshot", "@google-cloud/spanner/batch-transaction.BatchTransaction", ""] - - ["@google-cloud/spanner.Snapshot", "@google-cloud/spanner/database.GetSnapshotCallback", "TypeVar[@google-cloud/spanner/common.NormalCallback.0]"] - - ["@google-cloud/spanner.Snapshot", "@google-cloud/spanner/transaction.Dml", ""] - - ["@google-cloud/spanner.Snapshot", "@google-cloud/spanner/transaction.Snapshot", ""] - - ["@google-cloud/spanner.SnapshotStatic", "@google-cloud/spanner/transaction.SnapshotStatic", ""] - - ["@google-cloud/spanner.SnapshotStatic", "@google-cloud/spanner/transaction", "Member[Snapshot]"] - - ["@google-cloud/spanner.SnapshotStatic", "@google-cloud/spanner", "Member[Snapshot]"] - - ["@google-cloud/spanner.Spanner", "@google-cloud/spanner.InstanceStatic", "Argument[0]"] - - ["@google-cloud/spanner.Spanner", "@google-cloud/spanner.SpannerStatic", Instance] - - ["@google-cloud/spanner.SpannerStatic", "@google-cloud/spanner", "Member[Spanner]"] - - ["@google-cloud/spanner.Table", "@google-cloud/spanner.Database", "Member[table].ReturnValue"] - - ["@google-cloud/spanner.Table", "@google-cloud/spanner.TableStatic", Instance] - - ["@google-cloud/spanner.Table", "@google-cloud/spanner/table.CreateTableCallback", "TypeVar[@google-cloud/spanner/common.LongRunningCallback.0]"] - - ["@google-cloud/spanner.Table", "@google-cloud/spanner/table.Table", ""] - - ["@google-cloud/spanner.TableStatic", "@google-cloud/spanner/table.TableStatic", ""] - - ["@google-cloud/spanner.TableStatic", "@google-cloud/spanner/table", "Member[Table]"] - - ["@google-cloud/spanner.TableStatic", "@google-cloud/spanner", "Member[Table]"] - - ["@google-cloud/spanner.Transaction", "@google-cloud/spanner.Session", "Member[transaction].ReturnValue"] - - ["@google-cloud/spanner.Transaction", "@google-cloud/spanner.Session", "Member[txn]"] - - ["@google-cloud/spanner.Transaction", "@google-cloud/spanner.TransactionStatic", Instance] - - ["@google-cloud/spanner.Transaction", "@google-cloud/spanner/database.GetTransactionCallback", "TypeVar[@google-cloud/spanner/common.NormalCallback.0]"] - - ["@google-cloud/spanner.Transaction", "@google-cloud/spanner/session-pool.GetWriteSessionCallback", "Argument[2]"] - - ["@google-cloud/spanner.Transaction", "@google-cloud/spanner/transaction-runner.AsyncRunTransactionCallback", "Argument[0]"] - - ["@google-cloud/spanner.Transaction", "@google-cloud/spanner/transaction-runner.RunTransactionCallback", "TypeVar[@google-cloud/spanner/common.NormalCallback.0]"] - - ["@google-cloud/spanner.Transaction", "@google-cloud/spanner/transaction-runner.Runner", "Member[getTransaction].ReturnValue.Awaited"] - - ["@google-cloud/spanner.Transaction", "@google-cloud/spanner/transaction-runner.Runner", "Member[transaction]"] - - ["@google-cloud/spanner.Transaction", "@google-cloud/spanner/transaction.Transaction", ""] - - ["@google-cloud/spanner.TransactionStatic", "@google-cloud/spanner/transaction.TransactionStatic", ""] - - ["@google-cloud/spanner.TransactionStatic", "@google-cloud/spanner/transaction", "Member[Transaction]"] - - ["@google-cloud/spanner.TransactionStatic", "@google-cloud/spanner", "Member[Transaction]"] - - ["@google-cloud/spanner.v1.SpannerClient", "@google-cloud/spanner.v1.SpannerClientStatic", Instance] - - ["@google-cloud/spanner.v1.SpannerClient", "@google-cloud/spanner/v1/spanner_client.SpannerClient", ""] - - ["@google-cloud/spanner.v1.SpannerClientStatic", "@google-cloud/spanner/v1/spanner_client.SpannerClientStatic", ""] - - ["@google-cloud/spanner.v1.SpannerClientStatic", "@google-cloud/spanner/v1/spanner_client", "Member[SpannerClient]"] - - ["@google-cloud/spanner.v1.SpannerClientStatic", "@google-cloud/spanner", "Member[v1].Member[SpannerClient]"] - - ["@google-cloud/spanner.~SpannerObject", "@google-cloud/spanner.Database", ""] - - ["@google-cloud/spanner.~SpannerObject", "@google-cloud/spanner.Snapshot", ""] - - ["@google-cloud/spanner.~SpannerObject", "@google-cloud/spanner.Transaction", ""] - - ["@google-cloud/spanner.~SpannerObject", "@google-cloud/spanner.v1.SpannerClient", ""] - - ["@google-cloud/spanner.~SqlExecutorDirect", "@google-cloud/spanner.BatchTransaction", "Member[createQueryPartitions]"] - - ["@google-cloud/spanner.~SqlExecutorDirect", "@google-cloud/spanner.Database", "Member[run,runPartitionedUpdate,runStream]"] - - ["@google-cloud/spanner.~SqlExecutorDirect", "@google-cloud/spanner.PartitionedDml", "Member[runUpdate]"] - - ["@google-cloud/spanner.~SqlExecutorDirect", "@google-cloud/spanner.Snapshot", "Member[run,runStream]"] - - ["@google-cloud/spanner.~SqlExecutorDirect", "@google-cloud/spanner.Transaction", "Member[run,runStream,runUpdate]"] - - ["@google-cloud/spanner.~SqlExecutorDirect", "@google-cloud/spanner.v1.SpannerClient", "Member[executeSql,executeStreamingSql,partitionQuery]"] - - ["@google-cloud/spanner/batch-transaction.BatchTransaction", "@google-cloud/spanner.Database", "Member[batchTransaction].ReturnValue"] - - ["@google-cloud/spanner/batch-transaction.BatchTransaction", "@google-cloud/spanner/batch-transaction.BatchTransactionStatic", Instance] - - ["@google-cloud/spanner/batch-transaction.BatchTransaction", "@google-cloud/spanner/database.CreateBatchTransactionCallback", "TypeVar[@google-cloud/spanner/common.ResourceCallback.0]"] - - ["@google-cloud/spanner/batch-transaction.BatchTransactionStatic", "@google-cloud/spanner/batch-transaction", "Member[BatchTransaction]"] - - ["@google-cloud/spanner/batch-transaction.TransactionIdentifier", "@google-cloud/spanner.Database", "Member[batchTransaction].Argument[0]"] - - ["@google-cloud/spanner/batch-transaction.TransactionIdentifier", "@google-cloud/spanner/batch-transaction.BatchTransaction", "Member[identifier].ReturnValue"] - - ["@google-cloud/spanner/database.BatchCreateSessionsCallback", "@google-cloud/spanner.Database", "Member[batchCreateSessions].Argument[1]"] - - ["@google-cloud/spanner/database.CreateBatchTransactionCallback", "@google-cloud/spanner.Database", "Member[createBatchTransaction].Argument[1]"] - - ["@google-cloud/spanner/database.CreateBatchTransactionCallback", "@google-cloud/spanner.Database", "Member[createBatchTransaction].WithArity[1].Argument[0]"] - - ["@google-cloud/spanner/database.CreateSessionCallback", "@google-cloud/spanner.Database", "Member[createSession].Argument[1]"] - - ["@google-cloud/spanner/database.CreateSessionCallback", "@google-cloud/spanner.Database", "Member[createSession].WithArity[1].Argument[0]"] - - ["@google-cloud/spanner/database.DatabaseCallback", "@google-cloud/spanner.Database", "Member[get].Argument[1]"] - - ["@google-cloud/spanner/database.DatabaseCallback", "@google-cloud/spanner.Database", "Member[get].WithArity[1].Argument[0]"] - - ["@google-cloud/spanner/database.GetSessionsCallback", "@google-cloud/spanner.Database", "Member[getSessions].Argument[1]"] - - ["@google-cloud/spanner/database.GetSessionsCallback", "@google-cloud/spanner.Database", "Member[getSessions].WithArity[1].Argument[0]"] - - ["@google-cloud/spanner/database.GetSnapshotCallback", "@google-cloud/spanner.Database", "Member[getSnapshot].Argument[1]"] - - ["@google-cloud/spanner/database.GetSnapshotCallback", "@google-cloud/spanner.Database", "Member[getSnapshot].WithArity[1].Argument[0]"] - - ["@google-cloud/spanner/database.GetTransactionCallback", "@google-cloud/spanner.Database", "Member[getTransaction].Argument[0]"] - - ["@google-cloud/spanner/database.PoolRequestCallback", "@google-cloud/spanner.Database", "Member[makePooledRequest_].Argument[1]"] - - ["@google-cloud/spanner/database.RestoreDatabaseCallback", "@google-cloud/spanner.Database", "Member[restore].Argument[1,2]"] - - ["@google-cloud/spanner/database.SessionPoolConstructor", "@google-cloud/spanner.DatabaseStatic", "Argument[2]"] - - ["@google-cloud/spanner/database.SessionPoolConstructor", "@google-cloud/spanner.Instance", "Member[database].Argument[1]"] - - ["@google-cloud/spanner/instance.CreateDatabaseCallback", "@google-cloud/spanner.Instance", "Member[createDatabase].Argument[2]"] - - ["@google-cloud/spanner/instance.CreateDatabaseCallback", "@google-cloud/spanner.Instance", "Member[createDatabase].WithArity[2].Argument[1]"] - - ["@google-cloud/spanner/instance.CreateDatabaseOptions", "@google-cloud/spanner.Instance", "Member[createDatabase].WithArity[1,2,3].Argument[1]"] - - ["@google-cloud/spanner/instance.CreateInstanceCallback", "@google-cloud/spanner.Spanner", "Member[createInstance].Argument[2]"] - - ["@google-cloud/spanner/instance.GetDatabasesCallback", "@google-cloud/spanner.Instance", "Member[getDatabases].Argument[1]"] - - ["@google-cloud/spanner/instance.GetDatabasesCallback", "@google-cloud/spanner.Instance", "Member[getDatabases].WithArity[1].Argument[0]"] - - ["@google-cloud/spanner/instance.GetInstanceCallback", "@google-cloud/spanner.Instance", "Member[get].Argument[1]"] - - ["@google-cloud/spanner/instance.GetInstanceCallback", "@google-cloud/spanner.Instance", "Member[get].WithArity[1].Argument[0]"] - - ["@google-cloud/spanner/session-pool.GetReadSessionCallback", "@google-cloud/spanner.SessionPool", "Member[getReadSession].Argument[0]"] - - ["@google-cloud/spanner/session-pool.GetReadSessionCallback", "@google-cloud/spanner/session-pool.SessionPoolInterface", "Member[getReadSession].Argument[0]"] - - ["@google-cloud/spanner/session-pool.GetWriteSessionCallback", "@google-cloud/spanner.SessionPool", "Member[getWriteSession].Argument[0]"] - - ["@google-cloud/spanner/session-pool.GetWriteSessionCallback", "@google-cloud/spanner/session-pool.SessionPoolInterface", "Member[getWriteSession].Argument[0]"] - - ["@google-cloud/spanner/session-pool.SessionPoolInterface", "@google-cloud/spanner.Database", "Member[pool_]"] - - ["@google-cloud/spanner/session-pool.SessionPoolInterface", "@google-cloud/spanner.SessionPool", ""] - - ["@google-cloud/spanner/session-pool.SessionPoolInterface", "@google-cloud/spanner/database.SessionPoolConstructor", Instance] - - ["@google-cloud/spanner/table.CreateTableCallback", "@google-cloud/spanner.Database", "Member[createTable].Argument[2]"] - - ["@google-cloud/spanner/table.CreateTableCallback", "@google-cloud/spanner.Database", "Member[createTable].WithArity[2].Argument[1]"] - - ["@google-cloud/spanner/table.CreateTableCallback", "@google-cloud/spanner.Table", "Member[create].Argument[2]"] - - ["@google-cloud/spanner/table.CreateTableCallback", "@google-cloud/spanner.Table", "Member[create].WithArity[2].Argument[1]"] - - ["@google-cloud/spanner/transaction-runner.AsyncRunTransactionCallback", "@google-cloud/spanner.Database", "Member[runTransactionAsync].Argument[1]"] - - ["@google-cloud/spanner/transaction-runner.AsyncRunTransactionCallback", "@google-cloud/spanner.Database", "Member[runTransactionAsync].WithArity[1].Argument[0]"] - - ["@google-cloud/spanner/transaction-runner.AsyncRunTransactionCallback", "@google-cloud/spanner/transaction-runner.AsyncTransactionRunnerStatic", "Argument[2]"] - - ["@google-cloud/spanner/transaction-runner.AsyncTransactionRunner", "@google-cloud/spanner/transaction-runner.AsyncTransactionRunnerStatic", Instance] - - ["@google-cloud/spanner/transaction-runner.AsyncTransactionRunnerStatic", "@google-cloud/spanner/transaction-runner", "Member[AsyncTransactionRunner]"] - - ["@google-cloud/spanner/transaction-runner.RunTransactionCallback", "@google-cloud/spanner.Database", "Member[runTransaction].Argument[1]"] - - ["@google-cloud/spanner/transaction-runner.RunTransactionCallback", "@google-cloud/spanner.Database", "Member[runTransaction].WithArity[1].Argument[0]"] - - ["@google-cloud/spanner/transaction-runner.RunTransactionCallback", "@google-cloud/spanner/transaction-runner.TransactionRunnerStatic", "Argument[2]"] - - ["@google-cloud/spanner/transaction-runner.Runner", "@google-cloud/spanner/transaction-runner.AsyncTransactionRunner", ""] - - ["@google-cloud/spanner/transaction-runner.Runner", "@google-cloud/spanner/transaction-runner.RunnerStatic", Instance] - - ["@google-cloud/spanner/transaction-runner.Runner", "@google-cloud/spanner/transaction-runner.TransactionRunner", ""] - - ["@google-cloud/spanner/transaction-runner.RunnerStatic", "@google-cloud/spanner/transaction-runner", "Member[Runner]"] - - ["@google-cloud/spanner/transaction-runner.TransactionRunner", "@google-cloud/spanner/transaction-runner.TransactionRunnerStatic", Instance] - - ["@google-cloud/spanner/transaction-runner.TransactionRunnerStatic", "@google-cloud/spanner/transaction-runner", "Member[TransactionRunner]"] - - ["@google-cloud/spanner/transaction.Dml", "@google-cloud/spanner.PartitionedDml", ""] - - ["@google-cloud/spanner/transaction.Dml", "@google-cloud/spanner.Transaction", ""] - - ["@google-cloud/spanner/transaction.Dml", "@google-cloud/spanner/transaction.DmlStatic", Instance] - - ["@google-cloud/spanner/transaction.DmlStatic", "@google-cloud/spanner/transaction", "Member[Dml]"] - - - addsTo: - pack: codeql/javascript-all - extensible: typeVariableModel - data: - - ["@google-cloud/spanner/common.LongRunningCallback.0", "Argument[1]"] - - ["@google-cloud/spanner/common.NormalCallback.0", "Argument[1]"] - - ["@google-cloud/spanner/common.PagedCallback.0", "Argument[1].ArrayElement"] - - ["@google-cloud/spanner/common.RequestCallback.0", "TypeVar[@google-cloud/spanner/common.NormalCallback.0,@google-cloud/spanner/common.PagedCallback.0]"] - - ["@google-cloud/spanner/common.ResourceCallback.0", "Argument[1]"] diff --git a/javascript/ql/lib/semmle/javascript/frameworks/spanner/spanner.model.json b/javascript/ql/lib/semmle/javascript/frameworks/spanner/spanner.model.json new file mode 100644 index 000000000000..2dd6f3ab0f47 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/frameworks/spanner/spanner.model.json @@ -0,0 +1,199 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["@google-cloud/spanner.BackupStatic", "@google-cloud/spanner/backup.BackupStatic", ""], + ["@google-cloud/spanner.BackupStatic", "@google-cloud/spanner/backup", "Member[Backup]"], + ["@google-cloud/spanner.BackupStatic", "@google-cloud/spanner", "Member[Backup]"], + ["@google-cloud/spanner.BatchTransaction", "@google-cloud/spanner/batch-transaction.BatchTransaction", ""], + ["@google-cloud/spanner.Database", "@google-cloud/spanner.DatabaseStatic", "Instance"], + ["@google-cloud/spanner.Database", "@google-cloud/spanner.Instance", "Member[database].ReturnValue"], + ["@google-cloud/spanner.Database", "@google-cloud/spanner.SessionPool", "Member[database]"], + ["@google-cloud/spanner.Database", "@google-cloud/spanner.SessionPoolStatic", "Argument[0]"], + ["@google-cloud/spanner.Database", "@google-cloud/spanner.SessionStatic", "Argument[0]"], + ["@google-cloud/spanner.Database", "@google-cloud/spanner.Table", "Member[database]"], + ["@google-cloud/spanner.Database", "@google-cloud/spanner.TableStatic", "Argument[0]"], + ["@google-cloud/spanner.Database", "@google-cloud/spanner/database.Database", ""], + ["@google-cloud/spanner.Database", "@google-cloud/spanner/database.DatabaseCallback", "TypeVar[@google-cloud/spanner/common.ResourceCallback.0]"], + ["@google-cloud/spanner.Database", "@google-cloud/spanner/database.RestoreDatabaseCallback", "TypeVar[@google-cloud/spanner/common.LongRunningCallback.0]"], + ["@google-cloud/spanner.Database", "@google-cloud/spanner/database.SessionPoolConstructor", "Argument[0]"], + ["@google-cloud/spanner.Database", "@google-cloud/spanner/instance.CreateDatabaseCallback", "TypeVar[@google-cloud/spanner/common.LongRunningCallback.0]"], + ["@google-cloud/spanner.Database", "@google-cloud/spanner/instance.GetDatabasesCallback", "TypeVar[@google-cloud/spanner/common.RequestCallback.0]"], + ["@google-cloud/spanner.DatabaseStatic", "@google-cloud/spanner/database.DatabaseStatic", ""], + ["@google-cloud/spanner.DatabaseStatic", "@google-cloud/spanner/database", "Member[Database]"], + ["@google-cloud/spanner.DatabaseStatic", "@google-cloud/spanner", "Member[Database]"], + ["@google-cloud/spanner.GetInstancesCallback", "@google-cloud/spanner.Spanner", "Member[getInstances].Argument[1]"], + ["@google-cloud/spanner.GetInstancesCallback", "@google-cloud/spanner.Spanner", "Member[getInstances].WithArity[1].Argument[0]"], + ["@google-cloud/spanner.GetInstancesCallback", "@google-cloud/spanner/build/src.GetInstancesCallback", ""], + ["@google-cloud/spanner.Instance", "@google-cloud/spanner.BackupStatic", "Argument[0]"], + ["@google-cloud/spanner.Instance", "@google-cloud/spanner.DatabaseStatic", "Argument[0]"], + ["@google-cloud/spanner.Instance", "@google-cloud/spanner.GetInstancesCallback", "TypeVar[@google-cloud/spanner/common.PagedCallback.0]"], + ["@google-cloud/spanner.Instance", "@google-cloud/spanner.InstanceStatic", "Instance"], + ["@google-cloud/spanner.Instance", "@google-cloud/spanner.Spanner", "Member[instance].ReturnValue"], + ["@google-cloud/spanner.Instance", "@google-cloud/spanner/instance.CreateInstanceCallback", "TypeVar[@google-cloud/spanner/common.LongRunningCallback.0]"], + ["@google-cloud/spanner.Instance", "@google-cloud/spanner/instance.GetInstanceCallback", "TypeVar[@google-cloud/spanner/common.ResourceCallback.0]"], + ["@google-cloud/spanner.Instance", "@google-cloud/spanner/instance.Instance", ""], + ["@google-cloud/spanner.InstanceStatic", "@google-cloud/spanner/instance.InstanceStatic", ""], + ["@google-cloud/spanner.InstanceStatic", "@google-cloud/spanner/instance", "Member[Instance]"], + ["@google-cloud/spanner.InstanceStatic", "@google-cloud/spanner", "Member[Instance]"], + ["@google-cloud/spanner.PartitionedDml", "@google-cloud/spanner.PartitionedDmlStatic", "Instance"], + ["@google-cloud/spanner.PartitionedDml", "@google-cloud/spanner.Session", "Member[partitionedDml].ReturnValue"], + ["@google-cloud/spanner.PartitionedDml", "@google-cloud/spanner/transaction.PartitionedDml", ""], + ["@google-cloud/spanner.PartitionedDmlStatic", "@google-cloud/spanner/transaction.PartitionedDmlStatic", ""], + ["@google-cloud/spanner.PartitionedDmlStatic", "@google-cloud/spanner/transaction", "Member[PartitionedDml]"], + ["@google-cloud/spanner.PartitionedDmlStatic", "@google-cloud/spanner", "Member[PartitionedDml]"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner.Database", "Member[_runPartitionedUpdate].Argument[0]"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner.Database", "Member[makePooledRequest_].WithArity[1].ReturnValue.Awaited"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner.Database", "Member[session].ReturnValue"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner.SessionPool", "Member[_acquire,_getSession].ReturnValue.Awaited"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner.SessionPool", "Member[_borrow,_destroy,_isValidSession,_ping,_prepareTransaction,_release,release].Argument[0]"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner.SessionPool", "Member[_borrowFrom,_borrowNextAvailableSession].ReturnValue"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner.SessionPool", "Member[_getIdleSessions].ReturnValue.ArrayElement"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner.SessionStatic", "Instance"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner.Snapshot", "Member[session]"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner/batch-transaction.TransactionIdentifier", "Member[session]"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner/database.BatchCreateSessionsCallback", "TypeVar[@google-cloud/spanner/common.ResourceCallback.0].ArrayElement"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner/database.CreateSessionCallback", "TypeVar[@google-cloud/spanner/common.ResourceCallback.0]"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner/database.GetSessionsCallback", "TypeVar[@google-cloud/spanner/common.RequestCallback.0]"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner/database.PoolRequestCallback", "TypeVar[@google-cloud/spanner/common.RequestCallback.0]"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner/session-pool.GetReadSessionCallback", "TypeVar[@google-cloud/spanner/common.NormalCallback.0]"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner/session-pool.GetWriteSessionCallback", "Argument[1]"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner/session-pool.SessionPoolInterface", "Member[release].Argument[0]"], + ["@google-cloud/spanner.Session", "@google-cloud/spanner/session.Session", ""], + ["@google-cloud/spanner.Session", "@google-cloud/spanner/transaction-runner.Runner", "Member[session]"], + ["@google-cloud/spanner.SessionPool", "@google-cloud/spanner.SessionPoolStatic", "Instance"], + ["@google-cloud/spanner.SessionPool", "@google-cloud/spanner/instance.CreateDatabaseOptions", "Member[poolCtor]"], + ["@google-cloud/spanner.SessionPool", "@google-cloud/spanner/session-pool.SessionPool", ""], + ["@google-cloud/spanner.SessionPoolStatic", "@google-cloud/spanner/session-pool.SessionPoolStatic", ""], + ["@google-cloud/spanner.SessionPoolStatic", "@google-cloud/spanner/session-pool", "Member[SessionPool]"], + ["@google-cloud/spanner.SessionPoolStatic", "@google-cloud/spanner", "Member[SessionPool]"], + ["@google-cloud/spanner.SessionStatic", "@google-cloud/spanner/session.SessionStatic", ""], + ["@google-cloud/spanner.SessionStatic", "@google-cloud/spanner/session", "Member[Session]"], + ["@google-cloud/spanner.SessionStatic", "@google-cloud/spanner", "Member[Session]"], + ["@google-cloud/spanner.Snapshot", "@google-cloud/spanner.Session", "Member[snapshot].ReturnValue"], + ["@google-cloud/spanner.Snapshot", "@google-cloud/spanner.SnapshotStatic", "Instance"], + ["@google-cloud/spanner.Snapshot", "@google-cloud/spanner/batch-transaction.BatchTransaction", ""], + ["@google-cloud/spanner.Snapshot", "@google-cloud/spanner/database.GetSnapshotCallback", "TypeVar[@google-cloud/spanner/common.NormalCallback.0]"], + ["@google-cloud/spanner.Snapshot", "@google-cloud/spanner/transaction.Dml", ""], + ["@google-cloud/spanner.Snapshot", "@google-cloud/spanner/transaction.Snapshot", ""], + ["@google-cloud/spanner.SnapshotStatic", "@google-cloud/spanner/transaction.SnapshotStatic", ""], + ["@google-cloud/spanner.SnapshotStatic", "@google-cloud/spanner/transaction", "Member[Snapshot]"], + ["@google-cloud/spanner.SnapshotStatic", "@google-cloud/spanner", "Member[Snapshot]"], + ["@google-cloud/spanner.Spanner", "@google-cloud/spanner.InstanceStatic", "Argument[0]"], + ["@google-cloud/spanner.Spanner", "@google-cloud/spanner.SpannerStatic", "Instance"], + ["@google-cloud/spanner.SpannerStatic", "@google-cloud/spanner", "Member[Spanner]"], + ["@google-cloud/spanner.Table", "@google-cloud/spanner.Database", "Member[table].ReturnValue"], + ["@google-cloud/spanner.Table", "@google-cloud/spanner.TableStatic", "Instance"], + ["@google-cloud/spanner.Table", "@google-cloud/spanner/table.CreateTableCallback", "TypeVar[@google-cloud/spanner/common.LongRunningCallback.0]"], + ["@google-cloud/spanner.Table", "@google-cloud/spanner/table.Table", ""], + ["@google-cloud/spanner.TableStatic", "@google-cloud/spanner/table.TableStatic", ""], + ["@google-cloud/spanner.TableStatic", "@google-cloud/spanner/table", "Member[Table]"], + ["@google-cloud/spanner.TableStatic", "@google-cloud/spanner", "Member[Table]"], + ["@google-cloud/spanner.Transaction", "@google-cloud/spanner.Session", "Member[transaction].ReturnValue"], + ["@google-cloud/spanner.Transaction", "@google-cloud/spanner.Session", "Member[txn]"], + ["@google-cloud/spanner.Transaction", "@google-cloud/spanner.TransactionStatic", "Instance"], + ["@google-cloud/spanner.Transaction", "@google-cloud/spanner/database.GetTransactionCallback", "TypeVar[@google-cloud/spanner/common.NormalCallback.0]"], + ["@google-cloud/spanner.Transaction", "@google-cloud/spanner/session-pool.GetWriteSessionCallback", "Argument[2]"], + ["@google-cloud/spanner.Transaction", "@google-cloud/spanner/transaction-runner.AsyncRunTransactionCallback", "Argument[0]"], + ["@google-cloud/spanner.Transaction", "@google-cloud/spanner/transaction-runner.RunTransactionCallback", "TypeVar[@google-cloud/spanner/common.NormalCallback.0]"], + ["@google-cloud/spanner.Transaction", "@google-cloud/spanner/transaction-runner.Runner", "Member[getTransaction].ReturnValue.Awaited"], + ["@google-cloud/spanner.Transaction", "@google-cloud/spanner/transaction-runner.Runner", "Member[transaction]"], + ["@google-cloud/spanner.Transaction", "@google-cloud/spanner/transaction.Transaction", ""], + ["@google-cloud/spanner.TransactionStatic", "@google-cloud/spanner/transaction.TransactionStatic", ""], + ["@google-cloud/spanner.TransactionStatic", "@google-cloud/spanner/transaction", "Member[Transaction]"], + ["@google-cloud/spanner.TransactionStatic", "@google-cloud/spanner", "Member[Transaction]"], + ["@google-cloud/spanner.v1.SpannerClient", "@google-cloud/spanner.v1.SpannerClientStatic", "Instance"], + ["@google-cloud/spanner.v1.SpannerClient", "@google-cloud/spanner/v1/spanner_client.SpannerClient", ""], + ["@google-cloud/spanner.v1.SpannerClientStatic", "@google-cloud/spanner/v1/spanner_client.SpannerClientStatic", ""], + ["@google-cloud/spanner.v1.SpannerClientStatic", "@google-cloud/spanner/v1/spanner_client", "Member[SpannerClient]"], + ["@google-cloud/spanner.v1.SpannerClientStatic", "@google-cloud/spanner", "Member[v1].Member[SpannerClient]"], + ["@google-cloud/spanner.~SpannerObject", "@google-cloud/spanner.Database", ""], + ["@google-cloud/spanner.~SpannerObject", "@google-cloud/spanner.Snapshot", ""], + ["@google-cloud/spanner.~SpannerObject", "@google-cloud/spanner.Transaction", ""], + ["@google-cloud/spanner.~SpannerObject", "@google-cloud/spanner.v1.SpannerClient", ""], + ["@google-cloud/spanner.~SqlExecutorDirect", "@google-cloud/spanner.BatchTransaction", "Member[createQueryPartitions]"], + ["@google-cloud/spanner.~SqlExecutorDirect", "@google-cloud/spanner.Database", "Member[run,runPartitionedUpdate,runStream]"], + ["@google-cloud/spanner.~SqlExecutorDirect", "@google-cloud/spanner.PartitionedDml", "Member[runUpdate]"], + ["@google-cloud/spanner.~SqlExecutorDirect", "@google-cloud/spanner.Snapshot", "Member[run,runStream]"], + ["@google-cloud/spanner.~SqlExecutorDirect", "@google-cloud/spanner.Transaction", "Member[run,runStream,runUpdate]"], + ["@google-cloud/spanner.~SqlExecutorDirect", "@google-cloud/spanner.v1.SpannerClient", "Member[executeSql,executeStreamingSql,partitionQuery]"], + ["@google-cloud/spanner/batch-transaction.BatchTransaction", "@google-cloud/spanner.Database", "Member[batchTransaction].ReturnValue"], + ["@google-cloud/spanner/batch-transaction.BatchTransaction", "@google-cloud/spanner/batch-transaction.BatchTransactionStatic", "Instance"], + ["@google-cloud/spanner/batch-transaction.BatchTransaction", "@google-cloud/spanner/database.CreateBatchTransactionCallback", "TypeVar[@google-cloud/spanner/common.ResourceCallback.0]"], + ["@google-cloud/spanner/batch-transaction.BatchTransactionStatic", "@google-cloud/spanner/batch-transaction", "Member[BatchTransaction]"], + ["@google-cloud/spanner/batch-transaction.TransactionIdentifier", "@google-cloud/spanner.Database", "Member[batchTransaction].Argument[0]"], + ["@google-cloud/spanner/batch-transaction.TransactionIdentifier", "@google-cloud/spanner/batch-transaction.BatchTransaction", "Member[identifier].ReturnValue"], + ["@google-cloud/spanner/database.BatchCreateSessionsCallback", "@google-cloud/spanner.Database", "Member[batchCreateSessions].Argument[1]"], + ["@google-cloud/spanner/database.CreateBatchTransactionCallback", "@google-cloud/spanner.Database", "Member[createBatchTransaction].Argument[1]"], + ["@google-cloud/spanner/database.CreateBatchTransactionCallback", "@google-cloud/spanner.Database", "Member[createBatchTransaction].WithArity[1].Argument[0]"], + ["@google-cloud/spanner/database.CreateSessionCallback", "@google-cloud/spanner.Database", "Member[createSession].Argument[1]"], + ["@google-cloud/spanner/database.CreateSessionCallback", "@google-cloud/spanner.Database", "Member[createSession].WithArity[1].Argument[0]"], + ["@google-cloud/spanner/database.DatabaseCallback", "@google-cloud/spanner.Database", "Member[get].Argument[1]"], + ["@google-cloud/spanner/database.DatabaseCallback", "@google-cloud/spanner.Database", "Member[get].WithArity[1].Argument[0]"], + ["@google-cloud/spanner/database.GetSessionsCallback", "@google-cloud/spanner.Database", "Member[getSessions].Argument[1]"], + ["@google-cloud/spanner/database.GetSessionsCallback", "@google-cloud/spanner.Database", "Member[getSessions].WithArity[1].Argument[0]"], + ["@google-cloud/spanner/database.GetSnapshotCallback", "@google-cloud/spanner.Database", "Member[getSnapshot].Argument[1]"], + ["@google-cloud/spanner/database.GetSnapshotCallback", "@google-cloud/spanner.Database", "Member[getSnapshot].WithArity[1].Argument[0]"], + ["@google-cloud/spanner/database.GetTransactionCallback", "@google-cloud/spanner.Database", "Member[getTransaction].Argument[0]"], + ["@google-cloud/spanner/database.PoolRequestCallback", "@google-cloud/spanner.Database", "Member[makePooledRequest_].Argument[1]"], + ["@google-cloud/spanner/database.RestoreDatabaseCallback", "@google-cloud/spanner.Database", "Member[restore].Argument[1,2]"], + ["@google-cloud/spanner/database.SessionPoolConstructor", "@google-cloud/spanner.DatabaseStatic", "Argument[2]"], + ["@google-cloud/spanner/database.SessionPoolConstructor", "@google-cloud/spanner.Instance", "Member[database].Argument[1]"], + ["@google-cloud/spanner/instance.CreateDatabaseCallback", "@google-cloud/spanner.Instance", "Member[createDatabase].Argument[2]"], + ["@google-cloud/spanner/instance.CreateDatabaseCallback", "@google-cloud/spanner.Instance", "Member[createDatabase].WithArity[2].Argument[1]"], + ["@google-cloud/spanner/instance.CreateDatabaseOptions", "@google-cloud/spanner.Instance", "Member[createDatabase].WithArity[1,2,3].Argument[1]"], + ["@google-cloud/spanner/instance.CreateInstanceCallback", "@google-cloud/spanner.Spanner", "Member[createInstance].Argument[2]"], + ["@google-cloud/spanner/instance.GetDatabasesCallback", "@google-cloud/spanner.Instance", "Member[getDatabases].Argument[1]"], + ["@google-cloud/spanner/instance.GetDatabasesCallback", "@google-cloud/spanner.Instance", "Member[getDatabases].WithArity[1].Argument[0]"], + ["@google-cloud/spanner/instance.GetInstanceCallback", "@google-cloud/spanner.Instance", "Member[get].Argument[1]"], + ["@google-cloud/spanner/instance.GetInstanceCallback", "@google-cloud/spanner.Instance", "Member[get].WithArity[1].Argument[0]"], + ["@google-cloud/spanner/session-pool.GetReadSessionCallback", "@google-cloud/spanner.SessionPool", "Member[getReadSession].Argument[0]"], + ["@google-cloud/spanner/session-pool.GetReadSessionCallback", "@google-cloud/spanner/session-pool.SessionPoolInterface", "Member[getReadSession].Argument[0]"], + ["@google-cloud/spanner/session-pool.GetWriteSessionCallback", "@google-cloud/spanner.SessionPool", "Member[getWriteSession].Argument[0]"], + ["@google-cloud/spanner/session-pool.GetWriteSessionCallback", "@google-cloud/spanner/session-pool.SessionPoolInterface", "Member[getWriteSession].Argument[0]"], + ["@google-cloud/spanner/session-pool.SessionPoolInterface", "@google-cloud/spanner.Database", "Member[pool_]"], + ["@google-cloud/spanner/session-pool.SessionPoolInterface", "@google-cloud/spanner.SessionPool", ""], + ["@google-cloud/spanner/session-pool.SessionPoolInterface", "@google-cloud/spanner/database.SessionPoolConstructor", "Instance"], + ["@google-cloud/spanner/table.CreateTableCallback", "@google-cloud/spanner.Database", "Member[createTable].Argument[2]"], + ["@google-cloud/spanner/table.CreateTableCallback", "@google-cloud/spanner.Database", "Member[createTable].WithArity[2].Argument[1]"], + ["@google-cloud/spanner/table.CreateTableCallback", "@google-cloud/spanner.Table", "Member[create].Argument[2]"], + ["@google-cloud/spanner/table.CreateTableCallback", "@google-cloud/spanner.Table", "Member[create].WithArity[2].Argument[1]"], + ["@google-cloud/spanner/transaction-runner.AsyncRunTransactionCallback", "@google-cloud/spanner.Database", "Member[runTransactionAsync].Argument[1]"], + ["@google-cloud/spanner/transaction-runner.AsyncRunTransactionCallback", "@google-cloud/spanner.Database", "Member[runTransactionAsync].WithArity[1].Argument[0]"], + ["@google-cloud/spanner/transaction-runner.AsyncRunTransactionCallback", "@google-cloud/spanner/transaction-runner.AsyncTransactionRunnerStatic", "Argument[2]"], + ["@google-cloud/spanner/transaction-runner.AsyncTransactionRunner", "@google-cloud/spanner/transaction-runner.AsyncTransactionRunnerStatic", "Instance"], + ["@google-cloud/spanner/transaction-runner.AsyncTransactionRunnerStatic", "@google-cloud/spanner/transaction-runner", "Member[AsyncTransactionRunner]"], + ["@google-cloud/spanner/transaction-runner.RunTransactionCallback", "@google-cloud/spanner.Database", "Member[runTransaction].Argument[1]"], + ["@google-cloud/spanner/transaction-runner.RunTransactionCallback", "@google-cloud/spanner.Database", "Member[runTransaction].WithArity[1].Argument[0]"], + ["@google-cloud/spanner/transaction-runner.RunTransactionCallback", "@google-cloud/spanner/transaction-runner.TransactionRunnerStatic", "Argument[2]"], + ["@google-cloud/spanner/transaction-runner.Runner", "@google-cloud/spanner/transaction-runner.AsyncTransactionRunner", ""], + ["@google-cloud/spanner/transaction-runner.Runner", "@google-cloud/spanner/transaction-runner.RunnerStatic", "Instance"], + ["@google-cloud/spanner/transaction-runner.Runner", "@google-cloud/spanner/transaction-runner.TransactionRunner", ""], + ["@google-cloud/spanner/transaction-runner.RunnerStatic", "@google-cloud/spanner/transaction-runner", "Member[Runner]"], + ["@google-cloud/spanner/transaction-runner.TransactionRunner", "@google-cloud/spanner/transaction-runner.TransactionRunnerStatic", "Instance"], + ["@google-cloud/spanner/transaction-runner.TransactionRunnerStatic", "@google-cloud/spanner/transaction-runner", "Member[TransactionRunner]"], + ["@google-cloud/spanner/transaction.Dml", "@google-cloud/spanner.PartitionedDml", ""], + ["@google-cloud/spanner/transaction.Dml", "@google-cloud/spanner.Transaction", ""], + ["@google-cloud/spanner/transaction.Dml", "@google-cloud/spanner/transaction.DmlStatic", "Instance"], + ["@google-cloud/spanner/transaction.DmlStatic", "@google-cloud/spanner/transaction", "Member[Dml]"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeVariableModel" + }, + "data": [ + ["@google-cloud/spanner/common.LongRunningCallback.0", "Argument[1]"], + ["@google-cloud/spanner/common.NormalCallback.0", "Argument[1]"], + ["@google-cloud/spanner/common.PagedCallback.0", "Argument[1].ArrayElement"], + ["@google-cloud/spanner/common.RequestCallback.0", "TypeVar[@google-cloud/spanner/common.NormalCallback.0,@google-cloud/spanner/common.PagedCallback.0]"], + ["@google-cloud/spanner/common.ResourceCallback.0", "Argument[1]"] + ] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/frameworks/sqlite3/model.yml b/javascript/ql/lib/semmle/javascript/frameworks/sqlite3/model.yml deleted file mode 100644 index 643ef4efb259..000000000000 --- a/javascript/ql/lib/semmle/javascript/frameworks/sqlite3/model.yml +++ /dev/null @@ -1,28 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - [sqlite3.Database, sqlite3.Database, "Member[addListener,all,each,exec,get,on,once,prependListener,prependOnceListener,run].ReturnValue"] - - [sqlite3.Database, sqlite3.DatabaseStatic, Instance] - - [sqlite3.Database, sqlite3.Statement, "Member[finalize].ReturnValue"] - - [sqlite3.Database, sqlite3, "Member[cached].Member[Database].ReturnValue"] - - [sqlite3.DatabaseStatic, sqlite3.sqlite3, "Member[Database]"] - - [sqlite3.DatabaseStatic, sqlite3, "Member[Database]"] - - [sqlite3.RunResult, sqlite3.sqlite3, "Member[RunResult]"] - - [sqlite3.Statement, sqlite3.Database, "Member[prepare].ReturnValue"] - - [sqlite3.Statement, sqlite3.RunResult, ""] - - [sqlite3.Statement, sqlite3.Statement, "Member[all,bind,each,get,reset,run].ReturnValue"] - - [sqlite3.Statement, sqlite3.StatementStatic, Instance] - - [sqlite3.StatementStatic, sqlite3.sqlite3, "Member[Statement]"] - - [sqlite3.StatementStatic, sqlite3, "Member[Statement]"] - - [sqlite3.sqlite3, sqlite3.sqlite3, "Member[verbose].ReturnValue"] - - [sqlite3.sqlite3, sqlite3, "Member[verbose].ReturnValue"] - - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - [sqlite3.Database, "", "", "Member[addListener,all,each,exec,get,on,once,prependListener,prependOnceListener,run].ReturnValue", type] - - [sqlite3.Statement, "", "", "Member[all,bind,each,get,reset,run].ReturnValue", type] - - [sqlite3.sqlite3, "", "", "Member[verbose].ReturnValue", type] diff --git a/javascript/ql/lib/semmle/javascript/frameworks/sqlite3/sqlite3.model.json b/javascript/ql/lib/semmle/javascript/frameworks/sqlite3/sqlite3.model.json new file mode 100644 index 000000000000..b3accb0c11e7 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/frameworks/sqlite3/sqlite3.model.json @@ -0,0 +1,38 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["sqlite3.Database", "sqlite3.Database", "Member[addListener,all,each,exec,get,on,once,prependListener,prependOnceListener,run].ReturnValue"], + ["sqlite3.Database", "sqlite3.DatabaseStatic", "Instance"], + ["sqlite3.Database", "sqlite3.Statement", "Member[finalize].ReturnValue"], + ["sqlite3.Database", "sqlite3", "Member[cached].Member[Database].ReturnValue"], + ["sqlite3.DatabaseStatic", "sqlite3.sqlite3", "Member[Database]"], + ["sqlite3.DatabaseStatic", "sqlite3", "Member[Database]"], + ["sqlite3.RunResult", "sqlite3.sqlite3", "Member[RunResult]"], + ["sqlite3.Statement", "sqlite3.Database", "Member[prepare].ReturnValue"], + ["sqlite3.Statement", "sqlite3.RunResult", ""], + ["sqlite3.Statement", "sqlite3.Statement", "Member[all,bind,each,get,reset,run].ReturnValue"], + ["sqlite3.Statement", "sqlite3.StatementStatic", "Instance"], + ["sqlite3.StatementStatic", "sqlite3.sqlite3", "Member[Statement]"], + ["sqlite3.StatementStatic", "sqlite3", "Member[Statement]"], + ["sqlite3.sqlite3", "sqlite3.sqlite3", "Member[verbose].ReturnValue"], + ["sqlite3.sqlite3", "sqlite3", "Member[verbose].ReturnValue"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["sqlite3.Database", "", "", "Member[addListener,all,each,exec,get,on,once,prependListener,prependOnceListener,run].ReturnValue", "type"], + ["sqlite3.Statement", "", "", "Member[all,bind,each,get,reset,run].ReturnValue", "type"], + ["sqlite3.sqlite3", "", "", "Member[verbose].ReturnValue", "type"] + ] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/security/domains/IntegrityCheckingRequired/integrity_checking_required.model.json b/javascript/ql/lib/semmle/javascript/security/domains/IntegrityCheckingRequired/integrity_checking_required.model.json new file mode 100644 index 000000000000..3afbac37f816 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/security/domains/IntegrityCheckingRequired/integrity_checking_required.model.json @@ -0,0 +1,15 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "isCdnDomainWithCheckingRequired" + }, + "data": [ + ["code.jquery.com"], + ["cdnjs.cloudflare.com"], + ["cdnjs.com"] + ] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/security/domains/IntegrityCheckingRequired/integrity_checking_required.model.yml b/javascript/ql/lib/semmle/javascript/security/domains/IntegrityCheckingRequired/integrity_checking_required.model.yml deleted file mode 100644 index f2d39bf86e6e..000000000000 --- a/javascript/ql/lib/semmle/javascript/security/domains/IntegrityCheckingRequired/integrity_checking_required.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: isCdnDomainWithCheckingRequired - data: - - ["code.jquery.com"] - - ["cdnjs.cloudflare.com"] - - ["cdnjs.com"] diff --git a/javascript/ql/lib/semmle/javascript/security/domains/compromised/compromised_domains.model.json b/javascript/ql/lib/semmle/javascript/security/domains/compromised/compromised_domains.model.json new file mode 100644 index 000000000000..f5085d2149e8 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/security/domains/compromised/compromised_domains.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "isUntrustedDomain" + }, + "data": [ + ["polyfill.io"] + ] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/security/domains/compromised/compromised_domains.model.yml b/javascript/ql/lib/semmle/javascript/security/domains/compromised/compromised_domains.model.yml deleted file mode 100644 index cc148c16eb78..000000000000 --- a/javascript/ql/lib/semmle/javascript/security/domains/compromised/compromised_domains.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: isUntrustedDomain - data: - - ["polyfill.io"] diff --git a/javascript/ql/lib/semmle/javascript/security/domains/untrusted/untrusted_domains.model.json b/javascript/ql/lib/semmle/javascript/security/domains/untrusted/untrusted_domains.model.json new file mode 100644 index 000000000000..c3f3b4867aee --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/security/domains/untrusted/untrusted_domains.model.json @@ -0,0 +1,20 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "isUntrustedDomain" + }, + "data": [ + // new location of the polyfill.io CDN, which was used to serve malware. See: https://www.cside.dev/blog/the-polyfill-attack-explained + ["polyfill.com"], + ["polyfillcache.com"], + // domains operated by the same owner as polyfill.io, which was used to serve malware. See: https://www.cside.dev/blog/the-polyfill-attack-explained + ["bootcdn.net"], + ["bootcss.com"], + ["staticfile.net"], + ["staticfile.org"] + ] + } + ] +} diff --git a/javascript/ql/lib/semmle/javascript/security/domains/untrusted/untrusted_domains.model.yml b/javascript/ql/lib/semmle/javascript/security/domains/untrusted/untrusted_domains.model.yml deleted file mode 100644 index 4782dfbdceb3..000000000000 --- a/javascript/ql/lib/semmle/javascript/security/domains/untrusted/untrusted_domains.model.yml +++ /dev/null @@ -1,14 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: isUntrustedDomain - data: - # new location of the polyfill.io CDN, which was used to serve malware. See: https://www.cside.dev/blog/the-polyfill-attack-explained - - ["polyfill.com"] - - ["polyfillcache.com"] - - # domains operated by the same owner as polyfill.io, which was used to serve malware. See: https://www.cside.dev/blog/the-polyfill-attack-explained - - ["bootcdn.net"] - - ["bootcss.com"] - - ["staticfile.net"] - - ["staticfile.org"] diff --git a/javascript/ql/test/library-tests/DataExtensions/connection.ext.json b/javascript/ql/test/library-tests/DataExtensions/connection.ext.json new file mode 100644 index 000000000000..00f66c9a4e73 --- /dev/null +++ b/javascript/ql/test/library-tests/DataExtensions/connection.ext.json @@ -0,0 +1,22 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["@example/mysql.Connection", "Member[query].Argument[0]", "sql-injection"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["@example/mysql.Connection", "@example/db", "Member[getConnection].ReturnValue"] + ] + } + ] +} diff --git a/javascript/ql/test/library-tests/DataExtensions/connection.ext.yml b/javascript/ql/test/library-tests/DataExtensions/connection.ext.yml deleted file mode 100644 index 353decf08be8..000000000000 --- a/javascript/ql/test/library-tests/DataExtensions/connection.ext.yml +++ /dev/null @@ -1,20 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - [ - "@example/mysql.Connection", - "Member[query].Argument[0]", - "sql-injection", - ] - - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - [ - "@example/mysql.Connection", - "@example/db", - "Member[getConnection].ReturnValue", - ] diff --git a/javascript/ql/test/library-tests/DataExtensions/execa.ext.json b/javascript/ql/test/library-tests/DataExtensions/execa.ext.json new file mode 100644 index 000000000000..cf4fa0dc84bd --- /dev/null +++ b/javascript/ql/test/library-tests/DataExtensions/execa.ext.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["@example/execa", "Member[shell].Argument[0]", "command-injection"] + ] + } + ] +} diff --git a/javascript/ql/test/library-tests/DataExtensions/execa.ext.yml b/javascript/ql/test/library-tests/DataExtensions/execa.ext.yml deleted file mode 100644 index d1e4adb96cb2..000000000000 --- a/javascript/ql/test/library-tests/DataExtensions/execa.ext.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ["@example/execa", "Member[shell].Argument[0]", "command-injection"] diff --git a/javascript/ql/test/library-tests/DataExtensions/message.ext.json b/javascript/ql/test/library-tests/DataExtensions/message.ext.json new file mode 100644 index 000000000000..559d873f0218 --- /dev/null +++ b/javascript/ql/test/library-tests/DataExtensions/message.ext.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["global", "Member[addEventListener].WithStringArgument[0=message].Argument[1].Parameter[0].Member[data]", "remote"] + ] + } + ] +} diff --git a/javascript/ql/test/library-tests/DataExtensions/message.ext.yml b/javascript/ql/test/library-tests/DataExtensions/message.ext.yml deleted file mode 100644 index 40017724aebb..000000000000 --- a/javascript/ql/test/library-tests/DataExtensions/message.ext.yml +++ /dev/null @@ -1,10 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - [ - "global", - "Member[addEventListener].WithStringArgument[0=message].Argument[1].Parameter[0].Member[data]", - "remote", - ] diff --git a/javascript/ql/test/library-tests/ModelGeneration/ModelGeneration.ext.json b/javascript/ql/test/library-tests/ModelGeneration/ModelGeneration.ext.json new file mode 100644 index 000000000000..3c7e514e184c --- /dev/null +++ b/javascript/ql/test/library-tests/ModelGeneration/ModelGeneration.ext.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["upstream-lib.XYZ", "upstream-lib", "Member[x].Member[y].Member[z]"], + ["upstream-lib.Type", "upstream-lib", "Member[Type].Instance"] + ] + } + ] +} diff --git a/javascript/ql/test/library-tests/ModelGeneration/ModelGeneration.ext.yml b/javascript/ql/test/library-tests/ModelGeneration/ModelGeneration.ext.yml deleted file mode 100644 index 22113126a9c2..000000000000 --- a/javascript/ql/test/library-tests/ModelGeneration/ModelGeneration.ext.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ["upstream-lib.XYZ", "upstream-lib", "Member[x].Member[y].Member[z]"] - - ["upstream-lib.Type", "upstream-lib", "Member[Type].Instance"] diff --git a/javascript/ql/test/library-tests/frameworks/data/test.ext.json b/javascript/ql/test/library-tests/frameworks/data/test.ext.json new file mode 100644 index 000000000000..20113a5705f0 --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/data/test.ext.json @@ -0,0 +1,101 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["testlib", "Member[BaseClass].Instance.Member[baseclassSource].ReturnValue", "test-source"], + ["testlib", "Member[ClassDecorator].DecoratedClass.Instance.Member[inputIsSource].Parameter[0]", "test-source"], + ["testlib", "Member[FieldDecoratorSource].DecoratedMember", "test-source"], + ["testlib", "Member[MethodDecoratorWithArgs].ReturnValue.DecoratedMember.Parameter[0]", "test-source"], + ["testlib", "Member[MethodDecorator].DecoratedMember.Parameter[0]", "test-source"], + ["testlib", "Member[ParamDecoratorSource].DecoratedParameter", "test-source"], + ["testlib", "Member[getSource].ReturnValue", "test-source"], + ["testlib", "Member[getSourceArray].ReturnValue.ArrayElement", "test-source"], + ["(testlib)", "Member[parenthesizedPackageName].ReturnValue", "test-source"], + ["danger-constant", "Member[danger]", "test-source"], + ["testlib", "Member[middleware].ReturnValue.GuardedRouteHandler.Parameter[0].Member[injectedReqData]", "test-source"], + ["testlib", "Member[middleware].ReturnValue.GuardedRouteHandler.Parameter[1].Member[injectedResData]", "test-source"], + ["file:foo/bar/baz.js", "Member[customSource].ReturnValue", "test-source"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sinkModel" + }, + "data": [ + ["testlib", "AnyMember.Member[memberSink].Argument[0]", "test-sink"], + ["testlib", "Fuzzy.Member[fuzzyCall].Argument[0]", "test-sink"], + ["testlib", "Member[ClassDecorator].DecoratedClass.Instance.Member[returnValueIsSink].ReturnValue", "test-sink"], + ["testlib", "Member[FieldDecoratorSink].DecoratedMember", "test-sink"], + ["testlib", "Member[MethodDecoratorWithArgs].ReturnValue.DecoratedMember.ReturnValue", "test-sink"], + ["testlib", "Member[MethodDecorator].DecoratedMember.ReturnValue", "test-sink"], + ["testlib", "Member[ParamDecoratorSink].DecoratedParameter", "test-sink"], + ["testlib", "Member[foo", "test-sink"], + ["testlib", "Member[foo] .Member[bar]", "test-sink"], + ["testlib", "Member[foo] Member[bar]", "test-sink"], + ["testlib", "Member[foo], Member[bar]", "test-sink"], + ["testlib", "Member[foo],Member[bar]", "test-sink"], + ["testlib", "Member[foo]. Member[bar]", "test-sink"], + ["testlib", "Member[foo]..Member[bar]", "test-sink"], + ["testlib", "Member[foo]Member[bar]", "test-sink"], + ["testlib", "Member[foo]]", "test-sink"], + ["testlib", "Member[foo]].Member[bar]", "test-sink"], + ["testlib", "Member[mySinkExceptLast].Argument[0..N-2]", "test-sink"], + ["testlib", "Member[mySinkIfArityTwo].WithArity[2].Argument[0]", "test-sink"], + ["testlib", "Member[mySinkIfCall].Call.Argument[0]", "test-sink"], + ["testlib", "Member[mySinkIfNew].NewCall.Argument[0]", "test-sink"], + ["testlib", "Member[mySinkLast].Argument[N-1]", "test-sink"], + ["testlib", "Member[mySinkSecondLast].Argument[N-2]", "test-sink"], + ["testlib", "Member[mySinkTwoLastRange].Argument[N-2..N-1]", "test-sink"], + ["testlib", "Member[mySinkTwoLast].Argument[N-1,N-2]", "test-sink"], + ["testlib", "Member[mySink].Argument[0]", "test-sink"], + ["testlib", "Member[overloadedSink].WithStringArgument[0=danger].Argument[1]", "test-sink"], + ["testlib", "Member[sink1, sink2, sink3 ].Argument[0]", "test-sink"], + ["testlib", "Member[typevar].TypeVar[ABC].Member[mySink].Argument[0]", "test-sink"], + ["testlib", "Member[typevar].TypeVar[ABC].TypeVar[ABC].Member[mySink].Argument[1]", "test-sink"], + ["testlib", "Member[typevar].TypeVar[LeftRight].Member[mySink].Argument[0]", "test-sink"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "summaryModel" + }, + "data": [ + ["testlib", "Member[getSource].ReturnValue.Member[continue]", "Argument[this]", "ReturnValue", "taint"], + ["testlib", "Member[preserveAllButFirstArgument]", "Argument[1..]", "ReturnValue", "taint"], + ["testlib", "Member[preserveAllIfCall].Call", "Argument[0..]", "ReturnValue", "taint"], + ["testlib", "Member[preserveArgZeroAndTwo]", "Argument[0,2]", "ReturnValue", "taint"], + ["testlib", "Member[preserveTaint]", "Argument[0]", "ReturnValue", "taint"], + ["testlib", "Member[taintIntoCallbackThis]", "Argument[0]", "Argument[1..2].Parameter[this]", "taint"], + ["testlib", "Member[taintIntoCallback]", "Argument[0]", "Argument[1..2].Parameter[0]", "taint"], + ["testlib.~HasThisFlow", "", "", "Member[getThis].ReturnValue", "type"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["testlib.~HasThisFlow", "testlib", "Member[typevar]"], + ["testlib.~HasThisFlow", "testlib.~HasThisFlow", "Member[left,right,x]"] + ] + }, + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeVariableModel" + }, + "data": [ + ["ABC", "Member[a].Member[b].WithArity[0].ReturnValue.Member[c]"], + ["LeftRight", "Member[left].TypeVar[LeftRight].Member[right]"], + ["LeftRight", "Member[x]"] + ] + } + ] +} diff --git a/javascript/ql/test/library-tests/frameworks/data/test.ext.yml b/javascript/ql/test/library-tests/frameworks/data/test.ext.yml deleted file mode 100644 index 868a8d18998c..000000000000 --- a/javascript/ql/test/library-tests/frameworks/data/test.ext.yml +++ /dev/null @@ -1,82 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - ['testlib', 'Member[BaseClass].Instance.Member[baseclassSource].ReturnValue', 'test-source'] - - ['testlib', 'Member[ClassDecorator].DecoratedClass.Instance.Member[inputIsSource].Parameter[0]', 'test-source'] - - ['testlib', 'Member[FieldDecoratorSource].DecoratedMember', 'test-source'] - - ['testlib', 'Member[MethodDecoratorWithArgs].ReturnValue.DecoratedMember.Parameter[0]', 'test-source'] - - ['testlib', 'Member[MethodDecorator].DecoratedMember.Parameter[0]', 'test-source'] - - ['testlib', 'Member[ParamDecoratorSource].DecoratedParameter', 'test-source'] - - ['testlib', 'Member[getSource].ReturnValue', 'test-source'] - - ['testlib', 'Member[getSourceArray].ReturnValue.ArrayElement', 'test-source'] - - ['(testlib)', 'Member[parenthesizedPackageName].ReturnValue', 'test-source'] - - ['danger-constant', 'Member[danger]', 'test-source'] - - ['testlib', 'Member[middleware].ReturnValue.GuardedRouteHandler.Parameter[0].Member[injectedReqData]', 'test-source'] - - ['testlib', 'Member[middleware].ReturnValue.GuardedRouteHandler.Parameter[1].Member[injectedResData]', 'test-source'] - - ['file:foo/bar/baz.js', 'Member[customSource].ReturnValue', 'test-source'] - - - addsTo: - pack: codeql/javascript-all - extensible: sinkModel - data: - - ['testlib', 'AnyMember.Member[memberSink].Argument[0]', 'test-sink'] - - ['testlib', 'Fuzzy.Member[fuzzyCall].Argument[0]', 'test-sink'] - - ['testlib', 'Member[ClassDecorator].DecoratedClass.Instance.Member[returnValueIsSink].ReturnValue', 'test-sink'] - - ['testlib', 'Member[FieldDecoratorSink].DecoratedMember', 'test-sink'] - - ['testlib', 'Member[MethodDecoratorWithArgs].ReturnValue.DecoratedMember.ReturnValue', 'test-sink'] - - ['testlib', 'Member[MethodDecorator].DecoratedMember.ReturnValue', 'test-sink'] - - ['testlib', 'Member[ParamDecoratorSink].DecoratedParameter', 'test-sink'] - - ['testlib', 'Member[foo', 'test-sink'] - - ['testlib', 'Member[foo] .Member[bar]', 'test-sink'] - - ['testlib', 'Member[foo] Member[bar]', 'test-sink'] - - ['testlib', 'Member[foo], Member[bar]', 'test-sink'] - - ['testlib', 'Member[foo],Member[bar]', 'test-sink'] - - ['testlib', 'Member[foo]. Member[bar]', 'test-sink'] - - ['testlib', 'Member[foo]..Member[bar]', 'test-sink'] - - ['testlib', 'Member[foo]Member[bar]', 'test-sink'] - - ['testlib', 'Member[foo]]', 'test-sink'] - - ['testlib', 'Member[foo]].Member[bar]', 'test-sink'] - - ['testlib', 'Member[mySinkExceptLast].Argument[0..N-2]', 'test-sink'] - - ['testlib', 'Member[mySinkIfArityTwo].WithArity[2].Argument[0]', 'test-sink'] - - ['testlib', 'Member[mySinkIfCall].Call.Argument[0]', 'test-sink'] - - ['testlib', 'Member[mySinkIfNew].NewCall.Argument[0]', 'test-sink'] - - ['testlib', 'Member[mySinkLast].Argument[N-1]', 'test-sink'] - - ['testlib', 'Member[mySinkSecondLast].Argument[N-2]', 'test-sink'] - - ['testlib', 'Member[mySinkTwoLastRange].Argument[N-2..N-1]', 'test-sink'] - - ['testlib', 'Member[mySinkTwoLast].Argument[N-1,N-2]', 'test-sink'] - - ['testlib', 'Member[mySink].Argument[0]', 'test-sink'] - - ['testlib', 'Member[overloadedSink].WithStringArgument[0=danger].Argument[1]', 'test-sink'] - - ['testlib', 'Member[sink1, sink2, sink3 ].Argument[0]', 'test-sink'] - - ['testlib', 'Member[typevar].TypeVar[ABC].Member[mySink].Argument[0]', 'test-sink'] - - ['testlib', 'Member[typevar].TypeVar[ABC].TypeVar[ABC].Member[mySink].Argument[1]', 'test-sink'] - - ['testlib', 'Member[typevar].TypeVar[LeftRight].Member[mySink].Argument[0]', 'test-sink'] - - - addsTo: - pack: codeql/javascript-all - extensible: summaryModel - data: - - ['testlib', 'Member[getSource].ReturnValue.Member[continue]', 'Argument[this]', 'ReturnValue', 'taint'] - - ['testlib', 'Member[preserveAllButFirstArgument]', 'Argument[1..]', 'ReturnValue', 'taint'] - - ['testlib', 'Member[preserveAllIfCall].Call', 'Argument[0..]', 'ReturnValue', 'taint'] - - ['testlib', 'Member[preserveArgZeroAndTwo]', 'Argument[0,2]', 'ReturnValue', 'taint'] - - ['testlib', 'Member[preserveTaint]', 'Argument[0]', 'ReturnValue', 'taint'] - - ['testlib', 'Member[taintIntoCallbackThis]', 'Argument[0]', 'Argument[1..2].Parameter[this]', 'taint'] - - ['testlib', 'Member[taintIntoCallback]', 'Argument[0]', 'Argument[1..2].Parameter[0]', 'taint'] - - ['testlib.~HasThisFlow', '', '', 'Member[getThis].ReturnValue', 'type'] - - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ['testlib.~HasThisFlow', 'testlib', 'Member[typevar]'] - - ['testlib.~HasThisFlow', 'testlib.~HasThisFlow', 'Member[left,right,x]'] - - - addsTo: - pack: codeql/javascript-all - extensible: typeVariableModel - data: - - ['ABC', 'Member[a].Member[b].WithArity[0].ReturnValue.Member[c]'] - - ['LeftRight', 'Member[left].TypeVar[LeftRight].Member[right]'] - - ['LeftRight', 'Member[x]'] diff --git a/javascript/ql/test/library-tests/frameworks/data/warnings.ext.json b/javascript/ql/test/library-tests/frameworks/data/warnings.ext.json new file mode 100644 index 000000000000..3b209acb4463 --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/data/warnings.ext.json @@ -0,0 +1,17 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "typeModel" + }, + "data": [ + ["test.X", "test.Y", "Method[foo].Arg[0]"], + ["test.X", "test.Y", "Method[foo].Argument[0-1]"], + ["test.X", "test.Y", "Method[foo].Argument[*]"], + ["test.X", "test.Y", "Method[foo].Argument"], + ["test.X", "test.Y", "Method[foo].Member"] + ] + } + ] +} diff --git a/javascript/ql/test/library-tests/frameworks/data/warnings.ext.yml b/javascript/ql/test/library-tests/frameworks/data/warnings.ext.yml deleted file mode 100644 index b6ac0a78500c..000000000000 --- a/javascript/ql/test/library-tests/frameworks/data/warnings.ext.yml +++ /dev/null @@ -1,10 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: typeModel - data: - - ['test.X', 'test.Y', 'Method[foo].Arg[0]'] - - ['test.X', 'test.Y', 'Method[foo].Argument[0-1]'] - - ['test.X', 'test.Y', 'Method[foo].Argument[*]'] - - ['test.X', 'test.Y', 'Method[foo].Argument'] - - ['test.X', 'test.Y', 'Method[foo].Member'] diff --git a/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ext.json b/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ext.json new file mode 100644 index 000000000000..f77e12ce9ba6 --- /dev/null +++ b/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ext.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/threat-models", + "extensible": "threatModelConfiguration" + }, + "data": [ + ["ai", true, 0] + ] + } + ] +} diff --git a/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ext.yml b/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ext.yml deleted file mode 100644 index e30874b74455..000000000000 --- a/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ext.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/threat-models - extensible: threatModelConfiguration - data: - - ["ai", true, 0] diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXssWithResponseThreat/Xss.ext.json b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXssWithResponseThreat/Xss.ext.json new file mode 100644 index 000000000000..4bd50bad546c --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXssWithResponseThreat/Xss.ext.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/threat-models", + "extensible": "threatModelConfiguration" + }, + "data": [ + ["response", true, 0] + ] + } + ] +} diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXssWithResponseThreat/Xss.ext.yml b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXssWithResponseThreat/Xss.ext.yml deleted file mode 100644 index e364808a3497..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXssWithResponseThreat/Xss.ext.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/threat-models - extensible: threatModelConfiguration - data: - - ["response", true, 0] diff --git a/javascript/ql/test/query-tests/Security/CWE-089/local-threat-source/SqlInjection.ext.json b/javascript/ql/test/query-tests/Security/CWE-089/local-threat-source/SqlInjection.ext.json new file mode 100644 index 000000000000..1d0b6c59c811 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-089/local-threat-source/SqlInjection.ext.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/threat-models", + "extensible": "threatModelConfiguration" + }, + "data": [ + ["local", true, 0] + ] + } + ] +} diff --git a/javascript/ql/test/query-tests/Security/CWE-089/local-threat-source/SqlInjection.ext.yml b/javascript/ql/test/query-tests/Security/CWE-089/local-threat-source/SqlInjection.ext.yml deleted file mode 100644 index 63507f477386..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-089/local-threat-source/SqlInjection.ext.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/threat-models - extensible: threatModelConfiguration - data: - - ["local", true, 0] diff --git a/javascript/ql/test/query-tests/Security/CWE-730/Threat-models-enabled/RegExpInjection.ext.json b/javascript/ql/test/query-tests/Security/CWE-730/Threat-models-enabled/RegExpInjection.ext.json new file mode 100644 index 000000000000..f1fcea166f88 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-730/Threat-models-enabled/RegExpInjection.ext.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/threat-models", + "extensible": "threatModelConfiguration" + }, + "data": [ + ["environment", true, 0] + ] + } + ] +} diff --git a/javascript/ql/test/query-tests/Security/CWE-730/Threat-models-enabled/RegExpInjection.ext.yml b/javascript/ql/test/query-tests/Security/CWE-730/Threat-models-enabled/RegExpInjection.ext.yml deleted file mode 100644 index cd28c6d97174..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-730/Threat-models-enabled/RegExpInjection.ext.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/threat-models - extensible: threatModelConfiguration - data: - - ["environment", true, 0] diff --git a/javascript/ql/test/query-tests/Security/CWE-918/ClientSideRequestForgery.ext.json b/javascript/ql/test/query-tests/Security/CWE-918/ClientSideRequestForgery.ext.json new file mode 100644 index 000000000000..f4560bf87e20 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-918/ClientSideRequestForgery.ext.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["testlib", "Member[getBrowserSource].ReturnValue", "browser-url-query"], + ["testlib", "Member[getServerSource].ReturnValue", "remote"] + ] + } + ] +} diff --git a/javascript/ql/test/query-tests/Security/CWE-918/ClientSideRequestForgery.ext.yml b/javascript/ql/test/query-tests/Security/CWE-918/ClientSideRequestForgery.ext.yml deleted file mode 100644 index 950186d58df7..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-918/ClientSideRequestForgery.ext.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - ['testlib', 'Member[getBrowserSource].ReturnValue', 'browser-url-query'] - - ['testlib', 'Member[getServerSource].ReturnValue', 'remote'] diff --git a/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.ext.json b/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.ext.json new file mode 100644 index 000000000000..f4560bf87e20 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.ext.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/javascript-all", + "extensible": "sourceModel" + }, + "data": [ + ["testlib", "Member[getBrowserSource].ReturnValue", "browser-url-query"], + ["testlib", "Member[getServerSource].ReturnValue", "remote"] + ] + } + ] +} diff --git a/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.ext.yml b/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.ext.yml deleted file mode 100644 index 950186d58df7..000000000000 --- a/javascript/ql/test/query-tests/Security/CWE-918/RequestForgery.ext.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/javascript-all - extensible: sourceModel - data: - - ['testlib', 'Member[getBrowserSource].ReturnValue', 'browser-url-query'] - - ['testlib', 'Member[getServerSource].ReturnValue', 'remote']