From c70c6aca3ef0639cfdac8cb33b77c7030611b68f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20Schl=C3=B6be?= Date: Sun, 2 Jul 2023 14:28:13 +0200 Subject: [PATCH] Initial commit --- .gitattributes | 2 + .gitignore | 127 +++++++++++++++ README.md | 2 + icons/128.png | Bin 0 -> 2896 bytes icons/16.png | Bin 0 -> 358 bytes icons/256.png | Bin 0 -> 8917 bytes icons/32.png | Bin 0 -> 707 bytes icons/48.png | Bin 0 -> 1057 bytes icons/72.png | Bin 0 -> 2363 bytes icons/72d.png | Bin 0 -> 3235 bytes icons/96.png | Bin 0 -> 2084 bytes manifest.json | 35 ++++ package-lock.json | 18 +++ package.json | 5 + popup/overview.css | 169 ++++++++++++++++++++ popup/overview.html | 20 +++ popup/overview.js | 40 +++++ scripts/browser-polyfill.min.js | 8 + scripts/browser-polyfill.min.js.map | 1 + scripts/service_worker.js | 50 ++++++ web-ext-artifacts/marah_supporter-1.0.0.zip | Bin 0 -> 42292 bytes web-ext-artifacts/marah_supporter-1.0.2.zip | Bin 0 -> 42275 bytes 22 files changed, 477 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 README.md create mode 100644 icons/128.png create mode 100644 icons/16.png create mode 100644 icons/256.png create mode 100644 icons/32.png create mode 100644 icons/48.png create mode 100644 icons/72.png create mode 100644 icons/72d.png create mode 100644 icons/96.png create mode 100644 manifest.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 popup/overview.css create mode 100644 popup/overview.html create mode 100644 popup/overview.js create mode 100644 scripts/browser-polyfill.min.js create mode 100644 scripts/browser-polyfill.min.js.map create mode 100644 scripts/service_worker.js create mode 100644 web-ext-artifacts/marah_supporter-1.0.0.zip create mode 100644 web-ext-artifacts/marah_supporter-1.0.2.zip diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..20b0c92 --- /dev/null +++ b/.gitignore @@ -0,0 +1,127 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* diff --git a/README.md b/README.md new file mode 100644 index 0000000..18b838a --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# webext-marah + Diverse Arten der Unterstützung für die Twitch-Streamerin Marah. diff --git a/icons/128.png b/icons/128.png new file mode 100644 index 0000000000000000000000000000000000000000..e6a7050ec045b224fdc989fb5bd2884d50118fc1 GIT binary patch literal 2896 zcmV-W3$OHvP)TJ?B~O_jg{Nmve^g-o2Y48kgY~oou}4%@*BM%jOO9@1kWa5HcpaGbL(?lhVJmI9~td_4*HC2%`1!ObFP8c6_)fb;u# z{S4p{;LE_imIkFjqX^(jz$F!az7MbfcpNy_!k|=W1OdziuBh^NUx(HQYkB}h>PFd41xL-;xNLR-g2 zfzyCt0oqK4A_`z4u$=Hu>=D2+X2j0b*( z0!(jmv?DV`5WsD~N!~{EFdg^6#JurbuV^CV!df+UK zM!S>+FdA*0a^+eLz+u3xXtxlZR0S{``PK^)cdvmxEjme60Ly^my^V0@9~PaYD1fEF zDc(jnvkPdp=qNP-e3kx-HyVwdz&4AHQWC&?;8JfR5}}0#8v)J*zV2;ALhJyVEIM-c zMFX>dn=1Ug1;y4|frC+WEp`5j%FM<9??5?(S!kg_1aKUxzNs`4Z2+c}e18RUn2d;M zS3Nv~9675|&Ea~oJF?710M99467W+7cYW@~OF!%@(E$&?k7QS^bOYC+5o&eMYonKw+W~Y0uxn5} z1TYp@MfJrSyL_Cqe-!!o?53w_uF zu?l?vl@^jQ*pBA-&Vjj@axfL&+}V1ktZ zTF_AH$$H=@B!)^(mZy=Y@hS_W`k@u0NFX%M2+&I#nhvG_e=Yl2H!3=rgob`E+R(q3 z304AVB@F@evKn|h@SUFTx1dGdg%~AbRGR#kY%HszsT)=0)bin94t#;|g&bxJK(G@)Cvl@& zy`kZUP=F{VBY_)$t9!l=y-O&h0J?~~uqkz$UWf7wMn~x92;jHCCrVxmeI%Wk4*-fI zfbzd%7OJ%ib!ymfl&!oLMIOt477{ZzFxU#f+7tLjG&L*-UR6gsMH7UE^OJb|9j_hOSE`XF*8f1CdcAq2aK>oDtsWnsuRr0|eW zOfR*jhtENgzaInlWPI=Qgg>YD94kYf<`MyXxj1wMju39rQe1hQuA5>Eho z0hkm!48jz&vOlZjwNbzq(NuD*hfzJeNPz{=g1-RfqKx5zZu%I97LwQEQ+v1><9{Pd z0c^)l0OOGxcQMsn`ZN#u{3pgVsvouz-m_Q{O98avBY@LTE#Xla-!}(ayRaJpK8S|!(*w0Py{EnR2WoF1OmhLi zRsdbZ7r_3=ReLwt3Q()zP*l?Xjlk`eQfL7{+$mr#I$Q5U5&HnR2qm2C9ieUWh^e&z zV)?lzpnH1uiPU~Mv(R?(z`*UAXHHuSAXdg}2gchcbkIe}g<%JV^#HvTWdvx)*n@^D zh&BamZ#xYjfLKW(!?3^Adjw&}Otkc0lLGxvYk*Poy*RR* zPVA$M-2wajQ=oP-lLrA*I|W!z1EB1&_<4v(9(z3?3;nKU#(APW0-ea`f{Y zba}QL9sr=i);>gfkbpt6#!^KI2~B!ZAcY7jBI_u+mNiJECA5f@MLtM zL#o`5j;1v~=QjkY3jh=iJQZCIof`L|4?nj)j64XSm$T6oFR8E`n1NGOZz%F40DudK zdsuU|+<}gZ&3zmrZvp_F34D!X|F@uIjzW+}0RUVMEO6-eMqsu>ztPC6006#%MguFB z02dneXF{F@09p^sG3aM8@M(j7%*nd|0B%B;KgLQ5T?kwpscm8GLk!g4y0Uq8iAvk8qL08mN#OmwAeFYTx@=}s4m5}{E90CEzYg0_nE ue7(ZYoHX#L4)&xQI3HE^uJbh|4gLolU_w{rVmZG60000k&!qSei5PyLc zWyenO2S|3ZP?Ri0Xl(oeQ!){zG(C%V>AKB4&gPu^yXSn*IrsHSS(f>>%F(dIrtyLE zSR9w5k#5-f&x|$X$Gkl zngW7IlOlpt$rtZ?fA{_V`0jU}CujF;W@cxn?d+VBY-+5_K+8=F004u&p0+svfXH1C zKn*1~Hhy)^o{0KKERsO58Mrb1+ExfCn zUZ@}5BGlLt7wV2vbmCW6L#PBRkqLO>0~`>+o*rKQO2Ml9|Dvlz?*AQ@X_U90i=>pIqM{@kBZ-PiFRiR^jRMAF^Kl|CSV4W|F}U zK9W)>^xswe188LQ{|EK-{13E$fI0qu`Tc(q_O}f2!AqLs{k?Dd;mEpk7Wg}rkCK)j z-XXx-&(ho5;~znqx_SqA`@4GkATTm0d4%X+!J*|a7?dXpgOQR&VB{R|XlVs81VZ$x zo0pS!kiXc!Xc-wP>3jJHIC$ak`r4}eWa=n4Hzy@cjDmuWhK9V9oPwN`)TK)bG8j#5 z4ed*qONt6;1$l*kaJ9X0w>|M*0sr7S{V%S4G^|$*Ut0q7E$1m_+WM}XrTRkT* zo(2GLCVg!U%ix(Gwlt3|Kjy2#A^BXCmXN+=CQDOa!I&h4MW!mp#Zp(E+^N84ZAve5 zwgjE6*GAU!>#GAl2=-qqHIq`%#%i$fX<$Jby@aF`%%6}3wb?La*YSz^2a?tP`j@bS zn;Q>$q8kpj!d5;qR1$zww(|MTwj{mm;EJaWQ3($y$7#U$lEJT z^cr9$s?hqhD~hK0RN^gJ+M#{_GVT~16e9z`ytT#1xow)CYH4ilcIDcG-9ln68fqiN z4e;BPR{7--B#`8QDmFt`qMZkATCNdD#&8J zxzWbcQr*r&Rt^oet7$dHvrYqCz*k0SqfMh2n1M1ucBqQ?L)6b3^z$ybu^M z(RGsfA+sKNwT}Mc&c-dv?+q`iTDxJdx$$5l8#fHVA3>ZqQAf$lsMk^3J$+6T%%$vy zE?f{_x|IuJS~HInJTx>rsv?dH9VRQW3!ZyfkFi_E=U;sbbp?`kk!n*s6Je5OM+rne z^W&L}pk5&+jXBfl2j=zt1W9IFfZqXoG%7!Bmm~ILMtAuaQa4Fit~dGhd!(V5Fc`t| z`Om>briIm+hK;jb2gU}P!H_M#^Pm&)6^WQ+9M^uEXt3lcx*laT}IDQQhONa#2&P4Mi>q;NAx}-F-59|5}hP)se zAlt0I|76YqF_q2!$(~5vv-z;M^dhQGw}8|n1)}z&8B1RkP_rT%K-9Xr;qpbK-4(97 zi7(YRuvTB?q#>zoP0`$-D?AgFh}~|z>OTr$^OJ8j5+8Bf$JoTHF7VemXt9iAWFgx- z%w$nl%pGNah;57fc3@ZQ*OIqV*IYPQXqlocRp{(N&>=txu6O{uPma%*d)((Ua9X8I zh-hk1&(SUFJG*b+17jIo7@}tZZF)_0V%4pkV#S>|mCVM7BE{H1j9`)}D6U>ad zO3thfl>jf#8Fo2T%;=JU26TaP6E4zJJzAfQ0vppgbMX+ucG|i77!L!pK)pceKB>C% z^vpWCTf|u9Ol!Hqf$1aq_qRq3DAVpprglX#afoon7z`Ap%vPnk~7#&J%VBA>JFhZejG_mpk3s*(5= zshTeK640t7lDG>J=({J&;D3&pmvt{nS{~e9YWS9(zj!_8HPgb>j+U|VmI@3a&X_fw z_*OM{ut$mh9-G|*zu3;D38_2k8d;!wkt>O>RSlO77L|^F3|om&E6A0)cmN+0hVmI+ z4B+{|dcU?Pmvu8p2$b&YZb3mqjpOppcW;w#IUOvtlF@w+5=S$MY9ID9tA0u-p?m0K z4NL>mF2qYBd92^y?}9`-76rQHy8|OX?BiIxuQnO#KQgt+otR$CV32xVnJ~2Lh6b!c zu}2~$yx3(Eh`_t4syf>GKA8LOt0+1yY>u)z|NGT1LG7JhY6D3nPjv-TKav+WEYIoi zvK3^kA~(h;aek~Bo~$C zALKEGkl3em#kT5AcSE^>s=~)`>5~i@I2&`+mfRY+I0F&2pyAKBz+xY$5g>hTje?E& zO6l&ke1pFI?b_X1R(sc^x0MGyCcQN{MgcH_cKXlVABDwXkGKe`Pmyzg2qZI^$0?@r ztFY|%d?!F#moPp(xT6);_{!#7Gr>)#@bRg|39mjB8{l-HuA+Oy_%$Usy`%RdMmtomEk04CAv@7+ywqhs7uVtkMZLBQz%>2HGFj^RFJX$ow-0u8QH`=f#2^l>lcp? z;IG+f&ee%)?~ZAvvf4+!4&?@rYJq2wiy23+^k?8I>%HfBVi+n1U9XAC_g^QBH1mW< z%Ixy?EK^??TvQ>Zow@oSxdQxO{*3p6T}}&ThOoWSk)aJ8Pn!Sk;>W z4$ewYlF!P(IrLm$B-;Uc1`Z#yuvccl+N9VyYy`w~-fI16dFE=?*eY?4$5D8}*#79x zG*ON1sO5qD%@2*1xuD**lLI+B_|YHNALFTwEUMs2Iwt0^9-e$h@<8kmvnsdvIV_mz zaHOlG^V@~eeVp^Wnhkpo3~Oo?lLmUsV7R5>z<7Uut8W?M2gAxTV5gp|=aE$M#gJ6K z=}Ei@q0ST(wlF302^OpmIYDoU45Qv}-4#fD1)31|6f5jxZZd^Aui1hN^ zeB!+Nor{`32p}}GD0+F|8fpCg>ELf%gv=uWC>e;52Oo%l!L3%Wsq0u&htX#wJu7B@ z&4w^+IA4p&duD-dY0qqY(6$0Wp8Fn{ASmzr(wIUS`dP^FuO|u~SJn?GQbwM?KR$;=&D0)vZ zRq>OPo{1>7;omuD=Z|9+FKNWSygVOO?8WFZtgd7+qU$d15QBs z_UTlSZ*QXSm!v~ZTrial%{$Q41d)2-k}YI>K4RczrP*SF>E7MQ4mubys4soH$7$Zp z+4M$rRL{1L1P(aE+2uF(F>L<0qAmQS?a_RpZpXCf#ru>dmE|3&@>Y?2O%eyr)pMIt zaf0J@33Wx#?)fk9=aSr^i1*D?Vy~0~YWMo48{l;N+;bcS<|+0Z*9{-FWr-D-g%7?* zzPI?4@_df0%~h7{-D($gVyM&+-Zc62W0|cMXLT0iH5>clO`kZPxAFUj?Ziz}g^gFG z93HbER&oe>x(oLpW|no?B}Y2f+Qy`*IZMB7U%maB$-aQ+u3t_>KQwKn93>HPFi#Be za$9>5w{k@vyil>Ybaq_Wm3d|4B=1mYjcE_Bd)Dpu(zut>CoVX;Q{dqobBi=&e}Th6 zbfx(7 z8{hKlCpy1KJg&g$^dG5~B|~YT=ECep%fT)C*C^f)iH{p|j`Q&VpG|=(MX31HPv)<> z?w-7xMng3xVlzKyF+c!F#XJ&{Y0Me)InbU$od#@bcW+yBuAAF;Ag*90B5oo+_)%wX zo&1jr@AVF5rGbx5K%}U8_-gLE3LVm!Apct~G4m_MNQ#?}Z@tWP`4O+>L%&apQ;8I( z8-7_-y&E&PbW&~`6)Oc?0N=Mc%Kn&Gb>ZC)Wj?-T&e^-EFAZ?Qs#Qzs=1&c5vRX!_ z5*XQ2jdYF*ruL(5u#+@Sm6gx!j{{?rdW!u#_yp4D$rYYQmDXik?IOLyjc|8g2KasE zE>9@^a}otku2T{oWCm+%;C~h(0|-&LViJP(=#~?F^6D>xqe9Zpj$~((`-_-ig@~cI zoP`yM77Te?b1u4NufX*7VM!>gD-`(9Db*5oi+ChWo3a%Pmq69i7#SYd{s{fLvSbtW z@F{Rt1$+S$9e^PZlLq^$|w#NolN}xn-^I#>_6x-Y3Fr0s_W)TY4_Yk3}9l) zT2=9hD1>ccwn}SGao3KCD|Ua!lqcWObH0>$s_9yD-G-A#CqTDbg}##KM)vzEDV;u5V_1!Xpi>0f>Rw!w1_) zX#uIuYtU{LpdT<#g~~z{go1UsUSIbW;b%=_pcm^osP+hYB$ZCJ*Ky^BA%8+S%YJ|8 zDg{{|5`Grh*)n^|zWNGZa}(1Qe^e{RJoys`iVJR*0UVx!rqyu_ za;sY}hOL=dlC!w~D6UQU@|~&ipHibo#StxEe zu}lzU#LX4Qt{nVTU9PX|8tH6F=fHPntZ^-`Zh zJ(}v)c2iG>>86^b&>gPT7{Oye2jJ8#Li5N?B+kby|nXo<&q13TuA*PdM^ooxJ`e|G0Ea=hN{#iQ)$ zCnzoT?dtT!~Asq`eL<+=pTmf6i$BWE@EsG>#$bV!tu$4 zS`PQZl8Kc&o=Z0cqWNXO3;wSHgJzSd>cS0{jjei$gfi%43}V>5lK8CKt{CFVkxlp$ zFR{ScR%m50v>Uu|dczKF7fYa?;G6X->}+4i50z9%(V7_6c`5H*JtkKHil9ShY&!W` z6fvUv?8?lKCHpTU(?O6minzl5HFqYaS4WA8B>I%J@GzOPDG|a7MZ9jo_vXt6w=k!q zg9imT?rf=qUPPs?D|+b5$F_}xuSC^A9>*Ajt+y3R-W+P=!f?%t%*d^+uC7SlTE7>a z#=~0v^f&v#c3xO-UTxZ-`5l|Mplwt<;^8OrW zf%;BFJ{P_d3i;h6eE{*gTtWCGUn0sb4yN`^d>}u=p(SPDZK1%no!96<`RNFJ&w!@7PMxgEA<6KiPd<`?VldnFvLM(XY;Wy%*ht+f~Jm!mZAnbnLY*Z{ylJ zlQmXV;)>!GxD+BpqH6j3M(-s+yVb!9)pS`#lufS7BZRHk#b(o|secFCYUHVVL^u-%;&kwv(d?zkR0D3! z`wNILs^|AU*i+4(Q%N;F0Ug31?|v^1j14DRMc$(g$n7+<6O#U5O1!uFaE{TKHnP&M zjmZ1_>SzB+Huc;}-Qk}wv?_M&M^~C$Ea<_Axrx=7`J6$4pz>~|Sp6L1<>C&mr4WOO zk~TAeXpy{lS71FN+@}Gyn&BU%OnT^gR%^BS)w-!mY{C9dkSX@`?3v&?&7QnZ%FkC+ znKe030t$;J?B4izArHR%%thZ|O{VTp0%_t?qo$ESPyW+&YLq+0-gLDON!5N+`OmiN zy%^j;{+-Xi4y-kta-+E&?EyY0sHArk*KNLi7M3#fPU}l|SJDRNL+F5(z=U1WKF=VO z%2U*}VDOIk4NBNv7#jv$334@yG>!PMCcsR^pcMA_XP3rw5c}2H%y+6E_A2g19bEfz zPb%p*4Ec}(zLX7{k+G4P zs}vAwf+LKUrL#rVw;qjH1Gd1ZDO?&n_9e71k{5z!F9;0_ zjr`o`q@i)MlU#g!43ZxCAo(t&Ag2!^#yqsQj6+J-O>YWZhu7f*1|x$2~}+o_u= z&PN((O5|kU31`6oj5y$R#eBPYxG10VmJyn$)(%kz7dU3o(1spwY`?0i80zg$r%ITC z!LUBiZgZDd6G$s|zNuX+daGJ$B`+>gZ8ksn4sr9&%=7!b)$iPZRf=!v3k(FxW1Zqf zlBo?{(>>qEeOygfxhA0(e|`bbtYb@woZn*GY|cQ7L^l(wqK4L}A{3QvvI$0OZ1xuI zr=$(qZzlo5qU!FTLBKq5>;4{RvhtG2n^hk{jxskL8cHL1N*|k~pt@ox0g8}NCZT;< z0|yFs;ki{q;4kw-5Vto*p)XxsTQwP8hhoSZbPhCwq6BPy7QM)SIxinZN|H$w`Ju$j z33Ja+Oao%}gOl^f5U7$$?gi6(i z`4$&=hv!K-GNSz&6^og0efUtg`#hm2y0&=l<4F$_YaXY3@x3p=2WxslGPWE8*o8f1 zU=Au*C$8@80ObR2i_pZmhsvY?lcu9w!|pM6xTZ5O9k4+A(;k_=m6f!$WX-@8QBcpz zG1i8acug5Rzo&NB)H|sW^}wV)#;S0as=|o-789BWyyI3U;Ho}@H!)RI7+b-Z+2Hvu z=ThAZ2RGzWGqr;1Si4eUkZHmKlaU?R3c8qB7-zzD%6pRA6HFU>2@MA-vvQyB;)+R;m}^Hgvp&-%Py=-rv4sjw{#{(}yl7uE%|eeowoHnG&jj zR?fiy2EqzGV)jEeJ)&$>sVx`M8=3k|7ty z%47i9G*H}6M70N_aTZx!JFu)(-d4|LE(m=bhzxK(!n=@~4IrOKu>nx~bVJH>gFqID z={z2g0YHcn8a*&}j1mDxB)uRkz@9xCud{?28|@mIUa6clna}Srq&DSp-k!{QN@(f z=atE|k#`Ah3{VB`zHfH^Jwp)9=@|?ns1)-<&xaczm(DOUCA*X3KwNC-GeEl>yVqsT zPYd+h1I32a{1rhpI{ac3DSd##_ZE#{<*5;%bp)))QgHd`e&od( zf+(RdhUusW$%@>^l(2NLED3+5jI7yZhHT5*#-SnOYEWbLGe4dAa zlQKRrmudcnWudV4SISU8_O`Q`Ecr+*%uU#VVOhvAIDu4h$;v~17-9d@RO9^a9A({o z5cPXNM!53S)=m3`3$QOkKHipr^18yZn+lq=LrgC+e^2e5V5}sk4PzdYZ!aV)Yurxj z4=U*1mK1}I)#$l%rS8htuHO9VC2m@T@)B2Iz!IR9AD#e3{4dAIw$^GjmwiAScO)Cf>S5!`k86Q1FIQbefs(U5rt-&ov8v=|T%Mt=i+dhQNGsp5|iT&Ej zEG6Y5gX$LN&$m%J(N_kG2CR&(zJ#6HB+@)O58+du5Wv%k>eUPi{;Yf~ z;O|L-&fja*wvOOrk((XK6s)Ly%1ciA9Vx(jxKd(1(uLN9Dtthg{qXppPW;1{t{ekR za8@SY;fu&{qh-B(RRR1ZHE;-I!|G=5NOOvMfkBRX;8&J#O)fKZKt3_VymUlO+Yf7c zAm+bu$6s*}P#S^=Zw%BRaeeqg<~3-m%GE{{#+hbik_w833+s{(rx8fv^={+b@W_8< zQ)IaWb`$#%QZ}RkHKo@Aj-#rGmli2vwVopDwc0jM^)@2(@X=dmDsRcP%?3V&5l4#J zp%D3I@w)hspAL1Ra#YFrfZGnRFSY@B13peTt*dEa7m`rVo!_e`7=Gn?*w}95lRp{6v_%v%ZCxDh4+Z;}^M8=@%N< z;)d^^GBy}amXTEd%C-1WUtoP^AHL4$dk))+Ujofh=Yk?JKt&;tk}!f6_F*Z)*3ygV z+;&jfrvGv@zmhWs96Cdos8y~nEBV$!M3Ig;A2Xsk8OI~@ex03D?n07uZSFX|E_h7c zqA#7=mtL&1SG-vlcn)I9YI>jI=ji&LJnT6a^sprl7Oe64@r7Q4^}psSg$4=I-0g$SWWw3jFbg(tMOKCNk~igl zWPnFppa8D31R^`~k5KuiCD)c`wl*50q&jg&Gm~fC2z$R*+uK%N9P-am9F@6@=3%}n z&tixsP$p$on6MYyw54xNA7240`E|gxd}Yg@cHiEMfDtyaX7oaRM?r)5CcWK|9#@j% zMh%v{N%ccoP6R}Qqlv!JU*@i}r!BuK@IM{|lH@8=9?dL*>cR$8l%0BxypoxBv;yED zas|y`myi5HDliTEWc-_5>c#l|GGT$SoT&SE{!e7aFrEZ z&LhI(`Z=Txc~%nMKrU&YVec=zX%9n5BR5&)W}6rboX^8WxPWm*VL};vSZCbYsq|2) zEVyR#6gE0c^YTK>6JQObw1f~%!d_?eWzadkcNp4{;yxQu-4f5q1(?YQqfI|2`3ch9 z{b=3Ac2n3UpQ`uC=J!%Ha&;b(06gq_^}z21u`;hkHf>!qUf_E0mpWoskx2>)FypSo zox`lRCvQj>COB7b7#_hfoMekfTppyz;vu{iuw$FFcJe7ole=|5UVoR?x8GeuwOUZD zU~EBJs20trv_O_j1vRyY5LOQC+;wPeJJpI)%je6)F=1p5|XV+gjE+@%=DRRzXkD zlVXKAHUSwlj2E+Lx>t0;jQ0f8>y=5uO=vD4+smV+?3g28GsU;%eb-&T%(nwJ*D*kk zq_EGkK8Wz;ftcr}kuuxbqi55GyLUl|QyGd%(n?B+ri?IS5O6*WogI`+^lUhM-XQ!>mh2uAeSlhG_JUpX4u+c%OZ8F@i!_h9oPs5hBf zN@PJ{fm@^(#L=3~kr%L!@q0H7k)fAu`uH@USV%tveS6i=mqFLeY-%*{%*A6RN+amZ z(?*ONXwvM|0qDIS5Q8i;m?m)xfmWwnHs@oYh;ssjS23*O94(iZZ_5I3UpzIT5Bn8d z3;xy1aACTNI6o-F*LtW9f&z`sUr3aRuuu7^5)20Gy2FR@}#= z{{_$s7cnGZtHNcR!{C1na2BNkWCosKCwlw~fD^JU^*X%7f{p|@h}k*(`{FQeVQi%U zd$1_S_$;s!2YUwn5ZmOT^xpNaxBM2Ix)#Z~l0 z5wV>N!uLf1zT<0(y#^~&>_f3F)*BP{k3|7~M2I}_+(((iCVX*=Yb zq5$OU_6gEfF%y6`0Ka0H7MRUy-nf#V=~X2F&lC0G!Xx+bwv#hdQNS0!E2EU}{WtluH0AVS&Wb~bd zqZxg3T}o?(6ma8yH~*&{sN*+g>Vu`;Bf!|002ovPDHLkV1lsONu>Y) literal 0 HcmV?d00001 diff --git a/icons/48.png b/icons/48.png new file mode 100644 index 0000000000000000000000000000000000000000..cb10d02e4a0a4368c2b8bfee349cbbeef4d312f2 GIT binary patch literal 1057 zcmV++1m63JP) z)mjzA>Whk~;038l!FmBp(Fd_rkf;!E6}1FJA4CLcq!k~ef`X!gNUB7W)Hb&9Va}1A zlasw?&Yt~4$UZY`)|!9snYGr;YE4g1i@}~9XGX~tFdrx5`_zFQEL-(WrOdp3l}F$d zT-UIT#*`n9m+&+`#`z7|X^g;oxUBtrIdZ*><8z$a{=FO5;{svrrr1LN{|HuKTcoZHxD-EQX^;Lf{28Mtg}`IDq^s>v;dxSs2P@kX>xG@T z5F0CO{UI!`N~91tu18xhpFNC=@J3hri^5m>GQ!rVnJ;Hfq!9R}qW`Ea*>!jTdvFcz z!GVIzF(tb8#!f1Qz+V;p=L+7b7=WI~*?7OuHh>|VUZN{%{gXyuvZ8+!R|_8GszUoe zh3A`vud@cfSLljD&M$C8`~SGPqw~Cio&_bkqJmgQVJxbYPT>h5t9-Z6ep2CiP&nv6 zYIgAI;DG9v^*?eF_!dtJLu#ASy_A)DlG^E#gxrhl3?ScKu2`muS{^KPwONC?P+7g+u z3Oh59lfZl-&5psvC4E)ydIoY5I3(mSF({LZjsfH)kb<&vZ({`ZnHg1^LRo~Kg%ko) z61+nVL{KEziI b>IeS;l_|wFcpiZT00000NkvXXu0mjfClBrK literal 0 HcmV?d00001 diff --git a/icons/72.png b/icons/72.png new file mode 100644 index 0000000000000000000000000000000000000000..35bf30e35f4063a5b1cc9ce526033c8efcba013e GIT binary patch literal 2363 zcmaJ@d010d7LOSM8VpDk5JV+ zbt%OTwsb6@s0gFL$RgrWrJ%Bi3yp%*s(_S2Mx=FK6rB0P>HWU<&b{ZJ-#Nc??z!K0 zKMNPF!C_soC=?1O4CX~5GT8FXwMPCi!{^r^!bQW6(?r238m(9bp*T`F8Nv(Y;#4RS z5=(P3Z$N%1)SuF2(Q%r%uuzr+mive;HaGts283GYe8g@xm}unNM{eMm$JiA2UTm_8t#N~M#$@njO21dwO|NG5`G7KzFN z8Tgq&K%%LnDXd7IU?vu_ViVFd8YK$=v|6o?mf{1eQUQ?3WCA2IKqeCr3!*wlp%Lqd z3ia|?4?IXMQOT4V8LYrtJc^UyEDf80FnynbTp1Sj!LdR;Qz)clfKIFgKpzqyms|3B zXRX#mLjR@lQEPQ{juHYQAvK((k|5`ivV0bd)b5W1Squ?2thFi`awy^q9xTa{Lkf+M z$0i^WLwMMLvK(n!BNbDIb{SUD$t_l)sU{y2>XUuj% zcp9vM)oHL2PbT|N@Sd?Ug%sARS6R;JeabvYCCi4S0u?OBzbi6J_7MUk3Yo+ZFhGO= zXd%z!(-|B-l}Bdqc^oc}M3})!KT^0EEcyRp0fY=->5%{Fm{}FlhL-7v{zn!cZV;qE zu8j)0AFdIsC&J>++o*0zg*b=$7$=|o7qdzzoo7<(iK0eT$a=Lpd5Y1hkZ?K6z$$)~U>+;|#{D#a;BE3R92CK*#bIW!pR7{AxI&)b*@O zqBFPccjpV69f$d)Ud`4@Noa57P|qkzcd-i-l6jnRrMdRa*6ySwi^D6>r_tt>ovTM| zKIQaAep0ZyYu-Gkr!J-iy2eFT>ux!2y3>QpyF3xK^kNI&&_4%A7%4Xo5X{DOG~2d6 z+oRtPC#v&UfJ?|5>MUq;=`{EkUWvK1p?Qk_qkO>b(RO@#V9D!J z%Ds4#+os!v_ngue>|PKfZ|oS`_?)w`1B`RaJ~mL@=MSuozTzs!Mz^9hw!VM+`AyTj zy*6vNj=R3jpOb3~4@L}W%Q#n$1k&7s9xhV(1s9xoJ-yzT^V`i!W2uCi+k()SY?$ zaH1Lw-Y+V(IkrSqQjbmdy?XH6-m0T7L?;tXC(BgFL#p)kyRW2+w?#?LIwn?{>f#@` ze?DNOhFt1q9jC+*+J8y{_T2RzOyySByO()|M_C!BGo!S^(MqFki;GiNh0RmPyEUR- zzjpVr^St6~oQ+F|-1khr*`jptdz#pWwtm#h5t+XWYJF8CHx%d1DL-|3 zaH{NdjC!#uRL8A7ylmfP1~$M?l2DpwW!RQ6SARYFcfUi+Cmlcy_Y}5^RZ=QZUv#gK zjpqX+&iSR8!`9AL6-CFYj$m|6*K^K{cM9a?x#9jnuIs|GgHO!G4G>P&TMg~7MVDt^ zabMUUE?XV6A-bg~*7xm2L`NS#P8)ByYP#g&5KQZl_1pqZn)+Ovtyo?MYq2|Rj;`X{ zhkXBi&vxm)6}BC9`0$b>pIALMK zg!D}Os4;M-b$g^W@6bf^u1L>h&h}wv+V~;iTHB?Q^@E(8oknjmtCB7C%+G zq1(>c?@<&^eqr67ZRgluU^<*g{SGE4QUcaFkVU$vPU5t3>J4kR))xNr8t)@_`X*jJ z=z74{?ZJ)I+&lHw`YINdwL>ZTD7f%Z?(V;2PR@ffyCV{~He^8*`J1-4v2`oNHCr;~ z_p&cThIRWUi#H$M@7wV26D8!shVsLcH30*X)+aBMGWXhDIQFn|j1ZUh?0!OX{^e;x z)<8pkT5hW7R&Sz>d%=m;pLYaG$9GI`>PZ$X8Fvq<#sqJ=w(PX0o-^*+#S)3?-|ip$ zNB`QEUkhYM)h|5npAVG&>R-reo7(P_?=P#=D+b!oOX_;PC@<=){8GWZbCa8l!w+|_ zqCPh-(+T6~UjmFioWN*0&}80m;U)ib1YfgeJN?Ph@qBZ!GPS94ArSX9^ z>?SYaf3%Q>hYEp#imDAPmni@9TX=_2@6B5M&@%Zj~Ha! Qi8^EvLcWMs6_m8?KP_j$9{>OV literal 0 HcmV?d00001 diff --git a/icons/72d.png b/icons/72d.png new file mode 100644 index 0000000000000000000000000000000000000000..8c7587b9e374fd67eed63d0b9a9eadcd283fa150 GIT binary patch literal 3235 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 literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..f24c0bf --- /dev/null +++ b/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "Marah Supporter", + "description": "Diverse Arten der Unterstützung für die Twitch-Streamerin Marah.", + "manifest_version": 3, + "version": "1.0.2", + "homepage_url": "https://rocketbeans.tv/bohnen/60/Marah", + "browser_specific_settings": { + "gecko": { + "id": "marah-supporter-webext@schloebe.de" + } + }, + "background": { + "service_worker": "scripts/service_worker.js" + }, + "icons": { + "16": "icons/16.png", + "32": "icons/32.png", + "48": "icons/48.png", + "72": "icons/72.png", + "96": "icons/96.png", + "128": "icons/128.png", + "256": "icons/256.png" + }, + "action": { + "default_icon": { + "72": "icons/72d.png" + }, + "default_title": "Marah Supporter", + "default_popup": "popup/overview.html" + }, + "permissions": [ + "activeTab", + "tabs" + ] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a03e762 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,18 @@ +{ + "name": "webext", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "webextension-polyfill": "^0.10.0" + } + }, + "node_modules/webextension-polyfill": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/webextension-polyfill/-/webextension-polyfill-0.10.0.tgz", + "integrity": "sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6202192 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "webextension-polyfill": "^0.10.0" + } +} diff --git a/popup/overview.css b/popup/overview.css new file mode 100644 index 0000000..559067a --- /dev/null +++ b/popup/overview.css @@ -0,0 +1,169 @@ +:root { + --marah-body-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + --marah-body-font-size: .7rem; + --marah-body-font-weight: 400; + --marah-body-line-height: 1.5; + --marah-body-color: #fff; + --marah-body-text-align: center; + --marah-body-bg: #212529; + --marah-primary-color: #D6B42D; + --marah-primary-color-rgb: 214, 180, 45; + --marah-secondary-color: #8A710F; + --marah-secondary-color-rgb: 138, 113, 15; + --marah-link-decoration: none; +} + +body { + font-family: var(--marah-body-font-family); + font-size: var(--marah-body-font-size); + font-weight: var(--marah-body-font-weight); + line-height: var(--marah-body-line-height); + color: var(--marah-body-color); + text-align: var(--marah-body-text-align); + background-color: var(--marah-body-bg); + margin: 0; + padding: 0; + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: transparent; + user-select: none; +} + +a { + color: var(--marah-primary-color); + text-decoration: var(--marah-link-decoration); + white-space: nowrap; +} + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid var(--marah-primary-color); +} + +#popup-content { + margin: 20px; +} + +#popup-cover { + width: 36px; + height: auto; +} + + +h2.section-title { + width: 100%; + margin: .7em auto; + overflow: hidden; + text-align: center; + font-weight: 400; + font-size: .8rem; + color: var(--marah-secondary-color); + white-space: nowrap; +} + +h2.section-title:before, +h2.section-title:after { + content: ""; + display: inline-block; + width: 50%; + margin: -2px .5em 0 -55%; + vertical-align: middle; + border-bottom: 1px solid; +} + +h2.section-title:after { + margin: -2px -55% 0 .5em; +} + +.button { + --offset: 5px; + --border-size: 1px; + display: block; + position: relative; + padding: 1em 2em; + margin: 2em 2.5em 0 2.5em; + appearance: none; + border: 0; + background: transparent; + color: var(--marah-primary-color); + text-transform: uppercase; + letter-spacing: 0.25em; + outline: none; + cursor: pointer; + font-weight: bold; + border-radius: 0; + box-shadow: inset 0 0 0 var(--border-size) currentcolor; + transition: background 0.8s ease; + text-decoration: var(--marah-link-decoration); + -webkit-appearance: none; + -moz-appearance: none; +} + +#popup-content-reflinks { + margin-top: 2em; + margin-bottom: 2em; +} + +#popup-content-reflinks>.button:first-child { + margin-top: 0; +} + +#popup-content-reflinks>.button:last-child { + margin-bottom: 0; +} + +.button:hover { + background: rgba(100, 0, 0, 0.03); +} + +.button__horizontal, .button__vertical { + display: inline-block; + position: absolute; + top: var(--horizontal-offset, 0); + right: var(--vertical-offset, 0); + bottom: var(--horizontal-offset, 0); + left: var(--vertical-offset, 0); + transition: transform 0.8s ease; + will-change: transform; +} + +.button__horizontal::before, .button__vertical::before { + content: ""; + position: absolute; + border: inherit; +} + +.button__horizontal { + --vertical-offset: calc(var(--offset) * -1); + border-top: var(--border-size) solid currentcolor; + border-bottom: var(--border-size) solid currentcolor; +} + +.button__horizontal::before { + top: calc(var(--vertical-offset) - var(--border-size)); + bottom: calc(var(--vertical-offset) - var(--border-size)); + left: calc(var(--vertical-offset) * -1); + right: calc(var(--vertical-offset) * -1); +} + +.button:hover .button__horizontal { + transform: scaleX(0); +} + +.button__vertical { + --horizontal-offset: calc(var(--offset) * -1); + border-left: var(--border-size) solid currentcolor; + border-right: var(--border-size) solid currentcolor; +} + +.button__vertical::before { + top: calc(var(--horizontal-offset) * -1); + bottom: calc(var(--horizontal-offset) * -1); + left: calc(var(--horizontal-offset) - var(--border-size)); + right: calc(var(--horizontal-offset) - var(--border-size)); +} + +.button:hover .button__vertical { + transform: scaleY(0); +} \ No newline at end of file diff --git a/popup/overview.html b/popup/overview.html new file mode 100644 index 0000000..158ea9a --- /dev/null +++ b/popup/overview.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/popup/overview.js b/popup/overview.js new file mode 100644 index 0000000..ec69a99 --- /dev/null +++ b/popup/overview.js @@ -0,0 +1,40 @@ +"use strict"; + +const reflinkContainer = document.querySelector('#popup-content-reflinks'); +const supportlinkContainer = document.querySelector('#popup-content-supportlinks'); + +async function fetchMarahPopupLinks() { + const response = await fetch("https://marah.discord-bot.com/browserplugin/api/fetchlinks/", { + method: 'GET', + headers: { + 'Accept': 'application/json' + } + }); + + const jsonData = await response.json(); + const parser = new DOMParser(); + + while (reflinkContainer.hasChildNodes()) { + reflinkContainer.removeChild(reflinkContainer.firstChild); + } + Object.entries(jsonData.reflinks).forEach(([key, value]) => { + const parsed = parser.parseFromString(`${value} `, `text/html`); + const tags = parsed.getElementsByTagName(`a`); + for (const tag of tags) { + reflinkContainer.appendChild(tag); + } + }); + + while (supportlinkContainer.hasChildNodes()) { + supportlinkContainer.removeChild(supportlinkContainer.firstChild); + } + Object.entries(jsonData.supportlinks).forEach(([key, value]) => { + const parsed = parser.parseFromString(`

