From aea3d789fbcb3ecb30868eea8edb851ade558576 Mon Sep 17 00:00:00 2001 From: coomdev Date: Mon, 18 Jul 2022 15:57:11 +0200 Subject: [PATCH] Add PEE companion. More strictly adhere to store rules... --- 1449696017588-comp.png | Bin 0 -> 25935 bytes build-chrome.js | 89 +---- chrome/dist/background.js | 20 ++ chrome/dist/main.js | 337 ++++++++++-------- chrome/manifest.json | 85 +---- chrome/options.js | 3 - pee-companion/144.png | Bin 0 -> 33090 bytes pee-companion/1449696017588-comp.png | Bin 0 -> 25935 bytes .../generated_indexed_rulesets/_ruleset1 | Bin pee-companion/b4k-csp.json | 21 ++ pee-companion/manifest.json | 25 ++ src/Components/App.svelte | 18 +- src/main.ts | 19 +- src/platform.ts | 71 +++- src/stores.ts | 44 +-- 15 files changed, 375 insertions(+), 357 deletions(-) create mode 100644 1449696017588-comp.png delete mode 100644 chrome/options.js create mode 100644 pee-companion/144.png create mode 100644 pee-companion/1449696017588-comp.png rename {chrome => pee-companion}/_metadata/generated_indexed_rulesets/_ruleset1 (100%) create mode 100644 pee-companion/b4k-csp.json create mode 100644 pee-companion/manifest.json diff --git a/1449696017588-comp.png b/1449696017588-comp.png new file mode 100644 index 0000000000000000000000000000000000000000..1720dd24963294f1f8cdd2e6801cd6683879cdae GIT binary patch literal 25935 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"], + "host_permissions":[""], web_accessible_resources: [{ resources: ["*.html", "*.js"], matches: [""] @@ -127,15 +58,15 @@ const manif3 = { js: ["dist/main.js"], } ], - declarative_net_request: { - rule_resources: [ - { - id: 'rule1', - enabled: true, - path: 'b4k-csp.json' - } - ] - } +// declarative_net_request: { +// rule_resources: [ +// { +// id: 'rule1', +// enabled: true, +// path: 'b4k-csp.json' +// } +// ] +// } }; (async () => { diff --git a/chrome/dist/background.js b/chrome/dist/background.js index cb1c99d..6b61b64 100644 --- a/chrome/dist/background.js +++ b/chrome/dist/background.js @@ -1874,6 +1874,8 @@ // src/platform.ts var lqueue = {}; + var localLoad = (key, def) => "__pee__" + key in localStorage ? JSON.parse(localStorage.getItem("__pee__" + key)) : def; + var localSet = (key, value) => localStorage.setItem("__pee__" + key, JSON.stringify(value)); var { port1, port2 } = new MessageChannel(); console.log("chrome_api", true); if (false) { @@ -1917,6 +1919,17 @@ for (const k of keys) ctor[k] = bridge(k, ctor[k]); }; + var popupport; + var pendingcmds = {}; + if (true) { + popupport = chrome.runtime.connect({ name: "popup" }); + popupport.onMessage.addListener((msg) => { + if (msg.id in pendingcmds) { + pendingcmds[msg.id](msg); + delete pendingcmds[msg.id]; + } + }); + } var Platform = class { static async openInTab(src, opts) { if (false) { @@ -1928,7 +1941,14 @@ i = (await obj2.tabs.getCurrent()).index + 1; return obj2.tabs.create({ active: opts.active, url: src, index: i }); } + static getValue(name, def) { + return localLoad(name, def); + } + static setValue(name, val) { + localSet(name, val); + } }; + Platform.cmdid = 0; Platform = __decorateClass([ Bridged ], Platform); diff --git a/chrome/dist/main.js b/chrome/dist/main.js index 7844dd0..93f988a 100644 --- a/chrome/dist/main.js +++ b/chrome/dist/main.js @@ -51,7 +51,7 @@ var define_BUILD_VERSION_default; var init_define_BUILD_VERSION = __esm({ ""() { - define_BUILD_VERSION_default = [0, 255]; + define_BUILD_VERSION_default = [0, 256]; } }); @@ -13819,50 +13819,7 @@ conc: 8, ho: false, blacklist: ["guro", "scat", "ryona", "gore"], - rsources: [ - { - name: "Gelbooru", - domain: "gelbooru.com", - endpoint: "/index.php?page=dapi&s=post&q=index&json=1&tags=md5:", - view: "https://gelbooru.com/index.php?page=post&s=view&id=" - }, - { - name: "Yandere", - domain: "yande.re", - endpoint: "/post.json?tags=md5:", - view: `https://yande.re/post/show/` - }, - { - name: "Sankaku", - domain: "capi-v2.sankakucomplex.com", - endpoint: "/posts/keyset?tags=md5:", - view: `https://chan.sankakucomplex.com/post/show/` - }, - { - name: "Rule34", - domain: "api.rule34.xxx", - endpoint: "/index.php?page=dapi&s=post&q=index&json=1&tags=md5:", - view: "https://rule34.xxx/index.php?page=post&s=view&id=" - }, - { - name: "Danbooru", - domain: "danbooru.donmai.us", - endpoint: "/posts.json?tags=md5:", - view: "https://danbooru.donmai.us/posts/" - }, - { - name: "Lolibooru", - domain: "lolibooru.moe", - endpoint: "/post.json?tags=md5:", - view: "https://lolibooru.moe/post/show/" - }, - { - name: "ATFbooru", - domain: "booru.allthefallen.moe", - endpoint: "/posts.json?tags=md5:", - view: "https://booru.allthefallen.moe/posts/" - } - ], + rsources: [], ...localLoad("settingsv2", {}) }); var settings = writable(initial_settings); @@ -14136,6 +14093,8 @@ // src/platform.ts var lqueue = {}; + var localLoad2 = (key, def) => "__pee__" + key in localStorage ? JSON.parse(localStorage.getItem("__pee__" + key)) : def; + var localSet2 = (key, value) => localStorage.setItem("__pee__" + key, JSON.stringify(value)); var { port1, port2 } = new MessageChannel(); console.log("chrome_api", false); if (true) { @@ -14179,10 +14138,33 @@ for (const k of keys) ctor[k] = bridge(k, ctor[k]); }; + var altdomains = [ + "desuarchive.org", + "archived.moe", + "archive.nyafuu.org", + "arch.b4k.co", + "archive.wakarimasen.moe", + "b4k.co", + "fireden.net", + "thebarchive.com", + "archiveofsins.com" + ]; function supportedAltDomain(s) { - if (false) - return GM.info.script.matches.slice(2).some((m) => m.includes(s)); - return !location.host.includes("boards.4chan"); + return altdomains.includes(s); + } + function supportedMainDomain(s) { + return ["boards.4channel.org", "boards.4chan.org"].includes(s); + } + var popupport; + var pendingcmds = {}; + if (true) { + popupport = chrome.runtime.connect({ name: "popup" }); + popupport.onMessage.addListener((msg) => { + if (msg.id in pendingcmds) { + pendingcmds[msg.id](msg); + delete pendingcmds[msg.id]; + } + }); } var Platform = class { static async openInTab(src, opts) { @@ -14195,10 +14177,35 @@ i = (await obj.tabs.getCurrent()).index + 1; return obj.tabs.create({ active: opts.active, url: src, index: i }); } + static getValue(name, def) { + return localLoad2(name, def); + } + static setValue(name, val) { + localSet2(name, val); + } }; + Platform.cmdid = 0; Platform = __decorateClass([ Bridged ], Platform); + var cmdid = 0; + function request(domain) { + try { + popupport.postMessage({ id: cmdid, type: "grant", domain }); + cmdid++; + } catch (e) { + if (e.message.includes("disconnected")) { + popupport = chrome.runtime.connect({ name: "popup" }); + popupport.onMessage.addListener((msg) => { + if (msg.id in pendingcmds) { + pendingcmds[msg.id](msg); + delete pendingcmds[msg.id]; + } + }); + return request(domain); + } + } + } async function serialize(src) { if (src instanceof FormData) { const value = []; @@ -19406,7 +19413,7 @@ // src/Components/App.svelte function add_css8(target) { - append_styles(target, "svelte-98wprd", '.bepis.svelte-98wprd.svelte-98wprd{max-height:260px;overflow-y:auto}.tagcont.svelte-98wprd.svelte-98wprd{display:flex;gap:5px;margin-bottom:10px;flex-wrap:wrap}label.svelte-98wprd>input[type="text"].svelte-98wprd,label.svelte-98wprd>input[type="number"].svelte-98wprd{width:95%}.content.svelte-98wprd.svelte-98wprd{display:flex;flex-direction:column}.error.svelte-98wprd.svelte-98wprd{color:red}hr.svelte-98wprd.svelte-98wprd{width:100%}h1.svelte-98wprd.svelte-98wprd{text-align:center}.form.svelte-98wprd.svelte-98wprd{display:flex;flex-direction:column;gap:20px;position:absolute;padding:15px;border:1px solid white;background-color:inherit;border-radius:10px}.form.svelte-98wprd>label.svelte-98wprd{display:flex;flex-direction:column;gap:10px}.newsbox.svelte-98wprd.svelte-98wprd{max-height:300px;overflow-y:scroll}.backpanel.svelte-98wprd.svelte-98wprd{position:absolute;right:32px;padding:10px;width:15%;top:32px;border:1px solid;border-radius:5px;background-color:rgba(0, 0, 0, 0.8);pointer-events:all;backdrop-filter:blur(9px);max-height:80vh;min-width:321px}'); + append_styles(target, "svelte-2r0xqp", '.bepis.svelte-2r0xqp.svelte-2r0xqp{max-height:260px;overflow-y:auto}.tagcont.svelte-2r0xqp.svelte-2r0xqp{display:flex;gap:5px;margin-bottom:10px;flex-wrap:wrap}label.svelte-2r0xqp>input[type="text"].svelte-2r0xqp,label.svelte-2r0xqp>input[type="number"].svelte-2r0xqp{width:95%}.content.svelte-2r0xqp.svelte-2r0xqp{display:flex;flex-direction:column}.error.svelte-2r0xqp.svelte-2r0xqp{color:red}hr.svelte-2r0xqp.svelte-2r0xqp{width:100%}h1.svelte-2r0xqp.svelte-2r0xqp{text-align:center}.form.svelte-2r0xqp.svelte-2r0xqp{display:flex;flex-direction:column;gap:20px;position:absolute;padding:15px;border:1px solid white;background-color:black;border-radius:10px}.form.svelte-2r0xqp>label.svelte-2r0xqp{display:flex;flex-direction:column;gap:10px}.newsbox.svelte-2r0xqp.svelte-2r0xqp{max-height:300px;overflow-y:scroll}.backpanel.svelte-2r0xqp.svelte-2r0xqp{position:absolute;right:32px;padding:10px;width:15%;top:32px;border:1px solid;border-radius:5px;background-color:rgba(0, 0, 0, 0.8);pointer-events:all;backdrop-filter:blur(9px);max-height:80vh;min-width:321px}'); } function get_each_context2(ctx, list, i) { const child_ctx = ctx.slice(); @@ -19465,10 +19472,10 @@ hr = element("hr"); t3 = space(); create_component(tabs.$$.fragment); - attr(h1, "class", "svelte-98wprd"); - attr(hr, "class", "svelte-98wprd"); - attr(div0, "class", "content svelte-98wprd"); - attr(div1, "class", "backpanel svelte-98wprd"); + attr(h1, "class", "svelte-2r0xqp"); + attr(hr, "class", "svelte-2r0xqp"); + attr(div0, "class", "content svelte-2r0xqp"); + attr(div1, "class", "backpanel svelte-2r0xqp"); }, m(target, anchor) { insert(target, div1, anchor); @@ -19593,7 +19600,7 @@ } }; } - function create_if_block_10(ctx) { + function create_if_block_11(ctx) { let tab; let current; tab = new Tab_default({ @@ -19685,7 +19692,7 @@ } }); tab4.$on("select", ctx[19]); - let if_block = ctx[8].akValid && create_if_block_10(ctx); + let if_block = ctx[8].akValid && create_if_block_11(ctx); return { c() { create_component(tab0.$$.fragment); @@ -19750,7 +19757,7 @@ transition_in(if_block, 1); } } else { - if_block = create_if_block_10(ctx2); + if_block = create_if_block_11(ctx2); if_block.c(); transition_in(if_block, 1); if_block.m(if_block_anchor.parentNode, if_block_anchor); @@ -19806,7 +19813,7 @@ } }; } - function create_if_block_9(ctx) { + function create_if_block_10(ctx) { let label; let input; let t; @@ -19842,7 +19849,7 @@ } }; } - function create_if_block_62(ctx) { + function create_if_block_72(ctx) { let t0; let label; let t1; @@ -19853,8 +19860,8 @@ let if_block1_anchor; let mounted; let dispose; - let if_block0 = ctx[8].herror && create_if_block_8(ctx); - let if_block1 = ctx[8].akValid && create_if_block_72(ctx); + let if_block0 = ctx[8].herror && create_if_block_9(ctx); + let if_block1 = ctx[8].akValid && create_if_block_8(ctx); return { c() { if (if_block0) @@ -19872,8 +19879,8 @@ if_block1_anchor = empty(); attr(a, "title", "Only requires Search Files permission. See Hydrus docs on where to set this up."); attr(input, "type", "text"); - attr(input, "class", "svelte-98wprd"); - attr(label, "class", "svelte-98wprd"); + attr(input, "class", "svelte-2r0xqp"); + attr(label, "class", "svelte-2r0xqp"); }, m(target, anchor) { if (if_block0) @@ -19899,7 +19906,7 @@ if (if_block0) { if_block0.p(ctx2, dirty); } else { - if_block0 = create_if_block_8(ctx2); + if_block0 = create_if_block_9(ctx2); if_block0.c(); if_block0.m(t0.parentNode, t0); } @@ -19914,7 +19921,7 @@ if (if_block1) { if_block1.p(ctx2, dirty); } else { - if_block1 = create_if_block_72(ctx2); + if_block1 = create_if_block_8(ctx2); if_block1.c(); if_block1.m(if_block1_anchor.parentNode, if_block1_anchor); } @@ -19941,7 +19948,7 @@ } }; } - function create_if_block_8(ctx) { + function create_if_block_9(ctx) { let span; let t_value = ctx[8].herror + ""; let t; @@ -19949,7 +19956,7 @@ c() { span = element("span"); t = text(t_value); - attr(span, "class", "error svelte-98wprd"); + attr(span, "class", "error svelte-2r0xqp"); }, m(target, anchor) { insert(target, span, anchor); @@ -19965,7 +19972,7 @@ } }; } - function create_if_block_72(ctx) { + function create_if_block_8(ctx) { let label0; let t0; let input0; @@ -19986,12 +19993,12 @@ input1 = element("input"); set_style(input0, "width", "5ch"); attr(input0, "type", "number"); - attr(input0, "class", "svelte-98wprd"); - attr(label0, "class", "svelte-98wprd"); + attr(input0, "class", "svelte-2r0xqp"); + attr(label0, "class", "svelte-2r0xqp"); attr(input1, "placeholder", "Restrict to these tags (space to separate tags, _ to separate words)"); attr(input1, "type", "text"); - attr(input1, "class", "svelte-98wprd"); - attr(label1, "class", "svelte-98wprd"); + attr(input1, "class", "svelte-2r0xqp"); + attr(label1, "class", "svelte-2r0xqp"); }, m(target, anchor) { insert(target, label0, anchor); @@ -20097,8 +20104,8 @@ let if_block1_anchor; let mounted; let dispose; - let if_block0 = ctx[7].eye && create_if_block_9(ctx); - let if_block1 = ctx[7].hyd && create_if_block_62(ctx); + let if_block0 = ctx[7].eye && create_if_block_10(ctx); + let if_block1 = ctx[7].hyd && create_if_block_72(ctx); return { c() { label0 = element("label"); @@ -20319,7 +20326,7 @@ if (if_block0) { if_block0.p(ctx2, dirty); } else { - if_block0 = create_if_block_9(ctx2); + if_block0 = create_if_block_10(ctx2); if_block0.c(); if_block0.m(t16.parentNode, t16); } @@ -20352,7 +20359,7 @@ if (if_block1) { if_block1.p(ctx2, dirty); } else { - if_block1 = create_if_block_62(ctx2); + if_block1 = create_if_block_72(ctx2); if_block1.c(); if_block1.m(if_block1_anchor.parentNode, if_block1_anchor); } @@ -20443,23 +20450,25 @@ let t2; let h30; let t4; - let div0; let t5; + let div0; + let t6; let button; - let t7; - let dialog; let t8; - let hr; + let dialog; let t9; + let hr; + let t10; let h31; - let t11; - let div1; let t12; + let div1; + let t13; let input1; let current; let mounted; let dispose; - let if_block = ctx[7].phash && create_if_block_52(ctx); + let if_block0 = ctx[7].phash && create_if_block_62(ctx); + let if_block1 = ctx[7].rsources.length == 0 && create_if_block_52(ctx); let each_value_4 = ctx[7].rsources; let each_blocks_1 = []; for (let i = 0; i < each_value_4.length; i += 1) { @@ -20488,37 +20497,40 @@ input0 = element("input"); t0 = text("\n Enable perceptual hash-based filtering"); t1 = space(); - if (if_block) - if_block.c(); + if (if_block0) + if_block0.c(); t2 = space(); h30 = element("h3"); h30.textContent = "Booru sources"; t4 = space(); + if (if_block1) + if_block1.c(); + t5 = space(); div0 = element("div"); for (let i = 0; i < each_blocks_1.length; i += 1) { each_blocks_1[i].c(); } - t5 = space(); + t6 = space(); button = element("button"); button.textContent = "Add a source"; - t7 = space(); - create_component(dialog.$$.fragment); t8 = space(); - hr = element("hr"); + create_component(dialog.$$.fragment); t9 = space(); + hr = element("hr"); + t10 = space(); h31 = element("h3"); h31.textContent = "Blacklisted tags"; - t11 = space(); + t12 = space(); div1 = element("div"); for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } - t12 = space(); + t13 = space(); input1 = element("input"); attr(input0, "type", "checkbox"); - attr(div0, "class", "tagcont svelte-98wprd"); - attr(hr, "class", "svelte-98wprd"); - attr(div1, "class", "tagcont svelte-98wprd"); + attr(div0, "class", "tagcont svelte-2r0xqp"); + attr(hr, "class", "svelte-2r0xqp"); + attr(div1, "class", "tagcont svelte-2r0xqp"); attr(input1, "placeholder", "Press enter after typing your tag"); }, m(target, anchor) { @@ -20527,29 +20539,32 @@ input0.checked = ctx[7].phash; append(label, t0); insert(target, t1, anchor); - if (if_block) - if_block.m(target, anchor); + if (if_block0) + if_block0.m(target, anchor); insert(target, t2, anchor); insert(target, h30, anchor); insert(target, t4, anchor); + if (if_block1) + if_block1.m(target, anchor); + insert(target, t5, anchor); insert(target, div0, anchor); for (let i = 0; i < each_blocks_1.length; i += 1) { each_blocks_1[i].m(div0, null); } - insert(target, t5, anchor); + insert(target, t6, anchor); insert(target, button, anchor); - insert(target, t7, anchor); - mount_component(dialog, target, anchor); insert(target, t8, anchor); - insert(target, hr, anchor); + mount_component(dialog, target, anchor); insert(target, t9, anchor); + insert(target, hr, anchor); + insert(target, t10, anchor); insert(target, h31, anchor); - insert(target, t11, anchor); + insert(target, t12, anchor); insert(target, div1, anchor); for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].m(div1, null); } - insert(target, t12, anchor); + insert(target, t13, anchor); insert(target, input1, anchor); current = true; if (!mounted) { @@ -20566,16 +20581,27 @@ input0.checked = ctx2[7].phash; } if (ctx2[7].phash) { - if (if_block) { - if_block.p(ctx2, dirty); + if (if_block0) { + if_block0.p(ctx2, dirty); } else { - if_block = create_if_block_52(ctx2); - if_block.c(); - if_block.m(t2.parentNode, t2); + if_block0 = create_if_block_62(ctx2); + if_block0.c(); + if_block0.m(t2.parentNode, t2); } - } else if (if_block) { - if_block.d(1); - if_block = null; + } else if (if_block0) { + if_block0.d(1); + if_block0 = null; + } + if (ctx2[7].rsources.length == 0) { + if (if_block1) { + } else { + if_block1 = create_if_block_52(ctx2); + if_block1.c(); + if_block1.m(t5.parentNode, t5); + } + } else if (if_block1) { + if_block1.d(1); + if_block1 = null; } if (dirty[0] & 73856) { each_value_4 = ctx2[7].rsources; @@ -20654,40 +20680,44 @@ detach(label); if (detaching) detach(t1); - if (if_block) - if_block.d(detaching); + if (if_block0) + if_block0.d(detaching); if (detaching) detach(t2); if (detaching) detach(h30); if (detaching) detach(t4); + if (if_block1) + if_block1.d(detaching); + if (detaching) + detach(t5); if (detaching) detach(div0); destroy_each(each_blocks_1, detaching); if (detaching) - detach(t5); + detach(t6); if (detaching) detach(button); if (detaching) - detach(t7); + detach(t8); ctx[50](null); destroy_component(dialog, detaching); if (detaching) - detach(t8); + detach(t9); if (detaching) detach(hr); if (detaching) - detach(t9); + detach(t10); if (detaching) detach(h31); if (detaching) - detach(t11); + detach(t12); if (detaching) detach(div1); destroy_each(each_blocks, detaching); if (detaching) - detach(t12); + detach(t13); if (detaching) detach(input1); mounted = false; @@ -20695,7 +20725,7 @@ } }; } - function create_if_block_52(ctx) { + function create_if_block_62(ctx) { let label; let input; let t0; @@ -20710,9 +20740,9 @@ a = element("a"); a.textContent = "?"; attr(input, "type", "number"); - attr(input, "class", "svelte-98wprd"); + attr(input, "class", "svelte-2r0xqp"); attr(a, "title", "Higher will filter more potentially different images, lower will let more identical images through"); - attr(label, "class", "svelte-98wprd"); + attr(label, "class", "svelte-2r0xqp"); }, m(target, anchor) { insert(target, label, anchor); @@ -20738,6 +20768,22 @@ } }; } + function create_if_block_52(ctx) { + let p; + return { + c() { + p = element("p"); + p.textContent = "Don't know what to put here? Ask some anons ;)"; + }, + m(target, anchor) { + insert(target, p, anchor); + }, + d(detaching) { + if (detaching) + detach(p); + } + }; + } function create_each_block_4(ctx) { let tag; let current; @@ -20834,22 +20880,22 @@ button = element("button"); button.textContent = "Add"; attr(input0, "type", "text"); - attr(input0, "placeholder", "Gelbooru"); - attr(input0, "class", "svelte-98wprd"); - attr(label0, "class", "svelte-98wprd"); + attr(input0, "placeholder", "Safebooru"); + attr(input0, "class", "svelte-2r0xqp"); + attr(label0, "class", "svelte-2r0xqp"); attr(input1, "type", "text"); - attr(input1, "placeholder", "gelbooru.com"); - attr(input1, "class", "svelte-98wprd"); - attr(label1, "class", "svelte-98wprd"); + attr(input1, "placeholder", "safebooru.com"); + attr(input1, "class", "svelte-2r0xqp"); + attr(label1, "class", "svelte-2r0xqp"); attr(input2, "type", "text"); attr(input2, "placeholder", "/post.json?tags=md5:"); - attr(input2, "class", "svelte-98wprd"); - attr(label2, "class", "svelte-98wprd"); + attr(input2, "class", "svelte-2r0xqp"); + attr(label2, "class", "svelte-2r0xqp"); attr(input3, "type", "text"); - attr(input3, "placeholder", "https://yande.re/post/show/"); - attr(input3, "class", "svelte-98wprd"); - attr(label3, "class", "svelte-98wprd"); - attr(div, "class", "form svelte-98wprd"); + attr(input3, "placeholder", "https://safebooru.com/post/show/"); + attr(input3, "class", "svelte-2r0xqp"); + attr(label3, "class", "svelte-2r0xqp"); + attr(div, "class", "form svelte-2r0xqp"); }, m(target, anchor) { insert(target, div, anchor); @@ -21083,8 +21129,8 @@ if (ctx[7].fhost === void 0) add_render_callback(() => ctx[53].call(select)); attr(input, "type", "number"); - attr(input, "class", "svelte-98wprd"); - attr(label, "class", "svelte-98wprd"); + attr(input, "class", "svelte-2r0xqp"); + attr(label, "class", "svelte-2r0xqp"); }, m(target, anchor) { insert(target, p, anchor); @@ -21185,7 +21231,7 @@ for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } - attr(div, "class", "bepis svelte-98wprd"); + attr(div, "class", "bepis svelte-2r0xqp"); }, m(target, anchor) { insert(target, div, anchor); @@ -21473,7 +21519,7 @@ t2 = space(); div = element("div"); if_block.c(); - attr(div, "class", "newsbox svelte-98wprd"); + attr(div, "class", "newsbox svelte-2r0xqp"); }, m(target, anchor) { insert(target, p, anchor); @@ -21819,6 +21865,10 @@ $$invalidate(3, news = await res.json()); }; function appendBooru() { + if (true) { + request(newbooru.domain); + alert("Requested! Please click the PEE icon to validate"); + } set_store_value(settings, $settings.rsources = [...$settings.rsources, newbooru], $settings); dial.toggle(); $$invalidate(1, newbooru = {}); @@ -24747,6 +24797,8 @@ var ViewCount_default = ViewCount; // src/main.ts + if (!supportedMainDomain(location.host) && !supportedAltDomain(location.host)) + throw "PEE not supported here, skipping"; var qp; var csettings5 = initial_settings; var processors = [thirdeye_default, pomf_default, pngv3_default, jpg_default, webm_default, gif_default]; @@ -24998,14 +25050,21 @@ var __DOMParser = false ? _DOMParser : DOMParser; var gmo; var earlystartup = async () => { - if (location.host == "arch.b4k.co" && false) { + if (["arch.b4k.co", "desuarchive.org"].includes(location.host) && false) { if (!GM_getValue("warning_seen2", false)) { - alert(`Due to b4k's policies being mean, PEE will get you banned, so the userscript version is disabled here`); - alert("Use the WebExtension version of PEE if you want to use b4k!"); + alert(`Due to b4k and desuarchive policies being mean, PEE will get you banned, so the userscript version is disabled here +Use the WebExtension version of PEE if you want to use b4k!`); GM_setValue("warning_seen2", true); return false; } } + if (["arch.b4k.co", "desuarchive.org"].includes(location.host) && true) { + if (!Platform.getValue("warning_seen3", false)) { + alert('Due to b4k and desuarchive policies being mean, PEE cannot display content properly here. A "PEE companion" extension will be released as including that functionnallity in PEE lengthens ChromeWebStore review delays, please understando.'); + Platform.setValue("warning_seen3", true); + return false; + } + } return true; }; var init4 = false; diff --git a/chrome/manifest.json b/chrome/manifest.json index 1b01aec..be1e59f 100644 --- a/chrome/manifest.json +++ b/chrome/manifest.json @@ -2,53 +2,13 @@ "manifest_version": 3, "name": "PngExtraEmbedder", "description": "Discover embedded files on 4chan and archives!", - "version": "0.255", + "version": "0.256", "icons": { "64": "1449696017588.png" }, - "permissions": [ - "declarativeNetRequestWithHostAccess" - ], + "permissions": [], "host_permissions": [ - "https://*.coom.tech/*", - "https://*.4chan.org/*", - "https://*.4channel.org/*", - "https://*.4plebs.org/*", - "https://*.pomf.cat/*", - "https://pomf.cat/*", - "https://desuarchive.org/*", - "https://archived.moe/*", - "https://archive.nyafuu.org/*", - "https://arch.b4k.co/*", - "https://archive.wakarimasen.moe/*", - "https://b4k.co/*", - "https://fireden.net/*", - "https://thebarchive.com/*", - "https://archiveofsins.com/*", - "https://catbox.moe/*", - "https://zz.ht/*", - "https://take-me-to.space/*", - "https://*.4cdn.org/*", - "https://*.desuarchive.org/*", - "https://*.archived.moe/*", - "https://*.archive.nyafuu.org/*", - "https://*.b4k.co/*", - "https://*.wakarimasen.moe/*", - "https://*.fireden.net/*", - "https://*.thebarchive.com/*", - "https://*.archiveofsins.com/*", - "https://*.catbox.moe/*", - "https://*.zz.ht/*", - "https://*.imouto.kawaii.su/*", - "https://*.take-me-to.space/*", - "https://*.gelbooru.com/*", - "https://*.yande.re/*", - "https://*.sankakucomplex.com/*", - "https://*.rule34.xxx/*", - "https://*.donmai.us/*", - "https://*.lolibooru.moe/*", - "https://*.allthefallen.moe/*", - "https://desu-usergeneratedcontent.xyz/*" + "" ], "web_accessible_resources": [ { @@ -68,8 +28,6 @@ "https://*.4chan.org/*", "https://*.4channel.org/*", "https://*.4plebs.org/*", - "https://*.pomf.cat/*", - "https://pomf.cat/*", "https://desuarchive.org/*", "https://archived.moe/*", "https://archive.nyafuu.org/*", @@ -78,31 +36,7 @@ "https://b4k.co/*", "https://fireden.net/*", "https://thebarchive.com/*", - "https://archiveofsins.com/*", - "https://catbox.moe/*", - "https://zz.ht/*", - "https://take-me-to.space/*", - "https://*.4cdn.org/*", - "https://*.desuarchive.org/*", - "https://*.archived.moe/*", - "https://*.archive.nyafuu.org/*", - "https://*.b4k.co/*", - "https://*.wakarimasen.moe/*", - "https://*.fireden.net/*", - "https://*.thebarchive.com/*", - "https://*.archiveofsins.com/*", - "https://*.catbox.moe/*", - "https://*.zz.ht/*", - "https://*.imouto.kawaii.su/*", - "https://*.take-me-to.space/*", - "https://*.gelbooru.com/*", - "https://*.yande.re/*", - "https://*.sankakucomplex.com/*", - "https://*.rule34.xxx/*", - "https://*.donmai.us/*", - "https://*.lolibooru.moe/*", - "https://*.allthefallen.moe/*", - "https://desu-usergeneratedcontent.xyz/*" + "https://archiveofsins.com/*" ], "css": [], "run_at": "document_start", @@ -110,14 +44,5 @@ "dist/main.js" ] } - ], - "declarative_net_request": { - "rule_resources": [ - { - "id": "rule1", - "enabled": true, - "path": "b4k-csp.json" - } - ] - } + ] } \ No newline at end of file diff --git a/chrome/options.js b/chrome/options.js deleted file mode 100644 index fb9342f..0000000 --- a/chrome/options.js +++ /dev/null @@ -1,3 +0,0 @@ -console.log('optiosn') -debugger; -console.log('optiosn') diff --git a/pee-companion/144.png b/pee-companion/144.png new file mode 100644 index 0000000000000000000000000000000000000000..dc6a7b2c8e72c6202e59197f3e0c05976a6fb349 GIT binary patch literal 33090 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 literal 0 HcmV?d00001 diff --git a/pee-companion/1449696017588-comp.png b/pee-companion/1449696017588-comp.png new file mode 100644 index 0000000000000000000000000000000000000000..1720dd24963294f1f8cdd2e6801cd6683879cdae GIT binary patch literal 25935 zcmV(rK<>YZP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3^ilI6IrWdAjaI|PXmU&G-`W<7%*ey>GEWWmQI2&@5u`->WWer)l5{(SxXfBpH8>(}dlztPVhuEw9@AAix> z&-eRZzu$k}FqFT)(a#m!*Z0Zi{P}^OH@d^m6+PeokDn__wdB9t+8jTh{QP{Y{PEv& z=a6E$^26^>ICD;wKbLSmnf07r=sQB)Zxp`;{r!z!|NrZyfolruzV4IX?>l@~dHY|u z8(%ZOUw1ip;l&Hu9e=(R_rjlSC6~aJ)}Ie*=kLY*^VcXFCTrHP3;kb^cth zz}~;tbIq$=@3r>VaSbl<2`gm2hA@tB?{5}1sfKZD43EFAH{`qC^DfxS*f#Xs;rF#% z`(x|=xN((p9_PGxX}EZ^Ya7}B<*(zPzVLnZrRzG&@3rE(f|kxzoEO{g7hcAWT<_1K z#=XG5e*OI)_w{B6<6h>%4Yso%-&^!}{b5}9-sqbbM!tStf93h}1}qUD9l4n6W(UrM zS6zuK$|2R=T#OB}~d^SImul>>x!}o1a^?nYVHQ}y> z9cpaW^F-_?KLs0V@s3Z7F~uB9tg)p#>3J#TBs{l#=O@RUa?a(*HMeq?r^J#oXORcpvKD6=9jh}A3ptTbaL*kKP96GoBGg8hMmaN1I{Z69=DZ z=2>Q)ZCwjfTF;6rt-Q*rtG$@od%w>c-}L6=EpL6>?_K-Z)_?i+KiIYFXV=2sDPNd> z?;79D`PW-q!bx<`*s<_jYN_pkf*?{;k(CC1*d&kbGF^Tzw$Gr#XMW_Tk$ z3F4=hTbZecw~x%Kg;3vdoUNbXUhORHZRuTX!HBrXOz*hgRNI~UY<;BOUT`eoOc~#} z+NyWZqY?lBHXNGGGdrL*xm~gB@txlCT!3xQEiRVhO=TuOo!en|z|eA)HF`@|2?IMi zj~o`;(yyM=S}DD?-*wD9dL@Rx`JGo>PkztZ7q^njz{TuO`ki}v?lm>M+2edz zl&~7>lrGFK=dngj@Qk}1+`!@&cl3s{KyEPGx2C*U>G52Byyvq(!&vUgvfOu<$)w@S z--l(ci(s7Bff1(jO~JdsJYy-v@)&pO?>&aFZzOy)dAYKIeN}@u}G4#7c1Axp2f-z>0z_z)GGp-n;h#z~r?SRv2HdQtXUi zTE&XaH-_>Y9r;kU>0{2A>euQe}I-)jGj3 z?neZzM`JD6%x40FE3$_1#mfN{jq)iYzgGY`2oN=-1{zEd=&U!3KKok|DCzCJ2LLwK z^a==z1#o0t!hD|6%ec`w7mJ9Sop<#DaDf`n2@0?AVerN0gT3=ucOXUrNrZD;1rQFz zQV=@_eqy!~Up_vqN+7wD?+TT@0et;A4x!hp3kMtWo?~^R2R3%kLLe0)@uk=J5~0$U z%>BZlr|`j&ups<2i`*Y>J%aWJ9~UyPq76(8?15kuoTYT45nQ~LK`a|aA1+9lmQcCj zDzL(9$3d5>hJ*DWSikM*Tvo${A66OLPH~2XtFctP*%@U9Pw@TDH3`E&-Hfk{^~{q< ze0)ZAUm6uQ6^QAhV^a^VnSslmu&IDe5x{DCU`E_WJRvaGz{<2K-)bGBVo@{gHOtQn zT|jK~(Yf&47jA!Hcp0YroUDEay`aJE)ZteqSQ4lQV4%~o`!^KhhE(8lIO>#WG~Tu4 z9Xu-m3huNf+zTGUom!R5J^P>z{_gmS%j8PN;V ze2la(ejp(u{^2v&C|ee0M~|_|8DfC44%!Qp(Od+eb6|Uoy}3*8?S}9@>4IPm!aJ)z zLD+=bqzsz_`&fJ|WQ2(MKFgn|Yz9Gdo`(S+TOj`NdukJ&QQrk~24nd;Fehvg3BgVy zW@?a0z*QmZc&&*CZk~5NxPFXS^@O8xS8puyZreOF3IaGMM1uIR0wh!~+@aYi7x{iO zv6;w%otA^I&|g9lizipdNkA*536{eOb9v~bR@1)0hu0w!E})$2!)~6F8+`DXgT;EK zLgrc4W6}^~k_(p-*A4p~=|%Iv1-PmEd7-2rpxF!{1y+Z0PJW?*$E_~zy;g) z=XJ+vB%kFXBjfO^;)OCD~b z0I;%(X_l~1bn@*9)eJEat8m>3uSaF)gbsoo@?Ss%tp$%u(xGjX16xvoqCXMQ6Zd4V zxl0)}pVgtPdBfcy#K)fydB-2x1qxtXEaxxU6~gtKcA>m7AG&E5YwvPHyN)?Q)MUz! z_km6%enUcQzp+6h$4MYp87~<#YfD(i>>7#?>;@8%v1q4wl!AlgCQrxBWXI;Jf4+7d z*!3dTW1@4fS51YBBWQQIDeL7Xh9jZTxTa1-ycAFYykor*Z?iOD6>N@OWKmX`*vCt1{2R0Ap#gd0W`#ujq4a~emb~DoIj6-`zMGKLdy5M zF(ek89|cjaAH|*n+=Sic4uBqZq$4GG84LpuNucW4)FNoZ7jXs{<7gOWWaZgjTsr1} zhmFjF15AXcjJ`M#G#xU3Lh%}8vJ#QXI*`T}*OcB0yCO8h$GGOcuce3Q+O=&16(7@O>|lq}0D#APu>^d#^s82h z2%$qq;Q~fLUA;N-JHhYCXzW`?1ASNn;FH85r(Q4_3GtfCfe)dvG7Ab7f?5>gwCPb} z3T_O4d^fbRP~dGfS@k?1HKc5sV*rmP#I(pwyQ*Pc1@XjhgV1wk!&k&J8g|E(UbO@y z3ar|QX?%q?x(`UG<2Gm0o<}zbslNHbM{rF%5ta{mCtSeY-X`GT+c0DFKnl1B_pn(a zOp3S$T^`3%JU_# za3qKo&VnW^m_6FUR4H$We}o6sEX9D1!$TTD8QPFn9Y_H*E$hx35h2i-_hQ+n(M3Bp zKdAXNcaXPH5JE&EkO%ET7Tm~HM5&pNR1fY1;sUgGwF#TdhPt%e$h)3>_!T-xCWpL{ zZ4l-Gv;wmrgIO!WRTm+5@(VBPco^oh3~ePhK(9;rFzO5SaJDR;t`AWq;3I*phV zM}>c|Snc2rdLX~d;l6V|e987ZpNpZyp9^iz8Zxi*{FcGNXxPIu_(gi&9deUzfZ8u5W$CwU1Q-;kC^2QLph09z}k_fgpc_iz9&|mzvzEW6b&2# zXIwjU=*xHsw2zNh^H%5#(18k>e9XPMN5q`CwHv8PB%12u=iYgNz%rg7OE*~;yg!6A zF(Zx*kZjD^WrZfg30}N6v7h%n1A;Ay_pxB%J2m84^3T^um{kl_M6V38q-XA2`+MGv zjappEIKYN`qc`NY>u={WnXz@mX>!d(-UAc5PQi$utWPjXV8{3x6vnLfKph3bNXP4Q zdtu>(frh;hAF-YR*tDwx!&Pn053?S{Fhul*9DB;)p7EFMC??+UjrEuae9O!TQbZP- z6l+iO!P1*hg&ijl97N7L7jzo@r1WeMfOSmRZ|>{MzfNKmE(WTpm>rL-0WC3BsGh!P^6mDDm)S02OTIZurntn~5rx=ndJ#$;aldoVMJG?TiFu z7Z4)0KuFfEY~>t~R$~kp06`uyLSTdtvi>IBJ~juXqi8xi25mPI1JJxz_m|gxV6{(d{T121XhYH1|;q1X}NUu;;$;3 zhW9=o6*v4=R=Y*KPQv|MUpA-8)LMqeCIXAG9{nTF=0}6k!Ji^ZfnLpQk@0vE<_RfR z$%TLi)_`;~Lp{L&)?WgScKS(dACpgzL)`!)AdvTwGOsQRgoV01e)x^FRx*IXSVFmA z6eswKLZ7pn>%Izh#BH4SyyP&%L}lqB+T%j)PLOi+db}%Wj=?KDo(CHP{D`zt-!irw zehx?@K6`a^-OC+;NDrC^K?4)S4NJi6;D~4<1jIRNfu;Z-)ze!p&a8zcO2~Cknk%^x z$GAdm#7%Tby*=-(NLgI1>AwL>0!oPbri-D2&3qkhmhS8^>v4ZxA8-Z3gL1u0uNMPa zW+{mHKsr|%J$~6?fZs&_ZDr5S&5d*{h!8=_1I3X6)|>4)<lTF>M%1X zXOJ?WBSh~6gP-cAJME^cmZm`oPvk<5I5h53uGHmX%*ahTFpUi z0pS99MtV_Z_%px|O$2S*Q-+w<0Wz~{^PU*KrB#w$c9koK_g@}75_So2(B^WP;0eof zPl8|c7!ZovFO26g_u)drHi)!WBetq&O;54=Pt!M0*k?BZWcUOlVRx{_<)JN6hutZO zOC;_!DesF^N7JItJ@q1Z06Sbb7>lfwPF=1)(Quc=?b_dvik@YVeqwR_^COEB%fj-n)!@?X z1D<7Cf0$GX@yKhINJQmx1gseWvqDI!-2)3&yMu63tvWBm#eJX66g>6-V8_gJ{qZkjFuXWgPoOnZ71ezILg8IKXz1b|?n66zOXa%ZuTX9zWvKLo<{ zoV%uAn6G(YFCNW5wZ0Ple6MIV8EWYAL?TU3hSLk!AFqD{?iW1oHPZk`De&}Vj~{rB%F{{!At{c3omQID%$79G<2$Z=k!t(6GMhyq z>|`XOzQJ37wr7HyL<8tV(Q-Et&&Z%2P+lPzaEYTvr7y3xs;Bd6k6-vv6H|Xww8Zz* z>KF<(eq~ea72H7ybQTtu#AyeJbe?Q11Y^tnb039lFg)3(w9VlJ5C$Lm-d{zDzt7hU zAtWD%J+6HW{N;<$1#@Rx`IzVDXcJ$BSdM{R&@XqH&c{yM*ipMeugS{|fqIH3VfNl6b@HwVb25slz2N%fd zzWrEXd7cF~B+~TCtLaVUO7m7SLhlZU@2z$@c&wyrCQv)Q%Hd4Q4+*IZ6JA z_zukA#N8vY&L+v{iQgumrime(GNX<_s=(D@!X8a6bA2hZI_avzbS+X2(sb?n%VL<}DT;L`2Zxna$JC0y;xodG8jj<8Is$412Z81);Ig)Qx5Il*79+7Y$b; z^t=JWp6}N}Mfk>qalwlffj2_c)6+YQXCI&QhQC!jmetrQ0M(3*Lhda`cAX=7b3xJ2 zckpn}lpj+Hk5w*~^P*^WRI)^Y_}(o(T%c*eR9nxR)>PsfhPmFjA|Wq6vS~1~2YACU zErUW-{-%PtwJRo=_00mh9LOZ(A#c{^f$~l<>TD3LjK;s;UE?7mvLq*2PU4Z~iJ$~L z;mHDOfK3zLiD<2`A3z_CVgoS6lKa}ThHfKITGDq;9u0_vV!m{+qDgVleB8C#+- z5Z()H0yz)2B041$BzukxBGidgd_@_Xe=;d;Ey;xGzM(|a1p59&QlmVxbPEab0zxS2 zv&Qp40|?Uh&k^=dx`$}<;Q_qWEMHcpS#|^)2ZgmEHnT_01dOJgb*Ti^5_uJ-61l!O9rw$#0VVv-K37t zVO-DHM$tfPJ#SrOMwt$uWxR8YC&bJVZcPxRywVRNlba>(E z|Na%nub0e@8=xiz8_klx?JHR0juFz|X|Ux#R|tYWuIJ&yP)eG?>EYOQ7&mU{DjC)* zRO8)>{h#Cee4!d*h=DoyMX7DtL*Xc>EJ^q z41Mk{4T9mY|AQqiPI6v^Pc*ql+~v6I3d^9#G8fzZlY z$vbrntj7b?C3Tm@T%PN6#aFYEb$Pl(Tx<8S-piW%juiK_$sR8;2QD+aF?N;=4U>sJ zgdR+}v8Zg`vQ(!cF$Zz_3FX*O4W@1(n@Rj1`;)|mrL$biD_0@CO=EDYm-4eExn5s#~5#T3<&WtZI6LkUDc zdV^>UBNwtMyoU z44Cqjz`+ujODQa`$T0(9pM7m89nB<`m_Z5 z557``f`mvAV-#k2x%`EuTd`gUZeQ(jc#4U3$T(O8{-K9F^2dN~uE^f8&5T;wZ?e+|orNO0@FCO6 zEz9#jCL#mq9nCetP2MaUMJiAYL znZ^mmTNtx~%-*ziB?e9cUbTGdfY}o`km8L+-?f81=d&W~v^R>v<>SgOK#f*3NoFe>8pj)n=_kr5| z>%9K9;iO{QWowanxAJpdZ>D*l*TYO$v4OX;6~~=~S9p(7TY3v~ZJ3=*far7IPXoOP z+;$oP^n}Ts|2|nOtd@0VTi796^C11Wqh+Qn6owxzAmshpP682b*tfN#Ujc3i%l8ZP z@3s>xmDS@7=8=s}c=<$vqdXqM;IK9bVt^5K#0*|HJiHqof@IU@fIFdjWzW9~MgdB_ z2fD4xbyATY*-t#-b1+pKPAo%i_i1~g*}wL%F8kPbG)p;l^3}Svey^ijr2_F$oxZT0 zk1Y_2OebEDSy=6(qFL}yB>Q8-0sPuL9E!)51xqr^p(#ux{o2{CkTL|VBTrjc#q<04 zb0+?`6LC{h`$XJeirTElZV}T!E%C<5cliwvW%0FV@~`S&brT4=^|Hc~AG@rf1=9FW zPZ{;JIcHaL644To)v_C0MP`XVLdN`t@|?i(R0d^FY@@AoLP1}hoO?Zj!q4|NHD;U@Sj zq+PAW@*Gb56fFvxtv%}&hR7WqH+ zTtc{5HzeVg-6|@VYAZ~Mo@*(4kfCOZxYZJ^QGo$Z80w8|v6;`R@~=`uWQ|?qrQ@p7Z5B&pRLJ4FA;MwOy=qa!s}Au~=n0#Lj~-Z&F3`XZ zqa@#p1-9vB6MK6+?MC7XwYK&Y2`O&Nm17OooWqpON3#9%wCGU<4lslUDKX~&ceTfX zl`(I#T2I(MY|BGa)FGs0(|P-@6k<65Bh&iFmpeXHO?BG95RFE{ho`zXl$o6)eDdDs zyV()Jn_3T}v>1 zc`nW4J?1k(RI5{pEyXYDH^105@a%~Ploo^?n^glMgc73lop&3s;P%=k;12A$)KgNG-d)5_oZz zYb|2l0B~^s0SAsAlw@fyH*2-@!e^Hsv0kfIA?!EQf+&5ch`0*Sx3a_g5WNvd!Gwu1 z5~?l5B`UsF7GY>9^M2F2C%udx+d^a%Bl*BG4kZ`{!?+n_O3umo36yMA~;jifX)+n-_s=8_&3WgfxBRt*5&l4%SJi3u)4 z*zH+_cv`xi)jM~!h9Rfdk`9<)wfgn8KjYmAOLM5%lU;-lSZS|P9O0Ni__Z0jCpU6J z?2gNTf5XEb&-xQah9W*~WJlMtP!^a;Q9ag`S>CYP4Q9(anhQKk#*H+B?I8=^V*>O7 z6iR)naz)lUK8&wkg01qxp51tE+V%h-IM52Y2jkYeAbqzz?u|$beB{Tvm|`lp zXI#skR8K9=W(p+PYuqq6Phpm!s#^AArr!F*j!wRaBKYn=?nSNp?N+%!gYxdg^k5Tj zKF!})NCTCq9>p1N);?zjvJsK@6Z>JIXero_aKN4xHUd;go>|6sACv}f3h8MKGGA5g z#D(JE2)3g_0ZXa}@JIlQ`Svw@x|RknzZJQ`649J2d(Ol#G&=?b%xag*vr3C?g$Hov z0RI4(xJmX7_r*Lb#*Gy15t_ zsgNFf5F0GyZMMyo#FZ8NYdzoSgyGBu;!T--NCNXbOd2m>XIX>QqJuTyGNU!r&rU0y zR;4{?>D7q^{p%Jz(=I4=J`X`2#X1fH&-A`f;h5G+R-Ib|?70xG;E!dq2)k=5i65vS z^QTxwG)re8b#1#d!J!14ES8BF8q zhuJrN)rWnL%3RMRuCT^k53;AnEM%02EvMndd#tB}LQPKaiYL*1_ldY)?H4Bo;Q z*dVNIOGAW`WrpR=%WCV76DKcCOy8p!oTULx zxg>}$2(>f$?}aZpzUA$J4`LY!k=TiriPu-cwfD5B(~2`Gkjb#6!(P^z!Z+c@gqmEe z*4aebnKpK79iF7#rX%1xnSHsrlox#V=$5Tz4?^)MoX`qt#Ky`G^XSg_vAiWls5Uor zgz`w=2Ht6XQ1MQ@gz|`jmT~1Sy|En)XP@TRdqLvxzIKyJ39ORl z89tg4=F?vra5`HV){MXq6vmA*|xRz`=}mS z7B6#9``mQ&Lyliv-J1wyKYy#N3b*l^5A+}o4Wb6CfG}prH;D`pG3WFhzeAjBNQl$9 zC{M0^Yu0`y==>{H@W8#j5omVifzv9$1@oeSLEK~@)iXGD1uhjXI}ZptB|3^k>9cFG zllf0rGCBZO$J%e6W#p*WuMsbQd`*@~AOCHg^xw;*^V~7Sv%X-pWP6+yBjYmGt>cA} zS6G+Fl*Oj3)28BV>3uR|%^g{dk}Ow5hHemyR;#9cZti3Vc+h;0io%B0c)WeXE+ySg zM6hY1pz3zT@!YjHWgwki&-x|xc-EY`3izI=w?k~%2b2yqlboloRDapdNj#6%7)JX} zY*mLwpb?`78dx)L+3y{7CbR~z)I8oW&NwGVSqyQ8%s_NKW@)Ba$Kxy{V8$b(6n2>( zJ|P@fQZe%Z^^BH8jcINrLT`D$`b|r)sijz7pqjex*sauvo=CE-@4cI0%{j9?#bFAd zX!amu_1z?bVz0K1;6eP8>@qQ{!txRzhWt}yWD4Ywk?s!yAu$;KG{3yh_%g_tMpxE@ zi^VIPmYc77S(X7`v>w=z4CXd={+Qj3M}{ESyJaIhtbB0g*0`a(*x5^Es#G6CrE8NI zU!TC+Bul73G_B9JPG@Pr!Vz)bbcL8L`F?C(g3BiBfNZE`ZD)XxfNGbSk`W9g_W!Y7 zo`XHMQzHo-H%6dt1i^LLN@xMY<6GsOXillj7{a|fhdpz##NcET5ol=W*{kIq!!AAh zMB%r}&jtzkUOvimeEa=3U?VgAM`b#3%kM`C&g)^NnMmN4v=KVq<@rb+0Hx>;XHPi18k- zFhx2O{{pN7ggjjg$!-dS_zONbq@{0yJ<$V@nuN-g8-X>vksW>wt(GhwaZW~Od-wyu zRmZMI{KjI=LsgkMUFREj@UFw;()cHd&Xr!_My7sI&4yH7RYvk zbjptO`e~N17hH12iaFAXU$D#A91#%)WJg5}GCN}?qx(&80jiHP%Ww_r$bU+ui_IRA zuB%#=F%i8^H5k^SICRIdo+-7eNY?}UUhQ%yrpF!c5}-4ei558fZPAAPIzepqbjRW> zYes@OW5f-Fju3G}A_$L{!IKDsl(soD#c4g+4*0fS+|!8Zyr~o&`>J?Qg5)u*hq0Y6 zJ{bwIU)ODtC5$>kr+wKpk2&A(EW#YRHQ=6id3;!k-DeJ`vXCW6a}P~eTew)GQ&hEc zhI{g8#mWd~;N{Sqf2A8mIt zSZSSD1Kfv=MgJ*&=(kPX`_e#|zQlY}Qud+Zz>A zbr_}7jts!h{vF#*&ls$JyBsMOgojuT845&4`}5$JxZofOA~zq6UQIhJPv>cjz#YSx ziE+t-^@?I8YU6FZb{>1~+~xVKWl*{`@h9#|kp~@@%zyC#yRFe?8;~D3fo2uw)H*UK z**%8$+gj_iDjVJ$47rEiJdx;8ugzjWv#a8J$$@aEJOS8B+JnQEXIQV-nZ`>*MDz@q zxX1`MUnm}wu%)f$28oWU-#dj}{PB6DcVFY6@t2kZ#c|{|73viQVlV z-m(hL(nFZQ%vP7b*4^o1R==p2v3N+nrm0<+Qc^8zW1xSF7vPx$sH$l#A$Um z^uh^oc$Vo*CCon9i&i}fZ%Z;^HSWELrM7)R_!mx_V`iPJL=9!&@a74tc2MbMcNUa* zcNTIXzyM*pISK8a&T7Jypour+BHO=aQ@EU0n%gGfWuF^d_wE%v`DV9i06Eh=BjU#V z5zHh6ID~%GtdBe#`&upitAG!|(x$$+p55i{)SXlCf^wt79!Hc|e)u*|lp%J+$=iWb zh}+|83+RJ(gRKHj`-{pf zUwwz==6{U$`KMox?u-~KEO2j=-nlDrCO#sJf2OL6B(Sw(k%hJCajjN*`-5g;=1^hn9l-p=yfNh z0&Hs~mz9{;9$aYQqq<}VffrPbRdra| zNJ}_gd(3RxwN|0-rc-n$fQ+ODw9i$iSw3anV>t+Po!INRw-jTY}4_Vfc` z)g~5Cjtzy;VP8T6SJTdH>3BBP;6w(WR?u*D`~TobP>yc%3l|?wCo4_1WZs80*}GC| z?m2CDOME-;;gi#0m3Z)t5@}z}!JcYXqKO2g6?R*Vc7UU$=k4);c%Nn`0`2YjzZC`^ z8r+`5OdG;9YvKypq5KG?;(8!=5hzmCdz$5FuCkR9u? z_QXb;N6O?XPD>H2=8!%CxR!4hpbLsI1h8& zxfM$$lY>mpUDun^A)y5|dbblg?*?h7(m332^awe*(e5Cbc;X0U&--}S+uRRC@pVKD zZd;B0o?2Yjp6|D^!F*Sj+V_rvzX>^w*v*S=O>lO@`B|u^VHPPv7O~o+_lhkh&;#jU z>wSk&RNIQb`Afl)(QNftEqSMT9PVi=t@B&=hFHw}qD5X4waY^`!u5C~p&MnM9ZH7; zMrIV$8FSj#v0`TX_Vm8Y11MV3{570X4;svh|OvA_V66BJ*;Ru9=E z9P92$xpO%^zg_1hnX6y+L!s`VdDR}8Qz>@Y_RlMy5cVvMI*{wQnM%d#pVV!aZAz__ z>=vkd$mQz{zsHfcHZho0yA9ZFAGz;ys}bxMxvkg5wNPP~XQS23`#x};2u(Ak=VxQ~ z19Yo1nuE#24jV$T>l?H^?q)xK#x@{eCJl!3x~z}5${y=u=KwgH!Q6#-<&BE1@_^SK zj|g9NyiGV3o-=k&C|{5)MqcckjM~cHimP;YfhkRlLEGuQmZ6j}2Al@Jz(Pz1BO} zX$p~mY&mYqsveJ*m%aH<0sY zxdHHcP3_^kyVPSBuG^ljnI>mQ-be9tG=s&C3`<~Q)Yn4J`J2YRdF~ci*KShAAo|Co z2szGlyXQV8J!~mKR9KMfI1B7DIEEcsy(}e(auFy@I)41V=ip^MQpt4pJoc zp=g3o`ZVe+W0bOoZ7X z0~4S6_Fh^G7I#*{`q%D(vE!LjcT>|XNA4!l*I`>=+G$>k7#?ehin0Vpk(ydivyWMQ zZcFvqE4y{-bb3Puba(nsVs=#S)@~hiC!u{0mLqOR-3I$;u_JM7yjLe`yyd7tcr zlk=xpH?HsEjT9_WAx9|L*;Rkn@K(c}BdhYWPv zK{eazzY0LpimbR5fTtbcrv>Fpr3pW%VAJu6rNIreMMSFNEPF|J*|jzP2^L#mE*{cFlLUpMSOo2ANxDD>O7e+E(8X$ILj z=6*`Re|ibxO>c7SyJOXE6ExSk2X((*=l;oW>bdQ=KR;Z*A9g|^8<&Cy7`gd4CyOLK zu;Px}j``g|w-(DAdsL9w#-_qgqO6E^y#3nUGazsNo;9+DllA{a>i3m~oe~R*EsQjl zE_f($rgjpBW6SkHsKyq|Fu@?Cy0Cr=*@%BRSSS{_@mo~_k?Vl#VMiB?|F(m{;RbeH zTOsH>DL+p=3uraGpCSjL z3qEU|G0}WD6uX#2GHHP>0i+%38d3H3+DBlp27K1h4g;WlcdD=Qxy|!y+jX8`{f`ed zAoTpPUh6q*a|Pz0AQ$2G434vVJo1D|;I?okpS-oFQ(8ysAZ}sK?*6gsQqV;2E@2 zzBzWgH?8D-OfNj&o-BH5`4R~><+Lp1dm;~kdO6o-4p4C(6+bGGZedUQ~U2MmXBSS_|*&c%0P@9kKprwb?e8r&a&zshbQV;`Jj zis*gtpm-B7Z3t~sTJu`c$OpgY{;bW-zau8OdH2G^Q_1sxdeyOC1`Q&*KwhhL5X(*a zdh+dFE`NTY%>Ig8g|$50rdB<#;0F3X>^-pWexjdy09mUIhkX*nkV!gtu;;cY`e0zP7`h;)Ln%B%^2eX z?1ozhIs`=3?eiY*W!rAD4JP>by=b-Tei}jX?R^( z-uJoB^SaOTy3c*)-ZSrWlPnN&TBHjJm)OZ~LD+%@u35?xiAC&rx7Ya7Q(V(!>GcZ@ z`vDBa(^#RTUIWE!HreJDI&X{6={b=o>(1#%pLMI%x4{cA##e1c>r7vBZ}KrTDTL&^ zxHK;Lf%bqFe%pFTM%S6v1^=q%{IzK4sFkY{rupI+LW5B%PdkcfqUXb;YvXdUkb~L< z`(fRzi^w>qCBC;{++4Sgd}idWh>b;xj#>KxIb5gGxoo1HQ#@RDVkI%mf=*u9d;CtL zdX9i25;2-CoK9RZ5ICkB-SGq&R){LQD&;b-Z}l_mCc@Tv_xP) z?ldf*;gM3!Ie|-j&T4lbaJ$RS$FX!b&yJxxs8eFX?9dM$Uz__3Mu6{Qfa60dKvoVC^8I?SUi<{OdOso)mKA3A<_XmLF2Y*zn%v;Oh-@ot%f{zK}% z)j324aBhaw{u=>N@AIQ|Ljq1;Quuxot!Y^(G0z$`Q_@? z=RQibk?c}Swn4U=X#r1$tTdyZV(MtONw?J+`}zYHG6RQMWF0x7I5*|zyM~Co64MU?eJ8?J_C_?tiaLxtPTw01 z(P_5CC{VSV(x_}e=2XPa#?A&j4RqvgW#SwY zslQqlRko6E8Fnl_7CJZo+K&z$zV5o0Nm+VqL;F=*+T87MbQ8>7^)?U}>1;^%Uw>%H z%$6hfk#XW{Z>q~6!q!6O^i)vxY_&#D5zDiY0QC4Yb^206t%F~shw`lUSaY5%NGe&P zZ*gg4x=r}qV7m(EwQOnX1!r!&-Mvgk37Ib~1@l6?b|ZU=Z!50jiuRID@Gm=q+SKFr zkwvxCuHg$`gBo{a)`K3bxIt!mI@@ZmI64}XGBvK-nu@KoY%M!5E1Ux@b{RO$RQk%cbFcUH!Cv2VtG^8H=Wd1Pc<%Vk&maEqEN+M#E+_9Oly8c{U>)j@FSADm z@5fcN__cRyo?>hNIvNQA3IU|IR{dT5v#wE&c~k^vI-Fbzzf;v9qtWuly&;yJ*l~2A zaAs=dW-*r6&F0QnoZ$lHD7%ed(ul;XIx(}GmCaj{9}8{`y}O2k%sq8psZ~4^tm53v zc7&9Nz8P7Wa`$!u1k{WXhcvfjriabG{(Lb!z<413ovnj&_kNZ!whjC(GH@!yK}{@V za&T8N<4bPtiq*0yx(sQbvk_XdOI-S8|9)^HsJ5o+ zc+vi4TeXc6B(^_f7Y5osGgTXErF2!ZHf0kl_oisc`q2Wiqi=bBJN@>B$z#l3TpxWZ z9^M3DKOMFAccDTySe~0c)%emyyWHk7L08wzNLTld`)p{p*knc|VGY~0ggYH99^@U; zhTcHC6rbkR(-)~_)-UGpxMC$@EVmyc#cFgTK7Yo>_ltAY;>=v>qu56<#z+!c6(jS+ z@H+Jr6z-&sUhQrQyWJE-GJ`AjdI-^>CY8CXic?Qk+=xC09*CDS&UbK4Ryb;ODfm`J z*!FfP->mi2!cXBzk1i*Y>EUerRRXsUhpE>)hJ}bZj#saatz*`Ujra~net2TOpwfp) zq0bgjyn8)lj-x8|BJRNz>#4Wbj$UssDYST&Sn{|hB>u6L?Bg!%4m4IE0-v^oisNXP zNQP-&j!|TmetzPzRTdAF>D}$nZODZdJ-I7(^awv$GMKe`2||sXp0pXiz8-3hV6JIF z_jMyU#^^l`b?;~dX1-&ZiDD?%-ko3=>W8-oJ#Fb6deIr=T zP9*xO%F71@1<3^=<$V0y_xB0#bEcIlyf;zu?+`A|f7<&7_<8;c$HiG5?}_)Ksru7KRrtq{ z21X`ke_9++;70KB{bfZX`yZM_g6m&o{lm9|o?qeo-4UAkpSb_f{v-BZ$}}w#6IDGQ z=YRwEjP$S)2ji={_&5_>RDV695C{|kk4D20XeUKD3h#`EV-#>WxPp=kS{a9P!eN|U z{|05`?N7vcJL3H3G9@IRyi-bKk3?W~{-cU8op;3ynI3GRe+a)zUo zQHm;f3<8BwaQY{@zmF?12G=!SN#4**MD^VD+d0R@_*U&A6@^7fq$j^Uv~X}ql@{k;}qVTwhIcP9hQ`$jooMm zEhb+>YkvShPV(Rj41S;)NE1ScMke}@PY^CBhEq1x;towDK-51^)b;T?*nGo(8iH=XV8ElE;<+)9p~^(DKGxyXWc zskH!+sH;~aIV@{$rJ=OMwT8sr`_52KYGHI1DZQyl4E7YNl-9mQ4aS$Hz~RCdBFjR& z5uFeyT)X}*;2ny;&paKg!i)uG?1N9AAN6=5kjxN!J}Xdi z88P0@8}%yb&1}t{J#~t%P{Xm=94Gd6>Gi!4i7yS3_M)9Ger&FMwNtPAYs8`_SW_YV z9Q~JtQnWqf<18P<>a#dn9oIG}Uh{W~D7|FT>rD+g!{b(Z`Q@;?(m=%)eDi3P3!@`1 z3wTl_jCC*V@#1z=l_+#ygTa8eNjc&Oc=Wpm=Bz{R;@xHkKDK>1$fdhizbaFXbJCL; zz-kc$y~(vVw>rEeSr&e@hFkOGO^<`dQjtfnUgV#XpZNyAodJ2wlyl5j5BAK?cHe_V zw%l>&gxNV<=Y!bU*b&^~60u@?#iM;7{>kw8Y6l>B9gr@BjS>lkAn zf1J#bJK%*Zl{>XbehVdqOB%9L_@f3TqAQR<<=*B*K1gt-rEE z!QxJ9-gE*WEhIxJ`*zM~;A24OUWca)pZ62tLvyP?KMFqO{me-JbuVHv8X<(M++tU6 z7lm9HS&Ne-btwyoh%Y{TC<`d`zIEzx(a@Rm(%;$j08^(LZDvkE9XZ(_mTw?Gbz+uy zo(#X3UyPdY)GCn+?`uTguMn%OmX_EZv|1_P$@5#on#HHS+|?B^giz*ms1x*lp7mw* z0Cfb1j_HmqiSA)a%l3z>O~U${{>48N7-w|ooY}5LWo_cz^ID7nAB6P4^@p@eCqDBL z23qR}ST)b&8Ul=iD1e5N`A`0N1$CdasD)42Vfx3~ycAb~3A#~&8$K#~0PcA6Z!VlS z3h$AzpJswi?3c7mUP9TQ035DNJKu~BFR*NeFD^lvC^C`cZe`xSf3x|B%5bXV_-NHGVoc&sv=A!z$&T#wwJX~X+lAN z+m9`|nld@80hOVBZ)O@PRmXHBE|5#Y@^Q${FfxbnQN?{}q3A8$MTuy(g`(;s_K&50 zhDxRG2DR-M?PfQs5%=e!m*1AGmDOq51sJYU9AW?&FLt7*3|ldtSpR*Mnm+~)3LW?L{9)L~vndJ2J|olneJ7kZd@d??d6+NA?J?=f3_?f6#1$2+s7koSXHpG& zIIsI`i_-CX-MfLX7%B1R?9JShvR$y2wd(R&b^?GZlfsAG{fBsH@e z!Hhq>yZQlE7SsqK3u5$>)dxRpMee=j2-K{5)os<{eJiv7MYb%H*{kTXrO=Vms7-iO zbyeqg6TRRQ^I zYQJRjYMt?if>xK#Y?nvz;8+lz5RIAbTVUA$uj&VLs6KW$Nx~h)b#iT;*zl8wOA86B zy8+&94laq}0(9P235+aMpHXB2Ivt6*f!I|9*;MYO*6<|PqZe~{VO9+yGd-#{qyUlJ zx6l!`jiRsp0-~e6OXL#%4VULid`}=F({>S75~RSF?Y-%B<>yq?Uz6G*016vEQCr}{ zYuwwaiw_DXYWA&%M82oXg8HY&sj_Q`U{Vr zoK5r2s^(x2b9EXfXb4@D15hDoprdW%VnEqS=muPtP1 zSIXpXELR7Ar|ztmca__Aa;uBPrC$0JegV{R$DhaE?wG%6!N#R$rIcN&gU~tE*AGKE zXL!|>4kMM!R>|8ZiT0b@^Q|b<;%DaYFu`JJ*=gj$IwXDYx>_5r!qUhavW4(|#!8oO z=}d5n1Qxi)A7ajbdAscb#rq?%4}+ zUjWG-V&Y-9eL5IeGWcyeie)VLTjqUT^eWwXgPfgRO(`ZDMb9t9=v1~vEvg||wsQr~ zcUpr12DwK>d=E{9jU~~USBx~QNkjJ;!WRum0if-m7b^6BxF4SC&#-OZD#$ADlrtFULx`%yQ1sACMG;;kQPZ=vbLUsiZ0{3Suv zykUM=`P;BVsF}xXvhBdMNo*T`>rIALg&?Oxx%`m6$ecyMg@Bj(A`qA17Ex}kHztQk ziSln_ezG-2o%xtHZ-R<@-wm!o9cMxan@t^aO=7LRtF#;8`H#JA$Ftf-nE7Q<@{k_GOk3x8~wdK&&*V5si7qu-zwJx@QGdTZ-;R;JgJn)%=g6_d2v%H`N8%OAf+ySiVUYv zh0QfYFvHa0_1fXwmJq3FQ&HQPchA-2P;e60#)a-+jl7Ll(WCN4bX|ZUa?2O` zBDzoB04B4mKR;_cdM<;@;CQx3_Zf6%^_8cG9p@=Q)Z4|Zk4B$42SKR(mObH{(A`I= z&CN1odUuN-(KZ!X1NRGOg4WNO#@gRId&_|!Y!3^0zx^|)jB{B|;&oj45{MPt z#O>#}f|$|XsLyK&J}#NLWNM)WIxp8^fAU_O4L{vA9nGMe?w(D@L(PKO)s^%dUSbLP zcbFn<0Ij}~K#dzZAT#MfJMwCzF>p7csH3#`{Y32Et!j~-?7FnH=M#}XXU|*q0vvTf zlv_VK{?+;bs8kNwNN!{FH4c4|-xO_k@+EpbN;azRDsOA=Ahjcub>p0c zmU6o!F#INI&smoe8LPeO|1C_A?M0!+=N)4_FdL(3&GVA~=_%3NOHtn|-uhZn@7j{W z?z1~_SG%+4;Rh>JKc&UaXbTRM<#U6)Vs8BXHO&r&Cugfree>3mAQ z5*n-FU!G}zjK8FrevjOwe8^4aa$AUA$NJ3llq}1BWZT(bDnl9*yPRleYmV?jYto&r z=T$r)6~V5Js9iJ0M?^!wjfYet&;X;}S*pd8TWyRS5v(4L32FP8O1^pYrdd4S|Zcc2BF?t*jZ(s-DkGKP+Pf@Cmvn^*T z_ViS9@87$h(At-#$eXOITejSX$t!Jsrsfv+oS#Ig=PuOFc^8~SF@=beW6x_e$VEHXRh3=u#8eee! z(dXB~xM0kX)3fISe&mH|>8Uf3bYmkyX0Oq$AI & { view: string }> = {}; @@ -32,6 +32,11 @@ }; function appendBooru() { + if (execution_mode != "userscript") { + request(newbooru.domain!); + alert("Requested! Please click the PEE icon to validate"); + } + $settings.rsources = [...$settings.rsources, newbooru as any]; dial.toggle(); newbooru = {}; @@ -246,6 +251,9 @@ {/if}

