11const { setHeaders, setAgent, request} = require ( "../lib/request" ) ;
22const cookies = require ( "../lib/cookies" ) ;
3- const enforceTypes = require ( "../util/type-enforcer" ) ;
4- const validateProxy = require ( "../util/proxy-validator" ) ;
3+ const enforceTypes = require ( "type-dragoon" ) ;
54
6- module . exports = async ( param , proxy ) => {
5+ const pageProxy = async ( param , proxy ) => {
76 /**/
8- enforceTypes (
9- [ param , "object" ] , [ proxy , "string" ]
10- ) ; validateProxy ( proxy ) ;
7+ enforceTypes ( { object : param } ) ;
118 /**/
129 let page , req ;
1310 if ( param . constructor . name === "Request" ) {
1411 req = param ;
15- }
16- else if ( param . constructor . name === "Page" ) {
12+ } else if ( param . constructor . name === "Page" ) {
1713 page = param ;
1814 await page . setRequestInterception ( true ) ;
1915 } else {
20- throw new Error ( "@arg1: Not valid ' Page' or ' Request' object" ) ;
16+ throw new Error ( "Not valid ` Page` or ` Request` object" ) ;
2117 }
2218 const $puppeteerPageProxyHandler = async req => {
23- if ( req . _interceptionHandled || ! req . _allowInterception ) {
24- return ;
25- }
2619 const cookieJar = cookies . store ( await cookies . get (
2720 req . _client . _connection . _url , req . _frame . _id
2821 ) ) ;
@@ -43,13 +36,23 @@ module.exports = async (param, proxy) => {
4336 await req . abort ( ) ;
4437 }
4538 } ;
39+ const removeRequestListener = ( ) => {
40+ const listeners = page . listeners ( "request" ) ;
41+ for ( let i = 0 ; i < listeners . length ; i ++ ) {
42+ if ( listeners [ i ] . name === "$puppeteerPageProxyHandler" ) {
43+ page . removeListener ( "request" , listeners [ i ] ) ;
44+ }
45+ }
46+ } ;
4647 if ( req ) {
4748 $puppeteerPageProxyHandler ( req ) ;
4849 } else {
49- for ( const listener of page . listeners ( "request" ) ) {
50- if ( listener . name === "$puppeteerPageProxyHandler" ) {
51- page . removeListener ( "request" , listener ) ;
52- }
53- } ; page . on ( "request" , $puppeteerPageProxyHandler ) ;
50+ removeRequestListener ( ) ;
51+ if ( proxy ) {
52+ page . on ( "request" , $puppeteerPageProxyHandler ) ;
53+ } else {
54+ await page . setRequestInterception ( false ) ;
55+ }
5456 }
55- }
57+ } ;
58+ module . exports = pageProxy ;
0 commit comments