From 9ce30563613495f5b609211c017aed580847a9cf Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sun, 14 Jul 2024 12:15:53 -0400 Subject: [PATCH] Improve `prevent-fetch` scriptlet Add `statusText` as overridable property in response instance. Supported values are: `""`, `"Not Found"`. `statusText` defaults to `"OK"` when not overridden. --- assets/resources/scriptlets.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/assets/resources/scriptlets.js b/assets/resources/scriptlets.js index f753ba5a89684..ab98966a14f81 100644 --- a/assets/resources/scriptlets.js +++ b/assets/resources/scriptlets.js @@ -2089,11 +2089,13 @@ function noFetchIf( } const validResponseProps = { ok: [ false, true ], - type: [ 'basic', 'cors', 'opaque' ], + statusText: [ '', 'Not Found' ], + type: [ 'basic', 'cors', 'default', 'error', 'opaque' ], + }; + const responseProps = { + statusText: { value: 'OK' }, }; - let responseProps; if ( /^\{.*\}$/.test(responseType) ) { - responseProps = {}; try { Object.entries(JSON.parse(responseType)).forEach(([ p, v ]) => { if ( validResponseProps[p] === undefined ) { return; } @@ -2104,7 +2106,7 @@ function noFetchIf( catch(ex) {} } else if ( responseType !== '' ) { if ( validResponseProps.type.includes(responseType) ) { - responseProps = { type: { value: responseType } }; + responseProps.type = { value: responseType }; } } self.fetch = new Proxy(self.fetch, { @@ -2147,7 +2149,6 @@ function noFetchIf( return generateContentFn(responseBody).then(text => { safe.uboLog(logPrefix, `Prevented with response "${text}"`); const response = new Response(text, { - statusText: 'OK', headers: { 'Content-Length': text.length, }