@@ -141,6 +141,52 @@ class Driver {
141
141
return this . _connection . wsEndpoint ( ) ;
142
142
}
143
143
144
+ /**
145
+ * Bind listeners for protocol events.
146
+ * @template {keyof LH.CrdpEvents} E
147
+ * @param {E } eventName
148
+ * @param {(...args: IsTuple<LH.CrdpEvents[E]>) => void } cb
149
+ */
150
+ on ( eventName , cb ) {
151
+ if ( this . _eventEmitter === null ) {
152
+ throw new Error ( 'connect() must be called before attempting to listen to events.' ) ;
153
+ }
154
+
155
+ // log event listeners being bound
156
+ log . formatProtocol ( 'listen for event =>' , { method : eventName } , 'verbose' ) ;
157
+ this . _eventEmitter . on ( eventName , cb ) ;
158
+ }
159
+
160
+ /**
161
+ * Bind a one-time listener for protocol events. Listener is removed once it
162
+ * has been called.
163
+ * @template {keyof LH.CrdpEvents} E
164
+ * @param {E } eventName
165
+ * @param {(...args: IsTuple<LH.CrdpEvents[E]>) => void } cb
166
+ */
167
+ once ( eventName , cb ) {
168
+ if ( this . _eventEmitter === null ) {
169
+ throw new Error ( 'connect() must be called before attempting to listen to events.' ) ;
170
+ }
171
+ // log event listeners being bound
172
+ log . formatProtocol ( 'listen once for event =>' , { method : eventName } , 'verbose' ) ;
173
+ this . _eventEmitter . once ( eventName , cb ) ;
174
+ }
175
+
176
+ /**
177
+ * Unbind event listener.
178
+ * @template {keyof LH.CrdpEvents} E
179
+ * @param {E } eventName
180
+ * @param {Function } cb
181
+ */
182
+ off ( eventName , cb ) {
183
+ if ( this . _eventEmitter === null ) {
184
+ throw new Error ( 'connect() must be called before attempting to remove an event listener.' ) ;
185
+ }
186
+
187
+ this . _eventEmitter . removeListener ( eventName , cb ) ;
188
+ }
189
+
144
190
/**
145
191
* Debounce enabling or disabling domains to prevent driver users from
146
192
* stomping on each other. Maintains an internal count of the times a domain
@@ -1129,45 +1175,4 @@ class Driver {
1129
1175
}
1130
1176
}
1131
1177
1132
- // Declared outside class body because function expressions can be typed via more expressive @type
1133
- /**
1134
- * Bind listeners for protocol events.
1135
- * @type {CrdpEventEmitter['on'] }
1136
- */
1137
- Driver . prototype . on = function on ( eventName , cb ) {
1138
- if ( this . _eventEmitter === null ) {
1139
- throw new Error ( 'connect() must be called before attempting to listen to events.' ) ;
1140
- }
1141
-
1142
- // log event listeners being bound
1143
- log . formatProtocol ( 'listen for event =>' , { method : eventName } , 'verbose' ) ;
1144
- this . _eventEmitter . on ( eventName , cb ) ;
1145
- } ;
1146
-
1147
- /**
1148
- * Bind a one-time listener for protocol events. Listener is removed once it
1149
- * has been called.
1150
- * @type {CrdpEventEmitter['once'] }
1151
- */
1152
- Driver . prototype . once = function once ( eventName , cb ) {
1153
- if ( this . _eventEmitter === null ) {
1154
- throw new Error ( 'connect() must be called before attempting to listen to events.' ) ;
1155
- }
1156
- // log event listeners being bound
1157
- log . formatProtocol ( 'listen once for event =>' , { method : eventName } , 'verbose' ) ;
1158
- this . _eventEmitter . once ( eventName , cb ) ;
1159
- } ;
1160
-
1161
- /**
1162
- * Unbind event listener.
1163
- * @type {CrdpEventEmitter['removeListener'] }
1164
- */
1165
- Driver . prototype . off = function off ( eventName , cb ) {
1166
- if ( this . _eventEmitter === null ) {
1167
- throw new Error ( 'connect() must be called before attempting to remove an event listener.' ) ;
1168
- }
1169
-
1170
- this . _eventEmitter . removeListener ( eventName , cb ) ;
1171
- } ;
1172
-
1173
1178
module . exports = Driver ;
0 commit comments