${value}

`, `text/html`); + const tags = parsed.getElementsByTagName(`p`); + for (const tag of tags) { + supportlinkContainer.appendChild(tag); + } + }); +} + +fetchMarahPopupLinks(); \ No newline at end of file diff --git a/scripts/browser-polyfill.min.js b/scripts/browser-polyfill.min.js new file mode 100644 index 0000000..37f6ee9 --- /dev/null +++ b/scripts/browser-polyfill.min.js @@ -0,0 +1,8 @@ +(function(a,b){if("function"==typeof define&&define.amd)define("webextension-polyfill",["module"],b);else if("undefined"!=typeof exports)b(module);else{var c={exports:{}};b(c),a.browser=c.exports}})("undefined"==typeof globalThis?"undefined"==typeof self?this:self:globalThis,function(a){"use strict";if(!globalThis.chrome?.runtime?.id)throw new Error("This script should only be loaded in a browser extension.");if("undefined"==typeof globalThis.browser||Object.getPrototypeOf(globalThis.browser)!==Object.prototype){a.exports=(a=>{const b={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(0===Object.keys(b).length)throw new Error("api-metadata.json has not been included in browser-polyfill");class c extends WeakMap{constructor(a,b=void 0){super(b),this.createItem=a}get(a){return this.has(a)||this.set(a,this.createItem(a)),super.get(a)}}const d=a=>a&&"object"==typeof a&&"function"==typeof a.then,e=(b,c)=>(...d)=>{a.runtime.lastError?b.reject(new Error(a.runtime.lastError.message)):c.singleCallbackArg||1>=d.length&&!1!==c.singleCallbackArg?b.resolve(d[0]):b.resolve(d)},f=a=>1==a?"argument":"arguments",g=(a,b)=>function(c,...d){if(d.lengthb.maxArgs)throw new Error(`Expected at most ${b.maxArgs} ${f(b.maxArgs)} for ${a}(), got ${d.length}`);return new Promise((f,g)=>{if(b.fallbackToNoCallback)try{c[a](...d,e({resolve:f,reject:g},b))}catch(e){console.warn(`${a} API method doesn't seem to support the callback parameter, `+"falling back to call it without a callback: ",e),c[a](...d),b.fallbackToNoCallback=!1,b.noCallback=!0,f()}else b.noCallback?(c[a](...d),f()):c[a](...d,e({resolve:f,reject:g},b))})},h=(a,b,c)=>new Proxy(b,{apply(b,d,e){return c.call(d,a,...e)}});let i=Function.call.bind(Object.prototype.hasOwnProperty);const j=(a,b={},c={})=>{let d=Object.create(null),e=Object.create(a);return new Proxy(e,{has(b,c){return c in a||c in d},get(e,f){if(f in d)return d[f];if(!(f in a))return;let k=a[f];if("function"==typeof k){if("function"==typeof b[f])k=h(a,a[f],b[f]);else if(i(c,f)){let b=g(f,c[f]);k=h(a,a[f],b)}else k=k.bind(a);}else if("object"==typeof k&&null!==k&&(i(b,f)||i(c,f)))k=j(k,b[f],c[f]);else if(i(c,"*"))k=j(k,b[f],c["*"]);else return Object.defineProperty(d,f,{configurable:!0,enumerable:!0,get(){return a[f]},set(b){a[f]=b}}),k;return d[f]=k,k},set(b,c,e){return c in d?d[c]=e:a[c]=e,!0},defineProperty(a,b,c){return Reflect.defineProperty(d,b,c)},deleteProperty(a,b){return Reflect.deleteProperty(d,b)}})},k=a=>({addListener(b,c,...d){b.addListener(a.get(c),...d)},hasListener(b,c){return b.hasListener(a.get(c))},removeListener(b,c){b.removeListener(a.get(c))}}),l=new c(a=>"function"==typeof a?function(b){const c=j(b,{},{getContent:{minArgs:0,maxArgs:0}});a(c)}:a),m=new c(a=>"function"==typeof a?function(b,c,e){let f,g,h=!1,i=new Promise(a=>{f=function(b){h=!0,a(b)}});try{g=a(b,c,f)}catch(a){g=Promise.reject(a)}const j=!0!==g&&d(g);if(!0!==g&&!j&&!h)return!1;const k=a=>{a.then(a=>{e(a)},a=>{let b;b=a&&(a instanceof Error||"string"==typeof a.message)?a.message:"An unexpected error occurred",e({__mozWebExtensionPolyfillReject__:!0,message:b})}).catch(a=>{console.error("Failed to send onMessage rejected reply",a)})};return j?k(g):k(i),!0}:a),n=({reject:b,resolve:c},d)=>{a.runtime.lastError?a.runtime.lastError.message==="The message port closed before a response was received."?c():b(new Error(a.runtime.lastError.message)):d&&d.__mozWebExtensionPolyfillReject__?b(new Error(d.message)):c(d)},o=(a,b,c,...d)=>{if(d.lengthb.maxArgs)throw new Error(`Expected at most ${b.maxArgs} ${f(b.maxArgs)} for ${a}(), got ${d.length}`);return new Promise((a,b)=>{const e=n.bind(null,{resolve:a,reject:b});d.push(e),c.sendMessage(...d)})},p={devtools:{network:{onRequestFinished:k(l)}},runtime:{onMessage:k(m),onMessageExternal:k(m),sendMessage:o.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:o.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},q={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return b.privacy={network:{"*":q},services:{"*":q},websites:{"*":q}},j(a,p,b)})(chrome)}else a.exports=globalThis.browser}); +//# sourceMappingURL=browser-polyfill.min.js.map + +// webextension-polyfill v.0.10.0 (https://github.com/mozilla/webextension-polyfill) + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ diff --git a/scripts/browser-polyfill.min.js.map b/scripts/browser-polyfill.min.js.map new file mode 100644 index 0000000..ffae072 --- /dev/null +++ b/scripts/browser-polyfill.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"browser-polyfill.min.js","mappings":"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","names":["globalThis","chrome","runtime","id","Error","browser","Object","getPrototypeOf","prototype","module","exports","wrapAPIs","extensionAPIs","apiMetadata","keys","length","DefaultWeakMap","WeakMap","constructor","createItem","items","get","key","has","set","isThenable","value","then","makeCallback","promise","metadata","callbackArgs","lastError","reject","message","singleCallbackArg","resolve","pluralizeArguments","numArgs","wrapAsyncFunction","name","target","args","minArgs","maxArgs","Promise","fallbackToNoCallback","cbError","console","warn","noCallback","wrapMethod","method","wrapper","Proxy","apply","targetMethod","thisObj","call","hasOwnProperty","Function","bind","wrapObject","wrappers","cache","create","proxyTarget","prop","defineProperty","configurable","enumerable","desc","Reflect","deleteProperty","wrapEvent","wrapperMap","addListener","listener","hasListener","removeListener","onRequestFinishedWrappers","req","wrappedReq","getContent","onMessageWrappers","sender","sendResponse","wrappedSendResponse","result","didCallSendResponse","sendResponsePromise","response","err","isResultThenable","sendPromisedResult","msg","error","__mozWebExtensionPolyfillReject__","catch","wrappedSendMessageCallback","reply","wrappedSendMessage","apiNamespaceObj","wrappedCb","push","sendMessage","staticWrappers","devtools","network","onRequestFinished","onMessage","onMessageExternal","tabs","settingMetadata","clear","privacy","services","websites"],"sources":["browser-polyfill.js"],"sourcesContent":["/* webextension-polyfill - v0.10.0 - Fri Aug 12 2022 19:42:44 */\n/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */\n/* vim: set sts=2 sw=2 et tw=80: */\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\"use strict\";\n\nif (!globalThis.chrome?.runtime?.id) {\n throw new Error(\"This script should only be loaded in a browser extension.\");\n}\n\nif (typeof globalThis.browser === \"undefined\" || Object.getPrototypeOf(globalThis.browser) !== Object.prototype) {\n const CHROME_SEND_MESSAGE_CALLBACK_NO_RESPONSE_MESSAGE = \"The message port closed before a response was received.\";\n\n // Wrapping the bulk of this polyfill in a one-time-use function is a minor\n // optimization for Firefox. Since Spidermonkey does not fully parse the\n // contents of a function until the first time it's called, and since it will\n // never actually need to be called, this allows the polyfill to be included\n // in Firefox nearly for free.\n const wrapAPIs = extensionAPIs => {\n // NOTE: apiMetadata is associated to the content of the api-metadata.json file\n // at build time by replacing the following \"include\" with the content of the\n // JSON file.\n const apiMetadata = {\n \"alarms\": {\n \"clear\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"clearAll\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"get\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"getAll\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n }\n },\n \"bookmarks\": {\n \"create\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"get\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getChildren\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getRecent\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getSubTree\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getTree\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"move\": {\n \"minArgs\": 2,\n \"maxArgs\": 2\n },\n \"remove\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"removeTree\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"search\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"update\": {\n \"minArgs\": 2,\n \"maxArgs\": 2\n }\n },\n \"browserAction\": {\n \"disable\": {\n \"minArgs\": 0,\n \"maxArgs\": 1,\n \"fallbackToNoCallback\": true\n },\n \"enable\": {\n \"minArgs\": 0,\n \"maxArgs\": 1,\n \"fallbackToNoCallback\": true\n },\n \"getBadgeBackgroundColor\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getBadgeText\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getPopup\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getTitle\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"openPopup\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"setBadgeBackgroundColor\": {\n \"minArgs\": 1,\n \"maxArgs\": 1,\n \"fallbackToNoCallback\": true\n },\n \"setBadgeText\": {\n \"minArgs\": 1,\n \"maxArgs\": 1,\n \"fallbackToNoCallback\": true\n },\n \"setIcon\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"setPopup\": {\n \"minArgs\": 1,\n \"maxArgs\": 1,\n \"fallbackToNoCallback\": true\n },\n \"setTitle\": {\n \"minArgs\": 1,\n \"maxArgs\": 1,\n \"fallbackToNoCallback\": true\n }\n },\n \"browsingData\": {\n \"remove\": {\n \"minArgs\": 2,\n \"maxArgs\": 2\n },\n \"removeCache\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"removeCookies\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"removeDownloads\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"removeFormData\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"removeHistory\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"removeLocalStorage\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"removePasswords\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"removePluginData\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"settings\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n }\n },\n \"commands\": {\n \"getAll\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n }\n },\n \"contextMenus\": {\n \"remove\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"removeAll\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"update\": {\n \"minArgs\": 2,\n \"maxArgs\": 2\n }\n },\n \"cookies\": {\n \"get\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getAll\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getAllCookieStores\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"remove\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"set\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n }\n },\n \"devtools\": {\n \"inspectedWindow\": {\n \"eval\": {\n \"minArgs\": 1,\n \"maxArgs\": 2,\n \"singleCallbackArg\": false\n }\n },\n \"panels\": {\n \"create\": {\n \"minArgs\": 3,\n \"maxArgs\": 3,\n \"singleCallbackArg\": true\n },\n \"elements\": {\n \"createSidebarPane\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n }\n }\n }\n },\n \"downloads\": {\n \"cancel\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"download\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"erase\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getFileIcon\": {\n \"minArgs\": 1,\n \"maxArgs\": 2\n },\n \"open\": {\n \"minArgs\": 1,\n \"maxArgs\": 1,\n \"fallbackToNoCallback\": true\n },\n \"pause\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"removeFile\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"resume\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"search\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"show\": {\n \"minArgs\": 1,\n \"maxArgs\": 1,\n \"fallbackToNoCallback\": true\n }\n },\n \"extension\": {\n \"isAllowedFileSchemeAccess\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"isAllowedIncognitoAccess\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n }\n },\n \"history\": {\n \"addUrl\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"deleteAll\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"deleteRange\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"deleteUrl\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getVisits\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"search\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n }\n },\n \"i18n\": {\n \"detectLanguage\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getAcceptLanguages\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n }\n },\n \"identity\": {\n \"launchWebAuthFlow\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n }\n },\n \"idle\": {\n \"queryState\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n }\n },\n \"management\": {\n \"get\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getAll\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"getSelf\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"setEnabled\": {\n \"minArgs\": 2,\n \"maxArgs\": 2\n },\n \"uninstallSelf\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n }\n },\n \"notifications\": {\n \"clear\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"create\": {\n \"minArgs\": 1,\n \"maxArgs\": 2\n },\n \"getAll\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"getPermissionLevel\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"update\": {\n \"minArgs\": 2,\n \"maxArgs\": 2\n }\n },\n \"pageAction\": {\n \"getPopup\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getTitle\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"hide\": {\n \"minArgs\": 1,\n \"maxArgs\": 1,\n \"fallbackToNoCallback\": true\n },\n \"setIcon\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"setPopup\": {\n \"minArgs\": 1,\n \"maxArgs\": 1,\n \"fallbackToNoCallback\": true\n },\n \"setTitle\": {\n \"minArgs\": 1,\n \"maxArgs\": 1,\n \"fallbackToNoCallback\": true\n },\n \"show\": {\n \"minArgs\": 1,\n \"maxArgs\": 1,\n \"fallbackToNoCallback\": true\n }\n },\n \"permissions\": {\n \"contains\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getAll\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"remove\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"request\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n }\n },\n \"runtime\": {\n \"getBackgroundPage\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"getPlatformInfo\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"openOptionsPage\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"requestUpdateCheck\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"sendMessage\": {\n \"minArgs\": 1,\n \"maxArgs\": 3\n },\n \"sendNativeMessage\": {\n \"minArgs\": 2,\n \"maxArgs\": 2\n },\n \"setUninstallURL\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n }\n },\n \"sessions\": {\n \"getDevices\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"getRecentlyClosed\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"restore\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n }\n },\n \"storage\": {\n \"local\": {\n \"clear\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"get\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"getBytesInUse\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"remove\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"set\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n }\n },\n \"managed\": {\n \"get\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"getBytesInUse\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n }\n },\n \"sync\": {\n \"clear\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"get\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"getBytesInUse\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"remove\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"set\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n }\n }\n },\n \"tabs\": {\n \"captureVisibleTab\": {\n \"minArgs\": 0,\n \"maxArgs\": 2\n },\n \"create\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"detectLanguage\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"discard\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"duplicate\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"executeScript\": {\n \"minArgs\": 1,\n \"maxArgs\": 2\n },\n \"get\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getCurrent\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n },\n \"getZoom\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"getZoomSettings\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"goBack\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"goForward\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"highlight\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"insertCSS\": {\n \"minArgs\": 1,\n \"maxArgs\": 2\n },\n \"move\": {\n \"minArgs\": 2,\n \"maxArgs\": 2\n },\n \"query\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"reload\": {\n \"minArgs\": 0,\n \"maxArgs\": 2\n },\n \"remove\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"removeCSS\": {\n \"minArgs\": 1,\n \"maxArgs\": 2\n },\n \"sendMessage\": {\n \"minArgs\": 2,\n \"maxArgs\": 3\n },\n \"setZoom\": {\n \"minArgs\": 1,\n \"maxArgs\": 2\n },\n \"setZoomSettings\": {\n \"minArgs\": 1,\n \"maxArgs\": 2\n },\n \"update\": {\n \"minArgs\": 1,\n \"maxArgs\": 2\n }\n },\n \"topSites\": {\n \"get\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n }\n },\n \"webNavigation\": {\n \"getAllFrames\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"getFrame\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n }\n },\n \"webRequest\": {\n \"handlerBehaviorChanged\": {\n \"minArgs\": 0,\n \"maxArgs\": 0\n }\n },\n \"windows\": {\n \"create\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"get\": {\n \"minArgs\": 1,\n \"maxArgs\": 2\n },\n \"getAll\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"getCurrent\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"getLastFocused\": {\n \"minArgs\": 0,\n \"maxArgs\": 1\n },\n \"remove\": {\n \"minArgs\": 1,\n \"maxArgs\": 1\n },\n \"update\": {\n \"minArgs\": 2,\n \"maxArgs\": 2\n }\n }\n };\n\n if (Object.keys(apiMetadata).length === 0) {\n throw new Error(\"api-metadata.json has not been included in browser-polyfill\");\n }\n\n /**\n * A WeakMap subclass which creates and stores a value for any key which does\n * not exist when accessed, but behaves exactly as an ordinary WeakMap\n * otherwise.\n *\n * @param {function} createItem\n * A function which will be called in order to create the value for any\n * key which does not exist, the first time it is accessed. The\n * function receives, as its only argument, the key being created.\n */\n class DefaultWeakMap extends WeakMap {\n constructor(createItem, items = undefined) {\n super(items);\n this.createItem = createItem;\n }\n\n get(key) {\n if (!this.has(key)) {\n this.set(key, this.createItem(key));\n }\n\n return super.get(key);\n }\n }\n\n /**\n * Returns true if the given object is an object with a `then` method, and can\n * therefore be assumed to behave as a Promise.\n *\n * @param {*} value The value to test.\n * @returns {boolean} True if the value is thenable.\n */\n const isThenable = value => {\n return value && typeof value === \"object\" && typeof value.then === \"function\";\n };\n\n /**\n * Creates and returns a function which, when called, will resolve or reject\n * the given promise based on how it is called:\n *\n * - If, when called, `chrome.runtime.lastError` contains a non-null object,\n * the promise is rejected with that value.\n * - If the function is called with exactly one argument, the promise is\n * resolved to that value.\n * - Otherwise, the promise is resolved to an array containing all of the\n * function's arguments.\n *\n * @param {object} promise\n * An object containing the resolution and rejection functions of a\n * promise.\n * @param {function} promise.resolve\n * The promise's resolution function.\n * @param {function} promise.reject\n * The promise's rejection function.\n * @param {object} metadata\n * Metadata about the wrapped method which has created the callback.\n * @param {boolean} metadata.singleCallbackArg\n * Whether or not the promise is resolved with only the first\n * argument of the callback, alternatively an array of all the\n * callback arguments is resolved. By default, if the callback\n * function is invoked with only a single argument, that will be\n * resolved to the promise, while all arguments will be resolved as\n * an array if multiple are given.\n *\n * @returns {function}\n * The generated callback function.\n */\n const makeCallback = (promise, metadata) => {\n return (...callbackArgs) => {\n if (extensionAPIs.runtime.lastError) {\n promise.reject(new Error(extensionAPIs.runtime.lastError.message));\n } else if (metadata.singleCallbackArg ||\n (callbackArgs.length <= 1 && metadata.singleCallbackArg !== false)) {\n promise.resolve(callbackArgs[0]);\n } else {\n promise.resolve(callbackArgs);\n }\n };\n };\n\n const pluralizeArguments = (numArgs) => numArgs == 1 ? \"argument\" : \"arguments\";\n\n /**\n * Creates a wrapper function for a method with the given name and metadata.\n *\n * @param {string} name\n * The name of the method which is being wrapped.\n * @param {object} metadata\n * Metadata about the method being wrapped.\n * @param {integer} metadata.minArgs\n * The minimum number of arguments which must be passed to the\n * function. If called with fewer than this number of arguments, the\n * wrapper will raise an exception.\n * @param {integer} metadata.maxArgs\n * The maximum number of arguments which may be passed to the\n * function. If called with more than this number of arguments, the\n * wrapper will raise an exception.\n * @param {boolean} metadata.singleCallbackArg\n * Whether or not the promise is resolved with only the first\n * argument of the callback, alternatively an array of all the\n * callback arguments is resolved. By default, if the callback\n * function is invoked with only a single argument, that will be\n * resolved to the promise, while all arguments will be resolved as\n * an array if multiple are given.\n *\n * @returns {function(object, ...*)}\n * The generated wrapper function.\n */\n const wrapAsyncFunction = (name, metadata) => {\n return function asyncFunctionWrapper(target, ...args) {\n if (args.length < metadata.minArgs) {\n throw new Error(`Expected at least ${metadata.minArgs} ${pluralizeArguments(metadata.minArgs)} for ${name}(), got ${args.length}`);\n }\n\n if (args.length > metadata.maxArgs) {\n throw new Error(`Expected at most ${metadata.maxArgs} ${pluralizeArguments(metadata.maxArgs)} for ${name}(), got ${args.length}`);\n }\n\n return new Promise((resolve, reject) => {\n if (metadata.fallbackToNoCallback) {\n // This API method has currently no callback on Chrome, but it return a promise on Firefox,\n // and so the polyfill will try to call it with a callback first, and it will fallback\n // to not passing the callback if the first call fails.\n try {\n target[name](...args, makeCallback({resolve, reject}, metadata));\n } catch (cbError) {\n console.warn(`${name} API method doesn't seem to support the callback parameter, ` +\n \"falling back to call it without a callback: \", cbError);\n\n target[name](...args);\n\n // Update the API method metadata, so that the next API calls will not try to\n // use the unsupported callback anymore.\n metadata.fallbackToNoCallback = false;\n metadata.noCallback = true;\n\n resolve();\n }\n } else if (metadata.noCallback) {\n target[name](...args);\n resolve();\n } else {\n target[name](...args, makeCallback({resolve, reject}, metadata));\n }\n });\n };\n };\n\n /**\n * Wraps an existing method of the target object, so that calls to it are\n * intercepted by the given wrapper function. The wrapper function receives,\n * as its first argument, the original `target` object, followed by each of\n * the arguments passed to the original method.\n *\n * @param {object} target\n * The original target object that the wrapped method belongs to.\n * @param {function} method\n * The method being wrapped. This is used as the target of the Proxy\n * object which is created to wrap the method.\n * @param {function} wrapper\n * The wrapper function which is called in place of a direct invocation\n * of the wrapped method.\n *\n * @returns {Proxy}\n * A Proxy object for the given method, which invokes the given wrapper\n * method in its place.\n */\n const wrapMethod = (target, method, wrapper) => {\n return new Proxy(method, {\n apply(targetMethod, thisObj, args) {\n return wrapper.call(thisObj, target, ...args);\n },\n });\n };\n\n let hasOwnProperty = Function.call.bind(Object.prototype.hasOwnProperty);\n\n /**\n * Wraps an object in a Proxy which intercepts and wraps certain methods\n * based on the given `wrappers` and `metadata` objects.\n *\n * @param {object} target\n * The target object to wrap.\n *\n * @param {object} [wrappers = {}]\n * An object tree containing wrapper functions for special cases. Any\n * function present in this object tree is called in place of the\n * method in the same location in the `target` object tree. These\n * wrapper methods are invoked as described in {@see wrapMethod}.\n *\n * @param {object} [metadata = {}]\n * An object tree containing metadata used to automatically generate\n * Promise-based wrapper functions for asynchronous. Any function in\n * the `target` object tree which has a corresponding metadata object\n * in the same location in the `metadata` tree is replaced with an\n * automatically-generated wrapper function, as described in\n * {@see wrapAsyncFunction}\n *\n * @returns {Proxy}\n */\n const wrapObject = (target, wrappers = {}, metadata = {}) => {\n let cache = Object.create(null);\n let handlers = {\n has(proxyTarget, prop) {\n return prop in target || prop in cache;\n },\n\n get(proxyTarget, prop, receiver) {\n if (prop in cache) {\n return cache[prop];\n }\n\n if (!(prop in target)) {\n return undefined;\n }\n\n let value = target[prop];\n\n if (typeof value === \"function\") {\n // This is a method on the underlying object. Check if we need to do\n // any wrapping.\n\n if (typeof wrappers[prop] === \"function\") {\n // We have a special-case wrapper for this method.\n value = wrapMethod(target, target[prop], wrappers[prop]);\n } else if (hasOwnProperty(metadata, prop)) {\n // This is an async method that we have metadata for. Create a\n // Promise wrapper for it.\n let wrapper = wrapAsyncFunction(prop, metadata[prop]);\n value = wrapMethod(target, target[prop], wrapper);\n } else {\n // This is a method that we don't know or care about. Return the\n // original method, bound to the underlying object.\n value = value.bind(target);\n }\n } else if (typeof value === \"object\" && value !== null &&\n (hasOwnProperty(wrappers, prop) ||\n hasOwnProperty(metadata, prop))) {\n // This is an object that we need to do some wrapping for the children\n // of. Create a sub-object wrapper for it with the appropriate child\n // metadata.\n value = wrapObject(value, wrappers[prop], metadata[prop]);\n } else if (hasOwnProperty(metadata, \"*\")) {\n // Wrap all properties in * namespace.\n value = wrapObject(value, wrappers[prop], metadata[\"*\"]);\n } else {\n // We don't need to do any wrapping for this property,\n // so just forward all access to the underlying object.\n Object.defineProperty(cache, prop, {\n configurable: true,\n enumerable: true,\n get() {\n return target[prop];\n },\n set(value) {\n target[prop] = value;\n },\n });\n\n return value;\n }\n\n cache[prop] = value;\n return value;\n },\n\n set(proxyTarget, prop, value, receiver) {\n if (prop in cache) {\n cache[prop] = value;\n } else {\n target[prop] = value;\n }\n return true;\n },\n\n defineProperty(proxyTarget, prop, desc) {\n return Reflect.defineProperty(cache, prop, desc);\n },\n\n deleteProperty(proxyTarget, prop) {\n return Reflect.deleteProperty(cache, prop);\n },\n };\n\n // Per contract of the Proxy API, the \"get\" proxy handler must return the\n // original value of the target if that value is declared read-only and\n // non-configurable. For this reason, we create an object with the\n // prototype set to `target` instead of using `target` directly.\n // Otherwise we cannot return a custom object for APIs that\n // are declared read-only and non-configurable, such as `chrome.devtools`.\n //\n // The proxy handlers themselves will still use the original `target`\n // instead of the `proxyTarget`, so that the methods and properties are\n // dereferenced via the original targets.\n let proxyTarget = Object.create(target);\n return new Proxy(proxyTarget, handlers);\n };\n\n /**\n * Creates a set of wrapper functions for an event object, which handles\n * wrapping of listener functions that those messages are passed.\n *\n * A single wrapper is created for each listener function, and stored in a\n * map. Subsequent calls to `addListener`, `hasListener`, or `removeListener`\n * retrieve the original wrapper, so that attempts to remove a\n * previously-added listener work as expected.\n *\n * @param {DefaultWeakMap} wrapperMap\n * A DefaultWeakMap object which will create the appropriate wrapper\n * for a given listener function when one does not exist, and retrieve\n * an existing one when it does.\n *\n * @returns {object}\n */\n const wrapEvent = wrapperMap => ({\n addListener(target, listener, ...args) {\n target.addListener(wrapperMap.get(listener), ...args);\n },\n\n hasListener(target, listener) {\n return target.hasListener(wrapperMap.get(listener));\n },\n\n removeListener(target, listener) {\n target.removeListener(wrapperMap.get(listener));\n },\n });\n\n const onRequestFinishedWrappers = new DefaultWeakMap(listener => {\n if (typeof listener !== \"function\") {\n return listener;\n }\n\n /**\n * Wraps an onRequestFinished listener function so that it will return a\n * `getContent()` property which returns a `Promise` rather than using a\n * callback API.\n *\n * @param {object} req\n * The HAR entry object representing the network request.\n */\n return function onRequestFinished(req) {\n const wrappedReq = wrapObject(req, {} /* wrappers */, {\n getContent: {\n minArgs: 0,\n maxArgs: 0,\n },\n });\n listener(wrappedReq);\n };\n });\n\n const onMessageWrappers = new DefaultWeakMap(listener => {\n if (typeof listener !== \"function\") {\n return listener;\n }\n\n /**\n * Wraps a message listener function so that it may send responses based on\n * its return value, rather than by returning a sentinel value and calling a\n * callback. If the listener function returns a Promise, the response is\n * sent when the promise either resolves or rejects.\n *\n * @param {*} message\n * The message sent by the other end of the channel.\n * @param {object} sender\n * Details about the sender of the message.\n * @param {function(*)} sendResponse\n * A callback which, when called with an arbitrary argument, sends\n * that value as a response.\n * @returns {boolean}\n * True if the wrapped listener returned a Promise, which will later\n * yield a response. False otherwise.\n */\n return function onMessage(message, sender, sendResponse) {\n let didCallSendResponse = false;\n\n let wrappedSendResponse;\n let sendResponsePromise = new Promise(resolve => {\n wrappedSendResponse = function(response) {\n didCallSendResponse = true;\n resolve(response);\n };\n });\n\n let result;\n try {\n result = listener(message, sender, wrappedSendResponse);\n } catch (err) {\n result = Promise.reject(err);\n }\n\n const isResultThenable = result !== true && isThenable(result);\n\n // If the listener didn't returned true or a Promise, or called\n // wrappedSendResponse synchronously, we can exit earlier\n // because there will be no response sent from this listener.\n if (result !== true && !isResultThenable && !didCallSendResponse) {\n return false;\n }\n\n // A small helper to send the message if the promise resolves\n // and an error if the promise rejects (a wrapped sendMessage has\n // to translate the message into a resolved promise or a rejected\n // promise).\n const sendPromisedResult = (promise) => {\n promise.then(msg => {\n // send the message value.\n sendResponse(msg);\n }, error => {\n // Send a JSON representation of the error if the rejected value\n // is an instance of error, or the object itself otherwise.\n let message;\n if (error && (error instanceof Error ||\n typeof error.message === \"string\")) {\n message = error.message;\n } else {\n message = \"An unexpected error occurred\";\n }\n\n sendResponse({\n __mozWebExtensionPolyfillReject__: true,\n message,\n });\n }).catch(err => {\n // Print an error on the console if unable to send the response.\n console.error(\"Failed to send onMessage rejected reply\", err);\n });\n };\n\n // If the listener returned a Promise, send the resolved value as a\n // result, otherwise wait the promise related to the wrappedSendResponse\n // callback to resolve and send it as a response.\n if (isResultThenable) {\n sendPromisedResult(result);\n } else {\n sendPromisedResult(sendResponsePromise);\n }\n\n // Let Chrome know that the listener is replying.\n return true;\n };\n });\n\n const wrappedSendMessageCallback = ({reject, resolve}, reply) => {\n if (extensionAPIs.runtime.lastError) {\n // Detect when none of the listeners replied to the sendMessage call and resolve\n // the promise to undefined as in Firefox.\n // See https://github.com/mozilla/webextension-polyfill/issues/130\n if (extensionAPIs.runtime.lastError.message === CHROME_SEND_MESSAGE_CALLBACK_NO_RESPONSE_MESSAGE) {\n resolve();\n } else {\n reject(new Error(extensionAPIs.runtime.lastError.message));\n }\n } else if (reply && reply.__mozWebExtensionPolyfillReject__) {\n // Convert back the JSON representation of the error into\n // an Error instance.\n reject(new Error(reply.message));\n } else {\n resolve(reply);\n }\n };\n\n const wrappedSendMessage = (name, metadata, apiNamespaceObj, ...args) => {\n if (args.length < metadata.minArgs) {\n throw new Error(`Expected at least ${metadata.minArgs} ${pluralizeArguments(metadata.minArgs)} for ${name}(), got ${args.length}`);\n }\n\n if (args.length > metadata.maxArgs) {\n throw new Error(`Expected at most ${metadata.maxArgs} ${pluralizeArguments(metadata.maxArgs)} for ${name}(), got ${args.length}`);\n }\n\n return new Promise((resolve, reject) => {\n const wrappedCb = wrappedSendMessageCallback.bind(null, {resolve, reject});\n args.push(wrappedCb);\n apiNamespaceObj.sendMessage(...args);\n });\n };\n\n const staticWrappers = {\n devtools: {\n network: {\n onRequestFinished: wrapEvent(onRequestFinishedWrappers),\n },\n },\n runtime: {\n onMessage: wrapEvent(onMessageWrappers),\n onMessageExternal: wrapEvent(onMessageWrappers),\n sendMessage: wrappedSendMessage.bind(null, \"sendMessage\", {minArgs: 1, maxArgs: 3}),\n },\n tabs: {\n sendMessage: wrappedSendMessage.bind(null, \"sendMessage\", {minArgs: 2, maxArgs: 3}),\n },\n };\n const settingMetadata = {\n clear: {minArgs: 1, maxArgs: 1},\n get: {minArgs: 1, maxArgs: 1},\n set: {minArgs: 1, maxArgs: 1},\n };\n apiMetadata.privacy = {\n network: {\"*\": settingMetadata},\n services: {\"*\": settingMetadata},\n websites: {\"*\": settingMetadata},\n };\n\n return wrapObject(extensionAPIs, staticWrappers, apiMetadata);\n };\n\n // The build process adds a UMD wrapper around this file, which makes the\n // `module` variable available.\n module.exports = wrapAPIs(chrome);\n} else {\n module.exports = globalThis.browser;\n}\n"]} \ No newline at end of file diff --git a/scripts/service_worker.js b/scripts/service_worker.js new file mode 100644 index 0000000..dc09e86 --- /dev/null +++ b/scripts/service_worker.js @@ -0,0 +1,50 @@ +"use strict"; + +importScripts('browser-polyfill.min.js'); + +const TITLE_OPENREFLINK = "Marah's Reflink öffnen für "; +const APPLICABLE_HOSTS_ALL = ["amazon.de", "humblebundle.com", "www.amazon.de", "www.humblebundle.com"]; +const APPLICABLE_HOSTS_AMAZON = ["amazon.de", "www.amazon.de"]; +const APPLICABLE_HOSTS_HUMBLEBUNDLE = ["humblebundle.com", "www.humblebundle.com"]; + +function handleClick(tab) { + function gotTitle(title) { + const host = (new URL(tab.url)).host; + if (APPLICABLE_HOSTS_AMAZON.includes(host)) { + browser.tabs.update({ url: "https://amzn.to/440wRZW" }); + } else if (APPLICABLE_HOSTS_HUMBLEBUNDLE.includes(host)) { + browser.tabs.update({ url: "https://www.humblebundle.com/?partner=marah" }); + } + } + + let gettingTitle = browser.action.getTitle({tabId: tab.id}); + gettingTitle.then(gotTitle); +} + +function websiteIsApplicable(url) { + const host = (new URL(url)).host; + return APPLICABLE_HOSTS_ALL.includes(host); +} + +function initializeBrowserAction(tab) { + if (websiteIsApplicable(tab.url)) { + browser.action.setIcon({ tabId: tab.id, path: "../icons/72.png" }); + browser.action.setTitle({ tabId: tab.id, title: TITLE_OPENREFLINK + (new URL(tab.url)).host }); + browser.action.setPopup({ tabId: tab.id, popup: "" }); + } else { + browser.action.setIcon({ tabId: tab.id, path: "../icons/72d.png" }); + } +} + +let gettingAllTabs = browser.tabs.query({}); +gettingAllTabs.then((tabs) => { + for (let tab of tabs) { + initializeBrowserAction(tab); + } +}); + +browser.tabs.onUpdated.addListener((id, changeInfo, tab) => { + initializeBrowserAction(tab); +}); + +browser.action.onClicked.addListener(handleClick); \ No newline at end of file diff --git a/web-ext-artifacts/marah_supporter-1.0.0.zip b/web-ext-artifacts/marah_supporter-1.0.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..5f18c714d25d7c871abbd5cb29bfe5745a6c83e9 GIT binary patch literal 42292 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