File tree Expand file tree Collapse file tree
javascript/ql/lib/semmle/javascript/frameworks Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -9,10 +9,21 @@ module Hapi {
99 /**
1010 * An expression that creates a new Hapi server.
1111 */
12- class ServerDefinition extends Http:: Servers:: StandardServerDefinition , DataFlow:: NewNode {
12+ class ServerDefinition extends Http:: Servers:: StandardServerDefinition , DataFlow:: Node {
1313 ServerDefinition ( ) {
1414 // `server = new Hapi.Server()`
1515 this = DataFlow:: moduleMember ( "hapi" , "Server" ) .getAnInstantiation ( )
16+ or
17+ // server = Glue.compose(manifest, composeOptions)
18+ this = DataFlow:: moduleMember ( "@hapi/glue" , "compose" ) .getAnInvocation ( )
19+ or
20+ // server inside a plugin
21+ // TODO match `function (server, options)`
22+ exists ( Function f |
23+ this .( DataFlow:: ParameterNode ) .getParameter ( ) = f .getParameter ( 0 ) and
24+ f .getParameter ( 0 ) .getName ( ) = "server" and
25+ f .getParameter ( 1 ) .getName ( ) = "options"
26+ )
1627 }
1728 }
1829
@@ -209,6 +220,16 @@ module Hapi {
209220 // server.ext('/', fun)
210221 this .getMethodName ( ) = "ext" and
211222 handler = this .getArgument ( 1 )
223+ or
224+ // server.route([{ handler(request){}])
225+ this .getMethodName ( ) = "route" and
226+ handler =
227+ this .getArgument ( 0 )
228+ .( DataFlow:: ArrayLiteralNode )
229+ .getAnElement ( )
230+ .( DataFlow:: ObjectLiteralNode )
231+ .getAPropertySource ( "handler" )
232+ .getAFunctionValue ( )
212233 )
213234 }
214235
You can’t perform that action at this time.
0 commit comments