2
2
* This file is copied from `eslint/lib/util/node-event-generator.js`
3
3
*/
4
4
import EventEmitter from "events"
5
- import esquery , { Selector } from "esquery"
5
+ import esquery , { ESQueryOptions , Selector } from "esquery"
6
6
import union from "lodash/union"
7
7
import intersection from "lodash/intersection"
8
8
import memoize from "lodash/memoize"
@@ -187,6 +187,7 @@ const parseSelector = memoize<(rawSelector: string) => NodeSelector>(rawSelector
187
187
*/
188
188
export default class NodeEventGenerator {
189
189
emitter : EventEmitter
190
+ esqueryOptions : ESQueryOptions
190
191
191
192
private currentAncestry : Node [ ]
192
193
private enterSelectorsByNodeType : Map < string , NodeSelector [ ] >
@@ -198,8 +199,9 @@ export default class NodeEventGenerator {
198
199
* @param emitter - An event emitter which is the destination of events. This emitter must already
199
200
* have registered listeners for all of the events that it needs to listen for.
200
201
*/
201
- constructor ( emitter : EventEmitter ) {
202
+ constructor ( emitter : EventEmitter , esqueryOptions : ESQueryOptions ) {
202
203
this . emitter = emitter
204
+ this . esqueryOptions = esqueryOptions
203
205
this . currentAncestry = [ ]
204
206
this . enterSelectorsByNodeType = new Map ( )
205
207
this . exitSelectorsByNodeType = new Map ( )
@@ -260,7 +262,7 @@ export default class NodeEventGenerator {
260
262
* @param selector An AST selector descriptor
261
263
*/
262
264
private applySelector ( node : Node , selector : NodeSelector ) : void {
263
- if ( esquery . matches ( node , selector . parsedSelector , this . currentAncestry ) ) {
265
+ if ( esquery . matches ( node , selector . parsedSelector , this . currentAncestry , this . esqueryOptions ) ) {
264
266
this . emitter . emit ( selector . rawSelector , node )
265
267
}
266
268
}
0 commit comments