diff --git a/browser/background.js b/browser/background.js deleted file mode 100644 index dbe664c2..00000000 --- a/browser/background.js +++ /dev/null @@ -1,24 +0,0 @@ -if (typeof browser === "undefined") { - var browser = chrome; -} - -browser.webRequest.onHeadersReceived.addListener(({ responseHeaders, url }) => { - const cspIdx = responseHeaders.findIndex(h => h.name === "content-security-policy"); - if (cspIdx !== -1) - responseHeaders.splice(cspIdx, 1); - - if (url.endsWith(".css")) { - const contentType = responseHeaders.find(h => h.name === "content-type"); - if (contentType) - contentType.value = "text/css"; - else - responseHeaders.push({ - name: "content-type", - value: "text/css" - }); - } - - return { - responseHeaders - }; -}, { urls: ["*://*.discord.com/*"] }, ["blocking", "responseHeaders"]); diff --git a/browser/manifest.json b/browser/manifest.json index 2988ba9d..ea79d129 100644 --- a/browser/manifest.json +++ b/browser/manifest.json @@ -1,32 +1,40 @@ { - "manifest_version": 2, + "manifest_version": 3, "name": "Vencord Web", "description": "Yeee", "version": "1.0.0", "author": "Vendicated", "homepage_url": "https://github.com/Vendicated/Vencord", - "background": { - "scripts": [ - "background.js" - ] - }, + + "host_permissions": [ + "*://*.discord.com/*", + "https://raw.githubusercontent.com/*" + ], + + "permissions": ["declarativeNetRequest"], + "content_scripts": [ { "run_at": "document_start", - "matches": [ - "*://*.discord.com/*" - ], - "js": [ - "content.js" - ] + "matches": ["*://*.discord.com/*"], + "js": ["content.js"] } ], - "permissions": [ - "*://*.discord.com/*", - "webRequest", - "webRequestBlocking" - ], + "web_accessible_resources": [ - "dist/Vencord.js" - ] + { + "resources": ["dist/Vencord.js"], + "matches": ["*://*.discord.com/*"] + } + ], + + "declarative_net_request": { + "rule_resources": [ + { + "id": "modifyResponseHeaders", + "enabled": true, + "path": "modifyResponseHeaders.json" + } + ] + } } diff --git a/browser/modifyResponseHeaders.json b/browser/modifyResponseHeaders.json new file mode 100644 index 00000000..ed390759 --- /dev/null +++ b/browser/modifyResponseHeaders.json @@ -0,0 +1,38 @@ +[ + { + "id": 1, + "action": { + "type": "modifyHeaders", + "responseHeaders": [ + { + "header": "content-security-policy", + "operation": "remove" + }, + { + "header": "content-security-policy-report-only", + "operation": "remove" + } + ] + }, + "condition": { + "resourceTypes": ["main_frame"] + } + }, + { + "id": 2, + "action": { + "type": "modifyHeaders", + "responseHeaders": [ + { + "header": "content-type", + "operation": "set", + "value": "text/css" + } + ] + }, + "condition": { + "resourceTypes": ["stylesheet"], + "urlFilter": "https://raw.githubusercontent.com/*" + } + } +] diff --git a/scripts/build/buildWeb.mjs b/scripts/build/buildWeb.mjs index 1efdd8f5..f5be6510 100755 --- a/scripts/build/buildWeb.mjs +++ b/scripts/build/buildWeb.mjs @@ -76,7 +76,7 @@ zip({ dist: { "Vencord.js": readFileSync("dist/browser.js") }, - ...Object.fromEntries(await Promise.all(["background.js", "content.js", "manifest.json"].map(async f => [ + ...Object.fromEntries(await Promise.all(["modifyResponseHeaders.json", "content.js", "manifest.json"].map(async f => [ f, await readFile(join("browser", f)) ]))),