57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
let app = Elm.Background.Background.init();
|
|
|
|
app.ports.consoleLog.subscribe(message => console.log(message));
|
|
|
|
app.ports.localStorageGet.subscribe(key => app.ports.localStorageRecv.send([key, window.localStorage.getItem(key) ?? "{}"]));
|
|
|
|
let requestResolveMap = {};
|
|
let responseResolveMap = {};
|
|
|
|
browser.webRequest.onBeforeSendHeaders.addListener(
|
|
requestDetails => {
|
|
let resolve;
|
|
let p = new Promise((r, _) => resolve = r);
|
|
|
|
requestResolveMap[requestDetails.requestId] = resolve;
|
|
app.ports.incomingRequest.send([requestDetails.requestId, JSON.stringify(requestDetails)]);
|
|
|
|
return p;
|
|
},
|
|
{urls: ["<all_urls>"]},
|
|
["blocking", "requestHeaders"]
|
|
);
|
|
|
|
browser.webRequest.onHeadersReceived.addListener(
|
|
responseDetails => {
|
|
let resolve;
|
|
let p = new Promise((r, _) => resolve = r);
|
|
|
|
responseResolveMap[responseDetails.requestId] = resolve;
|
|
app.ports.incomingResponse.send([responseDetails.requestId, JSON.stringify(responseDetails)]);
|
|
|
|
return p;
|
|
},
|
|
{urls: ["<all_urls>"]},
|
|
["blocking", "responseHeaders"]
|
|
);
|
|
|
|
app.ports.modifyRequest.subscribe(([id, body]) => {
|
|
requestResolveMap[id](body)
|
|
delete requestResolveMap[id];
|
|
});
|
|
|
|
app.ports.modifyResponse.subscribe(([id, body]) => {
|
|
responseResolveMap[id](body)
|
|
delete responseResolveMap[id];
|
|
});
|
|
|
|
browser.runtime.onMessage.addListener(() => app.ports.refresh.send(""));
|
|
|
|
browser.browserAction.onClicked.addListener(() => {
|
|
let createProperties = {
|
|
active: true,
|
|
url: "app.html",
|
|
};
|
|
|
|
browser.tabs.create(createProperties);
|
|
}); |