@@ -1589,6 +1589,7 @@ builtinScriptlets.push({
15891589 name : 'm3u-prune.js' ,
15901590 fn : m3uPrune ,
15911591 dependencies : [
1592+ 'proxy-apply.fn' ,
15921593 'safe-self.fn' ,
15931594 ] ,
15941595} ) ;
@@ -1704,28 +1705,30 @@ function m3uPrune(
17041705 if ( arg instanceof Request ) { return arg . url ; }
17051706 return String ( arg ) ;
17061707 } ;
1707- const realFetch = self . fetch ;
1708- self . fetch = new Proxy ( self . fetch , {
1709- apply : function ( target , thisArg , args ) {
1710- if ( reUrl . test ( urlFromArg ( args [ 0 ] ) ) === false ) {
1711- return Reflect . apply ( target , thisArg , args ) ;
1712- }
1713- return realFetch ( ...args ) . then ( realResponse =>
1714- realResponse . text ( ) . then ( text => {
1715- const response = new Response ( pruner ( text ) , {
1716- status : realResponse . status ,
1717- statusText : realResponse . statusText ,
1718- headers : realResponse . headers ,
1719- } ) ;
1720- if ( toLog . length !== 0 ) {
1721- toLog . unshift ( logPrefix ) ;
1722- safe . uboLog ( toLog . join ( '\n' ) ) ;
1723- }
1724- return response ;
1725- } )
1726- ) ;
1708+ proxyApplyFn ( 'fetch' , async function fetch ( context ) {
1709+ const args = context . callArgs ;
1710+ const fetchPromise = context . reflect ( ) ;
1711+ if ( reUrl . test ( urlFromArg ( args [ 0 ] ) ) === false ) { return fetchPromise ; }
1712+ const responseBefore = await fetchPromise ;
1713+ const responseClone = responseBefore . clone ( ) ;
1714+ const textBefore = await responseClone . text ( ) ;
1715+ const textAfter = pruner ( textBefore ) ;
1716+ if ( textAfter === textBefore ) { return responseBefore ; }
1717+ const responseAfter = new Response ( textAfter , {
1718+ status : responseBefore . status ,
1719+ statusText : responseBefore . statusText ,
1720+ headers : responseBefore . headers ,
1721+ } ) ;
1722+ Object . defineProperties ( responseAfter , {
1723+ url : { value : responseBefore . url } ,
1724+ type : { value : responseBefore . type } ,
1725+ } ) ;
1726+ if ( toLog . length !== 0 ) {
1727+ toLog . unshift ( logPrefix ) ;
1728+ safe . uboLog ( toLog . join ( '\n' ) ) ;
17271729 }
1728- } ) ;
1730+ return responseAfter ;
1731+ } )
17291732 self . XMLHttpRequest . prototype . open = new Proxy ( self . XMLHttpRequest . prototype . open , {
17301733 apply : async ( target , thisArg , args ) => {
17311734 if ( reUrl . test ( urlFromArg ( args [ 1 ] ) ) === false ) {
0 commit comments