| 1 |
- !function(){"use strict";const e=new Map;function t(r,s={},n){return new Promise(((a,i)=>{const o=new XMLHttpRequest;if(o.withCredentials=!0,o.responseType="arraybuffer",o.onerror=e=>i(new Error(e.detail)),o.onreadystatechange=()=>{o.readyState==XMLHttpRequest.DONE&&(o.status||o.response.byteLength?401!=o.status&&403!=o.status&&404!=o.status||n?a({array:Array.from(new Uint8Array(o.response)),headers:{"content-type":o.getResponseHeader("Content-Type")},status:o.status}):t(r,s,!0).then(a).catch(i):i())},o.open("GET",r,!0),s.headers)for(const e of Object.entries(s.headers))o.setRequestHeader(e[0],e[1]);if(n){const t=String(Math.random()).substring(2);d=t,f=s.referrer,e.set(d,f),o.setRequestHeader("x-single-file-request-id",t)}var d,f;o.send()}))}browser.runtime.onMessage.addListener(((e,r)=>{if(e.method&&e.method.startsWith("singlefile.fetch"))return new Promise((s=>{(function(e,r){if("singlefile.fetch"==e.method)return t(e.url,{referrer:e.referrer,headers:e.headers});if("singlefile.fetchFrame"==e.method)return browser.tabs.sendMessage(r.tab.id,e)})(e,r).then(s).catch((e=>s({error:e&&e.toString()})))}))})),browser.runtime.onMessage.addListener(((e,t)=>{if("singlefile.frameTree.initResponse"==e.method||"singlefile.frameTree.ackInitRequest"==e.method)return browser.tabs.sendMessage(t.tab.id,e,{frameId:0}),Promise.resolve({})}));const r=new Map;function s(e,t){e.delete(t)}browser.runtime.onMessage.addListener(((e,t)=>{if("singlefile.lazyTimeout.setTimeout"==e.method){let n,a=r.get(t.tab.id);if(a)if(n=a.get(t.frameId),n){const t=n.get(e.type);t&&clearTimeout(t)}else n=new Map;const i=setTimeout((async()=>{try{const n=r.get(t.tab.id),a=n.get(t.frameId);n&&a&&s(a,e.type),await browser.tabs.sendMessage(t.tab.id,{method:"singlefile.lazyTimeout.onTimeout",type:e.type})}catch(e){}}),e.delay);return a||(a=new Map,n=new Map,a.set(t.frameId,n),r.set(t.tab.id,a)),n.set(e.type,i),Promise.resolve({})}if("singlefile.lazyTimeout.clearTimeout"==e.method){let n=r.get(t.tab.id);if(n){const r=n.get(t.frameId);if(r){const t=r.get(e.type);t&&clearTimeout(t),s(r,e.type)}}return Promise.resolve({})}})),browser.tabs.onRemoved.addListener((e=>r.delete(e)))}();
|