Booru sources

+ {#if $settings.rsources.length == 0} +

Don't know what to put here? Ask some anons ;)

+ {/if}
{#each $settings.rsources as source, i} @@ -279,7 +287,7 @@ Domain @@ -295,7 +303,7 @@ Post page prefix (for sources) @@ -433,7 +441,7 @@ position: absolute; padding: 15px; border: 1px solid white; - background-color: inherit; + background-color: black; border-radius: 10px; } diff --git a/src/main.ts b/src/main.ts index 91452c7..8dd48a3 100644 --- a/src/main.ts +++ b/src/main.ts @@ -20,12 +20,15 @@ import NotificationsHandler from './Components/NotificationsHandler.svelte'; import { decodeCoom3Payload, fireNotification, getEmbedsFromCache, getSelectedFile } from "./utils"; import { getQueryProcessor, QueryProcessor } from "./websites"; -import { ifetch, Platform, streamRemote, supportedAltDomain } from "./platform"; +import { ifetch, Platform, streamRemote, supportedAltDomain, supportedMainDomain } from "./platform"; import TextEmbeddingsSvelte from "./Components/TextEmbeddings.svelte"; import { HydrusClient } from "./hydrus"; import { registerPlugin } from 'linkifyjs'; import ViewCountSvelte from "./Components/ViewCount.svelte"; +if (!supportedMainDomain(location.host) && !supportedAltDomain(location.host)) + throw "PEE not supported here, skipping"; + export interface ImageProcessor { skip?: true; match(fn: string): boolean; @@ -403,14 +406,20 @@ const cleanupHTML = (ndom: Document) => { let gmo: MutationObserver; const earlystartup = async () => { - if (location.host == 'arch.b4k.co' && execution_mode == "userscript") { + if (['arch.b4k.co', 'desuarchive.org'].includes(location.host) && execution_mode == "userscript") { if (!GM_getValue("warning_seen2", false)) { - alert(`Due to b4k's policies being mean, PEE will get you banned, so the userscript version is disabled here`); - alert("Use the WebExtension version of PEE if you want to use b4k!"); // "Cool new features will be coming to it, too", then MV3 happened. + alert(`Due to b4k and desuarchive policies being mean, PEE will get you banned, so the userscript version is disabled here\n` + "Use the WebExtension version of PEE if you want to use b4k!"); // "Cool new features will be coming to it, too", then MV3 happened. GM_setValue("warning_seen2", true); return false; } } + if (['arch.b4k.co', 'desuarchive.org'].includes(location.host) && execution_mode == "chrome_api") { + if (!Platform.getValue("warning_seen3", false)) { + alert("Due to b4k and desuarchive policies being mean, PEE cannot display content properly here. A \"PEE companion\" extension will be released as including that functionnallity in PEE lengthens ChromeWebStore review delays, please understando."); + Platform.setValue("warning_seen3", true); + return false; + } + } return true; }; @@ -536,7 +545,7 @@ const startup = async (is4chanX = true) => { } const appHost = textToElement(`
`); - const appInstance = new App({ target: appHost, props: {rev: BUILD_VERSION[1]} }); + const appInstance = new App({ target: appHost, props: { rev: BUILD_VERSION[1] } }); document.body.append(appHost); const scrollHost = textToElement(`
`); diff --git a/src/platform.ts b/src/platform.ts index 4b64982..f875e2c 100644 --- a/src/platform.ts +++ b/src/platform.ts @@ -2,6 +2,14 @@ import { GM_fetch, GM_head, headerStringToObject } from './requests'; const lqueue = {} as any; +const localLoad = (key: string, def: T) => + ('__pee__' + key) in localStorage + ? JSON.parse(localStorage.getItem('__pee__' + key)!) as T + : def; + +const localSet = (key: string, value: any) => + localStorage.setItem('__pee__' + key, JSON.stringify(value)); + const { port1, port2 } = new MessageChannel(); console.log(execution_mode, isBackground); if (execution_mode != 'userscript' && !isBackground) { @@ -62,15 +70,44 @@ const Bridged = (ctor: any) => { ctor[k] = bridge(k, ctor[k]); }; +const altdomains = [ + "desuarchive.org", + "archived.moe", + "archive.nyafuu.org", + "arch.b4k.co", + "archive.wakarimasen.moe", + "b4k.co", + "fireden.net", + "thebarchive.com", + "archiveofsins.com", +]; + export function supportedAltDomain(s: string) { - if (execution_mode == 'userscript') - return GM.info.script.matches.slice(2).some(m => m.includes(s)); - return !location.host.includes('boards.4chan'); + return altdomains.includes(s); +} + +export function supportedMainDomain(s: string) { + return ['boards.4channel.org', 'boards.4chan.org'].includes(s); } +let popupport: browser.runtime.Port; + +const pendingcmds: Record void> = {}; + +if (execution_mode == "chrome_api") { + popupport = chrome.runtime.connect({ name: 'popup' }); + popupport.onMessage.addListener((msg: any) => { + if (msg.id in pendingcmds) { + pendingcmds[msg.id](msg); + delete pendingcmds[msg.id]; + } + }); +} // Used to call background-only APIs from content scripts @Bridged export class Platform { + static cmdid = 0; + static async openInTab(src: string, opts: { active: boolean, insert: boolean }) { if (execution_mode == 'userscript') { return GM.openInTab(src, opts); @@ -81,6 +118,34 @@ export class Platform { i = (await obj.tabs.getCurrent()).index + 1; return obj.tabs.create({ active: opts.active, url: src, index: i }); } + + static getValue(name: string, def: T) { + return localLoad(name, def); + } + + static setValue(name: string, val: any) { + localSet(name, val); + } + +} + +let cmdid = 0; +export function request(domain: string): void { + try { + popupport.postMessage({ id: cmdid, type: 'grant', domain }); + cmdid++; + } catch (e) { + if ((e as Error).message.includes("disconnected")) { + popupport = chrome.runtime.connect({ name: 'popup' }); + popupport.onMessage.addListener((msg: any) => { + if (msg.id in pendingcmds) { + pendingcmds[msg.id](msg); + delete pendingcmds[msg.id]; + } + }); + return request(domain); + } + } } async function serialize(src: any): Promise { diff --git a/src/stores.ts b/src/stores.ts index f56c031..7354d67 100644 --- a/src/stores.ts +++ b/src/stores.ts @@ -40,49 +40,7 @@ export const initial_settings = localLoad('settingsv2', { conc: 8, ho: false, blacklist: ['guro', 'scat', 'ryona', 'gore'], - rsources: [{ - name: 'Gelbooru', - domain: 'gelbooru.com', - endpoint: '/index.php?page=dapi&s=post&q=index&json=1&tags=md5:', - view: "https://gelbooru.com/index.php?page=post&s=view&id=" - }, - { - name: 'Yandere', - domain: 'yande.re', - endpoint: '/post.json?tags=md5:', - view: `https://yande.re/post/show/` - }, - { - name: 'Sankaku', - domain: 'capi-v2.sankakucomplex.com', - endpoint: '/posts/keyset?tags=md5:', - view: `https://chan.sankakucomplex.com/post/show/` - }, - { - name: 'Rule34', - domain: 'api.rule34.xxx', - endpoint: '/index.php?page=dapi&s=post&q=index&json=1&tags=md5:', - // note: rule34 do not seem to give source in their API - view: "https://rule34.xxx/index.php?page=post&s=view&id=" - }, - { - name: 'Danbooru', - domain: 'danbooru.donmai.us', - endpoint: '/posts.json?tags=md5:', - view: 'https://danbooru.donmai.us/posts/' - }, - { - name: 'Lolibooru', - domain: 'lolibooru.moe', - endpoint: '/post.json?tags=md5:', - view: 'https://lolibooru.moe/post/show/' - }, - { - name: "ATFbooru", - domain: "booru.allthefallen.moe", - endpoint: "/posts.json?tags=md5:", - view: 'https://booru.allthefallen.moe/posts/' - }] as (Omit & {view: string, disabled?: boolean})[], + rsources: [] as (Omit & {view: string, disabled?: boolean})[], ...localLoad('settingsv2', {}), });