@@ -48,20 +48,6 @@ private module MongoDB {
4848 not result .getAnImmediateUse ( ) .( DataFlow:: ParameterNode ) .getName ( ) = "client" // mongodb v3 provides a `Mongoclient` here
4949 }
5050
51- /**
52- * A collection based on the type `mongodb.Collection`.
53- *
54- * Note that this also covers `mongoose` models since they are subtypes
55- * of `mongodb.Collection`.
56- */
57- private class TypedMongoCollection extends API:: EntryPoint {
58- TypedMongoCollection ( ) { this = "TypedMongoCollection" }
59-
60- override DataFlow:: SourceNode getAUse ( ) { result .hasUnderlyingType ( "mongodb" , "Collection" ) }
61-
62- override DataFlow:: Node getARhs ( ) { none ( ) }
63- }
64-
6551 /** Gets a data flow node referring to a MongoDB collection. */
6652 private API:: Node getACollection ( ) {
6753 // A collection resulting from calling `Db.collection(...)`.
@@ -71,7 +57,8 @@ private module MongoDB {
7157 result = collection .getParameter ( 1 ) .getParameter ( 0 )
7258 )
7359 or
74- result = any ( TypedMongoCollection c ) .getNode ( )
60+ // note that this also covers `mongoose` models since they are subtypes of `mongodb.Collection`
61+ result = API:: Node:: ofType ( "mongodb" , "Collection" )
7562 }
7663
7764 /** A call to a MongoDB query method. */
@@ -225,17 +212,6 @@ private module Mongoose {
225212 }
226213 }
227214
228- /**
229- * A Mongoose collection based on the type `mongoose.Model`.
230- */
231- private class TypedMongooseModel extends API:: EntryPoint {
232- TypedMongooseModel ( ) { this = "TypedMongooseModel" }
233-
234- override DataFlow:: SourceNode getAUse ( ) { result .hasUnderlyingType ( "mongoose" , "Model" ) }
235-
236- override DataFlow:: Node getARhs ( ) { none ( ) }
237- }
238-
239215 /**
240216 * Gets a API-graph node referring to a Mongoose Model object.
241217 */
@@ -247,7 +223,7 @@ private module Mongoose {
247223 result = conn .getMember ( "models" ) .getAMember ( )
248224 )
249225 or
250- result = any ( TypedMongooseModel c ) . getNode ( )
226+ result = API :: Node :: ofType ( "mongoose" , "Model" )
251227 }
252228
253229 /**
@@ -341,24 +317,13 @@ private module Mongoose {
341317 override API:: Node getQueryArgument ( ) { result = this .getParameter ( 2 ) }
342318 }
343319
344- /**
345- * A Mongoose query.
346- */
347- private class TypedMongooseQuery extends API:: EntryPoint {
348- TypedMongooseQuery ( ) { this = "TypedMongooseQuery" }
349-
350- override DataFlow:: SourceNode getAUse ( ) { result .hasUnderlyingType ( "mongoose" , "Query" ) }
351-
352- override DataFlow:: Node getARhs ( ) { none ( ) }
353- }
354-
355320 /**
356321 * Gets a data flow node referring to a Mongoose query object.
357322 */
358323 API:: Node getAMongooseQuery ( ) {
359324 result = any ( MongooseFunction f ) .getQueryReturn ( )
360325 or
361- result = any ( TypedMongooseQuery c ) . getNode ( )
326+ result = API :: Node :: ofType ( "mongoose" , "Query" )
362327 or
363328 result =
364329 getAMongooseQuery ( )
@@ -560,23 +525,14 @@ private module Mongoose {
560525 }
561526 }
562527
563- /**
564- * A Mongoose document.
565- */
566- private class TypedMongooseDocument extends API:: EntryPoint {
567- TypedMongooseDocument ( ) { this = "TypedMongooseDocument" }
568-
569- override DataFlow:: SourceNode getAUse ( ) { result .hasUnderlyingType ( "mongoose" , "Document" ) }
570-
571- override DataFlow:: Node getARhs ( ) { none ( ) }
572- }
573-
574528 /**
575529 * Gets a data flow node referring to a Mongoose Document object.
576530 */
577531 private API:: Node getAMongooseDocument ( ) {
578- result instanceof RetrievedDocument or
579- result = any ( TypedMongooseDocument c ) .getNode ( ) or
532+ result instanceof RetrievedDocument
533+ or
534+ result = API:: Node:: ofType ( "mongoose" , "Document" )
535+ or
580536 result =
581537 getAMongooseDocument ( )
582538 .getMember ( any ( string name | MethodSignatures:: returnsDocument ( name ) ) )
0 commit comments