aboutsummaryrefslogtreecommitdiffstats
path: root/src/assets/javascripts/helpers
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-05-30 01:02:59 +0300
committerManeraKai <manerakai@protonmail.com>2022-05-30 01:02:59 +0300
commitc5a6623e0f320b2a789e0d2667ccfe2e1bd4335f (patch)
treedabfa0f2cecf137771f276996f9368922c5aeb64 /src/assets/javascripts/helpers
parentFixed typo for CopyRaw #291 (diff)
downloadlibredirect-c5a6623e0f320b2a789e0d2667ccfe2e1bd4335f.zip
Fixed settings theme and translation flashing #286
Diffstat (limited to 'src/assets/javascripts/helpers')
-rw-r--r--src/assets/javascripts/helpers/general.js71
-rw-r--r--src/assets/javascripts/helpers/imgur.js191
-rw-r--r--src/assets/javascripts/helpers/instagram.js166
-rw-r--r--src/assets/javascripts/helpers/lbry.js156
-rw-r--r--src/assets/javascripts/helpers/maps.js212
-rw-r--r--src/assets/javascripts/helpers/medium.js174
-rw-r--r--src/assets/javascripts/helpers/peertube.js155
-rw-r--r--src/assets/javascripts/helpers/reddit.js378
-rw-r--r--src/assets/javascripts/helpers/search.js470
-rw-r--r--src/assets/javascripts/helpers/sendTargets.js149
-rw-r--r--src/assets/javascripts/helpers/tiktok.js175
-rw-r--r--src/assets/javascripts/helpers/translate/get_lingva_preferences.js10
-rw-r--r--src/assets/javascripts/helpers/translate/set_lingva_preferences.js19
-rw-r--r--src/assets/javascripts/helpers/translate/translate.js295
-rw-r--r--src/assets/javascripts/helpers/twitter.js241
-rw-r--r--src/assets/javascripts/helpers/utils.js456
-rw-r--r--src/assets/javascripts/helpers/wikipedia.js220
-rw-r--r--src/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js7
-rw-r--r--src/assets/javascripts/helpers/youtube/get_piped_preferences.js24
-rw-r--r--src/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js10
-rw-r--r--src/assets/javascripts/helpers/youtube/set_piped_preferences.js44
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js453
-rw-r--r--src/assets/javascripts/helpers/youtubeMusic.js97
23 files changed, 0 insertions, 4173 deletions
diff --git a/src/assets/javascripts/helpers/general.js b/src/assets/javascripts/helpers/general.js
deleted file mode 100644
index 199d884c..00000000
--- a/src/assets/javascripts/helpers/general.js
+++ /dev/null
@@ -1,71 +0,0 @@
-"use strict";
-window.browser = window.browser || window.chrome;
-
-function isException(url) {
- for (const item of exceptions.url)
- if (item == `${url.protocol}//${url.host}`) return true;
- for (const item of exceptions.regex)
- if (new RegExp(item).test(url.href)) return true;
- return false;
-}
-
-let exceptions;
-
-function init() {
- browser.storage.local.get(
- 'exceptions',
- r => {
- exceptions = r.exceptions;
- }
- )
-}
-
-init();
-browser.storage.onChanged.addListener(init)
-
-async function initDefaults() {
- await browser.storage.local.set({
- exceptions: {
- "url": [],
- "regex": [],
- },
- theme: "DEFAULT",
- popupFrontends: [
- "youtube",
- "twitter",
- "instagram",
- "tikTok",
- "imgur",
- "reddit",
- "search",
- "medium",
- "translate",
- "maps",
- ],
- autoRedirect: false,
- })
-}
-
-const allPopupFrontends = [
- "youtube",
- "youtubeMusic",
- "twitter",
- "instagram",
- "tikTok",
- "imgur",
- "reddit",
- "search",
- "translate",
- "maps",
- "wikipedia",
- "medium",
- "peertube",
- "lbry",
- "sendTargets"
-];
-
-export default {
- isException,
- initDefaults,
- allPopupFrontends,
-}
diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js
deleted file mode 100644
index 9f93f362..00000000
--- a/src/assets/javascripts/helpers/imgur.js
+++ /dev/null
@@ -1,191 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-import utils from './utils.js'
-
-const targets = /^https?:\/{2}([im]\.)?imgur\.com(\/|$)/
-
-let redirects = {
- "rimgo": {
- "normal": [],
- "tor": [],
- "i2p": []
- }
-}
-function setRedirects() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- redirects.rimgo = dataJson.rimgo;
-
- rimgoNormalRedirectsChecks = [...redirects.rimgo.normal];
- rimgoTorRedirectsChecks = [...redirects.rimgo.tor];
- rimgoI2pRedirectsChecks = [...redirects.rimgo.i2p];
-
- for (const instance of r.cloudflareList) {
- const a = rimgoNormalRedirectsChecks.indexOf(instance);
- if (a > -1) rimgoNormalRedirectsChecks.splice(a, 1);
-
- const b = rimgoTorRedirectsChecks.indexOf(instance);
- if (b > -1) rimgoTorRedirectsChecks.splice(b, 1);
-
- const c = rimgoI2pRedirectsChecks.indexOf(instance);
- if (c > -1) rimgoI2pRedirectsChecks.splice(c, 1);
- }
-
- await browser.storage.local.set({
- imgurRedirects: redirects,
- rimgoNormalRedirectsChecks,
- rimgoTorRedirectsChecks,
- rimgoI2pRedirectsChecks,
- });
-
- resolve();
- })
- })
-}
-
-let
- disableImgur,
- imgurRedirects,
- imgurProtocol,
- rimgoNormalRedirectsChecks,
- rimgoNormalCustomRedirects,
- rimgoTorRedirectsChecks,
- rimgoTorCustomRedirects,
- rimgoI2pRedirectsChecks,
- rimgoI2pCustomRedirects;
-
-function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableImgur",
- "imgurRedirects",
- "imgurProtocol",
- "rimgoNormalRedirectsChecks",
- "rimgoNormalCustomRedirects",
- "rimgoTorRedirectsChecks",
- "rimgoTorCustomRedirects",
- "rimgoI2pRedirectsChecks",
- "rimgoI2pCustomRedirects",
- ],
- r => {
- disableImgur = r.disableImgur;
- imgurRedirects = r.imgurRedirects;
- imgurProtocol = r.imgurProtocol;
- rimgoNormalRedirectsChecks = r.rimgoNormalRedirectsChecks;
- rimgoNormalCustomRedirects = r.rimgoNormalCustomRedirects;
- rimgoTorRedirectsChecks = r.rimgoTorRedirectsChecks;
- rimgoTorCustomRedirects = r.rimgoTorCustomRedirects;
- rimgoI2pRedirectsChecks = r.rimgoI2pRedirectsChecks;
- rimgoI2pCustomRedirects = r.rimgoI2pCustomRedirects;
- resolve();
- }
- )
- })
-}
-
-init();
-browser.storage.onChanged.addListener(init)
-
-// https://imgur.com/gallery/s4WXQmn
-// https://imgur.com/a/H8M4rcp
-// https://imgur.com/gallery/gYiQLWy
-// https://imgur.com/gallery/cTRwaJU
-// https://i.imgur.com/CFSQArP.jpeg
-
-function all() {
- return [
- ...imgurRedirects.rimgo.normal,
- ...imgurRedirects.rimgo.tor,
- ...imgurRedirects.rimgo.i2p,
- ...rimgoNormalCustomRedirects,
- ...rimgoTorCustomRedirects,
- ...rimgoI2pCustomRedirects,
- ];
-}
-
-function redirect(url, type, initiator) {
- if (disableImgur) return;
- if (url.pathname == "/") return;
- if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media",].includes(type)) return;
- if (initiator && (all().includes(initiator.origin) || targets.test(initiator.host))) return;
- if (!targets.test(url.href)) return;
- if (url.pathname.includes("delete/")) return;
-
- let instancesList;
- if (imgurProtocol == 'normal') instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects];
- if (imgurProtocol == 'tor') instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects];
- if (imgurProtocol == 'i2p') instancesList = [...rimgoI2pRedirectsChecks, ...rimgoI2pCustomRedirects];
- if (instancesList.length === 0) return;
-
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`;
-}
-
-function reverse(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- resolve(`https://imgur.com${url.pathname}${url.search}`);
- })
-}
-
-function switchInstance(url) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (imgurProtocol == 'normal') instancesList = [...rimgoNormalCustomRedirects, ...rimgoNormalRedirectsChecks];
- else if (imgurProtocol == 'tor') instancesList = [...rimgoTorCustomRedirects, ...rimgoTorRedirectsChecks];
- else if (imgurProtocol == 'i2p') instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks];
-
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
-
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
-}
-
-function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- redirects.rimgo = dataJson.rimgo;
- browser.storage.local.get('cloudflareList', async r => {
- rimgoNormalRedirectsChecks = [...redirects.rimgo.normal];
- for (const instance of r.cloudflareList) {
- const i = rimgoNormalRedirectsChecks.indexOf(instance);
- if (i > -1) rimgoNormalRedirectsChecks.splice(i, 1);
- }
- await browser.storage.local.set({
- disableImgur: false,
- imgurProtocol: 'normal',
- imgurRedirects: redirects,
-
- rimgoNormalRedirectsChecks: rimgoNormalRedirectsChecks,
- rimgoNormalCustomRedirects: [],
-
- rimgoTorRedirectsChecks: [...redirects.rimgo.tor],
- rimgoTorCustomRedirects: [],
-
- rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p],
- rimgoI2pCustomRedirects: [],
- });
- resolve();
- });
- });
- });
-}
-
-export default {
- setRedirects,
- redirect,
- reverse,
- initDefaults,
- switchInstance,
-};
diff --git a/src/assets/javascripts/helpers/instagram.js b/src/assets/javascripts/helpers/instagram.js
deleted file mode 100644
index f5c54b3a..00000000
--- a/src/assets/javascripts/helpers/instagram.js
+++ /dev/null
@@ -1,166 +0,0 @@
-window.browser = window.browser || window.chrome;
-import utils from './utils.js'
-
-const targets = [
- "instagram.com",
- "www.instagram.com",
-];
-let redirects = {
- "bibliogram": {
- "normal": [],
- "tor": []
- }
-};
-function setRedirects(val) {
- browser.storage.local.get('cloudflareList', async r => {
- redirects.bibliogram = val;
- bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal];
- for (const instance of r.cloudflareList) {
- const a = bibliogramNormalRedirectsChecks.indexOf(instance);
- if (a > -1) bibliogramNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- instagramRedirects: redirects,
- bibliogramNormalRedirectsChecks
- })
- })
-}
-
-let
- disableInstagram,
- instagramProtocol,
- instagramRedirects,
- bibliogramNormalRedirectsChecks,
- bibliogramTorRedirectsChecks,
- bibliogramNormalCustomRedirects,
- bibliogramTorCustomRedirects;
-
-function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableInstagram",
- "instagramProtocol",
- "instagramRedirects",
- "bibliogramNormalRedirectsChecks",
- "bibliogramTorRedirectsChecks",
- "bibliogramNormalCustomRedirects",
- "bibliogramTorCustomRedirects",
- ],
- r => {
- disableInstagram = r.disableInstagram;
- instagramProtocol = r.instagramProtocol;
- instagramRedirects = r.instagramRedirects;
- bibliogramNormalRedirectsChecks = r.bibliogramNormalRedirectsChecks;
- bibliogramTorRedirectsChecks = r.bibliogramTorRedirectsChecks;
- bibliogramNormalCustomRedirects = r.bibliogramNormalCustomRedirects;
- bibliogramTorCustomRedirects = r.bibliogramTorCustomRedirects;
- resolve();
- }
- )
- })
-}
-
-init();
-browser.storage.onChanged.addListener(init)
-
-function all() {
- return [
- ...instagramRedirects.bibliogram.normal,
- ...instagramRedirects.bibliogram.tor,
- ...bibliogramNormalCustomRedirects,
- ...bibliogramTorCustomRedirects,
- ]
-}
-
-function redirect(url, type, initiator) {
- if (disableInstagram) return;
- if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
- if (!targets.includes(url.host)) return;
- if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return;
-
- const bypassPaths = [/about/, /explore/, /support/, /press/, /api/, /privacy/, /safety/, /admin/, /\/(accounts\/|embeds?.js)/];
- if (bypassPaths.some(rx => rx.test(url.pathname))) return;
-
- let instancesList;
- if (instagramProtocol == 'normal') instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects];
- else if (instagramProtocol == 'tor') instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects];
- if (instancesList.length === 0) return;
- let randomInstance = utils.getRandomInstance(instancesList)
-
- const reservedPaths = ["u", "p", "privacy",];
- if (url.pathname === "/" || reservedPaths.includes(url.pathname.split("/")[1]))
- return `${randomInstance}${url.pathname}${url.search}`;
- if (url.pathname.startsWith("/reel") || url.pathname.startsWith("/tv"))
- return `${randomInstance}/p${url.pathname.replace(/\/reel|\/tv/i, '')}${url.search}`;
- else
- return `${randomInstance}/u${url.pathname}${url.search}`; // Likely a user profile, redirect to '/u/...'
-}
-
-function reverse(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
-
- if (url.pathname.startsWith('/p')) resolve(`https://instagram.com${url.pathname.replace('/p', '')}${url.search}`);
- if (url.pathname.startsWith('/u')) resolve(`https://instagram.com${url.pathname.replace('/u', '')}${url.search}`);
- resolve(`https://instagram.com${url.pathname}${url.search}`);
- })
-}
-
-function switchInstance(url) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
-
- let instancesList;
- if (instagramProtocol == 'normal') instancesList = [...bibliogramNormalCustomRedirects, ...bibliogramNormalRedirectsChecks];
- else if (instagramProtocol == 'tor') instancesList = [...bibliogramTorCustomRedirects, ...bibliogramTorRedirectsChecks];
-
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
-
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
-}
-
-function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(data => {
- let dataJson = JSON.parse(data);
- redirects.bibliogram = dataJson.bibliogram;
- browser.storage.local.get('cloudflareList', r => {
- bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal];
- for (const instance of r.cloudflareList) {
- const i = bibliogramNormalRedirectsChecks.indexOf(instance);
- if (i > -1) bibliogramNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- disableInstagram: false,
- instagramRedirects: redirects,
-
- bibliogramNormalRedirectsChecks: bibliogramNormalRedirectsChecks,
- bibliogramTorRedirectsChecks: [],
-
- bibliogramNormalCustomRedirects: [...redirects.bibliogram.tor],
- bibliogramTorCustomRedirects: [],
- instagramProtocol: "normal",
- })
- resolve();
- }
- )
- })
- })
-}
-
-export default {
- setRedirects,
- reverse,
- redirect,
- initDefaults,
- switchInstance,
-};
diff --git a/src/assets/javascripts/helpers/lbry.js b/src/assets/javascripts/helpers/lbry.js
deleted file mode 100644
index b44cc738..00000000
--- a/src/assets/javascripts/helpers/lbry.js
+++ /dev/null
@@ -1,156 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-import utils from './utils.js'
-
-let targets = ["odysee.com"];
-
-let redirects = {
- "librarian": {
- "normal": [
- "https://lbry.bcow.xyz",
- "https://odysee.076.ne.jp",
- "https://lbry.ix.tc",
- "https://librarian.pussthecat.org",
- "https://lbry.mutahar.rocks",
- "https://librarian.esmailelbob.xyz",
- ],
- "tor": [
- "http://ecc5mi5ncdw6mxhjz6re6g2uevtpbzxjvxgrxia2gyvrlnil3srbnhyd.onion",
- "http://vrmbc4brkgkaysmi3fenbzkayobxjh24slmhtocambn3ewe62iuqt3yd.onion",
- ]
- }
-}
-
-function setRedirects(val) {
- redirects.librarian = val;
- browser.storage.local.set({ lbryTargetsRedirects: redirects })
- for (const item of librarianNormalRedirectsChecks)
- if (!redirects.librarian.normal.includes(item)) {
- var index = librarianNormalRedirectsChecks.indexOf(item);
- if (index !== -1) librarianNormalRedirectsChecks.splice(index, 1);
- }
- browser.storage.local.set(librarianNormalRedirectsChecks);
-
- for (const item of librarianTorRedirectsChecks)
- if (!redirects.librarian.normal.includes(item)) {
- var index = librarianTorRedirectsChecks.indexOf(item);
- if (index !== -1) librarianTorRedirectsChecks.splice(index, 1);
- }
- browser.storage.local.set(librarianTorRedirectsChecks)
-}
-
-let
- disableLbryTargets,
- lbryTargetsProtocol,
- lbryTargetsRedirects,
- librarianNormalRedirectsChecks,
- librarianNormalCustomRedirects,
- librarianTorRedirectsChecks,
- librarianTorCustomRedirects;
-
-function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableLbryTargets",
- "lbryTargetsProtocol",
- "lbryTargetsRedirects",
- "librarianNormalRedirectsChecks",
- "librarianNormalCustomRedirects",
- "librarianTorRedirectsChecks",
- "librarianTorCustomRedirects",
- ],
- r => {
- disableLbryTargets = r.disableLbryTargets;
- lbryTargetsProtocol = r.lbryTargetsProtocol;
- lbryTargetsRedirects = r.lbryTargetsRedirects;
- librarianNormalRedirectsChecks = r.librarianNormalRedirectsChecks;
- librarianNormalCustomRedirects = r.librarianNormalCustomRedirects;
- librarianTorRedirectsChecks = r.librarianTorRedirectsChecks;
- librarianTorCustomRedirects = r.librarianTorCustomRedirects;
- resolve();
- }
- )
- })
-}
-init();
-browser.storage.onChanged.addListener(init)
-
-function all() {
- return [
- ...redirects.librarian.normal,
- ...redirects.librarian.tor,
- ...librarianNormalCustomRedirects,
- ...librarianTorCustomRedirects,
- ];
-}
-
-function switchInstance(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
-
- let instancesList;
- if (lbryTargetsProtocol == 'normal') instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects];
- else if (lbryTargetsProtocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects];
-
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
-
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
-}
-
-function redirect(url, type, initiator) {
- if (disableLbryTargets) return;
- if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return;
- if (!targets.includes(url.host)) return;
- if (type != "main_frame") return;
-
- let instancesList;
- if (lbryTargetsProtocol == 'normal') instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects];
- if (lbryTargetsProtocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects];
- if (instancesList.length === 0) return;
-
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`;
-}
-
-function initDefaults() {
- return new Promise(resolve => {
- browser.storage.local.get('cloudflareList', async r => {
- librarianNormalRedirectsChecks = [...redirects.librarian.normal];
- for (const instance of r.cloudflareList) {
- let i;
-
- i = librarianNormalRedirectsChecks.indexOf(instance);
- if (i > -1) librarianNormalRedirectsChecks.splice(i, 1);
- }
- await browser.storage.local.set({
- disableLbryTargets: true,
- lbryTargetsRedirects: {
- 'librarian': redirects.librarian
- },
-
- librarianNormalRedirectsChecks: librarianNormalRedirectsChecks,
- librarianNormalCustomRedirects: [],
-
- librarianTorRedirectsChecks: [...redirects.librarian.tor],
- librarianTorCustomRedirects: [],
-
- lbryTargetsProtocol: "normal",
- })
- resolve();
- })
- })
-}
-
-export default {
- setRedirects,
- switchInstance,
- redirect,
- initDefaults,
-};
diff --git a/src/assets/javascripts/helpers/maps.js b/src/assets/javascripts/helpers/maps.js
deleted file mode 100644
index 3ab5e2b6..00000000
--- a/src/assets/javascripts/helpers/maps.js
+++ /dev/null
@@ -1,212 +0,0 @@
-"use strict";
-
-window.browser = window.browser || window.chrome;
-import utils from './utils.js'
-
-const targets = /^https?:\/{2}(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/;
-
-let redirects = {
- 'osm': {
- "normal": [
- "https://openstreetmap.org"
- ]
- },
- 'facil': {
- "normal": [
- "https://facilmap.org"
- ]
- }
-};
-
-
-let
- disableMaps,
- mapsFrontend,
- facilNormalRedirectsChecks,
- facilNormalCustomRedirects;
-
-function init() {
- browser.storage.local.get(
- [
- "disableMaps",
- "mapsFrontend",
- "facilNormalRedirectsChecks",
- "facilNormalCustomRedirects",
- ],
- r => {
- disableMaps = r.disableMaps;
- mapsFrontend = r.mapsFrontend;
- facilNormalRedirectsChecks = r.facilNormalRedirectsChecks;
- facilNormalCustomRedirects = r.facilNormalCustomRedirects;
- }
- )
-}
-
-init();
-browser.storage.onChanged.addListener(init)
-
-function redirect(url, initiator) {
- const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/;
- const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/;
- const placeRegex = /\/place\/(.*)\//;
- const travelModes = {
- driving: "fossgis_osrm_car",
- walking: "fossgis_osrm_foot",
- bicycling: "fossgis_osrm_bike",
- transit: "fossgis_osrm_car", // not implemented on OSM, default to car.
- };
- const travelModesFacil = {
- driving: "car",
- walking: "pedestrian",
- bicycling: "bicycle",
- transit: "car", // not implemented on Facil, default to car.
- };
- const osmLayers = {
- none: "S",
- transit: "T",
- traffic: "S", // not implemented on OSM, default to standard.
- bicycling: "C",
- };
-
- function addressToLatLng(address) {
- const xmlhttp = new XMLHttpRequest();
- xmlhttp.open("GET", `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`, false);
- xmlhttp.send();
- if (xmlhttp.status === 200) {
- const json = JSON.parse(xmlhttp.responseText)[0];
- if (json) {
- console.log('json', json)
- return [
- `${json.lat},${json.lon}`,
- `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`,
- ];
- }
- }
- console.info("Error: Status is " + xmlhttp.status);
- }
-
- if (disableMaps) return;
- if (initiator && initiator.host === "earth.google.com") return;
- if (!url.href.match(targets)) return;
-
- let randomInstance;
- if (mapsFrontend == 'osm') randomInstance = utils.getRandomInstance(redirects.osm.normal);
- if (mapsFrontend == 'facil') randomInstance = utils.getRandomInstance([...facilNormalRedirectsChecks, ...facilNormalCustomRedirects]);
-
- let mapCentre = "#";
- let prefs = {};
-
- if (url.pathname.match(mapCentreRegex)) { // Set map centre if present
- var [, lat, lon, zoom] = url.pathname.match(mapCentreRegex);
- } else if (url.searchParams.has("center")) {
- var [lat, lon] = url.searchParams.get("center").split(",");
- var zoom = url.searchParams.get("zoom") ?? "17";
- }
-
- if (lat && lon && zoom) {
- if (mapsFrontend == 'osm') mapCentre = `#map=${zoom}/${lat}/${lon}`;
- if (mapsFrontend == 'facil') mapCentre = `#${zoom}/${lat}/${lon}`;
- }
-
- if (url.searchParams.get("layer")) prefs.layers = osmLayers[url.searchParams.get("layer")];
-
- if (url.pathname.includes("/embed")) { // Handle Google Maps Embed API
- // https://www.google.com/maps/embed/v1/place?key=AIzaSyD4iE2xVSpkLLOXoyqT-RuPwURN3ddScAI&q=Eiffel+Tower,Paris+France
- console.log("embed life");
-
- let query = "";
- if (url.searchParams.has("q")) query = url.searchParams.get("q");
- else if (url.searchParams.has("query")) query = url.searchParams.has("query");
-
- else if (url.searchParams.has("pb"))
- try { query = url.searchParams.get("pb").split(/!2s(.*?)!/)[1]; }
- catch (error) { console.error(error); } // Unable to find map marker in URL.
-
- let [coords, boundingbox] = addressToLatLng(query);
- prefs.bbox = boundingbox;
- prefs.marker = coords;
- prefs.layer = "mapnik";
- let prefsEncoded = new URLSearchParams(prefs).toString();
- if (mapsFrontend == 'osm') { resolve(`${randomInstance}/export/embed.html?${prefsEncoded}`); return; }
-
- if (mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${query}`); return; }
-
- } else if (url.pathname.includes("/dir")) { // Handle Google Maps Directions
- // https://www.google.com/maps/dir/?api=1&origin=Space+Needle+Seattle+WA&destination=Pike+Place+Market+Seattle+WA&travelmode=bicycling
-
- let travMod = url.searchParams.get("travelmode");
- if (url.searchParams.has("travelmode")) prefs.engine = travelModes[travMod];
-
- let orgVal = url.searchParams.get("origin");
- let destVal = url.searchParams.get("destination");
-
- let org; addressToLatLng(orgVal, a => org = a);
- let dest; addressToLatLng(destVal, a => dest = a);
- prefs.route = `${org};${dest}`;
-
- let prefsEncoded = new URLSearchParams(prefs).toString();
- if (mapsFrontend == 'osm') { resolve(`${randomInstance}/directions?${prefsEncoded}${mapCentre}`); return; }
- if (mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${orgVal}%20to%20${destVal}%20by%20${travelModesFacil[travMod]}`); return; }
-
- } else if (url.pathname.includes("data=") && url.pathname.match(dataLatLngRegex)) { // Get marker from data attribute
- // https://www.google.com/maps/place/41%C2%B001'58.2%22N+40%C2%B029'18.2%22E/@41.032833,40.4862063,17z/data=!3m1!4b1!4m6!3m5!1s0x0:0xf64286eaf72fc49d!7e2!8m2!3d41.0328329!4d40.4883948
- console.log("data life");
-
- let [, mlat, mlon] = url.pathname.match(dataLatLngRegex);
-
- if (mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query=${mlat}%2C${mlon}`); return; }
- if (mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${mlat}%2C${mlon}`); return; }
-
- } else if (url.searchParams.has("ll")) { // Get marker from ll param
- // https://maps.google.com/?ll=38.882147,-76.99017
- console.log("ll life");
-
- const [mlat, mlon] = url.searchParams.get("ll").split(",");
-
- if (mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query=${mlat}%2C${mlon}`); return; }
- if (mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${mlat}%2C${mlon}`); return; }
- } else if (url.searchParams.has("viewpoint")) { // Get marker from viewpoint param.
- // https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=48.857832,2.295226&heading=-45&pitch=38&fov=80
- console.log("viewpoint life");
-
- const [mlat, mlon] = url.searchParams.get("viewpoint").split(",");
-
- if (mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query=${mlat}%2C${mlon}`); return; }
- if (mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${mlat}%2C${mlon}`); return; }
- } else { // Use query as search if present.
- console.log("normal life");
-
- let query;
- if (url.searchParams.has("q")) query = url.searchParams.get("q");
- else if (url.searchParams.has("query")) query = url.searchParams.get("query");
- else if (url.pathname.match(placeRegex)) query = url.pathname.match(placeRegex)[1];
-
- let prefsEncoded = new URLSearchParams(prefs).toString();
- if (query) {
- if (mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query="${query}${mapCentre}&${prefsEncoded}`); return; }
- if (mapsFrontend == 'facil') { resolve(`${randomInstance}/${mapCentre}/Mpnk/${query}`); return; }
- }
- }
-
- let prefsEncoded = new URLSearchParams(prefs).toString();
- console.log("mapCentre", mapCentre);
- console.log("prefs", prefs);
- console.log("prefsEncoded", prefsEncoded);
- if (mapsFrontend == 'osm') { resolve(`${randomInstance}/${mapCentre}&${prefsEncoded}`); return; }
- if (mapsFrontend == 'facil') { resolve(`${randomInstance}/${mapCentre}/Mpnk`); return; }
-}
-
-async function initDefaults() {
- await browser.storage.local.set({
- disableMaps: false,
- mapsFrontend: 'osm',
- mapsRedirects: redirects,
- facilNormalRedirectsChecks: [...redirects.facil.normal],
- facilNormalCustomRedirects: [],
- })
-}
-
-export default {
- redirect,
- initDefaults,
-};
diff --git a/src/assets/javascripts/helpers/medium.js b/src/assets/javascripts/helpers/medium.js
deleted file mode 100644
index 7be6b0d1..00000000
--- a/src/assets/javascripts/helpers/medium.js
+++ /dev/null
@@ -1,174 +0,0 @@
-window.browser = window.browser || window.chrome;
-import utils from './utils.js'
-
-
-const targets = [
- // /(?:.*\.)*(?<!(link\.|cdn\-images\-\d+\.))medium\.com(\/.*)?$/,
- /^medium\.com/,
- /.*\.medium\.com/,
- // // Other domains of medium blogs, source(s): https://findingtom.com/best-medium-blogs-to-follow/#1-forge
-
- /^towardsdatascience\.com/,
- /^uxdesign\.cc/,
- /^uxplanet\.org/,
- /^betterprogramming\.pub/,
- /^aninjusticemag\.com/,
- /^betterhumans\.pub/,
- /^psiloveyou\.xyz/,
- /^entrepreneurshandbook\.co/,
- /^blog\.coinbase\.com/,
-
- /^ levelup\.gitconnected\.com /,
- /^javascript\.plainenglish\.io /,
- /^blog\.bitsrc\.io /,
- /^ itnext\.io /,
- /^codeburst\.io /,
- /^infosecwriteups\.com /,
- /^ blog\.devgenius.io /,
- /^ writingcooperative\.com /,
-];
-
-let redirects = {
- "scribe": {
- "normal": [],
- "tor": []
- }
-};
-function setRedirects(val) {
- browser.storage.local.get('cloudflareList', r => {
- redirects.scribe = val;
- scribeNormalRedirectsChecks = [...redirects.scribe.normal];
- for (const instance of r.cloudflareList) {
- const a = scribeNormalRedirectsChecks.indexOf(instance);
- if (a > -1) scribeNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- mediumRedirects: redirects,
- scribeNormalRedirectsChecks
- })
- })
-}
-
-let
- disableMedium,
- mediumRedirects,
- scribeNormalRedirectsChecks,
- scribeNormalCustomRedirects,
- scribeTorRedirectsChecks,
- scribeTorCustomRedirects,
- mediumProtocol;
-
-function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableMedium",
- "mediumRedirects",
- "scribeNormalRedirectsChecks",
- "scribeNormalCustomRedirects",
- "scribeTorRedirectsChecks",
- "scribeTorCustomRedirects",
- "mediumProtocol"
- ],
- r => {
- disableMedium = r.disableMedium;
- mediumRedirects = r.mediumRedirects;
- scribeNormalRedirectsChecks = r.scribeNormalRedirectsChecks;
- scribeNormalCustomRedirects = r.scribeNormalCustomRedirects;
- scribeTorRedirectsChecks = r.scribeTorRedirectsChecks;
- scribeTorCustomRedirects = r.scribeTorCustomRedirects;
- mediumProtocol = r.mediumProtocol;
- resolve();
- }
- )
- })
-}
-
-init();
-browser.storage.onChanged.addListener(init)
-
-function redirect(url, type, initiator) {
- if (disableMedium) return;
- if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return;
- if (initiator && (
- [
- ...mediumRedirects.scribe.normal,
- ...mediumRedirects.scribe.tor,
- ...scribeNormalCustomRedirects,
- ...scribeTorCustomRedirects,
- ].includes(initiator.origin))) return;
-
- if (!targets.some(rx => rx.test(url.host))) return;
- if (/^\/($|@[a-zA-Z.]{0,}(\/|)$)/.test(url.pathname)) return;
-
- let instancesList;
- if (mediumProtocol == 'normal') instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects];
- else if (mediumProtocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects];
- if (instancesList.length === 0) return;
-
- const randomInstance = utils.getRandomInstance(instancesList)
- return `${randomInstance}${url.pathname}${url.search}`;
-}
-
-function switchInstance(url) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...mediumRedirects.scribe.tor,
- ...mediumRedirects.scribe.normal,
-
- ...scribeNormalCustomRedirects,
- ...scribeTorCustomRedirects,
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
-
- let instancesList;
- if (mediumProtocol == 'normal') instancesList = [...scribeNormalCustomRedirects, ...scribeNormalRedirectsChecks];
- else if (mediumProtocol == 'tor') instancesList = [...scribeTorCustomRedirects, ...scribeTorRedirectsChecks];
-
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
-
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
-}
-
-function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(data => {
- let dataJson = JSON.parse(data);
- redirects.scribe = dataJson.scribe;
- browser.storage.local.get('cloudflareList',
- async r => {
- scribeNormalRedirectsChecks = [...redirects.scribe.normal];
- for (const instance of r.cloudflareList) {
- let i = scribeNormalRedirectsChecks.indexOf(instance);
- if (i > -1) scribeNormalRedirectsChecks.splice(i, 1);
- }
- await browser.storage.local.set({
- disableMedium: false,
- mediumRedirects: redirects,
-
- scribeNormalRedirectsChecks: scribeNormalRedirectsChecks,
- scribeNormalCustomRedirects: [],
-
- scribeTorRedirectsChecks: [...redirects.scribe.tor],
- scribeTorCustomRedirects: [],
-
- mediumProtocol: "normal",
- })
- resolve();
- })
- })
- })
-}
-
-export default {
- setRedirects,
- redirect,
- switchInstance,
- initDefaults,
-};
diff --git a/src/assets/javascripts/helpers/peertube.js b/src/assets/javascripts/helpers/peertube.js
deleted file mode 100644
index ed15bce9..00000000
--- a/src/assets/javascripts/helpers/peertube.js
+++ /dev/null
@@ -1,155 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-import utils from './utils.js'
-
-let redirects = {
- "simpleertube": {
- "normal": [
- "https://tube.simple-web.org",
- "https://tube.ftild3.org",
- "https://stube.alefvanoon.xyz",
- "https://st.phreedom.club",
- "https://simpleertube.esmailelbob.xyz",
- ],
- "tor": []
- }
-}
-function setRedirects(val) {
- redirects.simpleertube = val;
- browser.storage.local.set({ peertubeTargetsRedirects: redirects })
- for (const item of simpleertubeNormalRedirectsChecks)
- if (!redirects.simpleertube.normal.includes(item)) {
- var index = simpleertubeNormalRedirectsChecks.indexOf(item);
- if (index !== -1) simpleertubeNormalRedirectsChecks.splice(index, 1);
- }
- browser.storage.local.set({ simpleertubeNormalRedirectsChecks })
-
- for (const item of simpleertubeTorRedirectsChecks)
- if (!redirects.simpleertube.normal.includes(item)) {
- var index = simpleertubeTorRedirectsChecks.indexOf(item);
- if (index !== -1) simpleertubeTorRedirectsChecks.splice(index, 1);
- }
- browser.storage.local.set({ simpleertubeTorRedirectsChecks })
-}
-
-let
- disablePeertubeTargets,
- peertubeRedirects,
- simpleertubeNormalRedirectsChecks,
- simpleertubeNormalCustomRedirects,
- simpleertubeTorRedirectsChecks,
- simpleertubeTorCustomRedirects,
- peerTubeTargets,
- peertubeTargetsProtocol;
-
-function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disablePeertubeTargets",
- "peertubeRedirects",
- "simpleertubeNormalRedirectsChecks",
- "simpleertubeNormalCustomRedirects",
- "simpleertubeTorRedirectsChecks",
- "simpleertubeTorCustomRedirects",
- "peerTubeTargets",
- "peertubeTargetsProtocol"
- ],
- r => {
- disablePeertubeTargets = r.disablePeertubeTargets;
- peertubeRedirects = r.peertubeRedirects;
- simpleertubeNormalRedirectsChecks = r.simpleertubeNormalRedirectsChecks;
- simpleertubeNormalCustomRedirects = r.simpleertubeNormalCustomRedirects;
- simpleertubeTorRedirectsChecks = r.simpleertubeTorRedirectsChecks;
- simpleertubeTorCustomRedirects = r.simpleertubeTorCustomRedirects;
- peerTubeTargets = r.peerTubeTargets;
- peertubeTargetsProtocol = r.peertubeTargetsProtocol;
- resolve();
- }
- )
- })
-}
-
-init();
-browser.storage.onChanged.addListener(init)
-
-function all() {
- return [
- ...redirects.simpleertube.normal,
- ...redirects.simpleertube.tor,
- ...simpleertubeNormalCustomRedirects,
- ...simpleertubeTorCustomRedirects,
- ];
-}
-
-function redirect(url, type, initiator) {
- if (disablePeertubeTargets) return;
- if (initiator && (all().includes(initiator.origin) || peerTubeTargets.includes(initiator.host))) return;
- let protocolHost = utils.protocolHost(url);
- if (!peerTubeTargets.includes(protocolHost)) return;
- if (type != "main_frame") return;
-
- let instancesList;
- if (peertubeTargetsProtocol == 'normal') instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects];
- if (peertubeTargetsProtocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects];
- if (instancesList.length === 0) return;
-
- const randomInstance = utils.getRandomInstance(instancesList);
- if (url.host == 'search.joinpeertube.org' || url.host == 'sepiasearch.org') return randomInstance;
- return `${randomInstance}/${url.host}${url.pathname}${url.search}`;
-}
-
-function switchInstance(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
-
- let instancesList;
- if (peertubeTargetsProtocol == 'normal') instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects];
- else if (peertubeTargetsProtocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects];
-
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
-
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
-}
-
-function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- browser.storage.local.get('cloudflareList', async r => {
- simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal];
- for (const instance of r.cloudflareList) {
- let i = simpleertubeNormalRedirectsChecks.indexOf(instance);
- if (i > -1) simpleertubeNormalRedirectsChecks.splice(i, 1);
- }
- await browser.storage.local.set({
- peerTubeTargets: ['https://search.joinpeertube.org', ...dataJson.peertube],
- disablePeertubeTargets: true,
- peertubeRedirects: redirects,
-
- simpleertubeNormalRedirectsChecks: simpleertubeNormalRedirectsChecks,
- simpleertubeNormalCustomRedirects: [],
-
- simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor],
- simpleertubeTorCustomRedirects: [],
-
- peertubeTargetsProtocol: "normal",
- })
- resolve();
- })
- })
- })
-}
-
-export default {
- setRedirects,
- switchInstance,
- redirect,
- initDefaults,
-};
diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js
deleted file mode 100644
index 0735ba64..00000000
--- a/src/assets/javascripts/helpers/reddit.js
+++ /dev/null
@@ -1,378 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-import utils from './utils.js'
-
-const targets = [
- /^https?:\/{2}(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/,
- /^https?:\/{2}(i\.|preview\.)redd\.it/,
-];
-let redirects = {
- "libreddit": {
- "normal": [],
- "tor": []
- },
- "teddit": {
- "normal": [],
- "tor": []
- },
-};
-function setRedirects(val) {
- browser.storage.local.get('cloudflareList', r => {
- redirects = val;
- libredditNormalRedirectsChecks = [...redirects.libreddit.normal];
- tedditNormalRedirectsChecks = [...redirects.teddit.normal]
- for (const instance of r.cloudflareList) {
- const a = libredditNormalRedirectsChecks.indexOf(instance);
- if (a > -1) libredditNormalRedirectsChecks.splice(a, 1);
-
- const b = tedditNormalRedirectsChecks.indexOf(instance);
- if (b > -1) tedditNormalRedirectsChecks.splice(b, 1);
- }
- browser.storage.local.set({
- redditRedirects: redirects,
- libredditNormalRedirectsChecks,
- tedditNormalRedirectsChecks
- })
- })
-}
-
-let
- disableReddit,
- redditFrontend,
- redditRedirects,
- redditProtocol,
- libredditNormalRedirectsChecks,
- libredditNormalCustomRedirects,
- libredditTorRedirectsChecks,
- libredditTorCustomRedirects,
- tedditNormalRedirectsChecks,
- tedditNormalCustomRedirects,
- tedditTorRedirectsChecks,
- tedditTorCustomRedirects;
-
-function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableReddit",
- "redditFrontend",
- "redditRedirects",
- "redditProtocol",
- "libredditNormalRedirectsChecks",
- "libredditNormalCustomRedirects",
- "libredditTorRedirectsChecks",
- "libredditTorCustomRedirects",
- "tedditNormalRedirectsChecks",
- "tedditNormalCustomRedirects",
- "tedditTorRedirectsChecks",
- "tedditTorCustomRedirects",
- ],
- r => {
- disableReddit = r.disableReddit;
- redditFrontend = r.redditFrontend;
- redditRedirects = r.redditRedirects;
- redditProtocol = r.redditProtocol;
- libredditNormalRedirectsChecks = r.libredditNormalRedirectsChecks;
- libredditNormalCustomRedirects = r.libredditNormalCustomRedirects;
- libredditTorRedirectsChecks = r.libredditTorRedirectsChecks;
- libredditTorCustomRedirects = r.libredditTorCustomRedirects;
- tedditNormalRedirectsChecks = r.tedditNormalRedirectsChecks;
- tedditNormalCustomRedirects = r.tedditNormalCustomRedirects;
- tedditTorRedirectsChecks = r.tedditTorRedirectsChecks;
- tedditTorCustomRedirects = r.tedditTorCustomRedirects;
- resolve();
- }
- )
- })
-}
-
-init();
-browser.storage.onChanged.addListener(init)
-
-function initLibredditCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(from);
- if (![
- ...libredditNormalRedirectsChecks,
- ...libredditTorRedirectsChecks,
- ...libredditNormalCustomRedirects,
- ...libredditTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
-
- if (!test) {
- let checkedInstances;
- if (redditProtocol == 'normal') checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
- else if (redditProtocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
- for (const to of checkedInstances) {
- utils.copyCookie('libreddit', from, to, "theme");
- utils.copyCookie('libreddit', from, to, "front_page");
- utils.copyCookie('libreddit', from, to, "layout");
- utils.copyCookie('libreddit', from, to, "wide");
- utils.copyCookie('libreddit', from, to, "post_sort");
- utils.copyCookie('libreddit', from, to, "comment_sort");
- utils.copyCookie('libreddit', from, to, "show_nsfw");
- utils.copyCookie('libreddit', from, to, "autoplay_videos");
- utils.copyCookie('libreddit', from, to, "use_hls");
- utils.copyCookie('libreddit', from, to, "hide_hls_notification");
- }
- }
- resolve(true);
- })
-}
-
-function setLibredditCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableReddit || redditFrontend != 'libreddit' || redditProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (redditProtocol == 'normal') checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]
- else if (redditProtocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('libreddit', to, "theme");
- utils.getCookiesFromStorage('libreddit', to, "front_page");
- utils.getCookiesFromStorage('libreddit', to, "layout");
- utils.getCookiesFromStorage('libreddit', to, "wide");
- utils.getCookiesFromStorage('libreddit', to, "post_sort");
- utils.getCookiesFromStorage('libreddit', to, "comment_sort");
- utils.getCookiesFromStorage('libreddit', to, "show_nsfw");
- utils.getCookiesFromStorage('libreddit', to, "autoplay_videos");
- utils.getCookiesFromStorage('libreddit', to, "use_hls");
- utils.getCookiesFromStorage('libreddit', to, "hide_hls_notification");
- }
- resolve();
- })
-}
-
-function initTedditCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(from);
- if (![
- ...tedditNormalRedirectsChecks,
- ...tedditTorRedirectsChecks,
- ...tedditNormalCustomRedirects,
- ...tedditTorCustomRedirects,
- ].includes(protocolHost)) resolve();
-
- if (!test) {
- let checkedInstances;
- if (redditProtocol == 'normal') checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]
- else if (redditProtocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.copyCookie('teddit', from, to, 'collapse_child_comments')
- utils.copyCookie('teddit', from, to, 'domain_instagram')
- utils.copyCookie('teddit', from, to, 'domain_twitter')
- utils.copyCookie('teddit', from, to, 'domain_youtube')
- utils.copyCookie('teddit', from, to, 'flairs')
- utils.copyCookie('teddit', from, to, 'highlight_controversial')
- utils.copyCookie('teddit', from, to, 'nsfw_enabled')
- utils.copyCookie('teddit', from, to, 'post_media_max_height')
- utils.copyCookie('teddit', from, to, 'show_upvoted_percentage')
- utils.copyCookie('teddit', from, to, 'show_upvotes')
- utils.copyCookie('teddit', from, to, 'theme')
- utils.copyCookie('teddit', from, to, 'videos_muted')
- }
- }
- resolve(true);
- })
-}
-
-function setTedditCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableReddit || redditFrontend != 'teddit' || redditProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (redditProtocol == 'normal') checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]
- else if (redditProtocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('teddit', to, 'collapse_child_comments')
- utils.getCookiesFromStorage('teddit', to, 'domain_instagram')
- utils.getCookiesFromStorage('teddit', to, 'domain_twitter')
- utils.getCookiesFromStorage('teddit', to, 'domain_youtube')
- utils.getCookiesFromStorage('teddit', to, 'flairs')
- utils.getCookiesFromStorage('teddit', to, 'highlight_controversial')
- utils.getCookiesFromStorage('teddit', to, 'nsfw_enabled')
- utils.getCookiesFromStorage('teddit', to, 'post_media_max_height')
- utils.getCookiesFromStorage('teddit', to, 'show_upvoted_percentage')
- utils.getCookiesFromStorage('teddit', to, 'show_upvotes')
- utils.getCookiesFromStorage('teddit', to, 'theme')
- utils.getCookiesFromStorage('teddit', to, 'videos_muted')
- }
- resolve();
- })
-}
-
-function all() {
- return [
- ...redditRedirects.libreddit.normal,
- ...redditRedirects.libreddit.tor,
- ...redditRedirects.teddit.normal,
- ...redditRedirects.teddit.tor,
- ...libredditNormalCustomRedirects,
- ...libredditTorCustomRedirects,
- ...tedditNormalCustomRedirects,
- ...tedditTorCustomRedirects,
- ];
-}
-
-// https://libreddit.exonip.de/vid/1mq8d0ma3yk81/720.mp4
-// https://libreddit.exonip.de/img/4v3t1vgvrzk81.png
-
-// https://teddit.net/vids/1mq8d0ma3yk81.mp4
-// https://teddit.net/pics/w:null_4v3t1vgvrzk81.png
-
-
-// redd.it/t5379n
-// https://v.redd.it/z08avb339n801/DASH_1_2_M
-// https://i.redd.it/bfkhs659tzk81.jpg
-function redirect(url, type, initiator) {
- if (disableReddit) return;
- if (!targets.some(rx => rx.test(url.href))) return;
- if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
- const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/;
- if (type !== "main_frame" || url.pathname.match(bypassPaths)) return;
-
- let libredditInstancesList;
- let tedditInstancesList;
- if (redditProtocol == 'normal') {
- libredditInstancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
- tedditInstancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
- } else if (redditProtocol == 'tor') {
- libredditInstancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
- tedditInstancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
- }
-
- if (url.host === "i.redd.it") {
- if (redditFrontend == 'teddit') {
- if (tedditInstancesList.length === 0) return;
- let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList);
- return `${tedditRandomInstance}/pics/w:null_${url.pathname.substring(1)}${url.reddit}`;
- }
- if (redditFrontend == 'libreddit') {
- if (libredditInstancesList.length === 0) return;
- let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList);
- return `${libredditRandomInstance}/img${url.pathname}${url.reddit}`
- }
- }
- else if (url.host === "redd.it") {
- if (redditFrontend == 'libreddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
- if (libredditInstancesList.length === 0) return;
- let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList);
- // https://redd.it/foo => https://libredd.it/comments/foo
- return `${libredditRandomInstance}/comments${url.pathname}${url.reddit}`;
- }
- if (redditFrontend == 'teddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
- if (tedditInstancesList.length === 0) return;
- let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList);
- // https://redd.it/foo => https://teddit.net/comments/foo
- return `${tedditRandomInstance}/comments${url.pathname}${url.reddit}`
- }
- }
- else if (url.host === 'preview.redd.it') {
- if (redditFrontend == 'teddit') return;
- if (redditFrontend == 'libreddit') {
- if (libredditInstancesList.length === 0) return;
- const libredditRandomInstance = utils.getRandomInstance(libredditInstancesList);
- return `${libredditRandomInstance}/preview/pre${url.pathname}${url.reddit}`;
- }
- }
-
- let randomInstance;
- if (redditFrontend == 'libreddit') {
- if (libredditInstancesList.length === 0) return;
- randomInstance = utils.getRandomInstance(libredditInstancesList);
- }
- if (redditFrontend == 'teddit') {
- if (tedditInstancesList.length === 0) return;
- randomInstance = utils.getRandomInstance(tedditInstancesList);
- }
- return `${randomInstance}${url.pathname}${url.search}`;
-}
-
-function switchInstance(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (redditFrontend == 'libreddit') {
- if (redditProtocol == 'normal') instancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
- else if (redditProtocol == 'tor') instancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
- if ([
- ...redditRedirects.teddit.normal,
- ...redditRedirects.teddit.tor
- ].includes(protocolHost)) url.pathname = url.pathname.replace("/pics/w:null_", "/img/");
- }
- else if (redditFrontend == 'teddit') {
- if (redditProtocol == 'normal') instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
- else if (redditProtocol == 'tor') instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
- if ([
- ...redditRedirects.libreddit.normal,
- ...redditRedirects.libreddit.tor
- ].includes(protocolHost)
- ) url.pathname = url.pathname.replace("/img/", "/pics/w:null_");
- }
-
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
-
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.reddit}`);
- })
-}
-
-function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- redirects.teddit = dataJson.teddit;
- redirects.libreddit = dataJson.libreddit;
- browser.storage.local.get('cloudflareList', async r => {
- libredditNormalRedirectsChecks = [...redirects.libreddit.normal];
- tedditNormalRedirectsChecks = [...redirects.teddit.normal]
- for (const instance of r.cloudflareList) {
- let i;
-
- i = libredditNormalRedirectsChecks.indexOf(instance);
- if (i > -1) libredditNormalRedirectsChecks.splice(i, 1);
-
- i = tedditNormalRedirectsChecks.indexOf(instance);
- if (i > -1) tedditNormalRedirectsChecks.splice(i, 1);
- }
- await browser.storage.local.set({
- disableReddit: false,
- redditProtocol: 'normal',
- redditFrontend: 'libreddit',
- redditRedirects: redirects,
-
- libredditNormalRedirectsChecks: libredditNormalRedirectsChecks,
- libredditNormalCustomRedirects: [],
-
- libredditTorRedirectsChecks: [...redirects.libreddit.tor],
- libredditTorCustomRedirects: [],
-
- tedditNormalRedirectsChecks: tedditNormalRedirectsChecks,
- tedditNormalCustomRedirects: [],
-
- tedditTorRedirectsChecks: [...redirects.teddit.tor],
- tedditTorCustomRedirects: [],
- });
- resolve();
- });
- });
- });
-}
-
-export default {
- setRedirects,
- initLibredditCookies,
- setLibredditCookies,
- initTedditCookies,
- setTedditCookies,
-
- redirect,
- initDefaults,
- switchInstance,
-};
diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js
deleted file mode 100644
index b32a8141..00000000
--- a/src/assets/javascripts/helpers/search.js
+++ /dev/null
@@ -1,470 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-import utils from './utils.js'
-
-const targets = [
- /^https?:\/{2}(www\.|search\.|)google(\.[a-z]{2,3}){1,2}(\/search(\?.*|$)|\/$)/,
- /^https?:\/{2}(www\.|www2\.|)bing\.com/,
- /^https?:\/{2}yandex(\.[a-z]{2,3}){1,2}/,
- /^https?:\/{2}search\.libredirect\.invalid/,
-];
-
-let redirects = {
- "searx": {
- "normal": [],
- "tor": [],
- "i2p": []
- },
- "searxng": {
- "normal": [],
- "tor": [],
- "i2p": []
- },
- "whoogle": {
- "normal": [],
- "tor": [],
- "i2p": []
- }
-};
-
-function setRedirects(val) {
- browser.storage.local.get('cloudflareList', r => {
- redirects = val;
- searxNormalRedirectsChecks = [...redirects.searx.normal];
- searxngNormalRedirectsChecks = [...redirects.searxng.normal];
- whoogleNormalRedirectsChecks = [...redirects.whoogle.normal];
- for (const instance of r.cloudflareList) {
- const a = searxNormalRedirectsChecks.indexOf(instance);
- if (a > -1) searxNormalRedirectsChecks.splice(a, 1);
-
- const b = searxngNormalRedirectsChecks.indexOf(instance);
- if (b > -1) searxngNormalRedirectsChecks.splice(b, 1);
-
- const c = whoogleNormalRedirectsChecks.indexOf(instance);
- if (c > -1) whoogleNormalRedirectsChecks.splice(c, 1);
- }
- browser.storage.local.set({
- searchRedirects: redirects,
- searxNormalRedirectsChecks,
- searxngNormalRedirectsChecks,
- whoogleNormalRedirectsChecks,
- });
- })
-}
-
-let
- disableSearch,
- searchFrontend,
- searchRedirects,
- searchProtocol,
- whoogleNormalRedirectsChecks,
- whoogleNormalCustomRedirects,
- whoogleTorRedirectsChecks,
- whoogleTorCustomRedirects,
- whoogleI2pRedirectsChecks,
- whoogleI2pCustomRedirects,
- searxNormalRedirectsChecks,
- searxNormalCustomRedirects,
- searxTorRedirectsChecks,
- searxTorCustomRedirects,
- searxI2pRedirectsChecks,
- searxI2pCustomRedirects,
- searxngNormalRedirectsChecks,
- searxngNormalCustomRedirects,
- searxngTorRedirectsChecks,
- searxngTorCustomRedirects,
- searxngI2pRedirectsChecks,
- searxngI2pCustomRedirects;
-
-function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableSearch",
- "searchFrontend",
- "searchRedirects",
- "searchProtocol",
- "whoogleNormalRedirectsChecks",
- "whoogleNormalCustomRedirects",
- "whoogleTorRedirectsChecks",
- "whoogleTorCustomRedirects",
- "whoogleI2pRedirectsChecks",
- "whoogleI2pCustomRedirects",
- "searxNormalRedirectsChecks",
- "searxNormalCustomRedirects",
- "searxTorRedirectsChecks",
- "searxTorCustomRedirects",
- "searxI2pRedirectsChecks",
- "searxI2pCustomRedirects",
- "searxngNormalRedirectsChecks",
- "searxngNormalCustomRedirects",
- "searxngTorRedirectsChecks",
- "searxngTorCustomRedirects",
- "searxngI2pRedirectsChecks",
- "searxngI2pCustomRedirects",
- ],
- r => {
- disableSearch = r.disableSearch;
- searchFrontend = r.searchFrontend;
- searchRedirects = r.searchRedirects;
- searchProtocol = r.searchProtocol;
- whoogleNormalRedirectsChecks = r.whoogleNormalRedirectsChecks;
- whoogleNormalCustomRedirects = r.whoogleNormalCustomRedirects;
- whoogleTorRedirectsChecks = r.whoogleTorRedirectsChecks;
- whoogleTorCustomRedirects = r.whoogleTorCustomRedirects;
- whoogleI2pRedirectsChecks = r.whoogleI2pRedirectsChecks;
- whoogleI2pCustomRedirects = r.whoogleI2pCustomRedirects;
- searxNormalRedirectsChecks = r.searxNormalRedirectsChecks;
- searxNormalCustomRedirects = r.searxNormalCustomRedirects;
- searxTorRedirectsChecks = r.searxTorRedirectsChecks;
- searxTorCustomRedirects = r.searxTorCustomRedirects;
- searxI2pRedirectsChecks = r.searxI2pRedirectsChecks;
- searxI2pCustomRedirects = r.searxI2pCustomRedirects;
- searxngNormalRedirectsChecks = r.searxngNormalRedirectsChecks;
- searxngNormalCustomRedirects = r.searxngNormalCustomRedirects;
- searxngTorRedirectsChecks = r.searxngTorRedirectsChecks;
- searxngTorCustomRedirects = r.searxngTorCustomRedirects;
- searxngI2pRedirectsChecks = r.searxngI2pRedirectsChecks;
- searxngI2pCustomRedirects = r.searxngI2pCustomRedirects;
- resolve();
- }
- )
- })
-}
-
-init();
-browser.storage.onChanged.addListener(init)
-
-function initSearxCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(from);
- if (![
- ...searxNormalRedirectsChecks,
- ...searxNormalCustomRedirects,
- ...searxTorRedirectsChecks,
- ...searxTorCustomRedirects,
- ...searxI2pRedirectsChecks,
- ...searxI2pCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
-
- if (!test) {
- let checkedInstances;
- if (searchProtocol == 'normal') checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
- else if (searchProtocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
- else if (searchProtocol == 'i2p') checkedInstances = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects];
- for (const to of checkedInstances) {
- utils.copyCookie('searx', from, to, 'advanced_search');
- utils.copyCookie('searx', from, to, 'autocomplete');
- utils.copyCookie('searx', from, to, 'categories');
- utils.copyCookie('searx', from, to, 'disabled_engines');
- utils.copyCookie('searx', from, to, 'disabled_plugins');
- utils.copyCookie('searx', from, to, 'doi_resolver');
- utils.copyCookie('searx', from, to, 'enabled_engines');
- utils.copyCookie('searx', from, to, 'enabled_plugins');
- utils.copyCookie('searx', from, to, 'image_proxy');
- utils.copyCookie('searx', from, to, 'language');
- utils.copyCookie('searx', from, to, 'locale');
- utils.copyCookie('searx', from, to, 'method');
- utils.copyCookie('searx', from, to, 'oscar-style');
- utils.copyCookie('searx', from, to, 'results_on_new_tab');
- utils.copyCookie('searx', from, to, 'safesearch');
- utils.copyCookie('searx', from, to, 'theme');
- utils.copyCookie('searx', from, to, 'tokens');
- }
- }
- resolve(true);
- })
-}
-
-function setSearxCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableSearch || searchFrontend != 'searx') { resolve(); return; }
- let checkedInstances;
- if (searchProtocol == 'normal') checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]
- else if (searchProtocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('searx', to, 'advanced_search');
- utils.getCookiesFromStorage('searx', to, 'autocomplete');
- utils.getCookiesFromStorage('searx', to, 'categories');
- utils.getCookiesFromStorage('searx', to, 'disabled_engines');
- utils.getCookiesFromStorage('searx', to, 'disabled_plugins');
- utils.getCookiesFromStorage('searx', to, 'doi_resolver');
- utils.getCookiesFromStorage('searx', to, 'enabled_engines');
- utils.getCookiesFromStorage('searx', to, 'enabled_plugins');
- utils.getCookiesFromStorage('searx', to, 'image_proxy');
- utils.getCookiesFromStorage('searx', to, 'language');
- utils.getCookiesFromStorage('searx', to, 'locale');
- utils.getCookiesFromStorage('searx', to, 'method');
- utils.getCookiesFromStorage('searx', to, 'oscar-style');
- utils.getCookiesFromStorage('searx', to, 'results_on_new_tab');
- utils.getCookiesFromStorage('searx', to, 'safesearch');
- utils.getCookiesFromStorage('searx', to, 'theme');
- utils.getCookiesFromStorage('searx', to, 'tokens');
- }
- resolve();
- })
-}
-
-function initSearxngCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(from);
- if (![
- ...searxngNormalRedirectsChecks,
- ...searxngNormalCustomRedirects,
- ...searxngTorRedirectsChecks,
- ...searxngTorCustomRedirects,
- ...searxngI2pRedirectsChecks,
- ...searxngI2pCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
-
- if (!test) {
- let checkedInstances;
- if (searchProtocol == 'normal') checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
- else if (searchProtocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
- else if (searchProtocol == 'i2p') checkedInstances = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects];
- for (const to of checkedInstances) {
- utils.copyCookie('searxng', from, to, 'autocomplete');
- utils.copyCookie('searxng', from, to, 'categories');
- utils.copyCookie('searxng', from, to, 'disabled_engines');
- utils.copyCookie('searxng', from, to, 'disabled_plugins');
- utils.copyCookie('searxng', from, to, 'doi_resolver');
- utils.copyCookie('searxng', from, to, 'enabled_plugins');
- utils.copyCookie('searxng', from, to, 'enabled_engines');
- utils.copyCookie('searxng', from, to, 'image_proxy');
- utils.copyCookie('searxng', from, to, 'infinite_scroll');
- utils.copyCookie('searxng', from, to, 'language');
- utils.copyCookie('searxng', from, to, 'locale');
- utils.copyCookie('searxng', from, to, 'maintab');
- utils.copyCookie('searxng', from, to, 'method');
- utils.copyCookie('searxng', from, to, 'query_in_title');
- utils.copyCookie('searxng', from, to, 'results_on_new_tab');
- utils.copyCookie('searxng', from, to, 'safesearch');
- utils.copyCookie('searxng', from, to, 'simple_style');
- utils.copyCookie('searxng', from, to, 'theme');
- utils.copyCookie('searxng', from, to, 'tokens');
- }
- }
- resolve(true);
- })
-}
-
-function setSearxngCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableSearch || searchFrontend != 'searxng', searchProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (searchProtocol == 'normal') checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]
- else if (searchProtocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('searxng', to, 'autocomplete');
- utils.getCookiesFromStorage('searxng', to, 'categories');
- utils.getCookiesFromStorage('searxng', to, 'disabled_engines');
- utils.getCookiesFromStorage('searxng', to, 'disabled_plugins');
- utils.getCookiesFromStorage('searxng', to, 'doi_resolver');
- utils.getCookiesFromStorage('searxng', to, 'enabled_plugins');
- utils.getCookiesFromStorage('searxng', to, 'enabled_engines');
- utils.getCookiesFromStorage('searxng', to, 'image_proxy');
- utils.getCookiesFromStorage('searxng', to, 'infinite_scroll');
- utils.getCookiesFromStorage('searxng', to, 'language');
- utils.getCookiesFromStorage('searxng', to, 'locale');
- utils.getCookiesFromStorage('searxng', to, 'maintab');
- utils.getCookiesFromStorage('searxng', to, 'method');
- utils.getCookiesFromStorage('searxng', to, 'query_in_title');
- utils.getCookiesFromStorage('searxng', to, 'results_on_new_tab');
- utils.getCookiesFromStorage('searxng', to, 'safesearch');
- utils.getCookiesFromStorage('searxng', to, 'simple_style');
- utils.getCookiesFromStorage('searxng', to, 'theme');
- utils.getCookiesFromStorage('searxng', to, 'tokens');
- }
- resolve();
- })
-}
-
-
-function redirect(url) {
- if (disableSearch) return;
- if (!targets.some(rx => rx.test(url.href))) return;
- if (url.searchParams.has('tbm')) return;
- if (url.hostname.includes('google') && !url.searchParams.has('q') && url.pathname != '/') return;
- let randomInstance;
- let path;
- if (searchFrontend == 'searx') {
- let instancesList;
- if (searchProtocol == 'normal') instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
- else if (searchProtocol == 'tor') instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
- else if (searchProtocol == 'i2p') instancesList = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects];
- if (instancesList.length === 0) return;
- randomInstance = utils.getRandomInstance(instancesList)
- path = "/";
- }
- else if (searchFrontend == 'searxng') {
- let instancesList;
- if (searchProtocol == 'normal') instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
- else if (searchProtocol == 'tor') instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
- else if (searchProtocol == 'i2p') instancesList = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects];
- if (instancesList.length === 0) return;
- randomInstance = utils.getRandomInstance(instancesList)
- path = "/";
- }
- else if (searchFrontend == 'whoogle') {
- let instancesList;
- if (searchProtocol == 'normal') instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects];
- if (searchProtocol == 'tor') instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects];
- if (searchProtocol == 'i2p') instancesList = [...whoogleI2pRedirectsChecks, ...whoogleI2pCustomRedirects];
- if (instancesList.length === 0) return;
- randomInstance = utils.getRandomInstance(instancesList)
- path = "/search";
- }
-
- if (
- ((url.hostname.includes('google') || url.hostname.includes('bing')) && !url.searchParams.has('q')) ||
- (url.hostname.includes('yandex') && !url.searchParams.has('text'))
- ) path = '/';
-
- let searchQuery = "";
- if (
- (
- url.hostname.includes('google') ||
- url.hostname.includes('bing') ||
- url.hostname.includes('search.libredirect.invalid')
- ) &&
- url.searchParams.has('q')
- ) searchQuery = `?q=${url.searchParams.get('q')}`;
- if (url.hostname.includes('yandex') && url.searchParams.has('text')) searchQuery = `?q=${url.searchParams.get('text')}`;
-
- return `${randomInstance}${path}${searchQuery}`;
-}
-
-function switchInstance(url) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(url);
- if (![
- ...searchRedirects.searx.normal,
- ...searchRedirects.searx.tor,
- ...searchRedirects.searx.i2p,
-
- ...searchRedirects.searxng.normal,
- ...searchRedirects.searxng.tor,
- ...searchRedirects.searxng.i2p,
-
- ...searchRedirects.whoogle.normal,
- ...searchRedirects.whoogle.tor,
- ...searchRedirects.whoogle.i2p,
-
- ...searxNormalCustomRedirects,
- ...searxTorCustomRedirects,
- ...searxI2pCustomRedirects,
-
- ...searxngNormalCustomRedirects,
- ...searxngTorCustomRedirects,
- ...searxngI2pCustomRedirects,
-
- ...whoogleNormalCustomRedirects,
- ...whoogleTorCustomRedirects,
- ...whoogleI2pCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
-
- let instancesList;
- if (searchProtocol == 'normal') {
- if (searchFrontend == 'searx') instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
- else if (searchFrontend == 'searxng') instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
- else if (searchFrontend == 'whoogle') instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects];
- }
- else if (searchProtocol == 'tor') {
- if (searchFrontend == 'searx') instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
- else if (searchFrontend == 'searxng') instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
- else if (searchFrontend == 'whoogle') instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects];
- }
- else if (searchProtocol == 'i2p') {
- if (searchFrontend == 'searx') instancesList = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects];
- else if (searchFrontend == 'searxng') instancesList = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects];
- else if (searchFrontend == 'whoogle') instancesList = [...whoogleI2pRedirectsChecks, ...whoogleI2pCustomRedirects];
- }
-
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
-
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
-}
-
-function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- redirects.searx = dataJson.searx;
- redirects.searxng = dataJson.searxng;
- redirects.whoogle = dataJson.whoogle;
-
- browser.storage.local.get('cloudflareList', async r => {
- whoogleNormalRedirectsChecks = [...redirects.whoogle.normal];
- searxNormalRedirectsChecks = [...redirects.searx.normal];
- searxngNormalRedirectsChecks = [...redirects.searxng.normal];
- for (const instance of r.cloudflareList) {
- let i;
-
- i = whoogleNormalRedirectsChecks.indexOf(instance);
- if (i > -1) whoogleNormalRedirectsChecks.splice(i, 1);
-
- i = searxNormalRedirectsChecks.indexOf(instance);
- if (i > -1) searxNormalRedirectsChecks.splice(i, 1);
-
- i = searxngNormalRedirectsChecks.indexOf(instance);
- if (i > -1) searxngNormalRedirectsChecks.splice(i, 1);
- }
- await browser.storage.local.set({
- disableSearch: false,
- searchFrontend: 'searxng',
- searchRedirects: redirects,
- searxngCustomSettings: false,
- searchProtocol: 'normal',
-
- whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks,
- whoogleNormalCustomRedirects: [],
-
- whoogleTorRedirectsChecks: [...redirects.whoogle.tor],
- whoogleTorCustomRedirects: [],
-
- whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p],
- whoogleI2pCustomRedirects: [],
-
- searxNormalRedirectsChecks: searxNormalRedirectsChecks,
- searxNormalCustomRedirects: [],
-
- searxTorRedirectsChecks: [...redirects.searx.tor],
- searxTorCustomRedirects: [],
-
- searxI2pRedirectsChecks: [...redirects.searx.i2p],
- searxI2pCustomRedirects: [],
-
- searxngNormalRedirectsChecks: searxngNormalRedirectsChecks,
- searxngNormalCustomRedirects: [],
-
- searxngTorRedirectsChecks: [...redirects.searxng.tor],
- searxngTorCustomRedirects: [],
-
- searxngI2pRedirectsChecks: [...redirects.searxng.i2p],
- searxngI2pCustomRedirects: [],
- })
- resolve();
- })
- })
- })
-}
-
-export default {
- setRedirects,
- initSearxCookies,
- setSearxCookies,
- initSearxngCookies,
- setSearxngCookies,
- redirect,
- initDefaults,
- switchInstance,
-};
diff --git a/src/assets/javascripts/helpers/sendTargets.js b/src/assets/javascripts/helpers/sendTargets.js
deleted file mode 100644
index a3e87268..00000000
--- a/src/assets/javascripts/helpers/sendTargets.js
+++ /dev/null
@@ -1,149 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-import utils from './utils.js'
-
-const targets = [
- /^https?:\/{2}send\.libredirect\.invalid\/$/,
- /^ https ?: \/\/send\.firefox\.com\/$/,
- /^https?:\/{2}sendfiles\.online\/$/
-];
-
-let redirects = {
- "send": {
- "normal": [],
- "tor": []
- }
-}
-function setRedirects(val) {
- browser.storage.local.get('cloudflareList', r => {
- redirects.send = val;
- sendNormalRedirectsChecks = [...redirects.send.normal];
- for (const instance of r.cloudflareList) {
- const a = sendNormalRedirectsChecks.indexOf(instance);
- if (a > -1) sendNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- sendTargetsRedirects: redirects,
- sendNormalRedirectsChecks,
- })
- })
-}
-
-let
- disableSendTarget,
- sendTargetsRedirects,
- sendNormalRedirectsChecks,
- sendNormalCustomRedirects,
- sendTorRedirectsChecks,
- sendTorCustomRedirects,
- sendTargetsProtocol;
-
-function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableSendTarget",
- "sendTargetsRedirects",
- "sendTargetsProtocol",
- "sendNormalRedirectsChecks",
- "sendNormalCustomRedirects",
- "sendTorRedirectsChecks",
- "sendTorCustomRedirects",
- ],
- r => {
- disableSendTarget = r.disableSendTarget;
- sendTargetsRedirects = r.sendTargetsRedirects;
- sendNormalRedirectsChecks = r.sendNormalRedirectsChecks;
- sendNormalCustomRedirects = r.sendNormalCustomRedirects;
- sendTorRedirectsChecks = r.sendTorRedirectsChecks;
- sendTorCustomRedirects = r.sendTorCustomRedirects;
- sendTargetsProtocol = r.sendTargetsProtocol;
- resolve();
- }
- )
- })
-}
-
-init();
-browser.storage.onChanged.addListener(init)
-
-function all() {
- return [
- ...sendTargetsRedirects.send.normal,
- ...sendTargetsRedirects.send.tor,
- ...sendNormalCustomRedirects,
- ...sendTorRedirectsChecks,
- ...sendTorCustomRedirects,
- ];
-}
-
-function switchInstance(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- if (url.pathname != '/') { resolve(); return; }
-
- let instancesList;
- if (sendTargetsProtocol == 'normal') instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects];
- else if (sendTargetsProtocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects];
-
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
-
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
-}
-
-function redirect(url, type, initiator) {
- if (disableSendTarget) return;
- if (type != "main_frame") return;
- if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return;
- if (!targets.some(rx => rx.test(url.href))) return;
-
- let instancesList;
- if (sendTargetsProtocol == 'normal') instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects];
- if (sendTargetsProtocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects];
- if (instancesList.length === 0) return;
-
- const randomInstance = utils.getRandomInstance(instancesList);
- return randomInstance;
-}
-
-function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- redirects.send = dataJson.send;
- browser.storage.local.get('cloudflareList', async r => {
- sendNormalRedirectsChecks = [...redirects.send.normal];
- for (const instance of r.cloudflareList) {
- let i = sendNormalRedirectsChecks.indexOf(instance);
- if (i > -1) sendNormalRedirectsChecks.splice(i, 1);
- }
- await browser.storage.local.set({
- disableSendTarget: false,
- sendTargetsRedirects: redirects,
-
- sendNormalRedirectsChecks: sendNormalRedirectsChecks,
- sendNormalCustomRedirects: [],
-
- sendTorRedirectsChecks: [...redirects.send.tor],
- sendTorCustomRedirects: [],
-
- sendTargetsProtocol: "normal",
- })
- resolve();
- })
- })
- })
-}
-
-export default {
- setRedirects,
- redirect,
- switchInstance,
- initDefaults,
-};
diff --git a/src/assets/javascripts/helpers/tiktok.js b/src/assets/javascripts/helpers/tiktok.js
deleted file mode 100644
index 750744e6..00000000
--- a/src/assets/javascripts/helpers/tiktok.js
+++ /dev/null
@@ -1,175 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-import utils from './utils.js'
-
-const targets = [
- /^https?:\/{2}(www\.|)tiktok\.com.*/
-];
-
-let redirects = {
- "proxiTok": {
- "normal": [],
- "tor": []
- }
-}
-function setRedirects(val) {
- browser.storage.local.get('cloudflareList', r => {
- redirects.proxiTok = val;
- proxiTokNormalRedirectsChecks = [...redirects.proxiTok.normal];
- for (const instance of r.cloudflareList) {
- const a = proxiTokNormalRedirectsChecks.indexOf(instance);
- if (a > -1) proxiTokNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- tiktokRedirects: redirects,
- proxiTokNormalRedirectsChecks
- })
- })
-}
-
-function initProxiTokCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(from);
- if (![
- ...proxiTokNormalRedirectsChecks,
- ...proxiTokNormalCustomRedirects,
- ...proxiTokTorRedirectsChecks,
- ...proxiTokTorCustomRedirects,
- ].includes(protocolHost)) resolve();
-
- if (!test) {
- let checkedInstances;
- if (tiktokProtocol == 'normal') checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]
- else if (tiktokProtocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.copyCookie('proxitok', from, to, 'theme');
- utils.copyCookie('proxitok', from, to, 'api-legacy');
- }
- }
- resolve(true);
- })
-}
-
-function setProxiTokCookies() {
- return new Promise(resolve => {
- if (disableTiktok || tiktokProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (tiktokProtocol == 'normal') checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]
- else if (tiktokProtocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('proxitok', to, 'theme');
- utils.getCookiesFromStorage('proxitok', to, 'api-legacy');
- }
- resolve();
- })
-}
-
-let
- disableTiktok,
- tiktokProtocol,
- tiktokRedirects,
- proxiTokNormalRedirectsChecks,
- proxiTokNormalCustomRedirects,
- proxiTokTorRedirectsChecks,
- proxiTokTorCustomRedirects;
-
-function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableTiktok",
- "tiktokProtocol",
- "tiktokRedirects",
- "proxiTokNormalRedirectsChecks",
- "proxiTokNormalCustomRedirects",
- "proxiTokTorRedirectsChecks",
- "proxiTokTorCustomRedirects",
- ],
- r => {
- disableTiktok = r.disableTiktok;
- tiktokProtocol = r.tiktokProtocol;
- tiktokRedirects = r.tiktokRedirects;
- proxiTokNormalRedirectsChecks = r.proxiTokNormalRedirectsChecks;
- proxiTokNormalCustomRedirects = r.proxiTokNormalCustomRedirects;
- proxiTokTorRedirectsChecks = r.proxiTokTorRedirectsChecks;
- proxiTokTorCustomRedirects = r.proxiTokTorCustomRedirects;
- resolve();
- }
- )
- })
-}
-
-init();
-browser.storage.onChanged.addListener(init)
-
-// https://www.tiktok.com/@keysikaspol/video/7061265241887345946
-// https://www.tiktok.com/@keysikaspol
-function redirect(url, type, initiator) {
- if (disableTiktok) return;
- if (type != "main_frame") return;
- const all = [
- ...tiktokRedirects.proxiTok.normal,
- ...proxiTokNormalCustomRedirects
- ];
- if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return;
- if (!targets.some(rx => rx.test(url.href))) return;
-
- let instancesList;
- if (tiktokProtocol == 'normal') instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects];
- if (tiktokProtocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects];
- if (instancesList.length === 0) return;
-
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}`;
-}
-
-function reverse(url) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...tiktokRedirects.proxiTok.normal,
- ...tiktokRedirects.proxiTok.tor,
- ...proxiTokNormalCustomRedirects,
- ...proxiTokTorCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
-
- resolve(`https://tiktok.com${url.pathname}${url.search}`);
- })
-}
-
-function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- redirects.proxiTok = dataJson.proxiTok;
- await browser.storage.local.set({
- disableTiktok: false,
- tiktokProtocol: "normal",
-
- tiktokRedirects: redirects,
-
- proxiTokNormalRedirectsChecks: [...redirects.proxiTok.normal],
- proxiTokNormalCustomRedirects: [],
-
- proxiTokTorRedirectsChecks: [...redirects.proxiTok.tor],
- proxiTokTorCustomRedirects: [],
- });
- resolve();
- });
- })
-}
-
-export default {
- setRedirects,
-
- redirect,
- reverse,
-
- initProxiTokCookies,
- setProxiTokCookies,
-
- initDefaults
-};
diff --git a/src/assets/javascripts/helpers/translate/get_lingva_preferences.js b/src/assets/javascripts/helpers/translate/get_lingva_preferences.js
deleted file mode 100644
index f04ea3dc..00000000
--- a/src/assets/javascripts/helpers/translate/get_lingva_preferences.js
+++ /dev/null
@@ -1,10 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-browser.storage.local.set(
- {
- ['lingva_lingva_chakra-ui-color-mode']: localStorage.getItem('chakra-ui-color-mode'),
- lingva_lingva_isauto: localStorage.getItem('isauto'),
- lingva_lingva_source: localStorage.getItem('source'),
- lingva_lingva_target: localStorage.getItem('target'),
- }
-)
diff --git a/src/assets/javascripts/helpers/translate/set_lingva_preferences.js b/src/assets/javascripts/helpers/translate/set_lingva_preferences.js
deleted file mode 100644
index 01a3b85e..00000000
--- a/src/assets/javascripts/helpers/translate/set_lingva_preferences.js
+++ /dev/null
@@ -1,19 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-browser.storage.local.get(
- [
- "lingva_chakra-ui-color-mode",
- "lingva_isauto",
- "lingva_source",
- "lingva_target",
- ],
- r => {
- if (r['lingva_chakra-ui-color-mode'] !== undefined) localStorage.setItem('chakra-ui-color-mode', r['lingva_chakra-ui-color-mode']);
- if (r.lingva_isauto !== undefined) localStorage.setItem('isauto', r.lingva_isauto);
- console.log('r.lingva_isauto', r.lingva_isauto, localStorage.getItem('isauto'))
- if (r.lingva_source !== undefined) localStorage.setItem('source', r.lingva_source);
- if (r.lingva_target !== undefined) localStorage.setItem('target', r.lingva_target);
-
- window.close();
- }
-)
diff --git a/src/assets/javascripts/helpers/translate/translate.js b/src/assets/javascripts/helpers/translate/translate.js
deleted file mode 100644
index 74400040..00000000
--- a/src/assets/javascripts/helpers/translate/translate.js
+++ /dev/null
@@ -1,295 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-import utils from '../utils.js'
-
-const targets = [
- /^https?:\/{2}translate\.google(\.[a-z]{2,3}){1,2}\//,
-];
-
-let redirects = {
- "simplyTranslate": {
- "normal": [],
- "tor": []
- },
- "lingva": {
- "normal": [],
- "tor": []
- }
-};
-
-let
- translateDisable,
- translateFrontend,
- translateProtocol,
- translateRedirects,
- simplyTranslateNormalRedirectsChecks,
- simplyTranslateNormalCustomRedirects,
- simplyTranslateTorRedirectsChecks,
- simplyTranslateTorCustomRedirects,
- lingvaNormalRedirectsChecks,
- lingvaNormalCustomRedirects,
- lingvaTorRedirectsChecks,
- lingvaTorCustomRedirects;
-
-function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "translateDisable",
- "translateFrontend",
- "translateProtocol",
- "translateRedirects",
-
- "simplyTranslateNormalRedirectsChecks",
- "simplyTranslateNormalCustomRedirects",
- "simplyTranslateTorRedirectsChecks",
- "simplyTranslateTorCustomRedirects",
-
- "lingvaNormalRedirectsChecks",
- "lingvaNormalCustomRedirects",
- "lingvaTorRedirectsChecks",
- "lingvaTorCustomRedirects",
- ],
- r => {
- translateDisable = r.translateDisable;
- translateFrontend = r.translateFrontend;
- translateProtocol = r.translateProtocol;
- translateRedirects = r.translateRedirects;
- simplyTranslateNormalRedirectsChecks = r.simplyTranslateNormalRedirectsChecks;
- simplyTranslateNormalCustomRedirects = r.simplyTranslateNormalCustomRedirects;
- simplyTranslateTorRedirectsChecks = r.simplyTranslateTorRedirectsChecks;
- simplyTranslateTorCustomRedirects = r.simplyTranslateTorCustomRedirects;
- lingvaNormalRedirectsChecks = r.lingvaNormalRedirectsChecks;
- lingvaNormalCustomRedirects = r.lingvaNormalCustomRedirects;
- lingvaTorRedirectsChecks = r.lingvaTorRedirectsChecks;
- lingvaTorCustomRedirects = r.lingvaTorCustomRedirects;
- resolve();
- }
- )
- })
-}
-
-init();
-browser.storage.onChanged.addListener(init)
-
-function setRedirects(val) {
- browser.storage.local.get('cloudflareList', r => {
- redirects = val;
- simplyTranslateNormalRedirectsChecks = [...redirects.simplyTranslate.normal];
- lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
- for (const instance of r.cloudflareList) {
- const a = simplyTranslateNormalRedirectsChecks.indexOf(instance);
- if (a > -1) simplyTranslateNormalRedirectsChecks.splice(a, 1);
-
- const b = lingvaNormalRedirectsChecks.indexOf(instance);
- if (b > -1) lingvaNormalRedirectsChecks.splice(b, 1);
- }
- browser.storage.local.set({
- translateRedirects: redirects,
- simplyTranslateNormalRedirectsChecks,
- simplyTranslateTorRedirectsChecks: redirects.simplyTranslate.tor,
- lingvaNormalRedirectsChecks,
- lingvaTorRedirectsChecks: redirects.lingva.tor,
- })
- })
-}
-
-function initLingvaLocalStorage(test, url, tabId) {
- return new Promise(async resolve => {
- await init();
- if (translateDisable || translateFrontend != 'lingva') { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (![
- ...lingvaNormalRedirectsChecks,
- ...lingvaNormalCustomRedirects,
- ...lingvaTorRedirectsChecks,
- ...lingvaTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
-
- if (!test) {
- browser.tabs.executeScript(
- tabId,
- { file: "/assets/javascripts/helpers/translate/get_lingva_preferences.js", runAt: "document_start" }
- );
-
- let checkedInstances;
- if (translateProtocol == 'normal') checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
- if (translateProtocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- if (checkedInstances.length === 0) { resolve(); return; }
- for (const to of checkedInstances)
- browser.tabs.create(
- { url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/helpers/translate/set_lingva_preferences.js", runAt: "document_start" })
- );
- }
- resolve(true);
- }
- )
-}
-
-function initSimplyTranslateCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(from);
- if (![
- ...simplyTranslateNormalRedirectsChecks,
- ...simplyTranslateNormalCustomRedirects,
- ...simplyTranslateTorRedirectsChecks,
- ...simplyTranslateTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
- if (!test) {
- let checkedInstances;
- if (translateProtocol == 'normal') checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
- else if (translateProtocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.copyCookie('simplyTranslate', from, to, 'from_lang');
- utils.copyCookie('simplyTranslate', from, to, 'to_lang');
- utils.copyCookie('simplyTranslate', from, to, 'tts_enabled');
- utils.copyCookie('simplyTranslate', from, to, 'use_text_fields');
- }
- }
- resolve(true);
- }
- )
-}
-
-function setSimplyTranslateCookies() {
- return new Promise(async resolve => {
- await init();
- if (translateDisable || translateFrontend != 'simplyTranslate') { resolve(); return; }
- let checkedInstances;
- if (translateProtocol == 'normal') checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
- else if (translateProtocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('simplyTranslate', to, 'from_lang');
- utils.getCookiesFromStorage('simplyTranslate', to, 'to_lang');
- utils.getCookiesFromStorage('simplyTranslate', to, 'tts_enabled');
- utils.getCookiesFromStorage('simplyTranslate', to, 'use_text_fields');
- }
- resolve();
- }
- )
-}
-
-function redirect(url) {
- if (translateDisable) return;
- if (!targets.some(rx => rx.test(url.href))) return;
-
- if (translateFrontend == 'simplyTranslate') {
- let instancesList;
- if (translateProtocol == 'normal') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects];
- if (translateProtocol == 'tor') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
- if (instancesList.length === 0) return;
-
- const randomInstance = utils.getRandomInstance(instancesList)
- return `${randomInstance}/${url.search}`;
- }
- else if (translateFrontend == 'lingva') {
- let params_arr = url.search.split('&');
- params_arr[0] = params_arr[0].substring(1);
- let params = {};
- for (let i = 0; i < params_arr.length; i++) {
- let pair = params_arr[i].split('=');
- params[pair[0]] = pair[1];
- }
- let instancesList;
- if (translateProtocol == 'normal') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
- if (translateProtocol == 'tor') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
- if (instancesList.length === 0) return;
-
- const randomInstance = utils.getRandomInstance(instancesList)
- if (params.sl && params.tl && params.text) {
- return `${randomInstance}/${params.sl}/${params.tl}/${params.text}`
- }
- return randomInstance;
- }
-}
-
-function switchInstance(url) {
- return new Promise(async resolve => {
- await init();
- if (translateDisable) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (![
- ...translateRedirects.simplyTranslate.normal,
- ...translateRedirects.simplyTranslate.tor,
-
- ...simplyTranslateNormalCustomRedirects,
- ...simplyTranslateTorCustomRedirects,
-
- ...translateRedirects.lingva.normal,
- ...translateRedirects.lingva.tor,
-
- ...lingvaNormalCustomRedirects,
- ...lingvaTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
-
- let instancesList;
- if (translateProtocol == 'normal') {
- if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects];
- else if (translateFrontend == 'lingva') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
- }
- else if (translateProtocol == 'tor') {
- if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
- else if (translateFrontend == 'lingva') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
- }
-
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
-
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
-}
-
-function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(data => {
- let dataJson = JSON.parse(data);
- redirects.simplyTranslate = dataJson.simplyTranslate;
- redirects.lingva = dataJson.lingva;
- browser.storage.local.get('cloudflareList',
- async r => {
- simplyTranslateNormalRedirectsChecks = [...redirects.simplyTranslate.normal];
- lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
- for (const instance of r.cloudflareList) {
- const a = simplyTranslateNormalRedirectsChecks.indexOf(instance);
- if (a > -1) simplyTranslateNormalRedirectsChecks.splice(a, 1);
-
- const b = lingvaNormalRedirectsChecks.indexOf(instance);
- if (b > -1) lingvaNormalRedirectsChecks.splice(b, 1);
- }
- await browser.storage.local.set({
- translateDisable: false,
- translateFrontend: "simplyTranslate",
- translateProtocol: 'normal',
- translateRedirects: redirects,
-
- simplyTranslateNormalRedirectsChecks: simplyTranslateNormalRedirectsChecks,
- simplyTranslateNormalCustomRedirects: [],
- simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor],
- simplyTranslateTorCustomRedirects: [],
-
- lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks,
- lingvaNormalCustomRedirects: [],
- lingvaTorRedirectsChecks: [...redirects.lingva.tor],
- lingvaTorCustomRedirects: [],
- })
- resolve();
- })
- })
- })
-}
-
-export default {
- initSimplyTranslateCookies,
- setSimplyTranslateCookies,
- initLingvaLocalStorage,
- setRedirects,
- redirect,
- initDefaults,
- switchInstance,
-};
diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js
deleted file mode 100644
index dc48f9b1..00000000
--- a/src/assets/javascripts/helpers/twitter.js
+++ /dev/null
@@ -1,241 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-import utils from './utils.js'
-
-const targets = [
- /^https?:\/{2}(www\.|mobile\.|)twitter\.com/,
- /^https?:\/{2}(pbs\.|video\.|)twimg\.com/,
- /^https?:\/{2}platform\.twitter\.com\/embed/,
- /^https?:\/{2}t\.co/
-];
-
-let redirects = {
- "nitter": {
- "normal": [],
- "tor": []
- },
-};
-
-function setRedirects(val) {
- browser.storage.local.get('cloudflareList', r => {
- redirects.nitter = val;
- nitterNormalRedirectsChecks = [...redirects.nitter.normal];
- for (const instance of r.cloudflareList) {
- let i = nitterNormalRedirectsChecks.indexOf(instance);
- if (i > -1) nitterNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- twitterRedirects: redirects,
- nitterNormalRedirectsChecks,
- nitterTorRedirectsChecks: [...redirects.nitter.tor]
- })
- })
-}
-
-let
- disableTwitter,
- twitterProtocol,
- twitterRedirects,
- nitterNormalRedirectsChecks,
- nitterNormalCustomRedirects,
- nitterTorRedirectsChecks,
- nitterTorCustomRedirects;
-
-function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableTwitter",
- "twitterProtocol",
- "twitterRedirects",
- "nitterNormalRedirectsChecks",
- "nitterNormalCustomRedirects",
- "nitterTorRedirectsChecks",
- "nitterTorCustomRedirects",
- ],
- r => {
- disableTwitter = r.disableTwitter;
- twitterProtocol = r.twitterProtocol;
- twitterRedirects = r.twitterRedirects;
- nitterNormalRedirectsChecks = r.nitterNormalRedirectsChecks;
- nitterNormalCustomRedirects = r.nitterNormalCustomRedirects;
- nitterTorRedirectsChecks = r.nitterTorRedirectsChecks;
- nitterTorCustomRedirects = r.nitterTorCustomRedirects;
- resolve();
- }
- )
- })
-}
-
-init();
-browser.storage.onChanged.addListener(init)
-
-function all() {
- return [
- ...nitterNormalRedirectsChecks,
- ...nitterTorRedirectsChecks,
- ...nitterNormalCustomRedirects,
- ...nitterTorCustomRedirects,
- ];
-}
-
-function redirect(url, initiator) {
- if (disableTwitter) return;
- if (!targets.some(rx => rx.test(url.href))) return;
- if (url.pathname.split("/").includes("home")) return;
- if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
-
- let instancesList;
- if (twitterProtocol == 'normal') instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects];
- else if (twitterProtocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects];
- if (instancesList.length === 0) return;
-
- const randomInstance = utils.getRandomInstance(instancesList);
- // https://pbs.twimg.com/profile_images/648888480974508032/66_cUYfj_400x400.jpg
- if (url.host.split(".")[0] === "pbs" || url.host.split(".")[0] === "video")
- return `${randomInstance}/pic/${encodeURIComponent(`${url.host}${url.pathname}`)}`;
- else if (url.pathname.split("/").includes("tweets"))
- return `${randomInstance}${url.pathname.replace("/tweets", "")}${url.search}`;
- else if (url.host == 't.co')
- return `${randomInstance}/t.co${url.pathname}`;
- else
- return `${randomInstance}${url.pathname}${url.search}`;
-}
-
-function reverse(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve; return; }
- resolve(`https://twitter.com${url.pathname}${url.search}`);
- })
-}
-
-function switchInstance(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (twitterProtocol == 'normal') instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects];
- else if (twitterProtocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects];
-
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) { resolve(); return; }
-
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
-}
-
-function removeXFrameOptions(e) {
- let url = new URL(e.url);
- let protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost) || e.type != 'sub_frame') return;
- let isChanged = false;
- for (const i in e.responseHeaders) if (e.responseHeaders[i].name == 'x-frame-options') {
- e.responseHeaders.splice(i, 1);
- isChanged = true;
- }
- if (isChanged) return { responseHeaders: e.responseHeaders };
-}
-
-function initNitterCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(from);
- if (!all().includes(protocolHost)
- ) { resolve(); return; }
-
- if (!test) {
- let checkedInstances;
- if (twitterProtocol == 'normal') checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
- else if (twitterProtocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.copyCookie('nitter', from, to, 'theme');
- utils.copyCookie('nitter', from, to, 'infiniteScroll');
- utils.copyCookie('nitter', from, to, 'stickyProfile');
- utils.copyCookie('nitter', from, to, 'bidiSupport');
- utils.copyCookie('nitter', from, to, 'hideTweetStats');
- utils.copyCookie('nitter', from, to, 'hideBanner');
- utils.copyCookie('nitter', from, to, 'hidePins');
- utils.copyCookie('nitter', from, to, 'hideReplies');
- utils.copyCookie('nitter', from, to, 'squareAvatars');
- utils.copyCookie('nitter', from, to, 'mp4Playback');
- utils.copyCookie('nitter', from, to, 'hlsPlayback');
- utils.copyCookie('nitter', from, to, 'proxyVideos');
- utils.copyCookie('nitter', from, to, 'muteVideos');
- utils.copyCookie('nitter', from, to, 'autoplayGifs');
- }
- }
- resolve(true);
- })
-}
-
-function setNitterCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableTwitter || twitterProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (twitterProtocol == 'normal') checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
- else if (twitterProtocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('nitter', to, 'theme');
- utils.getCookiesFromStorage('nitter', to, 'infiniteScroll');
- utils.getCookiesFromStorage('nitter', to, 'stickyProfile');
- utils.getCookiesFromStorage('nitter', to, 'bidiSupport');
- utils.getCookiesFromStorage('nitter', to, 'hideTweetStats');
- utils.getCookiesFromStorage('nitter', to, 'hideBanner');
- utils.getCookiesFromStorage('nitter', to, 'hidePins');
- utils.getCookiesFromStorage('nitter', to, 'hideReplies');
- utils.getCookiesFromStorage('nitter', to, 'squareAvatars');
- utils.getCookiesFromStorage('nitter', to, 'mp4Playback');
- utils.getCookiesFromStorage('nitter', to, 'hlsPlayback');
- utils.getCookiesFromStorage('nitter', to, 'proxyVideos');
- utils.getCookiesFromStorage('nitter', to, 'muteVideos');
- utils.getCookiesFromStorage('nitter', to, 'autoplayGifs');
- }
- resolve();
- }
- )
-}
-
-function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(data => {
- let dataJson = JSON.parse(data);
- redirects.nitter = dataJson.nitter;
- browser.storage.local.get('cloudflareList', async r => {
- nitterNormalRedirectsChecks = [...redirects.nitter.normal];
- for (const instance of r.cloudflareList) {
- let i = nitterNormalRedirectsChecks.indexOf(instance);
- if (i > -1) nitterNormalRedirectsChecks.splice(i, 1);
- }
- await browser.storage.local.set({
- disableTwitter: false,
- twitterRedirects: redirects,
- twitterProtocol: "normal",
-
- nitterNormalRedirectsChecks,
- nitterNormalCustomRedirects: [],
-
- nitterTorRedirectsChecks: [...redirects.nitter.tor],
- nitterTorCustomRedirects: [],
- })
- resolve();
- })
- })
- })
-}
-
-export default {
- setRedirects,
- redirect,
- switchInstance,
- reverse,
- removeXFrameOptions,
- initNitterCookies,
- setNitterCookies,
- initDefaults,
-};
diff --git a/src/assets/javascripts/helpers/utils.js b/src/assets/javascripts/helpers/utils.js
deleted file mode 100644
index 16fdaae7..00000000
--- a/src/assets/javascripts/helpers/utils.js
+++ /dev/null
@@ -1,456 +0,0 @@
-window.browser = window.browser || window.chrome;
-import twitterHelper from "./twitter.js";
-import youtubeHelper from "./youtube/youtube.js";
-import instagramHelper from "./instagram.js";
-import mediumHelper from "./medium.js";
-import redditHelper from "./reddit.js";
-import searchHelper from "./search.js";
-import translateHelper from "./translate/translate.js";
-import wikipediaHelper from "./wikipedia.js";
-import peertubeHelper from "./peertube.js";
-import lbryHelper from "./lbry.js";
-import sendTargetsHelper from "./sendTargets.js";
-import tiktokHelper from "./tiktok.js";
-import imgurHelper from "./imgur.js";
-import localise from '../localise.js'
-
-function getRandomInstance(instances) {
- return instances[~~(instances.length * Math.random())];
-}
-
-let cloudflareList = [];
-async function initCloudflareList() {
- return new Promise(resolve => {
- fetch('/instances/blocklist.json').then(response => response.text()).then(data => {
- cloudflareList = JSON.parse(data);
- resolve();
- })
- });
-}
-
-function updateInstances() {
- return new Promise(async resolve => {
- let http = new XMLHttpRequest();
- http.open('GET', 'https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json', false);
- http.send(null);
- if (http.status === 200) {
- await initCloudflareList();
- const instances = JSON.parse(http.responseText);
-
- youtubeHelper.setRedirects({ 'invidious': instances.invidious, 'piped': instances.piped, })
- twitterHelper.setRedirects(instances.nitter);
- instagramHelper.setRedirects(instances.bibliogram);
- redditHelper.setRedirects({ 'libreddit': instances.libreddit, 'teddit': instances.teddit });
- translateHelper.setRedirects({ "simplyTranslate": instances.simplyTranslate, "lingva": instances.lingva });
- searchHelper.setRedirects({ 'searx': instances.searx, 'searxng': instances.searxng, 'whoogle': instances.whoogle });
- wikipediaHelper.setRedirects(instances.wikiless);
- mediumHelper.setRedirects(instances.scribe);
- sendTargetsHelper.setRedirects(instances.send);
- tiktokHelper.setRedirects(instances.proxiTok);
-
- console.info("Successfully updated Instances");
- resolve(true); return;
- }
- resolve()
- })
-}
-
-function protocolHost(url) {
- if (url.username && url.password) return `${url.protocol}//${url.username}:${url.password}@${url.host}`;
- return `${url.protocol}//${url.host}`;
-}
-
-async function processDefaultCustomInstances(target, name, protocol, document) {
-
- function camelCase(str) {
- return str.charAt(0).toUpperCase() + str.slice(1);
- }
- let latencyKey = `${name}Latency`;
- let instancesLatency;
- await browser.storage.local.get(latencyKey, r => instancesLatency = r[latencyKey] ?? []);
- let nameProtocolElement = document.getElementById(name).getElementsByClassName(protocol)[0];
-
- let nameCustomInstances = [];
- let nameCheckListElement = nameProtocolElement.getElementsByClassName('checklist')[0];
-
- await initCloudflareList();
-
-
- let nameDefaultRedirects;
-
- let redirectsChecks = `${name}${camelCase(protocol)}RedirectsChecks`;
- let customRedirects = `${name}${camelCase(protocol)}CustomRedirects`;
- let redirectsKey = `${target}Redirects`;
-
- let redirects;
-
- async function getFromStorage() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- redirectsChecks,
- customRedirects,
- redirectsKey
- ],
- r => {
- nameDefaultRedirects = r[redirectsChecks];
- nameCustomInstances = r[customRedirects];
- redirects = r[redirectsKey];
- resolve();
- }
- )
- })
- }
- await getFromStorage();
-
- function calcNameCheckBoxes() {
- let isTrue = true;
- for (const item of redirects[name][protocol])
- if (!nameDefaultRedirects.includes(item)) {
- isTrue = false;
- break;
- }
- for (const element of nameCheckListElement.getElementsByTagName('input'))
- element.checked = nameDefaultRedirects.includes(element.className)
- if (nameDefaultRedirects.length == 0) isTrue = false;
- nameProtocolElement.getElementsByClassName('toogle-all')[0].checked = isTrue;
- }
- nameCheckListElement.innerHTML =
- [
- `<div>
- <x data-localise="__MSG_toggleAll__">Toggle All</x>
- <input type="checkbox" class="toogle-all"/>
- </div>`,
- ...redirects[name][protocol].map(
- x => {
- let cloudflare = cloudflareList.includes(x) ? ' <span style="color:red;">cloudflare</span>' : '';
-
- let ms = instancesLatency[x];
- let latencyColor = (ms <= 1000 ? "green" : ms <= 2000 ? "orange" : "red");
- let latencyLimit;
- if (ms == 5000) latencyLimit = '5000ms+';
- else if (ms > 5000) latencyLimit = `ERROR: ${ms - 5000}`;
- else latencyLimit = ms + 'ms';
-
- let latency = x in instancesLatency ? '<span style="color:' + latencyColor + ';">' + latencyLimit + '</span>' : '';
-
- return `<div>
- <x><a href="${x}" target="_blank">${x}</a>${cloudflare} ${latency}</x>
- <input type="checkbox" class="${x}"/>
- </div>`;
- }
- ),
- ].join('\n<hr>\n');
-
- localise.localisePage();
-
- calcNameCheckBoxes();
- nameProtocolElement.getElementsByClassName('toogle-all')[0].addEventListener("change", async event => {
- if (event.target.checked)
- nameDefaultRedirects = [...redirects[name][protocol]];
- else
- nameDefaultRedirects = [];
-
- await browser.storage.local.set({ [redirectsChecks]: nameDefaultRedirects });
- calcNameCheckBoxes();
- });
-
- for (let element of nameCheckListElement.getElementsByTagName('input')) {
- if (element.className != 'toogle-all')
- nameProtocolElement.getElementsByClassName(element.className)[0].addEventListener("change", async event => {
- if (event.target.checked)
- nameDefaultRedirects.push(element.className)
- else {
- let index = nameDefaultRedirects.indexOf(element.className);
- if (index > -1) nameDefaultRedirects.splice(index, 1);
- }
- await browser.storage.local.set({ [redirectsChecks]: nameDefaultRedirects });
- calcNameCheckBoxes();
- });
- }
-
- function calcNameCustomInstances() {
- nameProtocolElement.getElementsByClassName('custom-checklist')[0].innerHTML =
- nameCustomInstances.map(
- x => `<div>
- ${x}
- <button class="add clear-${x}">
- <svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
- <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z" />
- </svg>
- </button>
- </div>
- <hr>`
- ).join('\n');
-
- for (const item of nameCustomInstances) {
- nameProtocolElement.getElementsByClassName(`clear-${item}`)[0].addEventListener("click", async () => {
- let index = nameCustomInstances.indexOf(item);
- if (index > -1) nameCustomInstances.splice(index, 1);
- await browser.storage.local.set({ [customRedirects]: nameCustomInstances });
- calcNameCustomInstances();
- });
- }
- }
- calcNameCustomInstances();
- nameProtocolElement.getElementsByClassName('custom-instance-form')[0].addEventListener("submit", async event => {
- event.preventDefault();
- let nameCustomInstanceInput = nameProtocolElement.getElementsByClassName('custom-instance')[0];
- let url = new URL(nameCustomInstanceInput.value);
- let protocolHostVar = protocolHost(url);
- if (nameCustomInstanceInput.validity.valid && !redirects[name][protocol].includes(protocolHostVar)) {
- if (!nameCustomInstances.includes(protocolHostVar)) {
- nameCustomInstances.push(protocolHostVar)
- await browser.storage.local.set({ [customRedirects]: nameCustomInstances });
- nameCustomInstanceInput.value = '';
- }
- calcNameCustomInstances();
- }
- })
-}
-
-function isRtl() {
- return ["ar", "iw", "ku", "fa", "ur"].includes(browser.i18n.getUILanguage())
-}
-
-function getIp(href) {
- return new Promise(resolve => {
- let host = new URL(href).hostname;
- let http = new XMLHttpRequest();
- http.open("GET", `https://dns.google/resolve?name=${host}`, /*async*/true);
- http.onreadystatechange = () => {
- if (http.readyState == 4 && http.status == 200) {
- let r = JSON.parse(http.responseText);
- resolve(r.Answer[0].data)
- }
- };
- http.ontimeout = () => resolve()
- http.onerror = () => resolve()
- try {
- http.send(null)
- }
- catch (exception) {
- resolve()
- }
- })
-}
-
-async function ping(href) {
- return new Promise(async resolve => {
- let http = new XMLHttpRequest();
- http.open("GET", `${href}?_=${new Date().getTime()}`, /*async*/true);
- http.timeout = 5000;
- let started = new Date().getTime();
- http.onreadystatechange = () => {
- if (http.readyState == 2) {
- if (http.status == 200) {
- let ended = new Date().getTime();
- http.abort();
- resolve(ended - started);
- }
- else
- resolve(5000 + http.status)
- }
- };
- http.ontimeout = () => resolve(5000)
- http.onerror = () => resolve()
- try {
- http.send(null);
- } catch (exception) {
- resolve()
- }
- });
-}
-
-async function testLatency(element, instances) {
- return new Promise(async resolve => {
- let myList = {};
- for (const href of instances) await ping(href).then(m => {
- if (m) {
- myList[href] = m;
- let color;
- if (m <= 1000) color = "green"
- else if (m <= 2000) color = "orange"
- else color = "red";
-
- let text;
- if (m == 5000) text = '5000ms+'
- else if (m > 5000) text = `ERROR: ${m - 5000}`;
- else text = `${m}ms`;
- element.innerHTML = `${href}:&nbsp;<span style="color:${color};">${text}</span>`;
- }
- })
- resolve(myList);
- })
-}
-
-function copyCookie(frontend, targetUrl, url, name) {
- browser.cookies.get(
- { url: protocolHost(targetUrl), name: name },
- r => {
- if (r) {
- browser.cookies.set({ url: url, name: name, value: r.value })
- browser.storage.local.set({ [`${frontend}_${name}`]: r.value })
- }
- }
- )
-}
-
-function getCookiesFromStorage(frontend, to, name) {
- let key = `${frontend}_${name}`;
- browser.storage.local.get(
- key,
- r => {
- if (r[key] !== undefined) browser.cookies.set({ url: to, name: name, value: r[key] })
- }
- )
-}
-
-function copyRaw(test, copyRawElement) {
- return new Promise(resolve => {
- browser.tabs.query(
- { active: true, currentWindow: true }, async tabs => {
- let currTab = tabs[0];
- if (currTab) {
- let url;
- try { url = new URL(currTab.url); }
- catch { resolve(); return; }
- let newUrl = await youtubeHelper.reverse(url);
- if (!newUrl) newUrl = await twitterHelper.reverse(url);
- if (!newUrl) newUrl = await instagramHelper.reverse(url);
- if (!newUrl) newUrl = await tiktokHelper.reverse(url);
- if (!newUrl) newUrl = await imgurHelper.reverse(url);
-
- if (newUrl) {
- resolve(true);
- if (test) return;
- navigator.clipboard.writeText(newUrl);
- if (copyRawElement) {
- const textElement = copyRawElement.getElementsByTagName('h4')[0]
- const oldHtml = textElement.innerHTML;
- textElement.innerHTML = 'Copied';
- setTimeout(() => textElement.innerHTML = oldHtml, 1000);
- }
- } else resolve()
- }
- }
- )
- })
-}
-
-function unify(test) {
- return new Promise(resolve => {
- browser.tabs.query(
- { active: true, currentWindow: true },
- async tabs => {
- let currTab = tabs[0]
- if (currTab) {
- let url;
- try { url = new URL(currTab.url); }
- catch { resolve(); return; }
-
- let result = await youtubeHelper.initInvidiousCookies(test, url);
- if (!result) result = await youtubeHelper.initPipedLocalStorage(test, url, currTab.id);
- if (!result) result = await youtubeHelper.initPipedMaterialLocalStorage(test, url, currTab.id);
-
- if (!result) result = await twitterHelper.initNitterCookies(test, url);
-
- if (!result) result = await redditHelper.initLibredditCookies(test, url);
- if (!result) result = await redditHelper.initTedditCookies(test, url);
-
- if (!result) result = await searchHelper.initSearxCookies(test, url);
- if (!result) result = await searchHelper.initSearxngCookies(test, url);
-
- if (!result) result = await tiktokHelper.initProxiTokCookies(test, url);
-
- if (!result) result = await wikipediaHelper.initWikilessCookies(test, url);
-
- if (!result) result = await translateHelper.initSimplyTranslateCookies(test, url);
- if (!result) result = await translateHelper.initLingvaLocalStorage(test, url);
-
- if (result) {
- resolve(true);
- } else resolve()
- }
- }
- )
- })
-}
-
-function switchInstance(test) {
- return new Promise(resolve => {
- browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
- let currTab = tabs[0];
- if (currTab) {
- let url;
- try { url = new URL(currTab.url); }
- catch { resolve(); return };
- let newUrl = await youtubeHelper.switchInstance(url);
- if (!newUrl) newUrl = await twitterHelper.switchInstance(url);
- if (!newUrl) newUrl = await instagramHelper.switchInstance(url);
- if (!newUrl) newUrl = await redditHelper.switchInstance(url);
- if (!newUrl) newUrl = await searchHelper.switchInstance(url);
- if (!newUrl) newUrl = await translateHelper.switchInstance(url);
- if (!newUrl) newUrl = await mediumHelper.switchInstance(url);
- if (!newUrl) newUrl = await sendTargetsHelper.switchInstance(url);
- if (!newUrl) newUrl = await peertubeHelper.switchInstance(url);
- if (!newUrl) newUrl = await lbryHelper.switchInstance(url);
- if (!newUrl) newUrl = await imgurHelper.switchInstance(url);
- if (!newUrl) newUrl = await wikipediaHelper.switchInstance(url);
-
- if (newUrl) {
- if (!test)
- browser.tabs.update({ url: newUrl });
- resolve(true)
- } else resolve()
- }
- })
- })
-}
-
-function latency(name, frontend, document, location, splitNames) {
- let latencyElement;
- let latencyLabel;
- if (splitNames == true) {
- latencyElement = document.getElementById(`latency-${frontend}`);
- latencyLabel = document.getElementById(`latency-${frontend}-label`);
- } else {
- latencyElement = document.getElementById("latency");
- latencyLabel = document.getElementById("latency-label");
- }
- latencyElement.addEventListener("click",
- async () => {
- let reloadWindow = () => location.reload();
- latencyElement.addEventListener("click", reloadWindow);
- let key = `${name}Redirects`
- browser.storage.local.get(
- key,
- r => {
- let redirects = r[key];
- const oldHtml = latencyLabel.innerHTML;
- latencyLabel.innerHTML = '...';
- testLatency(latencyLabel, redirects[frontend].normal).then(r => {
- browser.storage.local.set({ [`${frontend}Latency`]: r });
- latencyLabel.innerHTML = oldHtml;
- processDefaultCustomInstances(name, frontend, 'normal', document);
- latencyElement.removeEventListener("click", reloadWindow)
- });
- }
- )
- }
- );
-}
-
-export default {
- getRandomInstance,
- updateInstances,
- protocolHost,
- processDefaultCustomInstances,
- isRtl,
- latency,
- copyCookie,
- getCookiesFromStorage,
- switchInstance,
- copyRaw,
- unify,
-}
diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js
deleted file mode 100644
index 868bb01c..00000000
--- a/src/assets/javascripts/helpers/wikipedia.js
+++ /dev/null
@@ -1,220 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-import utils from './utils.js'
-
-const targets = /^https?:\/{2}(([a-z]{1,}\.){0,})wikipedia\.org/
-
-let redirects = {
- "wikiless": {
- "normal": [],
- "tor": [],
- "i2p": []
- }
-};
-function setRedirects(val) {
- browser.storage.local.get('cloudflareList', r => {
- redirects.wikiless = val;
- wikilessNormalRedirectsChecks = [...redirects.wikiless.normal];
- for (const instance of r.cloudflareList) {
- const a = wikilessNormalRedirectsChecks.indexOf(instance);
- if (a > -1) wikilessNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- wikipediaRedirects: redirects,
- wikilessNormalRedirectsChecks
- })
- })
-}
-
-let
- disableWikipedia,
- wikipediaRedirects,
- wikipediaProtocol,
- wikilessNormalRedirectsChecks,
- wikilessTorRedirectsChecks,
- wikilessI2pRedirectsChecks,
- wikilessNormalCustomRedirects,
- wikilessTorCustomRedirects,
- wikilessI2pCustomRedirects;
-
-function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableWikipedia",
- "wikipediaRedirects",
- "wikipediaProtocol",
-
- "wikilessNormalRedirectsChecks",
- "wikilessTorRedirectsChecks",
- "wikilessI2pRedirectsChecks",
- "wikilessNormalCustomRedirects",
- "wikilessTorCustomRedirects",
- "wikilessI2pCustomRedirects",
- ],
- r => {
- disableWikipedia = r.disableWikipedia;
- wikipediaRedirects = r.wikipediaRedirects;
- wikipediaProtocol = r.wikipediaProtocol;
- wikilessNormalRedirectsChecks = r.wikilessNormalRedirectsChecks;
- wikilessTorRedirectsChecks = r.wikilessTorRedirectsChecks;
- wikilessI2pRedirectsChecks = r.wikilessI2pRedirectsChecks;
- wikilessNormalCustomRedirects = r.wikilessNormalCustomRedirects;
- wikilessTorCustomRedirects = r.wikilessTorCustomRedirects;
- wikilessI2pCustomRedirects = r.wikilessI2pCustomRedirects;
- resolve();
- }
- )
- })
-}
-
-init();
-browser.storage.onChanged.addListener(init)
-
-function initWikilessCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(from);
- const all = [
- ...wikilessNormalRedirectsChecks,
- ...wikilessNormalCustomRedirects,
- ...wikilessTorRedirectsChecks,
- ...wikilessTorCustomRedirects,
- ...wikilessI2pRedirectsChecks,
- ...wikilessI2pCustomRedirects,
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
-
- if (!test) {
- let checkedInstances;
- if (wikipediaProtocol == 'normal') checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]
- else if (wikipediaProtocol == 'tor') checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
- else if (wikipediaProtocol == 'i2p') checkedInstances = [...wikilessI2pRedirectsChecks, ...wikilessI2pCustomRedirects]
-
- for (const to of checkedInstances) {
- utils.copyCookie('wikiless', from, to, 'theme');
- utils.copyCookie('wikiless', from, to, 'default_lang');
- }
- }
- resolve(true);
- })
-}
-
-function setWikilessCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableWikipedia || wikipediaProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (wikipediaProtocol == 'normal') checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]
- else if (wikipediaProtocol == 'tor') checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('wikiless', to, 'theme');
- utils.getCookiesFromStorage('wikiless', to, 'default_lang');
- }
- resolve();
- })
-}
-
-function redirect(url) {
- if (disableWikipedia) return;
- if (!targets.test(url.href)) return;
-
- let GETArguments = [];
- if (url.search.length > 0) {
- let search = url.search.substring(1); //get rid of '?'
- let argstrings = search.split("&");
- for (let i = 0; i < argstrings.length; i++) {
- let args = argstrings[i].split("=");
- GETArguments.push([args[0], args[1]]);
- }
- }
- let instancesList;
- if (wikipediaProtocol == 'normal') instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects];
- else if (wikipediaProtocol == 'tor') instancesList = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects];
- else if (wikipediaProtocol == 'i2p') instancesList = [...wikilessI2pRedirectsChecks, ...wikilessI2pCustomRedirects];
- if (instancesList.length === 0) return;
- const randomInstance = utils.getRandomInstance(instancesList)
-
- let link = `${randomInstance}${url.pathname}`;
- let urlSplit = url.host.split(".");
- if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") {
- if (urlSplit[0] == "m")
- GETArguments.push(["mobileaction", "toggle_view_mobile"]);
- else
- GETArguments.push(["lang", urlSplit[0]]);
- if (urlSplit[1] == "m")
- GETArguments.push(["mobileaction", "toggle_view_mobile"]);
- // wikiless doesn't have mobile view support yet
- }
- for (let i = 0; i < GETArguments.length; i++)
- link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1];
- return link;
-}
-
-function switchInstance(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- const wikipediaList = [
- ...wikipediaRedirects.wikiless.normal,
- ...wikipediaRedirects.wikiless.tor,
- ...wikipediaRedirects.wikiless.i2p,
-
- ...wikilessNormalCustomRedirects,
- ...wikilessTorCustomRedirects,
- ...wikilessI2pCustomRedirects
- ];
- if (!wikipediaList.includes(protocolHost)) { resolve(); return; }
-
- let instancesList;
- if (wikipediaProtocol == 'normal') instancesList = [...wikilessNormalCustomRedirects, ...wikilessNormalRedirectsChecks];
- else if (wikipediaProtocol == 'tor') instancesList = [...wikilessTorCustomRedirects, ...wikilessTorRedirectsChecks];
- else if (wikipediaProtocol == 'i2p') instancesList = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks];
-
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) { resolve(); return; }
-
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
-}
-
-function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- redirects.wikiless = dataJson.wikiless;
- browser.storage.local.get('cloudflareList', async r => {
- wikilessNormalRedirectsChecks = [...redirects.wikiless.normal];
- for (const instance of r.cloudflareList) {
- let i = wikilessNormalRedirectsChecks.indexOf(instance);
- if (i > -1) wikilessNormalRedirectsChecks.splice(i, 1);
- }
- await browser.storage.local.set({
- disableWikipedia: true,
- wikipediaRedirects: redirects,
- wikipediaProtocol: "normal",
- wikilessNormalRedirectsChecks: wikilessNormalRedirectsChecks,
- wikilessTorRedirectsChecks: [...redirects.wikiless.tor],
- wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p],
- wikilessNormalCustomRedirects: [],
- wikilessTorCustomRedirects: [],
- wikilessI2pCustomRedirects: [],
- })
- resolve();
- })
- })
- })
-}
-
-export default {
- setRedirects,
-
- initWikilessCookies,
- setWikilessCookies,
-
- redirect,
- initDefaults,
- switchInstance,
-};
diff --git a/src/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js b/src/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js
deleted file mode 100644
index 9d052f62..00000000
--- a/src/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js
+++ /dev/null
@@ -1,7 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-browser.storage.local.set(
- {
- 'pipedMaterial_PREFERENCES': localStorage.getItem("PREFERENCES")
- }
-) \ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/get_piped_preferences.js b/src/assets/javascripts/helpers/youtube/get_piped_preferences.js
deleted file mode 100644
index 417d64df..00000000
--- a/src/assets/javascripts/helpers/youtube/get_piped_preferences.js
+++ /dev/null
@@ -1,24 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-browser.storage.local.set(
- {
- 'piped_bufferGoal': localStorage.getItem("bufferGoal"),
- 'piped_comments': localStorage.getItem("comments"),
- 'piped_disableLBRY': localStorage.getItem("disableLBRY"),
- 'piped_enabledCodecs': localStorage.getItem("enabledCodecs"),
- 'piped_hl': localStorage.getItem("hl"),
- 'piped_homepage': localStorage.getItem("homepage"),
- 'piped_instance': localStorage.getItem("instance"),
- 'piped_listen': localStorage.getItem("listen"),
- 'piped_minimizeDescription': localStorage.getItem("minimizeDescription"),
- 'piped_playerAutoPlay': localStorage.getItem("playerAutoPlay"),
- 'piped_proxyLBRY': localStorage.getItem("proxyLBRY"),
- 'piped_quality': localStorage.getItem("quality"),
- 'piped_region': localStorage.getItem("region"),
- 'piped_selectedSkip': localStorage.getItem("selectedSkip"),
- 'piped_sponsorblock': localStorage.getItem("sponsorblock"),
- 'piped_theme': localStorage.getItem("theme"),
- 'piped_volume': localStorage.getItem("volume"),
- 'piped_watchHistory': localStorage.getItem("watchHistory"),
- }
-)
diff --git a/src/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js b/src/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js
deleted file mode 100644
index 7415255a..00000000
--- a/src/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js
+++ /dev/null
@@ -1,10 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-browser.storage.local.get(
- "pipedMaterial_PREFERENCES",
- r => {
- if (r.pipedMaterial_PREFERENCES !== undefined) localStorage.setItem("PREFERENCES", r.pipedMaterial_PREFERENCES)
-
- window.close();
- }
-) \ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/set_piped_preferences.js b/src/assets/javascripts/helpers/youtube/set_piped_preferences.js
deleted file mode 100644
index d5ce49ff..00000000
--- a/src/assets/javascripts/helpers/youtube/set_piped_preferences.js
+++ /dev/null
@@ -1,44 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-browser.storage.local.get(
- [
- "piped_bufferGoal",
- "piped_comments",
- "piped_disableLBRY",
- "piped_enabledCodecs",
- "piped_homepage",
- "piped_listen",
- "piped_minimizeDescription",
- "piped_playerAutoPlay",
- "piped_proxyLBRY",
- "piped_quality",
- "piped_region",
- "piped_selectedSkip",
- "piped_sponsorblock",
- "piped_theme",
- "piped_volume",
- "piped_watchHistory",
- ],
- r => {
- if (r.piped_bufferGoal !== undefined) localStorage.setItem("bufferGoal", r.piped_bufferGoal);
- if (r.piped_comments !== undefined) localStorage.setItem("comments", r.piped_comments);
- if (r.piped_disableLBRY !== undefined) localStorage.setItem("disableLBRY", r.piped_disableLBRY);
- if (r.piped_hl !== undefined) localStorage.setItem("hl", r.piped_hl);
- if (r.piped_enabledCodecs !== undefined) localStorage.setItem("enabledCodecs", r.piped_enabledCodecs);
- if (r.piped_homepage !== undefined) localStorage.setItem("homepage", r.piped_homepage);
- if (r.piped_instance !== undefined) localStorage.setItem("instance", r.piped_instance);
- if (r.piped_listen !== undefined) localStorage.setItem("listen", r.piped_listen);
- if (r.piped_minimizeDescription !== undefined) localStorage.setItem("minimizeDescription", r.piped_minimizeDescription);
- if (r.piped_playerAutoPlay !== undefined) localStorage.setItem("playerAutoPlay", r.piped_playerAutoPlay);
- if (r.piped_proxyLBRY !== undefined) localStorage.setItem("proxyLBRY", r.piped_proxyLBRY);
- if (r.piped_quality !== undefined) localStorage.setItem("quality", r.piped_quality);
- if (r.piped_region !== undefined) localStorage.setItem("region", r.piped_region);
- if (r.piped_selectedSkip !== undefined) localStorage.setItem("selectedSkip", r.piped_selectedSkip);
- if (r.piped_sponsorblock !== undefined) localStorage.setItem("sponsorblock", r.piped_sponsorblock);
- if (r.piped_theme !== undefined) localStorage.setItem("theme", r.piped_theme);
- if (r.piped_volume !== undefined) localStorage.setItem("volume", r.piped_volume);
- if (r.piped_watchHistory !== undefined) localStorage.setItem("watchHistory", r.piped_watchHistory);
-
- window.close();
- }
-) \ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js
deleted file mode 100644
index 564e99c0..00000000
--- a/src/assets/javascripts/helpers/youtube/youtube.js
+++ /dev/null
@@ -1,453 +0,0 @@
-"use strict";
-
-window.browser = window.browser || window.chrome;
-
-import utils from '../utils.js'
-
-const targets = [
- /^https?:\/{2}(www\.|music\.|m\.|)youtube\.com(\/.*|$)/,
-
- /^https?:\/{2}img\.youtube\.com\/vi\/.*\/..*/, // https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api
- /^https?:\/{2}(i|s)\.ytimg\.com\/vi\/.*\/..*/,
-
- /^https?:\/{2}(www\.|music\.|)youtube\.com\/watch\?v\=..*/,
-
- /^https?:\/{2}youtu\.be\/..*/,
-
- /^https?:\/{2}(www\.|)(youtube|youtube-nocookie)\.com\/embed\/..*/,
-];
-let redirects = {
- "invidious": {
- "normal": [],
- "tor": []
- },
- "piped": {
- "normal": [],
- "tor": []
- },
- "pipedMaterial": {
- "normal": [
- "https://piped-material.xn--17b.net",
- "https://piped-material.ftp.sh",
- ],
- "tor": []
- }
-};
-function setRedirects(val) {
- browser.storage.local.get('cloudflareList', r => {
- redirects.invidious = val.invidious;
- redirects.piped = val.piped;
- invidiousNormalRedirectsChecks = [...redirects.invidious.normal];
- pipedNormalRedirectsChecks = [...redirects.piped.normal];
- for (const instance of r.cloudflareList) {
- const a = invidiousNormalRedirectsChecks.indexOf(instance);
- if (a > -1) invidiousNormalRedirectsChecks.splice(a, 1);
-
- const b = pipedNormalRedirectsChecks.indexOf(instance);
- if (b > -1) pipedNormalRedirectsChecks.splice(b, 1);
- }
- browser.storage.local.set({
- youtubeRedirects: redirects,
- invidiousNormalRedirectsChecks,
- invidiousTorRedirectsChecks: redirects.invidious.tor,
- pipedNormalRedirectsChecks,
- pipedTorRedirectsChecks: redirects.piped.tor,
- })
- })
-}
-
-let
- disableYoutube,
- OnlyEmbeddedVideo,
- youtubeFrontend,
- youtubeProtocol,
- youtubeEmbedFrontend,
- youtubeRedirects,
- invidiousNormalRedirectsChecks,
- invidiousNormalCustomRedirects,
- invidiousTorRedirectsChecks,
- invidiousTorCustomRedirects,
- pipedNormalRedirectsChecks,
- pipedNormalCustomRedirects,
- pipedTorRedirectsChecks,
- pipedTorCustomRedirects,
- pipedMaterialNormalRedirectsChecks,
- pipedMaterialNormalCustomRedirects,
- pipedMaterialTorRedirectsChecks,
- pipedMaterialTorCustomRedirects;
-
-function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableYoutube",
- "OnlyEmbeddedVideo",
- "youtubeFrontend",
- "youtubeProtocol",
- "youtubeEmbedFrontend",
- "youtubeRedirects",
- "invidiousNormalRedirectsChecks",
- "invidiousNormalCustomRedirects",
- "invidiousTorRedirectsChecks",
- "invidiousTorCustomRedirects",
- "pipedNormalRedirectsChecks",
- "pipedNormalCustomRedirects",
- "pipedTorRedirectsChecks",
- "pipedTorCustomRedirects",
- "pipedMaterialNormalRedirectsChecks",
- "pipedMaterialNormalCustomRedirects",
- "pipedMaterialTorRedirectsChecks",
- "pipedMaterialTorCustomRedirects",
- ],
- r => {
- disableYoutube = r.disableYoutube;
- OnlyEmbeddedVideo = r.OnlyEmbeddedVideo;
- youtubeFrontend = r.youtubeFrontend;
- youtubeProtocol = r.youtubeProtocol;
- youtubeEmbedFrontend = r.youtubeEmbedFrontend;
- youtubeRedirects = r.youtubeRedirects;
- invidiousNormalRedirectsChecks = r.invidiousNormalRedirectsChecks;
- invidiousNormalCustomRedirects = r.invidiousNormalCustomRedirects;
- invidiousTorRedirectsChecks = r.invidiousTorRedirectsChecks;
- invidiousTorCustomRedirects = r.invidiousTorCustomRedirects;
- pipedNormalRedirectsChecks = r.pipedNormalRedirectsChecks;
- pipedNormalCustomRedirects = r.pipedNormalCustomRedirects;
- pipedTorRedirectsChecks = r.pipedTorRedirectsChecks;
- pipedTorCustomRedirects = r.pipedTorCustomRedirects;
- pipedMaterialNormalRedirectsChecks = r.pipedMaterialNormalRedirectsChecks;
- pipedMaterialNormalCustomRedirects = r.pipedMaterialNormalCustomRedirects;
- pipedMaterialTorRedirectsChecks = r.pipedMaterialTorRedirectsChecks;
- pipedMaterialTorCustomRedirects = r.pipedMaterialTorCustomRedirects;
- resolve();
- }
- )
- })
-}
-
-init();
-browser.storage.onChanged.addListener(init)
-
-function all() {
- return [
- ...youtubeRedirects.invidious.normal,
- ...youtubeRedirects.invidious.tor,
-
- ...youtubeRedirects.piped.normal,
- ...youtubeRedirects.piped.tor,
-
- ...youtubeRedirects.pipedMaterial.normal,
- ...youtubeRedirects.pipedMaterial.tor,
-
- ...invidiousNormalCustomRedirects,
- ...invidiousTorCustomRedirects,
-
- ...pipedNormalCustomRedirects,
- ...pipedTorCustomRedirects,
-
- ...pipedMaterialNormalCustomRedirects,
- ...pipedMaterialTorCustomRedirects,
- ];
-}
-
-function redirect(url, details, initiator) {
- if (disableYoutube) return;
- if (!targets.some(rx => rx.test(url.href))) return;
- if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
-
- const isInvidious = youtubeFrontend == 'invidious';
- const isPiped = youtubeFrontend == 'piped';
- const isPipedMaterial = youtubeFrontend == 'pipedMaterial'
- const isFreetube = youtubeFrontend == 'freetube';
- const isYatte = youtubeFrontend == 'yatte';
-
- const isFrontendYoutube = youtubeEmbedFrontend == "youtube";
- const isFrontendInvidious = youtubeEmbedFrontend == 'invidious';
- const isFrontendPiped = youtubeEmbedFrontend == 'piped';
- const isFrontendPipedMaterial = youtubeEmbedFrontend == 'pipedMaterial';
-
- const isOnlyEmbeddedVideo = OnlyEmbeddedVideo == 'onlyNotEmbedded';
- const isOnlyNotEmbedded = OnlyEmbeddedVideo == 'onlyNotEmbedded'
-
- const is_main_frame = details.type === "main_frame";
- const is_sub_frame = details.type === "sub_frame";
-
- if (url.pathname.match(/iframe_api/) || url.pathname.match(/www-widgetapi/)) return; // Don't redirect YouTube Player API.
-
- if (youtubeFrontend == 'yatte' && is_main_frame)
- return url.href.replace(/^https?:\/{2}/, 'yattee://');
-
- else if (isFreetube && is_main_frame)
- return `freetube://https:${url.pathname}${url.search}`;
-
- else if (isFreetube && params && isFrontendYoutube)
- return;
-
- else if (isInvidious || ((isFreetube || isYatte) && isFrontendInvidious && is_sub_frame)) {
-
- if (isOnlyEmbeddedVideo && !is_sub_frame) return;
- if (isOnlyNotEmbedded && params && !((isFreetube || isYatte) && isFrontendInvidious && is_sub_frame)) return;
-
- let instancesList;
- if (youtubeProtocol == 'normal') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
- else if (youtubeProtocol == 'tor') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
- if (instancesList.length === 0) return;
- let randomInstance = utils.getRandomInstance(instancesList);
-
- return `${randomInstance}${url.pathname}${url.search}`;
- } else if (isPiped || ((isFreetube || isYatte) && isFrontendPiped && is_sub_frame)) {
-
- if (isOnlyEmbeddedVideo && !is_sub_frame) return;
- if (
- isOnlyNotEmbedded && params &&
- !((isFreetube || isYatte) && isFrontendPiped && is_sub_frame)
- ) return;
-
- let instancesList;
- if (youtubeProtocol == 'normal') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects];
- else if (youtubeProtocol == 'tor') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
- if (instancesList.length === 0) return;
-
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`;
- }
- else if (isPipedMaterial || ((isFreetube || isYatte) && isFrontendPipedMaterial && is_sub_frame)) {
- if (isOnlyEmbeddedVideo && details.type !== "sub_frame") return;
- if (
- isOnlyNotEmbedded && params &&
- !((isFreetube || isYatte) && isFrontendPipedMaterial && is_sub_frame)
- ) return;
-
- let instancesList;
- if (youtubeProtocol == 'normal') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
- else if (youtubeProtocol == 'tor') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects];
-
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`;
- }
- else return 'CANCEL';
-}
-
-function reverse(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- const instances = all();
- if (!instances.includes(protocolHost)) { resolve(); return; }
-
- resolve(`https://youtube.com${url.pathname}${url.search}`);
- })
-}
-
-function switchInstance(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- const instances = all();
- if (!instances.includes(protocolHost)) { resolve(); return; }
-
- let instancesList;
- if (youtubeProtocol == 'normal') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
- else if (youtubeFrontend == 'piped') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects];
- else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
- }
- else if (youtubeProtocol == 'tor') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
- else if (youtubeFrontend == 'piped') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
- else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects];
- }
-
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length == 0) { resolve(); return; }
-
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
-}
-
-function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- redirects.invidious = dataJson.invidious;
- redirects.piped = dataJson.piped;
- browser.storage.local.get('cloudflareList', async r => {
-
- invidiousNormalRedirectsChecks = [...redirects.invidious.normal];
- pipedNormalRedirectsChecks = [...redirects.piped.normal];
- pipedMaterialNormalRedirectsChecks = [...redirects.pipedMaterial.normal];
-
- for (const instance of r.cloudflareList) {
- let i;
-
- i = invidiousNormalRedirectsChecks.indexOf(instance);
- if (i > -1) invidiousNormalRedirectsChecks.splice(i, 1);
-
- i = pipedNormalRedirectsChecks.indexOf(instance);
- if (i > -1) pipedNormalRedirectsChecks.splice(i, 1);
-
- i = pipedMaterialNormalRedirectsChecks.indexOf(instance);
- if (i > -1) pipedMaterialNormalRedirectsChecks.splice(i, 1);
- }
-
- await browser.storage.local.set({
- disableYoutube: false,
- enableYoutubeCustomSettings: false,
- OnlyEmbeddedVideo: 'both',
-
- youtubeRedirects: redirects,
-
- youtubeFrontend: 'invidious',
-
- invidiousNormalRedirectsChecks: invidiousNormalRedirectsChecks,
- invidiousNormalCustomRedirects: [],
-
- invidiousTorRedirectsChecks: [...redirects.invidious.tor],
- invidiousTorCustomRedirects: [],
-
- pipedNormalRedirectsChecks: pipedNormalRedirectsChecks,
- pipedNormalCustomRedirects: [],
-
- pipedTorRedirectsChecks: [...redirects.piped.tor],
- pipedTorCustomRedirects: [],
-
- pipedMaterialNormalRedirectsChecks: pipedMaterialNormalRedirectsChecks,
- pipedMaterialNormalCustomRedirects: [],
-
- pipedMaterialTorRedirectsChecks: [...redirects.pipedMaterial.tor],
- pipedMaterialTorCustomRedirects: [],
-
- youtubeEmbedFrontend: 'invidious',
- youtubeProtocol: 'normal',
- })
- resolve();
- })
- })
- })
-}
-
-function initInvidiousCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'invidious') { resolve(); return; }
- const protocolHost = utils.protocolHost(from);
- if (![
- ...invidiousNormalRedirectsChecks,
- ...invidiousTorRedirectsChecks,
- ...invidiousNormalCustomRedirects,
- ...invidiousTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
- if (!test) {
- let checkedInstances;
- if (youtubeProtocol == 'normal') checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
- else if (youtubeProtocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- for (const to of checkedInstances)
- utils.copyCookie('invidious', from, to, 'PREFS');
- }
- resolve(true);
- })
-}
-
-function setInvidiousCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'invidious') { resolve(); return; }
- let checkedInstances;
- if (youtubeProtocol == 'normal') checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
- else if (youtubeProtocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
- for (const to of checkedInstances)
- utils.getCookiesFromStorage('invidious', to, 'PREFS');
- resolve();
- })
-}
-
-function initPipedLocalStorage(test, url, tabId) {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'piped') { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (![
- ...pipedNormalCustomRedirects,
- ...pipedNormalRedirectsChecks,
- ...pipedTorRedirectsChecks,
- ...pipedTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
-
- if (!test) {
-
- browser.tabs.executeScript(tabId, { file: "/assets/javascripts/helpers/youtube/get_piped_preferences.js", runAt: "document_start" });
-
- let checkedInstances;
- if (youtubeProtocol == 'normal') checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks]
- else if (youtubeProtocol == 'tor') checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- for (const to of checkedInstances) {
- browser.tabs.create({ url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/helpers/youtube/set_piped_preferences.js", runAt: "document_start" }))
- }
- }
- resolve(true);
- })
-}
-
-function initPipedMaterialLocalStorage(test, url, tabId,) {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'pipedMaterial') { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (![
- ...pipedMaterialNormalRedirectsChecks,
- ...pipedMaterialNormalCustomRedirects,
- ...pipedMaterialTorRedirectsChecks,
- ...pipedMaterialTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
-
- if (!test) {
- browser.tabs.executeScript(tabId, { file: "/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js", runAt: "document_start" });
-
- let checkedInstances;
- if (youtubeProtocol == 'normal') checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
- else if (youtubeProtocol == 'tor') checkedInstances = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- for (const to of checkedInstances)
- browser.tabs.create(
- { url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js", runAt: "document_start" })
- );
- }
- resolve(true);
- })
-}
-
-function removeXFrameOptions(e) {
- const url = new URL(e.url);
- let protocolHost = utils.protocolHost(url);
- const instances = all();
- if (!instances.includes(protocolHost) || e.type != 'sub_frame') return;
-
- let isChanged = false;
- for (const i in e.responseHeaders)
- if (e.responseHeaders[i].name == 'x-frame-options') {
- e.responseHeaders.splice(i, 1);
- isChanged = true;
- }
- if (isChanged) return { responseHeaders: e.responseHeaders };
-}
-
-export default {
- setRedirects,
- initPipedLocalStorage,
- initPipedMaterialLocalStorage,
- initInvidiousCookies,
- setInvidiousCookies,
- redirect,
- reverse,
- switchInstance,
- initDefaults,
- removeXFrameOptions,
-};
diff --git a/src/assets/javascripts/helpers/youtubeMusic.js b/src/assets/javascripts/helpers/youtubeMusic.js
deleted file mode 100644
index 68fa4f24..00000000
--- a/src/assets/javascripts/helpers/youtubeMusic.js
+++ /dev/null
@@ -1,97 +0,0 @@
-"use strict";
-
-import utils from './utils.js'
-
-window.browser = window.browser || window.chrome;
-
-const targets = [
- /^https?:\/{2}music\.youtube\.com(\/.*|$)/,
-];
-let redirects = {
- "beatbump": {
- "normal": [
- "https://beatbump.ml"
- ],
- "tor": []
- },
-};
-
-let
- disableYoutubeMusic,
- beatbumpNormalRedirectsChecks,
- beatbumpNormalCustomRedirects;
-
-function init() {
- browser.storage.local.get(
- [
- "disableYoutubeMusic",
- "beatbumpNormalRedirectsChecks",
- "beatbumpNormalCustomRedirects",
- ],
- r => {
- disableYoutubeMusic = r.disableYoutubeMusic;
- beatbumpNormalRedirectsChecks = r.beatbumpNormalRedirectsChecks;
- beatbumpNormalCustomRedirects = r.beatbumpNormalCustomRedirects;
- }
- )
-}
-
-init();
-browser.storage.onChanged.addListener(init)
-
-/*
-Video
-https://music.youtube.com/watch?v=_PkGiKBW-DA&list=RDAMVM_PkGiKBW-DA
-https://beatbump.ml/listen?id=_PkGiKBW-DA&list=RDAMVM_PkGiKBW-DA
-
-Playlist
-https://music.youtube.com/playlist?list=PLqxd0OMLeWy64zlwhjouj92ISc38FbOns
-https://music.youtube.com/playlist?list=PLqxd0OMLeWy7lrJSzt9LnOJjbC1IaruPM
-https://music.youtube.com/playlist?list=PLQod4DlD72ZMJmOrSNbmEmK_iZ1oXPzKd
-https://beatbump.ml/playlist/VLPLqxd0OMLeWy64zlwhjouj92ISc38FbOns
-
-Channel
-https://music.youtube.com/channel/UCfgmMDI7T5tOQqjnOBRe_wg
-https://beatbump.ml/artist/UCfgmMDI7T5tOQqjnOBRe_wg
-
-Albums
-https://music.youtube.com/playlist?list=OLAK5uy_n-9HVh3cryV2gREZM9Sc0JwEKYjjfi0dU
-https://music.youtube.com/playlist?list=OLAK5uy_lcr5O1zS8f6WIFI_yxqVp2RK9Dyy2bbw0
-https://beatbump.ml/release?id=MPREb_3DURc4yEUtD
-https://beatbump.ml/release?id=MPREb_evaZrV1WNdS
-
-https://music.youtube.com/playlist?list=OLAK5uy_n6OHVllUZUCnlIY1m-gUaH8uqkN3Y-Ca8
-https://music.youtube.com/playlist?list=OLAK5uy_nBOTxAc3_RGB82-Z54jdARGxGaCYlpngY
-https://beatbump.ml/release?id=MPREb_QygdC0wEoLe
-
-https://music.youtube.com/watch?v=R6gSMSYKhKU&list=OLAK5uy_n-9HVh3cryV2gREZM9Sc0JwEKYjjfi0dU
-*/
-function redirect(url, type, initiator) {
- if (disableYoutubeMusic) return;
- if (!targets.some(rx => rx.test(url.href))) return;
-
- let instancesList = [...beatbumpNormalRedirectsChecks, ...beatbumpNormalCustomRedirects];
- if (instancesList.length === 0) return;
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(
- `${randomInstance}${url.pathname}${url.search}`
- .replace("/watch?v=", "/listen?id=")
- .replace("/channel/", "/artist/")
- .replace("/playlist?list=", "/playlist/VL")
- );
-}
-
-async function initDefaults() {
- await browser.storage.local.set({
- disableYoutubeMusic: true,
- youtubeMusicRedirects: redirects,
-
- beatbumpNormalRedirectsChecks: [...redirects.beatbump.normal],
- beatbumpNormalCustomRedirects: [],
- })
-}
-
-export default {
- redirect,
- initDefaults,
-};