@@ -2,13 +2,13 @@ import trim from 'licia/trim'
22import each from 'licia/each'
33import decodeUriComponent from 'licia/decodeUriComponent'
44import rmCookie from 'licia/rmCookie'
5- import once from 'licia/once'
65import isNative from 'licia/isNative'
76import contain from 'licia/contain'
87import now from 'licia/now'
98import isStr from 'licia/isStr'
109import isBlob from 'licia/isBlob'
1110import isUndef from 'licia/isUndef'
11+ import types from 'licia/types'
1212import convertBin from 'licia/convertBin'
1313import { XhrRequest , FetchRequest } from '../lib/request'
1414import connector from '../lib/connector'
@@ -41,11 +41,22 @@ export function getCookies(): Network.GetCookiesResponse {
4141
4242const resTxtMap = new Map ( )
4343
44- export const enable = once ( function ( ) {
45- enableXhr ( )
46- enableFetch ( )
47- enableWebSocket ( )
48- } )
44+ let isEnable = false
45+
46+ export const enable = function ( ) {
47+ isEnable = true
48+ each ( triggers , trigger => trigger ( ) )
49+ triggers = [ ]
50+ }
51+
52+ export function getResponseBody (
53+ params : Network . GetResponseBodyRequest
54+ ) : Network . GetResponseBodyResponse {
55+ return {
56+ base64Encoded : false ,
57+ body : resTxtMap . get ( params . requestId ) ,
58+ }
59+ }
4960
5061function enableXhr ( ) {
5162 const winXhrProto = window . XMLHttpRequest . prototype
@@ -77,22 +88,22 @@ function enableXhr() {
7788 request . postData = data . data
7889 }
7990
80- connector . trigger ( 'Network.requestWillBeSent' , {
91+ trigger ( 'Network.requestWillBeSent' , {
8192 requestId : id ,
8293 type : 'XHR' ,
8394 request,
8495 timestamp : data . time / 1000 ,
8596 } )
8697 } )
8798 req . on ( 'headersReceived' , ( id : string , data : any ) => {
88- connector . trigger ( 'Network.responseReceivedExtraInfo' , {
99+ trigger ( 'Network.responseReceivedExtraInfo' , {
89100 requestId : id ,
90101 blockedCookies : [ ] ,
91102 headers : data . resHeaders ,
92103 } )
93104 } )
94105 req . on ( 'done' , ( id : string , data : any ) => {
95- connector . trigger ( 'Network.responseReceived' , {
106+ trigger ( 'Network.responseReceived' , {
96107 requestId : id ,
97108 type : 'XHR' ,
98109 response : {
@@ -101,7 +112,7 @@ function enableXhr() {
101112 timestamp : data . time / 1000 ,
102113 } )
103114 resTxtMap . set ( id , data . resTxt )
104- connector . trigger ( 'Network.loadingFinished' , {
115+ trigger ( 'Network.loadingFinished' , {
105116 requestId : id ,
106117 encodedDataLength : data . size ,
107118 timestamp : data . time / 1000 ,
@@ -168,15 +179,15 @@ function enableFetch() {
168179 request . postData = data . data
169180 }
170181
171- connector . trigger ( 'Network.requestWillBeSent' , {
182+ trigger ( 'Network.requestWillBeSent' , {
172183 requestId : id ,
173184 type : 'Fetch' ,
174185 request,
175186 timestamp : data . time / 1000 ,
176187 } )
177188 } )
178189 req . on ( 'done' , ( id , data ) => {
179- connector . trigger ( 'Network.responseReceived' , {
190+ trigger ( 'Network.responseReceived' , {
180191 requestId : id ,
181192 type : 'Fetch' ,
182193 response : {
@@ -186,7 +197,7 @@ function enableFetch() {
186197 timestamp : data . time / 1000 ,
187198 } )
188199 resTxtMap . set ( id , data . resTxt )
189- connector . trigger ( 'Network.loadingFinished' , {
200+ trigger ( 'Network.loadingFinished' , {
190201 requestId : id ,
191202 encodedDataLength : data . size ,
192203 timestamp : data . time / 1000 ,
@@ -206,20 +217,20 @@ function enableWebSocket() {
206217 const ws = new origWebSocket ( url , protocols )
207218 const requestId = createId ( )
208219
209- connector . trigger ( 'Network.webSocketCreated' , {
220+ trigger ( 'Network.webSocketCreated' , {
210221 requestId,
211222 url,
212223 } )
213224
214225 ws . addEventListener ( 'open' , function ( ) {
215- connector . trigger ( 'Network.webSocketWillSendHandshakeRequest' , {
226+ trigger ( 'Network.webSocketWillSendHandshakeRequest' , {
216227 requestId,
217228 timestamp : now ( ) / 1000 ,
218229 request : {
219230 headers : { } ,
220231 } ,
221232 } )
222- connector . trigger ( 'Network.webSocketHandshakeResponseReceived' , {
233+ trigger ( 'Network.webSocketHandshakeResponseReceived' , {
223234 requestId,
224235 timeStamp : now ( ) / 1000 ,
225236 response : {
@@ -244,7 +255,7 @@ function enableWebSocket() {
244255 payloadData = convertBin ( payloadData , 'base64' )
245256 }
246257
247- connector . trigger ( 'Network.webSocketFrameReceived' , {
258+ trigger ( 'Network.webSocketFrameReceived' , {
248259 requestId,
249260 timestamp : now ( ) / 1000 ,
250261 response : {
@@ -274,7 +285,7 @@ function enableWebSocket() {
274285 payloadData = convertBin ( data , 'base64' )
275286 }
276287
277- connector . trigger ( 'Network.webSocketFrameSent' , {
288+ trigger ( 'Network.webSocketFrameSent' , {
278289 requestId,
279290 timestamp : now ( ) / 1000 ,
280291 response : {
@@ -285,14 +296,14 @@ function enableWebSocket() {
285296 }
286297
287298 ws . addEventListener ( 'close' , function ( ) {
288- connector . trigger ( 'Network.webSocketClosed' , {
299+ trigger ( 'Network.webSocketClosed' , {
289300 requestId,
290301 timestamp : now ( ) / 1000 ,
291302 } )
292303 } )
293304
294305 ws . addEventListener ( 'error' , function ( ) {
295- connector . trigger ( 'Network.webSocketFrameError' , {
306+ trigger ( 'Network.webSocketFrameError' , {
296307 requestId,
297308 timestamp : now ( ) / 1000 ,
298309 errorMessage : 'WebSocket error' ,
@@ -309,15 +320,20 @@ function enableWebSocket() {
309320 window . WebSocket = WebSocket as any
310321}
311322
312- export function getResponseBody (
313- params : Network . GetResponseBodyRequest
314- ) : Network . GetResponseBodyResponse {
315- return {
316- base64Encoded : false ,
317- body : resTxtMap . get ( params . requestId ) ,
318- }
319- }
320-
321323function isValidUrl ( url : string ) {
322324 return ! contain ( url , '__chobitsu-hide__=true' )
323325}
326+
327+ let triggers : types . AnyFn [ ] = [ ]
328+
329+ function trigger ( method : string , params : any ) {
330+ if ( isEnable ) {
331+ connector . trigger ( method , params )
332+ } else {
333+ triggers . push ( ( ) => connector . trigger ( method , params ) )
334+ }
335+ }
336+
337+ enableXhr ( )
338+ enableFetch ( )
339+ enableWebSocket ( )
0 commit comments