From 417e434296ba13dd490a7b2ee415c38664110174 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Tue, 30 Nov 2021 17:06:25 +0000 Subject: [PATCH 001/892] Fix for abcnews.go.com (#7506) * Fix for abcnews.go.com Invert logo. * Inverting remaining dark buttons in header --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5c41c6d6ef8e..9357acec6a74 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -343,6 +343,16 @@ CSS ================================ +abcnews.go.com + +INVERT +.navLogo +#sections +#search +#notifications + +================================ + abiturma.de INVERT From f629be84cdab971b78cb59272e949cf0109f4313 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Tue, 30 Nov 2021 17:09:09 +0000 Subject: [PATCH 002/892] Fix for pbs.org (#7509) Invert logo --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9357acec6a74..780bd9716137 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10689,6 +10689,9 @@ BODY.normal td.bodyarea { background-image: none !important; } +IGNORE INLINE STYLE +.page-header__brand > svg > path + ================================ pcdiga.com From 2ee590e48ba9f19e23218bf95134179796dd541d Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 30 Nov 2021 17:21:17 +0000 Subject: [PATCH 003/892] Fix for g1.com.br (#7514) - Resolves #7511 --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 780bd9716137..be9c44d02b18 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5687,6 +5687,16 @@ td { ================================ +g1.com.br +g1.globo.com + +CSS +.multicontent { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + garmin.com INVERT From b7c4eb22629bd74174d1f08effaa03b0df0e52e7 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Tue, 30 Nov 2021 21:50:38 +0100 Subject: [PATCH 004/892] Fix for rg-adguard.net (#7515) - msdn.rg-adguard.net - uup.rg-adguard.net - tb.rg-adguard.net --- src/config/dynamic-theme-fixes.config | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index be9c44d02b18..a058c697e8e0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11622,6 +11622,22 @@ INVERT ================================ +rg-adguard.net + +INVERT +img[src*="info"] +img[src*="like"] +img[src*="donate"] +img[src*="faq"] + +CSS +body, +.tftable th { + background: none !important; +} + +================================ + richie-bendall.ml CSS From b17218e5c60dfaeb22c4ba0153556e9a801d35a5 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Wed, 1 Dec 2021 10:36:47 +0000 Subject: [PATCH 005/892] Fix for wgu.edu (#7518) * Fix for wgu.edu Invert logo * Invert hamburger menu --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a058c697e8e0..0769341d2bd5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -405,6 +405,15 @@ CSS ================================ +access.wgu.edu +my.wgu.edu + +INVERT +img[alt="WGU Logo"] +.nav-hamburger + +================================ + account.live.com INVERT From 25bfe20dc17c0869e840531e274de98a19b35ad3 Mon Sep 17 00:00:00 2001 From: torma616 Date: Wed, 1 Dec 2021 05:39:22 -0500 Subject: [PATCH 006/892] Added dark sites (#7519) --- src/config/dark-sites.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index ea3164334363..8c4ece1f470c 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -927,10 +927,12 @@ wormhole.app wowaudit.com wowhead.com wowinterface.com +www.cc.com www.chiefdelphi.com www.digikam.org www.directvnow.com www.gotimelinr.com +www.mtv.com www.netflix.com www.razer.com www.seebham.codes From 1e18a025c96cffda599d089ad45291f51b8e313c Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 1 Dec 2021 11:45:49 +0100 Subject: [PATCH 007/892] FIx for read.amazon.* (#7523) - See #6741 --- src/config/dynamic-theme-fixes.config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0769341d2bd5..25e76b13654a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11393,11 +11393,12 @@ INVERT ================================ -read.amazon.com +read.amazon.* INVERT .header_bar_icon:not(#kindleReader_button_close) .header_bar_button +#kindleReader_content ================================ From 2371dbf8a19bf80bef45805b4bc8978c45ea0a8c Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 1 Dec 2021 20:04:33 +0100 Subject: [PATCH 008/892] Fix for snapcraft.io (#7525) - Resolves #7524 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 25e76b13654a..b3b4ea7b4667 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12430,6 +12430,15 @@ CSS ================================ +snapcraft.io + +CSS +.snapcraft-banner-background { + background-image: none !important; +} + +================================ + snapeda.com INVERT From 8e549b5a50db59331611f4286f82e9da779ad886 Mon Sep 17 00:00:00 2001 From: torma616 Date: Wed, 1 Dec 2021 15:00:21 -0500 Subject: [PATCH 009/892] Fix for VH1.com (#7520) - Fix background color. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b3b4ea7b4667..05ae4c3634e3 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -125,6 +125,15 @@ div[class^='c5'] .gm-style ================================ +*.vh1.com + +CSS +.module-container { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + *.vultr.com CSS From 2a49060542f29687be1f206d6ee3adf9340c4fca Mon Sep 17 00:00:00 2001 From: FadeMind Date: Thu, 2 Dec 2021 19:33:32 +0100 Subject: [PATCH 010/892] Fix for radiokolor.pl (#7528) --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 05ae4c3634e3..86c9d3ada7f7 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11367,6 +11367,20 @@ INVERT ================================ +radiokolor.pl + +INVERT +.nav-brand +.buttons-1 +a.logo-1 + +CSS +.content-box-1 { + background-image: none !important; +} + +================================ + railwaygazette.com INVERT From 65a48c86dba0127578aa6256732bc1b75a44173b Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 2 Dec 2021 19:56:43 +0100 Subject: [PATCH 011/892] Fix for fs.blog (#7534) - Resolves #7529 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 86c9d3ada7f7..07797dfd0366 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5670,6 +5670,15 @@ div.formular input[type="checkbox"] { ================================ +fs.blog + +CSS +body { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + ftp.nluug.nl INVERT From f9b3a622efc98947e1490e512a59229a8d551788 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 2 Dec 2021 20:09:30 +0100 Subject: [PATCH 012/892] Fix for wszystkoconajwazniejsze.pl (#7535) - Resolves #7530 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 07797dfd0366..8dd014d4c837 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15429,6 +15429,15 @@ span ================================ +wszystkoconajwazniejsze.pl + +CSS +#papier img { + mix-blend-mode: normal !important; +} + +================================ + wuffs.org CSS From 72bb995dd1b0e570c21f596f10ce8d6402e4a8d0 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Thu, 2 Dec 2021 20:12:58 +0100 Subject: [PATCH 013/892] Fix for businessinsider.com.pl (#7531) --- src/config/dynamic-theme-fixes.config | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8dd014d4c837..f15b7fbe88a8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2306,12 +2306,16 @@ it.businessinsider.com INVERT .account-text-not-logged-in +.article-share_buttons .brand .brands-logo .drawer-heading.headline-bold .f-footer-logo .f-header-logo .f-header-editionLabel +.footer_logo-bi +.footer_social-links +.header-logo .ins-drawer-button-area .ins-drawer-vertical-link .logo @@ -2333,6 +2337,8 @@ INVERT .socialmedia-icon-list .verticals-listitem-label a[title="Business Insider España"] +a[id="menu-hamburger-button"] +a[href="/szukaj"] button[class*="drawer-dropdown-button"] button[class="unbutton"] > img div[class*="footer__LogoWrapper"] From 70fbdb9c9880cc1ed38c7b6b7cd6b1e2ba8bf0ba Mon Sep 17 00:00:00 2001 From: Francis The Basilisk <36006338+snorkysnark@users.noreply.github.com> Date: Thu, 2 Dec 2021 22:14:32 +0300 Subject: [PATCH 014/892] Fix for multitran.com (#7532) --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index f15b7fbe88a8..88e379a7e3d2 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9574,6 +9574,15 @@ CSS ================================ +multitran.com + +CSS +body { + background-image: none !important; +} + +================================ + mumble.info INVERT From f66a5be1c41737085c87cbedce0f925f55a6ffa9 Mon Sep 17 00:00:00 2001 From: KornFlaks Date: Thu, 2 Dec 2021 17:45:20 -0500 Subject: [PATCH 015/892] Fix for Instructure.com (#7537) - Invert embedded PDF's --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 88e379a7e3d2..7ca7f036ced1 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7201,6 +7201,7 @@ instructure.com INVERT .equation_image +.ef-file-preview-stretch ================================ From 2020cfe43857a34b90370219ea9b70165c8356c2 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 2 Dec 2021 23:50:49 +0100 Subject: [PATCH 016/892] Allow API to disable proxy of stylesheets (#7538) - Allow developers of the API to disable the proxying of `document.styleSheets`. - Resolves #7536 --- index.d.ts | 7 +++++++ src/definitions.d.ts | 1 + src/inject/dynamic-theme/index.ts | 2 +- src/inject/dynamic-theme/stylesheet-proxy.ts | 13 +++++++++---- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/index.d.ts b/index.d.ts index 573e7f1697f7..332a07370401 100644 --- a/index.d.ts +++ b/index.d.ts @@ -150,6 +150,13 @@ declare namespace DarkReader { * Mostly used for wrongly inverted background-images */ ignoreImageAnalysis: string[]; + + /** + * A toggle to disable the proxying of `document.styleSheets`. + * This is a API-Exclusive option, as it can break legitmate websites, + * who are using the Dark Reader API. + */ + disableStyleSheetsProxy: boolean; } } diff --git a/src/definitions.d.ts b/src/definitions.d.ts index 81e7d777a869..18b3ef72b821 100644 --- a/src/definitions.d.ts +++ b/src/definitions.d.ts @@ -134,6 +134,7 @@ export interface DynamicThemeFix { css: string; ignoreInlineStyle: string[]; ignoreImageAnalysis: string[]; + disableStyleSheetsProxy: boolean; } export interface InversionFix { diff --git a/src/inject/dynamic-theme/index.ts b/src/inject/dynamic-theme/index.ts index 3aa369dd9859..d9112b1288ab 100644 --- a/src/inject/dynamic-theme/index.ts +++ b/src/inject/dynamic-theme/index.ts @@ -133,7 +133,7 @@ function createStaticStyleOverrides() { document.head.insertBefore(rootVarsStyle, variableStyle.nextSibling); const proxyScript = createOrUpdateScript('darkreader--proxy'); - proxyScript.append(`(${injectProxy})()`); + proxyScript.append(`(${injectProxy})(!${fixes.disableStyleSheetsProxy})`); document.head.insertBefore(proxyScript, rootVarsStyle.nextSibling); proxyScript.remove(); } diff --git a/src/inject/dynamic-theme/stylesheet-proxy.ts b/src/inject/dynamic-theme/stylesheet-proxy.ts index 922dee6def88..b250fc92d60b 100644 --- a/src/inject/dynamic-theme/stylesheet-proxy.ts +++ b/src/inject/dynamic-theme/stylesheet-proxy.ts @@ -1,4 +1,4 @@ -export function injectProxy() { +export function injectProxy(enableStyleSheetsProxy: boolean) { document.dispatchEvent(new CustomEvent('__darkreader__inlineScriptsAllowed')); const addRuleDescriptor = Object.getOwnPropertyDescriptor(CSSStyleSheet.prototype, 'addRule'); @@ -6,7 +6,8 @@ export function injectProxy() { const deleteRuleDescriptor = Object.getOwnPropertyDescriptor(CSSStyleSheet.prototype, 'deleteRule'); const removeRuleDescriptor = Object.getOwnPropertyDescriptor(CSSStyleSheet.prototype, 'removeRule'); - const documentStyleSheetsDescriptor = Object.getOwnPropertyDescriptor(Document.prototype, 'styleSheets'); + const documentStyleSheetsDescriptor = enableStyleSheetsProxy ? + Object.getOwnPropertyDescriptor(Document.prototype, 'styleSheets') : null; // Reference: // https://github.com/darkreader/darkreader/issues/6480#issuecomment-897696175 @@ -22,7 +23,9 @@ export function injectProxy() { Object.defineProperty(CSSStyleSheet.prototype, 'removeRule', removeRuleDescriptor); document.removeEventListener('__darkreader__cleanUp', cleanUp); document.removeEventListener('__darkreader__addUndefinedResolver', addUndefinedResolver); - Object.defineProperty(Document.prototype, 'styleSheets', documentStyleSheetsDescriptor); + if (enableStyleSheetsProxy) { + Object.defineProperty(Document.prototype, 'styleSheets', documentStyleSheetsDescriptor); + } if (shouldWrapHTMLElement) { Object.defineProperty(Element.prototype, 'getElementsByTagName', getElementsByTagNameDescriptor); } @@ -109,7 +112,9 @@ export function injectProxy() { Object.defineProperty(CSSStyleSheet.prototype, 'insertRule', Object.assign({}, insertRuleDescriptor, {value: proxyInsertRule})); Object.defineProperty(CSSStyleSheet.prototype, 'deleteRule', Object.assign({}, deleteRuleDescriptor, {value: proxyDeleteRule})); Object.defineProperty(CSSStyleSheet.prototype, 'removeRule', Object.assign({}, removeRuleDescriptor, {value: proxyRemoveRule})); - Object.defineProperty(Document.prototype, 'styleSheets', Object.assign({}, documentStyleSheetsDescriptor, {get: proxyDocumentStyleSheets})); + if (enableStyleSheetsProxy) { + Object.defineProperty(Document.prototype, 'styleSheets', Object.assign({}, documentStyleSheetsDescriptor, {get: proxyDocumentStyleSheets})); + } if (shouldWrapHTMLElement) { Object.defineProperty(Element.prototype, 'getElementsByTagName', Object.assign({}, getElementsByTagNameDescriptor, {value: proxyGetElementsByTagName})); } From d3a9af6a2556313b596cc81e9425784940507ffb Mon Sep 17 00:00:00 2001 From: linsui <36977733+linsui@users.noreply.github.com> Date: Fri, 3 Dec 2021 18:15:16 +0000 Subject: [PATCH 017/892] Fix for hdlbits.01xz.net (#7450) * Fix for hdlbits.01xz.net * Update src/config/dynamic-theme-fixes.config Co-authored-by: Gusted * Update src/config/dynamic-theme-fixes.config Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7ca7f036ced1..0ab124311e2b 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6674,6 +6674,16 @@ INVERT ================================ +hdlbits.01xz.net + +CSS +img.image, .image > img { + background-color: white !important; + filter: brightness(50%) sepia(40%) !important; +} + +================================ + heise.de INVERT From 0a44d2fbf2c9b4948c596ce254783140f7f3caae Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Fri, 3 Dec 2021 19:29:33 +0000 Subject: [PATCH 018/892] Fixed opening blog links (v5) (#7543) --- src/ui/popup/news-section/index.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ui/popup/news-section/index.tsx b/src/ui/popup/news-section/index.tsx index 39e328ec6ade..3c8a3dcde046 100644 --- a/src/ui/popup/news-section/index.tsx +++ b/src/ui/popup/news-section/index.tsx @@ -24,6 +24,8 @@ export default function NewsSection(props: ViewProps) { 'news-section__main-link': true, 'news-section__main-link--fresh': isFresh(latest), }} + target="_blank" + rel="noopener noreferrer" > {latest.headline} : null} From cc8fbde8c8de6031d0c92f1b25bf09b34f3ed32d Mon Sep 17 00:00:00 2001 From: Brian Maher Date: Fri, 3 Dec 2021 13:20:22 -0800 Subject: [PATCH 019/892] Added dark site (#7539) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 8c4ece1f470c..2285ebe4e291 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -124,6 +124,7 @@ brawldb.com breaksforeyes.app brew.sh bri.io +brianpmaher.com broadcasthe.net brodierobertson.xyz browserslist.vercel.app From 0edae8968b5f5c66559b32a3e76b8509d58728c1 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Sun, 5 Dec 2021 22:37:26 +0000 Subject: [PATCH 020/892] Update icons (#7555) --- src/icons/dr_128.png | Bin 8110 -> 11552 bytes src/icons/dr_16.png | Bin 768 -> 816 bytes src/icons/dr_48.png | Bin 2985 -> 3379 bytes src/icons/dr_active_19.png | Bin 866 -> 902 bytes src/icons/dr_active_38.png | Bin 1834 -> 2249 bytes src/icons/dr_inactive_19.png | Bin 900 -> 975 bytes src/icons/dr_inactive_38.png | Bin 1348 -> 2355 bytes .../assets/images/darkreader-icon-256x256.png | Bin 16162 -> 25015 bytes src/ui/assets/images/mode-dark-32.svg | 2 +- src/ui/assets/images/mode-light-32.svg | 2 +- 10 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/icons/dr_128.png b/src/icons/dr_128.png index 2dabac59684fa2ce697e01c2491cf618d52e3cc9..09b3a5276038f62aad6cd9dd8bac22950f7852ef 100644 GIT binary patch literal 11552 zcmV+*E#K0KP)PyA07*naRCr$PT?cqn)$;$HyCuChO6V;}4Lnr9u81fiqKG^d8&*gHs7MQk}^poL?gg%7`#1GExA%fP^p#}~9Qsmuu?W6=x< z2jd|Sp=E%;80R8mdN5wA5`_xRgc1V`1^ZS!U+}+bU z`7{O$3^*@T%7M|~h;4=m_uK@>e$Louob!+W%3PRr-uu&l4*YEh zVBoYl10kv>F^G=>ET{ovY}TS2_yY`Y2MN`0Y+JUhu2~yzL}M2`0nlpa98(zB^^F+c z`Fy3C0k3k6xH9Xd#V5~aM?AHC!4km0sdL9OK{W&5mtLsI^SNIfE7fN4#T~CKKJD{6 z%~bG$BY;6u=UoGV&Evq;{=k7~GD6hpVAj_`)a#)Ri-0C9+#gjpvh5-6Mx*%SqH9Zfo2OBeBnrK65F?5Cb(zjW!gJ>{7G#U`vwI_nxbwEIDd}FHi z?>ihv0X{n`bJ0ist+;WuT@VB?FeUvy#_)dtVtgHjJmLD%5*SJfp(}E>*{DOq5!S6I zLOOH-Q>%Tgw%N*Y@HgrL4QYp7e6gz88g|S4yV63i0?WyCa zIhiA^a#s*ET7-7%B~3p4eIWw}ayaLY{gt`s+w;}W^F{#4)6$1RWUm4IB3}k?C@n$F zsT|atIu0(H-M$jqrH3@}wEF)}z&W3}J9E*}^U>$?LIBBW>65_mmM;U=6`YkOz4naq zPD&LJh={()2)3SqUIHZT<`3{Aq84Ggg$LY;P9y#hwr2 z!n!9RvTw4t>i%BOIerWd3LW$7i%&O;a@cGHker(S5`Y=rW}`Ouq_pzgDR_?Wh9~ty zL{eXG)%`u6b8Hp#svCB$Sy0>5185ckNKT#qJnenG4W{DY9#kIM@2wdArzhV!dJg{W z?ud+~V!Opf1n5rL-kXzC5Q4{GDAHi|#(hIrjK^lM=w7 zwD}V_=j*)Ay4J5>K5v z{n>jy_c?CZ)u1h33xx`^$dmW1Ty)&u<8KlI7??WmWd=6gQ)i2Q{l1?4Ua5RblKUQT z_IXyu!Z8;-0Sro=cLN9e%2P+n_hq5#Xtqydp;b?-zZC#*_IOt2bF2M{3%_%K(FvND$x`3oO@C4l7A^jQFwD0NO(kcXme zKl$8u()da9Zv{IB81TxjjD=JDg%iIKKyu3LI571I0Kx7$CmQr9{PlYnE6RQ9yE-%s zZLS#wCa8QW-=Yd}49v=0_?JJ%>^A}!l$ySj15YY-s&w~u)SNixbDvukKV?*LVBPMF zh4=W3Ob-S9LI8c!<|JsiDqpFcy0f_`{$s1p{iRh;tDm?)E4asi3aWm8W-QouuK4i_ z0VJoTKMRieN}XxQmXGQP>C_d`$sSDz=Q{4c{rmpX1^hz*sp)3{xV6&MoIZ}yoxe8- z;c>&SMqpfvHTw9BD=k+={E@k!(&rc46g+1F7?d*qF3$KmrB3*2=a=87i6;VR1@9PO zU{iNxJh#ewN#zpfOaRF#>0g3jl)ENsPoF@^&TS3qAF+NC0j=Nz1{i+LTCwmlA4)0~ zIVS=bJZ(-}QB>tA%KmLXf_(ZK0_{fL0#%UPon%9*X)$F*v#Qr$s}>w??10aS0FqPF z9|hpnG^sBtkoNrz0c~_F60R80kXKsEa{gpi<|6X8Y80Fs0i>jF0E62DiqfndB4|8i-DX*mYSM&uwYU*cwd$vag>89C0up8YT$fQXk0jS9R==+y0OkAf~{;U?$ej zIYbUtKJpJv)5EyfKZKq5Vc^@0T_cyaNnHB zIW%!?p=p~49R$=uC4IXC5(#+-P-2JPaMxtdqhUk>44?(!4oDOP!;C>&rNM{71k=I4 zpfTwi)Ss}fJ)sT>wY@_~AogDgwWJ)?BQmIQ1_2V1&L_}>CPFVwt}75eNEDFlrwMN? z(3?aEq!ZD%D=@H=3sw6Eby)UIX+zs+5cYmpaFu#MX-JZp3o%c!?zG2~h?q24S^+dr zs<3SDu7>slVLg(d4y?cbmj_R*pTvM8P-~|Uc;2`Half`MYATJNM=l6gesaz$pH z4wXj^*v7312tdbP7opQdebF(g4?-d$oN&T9N8zaxC@e2W{+Tl<%2zfVkys$P=ejc> z-5|eNvcp-rPU9wF6$z8mSZD#zLQoO|R5-3pTeR=o1?@X_ModCNJw3dpx(a7b9LJfH z$8kDG`S_eBpKu}X494-IyN9777b35UHMZN!)~xX@9-;;*rQ<{J-WI&oIH9M2eNh|d(Uo|jP=Js+<*q} z2&5V3BEa7Z&MjN-f;vf-%RtH;$^T$CD_$EAfZhX=(R<)vbn4z6+5nGU^7YyyLLfZs z`*Q~>%ggFLr!8U;G#JV&r;kOEl%mco2)YE(u$yIm+aa{CLw0* zDIPe@^<|>$%dZ)M9s~Si%+b}>V*AfO;P)T5KwsyaagD@5zKgD14z(l_nhHp>?}j=_ zY#O4<-`Trf_CQ)3Lay);XB5K-(z1U1!J?9CtRr&6&NQY3()2gZaUggeDyiQt`7 zV3A+4s1YX+Jeun0eoyQvcoy!jCB?$%Qk>75Od>67C3VFbt7@j&10Kl z(JR(jT#%3VUR{auQhO|+J0hShVu_2M(AbXBHjk7$8EEoJ<~t&yp(b?H$T)?SL2;mRv`aOuB~w*0-AJ3o55iOD;ku1?R6AP z=m0whrLA2%IO|qjdL?1P5fFBwyo&TZ49SA&!8Ra91D{{iQSpz!c8^u4IJ zuk&FmM`GZ;f3L);V@GYjkzz>VKnB`29zn40n_`z|{*si!2H##-w zL;w=&FAl#%U|ce|ivrWCMDzl<%>olOchzJep+i4kd-?6=E!g(QANcy)?{GSoxDqK$ z)U4&3>;Pa4!!EfPBd@;>BS&0^4vFo3s@`ZYVBIS#kbB%t*t8`gLx~JT5UyKBpDG8W zl}{W%29o)XhdX@-50UgAUxCK|&F1g$!AGB9|AB*GWU=8~`gX)ihr~n)594pU6@418 zIE;t>`k``F`e$-~IAbLD4}o*bo|UtjxRo3KbnLGa0hFhV?Pi2I(Ov=XDsX1=%?^8T z_VwBULvQkBz<>O)9W$Svjoe&f)6N5QeBY)&JJ7{#w~s?w%2Xu!KnOKeRamuXKJ+>Z zn#j;)RBRj`os|x?#@Qa> z4mY{EXRsn;B|iS-6ZA>ugOD;xg>Qw357tnq4!D}^Nth2@5xhjRCz_Jro zY_ug`vb9aCzo;Z+sBG*37b6%GYU7489) zo`!{mVQR`$+;i_Fuj8ie;f8hgtaD@?qg79L!jQ}+(V%dau2?sn=n-=0T@nJM2s-Zn zADBKG#Vl5xi@FAkT9}cD#GFH zY&?ALeWE+dC5d?f$rRE|b7e8dg7X7nu{`$G%inK^Ut z{gy2rCtgN}jY1rLAP(S&uwF^M@yzp!(JLv*W80>@6Im56q`qmNOIE=-r?5Q<^rCuS z;;K)jZIq1w3Q}(xCU8OGXCmX#DhI_cbn={$0sSw%(Nn8gJ9c39v@}#zI=ZRTbhr?J zOC=HkC`$-w5_={kVbvRNcqD@A%1XSka1H_uv}U=a{SzyvNhdBq4kfOKNlN1(Q4s(x zm8WwDI`pABNt~!-+u;86#hxd>stQx?zaO+9oRI9e>@2E}v;ZU(zzx*@nMpXvT)P%M zybwX{7wi6A_ss{=p$sVioQsD9CP;G9%!Sf6D>q1DLTaO8`p9U5No!N=M9zDwm}T{= z0)teM&#zkqwMNlZH$N{A58rV+s;jH&?KHg|g4!(VRzhIbZwWD0`lo)3y5$zkTDZs~ z;(z;a9S;8Ty)=1bwxty-TM2nkD75W6qf>Xw1}8E)29YtAu=D)fT$9n2*hiXWE#5VEfL9@AnUM>Yt35_8mP=n(M=}N3(HqPZny9?njk1O|1|Vf}0j* zK;BHiPM;f(53O#lX;f$%42rMg#(9h!E3jky^#6d2Oh^%v+m{p z({2AzO1&nME&#Sq-Vx|wI+mFERj!2Uf~jMM%UeG)M|(B1U&Ivk{JPmfXt-jW*86K- z#rywx)k(Cw>y@LnZ{*w}`{fnk<^}Q~A_pQ1f!JllYa72re7kmv1OH{^5(G!ZAZgS% z1V{VlKB?lP2a)~Nr-hVTOyitMu5Yg3Sc?AE5EVG-0PdTT zImXmyp2Ibxm9xf}P8|Nd;^impiI_M}aR%u~Q50BN!itT17@hMom2R+|RoIokz)P;} z7;;zI6G|hlt*S!mxY3|*$7%9J0OSTvDB^~L@`_CXRrSo8(v@IaV0y_eRO~t5gGx(D!XTo65-UEMHK5z zs5CgcT2c9BpKL;0TV*cLAYSjM!Y7X$!n{fKxdTaoHi2411_)5OOsOMzQ#Wcw5p^aJ z#X7S@46e`XaS#SfOnm~^Pxz)hRFmC3Y*+a^M*e+I-Hl`OuF0pvV5d{XDu#A3g zZ5oS=RXp07cgHO#$+tv?xijckSUg8UkOtjCwa|+kB>Uy^78&nm7vQq+k5uYVZCyrG z{La)Fxb6<+LHlV=8&u8u6)$1ShjwlosAA|C5`bW}V4wE-46Po^Ck7BG2sl$~L|&~C zMoxPVN2SQl8tB)=?maPgE$JNY!PPow2D0gdkV*%c&4*ZF%9vyZZn3oEFQ%ysu=r3o?B~YAqa+MB(1@I#d~5 zq5xd_Jb(QLM7L?{b|hj+!I83OAF^1Yq?1DNgo+6j^fw(4v4YfFh6!Ah_WzEjewr>l zBg3cv-?K{i`Q_vF*tB}NZRxub0Lik8V}lV!E5NGkl^M?yN2xGdcG9fBH|L8Pjr2&MV?ICUf&wG|Q$Y!DP0icURyp-tDG2nY#j5LwW~FaGCP zX`Nma5s1#AmQz8!nS(@`D=4yd>w~BOm6MLJw_GQ21V=)V{TJ#fd+E2W=C}45oT3N^UDUK!s4X3UOU~piBQ`bRT*J;xAIncxM}0&R@Im+7pjs zaC8tlgxHUS%_2vI$(={PGgh5;0}P1L)_47;F`up>BCumlIz-|eSKTuiS5Hztkt|6a zW1B}#ezl_2S3u-dtSIH?E9LHRj_v}3ME*fnkLekF>tw}rWbe$Jf>V1bC7`84w(T0{ z7||{a5t{mgAXY|tfG;2qlaS$ZScU@?It-fof9TxbJps^dBL_Zx7ss}IftsRxl;|x= zl~EK?sy8FQ&S=v`Fm*^uIsVEiF~&pTXxTcT1sX1~bQ*I)l_MG2?QBg#g?^+aL`hv?}RTfVe@MKn=7i zGSo2K`k#*x7#Z#My9Zv{NC0>S~wLZwwxd)=Mre9K*KYpBXUgSQ{K(~2md zKxagqkwYhnI9+3q=-< zXAyDO>6qQtFKVGoZ?4C2+;yCG4oU9fx?6;pl_4yl$eI;U}G0O&_#!f!HM+UN=3aU{{x`ma4B;R>I2HknTV*6EVm%L!u zy-ju$t>l1|bzD$!11nA$eKEIQ$Ib-S0V0?9oVQ)To)6x{-VffiF(P80eItGM$)|zP zHitB28EE2(?Nd$xZ}KwesTBz8=-xz;v-1zU`c$gTm*-fOUP2r}ZjBLV6+{4S-`WRT z96U&Y?Pyi#h$N;gTa8W%N@u~hpMrh9)&oDYtP?WwkPhTX2(-fqQdtsb_zHP-M(ius z*>KeFj{DI6j{6i}uXr(So+@^<`! z-T|`Wwtn(HK3!>Xk0Z`>sM7A#nNwvz2`N%;fL47MtNub0 zLL5Mb@iS&)=xAjR=)5VTr7S4T0hC$gkK$TM$04}#nPrIUGth0*+-x$GP9OJ_{E#u^ ziyV?i5S<6GqA54_grJhF2qH%m8L;HSQ48OCQizChatL*7Wz#>el}I~Wqe4~w<4}TcxefK|H9%LXE2Kv1CkZ?m+K_<=?>_8qPGJV>lGeoJFCBZ+yvY@ zRr%7hW3%r?SapMga~n-BG^S#m3F_bw-0=EF#d^fDqMWj49$aB7z;KdtNC}&{nVn&| zDWehtpzdZN05MR-1Y0m)c*^2&njZaZ+eFt^b}yTcqCbB_hfpn|-RxZ(JvuKh@~g)o zVVtteTQcc(6y;hjpsF;QC6lTQJ41Y(1NT)ebV?f)>uSefU6je2t4($A<;?-xRcmVKA;&1Vsx&MfP9Vv*aoC2n&#oZkq#4OhCJg4T?>b73O2%opyIE zQu=7?M?fo|IDjYU9~ES?JjMsAK?hheJiqCC1O~g`G;;svNv&NI)>aJMZ~#H8iL{PH7{kbA_EpNO<>G9Alsq*8C=21=FC-d{Fk5pueR2S|n>f?of)1dqI!;j#U^ zw6Rbt+-~k~$_TypDFpxH3dL%TNA~_ynK}0pxd0cC0};}0K!8vbleyu5G_s;;ih40>cK(d&H6a4tWa~+rB`=R&EMDXCtJ=Xu~Qz1_&M zkfVwlbx96AE?q{XUsbYdo3a9BQZY06Nc? zp;L&~mhh5J;AXCU4+)(-2ZdC;n*sf{&3<1H>aM*JJ^e+`^@^gYGIQ2Kd)4qcFU*Uiuv@M zl17G4dIAB1Jg+|Ga*EK4?^DX%5wblk=-4O*uA5*?{KBwb{60j zd)5N6fogQII(E=cj$DBLA3J3_uDH$nWQe7OC|kV%=6vrLV=MKIa1i;>T&NShC!P>1 zN^{E>KKwE_SoXdmm?$#wpvt=XO%RIOW^S-$@p2-7!&Sv>)AQBGOn6` zjZu{R2O0y8HUT=P?-Cl|6vdO0u?AiGdUqJ1wv9OlP`Pe7%*FXWa|CrlB0|PKfPlV3 zeCj^M1y*Iw{g?5?A)C9C2%g8lY!eWx#}2mUb6eDFJ(=#P3s9?$N5u4h$e2k30{SeTzCfDXy2N#z#yn%+8}Vq)d(7Py>As-OVM^OGxZ@Dttn$j z@gozdeDFi2ax(nXxpB+#r6DqL_i`|C(-u*-5lFa*h{W{OZz}rZDYa4a_4_a!+6{9_ z0l3Z{fy^{osN&m0n=}x?SBwS=^4&GfY%+y}GYl}+jE@oD1AhYBONRq9CR8j5?4?Z^F##=l`DEflob10L4A_uFcKZY8Idk7u3 zeN?qCh97TTaNH44SuzZffk=k9#Eu|N5E^MqsN${4CVBqre_zW=+Og3V5NhTyseo)w zS!XS|4fWA6gSWE<3!Dx@+%DtFDYwSx1yf(SrxY#*0o?_QgDW<%*wJBwhL0F~&;1ZA zsRNr8P8`^aHBV22uBO`7Zn?pP{5reVPojWUzi$p`%H5~)fj&`zQodsekqqb@qJ`Gs zcGR%wbtQxo2OUzxFp&xDh$xDZ?BgQi-~qehU-{6EFl!GL z`FKIf*lvPzvWO6Y3tdSmBmy{vfD!FFcEY&(CL=1wKOtD&uqKKkzJK>EeDn5eAkANf zGQ9}}4qHCr`1{K1q(~!w0Im4m5%!ZoI`$p!#K}jS( zTKgXr2*xzX*_K8gfDX9R_5WBS=l#1^;lAVBQ)CE{)& z0-*XSF%sp(yX2~Cn`Dr3rIb$goh1u!`jE4ofsRBeg2;heN$3BrzVzqXIY$#Q)kPeE z#DS|LN59Li!uT1pnp7lEYMk#kZNT=Q>=DRB05_uebCL5CDll7&zLBG#-OA4uuWI+G z$&rPyq@8XMr%dNoAg7&A5I5s2(>jHWweQpgBX1iI`t~Ofo8R)@+t~81Jp+hbzpKor z-|6s&Jb#-4$XkfKhGZb|&>=*F02fD?z>rXkdf*XUeyd_ob)&mSDdDzk{Ip)$*!D1d zd$U-yoKc2(E2sok7PVsIUU%u?!yt!`uV;tHX|BO=E{$9%bRh3%pu zFyz{i=zsaS-TjxBa}+x_e}!K+d<=umIom1SFF-*eu8tiis|`-pzeZ!(!;76lwV-2S zM+8#nn|xm2_-c4eEUvtLA_iY~1L*I@LS0oAvVQm$TQ_Zh!OhNq5?N>%-b)cr+q`5% z@bdWlpndGa4?V61uLMAy{`29%noipG1HibnFL{}Dd?*jvyC`|0V-_uXR+V!YrkZL5 z1P4o}XI=XAN5|fMyzZ9^PM$#S;e$AFU?0e=TX@=%0n-(#jAm()<*gn)r|n)&bUcHU!SK!ue(FE;OvS{KsOTXFTs3}o?fFCi5|YP{R~59a?XBWM zj7$Jhr>u7cgjp|4kO{zDV;y?+Mu1C7SuYNcj5kxVxFaDOX`00k$ z-zWk|PM!Zez-QBKAqg-#rBJ8qVvH4bB9yX#sF*Z(CHY8fTt^?XsOYgP4~!=LOpPV7 z=RyJ+AMFU-DT8u9$+L)}kf*4$;jtL4_#$girz1lAQMbSA2vP}X8?3g4 zmHD%NnE>b#$wFwX6EC-L9tlA10;OgX|NIFd)#V6mz>T5qkVMwJ3Zq$)|FT!FKattg zbXN(%#*%T9TExk#aFq#MeV$D07qmN{;~!7;zG$nMyF}CJtAd^#DG%x z6IpDD{S(WhfKA%!`RcvX)D!8C`bkfqyaN>PNF0Jf-(+VKclDD9AY9OS2FZTf;Si1j zV&f5inUclz0^k5N7?}Y4fwoH5W!04T*k*gf|F{j6_&eG|CGLQRm~i zMnr6^l((=XFAqk8*Be{Cb;0fP7EJ&nC*6;MS6yR6%-Q2P`1#`xrQ>6F5E34N>+YI_ zq#^dZcBt$R@4tt_(^A^}dJx~CBd(q>5uGoxxkDm*$98=8&fBP|bWSWOzf5JXxNSVz zcCq{H@BZ<7eDk()&Y(ukeoGbsw>*~OG?6j_>EP(i1@qia=sk0vLA!2FR~}2RRh5=v z?fg0Qj-Sb=?}6u@M_6?IxR<L&!Q8iCk=y)%L^vB(XEt`OTRDJ?f%e^d z;O;r|6%o1jm!I+FTFDQ>27QJO!{~>UFP7N)=|}kObLS)z!*0F>m)~l;4!K@?oBp#J z`?vk(^!tquJcNFiDTimTd;U3`IVy$V`2|{}2pD?P7>UIy0m=4Po^TG69(Dg@^uJs& zvkguiI*9lF<(yY<;?r}`v6u1%mV37TgsUlH9J8psXMtYi8RLXGz5#Ua}PArK1GL_wB(4FE4d^ z{PbE|^tId9c5T^=&F?7Z6>22_A28sR0653L9(2B2u-ORU^|zI;`~uKQ06t8xw<4_s zV8>9a2yjO&tsKCLmH*M>;8qUM!a0Dq?HO73R?SFp;te-G_%QknSI#Pud-xFEdBOP- z%DZOGLt;A8w{*}v^q zZ2FILx)z#zA_67&b>pY_LU(S8@U{G7t9UQeH0 z&$LUX;|CWmL6Dm}_zF&)lq`;}K<3{`>F%#pI=VXxA7@w+R{INDECHysT8z5yL0oj{ zFdHsQ&gS8#kKV_TtX*#L8yOde5qIBP zy@m23_i1i=BoD%sw@+}2@;UJPZ}{rX*I_bv&Pv))!nlwKKrt4)V(%{BlIApY^mL6& zLVQ^JjveD`s;X;qva{t25Iok@relYwxP-Q`6{RKRr;Z)-DOpj+Zr$P{qGKY93eFbi zpE~VRq)pePq_!bpp}}WPohmFXD744sH)5QgUWw>8=r5(`SsBkYI9qk2;sX3Urq=4t zBL-Rt;5;J#LTI{`04{`CIFEg3C4lpY{0pJ!Rsy&XX5l>cp_Ks6Bl0hVrvD$s7MtM* Svmem_0000TgX{Dy5 z2zdVQDS}me1_0=XR21d({FhII{q*z}7DUb;uFjtf{w7$clYJCa;Kx-~64%|+Mdyt0 zF4M5Z9Eu=obar84^ZnEq3A5HvSGOY3uu@Bmivv4mI;3#y-XW%__9n(*LZjoLi@fG} zv$5Un38@b~8gGYr01z#x${cofBb*h26Q`i2{SYTbyS{$Eh;-9cUE0B7NhRBLo zf@y{?kHR{O-`8*VC!Ld?=~E%5GybOC321qCF)>Ffs?Wrs-+~Tg*$^UZ*s9TCmwbEzlLe z1T8FGhR2ojvV`S&f-3{Kv0WJBGouQvhy%A&p!(m z71tObwW#fAIc&?xmq3DqfLSdoJ3r}eZnXJ?Yp8x34$Gp*!-=M}JIA%gJmx1AnxA1} zhJ3{gYk9prV*5+%MV1Vmp$OJ>r+m-O?|L$SQcNH-7^~M%yIlB!b^B#?w7$2X`gon? zxP_Fch;`iuuk6lp6kZKfh8$h1LVl+#$^v0&ECpVd%Dx-Ch=fXm85A)ys6i?~w_^F_3NLrGJ2k*FoHD|ae(#A(LU%im)XoD~YPQatr`wZ4X zd$grn1J6*DpYL48qiQiUA4gpc(S%S-9Qqifm*E?|S+S&0lJlg0na4Dj^>J1DxhVR= z%NNriq0^`#fI5^p&>mb`Eyh=4N;&xRl{e=lzM&IB}lJr^k{SoVJlQ>6SBV}IW zSsp0+?4ymF$(~%b7+01KcYLQXEiT)!FbX*HCyJ0AYBa%k64Tf5@1Z-ouFITUr8zM} z)!t8uVahNp^Opl_PaId2R-^g<&PD%P&-zXA_GoALmB$r!;?t^qC8R_ZQ_saC{n)B& zn)owY$}Pv}&GSl_8*zb&qNus(6^{Pv`=5^kSa`QH;$TJ%x`D*2L7R^9)6K&Dn87=7 z5BqCvHjSmAj7?;mHjMqo7ef{E;6C_lBs9;j@UdZ?vS+g!D@Tk>9T793e4g~z00$wF zbcRL{6gVWWS4h8-h zpvDG+1b|4@XG{zf2##SjER5>-AdEfiy;0vyb)w~)vTBU~9La9BTf`V9AnCQFVW5BBYQZrwat#qGukBda;GEPR2vA(E2K6HTLQUThdOOl9Mxu4Ng(YxLcoPu zxpVh_2G2G!Bow>Yh*hTE9*3UjI7U%kt-;At#VfIkT<0!#HA_(1W+)09_2`%rDW$;g zQ5U~b;B%pN#5(Eo1;T0xq>)MNo&k;fZtVBEjw8TQSpAnkSQ$W1(np)v!e)sU&+ke{ z?WP?JX+-+at!Z{$m;J6;g^A0*R#=lPdcWE6{4dS;h{NrOv_u32?2nG8in?g~XRfU;g_x%hMGnw)6*BX< zv9ABbX<_lZh$V~^s`~_T80MJ`yG2t(e6=1 ztj+|syRRaV1VQn(>TSI9Cf64!3&1tGek59(7Tc)Pm$4XkN63?=P(NvDyB!_7{ zvE{{q{!wZLDs_EJi-dL3UUAk?m{C2y5;l;VMzOoA$bZ~H@8gGAWYBv+cz7~Zqf=sN zr^%ucxCN@!;n-XJ^>RrLf?TQrWzug|go$HE-QC9VF6F1Qr(-?6!b|H4(t=TIYtR@G z6lNtt6O~O%jEdx&HntXa*;%Tatb(FmlI1A->7LqpT;SM_=Xo5HF*{~6Ni^GX)K=N7 zjNDsLxwsa=wPMMLGNjpsRlm=bnYr}2egVB9M1U9^SLUuGwf0!^d z{S87k$L-Vk1H#0i=csPx$cZ{QCyusW=OThMK%WbflI_M(6vnMGD2{~zm(9}E3Z3`P z{$l{sk{20It&4?=(^mNg4x@cwdrxY~5P2ovZd#&%sL-G22um{v*=_=%_0t~}D}ZkW z`i`tqYy>T@>YzsmHNoYq&g5i2TL^(PnYymiL3F>>?*z7iQkP7FJ_h#Oq-EXRUN}2P zKbM@e2+(t?cXCiCL_FzoHhpxf*5MaBhUHs%fOPDikw;~Qa>Z==z33b!vsMoGg~{s8 zi) zKNH{0&q>bBup5DTLS(a3nf6Wh$CgW5#JBFW$ObM~Jg4C_m4@J;sVz3mSI-3OzaZz> zz47WvDZ(UBy)ug;+kW}~*xX$cje6B^dR2;rw*^AP+kl=8>JY`ijUY<_t3h&Vw9poR z5wMro(Q9^wi|$#8MOe}E9rsA|d1-y`U?s}HCnLbi z8FUh64IQg8{0K=}a&<*!89JrE-_gbL={`aCvUc{@@;vrUn2n$&iYs$!x{feUVo^fT z%{=mEkEZnHDWzM|MsSK&;Q32Sf#HPvkofOvl0YHVJDYd>JpCgPCbXpolZSs*I$G>- zLY!BVzq(EC^nI#fafAgC%gnhAcB=9be2vi|DVBasnNS+sC@#HuY{#cFH_lp}E2cQK zM$!gD`~q09e>>L^0nSGMKAiNFBlf-gQAGD6VW>C}+hnPSn^X0`@aiCktPe}d;+GP--vyz3otldc#} z%pECtqPOFfmE`;P^5(``eiR`xUS#%PUvTu4%B4iJdNOVKC~v+MQDcgGQU<9AOaR%o zkFI_E5jQ*1$8%4QR3X(Hu?jhu8+Y zS3*6VaccRl+awivor7l|Os;uy@-3E6dt#Zyv7Y7R7V~&%t#YFPYSGbREc@5|b%qgV z^_mAIK9UXt_WD7uwNg~-zh!uC8i3)ZQi>+gZ<=zx6%i@@?uEB`p#_>TP27}AeS4yr z$YN2(xrjg)xGKvJqj-yr%sEq>C`KKMnnGEX_Z<9(_g0ny*B3%6;I1a0D{fYWT#o|Y zTW_|kU&%i`<1CXLaO;ktX>kwdI0=pBvYNN9^p0Wm#t#glh3)Evw>dmGXC85cwklJD zar36F7n3C%?|vk_+fRh|=%lC#&JfZVRF*^R?b)wSWw5_#<5lRCTG~0{3#mCn8csIP zb`z9+d2ZzeuFqt`Mv@t7PH`p-(o>u;eELy2D}hn07ZltZo#{+m?5Va1j4@>kTHP`_ zP(nJo#m*X(=pmCu@h;`7rk1vtm}Hp}>)~RT(O0yu18GlBkD^oS=RbtDt83or9bx#N z46_jkyo*o(irO8W>J~ni=1osBiKS75=I341*?igft~IhmHRQjJP%M`pNurfgROZNk zfBK8W&z_>E-Gb?hq|Vby-8;U~U9=p3EjG?^{(@TXf0L=4f9i=|q-`TQ4PRz#)ppka z@g@A2zAtFKhxM$jHahL9KF&@T=R!8}I~8y-Xsz07DLRbD=}Ubs+$c!qoA{+n#m-7< z8;zkRC6lX#QVQjeD1nJ2DC=~HbcZ_vm@(Y-_(zolXC8QI!xhbn>x{YcW>%#%G|MGg z3q&0H6!Ljp^-ZWS7 zd@R(UEh)(Y4BoHgFHW+Smce%EHU501@p_GseQ;VW@Or~PaUKFMl$J;R%bb%jSXGY7 zc^k4#P4c=8r>T50pKO2XMSwUm8zm;{eL76vI!+p+_*TN8JmQOx|3a?Ff1rW6RJEM& z#5!H7JWI&u(Sh7U(i2((L&+~@d;=#(Z8tF!=PR)lf<2CpY?nuKU0U5M7!%N2Sg7(j zvL5MDb0*Bz+CCaU@r7rF>lc1kGPWQBVgf;}G6D00$x^e&7_k~n&KPi8tS7fRqN1D; z&6J+X3^kq zlSO!L&Ay6xr>EmN)rc>STPJ)VC9v`#%@PZ4j=JsANzpVWuYqz5Z9ACP{qTD@uG+c$ zis5Lw z+|sb9xWHF$Tu%x^d{wDEpWF#u%EKBATFuK>(wd8SU|zp*t!wC3Nvj&Bg?JF74ay61yT)v;q`d_ z^yuC4c*|?c4(HE{1-`a!<&)vBo1(jylDcK%S7i@eTkc3~qR}F7K^Rh_`VWQ}qDu0` z3QV7nrHs%s3q2RI|DOoS4v&nc&u}v04jrO$pS#k`QlZCgdYPFxO;Owu_nRlKqrl#{ zkLI?Ly-bFvt9&oP4(WiK4#kvlaMT^i&3`Fmz&!M8cC24%j@p6Za`olh_p|Ol7sJ9P z;y!p4?XH7g$}bx|bFpc-2N$KGBou_FeV--T^+-2EnkW7RHnijiUR|E_Z3Hf0EGj9# zmD6molQCZ~>A%ik3!}Zxp9F3jvv}>cIm>ACkE`bt(J1ids4vBYA_8O2kM=g*31~jN zjZiVJ2R^QqKbsNlMxv3*yGP{3JFm=ZpBtVW{h~sluPcO_y-697R#u%+D-nL!I_@5F z@yp@d0{I;3o82SoTvU7-!0e){*<}4-i9fEj8;5o?4ic7gGro z2n}vhXaDFVBUiv1+T3D%%Db@6Z-gLy`Qzb$lp{y@z+Q@eYE0X`E~+(qA_eZ7^=@fP>! z-UCIqm%G0QG&=D`G4^9RdpTu>#WUlQ}jKhmTXVKca>T*rRJXaYuebj)a2UP4+6RC}U%l!~j*;*48 zj(#IKX~(Jz*8#3ypc!mI?41V6R zp-LBdQ#<>`tcTKj{ULH0EjaK%Gza}cPl)|1*shpQnH#-hgf+rom&Gi=V;zb;V*59& z@W!<`N7SdJ&MwUW@5{;0Bk}V0#-99a) zttJxdr++ecTcRu5misUDj0fnkttgF{WQ~ahtaRkSF*a*Ga&{}fmf}g4rMwDm5V8sW zJ$CyDq2}qQ-^5qguuBP?@nowfmHqP=cu(ExY+txyVu1=Qpf{(9_MX>O6k3wQP_vXG z(oHEfS*QbbN8Fxz&8RXaKk1ySGIpCduk@>UFl7M*!2<;j6W8*U%{jm4NW-%9;qNEgg=bXR=S82?W2+F$sNuP zbQGF5OQbFO`?C{vfTGh;R@!W$2(^IJgIO_~*+>OoO2$ zrhss6hR`BisQm(eah>4Jl^{acYr53xLelM-hTWf(1q*!M{x^1*&2`)*XMpL>2yNpP z=AJ|MPv;3*PT1Jg}J7MyVtfXurv2XnpUG{ z_6>||&Zm`~kb(Z(C|c=wZ^zOU1F_sdq(wcy zdDzK(5b~&fy3ysc4fvsq&nZ`lb58e^A2$8VoUO5ynb=k*ou8oWI&G6h248C>ckWDW zf6drIW;$#{!eD!Pxs(6jatEcBFH~XV9lL&#|IBdiduQdqQ+3?_FX@{wLGBjEWf%@m zUJxlHGdn24_p>^OSQ<@aX+Y!c@jQNk>rBVPt|6^DkhK$mAsDwY4&oPET%0i*&*l+g zt;M?;UcLpSZPBQuO|1uMRRliyy6{&Ket0Vn679!Q!-3QA-`J0LOeV~%FDS)ejVzCb zqN^epcadjlU!b5ze%41cemOC5P6Dm7$9hucHOUsWd$Twm_D2;9wnX~!zfJ~k)o9dl z{;)(x&|s0>LAcwLp=c-b38M5|6XK{gC8{!Nyda8F8hGepK(k>MNkRPoM;ixGt0 z(D5XJZQ{_K5wYvZS_GDixlRD2^x;mZ#SB4!lsViO;h_rETlqp372w(aUK4l~k#Kq( z&Y#+lI)U5n7eXoV@s-2@?3xeP{3rj&PX!5cmR_z2E^lASHU>gQuo3J{F;SQd;!~C$H}LCZ2GDPVIDs$EcMUbc!6eR$?}isS~LY<&#C1=^I>^p3T@%6bSQKTO*Cwzfx-iP~1 z|6ocR6NoaQnN53A_3y>WQC3D9q198PqX~dIEwZdV>RbyStl&x1_K9%t{ua=qb!%-l zm|#3yRsU`uc~8h5t9VMU>lE$>i(5NYdcvHLSUHv{7>4exy-@Gi{snXPRcaCRw;>UK zVu;+0V%U3gJ7q>A^JBxbZ})AG;cp1MBh(&QUgbIEkhrdY4b*Yv!##WZHtl?$fFBF1 z?o;4VM5^%is*+V;_TE)4)m}6Y1M(RnaTFEAl-N4C%B9sUIVVVHRiEO?8%)xOWZ zIg*imSK5g`AtMiGh`C$kothxjHW^#WSprQIOG?XUr_Oj|e>{@`oWuq%Dhu=jYf1}N zn={>-i-D=<+k9CY4$tv+8P=CN#oJ;BX&pQqn}CBD15&jQsafH zxaUbUl9w23l4PdNV9trRxIf(;+Rft%=OlT>q=b@^c!UwC5Jv3FM+9B@>L-L{joGYY zeYWvSqGN*$30;?ygCL|hP%g}WoveHkS=ptbw3OAq-YAS_=&GWkI0rp1!12+itSGg25m%NY$>9KM zAX>Dl)AO&h4Ux!F3c65J?fA@k-TU#!(!#?;0Mau@T8&E&7#-AR}&AIooOZTV$ ziFIxqT3w<;dV?eA9E~OGUEj2f-f3%0M6}O;lWgh(i>Hv@`mwA3-_Y)-ycBvNhBfA8 znd;5?Aaqb0NCP|Wk$XjnSxf45eARkkO~jj!qfcD^;P>JuHAo@^Zzcw0L6tY$8m~ez znqaGE6&}aQ{hcxL-MSUzj)p3?_K?8z30~DsMCu J>*XyX{vRf@h2H=G diff --git a/src/icons/dr_16.png b/src/icons/dr_16.png index 5bbda00fcfecf2b9000a594219f58907a0f6b2c6..ee96c1ec6461f529408e713124448ebacb665ad0 100644 GIT binary patch delta 794 zcmV+#1LgdH2CxQ@BYyw^b5ch_0Itp)=>Px%>PbXFR5(w4l6@@HaU93r-#foM&(9$b zBN3rGQdzR`S7$P3G_6_>Tg!8I~+POeBXL>$M3 zxO3O}wfk+1iqC(a&-?R!eZQa2J_MTtPbB3TWw}f$->8lJEr0Mtxsfab5$ZJy0v1Jq zMRAxGLZfz>O_#}K`ORxR>i{8{5|MU#vUIku2X?zcK-t*+^DqI)>ngu0T@h9RJW;Md zJ2qCM>S%#W6#u{G6%);(pYaa-@SZpnm|zHxM)SuJ{4&I*2Ql;D#koprHbV1-9vd`qF|IRo*-B9fz{5Xq0h$ml3&?IL1VLp&Wtf=ZJiKT@&N7iwV(~Z5gwO-7Z;OZp&o|`A&{#zNPbw2<%;~%L?wz9 zSQk928Oct9CB?!r4d^UvFd316vpJU;!;@PwST#NdcVQN60%#00T#KG#PJBF`jHky2 zvQw^9ntu)S@H8zAASM)SGxJd>5#w&tJ7x#TQK1kQ$uLu#16r?x*`a7?yo2P1J9#Gw zEsZp}H|?F_8hWsF=bm89OpK$k>M5$)03jIq)Ptb#2(;DJFuJvW5Uc|>0c794kLKzs`0d@t7{0vkL}cPI zl%$^92q3jx93J57W>qf64i9giE#C*fO*uF@TN(4|N#*=X&6sm+94E{@w>QdV(w~0- Y&l7hgN}Ye>^!6vm%-Zr-P&^Nv%|A(|=0zQl^`BAMC> zvW23i12r=>>7qq}^(7_Ja#W&Z=pq>TK}@?4X5NZIAyN==<$X5Yv~AAI-1ZOuu;pgZ z`{i)X^Sr-vcsVbD-SLcz3wL$$x=$DmN8BTL9t@@v%%;t?&41s^(uq!4F#yB%D`b1Z z5hU`x0)l!q!$U3s$4`U7aMes65Sb=^#9*;5EDdzQd;d|m1cmGXY!&8OTL81EQZ+5V zZ3EaVE?pEXkAHEv>l(NQb1}>I#|MTF)(I2Nlo5x`YH*D@to|IsjBZ15BbFWI_xR%q zJpq-I;N0LHy?QJ;nFR0!AcR2qeGqTk+t6&{;GBaBNy1a`kK==)D9nHDgAoA{$dbj<7@_ z4VdbFjkd-oXc$)^pU1(;+&mktr@3(=--j7PI07L%kiSQ(>5w5g&=nDECwe{P+I38E zcVlp10DOS}VKc)v+8c$=Fg-zekZ@tnefsJz8RE?c)fho3b4OupIeL+C<)nhzQUmDdB-y8bvq`obhM9FBSpz=e&auv b|3Ae)Umi1KLNGgR00000NkvXXu0mjf6aZy- diff --git a/src/icons/dr_48.png b/src/icons/dr_48.png index ec3c88c8073e028811a4a2389d6fbf31c5a26a58..74d2b6e57669c96d5bc61e7c346812199298abaf 100644 GIT binary patch delta 3376 zcmV-04bSqa7qc3WB!2;OQb$4nuFf3k000c_NklcV6f8KZo;u-22~t|K%@x!wF=yC1`wCHV4xrf69~n43dDENu{=V^ zE<#;fvon?*=%7rCZ2vWY{E8gLoz>N80P(Yzgg|g* z0C=FOF>7TxY=3n%5FK`Cdq;yPl#qM-bl4vPdQ1c+V|*UxH#16V~S(LPOaZj~5Q;)B{kq6#Z+k z-gg#w-O-G+fR=XZ7Bi5Ll==__K2?H3%+G?Xrhfu*;WDeH{~*|P0Wd-aSLgP^s~nes z!WS-R;DQ38XP)V8fDA^+VFv*fF*Ns$w4bk3&?0~l&(8n5KehjrDK%y7hYyhyGYldH z{00m~0|ba5sDlF4P<9#!b36og=-_}H6l#e4DX^e{a41#?utR_uGE@`A$^+|G%xf1w z<$s*}BGO!8UkZdI_}Lp^Da^+WLBY@k26I`Nml`GtG+M3P00Ur!3}@lR4RwTk;Y1j0 zJn9SpbKXm>MqudWMd6}ek9z$DI6z>40&+@!SS*&z(5>HowyBL~88|a{BP{~>T}du?Wlngr=e~&6D;DrU_}7z=%!X;%>54{ZqT3FO@A5# z^3CRrh6ieoy+kN2amZz-gV%mt$^$m+%;x2!n<{J#h{oO6ecm zTbuk!qM+4<`B^(mo6^3elpLcjuWZ6qLeSI_x$Bi%y?dMsQP3+M5i6WvA1|K z*7T(^KO2HviNL>4sl)`nXw%s+{vrjZ${eOrbh(WCldi_h2 zmr^R0Qc-q-u<~(I(ocQsh&Z3A&!;e^-2Hp8asCUE00p|L_hC z1D7oMDP<@%+c0F&>*y7i;PJieXco>DokG#c6QC|9qM~CE7S#tm1`hS`oX*R^-X+P1 z)H2;H=9e$H3PPY&2q?EWkf*nDdv`oG1Gi6^!Py%3ZU2Yq^M5z@P>=#rn>b+vrHJ&K zweZjG`u}|HY?SBcqPvd*!vomGoS?z!LIbxWAy5zs27r-q$i0Z3ESFQ1E?pAVqO zXv4{ijeM-HpBJKhRTwmS42CB!;$yj)=?E-5#NQ2e7hF8GQe=E&0(|7GAqcWBSWsxR z;l?}0VQlgODS!LDd*+5LB-uu6{tV?k(cP+@U!sZehPB7Ic|_fcZ`w%zdZ(ZF6;jryfhNwi0$ zW;=R3vj~B=4&kh<2dqba%99g%ywz3c+?+{Jxg-bLBD;Smx-Wi{v;4C2JAAxyDNY$} z8~`f~Mt?e`4AFinMEQDQdfIB-G-Nm*uUI@23Vl_3CSa2(5Vlsz99&N8h2%+dJ*&|9 zSrhyfD)hT@AF$@^hw;7Dm)7H!ZBV%q{tGuk)|DOAfep_+h3u?fP~PA`j^5HtXn?;r zx_c|of4~4dy=J52%Y_=$rauY6*?OQ@dHGIDfqyz-7?1SFsB#=MMclg8gd zDe1{}V&9atDa6a0f4Fj#97p}eC7?E`8Jm)+e<9u`~9el%w9gJ?1HF`v;7K-urI4V%>p=Vu#M zS#y3W0Yzc6vk((-AEjM{L~jclwDz7yrhh1#p3koe&!vH5Kkws_uhQ3}(&}hd`&Y`a zUSQ44N~xQ!3nss`$kPw4>1X5B73KK$;}7i<$`8+xQCcX9q%2^=)?zl-;(cI^5VqY5 zqH6H45l9#|61u>ktMs#|f4zPUigR;N*XTr@&51K6JAbxC{wg_oYLy69EBHPVJAZTp z#!j8tEE{flLv!V$^{5S+Qe)wc5DI6P8VdM5kPnpYN*n@ zFLU`-2d)+Y#3!Yi0BG!|@_{o2&?%*Bq8k8fP=n0{lf%_%$FIc4fM^vm=zml)zQen1 zFg}Cb3G|GCvQI3lbyH48nsoVSLTv)LSdb56!Lbg;^!l*5zd`*0ptbl8o_HUs&YZ^S z{9ic>YsTBgPr&hm2T*gajE@C`g`?l#p*Zy2Hs1VA?rtZ3CVC z=s)sy?!bGC7jTCsr_4uqjDK_)e|6S0{(Rx>_xQ7{;3Pg-wVVT*wsaXE%iX&NJ3o}> zTcYau+~&Xw5lDzEklO~ zSDh;}Rh%uAPGJBB-+5>E<42CvTr?Q?mCUb;PT6n3tpNwW|GwPK6WSv}6BHJ%%|5WN z&3`*k2LzRBBBDw~h$*(*jPw;(`qJ(n`Py>+|6%TT58yw}fw0esJD1M@00000Dy!50Qvv`0D$NK z0Cg|`0P0`>06Lfe02gqax=}m;000JJOGiWi{{a60|De66lK=n;z)3_wRA}DqT6s{D zXC9_I-D!8Gv)z(dYb626#~qF$N8}7wxe{(;xbGw6B&0|ILw^M0m3lL!wu-i{RXo}% zwF;u+!7S2t)z(Tcx7ETT0X(YU!S(DP$OjP#r|s@e-x6CIa+t^E^v!qkKSiMvi3TPn&;PE>=Q(=>5m8AU zCV^3)&0_+uP5YZ{1(g{%L#6v?m zvG}QwHwsK3m=fiHy+RG9un2P&Sds$hKAdTjAC6%wQfQ3+ztI+W&AI^V3`N&)GGo86 zk?PY4Sbt^Y&scy}x_ktaMsyk)5`UdF@@9#-YsjTgrqZeYD@>;ulOK*(ojplhiVl@@yF2$<^9sV{5< zZ|Yzh(ioZ<3$REOwT#%O3>0HCUH_-cXH9^;LVu09Rt}@^8P^RA44#=j`#Cl**veES zxJ9y9hdh-|z*bf^s{-b`cGTCeChxIVsNtJm z3V(549?F++u{L-S-sXDXop4W7MzZmaBm?WE+0e)YSehq+cmBje-13(rGf#n4G66PA zv#?W|h7Y7^cwdr+ii9w%3|a(b01HxYC-~Xf?4SPf$xCmFk{4mEOn@!YEF4S@MGfB< zrwTIgkFq?RDHfn!o{U;?96pjHVXHI)Yky?|@Z^Q#lJ}D@gIbo04bp5Jlq8}~5{I)Y zDZbcTj;3`=)QR}0;rpU`u{XAG+_8z{_MKM9iG<4FPg52UnUdD3kqNL)#ScVH1E|Q-Q^ghI` zEyZ7S2t)U2g`vu}EG~6I@~z@vBdv&2dMrEYc60T1672g+mk{mFLda`&V}GK0`!;f1 zSMygmCW*&-SvL6cLOAA^W3^0xz0wpku6dIjceAS#8DX3!;;9vK3=Rwox%BR@4?5&A zr`mHv*K0-G=!xwk3H8wmxo@4xiRgN8`z8S3&W$dVMg~IR<1%i1({P$3cTQ7`UGglf zQ?J0%iuX{xWjz|y1<-!=`F~Jl2L`Z7kg6B&$h#FIGj(M5_gWEmU%QY~0u}pN{q_-u zq_hh|w>Pa&JRAmSs;WR$gqPl^PLCe(@4X&iaPSGv9_st)Z2g3IJEGX=x!E;@_fvCM zyO482E8?g+asvsy0@{Tkl54r4`!7~)BGX)=moVeq-H`fS$X(9b)cDtuSP5yC9gQUx1jKy(f#;^UuoF zWWrmOs)-Xy!Z7&oK7Rn9<#a9fFZPBqfQ1Ct*RUbf9mmqcM?C%6hm#V}d*w0!pkLd1 zw?oW5*)9$#zb*{4(JSD5W=P^zQ5x#y$r$ME1pquae|ExTzwXqK1kZ0-f%l`l@TRW| zeC=$oB9Mg|zAtY5*gQn2qYYX~xL&-jvTWedN_6jBeXCZ;Ie(@VaZ0t)u(^5#MDzGN zHL@HWk;J2=;rPh3f3R-+WU34d_S^*k^mgCD(NqpLg}NcZ)dBPcW>5yO@L{w!E>^A~ z@$NMo9T%@7KL&l*e<8)cIg&g_BcYp+8OKF}6J0xj1qmrQi{=G-L$^g1+ zcA>K*MJL(Kw}0|6aI2F{_SM$6aDc}~X@DzStgS(%6NqaFnKXFvK)LONkoH6I72$9{%vPPL%-Q+r8UxnC}Bk$RY?l7n0|Cf`4I-Vn0`GkMKmDU@^L{x9Xgy zdVl_I2=Cetq-_A;`sZg+6YGz6!aVw}3W7?06bC=2|J_eS;)db#OHQ5~>oQ_-kjKWU zf(+bg`C0F|?o1n~{8`u&?TusU;m}@a8W(S{zaLi) z?LkefAAjBp_k6S%I7p{-g>+DqBPqxa%U@?bDLqtXfZ*)vfZ;EJtb9{7asg9fD-mp^zL*G?Qk z=Qrokb@>9W9NL4EvLt-WV`F2eJCp$|_&YE`rGFFqCS{*t0oFN7L7@@ww`Zcr&jsqh zMW_t(!0u>oe8gj;hVP3SzAyI0uu&Q20o9{Rh^3ju6Uh&Ula&<|KF%n6orNtN5A2Ha z#sMB1hxtCJ;rrqs&j;HhJW&?N!ct!supT`}R2t)+fsxT)#=n6@B&{2Ley6iT$)v`n z=6?uZXb+*66O;igoml4Yic~j8xY$^ON@M6HPrgqwCJ^Lci!6_YDDih4gDLcKg10Rb zbB%SsXE=XB%%tqYlqf+pu^2bG8DRlC3rpBpSi;2AY*M7hiti(@x@_lnqUN zBbMzuLiTy`lAx(?MERi;m}6`{BN0!u(P;Y+F{v|35S3R1O?@LY^^Ig7Cr3v1%`<1t zY!)83(c|`c#nyS!VAk$_5LZ+oLR_FX6#1&QG6)0zBqtW)UNEA*9EPp~= zFox`t1aNcZV*~`H3CE0^mW@W+XY|iTPg}r~zB`3ks2*dV;f?F*2*{sp0Yf$#ZJ*H_ z*JNYZ2I7hxWFMQK0!@7*3U?hO``jY<(9}0VxqoD3atz=?Q{RY^y@#j28V%b=-^MkW z2l??nd%s|q*g5IG$z}&(frE=qpMR+%YbJX_wE<&s+NWl`%u^Px&KuJVFR5(wqlUYm?Q51&%nQ5s=fm%_B zMIOYcF`$5gJh*{T5wPMeE)kSS6Y`5c~N5aR@AnNS*q4?l8p3%&ifO>CMOct3VZQrYQKXVB8x0*S;G z2M--US;2K^8=j*FJlKOqpyvz(Z`ceo*V@_w*CCEyb1$>I=-PSWvm$hf_~g~R%c-f7 z>he-J*pM(WfJfj`Y>SNpOOmh`JE5ne9TZ6-FYN*vwUwYq0)0jXenBCKij8^IeKabH zXp0TqIDbK1eB;jkJ@D;qMz4{vv_;zr;gME={KE;zF1d%Opheh{qCw+sDR?H@!U*{! zYK3lCopKTF@|ByoWX)=&#P&lIH=q7-&Y;)DV0T0Wo^r!Zp}}P4nF&{JNgOk0VYL2|63mxQkai9jCx1Ty&9S4%t9*!N!vNguY#>_`jGYOI z(5sWc7`j0^iXl!o2Sde8RiCz4V|i!8x9R8W3-{SRXsWM+_EtV_msMI)4X-)l$6{^p zG6b#<=eU~MT5z{H42CH7v20ZZ#tSI4eWTI-jkYARUgm@@wtNfM(Qg7Ve>qCi&ssup ze`$cXBAI<(n9tRc6a~g)8X>dZpBxsBr|HLkFQX_5^0bR6y^;-SbPS3zGa!}4peQQ? zAv< zCEYVJv%>Dq7({^*L?$aERL~k>2;GaySs7_rR2G$5cH0c6e!1M-(sUo2+ZTSa)wVC_ zkIp|Y=RD{A@x1SOIRyUWB3M}>kypgT(Bcu5GTBQIHs41W2Y(LN%|vO)kA@FzGTnza zHEekMb=LnNvFQ*?m|vv+As8Zu}^ z-3h)p3j~MjV&dnQ4j5iPZ`XCJ<^V9+E;zs<)7F*pgmH!Bjav9b#lUaYJk~DIG>yJn z7hy3PrMe!~34d1DwA=!{g);gLG&f-4>?HU`3;+5&y5EDUpxX;S9{)<(~}>5 z>Y33F`?OP>?YZ$l%{Qw%DuhO*%D`a(Nw_s$)r z{TZq5VS-Q$-yR=upXHm;rBdSP@lvL}N2C%&OquGS_kQg(``kO9&9AtBiGhWttyv_9 zjc-`j+X8XsN=#n7f`N54DsZ#95@$Y*5Bi>%0DolUaXX|GMRt1(wzjwoX>{UD zs9N8`7TKnl2AJU`#!3u`O=#%5a}`$Ou>Ed)QZn8>ZH82S0VP|r?a_Ab3^iG;LSn2$ z8bx%9{#lcQ?hJ9>vp6gw#!A$`cIB!GY@ zpn!{rPhKM^S{*xXt756v*J@W8wLV5A7HjSLpz0#J+m{6ft*q72PJNU*x>_7{cHF`G z0v1#hAJqyXAS#NIKoWjQ?#{g-EJ9GI{ISzBlljg4-Fv_HlYevWJ@+I8|EET}iYsd2 zLIu+*%*v9wLi0C)4Ncn6$6~RLr=TN2F&G3v09-f_g%Jdm6u2P}TmZ$%qV$x)&cb#I zEIjekI3m!cpcvn|g-AXK&AgPBvbUr2Is_K+(b@ns3SWWXJtk~!sE6S}1xz)M;Ox~M zO0VuvxOsGB&3{}$kgX{EdPC8x2EP(4a{0Q6R!a5|pc@0KyLk=u<#(ZQbB9;VD9Bx0 zU$sWteu{)k887$VOTogl$42l`^RF5&8++yvlPC?@?r*As$sDHa%un2APWdLC>{s9{;?RDK)gyEot>7x;KtUrl~%Z_s-M6Jiz)(F_cCg< z4C)87N&_9_cnk#|z?qA`%os#ZnBWZwYM9{yD}Q95e2N4DBLuEj2l>sf&E-S8Z_C!( z^_o3a`{5*aNwN+}llkYkiO#BF!(!2A&=B|qhw!o0758!L>J{YYo<_AnLJbtS1DAH; zn3sZJfDansEjnS;xQPhp8-gBw{x-eJ3fwBb%=K!FQvFJE`26_KFZSZ0h17~$ zb~p}Jn>aB{0*O#hUHnJos0p*!yNZfRe7k!Ou3f*u0S6A~kNI;G(97SCw~y}Ii`={d z4#&bOG=<0t0$-T8w?@W9BYxH#KK_1_UVljoy%o!sL8H;|e&dBEp&A{UdPyW1)x%E@I`tWqN1b0JhyA(YSbBw zcn(EE7N} zMI)uCZjcZbKMgaqAHDQM+B*-Xe~GKdeuS5^45C~HP@DgsNfzAG+isM&xeE|CcOk60 z+REB>bGA^>i{x?QJEI8@=9zvpjSbrS@e5*E_(aaQ55E$#_2O>d3(%=VTc?x2K^>X;q7CIe@1|z2DObAI}=Yq?oI+K4HEKe z8W1=n5_3M!Rn`;UjfVfTRt-xA^^7`IP$j{|) z&$MUtzQG7uy%klz-bU)YStxmCR{MB|LH@$X{hs$~A!{O~^X2ev_~DgzM&C;~#D zNmvOY+I}e*bJIdlM3Pij%sV0H-A8m^~{0zJC9X0lkhXP!1%@YG~Md3|FWPqp?4 zo8Q~j2|l76ZVDMsH!S-zV>b#*Lrzg6d8M+=d{6DL?6HeRXp<=`S&aWW!olo?B7@9uULg^=YGcN zgD?EnX!dfKdF+#2w#z&J#Br2dIET3#Q+fNRe|*EA6BjJz&)w_SV&L!*h#ohAxBotG zw!@JB{x-qdhH^Q40s>owvJ{6i)4Mj5uXV(_aPlkvAM3)kIwkdADM;kjZn5@$00000 LNkvXXu0mjfG(=EU delta 1819 zcmV+$2juw45vmT5B!2{FK}|sb0I`n?{9y$E001CkNK#Dz0D2|>0Dy!50Qvv`0D$NK z0Cg|`0P0`>06Lfe02gqax=}m;000JJOGiWi{{a60|De66lK=n)K}keGR9M69mTOE? zXBfw8mbqogwro^}2nE|y5GhotatFDilvV{xwIGNEYD?*{?SGjds~41RGX}gYMvEC5 z#Z6-*A=@HxW>c5UxDRtt96>kKd85UlwJH~Z|30u56px(Z?Tb(He0Y=df6nhb|Mxx5 z%VNEWR}{P@nz`PyAKd&ROplnc}H9??TI~Y`CyvJLZ|BFY6XaS2wyz>fh zFkza~K=BtVFMm!76!v=tgd#|3fRHjjHG{P#Oo>c#c=!^PEN}1kUJ8+U z`MJOX6zbvbbBGIWg9)^29tkNkG7KitO?AiWPh@WVa5$usb7g&QiZyObI_0-k4AX{ znwE)iM7I?Cb%m(Wl|ZN0Bg{B@&yCbKkcBv+%f}D8Tzp@;7zeWAQ74TcZ;c7|Rbh7ZZc>SpCJpZ2x(>Ry zf9pCG8eVF5=0xTkZ4$kEu;!e^?ld=zGu~C z9`Df1tL`dE`H&XOrpcK5k5>9k%K^(!+wa+7kfuW!BYG?i(sbOn+W`PA2Q1jHD@1`| z6_k1k4P+tQ(K{OJTdk#%y|=ZJBw8?QnM8GNh2*!pmoEVTPHg)E7HQm5^XF}!1AhQ| z9d`8h^|~zT@9Rac!_HXWfAfmnR+{;pRgCRCr(jXKL2MoRbN2 zPA1OOti|BK0CRm`Prp^0`E0O8rGKQhNw*YEEA0(iX$#x;Zy7oOm;S_|MF~*HilB}Y z;n1Q4bX~l_Sl@TO-O-^P!^)!kytDgsg=lHmHS{$P9O$gfAN{qJ`51iQ008{4a}(<3 z$08#v1mdtzSfsHyyK@s`{gr*&ZMHJ;o(}Ci`prLEMfKE@Dm3d9xbs&l0DoY>-i5on zs?b@Hi_QuK?(V9>fV~R<(ACz0CV3*(r$xY@%ZERgkE+xNG|3au)z-pD->gWwZ`F!7 z(EcvG#W^WL%8X(?h26U4IHr-qapNle5Aw!U98=4%RUCt?*+SQF&YC5}R&flDsb!4y zjX86QX}c95FaF6nQj7%()PIU&(48SQKx+N2r>n6TROj3`tlbM~WDg z$boL7ssuzY#D7tgmx~OwDtR=|^Oy>)ZEz#*CYz%y1#@<_yeKl-ZjsSKrd1%~EohgQ zP@+*nXV7kndX-XRI4nS<*`%K$7J|&L-jgUuQd#eZ?UUx>vU_)zRU!K>4gtRxzMJC^ zXRm@2mQ%0*lMSY@6a^*a&>3>zTkzuQ_z}z>k-q%2XpBk7Hl?LpXN$DNuw!t-ms&mv+N9+TxgC}Y$Kk0Bd!I&(F@_aHZh5}xxtA*>QL8#{3h?uR|yRQ}< z7X~1c^(J7|84$cPIMv#SuE8r$q?Gl$hVz4>oXSro1svRE!SpvyYq%AQLBld=cz7o+O?l4@&o951)cbya&+|LEBFTc#C!^iob(e0;~wqKt%XWqB2T?;?b# z0ET5?H08pOy*?zrj^C7*bS#lrX7f00eEsvbdMkIg{;NDwu9>FkZOSA`g3r4+w-8!; zCc^2DHrgEZ+Xj8>t?y1Y95>|XpVes97BVHHqy#|}!)xK$m8IYZHK+UENcXd({T$Od b-ihrm?gL($RrGHG00000NkvXXu0mjf?J~~X delta 877 zcmV-z1CspD2ZRTZB!3BTNLh0L01m?d01m?e$8V@)0009vNkl2s$Nw^^r{G0nz%rQ( zJHS(VPzWO-)wI+{UfsfTe0}fxk%m)E+~l0F;xt;O@n_G;WYk`=l@QQu3#NocQ=2r) z*?f~xu_fpFShq)5Aj{q$ZreZIiNXp>CcA$=jb3@Mo*VxSb~#5CBl!y`K&eK^;%Ee_ zgYn>L12^IP7JudI&mJIB`EM|q=Qo1-^IoDx;_+HN76mSM$NU+V?jPD~5{L3kaY_usUWPsb(PtzDsbrLxsED3|y{#h?2Bpv;1L5Wwzh^yefOI z8)oMfku_e0IJ-X;iQyUye}0R5e#vwt-NCk@Fk5nZsyZ)`YH6^-O^ za{}4k5n+4dX)kM7*3y!KR47y$BwTeMuJ0iX#s@G;R4BgHASR#4NOtRjUD~KY$(~eX zmfCYGW?)fqeoM^5S}I99b+Fscq1z`5EiY-bWGf+~w~EP$5kZKn8WnZHa_>3tJX3>y zPQA+AGk=<+!{?fy(EMvnuf=D5WU$9GocNoDQ8aY1URJ*OwT%)=7v4B^4F;CBPmuIX z!7OcB%+^T`6cR_{uhWc4l)uLo zwP!%V6fDOylw!(J?J4xTiQ2j^NGGEgEG5W+YJUP!d%MJab?iHwt{a%vc|_8$ki=Uv zip@Ant@9Z{LQkZhFajziPCe>>xguF&ekM;%Ul9&n&ux!gM9$RTavxOz2{Ec7Y@OB-ZY}XnQeR@c4hGPAjXmnGZej_VLc6z;7V) zUPi(bPx-?MXyIR9HvNmO^U#9Zl<0`y3~bfW}T+wb4;glXf(1$0o#1G{!V-6hUG#nNAX|qm51@ z+W0o{i2@M;#YK7Svas*F_ukXF2QeTo>C-c_z~O%9JHPWk-+%eOvzOp8ZR9cK!oLhw z@_PRFh)U)VLML=Aj?DRbk>nDfdH`-82j%#)1;v*JE5M+@_7>(%px|DlzybjFN1coS zb)aNZ&bnPCgBUZg>Fzi3?7YNnBm^r5w(i?P1Ehq@&t1Fo*g$>;RIK#1B@004?!hQD z(4>@N>vQXhR)6(p*Du(f!o_(6(4hX~jR3_t1x5LNIqnnezX{a|(;r-~VE+yjC#w(w zVOT^F33eN*0ZIso=^68&je$4AB>Y!(zs;LJ{=-Yx9)zwvggCpk8-GyeD32uJil?<-Cxl>C&f21_ zU5&bdmA?MM98gtLYrw{bA~3f2U^5z!m^=(dlcCQs=UgrQZzss5+=5*b`v$wOmdfj( z3Pw;~1m!xmgs2e^B?4Xwz|`Cdb3{SnhMh87d`-PH;0H0t& zfHR^xBq2b#ZvKcWgOkJHB7X2n=x5Kb-2SH?V8z>3Zcs$iW<_U%V6r|)$_IU?b!%cs#; zTZt&y3wxx!2b`uAQ+pz#ix@lXmAYd z4}V9`jyKnReqhY#CzIyP`ZjY=f5(ZPC8a38Udj3y>0_}pFBeI}6IuWI7suhMDQ9pN zIRHvJ&Jm%MZJ(xA+^7tUn=<=>zjupEQC?BW)W{e&7Hd{4gU!|vqo*#Mx$(K1Zi2#J zTR(T&W%5Q@nLRA)zTs#te=p}pi_M}Sh=1oUT*9(-FT?Bgfzr-6qOe*l*ipC{(C4e4pA zkRp;=a=zjvcfen+7o?M9^Wjrtc|x-mP03i26dg7DZetU2R;-5C=VvQXsS2Lsp?|0f zgS1)9*t=sZ5{5cZSAPqlD8Lar1mgXzibNzh?=^sMJdzWW(9qa~XP2!)yVnPfBOru8 zrIh{FJ{GeX`**(stJ#d3&8?q)bgANfg_84R%h5BF6-Aw~{Hd(GnS z=@b0;p$qw(GEcYqfjECXjS_UcD_-cVBwhe5>p z+@Ev@dw459K5-7$TmTP|<$3OOkKp(C1K4@y@`KaU1CCNGojDOvCIf1& zUx2gxGy}8AEHAR$rNNDy_!LHr&P0pXkK%Jz`;JFSv1H~1M4OD=gMYs>UBsBonfcQ) zeTJ&FWK0MnM7-6E?_`dKUf|i# zi+38|KT=t9P~`b*tG_wz@`I9Ok#v&`?y6-OiSa+4IW-$P{r{*Wg~Pa7-?0B^&Ame$ zXl1vOq!DZNa_H?VFY}Uby-6`(Qr0ZQC#S$3+fl^5Z7wuBZ-3$TjjQ0pKA4qYuXVCh zxz2joS;R+;n~Z2jJgiZ%%*5kr#;va^aP|77W@mENN%8_zoXFx&OJ%A`(dcXf!a+!O+uz#8 zWN+}2z|GE^MSl;l&Ks}gJKZj9~Pxmlvi@s6>aJlOnX>bxPQ0~gdU@m9OK(UWfr$@zs?|z zACvh6c)sHVb#3kz587JW;q!KU6S7!Mh>Er$<{=>MnW8ADD!&Q8$RQMC0p$ol$->-q zyY>wT_OQVxD;L)n)q!9m8%G}Tdu3mf{Ph>} z^F)L0&3_RoiPnd=bs#Wp`)=3Vb;_a8^7(%}z|_&cV+cG~oLf-T<@MFqo(6oW(sfd% zo}{jH#1Hx9(1h6Nfz;DfYHV<|Hr;K0Q`K=>7jE6xQBWVD4GOHQzXLy?zhKC4#~Q2E zGKS-c!DKeFsvq=+Jc^>qexLuM^G-{_!ngMg`XZ$r+u=um|G$_#wqXARLWcXvpxmaTn^eb26a?YebayMRW7sX?6r3F0&k1(G4l#5uvS z4xB4&esH|!jW@P_x9j#7H~A$u_nvd^@11+zz31G7ggb2x8h@7|e$uR#Fq}rxz%i0e ztD5SwYN)FO+s}m>Fts zo$`gnaUrBvJ-mRBDdse^Hx@#^uxO}3;^Eh3M5-c9^pKUIy5m7;DmV>wlXx&UCQ`L3 z$uf+cc$1p8y?<(PTGYfaaA%X$gy(3lg`pman3Q>oh>pj?_RJ*sXxBREGHKzWtq_LV z%Ah4{jZe%;4n%$&Fp`>?lIkoH^NTmLO0+W4ZM+aGA!pW$aK1jz zkC1@QBBj5cMq-L6=wl`2%9cWZqai3M#CL3_f2^sg^M7H9;VC^;sahiiMfx^anNkh+ z$y<3~|Lu&|eMr3ozc&^85$SVQfZkw*B&`z?Q{1p*ql?!^n`m3mcceeFJTx&zyh{+) zsZ_93(G2&<+x<|Gv0>6^+gnl?a1{BGva$8BOz8@!k3ieF25*NEuMZtx4AqE&De2jh z1{7r{;D7V(%kZc7A0D3`{|Pwlv%JA_=4B`;Wc^4L7g>VpV;{$ad0Yz}5+?BJlUvDG zpu!U60dOC`2)^x9dj(IbamRXCv5Dhl?Zi6*DeQ;R7aGo?49d#VwjBw54KdQ;`xQ;R zuwc~V1=!hf16Ei31xcn};B;%CqjCp~dq;Q~lz)A2lZ%fh1ongJBe0KS0y&gjEOUmj-D2tS5%*o18{6j^zM(iad&f1%7( z5RjOKp_A~BL7^{C|G_Ka*ZCS1fOGuT_IN;7*9Em7bo0PIjzy}EYw__WbAKN=zSN@4 zcz+zA&p?t58Dk}O;@l9_9`50R{rD2o&>gXCZ4p1p=-!R^O2O-ACRfrzS!)3) z1y!U9dn4rOPXzWmbkBp;SQqjV#yQ&*PsMVHKc=Y3i6}{AQ$UH`KG;C)m(P&oiyBUFNIS^1F3%U!LHp- zWP-zL%!4LfE`Ky{&4okx`S7jD0GFDL)8x-q=JXPqUBrGru0wWb zjNm`a0b_nH@Hmah!)|so)-5EuUw2eh-90NWKK;(pr#vpxnW#y**kirs{6(|+HrB4! z&mU?vSJ%bN~PV diff --git a/src/ui/assets/images/darkreader-icon-256x256.png b/src/ui/assets/images/darkreader-icon-256x256.png index 0863217d13775915693ae13cf9df89aac212c181..e6c1d71a2ec4dde9f538b1be57d3b3946f001ea8 100644 GIT binary patch literal 25015 zcmV*4Ky|-~P)PyA07*naRCr$OT?c$q)&BpUo22O;l(w|&GDT2^iu2)C1Qqr9Tu*&&*@B`E6&`{U z7Zd?S#r53!e-4HN6&EN9Eiwez6zJY7X_9;XpWjW>rs=&mH#bR}w)uTN`2?CXf9IUv z`JLZn2tybHVGMLy46sf+^YFyO7zkqkVFD1|1YrzxVhn@{Kqp@O@YKT?2or$t9tdNg z6JsDu06OvFho>IKK$rl8_dpl}ofrdQ0?>&UKRop?2Eqg&ya&P<=)@QZ6M#;<_~EIC zF%TvI;XM$>KqtmPm;iL*#Sc$CjDau#2=9R~20AeY!UUj$E&kP4e_%M+b8CjfhVB5% zfWR_1kOGbffIiFwh6v6@>Hh*)1Q<-b@ppg&rHnodr6NZe<0$0@Udp(!)WA_{GuXha4Pq&@%v}wc3;z3OUCP2DY7X zafis+b{Gviau&@iZ?!RmJMs$yVFKV6`hs71)RZ~HM1c(l_;3!4V8CzyNx|>guO5y7 z*bdHiFazJt9mvjJvS6!UEru%x1p{FM5EQiPYjnuGc@gGP@hrx05eLoz7e@fhps%%% zt5ponzu~|)491_cm(1H4awF`70}2y>HeU4M)90KlfS<`ZJ0HM>0E}%sq*m#kF}9y` z@jEbKBSc|im>{$Y+FNuICIGFB_YYpD~;PurUDowDJ%_vpa?zob#_3Gk%i2 zc-{}8ImnJTsxSd)jWwM&PZ&`qUIEUp1VEq2*66m~_Q9|bBL7t2j!!qg@WifmJCAlS z@Gt=g;v$Wh^3X{T3|DgSD;Y2-h+TE$raxr@KCxMCpKe?JWLZa^Xj{xJOaKCm^-=fE z>&k78D>=uNV7Ms2&3ESJ3OMj7z(38&dUQ=^MnoXz9wq<*!sdvn^M-KdxS0Vr0q7Q> zX2Z?MV1NN%fw7fa7SDe_j3ECo5GDZr;SVFH&N+)Selx)6;G6txE?nIg3^4o*@Yk{z zEm#T0xGz=1Wt|uZ69An%VfZ}{PY@jJX3j7{XA|LSfy2O7Fs!UKTVLC~aA8&8n(g>4 zg$aOZJcRt*;qHU=2>a^N*ngkj}xPtVH_c6S}2{V)O0xQZjE%)N*U z{5}9=uoH&R#=s%Y*kd`1=f516_c_;Gzhzz8(&19Sr73m{ZaanbHkWX&GR~PGMl^xkMjv!SGnlqIo%?vUZ_1 zjxYgGS&2OhrYM~+~M${ONO|91Es@njEVK3Ubtuz26zrQW@RsVbX{l1 zN~b3P!|$1w$Q%wj_)~(t8ETIlLe1d=uoUL$>MEvZU+LgSB!zE$T?lMei90xOZ%)>u zi~Vn_{kG7l3Bd5FbH@pcFQ7;}!CFEtI#6@y0BR2Jm)`bzfZq0W@FP>h7RGw;r&fn? z{<6hkoVjz^yy`%=-5%QOlmvhRXYNhkz5w8}gSAKwi$yy0wTBPDR$Zy98*`Tw#P%DA z=vRO*#Hn*e2#hTP_}_xDh@^+FKCnmnkbqAw zBn};cxc-CnRu9+n6$6}C0BmOVk_9V$t=gW;cPavK;?##P6a@APIC=(p(YV8o>H~YF zgKw|V&rO;V5|McPh%mb!=mpZ=-gDVm3+~lkynUDKGz4Je^tsn?&R+u%SnC+h8xOv% zs=}|`5Yw{{5{8bDtoXvvb{OEm|8lYxP~@f#51oPljGQ+277iY8)~@#GVN~t;6ZPe# zes7d8%kMV|1KR-S>#~2t4UoPQ7~WEKAK zwd9r?Cz*X18W z@h{&86!+o7A5e6LRAY>>ySFT!|58W|%E!U9YXUHQ+C!%^2wwv5J2D1Y^_BegvybRg zFCISp0Yzs>HpUtIN6zB;ABN=MGz_ZU5`ZC-=Ea(g;+FtFUBf(8i;zWM>6XBHf<|TZ zMAuW!^ml0C`t1S(?ELJk`QNmQp?VCm-4cKi)8;G>M5u1^-YeVsdqCID7#ok2)6a%6 zIwqj)h8qi63>+3YCTv}@AUkA7s4%d0NdQJnn?o`Bi2(QoPyPi5m3f38h z&V&K}L;t+p=YII%hrR@OY;y#)I|2}>cYnpM?Wo+fE#M1~FyutU4;&KkcEb&ZJ_Z=W z<69OlcqsHo+BCv;MF0Zz?hl5*k5C%jqYsi#>d?+(?P+hf$yhn~xSXs<*R)CJIy!Av z1RxOa{`%5l6#VeD4pgaEF~uh$<@9r4hztkw2sm=vQ-hpu5v;azH?MfgzvwWnH0O3h z07g!q^H0w4mOpr*)LQx928TE&pL|9*c&9&$(~;^jWMwa2FugrYsa+6&5mRTUfEj-P zpgT&Yqpk+|>%W9(wFZ1$C|-Y;QKtsH-Ef2L7Xu8qW=qzBfcd2a3lr^v0F0dW@FEVT zo1&6UfAOzB!dhGya6D3quGF*6hbb;T;BAK+Y`+*_z;1^@Ja6msj~xx=S%f?R7%^q; zSO{D{-_E&o`0Mh6vkr+vha;~4aiP4%;jy(H23BTgEx4`iy7%65XcK^W^MsM5;`ba} zw@DoZ@}Pho!2rt2n|kJX!Du?%W(UCl7x)!9iyr+XRHqZt1YpGUIS)$-J9R?cv0M~y z`blSP@72iKFEX{mxQ2V5aJYmX46Mt}S`f0)g+rDA44*#dWX3^)KV5n?ht-0jpT32^ zvHF!(Jho4NBn>}V&xQ!s>0}sS3^#6Byx_l~IPH)n03)W&A-3sqy+|wD`kR!nBUq4j z_C<(D3}@*L7JfTcyZo2ztVcuALM$W+z{u$jkLR3yu6Gkq8t#(cH|VYIwO;u4_llx$ zftDDUn4PuY#ZW^`ND_b%)8>2z;8H!va@5tL@TYJ5%FpMm-|+444MXAIJu$$+w?`Rj zPTBbU^ZGN!1_7-hM*#f2{mHLC5E*;IZ~q|dwocw82WI7DEqErB&=7J2z@OW{F7GIc ze(0-I=2R5X)=QyIf_W}j{2tybH zfx-aecznx}wvQheDg0T?x9&M;BHA3lt^v1n^Z{tZ#lNI!oZn8B!Lh~YY645(m$-ISd* z->)!t{-U?d3BZVHbN&tB2|W`bS6_1Z4JO294n)!kqk`E*xb04g0S>In$y%VxuWWi%Xb}p7NXL7_*^esA&dbn7~l-28*Ur`^5#T<@)2_)qh|(Y% z{?LLXop=&r`wnQUwF&pzIWSO^owXpft)|*$1Yp#Z*@H#F_@|zU7yt5u&ryDjjKL@X z^eqCgi5zy3L(L#Nu(>szZo z_kLP$mL9Xyo8h;$dQpVc z!C@uB5SNI=GtNUj1XUu@7K;|{QyT^h;4pzB0%Ego`kU*}tF5k!5YTr$7;F%vZ`u>K zhHq^nQ7_e&9)fL20Nw>~t*;2I*}Vgfy*m(R5)f}PAcn5>AV5s-eu(bXM{3yu0o5>| z1_so^Al(pQ2t5qY!H$Llu?-(O_`wF+6Ry2c2ZP=o+bnW$o9*Ng)8^y>=%!_Xq97t3 zc4={KTQ|X8S+1p;Uu7ubuTde}4-tV{2&jTlTKq7y9R}#I$4Prbl=eqk0+Aac2t)`f zVMHA?Uru$|Sqq}uV(e`~07gyw&zT~`AJryI)SM1IeQ1#h9CdXl4PvlQ_wl5V>o4<; z9^wvYv3*?dwpi;9)2Hh~puG{P_s(qvY|!Q4+8gv_P=mIT19;!zK|s`q>2n?d$6UFl ziJB)h9DL8gk=0-IzQ2MnqUKE+Vq(x`q|eF;i5sYZ5v4E%eT<#4gD$Wk!Ru$J{R!oE)$*{FKiysK|yDo?pPe+dR*-I9j6No;1X`|H%z>rDv zV$DWJqXiGW+h}oVk=1!5j-n0U0it>&C4m9v28{q|0ce5(W1zp&i;Vs)axO8B)D-=j zS|qigQv)C(y3YVa_2}gb9%akYA`>@2iyj8wF+jIHT?(!zpzkd-uR#)jv-A-q-45*s zQvErZQZ41?o$RQL(dm`~(_&q(P800i*(SsR6aLr&cDS??8xgiIU2P1Uj_%{seF%_OGb< zV*5M94qcxvg%sE%`HxI7i;^f{Bda@$fm{6qw_LiL_MQI~&AI_z}lqYMnuMnSsS0}Tm7P6Uiiw>FK^ zMF=bnL_trVL9NyYj z`rR0tfSAnwnyb@+cG(2@Vjx7%f_y~y%|dD(Xowc1we5y_pV)n>6W4I?1Hsk@3pKv( zjTCPCXNnl=}{1@vANm}IsquU^|ClIM$8nz5~5`n zVAso=*Vm(R*S28eLTW#vONuT5APJAE8uY&2biS^MP`NyqJFSqAgna3+YJLh5i%*wA zpoD_0vZ17Bg0{U8BZ@im+5UT+PYYfy)Cl`iR(=*#m)D>YfTDXYN*C?sOo8#n2lXuU zUoA4kcp~3L)oFn}2j!@$LiK^*>;Gv?k=?q3)PQ<{NH*zui5O@V5YhXOxPi_DbnDZ5 zUkeb6PZvT=8(aEm8LL_uZ+pW4UcQj;o8W3g^2)LwKcHT*1%F*3u{dc3J)Jd!Qq3b5&=QM1X%L`Boz`+-e3!$g^weZA#nq~ z$`pJVQz(=rc@EwBT5fUT25Dc=;SU5Dj7D@#>(=l|gV`Jjb7Z9S9T6D`qtOVf)rxwH z1@%@dtX2zZYidwjkS~2oiwXlV4As4Hmm_z=K*8F~)}1qcEG28z-e5cl0!{#azjKtS zr#XFyi{*F6*cW1#L0=oXyyW^DQFJ=|-UL6C^s~MwUl#eXiHYbt^h6vt`V90rewcLV z1wSMBl$8`C|41(O?AVS&`}Ux;Sbxp|;sQwLO9Df0KqT-O%#zhuM+8#qWoTsi>3KkV z!ymz3m#!)3-ERN}96uD@dh|q6a#z35DvF{+2#y@sk3D~G$Kn0^P+MKCyG^;hai&;y z&lRjB$Fos-669L*cAm6iv+pVrl@SJ%0OZcNIx5OuH;jYHI?=z*($3k2xc|_il7WX- z%1*KW?G;Ue(H;W_I0V&JG#bT5F`ipLHg!r}dUvG>oN*tct^)@sel(UX9T zg0!drkHFmFv;-vO?*Z=-u!%#Uvh?291N{aMLI2~1pjT#pWb_JtDEIxlcj54Xz4&YU zHss|V)-z=3x#-#({dw)8i8%I&Ttf`JuFe>>t>^O}*6Hd z%;Fi>7YdPglJSo(u9{VU?L=})igf6QoOTxa4<8w*`TN{XVcs$PwfztLwPPD{5A64; zK3S5H;fEG4F?tRZcMw%!SJ))B-y0BzKzqa2P1&<=CI%iq3FLf`UKy7opAZ2!HN=f0veFfK9_h#mhg;*m;#ziG`|dnHA>JG{ z+#5DuMfyD!CNv5;yp^Zld-dy&;|C7HDHo5|QoL2m?EP~GvVYltojF^4>X(Rs7W3dj zM4+IZ3kTCsk5mo9K05fs_WJ@uhL6OEQ%^_#Y3feF?B8+f%-~A>4{LV|Gi_JJ$wIj~SD8Kv1=sGcj_l4yjKKgWw7=4;_IfOd+N(j=p z?U%o!;01sk@iw>Ws;Xc6zP{e#t(@BLeh~mIho3QSw2Q2dz!38xPr0#3h&V}YKqRa= zLvhm_zNS&;Q|*Fo!w&#tXAgO9P3e?tAWBr;{`0c0fy-tZV1H|g9FSH<) z33WRGt%qNWP>}F(@|k0B_9f#H9TV#nkL{&E-jQ5E}E3*a_$&0HsqdALd|U7bS#?fSCbLJL<0qLOR;Hqocy!P*J0aD@hMV%^3Pc|RjHE0B) zVq$RqrB`6&X_`bv{tmrO>VLE9Q~dPx7tQ*P;bQL1$a}_fKn!T^3-4J#bmXNhUE{O4 ztj{|sf6AqO4GfCWGDL_b24RRCMpq*JK?@Vo=r=OTIRCOM+J%tM-`znJf8A&Q!~Wgs zX%I*Omg|KRps-R$yp-{Gyn5^RL7l2?2MPSN*aBn@I!@Xf=^cn8RKh7~kZ5m^@fkrB z7YlDe-eaESIp_5PW2zg-3j4kuOV)Z79=f;f69LGZIyS`!qwL|PMjadm1LOUa41r!j z#=LsQlKS)?i1F9lfaKIRONgR(kNZ_`)d%lj^UtcWP$e4yZ-PPc8zBFIPy%nZ{aO$I zs58#O_dB^SV{^DvFiP|L3RWYqF8Y|%ae_lsYNhosjc7E^VKiaC5>(~(o6uz z%Fk3^bAmxIC_Yv>&=)|w62?{_>z3Kl$ zNj>Q8-A{*~>;b$5fEjb~IGjB;^z1$KuC*`qZ1wec=cT2{-Lu?Wf z`rYn8t);eVn^yIpW&)5m`O@Q!0#uBtc@GYjtTySj1I}J_)6|)o`}75Y?WyegFIM6E zwdzE`o1Fk@4@hR-Dq9%_R&4;r2vKY6}9 zYvUa+9j?Tu@4SheUpK1Gi!1@v5|5BYAvq7VC6IHET3kmh7JkD=pN7k?zo{*!5mJ3u zE}c8yx;sZT{I$Swm@_Cw4&n~S?$l*#<7kU!SOq;hYk$$N(o*AYB4rim|bb z-TTBQ-M@G~81wED7oer6s;4{sTC4I2R=)r6?^gM|pV#Vq>DwrArdJCMP2! zJsku3XJSCVen?AA2~h9antAhuML4iWSLbk zU=VJaqI%(JL#7X!F!Ql}52?A40Yh;LvHzm$|=1w8GTMPZacT8w6QBYWf_22)1jlXWfZ=17m z;9$cuiJb9imJQ#Wf)$X$wDIq*e?TG%XP$m4PCeyhoHOQc(gp}Ny!`BwAa6q@@Fou+ z4uOb3TL2w?CBJ^M?(-JyhrIRfxcA>dANtlmw&CZEzv7ooze)R}y1GFnEA0!{hG^Os z%@RU2Y>&Z%24eKdC*jP~Ps88NIs^eOY;9Jf9}2&j;cyUD?b6eoP#ND9?>r5 zrY&EsYE7t00K7T*IDiZRP`x&jW-qzLnBLo~qmZ6mP*qihPd{IUPd{6QUw`}EdCol! zyzAgM`);BKszKL=4IP4UW5?njf4>qbDgODAE6tDm%imqGOf}|!H|HUG22h#S1Y+%p z{Z|4q@l|v8CSU#Q?wlkA=LiPuKX4EqeDpC^tzIi}fO6n=FF3bHi$8d56t~~cJ$nqU zm~a^`zchG4OMBj-oU$jTzNUsBF5oB`0x6ZLwASVHTd}S}>33BEkbn2Mp$3znAlMUQ zIRsUs?8J$Wj5i%O;(|agaD9C}-gxsZEML9?<>lql4d3i$_n|{~dZAP;Dk>7U{Oe{+ zy8BMV27&VL*|81ptXQTvYKkd$3=vXd3OS%B!d^tT2&U#rk4=I)Q$vbu`Wv<4{C37F zqV~zSh&=G=o7$sP*v@a~Z|*?1dw&o09M z{qGYprB!Xh{k;3qS7SW}^ytw8_s+Nnmt8gVjsCf^n*#;J zdvZyd1$orPN@3Nw#3j&e9!wyvAszJ+H$nu*Gq?#Qb|p7pC27Lz)Bpe=07*naR2X^s znYi?tz}^e*zyATAd-gdeH|Vw04rV{} zpu`yj3b@@?SN*~A7cIZ6Q`G-6@B;vojSpaly(oRjTG>!mvb&}9&Z`p~W{d2*olJcJ z3}8_90!*I!(%nMW^y3170K46eC5sm0jg_y-vUL96^d1Dn^_Gy68Zssk9Afq8`|np@ zEiHCrRA3~;HPuyk^|^(OW}%+=Bdx$um?ic-0S-w3=bp68o2(!Z>p@08?rJ}J9*`iC z;vUkt==N74K`GtRam)035f!cIL*~;E3knKw|GoF&_un=C=4F3X8>gf0oR@>qW&f95swyf(l@;M&@)`@nH*D zfb3coO}}gqL@q0x;S6cuP?X%n{^Rb^QD`gzc$J&qImu-vgch`Get^nmSJc>wJ!6rQi=$f+J_vvh|A5i&hcJI*Hum*fX>aOI7+VAx54iQ)Le`tR|;z4xJ} zrn-@{YkqULyrDfW_Ga|J^TL;zfUi%83ogD0k3RV%BFurY)u{Vv%{$c}y!flqMiUs% z<($cz0ShcYW$|Y%bj~dZ044H343`bVL$>}5d>~^?))1Xkeo3=mn89Kb6`u!MPf6af zW4P<)n?c{6jGLA=T4?#yI6AimedQ>qJgE;~dGjsw$s|i?|6%3gXOO#pUt>db@JXUh z)^v0@$qzs&)HqoX(&44Du0yXkvM$~3)E^NRazm!}l)`oqaUsb+tra~B=y~8y2NGto#30+4slgg!=xLpGc$2TuW-$NG22di-s(FEF2Yn%{bnd^-F$-U#9V zJl|sOZ+T5`dWofPZU@lfiKnu4E%_+icFn}UC6X_u)-<1&4C1)qWpr=g$5e*^)hUhqn z^`|F*zwphMUt;#mnVOpMdSiPKfR-GAOTFakPM%_TlO3Ei`cyo#Y^jugz+bR#-MFgq z)hE7I<^phtb2Q5<;3{i37!IW``lOj0p#=drHgVi2lTnbha&U+kBna}psHWci;}fPl zK8u+n6`g^!OunqN6nFpg1{^!0&8xA+0d+I%XfzD)d;>NJ12qv4kGoclL+Fy6j91@% z4{7QCZ}c@Qmf+ZqY+01i4POl-q8hjY&qBl@_>!kk%euI3c+awQ+Y`}oPvz!W=J*T7 z~9?cjHSu#@D?^Pb_=u zzaV1Z4;6|_a2CiPmnUz6>xDB4N~aih7H5gH~$OT{QkgKD;DGMj;+#ucO86E zWD*b;AeTYN7!iRkeFh+|&j8S&r+9j)8Tv#r)s>Z~C@aCyg9lLf=O4)bQ$E1IkKDaMR_Nfi4L5C!wm;zwrR_W~x!w{&1}^Evb^$qKWJ` z(=IB{#p{y-xPAHzT=OsgWFg+T04}0T5FneSL^O)IY0o#A2REC0@uW*n=44Ca0Sux^ z1RJd6@DqsJ|D!iv$197US2%F4b#G9^X*A_^pN2bO5P5^-TS=1UR*?{7pmVH6i0CG* zy#Dq(aLbgber^22+jH>a%ZsEN-*xca89+Bhz%yb zDl0)mK(dZ(2&(6eASm9vZWgJHw#Ch4Pz(lx0nfemCI$^1>et>-=K{FMMPaufw6qRn z4%BvC_W5t_#7+9Qn&qDemdq5~eOXMrDS7US*(@qrH_uDK5%2lu^&U<-E}l;P4d4q4 zPc6}gpgM|A28HefFo_Vjucx;aT=?><7&gkk@a8{eJ%-|ayP9FSysdG5XOIvn^* zIbK53fpp@Z4!@eIcZ(al*+t;SaWV!Y7$gynpLPH(MTkyxko@AQH{M3(VEqQOVnOa7 zC67&hRSCh2f<}oT!AUdV4o5}mvNci$Vrd`qd1o7oOX6hXFRQWtk;BhOkGu5&-DIq$ zsuFjPyAU?3Rn;xmee}L^2;>lEr)}X82Y}c;lK^RU;|k*aT4 zFZUI3zj0}~42(HHlGmeit?jhf4Fx^z0Eo~_Vq7mm0lAlk7OFR7#3=mdMa4XzTAD!B z%BP;ROElDD=%)$Hn?9tL5q)9F(s(&R{@ngn(!=WH356g69j*6N$8`YHcEFMG-ah?GPIY zf;tgsYKe%-O-;BuRhME;2HPIHQ1Qqkt#_ zeG^Nse2N{M!{XquI_O(OWxWISlFtVa;ZhTL-aG+PJ3jX2JLo+?G1{Kj?Vv6U6ssA8 zCX-UP)@)Yn$XM}tv4oX^sT2AMaLBqZi5$mE9FYtpJ^bQb#?%bOFyU&Wx7%!(F<~q! z%gA)OIRR+)*7Bl;bLsKqZfc_7DP|KABLp}v?B=opUk!n1gOt=eP-eBmB64YSG&HNK zC5ViP#`4wcB;9)$ykp>xUpC^YdnUImD09^khi7YuagZ2cL{fwS2`0fA+@l4FSCb05 zsdGt{=@3y-Pek92I!Soc1dXjUvJ6dHDn+%in>VVv&%&t}T!e{_JnkJS3MK4?$99%I zdbhlklz}smZv&GA8qGk2;Yiw&PxeV@Dw;fgB!rf}{myuQ&C`3ix6<|54;4CE&V;LUFLY3eE@G6 zTTtXxDN9#vkuX*`ZTy*xw+z_HIqwF>q)a}Z5HaGc?g_Wdx?eBCpPqaN_WqIG^5Cdz z{hF!aJP%%CgaN%{A`oX1Kx|6`XZSRJpm6?)uXIl!4$cL z9e|4ch}&-Y`=sf(@H*X!G*rCy^uqe=ALYY@b9p%cXWWsRwdyB!;9qA)#>T~smO~+9 z=p}NqJ--t;mYoJ?nQfa%Sb85e={s3s?v zTD#~}`}qjIatKiZU@{0Ove>b^!U{WgZCq!^?plR;Z@iC;%=VYs+D8=nRebg9ui(>H ziKA`KlDpryJ)$GfKi&+I(O5|IuQ3#tuLs{X5hH^nPjEqby#u=|Et1SYNy;yk^|+yw z+>g`y_QS((yr&y)mJMIMSM}ZtvN7fbhBD6Otpcm7s(xh^GcM{r)hYtwCUW*6u8-hL$98{Q=fCb!$Z+9AU3 z&W(Fq@oLU}O6#vQW)dWO0(Ez+&W2qTRuDl@GaQnY88q;SRPTm|9>J*d_4(4-i}U{~ zn}6q0xv`V|n^Jo5dWW!|DMkNb90rj=(O|jj(;v)d=ExR?Ls}Mn-h>NKTj}&>^wrSE zReo?nBzniR^m}*xPVY1=!nqdXRiH;ognVWG)07huQhkyQY%Zw- zJv&vO1RkBaw>NtH1Y9+9w$|Y^E61&tisD)SP|Ui;7~2Ley-k~g!19@r1t8~$27_#L z3n8&=viu?>wNd_n^^Pm z(q{M?+PKy&74cOzlJhjlTvS7Rd0S_h(YhZ{H3C3Y$$sFMqFRX=)e_97p5HtE`f1w2vUpVA zw|Ns@|F^PHObd>{?GLoTBf3PPdo&&Xh95kFc)EgimRRkLK_cCDRC8~h#uP!i@h(Y+ zJ)Z#Xthz@L!KVhe4xH*WaN+O>1=(^8VV1V>|vp-mY!P+r1NZt8+i(*4kRA zL%j`vP}4Ko$zeq&Bq3wSFr*(h4C#Z1BCY=*7)*grPyXS;`PlsB>P9u&2}x1t6RX^h zlK^PBGQ1thhTj$R`b4;sB-?_fps+3U{cviXek!PzWI=KqhZ+GeN5|mdPrvcDEQ-HZ zzLWKw^_O+BS%R2|{ZeoyPY`((%bRrR$wnC$UnE{UIoftS?}B&o;S8%`$cBdk&?BUy8d}@l@;5{ zoQHAj#OXNwN?pp67U(8b*|F?jvFEE#@#m%uusS_qS^yCt4I0sA^=L}n8wh}BgGn*b z7<~2x7;xd`=#m+@jBhKZ-GSUcw@Gj5;Ym^G8>dcW=)l#v%~|b$>DjBUeMdx|RLd^A z12r#0vJ3gKpc+=OY2P;0Qx7pV>w~q3PDs=7kL5PnKB*Bz7dxEWHb=XsB#i>_ZgNrBnmkiTVQI5UqKF8j#KSOOv zk+fkdX}${V=doIQ<4s9kky1Pa?(}&epuY@~Rukdpe&r`4)H*tXr3?MEZcix~5Y5&Hvu0`Si6da+Q@b2{Tc! zu!3phP8WE~82@U?Km4%)_;y7We*45N?6n6cFBhIWHPVPN-C~{i_x6@+_?_TszzYIGfaHm;mKU)Pw3rO$bL1@^651&6J9CMaTu$$XW- zMt1EYhmAzQBCx;8iW(A_$vDi&4TNsIXoG;vIJ4ybOazV$Zb;TikYF-2s9l?Co8uF4 z+-28b@c65BJ1#wU%_T^()!@ujmvL$H6DQ|?Uuq?n9yJZWFJd|QWg!g!5kyr2;IS|F zR$7r=>hbJu7^bYO0>IzrJ&k^+=zAWj+5&(b;h^k6%|T?MjVW6JvQ#iG8{IPg=6laE zj~b&a$y3?h-zlgXE9j z2yW+Bj>RX*d#$hUn})_)l8vVQ;4I?w7$x5V*Z)$Zps#Fy@tsUS|uBO9h{!G14&)b?XT?mt&UOJf2)pEHgaa(@c*~l zreNe1`s72ZUV#ecz!Hg5YMgs}u+TaR5Xh$aIzrR-7LSpy6bm z>BgmV=kk{)t}7wJ(1HVS%{3*`>1gE+^h6-H+w*5Xf$k^iV`C3Zz7%9y?JE%1Lqgv` zLzGcn!=t4?;>^CwuaR{gauOhya}hA+?im<1PG9(R-5h|T3_v9gpg%Hz%^$pp-`;K+ z1i@4NM^yLXj5yF{^cU!G_;>-Tb{S)A$@*&@W0@%igPzl8_q}`lS6KUuy!?RP!qs+B zvQH;nG)c&<^zP@t*3vr7w~%WdbihxPEbkz_|4Gw9f1}&JtJ&D%>Eo(*$*j2;I7VL> zu>DgmM=aBKkZJCoZo697M6MjkKFIno5U`=B7I}5fWNT^?iF0Q>gn?&Yq^nEaG5{ql zfLa~^f3yJGKmQOLUtOX&Nf&~KB}Pg@s6YU;@hVlR-PmWVoUXUn0U}kfp`~ zT>k8<=+d{puA%F;15mUC6cNXTz*_>AA3lK3XHa4U=Uwk~sC0qTP-0|qG-#6r14uAK z?4mE+0Bs5qig~g3(KOuZlg>xx&C@lN^(^$m%4PWO{kNnI?kVZdt+Am-VNzR4Yjqg{ zjqD;Xe<2wF2|(S!nV`KjPVx=H1wDtf0^Ry#(WzJ9 z=dB;I(fFaTS`yy6ZZ=P~=JoHbgTbUPucK~DK;>w_LZm|!WrLOZ;|n0#YM&g zc-LjZ8)INNHAPpDA#ZEY>~~2|-r!Cuw@+w85E~p}U``!yfPh~!4QXdypsTf4AG#Mi zHvA}C_ds>M;)egdq}FG12%7Op$?^n%-o|NB@&x+$)6c?fkCCOP?{M(#Wr+SoG2@lb z4U#1&sa|QVhN>Saxeqq=m(gqJ?_waLcv`h5YWUp5FL z@7AJcCJLMj!<0tkk2m0#_uh(%!v|W1Yy%`KFs03<8#@{*5)q(VwJGGchDtsbA?bU{ zGatejDbHGaYwn2~uR_t0T-jo~E3LAsFxvdYe(C{|0mvN;x+#0ecw$l?DLr~(_FLN3 zyzb*F`!ff&WpnflRZ|_}2T1cla*RN5bDBDJD@3vY@(Yo>PP(6RCeE0(z}F_F@_u;( zs>K6fU_(T3S)Rn7cmRLA{sQ){ZK(<)3G>Mcw~j8%gjl62Q#ATL=Vk@z!}vsp1NWVO znrsbv^6sm$%Klbvb4Vu0dSF1j8Hvq29i6R^W`-g#DZw-AHcH{p^}ylDmm*TXj8#vU zty+h;F*&vL@LQ)L^CEr1Q@`Q?s6_;FaP$`#WchJ_A_C=a-hfR{I|YI6ue4q<5sD5d zt-4A<>a3>k3FtfXFfvFd^Oa(#Mgv;oC+;kjZ7=*ud!hLvbV2F#~#MeWH74A3Xawepw}7zo5>p7^!w= zg+)<2;B7E5MnQ_VC#HpoH~92{&BBjq-xb}MO!@zW?a=KZ**_?2-NTNB&(KU znK^lY0axFO%n3K>ZocZ($Dgol{Y5qd5WGbNre2j)fg)gLfTDk5*JnR`l$p$NdPZKd zbrW))d8m;PlHEC(pLSHJAAB-;OjeBAf`Iw|`x4RdxxV$*t9-_oZ_^k=TERhMi6_E*~KKF1M zue~65TiIii6%!09#RC+LVs6^=tM^MhT=~RtNj9S(o8i|1WC(yPdGg0AkoqnB@k{J^ zgVW;G2b_x>ATu5$*C?TE0isvZGjsH#B27NutqnX9&W1OIOHMo6cROa)H7(z5 zW|@y)R$Oi|A$98-8h37da$2f2F-+YO)BgQAcC6dPn4TBJt+A8EM;>Xd&Uait?oFV8)UM4-+ZftHJbgR zu%9C|jXN7i`);pkZz|szfD&LLHIMtrqrA>VJqCJ-m=F{b?2$4I3Qm*-?WMJQ(PQ-V(kt?XZx!^<)gAKED$RLd{eg zbi9hJ#RK1yz0Cqhda($x+|LX)hm%qwlx)~ z7zXLFKy+D$aLsyNtL&EKPR+WYF!k#sDclgSo_bpN@ZS+v*>5+uV9C~YbH9V8L0G-H zk6?O6)zlM4%w41Z#$|?yoy&u7y=6^>n_W?-m+NfC zOss`}`3Q5}l=p^$@G;6F{ZAu5<^_4kJfBos@2^C@@MP@&=Xov$Q$@wHoF4ZOU^zNR z&rxliQ+S>|9VmE88>@9jSCiX)Q-9hMANsPYx2@IKLQb8W$X1ApC+M=H+N|*`1GYWc zjfFLzYXU*^^}gR07aSPKC1ErR=^-M`tn$a=$2=>@!s`EmaW6tvEJ>j%>p+)@~J7&^$1PlGS|$HZw{ewpviw$Ggsl%B_O zSp0~S!$rGZ*adm5S5gpHt*Y*b5R(v>DEFi?J8+K3YGbd z%KToOl$=f*i6LpGJ%OcS(py8AXUh=s!^ViCNKfhO6mw|bGViNfO0sW-eAmXW*)Cl! zNwOxrdtyE^JDEP4<0tEwi&ZNFHKK+@q$*ydEDfLA^ESpE~Y5qTR|ZdJ1=Mh95%D8gsqV^{%3O2FzLc%cdN{=x7_LH@;8DTG_o zp`>V?Rl?AtM1_B+U)igh+h-kRfg}z3#eTff&)k%6RLICDqf||LpEZsNB#VylJclp1 zr&E+%XW#W!4KG;NoO=yZ%YSojB=#@q9I54Tej9p6zG75FCwydAW6B41Q|+R^tKJgA z=uVKWecA>*RvvT|Y}cs;FpZNc=0r6DLd4pyu3(7<(>cC69hdn&{WufV-zR)|-!0-xtj-L2r<;5M7pH2UpGr+az*$W#0%UNL{q`wi7PAZDMlVrx$Iv zZ8$@C=m$qbCPI>M#Ed|xBI`w$*WsuWzqQ;%$$*@Os`pKR?aN=sSQ;HB8G&Ebg&&xZ8 zIvD_&rnp1~^#)nZU8g%p^-4N0|H~Cz7b8r;q4YBMp*UwHgqZ_V_<}m&V>T{^+_HTE z+EsLp-DSP_yl?9QeR7xJ)9JpY#aAf*wuyeIMpemlngf(zhFm&k`evCEe+p zLip9#T^Nmp*p2hpjIZ3)7AzL-yD3lqow7MF9>gb`KK@x|B0e|3gy=3K;mZ;ixHx1i z!F<-M>zBI*oPafT{5wiq*82QCLAEmhf+wFVW<41xS2f{(I`wumcmamDHDg$f8Dy_l7S%&5oTI@le z{cWgcx@w$g)NT-QPlpemN1;monb&}_QzdTn={AtU`f)2*srV^fksq7G$i zL61kxJgWJ+TKFHY|9l^VM#3O(@%KZFaFu`a!HnM5JyB5V6SNbxs%yo^%I}lx#E=+VAG6~MF`Z|Ua<4#5ik z#g#2$PgYvPK|iE1*g=KymqsvoY4INY+s1$kig>c!H?BzyjqxHgFsipbMvu#_88j}qdcaZs zx{s*jY|#EG%tv%2#9Rp5B5%5tVZ#t(!V%ZizJd-)tEO%y)~6f{#He>n9_RisRFZU0 zSz6yvjHnZQ_|>&7*3^cxwoRvTx}S#ef3@Dv5UMlUecYgH)R<10v<`KD8+2Zf&qtGk z_jBRPYq#0ncImTw)?ZrOvaYyC_ZeKC`|VwUhHe->&OwQiTp9{TOw1+&tZg zoQH}PB#|?`UJI~xMT0gjEtbFJrM+@`MULms4hY7eB`aQUup&zML>?2$rCwmLOX!BB ze;x;O-#bs+;5gZ?5Wu>wRQC~T_gu4qVc%=B2$||j^<5GnAzQdb5D$Nd)JQWXvE4J| z?q0dwf{j_4@*}!vv51n&r@o>-<69$`+e%sm5u*098*KJKM2TM=F@+AgawO)#&cTvMhUG6KXkKXL&DP8*xs{r z3Tmb{1gx8K_!PCW?^t^50RK#|yO#!@OLhojds&l)a)nLrQJaRMJF!`g z(DcDNPoua@O9#ziWkWbgcqBN5uou82wWMLBhI%I_X=|`;w}9n4&}X%2&Rl2s+%u@gS*PyCUS59p@P6gMN^hiRz1^YDnD19zT6Zj z(3CdEPCdIUhEus$g(qLlBgZQt+3ZSqf456l7u_?-5sYsU{PRLtdq#Xk`w5zZG7W`u#!*Bt4NAlcY7D+K?y1?SHg~uzzlsI4868%_ zpMQL^P3A=mP!dxK_|Uy8+~~P7;e1xMWFQ>;GJVZOwOe48BX3tpq4A_iC>1LR(U^@cSDO;$J|$R5H@%@?CT zSM{^OaP1;3H35b=8RAG)A(g#;6gyb&p(Gd4tN3urz2d}KqDrHSwn2WrI}Dv`Z2Xj% zLRET(2W)?;a4oY%?&QdH`J5$M@$aa29x zZqaeu{u?RHLHoo;!D-)O?8A}<@wbrepw-W} zXxrTBrPwh9UUK&+VQ44PQKl$DLan2#Ug@{GHvV`!6c8HR$#?$66H9Ne$A_6Q?7o7Z zpsJ~;hJLa;#)?V6GUdm)jej{^nI%Z1zCFkW^ z6V>oCXn$_XnoD7VD_xl&{Hyxw-)BDX>L;IQ%sIRsR2-vG$r22#no{)g3t>z#ELSg~ zuD5m|{?p>Dd!s48qmzFfZYdNt3UzkguL?!OrZ`KTz%SWN3ivNyPCWL^D#?w@u(A8V zkG6P5j?#uGm>pY=qF($}zOVedtc>segTB(R8kv+{dLdaw(Ea}u{=-xC@6um%dqdrQY4;C$7yHCUr1q9k_yI|(<`C>@%oB#=dDGW8jm72hRx5D5u@HkV z6;1@u#GKQ`#7alu3?rAiK0gFth{iw%H@H`!`SUT+EV|58ZXdn;Mnql|rY=HNRIJ={F?@M;f z1b}GL$0XQW!OCHI0xB!*C5m3W9;6n^EQd_tMOe?lYi93$DcSekC5z&qH0g?cy98%P z7JDcI8$vU`c_HqPC`T_$F!xA!nihmG559UPnUc>CcwU=|GW{&-J6Vz1<($->Rf*8j z0$*WLd!1I2DDzqjsH%)l75W$-upkz561(Pm)T8eQ%||1S?brc*-Xby%Q5v%?H3)nu zBuyyi+JQb)1_$s~tNfv^`z%6{x(DP7ma$1(BO#87Zg`}T1hi^BuT|&AN|2<+P%cO? zi-=}Im&&17s|KoC)*rU$F%6H8=8?4b3#YV?2oI7qG!Q`^d($MJBj`doT|09yQf8v? zzk7US`IV3;^RX{b*ng5u+mDYt4P2-Du}kL8s<$F7^|veV{?EnEM(LPBwEO~YwC_>+ z<@bVTJ;haD72N4opm1{Vu%!Zi4&t>K*dkgxy?aaddxeZyYOyxc8bpQ#3~=WNcf&SE z^CKj2&??T~ZYq&XFO`JX5`n={?oY~Eu|yM(Ihcw6R@kAfL+Y!4ckSk!g$*1WEo#t$ zjb@6O92$E|Tmr`Q?mgeou+O)E<}2gAL;hV!Erk&I_GCek7P?Mf*sjL{ z44h^3v(bl$-Or{0ZaO4)zN%Wr?~m!Z=?GxMC1a*#v- z^j*mtGgH-Idl79L)z;U}zA9DXEI>Dq{lHLJgI$R!A&^q-mb?p{$TjCq!DH@YWBS3y ziN!I!@Jf5+lQo(x!?k?tgOApgWt894-dC#69NSJhinmTYf%FPRHI_*Y>T1^+Vyav? z5YWpkucKmwaM031Hf2(L{*OhLqiA->my@--b~y^{PZ!OBLJ#;05V^0G4RjjG{0<~U z?PW5#nU{(h{oVhREvPuZ8qk|8Fiu9L{Kn?%YKqRTeg{&F=}k6FZdqt^YD$9kp;1<; zW4QAmB4%EDCN~AZflx$ooY^H6qB=k@>6;$rf5CTU>ppZ+JJ!cOBuR~!XjvKPIG-7> zYmCqfwzP`{vA!ufw=%N9IDVFLB=e_$NbigULUJ|GORQ7ZC~*}d@tA6vTNgdLwjlbT z1`MV_G+EAJr(s&$<1ujV`XAaPhN>bAt&`$b$JIipG|HwN4zpqgD};@GQru#C;^G}s zB+^b1FXc)bHy5n7P^{0oR@0SqFX8S_W-*Xy8}?Y!gc8$~WU_!43i4N)Tq&}pJtCa_ zUi6j02nx^#h$D|1!Zc+86BX8JbIQ3CNbYA7JzP+VF%YM(?7+4FC96*F{zOQn;I>Cm zPUw0qvbQ(1Eu135hl+dVqsmS6A3z4&Q)|s~7!f2>LmBsajSUO$+?9l#|2E?i^N0{D z)l-%FXo>Nw1k=1*D?t~JgaUe(b7#Y=`U6IhZMs?sg*)~Q!kBP;VyRk`5Zr7IH z>7oj$b9d9>&i3K4#{HzfX%~nTWDL%rkbb5={kU z-3HLQW&y316;`u8Q;2!yXMTA)GI>K2Wdm>*UsZgS=oJo!)5Ejowe{7DH}C@NSYjo6 zSEA^NS2Boz1=6uDW;Kt(>%RUJUcZWQ`A4JxAy~Vudgv&l0`^Q?C*(GXphO2~J9_^w znxd)7(!ELa;<|HV{Sl}Sun*r2FAA1jHF}13;pMVP=Z&8U8VVR>`lb7hjssxG@}37> zhr4Y6OE_>_)Awud2Vin;Re^aAJ|S$Xb!;ft=X>m`wQNV*DK2iR8@PhHM+S$QLKajD zJXm%pd&X7-?n`p@1!mR#q0k@D5CY}a&2M_cn}Dh?n&9XOY87u7^A&QtMP>BXa3Q0VG^bxYokD@!D&wV?{xci1?dV4!0KWuJ5Awd!W#uK~nVq^1l zo|*ZAx|2B@x<97vxh)!2;EXN|P7-9)noH}VHV!pN4mS2g9+wNz{s%l(0^Yy;<96I6 zg5JaozAQmdA#UoI1c7$q~0;T(u%bRz;Jk2yjoE*vXO&~`^b0qBKHLqKi`$ys_~uF9dlc>mT_XkN zdYr4ZylXoiWY1}W^8Si{_{44?W-I*J+dJprt9~DPawtI7kO!^<6=yu>{&m5q%UqJ` zT5^}{tBP}iD{`~D@d(ae(-|u{lhv!@t0LbNHkohw9nTnMBn1PEOx*fkq zOrdG|z>y=-_0N3&WsNRQhrL}%?v{`Ce^#!y))w0m_(3d-n zX+NLh*;`a}@__!Iw|?l0EKt#i_1UIs?^)NxI5f~&72112C>dE0fpxH=`>?t)jjgD! zcp^YTHJ}W~QQv$I$zh~QQxlxbv`-Ss3APhR5|)+Yh|LM((9pqnQXEA^qc))}mUd|= zzHRU#F*Yqum>`QWEO!kLmxYN@_6zgqJeD$LE27ia^83|T_WV5TGB0oiwcOa_yApg= z5buh4NlE_bXnASbQt?=LRC>bA*M%TY%8bS7&H2C(?_*}2VJ#oI&JBUv1WGHWjnv8< zl!<5{mXGyYyJp{a%%pHxsD*ym(wW^GXMCqXR#mDr-$Yu%@j4TB@|J61VD(W9#1`d# zX|5!_nuW6y3gdEO2{EO(#)1sDhW(n0dU=WA{0m|MfdAnN$}Smgr@tn1dMz%&%zdnA zDXAIcB(Cv?*V4zi^qK(`|AICuq``=*Q1}0}oBh{5Kn)kpihPv^QVAcX25f;m z5YdBzB+i_KHafx>lug_LzOMi91WsE`ox=oxF#vtjeX%G;>lf-W#`DXxww3_CDYU*p7o^NXV&W7T zpJZ+Q`Vy-?J?;QJcnCS{7B-QJt>(n8=KXJc>f>>BSHg=rXIOQej_(i*>!M)OG%kk(owmrTdTJ_Ggqp22_`1={DXQzcM@FWgrGhf)w5dE$Zkn*kpilL}N(& z^ZlIdyRlQamb{vz`h8WKkT45*tpQCAsh@qhmBq1{-_v~BnO+EZ)^{zqy9!(ylyrQ) zW=e1Rv4oF4FW|+0X9NWG5Z>E6rkx7xcdHVe?CMd8)!L5AS8wN`EQpXx8s8vmyhg;a zmG-~{CeVs4dmcR9aKFpEP0EU8uZJg)EvXb48E|)f(>^dW6Cy zz&|6v6Ao-^Yj2x+^}5AKv#=dmH|p~VX4&?A+FNBX>q`qZ1k>MVPF&paNwv`v?%~|K zKiJLNn+LEdI*PxWjJ(L^vUfi&aWmrns=unH>o~tstg;)2dBp91-Br*Ozt_rR(Okyc zN@w^&sstxyV(o>K#7?adJP{W{7@$vL08|w<6>8-y!v7C^?*E?v literal 16162 zcmbWeRajh2&@MW-TW|>O5Zv7f?!jFG1b2cB1lQoM!7aGEI|L`VySvVu$@lMlah~U# zi@k@7wPx1puI{(%t*WjrB2<+>qahO^0{{RtIaw)n000Vd3k5)ghg=L?O20xbuvX$q z;s8MHPn0)PILLQ$b6IsI0Kl6T00;;M0A3(J1snkY?rZ?Si3tE8kOlzYJ7u-02|*sf zn<;#j0)YSh<#m=M0stcXa#G@&UMuH*o|>9VD_zaL-IxBSOpmmAa+)$Gp+-fB>V*-| zoQQY=l%2|!n1d2n3THGK)@L+}I<-;UO#=kx5fMZ&L}YX@7iug5kkas(E$y30#a z}d^r<;%ed(d- zhV?j>U#8ygW#rk7uet28#p`?pZqBR&|ArkoQ@#pc{*5ctI_@56-PhLqAnTLe&!W(*_O(}*{@NG?^XZsQ+Zu7$F0WY zX>mZ2Z>XW3KF&HSAb{qRnM->Fd?7RDJ(=4t1=(C;l67BG#+n~2g}k`oe_DOm>=JIa z40J{bkB58GZza~ye9E07P8Yow&$^Rg~4N82-wIs=PAE79D zif}ie74SI!&AClnl&B3jn@z5g@D^|$VUbCV6R~!*LC^?1`W2CW*CRrLkh@GcoE6|ww@@x#X5A=C~0(f?${#Z2G77; z#|IHB!cnFnN=+-l_I=af%zu##9LceR{?T-}@hI0+8#%sqK~1c7sm=wjJcf)&h5e^@ zMb2>tc(#X>IbaY(1rnr?Fr^8ekvk%H@j89XM3fTsqp#8Qeab%qk4%xXT}b6ni!9L= zZ8aA=w<@WV3h3~kDEVr*GU><+^ywPfTthNJYgTU{Vu_v>_l<(K^Pmr3?kFaxRC z&*ba2iU$Uib~2Hrj?QpltrqADD1dWs0pBk{ zNtVhGrD2DFPyN>r79J(uZV0G1Y*Fc!6l3?NVf1|VOLT&7jM>3bl;^bwwqpPfnHjB+ zjTvnuWqVAI6K4I3<6=Z>F8`>^qK3WQOaNB{Z}V40e{mDotc8M@j5j4$DiYzhhRTSm zEm6V9wUGlVuj-mOYN?e&G(XwH6%V9~{9>^MlZ$d{#r>(#Ms2WiD<7XTBP}gD79Xsz1CP3Ftj4A4n2_|~`us=v z(ZAEMTCeNqGKhFw3`M?u6``;nIxm?-p+4xF?~^(8PDhkdSZ#I$i&}(zXh2*UF7&s{ zPV$toMP(wsEfEGgD}pqqw-|c>9c#jNiJa%A}xAqpUxqtGj}a zR-(ls75n+2zdfs(l##cmi?Qn56H|M9A^=G&DKQ*j4Q0HM3AQA*7=Nyfo&4kK7h>FG zyL3@)VTEl?2Q<5I^D90If59+Q^4AE&J>y&mUVBMGq%ynLGsg~e!XT895F@@^Enp2E-Ee>7u37Q5+qY|cB|Ry(DB>WLTq z+)X_RTY@v4S(PtRu6s~ggR?%?Vh+1Q=KJ&J`D`-&-MTLX|Bo#oN}a(%Y>s+z?V5@tAyTkIR~I*;LZwM`|f1<@Gn8{q6hSX^3Ep^0zGhOMI+?Mr_{Vi7lm zII+hoL=_M3b1V{hHA_Nq3|O^d5BhFM3kl< zv3Fd&eyDy4RQV`;w-l0oM4PU>HdOZxnZjk79mfp7!2meNvgkBIEFV5zyKGf{-zHQf z$LI74!R z_JqvmFTu<*@R@F9VTt9x0*^yq1{wuCW9sozmxTF10CmQRGF{htlM&^yDT8&dK(S{hZR&~; zRF;0UEjlSB(ML|&FTn1JoQXD|`&Wfr!Usj4k4bJCXgiH=QospekzM;#HaLncBCO^t zcXm#f`y@Hv_kHyxc=M4a*X`c4M38garH?kJH^1Wz%)f``XGU)f)Cff6fk8o}*c{f} zF7#b&d;OzG@L6Y&Zb_7(JHrq!eYF~h5HEa3$RQDI&e}5=Wk_#A+xD&!xCPVqiBt?H zaU<-U#M>bI!DsG~3{xij$w&p|YyDz=M7k5RX=-3Wz5Kl~`ZLY+vXR1ld=*Ob1<;Iz zV#ntkrBn)m*yJo;~Yb^M8k<41YnR zgyjky$^(vbx=_{j`n_{n%j?V1ooGzAefmDbM1fZ2v|euf);LQv-W*RQ5Uuje z4v5Fp2*~Z8x~EdKf@3bBw2=Oyw5(u~aT3y1RlP6K1;FXI;CTDQFZLzuD03dF+ z8-4?4ZzibSA}_r(uBHyxG*wq~IQ@0n%!@jkk6{dP236-%--~PUzeokQZ)`F0-JH|g zX^||)c$RVxJhGS^SBZv-Y{N+Ah8K$M(G&_LJFyOF&njn)1@os&pPV8+KNSYolI`4V zun4~Or#pB)NCdHPdJ_PM4MeJaTKq6^P0GfO&C|fi3r3(|MW{JTtlZMt z-jBvzomoRR{8UNtLAQTu41S8o!>OS*Bqo_TSb{iBSFe{FNKcUx7;ZH~@5V|LLVAJ> zTcI$cU>J$%&Hz2Xf2F3Km)Z8gLAqdOBjGjj4+6A;XrGbt4!F|KzyW!c3(gOfwIQ%M z2*%sfUBZr6+v257l4KsOD1Sp>R7#qKmf=>lJVByNouZ-!(K$pC>o+OXG^L9q+tPi%^k^DMTla;HVgqRTmR1Q^=&I zRoC|$p#O;8pATiTP`0eBP>l7%-H_%8U>hbTg*?wXG$4%$;gsRX(trE`aObCBgSniok$NwuTq_Hb3Xc6eY1M0@;%kTou6jd`NqO3l=k$vh)hr72?z)S^Ly9%sQfg_!cRuMuwykx<0=_L z9kE*FmW!-W*X9dmJ_|!5CnN7BKQl|b$q*)D7B&B_e_O*kIty3Eo9Bd+mBdtV!y1k? zYmaZki;+>>W=moys$TE(@6-!^gWz3yMm97Ws#&gyXj5PmSkm?Z1|{r>WVk-Qmf@Z7 z)YmJV7v8I_Pu;q}R6Z_*)07j%1>cspWvSEnz-nfiqkk@fDU^Jv1^Td z1l#=xkGOC3FEv@FkI~M|Z;eaTyXw0-r~XnZtkhnuePd(Aqcy6gA5Gaak;QzczR+ee z6xYC-(|?fK#{xy;yxFv1(0+b0DIdV+r0z2^93=XZy)XvlX!3c+$E<+ew@&@FbSc=J>3hc`I7S{gU~h>y9Tw4 zi64v$16@<XcJQM#UIChMKBHKnH*9spWfdtLZhth0 z%Mv|hWUf|=9dY%JTA&DOBr1RYcnm5qjd=g3v+4Rh4|F1xFYD65=e_y;&%TPwm2?yR zyB+R-6)8^CHIH;Ka_FbO7i3+Vis&piBk&Bt)k9SMZw_wN($MNBl_4`}fntXHN7TY{ ziI&@%+R|!oz5+gAEG4!v1Rc81g}`yZ-tbA`CSn`7_hNdNTG{y6Nz^rOKMO1IEF4k5U)200x(pwAK;;=ggmEcS@NS)s^3o@l+b^BbI*gaHu53M*Me6F%bo3MzFR zYo6rQaCB!FI&O&<(XcSj7Ai{rb)`nl*!N+@D{M} z5CbMf0(`ZTUL=;BltGVW9Jo$5clLNTFj#BD(|)iYzIVjPyO@7$@dMGV3AsWq{UjM! zaP-*Td2oNSoTSWpG81}0QyyNNchZtEF*LyZD(kz+0YFffIQ+%|fZ(N@&6Q<9C$kO{ z=bUq#Y7s)2+&4@2htbK^3=uuaV)v|$Rn=#Q{v=lfN?)kc4;%P#J&aR9WEh0?9L;mD z^_`*xd&5bD4c%qv1h6Sitq8BQmE4~EM+Jg#md=xMp3gu{cZ}ww@7yG+^a$!zWULt zn7pD!_OKeH1wSAv)I^|-ake)gHkZF`DGcIk!}u&yLAZ}ltl(SA&29nL2^E*Lo+M3; zImGJ-Ew3Tu!ax)xdykmS@$QP7u6NoexbH|DP_P@i^|RphO5|$in(D2|7Q2ff@wD-o zcSM6tDQvCBDH)aYvKM}fiSus8~`$npB*1GnRb0Gv!Q79 zmg={o_>~_c$o4XM%Cv-HW5G&WafSwD#iV7}&)w>U#~l$(MRHDGXRN%u-WgG$s)>kH zeQpS1r$1J_3XUYQDdcymt5&M_RN=ZpM}$Z=fQm=Q3@VdPFK#Z$;(scvF6}-Cy~5{L zr%vbWxVYm!;Gxfs0ny>R5H{&%!esY^_wJ7awh0p_QKx z3h6yLZ8jvXb;tDEx$=^^MB!E+-B^LXZqiGC(x{RVV??sM-Rn+Vzs)r-{Htd>I9dOu zS?6et{wHBl`~4`*>ch&m(6GLD`2z4bk6jR~>Y5JuJ2PRd%>YJGURE)h9I+eNm{wG@2afhpZ?m#dE6~ozMMBpEO7L6m&~k#$ z7|}^Py$hQrpITbntCaZz)Ah<>g1#WPxTN7Is^Z#KU7zkekY#F_vdM`o%Jm&iJNfE` z;K7jp)u&3fD@&APw22YxD%8%T06Ufif=egyEB-lys8+09F8k620j}te&u;V(B|tEj zoW%I7R#nLBua7gTrx0wAO^m3XYBM=wr*5tC^v>tVNOW=h zpU(#HfpmDkas$Qd(m$~p4Anw`9Yt*X;?m{icKfl%SGsL+((Ub5<@)BClYr^MfG=Vk;FfA4DgmtU?6V= zSp&*FnN0?r#MKH(`@oil<0zG+uiSE!`zB#LH`5=Zw9(MmJl48hu-X^y_GTB^>9xz2 z@1H8<8+a^jY;Rgs8$Z}XVZ{2mW=;X-M=2lY$EZ1vqkHb(*mgzuG^r9TxPiw=aL0~2 zASJzT!(qc{z2jCY`qg*0dq^zCt&s)8UBhK_qT4b`XhwDCl1mj5S3!%h!>l%ALDexJw4q^c(U-eT!7XfqObHWH9q z?ff!(^S}4J5K4N%=i~ayW>0^`Kk1h5Qlwd3m#3*Kn|WVS@#tz_Y24)-abmb2t01>) zpzWd6bab*8$&g69+Y58i@gwxrGiMP!R!~d>cUfASs4_9qd}Uy%TZ@q)Gm+#mI`*vu zZ*otO-ScuIgp!ra(EeP{Kqxzl{dw-%%PBXr?Qyq_cv(Y=gw{R@1G4zPP{NMi?n_SZ zjTuWsv;$IkyYxC>S&f`rX}1SMIC*V41E5E>lZ?ayTkiD4 z!y}x1-){#++%Be4I-sVHi2RI1fKw3?58B#P6H5r|Bxm|xykFghyA0Rjc2@F*8}>3) z5-~rPB^*E8YnNGn0JiFl*Bk6xq)cR@0PzpCmb9~^qFqJ76Qe#tYc*T=0#r_twCQ3R zc+ni_Fyy%SGdgY4k9!Y(ijDaW*}|h;lMlxliX?^+vppSiXPosL;5+yRcup^n5)~D&?5nsQB&O)@nAX{$Pbmlp|bL zO`PHqSI0%4Tv<2?SNQmBY?KK0?pjt>K$u^A|EuQ7ZC{#rTT-jl(<$hwib)o9^;;R9 zBBTuF`iY`_Z@D1jbXl5H+A~Ke=z&9B047d;?ncm1;pdR!!k07RZ!CsVX4Y}NN46`a z9E+9%Rwdn?;!DJ;pIzOaia&7#914RI_%b9h>%SEybcWSY+Cr>iiKj#D_|?*ym_q~X z3@Hmd%~&vjP|NV|tmoU4km!y8$X3>CMiGNZ+I7W|Uuk%=7a7;~2JCV|{Q>43RoNIj z6sPv$y@j)L&qtn0mE1^N<3rMI+hKRH7{?Eeq4-GNC0QCD;0PXg#aA+0_l3U#uKSBC z%xtOCfKMw?Vf2KoxNwxk+-_!LgHew`h5=xKFwp1(Yks&c`K}hc@GhuxeEN2rD0{qZ zU-Oc|>(3>~x>d5<*kJfWeN?AFkjhDeXj|OxMNX*pdY^SKqT8`6e>wWv+Y3w@Y5qdK zFg%%O>G8~_m3gw)Q8w?1HllH-41X}Yc2FNsEN6Qe_em>aW&F@zMmfB?_tf^VeBTZo zt+TvhL`X3m^%LfF$wLxV!FLc`BA?d4lW!?P&4;)?{H|Y+a#$$Dc3$CcJOn zFQ11lU-phJHp@B#WLGZ4k`O@I#*N^#wC)A@K`I8L(heEMjRiL-kAvZkZ)>XVC9#}F zd%Fv(`KVWWF*xu(yC%@u95cx$)q`Q*4z7^ z9;?B2$klh;b&dq2oLN>^Cxf@CjUn%k8jo<{bZTMaou8h*yd;L8FqjjSJ=Gtu8fOb` zecx>$D5iTSU26^DkRuO;_uNhPP08%zoAY%Cqo3^dMdD;Y{TgdV72{BP0H!CjT^|md zMMRH+SIe+F<`({JIp~Ncf3NNjT5z3GC&P&}Fyn%ea>SLDu-*X|X~J*y(H^i|N6z-r zW85DU`F4L7=EQ%wri$s8^uRCP5o`UxRH8Ca9Aa$txblUs&Xq}-gg~~AZda|gZz^-&QZp+`?opCLm{|Fr_bMQqH2CooftGSEXzs2XBsGe=> zloeQf4PAWO_0fw-dp6>R26=!pqxY?S| zFaPOmwV!^^)G%g-IG{6eELuXFNxk6Dl{z?(j`ecgSKd|8i)4}n8td%}P#E7k&q`rb zHTrIa4R&Om>WhSelA*9#{KWI^rrYa=pyGo>jEwP;ito5J$%*_Nx*96-U*+fPBsuk` z8Gt4xRz=l&bL(rjLi|MO+att)R{licAo|NIG+m0;bAQ>z&ghqIz?Q9xy|l(occ%oq zC`+a3%MZ#_F`Rnxgsv%j1$s@G$e?^b?@_i>K;&U81KuoKqxGnuSP>-uM#m{)x7DuJ z^NsbE5gV`=ixm@DBX^TzWLR7S;IQY6y;}(gKcqfu)bh5LsEwW{ZW2~O@$m=^AKl&W z5wo-q?DP@vowakn8u z)6EKAqaOwDT-X=PEkJ&0@sk1vHr_9>isn54DDgB112$c$wS?FJI7mHj;Wim-V8a{g zwl?ryIOwmc7W8+195^0I(K z+ua+zUXHMg8n@tbR8)XgNiS{S`_$;gpi!kh-kUx&9~ttM##fYkON464fP?>m<#MC4 z8_Meqvr#=_W;EMIvX$z!0HFo6&Rc491(%XU&-UAxH7V4)8>_7QRUh0fG=X35l2GeE zYn}DC?%!^_?{DufE32QxMO~!7je8~lBa~$a(5jv=V*?-|0$4`U-_IW*N}zNhI!C=# z5t=H~ntw56nhMk6dV%V%%T2b4IxYFd3~_M~u1or+IAMD(`DXg7obSIq0EzAlpGd)n zZeV@Xm!Ex63ZnmH*c*?M!+LFqaZ4Ar7%>`Pyx z=s5MFL}SkeyMA#&l78JZwq~VhVrIPBW1^YYB~aFk`WjSD-XN}dQNLfngZ2Z@0xrPM z$750S_l4cC>2yV;t`xHEZ%=*z^;$(&cnuEaL&$R!s^OagK=U&g%58=$s0or?iK2!Hb0V$TUA9V|lirr`!Cb{n1&u&%B z=VPAqgYASc#)W8}`GRw%7zfD(rGZOiuP+M?U*n!^Qr&+r_uK6RZn7(X$CH zfr??S)#T-h*L?$8^U~;ANx!HO0j!Ai_joE`x#V?Ad3gpAY~FY=*n}FNye?@IYT&NC zUdK?9V#J`p$M&PEi@5&}5PkJBHbyyc{Mek-4jkl=blb2DJ5b^EKJU$w z%n+PCO=vY z<6k-TCJqn%xzHbhP9F=rZoc#@*by%4Q_1lTz-c51E^U$&Lu0iGE^C0YSqt76(0cZ> ziPQJ(J$|#thE`3dHQFsL8TgD8qQvo1^>UFQW+Y_00TVbdG?H4Ek&&1eV5@J`wlwpzs=8}tmn^4^MMu3g3bP1fkH%$TN! zTJ9f(f(%#yQHmbvdiKe4OtQ0D+`>wx50-z&( z{S|wIARx1D1Y%);1-{a*({Dv2#A)B5SdH?2^W}6KgOwBr9814_r!0aZ_>2Wk4fXC< zw?>1Y50Rwa)~*KXtbRdI1--hLbXgt18+T7!8cdE-MQ^lk|4sBR=LA6VK^KtxX_i^q zMVyCk-}#%-*U5FTOnSk@FD?MWXIu_ZM}H?`R^GYE1d9%DP_(Y$d!Men%kQ5kzo^|! z^A3q`AmufP9?pet?GXR0CbBzlIN|8h1zvFT9|Fy#ZzA9AtqL!d5(iKl&lzBCOl6CWZzx%+XPv}YhT2jJ?N zyJv;K97fWqP6vPlfE8j-n7TToiT?~F&wIA4jbWl`vrqIJoGaLLHA+N`6<0zD^JSG zI~m?i$j`R$4R(MVLeN+FQVjTW;;gA}aU=crx8L)tR}<%>tA8T|+}_fzmvmvPc0_u| zhVm7VkZqHZ&VlB>UH~=9ewD!+l`tj-6)c^shSQSYyb z%wGWQc$Yj!92qftH^x$Kx(OGe+L&7yDF}FD*)hzGI(;L2Zik3`7jtdqFaScWx z!o7*$>Rd}z+15ixPnr!N{wu5&_wM< zFaX-+74)Mz5MRUISym7J-Q+=p2Eh^5GJtL$*j&TvuDum#dd9-zXAe6>Nc+s>svA!R z@XzAJ`hwKUmx${j6ZG1heZVp~yQvNX?uAI?l=bHBaDpv@N`s{Gw95O%Z>Y1(z4qqg zm|%Dn64Z=u1uHzufiJLvuCE#i&T7Ud2f4lC>-3}5Rm@&?1nwL)kU0WBu1roLa&c{e zv^i17&&lW{`wLzxH%>td3Z?RA&nv3M!HbY%wkw6P6<{D=PU;@Ggzp;0$`Z~Xa>%5i zE?^e%Q$9a&jY52M7|_7d9yaIQi=c6=>k_QMQ4C>%qb;Ye<|f)sk~$cDB}ZCO^SVD{5G;5&!9_D;s-pXsgY~S>sv?FKFi@K{r{4c( zJO1=c8z|~keHcXL?JaI%qht$!6a%8(73W~{QFI8N->NXD!LwZ5JweSg{@TMDspuX$WiAP};=>Q;*F%l0j?*Y6e7(-< z-3KqYQ_L!x9Y_6)y>;KwTvM?s&5q6{F#~bk*JGPwaaulqg zKxduejA1tKB*%Sw$Ry<8t*xQ6<7kkhbd zj87cwl2Pr^kyDpzCHV#C~Bo6hb6hu7q!g}o4;=3Sj4Vg8q6U2+V=0 zkC*>-BiQ~!4S##m6vi1is3_F!)F$n}nV8wQ9KW9GA*qD@I{RU9Y)pm~#)J`*Vs$$E zX0zgGKgQizyrKJeEQgu7j`V)1dTS*kGUl7tqgX3# z8d!4;U(5rU`=|6-z+Th>J;q!6Obb}a70L}aFn!EU52l8>0K?yin~XU^o7HIRIb_bu z+m4L%(&%T{DgG8HfuZI0FXCFZM#Ss5Xn+6Y_>~vQQjCnsqZ`6{PvAKsanvY(%g#5#;tbjd<1q)scel(=M z!uXGP%01cBp}QL$wO%zRu0ktK&?@K-{q-83uWz)JqChzi8kmmfIjy*-uMcDF=WpC= zqfjSj(1AnwZy!#pN8cS8{ZPVYyrFJ!2$vavo-S9)x|BR%U4_mDd*&7B9MO)SohOQgd=b)?IJ^?vMQYF^p%*3G{D}w zyO}6LiV_jCC#u+}(_Z3KA<>+cbs4gq658-&t}+4dbG6YdQ872~A}7`RREIrafQk$! zIPEIs%?%;~Ni)^_7f0$MB3Cw1gGNp;^JxC%r=#jm(r2RGB_S5P4myW?5htKKXH{$-rY?pRj~shv3b{#qzWhjv$~lURD;`AXJT&S z6of}r!_SYi)crbCdgp%lrm~#EGLvwJGE|5-nWJY;0NH4%U->n?0tq@_H#L#J$m>zD z8Kws@-&okmA{(n4ISpb}d4sARt*(H`5?V+u z%_~FxN3d@Wky?*+5TCG62fNnk6`M+2mfuBcmFky&PXf`x+PH%}m4fi~EPfi`TzStG zChLloO5|1kN6Hn=E<)V^y5?`s=~;eG7@M)IGry~!OeW&~q*{$jbQ*soS{|<@+06e5 zk@sWXl0d~Az-Ug%#!}g?ERzS3Ct960E{N{}bPiR%Y?4K|v3hAM@I#3MZ$1MMs=7@h zms6WGt|m3Nqh$?#|K3UN0`YZ(Jx~{m?6IQVhYqY0l6lk-^!UK!RYUs!g&b!73;sqW z&hl4-_9O3SwWYz6udwAs*N{ynRKN1wdUq6=)z8n6O`w&rzjOedKrQ|Au>sMY+sunT zt+X`;0+A(9j_1Nq!12$E_tWr~kL9XIcOqXP0RDz~MsWA^v9FvAu2{)>-84wxc0-Dl z3-`9-+t(wB5reFJY&1h(r$Q($9%P^QJzSN64) zmE|hqo@3I__VBpV%l!N17>vi6acf6q)ZPeP^XsdZg~#&hVRv4qZyPvvi>m&`fP`{LQ9m$T+IsyEvki~%zDH;Zj}l0ls&G_y`D zLDi-Jd)FWJKJ(@iYbUZ6#XQqjt9#PvrzIE&<%x4RQLe7t!@tKU;e?X3u zx0jRDA=bm{ZuLOQhV_=)|5^C_d=urFcyMi&XqJ>z;C*8hOGMz%Ib(c#Od`v;8OL)f zdz%NzXZsV2ok1*>c_hL6?|Wx)fx%Zu6_hH1dr)Kejw+sUKj8NoxY#T^E{NU}KO3*{ z(>$^9-SyHcu{8_AxW$vr@nK7wXT=m!8H5>Xu5WBpRfa#z6F-}kpmY1$8~fQ;b;hXU z%%e3`ojqub(j92Y-aF47duj)J0EG>bLb{rYWwu7rDBn8FSRe|IfKhEYGs$P%9Vv=_ z**nd2xP7$TyPQJ%wWxaV-8-*N+cSGZaC#HwE8ZQFo>3^2K`U6Ps345&pOJQQ83@lY z5@5c9Y(90^$>WkGxRcAuEw7i2vjQb8U3@ty$$XGCbgAv-5?vlfi5*nJ&iUA5&Z*#S`gUp~$Jo24n4 z(@2eWovSg)SWb2J&nvPthxq8vk3H7H;iA7v@V(pk2tQqCMg}!9&x^MapWhg5K0V5bu#5g3IBze!sZn7QvcwkHUty!%Bu3 zKp5Xee_6CCIO6TaCK^7N%9cm728=TDYh;PbEr5}i=(yX^+3z&+fm3*et5GI6p{g*4 zW~Un?+wE&Rea}>o?2O+&MGq{(tsdFbq+B;3=zJ{Q*mzRh3EO|yUm~a^zzoohe<41W zIX*o8@pDqQlF+yh@OvEyiOW~?SB`anO)|fa7zHW`v10i&@NRIa}`Gi9p z3{e=9(BNmCI^B#B)d~vWlOBG$?)9MB5M!pR=pYgKF{|F%)rMPxg1Z zZx=AGf;+i+jfhzPlVs{vw}G;6W{XgS9z(C!86+yW_*M3ejdzR;G9#1y06=8~(!k1c z9xp;X&rmmL(|8!(Y#{*f34%?CpO1+anW$py)eKYm=cVPj&AE^T0#?an0Nv-6V~H0p z1Z*l_HjSOI?=v8sMOFZlIdm;8E#j$JPz^h1b0OKiw)(!2gBBA~WM|^vAo^A2#Z)~Q zgOUG_wp=*Agkkod!0~~~{4gkkcJS26%+ttJ^7W5>sNZ36juVPWES zzY;K62Ox=-%xuFb^z*F>NJL0EyG|G)9%_mj`J)X|mKsvOm!lT^Z<=2rC7N{D_Lf08 zEXoAS>u7`GRrtVzXCHFN&`2L1&c-C|6|?NmFfR_GQH?#58q~W?bW~U&m9$iAlY}fh z9+!S-s2r#@a`EpQL@}bw%!`!7umXa=a!XKV{nm62(L-T9B_YAmht4)iNCO8C5BT-E zabD+!T4@!0x&aSY>Ec|$NF7?gs2}YVjqdSC$Mz=b`5&=^B3JLF``w*^-ZA_ zRV2P7B!A`xkv{O^4}5o*&iF|T@8Ky4RKX8!=coGf7i<0O+!RthGKHrVTzDxi!h_$t zIEHue@NnhnBF3t1CH1|9d}bW?Sj0j0<{}c30zO(_KoZXSxNYi)q0gib@-hp>gLgUx zoz6W;2FvQ>1|h?=xPjBTK$sM>@Rp4;tzbK1U^u1?ry0E|AoZf#U4lpL6BecKf3LMV zyirI52SW)tgZ1mK!w|7Pz!S8*ZtBH|+Dm_G_om?EhncA}lNyht7}e31)d6zdSdzp)dW?P8D>1%;p`)u&ohn`@-koU-}8(AIEr zNeH4EwaA~=4_)#h{;aY7MP`ly)8Yb_+r{wwpuwfiL_utMw)kFib~5;+D@Qea^j0|* z(@x=ZB=2USXbRB25Vd*RKKg(j4+H6-l#_u@i%i_knZbN1ckH|*fnJw=Cb1TxO|9U< z>oCFV=%WgJihr+M|5}(hV7yb9f7Oj-#lsdRR3PX{epMj?wj{;{>Ut--+!YH)=itUO zFTLtgX**JQbEL2ZFgG>)@ufC-dWjn85vAwbt4fX0y`6YB3XEMjx2Cf^Whw zd7r+s!uM?O7D_M01w%2PftnYFa(jXsJbCP0)uxRDm7Asp0Dmg;o2*8@vY0f6Qlna% zK6W$nfLcOiP82`fzu^u5tT8W3b+U64xwkoY;G9VQjT+Jm+24r}Z!8)%iWq``uj;MN z%|_EMC^6I!Rr@b$(YJf6b-P{6q*v?&m~#VOeBX&_ip-#qU|LXNmfOJgjn|*a9&?!) zVio`pExY$mu{)6X0PlqRzk8?6OeFw3*y^;_W)J{=_W_zNfcg$^HcBw$HiIGo{*3)R z0L9HH$dtA~&HMjh2(<+X;1=HRUfgTW3M09^5)nw)|X|L1YfE?Yp=s|qa$6GjXb@UtJlbJ1-MV&k|jX+#stDaS?Y zVKW0n^Z#p+8J19y_n(+%QvmT}uHqX7d;kF;Ck)DN4ajjFMgTAaczuMgaR!fmG5#mI z=awxX=5=!sLdk!Fd;G7J!Tmjm$FaI$O^b>qF~R&egSo0HbdQg%|KGd+v@RWi&1|1m zX8I=bH%a^6)r6Nev!f+zOEVuk43J9h6R8^tL_&0h=lj@XF`8_|j2Z_w% z5ueudi_~5~FN(IU-{KPq!Zs=1;E8UwUA9_-NfCNtfJfrEL|Q16;yPrY1%_vSlGeOV z`$Owjv61_Gx@1vj>@{Z^ip%b49E68hQ~>84LCP8CnL zAu4LIFWmUd7Et!e8ci7^+9q!zL8Q(|E5_qWVZn({34sKbwy-gL{2PQ3aeImo&B9`4 z3Z+(on-1@?c66A0uCEmG#T1}_+?*c!(giy4+!pzCW^syoS-Q+SjjX^*ZtU0ezaYY- zFoXU7y6uB3WZ8f8#AN^R@7D1EUmhj9XAV8H%kF?7fZ+mz`@4B z#>~#n%*LU~#v#DQE5OOl#KtDT#+KNtck=&gVDD&Q^Y#1xe}kQ@9W6)$fSk0l)Ncus GAO8=AkDML= diff --git a/src/ui/assets/images/mode-dark-32.svg b/src/ui/assets/images/mode-dark-32.svg index 1708e276bacc..29be670234ee 100644 --- a/src/ui/assets/images/mode-dark-32.svg +++ b/src/ui/assets/images/mode-dark-32.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/ui/assets/images/mode-light-32.svg b/src/ui/assets/images/mode-light-32.svg index 125a6405c935..6374304aa4e1 100644 --- a/src/ui/assets/images/mode-light-32.svg +++ b/src/ui/assets/images/mode-light-32.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From a0807dc878f3bb21e038d34846441de0c77608e9 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 6 Dec 2021 19:32:35 +0100 Subject: [PATCH 021/892] Fix for smoglab.pl (#7544) * smoglab.pl fix * smoglab.pl more fixes --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0ab124311e2b..60819b2a0fce 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12471,6 +12471,17 @@ INVERT ================================ +smoglab.pl + +CSS +.main-nav, +.footer, +.module-title .main-title { + background-image: none !important; +} + +================================ + smzdm.com INVERT From 0cafbaddb398689eacd7c7d97265fff6ef10208d Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 6 Dec 2021 19:34:16 +0100 Subject: [PATCH 022/892] Fix for catalog.update.microsoft.com (#7547) * catalog.update.microsoft.com Nightmare CSS sheet with a lot GIF to cut. * catalog.update.microsoft.com order fix * catalog.update.microsoft.com dialog fix --- src/config/dynamic-theme-fixes.config | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 60819b2a0fce..a05eff8bacb5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2474,6 +2474,27 @@ INVERT ================================ +catalog.update.microsoft.com + +CSS +#headerBox, +#searchButtonBox, +#searchGlowBottomBox, +#searchGlowPart4aBox, +#searchGlowPart4bBox, +#searchGlowPart8aBox, +#searchGlowPart8bBox, +#searchGlowTopBox, +.ResultsHeaderTD, +.dialogBody, +.mainBody, +.mainBodyHome, +.tabInactive { + background-image: none !important; +} + +================================ + cbpp.org INVERT From 2f1e4eabf3d49faf98ae0ab2b52257bb00e7a01a Mon Sep 17 00:00:00 2001 From: Samuel Gfeller <31797204+samuelgfeller@users.noreply.github.com> Date: Mon, 6 Dec 2021 19:35:09 +0100 Subject: [PATCH 023/892] Fix for atlassian.net (#7546) - Add new selector. --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a05eff8bacb5..f5dbbcd16a1f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1419,7 +1419,7 @@ img[src*="https://github.githubassets.com/favicon.ico"].smart-link-icon img[src^="https://latexmath.bolo-app.com/render/"] CSS -span.code { +span.code, code.code { background-color: rgba(240,246,252,0.15) !important; } .ghx-parent-group, From 76816f09c2381379c01fa0376e055f9cbc7da5c2 Mon Sep 17 00:00:00 2001 From: nyuszika7h Date: Mon, 6 Dec 2021 19:36:00 +0100 Subject: [PATCH 024/892] Fix for endoflife.date (#7549) - Fix readability. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index f5dbbcd16a1f..be8af71337f2 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4729,6 +4729,15 @@ body { ================================ +endoflife.date + +CSS +.bg-green-000, .bg-yellow-200, .bg-red-000 { + color: var(--darkreader-neutral-text) !important; +} + +================================ + endomondo.com INVERT From 3eaa6bed8a85d812e118bb566993b78d1d6581d6 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Mon, 6 Dec 2021 10:36:29 -0800 Subject: [PATCH 025/892] Fix for dropbox.com (#7550) Invert logos on signin page and logged in area. --- src/config/dynamic-theme-fixes.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index be8af71337f2..4866637a3206 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4402,10 +4402,12 @@ INVERT .restorations-education__df-help__image .search__view--empty img .plan-status-section__icon img +.dropbox-logo__type IGNORE INLINE STYLE .home__suggest_image path .selection-preview-pane__icon path +.dig-WordmarkLogo path ================================ From 81f62ec8d6abfab98bc351f2274f448187d42e39 Mon Sep 17 00:00:00 2001 From: nyuszika7h Date: Mon, 6 Dec 2021 19:37:21 +0100 Subject: [PATCH 026/892] Fix for shoppy.gg (#7552) --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4866637a3206..eef6ca1b2aee 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12331,6 +12331,13 @@ INVERT ================================ +shoppy.gg + +INVERT +.footer-profile__logo + +================================ + shorthistory.org INVERT From 89ef7d935d9ed7db27d48b16b25027ef328ce00a Mon Sep 17 00:00:00 2001 From: nyuszika7h Date: Mon, 6 Dec 2021 19:37:58 +0100 Subject: [PATCH 027/892] Fix for shatteredpixel.com (#7551) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 2285ebe4e291..dfd85283015b 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -748,6 +748,7 @@ securegroup.com seoringslerbhfa.club serebii.net settings.gg +shatteredpixel.com sheet.host sherlock-project.github.io showtimeanytime.com From a0f06c10e59e1099a93d2f55d47ff2d001736ec1 Mon Sep 17 00:00:00 2001 From: Pat Nafarrete Date: Mon, 6 Dec 2021 18:40:35 +0000 Subject: [PATCH 028/892] Fix for nytimes.com (#7554) --- src/config/dynamic-theme-fixes.config | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index eef6ca1b2aee..ac66e062e3a7 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10205,7 +10205,11 @@ INVERT nytimes.com INVERT +div#live-country-map.live-country-map-embed +div#live-us-map.live-us-map-embed +g > text .svelte-1v1dl99 +.vmap-zoom-buttons #xwd-board CSS From 894e025301eb7523238d18ae6e7ce9ea2a0c3f03 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 6 Dec 2021 19:44:38 +0100 Subject: [PATCH 029/892] Fix for gravatar.com (#7557) - Fix dashboard. --- src/config/dynamic-theme-fixes.config | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ac66e062e3a7..d4aec2374c1f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6552,6 +6552,19 @@ td > strong ================================ +gravatar.com + +INVERT +a.g-home +.g-user-menu > svg + +CSS +body { + background-image: none !important; +} + +================================ + greatergood.com INVERT From b19f302eb71c42cd463f464e427e4cee5243e5a3 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 6 Dec 2021 20:07:22 +0100 Subject: [PATCH 030/892] Fix for youtube.com (#7558) - Fixes issue with youtube enhancer addon --- src/config/dynamic-theme-fixes.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d4aec2374c1f..e594e9d229f4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16172,6 +16172,7 @@ youtube.com INVERT #tube-mount .b img +#ytd-player + .efyt-control-bar > button CSS html[hide-scrollbar] ::-webkit-scrollbar { @@ -16469,6 +16470,7 @@ a.yt-simple-endpoint.yt-formatted-string:hover { IGNORE INLINE STYLE yt-live-chat-ticker-paid-message-item-renderer * +#ytd-player + .efyt-control-bar > button path ================================ From b5c9cd1e114736dacbd6a5ba444d1d2ed7c65745 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Mon, 6 Dec 2021 20:12:25 +0000 Subject: [PATCH 031/892] 4.9.43 --- package-lock.json | 2 +- package.json | 2 +- src/manifest.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 659e9accc822..b39f2c20e810 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "darkreader", - "version": "4.9.42", + "version": "4.9.43", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index f834947298c8..20f92bb5c9ae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "darkreader", - "version": "4.9.42", + "version": "4.9.43", "description": "Dark mode for every website", "scripts": { "api": "node tasks/build.js --api", diff --git a/src/manifest.json b/src/manifest.json index ac49cedabf56..0f9cf41286e3 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Dark Reader", - "version": "4.9.42", + "version": "4.9.43", "author": "Alexander Shutau", "description": "__MSG_extension_description__", "default_locale": "en", From 48a65e29b7c04cb603cb0d79fdcf2bf2222d98ac Mon Sep 17 00:00:00 2001 From: FadeMind Date: Tue, 7 Dec 2021 18:43:20 +0100 Subject: [PATCH 032/892] Fix for konkret24.tvn24.pl (#7559) --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e594e9d229f4..89a59d3f4483 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7927,6 +7927,16 @@ INVERT ================================ +konkret24.tvn24.pl + +INVERT +.header-left-corner__logo +.menu-button__bars +.report-toggle-button__icon +.search-panel-toggle-button__icon + +================================ + kraken.com CSS From 6015283b5ccd4ac3186d53a27a90f97097231827 Mon Sep 17 00:00:00 2001 From: fishstik Date: Tue, 7 Dec 2021 12:44:21 -0500 Subject: [PATCH 033/892] Fix for mail.protonmail.com (#7562) --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 89a59d3f4483..47ce93eca958 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8704,7 +8704,7 @@ select.field { color: var(--darkreader-neutral-text) !important; } .label-stack-item { - background-color: var(--color,currentColor) !important; + background: var(--background) !important; } .items-column-list-inner { border: solid var(--bordercolor-input) !important; From 746bbb8f6b9fa6b4d91b6230644bc824a50ea493 Mon Sep 17 00:00:00 2001 From: KornFlaks Date: Tue, 7 Dec 2021 12:45:10 -0500 Subject: [PATCH 034/892] Fix for overleaf.com (#7563) --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 47ce93eca958..fc47be7e53e3 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10679,6 +10679,7 @@ overleaf.com INVERT .pdf-viewer +.mwe-math-element ================================ From 54b70ba5122cf2e83726d3e4f1be9d9442adcb6b Mon Sep 17 00:00:00 2001 From: FadeMind Date: Tue, 7 Dec 2021 19:01:10 +0100 Subject: [PATCH 035/892] Fix for tvn24.pl (#7566) --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index fc47be7e53e3..a394cb066942 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14242,6 +14242,14 @@ IGNORE IMAGE ANALYSIS ================================ +tvn24.pl + +INVERT +.header-menu__more-button +.hamburger-icon + +================================ + tvrain.ru INVERT From 1261a378d661c7d762f40d7aface602719a3aa80 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Tue, 7 Dec 2021 19:21:20 +0100 Subject: [PATCH 036/892] Fix for onet.pl (#7568) - Fix share icon. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a394cb066942..9464ad14c0ce 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10448,21 +10448,23 @@ onet.pl plejada.pl INVERT -.websiteLogo -.serviceIcon -a.serviceLogo > img -.sheet -.logoImage +[class*="WeatherDay_tempIcon"] +._3ZySwSLi_pur0unnAQO2No +.forecast img +.icon-shareIcon svg .locationName svg +.logoImage .logoImageRight +.serviceIcon +.sheet .weatherBox .iconNow -.forecast img .weatherIcon -ul.contentList img.icon -._3ZySwSLi_pur0unnAQO2No -.WeatherDay_tempIcon__3Uzdm -img[alt="Plejada.pl"] +.websiteLogo +a.serviceLogo img img[alt="O!Konto"] +img[alt="Plejada.pl"] +svg[class="menuIconClose"] +ul.contentList img.icon CSS .mainBoxBgHolder { From 40c1d4b19c194abb1fa5eef89b17bc7d73ed6440 Mon Sep 17 00:00:00 2001 From: Cl00e9ment Date: Tue, 7 Dec 2021 20:38:52 +0100 Subject: [PATCH 037/892] Added dark site (#7573) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index dfd85283015b..5c1c8636da83 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -708,6 +708,7 @@ residentevil.net restream4me.com resurrectionremix.com retromusic.app +returnyoutubedislike.com reveddit.com revolt.chat ripped.guide From a60cb3e64dcb4aabc422678dc92d09bdb46996bd Mon Sep 17 00:00:00 2001 From: FadeMind Date: Tue, 7 Dec 2021 20:43:13 +0100 Subject: [PATCH 038/892] Fix for totylkoteoria.pl (#7576) --- src/config/dynamic-theme-fixes.config | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9464ad14c0ce..29ddc631133e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14031,6 +14031,19 @@ img[src*="guidelines.svg"] ================================ +totylkoteoria.pl + +INVERT +.site-branding +.header__socials + +CSS +.hero { + background-image: none !important; +} + +================================ + track.toggl.com CSS From fec2521bfe816e17ccb16249eb5b8d9c05450c59 Mon Sep 17 00:00:00 2001 From: Colten Lumley Date: Tue, 7 Dec 2021 15:17:45 -0700 Subject: [PATCH 039/892] Fix for wanikani.com (#7565) - Fix for answering questions. Co-authored-by: Colten Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 29ddc631133e..799fa45f83e6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14845,6 +14845,16 @@ IGNORE INLINE STYLE ================================ +wanikani.com + +CSS +#question-type.meaning { + color: var(--darkreader-neutral-color) !important; + background-image: linear-gradient(rgb(98, 98, 98), rgb(41, 44, 46)) !important; +} + +================================ + warframe.com CSS From 93d6f4877d6051eb5880e0e1f9e253623b955b6e Mon Sep 17 00:00:00 2001 From: Elaborendum <71190696+Elaborendum@users.noreply.github.com> Date: Wed, 8 Dec 2021 11:31:36 -0500 Subject: [PATCH 040/892] Add dark sites (#7581) * Update dark-sites.config * Update dark-sites.config --- src/config/dark-sites.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 5c1c8636da83..bfd02796e7e3 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -324,6 +324,7 @@ forum.xda-developers.com forumplayer.dev forums.launchbox-app.com fox.com +fpn.firefox.com frankerfacez.com/$ freespeechextremist.com frozensand.com @@ -776,6 +777,7 @@ slither.io snazzah.com spacebattles.com spacestationgaming.com +speedrun.com speedtest.net sportsurge.net spy-cards.lubar.me From 1233bce96acd1096d1c3e12faad71547dedef011 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Wed, 8 Dec 2021 16:38:07 +0000 Subject: [PATCH 041/892] Fix for raspberrypi.com (#7578) - Fix text color on documentation page. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 799fa45f83e6..9a55c5d7488e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11492,6 +11492,15 @@ td[style^="background:"] ================================ +raspberrypi.com + +CSS +div.paragraph, td.content { + color: var(--darkreader-neutral-text) !important; +} + +================================ + raspberrypi.org IGNORE IMAGE ANALYSIS From e60fe562f7f717ed307a8c14f97a1d691a65426f Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 8 Dec 2021 17:47:26 +0100 Subject: [PATCH 042/892] Fix for stackoverflow.com (#7585) - Don't invert logo. --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9a55c5d7488e..0299e1ef3765 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -64,7 +64,7 @@ stackoverflow.com superuser.com INVERT -._glyph +._glyph:not(.top-bar .-logo ._glyph) .favicon-mathoverflow .favicon-mathoverflowmeta .favicon-stackoverflowmeta From 4fbe3fa43d0529c31318f3229b5e00642baa603a Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 8 Dec 2021 17:48:23 +0100 Subject: [PATCH 043/892] Fix for stackoverflow.com (#7586) - Resolves #7584 --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0299e1ef3765..0ace910c4990 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -106,6 +106,9 @@ body { #newuser-box { background-color: ${#FFF8DC} !important; } +.topbar .icon-site-switcher-bubble { + background-repeat: no-repeat !important; +} IGNORE INLINE STYLE .chess-replayer-board td From c045e584a6f84f0a4cc1165e3b78b7b3cd9fad1f Mon Sep 17 00:00:00 2001 From: FadeMind Date: Wed, 8 Dec 2021 18:36:22 +0100 Subject: [PATCH 044/892] Fix for dell.com (#7560) - Fix Icons. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0ace910c4990..e4a134ea7405 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3606,6 +3606,13 @@ CSS ================================ +dell.com + +INVERT +.hpg-cat-item-wrap svg + +================================ + delphipraxis.net CSS From 486d0458431e75be570b8609f6507d814b59c327 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 8 Dec 2021 18:37:37 +0100 Subject: [PATCH 045/892] Disable chrome.storage on Firefox for background (#7587) - Whatever we are doing, it's either Firefox that is having a bug or us doing something wrong - Chromium just works with this code. Disabling it for now is the best. - Resolves #7582 --- src/background/devtools.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/background/devtools.ts b/src/background/devtools.ts index 65d9df190a0f..babeb2bb8870 100644 --- a/src/background/devtools.ts +++ b/src/background/devtools.ts @@ -3,6 +3,7 @@ import {parseInversionFixes, formatInversionFixes} from '../generators/css-filte import {parseDynamicThemeFixes, formatDynamicThemeFixes} from '../generators/dynamic-theme'; import {parseStaticThemes, formatStaticThemes} from '../generators/static-theme'; import type ConfigManager from './config-manager'; +import {isFirefox} from '../utils/platform'; // TODO(bershanskiy): Add support for reads/writes of multiple keys at once for performance. // TODO(bershanskiy): Popup UI heeds only hasCustom*Fixes() and nothing else. Consider storing that data separatelly. @@ -209,7 +210,9 @@ export default class DevTools { private store: DevToolsStorage; constructor(config: ConfigManager, onChange: () => void) { - if (typeof chrome.storage.local !== 'undefined' && chrome.storage.local !== null) { + // Firefox don't seem to like using storage.local to store big data on the background-extension. + // Disabling it for now and defaulting back to localStorage. + if (typeof chrome.storage.local !== 'undefined' && chrome.storage.local !== null && !isFirefox) { this.store = new PersistentStorageWrapper(); } else if (typeof localStorage !== 'undefined' && localStorage != null) { this.store = new LocalStorageWrapper(); From a543e84273c775d7572ce19c883afed3136123a3 Mon Sep 17 00:00:00 2001 From: KornFlaks Date: Fri, 10 Dec 2021 13:58:00 -0500 Subject: [PATCH 046/892] Fix for webtoons.com (#7589) - Prevent inversion of title's text. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e4a134ea7405..21c729c1bb16 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15013,6 +15013,15 @@ CSS ================================ +webtoons.com + +CSS +.info { + color: rgb(0,0,0) !important; +} + +================================ + wego.here.com INVERT From 4fa05b0da192294cae8ef242cfefc3109010d02c Mon Sep 17 00:00:00 2001 From: jeansibelius <47578383+jeansibelius@users.noreply.github.com> Date: Sat, 11 Dec 2021 03:59:50 +0900 Subject: [PATCH 047/892] Fix for fullstackopen.com (#7564) - Fix code highlightings. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 21c729c1bb16..950bb444d45c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5734,6 +5734,15 @@ img[alt="[NLUUG]"] ================================ +fullstackopen.com + +CSS +.gatsby-highlight-code-line { + background-color: ${hsla(0,0%,48.2%,.3)} !important; +} + +================================ + funpay.ru INVERT From c3518399046dc6ca3a1aeafaa63d071bae06ac3e Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Fri, 10 Dec 2021 12:00:41 -0700 Subject: [PATCH 048/892] Fix for cnn.com (#7591) - Fix business section logo. --- src/config/dynamic-theme-fixes.config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 950bb444d45c..e15689741ff1 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2843,13 +2843,14 @@ CSS cnn.com INVERT -[data-test="section-link"] > svg +[data-test="section-link"] > svg:not(.business-logo-icon) img.metadata-header__logo IGNORE INLINE STYLE svg.cnn-badge-icon svg.cnn-badge-icon > rect svg.politics-logo-icon +svg.business-logo-icon ================================ From 4b29ea7d19851b23a0e626b7a5c5167a757318da Mon Sep 17 00:00:00 2001 From: FadeMind Date: Fri, 10 Dec 2021 20:03:32 +0100 Subject: [PATCH 049/892] Fix for natemat.pl (#7592) - Fix player's icon. --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e15689741ff1..50aa881bf80a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9898,6 +9898,7 @@ INVERT img[src*="/static/media/"] img[alt="close icon"] a[href="#comments"] +.st1 CSS img[class*="Footer--Logo"] { From 91ade5410ce6a61c3fbb57846e7a165520a067fa Mon Sep 17 00:00:00 2001 From: FadeMind Date: Fri, 10 Dec 2021 20:09:42 +0100 Subject: [PATCH 050/892] Fix for zorin.com (#7595) - Fix background. - Fix logo. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 50aa881bf80a..d4dba88b94c7 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16641,6 +16641,15 @@ INVERT ================================ +zorin.com + +INVERT +.logotype +.social +img[alt="Windows to Zorin OS"] + +================================ + zybooks.com CSS From 4e9c4028bf82cf360b227ea0f5626e5ca63fb288 Mon Sep 17 00:00:00 2001 From: VasilisKos Date: Fri, 10 Dec 2021 21:12:51 +0200 Subject: [PATCH 051/892] Improve Greek translation (#7596) --- src/_locales/el.config | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/_locales/el.config b/src/_locales/el.config index ce2d1d2afdeb..48649d781f6d 100644 --- a/src/_locales/el.config +++ b/src/_locales/el.config @@ -1,8 +1,8 @@ @extension_description -Σκούρα εμφάνιση για όλες τις ιστοσελίδες. Φροντήστε τα μάτια σας κάνοντας χρήση σκούρας εμφάνισης στο καθημερινό σας σερφάρισμα. +Σκούρα εμφάνιση για όλες τις ιστοσελίδες. Φροντίστε τα μάτια σας κάνοντας χρήση σκούρας εμφάνισης στο καθημερινό σας σερφάρισμα. @loading_please_wait -Γίνεται φόρτωση, παρακαλώ περιμένετε +Φόρτωση, παρακαλώ περιμένετε #==== Top section ==== @@ -14,14 +14,14 @@ On Off @toggle_current_site -αλλαγή τρέχουσας σελίδας +Αλλαγή τρέχουσας σελίδας @setup_hotkey_toggle_site Ρυθμίσεις τρέχουσας σελίδας αλλαγή hotkey @toggle_extension -αλλαγή πρόσθετου +Εναλλαγή πρόσθετου @setup_hotkey_toggle_extension Ρυθμίσεις πρόσθετου @@ -47,14 +47,14 @@ Off προστατεύεται @page_in_dark_list -Η σελίδα αυτή είναι -παγκόσμια Σκούρα Λίστα +Περιλαμβάνεται στην +καθολική Σκούρα Λίστα @system_dark_mode Χρησιμοποιήστε το συνδυασμό χρωμάτων του συστήματος @system_dark_mode_description -Ενεργοποιείται όταν το σύστημα σκοτεινή λειτουργία είναι ενεργοποιημένη +Ενεργοποιείται στη σκοτεινή λειτουργία συστήματος #==== Filter ==== @@ -87,7 +87,7 @@ Sepia Μόνο για @only_for_description -Ενεργοποίηση ρυθμίσεων μόνο για τη τρέχουσα σελίδα +Ενεργοποίηση μόνο στην τρέχουσα σελίδα #==== Site list ==== @@ -120,8 +120,8 @@ Sepia Σκιά γραμμάτων @try_experimental_theme_engines -Δοκιμάστε την **πειραματική** μηχανή θεμάτων: -**Φίλτρο+** διατήρηση αποχρώσεων κάνοντας χρήση της GPU +Δοκιμάστε τις **πειραματικές** μηχανές θεμάτων: +**Φίλτρο+** διατήρηση κορεσμού χρωμάτων **Στατικό θέμα** χρήση απλού, γρήγορου θέματος **Δυναμικό θέμα** ανάλυση χρωμάτων και εικόνων @@ -138,7 +138,7 @@ Sepia Δυναμικό @theme_generation_mode -Λειτουργία θέματος +Λειτουργία δημιουργίας θέματος @custom_browser_theme_on Προσαρμοσμένη @@ -147,7 +147,7 @@ Sepia Προεπιλογή @change_browser_theme -Αλλαγή θέματος προγραμματος περιήγησης +Αλλαγή θέματος προγράμματος περιήγησης #==== Footer ==== @@ -174,10 +174,10 @@ Sepia #==== Store listing ==== @store_listing -Αυτό το θεαματικό πρόσθετο, μετατρέπει ζωντανά τις ιστοσελίδες που επισκέπτεστε ως σκούρες. Ο Dark Reader αντιστρέφει τα χρώματα δημιουργώντας έντονη αντίθεση για ευκολότερη ανάγνωση κατά τις βραδυνές ώρες. +Αυτό το θεαματικό πρόσθετο, μετατρέπει ζωντανά τις ιστοσελίδες που επισκέπτεστε σε σκούρες. Το Dark Reader αντιστρέφει τα χρώματα δημιουργώντας έντονη αντίθεση για ευκολότερη ανάγνωση κατά τις βραδυνές ώρες. Μπορείτε να προσαρμόσετε φωτεινότητα, αντίθεση, φίλτρο sepia, σκούρα εμφάνιση και λίστα ιστσελίδων στις οποίες το πρόσθετο δεν θα παρεμβαίνει. Το Dark Reader δεν εμφανίζει διαφιμήσεις ούτε κάνει οποιαδήποτε αποστολή στατιστικών/πληροφορίών του χρήστη. Είναι 100% ανοικτού κώδικά https://github.com/darkreader/darkreader -Πριν εγκαταστήσετε το πρόσθετο αυτό θα πρέπει να αφαιρέσεται παρόμοια πρόσθετα. Καλό σερφάρισμα! +Πριν εγκαταστήσετε το πρόσθετο αυτό θα πρέπει να αφαιρέσετε παρόμοια πρόσθετα. Καλό σερφάρισμα! From 256cce8fe1e3bae4b7297b0dbee66432b30bb5b3 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Fri, 10 Dec 2021 20:15:36 +0100 Subject: [PATCH 052/892] Fix for truestory.pl (#7597) - Fix header logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d4dba88b94c7..8d2f4702d81e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14246,6 +14246,13 @@ img[alt*="Trojmiasto.pl"] ================================ +truestory.pl + +INVERT +.tdb-logo-img + +================================ + truity.com INVERT From df939e144adda1d3e0dd02f052d1b923a68745f8 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Fri, 10 Dec 2021 20:16:52 +0100 Subject: [PATCH 053/892] Fix for polskiemarki.info (#7598) - Fix images. --- src/config/dynamic-theme-fixes.config | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8d2f4702d81e..4925c843d760 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11126,6 +11126,19 @@ INVERT ================================ +polskiemarki.info + +INVERT +a[id="powrot"] > img +img[src*="logo_fakro"] + +CSS +#katalog .container { + background-image: none !important; +} + +================================ + poradnikzdrowie.pl INVERT From f39cd515e67cf9374fd403ff97acbe5620cd2c01 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 10 Dec 2021 20:26:39 +0100 Subject: [PATCH 054/892] Fix for pipewire.com (#7609) - Resolves #7599 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4925c843d760..d04072b893f4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10971,6 +10971,15 @@ CSS ================================ +pipewire.com + +CSS +body, img, video, iframe { + filter: none !important; +} + +================================ + pixiv.net CSS From aa16de7d349489b265743ca1cb7d606713117fb6 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 10 Dec 2021 20:28:04 +0100 Subject: [PATCH 055/892] Fix for usps.com (#7610) - Resolves #7600 --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d04072b893f4..968b4f40bfd8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14572,6 +14572,7 @@ img[src$="hamburger.svg"] img[src$="search.svg"] ul.nav-list > li.menuheader::after ul.nav-list > li.qt-nav > div > ul > li > a > img +#usps-logo ================================ From 17ff4613b543d01aa42f0fc18099cdd266fa698d Mon Sep 17 00:00:00 2001 From: Andrei Stepanov Date: Fri, 10 Dec 2021 23:31:45 +0400 Subject: [PATCH 056/892] Fix for vk.com (#7603) - Fix videos. --- src/config/inversion-fixes.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/inversion-fixes.config b/src/config/inversion-fixes.config index 852ec39f2843..bbe560c76699 100644 --- a/src/config/inversion-fixes.config +++ b/src/config/inversion-fixes.config @@ -2444,7 +2444,8 @@ NO INVERT vk.com INVERT -#video_player +.videoplayer +.videoplayer_media .mv_playlist .page_album_title .article_snippet__fade @@ -2485,7 +2486,6 @@ INVERT .emoji_smiles_row NO INVERT -#video_player * .mv_playlist * #z_photoview img .box_grey .box_title From 39d7f69acb2b74d7ee444c9fc0d4e47fbb6a4254 Mon Sep 17 00:00:00 2001 From: Andrei Stepanov Date: Fri, 10 Dec 2021 23:32:53 +0400 Subject: [PATCH 057/892] Fix for vk.com (#7604) --- src/config/inversion-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/inversion-fixes.config b/src/config/inversion-fixes.config index bbe560c76699..1e85fb729c4d 100644 --- a/src/config/inversion-fixes.config +++ b/src/config/inversion-fixes.config @@ -2484,6 +2484,7 @@ INVERT .audio_row__cover_back .poster__text .emoji_smiles_row +.Reaction NO INVERT .mv_playlist * From ccb9a548ae78c71321d0afa582cbbe558b10d706 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Fri, 10 Dec 2021 20:34:31 +0100 Subject: [PATCH 058/892] Fix for eblocker.org (#7606) --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 968b4f40bfd8..a5d9007152bc 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4570,6 +4570,14 @@ INVERT ================================ +eblocker.org + +INVERT +.site-logo-img +figure[class="aligncenter size-large is-resized"] + +================================ + ebok.pgnig.pl INVERT From 43f06435496e45d89a22f1f5c713000c26ee8841 Mon Sep 17 00:00:00 2001 From: Emmet_v15 <36600912+Emmetv15@users.noreply.github.com> Date: Fri, 10 Dec 2021 19:34:47 +0000 Subject: [PATCH 059/892] Added dark site (#7605) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index bfd02796e7e3..cdd6415fcf7b 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -885,6 +885,7 @@ undertale.com userdiag.com ussr.obys.agency uwatchfree.ax +v15.studio v3.wttr.in v3rmillion.net v7player.wostreaming.net From 011f099c22e8cc3c1cbf32f92eb84f808eb2203f Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 10 Dec 2021 20:42:37 +0100 Subject: [PATCH 060/892] Add null-check for `filter` (#7611) - Resolves #7608 --- src/inject/dynamic-theme/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/inject/dynamic-theme/index.ts b/src/inject/dynamic-theme/index.ts index d9112b1288ab..8354b58e3552 100644 --- a/src/inject/dynamic-theme/index.ts +++ b/src/inject/dynamic-theme/index.ts @@ -133,7 +133,7 @@ function createStaticStyleOverrides() { document.head.insertBefore(rootVarsStyle, variableStyle.nextSibling); const proxyScript = createOrUpdateScript('darkreader--proxy'); - proxyScript.append(`(${injectProxy})(!${fixes.disableStyleSheetsProxy})`); + proxyScript.append(`(${injectProxy})(!${fixes && fixes.disableStyleSheetsProxy})`); document.head.insertBefore(proxyScript, rootVarsStyle.nextSibling); proxyScript.remove(); } From b4abe2df525c17e9dd8995f873a7e97170a9fece Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 10 Dec 2021 20:53:51 +0100 Subject: [PATCH 061/892] Fix for tvtropes.org (#7612) - Resolves #7607 --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a5d9007152bc..8262f846fd91 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14339,6 +14339,14 @@ INVERT ================================ +tvtropes.org + +IGNORE IMAGE ANALYSIS +body.sugarWiki #header-spacer-left::after +body.sugarWiki #header-spacer-right::after + +================================ + tweakers.net INVERT From 18a1ec22d999150783f8d8a085f8210e9076bde9 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 10 Dec 2021 22:19:12 +0100 Subject: [PATCH 062/892] pipewire.com -> pipewire.org (#7614) Little mistake :) --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8262f846fd91..78d5c49c4abc 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10979,7 +10979,7 @@ CSS ================================ -pipewire.com +pipewire.org CSS body, img, video, iframe { From 07862bd121ff06af73c17bd0948f59983d732d2d Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Fri, 10 Dec 2021 15:19:23 -0600 Subject: [PATCH 063/892] Added dark site (#7613) --- src/config/dark-sites.config | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index cdd6415fcf7b..8c51ed32efa4 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -224,6 +224,7 @@ di.fm diablo3.com diep.io dietpi.com +digi77.com digital.fashion disasm.pro disboard.org @@ -334,6 +335,7 @@ gamebanana.com gamejolt.com gameloop.fun garamlee500.github.io +garudalinux.org gatsbyjs.org geekabit.nl geektyper.com @@ -465,6 +467,7 @@ jsitor.com kadantiscam.netlify.app kaoskrew.org keezersquest.nl +kfocus.org killabee-gaming.com killtheradio.net kimbatt.github.io/js-Z @@ -614,6 +617,7 @@ paimon.moe paper-io.com parahumans.wordpress.com paranoid.email +parrotsec.org passthepopcorn.me pathof.info pathofexile.com From 5207afa6f6c3d1afa66929ff4736fdee1e0b3aa3 Mon Sep 17 00:00:00 2001 From: Elaborendum <71190696+Elaborendum@users.noreply.github.com> Date: Mon, 13 Dec 2021 07:43:10 -0500 Subject: [PATCH 064/892] Multiple fixes (#7590) --- src/config/dynamic-theme-fixes.config | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 78d5c49c4abc..568ad2b7ec93 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -433,6 +433,11 @@ INVERT .ms-Grid-col.ms-sm4.ms-hiddenMdDown.pullout-textwrap .ms-Grid-col.ms-sm2 img +CSS +img[class="ShowMoreLoading"] { + filter: invert(93.7%) hue-rotate(180deg) contrast(90.6%) !important +} + ================================ account.orchid.com @@ -506,6 +511,13 @@ CSS ================================ +accounts.zoho.com + +INVERT +div#product_img.tfa_totp_mode + +================================ + acer.com INVERT @@ -2477,6 +2489,15 @@ INVERT ================================ +castos.com/player/ + +INVERT +.playback__controls +button[class="player-btn__speed"][aria-label="Playback Speed"] +.play-pause-controls + +================================ + catalog.update.microsoft.com CSS @@ -6948,6 +6969,14 @@ CSS ================================ +hypothes.is + +INVERT +a[href="https://hypothes.is"] > svg[aria-labelledby="logo-title"] > g > path[fill-rule="nonzero"] +img[class="fusion-standard-logo"] + +================================ + icloud.com INVERT @@ -7929,6 +7958,14 @@ svg[class$="logo-image"] ================================ +knowyourmeme.com + +INVERT +.enlargeNavigation > #enlargeNav-prev +.enlargeNavigation > #enlargeNav-next + +================================ + ko-fi.com INVERT @@ -10706,6 +10743,13 @@ INVERT ================================ +outline.com + +INVERT +img[src="https://outline.com/images/wordmark.svg"] + +================================ + overleaf.com INVERT @@ -11658,6 +11702,14 @@ header > div > div + div button[aria-label] * { ================================ +reddit.zendesk.com + +INVERT +header > div.logo > a > img +img.hero-inner-image + +================================ + redditstatus.com INVERT From 9d7d46676d411105b359f3932a43889fa347bcc3 Mon Sep 17 00:00:00 2001 From: Jon Banafato Date: Mon, 13 Dec 2021 07:43:34 -0500 Subject: [PATCH 065/892] Fix for nytimes.com (#7615) - Fix crossword cells. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 568ad2b7ec93..ff6840ff2de7 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10321,6 +10321,9 @@ a[data-testid] > svg { #xwd-board rect[class^="Cell-block--"] { fill: ${black} !important; } +#xwd-board text[class^="Cell-hidden--"] { + color: ${black} !important; +} ================================ From f99e645b8ba64ee4d8d02c81878090039747bc1a Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 13 Dec 2021 13:52:48 +0100 Subject: [PATCH 066/892] Fix for profiler.firefox.com (#7629) - Resolves #7616 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ff6840ff2de7..e1b8b0472e57 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11308,6 +11308,13 @@ INVERT ================================ +profiler.firefox.com + +INVERT +.chartCanvas + +================================ + projectstream.it CSS From 068faee1bb23698ca0b537636cd217cbc6913535 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 13 Dec 2021 14:07:58 +0100 Subject: [PATCH 067/892] Fix for sqlitebrowser.org/stats (#7630) - Resolves #7594 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e1b8b0472e57..8f5f4c7e4e2e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12934,6 +12934,13 @@ INVERT ================================ +sqlitebrowser.org/stats + +IGNORE INLINE STYLE +.plot-container.plotly * + +================================ + ssllabs.com INVERT From f67bbdc430bcf6463e809d664497b8afdec971cf Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 13 Dec 2021 14:09:08 +0100 Subject: [PATCH 068/892] Fix for grc.com (#7618) - Fix fancy GIF. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8f5f4c7e4e2e..45db3c3a655c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6614,6 +6614,13 @@ body { ================================ +grc.com + +INVERT +img[src*="gif"] + +================================ + greatergood.com INVERT From 1d293de18b0ebc99268d16bb699ae3bdbe97ad72 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Mon, 13 Dec 2021 06:09:45 -0700 Subject: [PATCH 069/892] Fix for cloudflare.com (#7624) Invert social links and fixes issue #7620 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 45db3c3a655c..393230d5629a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2837,6 +2837,13 @@ devsite-footer-utility { ================================ +cloudflare.com + +IGNORE INLINE STYLE +.footer-bottom-row-margin > div > a > svg > path + +================================ + cloudhostnews.com INVERT From 583524cdd7c0a1e897f400f5041c9d0f242d89f3 Mon Sep 17 00:00:00 2001 From: Pat Nafarrete Date: Mon, 13 Dec 2021 13:10:14 +0000 Subject: [PATCH 070/892] Fix for zorin.com (#7619) --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 393230d5629a..c91e09101963 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16775,6 +16775,7 @@ zorin.com INVERT .logotype .social +img[alt="GOG logo"] img[alt="Windows to Zorin OS"] ================================ From 372aa6aacbb483ff62ada7fd78d82cd4977c5cc7 Mon Sep 17 00:00:00 2001 From: Maxwell Ayers <95247444+maxwellayers@users.noreply.github.com> Date: Mon, 13 Dec 2021 14:14:24 +0100 Subject: [PATCH 071/892] Add dark site (#7621) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 8c51ed32efa4..8b9652878125 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -136,6 +136,7 @@ bungie.net byte.co c-saccoccio.fr cadence.moe +caesarshiba.com caniuse.com captaindisillusion.com caracal.club From 4c1199d7fd2152b4e2d9bd64d53f76c3a4254dd9 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 13 Dec 2021 14:15:29 +0100 Subject: [PATCH 072/892] Fix for g1.com.br (#7631) - https://github.com/darkreader/darkreader/pull/7514#issuecomment-990095797 --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c91e09101963..a7425d1b85f7 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5814,6 +5814,7 @@ g1.globo.com CSS .multicontent { background-color: var(--darkreader-neutral-background) !important; + color: var(--darkeader-neutral-text) !important; } ================================ From e531480f5f958933d9cb50f748457b98e7d5b13b Mon Sep 17 00:00:00 2001 From: nyuszika7h Date: Mon, 13 Dec 2021 14:23:19 +0100 Subject: [PATCH 073/892] Fix for decisionproblem.com/paperclips (#7626) --- src/config/dynamic-theme-fixes.config | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a7425d1b85f7..f17801904458 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3603,6 +3603,21 @@ img[src$="logo.png"] ================================ +decisionproblem.com + +INVERT +.qChip + +CSS +#giftShopDiv { + color: ${white} !important; +} +.projectButton:disabled { + color: ${gray} !important; +} + +================================ + deepl.com INVERT From 7afd9d8040189fa5ad12be76e702bdc0568e107a Mon Sep 17 00:00:00 2001 From: sZnvARmNaq <95992900+sZnvARmNaq@users.noreply.github.com> Date: Mon, 13 Dec 2021 15:23:39 +0200 Subject: [PATCH 074/892] Fix for scrip.google.com (#7623) - Fix debugging button. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index f17801904458..c3c355d3f4c7 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12305,6 +12305,9 @@ INVERT .icon .monaco-editor .cursors-layer > .cursor +IGNORE INLINE STYLE +mask > * + ================================ scroll.com From 60be15efe2a5c58680371f17844f0cc0f50ede19 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 13 Dec 2021 14:35:21 +0100 Subject: [PATCH 075/892] Fix for klubjagiellonski.pl (#7627) - hamburger menu - logo site header --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c3c355d3f4c7..e5d328f95415 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7980,6 +7980,14 @@ img[src$="close.svg"] ================================ +klubjagiellonski.pl + +INVERT +.logo +.site_hamb svg + +================================ + knife.media INVERT From 1c35f745b812e81390ae8a9c71e96f9c68c46095 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 13 Dec 2021 14:38:55 +0100 Subject: [PATCH 076/892] Add librewolf as Firefox browser (#7632) --- src/utils/platform.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/platform.ts b/src/utils/platform.ts index ae66747a043d..d8b0f1dea979 100644 --- a/src/utils/platform.ts +++ b/src/utils/platform.ts @@ -3,7 +3,7 @@ const platform = typeof navigator === 'undefined' ? 'some platform' : navigator. export const isChromium = userAgent.includes('chrome') || userAgent.includes('chromium'); export const isThunderbird = userAgent.includes('thunderbird'); -export const isFirefox = userAgent.includes('firefox') || isThunderbird; +export const isFirefox = userAgent.includes('firefox') || userAgent.includes('librewolf') || isThunderbird; export const isVivaldi = userAgent.includes('vivaldi'); export const isYaBrowser = userAgent.includes('yabrowser'); export const isOpera = userAgent.includes('opr') || userAgent.includes('opera'); From 7e1427cd5f34d0493a9e63f97f875793728c268c Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Tue, 14 Dec 2021 10:30:20 -0700 Subject: [PATCH 077/892] Fix for getfedora.org (#7638) Invert globe icon to fix issue #7635 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e5d328f95415..7ac9e0e7f80a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5958,6 +5958,13 @@ span[aria-label="Manage in Google Photos"][role="menuitem"] path ================================ +getfedora.org + +INVERT +img[alt="globe"] + +================================ + getmimo.com INVERT From c0618e130119a6cfd1d3576f04179d86fcb17673 Mon Sep 17 00:00:00 2001 From: abitenum <94094391+abitenum@users.noreply.github.com> Date: Tue, 14 Dec 2021 11:36:01 -0600 Subject: [PATCH 078/892] Fix for rain.thecomicseries.com (#7333) --- src/config/dynamic-theme-fixes.config | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7ac9e0e7f80a..22758f6f93ee 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11635,6 +11635,21 @@ INVERT ================================ +rain.thecomicseries.com + +CSS +body { + background-color: var(--darkreader-neutral-background) !important; + background-image: none !important; + margin: 0px !important; + padding: 8px !important; +} +#comicimage { + background-color: #ffffff !important; +} + +================================ + rapidtables.com IGNORE INLINE STYLE From e2cac73b4e493f5e2d08f8afa911e7835fe9fe7f Mon Sep 17 00:00:00 2001 From: sh224 Date: Tue, 14 Dec 2021 18:43:25 +0100 Subject: [PATCH 079/892] Fix for console-openshift-console.* (#7636) Co-authored-by: Samuel Hildebrandt --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 22758f6f93ee..e2c4a0d55940 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3163,6 +3163,15 @@ CSS ================================ +console-openshift-console.* + +CSS +.pf-c-dropdown__menu { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + console.cloud.google.com CSS From 0ee77485b01362d48bc441a97cc8b4ca0a543661 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Tue, 14 Dec 2021 18:45:19 +0100 Subject: [PATCH 080/892] Fix for wirtualnemedia.pl (#7634) - Fix icon. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e2c4a0d55940..47bc1981d432 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15656,6 +15656,13 @@ INVERT ================================ +wirtualnemedia.pl + +INVERT +img[src$="logo-black.gif"] + +================================ + wmar2news.com INVERT From 2f0890ca4430dbfd6d379c4e2c7d5e2f08e97ae7 Mon Sep 17 00:00:00 2001 From: torma616 Date: Tue, 14 Dec 2021 13:05:26 -0500 Subject: [PATCH 081/892] Fix for TVLand.com (#7640) Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 28 ++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 47bc1981d432..6d26595e532e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -128,15 +128,6 @@ div[class^='c5'] .gm-style ================================ -*.vh1.com - -CSS -.module-container { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - *.vultr.com CSS @@ -14465,6 +14456,16 @@ IGNORE IMAGE ANALYSIS ================================ +tvland.com + +CSS +.module-container, +.header-container { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + tvn24.pl INVERT @@ -14878,6 +14879,15 @@ img[alt="VG24.PL logo"] ================================ +vh1.com + +CSS +.module-container { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + vice.com INVERT From 866c3c05feba04e0f77d509fe91d9833669a75ff Mon Sep 17 00:00:00 2001 From: torma616 Date: Thu, 16 Dec 2021 07:19:19 -0500 Subject: [PATCH 082/892] Fix for paramountnetwork.com (#7641) Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 6d26595e532e..9cc13111ca02 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10889,6 +10889,15 @@ INVERT ================================ +paramountnetwork.com + +CSS +.module-container { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + park-in.gr CSS From d21e82e6940eba61b8b698683d9cc3bdb55c6611 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 16 Dec 2021 13:48:46 +0100 Subject: [PATCH 083/892] Fix for nbcphiladelphia.com (#7658) - Resolves #7642 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9cc13111ca02..76d50e4110da 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10032,6 +10032,13 @@ IGNORE IMAGE ANALYSIS ================================ +nbcphiladelphia.com + +INVERT +.site-footer__social-list-item .icon + +================================ + neonet.pl INVERT From 62b8296f657601f3938e134483a762ddb6b767eb Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Thu, 16 Dec 2021 05:05:22 -0800 Subject: [PATCH 084/892] Fix for rakuten.com (#7647) - Resolves #7646 Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 76d50e4110da..711d4b2bf6ba 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11666,6 +11666,13 @@ body { ================================ +rakuten.com + +INVERT +.chakra-image + +================================ + rapidtables.com IGNORE INLINE STYLE From 6bebde380dc342ade629c494f510d5f7204c07cc Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 16 Dec 2021 14:07:22 +0100 Subject: [PATCH 085/892] Fix for technologyreview.com (#7659) - Resolves #7645 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 711d4b2bf6ba..df3e293546cb 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13766,6 +13766,13 @@ body, ================================ +technologyreview.com + +INVERT +a[class^="headerTemplate__logo"] + +================================ + teleman.pl INVERT From ad19d12e372ec198eb1ef8629246ffbaf5c7ed32 Mon Sep 17 00:00:00 2001 From: Vedanth Padmaraman Date: Thu, 16 Dec 2021 18:39:07 +0530 Subject: [PATCH 086/892] Fix for cisce.org (#7648) - Fix navbar. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index df3e293546cb..d3909db56794 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2699,6 +2699,14 @@ INVERT ================================ +cisce.org + +INVERT +.nav-wrapper +hgroup + +================================ + citilink.ru INVERT From 1b35c0a65c0a99c11c190b4f49577ad31d4b9c99 Mon Sep 17 00:00:00 2001 From: lollilol <38194372+lollilol@users.noreply.github.com> Date: Thu, 16 Dec 2021 14:26:57 +0100 Subject: [PATCH 087/892] Add dark sites (#7654) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 8b9652878125..97f1a4073c24 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -694,6 +694,7 @@ rapidheaven.com rate.house raunaksitoula.com rawg.io +rawgiving.com razorsecure.com rbt.asia rdck.dev From 83ce0b21b26b0b95ec7dd72817e678ea1445e8d0 Mon Sep 17 00:00:00 2001 From: Isaac <72410860+isaec@users.noreply.github.com> Date: Thu, 16 Dec 2021 05:30:44 -0800 Subject: [PATCH 088/892] Fix for googleprojectzero.blogspot.com (#7655) - Fix images. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d3909db56794..160a4bd1d7ae 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6586,6 +6586,15 @@ IGNORE IMAGE ANALYSIS ================================ +googleprojectzero.blogspot.com + +CSS +.c5 a img { + background-color: white !important; +} + +================================ + goplay.anontpp.com INVERT From eb13f0feb818393c120479b5b5ac3c80434c2464 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 16 Dec 2021 14:52:15 +0100 Subject: [PATCH 089/892] Fix for niser.ac.in (#7660) - Resolves #7656 --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 160a4bd1d7ae..e8c73b9d2e72 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10202,6 +10202,17 @@ CSS ================================ +niser.ac.in + +CSS +body, +#main-content, +#page { + background-image: none !important; +} + +================================ + nnmclub.to nnm-club.me From fd8d2d5e3c16c079b4c097ac8dbedd734b7d8276 Mon Sep 17 00:00:00 2001 From: Telemain Date: Thu, 16 Dec 2021 08:52:34 -0500 Subject: [PATCH 090/892] Fix for Dicetower.com (#7657) - Remove bright background image. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e8c73b9d2e72..9242610d911c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3919,6 +3919,15 @@ INVERT ================================ +dicetower.com + +CSS +body { + background-image: none !important; +} + +================================ + dict.cc CSS From e014e386f58a89fd6abdf4a0020f69eb81fcf1ac Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 16 Dec 2021 14:55:20 +0100 Subject: [PATCH 091/892] Fix for youtube.com (#7661) - Resolves #7639 --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9242610d911c..978296849766 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16529,6 +16529,9 @@ INVERT #ytd-player + .efyt-control-bar > button CSS +::-webkit-scrollbar { + background-color: var(--darkreader-bg--yt-spec-general-background-a); +} html[hide-scrollbar] ::-webkit-scrollbar { display: none !important; } From e1dd599a2ab908d91bf1359e65c8075f8c07d08e Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 16 Dec 2021 15:00:19 +0100 Subject: [PATCH 092/892] Remove bad code from the config (#7662) --- src/config/dynamic-theme-fixes.config | 222 +++++++++++++------------- 1 file changed, 111 insertions(+), 111 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 978296849766..0f14251996cf 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -35,117 +35,6 @@ IGNORE INLINE STYLE ================================ -*.bbb.* - -CSS -div[class^='scrollableList'] { - background: none !important; - box-shadow: none !important; -} - -================================ - -*.screenconnect.com - -CSS -.OuterPanel .MainPanel .MasterPanel .MasterListContainer ul li.HasChildren > div > p { - filter: brightness(100%) !important; -} - -================================ - -*.stackexchange.com -askubuntu.com -mathoverflow.net -serverfault.com -stackapps.com -stackexchange.com -stackoverflow.com -superuser.com - -INVERT -._glyph:not(.top-bar .-logo ._glyph) -.favicon-mathoverflow -.favicon-mathoverflowmeta -.favicon-stackoverflowmeta -.h-auto[alt="Academia"] -.h-auto[alt="Anime & Manga"] -.h-auto[alt="Ask Different"] -.h-auto[alt="Aviation"] -.h-auto[alt="Code Review"] -.h-auto[alt="Electrical Engineering"] -.h-auto[alt="English Language Learners"] -.h-auto[alt="Japanese Language"] -.h-auto[alt="MathOverflow"] -.h-auto[alt="Mathematics"] -.h-auto[alt="Server Fault"] -.h-auto[alt="Skeptics"] -.h-auto[alt="Software Engineering"] -.h-auto[alt="Stack Apps"] -.h-auto[alt="Super User"] -.h-auto[alt="The Workplace"] -.h-auto[alt="Theoretical Computer Science"] -.h-auto[alt="Unix & Linux"] -.h-auto[alt="Web Applications"] -a.js-gps-track::before -img[alt="The Stack Exchange Network"] - -CSS -body { - background-image: none !important; -} -.profile-cards--graph { - background-image: repeating-linear-gradient(0deg, transparent, transparent 13px, ${#e4e6e8} -13px, ${#e4e6e8} 21px) !important; -} -.c-pointer { - color: grey; -} -.js-accepted-answer-indicator.fc-green-500 { - color: var(--green) !important; -} -#newuser-box { - background-color: ${#FFF8DC} !important; -} -.topbar .icon-site-switcher-bubble { - background-repeat: no-repeat !important; -} - -IGNORE INLINE STYLE -.chess-replayer-board td - -================================ - -*.ubereats.com - -INVERT -img[alt*='Home'] -div[class^='c5'] .gm-style -#main-content > h1 + div -#wrapper > div:nth-of-type(2) -#wrapper > div:nth-of-type(2) > header -#wrapper > div:nth-of-type(2) > footer -#wrapper > div:nth-of-type(2) > #main-content > div:first-child - -================================ - -*.vultr.com - -CSS -.svg-banner-shape { - fill: var(--darkreader-neutral-background) !important; -} - -IGNORE INLINE STYLE -.icon-ui * -.icon-user * -.icon-sm * -.svg-logo * -.svg-illustration * -.svg-product * -.svg-shape * - -================================ - 01net.com CSS @@ -1649,6 +1538,16 @@ INVERT ================================ +bbb.* + +CSS +div[class^='scrollableList'] { + background: none !important; + box-shadow: none !important; +} + +================================ + bbc.co.uk/weather bbc.com/weather @@ -12381,6 +12280,15 @@ path.blocklyFlyoutBackground { ================================ +screenconnect.com + +CSS +.OuterPanel .MainPanel .MasterPanel .MasterListContainer ul li.HasChildren > div > p { + filter: brightness(100%) !important; +} + +================================ + scribd.com INVERT @@ -13085,6 +12993,67 @@ INVERT ================================ +stackexchange.com +askubuntu.com +mathoverflow.net +serverfault.com +stackapps.com +stackexchange.com +stackoverflow.com +superuser.com + +INVERT +._glyph:not(.top-bar .-logo ._glyph) +.favicon-mathoverflow +.favicon-mathoverflowmeta +.favicon-stackoverflowmeta +.h-auto[alt="Academia"] +.h-auto[alt="Anime & Manga"] +.h-auto[alt="Ask Different"] +.h-auto[alt="Aviation"] +.h-auto[alt="Code Review"] +.h-auto[alt="Electrical Engineering"] +.h-auto[alt="English Language Learners"] +.h-auto[alt="Japanese Language"] +.h-auto[alt="MathOverflow"] +.h-auto[alt="Mathematics"] +.h-auto[alt="Server Fault"] +.h-auto[alt="Skeptics"] +.h-auto[alt="Software Engineering"] +.h-auto[alt="Stack Apps"] +.h-auto[alt="Super User"] +.h-auto[alt="The Workplace"] +.h-auto[alt="Theoretical Computer Science"] +.h-auto[alt="Unix & Linux"] +.h-auto[alt="Web Applications"] +a.js-gps-track::before +img[alt="The Stack Exchange Network"] + +CSS +body { + background-image: none !important; +} +.profile-cards--graph { + background-image: repeating-linear-gradient(0deg, transparent, transparent 13px, ${#e4e6e8} -13px, ${#e4e6e8} 21px) !important; +} +.c-pointer { + color: grey; +} +.js-accepted-answer-indicator.fc-green-500 { + color: var(--green) !important; +} +#newuser-box { + background-color: ${#FFF8DC} !important; +} +.topbar .icon-site-switcher-bubble { + background-repeat: no-repeat !important; +} + +IGNORE INLINE STYLE +.chess-replayer-board td + +================================ + stardewvalleywiki.com CSS @@ -14670,6 +14639,19 @@ CSS ================================ +ubereats.com + +INVERT +img[alt*='Home'] +div[class^='c5'] .gm-style +#main-content > h1 + div +#wrapper > div:nth-of-type(2) +#wrapper > div:nth-of-type(2) > header +#wrapper > div:nth-of-type(2) > footer +#wrapper > div:nth-of-type(2) > #main-content > div:first-child + +================================ + ubuntu.com INVERT @@ -15103,6 +15085,24 @@ INVERT ================================ +vultr.com + +CSS +.svg-banner-shape { + fill: var(--darkreader-neutral-background) !important; +} + +IGNORE INLINE STYLE +.icon-ui * +.icon-user * +.icon-sm * +.svg-logo * +.svg-illustration * +.svg-product * +.svg-shape * + +================================ + w.atwiki.jp CSS From 332935271210edb49aba8a55799dd962b4ae98b7 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Thu, 16 Dec 2021 17:46:12 +0100 Subject: [PATCH 093/892] Fix for uokik.gov.pl (#7651) --- src/config/dynamic-theme-fixes.config | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0f14251996cf..ae8fdd8ed8fe 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14697,6 +14697,36 @@ a.logo[title="United Nations"] ================================ +uokik.gov.pl + +INVERT +.a-press-office +.abgLong +h1[id="logo"] +p a +p.nav img +span[class="number"] +ul[class="tabs"] + +CSS +#subpage, +.sWrapper1, +.sWrapper2, +.tabs, +body#page, +div#right, +div#top, +div.fWrapper, +div[class="b1"], +h2#here { + background-image: none !important; +} +#footer .active { + color: #000000 !important; +} + +================================ + uol.com.br CSS From 79d0d8e378989e192dab150f91ae81d4b5c9fcb2 Mon Sep 17 00:00:00 2001 From: camperboy1000 <28019629+camperboy1000@users.noreply.github.com> Date: Thu, 16 Dec 2021 23:05:19 +0000 Subject: [PATCH 094/892] Remove non-dark site (#7664) --- src/config/dark-sites.config | 1 - 1 file changed, 1 deletion(-) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 97f1a4073c24..4f96e1a08690 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -224,7 +224,6 @@ developpement-systeme-exploitation.github.io/documentation di.fm diablo3.com diep.io -dietpi.com digi77.com digital.fashion disasm.pro From 197c5155cd863b69e6c5044df841a0d140495f59 Mon Sep 17 00:00:00 2001 From: Nikita Panuhin Date: Fri, 17 Dec 2021 15:12:02 +0300 Subject: [PATCH 095/892] Fix for codeforces.com (#7625) --- src/config/dynamic-theme-fixes.config | 46 ++++++++++++++++++++------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ae8fdd8ed8fe..b9ec231170df 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2825,30 +2825,52 @@ codeforces.com INVERT #header > div:first-child img -.action-link > div > img:first-child -.roundbox-lt -.roundbox-rt -.roundbox-lb -.roundbox-rb +#userActivityGraph rect[data-items=""] .delete-resource-link -a.contestParticipantCountLinkMargin > img -.recent-actions > ul > li img[src*="hourglass"] +.action-link img +.non-decorated img[src$="tablesorter-bg.gif"] CSS +.datatable, +.datatable > div, +.roundbox { + border-radius: 6px; +} .lt, .rt, .lb, .rb, .ilt, -.irt { +.irt, +.roundbox-lt, +.roundbox-rt, +.roundbox-lb, +.roundbox-rb { display: none; } -input[type="submit"], input[type="button"], select { - border-style: solid; +.backLava, +.leftLava { + border-radius: 4.5px; +} +.backLava, +.leftLava, +.bottomLava, +.cornerLava { + background: ${#BEBEBE} !important; +} +.sidebar-menu ul li { + border-color: transparent !important; } -input[type="submit"]:hover, input[type="button"]:hover, select:hover { - border-style: groove; +.highlighted-row td, +.highlighted-row th{ + background-color: ${rgb(195, 205, 215)} !important; } +#footer img[alt="Telegram"] { + border-radius: 50%; +} + +IGNORE INLINE STYLE +#userActivityGraph rect ================================ From 5b566a1341a12834b788ca8b0178676b04d8a5c3 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Fri, 17 Dec 2021 13:18:57 +0100 Subject: [PATCH 096/892] Fix for nowemedium.pl (#7670) - Fix headers. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b9ec231170df..7e5dc3c56d2f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10206,6 +10206,14 @@ INVERT ================================ +nowemedium.pl + +INVERT +.logo-tagline-group +.menu_toggle + +================================ + npmjs.com INVERT From 07cd47006249ac9c9d58ad9ce4d5789378ec181f Mon Sep 17 00:00:00 2001 From: Andrei Stepanov Date: Fri, 17 Dec 2021 16:19:13 +0400 Subject: [PATCH 097/892] Improve Russian translation (#7671) --- src/_locales/ru.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_locales/ru.config b/src/_locales/ru.config index 06b854bcf200..f68081d2fd61 100644 --- a/src/_locales/ru.config +++ b/src/_locales/ru.config @@ -54,7 +54,7 @@ Использовать системную цветовую схему @system_dark_mode_description -Включить, когда системный ночной режим активен +Вкл., если системный ночной режим активен #==== Filter ==== From dd6252a97118ebf140911c84fed6a988cc365cdd Mon Sep 17 00:00:00 2001 From: Squaduck Date: Fri, 17 Dec 2021 10:51:41 -0500 Subject: [PATCH 098/892] Fix for tn.gov (#7633) - Fix seal. --- src/config/inversion-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/inversion-fixes.config b/src/config/inversion-fixes.config index 1e85fb729c4d..733b6f81d804 100644 --- a/src/config/inversion-fixes.config +++ b/src/config/inversion-fixes.config @@ -2166,6 +2166,13 @@ img ================================ +tn.gov + +INVERT +img[src$="tn-seal.png"] + +================================ + toggl.com INVERT From 539871fcd744602868a1b4979d3d6ec62386f981 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Fri, 17 Dec 2021 13:20:19 -0800 Subject: [PATCH 099/892] Improve CONTRIBUTING.md tables (#7669) - Fix line-breaking. --- CONTRIBUTING.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c490029c504c..087629e8a48a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -86,11 +86,11 @@ IGNORE IMAGE ANALYSIS ``` | Rule | Description | Notes / Examples | -|-|-|-| -| `INVERT` | Inverts specified elements. | **Dynamic Mode**: INVERT only for dark images that are invisible on dark backgrounds. | -| `CSS` | Adds custom CSS to a web page. | `!important` keyword should be specified for each CSS property to prevent overrides by other stylesheets.
**Dynamic mode** supports `${COLOR}` template, where `COLOR` is a color value before the inversion.
*Example*: `${white}` will become `${black}` in dark mode. | -| `IGNORE INLINE STYLE` | Prevents inline style analysis of matched elements. | *Example*: `

` element's style attribute will not be changed. | -| `IGNORE IMAGE ANALYSIS` | Prevents background images from being analyzed for matched selectors. | | +|---|---|---| +| **INVERT** | Inverts specified elements. | **Dynamic Mode**: INVERT only for dark images that are invisible on dark backgrounds. | +| **CSS** | Adds custom CSS to a web page. | `!important` keyword should be specified for each CSS property to prevent overrides by other stylesheets.
**Dynamic mode** supports `${COLOR}` template, where `COLOR` is a color value before the inversion.
*Example*: `${white}` will become `${black}` in dark mode. | +| **IGNORE INLINE STYLE** | Prevents inline style analysis of matched elements. | *Example*: `

` element's style attribute will not be changed. | +| **IGNORE IMAGE ANALYSIS** | Prevents background images from being analyzed for matched selectors. | | ## Adding a new color scheme @@ -132,13 +132,12 @@ CSS ``` Here is a full table of available CSS variables: - | Variable | Description | Use | -|-|-|-| -| `--darkreader-neutral-background` | Neutral background color that corresponds to the user's settings. | Mostly used for elements that have a wrong background color | -| `--darkreader-neutral-text` | Neutral text color that corresponds to the user's settings. | Used for elements with a wrong text color | -| `--darkreader-selection-background` | The text color setting defined by the user. | The user's Text Color setting | -| `--darkreader-selection-text` | The background color setting defined by the user. | The user's Background Color setting | +|---|---|---| +| **`--darkreader-neutral-background`** | Neutral background color that
corresponds to the user's settings. | Mostly used for elements that have
a wrong background color | +| **`--darkreader-neutral-text`** | Neutral text color that
corresponds to the user's settings. | Used for elements with a wrong text color | +| **`--darkreader-selection-background`** | The text color setting
defined by the user. | The user's Text Color setting | +| **`--darkreader-selection-text`** | The background color setting
defined by the user. | The user's Background Color setting | ## Fixes for Filter and Filter+ mode From e21953301283670896bbae4a7686ef7bbf45ef29 Mon Sep 17 00:00:00 2001 From: Andrei Stepanov Date: Sat, 18 Dec 2021 01:28:44 +0400 Subject: [PATCH 100/892] Fix for vk.com (#7673) --- src/config/inversion-fixes.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/inversion-fixes.config b/src/config/inversion-fixes.config index 733b6f81d804..890d95ff36b0 100644 --- a/src/config/inversion-fixes.config +++ b/src/config/inversion-fixes.config @@ -2454,6 +2454,8 @@ INVERT .videoplayer .videoplayer_media .mv_playlist +.mv_playlist_controls +#VideoLayerInfo__topControls .page_album_title .article_snippet__fade .article_snippet__info From fc8489adef6ccec8ffdeaaad8f21b546fca13f0d Mon Sep 17 00:00:00 2001 From: Elaborendum <71190696+Elaborendum@users.noreply.github.com> Date: Fri, 17 Dec 2021 16:30:58 -0500 Subject: [PATCH 101/892] Fix for mozilla-related sites (#7666) - Fix logo's. --- src/config/dynamic-theme-fixes.config | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7e5dc3c56d2f..f6ef8f81db00 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5358,6 +5358,13 @@ INVERT ================================ +firefox.com + +INVERT +.fx-bento-app-link.fx-bento-link.fx-mobile > span::before + +================================ + firefox.net.cn CSS @@ -6903,6 +6910,13 @@ img[alt="INTERIA.PL"] ================================ +hubs.mozilla.com + +INVERT +svg.hmc-logo + +================================ + hvdic.thivien.net INVERT @@ -9506,6 +9520,13 @@ a[href$="twitter.com/money_pl"] path:first-of-type { ================================ +monitor.firefox.com + +INVERT +svg[class="Mozilla-logo"] > path[fill="#ffffff"] + +================================ + monokai.pro INVERT @@ -11848,6 +11869,14 @@ CSS ================================ +relay.firefox.com + +INVERT +img.c-landing-hero-brands +img.c-brand-title + +================================ + relive.cc INVERT From 8cb654a133feccc9d1a346c717b99c9f968510f1 Mon Sep 17 00:00:00 2001 From: Marek Maskarinec Date: Mon, 20 Dec 2021 13:26:03 +0100 Subject: [PATCH 102/892] Updated dark sites (#7675) --- src/config/dark-sites.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 4f96e1a08690..7ad4ca247df4 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -518,7 +518,6 @@ magoware.tv manen.me mangaplus.shueisha.co.jp mango.pdf.zone -marekmaskarinec.github.io maroon.jonah.pw marte.dev matteotiscia.com @@ -547,6 +546,7 @@ monkeytype.com monkrus.ws mope.io mouse-sensitivity.com +mrms.cz music.youtube.com mwittrien.github.io mwomercs.com From 514818c9656c5393cb4472b1a7298f0852b3e5c2 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 20 Dec 2021 18:19:00 +0100 Subject: [PATCH 103/892] Fix for bibliotecapleyades.net (#7672) - Resolves #7665 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index f6ef8f81db00..966dbb0558ae 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1688,6 +1688,15 @@ img[src^="/graphs/"] ================================ +bibliotecapleyades.net + +CSS +body { + background-image: none !important; +} + +================================ + bigocheatsheet.com INVERT From 42fa3c1951792839d27b00ce20bbbdd50c6a5f2e Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 20 Dec 2021 18:25:56 +0100 Subject: [PATCH 104/892] Fix: only transfer settings when syncSetting is enabled (#7698) - Resolves #7676 (this fixes race-conditions) --- src/background/user-storage.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/background/user-storage.ts b/src/background/user-storage.ts index 240bc89431bf..abe5cc78ecf7 100644 --- a/src/background/user-storage.ts +++ b/src/background/user-storage.ts @@ -19,8 +19,10 @@ export default class UserStorage { constructor({onRemoteSettingsChange}: UserStorageOptions) { this.settings = null; subscribeToOuterSettingsChange(async () => { - await this.loadSettings(); - onRemoteSettingsChange(); + if (this.settings.syncSettings) { + await this.loadSettings(); + onRemoteSettingsChange(); + } }); } From ff5e1e61ff2016570af880b1cfff50b4269ea282 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 20 Dec 2021 18:35:09 +0100 Subject: [PATCH 105/892] Fix for mcbsys.com (#7679) - Fix logo. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 966dbb0558ae..2e9a2a23ed82 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9092,6 +9092,14 @@ section[class$="container"][style^="background-image"] { ================================ +mcbsys.com + +INVERT +.site-branding +.icon-image + +================================ + mediawiki.org INVERT From 2bfbdfbb2ef6201f8ae4c3e0829c1483c23ff6c8 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 20 Dec 2021 18:43:20 +0100 Subject: [PATCH 106/892] Fix for fcmed.pl (#7680) --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2e9a2a23ed82..0de22282bbe0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5251,6 +5251,16 @@ CSS ================================ +fcmed.pl + +INVERT +.mkd-logo-wrapper +a[href*="tel"] +.mkd-sidearea > .textwidget > a > img +.owl-wrapper + +================================ + fedex.com CSS From 0d4cd04b3de3545f5cd810954d05045e1d961733 Mon Sep 17 00:00:00 2001 From: Pat Nafarrete Date: Mon, 20 Dec 2021 17:49:00 +0000 Subject: [PATCH 107/892] Fix for ifixit.com (#7683) --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0de22282bbe0..a528f8aa3e64 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7034,6 +7034,13 @@ CSS ================================ +ifixit.com + +INVERT +a[aria-label="home page"] + +================================ + iflscience.com INVERT From 029908506333e2d5a3a00dacbe3470dfe3656436 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 20 Dec 2021 18:49:36 +0100 Subject: [PATCH 108/892] Fix for anibrain.ai (#7699) - Resolves #7681 --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a528f8aa3e64..9a857a66f8c0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -787,6 +787,14 @@ CSS ================================ +anibrain.ai + +IGNORE INLINE STYLE +div[class^="style__HexagonDiv"] * +svg[class^="styles__SvgWithShadow"] * + +================================ + anilibria.tv CSS From a5dc498e2aaa67e4846c8a15270769d4c44d3abf Mon Sep 17 00:00:00 2001 From: Terrain2 <37938646+Terrain2@users.noreply.github.com> Date: Mon, 20 Dec 2021 19:10:00 +0100 Subject: [PATCH 109/892] Added dark site (#7685) --- src/config/dark-sites.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 7ad4ca247df4..119ce43d8e13 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -495,6 +495,7 @@ lightweightpdf.com limeshark.dev/editor link.brawlstars.com/invite linux.org.ru +lipu-linku.github.io liquidplus.com listen.moe livesplit.org @@ -755,6 +756,7 @@ securegroup.com seoringslerbhfa.club serebii.net settings.gg +seximal.net shatteredpixel.com sheet.host sherlock-project.github.io From 6ef6d9d412e5044cade86299b2bfd28dd4d1216f Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Mon, 20 Dec 2021 18:16:01 +0000 Subject: [PATCH 110/892] Fix for umweltinstitut.org (#7690) - Fix background. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9a857a66f8c0..e03ccd579979 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14791,6 +14791,15 @@ canvas[style^="height: 42px; width: 141px;"] ================================ +umweltinstitut.org + +CSS +.streifenBg { + background-image: none !important; +} + +================================ + un.org INVERT From c87b925840f2e820b5e151de2ff5cc1b9834fda7 Mon Sep 17 00:00:00 2001 From: "H. J. Poe" <35583004+hjpoe@users.noreply.github.com> Date: Mon, 20 Dec 2021 13:23:05 -0500 Subject: [PATCH 111/892] Added dark site (#7692) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 119ce43d8e13..4babac1421a6 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -375,6 +375,7 @@ god.freevar.com gog.com/forum gogalaxy.com gogoanime.se +goodfirstissue.dev goosegame.io graydon2.dreamwidth.org grc.arikado.ru From 190a518e23b9cbc314c7b010db52c7e1537c5341 Mon Sep 17 00:00:00 2001 From: "H. J. Poe" <35583004+hjpoe@users.noreply.github.com> Date: Tue, 21 Dec 2021 08:06:34 -0500 Subject: [PATCH 112/892] Fix for machinelearningmastery.com (#7687) - Fix image. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e03ccd579979..7586cf3131a6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8686,6 +8686,13 @@ CSS ================================ +machinelearningmastery.com + +INVERT +img.size-full.wp-image-7676 + +================================ + madshi.net CSS From 5377d63d5c475efc17813990039a2503508057b9 Mon Sep 17 00:00:00 2001 From: "H. J. Poe" <35583004+hjpoe@users.noreply.github.com> Date: Tue, 21 Dec 2021 08:06:59 -0500 Subject: [PATCH 113/892] Fix for biliomask.com (#7686) - Fix logo. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7586cf3131a6..0593dd4d0bd9 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1727,6 +1727,13 @@ INVERT ================================ +biliomask.com + +INVERT +div.header-title-logo + +================================ + binance.com CSS From 3486459f71bbfbdf1f94e00c35e2b1e641fdb2c0 Mon Sep 17 00:00:00 2001 From: Myshor Date: Wed, 22 Dec 2021 16:24:11 +0100 Subject: [PATCH 114/892] fix for praca.pl (#7713) Added one more class with company logo to make it darker (found on main page) --- src/config/dynamic-theme-fixes.config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0593dd4d0bd9..cfbaea8f3b18 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11365,7 +11365,8 @@ CSS .company__img, .employer-profile-header .logo img, .company-job-list .logo img, -.epc-other-employers .logo img { +.epc-other-employers .logo img, +.home__partner-logo { filter: brightness(0.75) } From c9a85464fd639c227c40424974f4ba6dcaaf0be5 Mon Sep 17 00:00:00 2001 From: Andrei Stepanov Date: Sun, 26 Dec 2021 16:13:03 +0400 Subject: [PATCH 115/892] Fix for vk.com (#7703) - Fix seeking border. --- src/config/inversion-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/inversion-fixes.config b/src/config/inversion-fixes.config index 890d95ff36b0..92685afbb998 100644 --- a/src/config/inversion-fixes.config +++ b/src/config/inversion-fixes.config @@ -2453,6 +2453,7 @@ vk.com INVERT .videoplayer .videoplayer_media +.videoplayer_timeline_preview .mv_playlist .mv_playlist_controls #VideoLayerInfo__topControls From a9a08720eaef6425289a7f8f27234b8f74431985 Mon Sep 17 00:00:00 2001 From: Sharkiller Date: Sun, 26 Dec 2021 09:14:46 -0300 Subject: [PATCH 116/892] Added dark site (#7704) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 4babac1421a6..b0d805519cc0 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -758,6 +758,7 @@ seoringslerbhfa.club serebii.net settings.gg seximal.net +sharkiller.ddns.net shatteredpixel.com sheet.host sherlock-project.github.io From de4df33bcc172698d0096c21463e26714606c994 Mon Sep 17 00:00:00 2001 From: Stephhawk <31955441+Stephhawks@users.noreply.github.com> Date: Sun, 26 Dec 2021 13:15:01 +0100 Subject: [PATCH 117/892] Fix for Mikufan.com (#7345) - Fix header. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index cfbaea8f3b18..728c8c751a02 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9403,6 +9403,13 @@ body, ================================ +mikufan.com + +IGNORE IMAGE ANALYSIS +#header-container + +================================ + minecraft.net CSS From f0a77d170b01ac67972cc9229e755198080a46a0 Mon Sep 17 00:00:00 2001 From: Isaac <72410860+isaec@users.noreply.github.com> Date: Sun, 26 Dec 2021 04:18:27 -0800 Subject: [PATCH 118/892] Fix for roscidus.com (#7710) - Fix images. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 728c8c751a02..c16c1eeb58c8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12118,6 +12118,15 @@ CSS ================================ +roscidus.com + +CSS +span.caption-wrapper img { + background-color: white !important; +} + +================================ + roskomsvoboda.org INVERT From 91b8a26b8e5eebc858129754f50c0515ce203e8a Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 26 Dec 2021 13:20:02 +0100 Subject: [PATCH 119/892] Fix for weekend.gazeta.pl, sport.pl, edziecko.pl, avanti24.pl (#7709) * weekend.gazeta.pl logo selector * sport.pl fixes - header logo - arrow * edziecko.pl header brand logo fix * avanti24.pl brands fixes --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c16c1eeb58c8..358e23ec8834 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1381,6 +1381,13 @@ body { ================================ +avanti24.pl + +INVERT +.box-logo + +================================ + avito.ru INVERT @@ -4666,6 +4673,7 @@ edziecko.pl INVERT .pageHeadBrand .col1 img +.main-navigation__logo ================================ @@ -5834,12 +5842,15 @@ main.container .every_board > .row:not(.row--takeover) { gazeta.pl plotek.pl +sport.pl INVERT .column .navigation__logo .main-navigation__logo +.serviceLogo__img .hp_redirector-circle-progress__svg +.vs__actions svg CSS .top_section_bg, .bottom_section_bg { From 29dc6fb00b31185316c9b5a35e726a908e12aff9 Mon Sep 17 00:00:00 2001 From: Roman Hauksson-Neill <62364808+RomanHN@users.noreply.github.com> Date: Sun, 26 Dec 2021 06:20:19 -0600 Subject: [PATCH 120/892] Added dark site (#7708) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index b0d805519cc0..4fbef2ce013f 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -723,6 +723,7 @@ ripped.guide robofight.io rocketleagueesports.com roleypoly.com +romanhn.github.io romefrontend.dev roosterteeth.fandom.com router.asus.com From efdcb09f28d3bcfcd5b9ec10048ecdab0f8fe885 Mon Sep 17 00:00:00 2001 From: Vedanth Padmaraman Date: Sun, 26 Dec 2021 17:50:39 +0530 Subject: [PATCH 121/892] Fix for drive.google.com (#7727) Each menu item on the right-click context menu consists of an image, a text label, and (sometimes) another, arranged horizontally. The selector ```div[role="menu"] > div > div[role="menuitem"][class*=" "] > div > :last-child``` selects and inverts the last of these elements on every menu item. However, when the last element is a text label, the text is always wrongly inverted. In some cases, images also get wrong inversions when they are returned by the selector. However, when the selector is removed, things seem to look fine. --- src/config/dynamic-theme-fixes.config | 1 - 1 file changed, 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 358e23ec8834..003487c4be95 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4364,7 +4364,6 @@ div[role="dialog"] ~ div[role="menu"] > div[role="menuitem"] > div > div:not([st img[src$="type/audio/mp3"] div[role="listitem"] > div > div > div > svg[fill="#000000"] > path div[role="menu"] > div > div[role="menuitem"] > div > div > div -div[role="menu"] > div > div[role="menuitem"][class*=" "] > div > :last-child div[data-label="nd"] > div > div > svg > path[fill="#000000"] div[role="document"] > div[role="button"] .a-b-c From 7ca5ceef8767b49dd1d59b6af4f00f4dcc865952 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 26 Dec 2021 12:33:03 +0000 Subject: [PATCH 122/892] Fix for circleci.com/docs (#7745) - Resolves #7717 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 003487c4be95..9883743d8370 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2622,6 +2622,15 @@ body { ================================ +circleci.com/docs + +CSS +body { + background-image: none !important; +} + +================================ + circuit-diagram.org INVERT From f804903818bc9be615d86b59aede8d201d7bd475 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 26 Dec 2021 13:00:22 +0000 Subject: [PATCH 123/892] Fix for jenkins.io (#7746) - Resolves #7718 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9883743d8370..91b6bc22bfce 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7650,6 +7650,13 @@ i[class^="icon"].hidden-xs { ================================ +jenkins.io + +IGNORE INLINE STYLE +.logo-jenkins * + +================================ + jewishcurrents.org INVERT From aa429d186863818a1242624fa994856475a948bc Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Sun, 26 Dec 2021 06:03:27 -0700 Subject: [PATCH 124/892] Fix for dailymotion.com (#7721) Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 91b6bc22bfce..48829bd6a9ee 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3436,6 +3436,13 @@ svg.main-logo.inline-flex g g[fill="#110133"] { ================================ +dailymotion.com + +IGNORE INLINE STYLE +div[class*="logoContainer"] a svg path + +================================ + dailywritingtips.com CSS From 3ab8c50b77a3e5859a4c787b1ba593a1caa7d62d Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 26 Dec 2021 13:04:38 +0000 Subject: [PATCH 125/892] Create proxy around stylesheets to act as live element (#7747) - Re-create the behavior better of stylesheets proxy, such it will act as a live element. - Resolves #7719 --- src/inject/dynamic-theme/stylesheet-proxy.ts | 29 +++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/inject/dynamic-theme/stylesheet-proxy.ts b/src/inject/dynamic-theme/stylesheet-proxy.ts index b250fc92d60b..649a3951ad25 100644 --- a/src/inject/dynamic-theme/stylesheet-proxy.ts +++ b/src/inject/dynamic-theme/stylesheet-proxy.ts @@ -74,11 +74,26 @@ export function injectProxy(enableStyleSheetsProxy: boolean) { } function proxyDocumentStyleSheets() { - const docSheets = documentStyleSheetsDescriptor.get.call(this); - const filtered = [...docSheets].filter((styleSheet: CSSStyleSheet) => { - return !(styleSheet.ownerNode as HTMLElement).classList.contains('darkreader'); - }); - return Object.setPrototypeOf(filtered, StyleSheetList.prototype); + const getCurrentValue = () => { + const docSheets = documentStyleSheetsDescriptor.get.call(this); + + return Object.setPrototypeOf([...docSheets].filter((styleSheet: CSSStyleSheet) => { + return !(styleSheet.ownerNode as HTMLElement).classList.contains('darkreader'); + }), StyleSheetList.prototype); + }; + + let elements = getCurrentValue(); + + // Because StyleSheetList are so called "live objects". + // Every time you access them, it will return all stylesheets from + // current situation of the DOM. Instead of a static list. + const styleSheetListBehavior: ProxyHandler = { + get: function (_: StyleSheetList, property: string) { + return getCurrentValue()[property]; + } + }; + elements = new Proxy(elements, styleSheetListBehavior); + return elements; } function proxyGetElementsByTagName(tagName: string): NodeListOf { @@ -99,12 +114,12 @@ export function injectProxy(enableStyleSheetsProxy: boolean) { // Because NodeListOf and HTMLCollection are so called "live objects". // Every time you access them, it will return all tagnames from // current situation of the DOM. Instead of a static list. - const NodeListBehavior: ProxyHandler> = { + const nodeListBehavior: ProxyHandler> = { get: function (_: NodeListOf, property: string) { return getCurrentElementValue()[Number(property)]; } }; - elements = new Proxy(elements, NodeListBehavior); + elements = new Proxy(elements, nodeListBehavior); return elements; } From 865832f0569e3917b52718620b6ff5cea3d5b3ed Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 26 Dec 2021 14:06:18 +0100 Subject: [PATCH 126/892] Fix for avlab.pl (#7724) - Invert logo. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 48829bd6a9ee..4073f58cba88 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1409,6 +1409,14 @@ div[class^="item-preview-image"] { ================================ +avlab.pl + +INVERT +img[src*="avlab-logo"] +img[alt*="logo"] + +================================ + aws.amazon.com INVERT From 297538a12652b1fed77909641d1b5a77de2bd9f7 Mon Sep 17 00:00:00 2001 From: Hugo Carvalho Date: Sun, 26 Dec 2021 13:07:45 +0000 Subject: [PATCH 127/892] Improve pt-PT translation (#7723) Spelling correction of Portuguese (Portugal) --- src/_locales/pt-PT.config | 44 +++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/_locales/pt-PT.config b/src/_locales/pt-PT.config index 22343dcee340..756be23de759 100644 --- a/src/_locales/pt-PT.config +++ b/src/_locales/pt-PT.config @@ -1,8 +1,8 @@ @extension_description -Tema escuro para todos os sites. Cuide dos seus olhos, use o Dark Reader para navegação noturna e diária. +Tema escuro para todos os websites. Cuide dos seus olhos, use o Dark Reader para navegação noturna e diária. @loading_please_wait -Carregando, por favor espere +A carregar, por favor aguarde #==== Top section ==== @@ -28,13 +28,13 @@ Tecla de atalho de alternância da extensão de configuração @automation -Automação +Automatização @set_active_hours Defina as horas de atividade @set_location -Ative depois do sol no local +Ativar após o pôr-do-sol no local @longitude Longitude @@ -51,10 +51,10 @@ Este site está na lista negra global @system_dark_mode -Use esquema de cores do sistema +Usar esquema de cores do sistema @system_dark_mode_description -Ative quando o modo escuro sistema estiver ligado +Ativar quando o modo escuro sistema está ligado #==== Filter ==== @@ -66,10 +66,10 @@ Filtro Modo @dark -Sombrio +Escuro @light -Luz +Claro @brightness Brilho @@ -78,16 +78,16 @@ Brilho Contraste @grayscale -Em tons de cinza +Tons de cinza @sepia Sépia @only_for -Somente para +Apenas para @only_for_description -Aplicar configurações somente ao site atual +Aplicar definições apenas ao website atual #==== Site list ==== @@ -99,7 +99,7 @@ Lista de sites Inverter listado @not_invert_listed -Não invertido listado +Não inverter listado @add_site_to_list Adicionar site à lista @@ -114,13 +114,13 @@ Configurar uma tecla de atalho para adicionar site Mais @select_font -Selecione uma fonte +Selecionar um tipo de letra @text_stroke -Traço de texto +Traço do texto @try_experimental_theme_engines -Experimente os motores de temas **experimental**: +Experimentar os motores de temas **experimental**: **Filtro+** preserva a saturação de cores, usa GPU **Tema estático** gera um tema rápido simples **Tema dinâmico** analisa cores e imagens @@ -141,7 +141,7 @@ Dinâmico Modo de geração de tema @custom_browser_theme_on -Mudou +Personalizado @custom_browser_theme_off Predefinido @@ -162,10 +162,10 @@ Ajuda Doar @news -Notícia +Notícias @read_more -Ler mais +Saiba mais @open_dev_tools Ferramentas @@ -174,10 +174,10 @@ Ferramentas #==== Store listing ==== @store_listing -Esta extensão de cuidados com os olhos ativa o modo noturno criando temas escuros para sites. O Dark Reader inverte as cores brilhantes, tornando-as de alto contraste e fáceis de ler à noite. +Esta extensão de cuidados com os olhos ativa o modo noturno ao criar temas escuros para sites. O Dark Reader inverte as cores brilhantes, tornando-as de alto contraste e fáceis de ler à noite. -Você pode ajustar o brilho, o contraste, o filtro sépia, o modo escuro, as configurações de fonte e a lista de ignorados. +Pode ajustar o brilho, o contraste, o filtro sépia, o modo escuro, as definições do tipo de letra e a lista de ignorados. -O Dark Reader não exibe anúncios e não envia dados do usuário em nenhum lugar. É totalmente open-source https://github.com/darkreader/darkreader +O Dark Reader não mostra anúncios e não envia os dados dos utilizadores para lado nenhum. É totalmente de código aberto: https://github.com/darkreader/darkreader -Antes de instalar desativar extensões semelhantes. Visualização agradável! +Antes de o instalar, desative extensões semelhantes. Desfrute da visualização! From adf27c7701491a78c315e22719fff67e1e7f6960 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Sun, 26 Dec 2021 05:21:54 -0800 Subject: [PATCH 128/892] Fix consumerlab.com (#7731) - Resolves #7730 --- src/config/dynamic-theme-fixes.config | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4073f58cba88..b13ad4f199a4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3152,6 +3152,19 @@ CSS ================================ +consumerlab.com + +INVERT +#overlay-toggle > .collapsed +.header-link-home + +CSS +span[style*="background-color: rgb(255, 255, 0)"] { + background-color: #550 !important; +} + +================================ + convertio.co INVERT From b1ba42fdbb832d4675ca1cd0e3669bb8ebe92779 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Sun, 26 Dec 2021 05:30:52 -0800 Subject: [PATCH 129/892] Fix for eatthis.com (#7733) - Resolves #7732 --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b13ad4f199a4..5a15cf0c9373 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4618,6 +4618,18 @@ INVERT ================================ +eatthis.com + +INVERT +svg.site-logo + +CSS +.header-leading-authority { + background-color: var(--darkreader-neutral-background); +} + +================================ + eblocker.org INVERT From 24b09005894c89a3323ef765afe41a9feed3194b Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 26 Dec 2021 14:32:07 +0100 Subject: [PATCH 130/892] Fix for biznes.pap.pl (#7736) --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5a15cf0c9373..1ea94bb5f37c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1912,6 +1912,16 @@ CSS ================================ +biznes.pap.pl + +CSS +body, +#copy { + background-image: none !important; +} + +================================ + blablacar.* blablacar.*.* From bfa4da13a11543f0d75e0679895e8eef4734747d Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 26 Dec 2021 14:32:46 +0100 Subject: [PATCH 131/892] Fix for rudeiczarne.pl (#7706) Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1ea94bb5f37c..a247b6dd7b61 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12304,6 +12304,14 @@ select { ================================ +rudeiczarne.pl + +INVERT +#logo +#footer-logo + +================================ + runkit.com INVERT From a53b0229c35c1040a45afe6a56d65866400475b9 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 26 Dec 2021 14:34:21 +0100 Subject: [PATCH 132/892] Fix for walbrzych24.com (#7737) --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a247b6dd7b61..0f62c85ebf3f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15387,6 +15387,15 @@ CSS ================================ +walbrzych24.com + +INVERT +a.social-icons__icon img +img.page-header__logo +img.page-footer__img + +================================ + wallet.myalgo.com IGNORE INLINE STYLE From 7485dda6a690d3d86724b0eef03bdcea039dfb32 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 26 Dec 2021 14:34:50 +0100 Subject: [PATCH 133/892] Fix for korso24.pl korsosanockie.pl (#7738) - Fix logo's. --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0f62c85ebf3f..bcbe5d8ef066 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8125,6 +8125,17 @@ INVERT ================================ +korso24.pl +korsosanockie.pl + +INVERT +img.weather-box__img +.nav-top__logo-wrapper +.nav-top__footer-burger > div > span +a.footer__logo + +================================ + kraken.com CSS From 6c63fa2014662daae44ab2088f926b6c099f6b14 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 26 Dec 2021 15:21:04 +0100 Subject: [PATCH 134/892] Fix for djrankings.org (#7742) --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index bcbe5d8ef066..2baf54fec864 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4106,6 +4106,17 @@ CSS ================================ +djrankings.org + +CSS +body, +li a, +.moduleContentInner { + background-image: none !important; +} + +================================ + dlagentlemana.pl INVERT From 07f5ded9c968440bdd99bd0ea58736d218f1c833 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 26 Dec 2021 15:26:00 +0100 Subject: [PATCH 135/892] Fix for gsmchoice.com, mgsm.pl (#7743) --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2baf54fec864..6fe0585cd14a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6740,6 +6740,17 @@ label, h5, h6, header, .h5 { ================================ +gsmchoice.com +mgsm.pl + +INVERT +.promo-sticky__item--small +.promo-sticky__item--large +img[alt="mGSM.pl"] +img[alt="GSMchoice.com"] + +================================ + gsuite.google.com INVERT From 6647bd22db29842d5a17542c64cedda872d518b0 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 26 Dec 2021 14:55:03 +0000 Subject: [PATCH 136/892] Automation patch (#2860) - Add option to switch On/Off or Scheme for when automation is effected. - Resolve #1713 - Resolves #3243 - Resolves #2102 --- src/background/extension.ts | 21 +++++++++++++++++++-- src/defaults.ts | 1 + src/definitions.d.ts | 1 + src/ui/connect/mock.ts | 2 ++ src/ui/popup/automation-page/index.tsx | 12 ++++++++++++ 5 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/background/extension.ts b/src/background/extension.ts index 174a5bc35c89..15cb772b429f 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -85,7 +85,7 @@ export class Extension { private alarmListener = (alarm: chrome.alarms.Alarm): void => { if (alarm.name === Extension.ALARM_NAME) { - this.handleAutoCheck(); + this.handleAutomationCheck(); } }; @@ -380,7 +380,23 @@ export class Extension { if (this.user.settings.automation !== 'system') { return; } - this.handleAutoCheck(); + this.handleAutomationCheck(); + }; + + private handleAutomationCheck = () => { + if (this.user.settings.automationBehaviour === 'Scheme') { + this.recalculateIsEnabled(); + if (this.isEnabled) { + // Dark + this.changeSettings({theme: {...this.user.settings.theme, ...{mode: 1}}}); + } else { + // Light + this.changeSettings({theme: {...this.user.settings.theme, ...{mode: 0}}}); + } + } else { + // Toggle on/off + this.handleAutoCheck(); + } }; private async handleAutoCheck() { @@ -407,6 +423,7 @@ export class Extension { if ( (prev.enabled !== this.user.settings.enabled) || (prev.automation !== this.user.settings.automation) || + (prev.automationBehaviour !== this.user.settings.automationBehaviour) || (prev.time.activation !== this.user.settings.time.activation) || (prev.time.deactivation !== this.user.settings.time.deactivation) || (prev.location.latitude !== this.user.settings.location.latitude) || diff --git a/src/defaults.ts b/src/defaults.ts index 33076cf24570..335778f12b51 100644 --- a/src/defaults.ts +++ b/src/defaults.ts @@ -64,6 +64,7 @@ export const DEFAULT_SETTINGS: UserSettings = { syncSettings: true, syncSitesFixes: false, automation: '', + automationBehaviour: 'OnOff', time: { activation: '18:00', deactivation: '9:00', diff --git a/src/definitions.d.ts b/src/definitions.d.ts index 18b3ef72b821..981a97cef3ae 100644 --- a/src/definitions.d.ts +++ b/src/definitions.d.ts @@ -92,6 +92,7 @@ export interface UserSettings { syncSettings: boolean; syncSitesFixes: boolean; automation: '' | 'time' | 'system' | 'location'; + automationBehaviour: 'OnOff' | 'Scheme'; time: TimeSettings; location: LocationSettings; previewNewDesign: boolean; diff --git a/src/ui/connect/mock.ts b/src/ui/connect/mock.ts index 362a80034ad6..d339102356e0 100644 --- a/src/ui/connect/mock.ts +++ b/src/ui/connect/mock.ts @@ -31,6 +31,8 @@ export function getMockData(override = {} as Partial): ExtensionD enableForProtectedPages: false, syncSettings: true, automation: '', + automationBehaviour: 'OnOff', + previewNewDesign: false, time: { activation: '18:00', deactivation: '9:00', diff --git a/src/ui/popup/automation-page/index.tsx b/src/ui/popup/automation-page/index.tsx index 3ea37a03546e..d05067602ad4 100644 --- a/src/ui/popup/automation-page/index.tsx +++ b/src/ui/popup/automation-page/index.tsx @@ -2,6 +2,7 @@ import {m} from 'malevic'; import {getLocalMessage} from '../../../utils/locales'; import {CheckBox, TimeRangePicker, TextBox, Button} from '../../controls'; import type {ViewProps} from '../types'; +import DropDown from '../../controls/dropdown/index'; export default function AutomationPage(props: ViewProps) { const isSystemAutomation = props.data.settings.automation === 'system'; @@ -134,6 +135,17 @@ export default function AutomationPage(props: ViewProps) {

{getLocalMessage('system_dark_mode_description')}

+ props.actions.changeSettings({automationBehaviour: selected})} + selected={props.data.settings.automationBehaviour} + options={[ + {id: 'OnOff', content: 'Toggle on/off'}, + {id: 'Scheme', content: 'Toggle dark/light'}, + ]} + /> +

+ Decide what dark reader should do on automation. +

); } From a7ea6436c910ac7e8cdd6928f81c36e77833483b Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sun, 26 Dec 2021 15:17:31 +0000 Subject: [PATCH 137/892] Fix for sw.kovidgoyal.net (#7716) - Fix sidebar. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 6fe0585cd14a..8ebafe6a6754 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13848,6 +13848,20 @@ a[class^="PaginationButton"]:hover { ================================ +sw.kovidgoyal.net + +CSS +.sidebar-drawer, +.sidebar-search { + background: var(--darkreader-neutral-background) !important; +} +.sidebar-tree a.current, +.sidebar-tree label:hover { + background: var(--darkreader-selection-background) !important; +} + +================================ + swiatrolnika.info INVERT From 301d9176351f86d0076a32871eb9e39eb0f9a0f4 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 26 Dec 2021 16:38:40 +0100 Subject: [PATCH 138/892] Fix for poszukiwania.pl (#7748) --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8ebafe6a6754..be7b99525b38 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11452,6 +11452,14 @@ INVERT ================================ +poszukiwania.pl + +INVERT +.header-logo +.footer-logo-address + +================================ + potplayer.daum.net INVERT From 5ac313a67db0cce9b0052695832f473832b4d271 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 26 Dec 2021 16:39:53 +0100 Subject: [PATCH 139/892] Fix for nejm.org (#7749) --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index be7b99525b38..1dbec77605ee 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10179,6 +10179,13 @@ INVERT ================================ +nejm.org + +INVERT +a[href="/"] svg + +================================ + neonet.pl INVERT From baa1fbe1a26281064c10af792066631956023db1 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 26 Dec 2021 21:27:57 +0100 Subject: [PATCH 140/892] Fix for 300gospodarka.pl, 300polityka.pl (#7752) --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1dbec77605ee..449df35db89c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -204,6 +204,15 @@ body, .nav__main { ================================ +300gospodarka.pl +300polityka.pl + +INVERT +#logo +img[alt="300Gospodarka"] + +================================ + 4pda.ru CSS From a760a3ea58285a502531513cc961b20aa4c78eb9 Mon Sep 17 00:00:00 2001 From: Andrei Stepanov Date: Mon, 27 Dec 2021 20:44:51 +0400 Subject: [PATCH 141/892] Fix for vk.com (#7753) --- src/config/inversion-fixes.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/inversion-fixes.config b/src/config/inversion-fixes.config index 92685afbb998..b8172cbc28a8 100644 --- a/src/config/inversion-fixes.config +++ b/src/config/inversion-fixes.config @@ -2454,6 +2454,7 @@ INVERT .videoplayer .videoplayer_media .videoplayer_timeline_preview +.mv_chat .mv_playlist .mv_playlist_controls #VideoLayerInfo__topControls @@ -2497,6 +2498,7 @@ INVERT .Reaction NO INVERT +.mv_chat * .mv_playlist * #z_photoview img .box_grey .box_title From 072b2e682313a2073bc4ce6cf9603b4fe4814e6b Mon Sep 17 00:00:00 2001 From: Elaborendum <71190696+Elaborendum@users.noreply.github.com> Date: Mon, 27 Dec 2021 11:47:16 -0500 Subject: [PATCH 142/892] Fix for various sites (#7678) --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 449df35db89c..33603d2ac506 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3362,6 +3362,8 @@ crowdin.com INVERT .crowdin-navbar__logo +#master-loader > .master-loader-logo +#master-loader-progress.bar ================================ @@ -9224,6 +9226,13 @@ a > svg ================================ +matrix.to + +INVERT +div.footer > p > img + +================================ + matsci.org INVERT @@ -12466,6 +12475,8 @@ div[role="banner"] > a > span a[aria-label="Homepage"] .gs_ico img[src*="scholar_logo"] +a#gs_hdr_lgo +a#gs_hdr_drw_lgo ================================ From 8c906c6f545c1d73892a8b66091fdf634ca743a8 Mon Sep 17 00:00:00 2001 From: Aubrey Falconer Date: Mon, 27 Dec 2021 08:47:55 -0800 Subject: [PATCH 143/892] Added dark site (#7754) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 4fbef2ce013f..2b0d28f94415 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -840,6 +840,7 @@ techwithalext.com teddit.namazso.eu teddit.zaggy.nl telecineplay.com.br +teleseer.com televizeseznam.cz telugucz.com terminal.sexy From 7621091a532dde4f9a989c45421947a7a12a239a Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 27 Dec 2021 17:48:12 +0100 Subject: [PATCH 144/892] Fix for cdaction.pl (#7755) - Invert logo's. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 33603d2ac506..2e837530c33a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2474,6 +2474,14 @@ INVERT ================================ +cdaction.pl + +INVERT +a[href="/"] svg +footer > div > svg + +================================ + cdc.gov INVERT From b815887e4614d893f6b388c448892618dea659fa Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 27 Dec 2021 17:14:49 +0000 Subject: [PATCH 145/892] Fix for wikipedia.org (#7765) - Resolves #7756 --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2e837530c33a..c97461891f58 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15965,7 +15965,7 @@ body.mediawiki, IGNORE INLINE STYLE .legend-color -.infobox > tbody > tr > td[style*="background-color"] +.infobox > tbody > tr > td.infobox-subheader[style*="background-color"] #on_image_elements span IGNORE IMAGE ANALYSIS From e68c24e967b18d29bdde62ffb04cd1ca0d67969e Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 27 Dec 2021 18:15:34 +0100 Subject: [PATCH 146/892] Fix for dziennikprawny.pl (#7757) - Fix background. --- src/config/dynamic-theme-fixes.config | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c97461891f58..d85611bb4b4d 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4626,6 +4626,19 @@ INVERT ================================ +dziennikprawny.pl + +INVERT +a[href="/"] +.fullba + +CSS +.fullba { + background-image: none !important; +} + +================================ + ea.com INVERT From c58ded38d3c5235c59849d3096e6f5968faf00c0 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 27 Dec 2021 18:15:48 +0100 Subject: [PATCH 147/892] Fix for kulinarnyblog.pl (#7758) - Fix logo --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d85611bb4b4d..43c41f72574d 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8223,6 +8223,20 @@ img[src*="logo"] ================================ +ksiegowawsieci.pl + +INVERT +.logo + +================================ + +kulinarnyblog.pl + +INVERT +.logo-img + +================================ + lajtmobile.pl CSS From 6c54d71b994cf8403a3f9400df62954678a48d55 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 27 Dec 2021 18:16:08 +0100 Subject: [PATCH 148/892] Fix for rp.pl (#7759) - Update selectors. --- src/config/dynamic-theme-fixes.config | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 43c41f72574d..88a2d7555e61 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12323,10 +12323,11 @@ IGNORE IMAGE ANALYSIS rp.pl INVERT -img[alt="Logo RP"] -.slider-track -img[src$="stare-logo.png"] -img[src$="nowe-logo.png"] +a[href="/"] +.burger--menu span +.icon-logo::before +.footer--logo +.footer--copyright--content div ================================ From 88dbd89f66fc41c9ca27368ac7f1ad68fb36fb4b Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 27 Dec 2021 18:20:37 +0100 Subject: [PATCH 149/892] Fix for stardock.com (#7762) - Fix text sections. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 88a2d7555e61..4d2879d626ef 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13383,6 +13383,14 @@ html { ================================ +stardock.com + +INVERT +.mid +.careers + +================================ + start64.com INVERT From 40068174fa7359b44f77db7d1fd817bd25e1b51d Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 27 Dec 2021 17:20:57 +0000 Subject: [PATCH 150/892] Fix for breitbart.com (#7766) - Resolves #7761 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4d2879d626ef..a77dcbcbba59 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2151,6 +2151,13 @@ section + img { ================================ +breitbart.com + +INVERT +#FootW #FWI p .parler + +================================ + brightspace.avans.nl CSS From 9f8e72962018278ba50b28c668bfcf98afa1556e Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 27 Dec 2021 18:21:16 +0100 Subject: [PATCH 151/892] Added dark site (#7763) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 2b0d28f94415..52b60f1adaa9 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -598,6 +598,7 @@ ogusers.com ohmyz.sh oldergeeks.com oldfag.org +omcar.pl omgwtfnzbs.me onionplay.co online.lloydsbank.co.uk From adb561b039fe14b74a8703e81ba59dbb4eef8b9e Mon Sep 17 00:00:00 2001 From: "H. J. Poe" <35583004+hjpoe@users.noreply.github.com> Date: Mon, 27 Dec 2021 12:28:18 -0500 Subject: [PATCH 152/892] Fix for petco.com (#7707) - Fix images & logo. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a77dcbcbba59..b82b200a0bec 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11242,6 +11242,17 @@ img[src*="logo"] ================================ +petco.com/shop/en/petcostore + +INVERT +a[class^="LogoAnchor__Container"] +button[class^="HamburgerButton"] +img.center-block.margin-top-sm +h1.pals-header +img.center-block + +================================ + pgatour.com CSS From 9bc4c9a3332fb18169c2fd433dd499355663c061 Mon Sep 17 00:00:00 2001 From: Pieter Edwards Date: Tue, 28 Dec 2021 12:51:16 +0000 Subject: [PATCH 153/892] Added dark site (#7726) --- src/config/dark-sites.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 52b60f1adaa9..7881baabd3b7 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -147,6 +147,7 @@ cascadr.co catvibers.me cdkeys.com cdnnow.pro +channel4.com chat.ryzom.com cheat.sh checkra.in @@ -447,6 +448,7 @@ iq.com isitchristmas.com isthereanydeal.com isxander.dev +itv.com iwanttoeat.app ixirc.com jackdaniels.com @@ -552,6 +554,11 @@ mrms.cz music.youtube.com mwittrien.github.io mwomercs.com +my00stv.com +my60stv.com +my70stv.com +my80stv.com +my90stv.com mynoise.net mypodficacademia.com n-o-d-e.net From b6ffdc89a6cc35e2d1915701fce650809c59f32f Mon Sep 17 00:00:00 2001 From: FadeMind Date: Tue, 28 Dec 2021 13:52:48 +0100 Subject: [PATCH 154/892] Fix for androidpolice.com (#7768) - Fix selector. --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b82b200a0bec..672d2fd33f56 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -777,7 +777,7 @@ CSS androidpolice.com INVERT -.header-logo +.header-logo svg ================================ From 9789b4c61143f47ebf17e2802cb8874bbfbca4ac Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 28 Dec 2021 12:52:58 +0000 Subject: [PATCH 155/892] Fix for raspberrypi.com (#7778) - Resolves #7767 --- src/config/dynamic-theme-fixes.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 672d2fd33f56..7e3ba8944cf9 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11929,8 +11929,8 @@ td[style^="background:"] raspberrypi.com CSS -div.paragraph, td.content { - color: var(--darkreader-neutral-text) !important; +body { + color: var(--darkreader-neutral-text); } ================================ From f243034dcf4634f431010f70c897a867b256cf74 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Tue, 28 Dec 2021 13:54:35 +0100 Subject: [PATCH 156/892] Added dark sites (#7769) --- src/config/dark-sites.config | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 7881baabd3b7..e2e8bea08b81 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -455,6 +455,7 @@ jackdaniels.com jakobneumann.com jakubkaczor.com jakubkaczor.github.io +jbzd.com.pl jekyllrb.com jellymar.io jhey.dev @@ -484,6 +485,7 @@ kreato.cf krunker.io ksp.mff.cuni.cz kulbachny.com +kwejk.pl kyleggiero.me lagom.nl/lcd-test lainchan.org @@ -745,6 +747,7 @@ rythm.fm rythmbot.co sa-mp.com sadh.life +sadistic.pl sammcheese.net samsai.eu sandervanderburg.blogspot.com @@ -946,6 +949,7 @@ weboas.is whirl.codes widgetbot.io wiki.step-project.com +wiocha.pl wolfy.fr wormate.io wormhole.app From 02adb1686977b8a2de409e4f3a5e6f4b238ae613 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Tue, 28 Dec 2021 05:55:01 -0700 Subject: [PATCH 157/892] Fix for washingtonpost.com (#7720) - Fix logo. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7e3ba8944cf9..6b68f0f96ab0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15577,7 +15577,7 @@ CSS } IGNORE INLINE STYLE -a[data-sc-c="headerlogo"] path +a[href="https://washingtonpost.com"][class*="center"] svg path ================================ From d7bcff694fc75e246927806410f96bfee7a8a886 Mon Sep 17 00:00:00 2001 From: Myshor Date: Tue, 28 Dec 2021 17:02:46 +0100 Subject: [PATCH 158/892] fix for flow.polar.com (#7781) Fixed background for some highcharts. Works fine in dark and light. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 6b68f0f96ab0..2116a52a42bf 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5584,6 +5584,9 @@ CSS .maxhighlightval, .maxhighlightname { color: rgb(0, 0, 0) !important; } +.highcharts-background{ + fill: none !important; +} IGNORE INLINE STYLE .zonebox From 65473a29c797f22e258093da8a0195667cc1de28 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 28 Dec 2021 23:04:01 +0000 Subject: [PATCH 159/892] Fix for ceneo.pl (#7786) - Resolves #7773 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2116a52a42bf..196f16608bc5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2517,6 +2517,13 @@ body { ================================ +ceneo.pl + +INVERT +[data-new-icon]::before + +================================ + centrum24.pl INVERT From f6430798211aed1a701c8cacbc6ef3125bb2e022 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Wed, 29 Dec 2021 00:04:16 +0100 Subject: [PATCH 160/892] Fix for medrxiv.org (#7774) - Invert logo. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 196f16608bc5..cb257967ec62 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9345,6 +9345,14 @@ span.markup--quote.markup--p-quote.is-other { ================================ +medrxiv.org + +INVERT +.blood_logo +.logo-img + +================================ + meet.google.com IGNORE INLINE STYLE From ca8c0c6d5b8f0d9fa01f94dc7afa341aad92f4f0 Mon Sep 17 00:00:00 2001 From: aka-commit <33386696+aka-commit@users.noreply.github.com> Date: Wed, 29 Dec 2021 07:05:24 +0800 Subject: [PATCH 161/892] Fix for t.bilibili.com (#7744) - Fix background. --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index cb257967ec62..15a50d82e9e6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13988,7 +13988,7 @@ img[src*="/images/images2/icons/"] t.bilibili.com CSS -#app { +#app, .fixed-bg { background-image: none !important; } From d49603c34cb8407ee163ed2c59741f1073cde74d Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Tue, 28 Dec 2021 16:17:44 -0700 Subject: [PATCH 162/892] Fix for fs.blog (#7779) - Invert share icons in articles. Example: https://fs.blog/learning/ - Fix backgrounds in article listing. https://fs.blog/blog/ --- src/config/dynamic-theme-fixes.config | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 15a50d82e9e6..3c0b39112c05 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5877,8 +5877,12 @@ div.formular input[type="checkbox"] { fs.blog +INVERT +.shared-counts-icon + CSS -body { +body, +.header-box { background-color: var(--darkreader-neutral-background) !important; } From c7440205f11c7b1353531f24882ee039106f0404 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 28 Dec 2021 23:21:22 +0000 Subject: [PATCH 163/892] Fix for ubuntu.com (#7788) - Resolves #7780 --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 3c0b39112c05..ad594450a815 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15043,6 +15043,9 @@ CSS header[style$="image-background-paper.png);"] { background-image: none !important; } +.chart-key text { + fill: var(--darkreader-neutral-text) !important; +} IGNORE INLINE STYLE g#ubuntu-logo > path From 1a016505876205dc44d5f504b02358d418d51be2 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Wed, 29 Dec 2021 00:22:17 +0100 Subject: [PATCH 164/892] Fix for gazetaprawna.pl (#7782) - Fix selectors. --- src/config/dynamic-theme-fixes.config | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ad594450a815..54db5f0e9a2e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5984,13 +5984,10 @@ CSS gazetaprawna.pl INVERT -.logoHeading +.bubbleMenuHamburger .homePageUrl - -CSS -#menuTrigger { - background-color: var(--darkreader-neutral-background) !important; -} +.serviceLogo +.servicesMenu #menuTrigger span ================================ From 931cbe54c6f1c0f0cced247af0472d167900f843 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Wed, 29 Dec 2021 00:22:46 +0100 Subject: [PATCH 165/892] Fix for naszemiasto.pl (#7783) - Invert logo. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 54db5f0e9a2e..507e226bf2fd 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10197,6 +10197,15 @@ IGNORE IMAGE ANALYSIS ================================ +naszemiasto.pl +strefabiznesu.pl + +INVERT +.componentsNavigationNavbar__logo +.atomsNavigationFooterLinks__logo + +================================ + natemat.pl aszdziennik.pl innpoland.pl From c5ce954f5560744ee1fabadd2ebf481ea4b5379a Mon Sep 17 00:00:00 2001 From: FadeMind Date: Wed, 29 Dec 2021 00:26:51 +0100 Subject: [PATCH 166/892] Fix for donald.pl (#7785) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 507e226bf2fd..c37079b250a6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4395,6 +4395,13 @@ svg.trackerbarimage:not(.complete svg.trackerbarimage) { ================================ +donald.pl + +INVERT +a[href="/"] + +================================ + doodle.com INVERT From 18a6c4ff79572ccaafec9e6723b15aa71bab5d44 Mon Sep 17 00:00:00 2001 From: Miguel de Moura <9093796+migueldemoura@users.noreply.github.com> Date: Tue, 28 Dec 2021 23:28:47 +0000 Subject: [PATCH 167/892] Added dark site (#7784) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index e2e8bea08b81..c805d372f83e 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -537,6 +537,7 @@ memory-alpha.fandom.com merklex.io metronom.us metropool.nl +migueldemoura.com mikemaximus.github.io/gbm-web minehut.com miniroyale2.io From 8119be2b8b5016f1e5c9cf56ff4034672c775e32 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 28 Dec 2021 23:31:26 +0000 Subject: [PATCH 168/892] Fix for accuweather.com (#7789) - Resolves #7787 --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c37079b250a6..a984299e6ce2 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -407,6 +407,14 @@ div#product_img.tfa_totp_mode ================================ +accuweather.com + +INVERT +.icon-search +img[src$="arrow-right-black.svg"] + +================================ + acer.com INVERT From e19e4c7bf293b7e7ea8f638f42f31197a1ec0eb0 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Wed, 29 Dec 2021 21:43:38 +0100 Subject: [PATCH 169/892] Fix for dailyexpose.uk (#7791) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a984299e6ce2..df9a36f064f0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3508,6 +3508,13 @@ svg.main-logo.inline-flex g g[fill="#110133"] { ================================ +dailyexpose.uk + +INVERT +.header-image + +================================ + dailymotion.com IGNORE INLINE STYLE From 31bd0f6ed31e923725594b1510c44d0b12692b4b Mon Sep 17 00:00:00 2001 From: FadeMind Date: Wed, 29 Dec 2021 21:44:07 +0100 Subject: [PATCH 170/892] Fix for joemonster.org (#7792) - Invert logo. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index df9a36f064f0..80338358019a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7834,6 +7834,9 @@ CSS joemonster.org +INVERT +.logo + CSS body { background-image: none !important; From d420a1b1b74ab8a801798d210c3860412b59b527 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Wed, 29 Dec 2021 21:45:13 +0100 Subject: [PATCH 171/892] Fix for dnscrypt.pl (#7793) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 80338358019a..19632d1fe37a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4241,6 +4241,13 @@ body { ================================ +dnscrypt.pl + +INVERT +.logo + +================================ + dnsleaktest.com INVERT From 45753c485f79bdc907b64990b56bcf048b6deedc Mon Sep 17 00:00:00 2001 From: FadeMind Date: Wed, 29 Dec 2021 21:46:52 +0100 Subject: [PATCH 172/892] Fix for neowin.net(#7794) - Invert icons. --- src/config/dynamic-theme-fixes.config | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 19632d1fe37a..3526d9afb1b0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10320,6 +10320,10 @@ div[class^="newsSingleBar"] > div[class^="newsSingleBarHeaderWidescreen-category neowin.net +INVERT +.comment-link +.news-view-switcher span + CSS .select option { background-color: #1c1e1f !important; From cb20b33cae94787f5c6b196e9c2c9fd7da8bbc6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20I?= <17483811+Luceoria@users.noreply.github.com> Date: Wed, 29 Dec 2021 21:47:15 +0100 Subject: [PATCH 173/892] Fix for aprs.fi (#7795) - Fix selectors. --- src/config/dynamic-theme-fixes.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 3526d9afb1b0..5adfff1b1baa 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1121,8 +1121,8 @@ INVERT aprs.fi INVERT -.gm-style > :first-child -.gm-style-iw-a +img[src*="maps.googleapis.com/maps/"] +img[src*="tile.openstreetmap.org/"] CSS #panel { From 76c4859b345e69019275d8df0ad50cc0a43240a6 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Wed, 29 Dec 2021 21:48:48 +0100 Subject: [PATCH 174/892] Added dark site (#7797) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index c805d372f83e..46929bac417e 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -957,6 +957,7 @@ wormhole.app wowaudit.com wowhead.com wowinterface.com +wtfast.com www.cc.com www.chiefdelphi.com www.digikam.org From cd32f5d12a0b2729f5b514a00e4680e1ef18683e Mon Sep 17 00:00:00 2001 From: FadeMind Date: Wed, 29 Dec 2021 21:50:55 +0100 Subject: [PATCH 175/892] Fix for 300gospodarka.pl (#7799) - Invert article's avatar. --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5adfff1b1baa..8372d9207fd6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -210,6 +210,7 @@ body, .nav__main { INVERT #logo img[alt="300Gospodarka"] +img[alt="Zespół 300Gospodarki"] ================================ From 394b58ce9d0562e27100b252dd90d987acc35b88 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Wed, 29 Dec 2021 21:52:39 +0100 Subject: [PATCH 176/892] Fix for wiadomoscihandlowe.pl (#7800) - Invert icons. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8372d9207fd6..f5eb86ef6f60 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15861,6 +15861,15 @@ img[src^="logo.gif"] ================================ +wiadomoscihandlowe.pl + +INVERT +.dropdown-portal__link +.hamburger__button span +.search__icon + +================================ + wielkopolskiebilety.pl INVERT From 2e021d8ab8a3b043165404c6c8a8116994783d91 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 29 Dec 2021 22:38:47 +0000 Subject: [PATCH 177/892] Handle inline variables (#7801) - Fix some CI errors. - Allows the handling of inline variables. - Resolves #7775 --- src/inject/dynamic-theme/index.ts | 2 +- src/inject/dynamic-theme/inline-style.ts | 28 +++++++++++++++----- tests/inject/dynamic/fixes.tests.ts | 3 +++ tests/inject/dynamic/image-analysis.tests.ts | 2 +- tests/inject/dynamic/variables.tests.ts | 15 +++++++++++ 5 files changed, 42 insertions(+), 8 deletions(-) diff --git a/src/inject/dynamic-theme/index.ts b/src/inject/dynamic-theme/index.ts index 8354b58e3552..b25f77e9941f 100644 --- a/src/inject/dynamic-theme/index.ts +++ b/src/inject/dynamic-theme/index.ts @@ -371,7 +371,7 @@ function watchForUpdates() { watchForInlineStyles((element) => { overrideInlineStyle(element, filter, ignoredInlineSelectors, ignoredImageAnalysisSelectors); if (element === document.documentElement) { - const styleAttr = element.getAttribute('style'); + const styleAttr = element.getAttribute('style') || ''; if (styleAttr.includes('--')) { variablesStore.matchVariablesAndDependants(); variablesStore.putRootVars(document.head.querySelector('.darkreader--root-vars'), filter); diff --git a/src/inject/dynamic-theme/inline-style.ts b/src/inject/dynamic-theme/inline-style.ts index 5a0cb14d086f..826b665c5c00 100644 --- a/src/inject/dynamic-theme/inline-style.ts +++ b/src/inject/dynamic-theme/inline-style.ts @@ -2,6 +2,7 @@ import {forEach, push} from '../../utils/array'; import {iterateShadowHosts, createOptimizedTreeObserver, isReadyStateComplete, addReadyStateCompleteListener} from '../utils/dom'; import {iterateCSSDeclarations} from './css-rules'; import {getModifiableCSSDeclaration} from './modify-css'; +import type {CSSVariableModifier} from './variables'; import {variablesStore} from './variables'; import type {FilterConfig} from '../../definitions'; import {isShadowDomSupported} from '../../utils/platform'; @@ -251,7 +252,8 @@ export function overrideInlineStyle(element: HTMLElement, theme: FilterConfig, i const unsetProps = new Set(Object.keys(overrides)); function setCustomProp(targetCSSProp: string, modifierCSSProp: string, cssVal: string) { - const {customProp, dataAttr} = overrides[targetCSSProp]; + const isPropertyVariable = targetCSSProp.startsWith('--'); + const {customProp, dataAttr} = isPropertyVariable ? ({} as Overrides['']) : overrides[targetCSSProp]; const mod = getModifiableCSSDeclaration(modifierCSSProp, cssVal, {} as CSSStyleRule, variablesStore, ignoreImageSelectors, null); if (!mod) { @@ -261,11 +263,25 @@ export function overrideInlineStyle(element: HTMLElement, theme: FilterConfig, i if (typeof value === 'function') { value = value(theme) as string; } - element.style.setProperty(customProp, value); - if (!element.hasAttribute(dataAttr)) { - element.setAttribute(dataAttr, ''); + + // typeof value === 'object' always evaluate to true when + // `isPropertyVariable` is true, but it serves as a type hint for typescript. + // Such that `as ReturnType` won't error about the possible + // string type. + if (isPropertyVariable && typeof value === 'object') { + const typedValue = value as ReturnType; + typedValue.declarations.forEach(({property, value}) => { + !(value instanceof Promise) && element.style.setProperty(property, value); + }); + + // TODO: add listener for `onTypeChange`. + } else { + element.style.setProperty(customProp, value); + if (!element.hasAttribute(dataAttr)) { + element.setAttribute(dataAttr, ''); + } + unsetProps.delete(targetCSSProp); } - unsetProps.delete(targetCSSProp); } if (ignoreInlineSelectors.length > 0) { @@ -336,7 +352,7 @@ export function overrideInlineStyle(element: HTMLElement, theme: FilterConfig, i if (property === 'background-image' && value.includes('url')) { return; } - if (overrides.hasOwnProperty(property)) { + if (overrides.hasOwnProperty(property) || (property.startsWith('--') && !normalizedPropList[property])) { setCustomProp(property, property, value); } else { const overridenProp = normalizedPropList[property]; diff --git a/tests/inject/dynamic/fixes.tests.ts b/tests/inject/dynamic/fixes.tests.ts index 56370668e48d..c1627564fddf 100644 --- a/tests/inject/dynamic/fixes.tests.ts +++ b/tests/inject/dynamic/fixes.tests.ts @@ -37,6 +37,7 @@ describe('FIXES', () => { css: '', ignoreInlineStyle: [], ignoreImageAnalysis: [], + disableStyleSheetsProxy: false, }; createOrUpdateDynamicTheme(DEFAULT_THEME, fixes, false); @@ -53,6 +54,7 @@ describe('FIXES', () => { css: '.text { color: red }', ignoreInlineStyle: [], ignoreImageAnalysis: [], + disableStyleSheetsProxy: false, }; createOrUpdateDynamicTheme(DEFAULT_THEME, fixes, false); @@ -69,6 +71,7 @@ describe('FIXES', () => { css: '', ignoreInlineStyle: ['.text'], ignoreImageAnalysis: [], + disableStyleSheetsProxy: false, }; createOrUpdateDynamicTheme(DEFAULT_THEME, fixes, false); diff --git a/tests/inject/dynamic/image-analysis.tests.ts b/tests/inject/dynamic/image-analysis.tests.ts index 015a1f3c09bf..d66885f3a459 100644 --- a/tests/inject/dynamic/image-analysis.tests.ts +++ b/tests/inject/dynamic/image-analysis.tests.ts @@ -232,7 +232,7 @@ describe('IMAGE ANALYSIS', () => { css: '', ignoreInlineStyle: ['.'], ignoreImageAnalysis: ['*'], - + disableStyleSheetsProxy: false, }; createOrUpdateDynamicTheme(theme, fixes, false); const backgroundImage = getComputedStyle(container.querySelector('i')).backgroundImage; diff --git a/tests/inject/dynamic/variables.tests.ts b/tests/inject/dynamic/variables.tests.ts index 3db6bc638709..2d65e7acbc44 100644 --- a/tests/inject/dynamic/variables.tests.ts +++ b/tests/inject/dynamic/variables.tests.ts @@ -1262,4 +1262,19 @@ describe('CSS VARIABLES OVERRIDE', () => { expect(elementStyle.borderColor).toBe('rgb(91, 91, 91)'); } }); + + it('should modify inline variable', () => { + container.innerHTML = multiline( + '', + '

Raw values are spooky

', + ); + createOrUpdateDynamicTheme(theme, null, false); + + const elementStyle = getComputedStyle(container.querySelector('h1')); + expect(elementStyle.backgroundColor).toBe('rgb(204, 0, 0)'); + }); }); From 28b9a8790a0167e157e1a75c7eddb77e373f6e9d Mon Sep 17 00:00:00 2001 From: 4xx22 <17505454+4xx22@users.noreply.github.com> Date: Sat, 1 Jan 2022 19:53:48 +0100 Subject: [PATCH 178/892] Added dark sites (#7798) Co-authored-by: Gusted --- src/config/dark-sites.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 46929bac417e..bc57c3b2d0ed 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -567,6 +567,9 @@ mypodficacademia.com n-o-d-e.net namechk.com nanhu.ca +nationsglory.com +nationsglory.es +nationsglory.fr nchristopher.me neal.fun/size-of-space nee.lv From 6524a0c109b64e8fdbd23fe8bbf11e3847b2865f Mon Sep 17 00:00:00 2001 From: xxyzz Date: Sun, 2 Jan 2022 02:55:31 +0800 Subject: [PATCH 179/892] Fix for wikipedia.org (#7796) - Invert footer logo. - Invert note icon. --- src/config/dynamic-theme-fixes.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index f5eb86ef6f60..1cea1fea2177 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16041,6 +16041,8 @@ div.post-content.footer-content > h2 > img .mw-hiero-outer.mw-hiero-table #p-logo-text body > .oo-ui-windowManager .vega .marks +.minerva-footer-logo img +.music-symbol CSS .mwe-popups-discreet > svg, From e2dec782f25aefd72a8bdccb4eb0987c16b67a61 Mon Sep 17 00:00:00 2001 From: "H. J. Poe" <35583004+hjpoe@users.noreply.github.com> Date: Sat, 1 Jan 2022 14:06:35 -0500 Subject: [PATCH 180/892] Fix for discover.com (#7806) - Invert logo. - Invert icon. --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1cea1fea2177..4b178dd95e4b 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4079,6 +4079,20 @@ INVERT ================================ +discover.com + +INVERT +img#flag +i.icon-help +i.icon-search +i.lock-icon +div.welcome-text-wrapper +div.slide--img.credit-card +div.slide--img.personal-loan +div.slide--img.home-loan + +================================ + discover.forem.com INVERT From 426012a4050f1e2d3557d2ae209d634c91cdcff1 Mon Sep 17 00:00:00 2001 From: Ashish Panigrahi Date: Sun, 2 Jan 2022 00:48:23 +0530 Subject: [PATCH 181/892] Remove dark site (#7810) --- src/config/dark-sites.config | 1 - 1 file changed, 1 deletion(-) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index bc57c3b2d0ed..e8f79ec51b6b 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -53,7 +53,6 @@ artofkeys.com as2.aiae.ovh asciimation.co.nz asherhe.com -ashishpanigrahi.me asoftmurmur.com aspenuwu.me ass.rip From 8e10a8335e3441fc094d52ff78d93e1397f6a29f Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sat, 1 Jan 2022 20:31:12 +0100 Subject: [PATCH 182/892] Fix for forum.dobreprogramy.pl (#7812) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4b178dd95e4b..8e0cb3d00d14 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5743,6 +5743,13 @@ CSS ================================ +forum.dobreprogramy.pl + +INVERT +#site-logo + +================================ + forum.donanimhaber.com CSS From 5f1e368d5047ce76961e8deb76edb7fb491f026a Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Sat, 1 Jan 2022 22:34:27 +0300 Subject: [PATCH 183/892] Fix for rt.ru (#7813) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8e0cb3d00d14..2c944cf9ed4c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12465,6 +12465,13 @@ IGNORE IMAGE ANALYSIS ================================ +rt.ru + +INVERT +#logo_text + +================================ + rtlnieuws.nl CSS From a3675f330b3f3c77f3764a800a0c733b6e64f8c6 Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Sat, 1 Jan 2022 22:34:47 +0300 Subject: [PATCH 184/892] Fix for eapteka.ru (#7814) - Invert map. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2c944cf9ed4c..20f5b3d88cbd 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4721,6 +4721,14 @@ body.origin-com, ================================ +eapteka.ru + +INVERT +ymaps[class$="ground-pane"] +ymaps[class$="svg-icon-content"] > ymaps + +================================ + easypost.com INVERT From f2675ef1c09b4dbfaa27a2a63ef418d8063a28bf Mon Sep 17 00:00:00 2001 From: Samuel Gfeller <31797204+samuelgfeller@users.noreply.github.com> Date: Sat, 1 Jan 2022 20:35:23 +0100 Subject: [PATCH 185/892] Fix for jira (#7705) - Fix outer border. --- src/config/dynamic-theme-fixes.config | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 20f5b3d88cbd..91f79738164d 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1365,6 +1365,10 @@ span.loader-wrapper a, code:first-of-type { background-image: linear-gradient(to right, rgba(255,255,255,0.03),rgba(255,255,255,0.03)calc(1ch + 16px),transparent calc(1ch + 16px),transparent) !important; } +.sc-1jjaulc-0 { + box-shadow: 0 0 4px ${rgba(3,9,15,0.15)} !important; + background-color: ${rgba(3, 9, 15, 0.02)} !important; +} .ak-editor-panel[data-panel-type="note"] { background-color: ${rgb(217, 200, 228)} !important; } From 582d6900bac2ccc7373204a6ece3da67b99db12f Mon Sep 17 00:00:00 2001 From: Roman Hauksson-Neill <62364808+RomanHN@users.noreply.github.com> Date: Sat, 1 Jan 2022 13:38:10 -0600 Subject: [PATCH 186/892] Added dark sites (#7815) --- src/config/dark-sites.config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index e8f79ec51b6b..0304278e36c1 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -304,6 +304,7 @@ factorio.com factoriobin.com femto.dev femto.pw +fictivekin.com filterblade.xyz filterlists.com find.lolpros.gg @@ -736,7 +737,7 @@ ripped.guide robofight.io rocketleagueesports.com roleypoly.com -romanhn.github.io +roman.hn romefrontend.dev roosterteeth.fandom.com router.asus.com From 7121cb426f664da433c284ce50f6aed86c646708 Mon Sep 17 00:00:00 2001 From: Mukundan Senthil Date: Sun, 2 Jan 2022 01:38:18 +0530 Subject: [PATCH 187/892] Fix for sw.kovidgoyal.net (#7820) - Fix sidebar. --- src/config/dynamic-theme-fixes.config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 91f79738164d..fccf9b008856 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14054,7 +14054,8 @@ sw.kovidgoyal.net CSS .sidebar-drawer, -.sidebar-search { +.sidebar-search, +.toc-drawer { background: var(--darkreader-neutral-background) !important; } .sidebar-tree a.current, From 31f6e252f37c5ff76b1f10e42ec7558208598c07 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sat, 1 Jan 2022 21:09:25 +0100 Subject: [PATCH 188/892] Fix for sadanduseless.com (#7821) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index fccf9b008856..02f4e50b037b 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12561,6 +12561,13 @@ INVERT ================================ +sadanduseless.com + +INVERT +.logo1 + +================================ + saladelcembalo.org INVERT From 1c24964cd195ba23641b3fe703c6e094555ca114 Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Sat, 1 Jan 2022 23:09:46 +0300 Subject: [PATCH 189/892] Fix for journal.tinkoff.ru (#7822) - Invert hamburger menu. --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 02f4e50b037b..55b573c4c9fc 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7906,6 +7906,7 @@ INVERT .PwECA .best-authors__arrow.best-authors__arrow--active .best-authors__arrow +label[class^="hamburgerMenu"] ================================ From 22639e4ab4a8d4e87933cd3f7d91684c1e594a38 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sat, 1 Jan 2022 21:10:39 +0100 Subject: [PATCH 190/892] Fix for status.epicgames.com (#7805) - Invert logo. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 55b573c4c9fc..506aac062a6e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13598,6 +13598,13 @@ table > tbody > tr > td { ================================ +status.epicgames.com + +INVERT +div.eg-shield.white + +================================ + status.npmjs.org INVERT From fd09fe8952e52b5a585beb1768a9c794a7b278c9 Mon Sep 17 00:00:00 2001 From: Nikita Panuhin Date: Sat, 1 Jan 2022 23:51:25 +0300 Subject: [PATCH 191/892] Fixed TeX display on habr.com, codeforces.com and science.fandom.com (#7715) --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 506aac062a6e..d56a38231612 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2931,6 +2931,7 @@ INVERT .delete-resource-link .action-link img .non-decorated img[src$="tablesorter-bg.gif"] +.tex-formula CSS .datatable, @@ -6926,6 +6927,7 @@ habr.com INVERT img[src*="//tex.s2cms.ru/"] +img[data-tex] CSS html { @@ -12655,6 +12657,13 @@ IGNORE IMAGE ANALYSIS ================================ +science.fandom.com + +INVERT +.mwe-math-fallback-image-inline + +================================ + science.org INVERT From f21ef87fd23401fe57c7cab3f2e4b1cd1f8b340c Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 1 Jan 2022 20:51:31 +0000 Subject: [PATCH 192/892] Fix for wikiless.org (#7824) - Resolves #7823 --- src/config/dynamic-theme-fixes.config | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d56a38231612..1a328848a632 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16041,13 +16041,6 @@ IGNORE IMAGE ANALYSIS ================================ -wikiless.org - -INVERT -.mw-wiki-logo - -================================ - wikimapia.org INVERT @@ -16090,6 +16083,7 @@ INVERT ================================ wikipedia.org +wikiless.org INVERT .mwe-math-fallback-image-inline From d5ba2fe60d6e16e8a285eadd5d5d2dffcc9457a1 Mon Sep 17 00:00:00 2001 From: Isaac <72410860+isaec@users.noreply.github.com> Date: Sat, 1 Jan 2022 13:59:59 -0800 Subject: [PATCH 193/892] Fix for stackoverflow.com (#7825) - Fix notice. - Fix rpg logo. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1a328848a632..ec6ade268963 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13486,8 +13486,11 @@ INVERT .h-auto[alt="Theoretical Computer Science"] .h-auto[alt="Unix & Linux"] .h-auto[alt="Web Applications"] +.h-auto[alt="Role-playing Games"] a.js-gps-track::before img[alt="The Stack Exchange Network"] +aside.s-notice +aside.s-notice > * CSS body { From 3b89c354ce425823c27d6c58ab049e8ee8980b84 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 2 Jan 2022 13:51:57 +0100 Subject: [PATCH 194/892] Fix for allegro.pl (#7819) - Fix SMART logo. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ec6ade268963..10ca3ed46173 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -639,8 +639,10 @@ allegro.pl INVERT i[title="Smart!"] +[alt*="smart" i] div[class="mpof_ki m389_6m"] img[alt="Zakup z pakietem Smart"] +div.sob6jg.so1d89.mpof_ki .so15i8 CSS From ee67e6d432abc40351ce56aa904e6927755b882e Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 2 Jan 2022 13:58:36 +0100 Subject: [PATCH 195/892] Fix for ceneo.pl (#7811) - Invert icon. --- src/config/dynamic-theme-fixes.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 10ca3ed46173..ed295d3c8d48 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2536,6 +2536,8 @@ ceneo.pl INVERT [data-new-icon]::before +.cat-prod-row__product-link::after +.add-to-favorite::after ================================ From 077310b7bc94bd87270a601d30b1ce6a550d4b0b Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 2 Jan 2022 14:08:04 +0100 Subject: [PATCH 196/892] Fix for niestatystyczny.pl (#7735) - Invert logo. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ed295d3c8d48..659992f26c74 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10485,6 +10485,13 @@ img[src*="hashpower@2x] ================================ +niestatystyczny.pl + +INVERT +div#logo > h1 > a > img + +================================ + nirsoft.net CSS From f16dc4bee583d89338e50d91b7bb7ba7e30a0b48 Mon Sep 17 00:00:00 2001 From: xxyzz Date: Sun, 2 Jan 2022 21:32:20 +0800 Subject: [PATCH 197/892] Fix for zh.wikipedia.org (#7828) - Fix citation needed mark. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 659992f26c74..761d126263d6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16168,6 +16168,9 @@ body.mediawiki, #dialogEngineContainer #dialogEngineDialog { background-color: var(--darkreader-neutral-background) !important; } +.template-facttext { + background-color: #eaecf0 !important; +} IGNORE INLINE STYLE .legend-color From 4cfd1bb7031c2a4b2abba542b6d655c5e885a6cb Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Sun, 2 Jan 2022 18:39:42 +0300 Subject: [PATCH 198/892] Fix for amazingmarvin.com (#7829) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 761d126263d6..de28434172ce 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -706,6 +706,13 @@ INVERT ================================ +amazingmarvin.com + +INVERT +.header-title + +================================ + amazon.* amazon.*.* From da3497443e12fb5708e179012225963653a783fe Mon Sep 17 00:00:00 2001 From: Ashish Panigrahi Date: Sun, 2 Jan 2022 23:09:46 +0530 Subject: [PATCH 199/892] Added dark sites (#7809) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 0304278e36c1..4e911ae56a9f 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -489,6 +489,7 @@ kwejk.pl kyleggiero.me lagom.nl/lcd-test lainchan.org +landchad.net larbs.xyz lbrynomics.com leakedsource.ru From a7f4b0c7a1e83c2bcf84b62df0db1535f68840ac Mon Sep 17 00:00:00 2001 From: Ashish Panigrahi Date: Sun, 2 Jan 2022 23:11:01 +0530 Subject: [PATCH 200/892] Added dark sites (#7830) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 4e911ae56a9f..f51edc64b0c2 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -53,6 +53,7 @@ artofkeys.com as2.aiae.ovh asciimation.co.nz asherhe.com +ashishpanigrahi.xyz asoftmurmur.com aspenuwu.me ass.rip From 54e5a685d222f5e14929d4183d364520e9a42fc8 Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Mon, 3 Jan 2022 00:06:05 +0300 Subject: [PATCH 201/892] Fix for apteka.ru (#7831) - Invert map. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index de28434172ce..6afd69f6b3b6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1141,6 +1141,13 @@ CSS ================================ +apteka.ru + +INVERT +ymaps[class$="ground-pane"] + +================================ + aras.com CSS From abc9e8701e8c6fe42f20e6e4904445fab8ac5f2b Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Mon, 3 Jan 2022 00:17:09 +0300 Subject: [PATCH 202/892] Fix for apteka.ru (#7832) - Invert logo. --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 6afd69f6b3b6..41144cd8a224 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1145,6 +1145,7 @@ apteka.ru INVERT ymaps[class$="ground-pane"] +.icon--logo ================================ From 88d4e479d4b74ef312ba651ee6f5c49c13683ab5 Mon Sep 17 00:00:00 2001 From: David Marrero Date: Mon, 3 Jan 2022 08:05:34 -0500 Subject: [PATCH 203/892] Added dark site (#7833) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index f51edc64b0c2..b2b541e17680 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -736,6 +736,7 @@ returnyoutubedislike.com reveddit.com revolt.chat ripped.guide +rl6mans.com robofight.io rocketleagueesports.com roleypoly.com From 89ebb1755e0b5f379e1d1ee0cd1cd7b9bd9c1e54 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Mon, 3 Jan 2022 05:07:45 -0800 Subject: [PATCH 204/892] Fix for iconfinder.com (#7835) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 41144cd8a224..1ebe6f75a406 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7250,6 +7250,13 @@ INVERT ================================ +iconfinder.com + +INVERT +.logo + +================================ + iconify.design IGNORE INLINE STYLE From 6b54a6365c818030c127665d14010a13d4037ee6 Mon Sep 17 00:00:00 2001 From: Get0457 <41405393+Get0457@users.noreply.github.com> Date: Mon, 3 Jan 2022 20:08:35 +0700 Subject: [PATCH 205/892] Fix for app.grammarly.com (#7803) - Fix highlighting. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1ebe6f75a406..15d75153d330 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1005,8 +1005,23 @@ CSS use.valueCircle_f6otssy { stroke: url(#pb-gradient-0); } +:root { + --highlight-bg: ${rgba(0, 0, 0, 0.2)} +} +.alerts-clarity { + --highlight-bg: ${rgba(57, 93, 207, 0.2)}; +} +.alerts-engagement { + --highlight-bg: ${rgba(29, 203, 162, 0.2)}; +} +.alerts-correctness { + --highlight-bg: ${rgba(255, 69, 103, 0.2)}; +} +.alerts-delivery { + --highlight-bg: ${rgba(124, 58, 172, 0.2)}; +} [class*="-alerts-markSelectedHigh"], span[class*="markSelectedFocused"] { - color: rgb(14, 16, 26) !important; + background-color: var(--highlight-bg) !important; } [class*="-navigation-counterWrapper"] [class*="-navigation-counterContent"], [class*="-paidview-counter"] [class*="-paidview-counterContent"] { From d7e163bb7a910bc1faa19bba4c9855ea8bb2c954 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 3 Jan 2022 14:10:18 +0000 Subject: [PATCH 206/892] Use fullpath for files (#4346) - Use fullpath for `file:` URL's. - Resolves #4345 --- src/utils/url.ts | 2 ++ tests/utils/url.tests.ts | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/utils/url.ts b/src/utils/url.ts index 032dbfebad4f..f4cdce839b9e 100644 --- a/src/utils/url.ts +++ b/src/utils/url.ts @@ -72,6 +72,8 @@ export function getURLHostOrProtocol($url: string) { const url = new URL($url); if (url.host) { return url.host; + } else if (url.protocol === 'file:') { + return url.pathname; } return url.protocol; } diff --git a/tests/utils/url.tests.ts b/tests/utils/url.tests.ts index 7ebdcad11ba9..5ccc804642e9 100644 --- a/tests/utils/url.tests.ts +++ b/tests/utils/url.tests.ts @@ -254,7 +254,7 @@ test('Get URL host or protocol', () => { expect(getURLHostOrProtocol('about:blank')).toBe('about:'); expect(getURLHostOrProtocol('http://user:pass@www.example.org')).toBe('www.example.org'); expect(getURLHostOrProtocol('data:text/html,Hello')).toBe('data:'); - expect(getURLHostOrProtocol('file:///Users/index.html')).toBe('file:'); + expect(getURLHostOrProtocol('file:///Users/index.html')).toBe('/Users/index.html'); }); test('Absolute URL', () => { From d4ada941ded070529a95c1a2d8cb102959439229 Mon Sep 17 00:00:00 2001 From: Cristhian Diaz Date: Mon, 3 Jan 2022 11:45:52 -0600 Subject: [PATCH 207/892] Fix for notebooks.githubusercontent.com/view (#7764) - Fix viewing jupyter notebooks. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 15d75153d330..8994780dbe69 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10583,6 +10583,17 @@ IGNORE IMAGE ANALYSIS ================================ +notebooks.githubusercontent.com/view/ipynb* + +CSS +.jp-CodeConsole .CodeMirror.cm-s-jupyter, +.jp-Notebook .CodeMirror.cm-s-jupyter, +.highlight { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + notion.so INVERT From 604d9f5cbf0ebc33f5ad9c9ea3fe605024d65596 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 3 Jan 2022 21:05:39 +0000 Subject: [PATCH 208/892] feat: better logging on sync read failure (#7839) - Because of #7838 --- src/background/utils/extension-api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/background/utils/extension-api.ts b/src/background/utils/extension-api.ts index b13a26f00197..89b7591bf6c5 100644 --- a/src/background/utils/extension-api.ts +++ b/src/background/utils/extension-api.ts @@ -68,7 +68,7 @@ export async function readSyncStorage(defaults: try { sync[key] = JSON.parse(string); } catch (error) { - console.error('Could not parse record from sync storage', string); + console.error(`sync[${key}]: Could not parse record from sync storage: ${string}`); } } From b3b6c934bde83cc8ff47e2f1adc5c5be137f7042 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 3 Jan 2022 21:20:14 +0000 Subject: [PATCH 209/892] Add debounce to shortcut (#5726) - Resolves #5725 --- src/background/extension.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/background/extension.ts b/src/background/extension.ts index 15cb772b429f..1a40eeb7bd9d 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -22,6 +22,7 @@ import {MessageType} from '../utils/message'; import {logInfo, logWarn} from '../utils/log'; import {PromiseBarrier} from '../utils/promise-barrier'; import {StateManager} from './utils/state-manager'; +import {debounce} from '../utils/debounce'; interface ExtensionState { isEnabled: boolean; @@ -245,7 +246,7 @@ export class Extension { }; } - onCommand = async (command: string, frameURL?: string) => { + private onCommandInternal = async (command: string, frameURL?: string) => { if (this.startBarrier.isPending()) { await this.startBarrier.entry(); } @@ -278,6 +279,10 @@ export class Extension { } }; + // 75 is small enough to not notice it, and still catches when someone + // is holding down a certain shortcut. + onCommand = debounce(75, this.onCommandInternal); + private registerContextMenus() { const onCommandToggle = async () => this.onCommand('toggle'); const onCommandAddSite = async (data: chrome.contextMenus.OnClickData) => this.onCommand('addSite', data.frameUrl); From a9e7072927ad7c788337005929b3081a69007b19 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Mon, 3 Jan 2022 21:57:26 +0000 Subject: [PATCH 210/892] Removed HTML bundles generation (#7841) Simply copy HTML files to bundles without generation. Anyway that generated very small pieces of HTML for Popup page, but required using unstable plugins like `ts-node` and `tsconfig-paths`. --- package-lock.json | 84 ++++++++++++++++++++++------- package.json | 2 - src/ui/devtools/index.html | 2 +- src/ui/popup/index.html | 6 ++- src/ui/stylesheet-editor/index.html | 2 +- tasks/bundle-html.js | 83 ++++------------------------ 6 files changed, 81 insertions(+), 98 deletions(-) diff --git a/package-lock.json b/package-lock.json index b39f2c20e810..899dd355a7ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "packages": { "": { "name": "darkreader", - "version": "4.9.42", + "version": "4.9.43", "license": "MIT", "devDependencies": { "@rollup/plugin-node-resolve": "13.0.6", @@ -43,8 +43,6 @@ "rollup-plugin-istanbul2": "2.0.2", "rollup-plugin-typescript2": "0.31.1", "ts-jest": "27.0.7", - "ts-node": "10.4.0", - "tsconfig-paths": "3.11.0", "tslib": "2.3.1", "typescript": "4.4.4", "web-ext": "6.5.0", @@ -619,6 +617,8 @@ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">= 12" } @@ -628,6 +628,8 @@ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@cspotcode/source-map-consumer": "0.8.0" }, @@ -1263,25 +1265,33 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@tsconfig/node12": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@tsconfig/node14": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@tsconfig/node16": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@types/babel__core": { "version": "7.1.16", @@ -2436,7 +2446,9 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/argparse": { "version": "2.0.1", @@ -3610,7 +3622,9 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -4191,6 +4205,8 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.3.1" } @@ -11755,6 +11771,8 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@cspotcode/source-map-support": "0.7.0", "@tsconfig/node10": "^1.0.7", @@ -11796,6 +11814,8 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.4.0" } @@ -12666,6 +12686,8 @@ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=6" } @@ -13169,13 +13191,17 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "@cspotcode/source-map-support": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", "dev": true, + "optional": true, + "peer": true, "requires": { "@cspotcode/source-map-consumer": "0.8.0" } @@ -13686,25 +13712,33 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "@tsconfig/node12": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "@tsconfig/node14": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "@tsconfig/node16": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "@types/babel__core": { "version": "7.1.16", @@ -14610,7 +14644,9 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "argparse": { "version": "2.0.1", @@ -15543,7 +15579,9 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "cross-spawn": { "version": "7.0.3", @@ -16015,7 +16053,9 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "diff-sequences": { "version": "27.0.6", @@ -21902,6 +21942,8 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", "dev": true, + "optional": true, + "peer": true, "requires": { "@cspotcode/source-map-support": "0.7.0", "@tsconfig/node10": "^1.0.7", @@ -21921,7 +21963,9 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true + "dev": true, + "optional": true, + "peer": true } } }, @@ -22593,7 +22637,9 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "yocto-queue": { "version": "0.1.0", diff --git a/package.json b/package.json index 20f92bb5c9ae..383619bf2ba6 100644 --- a/package.json +++ b/package.json @@ -98,8 +98,6 @@ "rollup-plugin-istanbul2": "2.0.2", "rollup-plugin-typescript2": "0.31.1", "ts-jest": "27.0.7", - "ts-node": "10.4.0", - "tsconfig-paths": "3.11.0", "tslib": "2.3.1", "typescript": "4.4.4", "web-ext": "6.5.0", diff --git a/src/ui/devtools/index.html b/src/ui/devtools/index.html index 372750087bb4..b825c5655e16 100644 --- a/src/ui/devtools/index.html +++ b/src/ui/devtools/index.html @@ -11,6 +11,6 @@ -$BODY + diff --git a/src/ui/popup/index.html b/src/ui/popup/index.html index 511c16962823..f22c43c88623 100644 --- a/src/ui/popup/index.html +++ b/src/ui/popup/index.html @@ -12,6 +12,10 @@ -$BODY + +
+ +
+ diff --git a/src/ui/stylesheet-editor/index.html b/src/ui/stylesheet-editor/index.html index eadceace5aaf..728037da7a36 100644 --- a/src/ui/stylesheet-editor/index.html +++ b/src/ui/stylesheet-editor/index.html @@ -10,6 +10,6 @@ -$BODY + diff --git a/tasks/bundle-html.js b/tasks/bundle-html.js index 1fcf9af09193..08916cc813bc 100644 --- a/tasks/bundle-html.js +++ b/tasks/bundle-html.js @@ -1,82 +1,17 @@ +// @ts-check const fs = require('fs-extra'); const {getDestDir, PLATFORM} = require('./paths'); const reload = require('./reload'); const {createTask} = require('./task'); -const enLocale = fs.readFileSync('src/_locales/en.config', {encoding: 'utf8'}).replace(/^#.*?$/gm, ''); -global.chrome = global.chrome || {}; -global.chrome.i18n = global.chrome.i18n || {}; -global.chrome.i18n.getMessage = global.chrome.i18n.getMessage || ((name) => { - const index = enLocale.indexOf(`@${name}`); - if (index < 0) { - throw new Error(`Message @${name} not found`); - } - const start = index + name.length + 1; - let end = enLocale.indexOf('@', start); - if (end < 0) { - end = enLocale.length; - } - const message = enLocale.substring(start, end).trim(); - return message; -}); -global.chrome.i18n.getUILanguage = global.chrome.i18n.getUILanguage || (() => 'en-US'); - -const tsConfig = require('../src/tsconfig.json'); -require('ts-node').register({ - transpileOnly: true, - compilerOptions: { - ...tsConfig.compilerOptions, - module: 'commonjs', - }, -}); -require('tsconfig-paths').register({ - baseUrl: './', - paths: { - 'malevic/*': ['node_modules/malevic/umd/*'], - 'malevic': ['node_modules/malevic/umd/index'], - } -}); -const Malevic = require('malevic/umd/index'); -const MalevicString = require('malevic/umd/string'); -const DevToolsBody = require('../src/ui/devtools/components/body').default; -const PopupBody = require('../src/ui/popup/components/body').default; -const CSSEditorBody = require('../src/ui/stylesheet-editor/components/body').default; -const {getMockData, getMockActiveTabInfo} = require('../src/ui/connect/mock'); - const pages = [ - { - cwdPath: 'ui/popup/index.html', - rootComponent: PopupBody, - props: { - data: getMockData({isReady: false}), - tab: getMockActiveTabInfo(), - actions: null, - }, - }, - { - cwdPath: 'ui/devtools/index.html', - rootComponent: DevToolsBody, - props: { - data: getMockData({isReady: false}), - tab: getMockActiveTabInfo(), - actions: null, - }, - }, - { - cwdPath: 'ui/stylesheet-editor/index.html', - rootComponent: CSSEditorBody, - props: { - data: getMockData({isReady: false}), - tab: getMockActiveTabInfo(), - actions: null, - }, - }, + 'ui/popup/index.html', + 'ui/devtools/index.html', + 'ui/stylesheet-editor/index.html', ]; -async function bundleHTMLPage({cwdPath, rootComponent, props}, {debug}) { +async function bundleHTMLPage({cwdPath}, {debug}) { let html = await fs.readFile(`src/${cwdPath}`, 'utf8'); - const bodyText = MalevicString.stringify(Malevic.m(rootComponent, props)); - html = html.replace('$BODY', bodyText); const getPath = (dir) => `${dir}/${cwdPath}`; const outPath = getPath(getDestDir({debug, platform: PLATFORM.CHROME})); @@ -91,7 +26,7 @@ async function bundleHTMLPage({cwdPath, rootComponent, props}, {debug}) { async function bundleHTML({debug}) { for (const page of pages) { - await bundleHTMLPage(page, {debug}); + await bundleHTMLPage({cwdPath: page}, {debug}); } } @@ -102,8 +37,8 @@ function getSrcPath(cwdPath) { async function rebuildHTML(changedFiles) { await Promise.all( pages - .filter((page) => changedFiles.some((changed) => changed === getSrcPath(page.cwdPath))) - .map((page) => bundleHTMLPage(page, {debug: true})) + .filter((page) => changedFiles.some((changed) => changed === getSrcPath(page))) + .map((page) => bundleHTMLPage({cwdPath: page}, {debug: true})) ); } @@ -111,7 +46,7 @@ module.exports = createTask( 'bundle-html', bundleHTML, ).addWatcher( - pages.map((page) => getSrcPath(page.cwdPath)), + pages.map((page) => getSrcPath(page)), async (changedFiles) => { await rebuildHTML(changedFiles); reload({type: reload.UI}); From 2f975d19d0b346cd6ab14404712021f1abc2312e Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Mon, 3 Jan 2022 22:18:35 +0000 Subject: [PATCH 211/892] Update dev dependencies (#7842) Starting the New Year with a new `package-lock.json` file. --- package-lock.json | 4226 ++++++++++++++++++++------------------------- package.json | 46 +- 2 files changed, 1881 insertions(+), 2391 deletions(-) diff --git a/package-lock.json b/package-lock.json index 899dd355a7ef..b8f623dc537d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,44 +9,44 @@ "version": "4.9.43", "license": "MIT", "devDependencies": { - "@rollup/plugin-node-resolve": "13.0.6", - "@rollup/plugin-replace": "3.0.0", - "@rollup/pluginutils": "4.1.1", - "@types/chrome": "0.0.162", - "@types/jasmine": "3.10.1", - "@types/jest": "27.0.2", + "@rollup/plugin-node-resolve": "13.1.2", + "@rollup/plugin-replace": "3.0.1", + "@rollup/pluginutils": "4.1.2", + "@types/chrome": "0.0.174", + "@types/jasmine": "3.10.3", + "@types/jest": "27.4.0", "@types/karma": "6.3.1", - "@types/node": "16.11.6", + "@types/node": "17.0.7", "@types/offscreencanvas": "2019.6.4", - "@typescript-eslint/eslint-plugin": "5.3.0", - "@typescript-eslint/parser": "5.3.0", + "@typescript-eslint/eslint-plugin": "5.9.0", + "@typescript-eslint/parser": "5.9.0", "chokidar": "3.5.2", - "eslint": "8.1.0", - "eslint-plugin-import": "2.25.2", + "eslint": "8.6.0", + "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", "fs-extra": "10.0.0", - "globby": "11.0.4", - "jasmine-core": "3.10.1", - "jest": "27.3.1", - "karma": "6.3.7", + "globby": "12.0.2", + "jasmine-core": "4.0.0", + "jest": "27.4.5", + "karma": "6.3.9", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.0.3", + "karma-coverage": "2.1.0", "karma-firefox-launcher": "2.1.2", "karma-jasmine": "4.0.1", "karma-rollup-preprocessor": "7.0.7", "karma-safari-launcher": "1.0.0", "less": "4.1.2", "malevic": "0.18.6", - "prettier": "2.4.1", - "puppeteer-core": "10.4.0", - "rollup": "2.59.0", + "prettier": "2.5.1", + "puppeteer-core": "13.0.1", + "rollup": "2.62.0", "rollup-plugin-istanbul2": "2.0.2", "rollup-plugin-typescript2": "0.31.1", - "ts-jest": "27.0.7", + "ts-jest": "27.1.2", "tslib": "2.3.1", - "typescript": "4.4.4", - "web-ext": "6.5.0", - "ws": "8.2.3", + "typescript": "4.5.4", + "web-ext": "6.6.0", + "ws": "8.4.0", "yazl": "2.5.1" }, "funding": { @@ -228,9 +228,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", "dev": true, "engines": { "node": ">=6.9.0" @@ -537,12 +537,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", - "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -612,31 +612,6 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@cspotcode/source-map-consumer": "0.8.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@devicefarmer/adbkit": { "version": "2.11.3", "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit/-/adbkit-2.11.3.tgz", @@ -695,18 +670,18 @@ "dev": true }, "node_modules/@eslint/eslintrc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.3.tgz", - "integrity": "sha512-DHI1wDPoKCBPoLZA3qDR91+3te/wDSc1YhKg3jR8NxKKRJq2hwHwcWv31cSwSYvIBrmbENoYMWcenW8uproQqg==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", + "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.0.0", + "espree": "^9.2.0", "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, @@ -714,19 +689,10 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -740,26 +706,13 @@ } } }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/@humanwhocodes/config-array": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", - "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", + "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.4" }, @@ -768,9 +721,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { @@ -830,16 +783,16 @@ } }, "node_modules/@jest/console": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz", - "integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.4.2.tgz", + "integrity": "sha512-xknHThRsPB/To1FUbi6pCe43y58qFC03zfb6R7fDb/FfC7k2R3i1l+izRBJf8DI46KhYGRaF14Eo9A3qbBoixg==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.3.1", - "jest-util": "^27.3.1", + "jest-message-util": "^27.4.2", + "jest-util": "^27.4.2", "slash": "^3.0.0" }, "engines": { @@ -847,35 +800,35 @@ } }, "node_modules/@jest/core": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz", - "integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.4.5.tgz", + "integrity": "sha512-3tm/Pevmi8bDsgvo73nX8p/WPng6KWlCyScW10FPEoN1HU4pwI83tJ3TsFvi1FfzsjwUlMNEPowgb/rPau/LTQ==", "dev": true, "dependencies": { - "@jest/console": "^27.3.1", - "@jest/reporters": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.4.2", + "@jest/reporters": "^27.4.5", + "@jest/test-result": "^27.4.2", + "@jest/transform": "^27.4.5", + "@jest/types": "^27.4.2", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.3.0", - "jest-config": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-resolve-dependencies": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "jest-watcher": "^27.3.1", + "jest-changed-files": "^27.4.2", + "jest-config": "^27.4.5", + "jest-haste-map": "^27.4.5", + "jest-message-util": "^27.4.2", + "jest-regex-util": "^27.4.0", + "jest-resolve": "^27.4.5", + "jest-resolve-dependencies": "^27.4.5", + "jest-runner": "^27.4.5", + "jest-runtime": "^27.4.5", + "jest-snapshot": "^27.4.5", + "jest-util": "^27.4.2", + "jest-validate": "^27.4.2", + "jest-watcher": "^27.4.2", "micromatch": "^4.0.4", "rimraf": "^3.0.0", "slash": "^3.0.0", @@ -894,62 +847,62 @@ } }, "node_modules/@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "version": "27.4.4", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.4.4.tgz", + "integrity": "sha512-q+niMx7cJgt/t/b6dzLOh4W8Ef/8VyKG7hxASK39jakijJzbFBGpptx3RXz13FFV7OishQ9lTbv+dQ5K3EhfDQ==", "dev": true, "dependencies": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/fake-timers": "^27.4.2", + "@jest/types": "^27.4.2", "@types/node": "*", - "jest-mock": "^27.3.0" + "jest-mock": "^27.4.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.2.tgz", + "integrity": "sha512-f/Xpzn5YQk5adtqBgvw1V6bF8Nx3hY0OIRRpCvWcfPl0EAjdqWPdhH3t/3XpiWZqtjIEHDyMKP9ajpva1l4Zmg==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" + "jest-message-util": "^27.4.2", + "jest-mock": "^27.4.2", + "jest-util": "^27.4.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/globals": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz", - "integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==", + "version": "27.4.4", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.4.4.tgz", + "integrity": "sha512-bqpqQhW30BOreXM8bA8t8JbOQzsq/WnPTnBl+It3UxAD9J8yxEAaBEylHx1dtBapAr/UBk8GidXbzmqnee8tYQ==", "dev": true, "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/types": "^27.2.5", - "expect": "^27.3.1" + "@jest/environment": "^27.4.4", + "@jest/types": "^27.4.2", + "expect": "^27.4.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/reporters": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz", - "integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.5.tgz", + "integrity": "sha512-3orsG4vi8zXuBqEoy2LbnC1kuvkg1KQUgqNxmxpQgIOQEPeV0onvZu+qDQnEoX8qTQErtqn/xzcnbpeTuOLSiA==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.4.2", + "@jest/test-result": "^27.4.2", + "@jest/transform": "^27.4.5", + "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", @@ -961,10 +914,10 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", + "jest-haste-map": "^27.4.5", + "jest-resolve": "^27.4.5", + "jest-util": "^27.4.2", + "jest-worker": "^27.4.5", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -984,9 +937,9 @@ } }, "node_modules/@jest/source-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", - "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.4.0.tgz", + "integrity": "sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ==", "dev": true, "dependencies": { "callsites": "^3.0.0", @@ -998,13 +951,13 @@ } }, "node_modules/@jest/test-result": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz", - "integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.2.tgz", + "integrity": "sha512-kr+bCrra9jfTgxHXHa2UwoQjxvQk3Am6QbpAiJ5x/50LW8llOYrxILkqY0lZRW/hu8FXesnudbql263+EW9iNA==", "dev": true, "dependencies": { - "@jest/console": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.4.2", + "@jest/types": "^27.4.2", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -1013,36 +966,36 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz", - "integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.5.tgz", + "integrity": "sha512-n5woIn/1v+FT+9hniymHPARA9upYUmfi5Pw9ewVwXCDlK4F5/Gkees9v8vdjGdAIJ2MPHLHodiajLpZZanWzEQ==", "dev": true, "dependencies": { - "@jest/test-result": "^27.3.1", + "@jest/test-result": "^27.4.2", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-runtime": "^27.3.1" + "jest-haste-map": "^27.4.5", + "jest-runtime": "^27.4.5" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.4.5.tgz", + "integrity": "sha512-PuMet2UlZtlGzwc6L+aZmR3I7CEBpqadO03pU40l2RNY2fFJ191b9/ITB44LNOhVtsyykx0OZvj0PCyuLm7Eew==", "dev": true, "dependencies": { "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "babel-plugin-istanbul": "^6.0.0", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", + "jest-haste-map": "^27.4.5", + "jest-regex-util": "^27.4.0", + "jest-util": "^27.4.2", "micromatch": "^4.0.4", "pirates": "^4.0.1", "slash": "^3.0.0", @@ -1054,9 +1007,9 @@ } }, "node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.4.2.tgz", + "integrity": "sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -1070,9 +1023,9 @@ } }, "node_modules/@mdn/browser-compat-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.5.tgz", - "integrity": "sha512-KPSNaHUl5aikqsQU7LpBntFzaPbhm5OJxD88Wv00OKDc4wudyid2wDFqLeb7VcYT9x5bND8PPFloWdK5DY0pHA==", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.11.tgz", + "integrity": "sha512-rmQPBLe3/DuJy0Bcr1KNuSiIcgV67R2AeLxagKMQTI0R8F9lLC894wJRYhA5ytV0CIi7dzxILqdFeuVbqrkoCA==", "dev": true }, "node_modules/@nodelib/fs.scandir": { @@ -1111,9 +1064,9 @@ } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", - "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.2.tgz", + "integrity": "sha512-xyqbuf1vyOPC60jEKhx3DBHunymnCJswzjNTKfX4Jz7zCPar1UqbRZCNY1u5QaXh97beaFTWdoUUWiV4qX8o/g==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -1154,9 +1107,9 @@ "dev": true }, "node_modules/@rollup/plugin-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-3.0.0.tgz", - "integrity": "sha512-3c7JCbMuYXM4PbPWT4+m/4Y6U60SgsnDT/cCyAyUKwFHg7pTSfsSQzIpETha3a3ig6OdOKzZz87D9ZXIK3qsDg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-3.0.1.tgz", + "integrity": "sha512-989J5oRzf3mm0pO/0djTijdfEh9U3n63BIXN5X7T4U9BP+fN4oxQ6DvDuBvFaHA6scaHQRclqmKQEkBhB7k7Hg==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -1190,9 +1143,9 @@ "dev": true }, "node_modules/@rollup/pluginutils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz", - "integrity": "sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.2.tgz", + "integrity": "sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==", "dev": true, "dependencies": { "estree-walker": "^2.0.1", @@ -1222,9 +1175,9 @@ } }, "node_modules/@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, "dependencies": { "@sinonjs/commons": "^1.7.0" @@ -1261,42 +1214,10 @@ "ts-type": "^1.2.40" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/@types/babel__core": { - "version": "7.1.16", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", - "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "version": "7.1.18", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz", + "integrity": "sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -1307,9 +1228,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", - "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" @@ -1342,9 +1263,9 @@ "peer": true }, "node_modules/@types/chrome": { - "version": "0.0.162", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.162.tgz", - "integrity": "sha512-DiMo9SrOhkb49bXPRke41Nvd9rgDgxn/mqyZ5gQnU+ST3H/vcnnvtwCkpuUl7O9FwoUwECfMSZiBTXuK8sMSwQ==", + "version": "0.0.174", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.174.tgz", + "integrity": "sha512-x5kjvNdwDtOnT+vbnksj69pDl0u9P/WH9LbQWJawLqGgkBRO3AN/xzTxTPgLpp3IqCbuwfp7bRCHqkkaZguzWw==", "dev": true, "dependencies": { "@types/filesystem": "*", @@ -1462,15 +1383,15 @@ } }, "node_modules/@types/jasmine": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.1.tgz", - "integrity": "sha512-So26woGjM6F9b2julbJlXdcPdyhwteZzEX2EbFmreuJBamPVVdp6w4djywUG9TmcwjiC+ECAe+RSSBgYEOgEqQ==", + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.3.tgz", + "integrity": "sha512-SWyMrjgdAUHNQmutvDcKablrJhkDLy4wunTme8oYLjKp41GnHGxMRXr2MQMvy/qy8H3LdzwQk9gH4hZ6T++H8g==", "dev": true }, "node_modules/@types/jest": { - "version": "27.0.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz", - "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz", + "integrity": "sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==", "dev": true, "dependencies": { "jest-diff": "^27.0.0", @@ -1507,9 +1428,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.7.tgz", + "integrity": "sha512-1QUk+WAUD4t8iR+Oj+UgI8oJa6yyxaB8a8pHaC8uqM6RrS1qbL7bf3Pwl5rHv0psm2CuDErgho6v5N+G+5fwtQ==", "dev": true }, "node_modules/@types/offscreencanvas": { @@ -1519,9 +1440,9 @@ "dev": true }, "node_modules/@types/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz", + "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==", "dev": true }, "node_modules/@types/resolve": { @@ -1570,13 +1491,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.0.tgz", - "integrity": "sha512-ARUEJHJrq85aaiCqez7SANeahDsJTD3AEua34EoQN9pHS6S5Bq9emcIaGGySt/4X2zSi+vF5hAH52sEen7IO7g==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.0.tgz", + "integrity": "sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "5.3.0", - "@typescript-eslint/scope-manager": "5.3.0", + "@typescript-eslint/experimental-utils": "5.9.0", + "@typescript-eslint/scope-manager": "5.9.0", + "@typescript-eslint/type-utils": "5.9.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -1601,23 +1523,6 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { "version": "5.1.8", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", @@ -1628,15 +1533,15 @@ } }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.0.tgz", - "integrity": "sha512-NFVxYTjKj69qB0FM+piah1x3G/63WB8vCBMnlnEHUsiLzXSTWb9FmFn36FD9Zb4APKBLY3xRArOGSMQkuzTF1w==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz", + "integrity": "sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.3.0", - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/typescript-estree": "5.3.0", + "@typescript-eslint/scope-manager": "5.9.0", + "@typescript-eslint/types": "5.9.0", + "@typescript-eslint/typescript-estree": "5.9.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -1648,18 +1553,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.3.0.tgz", - "integrity": "sha512-rKu/yAReip7ovx8UwOAszJVO5MgBquo8WjIQcp1gx4pYQCwYzag+I5nVNHO4MqyMkAo0gWt2gWUi+36gWAVKcw==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.0.tgz", + "integrity": "sha512-/6pOPz8yAxEt4PLzgbFRDpZmHnXCeZgPDrh/1DaVKOjvn/UPMlWhbx/gA96xRi2JxY1kBl2AmwVbyROUqys5xQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.3.0", - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/typescript-estree": "5.3.0", + "@typescript-eslint/scope-manager": "5.9.0", + "@typescript-eslint/types": "5.9.0", + "@typescript-eslint/typescript-estree": "5.9.0", "debug": "^4.3.2" }, "engines": { @@ -1678,31 +1583,32 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz", + "integrity": "sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg==", "dev": true, "dependencies": { - "ms": "2.1.2" + "@typescript-eslint/types": "5.9.0", + "@typescript-eslint/visitor-keys": "5.9.0" }, "engines": { - "node": ">=6.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.0.tgz", - "integrity": "sha512-22Uic9oRlTsPppy5Tcwfj+QET5RWEnZ5414Prby465XxQrQFZ6nnm5KnXgnsAJefG4hEgMnaxTB3kNEyjdjj6A==", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.0.tgz", + "integrity": "sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/visitor-keys": "5.3.0" + "@typescript-eslint/experimental-utils": "5.9.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1710,12 +1616,37 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/@typescript-eslint/types": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.0.tgz", - "integrity": "sha512-fce5pG41/w8O6ahQEhXmMV+xuh4+GayzqEogN24EK+vECA3I6pUwKuLi5QbXO721EMitpQne5VKXofPonYlAQg==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.0.tgz", + "integrity": "sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1726,13 +1657,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.0.tgz", - "integrity": "sha512-FJ0nqcaUOpn/6Z4Jwbtf+o0valjBLkqc3MWkMvrhA2TvzFXtcclIM8F4MBEmYa2kgcI8EZeSAzwoSrIC8JYkug==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz", + "integrity": "sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/visitor-keys": "5.3.0", + "@typescript-eslint/types": "5.9.0", + "@typescript-eslint/visitor-keys": "5.9.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -1753,9 +1684,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -1769,13 +1700,42 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.0.tgz", - "integrity": "sha512-oVIAfIQuq0x2TFDNLVavUn548WL+7hdhxYn+9j3YdJJXB7mH9dAmZNJsPDa7Jc+B9WGqoiex7GUDbyMxV0a/aw==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz", + "integrity": "sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.3.0", + "@typescript-eslint/types": "5.9.0", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -1891,9 +1851,9 @@ } }, "node_modules/acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1943,26 +1903,25 @@ } }, "node_modules/addons-linter": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-3.20.0.tgz", - "integrity": "sha512-rHaahIZ34HSL1D7ZYCMs/QQPOp0pAnsOMqtNSy/zDSrkgVtlCQvSeMpx1a3ZnE2pGRVHjMIO506KWUmrN1lPRw==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-4.4.0.tgz", + "integrity": "sha512-2N8oo97y2w2MJX/bcvnSb5BG2s+0BOlOu/0Q06wp5bnyEwWbfKFOVX/CorivGkRteY0fbSUWvU55LXgIiLyH5w==", "dev": true, "dependencies": { - "@mdn/browser-compat-data": "4.0.5", + "@mdn/browser-compat-data": "4.0.11", "addons-moz-compare": "1.2.0", - "addons-scanner-utils": "5.0.0", + "addons-scanner-utils": "6.1.0", "ajv": "6.12.6", "ajv-merge-patch": "4.1.0", "chalk": "4.1.2", "cheerio": "1.0.0-rc.10", "columnify": "1.5.4", - "common-tags": "1.8.0", + "common-tags": "1.8.2", "deepmerge": "4.2.2", - "dispensary": "0.62.0", - "eslint": "7.32.0", - "eslint-plugin-no-unsanitized": "3.1.5", - "eslint-visitor-keys": "3.0.0", - "espree": "9.0.0", + "eslint": "8.3.0", + "eslint-plugin-no-unsanitized": "4.0.0", + "eslint-visitor-keys": "3.1.0", + "espree": "9.1.0", "esprima": "4.0.1", "fluent-syntax": "0.13.0", "glob": "7.2.0", @@ -1970,11 +1929,12 @@ "is-mergeable-object": "1.1.1", "jed": "1.1.1", "os-locale": "5.0.0", - "pino": "6.13.3", - "postcss": "8.3.9", + "pino": "7.4.0", + "postcss": "8.3.11", "relaxed-json": "1.0.3", "semver": "7.3.5", - "source-map-support": "0.5.20", + "sha.js": "2.4.11", + "source-map-support": "0.5.21", "tosource": "1.0.0", "upath": "2.0.1", "yargs": "17.2.1", @@ -1987,62 +1947,10 @@ "node": ">=12.21.0" } }, - "node_modules/addons-linter/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/addons-linter/node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/addons-linter/node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/addons-linter/node_modules/@eslint/eslintrc/node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, "node_modules/addons-linter/node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", + "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.0", @@ -2053,25 +1961,13 @@ "node": ">=10.10.0" } }, - "node_modules/addons-linter/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/addons-linter/node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/addons-linter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" + "node": ">=4.0.0" } }, "node_modules/addons-linter/node_modules/escape-string-regexp": { @@ -2087,37 +1983,36 @@ } }, "node_modules/addons-linter/node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", + "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", "dev": true, "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.0.4", + "@humanwhocodes/config-array": "^0.6.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^7.1.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.1.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", + "glob-parent": "^6.0.1", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", @@ -2125,11 +2020,10 @@ "natural-compare": "^1.4.0", "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^3.1.0", + "regexpp": "^3.2.0", "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -2137,75 +2031,67 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/addons-linter/node_modules/eslint-plugin-no-unsanitized": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-3.1.5.tgz", - "integrity": "sha512-s/6w++p1590h/H/dE2Wo660bOkaM/3OEK14Y7xm1UT0bafxkKw1Cq0ksjxkxLdH/WWd014DlsLKuD6CyNrR2Dw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.0.tgz", + "integrity": "sha512-Wguc3EZS+7BJ/Pgu8C1/G86eXHUIRz4ZHEhPlwVkS42MbHEyfh8Wm+pDRVAg73EE0TR//SbjkPlHr93yLJT10g==", "dev": true, "peerDependencies": { - "eslint": "^5 || ^6 || ^7" + "eslint": "^6 || ^7 || ^8" } }, - "node_modules/addons-linter/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "node_modules/addons-linter/node_modules/eslint-scope": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", + "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/addons-linter/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/addons-linter/node_modules/espree": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", + "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", "dev": true, + "dependencies": { + "acorn": "^8.6.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.1.0" + }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/addons-linter/node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/addons-linter/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { - "node": ">=10" + "node": ">=4.0" } }, - "node_modules/addons-linter/node_modules/eslint/node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "node_modules/addons-linter/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "is-glob": "^4.0.3" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/addons-linter/node_modules/eslint/node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=10.13.0" } }, "node_modules/addons-linter/node_modules/image-size": { @@ -2223,17 +2109,14 @@ "node": ">=12.0.0" } }, - "node_modules/addons-linter/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/addons-linter/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, "node_modules/addons-linter/node_modules/yargs": { @@ -2261,9 +2144,9 @@ "dev": true }, "node_modules/addons-scanner-utils": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-5.0.0.tgz", - "integrity": "sha512-uENKmGryUeR07I1c8RonDZY/bkAG+zKfZ3T61JFusgY5wiARQJ5+8hI33m8sctXxPopjfxiIjHsG/g7cQzn4Yw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-6.1.0.tgz", + "integrity": "sha512-O9rObtOmnMI1qBmHH2RlV+H3vAJWm594bbxbFYEkYeqSUkXd0Ohzjwnv1af4GFDlrBK6wB8TS0+/2X/zB8+LnA==", "dev": true, "dependencies": { "@types/yauzl": "2.9.2", @@ -2442,14 +2325,6 @@ "node": ">=4" } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -2465,12 +2340,6 @@ "node": ">=8" } }, - "node_modules/array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -2497,18 +2366,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "node_modules/array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -2562,15 +2419,6 @@ "node": ">=0.8" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/async": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", @@ -2617,16 +2465,16 @@ "dev": true }, "node_modules/babel-jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", - "integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.5.tgz", + "integrity": "sha512-3uuUTjXbgtODmSv/DXO9nZfD52IyC2OYTFaXGRzL0kpykzroaquCrD5+lZNafTvZlnNqZHt5pb0M08qVBZnsnA==", "dev": true, "dependencies": { - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/transform": "^27.4.5", + "@jest/types": "^27.4.2", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.2.0", + "babel-preset-jest": "^27.4.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "slash": "^3.0.0" @@ -2680,9 +2528,9 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", - "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz", + "integrity": "sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", @@ -2718,12 +2566,12 @@ } }, "node_modules/babel-preset-jest": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", - "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz", + "integrity": "sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^27.2.0", + "babel-plugin-jest-hoist": "^27.4.0", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -3242,9 +3090,9 @@ "dev": true }, "node_modules/chrome-launcher": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.14.0.tgz", - "integrity": "sha512-W//HpflaW6qBGrmuskup7g+XJZN6w03ko9QSIe5CtcTal2u0up5SeReK3Ll1Why4Ey8dPkv8XSodZyHPnGbVHQ==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.0.tgz", + "integrity": "sha512-ZQqX5kb9H0+jy1OqLnWampfocrtSZaGl7Ny3F9GRha85o4odbL8x55paUzh51UC7cEmZ5obp3H2Mm70uC2PpRA==", "dev": true, "dependencies": { "@types/node": "*", @@ -3252,6 +3100,9 @@ "is-wsl": "^2.2.0", "lighthouse-logger": "^1.0.0" }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, "engines": { "node": ">=12.13.0" } @@ -3533,18 +3384,39 @@ "dev": true }, "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "peer": true, "dependencies": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" }, "engines": { "node": ">= 0.6" } }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true + }, "node_modules/content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", @@ -3618,14 +3490,6 @@ "node": ">= 0.10" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -3650,16 +3514,16 @@ } }, "node_modules/css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", "dev": true, "dependencies": { "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" }, "funding": { "url": "https://github.com/sponsors/fb55" @@ -3749,9 +3613,9 @@ "dev": true }, "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -4189,9 +4053,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.901419", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz", - "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==", + "version": "0.0.937139", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.937139.tgz", + "integrity": "sha512-daj+rzR3QSxsPRy5vjjthn58axO8c11j58uY0lG5vvlJk/EiOdCWOptGdkXDjtuRHr78emKq0udHCXM4trhoDQ==", "dev": true }, "node_modules/di": { @@ -4200,21 +4064,10 @@ "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", "dev": true }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.4.0.tgz", + "integrity": "sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==", "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -4232,50 +4085,6 @@ "node": ">=8" } }, - "node_modules/dispensary": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.62.0.tgz", - "integrity": "sha512-x8vqPX7owhzDp3Y6t/iOuTuNoWx5hlZKITlzlybETsZoY05cYDubGpwt0soLfRLAWLuxX1lq0lTc/vXtk/CDCw==", - "dev": true, - "dependencies": { - "async": "~3.2.0", - "natural-compare-lite": "~1.4.0", - "pino": "~6.11.0", - "request": "~2.88.0", - "sha.js": "~2.4.4", - "source-map-support": "~0.5.4", - "yargs": "~16.2.0" - }, - "bin": { - "dispensary": "bin/dispensary" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/dispensary/node_modules/async": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", - "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==", - "dev": true - }, - "node_modules/dispensary/node_modules/pino": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/pino/-/pino-6.11.3.tgz", - "integrity": "sha512-drPtqkkSf0ufx2gaea3TryFiBHdNIdXKf5LN0hTM82SXI4xVIve2wLwNg92e1MT6m3jASLu6VO7eGY6+mmGeyw==", - "dev": true, - "dependencies": { - "fast-redact": "^3.0.0", - "fast-safe-stringify": "^2.0.7", - "flatstr": "^1.0.12", - "pino-std-serializers": "^3.1.0", - "quick-format-unescaped": "^4.0.3", - "sonic-boom": "^1.0.2" - }, - "bin": { - "pino": "bin.js" - } - }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -4348,9 +4157,9 @@ } }, "node_modules/domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", "dev": true, "dependencies": { "domelementtype": "^2.2.0" @@ -4468,6 +4277,18 @@ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, + "node_modules/duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -4568,6 +4389,27 @@ "node": ">=10.0.0" } }, + "node_modules/engine.io/node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -4799,13 +4641,13 @@ } }, "node_modules/eslint": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.1.0.tgz", - "integrity": "sha512-JZvNneArGSUsluHWJ8g8MMs3CfIEzwaLx9KyH4tZ2i+R2/rPWzL8c0zg3rHdwYVpN/1sB9gqnjHwz9HoeJpGHw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz", + "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.0.3", - "@humanwhocodes/config-array": "^0.6.0", + "@eslint/eslintrc": "^1.0.5", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -4813,10 +4655,10 @@ "doctrine": "^3.0.0", "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^6.0.0", + "eslint-scope": "^7.1.0", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.3.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -4838,7 +4680,7 @@ "progress": "^2.0.0", "regexpp": "^3.2.0", "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" @@ -4873,14 +4715,13 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", - "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz", + "integrity": "sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==", "dev": true, "dependencies": { "debug": "^3.2.7", - "find-up": "^2.1.0", - "pkg-dir": "^2.0.0" + "find-up": "^2.1.0" }, "engines": { "node": ">=4" @@ -4962,22 +4803,10 @@ "node": ">=4" } }, - "node_modules/eslint-module-utils/node_modules/pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/eslint-plugin-import": { - "version": "2.25.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz", - "integrity": "sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g==", + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", + "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", "dev": true, "dependencies": { "array-includes": "^3.1.4", @@ -4985,14 +4814,14 @@ "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.0", + "eslint-module-utils": "^2.7.2", "has": "^1.0.3", - "is-core-module": "^2.7.0", + "is-core-module": "^2.8.0", "is-glob": "^4.0.3", "minimatch": "^3.0.4", "object.values": "^1.1.5", "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" + "tsconfig-paths": "^3.12.0" }, "engines": { "node": ">=4" @@ -5075,31 +4904,14 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz", - "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -5113,9 +4925,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz", - "integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", + "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -5147,14 +4959,14 @@ } }, "node_modules/espree": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz", - "integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", + "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", "dev": true, "dependencies": { - "acorn": "^8.5.0", + "acorn": "^8.7.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.0.0" + "eslint-visitor-keys": "^3.1.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5307,17 +5119,17 @@ } }, "node_modules/expect": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", - "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.4.2.tgz", + "integrity": "sha512-BjAXIDC6ZOW+WBFNg96J22D27Nq5ohn+oGcuP2rtOtcjuxNoV9McpQ60PcQWhdFOSBIQdR72e+4HdnbZTFSTyg==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "ansi-styles": "^5.0.0", - "jest-get-type": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6" + "jest-get-type": "^27.4.0", + "jest-matcher-utils": "^27.4.2", + "jest-message-util": "^27.4.2", + "jest-regex-util": "^27.4.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -5374,7 +5186,20 @@ "vary": "~1.1.2" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/express/node_modules/cookie": { @@ -5527,12 +5352,6 @@ "node": ">=6" } }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true - }, "node_modules/fastify-warning": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/fastify-warning/-/fastify-warning-0.2.0.tgz", @@ -5689,9 +5508,9 @@ } }, "node_modules/firefox-profile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.2.1.tgz", - "integrity": "sha512-KyA5ruS7V1nXpaHlJrKPW1jkoc9bq/WKquaKuca/ETembuxcBQPEPpxAp0biwjQCPf3sBslN/heZLdfa5Eotzg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.2.2.tgz", + "integrity": "sha512-3kI17Xl9dL9AeRkpV1yahsJ+UbekkPtlQswKrIsTY1NLgxtEOR4R19rjGGz5+7/rP8Jt6fvxHk+Bai9R6Eai3w==", "dev": true, "dependencies": { "adm-zip": "~0.5.x", @@ -5750,12 +5569,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/flatstr": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", - "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==", - "dev": true - }, "node_modules/flatted": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", @@ -5924,13 +5737,13 @@ "dev": true }, "node_modules/fx-runner": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.1.0.tgz", - "integrity": "sha512-v/Eo69DDFW30zPdvjCYVXddjVvLy2xGeRbg0S18bPd8kEc0q9VsDoDkjyOxY5lTZsAqcQGy0OWjs3HCfRVBNSg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.2.0.tgz", + "integrity": "sha512-/zR9BmHF8h4OaVJ+fHHJBv/5FdPV9mjOAPIscQZbAijm7Aa15Ls/P8UBHD5OKU5jwu2niTxkkzzHKITE7oCMoQ==", "dev": true, "dependencies": { "commander": "2.9.0", - "shell-quote": "1.6.1", + "shell-quote": "1.7.3", "spawn-sync": "1.0.15", "when": "3.7.7", "which": "1.2.4", @@ -6121,34 +5934,58 @@ } }, "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.0.2.tgz", + "integrity": "sha512-lAsmb/5Lww4r7MM9nCCliDZVIKbZTavrsunAsHLr9oHthrZP1qi7/gAnHOsUs9bLvEt2vKVJhHmxuL7QbDuPdQ==", "dev": true, "dependencies": { - "array-union": "^2.1.0", + "array-union": "^3.0.1", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "fast-glob": "^3.2.7", + "ignore": "^5.1.8", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true, + "engines": { + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globby/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, "engines": { "node": ">= 4" } }, + "node_modules/globby/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/got": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", @@ -7162,9 +6999,9 @@ } }, "node_modules/istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "dependencies": { "debug": "^4.1.1", @@ -7172,13 +7009,13 @@ "source-map": "^0.6.1" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.3.tgz", + "integrity": "sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -7203,9 +7040,9 @@ } }, "node_modules/jasmine-core": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.10.1.tgz", - "integrity": "sha512-ooZWSDVAdh79Rrj4/nnfklL3NQVra0BcuhcuWoAwwi+znLDoUeH87AFfeX8s+YeYi6xlv5nveRyaA1v7CintfA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.0.0.tgz", + "integrity": "sha512-tq24OCqHElgU9KDpb/8O21r1IfotgjIzalfW9eCmRR40LZpvwXT68iariIyayMwi0m98RDt16aljdbwK0sBMmQ==", "dev": true }, "node_modules/jed": { @@ -7215,14 +7052,14 @@ "dev": true }, "node_modules/jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz", - "integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.5.tgz", + "integrity": "sha512-uT5MiVN3Jppt314kidCk47MYIRilJjA/l2mxwiuzzxGUeJIvA8/pDaJOAX5KWvjAo7SCydcW0/4WEtgbLMiJkg==", "dev": true, "dependencies": { - "@jest/core": "^27.3.1", + "@jest/core": "^27.4.5", "import-local": "^3.0.2", - "jest-cli": "^27.3.1" + "jest-cli": "^27.4.5" }, "bin": { "jest": "bin/jest.js" @@ -7240,12 +7077,12 @@ } }, "node_modules/jest-changed-files": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz", - "integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.4.2.tgz", + "integrity": "sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "execa": "^5.0.0", "throat": "^6.0.1" }, @@ -7254,27 +7091,27 @@ } }, "node_modules/jest-circus": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", - "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.5.tgz", + "integrity": "sha512-eTNWa9wsvBwPykhMMShheafbwyakcdHZaEYh5iRrQ0PFJxkDP/e3U/FvzGuKWu2WpwUA3C3hPlfpuzvOdTVqnw==", "dev": true, "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.4.4", + "@jest/test-result": "^27.4.2", + "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.3.1", + "expect": "^27.4.2", "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", + "jest-each": "^27.4.2", + "jest-matcher-utils": "^27.4.2", + "jest-message-util": "^27.4.2", + "jest-runtime": "^27.4.5", + "jest-snapshot": "^27.4.5", + "jest-util": "^27.4.2", + "pretty-format": "^27.4.2", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" @@ -7284,21 +7121,21 @@ } }, "node_modules/jest-cli": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", - "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.5.tgz", + "integrity": "sha512-hrky3DSgE0u7sQxaCL7bdebEPHx5QzYmrGuUjaPLmPE8jx5adtvGuOlRspvMoVLTTDOHRnZDoRLYJuA+VCI7Hg==", "dev": true, "dependencies": { - "@jest/core": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/core": "^27.4.5", + "@jest/test-result": "^27.4.2", + "@jest/types": "^27.4.2", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "jest-config": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-config": "^27.4.5", + "jest-util": "^27.4.2", + "jest-validate": "^27.4.2", "prompts": "^2.0.1", "yargs": "^16.2.0" }, @@ -7318,32 +7155,33 @@ } }, "node_modules/jest-config": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", - "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.4.5.tgz", + "integrity": "sha512-t+STVJtPt+fpqQ8GBw850NtSQbnDOw/UzdPfzDaHQ48/AylQlW7LHj3dH+ndxhC1UxJ0Q3qkq7IH+nM1skwTwA==", "dev": true, "dependencies": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.3.1", - "@jest/types": "^27.2.5", - "babel-jest": "^27.3.1", + "@jest/test-sequencer": "^27.4.5", + "@jest/types": "^27.4.2", + "babel-jest": "^27.4.5", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", - "jest-circus": "^27.3.1", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-jasmine2": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-circus": "^27.4.5", + "jest-environment-jsdom": "^27.4.4", + "jest-environment-node": "^27.4.4", + "jest-get-type": "^27.4.0", + "jest-jasmine2": "^27.4.5", + "jest-regex-util": "^27.4.0", + "jest-resolve": "^27.4.5", + "jest-runner": "^27.4.5", + "jest-util": "^27.4.2", + "jest-validate": "^27.4.2", "micromatch": "^4.0.4", - "pretty-format": "^27.3.1" + "pretty-format": "^27.4.2", + "slash": "^3.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -7358,30 +7196,30 @@ } }, "node_modules/jest-config/node_modules/ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", "dev": true }, "node_modules/jest-diff": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", - "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.2.tgz", + "integrity": "sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "diff-sequences": "^27.4.0", + "jest-get-type": "^27.4.0", + "pretty-format": "^27.4.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-docblock": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", - "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.4.0.tgz", + "integrity": "sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg==", "dev": true, "dependencies": { "detect-newline": "^3.0.0" @@ -7391,33 +7229,33 @@ } }, "node_modules/jest-each": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", - "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.4.2.tgz", + "integrity": "sha512-53V2MNyW28CTruB3lXaHNk6PkiIFuzdOC9gR3C6j8YE/ACfrPnz+slB0s17AgU1TtxNzLuHyvNlLJ+8QYw9nBg==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-get-type": "^27.4.0", + "jest-util": "^27.4.2", + "pretty-format": "^27.4.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-environment-jsdom": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz", - "integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==", + "version": "27.4.4", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.4.tgz", + "integrity": "sha512-cYR3ndNfHBqQgFvS1RL7dNqSvD//K56j/q1s2ygNHcfTCAp12zfIromO1w3COmXrxS8hWAh7+CmZmGCIoqGcGA==", "dev": true, "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.4.4", + "@jest/fake-timers": "^27.4.2", + "@jest/types": "^27.4.2", "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1", + "jest-mock": "^27.4.2", + "jest-util": "^27.4.2", "jsdom": "^16.6.0" }, "engines": { @@ -7425,47 +7263,47 @@ } }, "node_modules/jest-environment-node": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", - "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", + "version": "27.4.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.4.tgz", + "integrity": "sha512-D+v3lbJ2GjQTQR23TK0kY3vFVmSeea05giInI41HHOaJnAwOnmUHTZgUaZL+VxUB43pIzoa7PMwWtCVlIUoVoA==", "dev": true, "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.4.4", + "@jest/fake-timers": "^27.4.2", + "@jest/types": "^27.4.2", "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" + "jest-mock": "^27.4.2", + "jest-util": "^27.4.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.4.0.tgz", + "integrity": "sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==", "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.5.tgz", + "integrity": "sha512-oJm1b5qhhPs78K24EDGifWS0dELYxnoBiDhatT/FThgB9yxqUm5F6li3Pv+Q+apMBmmPNzOBnZ7ZxWMB1Leq1Q==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", + "jest-regex-util": "^27.4.0", + "jest-serializer": "^27.4.0", + "jest-util": "^27.4.2", + "jest-worker": "^27.4.5", "micromatch": "^4.0.4", "walker": "^1.0.7" }, @@ -7477,28 +7315,28 @@ } }, "node_modules/jest-jasmine2": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz", - "integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.5.tgz", + "integrity": "sha512-oUnvwhJDj2LhOiUB1kdnJjkx8C5PwgUZQb9urF77mELH9DGR4e2GqpWQKBOYXWs5+uTN9BGDqRz3Aeg5Wts7aw==", "dev": true, "dependencies": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.4.4", + "@jest/source-map": "^27.4.0", + "@jest/test-result": "^27.4.2", + "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.3.1", + "expect": "^27.4.2", "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", + "jest-each": "^27.4.2", + "jest-matcher-utils": "^27.4.2", + "jest-message-util": "^27.4.2", + "jest-runtime": "^27.4.5", + "jest-snapshot": "^27.4.5", + "jest-util": "^27.4.2", + "pretty-format": "^27.4.2", "throat": "^6.0.1" }, "engines": { @@ -7506,46 +7344,46 @@ } }, "node_modules/jest-leak-detector": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz", - "integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.2.tgz", + "integrity": "sha512-ml0KvFYZllzPBJWDei3mDzUhyp/M4ubKebX++fPaudpe8OsxUE+m+P6ciVLboQsrzOCWDjE20/eXew9QMx/VGw==", "dev": true, "dependencies": { - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-get-type": "^27.4.0", + "pretty-format": "^27.4.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", - "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.2.tgz", + "integrity": "sha512-jyP28er3RRtMv+fmYC/PKG8wvAmfGcSNproVTW2Y0P/OY7/hWUOmsPfxN1jOhM+0u2xU984u2yEagGivz9OBGQ==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-diff": "^27.4.2", + "jest-get-type": "^27.4.0", + "pretty-format": "^27.4.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-message-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz", - "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.2.tgz", + "integrity": "sha512-OMRqRNd9E0DkBLZpFtZkAGYOXl6ZpoMtQJWTAREJKDOFa0M6ptB7L67tp+cszMBkvSgKOhNtQp2Vbcz3ZZKo/w==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.4", - "pretty-format": "^27.3.1", + "pretty-format": "^27.4.2", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -7554,12 +7392,12 @@ } }, "node_modules/jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.2.tgz", + "integrity": "sha512-PDDPuyhoukk20JrQKeofK12hqtSka7mWH0QQuxSNgrdiPsrnYYLS6wbzu/HDlxZRzji5ylLRULeuI/vmZZDrYA==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "@types/node": "*" }, "engines": { @@ -7584,27 +7422,27 @@ } }, "node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.4.0.tgz", + "integrity": "sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg==", "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-resolve": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz", - "integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.5.tgz", + "integrity": "sha512-xU3z1BuOz/hUhVUL+918KqUgK+skqOuUsAi7A+iwoUldK6/+PW+utK8l8cxIWT9AW7IAhGNXjSAh1UYmjULZZw==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", + "jest-haste-map": "^27.4.5", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-util": "^27.4.2", + "jest-validate": "^27.4.2", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" @@ -7614,45 +7452,45 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz", - "integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.5.tgz", + "integrity": "sha512-elEVvkvRK51y037NshtEkEnukMBWvlPzZHiL847OrIljJ8yIsujD2GXRPqDXC4rEVKbcdsy7W0FxoZb4WmEs7w==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", - "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.3.1" + "@jest/types": "^27.4.2", + "jest-regex-util": "^27.4.0", + "jest-snapshot": "^27.4.5" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-runner": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz", - "integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.5.tgz", + "integrity": "sha512-/irauncTfmY1WkTaRQGRWcyQLzK1g98GYG/8QvIPviHgO1Fqz1JYeEIsSfF+9mc/UTA6S+IIHFgKyvUrtiBIZg==", "dev": true, "dependencies": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.4.2", + "@jest/environment": "^27.4.4", + "@jest/test-result": "^27.4.2", + "@jest/transform": "^27.4.5", + "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-leak-detector": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", + "jest-docblock": "^27.4.0", + "jest-environment-jsdom": "^27.4.4", + "jest-environment-node": "^27.4.4", + "jest-haste-map": "^27.4.5", + "jest-leak-detector": "^27.4.2", + "jest-message-util": "^27.4.2", + "jest-resolve": "^27.4.5", + "jest-runtime": "^27.4.5", + "jest-util": "^27.4.2", + "jest-worker": "^27.4.5", "source-map-support": "^0.5.6", "throat": "^6.0.1" }, @@ -7661,18 +7499,18 @@ } }, "node_modules/jest-runtime": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz", - "integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==", - "dev": true, - "dependencies": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/globals": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.5.tgz", + "integrity": "sha512-CIYqwuJQXHQtPd/idgrx4zgJ6iCb6uBjQq1RSAGQrw2S8XifDmoM1Ot8NRd80ooAm+ZNdHVwsktIMGlA1F1FAQ==", + "dev": true, + "dependencies": { + "@jest/console": "^27.4.2", + "@jest/environment": "^27.4.4", + "@jest/globals": "^27.4.4", + "@jest/source-map": "^27.4.0", + "@jest/test-result": "^27.4.2", + "@jest/transform": "^27.4.5", + "@jest/types": "^27.4.2", "@types/yargs": "^16.0.0", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", @@ -7681,14 +7519,14 @@ "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-haste-map": "^27.4.5", + "jest-message-util": "^27.4.2", + "jest-mock": "^27.4.2", + "jest-regex-util": "^27.4.0", + "jest-resolve": "^27.4.5", + "jest-snapshot": "^27.4.5", + "jest-util": "^27.4.2", + "jest-validate": "^27.4.2", "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^16.2.0" @@ -7698,9 +7536,9 @@ } }, "node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.4.0.tgz", + "integrity": "sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -7711,9 +7549,9 @@ } }, "node_modules/jest-snapshot": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz", - "integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.5.tgz", + "integrity": "sha512-eCi/iM1YJFrJWiT9de4+RpWWWBqsHiYxFG9V9o/n0WXs6GpW4lUt4FAHAgFPTLPqCUVzrMQmSmTZSgQzwqR7IQ==", "dev": true, "dependencies": { "@babel/core": "^7.7.2", @@ -7722,23 +7560,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/transform": "^27.4.5", + "@jest/types": "^27.4.2", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.3.1", + "expect": "^27.4.2", "graceful-fs": "^4.2.4", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", + "jest-diff": "^27.4.2", + "jest-get-type": "^27.4.0", + "jest-haste-map": "^27.4.5", + "jest-matcher-utils": "^27.4.2", + "jest-message-util": "^27.4.2", + "jest-resolve": "^27.4.5", + "jest-util": "^27.4.2", "natural-compare": "^1.4.0", - "pretty-format": "^27.3.1", + "pretty-format": "^27.4.2", "semver": "^7.3.2" }, "engines": { @@ -7746,12 +7584,12 @@ } }, "node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz", + "integrity": "sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -7769,26 +7607,26 @@ "dev": true }, "node_modules/jest-validate": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", - "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.2.tgz", + "integrity": "sha512-hWYsSUej+Fs8ZhOm5vhWzwSLmVaPAxRy+Mr+z5MzeaHm9AxUpXdoVMEW4R86y5gOobVfBsMFLk4Rb+QkiEpx1A==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", + "jest-get-type": "^27.4.0", "leven": "^3.1.0", - "pretty-format": "^27.3.1" + "pretty-format": "^27.4.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "engines": { "node": ">=10" @@ -7798,17 +7636,17 @@ } }, "node_modules/jest-watcher": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz", - "integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.2.tgz", + "integrity": "sha512-NJvMVyyBeXfDezhWzUOCOYZrUmkSCiatpjpm+nFUid74OZEHk6aMLrZAukIiFDwdbqp6mTM6Ui1w4oc+8EobQg==", "dev": true, "dependencies": { - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/test-result": "^27.4.2", + "@jest/types": "^27.4.2", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.3.1", + "jest-util": "^27.4.2", "string-length": "^4.0.1" }, "engines": { @@ -7816,9 +7654,9 @@ } }, "node_modules/jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.5.tgz", + "integrity": "sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg==", "dev": true, "dependencies": { "@types/node": "*", @@ -7915,9 +7753,9 @@ } }, "node_modules/jsdom/node_modules/ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", "dev": true, "engines": { "node": ">=8.3.0" @@ -7969,9 +7807,9 @@ "dev": true }, "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "node_modules/json-schema-traverse": { @@ -8019,12 +7857,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, "node_modules/jsonwebtoken": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", @@ -8057,18 +7889,18 @@ } }, "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, - "engines": [ - "node >=0.6.0" - ], "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" } }, "node_modules/jszip": { @@ -8129,9 +7961,9 @@ } }, "node_modules/karma": { - "version": "6.3.7", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.7.tgz", - "integrity": "sha512-EEkswZhOx3EFt1ELlVECeOXHONbHSGw6fkbeMxvCSkLD77X38Kb1d/Oup2Re9ep/tSoa1He3YIBf3Hp+9EsKtg==", + "version": "6.3.9", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.9.tgz", + "integrity": "sha512-E/MqdLM9uVIhfuyVnrhlGBu4miafBdXEAEqCmwdEMh3n17C7UWC/8Kvm3AYKr91gc7scutekZ0xv6rxRaUCtnw==", "dev": true, "dependencies": { "body-parser": "^1.19.0", @@ -8187,16 +8019,16 @@ } }, "node_modules/karma-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.0.3.tgz", - "integrity": "sha512-atDvLQqvPcLxhED0cmXYdsPMCQuh6Asa9FMZW1bhNqlVEhJoB9qyZ2BY1gu7D/rr5GLGb5QzYO4siQskxaWP/g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.1.0.tgz", + "integrity": "sha512-uIejpnArNFQIovB6EPsKO/T4XofELdJWXcA2ADXztFlKhHbr0Ws6ba7wKTMVWsIhEs4iJxdhQkCQrkkhFJSZCw==", "dev": true, "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.1", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^4.0.3", "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.0.5", "minimatch": "^3.0.4" }, "engines": { @@ -8228,6 +8060,12 @@ "karma": "*" } }, + "node_modules/karma-jasmine/node_modules/jasmine-core": { + "version": "3.99.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.0.tgz", + "integrity": "sha512-+ZDaJlEfRopINQqgE+hvzRyDIQDeKfqqTvF8RzXsvU1yE3pBDRud2+Qfh9WvGgRpuzqxyQJVI6Amy5XQ11r/3w==", + "dev": true + }, "node_modules/karma-rollup-preprocessor": { "version": "7.0.7", "resolved": "https://registry.npmjs.org/karma-rollup-preprocessor/-/karma-rollup-preprocessor-7.0.7.tgz", @@ -8390,13 +8228,13 @@ } }, "node_modules/lighthouse-logger": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.2.0.tgz", - "integrity": "sha512-wzUvdIeJZhRsG6gpZfmSCfysaxNEr43i+QT+Hie94wvHDKFLi4n7C2GqZ4sTC+PH5b5iktmXJvU87rWvhP3lHw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", + "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", "dev": true, "dependencies": { - "debug": "^2.6.8", - "marky": "^1.2.0" + "debug": "^2.6.9", + "marky": "^1.2.2" } }, "node_modules/lighthouse-logger/node_modules/debug": { @@ -8438,12 +8276,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -8498,12 +8330,6 @@ "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", "dev": true }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, "node_modules/log4js": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", @@ -8777,6 +8603,12 @@ "node": ">=10" } }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "node_modules/moment": { "version": "2.29.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", @@ -8906,12 +8738,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha1-F7CVgZiJef3a/gIB6TG6kzyWy7Q=", - "dev": true - }, "node_modules/ncp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", @@ -8960,14 +8786,39 @@ } }, "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, "engines": { "node": "4.x || >=6.0.0" } }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/node-forge": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", @@ -9139,6 +8990,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/on-exit-leak-free": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", + "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==", + "dev": true + }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -9634,9 +9491,9 @@ "dev": true }, "node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "node_modules/picomatch": { @@ -9684,27 +9541,41 @@ } }, "node_modules/pino": { - "version": "6.13.3", - "resolved": "https://registry.npmjs.org/pino/-/pino-6.13.3.tgz", - "integrity": "sha512-tJy6qVgkh9MwNgqX1/oYi3ehfl2Y9H0uHyEEMsBe74KinESIjdMrMQDWpcZPpPicg3VV35d/GLQZmo4QgU2Xkg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-7.4.0.tgz", + "integrity": "sha512-qEHLtKcmYcid6s2qjlGTxaLe9Lq1IiGmd74IZb9Obi/FRTaA+ymb8FD/cmOIL4vt6ug/EtmhGwxZbiGhI+7cuQ==", "dev": true, "dependencies": { "fast-redact": "^3.0.0", - "fast-safe-stringify": "^2.0.8", "fastify-warning": "^0.2.0", - "flatstr": "^1.0.12", - "pino-std-serializers": "^3.1.0", + "get-caller-file": "^2.0.5", + "on-exit-leak-free": "^0.2.0", + "pino-abstract-transport": "v0.5.0", + "pino-std-serializers": "^4.0.0", "quick-format-unescaped": "^4.0.3", - "sonic-boom": "^1.0.2" + "real-require": "^0.1.0", + "safe-stable-stringify": "^2.1.0", + "sonic-boom": "^2.2.1", + "thread-stream": "^0.13.0" }, "bin": { "pino": "bin.js" } }, + "node_modules/pino-abstract-transport": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz", + "integrity": "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==", + "dev": true, + "dependencies": { + "duplexify": "^4.1.2", + "split2": "^4.0.0" + } + }, "node_modules/pino-std-serializers": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", - "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", + "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==", "dev": true }, "node_modules/pirates": { @@ -9732,13 +9603,13 @@ } }, "node_modules/postcss": { - "version": "8.3.9", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", - "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", + "version": "8.3.11", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", + "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", "dev": true, "dependencies": { - "nanoid": "^3.1.28", - "picocolors": "^0.2.1", + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", "source-map-js": "^0.6.2" }, "engines": { @@ -9768,9 +9639,9 @@ } }, "node_modules/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -9780,12 +9651,12 @@ } }, "node_modules/pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.2.tgz", + "integrity": "sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" @@ -9899,54 +9770,35 @@ } }, "node_modules/puppeteer-core": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-10.4.0.tgz", - "integrity": "sha512-KU8zyb7AIOqNjLCN3wkrFXxh+EVaG+zrs2P03ATNjc3iwSxHsu5/EvZiREpQ/IJiT9xfQbDVgKcsvRuzLCxglQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.0.1.tgz", + "integrity": "sha512-aKTN7Rtu7zJuhadihaxXnbC4fRPe/Q6VR8u6krJk3dnmTL7am01hl3XG1x9nNCkxi5fA4+e4ba9QmTvFiqGxSA==", "dev": true, "dependencies": { - "debug": "4.3.1", - "devtools-protocol": "0.0.901419", + "debug": "4.3.2", + "devtools-protocol": "0.0.937139", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.1", + "node-fetch": "2.6.5", "pkg-dir": "4.2.0", - "progress": "2.0.1", + "progress": "2.0.3", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", - "tar-fs": "2.0.0", - "unbzip2-stream": "1.3.3", - "ws": "7.4.6" + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.2.3" }, "engines": { "node": ">=10.18.1" } }, - "node_modules/puppeteer-core/node_modules/progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", - "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/puppeteer-core/node_modules/unbzip2-stream": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", - "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", - "dev": true, - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, "node_modules/puppeteer-core/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", "dev": true, "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", @@ -10115,6 +9967,15 @@ "node": ">=8.10.0" } }, + "node_modules/real-require": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz", + "integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, "node_modules/regenerator-runtime": { "version": "0.13.7", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", @@ -10347,15 +10208,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -10455,9 +10307,9 @@ } }, "node_modules/rollup": { - "version": "2.59.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", - "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", + "version": "2.62.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.62.0.tgz", + "integrity": "sha512-cJEQq2gwB0GWMD3rYImefQTSjrPYaC6s4J9pYqnstVLJ1CHa/aZNVkD4Epuvg4iLeMA4KRiq7UM7awKK6j7jcw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -10635,6 +10487,15 @@ "dev": true, "optional": true }, + "node_modules/safe-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -10837,16 +10698,10 @@ } }, "node_modules/shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "dependencies": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true }, "node_modules/shellwords": { "version": "0.1.1", @@ -10907,23 +10762,6 @@ "node": ">=8" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, "node_modules/socket.io": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.3.1.tgz", @@ -10961,31 +10799,13 @@ "node": ">=10.0.0" } }, - "node_modules/socket.io/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/sonic-boom": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", - "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.4.2.tgz", + "integrity": "sha512-zlOmAKFLJzTI+MbvmkWhnOOJ++NYo0Iy7F93ARNPmvZvpWG2l8Ff3uwM3CkpHqRw8v3pcRROScM5E+vbeTeOKw==", "dev": true, "dependencies": { - "atomic-sleep": "^1.0.0", - "flatstr": "^1.0.12" + "atomic-sleep": "^1.0.0" } }, "node_modules/sort-keys": { @@ -11084,6 +10904,15 @@ "node": "*" } }, + "node_modules/split2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -11136,6 +10965,12 @@ "node": ">= 0.6" } }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, "node_modules/stream-to-array": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", @@ -11437,67 +11272,16 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, - "node_modules/table": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", - "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, "node_modules/tar-fs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", - "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, "dependencies": { "chownr": "^1.1.1", - "mkdirp": "^0.5.1", + "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.0.0" - } - }, - "node_modules/tar-fs/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "tar-stream": "^2.1.4" } }, "node_modules/tar-stream": { @@ -11573,6 +11357,15 @@ "node": ">=0.8" } }, + "node_modules/thread-stream": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.13.0.tgz", + "integrity": "sha512-kTMZeX4Dzlb1zZ00/01aerGaTw2i8NE4sWF0TvF1uXewRhCiUjCvatQkvxIvFqauWG2ADFS2Wpd3qBeYL9i3dg==", + "dev": true, + "dependencies": { + "real-require": "^0.1.0" + } + }, "node_modules/throat": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", @@ -11727,9 +11520,9 @@ } }, "node_modules/ts-jest": { - "version": "27.0.7", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.7.tgz", - "integrity": "sha512-O41shibMqzdafpuP+CkrOL7ykbmLh+FqQrXEmV9CydQ5JBk0Sj0uAEF5TNNe94fZWKm3yYvWa/IbyV4Yg1zK2Q==", + "version": "27.1.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.2.tgz", + "integrity": "sha512-eSOiJOWq6Hhs6Khzk5wKC5sgWIXgXqOCiIl1+3lfnearu58Hj4QpE5tUhQcA3xtZrELbcvAGCsd6HB8OsaVaTA==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -11751,6 +11544,7 @@ "@babel/core": ">=7.0.0-beta.0 <8", "@types/jest": "^27.0.0", "babel-jest": ">=27.0.0 <28", + "esbuild": "~0.14.0", "jest": "^27.0.0", "typescript": ">=3.8 <5.0" }, @@ -11758,68 +11552,17 @@ "@babel/core": { "optional": true }, - "@types/jest": { - "optional": true - }, - "babel-jest": { - "optional": true - } - } - }, - "node_modules/ts-node": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", - "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@cspotcode/source-map-support": "0.7.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { + "@types/jest": { + "optional": true + }, + "babel-jest": { "optional": true }, - "@swc/wasm": { + "esbuild": { "optional": true } } }, - "node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/ts-toolbelt": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-8.4.0.tgz", @@ -11843,9 +11586,9 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", - "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", + "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", @@ -11988,9 +11731,9 @@ } }, "node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", + "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -12039,7 +11782,6 @@ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, - "peer": true, "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" @@ -12297,24 +12039,24 @@ } }, "node_modules/web-ext": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-6.5.0.tgz", - "integrity": "sha512-71DE73YkxKEyiy1O5Ei5Uy1ZCT0tOPriPWIkH3g+mpnd52Gr1u2buexpq2upATekhc1Mu87d9EmRqXg2Kqhszw==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-6.6.0.tgz", + "integrity": "sha512-ja9kuCleKQLesUEx+tEl6ByxwVF1CVCjSc3V0ag78S40NWDRTBJhXwc4c+qlyZ0h/XefXc3waxnsq1izUBe/Nw==", "dev": true, "dependencies": { "@babel/runtime": "7.13.9", "@devicefarmer/adbkit": "2.11.3", - "addons-linter": "3.20.0", + "addons-linter": "4.4.0", "bunyan": "1.8.15", "camelcase": "6.2.0", - "chrome-launcher": "0.14.0", + "chrome-launcher": "0.15.0", "debounce": "1.2.0", "decamelize": "5.0.0", "es6-error": "4.1.1", "event-to-promise": "0.8.0", - "firefox-profile": "4.2.1", + "firefox-profile": "4.2.2", "fs-extra": "9.1.0", - "fx-runner": "1.1.0", + "fx-runner": "1.2.0", "import-fresh": "3.3.0", "mkdirp": "1.0.4", "multimatch": "5.0.0", @@ -12547,9 +12289,9 @@ } }, "node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", + "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", "dev": true, "engines": { "node": ">=10.0.0" @@ -12681,17 +12423,6 @@ "buffer-crc32": "~0.2.3" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -12877,9 +12608,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", "dev": true }, "@babel/helper-replace-supers": { @@ -13119,12 +12850,12 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", - "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/runtime": { @@ -13187,25 +12918,6 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true, - "optional": true, - "peer": true - }, - "@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@cspotcode/source-map-consumer": "0.8.0" - } - }, "@devicefarmer/adbkit": { "version": "2.11.3", "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit/-/adbkit-2.11.3.tgz", @@ -13254,67 +12966,48 @@ } }, "@eslint/eslintrc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.3.tgz", - "integrity": "sha512-DHI1wDPoKCBPoLZA3qDR91+3te/wDSc1YhKg3jR8NxKKRJq2hwHwcWv31cSwSYvIBrmbENoYMWcenW8uproQqg==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", + "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.0.0", + "espree": "^9.2.0", "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } } } }, "@humanwhocodes/config-array": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", - "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", + "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.4" } }, "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, "@istanbuljs/load-nyc-config": { @@ -13364,49 +13057,49 @@ "dev": true }, "@jest/console": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz", - "integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.4.2.tgz", + "integrity": "sha512-xknHThRsPB/To1FUbi6pCe43y58qFC03zfb6R7fDb/FfC7k2R3i1l+izRBJf8DI46KhYGRaF14Eo9A3qbBoixg==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.3.1", - "jest-util": "^27.3.1", + "jest-message-util": "^27.4.2", + "jest-util": "^27.4.2", "slash": "^3.0.0" } }, "@jest/core": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz", - "integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.4.5.tgz", + "integrity": "sha512-3tm/Pevmi8bDsgvo73nX8p/WPng6KWlCyScW10FPEoN1HU4pwI83tJ3TsFvi1FfzsjwUlMNEPowgb/rPau/LTQ==", "dev": true, "requires": { - "@jest/console": "^27.3.1", - "@jest/reporters": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.4.2", + "@jest/reporters": "^27.4.5", + "@jest/test-result": "^27.4.2", + "@jest/transform": "^27.4.5", + "@jest/types": "^27.4.2", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.3.0", - "jest-config": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-resolve-dependencies": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "jest-watcher": "^27.3.1", + "jest-changed-files": "^27.4.2", + "jest-config": "^27.4.5", + "jest-haste-map": "^27.4.5", + "jest-message-util": "^27.4.2", + "jest-regex-util": "^27.4.0", + "jest-resolve": "^27.4.5", + "jest-resolve-dependencies": "^27.4.5", + "jest-runner": "^27.4.5", + "jest-runtime": "^27.4.5", + "jest-snapshot": "^27.4.5", + "jest-util": "^27.4.2", + "jest-validate": "^27.4.2", + "jest-watcher": "^27.4.2", "micromatch": "^4.0.4", "rimraf": "^3.0.0", "slash": "^3.0.0", @@ -13414,53 +13107,53 @@ } }, "@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "version": "27.4.4", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.4.4.tgz", + "integrity": "sha512-q+niMx7cJgt/t/b6dzLOh4W8Ef/8VyKG7hxASK39jakijJzbFBGpptx3RXz13FFV7OishQ9lTbv+dQ5K3EhfDQ==", "dev": true, "requires": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/fake-timers": "^27.4.2", + "@jest/types": "^27.4.2", "@types/node": "*", - "jest-mock": "^27.3.0" + "jest-mock": "^27.4.2" } }, "@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.2.tgz", + "integrity": "sha512-f/Xpzn5YQk5adtqBgvw1V6bF8Nx3hY0OIRRpCvWcfPl0EAjdqWPdhH3t/3XpiWZqtjIEHDyMKP9ajpva1l4Zmg==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" + "jest-message-util": "^27.4.2", + "jest-mock": "^27.4.2", + "jest-util": "^27.4.2" } }, "@jest/globals": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz", - "integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==", + "version": "27.4.4", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.4.4.tgz", + "integrity": "sha512-bqpqQhW30BOreXM8bA8t8JbOQzsq/WnPTnBl+It3UxAD9J8yxEAaBEylHx1dtBapAr/UBk8GidXbzmqnee8tYQ==", "dev": true, "requires": { - "@jest/environment": "^27.3.1", - "@jest/types": "^27.2.5", - "expect": "^27.3.1" + "@jest/environment": "^27.4.4", + "@jest/types": "^27.4.2", + "expect": "^27.4.2" } }, "@jest/reporters": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz", - "integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.5.tgz", + "integrity": "sha512-3orsG4vi8zXuBqEoy2LbnC1kuvkg1KQUgqNxmxpQgIOQEPeV0onvZu+qDQnEoX8qTQErtqn/xzcnbpeTuOLSiA==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.4.2", + "@jest/test-result": "^27.4.2", + "@jest/transform": "^27.4.5", + "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", @@ -13472,10 +13165,10 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", + "jest-haste-map": "^27.4.5", + "jest-resolve": "^27.4.5", + "jest-util": "^27.4.2", + "jest-worker": "^27.4.5", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -13484,9 +13177,9 @@ } }, "@jest/source-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", - "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.4.0.tgz", + "integrity": "sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ==", "dev": true, "requires": { "callsites": "^3.0.0", @@ -13495,45 +13188,45 @@ } }, "@jest/test-result": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz", - "integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.2.tgz", + "integrity": "sha512-kr+bCrra9jfTgxHXHa2UwoQjxvQk3Am6QbpAiJ5x/50LW8llOYrxILkqY0lZRW/hu8FXesnudbql263+EW9iNA==", "dev": true, "requires": { - "@jest/console": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.4.2", + "@jest/types": "^27.4.2", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz", - "integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.5.tgz", + "integrity": "sha512-n5woIn/1v+FT+9hniymHPARA9upYUmfi5Pw9ewVwXCDlK4F5/Gkees9v8vdjGdAIJ2MPHLHodiajLpZZanWzEQ==", "dev": true, "requires": { - "@jest/test-result": "^27.3.1", + "@jest/test-result": "^27.4.2", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-runtime": "^27.3.1" + "jest-haste-map": "^27.4.5", + "jest-runtime": "^27.4.5" } }, "@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.4.5.tgz", + "integrity": "sha512-PuMet2UlZtlGzwc6L+aZmR3I7CEBpqadO03pU40l2RNY2fFJ191b9/ITB44LNOhVtsyykx0OZvj0PCyuLm7Eew==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "babel-plugin-istanbul": "^6.0.0", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", + "jest-haste-map": "^27.4.5", + "jest-regex-util": "^27.4.0", + "jest-util": "^27.4.2", "micromatch": "^4.0.4", "pirates": "^4.0.1", "slash": "^3.0.0", @@ -13542,9 +13235,9 @@ } }, "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.4.2.tgz", + "integrity": "sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -13555,9 +13248,9 @@ } }, "@mdn/browser-compat-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.5.tgz", - "integrity": "sha512-KPSNaHUl5aikqsQU7LpBntFzaPbhm5OJxD88Wv00OKDc4wudyid2wDFqLeb7VcYT9x5bND8PPFloWdK5DY0pHA==", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.11.tgz", + "integrity": "sha512-rmQPBLe3/DuJy0Bcr1KNuSiIcgV67R2AeLxagKMQTI0R8F9lLC894wJRYhA5ytV0CIi7dzxILqdFeuVbqrkoCA==", "dev": true }, "@nodelib/fs.scandir": { @@ -13587,9 +13280,9 @@ } }, "@rollup/plugin-node-resolve": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", - "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.2.tgz", + "integrity": "sha512-xyqbuf1vyOPC60jEKhx3DBHunymnCJswzjNTKfX4Jz7zCPar1UqbRZCNY1u5QaXh97beaFTWdoUUWiV4qX8o/g==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -13620,9 +13313,9 @@ } }, "@rollup/plugin-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-3.0.0.tgz", - "integrity": "sha512-3c7JCbMuYXM4PbPWT4+m/4Y6U60SgsnDT/cCyAyUKwFHg7pTSfsSQzIpETha3a3ig6OdOKzZz87D9ZXIK3qsDg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-3.0.1.tgz", + "integrity": "sha512-989J5oRzf3mm0pO/0djTijdfEh9U3n63BIXN5X7T4U9BP+fN4oxQ6DvDuBvFaHA6scaHQRclqmKQEkBhB7k7Hg==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -13649,9 +13342,9 @@ } }, "@rollup/pluginutils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz", - "integrity": "sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.2.tgz", + "integrity": "sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==", "dev": true, "requires": { "estree-walker": "^2.0.1", @@ -13675,9 +13368,9 @@ } }, "@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" @@ -13708,42 +13401,10 @@ "ts-type": "^1.2.40" } }, - "@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true, - "optional": true, - "peer": true - }, - "@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true, - "optional": true, - "peer": true - }, - "@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true, - "optional": true, - "peer": true - }, - "@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true, - "optional": true, - "peer": true - }, "@types/babel__core": { - "version": "7.1.16", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", - "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "version": "7.1.18", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz", + "integrity": "sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -13754,9 +13415,9 @@ } }, "@types/babel__generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", - "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "dev": true, "requires": { "@babel/types": "^7.0.0" @@ -13789,9 +13450,9 @@ "peer": true }, "@types/chrome": { - "version": "0.0.162", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.162.tgz", - "integrity": "sha512-DiMo9SrOhkb49bXPRke41Nvd9rgDgxn/mqyZ5gQnU+ST3H/vcnnvtwCkpuUl7O9FwoUwECfMSZiBTXuK8sMSwQ==", + "version": "0.0.174", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.174.tgz", + "integrity": "sha512-x5kjvNdwDtOnT+vbnksj69pDl0u9P/WH9LbQWJawLqGgkBRO3AN/xzTxTPgLpp3IqCbuwfp7bRCHqkkaZguzWw==", "dev": true, "requires": { "@types/filesystem": "*", @@ -13909,15 +13570,15 @@ } }, "@types/jasmine": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.1.tgz", - "integrity": "sha512-So26woGjM6F9b2julbJlXdcPdyhwteZzEX2EbFmreuJBamPVVdp6w4djywUG9TmcwjiC+ECAe+RSSBgYEOgEqQ==", + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.3.tgz", + "integrity": "sha512-SWyMrjgdAUHNQmutvDcKablrJhkDLy4wunTme8oYLjKp41GnHGxMRXr2MQMvy/qy8H3LdzwQk9gH4hZ6T++H8g==", "dev": true }, "@types/jest": { - "version": "27.0.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz", - "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz", + "integrity": "sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==", "dev": true, "requires": { "jest-diff": "^27.0.0", @@ -13953,9 +13614,9 @@ "dev": true }, "@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.7.tgz", + "integrity": "sha512-1QUk+WAUD4t8iR+Oj+UgI8oJa6yyxaB8a8pHaC8uqM6RrS1qbL7bf3Pwl5rHv0psm2CuDErgho6v5N+G+5fwtQ==", "dev": true }, "@types/offscreencanvas": { @@ -13965,9 +13626,9 @@ "dev": true }, "@types/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz", + "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==", "dev": true }, "@types/resolve": { @@ -14016,13 +13677,14 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.0.tgz", - "integrity": "sha512-ARUEJHJrq85aaiCqez7SANeahDsJTD3AEua34EoQN9pHS6S5Bq9emcIaGGySt/4X2zSi+vF5hAH52sEen7IO7g==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.0.tgz", + "integrity": "sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "5.3.0", - "@typescript-eslint/scope-manager": "5.3.0", + "@typescript-eslint/experimental-utils": "5.9.0", + "@typescript-eslint/scope-manager": "5.9.0", + "@typescript-eslint/type-utils": "5.9.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -14031,15 +13693,6 @@ "tsutils": "^3.21.0" }, "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, "ignore": { "version": "5.1.8", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", @@ -14049,35 +13702,56 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.0.tgz", - "integrity": "sha512-NFVxYTjKj69qB0FM+piah1x3G/63WB8vCBMnlnEHUsiLzXSTWb9FmFn36FD9Zb4APKBLY3xRArOGSMQkuzTF1w==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz", + "integrity": "sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.3.0", - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/typescript-estree": "5.3.0", + "@typescript-eslint/scope-manager": "5.9.0", + "@typescript-eslint/types": "5.9.0", + "@typescript-eslint/typescript-estree": "5.9.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/parser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.3.0.tgz", - "integrity": "sha512-rKu/yAReip7ovx8UwOAszJVO5MgBquo8WjIQcp1gx4pYQCwYzag+I5nVNHO4MqyMkAo0gWt2gWUi+36gWAVKcw==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.0.tgz", + "integrity": "sha512-/6pOPz8yAxEt4PLzgbFRDpZmHnXCeZgPDrh/1DaVKOjvn/UPMlWhbx/gA96xRi2JxY1kBl2AmwVbyROUqys5xQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.3.0", - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/typescript-estree": "5.3.0", + "@typescript-eslint/scope-manager": "5.9.0", + "@typescript-eslint/types": "5.9.0", + "@typescript-eslint/typescript-estree": "5.9.0", "debug": "^4.3.2" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz", + "integrity": "sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.9.0", + "@typescript-eslint/visitor-keys": "5.9.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.0.tgz", + "integrity": "sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "5.9.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" }, "dependencies": { "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -14085,30 +13759,20 @@ } } }, - "@typescript-eslint/scope-manager": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.0.tgz", - "integrity": "sha512-22Uic9oRlTsPppy5Tcwfj+QET5RWEnZ5414Prby465XxQrQFZ6nnm5KnXgnsAJefG4hEgMnaxTB3kNEyjdjj6A==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/visitor-keys": "5.3.0" - } - }, "@typescript-eslint/types": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.0.tgz", - "integrity": "sha512-fce5pG41/w8O6ahQEhXmMV+xuh4+GayzqEogN24EK+vECA3I6pUwKuLi5QbXO721EMitpQne5VKXofPonYlAQg==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.0.tgz", + "integrity": "sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.0.tgz", - "integrity": "sha512-FJ0nqcaUOpn/6Z4Jwbtf+o0valjBLkqc3MWkMvrhA2TvzFXtcclIM8F4MBEmYa2kgcI8EZeSAzwoSrIC8JYkug==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz", + "integrity": "sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/visitor-keys": "5.3.0", + "@typescript-eslint/types": "5.9.0", + "@typescript-eslint/visitor-keys": "5.9.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -14117,23 +13781,43 @@ }, "dependencies": { "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" } + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true } } }, "@typescript-eslint/visitor-keys": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.0.tgz", - "integrity": "sha512-oVIAfIQuq0x2TFDNLVavUn548WL+7hdhxYn+9j3YdJJXB7mH9dAmZNJsPDa7Jc+B9WGqoiex7GUDbyMxV0a/aw==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz", + "integrity": "sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.3.0", + "@typescript-eslint/types": "5.9.0", "eslint-visitor-keys": "^3.0.0" } }, @@ -14214,9 +13898,9 @@ } }, "acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", "dev": true }, "acorn-globals": { @@ -14251,26 +13935,25 @@ "dev": true }, "addons-linter": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-3.20.0.tgz", - "integrity": "sha512-rHaahIZ34HSL1D7ZYCMs/QQPOp0pAnsOMqtNSy/zDSrkgVtlCQvSeMpx1a3ZnE2pGRVHjMIO506KWUmrN1lPRw==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-4.4.0.tgz", + "integrity": "sha512-2N8oo97y2w2MJX/bcvnSb5BG2s+0BOlOu/0Q06wp5bnyEwWbfKFOVX/CorivGkRteY0fbSUWvU55LXgIiLyH5w==", "dev": true, "requires": { - "@mdn/browser-compat-data": "4.0.5", + "@mdn/browser-compat-data": "4.0.11", "addons-moz-compare": "1.2.0", - "addons-scanner-utils": "5.0.0", + "addons-scanner-utils": "6.1.0", "ajv": "6.12.6", "ajv-merge-patch": "4.1.0", "chalk": "4.1.2", "cheerio": "1.0.0-rc.10", "columnify": "1.5.4", - "common-tags": "1.8.0", + "common-tags": "1.8.2", "deepmerge": "4.2.2", - "dispensary": "0.62.0", - "eslint": "7.32.0", - "eslint-plugin-no-unsanitized": "3.1.5", - "eslint-visitor-keys": "3.0.0", - "espree": "9.0.0", + "eslint": "8.3.0", + "eslint-plugin-no-unsanitized": "4.0.0", + "eslint-visitor-keys": "3.1.0", + "espree": "9.1.0", "esprima": "4.0.1", "fluent-syntax": "0.13.0", "glob": "7.2.0", @@ -14278,66 +13961,22 @@ "is-mergeable-object": "1.1.1", "jed": "1.1.1", "os-locale": "5.0.0", - "pino": "6.13.3", - "postcss": "8.3.9", + "pino": "7.4.0", + "postcss": "8.3.11", "relaxed-json": "1.0.3", "semver": "7.3.5", - "source-map-support": "0.5.20", + "sha.js": "2.4.11", + "source-map-support": "0.5.21", "tosource": "1.0.0", "upath": "2.0.1", "yargs": "17.2.1", "yauzl": "2.10.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - } - } - } - }, "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", + "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.0", @@ -14345,21 +13984,12 @@ "minimatch": "^3.0.4" } }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -14367,37 +13997,36 @@ "dev": true }, "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", + "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", "dev": true, "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.0.4", + "@humanwhocodes/config-array": "^0.6.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^7.1.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.1.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", + "glob-parent": "^6.0.1", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", @@ -14405,64 +14034,55 @@ "natural-compare": "^1.4.0", "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^3.1.0", + "regexpp": "^3.2.0", "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - } } }, "eslint-plugin-no-unsanitized": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-3.1.5.tgz", - "integrity": "sha512-s/6w++p1590h/H/dE2Wo660bOkaM/3OEK14Y7xm1UT0bafxkKw1Cq0ksjxkxLdH/WWd014DlsLKuD6CyNrR2Dw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.0.tgz", + "integrity": "sha512-Wguc3EZS+7BJ/Pgu8C1/G86eXHUIRz4ZHEhPlwVkS42MbHEyfh8Wm+pDRVAg73EE0TR//SbjkPlHr93yLJT10g==", "dev": true, "requires": {} }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "eslint-scope": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", + "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "espree": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", + "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", + "dev": true, + "requires": { + "acorn": "^8.6.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.1.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" } }, "image-size": { @@ -14474,14 +14094,14 @@ "queue": "6.0.2" } }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, "yargs": { @@ -14508,9 +14128,9 @@ "dev": true }, "addons-scanner-utils": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-5.0.0.tgz", - "integrity": "sha512-uENKmGryUeR07I1c8RonDZY/bkAG+zKfZ3T61JFusgY5wiARQJ5+8hI33m8sctXxPopjfxiIjHsG/g7cQzn4Yw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-6.1.0.tgz", + "integrity": "sha512-O9rObtOmnMI1qBmHH2RlV+H3vAJWm594bbxbFYEkYeqSUkXd0Ohzjwnv1af4GFDlrBK6wB8TS0+/2X/zB8+LnA==", "dev": true, "requires": { "@types/yauzl": "2.9.2", @@ -14640,14 +14260,6 @@ } } }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "optional": true, - "peer": true - }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -14660,12 +14272,6 @@ "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", "dev": true }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -14686,18 +14292,6 @@ "is-string": "^1.0.7" } }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -14736,12 +14330,6 @@ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, "async": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", @@ -14779,16 +14367,16 @@ "dev": true }, "babel-jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", - "integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.5.tgz", + "integrity": "sha512-3uuUTjXbgtODmSv/DXO9nZfD52IyC2OYTFaXGRzL0kpykzroaquCrD5+lZNafTvZlnNqZHt5pb0M08qVBZnsnA==", "dev": true, "requires": { - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/transform": "^27.4.5", + "@jest/types": "^27.4.2", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.2.0", + "babel-preset-jest": "^27.4.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "slash": "^3.0.0" @@ -14829,9 +14417,9 @@ } }, "babel-plugin-jest-hoist": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", - "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz", + "integrity": "sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw==", "dev": true, "requires": { "@babel/template": "^7.3.3", @@ -14861,12 +14449,12 @@ } }, "babel-preset-jest": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", - "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz", + "integrity": "sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^27.2.0", + "babel-plugin-jest-hoist": "^27.4.0", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -15257,9 +14845,9 @@ "dev": true }, "chrome-launcher": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.14.0.tgz", - "integrity": "sha512-W//HpflaW6qBGrmuskup7g+XJZN6w03ko9QSIe5CtcTal2u0up5SeReK3Ll1Why4Ey8dPkv8XSodZyHPnGbVHQ==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.0.tgz", + "integrity": "sha512-ZQqX5kb9H0+jy1OqLnWampfocrtSZaGl7Ny3F9GRha85o4odbL8x55paUzh51UC7cEmZ5obp3H2Mm70uC2PpRA==", "dev": true, "requires": { "@types/node": "*", @@ -15507,13 +15095,22 @@ } }, "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "peer": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "peer": true + } } }, "content-type": { @@ -15575,14 +15172,6 @@ "vary": "^1" } }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "optional": true, - "peer": true - }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -15601,16 +15190,16 @@ "dev": true }, "css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" } }, "css-what": { @@ -15681,9 +15270,9 @@ "dev": true }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -16038,29 +15627,21 @@ "dev": true }, "devtools-protocol": { - "version": "0.0.901419", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz", - "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==", + "version": "0.0.937139", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.937139.tgz", + "integrity": "sha512-daj+rzR3QSxsPRy5vjjthn58axO8c11j58uY0lG5vvlJk/EiOdCWOptGdkXDjtuRHr78emKq0udHCXM4trhoDQ==", "dev": true }, "di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", - "dev": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.4.0.tgz", + "integrity": "sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==", "dev": true }, "dir-glob": { @@ -16072,43 +15653,6 @@ "path-type": "^4.0.0" } }, - "dispensary": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.62.0.tgz", - "integrity": "sha512-x8vqPX7owhzDp3Y6t/iOuTuNoWx5hlZKITlzlybETsZoY05cYDubGpwt0soLfRLAWLuxX1lq0lTc/vXtk/CDCw==", - "dev": true, - "requires": { - "async": "~3.2.0", - "natural-compare-lite": "~1.4.0", - "pino": "~6.11.0", - "request": "~2.88.0", - "sha.js": "~2.4.4", - "source-map-support": "~0.5.4", - "yargs": "~16.2.0" - }, - "dependencies": { - "async": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", - "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==", - "dev": true - }, - "pino": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/pino/-/pino-6.11.3.tgz", - "integrity": "sha512-drPtqkkSf0ufx2gaea3TryFiBHdNIdXKf5LN0hTM82SXI4xVIve2wLwNg92e1MT6m3jASLu6VO7eGY6+mmGeyw==", - "dev": true, - "requires": { - "fast-redact": "^3.0.0", - "fast-safe-stringify": "^2.0.7", - "flatstr": "^1.0.12", - "pino-std-serializers": "^3.1.0", - "quick-format-unescaped": "^4.0.3", - "sonic-boom": "^1.0.2" - } - } - } - }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -16165,9 +15709,9 @@ } }, "domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", "dev": true, "requires": { "domelementtype": "^2.2.0" @@ -16259,6 +15803,18 @@ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, + "duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dev": true, + "requires": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -16333,6 +15889,15 @@ "debug": "~4.3.1", "engine.io-parser": "~5.0.0", "ws": "~8.2.3" + }, + "dependencies": { + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "requires": {} + } } }, "engine.io-parser": { @@ -16520,13 +16085,13 @@ } }, "eslint": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.1.0.tgz", - "integrity": "sha512-JZvNneArGSUsluHWJ8g8MMs3CfIEzwaLx9KyH4tZ2i+R2/rPWzL8c0zg3rHdwYVpN/1sB9gqnjHwz9HoeJpGHw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz", + "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.0.3", - "@humanwhocodes/config-array": "^0.6.0", + "@eslint/eslintrc": "^1.0.5", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -16534,10 +16099,10 @@ "doctrine": "^3.0.0", "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^6.0.0", + "eslint-scope": "^7.1.0", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.3.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -16559,21 +16124,12 @@ "progress": "^2.0.0", "regexpp": "^3.2.0", "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -16581,9 +16137,9 @@ "dev": true }, "eslint-scope": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz", - "integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", + "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -16629,14 +16185,13 @@ } }, "eslint-module-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", - "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz", + "integrity": "sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==", "dev": true, "requires": { "debug": "^3.2.7", - "find-up": "^2.1.0", - "pkg-dir": "^2.0.0" + "find-up": "^2.1.0" }, "dependencies": { "debug": { @@ -16696,22 +16251,13 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } } } }, "eslint-plugin-import": { - "version": "2.25.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz", - "integrity": "sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g==", + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", + "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", "dev": true, "requires": { "array-includes": "^3.1.4", @@ -16719,14 +16265,14 @@ "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.0", + "eslint-module-utils": "^2.7.2", "has": "^1.0.3", - "is-core-module": "^2.7.0", + "is-core-module": "^2.8.0", "is-glob": "^4.0.3", "minimatch": "^3.0.4", "object.values": "^1.1.5", "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" + "tsconfig-paths": "^3.12.0" }, "dependencies": { "debug": { @@ -16789,20 +16335,20 @@ } }, "eslint-visitor-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz", - "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", "dev": true }, "espree": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz", - "integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", + "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", "dev": true, "requires": { - "acorn": "^8.5.0", + "acorn": "^8.7.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.0.0" + "eslint-visitor-keys": "^3.1.0" } }, "esprima": { @@ -16914,17 +16460,17 @@ "dev": true }, "expect": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", - "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.4.2.tgz", + "integrity": "sha512-BjAXIDC6ZOW+WBFNg96J22D27Nq5ohn+oGcuP2rtOtcjuxNoV9McpQ60PcQWhdFOSBIQdR72e+4HdnbZTFSTyg==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "ansi-styles": "^5.0.0", - "jest-get-type": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6" + "jest-get-type": "^27.4.0", + "jest-matcher-utils": "^27.4.2", + "jest-message-util": "^27.4.2", + "jest-regex-util": "^27.4.0" }, "dependencies": { "ansi-styles": { @@ -16974,6 +16520,16 @@ "vary": "~1.1.2" }, "dependencies": { + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "peer": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, "cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", @@ -17099,12 +16655,6 @@ "integrity": "sha512-YN+CYfCVRVMUZOUPeinHNKgytM1wPI/C/UCLEi56EsY2dwwvI00kIJHJoI7pMVqGoMew8SMZ2SSfHKHULHXDsg==", "dev": true }, - "fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true - }, "fastify-warning": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/fastify-warning/-/fastify-warning-0.2.0.tgz", @@ -17236,9 +16786,9 @@ } }, "firefox-profile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.2.1.tgz", - "integrity": "sha512-KyA5ruS7V1nXpaHlJrKPW1jkoc9bq/WKquaKuca/ETembuxcBQPEPpxAp0biwjQCPf3sBslN/heZLdfa5Eotzg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.2.2.tgz", + "integrity": "sha512-3kI17Xl9dL9AeRkpV1yahsJ+UbekkPtlQswKrIsTY1NLgxtEOR4R19rjGGz5+7/rP8Jt6fvxHk+Bai9R6Eai3w==", "dev": true, "requires": { "adm-zip": "~0.5.x", @@ -17284,12 +16834,6 @@ "rimraf": "^3.0.2" } }, - "flatstr": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", - "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==", - "dev": true - }, "flatted": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", @@ -17421,13 +16965,13 @@ "dev": true }, "fx-runner": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.1.0.tgz", - "integrity": "sha512-v/Eo69DDFW30zPdvjCYVXddjVvLy2xGeRbg0S18bPd8kEc0q9VsDoDkjyOxY5lTZsAqcQGy0OWjs3HCfRVBNSg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.2.0.tgz", + "integrity": "sha512-/zR9BmHF8h4OaVJ+fHHJBv/5FdPV9mjOAPIscQZbAijm7Aa15Ls/P8UBHD5OKU5jwu2niTxkkzzHKITE7oCMoQ==", "dev": true, "requires": { "commander": "2.9.0", - "shell-quote": "1.6.1", + "shell-quote": "1.7.3", "spawn-sync": "1.0.15", "when": "3.7.7", "which": "1.2.4", @@ -17566,23 +17110,35 @@ } }, "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.0.2.tgz", + "integrity": "sha512-lAsmb/5Lww4r7MM9nCCliDZVIKbZTavrsunAsHLr9oHthrZP1qi7/gAnHOsUs9bLvEt2vKVJhHmxuL7QbDuPdQ==", "dev": true, "requires": { - "array-union": "^2.1.0", + "array-union": "^3.0.1", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "fast-glob": "^3.2.7", + "ignore": "^5.1.8", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, "dependencies": { + "array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true + }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true } } @@ -18313,9 +17869,9 @@ } }, "istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "requires": { "debug": "^4.1.1", @@ -18324,9 +17880,9 @@ } }, "istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.3.tgz", + "integrity": "sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -18345,9 +17901,9 @@ } }, "jasmine-core": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.10.1.tgz", - "integrity": "sha512-ooZWSDVAdh79Rrj4/nnfklL3NQVra0BcuhcuWoAwwi+znLDoUeH87AFfeX8s+YeYi6xlv5nveRyaA1v7CintfA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.0.0.tgz", + "integrity": "sha512-tq24OCqHElgU9KDpb/8O21r1IfotgjIzalfW9eCmRR40LZpvwXT68iariIyayMwi0m98RDt16aljdbwK0sBMmQ==", "dev": true }, "jed": { @@ -18357,273 +17913,274 @@ "dev": true }, "jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz", - "integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.5.tgz", + "integrity": "sha512-uT5MiVN3Jppt314kidCk47MYIRilJjA/l2mxwiuzzxGUeJIvA8/pDaJOAX5KWvjAo7SCydcW0/4WEtgbLMiJkg==", "dev": true, "requires": { - "@jest/core": "^27.3.1", + "@jest/core": "^27.4.5", "import-local": "^3.0.2", - "jest-cli": "^27.3.1" + "jest-cli": "^27.4.5" } }, "jest-changed-files": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz", - "integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.4.2.tgz", + "integrity": "sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "execa": "^5.0.0", "throat": "^6.0.1" } }, "jest-circus": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", - "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.5.tgz", + "integrity": "sha512-eTNWa9wsvBwPykhMMShheafbwyakcdHZaEYh5iRrQ0PFJxkDP/e3U/FvzGuKWu2WpwUA3C3hPlfpuzvOdTVqnw==", "dev": true, "requires": { - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.4.4", + "@jest/test-result": "^27.4.2", + "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.3.1", + "expect": "^27.4.2", "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", + "jest-each": "^27.4.2", + "jest-matcher-utils": "^27.4.2", + "jest-message-util": "^27.4.2", + "jest-runtime": "^27.4.5", + "jest-snapshot": "^27.4.5", + "jest-util": "^27.4.2", + "pretty-format": "^27.4.2", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" } }, "jest-cli": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", - "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.5.tgz", + "integrity": "sha512-hrky3DSgE0u7sQxaCL7bdebEPHx5QzYmrGuUjaPLmPE8jx5adtvGuOlRspvMoVLTTDOHRnZDoRLYJuA+VCI7Hg==", "dev": true, "requires": { - "@jest/core": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/core": "^27.4.5", + "@jest/test-result": "^27.4.2", + "@jest/types": "^27.4.2", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "jest-config": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-config": "^27.4.5", + "jest-util": "^27.4.2", + "jest-validate": "^27.4.2", "prompts": "^2.0.1", "yargs": "^16.2.0" } }, "jest-config": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", - "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.4.5.tgz", + "integrity": "sha512-t+STVJtPt+fpqQ8GBw850NtSQbnDOw/UzdPfzDaHQ48/AylQlW7LHj3dH+ndxhC1UxJ0Q3qkq7IH+nM1skwTwA==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.3.1", - "@jest/types": "^27.2.5", - "babel-jest": "^27.3.1", + "@jest/test-sequencer": "^27.4.5", + "@jest/types": "^27.4.2", + "babel-jest": "^27.4.5", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", - "jest-circus": "^27.3.1", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-jasmine2": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-circus": "^27.4.5", + "jest-environment-jsdom": "^27.4.4", + "jest-environment-node": "^27.4.4", + "jest-get-type": "^27.4.0", + "jest-jasmine2": "^27.4.5", + "jest-regex-util": "^27.4.0", + "jest-resolve": "^27.4.5", + "jest-runner": "^27.4.5", + "jest-util": "^27.4.2", + "jest-validate": "^27.4.2", "micromatch": "^4.0.4", - "pretty-format": "^27.3.1" + "pretty-format": "^27.4.2", + "slash": "^3.0.0" }, "dependencies": { "ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", "dev": true } } }, "jest-diff": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", - "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.2.tgz", + "integrity": "sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "diff-sequences": "^27.4.0", + "jest-get-type": "^27.4.0", + "pretty-format": "^27.4.2" } }, "jest-docblock": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", - "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.4.0.tgz", + "integrity": "sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", - "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.4.2.tgz", + "integrity": "sha512-53V2MNyW28CTruB3lXaHNk6PkiIFuzdOC9gR3C6j8YE/ACfrPnz+slB0s17AgU1TtxNzLuHyvNlLJ+8QYw9nBg==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-get-type": "^27.4.0", + "jest-util": "^27.4.2", + "pretty-format": "^27.4.2" } }, "jest-environment-jsdom": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz", - "integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==", + "version": "27.4.4", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.4.tgz", + "integrity": "sha512-cYR3ndNfHBqQgFvS1RL7dNqSvD//K56j/q1s2ygNHcfTCAp12zfIromO1w3COmXrxS8hWAh7+CmZmGCIoqGcGA==", "dev": true, "requires": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.4.4", + "@jest/fake-timers": "^27.4.2", + "@jest/types": "^27.4.2", "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1", + "jest-mock": "^27.4.2", + "jest-util": "^27.4.2", "jsdom": "^16.6.0" } }, "jest-environment-node": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", - "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", + "version": "27.4.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.4.tgz", + "integrity": "sha512-D+v3lbJ2GjQTQR23TK0kY3vFVmSeea05giInI41HHOaJnAwOnmUHTZgUaZL+VxUB43pIzoa7PMwWtCVlIUoVoA==", "dev": true, "requires": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.4.4", + "@jest/fake-timers": "^27.4.2", + "@jest/types": "^27.4.2", "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" + "jest-mock": "^27.4.2", + "jest-util": "^27.4.2" } }, "jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.4.0.tgz", + "integrity": "sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==", "dev": true }, "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.5.tgz", + "integrity": "sha512-oJm1b5qhhPs78K24EDGifWS0dELYxnoBiDhatT/FThgB9yxqUm5F6li3Pv+Q+apMBmmPNzOBnZ7ZxWMB1Leq1Q==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "fsevents": "^2.3.2", "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", + "jest-regex-util": "^27.4.0", + "jest-serializer": "^27.4.0", + "jest-util": "^27.4.2", + "jest-worker": "^27.4.5", "micromatch": "^4.0.4", "walker": "^1.0.7" } }, "jest-jasmine2": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz", - "integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.5.tgz", + "integrity": "sha512-oUnvwhJDj2LhOiUB1kdnJjkx8C5PwgUZQb9urF77mELH9DGR4e2GqpWQKBOYXWs5+uTN9BGDqRz3Aeg5Wts7aw==", "dev": true, "requires": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^27.4.4", + "@jest/source-map": "^27.4.0", + "@jest/test-result": "^27.4.2", + "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.3.1", + "expect": "^27.4.2", "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", + "jest-each": "^27.4.2", + "jest-matcher-utils": "^27.4.2", + "jest-message-util": "^27.4.2", + "jest-runtime": "^27.4.5", + "jest-snapshot": "^27.4.5", + "jest-util": "^27.4.2", + "pretty-format": "^27.4.2", "throat": "^6.0.1" } }, "jest-leak-detector": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz", - "integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.2.tgz", + "integrity": "sha512-ml0KvFYZllzPBJWDei3mDzUhyp/M4ubKebX++fPaudpe8OsxUE+m+P6ciVLboQsrzOCWDjE20/eXew9QMx/VGw==", "dev": true, "requires": { - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-get-type": "^27.4.0", + "pretty-format": "^27.4.2" } }, "jest-matcher-utils": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", - "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.2.tgz", + "integrity": "sha512-jyP28er3RRtMv+fmYC/PKG8wvAmfGcSNproVTW2Y0P/OY7/hWUOmsPfxN1jOhM+0u2xU984u2yEagGivz9OBGQ==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-diff": "^27.4.2", + "jest-get-type": "^27.4.0", + "pretty-format": "^27.4.2" } }, "jest-message-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz", - "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.2.tgz", + "integrity": "sha512-OMRqRNd9E0DkBLZpFtZkAGYOXl6ZpoMtQJWTAREJKDOFa0M6ptB7L67tp+cszMBkvSgKOhNtQp2Vbcz3ZZKo/w==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.4", - "pretty-format": "^27.3.1", + "pretty-format": "^27.4.2", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.2.tgz", + "integrity": "sha512-PDDPuyhoukk20JrQKeofK12hqtSka7mWH0QQuxSNgrdiPsrnYYLS6wbzu/HDlxZRzji5ylLRULeuI/vmZZDrYA==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "@types/node": "*" } }, @@ -18635,83 +18192,83 @@ "requires": {} }, "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.4.0.tgz", + "integrity": "sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg==", "dev": true }, "jest-resolve": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz", - "integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.5.tgz", + "integrity": "sha512-xU3z1BuOz/hUhVUL+918KqUgK+skqOuUsAi7A+iwoUldK6/+PW+utK8l8cxIWT9AW7IAhGNXjSAh1UYmjULZZw==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", + "jest-haste-map": "^27.4.5", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-util": "^27.4.2", + "jest-validate": "^27.4.2", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" } }, "jest-resolve-dependencies": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz", - "integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.5.tgz", + "integrity": "sha512-elEVvkvRK51y037NshtEkEnukMBWvlPzZHiL847OrIljJ8yIsujD2GXRPqDXC4rEVKbcdsy7W0FxoZb4WmEs7w==", "dev": true, "requires": { - "@jest/types": "^27.2.5", - "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.3.1" + "@jest/types": "^27.4.2", + "jest-regex-util": "^27.4.0", + "jest-snapshot": "^27.4.5" } }, "jest-runner": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz", - "integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.5.tgz", + "integrity": "sha512-/irauncTfmY1WkTaRQGRWcyQLzK1g98GYG/8QvIPviHgO1Fqz1JYeEIsSfF+9mc/UTA6S+IIHFgKyvUrtiBIZg==", "dev": true, "requires": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^27.4.2", + "@jest/environment": "^27.4.4", + "@jest/test-result": "^27.4.2", + "@jest/transform": "^27.4.5", + "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-leak-detector": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", + "jest-docblock": "^27.4.0", + "jest-environment-jsdom": "^27.4.4", + "jest-environment-node": "^27.4.4", + "jest-haste-map": "^27.4.5", + "jest-leak-detector": "^27.4.2", + "jest-message-util": "^27.4.2", + "jest-resolve": "^27.4.5", + "jest-runtime": "^27.4.5", + "jest-util": "^27.4.2", + "jest-worker": "^27.4.5", "source-map-support": "^0.5.6", "throat": "^6.0.1" } }, "jest-runtime": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz", - "integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==", - "dev": true, - "requires": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/globals": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.5.tgz", + "integrity": "sha512-CIYqwuJQXHQtPd/idgrx4zgJ6iCb6uBjQq1RSAGQrw2S8XifDmoM1Ot8NRd80ooAm+ZNdHVwsktIMGlA1F1FAQ==", + "dev": true, + "requires": { + "@jest/console": "^27.4.2", + "@jest/environment": "^27.4.4", + "@jest/globals": "^27.4.4", + "@jest/source-map": "^27.4.0", + "@jest/test-result": "^27.4.2", + "@jest/transform": "^27.4.5", + "@jest/types": "^27.4.2", "@types/yargs": "^16.0.0", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", @@ -18720,23 +18277,23 @@ "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-haste-map": "^27.4.5", + "jest-message-util": "^27.4.2", + "jest-mock": "^27.4.2", + "jest-regex-util": "^27.4.0", + "jest-resolve": "^27.4.5", + "jest-snapshot": "^27.4.5", + "jest-util": "^27.4.2", + "jest-validate": "^27.4.2", "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^16.2.0" } }, "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.4.0.tgz", + "integrity": "sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ==", "dev": true, "requires": { "@types/node": "*", @@ -18744,9 +18301,9 @@ } }, "jest-snapshot": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz", - "integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.5.tgz", + "integrity": "sha512-eCi/iM1YJFrJWiT9de4+RpWWWBqsHiYxFG9V9o/n0WXs6GpW4lUt4FAHAgFPTLPqCUVzrMQmSmTZSgQzwqR7IQ==", "dev": true, "requires": { "@babel/core": "^7.7.2", @@ -18755,33 +18312,33 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/transform": "^27.4.5", + "@jest/types": "^27.4.2", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.3.1", + "expect": "^27.4.2", "graceful-fs": "^4.2.4", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", + "jest-diff": "^27.4.2", + "jest-get-type": "^27.4.0", + "jest-haste-map": "^27.4.5", + "jest-matcher-utils": "^27.4.2", + "jest-message-util": "^27.4.2", + "jest-resolve": "^27.4.5", + "jest-util": "^27.4.2", "natural-compare": "^1.4.0", - "pretty-format": "^27.3.1", + "pretty-format": "^27.4.2", "semver": "^7.3.2" } }, "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz", + "integrity": "sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -18798,46 +18355,46 @@ } }, "jest-validate": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", - "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.2.tgz", + "integrity": "sha512-hWYsSUej+Fs8ZhOm5vhWzwSLmVaPAxRy+Mr+z5MzeaHm9AxUpXdoVMEW4R86y5gOobVfBsMFLk4Rb+QkiEpx1A==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", + "jest-get-type": "^27.4.0", "leven": "^3.1.0", - "pretty-format": "^27.3.1" + "pretty-format": "^27.4.2" }, "dependencies": { "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true } } }, "jest-watcher": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz", - "integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.2.tgz", + "integrity": "sha512-NJvMVyyBeXfDezhWzUOCOYZrUmkSCiatpjpm+nFUid74OZEHk6aMLrZAukIiFDwdbqp6mTM6Ui1w4oc+8EobQg==", "dev": true, "requires": { - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/test-result": "^27.4.2", + "@jest/types": "^27.4.2", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.3.1", + "jest-util": "^27.4.2", "string-length": "^4.0.1" } }, "jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.5.tgz", + "integrity": "sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg==", "dev": true, "requires": { "@types/node": "*", @@ -18913,9 +18470,9 @@ }, "dependencies": { "ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", "dev": true, "requires": {} } @@ -18949,9 +18506,9 @@ "dev": true }, "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "json-schema-traverse": { @@ -18991,12 +18548,6 @@ "universalify": "^2.0.0" } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, "jsonwebtoken": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", @@ -19024,14 +18575,14 @@ } }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" } }, @@ -19095,9 +18646,9 @@ } }, "karma": { - "version": "6.3.7", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.7.tgz", - "integrity": "sha512-EEkswZhOx3EFt1ELlVECeOXHONbHSGw6fkbeMxvCSkLD77X38Kb1d/Oup2Re9ep/tSoa1He3YIBf3Hp+9EsKtg==", + "version": "6.3.9", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.9.tgz", + "integrity": "sha512-E/MqdLM9uVIhfuyVnrhlGBu4miafBdXEAEqCmwdEMh3n17C7UWC/8Kvm3AYKr91gc7scutekZ0xv6rxRaUCtnw==", "dev": true, "requires": { "body-parser": "^1.19.0", @@ -19146,16 +18697,16 @@ } }, "karma-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.0.3.tgz", - "integrity": "sha512-atDvLQqvPcLxhED0cmXYdsPMCQuh6Asa9FMZW1bhNqlVEhJoB9qyZ2BY1gu7D/rr5GLGb5QzYO4siQskxaWP/g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.1.0.tgz", + "integrity": "sha512-uIejpnArNFQIovB6EPsKO/T4XofELdJWXcA2ADXztFlKhHbr0Ws6ba7wKTMVWsIhEs4iJxdhQkCQrkkhFJSZCw==", "dev": true, "requires": { - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.1", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^4.0.3", "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.0.5", "minimatch": "^3.0.4" } }, @@ -19176,6 +18727,14 @@ "dev": true, "requires": { "jasmine-core": "^3.6.0" + }, + "dependencies": { + "jasmine-core": { + "version": "3.99.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.0.tgz", + "integrity": "sha512-+ZDaJlEfRopINQqgE+hvzRyDIQDeKfqqTvF8RzXsvU1yE3pBDRud2+Qfh9WvGgRpuzqxyQJVI6Amy5XQ11r/3w==", + "dev": true + } } }, "karma-rollup-preprocessor": { @@ -19299,13 +18858,13 @@ } }, "lighthouse-logger": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.2.0.tgz", - "integrity": "sha512-wzUvdIeJZhRsG6gpZfmSCfysaxNEr43i+QT+Hie94wvHDKFLi4n7C2GqZ4sTC+PH5b5iktmXJvU87rWvhP3lHw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", + "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", "dev": true, "requires": { - "debug": "^2.6.8", - "marky": "^1.2.0" + "debug": "^2.6.9", + "marky": "^1.2.2" }, "dependencies": { "debug": { @@ -19346,12 +18905,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -19406,12 +18959,6 @@ "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", "dev": true }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, "log4js": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", @@ -19625,6 +19172,12 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "moment": { "version": "2.29.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", @@ -19729,12 +19282,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha1-F7CVgZiJef3a/gIB6TG6kzyWy7Q=", - "dev": true - }, "ncp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", @@ -19773,10 +19320,37 @@ "dev": true }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } }, "node-forge": { "version": "0.10.0", @@ -19901,6 +19475,12 @@ "es-abstract": "^1.19.1" } }, + "on-exit-leak-free": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", + "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==", + "dev": true + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -20284,9 +19864,9 @@ "dev": true }, "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "picomatch": { @@ -20319,24 +19899,38 @@ } }, "pino": { - "version": "6.13.3", - "resolved": "https://registry.npmjs.org/pino/-/pino-6.13.3.tgz", - "integrity": "sha512-tJy6qVgkh9MwNgqX1/oYi3ehfl2Y9H0uHyEEMsBe74KinESIjdMrMQDWpcZPpPicg3VV35d/GLQZmo4QgU2Xkg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-7.4.0.tgz", + "integrity": "sha512-qEHLtKcmYcid6s2qjlGTxaLe9Lq1IiGmd74IZb9Obi/FRTaA+ymb8FD/cmOIL4vt6ug/EtmhGwxZbiGhI+7cuQ==", "dev": true, "requires": { "fast-redact": "^3.0.0", - "fast-safe-stringify": "^2.0.8", "fastify-warning": "^0.2.0", - "flatstr": "^1.0.12", - "pino-std-serializers": "^3.1.0", + "get-caller-file": "^2.0.5", + "on-exit-leak-free": "^0.2.0", + "pino-abstract-transport": "v0.5.0", + "pino-std-serializers": "^4.0.0", "quick-format-unescaped": "^4.0.3", - "sonic-boom": "^1.0.2" + "real-require": "^0.1.0", + "safe-stable-stringify": "^2.1.0", + "sonic-boom": "^2.2.1", + "thread-stream": "^0.13.0" + } + }, + "pino-abstract-transport": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz", + "integrity": "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==", + "dev": true, + "requires": { + "duplexify": "^4.1.2", + "split2": "^4.0.0" } }, "pino-std-serializers": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", - "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", + "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==", "dev": true }, "pirates": { @@ -20358,13 +19952,13 @@ } }, "postcss": { - "version": "8.3.9", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", - "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", + "version": "8.3.11", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", + "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", "dev": true, "requires": { - "nanoid": "^3.1.28", - "picocolors": "^0.2.1", + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", "source-map-js": "^0.6.2" } }, @@ -20381,18 +19975,18 @@ "dev": true }, "prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", "dev": true }, "pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.2.tgz", + "integrity": "sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^27.4.2", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" @@ -20484,45 +20078,29 @@ } }, "puppeteer-core": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-10.4.0.tgz", - "integrity": "sha512-KU8zyb7AIOqNjLCN3wkrFXxh+EVaG+zrs2P03ATNjc3iwSxHsu5/EvZiREpQ/IJiT9xfQbDVgKcsvRuzLCxglQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.0.1.tgz", + "integrity": "sha512-aKTN7Rtu7zJuhadihaxXnbC4fRPe/Q6VR8u6krJk3dnmTL7am01hl3XG1x9nNCkxi5fA4+e4ba9QmTvFiqGxSA==", "dev": true, "requires": { - "debug": "4.3.1", - "devtools-protocol": "0.0.901419", + "debug": "4.3.2", + "devtools-protocol": "0.0.937139", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.1", + "node-fetch": "2.6.5", "pkg-dir": "4.2.0", - "progress": "2.0.1", + "progress": "2.0.3", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", - "tar-fs": "2.0.0", - "unbzip2-stream": "1.3.3", - "ws": "7.4.6" + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.2.3" }, "dependencies": { - "progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", - "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", - "dev": true - }, - "unbzip2-stream": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", - "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", - "dev": true, - "requires": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", "dev": true, "requires": {} } @@ -20643,6 +20221,12 @@ "picomatch": "^2.2.1" } }, + "real-require": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz", + "integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==", + "dev": true + }, "regenerator-runtime": { "version": "0.13.7", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", @@ -20820,12 +20404,6 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -20902,9 +20480,9 @@ } }, "rollup": { - "version": "2.59.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", - "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", + "version": "2.62.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.62.0.tgz", + "integrity": "sha512-cJEQq2gwB0GWMD3rYImefQTSjrPYaC6s4J9pYqnstVLJ1CHa/aZNVkD4Epuvg4iLeMA4KRiq7UM7awKK6j7jcw==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -21046,6 +20624,12 @@ "dev": true, "optional": true }, + "safe-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "dev": true + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -21211,16 +20795,10 @@ "dev": true }, "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true }, "shellwords": { "version": "0.1.1", @@ -21275,17 +20853,6 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, "socket.io": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.3.1.tgz", @@ -21298,17 +20865,6 @@ "engine.io": "~6.0.0", "socket.io-adapter": "~2.3.2", "socket.io-parser": "~4.0.4" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } } }, "socket.io-adapter": { @@ -21329,13 +20885,12 @@ } }, "sonic-boom": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", - "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.4.2.tgz", + "integrity": "sha512-zlOmAKFLJzTI+MbvmkWhnOOJ++NYo0Iy7F93ARNPmvZvpWG2l8Ff3uwM3CkpHqRw8v3pcRROScM5E+vbeTeOKw==", "dev": true, "requires": { - "atomic-sleep": "^1.0.0", - "flatstr": "^1.0.12" + "atomic-sleep": "^1.0.0" } }, "sort-keys": { @@ -21417,6 +20972,12 @@ "through": "2" } }, + "split2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "dev": true + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -21455,6 +21016,12 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, "stream-to-array": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", @@ -21685,61 +21252,16 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, - "table": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", - "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, "tar-fs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", - "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, "requires": { "chownr": "^1.1.1", - "mkdirp": "^0.5.1", + "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } + "tar-stream": "^2.1.4" } }, "tar-stream": { @@ -21800,6 +21322,15 @@ "thenify": ">= 3.1.0 < 4" } }, + "thread-stream": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.13.0.tgz", + "integrity": "sha512-kTMZeX4Dzlb1zZ00/01aerGaTw2i8NE4sWF0TvF1uXewRhCiUjCvatQkvxIvFqauWG2ADFS2Wpd3qBeYL9i3dg==", + "dev": true, + "requires": { + "real-require": "^0.1.0" + } + }, "throat": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", @@ -21922,9 +21453,9 @@ } }, "ts-jest": { - "version": "27.0.7", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.7.tgz", - "integrity": "sha512-O41shibMqzdafpuP+CkrOL7ykbmLh+FqQrXEmV9CydQ5JBk0Sj0uAEF5TNNe94fZWKm3yYvWa/IbyV4Yg1zK2Q==", + "version": "27.1.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.2.tgz", + "integrity": "sha512-eSOiJOWq6Hhs6Khzk5wKC5sgWIXgXqOCiIl1+3lfnearu58Hj4QpE5tUhQcA3xtZrELbcvAGCsd6HB8OsaVaTA==", "dev": true, "requires": { "bs-logger": "0.x", @@ -21937,38 +21468,6 @@ "yargs-parser": "20.x" } }, - "ts-node": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", - "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@cspotcode/source-map-support": "0.7.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "yn": "3.1.1" - }, - "dependencies": { - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "optional": true, - "peer": true - } - } - }, "ts-toolbelt": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-8.4.0.tgz", @@ -21987,9 +21486,9 @@ } }, "tsconfig-paths": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", - "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", + "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", "dev": true, "requires": { "@types/json5": "^0.0.29", @@ -22106,9 +21605,9 @@ } }, "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", + "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", "dev": true }, "ua-parser-js": { @@ -22134,7 +21633,6 @@ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, - "peer": true, "requires": { "buffer": "^5.2.1", "through": "^2.3.8" @@ -22339,24 +21837,24 @@ } }, "web-ext": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-6.5.0.tgz", - "integrity": "sha512-71DE73YkxKEyiy1O5Ei5Uy1ZCT0tOPriPWIkH3g+mpnd52Gr1u2buexpq2upATekhc1Mu87d9EmRqXg2Kqhszw==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-6.6.0.tgz", + "integrity": "sha512-ja9kuCleKQLesUEx+tEl6ByxwVF1CVCjSc3V0ag78S40NWDRTBJhXwc4c+qlyZ0h/XefXc3waxnsq1izUBe/Nw==", "dev": true, "requires": { "@babel/runtime": "7.13.9", "@devicefarmer/adbkit": "2.11.3", - "addons-linter": "3.20.0", + "addons-linter": "4.4.0", "bunyan": "1.8.15", "camelcase": "6.2.0", - "chrome-launcher": "0.14.0", + "chrome-launcher": "0.15.0", "debounce": "1.2.0", "decamelize": "5.0.0", "es6-error": "4.1.1", "event-to-promise": "0.8.0", - "firefox-profile": "4.2.1", + "firefox-profile": "4.2.2", "fs-extra": "9.1.0", - "fx-runner": "1.1.0", + "fx-runner": "1.2.0", "import-fresh": "3.3.0", "mkdirp": "1.0.4", "multimatch": "5.0.0", @@ -22534,9 +22032,9 @@ } }, "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", + "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", "dev": true, "requires": {} }, @@ -22633,14 +22131,6 @@ "buffer-crc32": "~0.2.3" } }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "optional": true, - "peer": true - }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 383619bf2ba6..871bde1e1206 100644 --- a/package.json +++ b/package.json @@ -64,44 +64,44 @@ "url": "https://opencollective.com/darkreader" }, "devDependencies": { - "@rollup/plugin-node-resolve": "13.0.6", - "@rollup/plugin-replace": "3.0.0", - "@rollup/pluginutils": "4.1.1", - "@types/chrome": "0.0.162", - "@types/jasmine": "3.10.1", - "@types/jest": "27.0.2", + "@rollup/plugin-node-resolve": "13.1.2", + "@rollup/plugin-replace": "3.0.1", + "@rollup/pluginutils": "4.1.2", + "@types/chrome": "0.0.174", + "@types/jasmine": "3.10.3", + "@types/jest": "27.4.0", "@types/karma": "6.3.1", "@types/offscreencanvas": "2019.6.4", - "@types/node": "16.11.6", - "@typescript-eslint/eslint-plugin": "5.3.0", - "@typescript-eslint/parser": "5.3.0", + "@types/node": "17.0.7", + "@typescript-eslint/eslint-plugin": "5.9.0", + "@typescript-eslint/parser": "5.9.0", "chokidar": "3.5.2", - "eslint": "8.1.0", - "eslint-plugin-import": "2.25.2", + "eslint": "8.6.0", + "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", "fs-extra": "10.0.0", - "globby": "11.0.4", - "jasmine-core": "3.10.1", - "jest": "27.3.1", - "karma": "6.3.7", + "globby": "12.0.2", + "jasmine-core": "4.0.0", + "jest": "27.4.5", + "karma": "6.3.9", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.0.3", + "karma-coverage": "2.1.0", "karma-firefox-launcher": "2.1.2", "karma-jasmine": "4.0.1", "karma-rollup-preprocessor": "7.0.7", "karma-safari-launcher": "1.0.0", "less": "4.1.2", "malevic": "0.18.6", - "prettier": "2.4.1", - "puppeteer-core": "10.4.0", - "rollup": "2.59.0", + "prettier": "2.5.1", + "puppeteer-core": "13.0.1", + "rollup": "2.62.0", "rollup-plugin-istanbul2": "2.0.2", "rollup-plugin-typescript2": "0.31.1", - "ts-jest": "27.0.7", + "ts-jest": "27.1.2", "tslib": "2.3.1", - "typescript": "4.4.4", - "web-ext": "6.5.0", - "ws": "8.2.3", + "typescript": "4.5.4", + "web-ext": "6.6.0", + "ws": "8.4.0", "yazl": "2.5.1" } } From 1cd6c563da59739f027007baa7d8a1d2f7e7694b Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 3 Jan 2022 22:23:09 +0000 Subject: [PATCH 212/892] Improve handling to read from sync (#7843) - Return `null` when error occured, so the incorrect return value won't be used. - Dark reader will not use the sync storage anymore. - Improves situations like #7838 --- src/background/user-storage.ts | 7 +++---- src/background/utils/extension-api.ts | 4 +++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/background/user-storage.ts b/src/background/user-storage.ts index abe5cc78ecf7..4d9c15842c7d 100644 --- a/src/background/user-storage.ts +++ b/src/background/user-storage.ts @@ -69,11 +69,10 @@ export default class UserStorage { return local; } - const sync = await readSyncStorage(DEFAULT_SETTINGS); - this.fillDefaults(sync); + this.fillDefaults($sync); - this.loadBarrier.resolve(sync); - return sync; + this.loadBarrier.resolve($sync); + return $sync; } async saveSettings() { diff --git a/src/background/utils/extension-api.ts b/src/background/utils/extension-api.ts index 89b7591bf6c5..ab3720d7a6bc 100644 --- a/src/background/utils/extension-api.ts +++ b/src/background/utils/extension-api.ts @@ -45,7 +45,7 @@ export async function readSyncStorage(defaults: chrome.storage.sync.get(null, (sync: any) => { if (chrome.runtime.lastError) { console.error(chrome.runtime.lastError.message); - resolve(defaults); + resolve(null); return; } @@ -69,6 +69,8 @@ export async function readSyncStorage(defaults: sync[key] = JSON.parse(string); } catch (error) { console.error(`sync[${key}]: Could not parse record from sync storage: ${string}`); + resolve(null); + return; } } From 70d5242a306f3843c5d521ce3bf7c29cc226efb4 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Mon, 3 Jan 2022 22:31:50 +0000 Subject: [PATCH 213/892] Downgrade Globby (#7844) The latest version of Globby 12 works only with ES Modules. --- package-lock.json | 121 +++++++--------------------------------------- package.json | 2 +- 2 files changed, 19 insertions(+), 104 deletions(-) diff --git a/package-lock.json b/package-lock.json index b8f623dc537d..65ba84d7935b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", "fs-extra": "10.0.0", - "globby": "12.0.2", + "globby": "11.0.4", "jasmine-core": "4.0.0", "jest": "27.4.5", "karma": "6.3.9", @@ -1700,35 +1700,6 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/@typescript-eslint/visitor-keys": { "version": "5.9.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz", @@ -5934,32 +5905,20 @@ } }, "node_modules/globby": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.0.2.tgz", - "integrity": "sha512-lAsmb/5Lww4r7MM9nCCliDZVIKbZTavrsunAsHLr9oHthrZP1qi7/gAnHOsUs9bLvEt2vKVJhHmxuL7QbDuPdQ==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "dev": true, "dependencies": { - "array-union": "^3.0.1", + "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.8", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby/node_modules/array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", - "dev": true, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5974,18 +5933,6 @@ "node": ">= 4" } }, - "node_modules/globby/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/got": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", @@ -13788,26 +13735,6 @@ "requires": { "ms": "2.1.2" } - }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true } } }, @@ -17110,36 +17037,24 @@ } }, "globby": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.0.2.tgz", - "integrity": "sha512-lAsmb/5Lww4r7MM9nCCliDZVIKbZTavrsunAsHLr9oHthrZP1qi7/gAnHOsUs9bLvEt2vKVJhHmxuL7QbDuPdQ==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "dev": true, "requires": { - "array-union": "^3.0.1", + "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.8", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" }, "dependencies": { - "array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", - "dev": true - }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true } } }, diff --git a/package.json b/package.json index 871bde1e1206..ad48e78986d9 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", "fs-extra": "10.0.0", - "globby": "12.0.2", + "globby": "11.0.4", "jasmine-core": "4.0.0", "jest": "27.4.5", "karma": "6.3.9", From 11e17d485183069d21e0f62f9738535db2b07cde Mon Sep 17 00:00:00 2001 From: EthanMcBloxxer Date: Mon, 3 Jan 2022 17:46:47 -0500 Subject: [PATCH 214/892] Added dark sites (#7840) --- src/config/dark-sites.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index b2b541e17680..a14ed6350575 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -528,6 +528,8 @@ mangaplus.shueisha.co.jp mango.pdf.zone maroon.jonah.pw marte.dev +mastodon.online +mastodon.social matteotiscia.com mcrpw.github.io mcskinhistory.com From f428b297e07fdffb1bd193271e168ae1e6726b76 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 3 Jan 2022 22:47:34 +0000 Subject: [PATCH 215/892] Show UI error after 3 seconds (#7845) - When for some reason the UI couldn't be loaded, give users a error instead of given them false hope of infinite loading. --- src/ui/popup/components/loader/index.tsx | 24 +++++++++++++++++++++-- src/ui/popup/components/loader/style.less | 4 ++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/ui/popup/components/loader/index.tsx b/src/ui/popup/components/loader/index.tsx index 66ecc083d678..b22be936ca76 100644 --- a/src/ui/popup/components/loader/index.tsx +++ b/src/ui/popup/components/loader/index.tsx @@ -1,6 +1,7 @@ import {m} from 'malevic'; import {getLocalMessage} from '../../../../utils/locales'; import {withState, useState} from 'malevic/state'; +import {getContext} from 'malevic/dom'; interface LoaderProps { complete: boolean; @@ -8,10 +9,26 @@ interface LoaderProps { interface LoaderState { finished: boolean; + errorOccured: boolean; } function Loader({complete = false}: LoaderProps) { - const {state, setState} = useState({finished: false}); + const context = getContext(); + const {state, setState} = useState({finished: false, errorOccured: false}); + + // Add a setTimeout for 3 seconds(in which the UI should be loaded already) + // after the 3 seconds show a generic error message that the UI couldn't be loaded. + if (!state.errorOccured) { + setTimeout(() => { + if (!complete) { + setState({errorOccured: true}); + context.refresh(); + } + }, 3000); + } + + const labelMessage = state.errorOccured ? "A unknown error has occured, the UI couldn't be loaded" : getLocalMessage('loading_please_wait'); + return (
setState({finished: true})} > - +
); } diff --git a/src/ui/popup/components/loader/style.less b/src/ui/popup/components/loader/style.less index f762bc7e24aa..d0b9b8ce985a 100644 --- a/src/ui/popup/components/loader/style.less +++ b/src/ui/popup/components/loader/style.less @@ -51,6 +51,10 @@ bottom: @popup-content-height + @popup-content-padding - @size-control-inner - @indent-small; } + &__error { + font-size: @size-text-normal; + } + &--complete &__message { color: fade(@color-heading, 0%); transition: color @loading-fade-duration ease-out; From 57cbe443ab16dd7156d11947dc30117a58fbbd96 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 3 Jan 2022 23:04:27 +0000 Subject: [PATCH 216/892] Fix inconsitency error in loader (#7846) --- src/ui/popup/components/loader/index.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/ui/popup/components/loader/index.tsx b/src/ui/popup/components/loader/index.tsx index b22be936ca76..1e56bb991770 100644 --- a/src/ui/popup/components/loader/index.tsx +++ b/src/ui/popup/components/loader/index.tsx @@ -18,14 +18,15 @@ function Loader({complete = false}: LoaderProps) { // Add a setTimeout for 3 seconds(in which the UI should be loaded already) // after the 3 seconds show a generic error message that the UI couldn't be loaded. - if (!state.errorOccured) { - setTimeout(() => { - if (!complete) { - setState({errorOccured: true}); - context.refresh(); - } + if (!state.errorOccured && !complete) { + context.store.loaderTimeoutID = setTimeout(() => { + setState({errorOccured: true}); + context.refresh(); }, 3000); } + if (complete) { + clearTimeout(context.store.loaderTimeoutID); + } const labelMessage = state.errorOccured ? "A unknown error has occured, the UI couldn't be loaded" : getLocalMessage('loading_please_wait'); From 0a00808c77dc5eee14fac9d04c3f4317c59350ab Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Tue, 4 Jan 2022 00:48:56 +0000 Subject: [PATCH 217/892] Use built-in `fs` instead of `fs-extra` (#7848) Node's `fs` module now has Promise APIs. --- package-lock.json | 26 ----------- package.json | 1 - tasks/bundle-api.js | 5 +- tasks/bundle-css.js | 25 +++++----- tasks/bundle-html.js | 18 ++++---- tasks/bundle-js.js | 24 +++++----- tasks/bundle-locales.js | 18 ++++---- tasks/clean.js | 10 ++-- tasks/code-style.js | 9 ++-- tasks/copy.js | 47 +++++++++++-------- tasks/task.js | 2 +- tasks/utils.js | 88 +++++++++++++++++++++++++++++++++--- tests/browser/coverage.js | 6 +-- tests/browser/environment.js | 3 +- tests/browser/paths.js | 16 +++++-- tests/inject/karma.conf.js | 2 +- 16 files changed, 184 insertions(+), 116 deletions(-) diff --git a/package-lock.json b/package-lock.json index 65ba84d7935b..2810e9bacbf4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,6 @@ "eslint": "8.6.0", "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", - "fs-extra": "10.0.0", "globby": "11.0.4", "jasmine-core": "4.0.0", "jest": "27.4.5", @@ -5661,20 +5660,6 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, - "node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -16855,17 +16840,6 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, - "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", diff --git a/package.json b/package.json index ad48e78986d9..4d497f1481ad 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,6 @@ "eslint": "8.6.0", "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", - "fs-extra": "10.0.0", "globby": "11.0.4", "jasmine-core": "4.0.0", "jest": "27.4.5", diff --git a/tasks/bundle-api.js b/tasks/bundle-api.js index 23b8e3b2f971..7475b8408658 100644 --- a/tasks/bundle-api.js +++ b/tasks/bundle-api.js @@ -1,10 +1,13 @@ +// @ts-check const rollup = require('rollup'); const rollupPluginNodeResolve = require('@rollup/plugin-node-resolve').default; +/** @type {any} */ const rollupPluginReplace = require('@rollup/plugin-replace'); +/** @type {any} */ const rollupPluginTypescript = require('rollup-plugin-typescript2'); const typescript = require('typescript'); const packageJSON = require('../package.json'); -const fs = require('fs-extra'); +const fs = require('fs'); const os = require('os'); const {createTask} = require('./task'); diff --git a/tasks/bundle-css.js b/tasks/bundle-css.js index 45a378a6cf3b..7f5d5eadade7 100644 --- a/tasks/bundle-css.js +++ b/tasks/bundle-css.js @@ -1,9 +1,10 @@ -const fs = require('fs-extra'); +// @ts-check const less = require('less'); const path = require('path'); const {getDestDir, PLATFORM} = require('./paths'); const reload = require('./reload'); const {createTask} = require('./task'); +const {copyFile, readFile, writeFile} = require('./utils'); function getLessFiles({debug}) { const dir = getDestDir({debug, platform: PLATFORM.CHROME}); @@ -16,10 +17,10 @@ function getLessFiles({debug}) { async function bundleCSSEntry({src, dest}) { const srcDir = path.join(process.cwd(), path.dirname(src)); - const input = await fs.readFile(src, {encoding: 'utf8'}); + const input = await readFile(src); const output = await less.render(input, {paths: [srcDir], math: 'always'}); const {css} = output; - await fs.outputFile(dest, css, {encoding: 'utf8'}); + await writeFile(dest, css); } async function bundleCSS({debug}) { @@ -28,16 +29,14 @@ async function bundleCSS({debug}) { await bundleCSSEntry({src, dest}); } const dir = getDestDir({debug, platform: PLATFORM.CHROME}); - const firefoxDir = getDestDir({debug, platform: PLATFORM.FIREFOX}); - const mv3Dir = getDestDir({debug, platform: PLATFORM.CHROME_MV3}); - const thunderBirdDir = getDestDir({debug, platform: PLATFORM.THUNDERBIRD}); - for (const dest of Object.values(files)) { - const ffDest = `${firefoxDir}/${dest.substring(dir.length + 1)}`; - const tbDest = `${thunderBirdDir}/${dest.substring(dir.length + 1)}`; - const mv3Dest = `${mv3Dir}/${dest.substring(dir.length + 1)}`; - await fs.copy(dest, ffDest); - await fs.copy(dest, mv3Dest); - await fs.copy(dest, tbDest); + const copyDirs = [PLATFORM.FIREFOX, PLATFORM.CHROME_MV3, PLATFORM.THUNDERBIRD].map((platform) => { + return getDestDir({debug, platform}); + }); + for (const file of Object.values(files)) { + for (const copyDir of copyDirs) { + const copyTo = `${copyDir}/${file.substring(dir.length + 1)}`; + await copyFile(file, copyTo); + } } } diff --git a/tasks/bundle-html.js b/tasks/bundle-html.js index 08916cc813bc..147cf1201810 100644 --- a/tasks/bundle-html.js +++ b/tasks/bundle-html.js @@ -1,8 +1,8 @@ // @ts-check -const fs = require('fs-extra'); const {getDestDir, PLATFORM} = require('./paths'); const reload = require('./reload'); const {createTask} = require('./task'); +const {copyFile, readFile, writeFile} = require('./utils'); const pages = [ 'ui/popup/index.html', @@ -11,17 +11,17 @@ const pages = [ ]; async function bundleHTMLPage({cwdPath}, {debug}) { - let html = await fs.readFile(`src/${cwdPath}`, 'utf8'); + let html = await readFile(`src/${cwdPath}`); const getPath = (dir) => `${dir}/${cwdPath}`; const outPath = getPath(getDestDir({debug, platform: PLATFORM.CHROME})); - const firefoxPath = getPath(getDestDir({debug, platform: PLATFORM.FIREFOX})); - const mv3Path = getPath(getDestDir({debug, platform: PLATFORM.CHROME_MV3})); - const thunderBirdPath = getPath(getDestDir({debug, platform: PLATFORM.THUNDERBIRD})); - await fs.outputFile(outPath, html); - await fs.copy(outPath, firefoxPath); - await fs.copy(outPath, mv3Path); - await fs.copy(outPath, thunderBirdPath); + const copyToPaths = [PLATFORM.FIREFOX, PLATFORM.CHROME_MV3, PLATFORM.THUNDERBIRD].map((platform) => { + return getPath(getDestDir({debug, platform})); + }); + await writeFile(outPath, html); + for (const copyTo of copyToPaths) { + await copyFile(outPath, copyTo); + } } async function bundleHTML({debug}) { diff --git a/tasks/bundle-js.js b/tasks/bundle-js.js index c8a1fdc1743b..aea66e24b635 100644 --- a/tasks/bundle-js.js +++ b/tasks/bundle-js.js @@ -1,23 +1,25 @@ -const fs = require('fs-extra'); +// @ts-check +const fs = require('fs'); const os = require('os'); const rollup = require('rollup'); const rollupPluginNodeResolve = require('@rollup/plugin-node-resolve').default; +/** @type {any} */ const rollupPluginReplace = require('@rollup/plugin-replace'); +/** @type {any} */ const rollupPluginTypescript = require('rollup-plugin-typescript2'); const typescript = require('typescript'); const {getDestDir, PLATFORM} = require('./paths'); const reload = require('./reload'); const {PORT} = reload; const {createTask} = require('./task'); +const {copyFile, readFile, writeFile} = require('./utils'); async function copyToBrowsers({cwdPath, debug}) { const destPath = `${getDestDir({debug, platform: PLATFORM.CHROME})}/${cwdPath}`; - const ffDestPath = `${getDestDir({debug, platform: PLATFORM.FIREFOX})}/${cwdPath}`; - const mv3DestPath = `${getDestDir({debug, platform: PLATFORM.CHROME_MV3})}/${cwdPath}`; - const tbDestPath = `${getDestDir({debug, platform: PLATFORM.THUNDERBIRD})}/${cwdPath}`; - await fs.copy(destPath, ffDestPath); - await fs.copy(destPath, mv3DestPath); - await fs.copy(destPath, tbDestPath); + for (const platform of [PLATFORM.FIREFOX, PLATFORM.CHROME_MV3, PLATFORM.THUNDERBIRD]) { + const path = `${getDestDir({debug, platform})}/${cwdPath}`; + await copyFile(destPath, path); + } } function replace(str, find, replace) { @@ -60,12 +62,12 @@ const jsEntries = [ // Prior to Chrome 93, background service worker had to be in top-level directory const mv3DestPath = `${getDestDir({debug, platform: PLATFORM.CHROME_MV3})}/background.js`; const tbDestPath = `${getDestDir({debug, platform: PLATFORM.THUNDERBIRD})}/${this.dest}`; - const code = await fs.readFile(destPath, 'utf8'); + const code = await readFile(destPath); const patchedCodeFirefox = patchFirefoxJS(code); const patchedCodeMV3 = patchMV3JS(code); - await fs.outputFile(ffDestPath, patchedCodeFirefox); - await fs.outputFile(mv3DestPath, patchedCodeMV3); - await fs.copy(ffDestPath, tbDestPath); + await writeFile(ffDestPath, patchedCodeFirefox); + await writeFile(mv3DestPath, patchedCodeMV3); + await copyFile(ffDestPath, tbDestPath); }, watchFiles: null, }, diff --git a/tasks/bundle-locales.js b/tasks/bundle-locales.js index c9376df6efe1..150360c411b6 100644 --- a/tasks/bundle-locales.js +++ b/tasks/bundle-locales.js @@ -1,10 +1,12 @@ -const fs = require('fs-extra'); +// @ts-check +const fs = require('fs').promises; const {getDestDir, PLATFORM} = require('./paths'); const reload = require('./reload'); const {createTask} = require('./task'); +const {readFile, writeFile} = require('./utils'); async function bundleLocale(/** @type {string} */filePath, {debug}) { - let file = await fs.readFile(filePath, 'utf8'); + let file = await readFile(filePath); file = file.replace(/^#.*?$/gm, ''); const messages = {}; @@ -27,14 +29,10 @@ async function bundleLocale(/** @type {string} */filePath, {debug}) { const locale = fileName.substring(0, fileName.lastIndexOf('.')).replace('-', '_'); const json = `${JSON.stringify(messages, null, 4)}\n`; const getOutputPath = (dir) => `${dir}/_locales/${locale}/messages.json`; - const chromeDir = getDestDir({debug, platform: PLATFORM.CHROME}); - const firefoxDir = getDestDir({debug, platform: PLATFORM.FIREFOX}); - const mv3Dir = getDestDir({debug, platform: PLATFORM.CHROME_MV3}); - const thunderBirdDir = getDestDir({debug, platform: PLATFORM.THUNDERBIRD}); - await fs.outputFile(getOutputPath(chromeDir), json); - await fs.outputFile(getOutputPath(mv3Dir), json); - await fs.outputFile(getOutputPath(firefoxDir), json); - await fs.outputFile(getOutputPath(thunderBirdDir), json); + for (const platform of Object.values(PLATFORM)) { + const dir = getDestDir({debug, platform}); + await writeFile(getOutputPath(dir), json); + } } async function bundleLocales({debug}) { diff --git a/tasks/clean.js b/tasks/clean.js index ba7cde183982..eac0bad62d4a 100644 --- a/tasks/clean.js +++ b/tasks/clean.js @@ -1,12 +1,12 @@ -const fs = require('fs-extra'); +// @ts-check const {getDestDir, PLATFORM} = require('./paths'); const {createTask} = require('./task'); +const {removeFolder} = require('./utils'); async function clean({debug}) { - await fs.remove(getDestDir({debug, platform: PLATFORM.CHROME})); - await fs.remove(getDestDir({debug, platform: PLATFORM.FIREFOX})); - await fs.remove(getDestDir({debug, platform: PLATFORM.CHROME_MV3})); - await fs.remove(getDestDir({debug, platform: PLATFORM.THUNDERBIRD})); + for (const platform of Object.values(PLATFORM)) { + await removeFolder(getDestDir({debug, platform})); + } } module.exports = createTask( diff --git a/tasks/code-style.js b/tasks/code-style.js index fe7a7d59b7cb..ee97052b98c9 100644 --- a/tasks/code-style.js +++ b/tasks/code-style.js @@ -1,10 +1,11 @@ -const fs = require('fs-extra'); +// @ts-check const globby = require('globby'); const prettier = require('prettier'); const {getDestDir, PLATFORM} = require('./paths'); const {createTask} = require('./task'); -const {log} = require('./utils'); +const {log, readFile, writeFile} = require('./utils'); +/** @type {import('prettier').Options} */ const options = { arrowParens: 'always', bracketSpacing: false, @@ -22,13 +23,13 @@ async function codeStyle({debug}) { const dir = getDestDir({debug, platform: PLATFORM.CHROME}); const files = await globby(extensions.map((ext) => `${dir}/**/*.${ext}`)); for (const file of files) { - const code = await fs.readFile(file, 'utf8'); + const code = await readFile(file); const formatted = prettier.format(code, { ...options, filepath: file, }); if (code !== formatted) { - await fs.outputFile(file, formatted); + await writeFile(file, formatted); debug && log.ok(file); } } diff --git a/tasks/copy.js b/tasks/copy.js index 2b2320d6383d..076045a6d69a 100644 --- a/tasks/copy.js +++ b/tasks/copy.js @@ -1,8 +1,9 @@ -const fs = require('fs-extra'); +// @ts-check const globby = require('globby'); const {getDestDir, PLATFORM} = require('./paths'); const reload = require('./reload'); const {createTask} = require('./task'); +const {pathExists, copyFile, readFile, writeFile} = require('./utils'); const srcDir = 'src'; const cwdPaths = [ @@ -19,25 +20,35 @@ function getCwdPath(/** @type {string} */srcPath) { return srcPath.substring(srcDir.length + 1); } +async function readJSON(path) { + const file = await readFile(path); + return JSON.parse(file); +} + +async function writeJSON(path, json) { + const content = JSON.stringify(json, null, 4); + return await writeFile(path, content); +} + async function patchManifestFirefox({debug, platform}) { - const manifest = await fs.readJson(`${srcDir}/manifest.json`); - const fireFoxPatch = await fs.readJson(`${srcDir}/manifest-firefox.json`); - const thunderBirdPatch = await fs.readJson(`${srcDir}/manifest-thunderbird.json`); + const manifest = await readJSON(`${srcDir}/manifest.json`); + const fireFoxPatch = await readJSON(`${srcDir}/manifest-firefox.json`); + const thunderBirdPatch = await readJSON(`${srcDir}/manifest-thunderbird.json`); const patched = platform === PLATFORM.FIREFOX ? {...manifest, ...fireFoxPatch} : {...manifest, ...thunderBirdPatch}; const destDir = getDestDir({debug, platform}); - await fs.writeJson(`${destDir}/manifest.json`, patched, {spaces: 4}); + await writeJSON(`${destDir}/manifest.json`, patched); } async function patchManifestMV3({debug}) { - const manifest = await fs.readJson(`${srcDir}/manifest.json`); - const mv3Patch = await fs.readJson(`${srcDir}/manifest-mv3.json`); + const manifest = await readJSON(`${srcDir}/manifest.json`); + const mv3Patch = await readJSON(`${srcDir}/manifest-mv3.json`); const patched = {...manifest, ...mv3Patch}; patched.browser_action = undefined; const destDir = getDestDir({debug, platform: PLATFORM.CHROME_MV3}); - await fs.writeJson(`${destDir}/manifest.json`, patched, {spaces: 4}); + await writeJSON(`${destDir}/manifest.json`, patched); } -async function copyFile(path, {debug, platform}) { +async function copyManifest(path, {debug, platform}) { const cwdPath = getCwdPath(path); const destDir = getDestDir({debug, platform}); if ((platform === PLATFORM.FIREFOX || platform === PLATFORM.THUNDERBIRD) && cwdPath === 'manifest.json') { @@ -49,17 +60,16 @@ async function copyFile(path, {debug, platform}) { } else { const src = `${srcDir}/${cwdPath}`; const dest = `${destDir}/${cwdPath}`; - await fs.copy(src, dest); + await copyFile(src, dest); } } async function copy({debug}) { const files = await globby(paths); for (const file of files) { - await copyFile(file, {debug, platform: PLATFORM.CHROME}); - await copyFile(file, {debug, platform: PLATFORM.FIREFOX}); - await copyFile(file, {debug, platform: PLATFORM.CHROME_MV3}); - await copyFile(file, {debug, platform: PLATFORM.THUNDERBIRD}); + for (const platform of Object.values(PLATFORM)) { + await copyManifest(file, {debug, platform}); + } } } @@ -70,11 +80,10 @@ module.exports = createTask( paths, async (changedFiles) => { for (const file of changedFiles) { - if (await fs.exists(file)) { - await copyFile(file, {debug: true, platform: PLATFORM.CHROME}); - await copyFile(file, {debug: true, platform: PLATFORM.FIREFOX}); - await copyFile(file, {debug: true, platform: PLATFORM.CHROME_MV3}); - await copyFile(file, {debug: true, platform: PLATFORM.THUNDERBIRD}); + if (await pathExists(file)) { + for (const platform of Object.values(PLATFORM)) { + await copyManifest(file, {debug: true, platform}); + } } } reload({type: reload.FULL}); diff --git a/tasks/task.js b/tasks/task.js index 163f7aeb98be..e325b06a760a 100644 --- a/tasks/task.js +++ b/tasks/task.js @@ -66,7 +66,7 @@ class Task { /** * @param {string} name - * @param {(options: TaskOptions) => void | Promise} run + * @param {(options: TaskOptions) => void | Promise} run */ function createTask(name, run) { return new Task(name, run); diff --git a/tasks/utils.js b/tasks/utils.js index 0921d59d9a79..15b51cc0b705 100644 --- a/tasks/utils.js +++ b/tasks/utils.js @@ -1,25 +1,101 @@ +// @ts-check +const fs = require('fs').promises; +const path = require('path'); + +/** @type {{[color: string]: (text: string) => string}} */ const colors = Object.entries({ gray: '\x1b[90m', green: '\x1b[32m', red: '\x1b[31m', yellow: '\x1b[33m', -}).reduce((map, [key, value]) => Object.assign(map, {[key]: (text) => `${value}${text}\x1b[0m`}), {}); +}).reduce((map, [key, value]) => Object.assign(map, {[key]: (/** @type {string} */text) => `${value}${text}\x1b[0m`}), {}); +/** + * @param {string} text + * @returns + */ function logWithTime(text) { const now = new Date(); const hours = now.getHours(); const minutes = now.getMinutes(); const seconds = now.getSeconds(); - const leftpad = (n) => String(n).padStart(2, '0'); + const leftpad = (/** @type {number} */n) => String(n).padStart(2, '0'); return console.log(`${colors.gray([hours, minutes, seconds].map(leftpad).join(':'))} ${text}`); } -const log = Object.assign((text) => logWithTime(text), { - ok: (text) => logWithTime(colors.green(text)), - warn: (text) => logWithTime(colors.yellow(text)), - error: (text) => logWithTime(colors.red(text)), +const log = Object.assign((/** @type {string} */text) => logWithTime(text), { + ok: (/** @type {string} */text) => logWithTime(colors.green(text)), + warn: (/** @type {string} */text) => logWithTime(colors.yellow(text)), + error: (/** @type {string} */text) => logWithTime(colors.red(text)), }); +/** + * @param {string} dest + * @returns {Promise} + */ +async function pathExists(dest) { + try { + await fs.access(dest); + return true; + } catch (err) { + return false; + } +} + +/** + * @param {string} dir + * @returns {Promise} + */ +async function removeFolder(dir) { + if (await pathExists(dir)) { + await fs.rm(dir, {recursive: true}); + } +} + +/** + * @param {string} dest + * @returns {Promise} + */ +async function mkDirIfMissing(dest) { + const dir = path.dirname(dest); + if (!(await pathExists(dir))) { + await fs.mkdir(dir, {recursive: true}); + } +} + +/** + * @param {string} src + * @param {string} dest + * @returns {Promise} + */ +async function copyFile(src, dest) { + await mkDirIfMissing(dest); + await fs.copyFile(src, dest); +} + +/** + * @param {string} src + * @returns {Promise} + */ +async function readFile(src) { + return await fs.readFile(src, 'utf8'); +} + +/** + * @param {string} dest + * @param {string} content + * @returns {Promise} + */ +async function writeFile(dest, content) { + await mkDirIfMissing(dest); + await fs.writeFile(dest, content, 'utf8'); +} + module.exports = { log, + copyFile, + pathExists, + readFile, + removeFolder, + writeFile, }; diff --git a/tests/browser/coverage.js b/tests/browser/coverage.js index 503cb6fde90f..452637ff95d5 100644 --- a/tests/browser/coverage.js +++ b/tests/browser/coverage.js @@ -1,6 +1,6 @@ // @ts-check -const fs = require('fs-extra'); const path = require('path'); +const {writeFile} = require('../../tasks/utils'); /** @typedef {{text: string; covered: boolean}} CodePart */ @@ -114,7 +114,7 @@ async function generateHTMLCoverageReport(dir, info) { lines.push(''); lines.push(''); - await fs.outputFile(path.join(dir, `${name}.html`), lines.join('\n')); + await writeFile(path.join(dir, `${name}.html`), lines.join('\n')); } /** @@ -150,7 +150,7 @@ async function generateIndexHTMLCoveragePage(dir, info) { lines.push(''); lines.push(''); - await fs.outputFile(path.join(dir, 'index.html'), lines.join('\n')); + await writeFile(path.join(dir, 'index.html'), lines.join('\n')); } /** diff --git a/tests/browser/environment.js b/tests/browser/environment.js index 97bf296d4c7b..9435e1f51205 100644 --- a/tests/browser/environment.js +++ b/tests/browser/environment.js @@ -1,5 +1,4 @@ -// @ts-check -const fs = require('fs-extra'); +const fs = require('fs').promises; const JestNodeEnvironment = require('jest-environment-node'); const path = require('path'); const puppeteer = require('puppeteer-core'); diff --git a/tests/browser/paths.js b/tests/browser/paths.js index a9f895c6ff77..9fc8b0de7bcf 100644 --- a/tests/browser/paths.js +++ b/tests/browser/paths.js @@ -1,16 +1,24 @@ // @ts-check const {exec} = require('child_process'); -const fs = require('fs-extra'); +const fs = require('fs'); const path = require('path'); -async function winProgramFiles(relPath) { +/** + * @param {string} relPath + * @returns {string} + */ +function winProgramFiles(relPath) { const x64Path = path.join(process.env.PROGRAMFILES, relPath); - if (await fs.exists(x64Path)) { + if (fs.existsSync(x64Path)) { return x64Path; } return path.join(process.env['ProgramFiles(x86)'], relPath); } +/** + * @param {string} app + * @returns {Promise} + */ function linuxAppPath(app) { return new Promise((resolve, reject) => { exec(`which ${app}`, (err, result) => { @@ -31,7 +39,7 @@ async function getChromePath() { return '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'; } if (process.platform === 'win32') { - return await winProgramFiles('Google\\Chrome\\Application\\chrome.exe'); + return winProgramFiles('Google\\Chrome\\Application\\chrome.exe'); } const possibleLinuxPaths = ['google-chrome', 'google-chrome-stable', 'chromium']; for (const possiblePath of possibleLinuxPaths) { diff --git a/tests/inject/karma.conf.js b/tests/inject/karma.conf.js index cd3f994bfa78..54b6eadf8c98 100644 --- a/tests/inject/karma.conf.js +++ b/tests/inject/karma.conf.js @@ -1,4 +1,4 @@ -const fs = require('fs-extra'); +const fs = require('fs'); const os = require('os'); const rollupPluginIstanbul = require('rollup-plugin-istanbul2'); const rollupPluginNodeResolve = require('@rollup/plugin-node-resolve').default; From ffe94ff40e0446bea33da3d973cd36ca41443f83 Mon Sep 17 00:00:00 2001 From: Navinn Ravindaran Date: Tue, 4 Jan 2022 05:58:51 -0500 Subject: [PATCH 218/892] Fix for acorn.utoronto.ca (#7847) - Fix text. --- src/config/dynamic-theme-fixes.config | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8994780dbe69..bbe83ea40d18 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -431,6 +431,19 @@ CSS ================================ +acorn.utoronto.ca + +CSS +.acorn-classic.page-container .academic-history .sessionHeader, +.acorn-classic.page-container .academic-history .credit-earned-section, +.acorn-classic.page-container .academic-history .average-section, +.acorn-classic.page-container .academic-history .courses, +.acorn-classic.page-container .academic-history .coursesHeader { + color: var(--darkreader-neutral-text) !important; +} + +================================ + ad.nl CSS From 16c08c1db4cf22de5f27bc1152b29d0ac36f8e48 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 4 Jan 2022 18:58:59 +0000 Subject: [PATCH 219/892] Don't target IFrame's for static CSS (#7854) - Resolves #7852 --- src/config/static-themes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/static-themes.config b/src/config/static-themes.config index fe341c34f65b..c8f3c175e7fa 100644 --- a/src/config/static-themes.config +++ b/src/config/static-themes.config @@ -3,7 +3,7 @@ NEUTRAL BG html body -:not([style*="background-color:"]) +:not([style*="background-color:"]):not(iframe) NEUTRAL TEXT html From 176dda0852418dcac96774f20a2c7957c19f48f9 Mon Sep 17 00:00:00 2001 From: Isaac <72410860+isaec@users.noreply.github.com> Date: Tue, 4 Jan 2022 11:26:01 -0800 Subject: [PATCH 220/892] Fix for alipay.com (#7855) - Fix hidden element. --- src/config/dynamic-theme-fixes.config | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index bbe83ea40d18..666a25bf3699 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -621,7 +621,6 @@ svg[class^="ali-kit_Rating__star"] alipay.com INVERT -.alipay-logo #J_logoHomeUrl .global-logo @@ -633,7 +632,9 @@ CSS z-index: 0 !important; } .authcenter-head, -.authcenter-foot { +.authcenter-foot, +.authcenter-body-login, +.authcenter-body-logo > a { z-index: 1 !important; } From 7daacbeddd59e7742c21bca8a5fb371cd72962e7 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Tue, 4 Jan 2022 20:50:46 +0000 Subject: [PATCH 221/892] Use @rollup/plugin-typescript (#7858) - Official Rollup plugin for TypeScript. - Less dependencies. - Runs Karma tests (failed with `rollup-plugin-typescript2` due to memory overflow). - A bit faster. --- package-lock.json | 539 +++++-------------------------------- package.json | 2 +- tasks/bundle-api.js | 14 +- tasks/bundle-js.js | 16 +- tests/inject/karma.conf.js | 21 +- tests/inject/tsconfig.json | 2 - 6 files changed, 89 insertions(+), 505 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2810e9bacbf4..8e77ac3fec0b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "devDependencies": { "@rollup/plugin-node-resolve": "13.1.2", "@rollup/plugin-replace": "3.0.1", + "@rollup/plugin-typescript": "8.3.0", "@rollup/pluginutils": "4.1.2", "@types/chrome": "0.0.174", "@types/jasmine": "3.10.3", @@ -40,7 +41,6 @@ "puppeteer-core": "13.0.1", "rollup": "2.62.0", "rollup-plugin-istanbul2": "2.0.2", - "rollup-plugin-typescript2": "0.31.1", "ts-jest": "27.1.2", "tslib": "2.3.1", "typescript": "4.5.4", @@ -1141,6 +1141,47 @@ "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true }, + "node_modules/@rollup/plugin-typescript": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.0.tgz", + "integrity": "sha512-I5FpSvLbtAdwJ+naznv+B4sjXZUcIvLLceYpITAn7wAP8W0wqc5noLdGIp9HGVntNhRWXctwPYrSSFQxtl0FPA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "rollup": "^2.14.0", + "tslib": "*", + "typescript": ">=3.7.0" + } + }, + "node_modules/@rollup/plugin-typescript/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-typescript/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, "node_modules/@rollup/pluginutils": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.2.tgz", @@ -1203,16 +1244,6 @@ "node": ">= 6" } }, - "node_modules/@ts-type/package-dts": { - "version": "1.0.53", - "resolved": "https://registry.npmjs.org/@ts-type/package-dts/-/package-dts-1.0.53.tgz", - "integrity": "sha512-P8bMcjqaUsaBbXOCxBtzT4/pvhQSHTMc91WrpErVfB52zpNRVw2evOYWMe6q3c087+wpvITB7HtppYDnQe1RwA==", - "dev": true, - "dependencies": { - "@types/semver": "^7.3.9", - "ts-type": "^1.2.40" - } - }, "node_modules/@types/babel__core": { "version": "7.1.18", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz", @@ -1254,13 +1285,6 @@ "@babel/types": "^7.3.0" } }, - "node_modules/@types/bluebird": { - "version": "3.5.36", - "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.36.tgz", - "integrity": "sha512-HBNx4lhkxN7bx6P0++W8E289foSu8kO8GCk2unhuVggO+cE7rh9DhZUyPhUxNRG9m+5B5BTKxZQ5ZP92x/mx9Q==", - "dev": true, - "peer": true - }, "node_modules/@types/chrome": { "version": "0.0.174", "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.174.tgz", @@ -1453,12 +1477,6 @@ "@types/node": "*" } }, - "node_modules/@types/semver": { - "version": "7.3.9", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz", - "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==", - "dev": true - }, "node_modules/@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -1716,91 +1734,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@yarn-tool/resolve-package": { - "version": "1.0.38", - "resolved": "https://registry.npmjs.org/@yarn-tool/resolve-package/-/resolve-package-1.0.38.tgz", - "integrity": "sha512-WmYM/Znh/vPQw7PBfbH2PmZSrzCF0AfGMfpA4z3SbNa2UUcdpqq9yD9pYKcHY1FP3yjMB7KwcVD8mhojROXCQQ==", - "dev": true, - "dependencies": { - "@ts-type/package-dts": "^1.0.53", - "pkg-dir": "< 6 >= 5", - "tslib": "^2.3.1", - "upath2": "^3.1.10" - } - }, - "node_modules/@yarn-tool/resolve-package/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@yarn-tool/resolve-package/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@yarn-tool/resolve-package/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@yarn-tool/resolve-package/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@yarn-tool/resolve-package/node_modules/pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, - "dependencies": { - "find-up": "^5.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -3249,12 +3182,6 @@ "node": ">=4.0.0" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, "node_modules/component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -5447,23 +5374,6 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -9361,15 +9271,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-is-network-drive": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/path-is-network-drive/-/path-is-network-drive-1.0.10.tgz", - "integrity": "sha512-D6kJYPUSKGZBpTM2nv10sOWNdC056p4JDx0y7ARe6gop0aXXm5G86Gn/SyKvaf0Ce8c9Guctf+J+qoFmzuhDQg==", - "dev": true, - "dependencies": { - "tslib": "^2.3.1" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -9385,15 +9286,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/path-strip-sep": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-strip-sep/-/path-strip-sep-1.0.7.tgz", - "integrity": "sha512-9xDVZPblHde4lTuTDnwqBKr9LTbPZW+Iae63ho500+BpEiZe3X6wvLInHgbB6FSMtwCTvztljw3k2zcNDNESzg==", - "dev": true, - "dependencies": { - "tslib": "^2.3.1" - } - }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -10302,62 +10194,6 @@ "semver": "bin/semver.js" } }, - "node_modules/rollup-plugin-typescript2": { - "version": "0.31.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.31.1.tgz", - "integrity": "sha512-sklqXuQwQX+stKi4kDfEkneVESPi3YM/2S899vfRdF9Yi40vcC50Oq4A4cSZJNXsAQE/UsBZl5fAOsBLziKmjw==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^4.1.0", - "@yarn-tool/resolve-package": "^1.0.36", - "find-cache-dir": "^3.3.1", - "fs-extra": "8.1.0", - "resolve": "1.20.0", - "tslib": "2.2.0" - }, - "peerDependencies": { - "rollup": ">=1.26.3", - "typescript": ">=2.4.0" - } - }, - "node_modules/rollup-plugin-typescript2/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/rollup-plugin-typescript2/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/rollup-plugin-typescript2/node_modules/tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", - "dev": true - }, - "node_modules/rollup-plugin-typescript2/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/rollup-pluginutils": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", @@ -11495,28 +11331,6 @@ } } }, - "node_modules/ts-toolbelt": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-8.4.0.tgz", - "integrity": "sha512-hnGJXIgC49ZuF5g5oDthoge8t4cvT0dYg2pYO5C6yV/HmUUy1koooU2U/5K2N+Uw++hcXQpJAToLRa+GRp28Sg==", - "dev": true, - "peer": true - }, - "node_modules/ts-type": { - "version": "1.2.40", - "resolved": "https://registry.npmjs.org/ts-type/-/ts-type-1.2.40.tgz", - "integrity": "sha512-Ux5e7Frys5pX7w8gYchEd0KfhG1H5puXOQC8yOBgMJ1aEwDSypeHLwxIUpKjecni1IGwtLI3JrxCVZaQO9JKmw==", - "dev": true, - "dependencies": { - "tslib": "^2.3.0", - "typedarray-dts": "^1.0.0" - }, - "peerDependencies": { - "@types/bluebird": "*", - "@types/node": "*", - "ts-toolbelt": "^8.0.7" - } - }, "node_modules/tsconfig-paths": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", @@ -11647,12 +11461,6 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "node_modules/typedarray-dts": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typedarray-dts/-/typedarray-dts-1.0.0.tgz", - "integrity": "sha512-Ka0DBegjuV9IPYFT1h0Qqk5U4pccebNIJCGl8C5uU7xtOs+jpJvKGAY4fHGK25hTmXZOEUl9Cnsg5cS6K/b5DA==", - "dev": true - }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -11759,21 +11567,6 @@ "yarn": "*" } }, - "node_modules/upath2": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/upath2/-/upath2-3.1.10.tgz", - "integrity": "sha512-7ph3GzTaVbQX+oIoMsGtM+9BAWQr+6Mn28TJKPu28+yGpZ+J4am590CPDBlDG0zyuo9T9T7o21ciqNzwIp/q0A==", - "dev": true, - "dependencies": { - "lodash": "^4.17.21", - "path-is-network-drive": "^1.0.10", - "path-strip-sep": "^1.0.7", - "tslib": "^2.3.1" - }, - "peerDependencies": { - "@types/node": "*" - } - }, "node_modules/update-notifier": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", @@ -12355,18 +12148,6 @@ "buffer-crc32": "~0.2.3" } }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/zip-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-2.0.0.tgz", @@ -13273,6 +13054,35 @@ } } }, + "@rollup/plugin-typescript": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.0.tgz", + "integrity": "sha512-I5FpSvLbtAdwJ+naznv+B4sjXZUcIvLLceYpITAn7wAP8W0wqc5noLdGIp9HGVntNhRWXctwPYrSSFQxtl0FPA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "resolve": "^1.17.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, "@rollup/pluginutils": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.2.tgz", @@ -13323,16 +13133,6 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, - "@ts-type/package-dts": { - "version": "1.0.53", - "resolved": "https://registry.npmjs.org/@ts-type/package-dts/-/package-dts-1.0.53.tgz", - "integrity": "sha512-P8bMcjqaUsaBbXOCxBtzT4/pvhQSHTMc91WrpErVfB52zpNRVw2evOYWMe6q3c087+wpvITB7HtppYDnQe1RwA==", - "dev": true, - "requires": { - "@types/semver": "^7.3.9", - "ts-type": "^1.2.40" - } - }, "@types/babel__core": { "version": "7.1.18", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz", @@ -13374,13 +13174,6 @@ "@babel/types": "^7.3.0" } }, - "@types/bluebird": { - "version": "3.5.36", - "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.36.tgz", - "integrity": "sha512-HBNx4lhkxN7bx6P0++W8E289foSu8kO8GCk2unhuVggO+cE7rh9DhZUyPhUxNRG9m+5B5BTKxZQ5ZP92x/mx9Q==", - "dev": true, - "peer": true - }, "@types/chrome": { "version": "0.0.174", "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.174.tgz", @@ -13572,12 +13365,6 @@ "@types/node": "*" } }, - "@types/semver": { - "version": "7.3.9", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz", - "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==", - "dev": true - }, "@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -13733,66 +13520,6 @@ "eslint-visitor-keys": "^3.0.0" } }, - "@yarn-tool/resolve-package": { - "version": "1.0.38", - "resolved": "https://registry.npmjs.org/@yarn-tool/resolve-package/-/resolve-package-1.0.38.tgz", - "integrity": "sha512-WmYM/Znh/vPQw7PBfbH2PmZSrzCF0AfGMfpA4z3SbNa2UUcdpqq9yD9pYKcHY1FP3yjMB7KwcVD8mhojROXCQQ==", - "dev": true, - "requires": { - "@ts-type/package-dts": "^1.0.53", - "pkg-dir": "< 6 >= 5", - "tslib": "^2.3.1", - "upath2": "^3.1.10" - }, - "dependencies": { - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, - "requires": { - "find-up": "^5.0.0" - } - } - } - }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -14907,12 +14634,6 @@ "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", "dev": true }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -16676,17 +16397,6 @@ } } }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -19697,15 +19407,6 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-is-network-drive": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/path-is-network-drive/-/path-is-network-drive-1.0.10.tgz", - "integrity": "sha512-D6kJYPUSKGZBpTM2nv10sOWNdC056p4JDx0y7ARe6gop0aXXm5G86Gn/SyKvaf0Ce8c9Guctf+J+qoFmzuhDQg==", - "dev": true, - "requires": { - "tslib": "^2.3.1" - } - }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -19718,15 +19419,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "path-strip-sep": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-strip-sep/-/path-strip-sep-1.0.7.tgz", - "integrity": "sha512-9xDVZPblHde4lTuTDnwqBKr9LTbPZW+Iae63ho500+BpEiZe3X6wvLInHgbB6FSMtwCTvztljw3k2zcNDNESzg==", - "dev": true, - "requires": { - "tslib": "^2.3.1" - } - }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -20416,54 +20108,6 @@ } } }, - "rollup-plugin-typescript2": { - "version": "0.31.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.31.1.tgz", - "integrity": "sha512-sklqXuQwQX+stKi4kDfEkneVESPi3YM/2S899vfRdF9Yi40vcC50Oq4A4cSZJNXsAQE/UsBZl5fAOsBLziKmjw==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^4.1.0", - "@yarn-tool/resolve-package": "^1.0.36", - "find-cache-dir": "^3.3.1", - "fs-extra": "8.1.0", - "resolve": "1.20.0", - "tslib": "2.2.0" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - } - } - }, "rollup-pluginutils": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", @@ -21357,23 +21001,6 @@ "yargs-parser": "20.x" } }, - "ts-toolbelt": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-8.4.0.tgz", - "integrity": "sha512-hnGJXIgC49ZuF5g5oDthoge8t4cvT0dYg2pYO5C6yV/HmUUy1koooU2U/5K2N+Uw++hcXQpJAToLRa+GRp28Sg==", - "dev": true, - "peer": true - }, - "ts-type": { - "version": "1.2.40", - "resolved": "https://registry.npmjs.org/ts-type/-/ts-type-1.2.40.tgz", - "integrity": "sha512-Ux5e7Frys5pX7w8gYchEd0KfhG1H5puXOQC8yOBgMJ1aEwDSypeHLwxIUpKjecni1IGwtLI3JrxCVZaQO9JKmw==", - "dev": true, - "requires": { - "tslib": "^2.3.0", - "typedarray-dts": "^1.0.0" - } - }, "tsconfig-paths": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", @@ -21478,12 +21105,6 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "typedarray-dts": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typedarray-dts/-/typedarray-dts-1.0.0.tgz", - "integrity": "sha512-Ka0DBegjuV9IPYFT1h0Qqk5U4pccebNIJCGl8C5uU7xtOs+jpJvKGAY4fHGK25hTmXZOEUl9Cnsg5cS6K/b5DA==", - "dev": true - }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -21554,18 +21175,6 @@ "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", "dev": true }, - "upath2": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/upath2/-/upath2-3.1.10.tgz", - "integrity": "sha512-7ph3GzTaVbQX+oIoMsGtM+9BAWQr+6Mn28TJKPu28+yGpZ+J4am590CPDBlDG0zyuo9T9T7o21ciqNzwIp/q0A==", - "dev": true, - "requires": { - "lodash": "^4.17.21", - "path-is-network-drive": "^1.0.10", - "path-strip-sep": "^1.0.7", - "tslib": "^2.3.1" - } - }, "update-notifier": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", @@ -22020,12 +21629,6 @@ "buffer-crc32": "~0.2.3" } }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, "zip-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-2.0.0.tgz", diff --git a/package.json b/package.json index 4d497f1481ad..ae737773957f 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "devDependencies": { "@rollup/plugin-node-resolve": "13.1.2", "@rollup/plugin-replace": "3.0.1", + "@rollup/plugin-typescript": "8.3.0", "@rollup/pluginutils": "4.1.2", "@types/chrome": "0.0.174", "@types/jasmine": "3.10.3", @@ -95,7 +96,6 @@ "puppeteer-core": "13.0.1", "rollup": "2.62.0", "rollup-plugin-istanbul2": "2.0.2", - "rollup-plugin-typescript2": "0.31.1", "ts-jest": "27.1.2", "tslib": "2.3.1", "typescript": "4.5.4", diff --git a/tasks/bundle-api.js b/tasks/bundle-api.js index 7475b8408658..9710fa29067d 100644 --- a/tasks/bundle-api.js +++ b/tasks/bundle-api.js @@ -4,7 +4,7 @@ const rollupPluginNodeResolve = require('@rollup/plugin-node-resolve').default; /** @type {any} */ const rollupPluginReplace = require('@rollup/plugin-replace'); /** @type {any} */ -const rollupPluginTypescript = require('rollup-plugin-typescript2'); +const rollupPluginTypescript = require('@rollup/plugin-typescript'); const typescript = require('typescript'); const packageJSON = require('../package.json'); const fs = require('fs'); @@ -22,14 +22,10 @@ async function bundleAPI({debug}) { rollupPluginTypescript({ typescript, tsconfig: 'src/tsconfig.json', - tsconfigOverride: { - compilerOptions: { - removeComments: true, - target: 'es5', - }, - }, - clean: true, - cacheRoot: debug ? `${fs.realpathSync(os.tmpdir())}/darkreader_api_typescript_cache` : null, + removeComments: true, + target: 'es5', + noEmitOnError: true, + cacheDir: debug ? `${fs.realpathSync(os.tmpdir())}/darkreader_api_typescript_cache` : null, }), rollupPluginReplace({ preventAssignment: true, diff --git a/tasks/bundle-js.js b/tasks/bundle-js.js index aea66e24b635..60bed8eac499 100644 --- a/tasks/bundle-js.js +++ b/tasks/bundle-js.js @@ -6,7 +6,7 @@ const rollupPluginNodeResolve = require('@rollup/plugin-node-resolve').default; /** @type {any} */ const rollupPluginReplace = require('@rollup/plugin-replace'); /** @type {any} */ -const rollupPluginTypescript = require('rollup-plugin-typescript2'); +const rollupPluginTypescript = require('@rollup/plugin-typescript'); const typescript = require('typescript'); const {getDestDir, PLATFORM} = require('./paths'); const reload = require('./reload'); @@ -127,15 +127,11 @@ async function bundleJS(/** @type {JSEntry} */entry, {debug, watch}) { rollupPluginTypescript({ typescript, tsconfig: 'src/tsconfig.json', - tsconfigOverride: { - compilerOptions: { - noImplicitAny: debug ? false : true, - removeComments: debug ? false : true, - sourceMap: debug ? true : false, - }, - }, - clean: debug ? false : true, - cacheRoot: debug ? `${fs.realpathSync(os.tmpdir())}/darkreader_typescript_cache` : null, + noImplicitAny: debug ? false : true, + removeComments: debug ? false : true, + sourceMap: debug ? true : false, + noEmitOnError: true, + cacheDir: debug ? `${fs.realpathSync(os.tmpdir())}/darkreader_typescript_cache` : null, }), rollupPluginReplace({ preventAssignment: true, diff --git a/tests/inject/karma.conf.js b/tests/inject/karma.conf.js index 54b6eadf8c98..8572bb040572 100644 --- a/tests/inject/karma.conf.js +++ b/tests/inject/karma.conf.js @@ -3,7 +3,7 @@ const os = require('os'); const rollupPluginIstanbul = require('rollup-plugin-istanbul2'); const rollupPluginNodeResolve = require('@rollup/plugin-node-resolve').default; const rollupPluginReplace = require('@rollup/plugin-replace'); -const rollupPluginTypescript = require('rollup-plugin-typescript2'); +const rollupPluginTypescript = require('@rollup/plugin-typescript'); const typescript = require('typescript'); module.exports = (config) => { @@ -23,20 +23,11 @@ module.exports = (config) => { rollupPluginNodeResolve(), rollupPluginTypescript({ typescript, - tsconfig: 'src/tsconfig.json', - tsconfigOverride: { - compilerOptions: { - types: [ - 'chrome', - 'jasmine', - 'offscreencanvas' - ], - removeComments: false, - sourceMap: true, - }, - }, - clean: false, - cacheRoot: `${fs.realpathSync(os.tmpdir())}/darkreader_typescript_test_cache`, + tsconfig: 'tests/inject/tsconfig.json', + removeComments: false, + sourceMap: true, + noEmitOnError: true, + cacheDir: `${fs.realpathSync(os.tmpdir())}/darkreader_typescript_test_cache`, }), rollupPluginReplace({ preventAssignment: true, diff --git a/tests/inject/tsconfig.json b/tests/inject/tsconfig.json index e7c557a1de3e..e92c2577514a 100644 --- a/tests/inject/tsconfig.json +++ b/tests/inject/tsconfig.json @@ -1,8 +1,6 @@ { "extends": "../../src/tsconfig", "compilerOptions": { - "module": "es2015", - "outDir": "", "types": [ "chrome", "jasmine", From 9caf83c22a82b71fcfe069a7a8ccb1bce2e27108 Mon Sep 17 00:00:00 2001 From: Nikki Date: Wed, 5 Jan 2022 16:46:51 +0100 Subject: [PATCH 222/892] Added dark sites (#7857) --- src/config/dark-sites.config | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index a14ed6350575..449635c748d2 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -13,6 +13,7 @@ absolucy.moe account.bhvr.com accounts.pubg.com +aceship.github.io acm.sdut.edu.cn/onlinejudge3/ addictinggames.com adridoesthings.com @@ -317,6 +318,7 @@ flooxer.com florr.io fluxpoint.dev flyordie.io +fmovies.to fortnite-api.com forum.cswarzone.com forum.lastos.org @@ -661,6 +663,7 @@ piped.kavin.rocks piracybank.org piskelapp.com pitokmm.it +platinumgod.co.uk play.geforcenow.com play.hbogo.com play.mubert.com @@ -880,6 +883,8 @@ throwbacks-music.com thunix.net tilde.club tilde.team +tilde.town +tildegit.org tildeverse.org tinyzonetv.to tio.run @@ -941,6 +946,7 @@ vixlatio.com vizality.com vortetty.k3live.com vrv.co +vscodethemes.com vtcdirectory.com vuecinemas.nl w0rp.com From 29a9a12b6f10260040b0a666cdd088ae90b36575 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 5 Jan 2022 16:06:54 +0000 Subject: [PATCH 223/892] Affect img elements with filters (#6044) - Now any changes to the config should also reflect towards `` elements. - Resolves #509 - Resolves #689 --- src/inject/dynamic-theme/index.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/inject/dynamic-theme/index.ts b/src/inject/dynamic-theme/index.ts index b25f77e9941f..c7003f1b4903 100644 --- a/src/inject/dynamic-theme/index.ts +++ b/src/inject/dynamic-theme/index.ts @@ -9,7 +9,7 @@ import {removeNode, watchForNodePosition, iterateShadowHosts, isDOMReady, remove import {logInfo, logWarn} from '../../utils/log'; import {throttle} from '../../utils/throttle'; import {clamp} from '../../utils/math'; -import {getCSSFilterValue} from '../../generators/css-filter'; +import {FilterMode, getCSSFilterValue} from '../../generators/css-filter'; import {modifyBackgroundColor, modifyColor, modifyForegroundColor} from '../../generators/modify-colors'; import {createTextStyle} from '../../generators/text-style'; import type {FilterConfig, DynamicThemeFix} from '../../definitions'; @@ -86,18 +86,27 @@ function createStaticStyleOverrides() { setupNodePositionWatcher(textStyle, 'text'); const invertStyle = createOrUpdateStyle('darkreader--invert'); + let invertStyleContent = ''; if (fixes && Array.isArray(fixes.invert) && fixes.invert.length > 0) { - invertStyle.textContent = [ + invertStyleContent += [ `${fixes.invert.join(', ')} {`, ` filter: ${getCSSFilterValue({ ...filter, contrast: filter.mode === 0 ? filter.contrast : clamp(filter.contrast - 10, 0, 100), })} !important;`, '}', + '', ].join('\n'); - } else { - invertStyle.textContent = ''; } + const imageFilter = getCSSFilterValue({ + ...filter, + // Disables the invert() hue-rotate() + mode: FilterMode.light + }); + if (imageFilter) { + invertStyleContent += `img { filter: ${imageFilter} !important;\n`; + } + invertStyle.textContent = invertStyleContent; document.head.insertBefore(invertStyle, textStyle.nextSibling); setupNodePositionWatcher(invertStyle, 'invert'); From 3ee216fa235fa2a01cbfde9fe7c7c9c689d2f19a Mon Sep 17 00:00:00 2001 From: Roland Fredenhagen Date: Wed, 5 Jan 2022 17:13:59 +0100 Subject: [PATCH 224/892] Fix planetminecraft.com (#7863) - Fix background colors. --- src/config/dynamic-theme-fixes.config | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 666a25bf3699..4949e70a263c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11532,6 +11532,24 @@ p.site-title ================================ +planetminecraft.com + +CSS +#container, +.forum_replies_container, +.forum_reply, +.contents, +.spoiler_header, +#resource-log, +.tag, +.view_more:not(:hover), +#popup, +code { + background: var(--darkreader-neutral-background) !important; +} + +================================ + plantuml.com INVERT From 9d6da2c0edb8e00cd8045a5d0cfb47ba24c3eafc Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 5 Jan 2022 16:26:22 +0000 Subject: [PATCH 225/892] Improve performance of `getThemeKey` (#7867) - See #6841 for details - Resolves #6814 --- src/inject/dynamic-theme/stylesheet-modifier.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/inject/dynamic-theme/stylesheet-modifier.ts b/src/inject/dynamic-theme/stylesheet-modifier.ts index 687d6ef39eed..efd2d35cc2d5 100644 --- a/src/inject/dynamic-theme/stylesheet-modifier.ts +++ b/src/inject/dynamic-theme/stylesheet-modifier.ts @@ -19,7 +19,11 @@ const themeCacheKeys: Array = [ ]; function getThemeKey(theme: Theme) { - return themeCacheKeys.map((p) => `${p}:${theme[p]}`).join(';'); + let resultKey = ''; + themeCacheKeys.forEach((key) => { + resultKey += `${key}:${theme[key]};`; + }); + return resultKey; } const asyncQueue = createAsyncTasksQueue(); From c71a0b2b6b80d1197fd96b277772a937f5a8e8cf Mon Sep 17 00:00:00 2001 From: "H. J. Poe" <35583004+hjpoe@users.noreply.github.com> Date: Thu, 6 Jan 2022 09:22:33 -0500 Subject: [PATCH 226/892] Fix for wacom.com (#7826) - Fix pictures. --- src/config/dynamic-theme-fixes.config | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4949e70a263c..5826ae567c95 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15749,6 +15749,21 @@ img[alt*="equation" i] ================================ +wacom.com + +INVERT +img.full-size-logo +a.logo +div.minicart-wrapper +a.footer-brand + +CSS +img, div.bg-layer, div.flickity-viewport, canvas { + filter: brightness(50%) sepia(40%) !important; +} + +================================ + wakamaifondue.com CSS From 441c0717c5dfbf7256420e21aab875395308cb3c Mon Sep 17 00:00:00 2001 From: FadeMind Date: Thu, 6 Jan 2022 15:24:08 +0100 Subject: [PATCH 227/892] Fix for info.wyborcza.biz (#7870) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5826ae567c95..e1ad3f3696a3 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7477,6 +7477,13 @@ img[src$="boardreader.ico"] ================================ +info.wyborcza.biz + +INVERT +.imgw + +================================ + inforlex.pl INVERT From 7b193f0a33fd402d8b40d3ffbac1c3cd4fd11b2e Mon Sep 17 00:00:00 2001 From: FadeMind Date: Thu, 6 Jan 2022 15:26:43 +0100 Subject: [PATCH 228/892] Fix for forums.getpaint.net (#7872) - add domain forums.getpaint.net - add selectors inverted badges: popular, author - sort order items - invert header logo forums.getpaint.net - specify url nieidealny forum --- src/config/dynamic-theme-fixes.config | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e1ad3f3696a3..26498d9af410 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5821,14 +5821,19 @@ body { ================================ forum.eset.com -forums.laptopvideo2go.com -nieidealny.pl forum.ithardware.pl +forums.getpaint.net +forums.laptopvideo2go.com +nieidealny.pl/forum INVERT +.ipsBadge_icon +.ipsBadge_popular +.ipsComment_authorBadge +.ipsItemStatus.ipsItemStatus_custom.ipsItemStatus_read .ipsReact_button img[alt="Forum komputerowe ITHardware"] -.ipsItemStatus.ipsItemStatus_custom.ipsItemStatus_read +img[alt="paint.net Forum"] CSS .ipsBadge { From 06d70fa166fc803aad04c1de6fa63ea4265baac2 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 6 Jan 2022 14:28:53 +0000 Subject: [PATCH 229/892] Fix for cloud.google.com (#7879) - Resolves #7871 --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 26498d9af410..aaeb4bd89cc3 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3858,6 +3858,7 @@ developer.android.com developer.android.google.cn tensorflow.org quantumai.google +cloud.google.com INVERT .devsite-site-logo From 75ed7e27e4c4ada4540b93010b36a12505443d0a Mon Sep 17 00:00:00 2001 From: FadeMind Date: Thu, 6 Jan 2022 15:30:55 +0100 Subject: [PATCH 230/892] Fix for contacts.google.com (#7877) - Invert rotate button. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index aaeb4bd89cc3..09628606ab3e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3268,6 +3268,13 @@ span[style*="background-color: rgb(255, 255, 0)"] { ================================ +contacts.google.com + +INVERT +img[src*="rotate"] + +================================ + convertio.co INVERT From 7a8f0c644429e7d2f9c5f7dc7e32f65545ec1de7 Mon Sep 17 00:00:00 2001 From: Anish De <63192115+AnishDe12020@users.noreply.github.com> Date: Thu, 6 Jan 2022 20:02:28 +0530 Subject: [PATCH 231/892] Added dark sites (#7876) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 449635c748d2..a63c383a7c38 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -31,6 +31,7 @@ animencodes.com animepahe.com animixplay.to animk.info +anishde.dev anon.sx aonprd.com app.destinyitemmanager.com From 2a946339658dd6c0098a971962450f2bcb92b966 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Thu, 6 Jan 2022 15:38:38 +0100 Subject: [PATCH 232/892] Fix for x-kom.pl (#7878) - Fix icons. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 09628606ab3e..1bbb41d2b794 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17020,9 +17020,12 @@ INVERT a[href="/"] img a[href="https://x-kom.pl"] img a[href="https://www.x-kom.pl"] img +div[title*="panel"] svg img[alt="Menu"] img[alt*="Logo"] img[src*="Logo_strefy_marek"] +img[src*="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iM"] +img[src*="data:image/svg+xml;base64,PHN2ZyB4bWxucz0ia"] CSS .ePVVIv { From 9440faee8eeeac6add15ab8f3303a6484eb663f2 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Thu, 6 Jan 2022 20:09:25 +0100 Subject: [PATCH 233/892] Fix for forum.eset.com (#7880) - Invert admin badge. --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1bbb41d2b794..ac7e0fe863c1 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5835,6 +5835,7 @@ forums.laptopvideo2go.com nieidealny.pl/forum INVERT +.ipsBadge_highlightedGroup .ipsBadge_icon .ipsBadge_popular .ipsComment_authorBadge From fd05ffa722bc6ed06d9b536e99d4845d176a0e2d Mon Sep 17 00:00:00 2001 From: Nikki Date: Thu, 6 Jan 2022 20:19:46 +0100 Subject: [PATCH 234/892] Added dark sites (#7881) --- src/config/dark-sites.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index a63c383a7c38..948f736cb75b 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -965,6 +965,7 @@ weboas.is whirl.codes widgetbot.io wiki.step-project.com +windowsterminalthemes.dev wiocha.pl wolfy.fr wormate.io @@ -973,6 +974,7 @@ wowaudit.com wowhead.com wowinterface.com wtfast.com +www.canalplus.com www.cc.com www.chiefdelphi.com www.digikam.org From 8148bb0bb077ff7f4dbc35b4219d5b5127edfd4b Mon Sep 17 00:00:00 2001 From: FadeMind Date: Fri, 7 Jan 2022 18:26:44 +0100 Subject: [PATCH 235/892] Fix for dell.com (#7884) - Invert white areas. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ac7e0fe863c1..c87fde93c93c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3769,6 +3769,9 @@ CSS dell.com INVERT +.breadcrumbs +.cat-banner-text +.cfsf-ba-content-wrap .hpg-cat-item-wrap svg ================================ From 9b967911ff422ae1146e51ae02090b33b11744e6 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Fri, 7 Jan 2022 18:34:05 +0100 Subject: [PATCH 236/892] Fix for kopalniawiedzy.pl (#7888) - Fix logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c87fde93c93c..70328ec60d12 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8345,6 +8345,13 @@ INVERT ================================ +kopalniawiedzy.pl + +INVERT +img[alt="Patronite"] + +================================ + korso24.pl korsosanockie.pl From d0c4b79f35c857044ffe0e066259dce9a98e5a9e Mon Sep 17 00:00:00 2001 From: martinetruls Date: Fri, 7 Jan 2022 18:39:03 +0100 Subject: [PATCH 237/892] Fix for finn.no (#7873) - Fix SVG Inversion. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 70328ec60d12..a5ad3368fbf1 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5617,6 +5617,13 @@ header.ant-layout-header img ================================ +finn.no + +IGNORE INLINE STYLE +svg * + +================================ + fio.fnar.net INVERT From ae5c48ee216464a592e20e6068362d82a2c2dd40 Mon Sep 17 00:00:00 2001 From: Rock <84492239+RockSolid1106@users.noreply.github.com> Date: Fri, 7 Jan 2022 23:24:45 +0530 Subject: [PATCH 238/892] Added dark sites (#7889) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 948f736cb75b..6b3d1c9ed8a9 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -298,6 +298,7 @@ etcroot.pw etke.cc etlegacy.com evewho.com +evokemusic.ai evowars.io extrememusic.com f.vision From 02c7c0cf12888fbdc114bd0f06dff9d6e3491add Mon Sep 17 00:00:00 2001 From: Devesh Pal Date: Fri, 7 Jan 2022 23:29:07 +0530 Subject: [PATCH 239/892] Added dark sites (#7887) --- src/config/dark-sites.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 6b3d1c9ed8a9..7ab81b934d5c 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -107,6 +107,7 @@ blackhatworld.com blackhole.run blackle.com blackmod.net +blakthumb.com blastpremier.com blgn.dev blink.sh @@ -562,6 +563,7 @@ monkrus.ws mope.io mouse-sensitivity.com mrms.cz +music.com music.youtube.com mwittrien.github.io mwomercs.com From fcc6c9cbd68908bded96c4ed16fefc484eb007ae Mon Sep 17 00:00:00 2001 From: Elaborendum <71190696+Elaborendum@users.noreply.github.com> Date: Fri, 7 Jan 2022 17:07:47 -0500 Subject: [PATCH 240/892] Update fixes (#7886) GDrive: Circle in folder shortcut icon Login Live: Various small icons when logging in (Help, Other ways to login, Back button and OTP icon) Outlook: I'm conflicted a bit about this one, as it has an actual dark mode, but it incorrectly leaves a waffle menu icon its original color, making it hard to see against the dark background. MS To-Do: Circles inside toggle switches in settings Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a5ad3368fbf1..aecd4635f8cf 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4565,6 +4565,7 @@ div[role="listitem"] > div > div > div > svg[fill="#000000"] > path div[role="menu"] > div > div[role="menuitem"] > div > div > div div[data-label="nd"] > div > div > svg > path[fill="#000000"] div[role="document"] > div[role="button"] .a-b-c +div > svg > circle[fill="white"] CSS span[data-type="spelling"] { @@ -8909,6 +8910,11 @@ login.live.com INVERT div[id$="Proofs"] .tile-img +div.promoted-fed-cred-content > div > div > div > div > img +div#credentialList.form-group > div > div > div > div > div > img +div.pagination-view.has-identity-banner.animate.slide-in-next > div > div > div > img +span.help-button > img +button.backButton > img ================================ @@ -11243,6 +11249,13 @@ img[src="https://outline.com/images/wordmark.svg"] ================================ +outlook.live.com + +INVERT +div.o365cs-base > span.ms-Icon--WaffleOffice36 + +================================ + overleaf.com INVERT @@ -14824,6 +14837,13 @@ img[src="/img/logout-black.png"] ================================ +to-do.live.com + +INVERT +span[class^="ms-Toggle-thumb"] + +================================ + todoist.com INVERT From 1b44b1f02c57c5efca1ef27b9dac5e588819a8c5 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sat, 8 Jan 2022 15:37:18 +0100 Subject: [PATCH 241/892] Fix for nowafarmacja.pl (#7895) - Fix images. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index aecd4635f8cf..3e18fca1f602 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10684,6 +10684,15 @@ INVERT ================================ +nowafarmacja.pl + +INVERT +.icon-chevron-down +.payment-banners +.hheader::after + +================================ + nowemedium.pl INVERT From 37f23b82065e6328fcf2fe5e709b8adda69604ec Mon Sep 17 00:00:00 2001 From: Pat Nafarrete Date: Sat, 8 Jan 2022 15:05:35 +0000 Subject: [PATCH 242/892] Fix for plannedparenthood.org (#7897) - Fix navigation menu. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 3e18fca1f602..332c84e2241e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11610,6 +11610,15 @@ code { ================================ +plannedparenthood.org + +INVERT +a.top-level-nav-link::after +a.top-level-nav-link::before +a.top-level-nav-link > span::after + +================================ + plantuml.com INVERT From f94c8be609229670635099aae2a17d1cd651f2f9 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 9 Jan 2022 16:00:33 +0100 Subject: [PATCH 243/892] Fix for gov.pl/web/bip (#7898) - Invert banner. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 332c84e2241e..80ba951ec047 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6877,6 +6877,14 @@ ymaps[class$="places-pane"] span ================================ +gov.pl/web/bip + +INVERT +.banner-promo +.banner-promo__text + +================================ + gramota.ru INVERT From 86816e3f04d5223d189c6dd8f10f7e58a8a58e3b Mon Sep 17 00:00:00 2001 From: Nathorr Date: Sun, 9 Jan 2022 17:04:00 +0200 Subject: [PATCH 244/892] Fix for realmadridfin.net (#7893) - Element surrounding all content (#content_section) had a bright background image. - Forum search button (.button_submit) had a bright background image. - Chat extension's text modification buttons (all ids containing "shoutbox", including one img without either id or class next to #shoutbox_u) had bright background images. - Chat extension's message input element (#shoutbox_message) had bright background color. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 80ba951ec047..28167324e837 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12253,6 +12253,26 @@ CSS ================================ +realmadridfin.net + +CSS +.button_submit, +#content_section, +#shoutbox_b, +#shoutbox_color, +#shoutbox_face, +#shoutbox_i, +#shoutbox_nosound, +#shoutbox_u, +#shoutbox_u + img { + background-image: none !important; +} +#shoutbox_message { + background-color: none !important; +} + +================================ + realmicentral.com INVERT From b23620c8c8bdb766dbadc9c528ca14176776b3e5 Mon Sep 17 00:00:00 2001 From: Talvi Date: Sun, 9 Jan 2022 16:04:50 +0100 Subject: [PATCH 245/892] Fix getlektor.com (#7890) - Fix background. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 28167324e837..70b406a75696 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6211,6 +6211,18 @@ img[alt="globe"] ================================ +getlektor.com + +CSS +.body-wrapper .container { + background-color: var(--darkreader-neutral-background) !important; +} +pre { + background-image: none !important; +} + +================================ + getmimo.com INVERT From adcf215e67d074a29b6243e90513afa53aba111d Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 9 Jan 2022 16:07:44 +0100 Subject: [PATCH 246/892] Fix for spidersweb.pl (#7901) - Separate fixes. --- src/config/dynamic-theme-fixes.config | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 70b406a75696..555e5992c8b8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13538,11 +13538,28 @@ img[src*="images/"] spidersweb.pl INVERT +.amp-site-title img[alt="logo bizBlog"] img[alt="bizblog to ludzie"] -a[href="/rozrywka"] -a[href="/plus"] -.amp-site-title + +================================ + +spidersweb.pl/plus + +INVERT +a[href="/plus"] svg + +================================ + +spidersweb.pl/rozrywka + +INVERT +a[href="/rozrywka"] svg + +CSS +a[href="/rozrywka"] svg path[fill="#211D26"] { + --darkreader-inline-fill: ${white} !important; +} ================================ From ca5c477f40e81ac0cf845fc25ad11f9ca1bb3ae7 Mon Sep 17 00:00:00 2001 From: Martin Date: Sun, 9 Jan 2022 18:42:13 +0100 Subject: [PATCH 247/892] Fix for minesweeper.online (#7903) - Fix gameboard cells. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 555e5992c8b8..0bdb50172127 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9811,6 +9811,13 @@ IGNORE IMAGE ANALYSIS ================================ +minesweeper.online + +IGNORE IMAGE ANALYSIS +* + +================================ + miro.com INVERT From 1ebc15ecc962b9a3bc0e61b6edab95471345ee52 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 9 Jan 2022 17:44:10 +0000 Subject: [PATCH 248/892] perf/fix: use a parser for gradients. (#7083) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Don't use the regex for gradients. The regex had the potential to slow down DR a lot and even had the ability to freeze the browser all together. - Having less Regex is good and add more readability. - Performance improvements: System Info: Chromium 94.0.4606.81 & Firefox Nightly 95.0a1 (2021-10-12) (64-bit) (Arch) Linux 5.14.11 (zen-kernel). Extreme-case: - `"linear-gradient(217deg, rgba(255,0,0,.8), rgba(255,0,0,0) 70.71%), linear-gradient(127deg, rgba(0,255,0,.8), rgba(0,255,0,0) 70.71%), linear-gradient(336deg, rgba(0,0,255,.8), rgba(0,0,255,0) 70.71%);"` Before: - Chromium: 693,666 ops/sec ±0.23% (97 runs sampled) - Firefox: 647,798 ops/sec ±0.36% (95 runs sampled) After: - Chromium: 1,695,039 ops/sec ±0.89% (95 runs sampled) - Firefox 695,486 ops/sec ±0.51% (97 runs sampled) Possible input(no gradients): - `url("../../media/examples/star.png"), url("../../media/examples/lizard.png");` Before: - Chromium: 2,413,792 ops/sec ±0.26% (100 runs sampled) - Firefox: 2,105,840 ops/sec ±0.61% (98 runs sampled) After: - Chromium: 56,380,341 ops/sec ±0.52% (96 runs sampled) - Firefox: 10,010,921 ops/sec ±0.91% (95 runs sampled) Possible input(gradient + background-image): - `linear-gradient(rgba(0, 0, 255, 0.5), rgba(255, 255, 0, 0.5)), url("../../media/examples/lizard.png");` Before: - Chromium: 1,354,331 ops/sec ±0.53% (101 runs sampled) - Firefox: 1,187,130 ops/sec ±0.75% (100 runs sampled) After: - Chromium: 4,289,281 ops/sec ±1.05% (98 runs sampled) - Firefox: 1,819,759 ops/sec ±0.49% (98 runs sampled) Possible input(simple radial): - `radial-gradient(closest-side, #3f87a6, #ebf8e1, #f69d3c);` Before: - Chromium: 1,978,929 ops/sec ±1.13% (100 runs sampled) - Firefox: 1,721,784 ops/sec ±0.72% (98 runs sampled) After: - Chromium: 6,019,032 ops/sec ±1.27% (93 runs sampled) - Firefox: 2,512,294 ops/sec ±0.47% (96 runs sampled) --- src/inject/dynamic-theme/modify-css.ts | 57 +++++++++++++------ src/utils/parsing.ts | 78 ++++++++++++++++++++++++++ tests/utils/parsing.tests.ts | 46 +++++++++++++++ 3 files changed, 163 insertions(+), 18 deletions(-) create mode 100644 src/utils/parsing.ts create mode 100644 tests/utils/parsing.tests.ts diff --git a/src/inject/dynamic-theme/modify-css.ts b/src/inject/dynamic-theme/modify-css.ts index b2052c3482e8..9424e6fd4c55 100644 --- a/src/inject/dynamic-theme/modify-css.ts +++ b/src/inject/dynamic-theme/modify-css.ts @@ -11,6 +11,8 @@ import type {CSSVariableModifier, VariablesStore} from './variables'; import {logWarn, logInfo} from '../../utils/log'; import type {FilterConfig, Theme} from '../../definitions'; import {isFirefox} from '../../utils/platform'; +import type {parsedGradient} from '../../utils/parsing'; +import {parseGradient} from '../../utils/parsing'; export type CSSValueModifier = (theme: Theme) => string | Promise; @@ -268,7 +270,6 @@ function getColorModifier(prop: string, value: string): string | CSSValueModifie } } -export const gradientRegex = /[\-a-z]+gradient\(([^\(\)]*(\(([^\(\)]*(\(.*?\)))*[^\(\)]*\))){0,15}[^\(\)]*\)/g; const imageDetailsCache = new Map(); const awaitingForImageLoading = new Map void>>(); @@ -289,6 +290,19 @@ function shouldIgnoreImage(selectorText: string, selectors: string[]) { return false; } +interface bgImageMatches { + type: 'url' | 'gradient'; + urlInfo?: { + index: number; + match: string; + }; + gradientInfo?: { + type: string; + content: string; + hasComma: boolean; + }; +} + export function getBgImageModifier( value: string, rule: CSSStyleRule, @@ -296,7 +310,7 @@ export function getBgImageModifier( isCancelled: () => boolean, ): string | CSSValueModifier { try { - const gradients = getMatches(gradientRegex, value); + const gradients = parseGradient(value); const urls = getMatches(cssURLRegex, value); if (urls.length === 0 && gradients.length === 0) { @@ -312,14 +326,14 @@ export function getBgImageModifier( }); }; - const matches = getIndices(urls).map((i) => ({type: 'url', ...i})) - .concat(getIndices(gradients).map((i) => ({type: 'gradient', ...i}))) - .sort((a, b) => a.index - b.index); + const matches: bgImageMatches[] = + (getIndices(urls).map((i) => ({type: 'url', urlInfo: i})) as bgImageMatches[]) + .concat(gradients.map((i) => ({type: 'gradient', gradientInfo: i}))); - const getGradientModifier = (gradient: string) => { - const match = gradient.match(/^(.*-gradient)\((.*)\)$/); - const type = match[1]; - const content = match[2]; + const getGradientModifier = (gradient: parsedGradient) => { + const type = gradient.type; + const content = gradient.content; + const hasComma = gradient.hasComma; const partsRegex = /([^\(\),]+(\([^\(\)]*(\([^\(\)]*\)*[^\(\)]*)?\))?[^\(\),]*),?/g; const colorStopRegex = /^(from|color-stop|to)\(([^\(\)]*?,\s*)?(.*?)\)$/; @@ -350,7 +364,7 @@ export function getBgImageModifier( }); return (filter: FilterConfig) => { - return `${type}(${parts.map((modify) => modify(filter)).join(', ')})`; + return `${type}(${parts.map((modify) => modify(filter)).join(', ')})${hasComma ? ', ' : ''}`; }; }; @@ -433,14 +447,21 @@ export function getBgImageModifier( const modifiers: CSSValueModifier[] = []; let index = 0; - matches.forEach(({match, type, index: matchStart}, i) => { - const prefixStart = index; - const matchEnd = matchStart + match.length; - index = matchEnd; - modifiers.push(() => value.substring(prefixStart, matchStart)); - modifiers.push(type === 'url' ? getURLModifier(match) : getGradientModifier(match)); - if (i === matches.length - 1) { - modifiers.push(() => value.substring(matchEnd)); + matches.forEach(({type, urlInfo, gradientInfo}, i) => { + if (type === 'url') { + const match = urlInfo.match; + const matchStart = urlInfo.index; + const prefixStart = index; + const matchEnd = matchStart + match.length; + + index = matchEnd; + modifiers.push(() => value.substring(prefixStart, matchStart)); + modifiers.push(getURLModifier(match)); + if (i === matches.length - 1) { + modifiers.push(() => value.substring(matchEnd)); + } + } else if (type === 'gradient') { + modifiers.push(getGradientModifier(gradientInfo)); } }); diff --git a/src/utils/parsing.ts b/src/utils/parsing.ts new file mode 100644 index 000000000000..a6c2fdb7d6c0 --- /dev/null +++ b/src/utils/parsing.ts @@ -0,0 +1,78 @@ +import {getParenthesesRange} from './text'; + +const gradientLength = 'gradient'.length; +const conicGradient = 'conic-'; +const conicGradientLength = conicGradient.length; +const radialGradient = 'radial-'; +const linearGradient = 'linear-'; + +export interface parsedGradient { + type: string; + content: string; + hasComma: boolean; +} + +// Parse the value according to the specifiction. +// +// Specification: https://drafts.csswg.org/css-images-4/#gradients +export function parseGradient(value: string): parsedGradient[] { + const result: parsedGradient[] = []; + + // Loop trough the value until we find the first `gradient` keyword. + // We will be using the indexOf to find the keyword. From their on + // we will check which specific graidient we are dealing with. + // Then we will try to parse the rest of the value as a gradient. + let index = 0; + let startIndex = conicGradient.length; + while ((index = value.indexOf('gradient', startIndex)) !== -1) { + let typeGradient: string; + // Now we check the type of gradient. + // the current index starts at `g` of gradient. + // So we have to do a reverse lookup to find the type of gradient. + // Because each type of gradient has a different length + // will we get the substring of the possible gradient types. + [linearGradient, radialGradient, conicGradient].find((possibleType) => { + if (index - possibleType.length >= 0) { + const possibleGradient = value.substring(index - possibleType.length, index); + if (possibleGradient === possibleType) { + // Check if the type has a `-` before the `type-gradient` keyword. + // If it does, it's a repeating gradient. + if (index - possibleType.length - 1 >= 9) { + if (value[index - possibleType.length - 1] === '-') { + typeGradient = `repeating-${possibleType}gradient`; + return true; + } + } + typeGradient = `${possibleType}gradient`; + return true; + } + } + }); + + if (!typeGradient) { + startIndex = index + conicGradientLength; + break; + } + + // Now we know the type of gradient. + // We can go parse the rest of the value as a gradient. + const {start, end} = getParenthesesRange(value, index + gradientLength); + + const content = value.substring(start + 1, end - 1); + startIndex = end + 1 + conicGradientLength; + + result.push({ + type: typeGradient, + content, + hasComma: true, + }); + } + + // Set the last result to not have a comma. + if (result.length) { + result[result.length - 1].hasComma = false; + } + + + return result; +} diff --git a/tests/utils/parsing.tests.ts b/tests/utils/parsing.tests.ts new file mode 100644 index 000000000000..c923f630c846 --- /dev/null +++ b/tests/utils/parsing.tests.ts @@ -0,0 +1,46 @@ +import {parseGradient} from '../../src/utils/parsing'; + +test('type gradients', () => { + expect(parseGradient('linear-gradient(rgb(200))')).toEqual([{ + type: 'linear-gradient', + content: 'rgb(200)', + hasComma: false, + }]); + expect(parseGradient(`linear-gradient(217deg, rgba(255,0,0,.8), rgba(255,0,0,0) 70.71%), + linear-gradient(127deg, rgba(0,255,0,.8), rgba(0,255,0,0) 70.71%), + linear-gradient(336deg, rgba(0,0,255,.8), rgba(0,0,255,0) 70.71%);`)).toEqual([ + { + type: 'linear-gradient', + content: '217deg, rgba(255,0,0,.8), rgba(255,0,0,0) 70.71%', + hasComma: true, + }, + { + type: 'linear-gradient', + content: '127deg, rgba(0,255,0,.8), rgba(0,255,0,0) 70.71%', + hasComma: true, + }, + { + type: 'linear-gradient', + content: '336deg, rgba(0,0,255,.8), rgba(0,0,255,0) 70.71%', + hasComma: false, + } + ]); + expect(parseGradient('radial-gradient(rgb(200))')).toEqual([{ + type: 'radial-gradient', + content: 'rgb(200)', + hasComma: false, + }]); + + expect(parseGradient('repeating-linear-gradient(transparent, #4d9f0c 40px), repeating-linear-gradient(0.25turn, transparent, #3f87a6 20px);')).toEqual([ + { + type: 'repeating-linear-gradient', + content: 'transparent, #4d9f0c 40px', + hasComma: true, + }, + { + type: 'repeating-linear-gradient', + content: '0.25turn, transparent, #3f87a6 20px', + hasComma: false, + } + ]); +}); From 216114c1f88f06e5612802eab6f1c82163a058b3 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 10 Jan 2022 21:51:11 +0100 Subject: [PATCH 249/892] Fix for awhitemad.pl (#7907) - Fix logo. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0bdb50172127..25adc7ce49a6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16161,6 +16161,14 @@ path[fill="currentColor"] ================================ +whitemad.pl + +INVERT +#logo +#cb-nav-logo + +================================ + who.int INVERT From 04f98fa07561eefd3942f089e3d78f64c56046c4 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Mon, 10 Jan 2022 12:51:41 -0800 Subject: [PATCH 250/892] Fix for accuweather.com (#7908) - Fix icon. --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 25adc7ce49a6..a5e8dad5e76b 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -411,6 +411,7 @@ div#product_img.tfa_totp_mode accuweather.com INVERT +.allergy-icon .icon-search img[src$="arrow-right-black.svg"] From eee426986fbd1e0e86dbe8e504bfa36bce35443d Mon Sep 17 00:00:00 2001 From: Talvi Date: Mon, 10 Jan 2022 22:06:18 +0100 Subject: [PATCH 251/892] Added dark sites (#7910) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 7ab81b934d5c..fc9b80901c4a 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -584,6 +584,7 @@ nchristopher.me neal.fun/size-of-space nee.lv neovim.io +netzhack.de neundex.com newgrounds.com nexusmods.com From 23b0803d7a50a3857ccd56e2b9aa0fdb11c4cd89 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 10 Jan 2022 22:07:00 +0100 Subject: [PATCH 252/892] Fix for gowork.pl (#7912) - Fix img text. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a5e8dad5e76b..85557d13d251 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6898,6 +6898,13 @@ INVERT ================================ +gowork.pl + +INVERT +.city__img .city__text + +================================ + gramota.ru INVERT From c604da8f7234f6b205faecfbb7db99d83026bb17 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 10 Jan 2022 21:10:32 +0000 Subject: [PATCH 253/892] Fix for businesswire.com (#7914) - Resolves #7909 --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 85557d13d251..5de742482190 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2378,6 +2378,18 @@ section[class*="brands-social"] ================================ +businesswire.com + +INVERT +body > header div:first-child + +CSS +#bw-home { + background-image: none !important; +} + +================================ + buzzsprout.com INVERT From 1996c12dc22ec14e28d2db9bc2f2b3718bc6ac25 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 10 Jan 2022 21:14:00 +0000 Subject: [PATCH 254/892] Fix for youtube.com (#7915) - Fix for #7913 --- src/config/dynamic-theme-fixes.config | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5de742482190..2bbeb3c8b37f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17579,9 +17579,6 @@ button[aria-pressed="true"] > yt-icon:not(#guide-icon.ytd-app), .ytp-contextmenu .ytp-menuitem[aria-checked="true"] .ytp-menuitem-toggle-checkbox { background: url('data:image/svg+xml;utf8,') !important; } -#backgroundFrontLayer.tp-yt-app-header { - background-image: var(--app-header-background-front-layer_-_background-image) !important; -} #metadata-line.ytd-video-meta-block span.ytd-video-meta-block { color: var(--ytd-metadata-line-color, var(--yt-spec-text-secondary)) !important; } From 91f4839e9ded010e1d6e2217bf71a5ebc4c21baa Mon Sep 17 00:00:00 2001 From: "Igor \"ForumPlayer" Date: Tue, 11 Jan 2022 01:33:55 -0300 Subject: [PATCH 255/892] Added dark sites (#7917) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index fc9b80901c4a..26902b1dbb32 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -89,6 +89,7 @@ benleggiero.blog benleggiero.me bequiet.com bestblackhatforum.com +beta.crunchyroll.com beta.destinyitemmanager.com betterdiscord.app betterttv.com From 6852c11ba4db2119808e569f201a29d1edebd36b Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 12 Jan 2022 06:54:52 +0000 Subject: [PATCH 256/892] Fix for commons.wikimedia.org (#7929) - Resolves #7918 --- src/config/dynamic-theme-fixes.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2bbeb3c8b37f..aee78321c4f2 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3161,6 +3161,11 @@ INVERT commons.wikimedia.org +INVERT +.mw-mmv-filepage-buttons .mw-mmv-view-expanded .mw-ui-icon::before +.mw-mmv-filepage-buttons .mw-mmv-view-config .mw-ui-icon::before +.licensetpl td[style^="width"] + IGNORE IMAGE ANALYSIS .mw-wiki-logo From b05c374ea2a37a4f7c9d266170efbfdeaebf6be5 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Wed, 12 Jan 2022 07:55:12 +0100 Subject: [PATCH 257/892] Fix for joemonster.org (#7919) - Fix comments section. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index aee78321c4f2..7954a3e01421 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8010,7 +8010,14 @@ CSS joemonster.org INVERT +#commentHeader +.art-details span +.item-vote-down .logo +.moderb +.mtv-item-not-working +.vote-down +.vote-up CSS body { From 3bd12ceefc135f24175f751fb4a75b40e49f34ff Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Tue, 11 Jan 2022 22:59:23 -0800 Subject: [PATCH 258/892] Fix for accesswire.com (#7921) - Resolves #7920 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7954a3e01421..8c55e94817aa 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -316,6 +316,13 @@ img[alt="WGU Logo"] ================================ +accesswire.com + +INVERT +.v2-nav-logo + +================================ + account.live.com INVERT From ecb952dc05c736f2a27f6abc21d3aa1870c3eb7b Mon Sep 17 00:00:00 2001 From: Ashish Panigrahi Date: Wed, 12 Jan 2022 12:32:14 +0530 Subject: [PATCH 259/892] Fix for aephraim-website (#7922) - Fix background. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8c55e94817aa..296b86a3827f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16991,6 +16991,15 @@ INVERT ================================ +www.physics.utoronto.ca/~aephraim/aephraim.html + +CSS +body { + --darkreader-inline-bgcolor: var(--darkreader-neutral-background) !important; +} + +================================ + www.pixivision.net INVERT From 8f8482d190bdc4639e7cc1959feea8cbd83b3ab6 Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Wed, 12 Jan 2022 10:05:22 +0300 Subject: [PATCH 260/892] Fix for replit.com (#7923) - Remove obsolete rule. --- src/config/dynamic-theme-fixes.config | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 296b86a3827f..d91c487a6f8f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12502,9 +12502,6 @@ img.math replit.com -INVERT -.toggle-bars-wrapper - CSS .monaco-editor .cursor { background-color: ${#000}; From 6fe91ca96b48fa6eb20cd22597551c14ed1e93c3 Mon Sep 17 00:00:00 2001 From: makl11 Date: Wed, 12 Jan 2022 08:07:41 +0100 Subject: [PATCH 261/892] Fix for studyflix.de (#7924) - Fix missing inversion for images of LaTex-formulas --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d91c487a6f8f..e3e4805f795a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14050,6 +14050,13 @@ paper-radio-button ================================ +studyflix.de + +INVERT +img[title='Rendered by QuickLaTeX.com'] + +================================ + subdivx.com INVERT From afe4ea997e9c61390630ea98ecab9506002c0b29 Mon Sep 17 00:00:00 2001 From: Donkeykong307 Date: Wed, 12 Jan 2022 17:08:31 +1000 Subject: [PATCH 262/892] Fix for duolingo.com (#7926) Fix for inverted animations --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e3e4805f795a..af310e9bd13f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4731,6 +4731,7 @@ button[aria-disabled="true"] > span { IGNORE INLINE STYLE div[data-test="challenge-translate-prompt"] svg * +div[data-test="challenge challenge-translate"] svg * ================================ From 68d4768d2046c7d329800e93283a4c86842dcbc7 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 12 Jan 2022 07:17:38 +0000 Subject: [PATCH 263/892] Fix for office.com (#7930) - Resolves #7928 --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index af310e9bd13f..a3ea70173391 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10966,6 +10966,18 @@ span.icon-gray.quotation-mark ================================ +office.com + +INVERT +.ms-ohp-svg-Icon.ms-ohp-Icon--privacyLogo + +IGNORE IMAGE ANALYSIS +.ms-ohp-svg-Icon.ms-ohp-Icon--privacyLogo +.ms-ohp-svg-Icon.ms-ohp-Icon--calendarLogo::before +.ms-ohp-svg-Icon.ms-ohp-Icon--flowLogo::before + +================================ + oisd.nl INVERT From 6ac6dc14237ff4889f695d7fe59d4eaddf7252e2 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 13 Jan 2022 17:28:26 +0000 Subject: [PATCH 264/892] Fix for nperf.com (#7943) - Resolves #7925 --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a3ea70173391..ba25f6466b31 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10768,6 +10768,18 @@ INVERT ================================ +nperf.com + +INVERT +.SpeedTest > .resultPanel + +CSS +.SpeedTest > .resultPanel { + background-color: transparent !important; +} + +================================ + npmjs.com INVERT From c36a0109fc5c9d2f09607987f0ba07e662836888 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 13 Jan 2022 17:40:06 +0000 Subject: [PATCH 265/892] Fix for helzberg.com (#7944) - Resolves #7934 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ba25f6466b31..74123d13f8d2 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7149,6 +7149,13 @@ INVERT ================================ +helzberg.com + +IGNORE INLINE STYLE +a[id^="powered_by_pixleee"] + +================================ + heritage.org/index INVERT From ac6cd41f0ead11ed156d926fdb6b914f58fdadb9 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Thu, 13 Jan 2022 18:41:23 +0100 Subject: [PATCH 266/892] Fix for canva.com (#7931) - Invert logo. - Invert icons. --- src/config/dynamic-theme-fixes.config | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 74123d13f8d2..e1f3a867ec14 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2470,6 +2470,12 @@ canva.com INVERT #__next > div > section > div[style^="background-color"] +img[src*="category-public.canva.com/icons/"] + +CSS +._8aslVA svg path { + fill: ${black} !important; +} ================================ From c327f57404fa30fefd05b0cd6d49424357b8e18c Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 13 Jan 2022 17:41:55 +0000 Subject: [PATCH 267/892] Fix for bing.com (#7945) - Resolves #7937 --- src/config/dynamic-theme-fixes.config | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e1f3a867ec14..14a88a9acf6f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1858,9 +1858,13 @@ CSS #b_results > li.b_ans.b_topborder, #b_results > li.b_ans.b_topborder.b_tophb.b_topshad { box-shadow: ${rgba(13, 13, 13, 0.05)} 0px 0px 0px 1px !important; } +.l_ecrd_imcolheader.gradient { + z-index: 2 !important; +} IGNORE INLINE STYLE .b_header_bg +.sp-tpwebicons.WIKI * ================================ From cff5f625bbcfbb120215eeb52e61cc31bd046cb9 Mon Sep 17 00:00:00 2001 From: IronKyle38 <63471198+IronKyle38@users.noreply.github.com> Date: Thu, 13 Jan 2022 18:59:55 +0100 Subject: [PATCH 268/892] Fix for labfolder.com (#7942) - Fix missing inversion for icons. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 14a88a9acf6f..9715e8dc5510 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8495,6 +8495,14 @@ INVERT ================================ +labfolder.com + +INVERT +.header_btn svg +.lf-icon + +================================ + lajtmobile.pl CSS From 544c77ea9842ad5fe0df9ceddb35f0424c379f5e Mon Sep 17 00:00:00 2001 From: FadeMind Date: Thu, 13 Jan 2022 19:15:07 +0100 Subject: [PATCH 269/892] Fix for onet.pl (#7938) - Fix weather tabs icons. --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9715e8dc5510..f6d89b720490 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11155,6 +11155,7 @@ img[alt="O!Konto"] img[alt="Plejada.pl"] svg[class="menuIconClose"] ul.contentList img.icon +.weatherExtrasWidget__category-image img CSS .mainBoxBgHolder { From 99997dc61fb0d981e4b565a8e9d4c982fa2d927a Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 13 Jan 2022 18:25:35 +0000 Subject: [PATCH 270/892] Fix opera side-bar (#7948) - Resolves #6882 --- src/background/tab-manager.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/background/tab-manager.ts b/src/background/tab-manager.ts index c81be6c1e3b8..9dd0d1167e68 100644 --- a/src/background/tab-manager.ts +++ b/src/background/tab-manager.ts @@ -2,7 +2,7 @@ import {canInjectScript} from '../background/utils/extension-api'; import {createFileLoader} from './utils/network'; import type {FetchRequestParameters} from './utils/network'; import type {Message} from '../definitions'; -import {isFirefox, isMV3, isThunderbird} from '../utils/platform'; +import {isFirefox, isMV3, isOpera, isThunderbird} from '../utils/platform'; import {MessageType} from '../utils/message'; import {logWarn} from '../utils/log'; import {StateManager} from './utils/state-manager'; @@ -93,7 +93,8 @@ export default class TabManager { // Workaround for Thunderbird and Vivaldi. // On Thunderbird, sometimes sender.tab is undefined but accessing it will throw a very nice error. // On Vivaldi, sometimes sender.tab is undefined as well, but error is not very helpful. - const isPanel = typeof sender === 'undefined' || typeof sender.tab === 'undefined'; + // On Opera, sender.tab.index === -1. + const isPanel = typeof sender === 'undefined' || typeof sender.tab === 'undefined' || (isOpera && sender.tab.index === -1); if (isPanel) { // NOTE: Vivaldi and Opera can show a page in a side panel, // but it is not possible to handle messaging correctly (no tab ID, frame ID). From c7b822073737d29d195c89c6d78ad29f3f36d5bc Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sat, 15 Jan 2022 19:14:56 +0100 Subject: [PATCH 271/892] Fix for heraldscotland.com (#7950) - Invert icon. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index f6d89b720490..305a3d3eca37 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7166,6 +7166,13 @@ a[id^="powered_by_pixleee"] ================================ +heraldscotland.com + +INVERT +.brand + +================================ + heritage.org/index INVERT From c455df25c33d2a706829bf2f24ffccfe7675a350 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 15 Jan 2022 18:17:59 +0000 Subject: [PATCH 272/892] Fix for microsoft.com (#7959) - Resolves #7951 --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 305a3d3eca37..4b9dde989a31 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9813,6 +9813,9 @@ body > .ember-view.dialog_wrapper { microsoft.com +INVERT +.m-updated-quicklinks .c-carousel.f-single-slide ul > li > a.c-hyperlink > img.large-icon + CSS #announce picture + div h3, #announce picture + div p { From e5a20b5612a3e333878b08645de918f559129fb3 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 15 Jan 2022 18:27:10 +0000 Subject: [PATCH 273/892] Fix for bing.com (#7960) - Resolves #7952 - Relevant #6483 --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4b9dde989a31..862333893db9 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1846,7 +1846,7 @@ label > svg circle { bing.com INVERT -canvas +canvas[id^="Microsoft.Maps"] CSS .b_searchboxForm, From 43c5a1ebfbf05813ea38cb4b98395a3ab693e9ae Mon Sep 17 00:00:00 2001 From: Talvi Date: Sat, 15 Jan 2022 19:28:52 +0100 Subject: [PATCH 274/892] Added dark pages (#7954) --- src/config/dark-sites.config | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 26902b1dbb32..1fb299820180 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -60,6 +60,7 @@ asoftmurmur.com aspenuwu.me ass.rip ass.software +assassins-creed.de ast4u.me astrovpn.co atelier.net/virtual-economy @@ -228,6 +229,7 @@ developerinsider.co developpement-systeme-exploitation.github.io/documentation di.fm diablo3.com +diablogame.de diep.io digi77.com digital.fashion @@ -262,13 +264,16 @@ dotapicker.com dplay.com draculatheme.com draftkings.com +dragonage-game.de drakewars.com drunkenslug.com drvortex.dev +dsa-drakensang.de dsc.gg duckychannel.com.tw duelingnexus.com dumpert.nl +dungeon-lords.de dyno.gg easypastes.tk editor.freepik.com @@ -308,6 +313,7 @@ faceit-enhancer.com faceit.com factorio.com factoriobin.com +fallout-area.de femto.dev femto.pw fictivekin.com @@ -669,6 +675,7 @@ piped.kavin.rocks piracybank.org piskelapp.com pitokmm.it +planetneverwinter.de platinumgod.co.uk play.geforcenow.com play.hbogo.com @@ -764,6 +771,7 @@ rust.nolt.io rythm.fm rythmbot.co sa-mp.com +sacred-legends.de sadh.life sadistic.pl sammcheese.net @@ -973,6 +981,10 @@ wiki.step-project.com windowsterminalthemes.dev wiocha.pl wolfy.fr +worldofamalur.de +worldofcyberpunk.de +worldofgothic.de +worldofrisen.de wormate.io wormhole.app wowaudit.com @@ -992,6 +1004,7 @@ www.seebham.codes www.teamfortress.com www.tvnz.co.nz www.wickeditor.com/editor/ +www.worldofplayers.de x1337x.*/$ x64dbg.com xbins.org From 4dbb7ae0a7ee59c611fe2590a8974a17245ed1d3 Mon Sep 17 00:00:00 2001 From: Aubrey Falconer Date: Sat, 15 Jan 2022 10:29:26 -0800 Subject: [PATCH 275/892] Added dark pages (#7955) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 1fb299820180..60afac60ec6c 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -197,6 +197,7 @@ cybercrime-tracker.net cyberdrop.me cyberpunk.net cybersole.io +cyberspatial.com cytu.be daily-fire.com daksh.eu.org From 3a28d9d6385986d35514910ca40959aca1f1df28 Mon Sep 17 00:00:00 2001 From: Pat Nafarrete Date: Sat, 15 Jan 2022 18:31:33 +0000 Subject: [PATCH 276/892] Fix for tails.boum.org (#7957) --- src/config/dynamic-theme-fixes.config | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 862333893db9..77516ff683cc 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14479,8 +14479,17 @@ tails.boum.org CSS body { - background-image: none !important; + background-image: none !important; +} +#donate-banner p { + color: var(--darkreader-neutral-background) !important; } +#donate-banner u { + border-bottom-color: var(--darkreader-neutral-background) !important; +} + +IGNORE IMAGE ANALYSIS +#donate-banner ================================ From b07358a29fca28b8e197b932d83f2fa5794454c5 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 15 Jan 2022 19:37:05 +0000 Subject: [PATCH 277/892] Remove useless statement (#7961) - It's only used in the loop, but the loop is being aborted. --- src/utils/parsing.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/utils/parsing.ts b/src/utils/parsing.ts index a6c2fdb7d6c0..bd9be595e681 100644 --- a/src/utils/parsing.ts +++ b/src/utils/parsing.ts @@ -50,7 +50,6 @@ export function parseGradient(value: string): parsedGradient[] { }); if (!typeGradient) { - startIndex = index + conicGradientLength; break; } From 75a4b41e0425f3f6cf762bc4cbd47e273c61254b Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 15 Jan 2022 21:43:35 +0000 Subject: [PATCH 278/892] Fix for shopping.google.com (#7963) - Resolves #7512 --- src/config/dynamic-theme-fixes.config | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 77516ff683cc..287672972826 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16986,6 +16986,12 @@ CSS .chr-full-bleed-hero { background-image: none !important; } +html, +img, [role="img"], video, iframe, +#gb, +a[href^="https://shopping.google.com"][href*="/lists"] > span { + filter: none !important; +} IGNORE INLINE STYLE .kdPwrb From 7c6c95cb31416595e9e882179ec33be8208b6e46 Mon Sep 17 00:00:00 2001 From: Andrea Pappacoda Date: Sat, 15 Jan 2022 23:41:43 +0100 Subject: [PATCH 279/892] Added dark sites (#7964) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 60afac60ec6c..a82bddf57aa6 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -392,6 +392,7 @@ gogalaxy.com gogoanime.se goodfirstissue.dev goosegame.io +grapheneos.org graydon2.dreamwidth.org grc.arikado.ru greatview.video From 1ff46143e8887ce7289168611dbda8b3a01ae252 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 16 Jan 2022 12:11:13 +0000 Subject: [PATCH 280/892] fix: avoid double invert on chromium (#7969) - Avoid double inverting a pdf on Chromium browsers. - Resolves #7949 --- src/generators/dynamic-theme.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/generators/dynamic-theme.ts b/src/generators/dynamic-theme.ts index f188dfbbb7fd..6d259431a0d0 100644 --- a/src/generators/dynamic-theme.ts +++ b/src/generators/dynamic-theme.ts @@ -4,6 +4,7 @@ import type {SitePropsIndex} from './utils/parse'; import {parseArray, formatArray} from '../utils/text'; import {compareURLPatterns, isURLInList} from '../utils/url'; import type {DynamicThemeFix} from '../definitions'; +import {isChromium} from '../utils/platform'; const dynamicThemeFixesCommands: { [key: string]: keyof DynamicThemeFix } = { 'INVERT': 'invert', @@ -71,7 +72,11 @@ export function getDynamicThemeFixesFor(url: string, frameURL: string, text: str ignoreImageAnalysis: genericFix.ignoreImageAnalysis || [], }; if (enabledForPDF) { - common.css += '\nembed[type="application/pdf"] { filter: invert(100%) contrast(90%); }'; + if (isChromium) { + common.css += '\nembed[type="application/pdf"][src="about:blank"] { filter: invert(100%) contrast(90%); }'; + } else { + common.css += '\nembed[type="application/pdf"] { filter: invert(100%) contrast(90%); }'; + } } const sortedBySpecificity = fixes .slice(1) From 11ba0871557feca6e2b9a81227d78a330cb17029 Mon Sep 17 00:00:00 2001 From: Janek <27jf@pm.me> Date: Sun, 16 Jan 2022 13:14:16 +0100 Subject: [PATCH 281/892] Improve issue templates (#7853) - Declutter it. Co-authored-by: Gusted --- .github/ISSUE_TEMPLATE/broken-website.md | 28 ++++++------------ .github/ISSUE_TEMPLATE/bug-report.md | 36 +++++++++--------------- 2 files changed, 22 insertions(+), 42 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/broken-website.md b/.github/ISSUE_TEMPLATE/broken-website.md index d5ae36b97850..af1022ffdae0 100644 --- a/.github/ISSUE_TEMPLATE/broken-website.md +++ b/.github/ISSUE_TEMPLATE/broken-website.md @@ -7,21 +7,15 @@ assignees: '' --- - - - # Broken Website Report ## Website Address @@ -33,14 +27,10 @@ assignees: '' Here is an example: - Go to example.com. - Hover over the example button. -- Notice that when hovering over the example button, it does not change color. --> -## Expected Behavior - - -## Actual Behavior - +## Problematic Observation + ## Screenshots @@ -56,4 +46,4 @@ Here is an example: - Dark Reader Version: ## Additional Context - \ No newline at end of file + diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md index f8b6303ea846..77ef61ee106e 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -7,39 +7,29 @@ assignees: '' --- - - # Bug Report +## Website Address + + ## Bug Description -## Website Address - - ## Steps To Reproduce - - ## Expected Behavior @@ -62,4 +52,4 @@ Here is an example: - Dark Reader Version: ## Additional Context - \ No newline at end of file + From b91424826fa8a5afe662a24a12d80281390154ae Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 16 Jan 2022 13:30:22 +0100 Subject: [PATCH 282/892] Fix for icons8.com (#7970) - Resolves #7967 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 287672972826..9acf52a3348b 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7397,6 +7397,15 @@ svg.iconify * ================================ +icons8.com + +CSS +.main-page .gradient { + background-image: none !important; +} + +================================ + iett.istanbul CSS From d4057678bae3f7b76befe5cef0921d984e83ec6a Mon Sep 17 00:00:00 2001 From: Travis Hester <734673+slopra@users.noreply.github.com> Date: Sun, 16 Jan 2022 15:04:36 -0600 Subject: [PATCH 283/892] Fix for docs.soliditylang.org (#7966) - Fix overflow-y background-color mismatch. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9acf52a3348b..9644173d375a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4513,6 +4513,15 @@ CSS ================================ +docs.soliditylang.org + +CSS +.wy-body-for-nav { + background-color: unset; +} + +================================ + dominos.* CSS From 13e1f1663e6904f03fd48ff27e013df12cd665bb Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 16 Jan 2022 22:12:56 +0100 Subject: [PATCH 284/892] Fix for microsoft.com (#7973) - Resolves #7971 --- src/config/dynamic-theme-fixes.config | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9644173d375a..301edf5c8032 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9836,7 +9836,9 @@ INVERT CSS #announce picture + div h3, -#announce picture + div p { +#announce picture + div p, +.edgeconsumer.features .m-hero h1, +.edgeconsumer.features .m-hero p { color: var(--darkreader-neutral-background) !important; } From c314b839ac55e4560e66e1ada83bbdb91f845049 Mon Sep 17 00:00:00 2001 From: Andrea Zerbini Date: Sun, 16 Jan 2022 22:15:19 +0100 Subject: [PATCH 285/892] Added dark sites (#7972) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index a82bddf57aa6..2c96409b3d04 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -971,6 +971,7 @@ wallhaven.cc wallpaperplay.com wannabuy.biz warcraftdaily.com +warcraftlogs.com warezforums.com warsow.net wasm.continuation-labs.com/d3demo/ From 9aa03b8b1fa3f61f9c42b155d51359841707299e Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Mon, 17 Jan 2022 13:26:03 +0000 Subject: [PATCH 286/892] Update dev dependencies (#7978) Fixed vulnerability warnings (except 1 prototype pollution) --- package-lock.json | 1559 ++++++++++++++++++++++----------------------- package.json | 24 +- 2 files changed, 769 insertions(+), 814 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8e77ac3fec0b..f02e92e03efa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,26 +9,26 @@ "version": "4.9.43", "license": "MIT", "devDependencies": { - "@rollup/plugin-node-resolve": "13.1.2", + "@rollup/plugin-node-resolve": "13.1.3", "@rollup/plugin-replace": "3.0.1", "@rollup/plugin-typescript": "8.3.0", "@rollup/pluginutils": "4.1.2", - "@types/chrome": "0.0.174", + "@types/chrome": "0.0.176", "@types/jasmine": "3.10.3", "@types/jest": "27.4.0", - "@types/karma": "6.3.1", - "@types/node": "17.0.7", + "@types/karma": "6.3.2", + "@types/node": "17.0.9", "@types/offscreencanvas": "2019.6.4", - "@typescript-eslint/eslint-plugin": "5.9.0", - "@typescript-eslint/parser": "5.9.0", + "@typescript-eslint/eslint-plugin": "5.9.1", + "@typescript-eslint/parser": "5.9.1", "chokidar": "3.5.2", - "eslint": "8.6.0", + "eslint": "8.7.0", "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", "globby": "11.0.4", "jasmine-core": "4.0.0", - "jest": "27.4.5", - "karma": "6.3.9", + "jest": "27.4.7", + "karma": "6.3.11", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.1.0", "karma-firefox-launcher": "2.1.2", @@ -39,13 +39,13 @@ "malevic": "0.18.6", "prettier": "2.5.1", "puppeteer-core": "13.0.1", - "rollup": "2.62.0", + "rollup": "2.64.0", "rollup-plugin-istanbul2": "2.0.2", - "ts-jest": "27.1.2", + "ts-jest": "27.1.3", "tslib": "2.3.1", "typescript": "4.5.4", "web-ext": "6.6.0", - "ws": "8.4.0", + "ws": "8.4.2", "yazl": "2.5.1" }, "funding": { @@ -782,15 +782,15 @@ } }, "node_modules/@jest/console": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.4.2.tgz", - "integrity": "sha512-xknHThRsPB/To1FUbi6pCe43y58qFC03zfb6R7fDb/FfC7k2R3i1l+izRBJf8DI46KhYGRaF14Eo9A3qbBoixg==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.4.6.tgz", + "integrity": "sha512-jauXyacQD33n47A44KrlOVeiXHEXDqapSdfb9kTekOchH/Pd18kBIO1+xxJQRLuG+LUuljFCwTG92ra4NW7SpA==", "dev": true, "dependencies": { "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.4.2", + "jest-message-util": "^27.4.6", "jest-util": "^27.4.2", "slash": "^3.0.0" }, @@ -799,15 +799,15 @@ } }, "node_modules/@jest/core": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.4.5.tgz", - "integrity": "sha512-3tm/Pevmi8bDsgvo73nX8p/WPng6KWlCyScW10FPEoN1HU4pwI83tJ3TsFvi1FfzsjwUlMNEPowgb/rPau/LTQ==", + "version": "27.4.7", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.4.7.tgz", + "integrity": "sha512-n181PurSJkVMS+kClIFSX/LLvw9ExSb+4IMtD6YnfxZVerw9ANYtW0bPrm0MJu2pfe9SY9FJ9FtQ+MdZkrZwjg==", "dev": true, "dependencies": { - "@jest/console": "^27.4.2", - "@jest/reporters": "^27.4.5", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.5", + "@jest/console": "^27.4.6", + "@jest/reporters": "^27.4.6", + "@jest/test-result": "^27.4.6", + "@jest/transform": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", "ansi-escapes": "^4.2.1", @@ -816,18 +816,18 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.4", "jest-changed-files": "^27.4.2", - "jest-config": "^27.4.5", - "jest-haste-map": "^27.4.5", - "jest-message-util": "^27.4.2", + "jest-config": "^27.4.7", + "jest-haste-map": "^27.4.6", + "jest-message-util": "^27.4.6", "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.5", - "jest-resolve-dependencies": "^27.4.5", - "jest-runner": "^27.4.5", - "jest-runtime": "^27.4.5", - "jest-snapshot": "^27.4.5", + "jest-resolve": "^27.4.6", + "jest-resolve-dependencies": "^27.4.6", + "jest-runner": "^27.4.6", + "jest-runtime": "^27.4.6", + "jest-snapshot": "^27.4.6", "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", - "jest-watcher": "^27.4.2", + "jest-validate": "^27.4.6", + "jest-watcher": "^27.4.6", "micromatch": "^4.0.4", "rimraf": "^3.0.0", "slash": "^3.0.0", @@ -846,31 +846,31 @@ } }, "node_modules/@jest/environment": { - "version": "27.4.4", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.4.4.tgz", - "integrity": "sha512-q+niMx7cJgt/t/b6dzLOh4W8Ef/8VyKG7hxASK39jakijJzbFBGpptx3RXz13FFV7OishQ9lTbv+dQ5K3EhfDQ==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.4.6.tgz", + "integrity": "sha512-E6t+RXPfATEEGVidr84WngLNWZ8ffCPky8RqqRK6u1Bn0LK92INe0MDttyPl/JOzaq92BmDzOeuqk09TvM22Sg==", "dev": true, "dependencies": { - "@jest/fake-timers": "^27.4.2", + "@jest/fake-timers": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", - "jest-mock": "^27.4.2" + "jest-mock": "^27.4.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.2.tgz", - "integrity": "sha512-f/Xpzn5YQk5adtqBgvw1V6bF8Nx3hY0OIRRpCvWcfPl0EAjdqWPdhH3t/3XpiWZqtjIEHDyMKP9ajpva1l4Zmg==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.6.tgz", + "integrity": "sha512-mfaethuYF8scV8ntPpiVGIHQgS0XIALbpY2jt2l7wb/bvq4Q5pDLk4EP4D7SAvYT1QrPOPVZAtbdGAOOyIgs7A==", "dev": true, "dependencies": { "@jest/types": "^27.4.2", "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^27.4.2", - "jest-mock": "^27.4.2", + "jest-message-util": "^27.4.6", + "jest-mock": "^27.4.6", "jest-util": "^27.4.2" }, "engines": { @@ -878,29 +878,29 @@ } }, "node_modules/@jest/globals": { - "version": "27.4.4", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.4.4.tgz", - "integrity": "sha512-bqpqQhW30BOreXM8bA8t8JbOQzsq/WnPTnBl+It3UxAD9J8yxEAaBEylHx1dtBapAr/UBk8GidXbzmqnee8tYQ==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.4.6.tgz", + "integrity": "sha512-kAiwMGZ7UxrgPzu8Yv9uvWmXXxsy0GciNejlHvfPIfWkSxChzv6bgTS3YqBkGuHcis+ouMFI2696n2t+XYIeFw==", "dev": true, "dependencies": { - "@jest/environment": "^27.4.4", + "@jest/environment": "^27.4.6", "@jest/types": "^27.4.2", - "expect": "^27.4.2" + "expect": "^27.4.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/reporters": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.5.tgz", - "integrity": "sha512-3orsG4vi8zXuBqEoy2LbnC1kuvkg1KQUgqNxmxpQgIOQEPeV0onvZu+qDQnEoX8qTQErtqn/xzcnbpeTuOLSiA==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.6.tgz", + "integrity": "sha512-+Zo9gV81R14+PSq4wzee4GC2mhAN9i9a7qgJWL90Gpx7fHYkWpTBvwWNZUXvJByYR9tAVBdc8VxDWqfJyIUrIQ==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.4.2", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.5", + "@jest/console": "^27.4.6", + "@jest/test-result": "^27.4.6", + "@jest/transform": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", @@ -909,14 +909,14 @@ "glob": "^7.1.2", "graceful-fs": "^4.2.4", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.4.5", - "jest-resolve": "^27.4.5", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.4.6", + "jest-resolve": "^27.4.6", "jest-util": "^27.4.2", - "jest-worker": "^27.4.5", + "jest-worker": "^27.4.6", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -935,6 +935,31 @@ } } }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@jest/source-map": { "version": "27.4.0", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.4.0.tgz", @@ -950,12 +975,12 @@ } }, "node_modules/@jest/test-result": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.2.tgz", - "integrity": "sha512-kr+bCrra9jfTgxHXHa2UwoQjxvQk3Am6QbpAiJ5x/50LW8llOYrxILkqY0lZRW/hu8FXesnudbql263+EW9iNA==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.6.tgz", + "integrity": "sha512-fi9IGj3fkOrlMmhQqa/t9xum8jaJOOAi/lZlm6JXSc55rJMXKHxNDN1oCP39B0/DhNOa2OMupF9BcKZnNtXMOQ==", "dev": true, "dependencies": { - "@jest/console": "^27.4.2", + "@jest/console": "^27.4.6", "@jest/types": "^27.4.2", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" @@ -965,38 +990,38 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.5.tgz", - "integrity": "sha512-n5woIn/1v+FT+9hniymHPARA9upYUmfi5Pw9ewVwXCDlK4F5/Gkees9v8vdjGdAIJ2MPHLHodiajLpZZanWzEQ==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.6.tgz", + "integrity": "sha512-3GL+nsf6E1PsyNsJuvPyIz+DwFuCtBdtvPpm/LMXVkBJbdFvQYCDpccYT56qq5BGniXWlE81n2qk1sdXfZebnw==", "dev": true, "dependencies": { - "@jest/test-result": "^27.4.2", + "@jest/test-result": "^27.4.6", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.5", - "jest-runtime": "^27.4.5" + "jest-haste-map": "^27.4.6", + "jest-runtime": "^27.4.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/transform": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.4.5.tgz", - "integrity": "sha512-PuMet2UlZtlGzwc6L+aZmR3I7CEBpqadO03pU40l2RNY2fFJ191b9/ITB44LNOhVtsyykx0OZvj0PCyuLm7Eew==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.4.6.tgz", + "integrity": "sha512-9MsufmJC8t5JTpWEQJ0OcOOAXaH5ioaIX6uHVBLBMoCZPfKKQF+EqP8kACAvCZ0Y1h2Zr3uOccg8re+Dr5jxyw==", "dev": true, "dependencies": { "@babel/core": "^7.1.0", "@jest/types": "^27.4.2", - "babel-plugin-istanbul": "^6.0.0", + "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.5", + "jest-haste-map": "^27.4.6", "jest-regex-util": "^27.4.0", "jest-util": "^27.4.2", "micromatch": "^4.0.4", - "pirates": "^4.0.1", + "pirates": "^4.0.4", "slash": "^3.0.0", "source-map": "^0.6.1", "write-file-atomic": "^3.0.0" @@ -1063,9 +1088,9 @@ } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.2.tgz", - "integrity": "sha512-xyqbuf1vyOPC60jEKhx3DBHunymnCJswzjNTKfX4Jz7zCPar1UqbRZCNY1u5QaXh97beaFTWdoUUWiV4qX8o/g==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.3.tgz", + "integrity": "sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -1223,6 +1248,15 @@ "@sinonjs/commons": "^1.7.0" } }, + "node_modules/@socket.io/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", @@ -1286,9 +1320,9 @@ } }, "node_modules/@types/chrome": { - "version": "0.0.174", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.174.tgz", - "integrity": "sha512-x5kjvNdwDtOnT+vbnksj69pDl0u9P/WH9LbQWJawLqGgkBRO3AN/xzTxTPgLpp3IqCbuwfp7bRCHqkkaZguzWw==", + "version": "0.0.176", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.176.tgz", + "integrity": "sha512-LOveFOMIUhMJjvRzZv5whGBpncP/gdJ4hcxeAqg94wGi6CyKaCmLgFSofgItf85GuLTl/0BQ6J/Y1e8BqZWfEg==", "dev": true, "dependencies": { "@types/filesystem": "*", @@ -1434,14 +1468,13 @@ "dev": true }, "node_modules/@types/karma": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@types/karma/-/karma-6.3.1.tgz", - "integrity": "sha512-t7hSJ8oWrgzrJV0nBqqMrDnQFft/W3WCPOfSi2aOq7rUPARLC8XpZfbsQ+mfYaNk18v1XqkBU12uirp1ISJVAA==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/@types/karma/-/karma-6.3.2.tgz", + "integrity": "sha512-ZQfjGEfEV57I3o6Y5iK1+6aoQDguxmCBeQ0H8r9dasRTFn2Ohqgvx44FSPdY+R+/VUVtr8lvAYaRFzdNrQFvww==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", - "log4js": "^6.2.1" + "log4js": "^6.3.0" } }, "node_modules/@types/minimatch": { @@ -1451,9 +1484,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.7.tgz", - "integrity": "sha512-1QUk+WAUD4t8iR+Oj+UgI8oJa6yyxaB8a8pHaC8uqM6RrS1qbL7bf3Pwl5rHv0psm2CuDErgho6v5N+G+5fwtQ==", + "version": "17.0.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.9.tgz", + "integrity": "sha512-5dNBXu/FOER+EXnyah7rn8xlNrfMOQb/qXnw4NQgLkCygKBKhdmF/CA5oXVOKZLBEahw8s2WP9LxIcN/oDDRgQ==", "dev": true }, "node_modules/@types/offscreencanvas": { @@ -1463,9 +1496,9 @@ "dev": true }, "node_modules/@types/prettier": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz", - "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.3.tgz", + "integrity": "sha512-QzSuZMBuG5u8HqYz01qtMdg/Jfctlnvj1z/lYnIDXs/golxw0fxtRAHd9KrzjR7Yxz1qVeI00o0kiO3PmVdJ9w==", "dev": true }, "node_modules/@types/resolve": { @@ -1508,14 +1541,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.0.tgz", - "integrity": "sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.1.tgz", + "integrity": "sha512-Xv9tkFlyD4MQGpJgTo6wqDqGvHIRmRgah/2Sjz1PUnJTawjHWIwBivUE9x0QtU2WVii9baYgavo/bHjrZJkqTw==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "5.9.0", - "@typescript-eslint/scope-manager": "5.9.0", - "@typescript-eslint/type-utils": "5.9.0", + "@typescript-eslint/experimental-utils": "5.9.1", + "@typescript-eslint/scope-manager": "5.9.1", + "@typescript-eslint/type-utils": "5.9.1", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -1550,15 +1583,15 @@ } }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz", - "integrity": "sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.1.tgz", + "integrity": "sha512-cb1Njyss0mLL9kLXgS/eEY53SZQ9sT519wpX3i+U457l2UXRDuo87hgKfgRazmu9/tQb0x2sr3Y0yrU+Zz0y+w==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.9.0", - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/typescript-estree": "5.9.0", + "@typescript-eslint/scope-manager": "5.9.1", + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/typescript-estree": "5.9.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -1574,14 +1607,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.0.tgz", - "integrity": "sha512-/6pOPz8yAxEt4PLzgbFRDpZmHnXCeZgPDrh/1DaVKOjvn/UPMlWhbx/gA96xRi2JxY1kBl2AmwVbyROUqys5xQ==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.1.tgz", + "integrity": "sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.9.0", - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/typescript-estree": "5.9.0", + "@typescript-eslint/scope-manager": "5.9.1", + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/typescript-estree": "5.9.1", "debug": "^4.3.2" }, "engines": { @@ -1601,13 +1634,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz", - "integrity": "sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz", + "integrity": "sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/visitor-keys": "5.9.0" + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/visitor-keys": "5.9.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1618,12 +1651,12 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.0.tgz", - "integrity": "sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.1.tgz", + "integrity": "sha512-tRSpdBnPRssjlUh35rE9ug5HrUvaB9ntREy7gPXXKwmIx61TNN7+l5YKgi1hMKxo5NvqZCfYhA5FvyuJG6X6vg==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "5.9.0", + "@typescript-eslint/experimental-utils": "5.9.1", "debug": "^4.3.2", "tsutils": "^3.21.0" }, @@ -1643,27 +1676,10 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@typescript-eslint/types": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.0.tgz", - "integrity": "sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.1.tgz", + "integrity": "sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1674,13 +1690,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz", - "integrity": "sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.1.tgz", + "integrity": "sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/visitor-keys": "5.9.0", + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/visitor-keys": "5.9.1", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -1700,30 +1716,13 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz", - "integrity": "sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.1.tgz", + "integrity": "sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.9.0", + "@typescript-eslint/types": "5.9.1", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -2368,15 +2367,15 @@ "dev": true }, "node_modules/babel-jest": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.5.tgz", - "integrity": "sha512-3uuUTjXbgtODmSv/DXO9nZfD52IyC2OYTFaXGRzL0kpykzroaquCrD5+lZNafTvZlnNqZHt5pb0M08qVBZnsnA==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.6.tgz", + "integrity": "sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg==", "dev": true, "dependencies": { - "@jest/transform": "^27.4.5", + "@jest/transform": "^27.4.6", "@jest/types": "^27.4.2", "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", + "babel-plugin-istanbul": "^6.1.1", "babel-preset-jest": "^27.4.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", @@ -2490,15 +2489,6 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "node_modules/base64-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.1.tgz", - "integrity": "sha512-vFIUq7FdLtjZMhATwDul5RZWv2jpXQ09Pd6jcVEOvIsqCWTRFD/ONHNfyOS8dA/Ippi5dsIgpyKWKZaAKZltbA==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -4254,9 +4244,9 @@ } }, "node_modules/engine.io": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.0.0.tgz", - "integrity": "sha512-Ui7yl3JajEIaACg8MOUwWvuuwU7jepZqX3BKs1ho7NQRuP4LhN4XIykXhp8bEy+x/DhA0LBZZXYSCkZDqrwMMg==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.1.tgz", + "integrity": "sha512-AyMc20q8JUUdvKd46+thc9o7yCZ6iC6MoBCChG5Z1XmFMpp+2+y/oKvwpZTUJB0KCjxScw1dV9c2h5pjiYBLuQ==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -4275,12 +4265,12 @@ } }, "node_modules/engine.io-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.1.tgz", - "integrity": "sha512-j4p3WwJrG2k92VISM0op7wiq60vO92MlF3CRGxhKHy9ywG1/Dkc72g0dXeDQ+//hrcDn8gqQzoEkdO9FN0d9AA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", + "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", "dev": true, "dependencies": { - "base64-arraybuffer": "~1.0.1" + "@socket.io/base64-arraybuffer": "~1.0.2" }, "engines": { "node": ">=10.0.0" @@ -4538,9 +4528,9 @@ } }, "node_modules/eslint": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz", - "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz", + "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.0.5", @@ -4550,11 +4540,10 @@ "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.0", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", + "eslint-visitor-keys": "^3.2.0", "espree": "^9.3.0", "esquery": "^1.4.0", "esutils": "^2.0.2", @@ -4563,7 +4552,7 @@ "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.6.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", @@ -4574,9 +4563,7 @@ "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", "regexpp": "^3.2.0", - "semver": "^7.2.1", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", @@ -4834,6 +4821,15 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", + "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/eslint/node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", @@ -4855,6 +4851,15 @@ "node": ">=10.13.0" } }, + "node_modules/eslint/node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/espree": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", @@ -5016,34 +5021,20 @@ } }, "node_modules/expect": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.4.2.tgz", - "integrity": "sha512-BjAXIDC6ZOW+WBFNg96J22D27Nq5ohn+oGcuP2rtOtcjuxNoV9McpQ60PcQWhdFOSBIQdR72e+4HdnbZTFSTyg==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.4.6.tgz", + "integrity": "sha512-1M/0kAALIaj5LaG66sFJTbRsWTADnylly82cu4bspI0nl+pgP4E6Bh/aqdHlTUjul06K7xQnnrAoqfxVU0+/ag==", "dev": true, "dependencies": { "@jest/types": "^27.4.2", - "ansi-styles": "^5.0.0", "jest-get-type": "^27.4.0", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-regex-util": "^27.4.0" + "jest-matcher-utils": "^27.4.6", + "jest-message-util": "^27.4.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -5465,9 +5456,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", - "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", "dev": true, "funding": [ { @@ -6224,9 +6215,9 @@ } }, "node_modules/import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { "pkg-dir": "^4.2.0", @@ -6237,6 +6228,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/imurmurhash": { @@ -6894,14 +6888,14 @@ "dev": true }, "node_modules/jest": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.5.tgz", - "integrity": "sha512-uT5MiVN3Jppt314kidCk47MYIRilJjA/l2mxwiuzzxGUeJIvA8/pDaJOAX5KWvjAo7SCydcW0/4WEtgbLMiJkg==", + "version": "27.4.7", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.7.tgz", + "integrity": "sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg==", "dev": true, "dependencies": { - "@jest/core": "^27.4.5", + "@jest/core": "^27.4.7", "import-local": "^3.0.2", - "jest-cli": "^27.4.5" + "jest-cli": "^27.4.7" }, "bin": { "jest": "bin/jest.js" @@ -6933,27 +6927,27 @@ } }, "node_modules/jest-circus": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.5.tgz", - "integrity": "sha512-eTNWa9wsvBwPykhMMShheafbwyakcdHZaEYh5iRrQ0PFJxkDP/e3U/FvzGuKWu2WpwUA3C3hPlfpuzvOdTVqnw==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.6.tgz", + "integrity": "sha512-UA7AI5HZrW4wRM72Ro80uRR2Fg+7nR0GESbSI/2M+ambbzVuA63mn5T1p3Z/wlhntzGpIG1xx78GP2YIkf6PhQ==", "dev": true, "dependencies": { - "@jest/environment": "^27.4.4", - "@jest/test-result": "^27.4.2", + "@jest/environment": "^27.4.6", + "@jest/test-result": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.4.2", + "expect": "^27.4.6", "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.2", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-runtime": "^27.4.5", - "jest-snapshot": "^27.4.5", + "jest-each": "^27.4.6", + "jest-matcher-utils": "^27.4.6", + "jest-message-util": "^27.4.6", + "jest-runtime": "^27.4.6", + "jest-snapshot": "^27.4.6", "jest-util": "^27.4.2", - "pretty-format": "^27.4.2", + "pretty-format": "^27.4.6", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" @@ -6963,21 +6957,21 @@ } }, "node_modules/jest-cli": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.5.tgz", - "integrity": "sha512-hrky3DSgE0u7sQxaCL7bdebEPHx5QzYmrGuUjaPLmPE8jx5adtvGuOlRspvMoVLTTDOHRnZDoRLYJuA+VCI7Hg==", + "version": "27.4.7", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.7.tgz", + "integrity": "sha512-zREYhvjjqe1KsGV15mdnxjThKNDgza1fhDT+iUsXWLCq3sxe9w5xnvyctcYVT5PcdLSjv7Y5dCwTS3FCF1tiuw==", "dev": true, "dependencies": { - "@jest/core": "^27.4.5", - "@jest/test-result": "^27.4.2", + "@jest/core": "^27.4.7", + "@jest/test-result": "^27.4.6", "@jest/types": "^27.4.2", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "jest-config": "^27.4.5", + "jest-config": "^27.4.7", "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", + "jest-validate": "^27.4.6", "prompts": "^2.0.1", "yargs": "^16.2.0" }, @@ -6997,32 +6991,32 @@ } }, "node_modules/jest-config": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.4.5.tgz", - "integrity": "sha512-t+STVJtPt+fpqQ8GBw850NtSQbnDOw/UzdPfzDaHQ48/AylQlW7LHj3dH+ndxhC1UxJ0Q3qkq7IH+nM1skwTwA==", + "version": "27.4.7", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.4.7.tgz", + "integrity": "sha512-xz/o/KJJEedHMrIY9v2ParIoYSrSVY6IVeE4z5Z3i101GoA5XgfbJz+1C8EYPsv7u7f39dS8F9v46BHDhn0vlw==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.4.5", + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.4.6", "@jest/types": "^27.4.2", - "babel-jest": "^27.4.5", + "babel-jest": "^27.4.6", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", - "jest-circus": "^27.4.5", - "jest-environment-jsdom": "^27.4.4", - "jest-environment-node": "^27.4.4", + "jest-circus": "^27.4.6", + "jest-environment-jsdom": "^27.4.6", + "jest-environment-node": "^27.4.6", "jest-get-type": "^27.4.0", - "jest-jasmine2": "^27.4.5", + "jest-jasmine2": "^27.4.6", "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.5", - "jest-runner": "^27.4.5", + "jest-resolve": "^27.4.6", + "jest-runner": "^27.4.6", "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", + "jest-validate": "^27.4.6", "micromatch": "^4.0.4", - "pretty-format": "^27.4.2", + "pretty-format": "^27.4.6", "slash": "^3.0.0" }, "engines": { @@ -7044,15 +7038,15 @@ "dev": true }, "node_modules/jest-diff": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.2.tgz", - "integrity": "sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.6.tgz", + "integrity": "sha512-zjaB0sh0Lb13VyPsd92V7HkqF6yKRH9vm33rwBt7rPYrpQvS1nCvlIy2pICbKta+ZjWngYLNn4cCK4nyZkjS/w==", "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^27.4.0", "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.2" + "pretty-format": "^27.4.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -7071,32 +7065,32 @@ } }, "node_modules/jest-each": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.4.2.tgz", - "integrity": "sha512-53V2MNyW28CTruB3lXaHNk6PkiIFuzdOC9gR3C6j8YE/ACfrPnz+slB0s17AgU1TtxNzLuHyvNlLJ+8QYw9nBg==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.4.6.tgz", + "integrity": "sha512-n6QDq8y2Hsmn22tRkgAk+z6MCX7MeVlAzxmZDshfS2jLcaBlyhpF3tZSJLR+kXmh23GEvS0ojMR8i6ZeRvpQcA==", "dev": true, "dependencies": { "@jest/types": "^27.4.2", "chalk": "^4.0.0", "jest-get-type": "^27.4.0", "jest-util": "^27.4.2", - "pretty-format": "^27.4.2" + "pretty-format": "^27.4.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-environment-jsdom": { - "version": "27.4.4", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.4.tgz", - "integrity": "sha512-cYR3ndNfHBqQgFvS1RL7dNqSvD//K56j/q1s2ygNHcfTCAp12zfIromO1w3COmXrxS8hWAh7+CmZmGCIoqGcGA==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.6.tgz", + "integrity": "sha512-o3dx5p/kHPbUlRvSNjypEcEtgs6LmvESMzgRFQE6c+Prwl2JLA4RZ7qAnxc5VM8kutsGRTB15jXeeSbJsKN9iA==", "dev": true, "dependencies": { - "@jest/environment": "^27.4.4", - "@jest/fake-timers": "^27.4.2", + "@jest/environment": "^27.4.6", + "@jest/fake-timers": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", - "jest-mock": "^27.4.2", + "jest-mock": "^27.4.6", "jest-util": "^27.4.2", "jsdom": "^16.6.0" }, @@ -7105,16 +7099,16 @@ } }, "node_modules/jest-environment-node": { - "version": "27.4.4", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.4.tgz", - "integrity": "sha512-D+v3lbJ2GjQTQR23TK0kY3vFVmSeea05giInI41HHOaJnAwOnmUHTZgUaZL+VxUB43pIzoa7PMwWtCVlIUoVoA==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.6.tgz", + "integrity": "sha512-yfHlZ9m+kzTKZV0hVfhVu6GuDxKAYeFHrfulmy7Jxwsq4V7+ZK7f+c0XP/tbVDMQW7E4neG2u147hFkuVz0MlQ==", "dev": true, "dependencies": { - "@jest/environment": "^27.4.4", - "@jest/fake-timers": "^27.4.2", + "@jest/environment": "^27.4.6", + "@jest/fake-timers": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", - "jest-mock": "^27.4.2", + "jest-mock": "^27.4.6", "jest-util": "^27.4.2" }, "engines": { @@ -7131,9 +7125,9 @@ } }, "node_modules/jest-haste-map": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.5.tgz", - "integrity": "sha512-oJm1b5qhhPs78K24EDGifWS0dELYxnoBiDhatT/FThgB9yxqUm5F6li3Pv+Q+apMBmmPNzOBnZ7ZxWMB1Leq1Q==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.6.tgz", + "integrity": "sha512-0tNpgxg7BKurZeFkIOvGCkbmOHbLFf4LUQOxrQSMjvrQaQe3l6E8x6jYC1NuWkGo5WDdbr8FEzUxV2+LWNawKQ==", "dev": true, "dependencies": { "@jest/types": "^27.4.2", @@ -7145,7 +7139,7 @@ "jest-regex-util": "^27.4.0", "jest-serializer": "^27.4.0", "jest-util": "^27.4.2", - "jest-worker": "^27.4.5", + "jest-worker": "^27.4.6", "micromatch": "^4.0.4", "walker": "^1.0.7" }, @@ -7157,28 +7151,27 @@ } }, "node_modules/jest-jasmine2": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.5.tgz", - "integrity": "sha512-oUnvwhJDj2LhOiUB1kdnJjkx8C5PwgUZQb9urF77mELH9DGR4e2GqpWQKBOYXWs5+uTN9BGDqRz3Aeg5Wts7aw==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.6.tgz", + "integrity": "sha512-uAGNXF644I/whzhsf7/qf74gqy9OuhvJ0XYp8SDecX2ooGeaPnmJMjXjKt0mqh1Rl5dtRGxJgNrHlBQIBfS5Nw==", "dev": true, "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.4.4", + "@jest/environment": "^27.4.6", "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.2", + "@jest/test-result": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.4.2", + "expect": "^27.4.6", "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.2", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-runtime": "^27.4.5", - "jest-snapshot": "^27.4.5", + "jest-each": "^27.4.6", + "jest-matcher-utils": "^27.4.6", + "jest-message-util": "^27.4.6", + "jest-runtime": "^27.4.6", + "jest-snapshot": "^27.4.6", "jest-util": "^27.4.2", - "pretty-format": "^27.4.2", + "pretty-format": "^27.4.6", "throat": "^6.0.1" }, "engines": { @@ -7186,37 +7179,37 @@ } }, "node_modules/jest-leak-detector": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.2.tgz", - "integrity": "sha512-ml0KvFYZllzPBJWDei3mDzUhyp/M4ubKebX++fPaudpe8OsxUE+m+P6ciVLboQsrzOCWDjE20/eXew9QMx/VGw==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.6.tgz", + "integrity": "sha512-kkaGixDf9R7CjHm2pOzfTxZTQQQ2gHTIWKY/JZSiYTc90bZp8kSZnUMS3uLAfwTZwc0tcMRoEX74e14LG1WapA==", "dev": true, "dependencies": { "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.2" + "pretty-format": "^27.4.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.2.tgz", - "integrity": "sha512-jyP28er3RRtMv+fmYC/PKG8wvAmfGcSNproVTW2Y0P/OY7/hWUOmsPfxN1jOhM+0u2xU984u2yEagGivz9OBGQ==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.6.tgz", + "integrity": "sha512-XD4PKT3Wn1LQnRAq7ZsTI0VRuEc9OrCPFiO1XL7bftTGmfNF0DcEwMHRgqiu7NGf8ZoZDREpGrCniDkjt79WbA==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.4.2", + "jest-diff": "^27.4.6", "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.2" + "pretty-format": "^27.4.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-message-util": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.2.tgz", - "integrity": "sha512-OMRqRNd9E0DkBLZpFtZkAGYOXl6ZpoMtQJWTAREJKDOFa0M6ptB7L67tp+cszMBkvSgKOhNtQp2Vbcz3ZZKo/w==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.6.tgz", + "integrity": "sha512-0p5szriFU0U74czRSFjH6RyS7UYIAkn/ntwMuOwTGWrQIOh5NzXXrq72LOqIkJKKvFbPq+byZKuBz78fjBERBA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", @@ -7225,7 +7218,7 @@ "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.4", - "pretty-format": "^27.4.2", + "pretty-format": "^27.4.6", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -7234,9 +7227,9 @@ } }, "node_modules/jest-mock": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.2.tgz", - "integrity": "sha512-PDDPuyhoukk20JrQKeofK12hqtSka7mWH0QQuxSNgrdiPsrnYYLS6wbzu/HDlxZRzji5ylLRULeuI/vmZZDrYA==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.6.tgz", + "integrity": "sha512-kvojdYRkst8iVSZ1EJ+vc1RRD9llueBjKzXzeCytH3dMM7zvPV/ULcfI2nr0v0VUgm3Bjt3hBCQvOeaBz+ZTHw==", "dev": true, "dependencies": { "@jest/types": "^27.4.2", @@ -7273,18 +7266,18 @@ } }, "node_modules/jest-resolve": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.5.tgz", - "integrity": "sha512-xU3z1BuOz/hUhVUL+918KqUgK+skqOuUsAi7A+iwoUldK6/+PW+utK8l8cxIWT9AW7IAhGNXjSAh1UYmjULZZw==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.6.tgz", + "integrity": "sha512-SFfITVApqtirbITKFAO7jOVN45UgFzcRdQanOFzjnbd+CACDoyeX7206JyU92l4cRr73+Qy/TlW51+4vHGt+zw==", "dev": true, "dependencies": { "@jest/types": "^27.4.2", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.5", + "jest-haste-map": "^27.4.6", "jest-pnp-resolver": "^1.2.2", "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", + "jest-validate": "^27.4.6", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" @@ -7294,29 +7287,29 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.5.tgz", - "integrity": "sha512-elEVvkvRK51y037NshtEkEnukMBWvlPzZHiL847OrIljJ8yIsujD2GXRPqDXC4rEVKbcdsy7W0FxoZb4WmEs7w==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.6.tgz", + "integrity": "sha512-W85uJZcFXEVZ7+MZqIPCscdjuctruNGXUZ3OHSXOfXR9ITgbUKeHj+uGcies+0SsvI5GtUfTw4dY7u9qjTvQOw==", "dev": true, "dependencies": { "@jest/types": "^27.4.2", "jest-regex-util": "^27.4.0", - "jest-snapshot": "^27.4.5" + "jest-snapshot": "^27.4.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-runner": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.5.tgz", - "integrity": "sha512-/irauncTfmY1WkTaRQGRWcyQLzK1g98GYG/8QvIPviHgO1Fqz1JYeEIsSfF+9mc/UTA6S+IIHFgKyvUrtiBIZg==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.6.tgz", + "integrity": "sha512-IDeFt2SG4DzqalYBZRgbbPmpwV3X0DcntjezPBERvnhwKGWTW7C5pbbA5lVkmvgteeNfdd/23gwqv3aiilpYPg==", "dev": true, "dependencies": { - "@jest/console": "^27.4.2", - "@jest/environment": "^27.4.4", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.5", + "@jest/console": "^27.4.6", + "@jest/environment": "^27.4.6", + "@jest/test-result": "^27.4.6", + "@jest/transform": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", @@ -7324,15 +7317,15 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.4", "jest-docblock": "^27.4.0", - "jest-environment-jsdom": "^27.4.4", - "jest-environment-node": "^27.4.4", - "jest-haste-map": "^27.4.5", - "jest-leak-detector": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-resolve": "^27.4.5", - "jest-runtime": "^27.4.5", + "jest-environment-jsdom": "^27.4.6", + "jest-environment-node": "^27.4.6", + "jest-haste-map": "^27.4.6", + "jest-leak-detector": "^27.4.6", + "jest-message-util": "^27.4.6", + "jest-resolve": "^27.4.6", + "jest-runtime": "^27.4.6", "jest-util": "^27.4.2", - "jest-worker": "^27.4.5", + "jest-worker": "^27.4.6", "source-map-support": "^0.5.6", "throat": "^6.0.1" }, @@ -7341,37 +7334,33 @@ } }, "node_modules/jest-runtime": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.5.tgz", - "integrity": "sha512-CIYqwuJQXHQtPd/idgrx4zgJ6iCb6uBjQq1RSAGQrw2S8XifDmoM1Ot8NRd80ooAm+ZNdHVwsktIMGlA1F1FAQ==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.6.tgz", + "integrity": "sha512-eXYeoR/MbIpVDrjqy5d6cGCFOYBFFDeKaNWqTp0h6E74dK0zLHzASQXJpl5a2/40euBmKnprNLJ0Kh0LCndnWQ==", "dev": true, "dependencies": { - "@jest/console": "^27.4.2", - "@jest/environment": "^27.4.4", - "@jest/globals": "^27.4.4", + "@jest/environment": "^27.4.6", + "@jest/fake-timers": "^27.4.6", + "@jest/globals": "^27.4.6", "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.5", + "@jest/test-result": "^27.4.6", + "@jest/transform": "^27.4.6", "@jest/types": "^27.4.2", - "@types/yargs": "^16.0.0", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "execa": "^5.0.0", - "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.5", - "jest-message-util": "^27.4.2", - "jest-mock": "^27.4.2", + "jest-haste-map": "^27.4.6", + "jest-message-util": "^27.4.6", + "jest-mock": "^27.4.6", "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.5", - "jest-snapshot": "^27.4.5", + "jest-resolve": "^27.4.6", + "jest-snapshot": "^27.4.6", "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^16.2.0" + "strip-bom": "^4.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -7391,34 +7380,32 @@ } }, "node_modules/jest-snapshot": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.5.tgz", - "integrity": "sha512-eCi/iM1YJFrJWiT9de4+RpWWWBqsHiYxFG9V9o/n0WXs6GpW4lUt4FAHAgFPTLPqCUVzrMQmSmTZSgQzwqR7IQ==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.6.tgz", + "integrity": "sha512-fafUCDLQfzuNP9IRcEqaFAMzEe7u5BF7mude51wyWv7VRex60WznZIC7DfKTgSIlJa8aFzYmXclmN328aqSDmQ==", "dev": true, "dependencies": { "@babel/core": "^7.7.2", "@babel/generator": "^7.7.2", - "@babel/parser": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.4.5", + "@jest/transform": "^27.4.6", "@jest/types": "^27.4.2", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.4.2", + "expect": "^27.4.6", "graceful-fs": "^4.2.4", - "jest-diff": "^27.4.2", + "jest-diff": "^27.4.6", "jest-get-type": "^27.4.0", - "jest-haste-map": "^27.4.5", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-resolve": "^27.4.5", + "jest-haste-map": "^27.4.6", + "jest-matcher-utils": "^27.4.6", + "jest-message-util": "^27.4.6", "jest-util": "^27.4.2", "natural-compare": "^1.4.0", - "pretty-format": "^27.4.2", + "pretty-format": "^27.4.6", "semver": "^7.3.2" }, "engines": { @@ -7449,9 +7436,9 @@ "dev": true }, "node_modules/jest-validate": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.2.tgz", - "integrity": "sha512-hWYsSUej+Fs8ZhOm5vhWzwSLmVaPAxRy+Mr+z5MzeaHm9AxUpXdoVMEW4R86y5gOobVfBsMFLk4Rb+QkiEpx1A==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.6.tgz", + "integrity": "sha512-872mEmCPVlBqbA5dToC57vA3yJaMRfIdpCoD3cyHWJOMx+SJwLNw0I71EkWs41oza/Er9Zno9XuTkRYCPDUJXQ==", "dev": true, "dependencies": { "@jest/types": "^27.4.2", @@ -7459,7 +7446,7 @@ "chalk": "^4.0.0", "jest-get-type": "^27.4.0", "leven": "^3.1.0", - "pretty-format": "^27.4.2" + "pretty-format": "^27.4.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -7478,12 +7465,12 @@ } }, "node_modules/jest-watcher": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.2.tgz", - "integrity": "sha512-NJvMVyyBeXfDezhWzUOCOYZrUmkSCiatpjpm+nFUid74OZEHk6aMLrZAukIiFDwdbqp6mTM6Ui1w4oc+8EobQg==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.6.tgz", + "integrity": "sha512-yKQ20OMBiCDigbD0quhQKLkBO+ObGN79MO4nT7YaCuQ5SM+dkBNWE8cZX0FjU6czwMvWw6StWbe+Wv4jJPJ+fw==", "dev": true, "dependencies": { - "@jest/test-result": "^27.4.2", + "@jest/test-result": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", "ansi-escapes": "^4.2.1", @@ -7496,9 +7483,9 @@ } }, "node_modules/jest-worker": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.5.tgz", - "integrity": "sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", + "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", "dev": true, "dependencies": { "@types/node": "*", @@ -7803,15 +7790,15 @@ } }, "node_modules/karma": { - "version": "6.3.9", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.9.tgz", - "integrity": "sha512-E/MqdLM9uVIhfuyVnrhlGBu4miafBdXEAEqCmwdEMh3n17C7UWC/8Kvm3AYKr91gc7scutekZ0xv6rxRaUCtnw==", + "version": "6.3.11", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.11.tgz", + "integrity": "sha512-QGUh4yXgizzDNPLB5nWTvP+wysKexngbyLVWFOyikB661hpa2RZLf5anZQzqliWtAQuYVep0ot0D1U7UQKpsxQ==", "dev": true, "dependencies": { "body-parser": "^1.19.0", "braces": "^3.0.2", "chokidar": "^3.5.1", - "colors": "^1.4.0", + "colors": "1.4.0", "connect": "^3.7.0", "di": "^0.0.1", "dom-serialize": "^2.2.1", @@ -8676,15 +8663,6 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, - "node_modules/node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/node-releases": { "version": "1.1.72", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", @@ -9403,13 +9381,10 @@ "dev": true }, "node_modules/pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz", + "integrity": "sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==", "dev": true, - "dependencies": { - "node-modules-regexp": "^1.0.0" - }, "engines": { "node": ">= 6" } @@ -9475,12 +9450,11 @@ } }, "node_modules/pretty-format": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.2.tgz", - "integrity": "sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.6.tgz", + "integrity": "sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" @@ -10131,9 +10105,9 @@ } }, "node_modules/rollup": { - "version": "2.62.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.62.0.tgz", - "integrity": "sha512-cJEQq2gwB0GWMD3rYImefQTSjrPYaC6s4J9pYqnstVLJ1CHa/aZNVkD4Epuvg4iLeMA4KRiq7UM7awKK6j7jcw==", + "version": "2.64.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.64.0.tgz", + "integrity": "sha512-+c+lbw1lexBKSMb1yxGDVfJ+vchJH3qLbmavR+awDinTDA2C5Ug9u7lkOzj62SCu0PKUExsW36tpgW7Fmpn3yQ==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -10531,16 +10505,16 @@ } }, "node_modules/socket.io": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.3.1.tgz", - "integrity": "sha512-HC5w5Olv2XZ0XJ4gOLGzzHEuOCfj3G0SmoW3jLHYYh34EVsIr3EkW9h6kgfW+K3TFEcmYy8JcPWe//KUkBp5jA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", + "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", "dev": true, "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.0.0", - "socket.io-adapter": "~2.3.2", + "engine.io": "~6.1.0", + "socket.io-adapter": "~2.3.3", "socket.io-parser": "~4.0.4" }, "engines": { @@ -10548,9 +10522,9 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.2.tgz", - "integrity": "sha512-PBZpxUPYjmoogY0aoaTmo1643JelsaS1CiAwNjRVdrI0X9Seuc19Y2Wife8k88avW6haG8cznvwbubAZwH4Mtg==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", + "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==", "dev": true }, "node_modules/socket.io-parser": { @@ -11288,9 +11262,9 @@ } }, "node_modules/ts-jest": { - "version": "27.1.2", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.2.tgz", - "integrity": "sha512-eSOiJOWq6Hhs6Khzk5wKC5sgWIXgXqOCiIl1+3lfnearu58Hj4QpE5tUhQcA3xtZrELbcvAGCsd6HB8OsaVaTA==", + "version": "27.1.3", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", + "integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -11657,9 +11631,9 @@ "dev": true }, "node_modules/v8-to-istanbul": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", - "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.1", @@ -12014,9 +11988,9 @@ } }, "node_modules/ws": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", + "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", "dev": true, "engines": { "node": ">=10.0.0" @@ -12770,29 +12744,29 @@ "dev": true }, "@jest/console": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.4.2.tgz", - "integrity": "sha512-xknHThRsPB/To1FUbi6pCe43y58qFC03zfb6R7fDb/FfC7k2R3i1l+izRBJf8DI46KhYGRaF14Eo9A3qbBoixg==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.4.6.tgz", + "integrity": "sha512-jauXyacQD33n47A44KrlOVeiXHEXDqapSdfb9kTekOchH/Pd18kBIO1+xxJQRLuG+LUuljFCwTG92ra4NW7SpA==", "dev": true, "requires": { "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.4.2", + "jest-message-util": "^27.4.6", "jest-util": "^27.4.2", "slash": "^3.0.0" } }, "@jest/core": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.4.5.tgz", - "integrity": "sha512-3tm/Pevmi8bDsgvo73nX8p/WPng6KWlCyScW10FPEoN1HU4pwI83tJ3TsFvi1FfzsjwUlMNEPowgb/rPau/LTQ==", + "version": "27.4.7", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.4.7.tgz", + "integrity": "sha512-n181PurSJkVMS+kClIFSX/LLvw9ExSb+4IMtD6YnfxZVerw9ANYtW0bPrm0MJu2pfe9SY9FJ9FtQ+MdZkrZwjg==", "dev": true, "requires": { - "@jest/console": "^27.4.2", - "@jest/reporters": "^27.4.5", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.5", + "@jest/console": "^27.4.6", + "@jest/reporters": "^27.4.6", + "@jest/test-result": "^27.4.6", + "@jest/transform": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", "ansi-escapes": "^4.2.1", @@ -12801,18 +12775,18 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.4", "jest-changed-files": "^27.4.2", - "jest-config": "^27.4.5", - "jest-haste-map": "^27.4.5", - "jest-message-util": "^27.4.2", + "jest-config": "^27.4.7", + "jest-haste-map": "^27.4.6", + "jest-message-util": "^27.4.6", "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.5", - "jest-resolve-dependencies": "^27.4.5", - "jest-runner": "^27.4.5", - "jest-runtime": "^27.4.5", - "jest-snapshot": "^27.4.5", + "jest-resolve": "^27.4.6", + "jest-resolve-dependencies": "^27.4.6", + "jest-runner": "^27.4.6", + "jest-runtime": "^27.4.6", + "jest-snapshot": "^27.4.6", "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", - "jest-watcher": "^27.4.2", + "jest-validate": "^27.4.6", + "jest-watcher": "^27.4.6", "micromatch": "^4.0.4", "rimraf": "^3.0.0", "slash": "^3.0.0", @@ -12820,52 +12794,52 @@ } }, "@jest/environment": { - "version": "27.4.4", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.4.4.tgz", - "integrity": "sha512-q+niMx7cJgt/t/b6dzLOh4W8Ef/8VyKG7hxASK39jakijJzbFBGpptx3RXz13FFV7OishQ9lTbv+dQ5K3EhfDQ==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.4.6.tgz", + "integrity": "sha512-E6t+RXPfATEEGVidr84WngLNWZ8ffCPky8RqqRK6u1Bn0LK92INe0MDttyPl/JOzaq92BmDzOeuqk09TvM22Sg==", "dev": true, "requires": { - "@jest/fake-timers": "^27.4.2", + "@jest/fake-timers": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", - "jest-mock": "^27.4.2" + "jest-mock": "^27.4.6" } }, "@jest/fake-timers": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.2.tgz", - "integrity": "sha512-f/Xpzn5YQk5adtqBgvw1V6bF8Nx3hY0OIRRpCvWcfPl0EAjdqWPdhH3t/3XpiWZqtjIEHDyMKP9ajpva1l4Zmg==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.6.tgz", + "integrity": "sha512-mfaethuYF8scV8ntPpiVGIHQgS0XIALbpY2jt2l7wb/bvq4Q5pDLk4EP4D7SAvYT1QrPOPVZAtbdGAOOyIgs7A==", "dev": true, "requires": { "@jest/types": "^27.4.2", "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^27.4.2", - "jest-mock": "^27.4.2", + "jest-message-util": "^27.4.6", + "jest-mock": "^27.4.6", "jest-util": "^27.4.2" } }, "@jest/globals": { - "version": "27.4.4", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.4.4.tgz", - "integrity": "sha512-bqpqQhW30BOreXM8bA8t8JbOQzsq/WnPTnBl+It3UxAD9J8yxEAaBEylHx1dtBapAr/UBk8GidXbzmqnee8tYQ==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.4.6.tgz", + "integrity": "sha512-kAiwMGZ7UxrgPzu8Yv9uvWmXXxsy0GciNejlHvfPIfWkSxChzv6bgTS3YqBkGuHcis+ouMFI2696n2t+XYIeFw==", "dev": true, "requires": { - "@jest/environment": "^27.4.4", + "@jest/environment": "^27.4.6", "@jest/types": "^27.4.2", - "expect": "^27.4.2" + "expect": "^27.4.6" } }, "@jest/reporters": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.5.tgz", - "integrity": "sha512-3orsG4vi8zXuBqEoy2LbnC1kuvkg1KQUgqNxmxpQgIOQEPeV0onvZu+qDQnEoX8qTQErtqn/xzcnbpeTuOLSiA==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.6.tgz", + "integrity": "sha512-+Zo9gV81R14+PSq4wzee4GC2mhAN9i9a7qgJWL90Gpx7fHYkWpTBvwWNZUXvJByYR9tAVBdc8VxDWqfJyIUrIQ==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.4.2", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.5", + "@jest/console": "^27.4.6", + "@jest/test-result": "^27.4.6", + "@jest/transform": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", @@ -12874,19 +12848,40 @@ "glob": "^7.1.2", "graceful-fs": "^4.2.4", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.4.5", - "jest-resolve": "^27.4.5", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.4.6", + "jest-resolve": "^27.4.6", "jest-util": "^27.4.2", - "jest-worker": "^27.4.5", + "jest-worker": "^27.4.6", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", "terminal-link": "^2.0.0", "v8-to-istanbul": "^8.1.0" + }, + "dependencies": { + "istanbul-lib-instrument": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "@jest/source-map": { @@ -12901,47 +12896,47 @@ } }, "@jest/test-result": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.2.tgz", - "integrity": "sha512-kr+bCrra9jfTgxHXHa2UwoQjxvQk3Am6QbpAiJ5x/50LW8llOYrxILkqY0lZRW/hu8FXesnudbql263+EW9iNA==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.6.tgz", + "integrity": "sha512-fi9IGj3fkOrlMmhQqa/t9xum8jaJOOAi/lZlm6JXSc55rJMXKHxNDN1oCP39B0/DhNOa2OMupF9BcKZnNtXMOQ==", "dev": true, "requires": { - "@jest/console": "^27.4.2", + "@jest/console": "^27.4.6", "@jest/types": "^27.4.2", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.5.tgz", - "integrity": "sha512-n5woIn/1v+FT+9hniymHPARA9upYUmfi5Pw9ewVwXCDlK4F5/Gkees9v8vdjGdAIJ2MPHLHodiajLpZZanWzEQ==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.6.tgz", + "integrity": "sha512-3GL+nsf6E1PsyNsJuvPyIz+DwFuCtBdtvPpm/LMXVkBJbdFvQYCDpccYT56qq5BGniXWlE81n2qk1sdXfZebnw==", "dev": true, "requires": { - "@jest/test-result": "^27.4.2", + "@jest/test-result": "^27.4.6", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.5", - "jest-runtime": "^27.4.5" + "jest-haste-map": "^27.4.6", + "jest-runtime": "^27.4.6" } }, "@jest/transform": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.4.5.tgz", - "integrity": "sha512-PuMet2UlZtlGzwc6L+aZmR3I7CEBpqadO03pU40l2RNY2fFJ191b9/ITB44LNOhVtsyykx0OZvj0PCyuLm7Eew==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.4.6.tgz", + "integrity": "sha512-9MsufmJC8t5JTpWEQJ0OcOOAXaH5ioaIX6uHVBLBMoCZPfKKQF+EqP8kACAvCZ0Y1h2Zr3uOccg8re+Dr5jxyw==", "dev": true, "requires": { "@babel/core": "^7.1.0", "@jest/types": "^27.4.2", - "babel-plugin-istanbul": "^6.0.0", + "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.5", + "jest-haste-map": "^27.4.6", "jest-regex-util": "^27.4.0", "jest-util": "^27.4.2", "micromatch": "^4.0.4", - "pirates": "^4.0.1", + "pirates": "^4.0.4", "slash": "^3.0.0", "source-map": "^0.6.1", "write-file-atomic": "^3.0.0" @@ -12993,9 +12988,9 @@ } }, "@rollup/plugin-node-resolve": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.2.tgz", - "integrity": "sha512-xyqbuf1vyOPC60jEKhx3DBHunymnCJswzjNTKfX4Jz7zCPar1UqbRZCNY1u5QaXh97beaFTWdoUUWiV4qX8o/g==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.3.tgz", + "integrity": "sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -13118,6 +13113,12 @@ "@sinonjs/commons": "^1.7.0" } }, + "@socket.io/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", + "dev": true + }, "@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", @@ -13175,9 +13176,9 @@ } }, "@types/chrome": { - "version": "0.0.174", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.174.tgz", - "integrity": "sha512-x5kjvNdwDtOnT+vbnksj69pDl0u9P/WH9LbQWJawLqGgkBRO3AN/xzTxTPgLpp3IqCbuwfp7bRCHqkkaZguzWw==", + "version": "0.0.176", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.176.tgz", + "integrity": "sha512-LOveFOMIUhMJjvRzZv5whGBpncP/gdJ4hcxeAqg94wGi6CyKaCmLgFSofgItf85GuLTl/0BQ6J/Y1e8BqZWfEg==", "dev": true, "requires": { "@types/filesystem": "*", @@ -13323,13 +13324,13 @@ "dev": true }, "@types/karma": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@types/karma/-/karma-6.3.1.tgz", - "integrity": "sha512-t7hSJ8oWrgzrJV0nBqqMrDnQFft/W3WCPOfSi2aOq7rUPARLC8XpZfbsQ+mfYaNk18v1XqkBU12uirp1ISJVAA==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/@types/karma/-/karma-6.3.2.tgz", + "integrity": "sha512-ZQfjGEfEV57I3o6Y5iK1+6aoQDguxmCBeQ0H8r9dasRTFn2Ohqgvx44FSPdY+R+/VUVtr8lvAYaRFzdNrQFvww==", "dev": true, "requires": { "@types/node": "*", - "log4js": "^6.2.1" + "log4js": "^6.3.0" } }, "@types/minimatch": { @@ -13339,9 +13340,9 @@ "dev": true }, "@types/node": { - "version": "17.0.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.7.tgz", - "integrity": "sha512-1QUk+WAUD4t8iR+Oj+UgI8oJa6yyxaB8a8pHaC8uqM6RrS1qbL7bf3Pwl5rHv0psm2CuDErgho6v5N+G+5fwtQ==", + "version": "17.0.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.9.tgz", + "integrity": "sha512-5dNBXu/FOER+EXnyah7rn8xlNrfMOQb/qXnw4NQgLkCygKBKhdmF/CA5oXVOKZLBEahw8s2WP9LxIcN/oDDRgQ==", "dev": true }, "@types/offscreencanvas": { @@ -13351,9 +13352,9 @@ "dev": true }, "@types/prettier": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz", - "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.3.tgz", + "integrity": "sha512-QzSuZMBuG5u8HqYz01qtMdg/Jfctlnvj1z/lYnIDXs/golxw0fxtRAHd9KrzjR7Yxz1qVeI00o0kiO3PmVdJ9w==", "dev": true }, "@types/resolve": { @@ -13396,14 +13397,14 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.0.tgz", - "integrity": "sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.1.tgz", + "integrity": "sha512-Xv9tkFlyD4MQGpJgTo6wqDqGvHIRmRgah/2Sjz1PUnJTawjHWIwBivUE9x0QtU2WVii9baYgavo/bHjrZJkqTw==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "5.9.0", - "@typescript-eslint/scope-manager": "5.9.0", - "@typescript-eslint/type-utils": "5.9.0", + "@typescript-eslint/experimental-utils": "5.9.1", + "@typescript-eslint/scope-manager": "5.9.1", + "@typescript-eslint/type-utils": "5.9.1", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -13421,102 +13422,80 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz", - "integrity": "sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.1.tgz", + "integrity": "sha512-cb1Njyss0mLL9kLXgS/eEY53SZQ9sT519wpX3i+U457l2UXRDuo87hgKfgRazmu9/tQb0x2sr3Y0yrU+Zz0y+w==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.9.0", - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/typescript-estree": "5.9.0", + "@typescript-eslint/scope-manager": "5.9.1", + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/typescript-estree": "5.9.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/parser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.0.tgz", - "integrity": "sha512-/6pOPz8yAxEt4PLzgbFRDpZmHnXCeZgPDrh/1DaVKOjvn/UPMlWhbx/gA96xRi2JxY1kBl2AmwVbyROUqys5xQ==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.1.tgz", + "integrity": "sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.9.0", - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/typescript-estree": "5.9.0", + "@typescript-eslint/scope-manager": "5.9.1", + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/typescript-estree": "5.9.1", "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz", - "integrity": "sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz", + "integrity": "sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/visitor-keys": "5.9.0" + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/visitor-keys": "5.9.1" } }, "@typescript-eslint/type-utils": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.0.tgz", - "integrity": "sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.1.tgz", + "integrity": "sha512-tRSpdBnPRssjlUh35rE9ug5HrUvaB9ntREy7gPXXKwmIx61TNN7+l5YKgi1hMKxo5NvqZCfYhA5FvyuJG6X6vg==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "5.9.0", + "@typescript-eslint/experimental-utils": "5.9.1", "debug": "^4.3.2", "tsutils": "^3.21.0" - }, - "dependencies": { - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } } }, "@typescript-eslint/types": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.0.tgz", - "integrity": "sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.1.tgz", + "integrity": "sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz", - "integrity": "sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.1.tgz", + "integrity": "sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A==", "dev": true, "requires": { - "@typescript-eslint/types": "5.9.0", - "@typescript-eslint/visitor-keys": "5.9.0", + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/visitor-keys": "5.9.1", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", "semver": "^7.3.5", "tsutils": "^3.21.0" - }, - "dependencies": { - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } } }, "@typescript-eslint/visitor-keys": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz", - "integrity": "sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.1.tgz", + "integrity": "sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.9.0", + "@typescript-eslint/types": "5.9.1", "eslint-visitor-keys": "^3.0.0" } }, @@ -14006,15 +13985,15 @@ "dev": true }, "babel-jest": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.5.tgz", - "integrity": "sha512-3uuUTjXbgtODmSv/DXO9nZfD52IyC2OYTFaXGRzL0kpykzroaquCrD5+lZNafTvZlnNqZHt5pb0M08qVBZnsnA==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.6.tgz", + "integrity": "sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg==", "dev": true, "requires": { - "@jest/transform": "^27.4.5", + "@jest/transform": "^27.4.6", "@jest/types": "^27.4.2", "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", + "babel-plugin-istanbul": "^6.1.1", "babel-preset-jest": "^27.4.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", @@ -14103,12 +14082,6 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "base64-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.1.tgz", - "integrity": "sha512-vFIUq7FdLtjZMhATwDul5RZWv2jpXQ09Pd6jcVEOvIsqCWTRFD/ONHNfyOS8dA/Ippi5dsIgpyKWKZaAKZltbA==", - "dev": true - }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -15507,9 +15480,9 @@ } }, "engine.io": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.0.0.tgz", - "integrity": "sha512-Ui7yl3JajEIaACg8MOUwWvuuwU7jepZqX3BKs1ho7NQRuP4LhN4XIykXhp8bEy+x/DhA0LBZZXYSCkZDqrwMMg==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.1.tgz", + "integrity": "sha512-AyMc20q8JUUdvKd46+thc9o7yCZ6iC6MoBCChG5Z1XmFMpp+2+y/oKvwpZTUJB0KCjxScw1dV9c2h5pjiYBLuQ==", "dev": true, "requires": { "@types/cookie": "^0.4.1", @@ -15534,12 +15507,12 @@ } }, "engine.io-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.1.tgz", - "integrity": "sha512-j4p3WwJrG2k92VISM0op7wiq60vO92MlF3CRGxhKHy9ywG1/Dkc72g0dXeDQ+//hrcDn8gqQzoEkdO9FN0d9AA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", + "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", "dev": true, "requires": { - "base64-arraybuffer": "~1.0.1" + "@socket.io/base64-arraybuffer": "~1.0.2" } }, "enquirer": { @@ -15718,9 +15691,9 @@ } }, "eslint": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz", - "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz", + "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==", "dev": true, "requires": { "@eslint/eslintrc": "^1.0.5", @@ -15730,11 +15703,10 @@ "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.0", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", + "eslint-visitor-keys": "^3.2.0", "espree": "^9.3.0", "esquery": "^1.4.0", "esutils": "^2.0.2", @@ -15743,7 +15715,7 @@ "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.6.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", @@ -15754,9 +15726,7 @@ "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", "regexpp": "^3.2.0", - "semver": "^7.2.1", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", @@ -15779,6 +15749,12 @@ "estraverse": "^5.2.0" } }, + "eslint-visitor-keys": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", + "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", + "dev": true + }, "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", @@ -15793,6 +15769,12 @@ "requires": { "is-glob": "^4.0.3" } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true } } }, @@ -16093,25 +16075,15 @@ "dev": true }, "expect": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.4.2.tgz", - "integrity": "sha512-BjAXIDC6ZOW+WBFNg96J22D27Nq5ohn+oGcuP2rtOtcjuxNoV9McpQ60PcQWhdFOSBIQdR72e+4HdnbZTFSTyg==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.4.6.tgz", + "integrity": "sha512-1M/0kAALIaj5LaG66sFJTbRsWTADnylly82cu4bspI0nl+pgP4E6Bh/aqdHlTUjul06K7xQnnrAoqfxVU0+/ag==", "dev": true, "requires": { "@jest/types": "^27.4.2", - "ansi-styles": "^5.0.0", "jest-get-type": "^27.4.0", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-regex-util": "^27.4.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } + "jest-matcher-utils": "^27.4.6", + "jest-message-util": "^27.4.6" } }, "express": { @@ -16469,9 +16441,9 @@ "dev": true }, "follow-redirects": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", - "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", "dev": true }, "forever-agent": { @@ -17032,9 +17004,9 @@ "dev": true }, "import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "requires": { "pkg-dir": "^4.2.0", @@ -17512,14 +17484,14 @@ "dev": true }, "jest": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.5.tgz", - "integrity": "sha512-uT5MiVN3Jppt314kidCk47MYIRilJjA/l2mxwiuzzxGUeJIvA8/pDaJOAX5KWvjAo7SCydcW0/4WEtgbLMiJkg==", + "version": "27.4.7", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.7.tgz", + "integrity": "sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg==", "dev": true, "requires": { - "@jest/core": "^27.4.5", + "@jest/core": "^27.4.7", "import-local": "^3.0.2", - "jest-cli": "^27.4.5" + "jest-cli": "^27.4.7" } }, "jest-changed-files": { @@ -17534,79 +17506,79 @@ } }, "jest-circus": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.5.tgz", - "integrity": "sha512-eTNWa9wsvBwPykhMMShheafbwyakcdHZaEYh5iRrQ0PFJxkDP/e3U/FvzGuKWu2WpwUA3C3hPlfpuzvOdTVqnw==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.6.tgz", + "integrity": "sha512-UA7AI5HZrW4wRM72Ro80uRR2Fg+7nR0GESbSI/2M+ambbzVuA63mn5T1p3Z/wlhntzGpIG1xx78GP2YIkf6PhQ==", "dev": true, "requires": { - "@jest/environment": "^27.4.4", - "@jest/test-result": "^27.4.2", + "@jest/environment": "^27.4.6", + "@jest/test-result": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.4.2", + "expect": "^27.4.6", "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.2", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-runtime": "^27.4.5", - "jest-snapshot": "^27.4.5", + "jest-each": "^27.4.6", + "jest-matcher-utils": "^27.4.6", + "jest-message-util": "^27.4.6", + "jest-runtime": "^27.4.6", + "jest-snapshot": "^27.4.6", "jest-util": "^27.4.2", - "pretty-format": "^27.4.2", + "pretty-format": "^27.4.6", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" } }, "jest-cli": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.5.tgz", - "integrity": "sha512-hrky3DSgE0u7sQxaCL7bdebEPHx5QzYmrGuUjaPLmPE8jx5adtvGuOlRspvMoVLTTDOHRnZDoRLYJuA+VCI7Hg==", + "version": "27.4.7", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.7.tgz", + "integrity": "sha512-zREYhvjjqe1KsGV15mdnxjThKNDgza1fhDT+iUsXWLCq3sxe9w5xnvyctcYVT5PcdLSjv7Y5dCwTS3FCF1tiuw==", "dev": true, "requires": { - "@jest/core": "^27.4.5", - "@jest/test-result": "^27.4.2", + "@jest/core": "^27.4.7", + "@jest/test-result": "^27.4.6", "@jest/types": "^27.4.2", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "jest-config": "^27.4.5", + "jest-config": "^27.4.7", "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", + "jest-validate": "^27.4.6", "prompts": "^2.0.1", "yargs": "^16.2.0" } }, "jest-config": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.4.5.tgz", - "integrity": "sha512-t+STVJtPt+fpqQ8GBw850NtSQbnDOw/UzdPfzDaHQ48/AylQlW7LHj3dH+ndxhC1UxJ0Q3qkq7IH+nM1skwTwA==", + "version": "27.4.7", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.4.7.tgz", + "integrity": "sha512-xz/o/KJJEedHMrIY9v2ParIoYSrSVY6IVeE4z5Z3i101GoA5XgfbJz+1C8EYPsv7u7f39dS8F9v46BHDhn0vlw==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.4.5", + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.4.6", "@jest/types": "^27.4.2", - "babel-jest": "^27.4.5", + "babel-jest": "^27.4.6", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", - "jest-circus": "^27.4.5", - "jest-environment-jsdom": "^27.4.4", - "jest-environment-node": "^27.4.4", + "jest-circus": "^27.4.6", + "jest-environment-jsdom": "^27.4.6", + "jest-environment-node": "^27.4.6", "jest-get-type": "^27.4.0", - "jest-jasmine2": "^27.4.5", + "jest-jasmine2": "^27.4.6", "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.5", - "jest-runner": "^27.4.5", + "jest-resolve": "^27.4.6", + "jest-runner": "^27.4.6", "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", + "jest-validate": "^27.4.6", "micromatch": "^4.0.4", - "pretty-format": "^27.4.2", + "pretty-format": "^27.4.6", "slash": "^3.0.0" }, "dependencies": { @@ -17619,15 +17591,15 @@ } }, "jest-diff": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.2.tgz", - "integrity": "sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.6.tgz", + "integrity": "sha512-zjaB0sh0Lb13VyPsd92V7HkqF6yKRH9vm33rwBt7rPYrpQvS1nCvlIy2pICbKta+ZjWngYLNn4cCK4nyZkjS/w==", "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^27.4.0", "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.2" + "pretty-format": "^27.4.6" } }, "jest-docblock": { @@ -17640,44 +17612,44 @@ } }, "jest-each": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.4.2.tgz", - "integrity": "sha512-53V2MNyW28CTruB3lXaHNk6PkiIFuzdOC9gR3C6j8YE/ACfrPnz+slB0s17AgU1TtxNzLuHyvNlLJ+8QYw9nBg==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.4.6.tgz", + "integrity": "sha512-n6QDq8y2Hsmn22tRkgAk+z6MCX7MeVlAzxmZDshfS2jLcaBlyhpF3tZSJLR+kXmh23GEvS0ojMR8i6ZeRvpQcA==", "dev": true, "requires": { "@jest/types": "^27.4.2", "chalk": "^4.0.0", "jest-get-type": "^27.4.0", "jest-util": "^27.4.2", - "pretty-format": "^27.4.2" + "pretty-format": "^27.4.6" } }, "jest-environment-jsdom": { - "version": "27.4.4", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.4.tgz", - "integrity": "sha512-cYR3ndNfHBqQgFvS1RL7dNqSvD//K56j/q1s2ygNHcfTCAp12zfIromO1w3COmXrxS8hWAh7+CmZmGCIoqGcGA==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.6.tgz", + "integrity": "sha512-o3dx5p/kHPbUlRvSNjypEcEtgs6LmvESMzgRFQE6c+Prwl2JLA4RZ7qAnxc5VM8kutsGRTB15jXeeSbJsKN9iA==", "dev": true, "requires": { - "@jest/environment": "^27.4.4", - "@jest/fake-timers": "^27.4.2", + "@jest/environment": "^27.4.6", + "@jest/fake-timers": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", - "jest-mock": "^27.4.2", + "jest-mock": "^27.4.6", "jest-util": "^27.4.2", "jsdom": "^16.6.0" } }, "jest-environment-node": { - "version": "27.4.4", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.4.tgz", - "integrity": "sha512-D+v3lbJ2GjQTQR23TK0kY3vFVmSeea05giInI41HHOaJnAwOnmUHTZgUaZL+VxUB43pIzoa7PMwWtCVlIUoVoA==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.6.tgz", + "integrity": "sha512-yfHlZ9m+kzTKZV0hVfhVu6GuDxKAYeFHrfulmy7Jxwsq4V7+ZK7f+c0XP/tbVDMQW7E4neG2u147hFkuVz0MlQ==", "dev": true, "requires": { - "@jest/environment": "^27.4.4", - "@jest/fake-timers": "^27.4.2", + "@jest/environment": "^27.4.6", + "@jest/fake-timers": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", - "jest-mock": "^27.4.2", + "jest-mock": "^27.4.6", "jest-util": "^27.4.2" } }, @@ -17688,9 +17660,9 @@ "dev": true }, "jest-haste-map": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.5.tgz", - "integrity": "sha512-oJm1b5qhhPs78K24EDGifWS0dELYxnoBiDhatT/FThgB9yxqUm5F6li3Pv+Q+apMBmmPNzOBnZ7ZxWMB1Leq1Q==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.6.tgz", + "integrity": "sha512-0tNpgxg7BKurZeFkIOvGCkbmOHbLFf4LUQOxrQSMjvrQaQe3l6E8x6jYC1NuWkGo5WDdbr8FEzUxV2+LWNawKQ==", "dev": true, "requires": { "@jest/types": "^27.4.2", @@ -17703,63 +17675,62 @@ "jest-regex-util": "^27.4.0", "jest-serializer": "^27.4.0", "jest-util": "^27.4.2", - "jest-worker": "^27.4.5", + "jest-worker": "^27.4.6", "micromatch": "^4.0.4", "walker": "^1.0.7" } }, "jest-jasmine2": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.5.tgz", - "integrity": "sha512-oUnvwhJDj2LhOiUB1kdnJjkx8C5PwgUZQb9urF77mELH9DGR4e2GqpWQKBOYXWs5+uTN9BGDqRz3Aeg5Wts7aw==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.6.tgz", + "integrity": "sha512-uAGNXF644I/whzhsf7/qf74gqy9OuhvJ0XYp8SDecX2ooGeaPnmJMjXjKt0mqh1Rl5dtRGxJgNrHlBQIBfS5Nw==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.4.4", + "@jest/environment": "^27.4.6", "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.2", + "@jest/test-result": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.4.2", + "expect": "^27.4.6", "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.2", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-runtime": "^27.4.5", - "jest-snapshot": "^27.4.5", + "jest-each": "^27.4.6", + "jest-matcher-utils": "^27.4.6", + "jest-message-util": "^27.4.6", + "jest-runtime": "^27.4.6", + "jest-snapshot": "^27.4.6", "jest-util": "^27.4.2", - "pretty-format": "^27.4.2", + "pretty-format": "^27.4.6", "throat": "^6.0.1" } }, "jest-leak-detector": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.2.tgz", - "integrity": "sha512-ml0KvFYZllzPBJWDei3mDzUhyp/M4ubKebX++fPaudpe8OsxUE+m+P6ciVLboQsrzOCWDjE20/eXew9QMx/VGw==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.6.tgz", + "integrity": "sha512-kkaGixDf9R7CjHm2pOzfTxZTQQQ2gHTIWKY/JZSiYTc90bZp8kSZnUMS3uLAfwTZwc0tcMRoEX74e14LG1WapA==", "dev": true, "requires": { "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.2" + "pretty-format": "^27.4.6" } }, "jest-matcher-utils": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.2.tgz", - "integrity": "sha512-jyP28er3RRtMv+fmYC/PKG8wvAmfGcSNproVTW2Y0P/OY7/hWUOmsPfxN1jOhM+0u2xU984u2yEagGivz9OBGQ==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.6.tgz", + "integrity": "sha512-XD4PKT3Wn1LQnRAq7ZsTI0VRuEc9OrCPFiO1XL7bftTGmfNF0DcEwMHRgqiu7NGf8ZoZDREpGrCniDkjt79WbA==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^27.4.2", + "jest-diff": "^27.4.6", "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.2" + "pretty-format": "^27.4.6" } }, "jest-message-util": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.2.tgz", - "integrity": "sha512-OMRqRNd9E0DkBLZpFtZkAGYOXl6ZpoMtQJWTAREJKDOFa0M6ptB7L67tp+cszMBkvSgKOhNtQp2Vbcz3ZZKo/w==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.6.tgz", + "integrity": "sha512-0p5szriFU0U74czRSFjH6RyS7UYIAkn/ntwMuOwTGWrQIOh5NzXXrq72LOqIkJKKvFbPq+byZKuBz78fjBERBA==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", @@ -17768,15 +17739,15 @@ "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.4", - "pretty-format": "^27.4.2", + "pretty-format": "^27.4.6", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-mock": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.2.tgz", - "integrity": "sha512-PDDPuyhoukk20JrQKeofK12hqtSka7mWH0QQuxSNgrdiPsrnYYLS6wbzu/HDlxZRzji5ylLRULeuI/vmZZDrYA==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.6.tgz", + "integrity": "sha512-kvojdYRkst8iVSZ1EJ+vc1RRD9llueBjKzXzeCytH3dMM7zvPV/ULcfI2nr0v0VUgm3Bjt3hBCQvOeaBz+ZTHw==", "dev": true, "requires": { "@jest/types": "^27.4.2", @@ -17797,44 +17768,44 @@ "dev": true }, "jest-resolve": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.5.tgz", - "integrity": "sha512-xU3z1BuOz/hUhVUL+918KqUgK+skqOuUsAi7A+iwoUldK6/+PW+utK8l8cxIWT9AW7IAhGNXjSAh1UYmjULZZw==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.6.tgz", + "integrity": "sha512-SFfITVApqtirbITKFAO7jOVN45UgFzcRdQanOFzjnbd+CACDoyeX7206JyU92l4cRr73+Qy/TlW51+4vHGt+zw==", "dev": true, "requires": { "@jest/types": "^27.4.2", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.5", + "jest-haste-map": "^27.4.6", "jest-pnp-resolver": "^1.2.2", "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", + "jest-validate": "^27.4.6", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" } }, "jest-resolve-dependencies": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.5.tgz", - "integrity": "sha512-elEVvkvRK51y037NshtEkEnukMBWvlPzZHiL847OrIljJ8yIsujD2GXRPqDXC4rEVKbcdsy7W0FxoZb4WmEs7w==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.6.tgz", + "integrity": "sha512-W85uJZcFXEVZ7+MZqIPCscdjuctruNGXUZ3OHSXOfXR9ITgbUKeHj+uGcies+0SsvI5GtUfTw4dY7u9qjTvQOw==", "dev": true, "requires": { "@jest/types": "^27.4.2", "jest-regex-util": "^27.4.0", - "jest-snapshot": "^27.4.5" + "jest-snapshot": "^27.4.6" } }, "jest-runner": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.5.tgz", - "integrity": "sha512-/irauncTfmY1WkTaRQGRWcyQLzK1g98GYG/8QvIPviHgO1Fqz1JYeEIsSfF+9mc/UTA6S+IIHFgKyvUrtiBIZg==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.6.tgz", + "integrity": "sha512-IDeFt2SG4DzqalYBZRgbbPmpwV3X0DcntjezPBERvnhwKGWTW7C5pbbA5lVkmvgteeNfdd/23gwqv3aiilpYPg==", "dev": true, "requires": { - "@jest/console": "^27.4.2", - "@jest/environment": "^27.4.4", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.5", + "@jest/console": "^27.4.6", + "@jest/environment": "^27.4.6", + "@jest/test-result": "^27.4.6", + "@jest/transform": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", @@ -17842,51 +17813,47 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.4", "jest-docblock": "^27.4.0", - "jest-environment-jsdom": "^27.4.4", - "jest-environment-node": "^27.4.4", - "jest-haste-map": "^27.4.5", - "jest-leak-detector": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-resolve": "^27.4.5", - "jest-runtime": "^27.4.5", + "jest-environment-jsdom": "^27.4.6", + "jest-environment-node": "^27.4.6", + "jest-haste-map": "^27.4.6", + "jest-leak-detector": "^27.4.6", + "jest-message-util": "^27.4.6", + "jest-resolve": "^27.4.6", + "jest-runtime": "^27.4.6", "jest-util": "^27.4.2", - "jest-worker": "^27.4.5", + "jest-worker": "^27.4.6", "source-map-support": "^0.5.6", "throat": "^6.0.1" } }, "jest-runtime": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.5.tgz", - "integrity": "sha512-CIYqwuJQXHQtPd/idgrx4zgJ6iCb6uBjQq1RSAGQrw2S8XifDmoM1Ot8NRd80ooAm+ZNdHVwsktIMGlA1F1FAQ==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.6.tgz", + "integrity": "sha512-eXYeoR/MbIpVDrjqy5d6cGCFOYBFFDeKaNWqTp0h6E74dK0zLHzASQXJpl5a2/40euBmKnprNLJ0Kh0LCndnWQ==", "dev": true, "requires": { - "@jest/console": "^27.4.2", - "@jest/environment": "^27.4.4", - "@jest/globals": "^27.4.4", + "@jest/environment": "^27.4.6", + "@jest/fake-timers": "^27.4.6", + "@jest/globals": "^27.4.6", "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.5", + "@jest/test-result": "^27.4.6", + "@jest/transform": "^27.4.6", "@jest/types": "^27.4.2", - "@types/yargs": "^16.0.0", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "execa": "^5.0.0", - "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.5", - "jest-message-util": "^27.4.2", - "jest-mock": "^27.4.2", + "jest-haste-map": "^27.4.6", + "jest-message-util": "^27.4.6", + "jest-mock": "^27.4.6", "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.5", - "jest-snapshot": "^27.4.5", + "jest-resolve": "^27.4.6", + "jest-snapshot": "^27.4.6", "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^16.2.0" + "strip-bom": "^4.0.0" } }, "jest-serializer": { @@ -17900,34 +17867,32 @@ } }, "jest-snapshot": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.5.tgz", - "integrity": "sha512-eCi/iM1YJFrJWiT9de4+RpWWWBqsHiYxFG9V9o/n0WXs6GpW4lUt4FAHAgFPTLPqCUVzrMQmSmTZSgQzwqR7IQ==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.6.tgz", + "integrity": "sha512-fafUCDLQfzuNP9IRcEqaFAMzEe7u5BF7mude51wyWv7VRex60WznZIC7DfKTgSIlJa8aFzYmXclmN328aqSDmQ==", "dev": true, "requires": { "@babel/core": "^7.7.2", "@babel/generator": "^7.7.2", - "@babel/parser": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.4.5", + "@jest/transform": "^27.4.6", "@jest/types": "^27.4.2", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.4.2", + "expect": "^27.4.6", "graceful-fs": "^4.2.4", - "jest-diff": "^27.4.2", + "jest-diff": "^27.4.6", "jest-get-type": "^27.4.0", - "jest-haste-map": "^27.4.5", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-resolve": "^27.4.5", + "jest-haste-map": "^27.4.6", + "jest-matcher-utils": "^27.4.6", + "jest-message-util": "^27.4.6", "jest-util": "^27.4.2", "natural-compare": "^1.4.0", - "pretty-format": "^27.4.2", + "pretty-format": "^27.4.6", "semver": "^7.3.2" } }, @@ -17954,9 +17919,9 @@ } }, "jest-validate": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.2.tgz", - "integrity": "sha512-hWYsSUej+Fs8ZhOm5vhWzwSLmVaPAxRy+Mr+z5MzeaHm9AxUpXdoVMEW4R86y5gOobVfBsMFLk4Rb+QkiEpx1A==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.6.tgz", + "integrity": "sha512-872mEmCPVlBqbA5dToC57vA3yJaMRfIdpCoD3cyHWJOMx+SJwLNw0I71EkWs41oza/Er9Zno9XuTkRYCPDUJXQ==", "dev": true, "requires": { "@jest/types": "^27.4.2", @@ -17964,7 +17929,7 @@ "chalk": "^4.0.0", "jest-get-type": "^27.4.0", "leven": "^3.1.0", - "pretty-format": "^27.4.2" + "pretty-format": "^27.4.6" }, "dependencies": { "camelcase": { @@ -17976,12 +17941,12 @@ } }, "jest-watcher": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.2.tgz", - "integrity": "sha512-NJvMVyyBeXfDezhWzUOCOYZrUmkSCiatpjpm+nFUid74OZEHk6aMLrZAukIiFDwdbqp6mTM6Ui1w4oc+8EobQg==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.6.tgz", + "integrity": "sha512-yKQ20OMBiCDigbD0quhQKLkBO+ObGN79MO4nT7YaCuQ5SM+dkBNWE8cZX0FjU6czwMvWw6StWbe+Wv4jJPJ+fw==", "dev": true, "requires": { - "@jest/test-result": "^27.4.2", + "@jest/test-result": "^27.4.6", "@jest/types": "^27.4.2", "@types/node": "*", "ansi-escapes": "^4.2.1", @@ -17991,9 +17956,9 @@ } }, "jest-worker": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.5.tgz", - "integrity": "sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", + "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", "dev": true, "requires": { "@types/node": "*", @@ -18245,15 +18210,15 @@ } }, "karma": { - "version": "6.3.9", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.9.tgz", - "integrity": "sha512-E/MqdLM9uVIhfuyVnrhlGBu4miafBdXEAEqCmwdEMh3n17C7UWC/8Kvm3AYKr91gc7scutekZ0xv6rxRaUCtnw==", + "version": "6.3.11", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.11.tgz", + "integrity": "sha512-QGUh4yXgizzDNPLB5nWTvP+wysKexngbyLVWFOyikB661hpa2RZLf5anZQzqliWtAQuYVep0ot0D1U7UQKpsxQ==", "dev": true, "requires": { "body-parser": "^1.19.0", "braces": "^3.0.2", "chokidar": "^3.5.1", - "colors": "^1.4.0", + "colors": "1.4.0", "connect": "^3.7.0", "di": "^0.0.1", "dom-serialize": "^2.2.1", @@ -18963,12 +18928,6 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, "node-releases": { "version": "1.1.72", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", @@ -19515,13 +19474,10 @@ "dev": true }, "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz", + "integrity": "sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==", + "dev": true }, "pkg-dir": { "version": "4.2.0", @@ -19562,12 +19518,11 @@ "dev": true }, "pretty-format": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.2.tgz", - "integrity": "sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.6.tgz", + "integrity": "sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g==", "dev": true, "requires": { - "@jest/types": "^27.4.2", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" @@ -20061,9 +20016,9 @@ } }, "rollup": { - "version": "2.62.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.62.0.tgz", - "integrity": "sha512-cJEQq2gwB0GWMD3rYImefQTSjrPYaC6s4J9pYqnstVLJ1CHa/aZNVkD4Epuvg4iLeMA4KRiq7UM7awKK6j7jcw==", + "version": "2.64.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.64.0.tgz", + "integrity": "sha512-+c+lbw1lexBKSMb1yxGDVfJ+vchJH3qLbmavR+awDinTDA2C5Ug9u7lkOzj62SCu0PKUExsW36tpgW7Fmpn3yQ==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -20387,23 +20342,23 @@ "dev": true }, "socket.io": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.3.1.tgz", - "integrity": "sha512-HC5w5Olv2XZ0XJ4gOLGzzHEuOCfj3G0SmoW3jLHYYh34EVsIr3EkW9h6kgfW+K3TFEcmYy8JcPWe//KUkBp5jA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", + "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.0.0", - "socket.io-adapter": "~2.3.2", + "engine.io": "~6.1.0", + "socket.io-adapter": "~2.3.3", "socket.io-parser": "~4.0.4" } }, "socket.io-adapter": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.2.tgz", - "integrity": "sha512-PBZpxUPYjmoogY0aoaTmo1643JelsaS1CiAwNjRVdrI0X9Seuc19Y2Wife8k88avW6haG8cznvwbubAZwH4Mtg==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", + "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==", "dev": true }, "socket.io-parser": { @@ -20986,9 +20941,9 @@ } }, "ts-jest": { - "version": "27.1.2", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.2.tgz", - "integrity": "sha512-eSOiJOWq6Hhs6Khzk5wKC5sgWIXgXqOCiIl1+3lfnearu58Hj4QpE5tUhQcA3xtZrELbcvAGCsd6HB8OsaVaTA==", + "version": "27.1.3", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", + "integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==", "dev": true, "requires": { "bs-logger": "0.x", @@ -21247,9 +21202,9 @@ "dev": true }, "v8-to-istanbul": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", - "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.1", @@ -21530,9 +21485,9 @@ } }, "ws": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", + "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", "dev": true, "requires": {} }, diff --git a/package.json b/package.json index ae737773957f..9480adb3c5ad 100644 --- a/package.json +++ b/package.json @@ -64,26 +64,26 @@ "url": "https://opencollective.com/darkreader" }, "devDependencies": { - "@rollup/plugin-node-resolve": "13.1.2", + "@rollup/plugin-node-resolve": "13.1.3", "@rollup/plugin-replace": "3.0.1", "@rollup/plugin-typescript": "8.3.0", "@rollup/pluginutils": "4.1.2", - "@types/chrome": "0.0.174", + "@types/chrome": "0.0.176", "@types/jasmine": "3.10.3", "@types/jest": "27.4.0", - "@types/karma": "6.3.1", + "@types/karma": "6.3.2", "@types/offscreencanvas": "2019.6.4", - "@types/node": "17.0.7", - "@typescript-eslint/eslint-plugin": "5.9.0", - "@typescript-eslint/parser": "5.9.0", + "@types/node": "17.0.9", + "@typescript-eslint/eslint-plugin": "5.9.1", + "@typescript-eslint/parser": "5.9.1", "chokidar": "3.5.2", - "eslint": "8.6.0", + "eslint": "8.7.0", "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", "globby": "11.0.4", "jasmine-core": "4.0.0", - "jest": "27.4.5", - "karma": "6.3.9", + "jest": "27.4.7", + "karma": "6.3.11", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.1.0", "karma-firefox-launcher": "2.1.2", @@ -94,13 +94,13 @@ "malevic": "0.18.6", "prettier": "2.5.1", "puppeteer-core": "13.0.1", - "rollup": "2.62.0", + "rollup": "2.64.0", "rollup-plugin-istanbul2": "2.0.2", - "ts-jest": "27.1.2", + "ts-jest": "27.1.3", "tslib": "2.3.1", "typescript": "4.5.4", "web-ext": "6.6.0", - "ws": "8.4.0", + "ws": "8.4.2", "yazl": "2.5.1" } } From 45e4319e2ca418471a9a5e9529ce775878481e6d Mon Sep 17 00:00:00 2001 From: Isaac <72410860+isaec@users.noreply.github.com> Date: Wed, 19 Jan 2022 08:59:26 -0800 Subject: [PATCH 287/892] Fix for amazon.* (#7974) - Fix video titles. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 301edf5c8032..0cba8bd32288 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -750,6 +750,9 @@ img[src*="smile-logo"] .a-icon-popover .a-link-nav-icon .currencyINR +div.vse-video-title +div.vse-video-labels +i.a-icon-search CSS .banner-border { From 3a644096e059e0ca430950acdee2237fe0fe32de Mon Sep 17 00:00:00 2001 From: "BANO.notIT" Date: Wed, 19 Jan 2022 20:12:43 +0300 Subject: [PATCH 288/892] Fix for urbandictionary.com (#7891) - Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0cba8bd32288..1aed216179c1 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15649,12 +15649,8 @@ IGNORE INLINE STYLE urbandictionary.com INVERT -.top-bar-section .has-dropdown > a::after - -CSS -.ribbon { - color: ${#333} !important; -} +nav a span > span +nav a[href="/"] svg > g > path:first-child ================================ From 8ef488691d4ec6de0f0fc21cb4be6f58b93c4c31 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Wed, 19 Jan 2022 09:13:03 -0800 Subject: [PATCH 289/892] Fixes geekflare.com (dynamic mode) (#7977) Fixes https://github.com/darkreader/darkreader/issues/7976 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1aed216179c1..573efb62657b 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6188,6 +6188,13 @@ CSS ================================ +geekflare.com + +INVERT +.logo + +================================ + geeksforgeeks.org CSS From c965c5426ddaaf28f26d00571ca8686d6148fa92 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 19 Jan 2022 17:18:13 +0000 Subject: [PATCH 290/892] Fix for nvidia.com (#7991) - Resolves #7975 --- src/config/dynamic-theme-fixes.config | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 573efb62657b..37aba4c5c345 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10906,6 +10906,22 @@ div.brand-container a svg { .taboff { background-image: none !important; } +.mid-gray { + fill: #999 !important; + background-color: #999 !important; +} +.dark .green40 { + fill: #3b5d00 !important; + background-color: #3b5d00 !important; +} +.green50 { + fill: #598b00 !important; + background-color: #598b00 !important; +} +.dark .green100 { + fill: #76b900 !important; + background-color: #76b900 !important; +} ================================ From 824b622f2f6a0477a146bd4f8ba2a7cd799cc4f5 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 19 Jan 2022 17:23:19 +0000 Subject: [PATCH 291/892] Fix for lsa.umich.edu (#7992) - Resolves #7980 --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 37aba4c5c345..9a332add3fd1 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9096,6 +9096,14 @@ img { ================================ +lsa.umich.edu + +IGNORE IMAGE ANALYSIS +.header-wrap +.giving-wrap + +================================ + lunapic.com INVERT From c75c33fceb8073f87baec000bc40745d2effeaa5 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 19 Jan 2022 17:43:14 +0000 Subject: [PATCH 292/892] Fix for weather.com (#7993) - Resolves #7986 --- src/config/dynamic-theme-fixes.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9a332add3fd1..1046f11834b3 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16145,6 +16145,8 @@ text[class*="DonutChart"] IGNORE INLINE STYLE [id^="svg-symbol"] * +svg[class*="alerts--"] * +#svg-symbol-sun ================================ From 3053c00134bfcada47ac9e2fad34f35512ac8b05 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 19 Jan 2022 17:46:33 +0000 Subject: [PATCH 293/892] Fix for dspguide.com (#7994) - Resolves #7990 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1046f11834b3..86abf7f1ab33 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4696,6 +4696,15 @@ INVERT ================================ +dspguide.com + +CSS +#divPage { + background-image: none !important; +} + +================================ + dtf.ru INVERT From 0945a6051cd8cc2052af577be7df991cccef6385 Mon Sep 17 00:00:00 2001 From: Ben Fox-Moore Date: Wed, 19 Jan 2022 21:23:15 +0100 Subject: [PATCH 294/892] Fix Slack.com (#7987) - The invert logo on the homepage no longer works (the logo is now an SVG, and has a newly named class) - Buttons in the actual "app" aren't darkened properly Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 86abf7f1ab33..d79cefed3545 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13451,8 +13451,17 @@ body { slack.com -INVERT -.slack_logo > img +CSS +.c-slacklogo svg path:first-child { + fill: var(--darkreader-selection-text) !important; +} +.c-button:not(.v--primary, .v--secondary) { + background: inherit !important; + color: inherit !important; +} +.c-button:not(.v--primary, .v--secondary):hover { + text-decoration: underline !important; +} ================================ From 2338a4ff5faf64b5e544a866a3abfd0bf90e1d7c Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 20 Jan 2022 13:03:31 +0100 Subject: [PATCH 295/892] Fix for notion.so (#8003) - Resolves #8000 --- src/config/dynamic-theme-fixes.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d79cefed3545..218428eb96de 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10810,8 +10810,13 @@ img[alt="People using Notion"] .desktop-illustration .illustration .next-image .api-section-image .next-image +.visual .next-image +.logo svg > :first-child CSS +body { + background-color: var(--darkreader-neutral-background) !important; +} .notion-divider-block div div { border-bottom: 1px solid ${rgba(55, 53, 47, 0.4)} !important; } From d37c078b3746b1e749cd9846c39c6fd5b23f509a Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 20 Jan 2022 14:19:57 +0100 Subject: [PATCH 296/892] Fix time automation (#8005) - Set second to `0`, such that the toggle will happen on the exact minute and not after 30 seconds or so. - Resolves #7996 --- src/utils/time.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/utils/time.ts b/src/utils/time.ts index ea042a20a195..e4a63c8aaa3b 100644 --- a/src/utils/time.ts +++ b/src/utils/time.ts @@ -56,6 +56,7 @@ export function nextTimeInterval(time0: string, time1: string, date: Date = new // Schedule for todate at time a date.setHours(a[0]); date.setMinutes(a[1]); + date.setSeconds(0); return date.getTime(); } @@ -64,6 +65,7 @@ export function nextTimeInterval(time0: string, time1: string, date: Date = new // Schedule for today at time b date.setHours(b[0]); date.setMinutes(b[1]); + date.setSeconds(0); return date.getTime(); } From e134dc2442251f47def1046425bb1af89eee5c8d Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Thu, 20 Jan 2022 15:53:05 +0000 Subject: [PATCH 297/892] Fixed source maps for Debug build (#8009) --- tasks/bundle-js.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tasks/bundle-js.js b/tasks/bundle-js.js index 60bed8eac499..4608d377b06b 100644 --- a/tasks/bundle-js.js +++ b/tasks/bundle-js.js @@ -130,6 +130,7 @@ async function bundleJS(/** @type {JSEntry} */entry, {debug, watch}) { noImplicitAny: debug ? false : true, removeComments: debug ? false : true, sourceMap: debug ? true : false, + inlineSources: debug ? true : false, noEmitOnError: true, cacheDir: debug ? `${fs.realpathSync(os.tmpdir())}/darkreader_typescript_cache` : null, }), From 625c3f9b78d512b978c1fcbffe30c5162ef4f725 Mon Sep 17 00:00:00 2001 From: Isaac <72410860+isaec@users.noreply.github.com> Date: Fri, 21 Jan 2022 03:24:07 -0800 Subject: [PATCH 298/892] Fix for sjc.cengagenow.com (#8001) --- src/config/dynamic-theme-fixes.config | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 218428eb96de..427fcde065e8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3548,6 +3548,30 @@ INVERT ================================ +cxp.cengage.com + +INVERT +.owl_item_container img[src*=".gif"] +.ci-feedback img[src*=".gif"] +label img[src*=".gif"] +span.MathJax_SVG + +CSS +.owl_item_container img[src*=".GIF"] { + background-color: ${black}; +} +font[color="white"] { + color: transparent !important; +} +div.tool-container.gradient > .controlButtons { + background-image: none; +} +div.tool-container.gradient { + box-shadow: none; +} + +================================ + cynkra.com INVERT From a0088ab44720cce50eb091500233c1c0930e9126 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Fri, 21 Jan 2022 04:29:36 -0700 Subject: [PATCH 299/892] Fix for onlyoffice.com (#8014) - Invert logo --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 427fcde065e8..c9c1b02478ea 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11307,6 +11307,13 @@ body { ================================ +onlyoffice.com + +INVERT +.logo + +================================ + op.gg INVERT From 240d24a0c9b37612c0453e67778518cf27187b5a Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Fri, 21 Jan 2022 14:47:24 +0000 Subject: [PATCH 300/892] Use native system controls dark theme (#8012) - Use color-scheme CSS property. - Fixed #5850. --- src/defaults.ts | 4 ++-- src/inject/dynamic-theme/modify-css.ts | 7 ++++++- src/utils/platform.ts | 9 +++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/defaults.ts b/src/defaults.ts index 335778f12b51..b29889ff0b54 100644 --- a/src/defaults.ts +++ b/src/defaults.ts @@ -1,7 +1,7 @@ import type {ParsedColorSchemeConfig} from './utils/colorscheme-parser'; import type {Theme, UserSettings} from './definitions'; import ThemeEngines from './generators/theme-engines'; -import {isMacOS, isWindows} from './utils/platform'; +import {isMacOS, isWindows, isCSSColorSchemePropSupported} from './utils/platform'; export const DEFAULT_COLORS = { darkScheme: { @@ -31,7 +31,7 @@ export const DEFAULT_THEME: Theme = { lightSchemeTextColor: DEFAULT_COLORS.lightScheme.text, scrollbarColor: isMacOS ? '' : 'auto', selectionColor: 'auto', - styleSystemControls: true, + styleSystemControls: !isCSSColorSchemePropSupported, lightColorScheme: 'Default', darkColorScheme: 'Default', }; diff --git a/src/inject/dynamic-theme/modify-css.ts b/src/inject/dynamic-theme/modify-css.ts index 9424e6fd4c55..f4c73a8a922c 100644 --- a/src/inject/dynamic-theme/modify-css.ts +++ b/src/inject/dynamic-theme/modify-css.ts @@ -10,7 +10,7 @@ import {getImageDetails, getFilteredImageDataURL, cleanImageProcessingCache} fro import type {CSSVariableModifier, VariablesStore} from './variables'; import {logWarn, logInfo} from '../../utils/log'; import type {FilterConfig, Theme} from '../../definitions'; -import {isFirefox} from '../../utils/platform'; +import {isFirefox, isCSSColorSchemePropSupported} from '../../utils/platform'; import type {parsedGradient} from '../../utils/parsing'; import {parseGradient} from '../../utils/parsing'; @@ -90,6 +90,11 @@ export function getModifiedUserAgentStyle(theme: Theme, isIFrame: boolean, style lines.push(` background-color: ${modifyBackgroundColor({r: 255, g: 255, b: 255}, theme)} !important;`); lines.push('}'); } + if (isCSSColorSchemePropSupported) { + lines.push('html {'); + lines.push(` color-scheme: ${theme.mode === 1 ? 'dark' : 'dark light'} !important;`); + lines.push('}'); + } lines.push(`${isIFrame ? '' : 'html, body, '}${styleSystemControls ? 'input, textarea, select, button' : ''} {`); lines.push(` background-color: ${modifyBackgroundColor({r: 255, g: 255, b: 255}, theme)};`); lines.push('}'); diff --git a/src/utils/platform.ts b/src/utils/platform.ts index d8b0f1dea979..5ab8ac088608 100644 --- a/src/utils/platform.ts +++ b/src/utils/platform.ts @@ -51,3 +51,12 @@ export const isXMLHttpRequestSupported = typeof XMLHttpRequest === 'function'; export const isFetchSupported = typeof fetch === 'function'; export const isMV3 = (globalThis as any).chrome && (globalThis as any).chrome.runtime && (globalThis as any).chrome.runtime.getManifest && (globalThis as any).chrome.runtime.getManifest().manifest_version === 3; + +export const isCSSColorSchemePropSupported = (() => { + if (typeof document === 'undefined') { + return false; + } + const el = document.createElement('div'); + el.setAttribute('style', 'color-scheme: dark'); + return el.style.colorScheme === 'dark'; +})(); From a95a68a317a234d731ed1e9af0261e5e1795c4f7 Mon Sep 17 00:00:00 2001 From: Harshil <37377066+harshil21@users.noreply.github.com> Date: Sat, 22 Jan 2022 19:28:29 +0400 Subject: [PATCH 301/892] Fix for metrics.torproject.org (#8006) - Nice metrics styling. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c9c1b02478ea..47bf716a670e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9868,6 +9868,23 @@ IGNORE IMAGE ANALYSIS ================================ +metrics.torproject.org + +INVERT +img[src^="/images/flags/"] +g > text +g > line + +CSS +.dot { + fill: var(--darkreader-neutral-background) !important; +} +div > img[src] { + filter: invert(90%) !important; +} + +================================ + mewe.com CSS From 64ff08d9e69341bd3ffd100b0163ec5e46d08097 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Sat, 22 Jan 2022 07:31:24 -0800 Subject: [PATCH 302/892] Fixes for costplusdrugs.com (#8025) - Resolves #8021 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 47bf716a670e..d6ea16eca9b8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3388,6 +3388,13 @@ input#search-btn ================================ +costplusdrugs.com + +INVERT +img[src$="MCCP-wordmark-denim.png"] + +================================ + courses.fit.cvut.cz CSS From 42947e37af4d00fab7e8329c8f528ba24f2686fa Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Sat, 22 Jan 2022 07:31:46 -0800 Subject: [PATCH 303/892] Fixes for cdc.gov (#8024) - Resolves #8023 --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d6ea16eca9b8..8a617368209f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2585,6 +2585,7 @@ cdc.gov INVERT .cdc-logo path[fill="#000"] +img[src="/niosh/images/si-no-left-vp4.png"] ================================ From 37c93975b61f70a7b647d84895036ed004acb10b Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Sat, 22 Jan 2022 07:32:29 -0800 Subject: [PATCH 304/892] Update security.md (#8026) --- SECURITY.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index c9f400ef31c0..911c3393bc3c 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -10,18 +10,17 @@ Latest version is supported. | Version | Supported | | --------- | ------------------ | -| 4.9.33 | :white_check_mark: | -| < 4.9.33 | :x: | +| 4.9.43 | :white_check_mark: | +| < 4.9.43 | :x: | ## Reporting a Vulnerability -In case there is a vulnerability left behind, immediately notify -to ; unless you can fix it yourself, -in which case open a pull request on -. - -Alexander Shutau, owner +In case there is a vulnerability, please immediately notify +. -"Gusted" William Zijl, maintainer +If you can fix it yourself, please also open a pull request at +. -Erkin Alp Güney, security policy author +Alexander Shutau, owner +"Gusted" William Zijl, maintainer +Erkin Alp Güney, security policy author From 9f879c655f3bdcf09dddcea2bc7c26695854a97a Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 22 Jan 2022 16:36:18 +0000 Subject: [PATCH 305/892] Fix for wikipedia.org (#8028) - Resolves #8027 --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8a617368209f..43c5850ee9a3 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16603,6 +16603,7 @@ div.post-content.footer-content > h2 > img body > .oo-ui-windowManager .vega .marks .minerva-footer-logo img .music-symbol +.tool.tool-button[src$="background-image:"] CSS .mwe-popups-discreet > svg, From 9302380f138e1258d42cbcc4a77a8702d2acdfca Mon Sep 17 00:00:00 2001 From: AAGaming Date: Sun, 23 Jan 2022 06:00:33 -0500 Subject: [PATCH 306/892] Added dark site (#8031) Co-authored-by: Gusted --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 2c96409b3d04..4d6ee239bd1c 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -496,6 +496,7 @@ kiwifarms.cc kiwifarms.net knockout.chat kodenames.io +kreatea.space kreato.cf krunker.io ksp.mff.cuni.cz From cc6b353c281a938a67486049000aa806c50c3f68 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 23 Jan 2022 11:02:50 +0000 Subject: [PATCH 307/892] Fix test argument order (#8032) - Jest expects that the first argument is the "modified" one and the `.toEqual(...)` to be the correct one. --- tests/config/config.tests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/config/config.tests.ts b/tests/config/config.tests.ts index 0c8c3235d4d9..7dab914e5a5c 100644 --- a/tests/config/config.tests.ts +++ b/tests/config/config.tests.ts @@ -48,7 +48,7 @@ test('Dark Sites list', async () => { expect(sites.every(isURLPatternValid)).toBe(true); // sites are sorted alphabetically - expect(sites).toEqual(sites.slice().sort(compareURLPatterns)); + expect(sites.slice().sort(compareURLPatterns)).toEqual(sites); // sites are properly formatted expect(throwIfDifferent(file, formatArray(sites), 'Dark Sites list format error')).not.toThrow(); From 23bdca9db19342b6b892eb97ff56a797e8344b51 Mon Sep 17 00:00:00 2001 From: Pieter Edwards Date: Mon, 24 Jan 2022 15:19:51 +0000 Subject: [PATCH 308/892] Added dark site (#8037) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 4d6ee239bd1c..3f2fe14c2d9a 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -862,6 +862,7 @@ sunxdcc.com supabase.io supinic.com support.steampowered.com +supremacy1914.com surviv.io svtplay.se symfony.com From 430ed16f431576b1f77c71f9dd343d736a844b09 Mon Sep 17 00:00:00 2001 From: "Igor \"ForumPlayer" Date: Mon, 24 Jan 2022 16:51:48 -0300 Subject: [PATCH 309/892] Added dark sites (#8042) --- src/config/dark-sites.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 3f2fe14c2d9a..ca3692b72f4d 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -139,6 +139,7 @@ bugmenot.com buildbot.orphis.net bungie.net byte.co +bytebin.lucko.me c-saccoccio.fr cadence.moe caesarshiba.com @@ -656,6 +657,7 @@ parahumans.wordpress.com paranoid.email parrotsec.org passthepopcorn.me +pastes.dev pathof.info pathofexile.com pathofexile.fandom.com @@ -827,6 +829,7 @@ slither.io snazzah.com spacebattles.com spacestationgaming.com +spark.lucko.me speedrun.com speedtest.net sportsurge.net From bc37dcc286e4137e2a7330e5d8daf97492dfd479 Mon Sep 17 00:00:00 2001 From: SparkScratch-P Date: Tue, 25 Jan 2022 01:44:10 -0800 Subject: [PATCH 310/892] Added Gruvbox color scheme (#8038) --- src/config/color-schemes.drconf | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config/color-schemes.drconf b/src/config/color-schemes.drconf index 5e8feaeed3c4..5e1403515ba7 100644 --- a/src/config/color-schemes.drconf +++ b/src/config/color-schemes.drconf @@ -18,6 +18,18 @@ text: #e8e6e3 ================================ +Gruvbox + +DARK +background: #282828 +text: #8ec07c + +LIGHT +background: #fbf1c7 +text: #427b58 + +================================ + Nord DARK @@ -39,3 +51,4 @@ text: #93a1a1 LIGHT background: #fdf6e3 text: #586e75 + From d543ec95b548a40977da2827e65e005abaa36461 Mon Sep 17 00:00:00 2001 From: Tyler Olson Date: Thu, 27 Jan 2022 12:53:18 -0800 Subject: [PATCH 311/892] Fix for webassign.net (#8045) - Fix top bar. --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 43c5850ee9a3..e5d34918ddf8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16313,6 +16313,18 @@ body { ================================ +webassign.net + +CSS +body { + color: var(--darkreader-neutral-text); +} +#webAssign { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + webbrowsertools.com CSS From 6f527d183a9a46b29f0e4615d893a394f25fcdef Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Fri, 28 Jan 2022 00:03:32 +0300 Subject: [PATCH 312/892] Fix for transport.orgp.spb.ru (#8049) - Invert map. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e5d34918ddf8..6f37f021e09f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15382,6 +15382,13 @@ INVERT ================================ +transport.orgp.spb.ru + +INVERT +#map + +================================ + trezor.io INVERT From d5b0e930bc8b7213e0cf1508f4bee48a57833eee Mon Sep 17 00:00:00 2001 From: Cl00e9ment Date: Thu, 27 Jan 2022 22:08:25 +0100 Subject: [PATCH 313/892] Added dark site (#8054) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index ca3692b72f4d..2db5a6d64e06 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -174,6 +174,7 @@ coinpot.co comicextra.com comicpunch.net conficturaindustries.com +connect-4.xyz coolmathgames.com copter.io corepacks.com From d2f2233a808ab002be61151046476298e2ecfa38 Mon Sep 17 00:00:00 2001 From: IronKyle38 <63471198+IronKyle38@users.noreply.github.com> Date: Thu, 27 Jan 2022 23:18:37 +0100 Subject: [PATCH 314/892] Fix for labfolder.com (#8055) - Correction for #7942 to include all icons. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 6f37f021e09f..d715a321590e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8573,9 +8573,10 @@ INVERT labfolder.com -INVERT -.header_btn svg -.lf-icon +CSS +:root { + --secondary-color: ${#002b56} !important; +} ================================ From 4ae86654e3b8f1abf33e45d4d8e3d63c975281c4 Mon Sep 17 00:00:00 2001 From: KornFlaks Date: Fri, 28 Jan 2022 05:22:19 -0500 Subject: [PATCH 315/892] Fix for instructure.com (#8057) - Better PDF inversion. --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d715a321590e..1108e6a31785 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7791,7 +7791,7 @@ instructure.com INVERT .equation_image -.ef-file-preview-stretch +.Page-container ================================ From cead10f50c87de972a700c222e22cb4775111353 Mon Sep 17 00:00:00 2001 From: Levi Date: Fri, 28 Jan 2022 07:11:20 -0500 Subject: [PATCH 316/892] Fix for osu.edu (#8048) - Fix backgrounds. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1108e6a31785..024a639a88b4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11496,6 +11496,21 @@ INVERT ================================ +osu.edu +ohio-state.edu + +CSS +#osu_navbar { + background-image: linear-gradient(rgb(40, 43, 45) 0%, rgb(63, 69, 71) 100%); + border-bottom: 5px solid rgb(187, 0, 0); +} +body.sidebar-layout #page #content, +#page #content { + background-image: none; +} + +================================ + otomoto.pl INVERT From e7cee19ac76dbf1dce5c23502229cbb77a2bc981 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sat, 29 Jan 2022 18:51:16 +0100 Subject: [PATCH 317/892] Fix for czasnastopy.pl (#8061) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 024a639a88b4..98d13ad4f56a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3602,6 +3602,13 @@ INVERT ================================ +czasnastopy.pl + +INVERT +.brandinglogo-wrap + +================================ + czypada.pl INVERT From a6252c6b8dc2da594648081133e0ed68696c62a1 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 29 Jan 2022 18:01:38 +0000 Subject: [PATCH 318/892] Fix for music.163.com (#8063) - Resolves #8062 --- src/config/dynamic-theme-fixes.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 98d13ad4f56a..36d435cedfff 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10380,6 +10380,11 @@ INVERT .m-table thead .u-btn2 .u-lv +.u-btn +.m-tabs +.n-srch .pgsrch +.n-srch .pgsrch .btn +.n-srch .pgsrch .srch CSS .n-myinfo { From 6dd91623a92f0e850840cc83ffa5e943c5566d2a Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 29 Jan 2022 20:59:05 +0000 Subject: [PATCH 319/892] Remove listening to sync updates (#8064) - This is causing more problems than it solves, debugging those problems are even harder than debugging normal problems. It's not worth it to keep this code around or to be maintaining it. - Resolves #8056 --- src/background/extension.ts | 2 +- src/background/user-storage.ts | 14 +------ src/background/utils/extension-api.ts | 16 -------- src/utils/mutex.ts | 54 --------------------------- 4 files changed, 3 insertions(+), 83 deletions(-) delete mode 100644 src/utils/mutex.ts diff --git a/src/background/extension.ts b/src/background/extension.ts index 1a40eeb7bd9d..ddbc0265b02a 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -62,7 +62,7 @@ export class Extension { getTabMessage: this.getTabMessage, onColorSchemeChange: this.onColorSchemeChange, }); - this.user = new UserStorage({onRemoteSettingsChange: () => this.onRemoteSettingsChange()}); + this.user = new UserStorage(); this.startBarrier = new PromiseBarrier(); this.stateManager = new StateManager(Extension.LOCAL_STORAGE_KEY, this, { isEnabled: null, diff --git a/src/background/user-storage.ts b/src/background/user-storage.ts index 4d9c15842c7d..f4d42733d98a 100644 --- a/src/background/user-storage.ts +++ b/src/background/user-storage.ts @@ -2,28 +2,18 @@ import {DEFAULT_SETTINGS, DEFAULT_THEME} from '../defaults'; import {debounce} from '../utils/debounce'; import {isURLMatched} from '../utils/url'; import type {UserSettings} from '../definitions'; -import {readSyncStorage, readLocalStorage, writeSyncStorage, writeLocalStorage, subscribeToOuterSettingsChange} from './utils/extension-api'; +import {readSyncStorage, readLocalStorage, writeSyncStorage, writeLocalStorage} from './utils/extension-api'; import {logWarn} from '../utils/log'; import {PromiseBarrier} from '../utils/promise-barrier'; const SAVE_TIMEOUT = 1000; -interface UserStorageOptions { - onRemoteSettingsChange: () => void; -} - export default class UserStorage { private loadBarrier: PromiseBarrier; private saveStorageBarrier: PromiseBarrier; - constructor({onRemoteSettingsChange}: UserStorageOptions) { + constructor() { this.settings = null; - subscribeToOuterSettingsChange(async () => { - if (this.settings.syncSettings) { - await this.loadSettings(); - onRemoteSettingsChange(); - } - }); } settings: Readonly; diff --git a/src/background/utils/extension-api.ts b/src/background/utils/extension-api.ts index ab3720d7a6bc..5482b83ca2a3 100644 --- a/src/background/utils/extension-api.ts +++ b/src/background/utils/extension-api.ts @@ -1,6 +1,5 @@ import {isPDF} from '../../utils/url'; import {isFirefox, isEdge} from '../../utils/platform'; -import {Mutex} from '../../utils/mutex'; declare const browser: { commands: { @@ -38,8 +37,6 @@ export function canInjectScript(url: string) { ); } -const mutexStorageWriting = new Mutex(); - export async function readSyncStorage(defaults: T): Promise { return new Promise((resolve) => { chrome.storage.sync.get(null, (sync: any) => { @@ -123,37 +120,24 @@ function prepareSyncStorage(values: T): {[key: s export async function writeSyncStorage(values: T): Promise { return new Promise(async (resolve, reject) => { const packaged = prepareSyncStorage(values); - await mutexStorageWriting.lock(); chrome.storage.sync.set(packaged, () => { if (chrome.runtime.lastError) { reject(chrome.runtime.lastError); - mutexStorageWriting.unlock(); return; } resolve(); - setTimeout(() => mutexStorageWriting.unlock(), 500); }); }); } export async function writeLocalStorage(values: T): Promise { return new Promise(async (resolve) => { - await mutexStorageWriting.lock(); chrome.storage.local.set(values, () => { resolve(); - setTimeout(() => mutexStorageWriting.unlock(), 500); }); }); } -export const subscribeToOuterSettingsChange = (callback: () => void) => { - chrome.storage.onChanged.addListener((_, storageArea) => { - if (storageArea === 'sync' && !mutexStorageWriting.isLocked()) { - callback(); - } - }); -}; - export async function getCommands() { return new Promise((resolve) => { if (!chrome.commands) { diff --git a/src/utils/mutex.ts b/src/utils/mutex.ts deleted file mode 100644 index aa9d83395c0b..000000000000 --- a/src/utils/mutex.ts +++ /dev/null @@ -1,54 +0,0 @@ -import {logWarn} from './log'; - -/** - * This is the Mutex(Not to confuse with RW-Mutex). - * This is to ensure that certain access are only done by 1 callback(a current fallpit of PromiseBarrier). - * This ensures that their is a global mutex which can be called by a finite amount of callbacks. - * We should ensure that the mutex can only be locked by the first callback which has requrested it - * and only give the next callback the mutex lock once it's been released. - */ -export class Mutex { - private awaitingResolves = [] as Array<() => void>; - private locked = false; - - public isLocked() { - return this.locked; - } - - // Request a lock from the mutex. - // It should only return/resolve once the lock is granted. - public async lock() { - // Easiest path, the mutex is not locked. - // We lock the mutex and check if the mutex is locked. - // If it is locked, we wait for the mutex to be unlocked. - if (!this.locked) { - this.locked = true; - return; - } - return new Promise((resolve) => { - // Harder path, we will push the resolve - // into the array and let it be for now. - this.awaitingResolves.push(resolve); - }); - } - - // Unlock the mutex. - public unlock() { - if (!this.locked) { - logWarn('An unlocked mutex was tried to be unlocked.'); - return; - } - this.locked = false; - setTimeout(() => this.executeNextOperation()); - } - - // Execute the next lock actions. - private executeNextOperation() { - if (this.awaitingResolves.length > 0) { - // Get the first entry. - const resolve = this.awaitingResolves.shift(); - // Simply execute the resolve. - resolve(); - } - } -} From 877a468ccb1dbf6ddc734e220eff3eafbd14eef9 Mon Sep 17 00:00:00 2001 From: Cole <60896433+colelamers@users.noreply.github.com> Date: Sun, 30 Jan 2022 03:39:07 -0600 Subject: [PATCH 320/892] Fix for amazon.com (#8058) - Fix side panel shopping cart. Co-authored-by: Gusted --- src/config/inversion-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/inversion-fixes.config b/src/config/inversion-fixes.config index b8172cbc28a8..aaeb786de3d9 100644 --- a/src/config/inversion-fixes.config +++ b/src/config/inversion-fixes.config @@ -114,6 +114,9 @@ CSS #nav-flyout-ewc { margin-right: -220px; } +.nav-flyout-body { + height: 100% !important; +} ================================ From d95cd8e56661ba680e54f77c4fb95954e911c4dd Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Sun, 30 Jan 2022 17:39:21 +0800 Subject: [PATCH 321/892] Fix for onlinelibrary.wiley.com (#8065) Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 36d435cedfff..d67cebd66f34 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11324,6 +11324,13 @@ INVERT ================================ +onlinelibrary.wiley.com + +INVERT +#mainLogo + +================================ + onlinetrade.ru INVERT From 8276894d6ecd51c7809087e6b749b0b705554926 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 30 Jan 2022 10:41:45 +0100 Subject: [PATCH 322/892] Fix for setupbits.com (#8066) - Invert logo. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d67cebd66f34..45cc59f47d07 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13380,6 +13380,14 @@ INVERT ================================ +setupbits.com + +INVERT +.td-header-logo +.td-main-logo + +================================ + share.dmhy.org CSS From 14ceb48aeb3e8f308dd33099d7d018c51841afb8 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 30 Jan 2022 10:42:08 +0100 Subject: [PATCH 323/892] Fix for sematext.com (#8068) - Invert logo. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 45cc59f47d07..e4768f5ef7a7 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13295,6 +13295,14 @@ CSS ================================ +sematext.com + +INVERT +#logo +.sematext-clients-gamma figure + +================================ + sembr.org CSS From 6fd93dc965800cfb1d7ae43f6e289ed07c24f07a Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 30 Jan 2022 10:27:03 +0000 Subject: [PATCH 324/892] Fix for cnbc.com (#8070) - Resolves #8069 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e4768f5ef7a7..5c88f90228db 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2933,6 +2933,13 @@ INVERT ================================ +cnbc.com + +INVERT +img[alt="logo"] + +================================ + cnki.net INVERT From 373d751bdf73cc042417c96eaac7f4a3133dc794 Mon Sep 17 00:00:00 2001 From: Anish De <63192115+AnishDe12020@users.noreply.github.com> Date: Tue, 1 Feb 2022 00:24:03 +0530 Subject: [PATCH 325/892] Added dark site (#8074) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 2db5a6d64e06..fe27e63b9e46 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -932,6 +932,7 @@ tuner.ninja tusharsadhwani.dev twelvesmith.com twist.moe +twnft.vercel.app tycrek.com tynker.com/ide typing.works From ad7679e8c92dd003f91bf1a1f99be091803c1715 Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Mon, 31 Jan 2022 21:56:00 +0300 Subject: [PATCH 326/892] Fix for blog.scssoft.com (#8075) - Remove background image and background color. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5c88f90228db..db86b76da343 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2077,6 +2077,15 @@ CSS ================================ +blog.scssoft.com + +CSS +body { + background: none !important; +} + +================================ + blogger.com INVERT From 1bd8b3f52908bdad55d9bb90c840215bbb89e3b0 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 31 Jan 2022 20:04:12 +0100 Subject: [PATCH 327/892] Fix for linuxuprising.com (#8076) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index db86b76da343..820d0424fd4c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9021,6 +9021,13 @@ body { ================================ +linuxuprising.com + +INVERT +.logo + +================================ + lirc.org CSS From d01fe3ef49b7a3ea7df8aca1da961cbef42b2ef6 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 31 Jan 2022 20:08:32 +0100 Subject: [PATCH 328/892] Fix for pch24.pl (#8078) - Invert logo. --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 820d0424fd4c..da8136631893 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11744,6 +11744,18 @@ li.level0 > a:hover { ================================ +pch24.pl + +INVERT +a[href="https://pch24.pl"] svg + +CSS +a[href="https://pch24.pl"] svg path[fill="#1d1e1d"] { + --darkreader-inline-fill: ${white} !important; +} + +================================ + pcpartpicker.com IGNORE INLINE STYLE From af62b35c162821e25b7453745378c88d5f373bcc Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 31 Jan 2022 20:10:29 +0100 Subject: [PATCH 329/892] Fix for messenger.com (#8077) This fixes a part of the input box that isn't styled. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index da8136631893..920035002009 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9851,6 +9851,9 @@ CSS .j7vl6m33, .a8c37x1j, .bp9cbjyn, mask[id*="jsc_c"] > circle { fill: var(--always-white) !important; } +.a8c37x1j > rect { + fill: var(--darkreader-bg--fds-white) !important; +} :root, .__fb-light-mode { --filter-disabled-icon: invert(100%) opacity(30%) !important; --filter-placeholder-icon: invert(59%) sepia(11%) saturate(200%) saturate(135%) hue-rotate(176deg) brightness(96%) contrast(94%) !important; From a4b62676305b3ccf241e6426ba2d6ea46a34c1d1 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 31 Jan 2022 20:43:49 +0100 Subject: [PATCH 330/892] Fix for x-kom.pl (#8079) - Invert logo. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 920035002009..1045fc4bba92 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17522,6 +17522,9 @@ img[alt*="Logo"] img[src*="Logo_strefy_marek"] img[src*="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iM"] img[src*="data:image/svg+xml;base64,PHN2ZyB4bWxucz0ia"] +.geex a img +a[href="https://geex.x-kom.pl/"] img +img[alt="Geex logotyp"] CSS .ePVVIv { From 4ac452bdfb6da20d2e8ff877b6ebafd0d9e3ed2b Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 31 Jan 2022 21:24:59 +0100 Subject: [PATCH 331/892] Pass `title` attribute on chromium as well (#8081) - Resolves #8080 --- src/inject/dynamic-theme/style-manager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/inject/dynamic-theme/style-manager.ts b/src/inject/dynamic-theme/style-manager.ts index 32c5f8129a0e..7865ee7bfdbf 100644 --- a/src/inject/dynamic-theme/style-manager.ts +++ b/src/inject/dynamic-theme/style-manager.ts @@ -187,7 +187,7 @@ export function manageStyle(element: StyleElement, {update, loadingStart, loadin syncStyle.classList.add('darkreader'); syncStyle.classList.add('darkreader--sync'); syncStyle.media = 'screen'; - if (!isChromium && element.title) { + if (element.title) { syncStyle.title = element.title; } syncStyleSet.add(syncStyle); From ef693080cede3b27941ffb197a2bfa9a5e99033c Mon Sep 17 00:00:00 2001 From: FadeMind Date: Mon, 31 Jan 2022 21:38:43 +0100 Subject: [PATCH 332/892] Fix for msi.com (#8083) --- src/config/dynamic-theme-fixes.config | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1045fc4bba92..e901734df8ea 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10313,6 +10313,21 @@ INVERT ================================ +msi.com + +INVERT +a.logo +.site-logo +.site-header-menu-toggle--button span +.flickity-button-icon + +CSS +#MSI_Support .top-headBg { + background-image: none !important; +} + +================================ + msmgtoolkit.in CSS From 296d7a37a1611864f0ad6dfc37fa147480d17929 Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Tue, 1 Feb 2022 10:53:54 -0600 Subject: [PATCH 333/892] Improve readme (#8086) --- README.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index d5e20992f24e..795bb7a55cce 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@
-

Dark Reader analyzes web pages and aims to reduce the eyestrain while you browse the web.

+

Dark Reader analyzes web pages and aims to reduce the eyestrain while browsing the web.


Chrome Web Store Firefox Add-ons Apple App Store Edge Addons Thunderbird

Dark Reader


-

Dark Reader is an open-source MIT-licensed browser extension that is designed to analyze web pages. Based on its analysis, Dark Reader will generate a dark mode that aims to reduce the eyestrain of the user. Dark Reader is feature-rich and can be configured in many ways throughout the UI.

+

Dark Reader is an open-source MIT-licensed browser extension designed to analyze web pages. Dark Reader will generate a dark mode that aims to reduce the eyestrain of the user. Dark Reader is feature-rich and is customizable in many ways throughout the UI.



@@ -102,27 +102,28 @@ However, this can be enabled by the following steps: - Click on the Dark Reader icon. - Click on the Dev tools button (in the bottom-right corner). - Click on the Preview new design button. -- Enable the `Synchronize site fixes` setting, under `Settings -> Manage Settings`. +- Enable the `Synchronize site fixes` setting under `Settings -> Manage Settings`.

Contributors


-

Dark Reader exists thanks to all the people who have contributed to Dark Reader!

+

Thank you to all our contributors! Dark Reader exists thanks to you.



Backers


-

Thank you to all our generous backers! Support Dark Reader by Becoming a backer

+

Thank you to all our generous backers! Support Dark Reader by becoming a backer.



Sponsors

-

Does your company use Dark Reader? Ask your manager or the marketing team if your company would be interested in supporting our project. By supporting this project, it will allow the maintainers to dedicate more time for maintenance and new features for everyone. Also, your company's logo will show on GitHub - who doesn't want a little extra exposure? Here's the info.

- -

Thank you to our wonderful sponsors!

+

Does your company use Dark Reader? Ask your manager or the marketing team if your company would be interested in supporting our project. Your support will allow the maintainers to dedicate more time for maintenance and new features for everyone. Also, your company's logo will show on GitHub. Who doesn't want a little extra exposure? Here's the info.

+

Thank you to all our wonderful sponsors!

+
+
From 53d28f5225671d63ca27d67e78c3ac30b38e3928 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 1 Feb 2022 17:58:32 +0100 Subject: [PATCH 334/892] Remove unneeded import (#8093) --- src/inject/dynamic-theme/style-manager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/inject/dynamic-theme/style-manager.ts b/src/inject/dynamic-theme/style-manager.ts index 7865ee7bfdbf..83000a8ffaf2 100644 --- a/src/inject/dynamic-theme/style-manager.ts +++ b/src/inject/dynamic-theme/style-manager.ts @@ -7,7 +7,7 @@ import {logInfo, logWarn} from '../../utils/log'; import {replaceCSSRelativeURLsWithAbsolute, removeCSSComments, replaceCSSFontFace, getCSSURLValue, cssImportRegex, getCSSBaseBath} from './css-rules'; import {bgFetch} from './network'; import {createStyleSheetModifier} from './stylesheet-modifier'; -import {isShadowDomSupported, isSafari, isThunderbird, isChromium, isFirefox} from '../../utils/platform'; +import {isShadowDomSupported, isSafari, isThunderbird, isFirefox} from '../../utils/platform'; declare global { interface Document { From 893c7b5796abeae710c8f075b0caf81db13ade27 Mon Sep 17 00:00:00 2001 From: Roland Fredenhagen Date: Tue, 1 Feb 2022 18:12:00 +0100 Subject: [PATCH 335/892] Fix theme for paste.rs (#8087) --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e901734df8ea..695c3af3076f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11713,6 +11713,15 @@ INVERT ================================ +paste.rs + +CSS +pre { + --darkreader-inline-bgcolor: var(--darkreader-neutral-background) !important; +} + +================================ + paulgraham.com CSS From 9a0d13ab3f2ba62db1f800c4d456521a17f9ac84 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 1 Feb 2022 18:13:39 +0100 Subject: [PATCH 336/892] Fix for msi.com (#8094) --- src/config/dynamic-theme-fixes.config | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 695c3af3076f..e066d0427d0c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10325,6 +10325,10 @@ CSS #MSI_Support .top-headBg { background-image: none !important; } +.related__link > .related__title, +.service__link > .service__head { + z-index: 1 !important; +} ================================ From 57506cda9d4e7b7d4c01a57327d10b8a9f6e1552 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Tue, 1 Feb 2022 17:32:10 +0000 Subject: [PATCH 337/892] Styles for Automation Behavior button (#8096) --- src/ui/popup/automation-page/index.tsx | 12 +++++------ src/ui/popup/automation-page/style.less | 27 +++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/ui/popup/automation-page/index.tsx b/src/ui/popup/automation-page/index.tsx index d05067602ad4..ab192ef61f13 100644 --- a/src/ui/popup/automation-page/index.tsx +++ b/src/ui/popup/automation-page/index.tsx @@ -71,7 +71,7 @@ export default function AutomationPage(props: ViewProps) {
props.actions.changeSettings({automation: e.target.checked ? 'time' : ''})} + onchange={(e: {target: {checked: boolean}}) => props.actions.changeSettings({automation: e.target.checked ? 'time' : ''})} /> props.actions.changeSettings({automation: e.target.checked ? 'location' : ''})} + onchange={(e: {target: {checked: boolean}}) => props.actions.changeSettings({automation: e.target.checked ? 'location' : ''})} /> locationChanged(e.target, e.target.value, 'latitude')} + onchange={(e: {target: HTMLInputElement}) => locationChanged(e.target, e.target.value, 'latitude')} oncreate={(node: HTMLInputElement) => node.value = getLocationString(locationSettings.latitude)} onkeypress={(e) => { if (e.key === 'Enter') { @@ -101,7 +101,7 @@ export default function AutomationPage(props: ViewProps) { locationChanged(e.target, e.target.value, 'longitude')} + onchange={(e: {target: HTMLInputElement}) => locationChanged(e.target, e.target.value, 'longitude')} oncreate={(node: HTMLInputElement) => node.value = getLocationString(locationSettings.longitude)} onkeypress={(e) => { if (e.key === 'Enter') { @@ -121,7 +121,7 @@ export default function AutomationPage(props: ViewProps) { props.actions.changeSettings({automation: e.target.checked ? 'system' : ''})} + onchange={(e: {target: {checked: boolean}}) => props.actions.changeSettings({automation: e.target.checked ? 'system' : ''})} />
); diff --git a/src/ui/popup/automation-page/style.less b/src/ui/popup/automation-page/style.less index a9c5c9e46afd..723e705fc867 100644 --- a/src/ui/popup/automation-page/style.less +++ b/src/ui/popup/automation-page/style.less @@ -1,6 +1,9 @@ @import "../../theme"; .automation-page { + display: flex; + flex-direction: column; + &__button--active { background: @color-control-active; @@ -125,4 +128,28 @@ .toggle { width: 100%; } + + .dropdown { + background-color: transparent; + box-shadow: inset 0 0 0 @size-border @color-border; + height: @size-control-inner + 2 * @size-border; + margin-top: @indent-small; + } + + .dropdown__selected { + background-color: transparent; + background-position: center right 0.25rem + @size-border; + height: @size-control-inner; + margin-top: @size-border; + } + + .dropdown--open .dropdown__list { + border: @size-border solid @color-border; + margin-top: 0; + padding-top: @size-border; + } + + .dropdown__list__item { + height: @size-control-inner; + } } From d39a1b8eef12f81704928f8382ce4886c97fb5b3 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Tue, 1 Feb 2022 18:33:17 +0100 Subject: [PATCH 338/892] Fix for msi.com (#8095) - Fix support page. --- src/config/dynamic-theme-fixes.config | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e066d0427d0c..d43c394300e6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10322,7 +10322,9 @@ a.logo .flickity-button-icon CSS -#MSI_Support .top-headBg { +#MSI_Support .top-headBg, +#MSI_Support .top-head, +#MSI_Support .main-contact-support { background-image: none !important; } .related__link > .related__title, From ae18610d9f6070dd0df1d3a0440fbed004c1c5a4 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Tue, 1 Feb 2022 17:41:55 +0000 Subject: [PATCH 339/892] Use Open Collective Donate page (#8097) --- package.json | 2 +- src/utils/links.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9480adb3c5ad..ee8907e96d17 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "homepage": "https://darkreader.org/", "funding": { "type": "opencollective", - "url": "https://opencollective.com/darkreader" + "url": "https://opencollective.com/darkreader/donate" }, "devDependencies": { "@rollup/plugin-node-resolve": "13.1.3", diff --git a/src/utils/links.ts b/src/utils/links.ts index dbe55f865e35..303d30bc8dfd 100644 --- a/src/utils/links.ts +++ b/src/utils/links.ts @@ -2,7 +2,7 @@ import {getUILanguage} from './locales'; export const BLOG_URL = 'https://darkreader.org/blog/'; export const DEVTOOLS_DOCS_URL = 'https://github.com/darkreader/darkreader/blob/master/CONTRIBUTING.md'; -export const DONATE_URL = 'https://opencollective.com/darkreader'; +export const DONATE_URL = 'https://opencollective.com/darkreader/donate'; export const GITHUB_URL = 'https://github.com/darkreader/darkreader'; export const PRIVACY_URL = 'https://darkreader.org/privacy/'; export const TWITTER_URL = 'https://twitter.com/darkreaderapp'; From 899ef8aacde11c96e2705c7c1fd178c0146a28b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Feb 2022 17:45:35 +0000 Subject: [PATCH 340/892] Bump nanoid from 3.1.30 to 3.2.0 (#8099) Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.30 to 3.2.0. - [Release notes](https://github.com/ai/nanoid/releases) - [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md) - [Commits](https://github.com/ai/nanoid/compare/3.1.30...3.2.0) --- updated-dependencies: - dependency-name: nanoid dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index f02e92e03efa..8b7c1a918638 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,7 +50,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/darkreader" + "url": "https://opencollective.com/darkreader/donate" } }, "node_modules/@babel/code-frame": { @@ -8550,9 +8550,9 @@ "optional": true }, "node_modules/nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -18835,9 +18835,9 @@ "optional": true }, "nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true }, "natural-compare": { From 575f4dcb94190fdc830b44eb2aa7420c155838fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Feb 2022 17:46:04 +0000 Subject: [PATCH 341/892] Bump log4js from 6.3.0 to 6.4.1 (#8098) Bumps [log4js](https://github.com/log4js-node/log4js-node) from 6.3.0 to 6.4.1. - [Release notes](https://github.com/log4js-node/log4js-node/releases) - [Changelog](https://github.com/log4js-node/log4js-node/blob/master/CHANGELOG.md) - [Commits](https://github.com/log4js-node/log4js-node/compare/v6.3.0...v6.4.1) --- updated-dependencies: - dependency-name: log4js dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 210 +++++++++++++++++++--------------------------- 1 file changed, 87 insertions(+), 123 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8b7c1a918638..8a3fa32f184d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3485,9 +3485,9 @@ } }, "node_modules/date-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", - "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.3.tgz", + "integrity": "sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ==", "dev": true, "engines": { "node": ">=4.0" @@ -5441,9 +5441,9 @@ } }, "node_modules/flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, "node_modules/fluent-syntax": { @@ -5561,6 +5561,20 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, + "node_modules/fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -8160,26 +8174,37 @@ "dev": true }, "node_modules/log4js": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", - "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.1.tgz", + "integrity": "sha512-iUiYnXqAmNKiIZ1XSAitQ4TmNs8CdZYTAWINARF3LjnsLN8tY5m0vRwd6uuWj/yNY0YHxeZodnbmxKFUOM2rMg==", "dev": true, "dependencies": { - "date-format": "^3.0.0", - "debug": "^4.1.1", - "flatted": "^2.0.1", - "rfdc": "^1.1.4", - "streamroller": "^2.2.4" + "date-format": "^4.0.3", + "debug": "^4.3.3", + "flatted": "^3.2.4", + "rfdc": "^1.3.0", + "streamroller": "^3.0.2" }, "engines": { "node": ">=8.0" } }, - "node_modules/log4js/node_modules/flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true + "node_modules/log4js/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } }, "node_modules/lowercase-keys": { "version": "1.0.1", @@ -10737,60 +10762,19 @@ } }, "node_modules/streamroller": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", - "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.2.tgz", + "integrity": "sha512-ur6y5S5dopOaRXBuRIZ1u6GC5bcEXHRZKgfBjfCglMhmIf+roVCECjvkEYzNQOXIN2/JPnkMPW/8B3CZoKaEPA==", "dev": true, "dependencies": { - "date-format": "^2.1.0", + "date-format": "^4.0.3", "debug": "^4.1.1", - "fs-extra": "^8.1.0" + "fs-extra": "^10.0.0" }, "engines": { "node": ">=8.0" } }, - "node_modules/streamroller/node_modules/date-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", - "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/streamroller/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/streamroller/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/streamroller/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -14864,9 +14848,9 @@ } }, "date-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", - "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.3.tgz", + "integrity": "sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ==", "dev": true }, "debounce": { @@ -16429,9 +16413,9 @@ } }, "flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, "fluent-syntax": { @@ -16522,6 +16506,17 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -18524,23 +18519,26 @@ "dev": true }, "log4js": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", - "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.1.tgz", + "integrity": "sha512-iUiYnXqAmNKiIZ1XSAitQ4TmNs8CdZYTAWINARF3LjnsLN8tY5m0vRwd6uuWj/yNY0YHxeZodnbmxKFUOM2rMg==", "dev": true, "requires": { - "date-format": "^3.0.0", - "debug": "^4.1.1", - "flatted": "^2.0.1", - "rfdc": "^1.1.4", - "streamroller": "^2.2.4" + "date-format": "^4.0.3", + "debug": "^4.3.3", + "flatted": "^3.2.4", + "rfdc": "^1.3.0", + "streamroller": "^3.0.2" }, "dependencies": { - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } } } }, @@ -20531,48 +20529,14 @@ } }, "streamroller": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", - "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.2.tgz", + "integrity": "sha512-ur6y5S5dopOaRXBuRIZ1u6GC5bcEXHRZKgfBjfCglMhmIf+roVCECjvkEYzNQOXIN2/JPnkMPW/8B3CZoKaEPA==", "dev": true, "requires": { - "date-format": "^2.1.0", + "date-format": "^4.0.3", "debug": "^4.1.1", - "fs-extra": "^8.1.0" - }, - "dependencies": { - "date-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", - "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - } + "fs-extra": "^10.0.0" } }, "strict-uri-encode": { From a271688282352cdaa8cb86a75726b4e8d4d3eb27 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Tue, 1 Feb 2022 20:01:59 +0100 Subject: [PATCH 342/892] Fix for terazwy.pl (#8100) - Invert logo. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d43c394300e6..e0f8809bf753 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14923,6 +14923,14 @@ INVERT ================================ +terazwy.pl + +INVERT +img[src*="img/loga"] +img[src*="img/logotr.png"] + +================================ + terraform.io IGNORE INLINE STYLE From e4d32922280cb1b2140533a8f385abb1cb22af57 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 1 Feb 2022 20:28:20 +0100 Subject: [PATCH 343/892] Don't touch `this.isEnabled` when Scheme is the automation behavior (#8102) - When `this.user.settings.automationBehaviour === 'Scheme'` is true, we don't mess around with `this.Enabled` from the `recalculateIsEnabled` function and rather only use it's result to set the correct scheme without affecting to disable the whole extension. --- src/background/extension.ts | 39 ++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/src/background/extension.ts b/src/background/extension.ts index ddbc0265b02a..9a8f7e8a83f6 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -90,51 +90,68 @@ export class Extension { } }; - recalculateIsEnabled(): boolean { + private recalculateIsEnabled(): boolean { + const {isEnabled, error} = this.calculateIsEnabled(); + if (!error) { + this.isEnabled = isEnabled; + } + return isEnabled; + } + + private calculateIsEnabled(): {isEnabled: boolean; error: boolean} { if (!this.user.settings) { logWarn('Extension.isEnabled() was called before Extension.user.settings is available.'); - return false; + return {isEnabled: false, error: true}; } const {automation} = this.user.settings; + + let isEnabled: boolean; let nextCheck: number; switch (automation) { case 'time': - this.isEnabled = isInTimeIntervalLocal(this.user.settings.time.activation, this.user.settings.time.deactivation); + isEnabled = isInTimeIntervalLocal(this.user.settings.time.activation, this.user.settings.time.deactivation); nextCheck = nextTimeInterval(this.user.settings.time.activation, this.user.settings.time.deactivation); break; case 'system': if (isMV3) { logWarn('system automation is not yet supported. Defaulting to ON.'); - this.isEnabled = true; + isEnabled = true; break; } if (isFirefox) { // BUG: Firefox background page always matches initial color scheme. - this.isEnabled = this.wasLastColorSchemeDark == null + isEnabled = this.wasLastColorSchemeDark == null ? isSystemDarkModeEnabled() : this.wasLastColorSchemeDark; } else { - this.isEnabled = isSystemDarkModeEnabled(); + isEnabled = isSystemDarkModeEnabled(); } break; case 'location': { const {latitude, longitude} = this.user.settings.location; if (latitude != null && longitude != null) { - this.isEnabled = isNightAtLocation(latitude, longitude); + isEnabled = isNightAtLocation(latitude, longitude); nextCheck = nextTimeChangeAtLocation(latitude, longitude); } break; } default: - this.isEnabled = this.user.settings.enabled; + isEnabled = this.user.settings.enabled; break; } if (nextCheck) { chrome.alarms.create(Extension.ALARM_NAME, {when: nextCheck}); } - return this.isEnabled; + + // This check is after the `switch` expression, because we still want + // to add a nextCheck if needed`. + if (this.user.settings.automationBehaviour === 'Scheme') { + return {isEnabled: this.user.settings.enabled, error: false}; + } + + return {isEnabled, error: false}; } async start() { @@ -390,8 +407,8 @@ export class Extension { private handleAutomationCheck = () => { if (this.user.settings.automationBehaviour === 'Scheme') { - this.recalculateIsEnabled(); - if (this.isEnabled) { + const {isEnabled} = this.calculateIsEnabled(); + if (isEnabled) { // Dark this.changeSettings({theme: {...this.user.settings.theme, ...{mode: 1}}}); } else { From 115864ff4a7f42c15ccd1f2b7b09e01f54001c3c Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Tue, 1 Feb 2022 11:31:17 -0800 Subject: [PATCH 344/892] Fix cnbc.com (dynamic) (#8101) --- src/config/dynamic-theme-fixes.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e0f8809bf753..b96fc42e1d73 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2947,6 +2947,11 @@ cnbc.com INVERT img[alt="logo"] +CSS +div[class^="FeaturedStories-styles-makeit-background"]::before { + opacity: 0.1 !important; +} + ================================ cnki.net From 26b6b7ab1f975e6a7081ce5d776ae634a56b9bc3 Mon Sep 17 00:00:00 2001 From: Ahmad Hashem Date: Wed, 2 Feb 2022 12:50:20 -0500 Subject: [PATCH 345/892] Fix for royalbank.com (#8105) - Fix dropdown menu. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b96fc42e1d73..d4cab9544b45 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12975,6 +12975,15 @@ IGNORE IMAGE ANALYSIS ================================ +royalbank.com + +CSS +.rbc-select-input { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + rp.pl INVERT From 0cf38abdf511ee7fdf25be2ea39bf10c1e2c4e45 Mon Sep 17 00:00:00 2001 From: vonmaster <43321841+vonmaster@users.noreply.github.com> Date: Wed, 2 Feb 2022 19:00:12 +0100 Subject: [PATCH 346/892] Fix for tastoid.com (#8071) - Fixed a white text on white background on certain pages. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d4cab9544b45..63776e2afe0c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14821,6 +14821,15 @@ INVERT ================================ +tastoid.com/ + +CSS +.jumbotron.jumbotron-no-bg { + background: var(--darkreader-neutral-background) !important; +} + +================================ + tcrf.net CSS From a3c10981316e33431030d69b1bea1e78c4640956 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Wed, 2 Feb 2022 19:02:07 +0100 Subject: [PATCH 347/892] Fix for linustechtips.com (#8106) - Fix menu. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 63776e2afe0c..36af1d673335 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8999,6 +8999,9 @@ INVERT linustechtips.com +INVERT +.ipsMenu + CSS .ipsBadge, a.ipsBadge { From 9d776ea2fac6c422c90a874c60a83118a01bbfec Mon Sep 17 00:00:00 2001 From: aronkvh <57704946+aronkvh@users.noreply.github.com> Date: Wed, 2 Feb 2022 19:04:40 +0100 Subject: [PATCH 348/892] Added dark sites (#8107) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index fe27e63b9e46..67daacd25380 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -33,6 +33,7 @@ animixplay.to animk.info anishde.dev anon.sx +antalbiztonsag.com aonprd.com app.destinyitemmanager.com app.keeweb.info From f9746049d6637559215b980d846e126af05a930a Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 2 Feb 2022 19:08:34 +0100 Subject: [PATCH 349/892] Fix for shop.surfboard.com (#8111) - Resolves #8108 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 36af1d673335..12e9be3cab75 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13526,6 +13526,15 @@ CSS ================================ +shop.surfboard.com + +CSS +.homepage { + background-image: none !important; +} + +================================ + shopify.com shopify.dev From f51b5edeaa9b90c58e6c534b027e2a3a6a600268 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 2 Feb 2022 19:23:25 +0100 Subject: [PATCH 350/892] Added dark sites (#8112) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 67daacd25380..81447474e398 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -321,6 +321,7 @@ fallout-area.de femto.dev femto.pw fictivekin.com +filmmakermode.com filterblade.xyz filterlists.com find.lolpros.gg From 42d1fd1a810d7953cb665813eb0a9882e62fa18f Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Wed, 2 Feb 2022 21:49:41 +0000 Subject: [PATCH 351/892] Fixed extra comma in user agent override (#8116) - Fixed extra comma in selectors. - Fixed failing tests. --- src/inject/dynamic-theme/modify-css.ts | 15 +++++++++++---- tests/inject/karma.conf.js | 1 + 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/inject/dynamic-theme/modify-css.ts b/src/inject/dynamic-theme/modify-css.ts index f4c73a8a922c..c8878c4d557f 100644 --- a/src/inject/dynamic-theme/modify-css.ts +++ b/src/inject/dynamic-theme/modify-css.ts @@ -83,6 +83,10 @@ export function getModifiableCSSDeclaration( return null; } +function joinSelectors(...selectors: string[]) { + return selectors.filter(Boolean).join(', '); +} + export function getModifiedUserAgentStyle(theme: Theme, isIFrame: boolean, styleSystemControls: boolean) { const lines: string[] = []; if (!isIFrame) { @@ -95,10 +99,13 @@ export function getModifiedUserAgentStyle(theme: Theme, isIFrame: boolean, style lines.push(` color-scheme: ${theme.mode === 1 ? 'dark' : 'dark light'} !important;`); lines.push('}'); } - lines.push(`${isIFrame ? '' : 'html, body, '}${styleSystemControls ? 'input, textarea, select, button' : ''} {`); - lines.push(` background-color: ${modifyBackgroundColor({r: 255, g: 255, b: 255}, theme)};`); - lines.push('}'); - lines.push(`html, body, ${styleSystemControls ? 'input, textarea, select, button' : ''} {`); + const bgSelectors = joinSelectors(isIFrame ? '' : 'html, body', styleSystemControls ? 'input, textarea, select, button' : ''); + if (bgSelectors) { + lines.push(`${bgSelectors} {`); + lines.push(` background-color: ${modifyBackgroundColor({r: 255, g: 255, b: 255}, theme)};`); + lines.push('}'); + } + lines.push(`${joinSelectors('html, body', styleSystemControls ? 'input, textarea, select, button' : '')} {`); lines.push(` border-color: ${modifyBorderColor({r: 76, g: 76, b: 76}, theme)};`); lines.push(` color: ${modifyForegroundColor({r: 0, g: 0, b: 0}, theme)};`); lines.push('}'); diff --git a/tests/inject/karma.conf.js b/tests/inject/karma.conf.js index 8572bb040572..42f04c29fd80 100644 --- a/tests/inject/karma.conf.js +++ b/tests/inject/karma.conf.js @@ -26,6 +26,7 @@ module.exports = (config) => { tsconfig: 'tests/inject/tsconfig.json', removeComments: false, sourceMap: true, + inlineSources: true, noEmitOnError: true, cacheDir: `${fs.realpathSync(os.tmpdir())}/darkreader_typescript_test_cache`, }), From f44bebc37fe66be0ae8e3e7cf6fa62725c921517 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Thu, 3 Feb 2022 14:39:16 +0000 Subject: [PATCH 352/892] Fix running Puppeteer tests (at least Chrome) (#8119) - Fixed closing test servers. - Fixed closing browser. - Firefox throws errors. --- tests/browser/environment.js | 33 ++++++++++++++++----------------- tests/browser/server.js | 10 ++++++++++ 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/tests/browser/environment.js b/tests/browser/environment.js index 9435e1f51205..86586ada9389 100644 --- a/tests/browser/environment.js +++ b/tests/browser/environment.js @@ -110,24 +110,26 @@ class PuppeteerEnvironment extends JestNodeEnvironment { return page; } - async openPopupPage() { - let extensionPopup; + /** + * @param {string} path + * @returns {puppeteer.Page} + */ + async openExtensionPage(path) { if (this.global.product === 'chrome') { - extensionPopup = await this.openChromePage('/ui/popup/index.html'); - } else if (this.global.product === 'firefox') { - extensionPopup = await this.openFirefoxPage('/ui/popup/index.html'); + return await this.openChromePage(path); + } + if (this.global.product === 'firefox') { + return await this.openFirefoxPage(path); } - return extensionPopup; + return null; + } + + async openPopupPage() { + return await this.openExtensionPage('/ui/popup/index.html'); } async openDevtoolsPage() { - let extensionDevtools; - if (this.global.product === 'chrome') { - extensionDevtools = await this.openChromePage('/ui/devtools/index.html'); - } else if (this.global.product === 'firefox') { - extensionDevtools = await this.openFirefoxPage('/ui/devtools/index.html'); - } - return extensionDevtools; + return await this.openExtensionPage('/ui/devtools/index.html'); } async openChromePage(path) { @@ -241,10 +243,7 @@ class PuppeteerEnvironment extends JestNodeEnvironment { await this.testServer.close(); await this.corsServer.close(); await this.popupTestServer.close(); - // TODO: Remove this hack, as this is a issue with clearing the tmp file of firefox profile - // Which will cause a error with puppeteer when it's not cleared. - // But the clearing currently doesn't work, so we need to wait for the issue to be fixed. - // await this.browser.close(); + await this.browser.close(); } } diff --git a/tests/browser/server.js b/tests/browser/server.js index a4099a87df80..3ba936f2b368 100644 --- a/tests/browser/server.js +++ b/tests/browser/server.js @@ -20,6 +20,8 @@ async function createTestServer(/** @type {number} */port) { let server; /** @type {{[path: string]: string | import('http').RequestListener}} */ const paths = {}; + /** @type {Set} */ + const sockets = new Set(); /** @type {import('http').RequestListener} */ function handleRequest(req, res) { @@ -56,6 +58,11 @@ async function createTestServer(/** @type {number} */port) { server = http .createServer(handleRequest) .listen(port, () => resolve()); + + server.on('connection', (socket) => { + sockets.add(socket); + socket.on('close', () => sockets.delete(socket)); + }); }); } @@ -81,6 +88,9 @@ async function createTestServer(/** @type {number} */port) { server = null; resolve(); }); + sockets.forEach((socket) => { + socket.destroy(); + }); }); } From f0a258d859485e9453cbb2861bb4153bfae14ea6 Mon Sep 17 00:00:00 2001 From: camperboy1000 <28019629+camperboy1000@users.noreply.github.com> Date: Thu, 3 Feb 2022 17:06:20 +0000 Subject: [PATCH 353/892] Remove non dark site (#8118) --- src/config/dark-sites.config | 1 - 1 file changed, 1 deletion(-) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 81447474e398..db385c5b2632 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -839,7 +839,6 @@ sportsurge.net spy-cards.lubar.me spyware.neocities.org srrdb.com -stadia.google.com star-made.org stargazing.net starlink.com From 09b808ab7cfeb0d6619055071a959a0937b55e74 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 3 Feb 2022 18:06:40 +0100 Subject: [PATCH 354/892] Fix for shop.surfboard.com (#8126) - Resolves #8115 --- src/config/dynamic-theme-fixes.config | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 12e9be3cab75..a996c8776a95 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13528,10 +13528,16 @@ CSS shop.surfboard.com +INVERT +img.header-logo-image + CSS .homepage { background-image: none !important; } +.sb-searchpro .input-group .btn { + background-color: ${#fee9a4} !important; +} ================================ From 34e017e5382e1e042479974bac7658e90adf46c1 Mon Sep 17 00:00:00 2001 From: LedyBacer Date: Thu, 3 Feb 2022 20:13:53 +0300 Subject: [PATCH 355/892] Added more SCP sites (#8120) --- src/config/dynamic-theme-fixes.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a996c8776a95..61c044029ecb 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13252,6 +13252,8 @@ scp-wiki.net scp-wiki.wikidot.com scp-wiki-cn.wikidot.com scpwiki.com +scp-ru.wikidot.com +scpfoundation.net CSS div#container-wrap, .panel-body, .content-panel { From ec9bd3bc0aef49d30f3f0f53d70705b40cace5b8 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Thu, 3 Feb 2022 18:14:15 +0100 Subject: [PATCH 356/892] Fix for plotkibiznesowe.pl (#8121) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 61c044029ecb..02628697f8ea 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12030,6 +12030,13 @@ a[title="Google apps"] ================================ +plotkibiznesowe.pl + +INVERT +#logo + +================================ + plumbingforums.com INVERT From 5b5afcca514bdffafd7ef2d2a9fc031e3a120686 Mon Sep 17 00:00:00 2001 From: Matt Alexander Date: Thu, 3 Feb 2022 11:15:31 -0600 Subject: [PATCH 357/892] Fix "DeprecationWarning: Pattern %d{DATE} is deprecated" warnings when running tests (#8122) --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8a3fa32f184d..b64b5275dd77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "globby": "11.0.4", "jasmine-core": "4.0.0", "jest": "27.4.7", - "karma": "6.3.11", + "karma": "6.3.12", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.1.0", "karma-firefox-launcher": "2.1.2", @@ -7804,9 +7804,9 @@ } }, "node_modules/karma": { - "version": "6.3.11", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.11.tgz", - "integrity": "sha512-QGUh4yXgizzDNPLB5nWTvP+wysKexngbyLVWFOyikB661hpa2RZLf5anZQzqliWtAQuYVep0ot0D1U7UQKpsxQ==", + "version": "6.3.12", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.12.tgz", + "integrity": "sha512-qwIG+oB2YmHx4hjvYSRMNzL3YWAJ9baHaLAxiP7biFNkfpwYTUTtPck0joFpucalNLzMr+7z/FX1uY/kl8DV9A==", "dev": true, "dependencies": { "body-parser": "^1.19.0", @@ -18205,9 +18205,9 @@ } }, "karma": { - "version": "6.3.11", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.11.tgz", - "integrity": "sha512-QGUh4yXgizzDNPLB5nWTvP+wysKexngbyLVWFOyikB661hpa2RZLf5anZQzqliWtAQuYVep0ot0D1U7UQKpsxQ==", + "version": "6.3.12", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.12.tgz", + "integrity": "sha512-qwIG+oB2YmHx4hjvYSRMNzL3YWAJ9baHaLAxiP7biFNkfpwYTUTtPck0joFpucalNLzMr+7z/FX1uY/kl8DV9A==", "dev": true, "requires": { "body-parser": "^1.19.0", diff --git a/package.json b/package.json index ee8907e96d17..991cbc9343cf 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "globby": "11.0.4", "jasmine-core": "4.0.0", "jest": "27.4.7", - "karma": "6.3.11", + "karma": "6.3.12", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.1.0", "karma-firefox-launcher": "2.1.2", From e8ce3989181d80aee733f8afbcc4f7e487c50791 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Thu, 3 Feb 2022 19:43:11 +0000 Subject: [PATCH 358/892] Auto scheme improvements (#8129) - Make tabs react on color scheme automation. - Reset automation when color scheme is manually picked. --- src/background/extension.ts | 159 +++++++++++++++++++----------------- src/definitions.d.ts | 1 + src/ui/connect/mock.ts | 3 +- src/ui/popup/theme/utils.ts | 11 ++- 4 files changed, 97 insertions(+), 77 deletions(-) diff --git a/src/background/extension.ts b/src/background/extension.ts index 9a8f7e8a83f6..ae9cd9645b5a 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -24,15 +24,17 @@ import {PromiseBarrier} from '../utils/promise-barrier'; import {StateManager} from './utils/state-manager'; import {debounce} from '../utils/debounce'; +type AutomationState = 'turn-on' | 'turn-off' | 'scheme-dark' | 'scheme-light' | ''; + interface ExtensionState { - isEnabled: boolean; + autoState: AutomationState; wasEnabledOnLastCheck: boolean; registeredContextMenus: boolean; } declare const __DEBUG__: boolean; -export class Extension { +export class Extension implements ExtensionState { config: ConfigManager; devtools: DevTools; icon: IconManager; @@ -41,9 +43,9 @@ export class Extension { tabs: TabManager; user: UserStorage; - private isEnabled: boolean = null; - private wasEnabledOnLastCheck: boolean = null; - private registeredContextMenus: boolean = null; + autoState: AutomationState = ''; + wasEnabledOnLastCheck: boolean = null; + registeredContextMenus: boolean = null; private popupOpeningListener: () => void = null; // Is used only with Firefox to bypass Firefox bug private wasLastColorSchemeDark: boolean = null; @@ -65,7 +67,7 @@ export class Extension { this.user = new UserStorage(); this.startBarrier = new PromiseBarrier(); this.stateManager = new StateManager(Extension.LOCAL_STORAGE_KEY, this, { - isEnabled: null, + autoState: '', wasEnabledOnLastCheck: null, registeredContextMenus: null, }); @@ -74,9 +76,9 @@ export class Extension { if (chrome.permissions.onRemoved) { chrome.permissions.onRemoved.addListener((permissions) => { - // As far as we know, this code is never actually run because there - // is no browser UI for removing 'contextMenus' permission. - // This code exists for future-proofing in case browsers ever add such UI. + // As far as we know, this code is never actually run because there + // is no browser UI for removing 'contextMenus' permission. + // This code exists for future-proofing in case browsers ever add such UI. if (!permissions.permissions.includes('contextMenus')) { this.registeredContextMenus = false; } @@ -86,72 +88,73 @@ export class Extension { private alarmListener = (alarm: chrome.alarms.Alarm): void => { if (alarm.name === Extension.ALARM_NAME) { - this.handleAutomationCheck(); + this.callWhenSettingsLoaded(() => { + this.handleAutomationCheck(); + }); } }; - private recalculateIsEnabled(): boolean { - const {isEnabled, error} = this.calculateIsEnabled(); - if (!error) { - this.isEnabled = isEnabled; - } - return isEnabled; + private isExtensionSwitchedOn() { + return ( + this.autoState === 'turn-on' || + this.autoState === 'scheme-dark' || + this.autoState === 'scheme-light' || + (this.autoState === '' && this.user.settings.enabled) + ); } - private calculateIsEnabled(): {isEnabled: boolean; error: boolean} { - if (!this.user.settings) { - logWarn('Extension.isEnabled() was called before Extension.user.settings is available.'); - return {isEnabled: false, error: true}; - } - - const {automation} = this.user.settings; + private updateAutoState() { + const {automation, automationBehaviour: behavior} = this.user.settings; - let isEnabled: boolean; + let isAutoDark: boolean; let nextCheck: number; switch (automation) { case 'time': - isEnabled = isInTimeIntervalLocal(this.user.settings.time.activation, this.user.settings.time.deactivation); - nextCheck = nextTimeInterval(this.user.settings.time.activation, this.user.settings.time.deactivation); + const {time} = this.user.settings; + isAutoDark = isInTimeIntervalLocal(time.activation, time.deactivation); + nextCheck = nextTimeInterval(time.activation, time.deactivation); break; case 'system': if (isMV3) { logWarn('system automation is not yet supported. Defaulting to ON.'); - isEnabled = true; + isAutoDark = true; break; } if (isFirefox) { // BUG: Firefox background page always matches initial color scheme. - isEnabled = this.wasLastColorSchemeDark == null + isAutoDark = this.wasLastColorSchemeDark == null ? isSystemDarkModeEnabled() : this.wasLastColorSchemeDark; } else { - isEnabled = isSystemDarkModeEnabled(); + isAutoDark = isSystemDarkModeEnabled(); } break; case 'location': { const {latitude, longitude} = this.user.settings.location; - if (latitude != null && longitude != null) { - isEnabled = isNightAtLocation(latitude, longitude); + isAutoDark = isNightAtLocation(latitude, longitude); nextCheck = nextTimeChangeAtLocation(latitude, longitude); } break; } - default: - isEnabled = this.user.settings.enabled; + case '': { break; - } - if (nextCheck) { - chrome.alarms.create(Extension.ALARM_NAME, {when: nextCheck}); + } } - // This check is after the `switch` expression, because we still want - // to add a nextCheck if needed`. - if (this.user.settings.automationBehaviour === 'Scheme') { - return {isEnabled: this.user.settings.enabled, error: false}; + let state: AutomationState = ''; + if (automation) { + if (behavior === 'OnOff') { + state = isAutoDark ? 'turn-on' : 'turn-off'; + } else if (behavior === 'Scheme') { + state = isAutoDark ? 'scheme-dark' : 'scheme-light'; + } } + this.autoState = state; - return {isEnabled, error: false}; + if (nextCheck) { + chrome.alarms.create(Extension.ALARM_NAME, {when: nextCheck}); + } } async start() { @@ -170,6 +173,7 @@ export class Extension { if (this.user.settings.syncSitesFixes) { await this.config.load({local: false}); } + this.updateAutoState(); this.onAppToggle(); logInfo('loaded', this.user.settings); @@ -272,7 +276,7 @@ export class Extension { case 'toggle': logInfo('Toggle command entered'); this.changeSettings({ - enabled: !this.isEnabled, + enabled: !this.isExtensionSwitchedOn(), automation: '', }); break; @@ -355,12 +359,13 @@ export class Extension { } await this.stateManager.loadState(); return { - isEnabled: this.isEnabled, + isEnabled: this.isExtensionSwitchedOn(), isReady: true, settings: this.user.settings, news: await this.news.getLatest(), shortcuts: await this.getShortcuts(), colorScheme: this.config.COLOR_SCHEMES_RAW, + forcedScheme: this.autoState === 'scheme-dark' ? 'dark' : this.autoState === 'scheme-light' ? 'light' : null, devtools: { dynamicFixesText: await this.devtools.getDynamicThemeFixesText(), filterFixesText: await this.devtools.getInversionFixesText(), @@ -395,6 +400,18 @@ export class Extension { }); } + private callWhenSettingsLoaded(callback: () => void) { + if (this.user.settings) { + callback(); + return; + } + this.user.loadSettings() + .then(async () => { + await this.stateManager.loadState(); + callback(); + }); + } + private onColorSchemeChange = ({isDark}: {isDark: boolean}) => { if (isFirefox) { this.wasLastColorSchemeDark = isDark; @@ -402,40 +419,28 @@ export class Extension { if (this.user.settings.automation !== 'system') { return; } - this.handleAutomationCheck(); + this.callWhenSettingsLoaded(() => { + this.handleAutomationCheck(); + }); }; private handleAutomationCheck = () => { - if (this.user.settings.automationBehaviour === 'Scheme') { - const {isEnabled} = this.calculateIsEnabled(); - if (isEnabled) { - // Dark - this.changeSettings({theme: {...this.user.settings.theme, ...{mode: 1}}}); - } else { - // Light - this.changeSettings({theme: {...this.user.settings.theme, ...{mode: 0}}}); - } - } else { - // Toggle on/off - this.handleAutoCheck(); - } - }; + this.updateAutoState(); - private async handleAutoCheck() { - if (!this.user.settings) { - await this.user.loadSettings(); - } - await this.stateManager.loadState(); - this.recalculateIsEnabled(); - const isEnabled = this.isEnabled; - if (this.wasEnabledOnLastCheck === null || this.wasEnabledOnLastCheck !== isEnabled) { - this.wasEnabledOnLastCheck = isEnabled; + const isSwitchedOn = this.isExtensionSwitchedOn(); + if ( + this.wasEnabledOnLastCheck === null || + this.wasEnabledOnLastCheck !== isSwitchedOn || + this.autoState === 'scheme-dark' || + this.autoState === 'scheme-light' + ) { + this.wasEnabledOnLastCheck = isSwitchedOn; this.onAppToggle(); this.tabs.sendMessage(); this.reportChanges(); this.stateManager.saveState(); } - } + }; changeSettings($settings: Partial) { const prev = {...this.user.settings}; @@ -451,12 +456,13 @@ export class Extension { (prev.location.latitude !== this.user.settings.location.latitude) || (prev.location.longitude !== this.user.settings.location.longitude) ) { + this.updateAutoState(); this.onAppToggle(); } if (prev.syncSettings !== this.user.settings.syncSettings) { this.user.saveSyncSetting(this.user.settings.syncSettings); } - if (this.isEnabled && $settings.changeBrowserTheme != null && prev.changeBrowserTheme !== $settings.changeBrowserTheme) { + if (this.isExtensionSwitchedOn() && $settings.changeBrowserTheme != null && prev.changeBrowserTheme !== $settings.changeBrowserTheme) { if ($settings.changeBrowserTheme) { setWindowTheme(this.user.settings.theme); } else { @@ -480,7 +486,7 @@ export class Extension { setTheme($theme: Partial) { this.user.set({theme: {...this.user.settings.theme, ...$theme}}); - if (this.isEnabled && this.user.settings.changeBrowserTheme) { + if (this.isExtensionSwitchedOn() && this.user.settings.changeBrowserTheme) { setWindowTheme(this.user.settings.theme); } @@ -530,8 +536,7 @@ export class Extension { this.icon = new IconManager(); } - this.recalculateIsEnabled(); - if (this.isEnabled) { + if (this.isExtensionSwitchedOn()) { this.icon.setActive(); if (this.user.settings.changeBrowserTheme) { setWindowTheme(this.user.settings.theme); @@ -549,7 +554,7 @@ export class Extension { await this.user.loadSettings(); } await this.stateManager.loadState(); - this.wasEnabledOnLastCheck = this.isEnabled; + this.wasEnabledOnLastCheck = this.isExtensionSwitchedOn(); this.tabs.sendMessage(); this.saveUserSettings(); this.reportChanges(); @@ -581,10 +586,14 @@ export class Extension { private getTabMessage = (url: string, frameURL: string): TabData => { const urlInfo = this.getURLInfo(url); - if (this.isEnabled && isURLEnabled(url, this.user.settings, urlInfo)) { + if (this.isExtensionSwitchedOn() && isURLEnabled(url, this.user.settings, urlInfo)) { const custom = this.user.settings.customThemes.find(({url: urlList}) => isURLInList(url, urlList)); const preset = custom ? null : this.user.settings.presets.find(({urls}) => isURLInList(url, urls)); - const theme = custom ? custom.theme : preset ? preset.theme : this.user.settings.theme; + let theme = custom ? custom.theme : preset ? preset.theme : this.user.settings.theme; + if (this.autoState === 'scheme-dark' || this.autoState === 'scheme-light') { + const mode = this.autoState === 'scheme-dark' ? 1 : 0; + theme = {...theme, mode}; + } logInfo(`Creating CSS for url: ${url}`); logInfo(`Custom theme ${custom ? 'was found' : 'was not found'}, Preset theme ${preset ? 'was found' : 'was not found'} diff --git a/src/definitions.d.ts b/src/definitions.d.ts index 981a97cef3ae..711f50fe67b2 100644 --- a/src/definitions.d.ts +++ b/src/definitions.d.ts @@ -8,6 +8,7 @@ export interface ExtensionData { news: News[]; shortcuts: Shortcuts; colorScheme: ParsedColorSchemeConfig; + forcedScheme: 'dark' | 'light'; devtools: { dynamicFixesText: string; filterFixesText: string; diff --git a/src/ui/connect/mock.ts b/src/ui/connect/mock.ts index d339102356e0..affedb31e380 100644 --- a/src/ui/connect/mock.ts +++ b/src/ui/connect/mock.ts @@ -76,7 +76,8 @@ export function getMockData(override = {} as Partial): ExtensionD textColor: '#000000', }, }, - } + }, + forcedScheme: null, } as ExtensionData, override); } diff --git a/src/ui/popup/theme/utils.ts b/src/ui/popup/theme/utils.ts index 57d8b1bd2700..c7d027da6120 100644 --- a/src/ui/popup/theme/utils.ts +++ b/src/ui/popup/theme/utils.ts @@ -9,11 +9,15 @@ export function getCurrentThemePreset(props: ViewProps) { const preset = custom ? null : props.data.settings.presets.find( ({urls}) => isURLInList(props.tab.url, urls) ); - const theme = custom ? + let theme = custom ? custom.theme : preset ? preset.theme : props.data.settings.theme; + if (props.data.forcedScheme) { + const mode = props.data.forcedScheme === 'dark' ? 1 : 0; + theme = {...theme, mode}; + } function setTheme(config: Partial) { if (custom) { @@ -29,6 +33,11 @@ export function getCurrentThemePreset(props: ViewProps) { } else { props.actions.setTheme(config); } + if (config.mode && props.data.settings.automation && props.data.settings.automationBehaviour === 'Scheme') { + props.actions.changeSettings({ + automation: '', + }); + } } return { From df707a2abaa8f2b7e53c6f524f01b807ffb75b89 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Thu, 3 Feb 2022 21:11:05 +0000 Subject: [PATCH 359/892] Tests for automation by system colors (#8130) --- tests/browser/e2e/toggle.tests.ts | 78 +++++++++++++++++++++++++++++-- tests/browser/environment.js | 14 +++++- tests/browser/globals.d.ts | 1 + 3 files changed, 86 insertions(+), 7 deletions(-) diff --git a/tests/browser/e2e/toggle.tests.ts b/tests/browser/e2e/toggle.tests.ts index 38cae6ce88ef..7ba4e010ca4d 100644 --- a/tests/browser/e2e/toggle.tests.ts +++ b/tests/browser/e2e/toggle.tests.ts @@ -1,6 +1,6 @@ import {multiline, timeout} from '../../test-utils'; -async function loadBasicPage() { +async function loadBasicPage(header = 'E2E test page') { await loadTestPage({ '/': multiline( '', @@ -11,7 +11,7 @@ async function loadBasicPage() { ' ', '', '', - '

E2E test page

', + `

${header}

`, '

Text

', ' Link', '', @@ -20,9 +20,14 @@ async function loadBasicPage() { }); } +async function emulateMedia(name: string, value: string) { + await page.emulateMediaFeatures([{name, value}]); + await backgroundUtils.emulateMedia(name, value); +} + describe('Toggling The Extension', () => { it('should turn On/Off', async () => { - await loadBasicPage(); + await loadBasicPage('Toggle on/off'); await expect(page.evaluate(() => getComputedStyle(document.documentElement).backgroundColor)).resolves.toBe('rgb(24, 26, 27)'); await expect(page.evaluate(() => getComputedStyle(document.documentElement).color)).resolves.toBe('rgb(232, 230, 227)'); @@ -32,7 +37,7 @@ describe('Toggling The Extension', () => { await expect(page.evaluate(() => getComputedStyle(document.querySelector('a')).color)).resolves.toBe('rgb(51, 145, 255)'); await popupUtils.click('.toggle__off'); - await timeout(1000); + await timeout(250); await expect(page.evaluate(() => getComputedStyle(document.documentElement).backgroundColor)).resolves.toBe('rgba(0, 0, 0, 0)'); await expect(page.evaluate(() => getComputedStyle(document.documentElement).color)).resolves.toBe('rgb(0, 0, 0)'); @@ -42,7 +47,47 @@ describe('Toggling The Extension', () => { await expect(page.evaluate(() => getComputedStyle(document.querySelector('a')).color)).resolves.toBe('rgb(0, 0, 238)'); await popupUtils.click('.toggle__on'); - await timeout(1000); + await timeout(250); + + await expect(page.evaluate(() => getComputedStyle(document.documentElement).backgroundColor)).resolves.toBe('rgb(24, 26, 27)'); + await expect(page.evaluate(() => getComputedStyle(document.documentElement).color)).resolves.toBe('rgb(232, 230, 227)'); + await expect(page.evaluate(() => getComputedStyle(document.body).backgroundColor)).resolves.toBe('rgb(24, 26, 27)'); + await expect(page.evaluate(() => getComputedStyle(document.body).color)).resolves.toBe('rgb(232, 230, 227)'); + await expect(page.evaluate(() => getComputedStyle(document.querySelector('h1')).color)).resolves.toBe('rgb(255, 26, 26)'); + await expect(page.evaluate(() => getComputedStyle(document.querySelector('a')).color)).resolves.toBe('rgb(51, 145, 255)'); + }); + + it('should follow system color scheme', async () => { + await loadBasicPage('Automation (color scheme)'); + + const automationMenuSelector = '.header__app-toggle__more-button'; + const automationSystemSelector = '.header__app-toggle__more-settings__system-dark-mode__checkbox .checkbox__input'; + + await emulateMedia('prefers-color-scheme', 'light'); + await expect(page.evaluate(() => matchMedia('(prefers-color-scheme: dark)').matches)).resolves.toBe(false); + + await expect(page.evaluate(() => getComputedStyle(document.documentElement).backgroundColor)).resolves.toBe('rgb(24, 26, 27)'); + await expect(page.evaluate(() => getComputedStyle(document.documentElement).color)).resolves.toBe('rgb(232, 230, 227)'); + await expect(page.evaluate(() => getComputedStyle(document.body).backgroundColor)).resolves.toBe('rgb(24, 26, 27)'); + await expect(page.evaluate(() => getComputedStyle(document.body).color)).resolves.toBe('rgb(232, 230, 227)'); + await expect(page.evaluate(() => getComputedStyle(document.querySelector('h1')).color)).resolves.toBe('rgb(255, 26, 26)'); + await expect(page.evaluate(() => getComputedStyle(document.querySelector('a')).color)).resolves.toBe('rgb(51, 145, 255)'); + + await popupUtils.click(automationMenuSelector); + await timeout(250); + await popupUtils.click(automationSystemSelector); + await timeout(250); + + await expect(page.evaluate(() => getComputedStyle(document.documentElement).backgroundColor)).resolves.toBe('rgba(0, 0, 0, 0)'); + await expect(page.evaluate(() => getComputedStyle(document.documentElement).color)).resolves.toBe('rgb(0, 0, 0)'); + await expect(page.evaluate(() => getComputedStyle(document.body).backgroundColor)).resolves.toBe('rgba(0, 0, 0, 0)'); + await expect(page.evaluate(() => getComputedStyle(document.body).color)).resolves.toBe('rgb(0, 0, 0)'); + await expect(page.evaluate(() => getComputedStyle(document.querySelector('h1')).color)).resolves.toBe('rgb(255, 0, 0)'); + await expect(page.evaluate(() => getComputedStyle(document.querySelector('a')).color)).resolves.toBe('rgb(0, 0, 238)'); + + await emulateMedia('prefers-color-scheme', 'dark'); + await expect(page.evaluate(() => matchMedia('(prefers-color-scheme: dark)').matches)).resolves.toBe(true); + await timeout(250); await expect(page.evaluate(() => getComputedStyle(document.documentElement).backgroundColor)).resolves.toBe('rgb(24, 26, 27)'); await expect(page.evaluate(() => getComputedStyle(document.documentElement).color)).resolves.toBe('rgb(232, 230, 227)'); @@ -50,5 +95,28 @@ describe('Toggling The Extension', () => { await expect(page.evaluate(() => getComputedStyle(document.body).color)).resolves.toBe('rgb(232, 230, 227)'); await expect(page.evaluate(() => getComputedStyle(document.querySelector('h1')).color)).resolves.toBe('rgb(255, 26, 26)'); await expect(page.evaluate(() => getComputedStyle(document.querySelector('a')).color)).resolves.toBe('rgb(51, 145, 255)'); + + await emulateMedia('prefers-color-scheme', 'light'); + await expect(page.evaluate(() => matchMedia('(prefers-color-scheme: dark)').matches)).resolves.toBe(false); + await timeout(250); + + await expect(page.evaluate(() => getComputedStyle(document.documentElement).backgroundColor)).resolves.toBe('rgba(0, 0, 0, 0)'); + await expect(page.evaluate(() => getComputedStyle(document.documentElement).color)).resolves.toBe('rgb(0, 0, 0)'); + await expect(page.evaluate(() => getComputedStyle(document.body).backgroundColor)).resolves.toBe('rgba(0, 0, 0, 0)'); + await expect(page.evaluate(() => getComputedStyle(document.body).color)).resolves.toBe('rgb(0, 0, 0)'); + await expect(page.evaluate(() => getComputedStyle(document.querySelector('h1')).color)).resolves.toBe('rgb(255, 0, 0)'); + await expect(page.evaluate(() => getComputedStyle(document.querySelector('a')).color)).resolves.toBe('rgb(0, 0, 238)'); + + await popupUtils.click(automationSystemSelector); + await timeout(250); + + await expect(page.evaluate(() => getComputedStyle(document.documentElement).backgroundColor)).resolves.toBe('rgb(24, 26, 27)'); + await expect(page.evaluate(() => getComputedStyle(document.documentElement).color)).resolves.toBe('rgb(232, 230, 227)'); + await expect(page.evaluate(() => getComputedStyle(document.body).backgroundColor)).resolves.toBe('rgb(24, 26, 27)'); + await expect(page.evaluate(() => getComputedStyle(document.body).color)).resolves.toBe('rgb(232, 230, 227)'); + await expect(page.evaluate(() => getComputedStyle(document.querySelector('h1')).color)).resolves.toBe('rgb(255, 26, 26)'); + await expect(page.evaluate(() => getComputedStyle(document.querySelector('a')).color)).resolves.toBe('rgb(51, 145, 255)'); + + await emulateMedia('prefers-color-scheme', 'dark'); }); }); diff --git a/tests/browser/environment.js b/tests/browser/environment.js index 86586ada9389..bf1a25700912 100644 --- a/tests/browser/environment.js +++ b/tests/browser/environment.js @@ -132,11 +132,14 @@ class PuppeteerEnvironment extends JestNodeEnvironment { return await this.openExtensionPage('/ui/devtools/index.html'); } - async openChromePage(path) { + async getBackgroundPage() { const targets = await this.browser.targets(); const backgroundTarget = targets.find((t) => t.type() === 'background_page'); - const backgroundPage = await backgroundTarget.page(); + return await backgroundTarget.page(); + } + async openChromePage(path) { + const backgroundPage = await this.getBackgroundPage(); const pageURL = backgroundPage.url().replace('/background/index.html', path); const extensionPage = await this.browser.newPage(); await extensionPage.goto(pageURL); @@ -223,6 +226,13 @@ class PuppeteerEnvironment extends JestNodeEnvironment { changeChromeStorage: async (region, data) => await sendToUIPage({type: 'changeChromeStorage', data: {region, data}}), getChromeStorage: async (region, keys) => await sendToUIPage({type: 'getChromeStorage', data: {region, keys}}), setDataIsMigratedForTesting: async (value) => await sendToUIPage({type: 'setDataIsMigratedForTesting', data: value}), + emulateMedia: async (name, value) => { + if (this.global.product === 'firefox') { + return; + } + const bg = await this.getBackgroundPage(); + await bg.emulateMediaFeatures([{name, value}]); + }, }; }); } diff --git a/tests/browser/globals.d.ts b/tests/browser/globals.d.ts index 05568f609a2a..1153f09f6bcd 100644 --- a/tests/browser/globals.d.ts +++ b/tests/browser/globals.d.ts @@ -24,5 +24,6 @@ declare global { changeChromeStorage: (region: 'local' | 'sync', data: {[key: string]: any}) => Promise; getChromeStorage: (region: 'local' | 'sync', keys: string[]) => Promise<{[key: string]: any}>; setDataIsMigratedForTesting: (value: boolean) => Promise; + emulateMedia: (name: string, value: string) => Promise; }; } From 5e88b64018f9f12a6c33134965fa21ae1c58f3bb Mon Sep 17 00:00:00 2001 From: FadeMind Date: Fri, 4 Feb 2022 11:18:43 +0100 Subject: [PATCH 360/892] Fix for ebok.enea.pl (#8127) - Fix image. --- src/config/dynamic-theme-fixes.config | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 02628697f8ea..e841f3944df4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5163,6 +5163,10 @@ CSS .col-lg-12.col-md-12 > div > div > p { color: var(--darkreader-neutral-background) !important; } +.bkg-icon, +.left-bkg-icon { + color: ${white} !important; +} ================================ From 6719b2ce77472162164bc97b8c8263e654cae8da Mon Sep 17 00:00:00 2001 From: Itay Ganor <6430313+itayganor@users.noreply.github.com> Date: Fri, 4 Feb 2022 12:22:25 +0200 Subject: [PATCH 361/892] Added dark sites (#8128) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index db385c5b2632..781957ed50a1 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -761,6 +761,7 @@ retromusic.app returnyoutubedislike.com reveddit.com revolt.chat +richup.io ripped.guide rl6mans.com robofight.io From b013a93cdd1483e4c5c457c3db4b3bb9e13173fd Mon Sep 17 00:00:00 2001 From: FadeMind Date: Fri, 4 Feb 2022 11:32:54 +0100 Subject: [PATCH 362/892] Fix for pixlab.pl (#8133) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e841f3944df4..6ae3a7ca6f62 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11943,6 +11943,13 @@ CSS ================================ +pixlab.pl + +INVERT +img[src*="trust_us"] + +================================ + pl.glosbe.com INVERT From 2f702a868b07560ff53361245d474f0853bb26c4 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Fri, 4 Feb 2022 11:33:12 +0100 Subject: [PATCH 363/892] Fix for allegrolokalnie.pl (#8132) - Invert logo. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 6ae3a7ca6f62..d121597114e5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -683,6 +683,14 @@ IGNORE IMAGE ANALYSIS ================================ +allegrolokalnie.pl + +INVERT +.mlc-masthead__branding +.mlc-site-footer__branding + +================================ + allmacworld.com INVERT From 7ebcdc91c493bbd3b5e325c82b1894082bc857b8 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 4 Feb 2022 11:33:30 +0100 Subject: [PATCH 364/892] Fix for sea.playblackdesert.com (#8134) - Resolves #8131 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d121597114e5..f461de74804e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13364,6 +13364,15 @@ INVERT ================================ +sea.playblackdesert.com + +INVERT +.original .characteristic .desc +.original .characteristic h3 +.original .characteristic .feature li span + +================================ + sec.sangfor.com sec.sangfor.com.cn From 9085bb8d6da6debdb551cacf8fbfbd0e26d1c885 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Fri, 4 Feb 2022 12:24:00 +0000 Subject: [PATCH 365/892] Fixed changing scheme during automation (#8136) --- src/ui/popup/theme/utils.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ui/popup/theme/utils.ts b/src/ui/popup/theme/utils.ts index c7d027da6120..e2f5975d3574 100644 --- a/src/ui/popup/theme/utils.ts +++ b/src/ui/popup/theme/utils.ts @@ -33,7 +33,11 @@ export function getCurrentThemePreset(props: ViewProps) { } else { props.actions.setTheme(config); } - if (config.mode && props.data.settings.automation && props.data.settings.automationBehaviour === 'Scheme') { + if ( + config.mode != null && + props.data.settings.automation && + props.data.settings.automationBehaviour === 'Scheme' + ) { props.actions.changeSettings({ automation: '', }); From 250264b2f78e11e9f2fdff2630bb192763b49cc2 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Fri, 4 Feb 2022 13:44:02 +0000 Subject: [PATCH 366/892] 4.9.44 --- package-lock.json | 4 ++-- package.json | 2 +- src/manifest.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index b64b5275dd77..80b384c86aa4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "darkreader", - "version": "4.9.43", + "version": "4.9.44", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "darkreader", - "version": "4.9.43", + "version": "4.9.44", "license": "MIT", "devDependencies": { "@rollup/plugin-node-resolve": "13.1.3", diff --git a/package.json b/package.json index 991cbc9343cf..ae418f148c3e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "darkreader", - "version": "4.9.43", + "version": "4.9.44", "description": "Dark mode for every website", "scripts": { "api": "node tasks/build.js --api", diff --git a/src/manifest.json b/src/manifest.json index 0f9cf41286e3..8ea85daa2f72 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Dark Reader", - "version": "4.9.43", + "version": "4.9.44", "author": "Alexander Shutau", "description": "__MSG_extension_description__", "default_locale": "en", From ac8dbde586e24370f0867622c52592cb741c7766 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 5 Feb 2022 17:30:25 +0100 Subject: [PATCH 367/892] Fix for tex.stackexchange.com (#8147) - Resolves #8138 --- src/config/dynamic-theme-fixes.config | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index f461de74804e..4f02ec78a085 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14135,8 +14135,10 @@ aside.s-notice aside.s-notice > * CSS -body { +body, +#content { background-image: none !important; + background-color: var(--darkreader-neutral-background) !important; } .profile-cards--graph { background-image: repeating-linear-gradient(0deg, transparent, transparent 13px, ${#e4e6e8} -13px, ${#e4e6e8} 21px) !important; From 8ea6ad56f50c7eda486921af6d242b8b4cb44d30 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sat, 5 Feb 2022 17:30:41 +0100 Subject: [PATCH 368/892] Fix for 40ton.net (#8140) - Invert header logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4f02ec78a085..eb31e3c977a7 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -214,6 +214,13 @@ img[alt="Zespół 300Gospodarki"] ================================ +40ton.net + +INVERT +.td-main-logo + +================================ + 4pda.ru CSS From 072067dc1464a2e5aad75342218118cda28fae9f Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sat, 5 Feb 2022 17:31:26 +0100 Subject: [PATCH 369/892] Fix for tygodnikkrag.pl (#8139) - Invert header logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index eb31e3c977a7..d83b8bb8f557 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15818,6 +15818,13 @@ header { ================================ +tygodnikkrag.pl + +INVERT +#header-logo-image + +================================ + typescriptlang.org CSS From dc1d45ee3366c3bfed08330ddf96df875bed6f75 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 5 Feb 2022 17:31:32 +0100 Subject: [PATCH 370/892] Fix for handwiki.org (#8148) - Resolves #8137 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d83b8bb8f557..624164e37581 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7215,6 +7215,15 @@ ul.notes li::before { ================================ +handwiki.org + +CSS +#mw-content { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + haokan.baidu.com INVERT From c3c9b9d1dd8ba64bc7e70d091971be726363c590 Mon Sep 17 00:00:00 2001 From: the753q <50169298+the753q@users.noreply.github.com> Date: Sat, 5 Feb 2022 17:31:54 +0100 Subject: [PATCH 371/892] Changed 0 to O in sk.config (#8141) There was an error. Someone mistook number 0 for letter O. --- src/_locales/sk.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_locales/sk.config b/src/_locales/sk.config index 3f6f18601c45..ddaa3e6496f2 100644 --- a/src/_locales/sk.config +++ b/src/_locales/sk.config @@ -78,7 +78,7 @@ Jas Kontrast @grayscale -0dtiene sivej +Odtiene sivej @sepia Sépia From 3bb21cb4177269f18793c349078d3bcb591c24fd Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sat, 5 Feb 2022 17:32:45 +0100 Subject: [PATCH 372/892] Fix for subiektywnieofinansach.pl (#8142) - Invert header logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 624164e37581..8a7ef3fa925d 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14545,6 +14545,13 @@ mark { ================================ +subiektywnieofinansach.pl + +INVERT +.logo + +================================ + subscene.com CSS From b4f7112b465db2ab65ba1f6a15dc64d2572fa91e Mon Sep 17 00:00:00 2001 From: leohu1 <47905372+leohu1@users.noreply.github.com> Date: Sun, 6 Feb 2022 00:43:33 +0800 Subject: [PATCH 373/892] Fix for www.baidu.con (#8144) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8a7ef3fa925d..3612f4643d27 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17265,6 +17265,13 @@ footer { ================================ +www.baidu.com + +INVERT +#s_lg_img + +================================ + www.bromite.org CSS From 1207e4ae24932a026dd9280d26adff143b0f7858 Mon Sep 17 00:00:00 2001 From: Pat Nafarrete Date: Sat, 5 Feb 2022 16:46:31 +0000 Subject: [PATCH 374/892] Fix for itch.io (#8146) --- src/config/dynamic-theme-fixes.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 3612f4643d27..bbedee43e569 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8016,6 +8016,11 @@ itch.io INVERT .header_widget .mobile_nav_btn +CSS +.youtube_game_promo_banner_widget .game_information .cta_button { + border-color: var(--darkreader-neutral-text) !important; +} + ================================ item.jd.com From 13eeb18761066923a4154bf561ee65a5c17d48fb Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 5 Feb 2022 17:49:52 +0100 Subject: [PATCH 375/892] Revert "Affect img elements with filters (#6044)" (#8149) This reverts commit 29a9a12b6f10260040b0a666cdd088ae90b36575. This is causing by far more issues than I'd anticipated, removing for now and can be merged back in once I'd have a better plan to correctly use those. --- src/inject/dynamic-theme/index.ts | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/inject/dynamic-theme/index.ts b/src/inject/dynamic-theme/index.ts index c7003f1b4903..b25f77e9941f 100644 --- a/src/inject/dynamic-theme/index.ts +++ b/src/inject/dynamic-theme/index.ts @@ -9,7 +9,7 @@ import {removeNode, watchForNodePosition, iterateShadowHosts, isDOMReady, remove import {logInfo, logWarn} from '../../utils/log'; import {throttle} from '../../utils/throttle'; import {clamp} from '../../utils/math'; -import {FilterMode, getCSSFilterValue} from '../../generators/css-filter'; +import {getCSSFilterValue} from '../../generators/css-filter'; import {modifyBackgroundColor, modifyColor, modifyForegroundColor} from '../../generators/modify-colors'; import {createTextStyle} from '../../generators/text-style'; import type {FilterConfig, DynamicThemeFix} from '../../definitions'; @@ -86,27 +86,18 @@ function createStaticStyleOverrides() { setupNodePositionWatcher(textStyle, 'text'); const invertStyle = createOrUpdateStyle('darkreader--invert'); - let invertStyleContent = ''; if (fixes && Array.isArray(fixes.invert) && fixes.invert.length > 0) { - invertStyleContent += [ + invertStyle.textContent = [ `${fixes.invert.join(', ')} {`, ` filter: ${getCSSFilterValue({ ...filter, contrast: filter.mode === 0 ? filter.contrast : clamp(filter.contrast - 10, 0, 100), })} !important;`, '}', - '', ].join('\n'); + } else { + invertStyle.textContent = ''; } - const imageFilter = getCSSFilterValue({ - ...filter, - // Disables the invert() hue-rotate() - mode: FilterMode.light - }); - if (imageFilter) { - invertStyleContent += `img { filter: ${imageFilter} !important;\n`; - } - invertStyle.textContent = invertStyleContent; document.head.insertBefore(invertStyle, textStyle.nextSibling); setupNodePositionWatcher(invertStyle, 'invert'); From fbb15c156f8cd5886e6d3d7bd6add2607df94d37 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Sat, 5 Feb 2022 17:44:22 +0000 Subject: [PATCH 376/892] 4.9.45 --- package-lock.json | 4 ++-- package.json | 2 +- src/manifest.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 80b384c86aa4..c33af45635a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "darkreader", - "version": "4.9.44", + "version": "4.9.45", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "darkreader", - "version": "4.9.44", + "version": "4.9.45", "license": "MIT", "devDependencies": { "@rollup/plugin-node-resolve": "13.1.3", diff --git a/package.json b/package.json index ae418f148c3e..5fd32ec58367 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "darkreader", - "version": "4.9.44", + "version": "4.9.45", "description": "Dark mode for every website", "scripts": { "api": "node tasks/build.js --api", diff --git a/src/manifest.json b/src/manifest.json index 8ea85daa2f72..fd25718ebe32 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Dark Reader", - "version": "4.9.44", + "version": "4.9.45", "author": "Alexander Shutau", "description": "__MSG_extension_description__", "default_locale": "en", From 512683c3134436f80f3ef2d692144decb6eec0e6 Mon Sep 17 00:00:00 2001 From: FadeMind Date: Sun, 6 Feb 2022 11:12:47 +0100 Subject: [PATCH 377/892] Fix for cityam.com (#8153) --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index bbedee43e569..d5386f09e34f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2829,6 +2829,14 @@ IGNORE INLINE STYLE ================================ +cityam.com + +INVERT +.site-logo__image +.menu-item a:before + +================================ + citybuzz.pl INVERT From 79f034ef02ae369c3901a1846a8f4e431c29e67b Mon Sep 17 00:00:00 2001 From: Matt Alexander Date: Sun, 6 Feb 2022 12:29:43 -0600 Subject: [PATCH 378/892] Fix auto-watch when running `npm run test:inject:debug` (#8124) * Fix auto-watch when running `npm run test:inject:debug` (squashed) * Fix auto-watch when running `npm run test:inject:debug` (squashed II) * Fix quotes --- .github/workflows/test.yml | 7 +++++-- .gitignore | 2 +- package-lock.json | 11 +++++------ package.json | 2 +- tasks/paths.js | 5 ++++- tests/inject/karma.conf.js | 2 ++ 6 files changed, 18 insertions(+), 11 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 03a547ab9056..c08a9f69b73a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,8 +23,11 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v2 with: - node-version: 14.x - + node-version: 15.x + + - name: Verify NPM version + run: npm --version + - name: Set up npm cache uses: actions/cache@v2 with: diff --git a/.gitignore b/.gitignore index 57568961811e..820afdf38324 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # Build files #----------------------------------- -build/ +build*/ darkreader.js debug.log diff --git a/package-lock.json b/package-lock.json index c33af45635a6..54640e86cea5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "karma-coverage": "2.1.0", "karma-firefox-launcher": "2.1.2", "karma-jasmine": "4.0.1", - "karma-rollup-preprocessor": "7.0.7", + "karma-rollup-preprocessor": "github:jlmakes/karma-rollup-preprocessor#master", "karma-safari-launcher": "1.0.0", "less": "4.1.2", "malevic": "0.18.6", @@ -7911,9 +7911,9 @@ }, "node_modules/karma-rollup-preprocessor": { "version": "7.0.7", - "resolved": "https://registry.npmjs.org/karma-rollup-preprocessor/-/karma-rollup-preprocessor-7.0.7.tgz", - "integrity": "sha512-Y1QwsTCiCBp8sSALZdqmqry/mWIWIy0V6zonUIpy+0/D/Kpb2XZvR+JZrWfacQvcvKQdZFJvg6EwlnKtjepu3Q==", + "resolved": "git+ssh://git@github.com/jlmakes/karma-rollup-preprocessor.git#de386a6a84664391f178bfe5b4a20a504437dde0", "dev": true, + "license": "MIT", "dependencies": { "chokidar": "^3.3.1", "debounce": "^1.2.0" @@ -18297,10 +18297,9 @@ } }, "karma-rollup-preprocessor": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/karma-rollup-preprocessor/-/karma-rollup-preprocessor-7.0.7.tgz", - "integrity": "sha512-Y1QwsTCiCBp8sSALZdqmqry/mWIWIy0V6zonUIpy+0/D/Kpb2XZvR+JZrWfacQvcvKQdZFJvg6EwlnKtjepu3Q==", + "version": "git+ssh://git@github.com/jlmakes/karma-rollup-preprocessor.git#de386a6a84664391f178bfe5b4a20a504437dde0", "dev": true, + "from": "karma-rollup-preprocessor@github:jlmakes/karma-rollup-preprocessor#master", "requires": { "chokidar": "^3.3.1", "debounce": "^1.2.0" diff --git a/package.json b/package.json index 5fd32ec58367..968151ce2324 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "karma-coverage": "2.1.0", "karma-firefox-launcher": "2.1.2", "karma-jasmine": "4.0.1", - "karma-rollup-preprocessor": "7.0.7", + "karma-rollup-preprocessor": "github:jlmakes/karma-rollup-preprocessor#master", "karma-safari-launcher": "1.0.0", "less": "4.1.2", "malevic": "0.18.6", diff --git a/tasks/paths.js b/tasks/paths.js index ec39fd70e6ed..9198bc542628 100644 --- a/tasks/paths.js +++ b/tasks/paths.js @@ -8,5 +8,8 @@ module.exports = { getDestDir: function ({debug, platform}) { const buildTypeDir = `build/${debug ? 'debug' : 'release'}`; return `${buildTypeDir}/${platform}`; - } + }, + getTestDestDir: function () { + return `build-tests`; + }, }; diff --git a/tests/inject/karma.conf.js b/tests/inject/karma.conf.js index 42f04c29fd80..34c91acb6ab3 100644 --- a/tests/inject/karma.conf.js +++ b/tests/inject/karma.conf.js @@ -5,6 +5,7 @@ const rollupPluginNodeResolve = require('@rollup/plugin-node-resolve').default; const rollupPluginReplace = require('@rollup/plugin-replace'); const rollupPluginTypescript = require('@rollup/plugin-typescript'); const typescript = require('typescript'); +const {getTestDestDir} = require('../../tasks/paths'); module.exports = (config) => { config.set({ @@ -41,6 +42,7 @@ module.exports = (config) => { }), ], output: { + dir: `${getTestDestDir()}`, strict: true, format: 'iife', sourcemap: 'inline', From 51e8ccec6bd557c9011d72f988ff70dd02bf35df Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 7 Feb 2022 14:46:08 +0100 Subject: [PATCH 379/892] Fix for wikipedia.org (#8161) - Fix icons. - Resolves #8160 --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d5386f09e34f..20affa16e70f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16873,6 +16873,7 @@ body > .oo-ui-windowManager .vega .marks .minerva-footer-logo img .music-symbol .tool.tool-button[src$="background-image:"] +.wikiEditor-ui .oo-ui-iconElement-icon CSS .mwe-popups-discreet > svg, From a61b80fb4f690d05c7854364a458a38d6c552e68 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 7 Feb 2022 15:45:42 +0100 Subject: [PATCH 380/892] Fix legacy gradient parsing (#8163) - Fix parsing -webkit- gradients(which follows a different syntax. - Resolves #8157 --- src/utils/parsing.ts | 12 +++++++----- tests/inject/dynamic/color.tests.ts | 13 ++++++++++++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/utils/parsing.ts b/src/utils/parsing.ts index bd9be595e681..c5cd2c54bd1b 100644 --- a/src/utils/parsing.ts +++ b/src/utils/parsing.ts @@ -37,11 +37,13 @@ export function parseGradient(value: string): parsedGradient[] { if (possibleGradient === possibleType) { // Check if the type has a `-` before the `type-gradient` keyword. // If it does, it's a repeating gradient. - if (index - possibleType.length - 1 >= 9) { - if (value[index - possibleType.length - 1] === '-') { - typeGradient = `repeating-${possibleType}gradient`; - return true; - } + if (value.slice(index - possibleType.length - 10, index - possibleType.length - 1) === 'repeating') { + typeGradient = `repeating-${possibleType}gradient`; + return true; + } + if (value.slice(index - possibleType.length - 8, index - possibleType.length - 1) === '-webkit') { + typeGradient = `-webkit-${possibleType}gradient`; + return true; } typeGradient = `${possibleType}gradient`; return true; diff --git a/tests/inject/dynamic/color.tests.ts b/tests/inject/dynamic/color.tests.ts index 1dc70effc890..3f031f81b69d 100644 --- a/tests/inject/dynamic/color.tests.ts +++ b/tests/inject/dynamic/color.tests.ts @@ -1,7 +1,7 @@ import '../polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; -import {multiline} from '../../test-utils'; +import {multiline, timeout} from '../../test-utils'; const theme = { ...DEFAULT_THEME @@ -89,4 +89,15 @@ describe('COLOR PARSING', () => { createOrUpdateDynamicTheme(theme, null, false); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(35, 38, 40)'); }); + + it('should handle gradient\'s cases with rgb(...) xx%', async () => { + container.innerHTML = multiline( + '', + '

Weird color Power!

', + ); + createOrUpdateDynamicTheme(theme, null, false); + expect(getComputedStyle(container.querySelector('h1')).backgroundImage).toBe('-webkit-linear-gradient(bottom, rgb(24, 26, 27) 15%, rgb(29, 32, 33) 85%)'); + }); }); From 030851d2faee2043571589c404190f0e43e3c600 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 7 Feb 2022 15:53:37 +0100 Subject: [PATCH 381/892] Fix for blog.nightly.mozilla.org (#8164) - Resolves #8162 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 20affa16e70f..a40212b941ff 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2092,6 +2092,13 @@ CSS ================================ +blog.nightly.mozilla.org + +INVERT +.content > .logo > [href^="https://www.mozilla.org/"] + +================================ + blog.scssoft.com CSS From 8707f7ed3d758555f7a96fc05ab1c71075864bc3 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 7 Feb 2022 23:25:08 +0100 Subject: [PATCH 382/892] Fix for blog.nightly.mozilla.org (#8170) - Resolves #8162 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a40212b941ff..358b03eaabe4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2096,6 +2096,13 @@ blog.nightly.mozilla.org INVERT .content > .logo > [href^="https://www.mozilla.org/"] +.nav-global-twitter a::before +.nav-global-join a::before + +CSS +.nav-util-search .fm-search input { + border-color: ${#999} !important; +} ================================ From de7c656a98d3f36ca3348af33bd5345ae873d789 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 7 Feb 2022 23:25:23 +0100 Subject: [PATCH 383/892] Fix gradient output (#8169) - Add a separator between gradient and URL where needed. - Resolves #8167 - Resolves #8168 --- src/inject/dynamic-theme/modify-css.ts | 20 +++++++++++++++++++- tests/inject/dynamic/color.tests.ts | 2 +- tests/inject/dynamic/image-analysis.tests.ts | 14 +++++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/inject/dynamic-theme/modify-css.ts b/src/inject/dynamic-theme/modify-css.ts index c8878c4d557f..a45fa50a46f1 100644 --- a/src/inject/dynamic-theme/modify-css.ts +++ b/src/inject/dynamic-theme/modify-css.ts @@ -482,7 +482,25 @@ export function getBgImageModifier( if (results.some((r) => r instanceof Promise)) { return Promise.all(results) .then((asyncResults) => { - return asyncResults.join(''); + let result = ''; + let lastWasURL = false; + // Go trough asyncResults and add seperators between URL's and gradients where needed. + asyncResults.forEach((asyncResult) => { + if (lastWasURL) { + // Only add a seperator when asyncResult isn't empty. + if (asyncResult) { + result += ', '; + } + lastWasURL = false; + } + + result += asyncResult; + + if (asyncResult.startsWith('url(')) { + lastWasURL = true; + } + }); + return result; }); } return results.join(''); diff --git a/tests/inject/dynamic/color.tests.ts b/tests/inject/dynamic/color.tests.ts index 3f031f81b69d..b7cc1f3fb874 100644 --- a/tests/inject/dynamic/color.tests.ts +++ b/tests/inject/dynamic/color.tests.ts @@ -1,7 +1,7 @@ import '../polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; -import {multiline, timeout} from '../../test-utils'; +import {multiline} from '../../test-utils'; const theme = { ...DEFAULT_THEME diff --git a/tests/inject/dynamic/image-analysis.tests.ts b/tests/inject/dynamic/image-analysis.tests.ts index d66885f3a459..0f78c1332258 100644 --- a/tests/inject/dynamic/image-analysis.tests.ts +++ b/tests/inject/dynamic/image-analysis.tests.ts @@ -40,7 +40,7 @@ function getSVGImageCSS(svg: string, width: number, height: number, selector: st ); } -const images = { +export const images = { darkIcon: multiline( '', ' ', @@ -238,4 +238,16 @@ describe('IMAGE ANALYSIS', () => { const backgroundImage = getComputedStyle(container.querySelector('i')).backgroundImage; expect(backgroundImage).toContain('data:'); }); + + it('should handle background-image with URL and gradient', async () => { + container.innerHTML = multiline( + '', + '

Weird color Power!

', + ); + createOrUpdateDynamicTheme(theme, null, false); + await timeout(50); + expect(getComputedStyle(container.querySelector('h1')).backgroundImage).toBe('url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iOCIgaGVpZ2h0PSI4Ij48ZGVmcz48ZmlsdGVyIGlkPSJkYXJrcmVhZGVyLWltYWdlLWZpbHRlciI+PGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAuMzMzIC0wLjY2NyAtMC42NjcgMC4wMDAgMS4wMDAgLTAuNjY3IDAuMzMzIC0wLjY2NyAwLjAwMCAxLjAwMCAtMC42NjcgLTAuNjY3IDAuMzMzIDAuMDAwIDEuMDAwIDAuMDAwIDAuMDAwIDAuMDAwIDEuMDAwIDAuMDAwIiAvPjwvZmlsdGVyPjwvZGVmcz48aW1hZ2Ugd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsdGVyPSJ1cmwoI2RhcmtyZWFkZXItaW1hZ2UtZmlsdGVyKSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhacFpYZENiM2c5SWpBZ01DQTRJRGdpSUhkcFpIUm9QU0k0SWlCb1pXbG5hSFE5SWpnaVBnb2dJQ0FnUEhKbFkzUWdabWxzYkQwaWQyaHBkR1VpSUhkcFpIUm9QU0l4TURBbElpQm9aV2xuYUhROUlqRXdNQ1VpSUM4K0Nqd3ZjM1puUGc9PSIgLz48L3N2Zz4="), linear-gradient(rgb(204, 0, 0), rgb(0, 0, 0))'); + }); }); From e14753838398c83a21549071e5c546e223fb5f8a Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 8 Feb 2022 18:30:02 +0100 Subject: [PATCH 384/892] Fix surfingkeys hint (#8173) - Resolves #8166 --- src/inject/utils/dom.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/inject/utils/dom.ts b/src/inject/utils/dom.ts index 7ab967b57255..f811d9b43461 100644 --- a/src/inject/utils/dom.ts +++ b/src/inject/utils/dom.ts @@ -183,6 +183,10 @@ export function iterateShadowHosts(root: Node, iterator: (host: Element) => void node != null; node = walker.nextNode() as Element ) { + if (node.classList.contains('surfingkeys_hints_host')) { + continue; + } + iterator(node); iterateShadowHosts(node.shadowRoot, iterator); } From db9476df6ed4147a0b2a3c107c20596383dfa090 Mon Sep 17 00:00:00 2001 From: Myshor Date: Tue, 8 Feb 2022 21:12:42 +0100 Subject: [PATCH 385/892] fix for facebook.com (#8174) * fix for facebook.com - Fix for white maps in Place Editor when dark mode enabled on facebook site. Now only maps with default theme are inverted. If theme=dark then map is not touched. - and same fix for themed maps in events --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 358b03eaabe4..29cba6269a3b 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5529,7 +5529,7 @@ a[role="link"] > i.hu5pjgll, ._3w97 { ._2yu8 { background-color: rgba(255, 255, 255, .5) !important; } -img[src*="/map"], [style*="map"], +.leaflet-map-pane img[src*="theme=default"], [style*="map"][style*="theme=default"], ._8bb_ img[src*="/map"], ._8bb_ [style*="map"], img[src*="mapy.cz"], ._8bb_ img[src*="mapy.cz"], img[src*="%2Fmap"], ._8bb_ img[src*="%2Fmap"], From 056b894c4a663e45c2961aca522a3d5d2b222595 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 9 Feb 2022 19:36:11 +0100 Subject: [PATCH 386/892] Fix iframe's background color (#8180) - Resolves #8179 --- src/inject/dynamic-theme/modify-css.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/inject/dynamic-theme/modify-css.ts b/src/inject/dynamic-theme/modify-css.ts index a45fa50a46f1..dd38f3056f7d 100644 --- a/src/inject/dynamic-theme/modify-css.ts +++ b/src/inject/dynamic-theme/modify-css.ts @@ -93,11 +93,13 @@ export function getModifiedUserAgentStyle(theme: Theme, isIFrame: boolean, style lines.push('html {'); lines.push(` background-color: ${modifyBackgroundColor({r: 255, g: 255, b: 255}, theme)} !important;`); lines.push('}'); - } - if (isCSSColorSchemePropSupported) { - lines.push('html {'); - lines.push(` color-scheme: ${theme.mode === 1 ? 'dark' : 'dark light'} !important;`); - lines.push('}'); + + // Apparantly using this on iframe's can cause issues with the background color that would be applied. + if (isCSSColorSchemePropSupported) { + lines.push('html {'); + lines.push(` color-scheme: ${theme.mode === 1 ? 'dark' : 'dark light'} !important;`); + lines.push('}'); + } } const bgSelectors = joinSelectors(isIFrame ? '' : 'html, body', styleSystemControls ? 'input, textarea, select, button' : ''); if (bgSelectors) { From 6b193a5be96a729331bd1498a2b661811674579c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 12 Feb 2022 10:49:32 +0100 Subject: [PATCH 387/892] Bump karma from 6.3.12 to 6.3.14 (#8186) Bumps [karma](https://github.com/karma-runner/karma) from 6.3.12 to 6.3.14. - [Release notes](https://github.com/karma-runner/karma/releases) - [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md) - [Commits](https://github.com/karma-runner/karma/compare/v6.3.12...v6.3.14) --- updated-dependencies: - dependency-name: karma dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 18 +++++++++--------- package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 54640e86cea5..faace23f9cbe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "globby": "11.0.4", "jasmine-core": "4.0.0", "jest": "27.4.7", - "karma": "6.3.12", + "karma": "6.3.14", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.1.0", "karma-firefox-launcher": "2.1.2", @@ -7804,9 +7804,9 @@ } }, "node_modules/karma": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.12.tgz", - "integrity": "sha512-qwIG+oB2YmHx4hjvYSRMNzL3YWAJ9baHaLAxiP7biFNkfpwYTUTtPck0joFpucalNLzMr+7z/FX1uY/kl8DV9A==", + "version": "6.3.14", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.14.tgz", + "integrity": "sha512-SDFoU5F4LdosEiUVWUDRPCV/C1zQRNtIakx7rWkigf7R4sxGADlSEeOma4S1f/js7YAzvqLW92ByoiQptg+8oQ==", "dev": true, "dependencies": { "body-parser": "^1.19.0", @@ -7821,7 +7821,7 @@ "http-proxy": "^1.18.1", "isbinaryfile": "^4.0.8", "lodash": "^4.17.21", - "log4js": "^6.3.0", + "log4js": "^6.4.1", "mime": "^2.5.2", "minimatch": "^3.0.4", "qjobs": "^1.2.0", @@ -18205,9 +18205,9 @@ } }, "karma": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.12.tgz", - "integrity": "sha512-qwIG+oB2YmHx4hjvYSRMNzL3YWAJ9baHaLAxiP7biFNkfpwYTUTtPck0joFpucalNLzMr+7z/FX1uY/kl8DV9A==", + "version": "6.3.14", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.14.tgz", + "integrity": "sha512-SDFoU5F4LdosEiUVWUDRPCV/C1zQRNtIakx7rWkigf7R4sxGADlSEeOma4S1f/js7YAzvqLW92ByoiQptg+8oQ==", "dev": true, "requires": { "body-parser": "^1.19.0", @@ -18222,7 +18222,7 @@ "http-proxy": "^1.18.1", "isbinaryfile": "^4.0.8", "lodash": "^4.17.21", - "log4js": "^6.3.0", + "log4js": "^6.4.1", "mime": "^2.5.2", "minimatch": "^3.0.4", "qjobs": "^1.2.0", diff --git a/package.json b/package.json index 968151ce2324..5be88204cd7c 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "globby": "11.0.4", "jasmine-core": "4.0.0", "jest": "27.4.7", - "karma": "6.3.12", + "karma": "6.3.14", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.1.0", "karma-firefox-launcher": "2.1.2", From 1f22edf4bd06b9d1791518af11f2c8db32c1f1e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 12 Feb 2022 10:50:53 +0100 Subject: [PATCH 388/892] Bump follow-redirects from 1.14.7 to 1.14.8 (#8189) Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.8) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index faace23f9cbe..d6c24def6d15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5456,9 +5456,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", "dev": true, "funding": [ { @@ -16425,9 +16425,9 @@ "dev": true }, "follow-redirects": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", "dev": true }, "forever-agent": { From eb36772b3720470a45dca2e21953d1126c03ee43 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 12 Feb 2022 18:19:12 +0100 Subject: [PATCH 389/892] Fix for betanews.com (#8192) - Resolves #8181 --- src/config/dynamic-theme-fixes.config | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 29cba6269a3b..19a87be90afa 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1766,6 +1766,21 @@ input[type="radio" i] { ================================ +betanews.com + +CSS +.sectionTop, +.editorial .header, +.tabbed .tabs li:not(.active), +.tabbed .tabs li:not(.active) a { + background-image: none !important; +} +.tabbed .tabs li:not(.active) a { + background-color: ${#d9d9ff} !important; +} + +================================ + bettercap.org INVERT From 5b1eb85244af7bdcb2a7cd176362ffbffd28a7be Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 12 Feb 2022 18:19:19 +0100 Subject: [PATCH 390/892] Add dark sites (#8193) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 781957ed50a1..7e45990e05a2 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -876,6 +876,7 @@ szmarczak.com t.maisputain.ovh tacoanon.github.io takethewalk.net +talentbrick.com tallguysfree.com tarkov-market.com tauri.studio From a8d08eb3f59d240281ecc1efcb43e6365f0f5496 Mon Sep 17 00:00:00 2001 From: Mike Date: Sat, 12 Feb 2022 09:58:17 -0800 Subject: [PATCH 391/892] Fix for spanish.kwiziq.com (#8188) - Fix clouds. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 19a87be90afa..0c52e3e853ed 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13995,6 +13995,9 @@ INVERT spanish.kwiziq.com CSS +.bg-clouds { + background-image: none !important; +} .table-scroll-shadow-wrapper table td, .table-scroll-shadow-wrapper table th, .table-scroll-shadow-wrapper table tr { From 55f84d4daa51c18c901e278878d8df6c8dbc25b6 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 13 Feb 2022 23:35:22 +0100 Subject: [PATCH 392/892] Fix for askwoody.com (#8205) - Resolves #8199 --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0c52e3e853ed..9fb5bd3a73e5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1355,6 +1355,16 @@ header, ================================ +askwoody.com + +CSS +.banner, +.content { + background-image: none !important; +} + +================================ + assetstore.unity.com CSS From 85efba084ec594c05c8689e5f20ee836d6af6103 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Sun, 13 Feb 2022 14:38:22 -0800 Subject: [PATCH 393/892] Added dark site (#8203) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 7e45990e05a2..b0ac202e8ab3 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -487,6 +487,7 @@ jqbx.fm jsben.ch jsfiddle.net jsitor.com +json-diff.com kadantiscam.netlify.app kaoskrew.org keezersquest.nl From fa2a5c23906ddec870660a92e9b4d78de6b32ee1 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Sun, 13 Feb 2022 14:55:50 -0800 Subject: [PATCH 394/892] Fix wired.com (dynamic mode) (#8204) This fixes the logo at the top of the page. I didn't create the other INVERT rules, so I don't know which (if any) are still needed. You may want to check. --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9fb5bd3a73e5..890f9df82e37 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17083,6 +17083,7 @@ wired.com INVERT body a svg +a[data-testid="Logo"] .c-nav__open-icon .c-nav__close-icon .standard-navigation__logo-image > img From bd3ddcfd82335fb8ab1746597a0d348a4f422097 Mon Sep 17 00:00:00 2001 From: AntarktisZ11 <84478285+AntarktisZ11@users.noreply.github.com> Date: Mon, 14 Feb 2022 00:02:36 +0100 Subject: [PATCH 395/892] Fix eevblog.com (#8187) Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 890f9df82e37..95a210f4ecce 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5088,6 +5088,25 @@ INVERT ================================ +eevblog.com + +CSS +#main_content_section > div > span, +#quickModForm > div > span, +#main_content_section > span { + mix-blend-mode: color !important; +} +.frame, +.plainbox, +#header, +#content_section, +#footer_section { + background: var(--darkreader-neutral-background) !important; + color: var(--darkreader-neutral-text) !important; +} + +================================ + eff.org INVERT From dec5b574808bbe026bf958ba309541332e21140f Mon Sep 17 00:00:00 2001 From: Anhad Sawhney <37595571+AnhadSawhney@users.noreply.github.com> Date: Mon, 14 Feb 2022 13:54:40 -0500 Subject: [PATCH 396/892] Fix for mitx (#8197) - Fix images. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 95a210f4ecce..f341abdf7e72 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10138,6 +10138,15 @@ INVERT ================================ +mitx.* + +CSS +img { + background-color: white !important; +} + +================================ + mixcloud.com INVERT From f722e2c9a71c043070500ebab691d222b6ed1fd6 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 14 Feb 2022 20:21:27 +0100 Subject: [PATCH 397/892] Fix for zfsbootmenu.org (#8209) - Resolves #8206 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index f341abdf7e72..41fc9d62cb8a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -18318,6 +18318,15 @@ INVERT ================================ +zfsbootmenu.org + +CSS +body { + background-image: none !important; +} + +================================ + zhihu.com INVERT From b5c400857c429e0e62b138052850212de8d3eb76 Mon Sep 17 00:00:00 2001 From: Andrea Zerbini Date: Mon, 14 Feb 2022 20:22:07 +0100 Subject: [PATCH 398/892] Added dark sites (#8208) --- src/config/dark-sites.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index b0ac202e8ab3..51f4877eae98 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -729,8 +729,10 @@ ptt.cc pxseu.com pylon.bot qbraid.com +raidbots.com raider.io raidforums.com +raidplan.io raidtime.net rain-world-modding.github.io randacek.dev @@ -978,6 +980,7 @@ vtcdirectory.com vuecinemas.nl w0rp.com w41k3r.com +wago.io wallhaven.cc wallpaperplay.com wannabuy.biz From 650b44ef741bde2d77448e57e0afe162d68164aa Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 16 Feb 2022 11:26:44 +0100 Subject: [PATCH 399/892] Fix for processon.com (#8214) - Resolves #8213 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 41fc9d62cb8a..7e7ce0e01318 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12344,6 +12344,13 @@ INVERT ================================ +processon.com + +INVERT +#view_container canvas + +================================ + procyclingstats.com IGNORE IMAGE ANALYSIS From fe39a7906b8862aca5a105ea972a4a5f55eb7721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20I?= <17483811+Luceoria@users.noreply.github.com> Date: Wed, 16 Feb 2022 22:57:16 +0100 Subject: [PATCH 400/892] Fix for jakdojade.pl (#8212) --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7e7ce0e01318..d245890206cc 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8150,6 +8150,13 @@ body { ================================ +jakdojade.pl + +INVERT +#main-map + +================================ + jamboard.google.com INVERT From 6bc6ade147e8dc1ef37c0b088095d0f8122c5425 Mon Sep 17 00:00:00 2001 From: Sahil Garg Date: Fri, 18 Feb 2022 21:22:26 +0530 Subject: [PATCH 401/892] Fix for chem.libretexts.org (#8103) - Invert images. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d245890206cc..a0b4aa59bc77 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2755,6 +2755,13 @@ header .logo ================================ +chem.libretexts.org + +INVERT +.internal + +================================ + chilkatsoft.com CSS From 15a51c26f486cd5e7ed1437df6570182f7579378 Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Fri, 18 Feb 2022 09:53:49 -0600 Subject: [PATCH 402/892] Added dark sites (#8223) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 51f4877eae98..1a1c89d68ab5 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -423,6 +423,7 @@ hbomax.com hdencode.com heapmedia.com heavybit.com +heliotrope.dk hellofromhe.re help.steampowered.com hermes.ksdfg.me From 733e607d802c96d1addbbf14c110daac4c577652 Mon Sep 17 00:00:00 2001 From: INFINIX <72700816+DevInfinix@users.noreply.github.com> Date: Fri, 18 Feb 2022 21:24:16 +0530 Subject: [PATCH 403/892] Added dark sites (#8221) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 1a1c89d68ab5..963f1217aa8d 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -10,6 +10,7 @@ 314n.org 5stardata.info 9anime.to +abletonbot.me absolucy.moe account.bhvr.com accounts.pubg.com From c1d10774f2180359d64b9f9aaa7567bbf0272479 Mon Sep 17 00:00:00 2001 From: Cloudburst <18114966+C10udburst@users.noreply.github.com> Date: Sat, 19 Feb 2022 14:05:42 +0100 Subject: [PATCH 404/892] Fix for zadania.info (#8224) - Fix math images. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a0b4aa59bc77..8566cf7ae827 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -18293,6 +18293,14 @@ INVERT ================================ +zadania.info + +INVERT +img.math +img.math-display + +================================ + zdic.net INVERT From bf909822bc64045528d389fcce971b6397c2c1d8 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Sat, 19 Feb 2022 06:05:52 -0700 Subject: [PATCH 405/892] Fixes for ieee.org, standards.ieee.org, and spectrum.ieee.org (#8225) Invert logos. --- src/config/dynamic-theme-fixes.config | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8566cf7ae827..559620c6b8a8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7595,6 +7595,13 @@ CSS ================================ +ieee.org + +INVERT +.logo-left + +================================ + iett.istanbul CSS @@ -14065,6 +14072,13 @@ CSS ================================ +spectrum.ieee.org + +INVERT +a[title="Spectrum Logo"] > svg + +================================ + speed.cloudflare.com INVERT @@ -14281,6 +14295,13 @@ IGNORE INLINE STYLE ================================ +standards.ieee.org + +INVERT +.logo-link + +================================ + stardewvalleywiki.com CSS From 649594237d1c8937c30856eacf8e8e1c2894d514 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Sat, 19 Feb 2022 06:06:34 -0700 Subject: [PATCH 406/892] Fix for grocy.info (#8226) - Invert logo - Invert carousel buttons --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 559620c6b8a8..261cc2fb61b9 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7158,6 +7158,15 @@ INVERT ================================ +grocy.info + +INVERT +.navbar-brand +.carousel-control-prev-icon +.carousel-control-next-icon + +================================ + grubhub.com CSS From 1458243b301c14e0f09ee11416ae3f41aeb0dd5a Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Sat, 19 Feb 2022 06:07:01 -0700 Subject: [PATCH 407/892] Fix for cnbc.com (#8228) Remove inversion for site logo which isn't needed anymore. --- src/config/dynamic-theme-fixes.config | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 261cc2fb61b9..95544ccc6d5f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3013,9 +3013,6 @@ INVERT cnbc.com -INVERT -img[alt="logo"] - CSS div[class^="FeaturedStories-styles-makeit-background"]::before { opacity: 0.1 !important; From 8b92deb50cbc6ad4f19813cd4fcf8d71e4f1d08d Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Sat, 19 Feb 2022 06:16:38 -0700 Subject: [PATCH 408/892] Fix for independent.co.uk (#8229) Invert logo, hamburger menu, search icon, and in the video player seek bar and volume bar. --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 95544ccc6d5f..180bd4c2a619 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7780,6 +7780,20 @@ CSS ================================ +independent.co.uk + +INVERT +.logo-text +#MegaMenuButton +.search-toggle +.jw-slider-horizontal +.jw-slider-volume + +IGNORE INLINE STYLE +.logo-svg-cls-2 + +================================ + infinitysearch.co INVERT From 383df8a615b2261d491908aa5d378cb8c3d97b30 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Sat, 19 Feb 2022 06:17:31 -0700 Subject: [PATCH 409/892] Fix for themoscowtimes.com (#8230) * Fix for themoscowtimes.com Invert logos * Added Russian domain --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 180bd4c2a619..5ed039b101de 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15342,6 +15342,16 @@ INVERT ================================ +themoscowtimes.com +moscowtimes.ru + +INVERT +.site-header__logo +.footer__logo +.contribute-teaser__button + +================================ + themoviedb.org INVERT From f73710966d35079a3f6eb4af9a71cc2ea3ec8497 Mon Sep 17 00:00:00 2001 From: bzzrak <77467869+bzzrak@users.noreply.github.com> Date: Sat, 19 Feb 2022 14:30:41 +0100 Subject: [PATCH 410/892] Update Serbian translation (#8232) Fixed some typos and a few strange translations --- src/_locales/sr.config | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/_locales/sr.config b/src/_locales/sr.config index dff21c4af022..2eb405a7cf52 100644 --- a/src/_locales/sr.config +++ b/src/_locales/sr.config @@ -28,19 +28,19 @@ Podesite ekstenziju uklj. dugme @automation -Automacija +Automatizacija @set_active_hours Podesite aktivne sate @set_location -Aktivirajte po zalaski sunca +Aktivirajte po zalasku sunca @longitude -Longituda +Geogr. dužina @latitude -Latituda +Geogr. širina @page_protected Ovu stranicu štiti @@ -174,10 +174,10 @@ Alatke za razvoj #==== Store listing ==== @store_listing -Ova ekstenzija brine o vašim očima tako što omogućava tamnu temu za sajtove. Dark Reader invertuje svetle boje i pojačava kontrast što omogućava lakše čitanje noću. +Ova ekstenzija brine o vašim očima tako što omogućava tamnu temu za sajtove. Dark Reader invertuje svetle boje i pojačava kontrast, što omogućava lakše čitanje noću. Možete podesiti osvetljenje, kontrast, sepija filter, tamni mod, font i listu ignorisanih sajtova. -Dark Reader ne prikazuje reklame i nigde ne šalje podatke korisnika. Kod ekstenzije je upotpunosti otvoren: https://github.com/darkreader/darkreader +Dark Reader ne prikazuje reklame i nigde ne šalje podatke korisnika. Kod ekstenzije je u potpunosti otvoren: https://github.com/darkreader/darkreader Pre instalacije, isključite druge slične ekstenzije. Uživajte! From 1b615439aabbda0a8faa2085ddcece3f89d3be6f Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 20 Feb 2022 08:02:38 +0100 Subject: [PATCH 411/892] Fix for wikipedia.org (#8219) - Fix header's icon. --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5ed039b101de..1462563910f0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17016,6 +17016,7 @@ body > .oo-ui-windowManager .vega .marks .music-symbol .tool.tool-button[src$="background-image:"] .wikiEditor-ui .oo-ui-iconElement-icon +#p-personal .mw-echo-notifications-badge CSS .mwe-popups-discreet > svg, From 3f47f2590172ad50470f84be4b11a3fa3fe61e4d Mon Sep 17 00:00:00 2001 From: Zoran Dori Date: Tue, 22 Feb 2022 08:16:33 +0100 Subject: [PATCH 412/892] Fix mywikis.com (#8234) Make header a bit better --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1462563910f0..d026b45e57a5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10757,6 +10757,15 @@ IGNORE INLINE STYLE ================================ +mywikis.com + +INVERT +.heading-primary +.heading-subtext +.hero + +================================ + n.maps.yandex.ru mapeditor.yandex.com From 038008d0c42f6259d510047a55d4eb99de3ae09a Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Tue, 22 Feb 2022 00:17:37 -0700 Subject: [PATCH 413/892] Fix for investopedia.com (#8235) - Invert home page's stock ticker container - Invert logo icon in footer --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d026b45e57a5..11b8f98c7ab8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7993,6 +7993,14 @@ INVERT ================================ +investopedia.com + +INVERT +.widget-ticker-container +.mntl-dotdash-universal-nav__logo + +================================ + invisioncommunity.com INVERT From 750d26b9911ee8c3255c47871600a940d3dfa583 Mon Sep 17 00:00:00 2001 From: Himan Yerrakalva <52135039+hyerrakalva@users.noreply.github.com> Date: Tue, 22 Feb 2022 02:20:17 -0500 Subject: [PATCH 414/892] Fix for piazza.com (#8196) - Fix toolbar --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 11b8f98c7ab8..2b1a047b2a57 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12059,6 +12059,15 @@ img.math-display ================================ +piazza.com + +CSS +.dashboard_toolbar, .page_feed_bucket_header { + background: linear-gradient(to bottom, ${#c5c7cd} 0%, ${#dfe1e2} 100%) !important; +} + +================================ + picrew.me IGNORE INLINE STYLE From 5e96f7e16501a3ab9f2940e05f8478837d384b2f Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Tue, 22 Feb 2022 00:25:32 -0700 Subject: [PATCH 415/892] Fix for navalnews.com (#8248) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2b1a047b2a57..1a89d4455bc6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10842,6 +10842,13 @@ INVERT ================================ +navalnews.com + +INVERT +.logo + +================================ + nba.com INVERT From 9c65012a25a36bcab4818d500a3a7ac7de3bbeee Mon Sep 17 00:00:00 2001 From: mark8128 Date: Mon, 21 Feb 2022 23:27:38 -0800 Subject: [PATCH 416/892] Fix for nytimes.com (#8247) - Fix crossword --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1a89d4455bc6..8bbb691cb071 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11301,6 +11301,18 @@ a[data-testid] > svg { #xwd-board text[class^="Cell-hidden--"] { color: ${black} !important; } +#xwd-board rect[class^="Cell-cell--"] { + fill: ${darkgrey} !important; +} +#xwd-board rect[class^="Cell-highlighted--"] { + fill: ${lightgrey} !important; +} +#xwd-board rect[class^="Cell-selected--"] { + fill: ${white} !important; +} +#xwd-board rect[class^="Cell-related--"] { + fill: ${goldenrod} !important; +} ================================ From e5ea978346d89fff09047b2fc1af2b6174aedee5 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Tue, 22 Feb 2022 00:28:27 -0700 Subject: [PATCH 417/892] Fix for kaos-community-packages.github.io (#8250) - Invert logo - Resolved #8240 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8bbb691cb071..923cd3180e83 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8444,6 +8444,13 @@ IGNORE IMAGE ANALYSIS ================================ +kaos-community-packages.github.io + +INVERT +.Header-brand + +================================ + kaosx.us INVERT From f2fec9217edd707de81fa20811b2c87eb00288ab Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Tue, 22 Feb 2022 00:29:28 -0700 Subject: [PATCH 418/892] Fix for bandshed.net (#8251) Darken bright article section. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 923cd3180e83..47bf339746fe 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1613,6 +1613,15 @@ CSS ================================ +bandshed.net + +CSS +#content { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + banki.ru INVERT From 9878f511adacb4aac2b41d31fb2971b00f69b070 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Tue, 22 Feb 2022 00:30:44 -0700 Subject: [PATCH 419/892] Fix for imdb.com (#8254) Removed bright background from right-hand sidebar on some movie pages like: https://www.imdb.com/title/tt10665338/reference Fix for issue #8237 --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 47bf339746fe..b801ed65ad98 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7768,6 +7768,9 @@ main { .ipc-switch__slider::after { background: #5799ef !important; } +.aux-content-widget-2 { + background: none !important; +} ================================ From ed47ead8580a2318234f39fd2de32505fc9afbb2 Mon Sep 17 00:00:00 2001 From: Elaborendum <71190696+Elaborendum@users.noreply.github.com> Date: Tue, 22 Feb 2022 02:36:30 -0500 Subject: [PATCH 420/892] Fix for bulbagarden.net (#8253) --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b801ed65ad98..8f59d242aaec 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2384,6 +2384,15 @@ CSS ================================ +bulbagarden.net + +CSS +body { + background-image: none !important; +} + +================================ + bulk.com INVERT From 31bd92d020c9b07cb2fa6ec47a3e09136fca6bf4 Mon Sep 17 00:00:00 2001 From: linsui <36977733+linsui@users.noreply.github.com> Date: Tue, 22 Feb 2022 07:37:23 +0000 Subject: [PATCH 421/892] Fix nixos.org (#8256) --- src/config/dynamic-theme-fixes.config | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8f59d242aaec..0bfeb9e8fd25 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11077,6 +11077,19 @@ body, ================================ +nixos.org + +CSS +.demo-preview > .thumbnail svg .background { + fill: var(--darkreader-neutral-background) !important; +} +.packages-searchbox::before, +.packages-searchbox::after { + background-image: none !important; +} + +================================ + nnmclub.to nnm-club.me From 82d22c553727b9a3046484d156a7ee52e1c7687f Mon Sep 17 00:00:00 2001 From: xxyzz Date: Tue, 22 Feb 2022 16:12:26 +0800 Subject: [PATCH 422/892] Fix for bugs.python.org (#8259) - Invert Github icon. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0bfeb9e8fd25..3fe0abad6dbd 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2371,6 +2371,14 @@ th { ================================ +bugs.python.org + +INVERT +img[title="has PR"] +img[title="GitHub"] + +================================ + build-electronic-circuits.com INVERT From 6fa2fd9b4582374c587c66b5dd5dd309da59b1c7 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 22 Feb 2022 08:13:30 +0000 Subject: [PATCH 423/892] Correctly darken yellow. (#8218) - Lowers the luminescence for yellow-ish colors. - Resolves #8216 - Resolves #7487 --- src/generators/modify-colors.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/generators/modify-colors.ts b/src/generators/modify-colors.ts index f0916a133d2b..a3626afe137a 100644 --- a/src/generators/modify-colors.ts +++ b/src/generators/modify-colors.ts @@ -138,7 +138,7 @@ function modifyBgHSL({h, s, l, a}: HSLA, pole: HSLA) { return {h, s, l: lx, a}; } - const lx = scale(l, 0.5, 1, MAX_BG_LIGHTNESS, pole.l); + let lx = scale(l, 0.5, 1, MAX_BG_LIGHTNESS, pole.l); if (isNeutral) { const hx = pole.h; @@ -157,6 +157,12 @@ function modifyBgHSL({h, s, l, a}: HSLA, pole: HSLA) { } } + // Lower the lightness, if the resulting + // hue is in lower yellow spectrum. + if (hx > 40 && hx < 80) { + lx *= 0.75; + } + return {h: hx, s, l: lx, a}; } From c6c84e8e984b10adb618a4438a54df4d116c2b46 Mon Sep 17 00:00:00 2001 From: Myshor Date: Wed, 23 Feb 2022 16:36:38 +0100 Subject: [PATCH 424/892] fix for allegro.pl (#8269) Another fix for smart icon on offers list. --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 3fe0abad6dbd..4bdfd1b8e5df 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -676,7 +676,7 @@ div.sob6jg.so1d89.mpof_ki CSS #opbox-listing--base i, -[class*='2UYuR'] { +article i { background-size: 100% 100% !important; } .opbox-sheet-wrapper, From 8a2ba804c10eb23dfd9838231ac96158de5c5531 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Wed, 23 Feb 2022 12:12:15 -0700 Subject: [PATCH 425/892] Fix for forum.kaosx.us (#8255) - Invert header logo - Consistent coloring for menu, refresh, and load more buttons on home page - Invert Github login link - Resolves #8239 --- src/config/dynamic-theme-fixes.config | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4bdfd1b8e5df..27dbdfbf6cd7 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6142,6 +6142,23 @@ IGNORE INLINE STYLE ================================ +forum.kaosx.us + +INVERT +.Header-logo + +CSS +.Dropdown-toggle, +.item-refresh > Button, +.DiscussionList-loadMore > Button, +.LogInButton--github, +.Button--icon { + color: ${black} !important; + background: ${#6f7f92} !important; +} + +================================ + forum.miranda-ng.org CSS From cff9585d2cc2240774d2c220e9e6caf24f4f9a96 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Wed, 23 Feb 2022 12:13:40 -0700 Subject: [PATCH 426/892] Fix for pipiwiki.com (#8249) - Invert equations - Invert logo - Resolves #8246 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 27dbdfbf6cd7..909d6db17a55 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12189,6 +12189,15 @@ body, img, video, iframe { ================================ +pipiwiki.com + +INVERT +.mwe-math-fallback-image-display +.mwe-math-fallback-image-inline +#logo_img + +================================ + pixiv.net CSS From 10bd0846973f98c1f2b3526d63e79fa37f0f593b Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 23 Feb 2022 19:44:10 +0000 Subject: [PATCH 427/892] Fix for fandom.com (#8271) - Resolves #8252 --- src/config/dynamic-theme-fixes.config | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 909d6db17a55..6570d95e8aa3 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5667,6 +5667,12 @@ INVERT .wds-global-navigation__logo-fandom CSS +body { + background-color: var(--theme-body-background-color) !important; +} +#mixed-content-footer { + z-index: 1 !important; +} .fandom-community-header__background.cover { z-index: 0 !important; } From 8042800ec0d2665f19af924dee6148349de0939a Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 23 Feb 2022 19:54:09 +0000 Subject: [PATCH 428/892] Fix for forums.gearsofwar.com (#8272) - Resolves #8264 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 6570d95e8aa3..3aa61310c297 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6196,6 +6196,13 @@ a[data-mentionid], ================================ +forums.gearsofwar.com + +IGNORE IMAGE ANALYSIS +body + +================================ + forums.mydigitallife.net IGNORE INLINE STYLE From 34f68df6582ba3641debe79b07c9924312bd0b9f Mon Sep 17 00:00:00 2001 From: sauce420 <77341102+sauce420@users.noreply.github.com> Date: Wed, 23 Feb 2022 19:55:06 +0000 Subject: [PATCH 429/892] Added dark sites (#8268) --- src/config/dark-sites.config | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 963f1217aa8d..33ba0b1ef5bf 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -9,6 +9,9 @@ 2bqueue.info 314n.org 5stardata.info +9anime.center +9anime.club +9anime.id 9anime.to abletonbot.me absolucy.moe @@ -634,6 +637,7 @@ null.media nulledbb.com obsidian.md obsproject.com +odysee.com offshorecorptalk.com ogusers.com ohmyz.sh From 07a87de18f9ee48314fe9f295c33bbefa8e570f3 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 23 Feb 2022 19:57:57 +0000 Subject: [PATCH 430/892] Remove non dark sites (#8273) - https://help.obsidian.md/Obsidian/Index --- src/config/dark-sites.config | 1 - 1 file changed, 1 deletion(-) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 33ba0b1ef5bf..3d731b95b65f 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -635,7 +635,6 @@ notebooks.quantumstat.com nowplayi.ng null.media nulledbb.com -obsidian.md obsproject.com odysee.com offshorecorptalk.com From cde2ff11d64758f4ba16061815ef59f696153b43 Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Fri, 25 Feb 2022 02:55:14 -0600 Subject: [PATCH 431/892] Added dark sites (#8277) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 3d731b95b65f..4a082b75bd49 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -77,6 +77,7 @@ audiomass.co audioz.download augmentedsteam.com avengedsevenfold.com +axyl-os.github.io azeria-labs.com azm.azerialabs.com badboybill.com From 41854403239ebcd91c64c320ea51ee566bbe8787 Mon Sep 17 00:00:00 2001 From: Niall Murphy Date: Fri, 25 Feb 2022 15:56:36 +0700 Subject: [PATCH 432/892] Fix for theguardian.com(#8270) - Fix crossword puzzle. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 3aa61310c297..b8706cf2554a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15440,6 +15440,7 @@ theguardian.com INVERT .inline-the-guardian-logo__svg a[data-link-name$="logo"] > svg +.crossword__grid .crossword__cell-text ================================ From b9cb058306927f013ad01558a86dd6c87780fd9a Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Fri, 25 Feb 2022 01:57:29 -0700 Subject: [PATCH 433/892] Fix for distrowatch.com (#8263) - Invert logo - Darken bright table backgrounds Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b8706cf2554a..51c86535ec85 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4379,6 +4379,20 @@ INVERT ================================ +distrowatch.com + +INVERT +img[src="images/cpxtu/dwbanner.png"] +.NewsLogo > a + +CSS +.NavMenu, +td:not(.NewsDate):not(.NewsHeadline) { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + ditu.baidu.com map.baidu.com maps.baidu.com From dfdbb433556e5393de3fa089549c446ab53f300c Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 25 Feb 2022 09:05:36 +0000 Subject: [PATCH 434/892] Fix for math.tamu.edu (#8279) - Resolves #8258 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 51c86535ec85..b5f12f4918a2 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9820,6 +9820,13 @@ INVERT ================================ +math.tamu.edu + +INVERT +div[align="center"] > p + p > img + +================================ + mathsisfun.com CSS From e8b569535696048bd72230c80f884b94c9837748 Mon Sep 17 00:00:00 2001 From: xxyzz Date: Sat, 26 Feb 2022 17:06:49 +0800 Subject: [PATCH 435/892] Fix for wikipedia.org (#8284) - Invert close button. --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b5f12f4918a2..7e47ab53d3db 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17172,6 +17172,7 @@ body > .oo-ui-windowManager .vega .marks .tool.tool-button[src$="background-image:"] .wikiEditor-ui .oo-ui-iconElement-icon #p-personal .mw-echo-notifications-badge +.oo-ui-icon-close CSS .mwe-popups-discreet > svg, From fc00f958a0c0059a87b00e1c6480d16da13d691f Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Sat, 26 Feb 2022 02:07:01 -0700 Subject: [PATCH 436/892] Fix for hbo.com (#8283) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7e47ab53d3db..92503f6ac509 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7380,6 +7380,13 @@ INVERT ================================ +hbo.com + +INVERT +img[alt="HBO Logo"] + +================================ + hbr.org INVERT From 49f04095985a2d5ffd931e742459599a4c2494c2 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Sat, 26 Feb 2022 02:07:09 -0700 Subject: [PATCH 437/892] Fix for distrowatch.com (#8282) - Don't invert the screenshots under the distro logos on home page list. - Invert distro logo within details summary page. --- src/config/dynamic-theme-fixes.config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 92503f6ac509..8a5f79f3677b 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4383,7 +4383,8 @@ distrowatch.com INVERT img[src="images/cpxtu/dwbanner.png"] -.NewsLogo > a +.NewsLogo > a:first-of-type +.TablesTitle > img CSS .NavMenu, From 07ce5a87f7200dd383766cc24a09d38050d4a4f3 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 26 Feb 2022 09:14:18 +0000 Subject: [PATCH 438/892] Fix for fandom.com (#8285) - Resolves #8252 --- src/config/dynamic-theme-fixes.config | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8a5f79f3677b..41fb2ef92185 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5685,7 +5685,9 @@ CSS body { background-color: var(--theme-body-background-color) !important; } -#mixed-content-footer { +#mixed-content-footer, +.community-header-wrapper, +.global-footer { z-index: 1 !important; } .fandom-community-header__background.cover { @@ -5696,6 +5698,7 @@ IGNORE INLINE STYLE .wds-global-navigation__logo-image g path .wds-global-footer__header-logo g path .wds-global-footer__link svg g path +symbol[id^="wds-brand-other"] * ================================ From 5507b7d451cce9cccb3fc745c92e7187696c0dfd Mon Sep 17 00:00:00 2001 From: xxyzz Date: Sun, 27 Feb 2022 21:32:29 +0800 Subject: [PATCH 439/892] Fixes for Wikipedia (#8288) * Don't ignore the light background-color of the infobox header * Invert icon on Wikipedia mobile page and MinervaNeue skin --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 41fb2ef92185..b613e75f0146 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17184,6 +17184,7 @@ body > .oo-ui-windowManager .vega .marks .wikiEditor-ui .oo-ui-iconElement-icon #p-personal .mw-echo-notifications-badge .oo-ui-icon-close +.mw-ui-icon::before CSS .mwe-popups-discreet > svg, @@ -17242,7 +17243,6 @@ body.mediawiki, IGNORE INLINE STYLE .legend-color -.infobox > tbody > tr > td.infobox-subheader[style*="background-color"] #on_image_elements span IGNORE IMAGE ANALYSIS From e05846de269b175c608862c0ce4d99410c0df2ff Mon Sep 17 00:00:00 2001 From: Hayward Peirce Date: Sun, 27 Feb 2022 05:36:17 -0800 Subject: [PATCH 440/892] Fix for gasbuddy.com (#8286) --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b613e75f0146..8e95b6afe840 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6367,6 +6367,14 @@ INVERT ================================ +gasbuddy.com + +INVERT +.pin +.pin-small + +================================ + gat.no INVERT From a8994f4a8d465de1c7b253e9e990f05bffaeef62 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Sun, 27 Feb 2022 21:40:26 +0800 Subject: [PATCH 441/892] Fix for keyserver.pgp.com (#8290) - Invert logo and buttoms - Remove half-black-half-white borders --- src/config/dynamic-theme-fixes.config | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8e95b6afe840..0bb42a3fb6cd 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8644,6 +8644,30 @@ CSS ================================ +keyserver.pgp.com + +INVERT +a.button-text +#ImPGPComHelp +#ImPGPComHome +[src="images/crystal_button_left.gif"] +[src="images/crystal_button_left-dark.gif"] +[src="images/crystal_button_right.gif"] +[src="images/crystal_button_right-dark.gif"] +[src="images/global_dir_logo_web.gif"] +[background="images/crystal_button_fill.gif"] +[background="images/crystal_button_fill-dark.gif"] + +CSS +.card-top, .card-top-left-corner, .card-top-right-corner, +.divide-fill, +.header-bar-left, .header-bar-right, +.title-left, .title-right { + background-image: none !important; +} + +================================ + kfccoupons.co.nz CSS From bb54f4d1769cd68220ae5c9101690481377368b6 Mon Sep 17 00:00:00 2001 From: everdrone Date: Sun, 27 Feb 2022 14:41:53 +0100 Subject: [PATCH 442/892] Added dark sites (#8289) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 4a082b75bd49..623d74ff9141 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -607,6 +607,7 @@ nee.lv neovim.io netzhack.de neundex.com +neurocore.xyz newgrounds.com nexusmods.com nfs.fandom.com From 7a505f22af12b91ad88492a3693bb0d7b3dee731 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Sun, 27 Feb 2022 21:43:21 +0800 Subject: [PATCH 443/892] Fix for libravatar.org (#8291) - Invert white decoration on header & footer --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0bb42a3fb6cd..b6ad5aa148f6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9093,6 +9093,14 @@ img[src*="libertesklep.svg"] ================================ +libravatar.org + +INVERT +footer::before +.hero::before + +================================ + libretexts.org CSS From bfc43126c6079f1df788d6c38fe4c07cbe2b084c Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Sun, 27 Feb 2022 21:43:26 +0800 Subject: [PATCH 444/892] Fix for fedoraforum.org (#8292) - Invert logo --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b6ad5aa148f6..54679e3ff751 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5781,6 +5781,13 @@ CSS ================================ +fedoraforum.org + +INVERT +.logo-image + +================================ + feedly.com CSS From 99493186815c053a4e32f6ccf55aee65d6c6d653 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Mon, 28 Feb 2022 05:26:35 +0800 Subject: [PATCH 445/892] Fix for hotel.meituan.com (#8294) - Invert maps --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 54679e3ff751..9b7d8330182f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7559,6 +7559,14 @@ img[src$="hootsuite_white_form3.png"] ================================ +hotel.meituan.com + +INVERT +.poi-hotellbs-map +.small-map + +================================ + howbuy.com INVERT From bd0db08f52600f9da393102120f09ab3b81e34d6 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Mon, 28 Feb 2022 05:48:19 +0800 Subject: [PATCH 446/892] Fix for minsu.dianping.com (#8295) - Invert map --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9b7d8330182f..257b09efbea4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10332,6 +10332,13 @@ IGNORE IMAGE ANALYSIS ================================ +minsu.dianping.com + +INVERT +.zg-map + +================================ + miro.com INVERT From 777af4cf2236fcae2591efc415ea1781cbd57690 Mon Sep 17 00:00:00 2001 From: Roland Fredenhagen Date: Sun, 27 Feb 2022 22:48:45 +0100 Subject: [PATCH 447/892] Fix logo on fraunhofer webpage (#8296) This is otherwise not readable on e.g. https://publica.fraunhofer.de/dokumente/N-565900.html --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 257b09efbea4..01f07e5ec5f1 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12723,6 +12723,13 @@ CSS ================================ +publica.fraunhofer.de + +INVERT +img[src="/pub09img/logo-fraunhofer.gif"] + +================================ + publicwww.com CSS From a40e0fa0557c6bfdcc69a2e35e6b99ee2334a2d4 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 27 Feb 2022 22:45:44 +0000 Subject: [PATCH 448/892] Fix baidu.com (#8297) - Resolves #8293 --- src/inject/dynamic-theme/modify-css.ts | 2 +- src/inject/dynamic-theme/stylesheet-proxy.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/inject/dynamic-theme/modify-css.ts b/src/inject/dynamic-theme/modify-css.ts index dd38f3056f7d..6c21e3f14d2f 100644 --- a/src/inject/dynamic-theme/modify-css.ts +++ b/src/inject/dynamic-theme/modify-css.ts @@ -487,7 +487,7 @@ export function getBgImageModifier( let result = ''; let lastWasURL = false; // Go trough asyncResults and add seperators between URL's and gradients where needed. - asyncResults.forEach((asyncResult) => { + asyncResults.filter(Boolean).forEach((asyncResult) => { if (lastWasURL) { // Only add a seperator when asyncResult isn't empty. if (asyncResult) { diff --git a/src/inject/dynamic-theme/stylesheet-proxy.ts b/src/inject/dynamic-theme/stylesheet-proxy.ts index 649a3951ad25..5f1bfd186962 100644 --- a/src/inject/dynamic-theme/stylesheet-proxy.ts +++ b/src/inject/dynamic-theme/stylesheet-proxy.ts @@ -116,7 +116,7 @@ export function injectProxy(enableStyleSheetsProxy: boolean) { // current situation of the DOM. Instead of a static list. const nodeListBehavior: ProxyHandler> = { get: function (_: NodeListOf, property: string) { - return getCurrentElementValue()[Number(property)]; + return getCurrentElementValue()[Number(property) || property]; } }; elements = new Proxy(elements, nodeListBehavior); From 2aa9a5dad33e8ac39f6a7164d27d416d36b86477 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Mon, 28 Feb 2022 06:58:55 +0800 Subject: [PATCH 449/892] Fix for ditu.baidu.com (#8299) - Remove some outdated fixes for login form These are no longer the case now. Tested on both 4.9.45 and master. --- src/config/dynamic-theme-fixes.config | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 01f07e5ec5f1..bd057733a0ac 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4421,10 +4421,7 @@ INVERT .more-device #nearby-searchbox-hint #nearby-searchbox-hint-center -.pass-forceverify-wrapper -.pass-form-item .route-button -.tang-foreground .tang-pass-qrcode-title #userSignPanel From 6076614cd278fd612a048e3ccb9da0db7998d689 Mon Sep 17 00:00:00 2001 From: Matt Alexander Date: Sun, 27 Feb 2022 18:29:15 -0600 Subject: [PATCH 450/892] Add regression tests for TSConfig (#8266) * Upgrade prep: Improved regression tests for TSConfig (failing tests to fix) * Fix compilation error "error TS2687: All declarations of 'name' must have identical modifiers." * Fix bundle-css build errors related to an unexpected CWD * Fix bundle-html build errors related to an unexpected CWD * Fix bundle-locales build errors related to an unexpected CWD * Remove jsdom from Jest config * Fix error handling when firefox-nightly is not installed * Fix error handling when karma config is not valid * Fix Karma rollup build errors related to an unexpected CWD * Increase heap memory limit for V8 * Give tests/inject its own test-util.ts since it's loaded in the browser * Fix compilation of ./src when "composite" is true * Move unit tests into their own directory; Organize jest config * lint fix * Exact versions in package.json * Gitignore Node's profiler log files * Exact versions in package.json II * Alphabetical package.json scripts * Remove dev cruft --- .eslintrc.js | 4 + .gitignore | 4 + package-lock.json | 94 +++- package.json | 27 +- src/api/tsconfig.json | 6 + src/inject/dynamic-theme/inline-style.ts | 2 +- .../dynamic-theme/stylesheet-modifier.ts | 18 +- src/inject/utils/dom.ts | 2 +- src/tsconfig.json | 11 +- src/utils/debounce.ts | 2 +- tasks/bundle-api.js | 8 +- tasks/bundle-css.js | 10 +- tasks/bundle-html.js | 4 +- tasks/bundle-js.js | 7 +- tasks/bundle-locales.js | 4 +- tasks/paths.js | 8 + .../browser/dynamic/inline-override.tests.ts | 2 +- tests/browser/dynamic/link-override.tests.ts | 2 +- tests/browser/dynamic/style-override.tests.ts | 2 +- tests/browser/e2e/devtools.tests.ts | 2 +- tests/browser/e2e/toggle.tests.ts | 2 +- tests/browser/environment.js | 16 +- tests/browser/jest.config.chrome.js | 9 - tests/browser/jest.config.firefox.js | 9 - tests/browser/jest.config.js | 31 +- tests/browser/jest.config.shared.js | 27 - tests/browser/paths.js | 7 +- tests/browser/tsconfig.json | 23 +- tests/config/jest.config.js | 23 - tests/config/tsconfig.json | 11 - tests/generators/utils/jest.config.js | 23 - tests/generators/utils/tsconfig.json | 11 - tests/inject/dynamic/color.tests.ts | 2 +- tests/inject/dynamic/fixes.tests.ts | 2 +- tests/inject/dynamic/image-analysis.tests.ts | 2 +- tests/inject/dynamic/inline-override.tests.ts | 2 +- tests/inject/dynamic/link-override.tests.ts | 2 +- tests/inject/dynamic/media-query.tests.ts | 2 +- tests/inject/dynamic/shadow-dom.tests.ts | 2 +- tests/inject/dynamic/style-override.tests.ts | 2 +- tests/inject/dynamic/variables.tests.ts | 2 +- tests/inject/jest.config.js | 24 - tests/inject/karma.conf.js | 4 +- tests/inject/run.js | 7 + tests/{ => inject}/test-utils.ts | 2 + tests/inject/tsconfig.json | 29 +- tests/{ => inject}/utils/url.tests.ts | 12 +- tests/jest.config.js | 8 - .../__snapshots__/tsconf.tests.ts.snap | 503 ++++++++++++++++++ tests/project/build.tests.ts | 27 + tests/project/jest.config.js | 19 + tests/project/tsconf.tests.ts | 52 ++ tests/project/tsconfig.json | 3 + tests/project/utils.ts | 25 + tests/support/test-utils.ts | 15 + tests/{ => unit}/config/config.tests.ts | 18 +- tests/{ => unit}/config/locales.tests.ts | 8 +- .../generators/utils/parse.tests.ts | 4 +- tests/unit/jest.config.js | 19 + tests/unit/tsconfig.json | 21 + tests/{ => unit}/utils/color.tests.ts | 4 +- tests/{ => unit}/utils/math.tests.ts | 2 +- tests/{ => unit}/utils/parsing.tests.ts | 2 +- tests/unit/utils/promise-barrier.tests.ts | 97 ++++ tests/{ => unit}/utils/text.tests.ts | 2 +- tests/{ => unit}/utils/time.tests.ts | 2 +- tests/{ => unit}/utils/uid.tests.ts | 2 +- tests/utils/jest.config.js | 23 - tests/utils/promise-barrier.tests.ts | 89 ---- tests/utils/tsconfig.json | 11 - 70 files changed, 1072 insertions(+), 391 deletions(-) create mode 100644 src/api/tsconfig.json delete mode 100644 tests/browser/jest.config.chrome.js delete mode 100644 tests/browser/jest.config.firefox.js delete mode 100644 tests/browser/jest.config.shared.js delete mode 100644 tests/config/jest.config.js delete mode 100644 tests/config/tsconfig.json delete mode 100644 tests/generators/utils/jest.config.js delete mode 100644 tests/generators/utils/tsconfig.json delete mode 100644 tests/inject/jest.config.js rename tests/{ => inject}/test-utils.ts (86%) rename tests/{ => inject}/utils/url.tests.ts (98%) delete mode 100644 tests/jest.config.js create mode 100644 tests/project/__snapshots__/tsconf.tests.ts.snap create mode 100644 tests/project/build.tests.ts create mode 100644 tests/project/jest.config.js create mode 100644 tests/project/tsconf.tests.ts create mode 100644 tests/project/tsconfig.json create mode 100644 tests/project/utils.ts create mode 100644 tests/support/test-utils.ts rename tests/{ => unit}/config/config.tests.ts (90%) rename tests/{ => unit}/config/locales.tests.ts (87%) rename tests/{ => unit}/generators/utils/parse.tests.ts (99%) create mode 100644 tests/unit/jest.config.js create mode 100644 tests/unit/tsconfig.json rename tests/{ => unit}/utils/color.tests.ts (98%) rename tests/{ => unit}/utils/math.tests.ts (85%) rename tests/{ => unit}/utils/parsing.tests.ts (96%) create mode 100644 tests/unit/utils/promise-barrier.tests.ts rename tests/{ => unit}/utils/text.tests.ts (98%) rename tests/{ => unit}/utils/time.tests.ts (99%) rename tests/{ => unit}/utils/uid.tests.ts (94%) delete mode 100644 tests/utils/jest.config.js delete mode 100644 tests/utils/promise-barrier.tests.ts delete mode 100644 tests/utils/tsconfig.json diff --git a/.eslintrc.js b/.eslintrc.js index 1d4fff01c96c..e8d4a5bc63c9 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -163,4 +163,8 @@ module.exports = { } }, ], + + // Ignore temporarily since it's taking forever. + // It seems to be importing typescript or something. + ignorePatterns: ['tests/project/tsconf.tests.ts'], }; diff --git a/.gitignore b/.gitignore index 820afdf38324..1a92f754c047 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,7 @@ tests/inject/coverage/ # Cache files #----------------------------------- .eslintcache + +# V8 Profiler logs +#----------------------------------- +isolate-*-v8.log diff --git a/package-lock.json b/package-lock.json index d6c24def6d15..4b30558c270a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,9 +14,11 @@ "@rollup/plugin-typescript": "8.3.0", "@rollup/pluginutils": "4.1.2", "@types/chrome": "0.0.176", + "@types/eslint": "8.4.1", "@types/jasmine": "3.10.3", "@types/jest": "27.4.0", "@types/karma": "6.3.2", + "@types/karma-coverage": "2.0.1", "@types/node": "17.0.9", "@types/offscreencanvas": "2019.6.4", "@typescript-eslint/eslint-plugin": "5.9.1", @@ -28,6 +30,7 @@ "globby": "11.0.4", "jasmine-core": "4.0.0", "jest": "27.4.7", + "jest-extended": "2.0.0", "karma": "6.3.14", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.1.0", @@ -36,6 +39,7 @@ "karma-rollup-preprocessor": "github:jlmakes/karma-rollup-preprocessor#master", "karma-safari-launcher": "1.0.0", "less": "4.1.2", + "log4js": "6.4.1", "malevic": "0.18.6", "prettier": "2.5.1", "puppeteer-core": "13.0.1", @@ -1369,6 +1373,16 @@ "@types/node": "*" } }, + "node_modules/@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, "node_modules/@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -1376,9 +1390,9 @@ "dev": true }, "node_modules/@types/filesystem": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.30.tgz", - "integrity": "sha512-NCoRgmGmLpTT9VFL6Bb6z0jQuqI3d0E5FGl7M0JOv/J5RQYo9s5aOItPYnpckx9MbYQk1APLXcF8f20Vqnf2yA==", + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", + "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", "dev": true, "dependencies": { "@types/filewriter": "*" @@ -1415,6 +1429,12 @@ "integrity": "sha512-IG8AE1m2pWtPqQ7wXhFhy6Q59bwwnLwO36v5Rit2FrbXCIp8Sk8E2PfUCreyrdo17STwFSKDAkitVuVYbpEHvQ==", "dev": true }, + "node_modules/@types/istanbul": { + "version": "0.4.30", + "resolved": "https://registry.npmjs.org/@types/istanbul/-/istanbul-0.4.30.tgz", + "integrity": "sha512-+hQU4fh2G96ze78uI5/V6+SRDZD1UnVrFn23i2eDetwfbBq3s0/zYP92xj/3qyvVMM3WnvS88N56zjz+HmL04A==", + "dev": true + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -1477,6 +1497,16 @@ "log4js": "^6.3.0" } }, + "node_modules/@types/karma-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/karma-coverage/-/karma-coverage-2.0.1.tgz", + "integrity": "sha512-A5aJSn2IVJAy6XJl3zC8xAk78pqcj1dSAc9s0QPj3jnsmEpK5cGKmCTVVD7CYX8iEFk0C+IuSiS5YPVbacreSg==", + "dev": true, + "dependencies": { + "@types/istanbul": "*", + "@types/karma": "*" + } + }, "node_modules/@types/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", @@ -7129,6 +7159,22 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-extended": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-extended/-/jest-extended-2.0.0.tgz", + "integrity": "sha512-6AgjJQVaBEKGSK3FH90kOiRUWJsbzn9NWtW0pjGkAFIdH0oPilfkV/gHPJdVvJeBiqT3jMHw8TUg9pUGC1azDg==", + "dev": true, + "dependencies": { + "jest-diff": "^27.2.5", + "jest-get-type": "^27.0.6" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "peerDependencies": { + "jest": ">=27.2.5" + } + }, "node_modules/jest-get-type": { "version": "27.4.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.4.0.tgz", @@ -13209,6 +13255,16 @@ "@types/node": "*" } }, + "@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, "@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -13216,9 +13272,9 @@ "dev": true }, "@types/filesystem": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.30.tgz", - "integrity": "sha512-NCoRgmGmLpTT9VFL6Bb6z0jQuqI3d0E5FGl7M0JOv/J5RQYo9s5aOItPYnpckx9MbYQk1APLXcF8f20Vqnf2yA==", + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", + "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", "dev": true, "requires": { "@types/filewriter": "*" @@ -13255,6 +13311,12 @@ "integrity": "sha512-IG8AE1m2pWtPqQ7wXhFhy6Q59bwwnLwO36v5Rit2FrbXCIp8Sk8E2PfUCreyrdo17STwFSKDAkitVuVYbpEHvQ==", "dev": true }, + "@types/istanbul": { + "version": "0.4.30", + "resolved": "https://registry.npmjs.org/@types/istanbul/-/istanbul-0.4.30.tgz", + "integrity": "sha512-+hQU4fh2G96ze78uI5/V6+SRDZD1UnVrFn23i2eDetwfbBq3s0/zYP92xj/3qyvVMM3WnvS88N56zjz+HmL04A==", + "dev": true + }, "@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -13317,6 +13379,16 @@ "log4js": "^6.3.0" } }, + "@types/karma-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/karma-coverage/-/karma-coverage-2.0.1.tgz", + "integrity": "sha512-A5aJSn2IVJAy6XJl3zC8xAk78pqcj1dSAc9s0QPj3jnsmEpK5cGKmCTVVD7CYX8iEFk0C+IuSiS5YPVbacreSg==", + "dev": true, + "requires": { + "@types/istanbul": "*", + "@types/karma": "*" + } + }, "@types/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", @@ -17648,6 +17720,16 @@ "jest-util": "^27.4.2" } }, + "jest-extended": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-extended/-/jest-extended-2.0.0.tgz", + "integrity": "sha512-6AgjJQVaBEKGSK3FH90kOiRUWJsbzn9NWtW0pjGkAFIdH0oPilfkV/gHPJdVvJeBiqT3jMHw8TUg9pUGC1azDg==", + "dev": true, + "requires": { + "jest-diff": "^27.2.5", + "jest-get-type": "^27.0.6" + } + }, "jest-get-type": { "version": "27.4.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.4.0.tgz", diff --git a/package.json b/package.json index 5be88204cd7c..109d9958af1f 100644 --- a/package.json +++ b/package.json @@ -6,24 +6,25 @@ "api": "node tasks/build.js --api", "benchmark-server": "node tests/benchmark-server/index.js", "build": "node tasks/build.js --release", + "build:all": "node tasks/build.js --debug --release --api", "code-style": "eslint --ignore-pattern \"!.eslintplugin.js\" --cache --fix \"src/**/*.ts\" \"src/**/*.tsx\" \"tasks/**/*.js\" \"tests/[!coverage]**/*.js\" \"tests/**/*.ts\" \".eslintrc.js\" \"index.d.ts\" \".eslintplugin.js\"", "debug": "node tasks/build.js --debug", "debug:watch": "node tasks/build.js --debug --watch", "lint": "eslint --ignore-pattern \"!.eslintplugin.js\" \"src/**/*.ts\" \"src/**/*.tsx\" \"tasks/**/*.js\" \"tests/**/*.ts\" \"tests/[!coverage]**/*.js\" \"index.d.ts\" \".eslintplugin.js\"", "prepublishOnly": "npm test && npm run api", "release": "npm test && npm run lint && node tasks/build.js --release", - "test": "jest --config=tests/jest.config.js", - "test:browser": "npm run debug && jest --config=tests/browser/jest.config.js --runInBand", - "test:chrome": "npm run debug && jest --config=tests/browser/jest.config.chrome.js --runInBand", - "test:ci": "jest --config=tests/jest.config.js --runInBand", - "test:config": "jest --config=tests/config/jest.config.js", - "test:config:debug": "node --inspect-brk ./node_modules/jest/bin/jest --config=tests/config/jest.config.js --runInBand --no-cache --watch", - "test:coverage": "jest --config=tests/jest.config.js --coverage", - "test:firefox": "npm run debug && jest --config=tests/browser/jest.config.firefox.js --runInBand", + "test": "npm run test:unit", + "test:all": "npm run test:unit; npm run test:browser; npm run test:inject; npm run test:project", + "test:browser": "npm run debug && npm run test:chrome && npm run test:firefox", + "test:chrome": "npm run debug && TEST_BROWSER=chrome jest --config=tests/browser/jest.config.js --runInBand", + "test:ci": "npm run test:unit", + "test:coverage": "jest --config=tests/unit/jest.config.js --coverage", + "test:firefox": "npm run debug && TEST_BROWSER=firefox jest --config=tests/browser/jest.config.js --runInBand", "test:inject": "node tests/inject/run.js", "test:inject:debug": "node tests/inject/run.js --debug", - "test:utils": "jest --config=tests/utils/jest.config.js", - "test:utils:debug": "node --inspect-brk ./node_modules/jest/bin/jest --config=tests/utils/jest.config.js --runInBand --no-cache --watch" + "test:project": "jest --config=tests/project/jest.config.js", + "test:unit": "jest --config=tests/unit/jest.config.js", + "test:unit:debug": "node --inspect-brk ./node_modules/jest/bin/jest --config=tests/unit/jest.config.js --runInBand --no-cache --watch" }, "main": "darkreader.js", "repository": { @@ -69,11 +70,13 @@ "@rollup/plugin-typescript": "8.3.0", "@rollup/pluginutils": "4.1.2", "@types/chrome": "0.0.176", + "@types/eslint": "8.4.1", "@types/jasmine": "3.10.3", "@types/jest": "27.4.0", "@types/karma": "6.3.2", - "@types/offscreencanvas": "2019.6.4", + "@types/karma-coverage": "2.0.1", "@types/node": "17.0.9", + "@types/offscreencanvas": "2019.6.4", "@typescript-eslint/eslint-plugin": "5.9.1", "@typescript-eslint/parser": "5.9.1", "chokidar": "3.5.2", @@ -83,6 +86,7 @@ "globby": "11.0.4", "jasmine-core": "4.0.0", "jest": "27.4.7", + "jest-extended": "2.0.0", "karma": "6.3.14", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.1.0", @@ -91,6 +95,7 @@ "karma-rollup-preprocessor": "github:jlmakes/karma-rollup-preprocessor#master", "karma-safari-launcher": "1.0.0", "less": "4.1.2", + "log4js": "6.4.1", "malevic": "0.18.6", "prettier": "2.5.1", "puppeteer-core": "13.0.1", diff --git a/src/api/tsconfig.json b/src/api/tsconfig.json new file mode 100644 index 000000000000..d13f12403ba8 --- /dev/null +++ b/src/api/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "target": "ES5" + } +} diff --git a/src/inject/dynamic-theme/inline-style.ts b/src/inject/dynamic-theme/inline-style.ts index 826b665c5c00..e17bbfc7c23f 100644 --- a/src/inject/dynamic-theme/inline-style.ts +++ b/src/inject/dynamic-theme/inline-style.ts @@ -172,7 +172,7 @@ function deepWatchForInlineStyles( const RETRY_TIMEOUT = getDuration({seconds: 2}); const MAX_ATTEMPTS_COUNT = 50; let cache: MutationRecord[] = []; - let timeoutId: number = null; + let timeoutId: ReturnType = null; const handleAttributeMutations = throttle((mutations: MutationRecord[]) => { mutations.forEach((m) => { diff --git a/src/inject/dynamic-theme/stylesheet-modifier.ts b/src/inject/dynamic-theme/stylesheet-modifier.ts index efd2d35cc2d5..44330844a38d 100644 --- a/src/inject/dynamic-theme/stylesheet-modifier.ts +++ b/src/inject/dynamic-theme/stylesheet-modifier.ts @@ -28,21 +28,21 @@ function getThemeKey(theme: Theme) { const asyncQueue = createAsyncTasksQueue(); +interface ModifySheetOptions { + sourceCSSRules: CSSRuleList; + theme: Theme; + ignoreImageAnalysis: string[]; + force: boolean; + prepareSheet: () => CSSStyleSheet; + isAsyncCancelled: () => boolean; +} + export function createStyleSheetModifier() { let renderId = 0; const rulesTextCache = new Set(); const rulesModCache = new Map(); const varTypeChangeCleaners = new Set<() => void>(); let prevFilterKey: string = null; - interface ModifySheetOptions { - sourceCSSRules: CSSRuleList; - theme: Theme; - ignoreImageAnalysis: string[]; - force: boolean; - prepareSheet: () => CSSStyleSheet; - isAsyncCancelled: () => boolean; - } - let hasNonLoadedLink = false; let wasRebuilt = false; function shouldRebuildStyle() { diff --git a/src/inject/utils/dom.ts b/src/inject/utils/dom.ts index f811d9b43461..268cb625a67e 100644 --- a/src/inject/utils/dom.ts +++ b/src/inject/utils/dom.ts @@ -84,7 +84,7 @@ export function watchForNodePosition( } let attempts = 0; let start: number = null; - let timeoutId: number = null; + let timeoutId: ReturnType = null; const restore = throttle(() => { if (timeoutId) { return; diff --git a/src/tsconfig.json b/src/tsconfig.json index 7056a9d6c9a9..7e0c46f71e9c 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -1,6 +1,5 @@ { "compilerOptions": { - "noImplicitAny": true, "target": "es2019", "baseUrl": ".", "module": "es2015", @@ -17,11 +16,9 @@ ], "allowJs": true, "downlevelIteration": true, - "noEmit": true, + "noImplicitAny": true, + "resolveJsonModule": true, "jsx": "react", - "jsxFactory": "m" - }, - "exclude": [ - "node_modules" - ] + "jsxFactory": "m", + } } diff --git a/src/utils/debounce.ts b/src/utils/debounce.ts index 12cec1e7adf9..27283c4b8f31 100644 --- a/src/utils/debounce.ts +++ b/src/utils/debounce.ts @@ -1,7 +1,7 @@ type AnyFn = (...args: any[]) => any; export function debounce(delay: number, fn: F): F { - let timeoutId: number = null; + let timeoutId: ReturnType = null; return ((...args: any[]) => { if (timeoutId) { clearTimeout(timeoutId); diff --git a/tasks/bundle-api.js b/tasks/bundle-api.js index 9710fa29067d..75e5713d8c43 100644 --- a/tasks/bundle-api.js +++ b/tasks/bundle-api.js @@ -10,20 +10,20 @@ const packageJSON = require('../package.json'); const fs = require('fs'); const os = require('os'); const {createTask} = require('./task'); +const {rootDir, rootPath} = require('./paths'); async function bundleAPI({debug}) { - const src = 'src/api/index.ts'; + const src = rootPath('src/api/index.ts'); const dest = 'darkreader.js'; - const bundle = await rollup.rollup({ input: src, plugins: [ rollupPluginNodeResolve(), rollupPluginTypescript({ + rootDir, typescript, - tsconfig: 'src/tsconfig.json', + tsconfig: rootPath('src/api/tsconfig.json'), removeComments: true, - target: 'es5', noEmitOnError: true, cacheDir: debug ? `${fs.realpathSync(os.tmpdir())}/darkreader_api_typescript_cache` : null, }), diff --git a/tasks/bundle-css.js b/tasks/bundle-css.js index 7f5d5eadade7..437063050777 100644 --- a/tasks/bundle-css.js +++ b/tasks/bundle-css.js @@ -1,7 +1,7 @@ // @ts-check const less = require('less'); const path = require('path'); -const {getDestDir, PLATFORM} = require('./paths'); +const {getDestDir, PLATFORM, rootPath} = require('./paths'); const reload = require('./reload'); const {createTask} = require('./task'); const {copyFile, readFile, writeFile} = require('./utils'); @@ -9,14 +9,14 @@ const {copyFile, readFile, writeFile} = require('./utils'); function getLessFiles({debug}) { const dir = getDestDir({debug, platform: PLATFORM.CHROME}); return { - 'src/ui/devtools/style.less': `${dir}/ui/devtools/style.css`, - 'src/ui/popup/style.less': `${dir}/ui/popup/style.css`, - 'src/ui/stylesheet-editor/style.less': `${dir}/ui/stylesheet-editor/style.css`, + [rootPath('src/ui/devtools/style.less')]: `${dir}/ui/devtools/style.css`, + [rootPath('src/ui/popup/style.less')]: `${dir}/ui/popup/style.css`, + [rootPath('src/ui/stylesheet-editor/style.less')]: `${dir}/ui/stylesheet-editor/style.css`, }; } async function bundleCSSEntry({src, dest}) { - const srcDir = path.join(process.cwd(), path.dirname(src)); + const srcDir = path.dirname(src); const input = await readFile(src); const output = await less.render(input, {paths: [srcDir], math: 'always'}); const {css} = output; diff --git a/tasks/bundle-html.js b/tasks/bundle-html.js index 147cf1201810..86aa8f697f4b 100644 --- a/tasks/bundle-html.js +++ b/tasks/bundle-html.js @@ -1,5 +1,5 @@ // @ts-check -const {getDestDir, PLATFORM} = require('./paths'); +const {getDestDir, PLATFORM, rootPath} = require('./paths'); const reload = require('./reload'); const {createTask} = require('./task'); const {copyFile, readFile, writeFile} = require('./utils'); @@ -11,7 +11,7 @@ const pages = [ ]; async function bundleHTMLPage({cwdPath}, {debug}) { - let html = await readFile(`src/${cwdPath}`); + let html = await readFile(rootPath(`src/${cwdPath}`)); const getPath = (dir) => `${dir}/${cwdPath}`; const outPath = getPath(getDestDir({debug, platform: PLATFORM.CHROME})); diff --git a/tasks/bundle-js.js b/tasks/bundle-js.js index 4608d377b06b..0063cb16ea23 100644 --- a/tasks/bundle-js.js +++ b/tasks/bundle-js.js @@ -8,7 +8,7 @@ const rollupPluginReplace = require('@rollup/plugin-replace'); /** @type {any} */ const rollupPluginTypescript = require('@rollup/plugin-typescript'); const typescript = require('typescript'); -const {getDestDir, PLATFORM} = require('./paths'); +const {getDestDir, PLATFORM, rootDir, rootPath} = require('./paths'); const reload = require('./reload'); const {PORT} = reload; const {createTask} = require('./task'); @@ -121,12 +121,13 @@ const jsEntries = [ async function bundleJS(/** @type {JSEntry} */entry, {debug, watch}) { const {src, dest} = entry; const bundle = await rollup.rollup({ - input: src, + input: rootPath(src), plugins: [ rollupPluginNodeResolve(), rollupPluginTypescript({ + rootDir, typescript, - tsconfig: 'src/tsconfig.json', + tsconfig: rootPath('src/tsconfig.json'), noImplicitAny: debug ? false : true, removeComments: debug ? false : true, sourceMap: debug ? true : false, diff --git a/tasks/bundle-locales.js b/tasks/bundle-locales.js index 150360c411b6..78831e39b907 100644 --- a/tasks/bundle-locales.js +++ b/tasks/bundle-locales.js @@ -1,6 +1,6 @@ // @ts-check const fs = require('fs').promises; -const {getDestDir, PLATFORM} = require('./paths'); +const {getDestDir, PLATFORM, rootPath} = require('./paths'); const reload = require('./reload'); const {createTask} = require('./task'); const {readFile, writeFile} = require('./utils'); @@ -36,7 +36,7 @@ async function bundleLocale(/** @type {string} */filePath, {debug}) { } async function bundleLocales({debug}) { - const localesSrcDir = 'src/_locales'; + const localesSrcDir = rootPath('src/_locales'); const list = await fs.readdir(localesSrcDir); for (const name of list) { if (!name.endsWith('.config')) { diff --git a/tasks/paths.js b/tasks/paths.js index 9198bc542628..1a2cbaf467ea 100644 --- a/tasks/paths.js +++ b/tasks/paths.js @@ -1,3 +1,8 @@ +const {dirname, join} = require('path'); +const packageJson = require.resolve('../package.json'); +const rootDir = dirname(packageJson); +const rootPath = (...paths) => join(rootDir, ...paths); + module.exports = { PLATFORM: { CHROME: 'chrome', @@ -12,4 +17,7 @@ module.exports = { getTestDestDir: function () { return `build-tests`; }, + + rootDir, + rootPath, }; diff --git a/tests/browser/dynamic/inline-override.tests.ts b/tests/browser/dynamic/inline-override.tests.ts index 49ce3ee0a764..0558005f44db 100644 --- a/tests/browser/dynamic/inline-override.tests.ts +++ b/tests/browser/dynamic/inline-override.tests.ts @@ -1,4 +1,4 @@ -import {multiline} from '../../test-utils'; +import {multiline} from '../../support/test-utils'; describe('Inline style override', () => { const inlineStyleMarkup = multiline( diff --git a/tests/browser/dynamic/link-override.tests.ts b/tests/browser/dynamic/link-override.tests.ts index eb95d12daca6..4ac020fb3967 100644 --- a/tests/browser/dynamic/link-override.tests.ts +++ b/tests/browser/dynamic/link-override.tests.ts @@ -1,4 +1,4 @@ -import {multiline, timeout} from '../../test-utils'; +import {multiline, timeout} from '../../support/test-utils'; describe('Link override', () => { it('should override link style', async () => { diff --git a/tests/browser/dynamic/style-override.tests.ts b/tests/browser/dynamic/style-override.tests.ts index 931e1701067a..a2f34fda3c01 100644 --- a/tests/browser/dynamic/style-override.tests.ts +++ b/tests/browser/dynamic/style-override.tests.ts @@ -1,4 +1,4 @@ -import {multiline} from '../../test-utils'; +import {multiline} from '../../support/test-utils'; describe('Style override', () => { it('should override user agent style', async () => { diff --git a/tests/browser/e2e/devtools.tests.ts b/tests/browser/e2e/devtools.tests.ts index 2c197c9b6a1b..82028b747e30 100644 --- a/tests/browser/e2e/devtools.tests.ts +++ b/tests/browser/e2e/devtools.tests.ts @@ -1,4 +1,4 @@ -import {multiline, timeout} from '../../test-utils'; +import {multiline, timeout} from '../../support/test-utils'; async function loadBasicPage() { await loadTestPage({ diff --git a/tests/browser/e2e/toggle.tests.ts b/tests/browser/e2e/toggle.tests.ts index 7ba4e010ca4d..8726b7b86697 100644 --- a/tests/browser/e2e/toggle.tests.ts +++ b/tests/browser/e2e/toggle.tests.ts @@ -1,4 +1,4 @@ -import {multiline, timeout} from '../../test-utils'; +import {multiline, timeout} from '../../support/test-utils'; async function loadBasicPage(header = 'E2E test page') { await loadTestPage({ diff --git a/tests/browser/environment.js b/tests/browser/environment.js index bf1a25700912..ab804e5981c7 100644 --- a/tests/browser/environment.js +++ b/tests/browser/environment.js @@ -240,20 +240,20 @@ class PuppeteerEnvironment extends JestNodeEnvironment { async teardown() { await super.teardown(); - if (this.global.product !== 'firefox') { + if (this.global.product !== 'firefox' && this.page?.coverage) { const coverage = await this.page.coverage.stopJSCoverage(); const dir = './tests/browser/coverage/'; await generateHTMLCoverageReports(dir, coverage); console.info('Coverage reports generated in', dir); } - await this.extensionPopup.close(); - await this.extensionDevtools.close(); - await this.page.close(); - await this.testServer.close(); - await this.corsServer.close(); - await this.popupTestServer.close(); - await this.browser.close(); + await this.extensionPopup?.close(); + await this.extensionDevtools?.close(); + await this.page?.close(); + await this.testServer?.close(); + await this.corsServer?.close(); + await this.popupTestServer?.close(); + await this.browser?.close(); } } diff --git a/tests/browser/jest.config.chrome.js b/tests/browser/jest.config.chrome.js deleted file mode 100644 index e9f59a3f43cf..000000000000 --- a/tests/browser/jest.config.chrome.js +++ /dev/null @@ -1,9 +0,0 @@ -const jestConfig = require('./jest.config.shared'); - -module.exports = { - ...jestConfig, - globals: { - ...jestConfig.globals, - product: 'chrome', - }, -}; diff --git a/tests/browser/jest.config.firefox.js b/tests/browser/jest.config.firefox.js deleted file mode 100644 index 2ab318f9d8c8..000000000000 --- a/tests/browser/jest.config.firefox.js +++ /dev/null @@ -1,9 +0,0 @@ -const jestConfig = require('./jest.config.shared'); - -module.exports = { - ...jestConfig, - globals: { - ...jestConfig.globals, - product: 'firefox', - }, -}; diff --git a/tests/browser/jest.config.js b/tests/browser/jest.config.js index a8cb48a04805..3c384ca2ca64 100644 --- a/tests/browser/jest.config.js +++ b/tests/browser/jest.config.js @@ -1,6 +1,27 @@ -module.exports = { - projects: [ - 'tests/browser/jest.config.chrome.js', - 'tests/browser/jest.config.firefox.js', - ], +// @ts-check + +const {dirname} = require('path'); +const rootDir = dirname(require.resolve('../../package.json')); +const product = process.env.TEST_BROWSER || 'chrome'; + +/** @type {import('@jest/types').Config.InitialOptions} */ +const config = { + rootDir, + testMatch: ['/tests/browser/**/*.tests.ts'], + moduleFileExtensions: ['ts', 'tsx', 'js'], + testEnvironment: '/tests/browser/environment.js', + verbose: true, + transform: {'^.+\\.ts(x?)$': 'ts-jest'}, + globals: { + 'ts-jest': {tsconfig: '/tests/browser/tsconfig.json'}, + __DEBUG__: false, + product, + }, + setupFilesAfterEnv: ['jest-extended/all'], + collectCoverage: false, + coverageDirectory: 'coverage', + collectCoverageFrom: ['/src/**/*.{ts,tsx}'], + coveragePathIgnorePatterns: ['^.+\\.d\\.ts$'], }; + +module.exports = config; diff --git a/tests/browser/jest.config.shared.js b/tests/browser/jest.config.shared.js deleted file mode 100644 index b023cef47a19..000000000000 --- a/tests/browser/jest.config.shared.js +++ /dev/null @@ -1,27 +0,0 @@ -module.exports = { - testEnvironment: './environment.js', - verbose: true, - transform: { - '^.+\\.ts(x?)$': 'ts-jest' - }, - testRegex: 'tests/browser/.*\\.tests\\.ts(x?)$', - moduleFileExtensions: [ - 'ts', - 'tsx', - 'js' - ], - collectCoverage: false, - coverageDirectory: 'coverage', - collectCoverageFrom: [ - 'src/**/*.{ts,tsx}' - ], - coveragePathIgnorePatterns: [ - '^.+\\.d\\.ts$' - ], - globals: { - 'ts-jest': { - tsconfig: './tests/browser/tsconfig.json' - }, - __DEBUG__: false, - } -}; diff --git a/tests/browser/paths.js b/tests/browser/paths.js index 9fc8b0de7bcf..1fedb69ffde0 100644 --- a/tests/browser/paths.js +++ b/tests/browser/paths.js @@ -62,7 +62,12 @@ async function getFirefoxPath() { if (process.platform === 'win32') { return await winProgramFiles('Firefox Nightly\\firefox.exe'); } - return await linuxAppPath('firefox-nightly'); + try { + return await linuxAppPath('firefox-nightly'); + } catch (e) { + // ignore + } + throw new Error('Could not find firefox-nightly'); } const chromeExtensionDebugDir = path.join(__dirname, '../../build/debug/chrome'); diff --git a/tests/browser/tsconfig.json b/tests/browser/tsconfig.json index 8e51a41433e2..e53ea48cd6b6 100644 --- a/tests/browser/tsconfig.json +++ b/tests/browser/tsconfig.json @@ -1,18 +1,25 @@ { - "extends": "../../src/tsconfig", + "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { - "esModuleInterop": true, - "module": "commonjs", - "outDir": "", + "target": "ES2019", + "module": "CommonJS", + "lib": [ + "es2015", + "dom" + ], "types": [ "chrome", "jest", "offscreencanvas", "puppeteer-core" ], - "lib": [ - "ES6", - "dom" - ] + "allowJs": true, + "downlevelIteration": true, + "esModuleInterop": true, + "jsx": "react", + "jsxFactory": "m", + "moduleResolution": "Node", + "noEmit": true, + "noImplicitAny": true, } } diff --git a/tests/config/jest.config.js b/tests/config/jest.config.js deleted file mode 100644 index 18c61a22e688..000000000000 --- a/tests/config/jest.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - verbose: true, - testEnvironment: 'node', - transform: { - '^.+\\.ts$': 'ts-jest' - }, - testRegex: 'tests/config/.*\\.tests\\.ts$', - moduleFileExtensions: [ - 'ts', - 'js' - ], - rootDir: '../../', - collectCoverage: false, - coverageDirectory: 'tests/coverage', - collectCoverageFrom: [ - '/src/**/*.ts', - ], - globals: { - 'ts-jest': { - tsconfig: './tests/config/tsconfig.json' - } - } -}; diff --git a/tests/config/tsconfig.json b/tests/config/tsconfig.json deleted file mode 100644 index 8577f29983b2..000000000000 --- a/tests/config/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../src/tsconfig", - "compilerOptions": { - "module": "commonjs", - "outDir": "", - "types": [ - "jest", - "node" - ] - } -} diff --git a/tests/generators/utils/jest.config.js b/tests/generators/utils/jest.config.js deleted file mode 100644 index f3427709c17a..000000000000 --- a/tests/generators/utils/jest.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - verbose: true, - testEnvironment: 'jsdom', - transform: { - '^.+\\.ts$': 'ts-jest' - }, - testRegex: 'tests/generators/utils/.*\\.tests\\.ts$', - moduleFileExtensions: [ - 'ts', - 'js' - ], - rootDir: '../../../', - collectCoverage: false, - coverageDirectory: 'tests/coverage', - collectCoverageFrom: [ - '/src/**/*.ts', - ], - globals: { - 'ts-jest': { - tsconfig: './tests/generators/utils/tsconfig.json' - } - } -}; diff --git a/tests/generators/utils/tsconfig.json b/tests/generators/utils/tsconfig.json deleted file mode 100644 index fb61cd27d282..000000000000 --- a/tests/generators/utils/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../../src/tsconfig", - "compilerOptions": { - "module": "commonjs", - "outDir": "", - "types": [ - "jest", - "node" - ] - } -} diff --git a/tests/inject/dynamic/color.tests.ts b/tests/inject/dynamic/color.tests.ts index b7cc1f3fb874..662390511738 100644 --- a/tests/inject/dynamic/color.tests.ts +++ b/tests/inject/dynamic/color.tests.ts @@ -1,7 +1,7 @@ import '../polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; -import {multiline} from '../../test-utils'; +import {multiline} from '../test-utils'; const theme = { ...DEFAULT_THEME diff --git a/tests/inject/dynamic/fixes.tests.ts b/tests/inject/dynamic/fixes.tests.ts index c1627564fddf..e71545d9fe53 100644 --- a/tests/inject/dynamic/fixes.tests.ts +++ b/tests/inject/dynamic/fixes.tests.ts @@ -1,7 +1,7 @@ import '../polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; -import {multiline} from '../../test-utils'; +import {multiline} from '../test-utils'; import type {DynamicThemeFix} from '../../../src/definitions'; import {FilterMode} from '../../../src/generators/css-filter'; diff --git a/tests/inject/dynamic/image-analysis.tests.ts b/tests/inject/dynamic/image-analysis.tests.ts index 0f78c1332258..601e40ea1980 100644 --- a/tests/inject/dynamic/image-analysis.tests.ts +++ b/tests/inject/dynamic/image-analysis.tests.ts @@ -2,7 +2,7 @@ import '../polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; import {getImageDetails} from '../../../src/inject/dynamic-theme/image'; -import {multiline, timeout} from '../../test-utils'; +import {multiline, timeout} from '../test-utils'; import type {DynamicThemeFix} from '../../../src/definitions'; const theme = { diff --git a/tests/inject/dynamic/inline-override.tests.ts b/tests/inject/dynamic/inline-override.tests.ts index 502546ce54c7..b0d8847a3b65 100644 --- a/tests/inject/dynamic/inline-override.tests.ts +++ b/tests/inject/dynamic/inline-override.tests.ts @@ -2,7 +2,7 @@ import '../polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; import {isChromium} from '../../../src/utils/platform'; -import {multiline, timeout} from '../../test-utils'; +import {multiline, timeout} from '../test-utils'; const theme = { ...DEFAULT_THEME, diff --git a/tests/inject/dynamic/link-override.tests.ts b/tests/inject/dynamic/link-override.tests.ts index 643c20682814..042a88ef338a 100644 --- a/tests/inject/dynamic/link-override.tests.ts +++ b/tests/inject/dynamic/link-override.tests.ts @@ -1,7 +1,7 @@ import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; import {isSafari} from '../../../src/utils/platform'; -import {multiline, timeout} from '../../test-utils'; +import {multiline, timeout} from '../test-utils'; import {stubChromeRuntimeMessage, resetChromeRuntimeMessageStub, stubBackgroundFetchResponse} from '../background-stub'; import {getCSSEchoURL} from '../echo-client'; diff --git a/tests/inject/dynamic/media-query.tests.ts b/tests/inject/dynamic/media-query.tests.ts index 1b8bb562a0bc..79525e7c5c8c 100644 --- a/tests/inject/dynamic/media-query.tests.ts +++ b/tests/inject/dynamic/media-query.tests.ts @@ -1,7 +1,7 @@ import '../polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; -import {multiline, timeout} from '../../test-utils'; +import {multiline, timeout} from '../test-utils'; const theme = { ...DEFAULT_THEME, diff --git a/tests/inject/dynamic/shadow-dom.tests.ts b/tests/inject/dynamic/shadow-dom.tests.ts index c75e6b3f80f8..ef5cd7ae5154 100644 --- a/tests/inject/dynamic/shadow-dom.tests.ts +++ b/tests/inject/dynamic/shadow-dom.tests.ts @@ -1,7 +1,7 @@ import '../polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; -import {multiline, timeout} from '../../test-utils'; +import {multiline, timeout} from '../test-utils'; import {isFirefox, isSafari} from '../../../src/utils/platform'; const theme = { diff --git a/tests/inject/dynamic/style-override.tests.ts b/tests/inject/dynamic/style-override.tests.ts index 4e392b1ea830..25d370d7cd56 100644 --- a/tests/inject/dynamic/style-override.tests.ts +++ b/tests/inject/dynamic/style-override.tests.ts @@ -2,7 +2,7 @@ import '../polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; import {createStyleSheetModifier} from '../../../src/inject/dynamic-theme/stylesheet-modifier'; -import {multiline, timeout} from '../../test-utils'; +import {multiline, timeout} from '../test-utils'; const theme = { ...DEFAULT_THEME, diff --git a/tests/inject/dynamic/variables.tests.ts b/tests/inject/dynamic/variables.tests.ts index 2d65e7acbc44..8dfd69f88f46 100644 --- a/tests/inject/dynamic/variables.tests.ts +++ b/tests/inject/dynamic/variables.tests.ts @@ -2,7 +2,7 @@ import '../polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {isFirefox} from '../../../src/utils/platform'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; -import {multiline, timeout} from '../../test-utils'; +import {multiline, timeout} from '../test-utils'; const theme = { ...DEFAULT_THEME, diff --git a/tests/inject/jest.config.js b/tests/inject/jest.config.js deleted file mode 100644 index 0569b84b16e4..000000000000 --- a/tests/inject/jest.config.js +++ /dev/null @@ -1,24 +0,0 @@ -module.exports = { - verbose: true, - testEnvironment: 'jsdom', - transform: { - '^.+\\.ts$': 'ts-jest' - }, - testRegex: 'tests/inject/.*\\.tests\\.ts$', - moduleFileExtensions: [ - 'ts', - 'js' - ], - rootDir: '../../', - collectCoverage: false, - coverageDirectory: 'tests/coverage', - collectCoverageFrom: [ - '/src/**/*.ts', - ], - globals: { - 'ts-jest': { - tsconfig: './tests/inject/tsconfig.json' - }, - __DEBUG__: false, - } -}; diff --git a/tests/inject/karma.conf.js b/tests/inject/karma.conf.js index 34c91acb6ab3..228580d82579 100644 --- a/tests/inject/karma.conf.js +++ b/tests/inject/karma.conf.js @@ -5,7 +5,7 @@ const rollupPluginNodeResolve = require('@rollup/plugin-node-resolve').default; const rollupPluginReplace = require('@rollup/plugin-replace'); const rollupPluginTypescript = require('@rollup/plugin-typescript'); const typescript = require('typescript'); -const {getTestDestDir} = require('../../tasks/paths'); +const {getTestDestDir, rootPath} = require('../../tasks/paths'); module.exports = (config) => { config.set({ @@ -24,7 +24,7 @@ module.exports = (config) => { rollupPluginNodeResolve(), rollupPluginTypescript({ typescript, - tsconfig: 'tests/inject/tsconfig.json', + tsconfig: rootPath('tests/inject/tsconfig.json'), removeComments: false, sourceMap: true, inlineSources: true, diff --git a/tests/inject/run.js b/tests/inject/run.js index 236f4827e5f0..0f50beab12f8 100644 --- a/tests/inject/run.js +++ b/tests/inject/run.js @@ -1,13 +1,20 @@ // @ts-check +const {getLogger, levels: {DEBUG, INFO}} = require('log4js'); const karma = require('karma'); const path = require('path'); const {createEchoServer} = require('./echo-server'); const ECHO_SERVER_PORT = 9966; +process.env.NODE_OPTIONS = '--max_old_space_size=3072'; + async function run() { const args = process.argv.slice(2); const debug = args.includes('--debug'); + + // Default logger is not set if config file doesn't load, so config errors are swallowed + getLogger().level = debug ? DEBUG : INFO; + const karmaConfig = karma.config.parseConfig(path.join(__dirname, './karma.conf.js'), /** @type {any} */({debug})); const echoServer = await createEchoServer(ECHO_SERVER_PORT); diff --git a/tests/test-utils.ts b/tests/inject/test-utils.ts similarity index 86% rename from tests/test-utils.ts rename to tests/inject/test-utils.ts index 27807ecfe2ab..4a1638419ae8 100644 --- a/tests/test-utils.ts +++ b/tests/inject/test-utils.ts @@ -1,3 +1,5 @@ +// Loaded with HTML/DOM only + export function multiline(...lines: string[]) { return lines.join('\n'); } diff --git a/tests/inject/tsconfig.json b/tests/inject/tsconfig.json index e92c2577514a..b4e2f60a049c 100644 --- a/tests/inject/tsconfig.json +++ b/tests/inject/tsconfig.json @@ -1,10 +1,29 @@ { - "extends": "../../src/tsconfig", + "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { + "target": "ES2019", + "module": "ES2015", + "lib": [ + "ES2015", + "ES2017", + "DOM", + "DOM.Iterable" + ], "types": [ "chrome", - "jasmine", - "offscreencanvas" - ] - } + "offscreencanvas", + "jasmine" + ], + "allowJs": true, + "downlevelIteration": true, + "esModuleInterop": true, + "jsx": "react", + "jsxFactory": "m", + "moduleResolution": "Node", + "noEmit": true, + "noImplicitAny": true + }, + "exclude": [ + "./coverage", + ] } diff --git a/tests/utils/url.tests.ts b/tests/inject/utils/url.tests.ts similarity index 98% rename from tests/utils/url.tests.ts rename to tests/inject/utils/url.tests.ts index 5ccc804642e9..753e9907065a 100644 --- a/tests/utils/url.tests.ts +++ b/tests/inject/utils/url.tests.ts @@ -1,7 +1,7 @@ -import {isURLEnabled, isURLMatched, isPDF, isFullyQualifiedDomain, getURLHostOrProtocol, getAbsoluteURL} from '../../src/utils/url'; -import type {UserSettings} from '../../src/definitions'; +import {isURLEnabled, isURLMatched, isPDF, isFullyQualifiedDomain, getURLHostOrProtocol, getAbsoluteURL} from '../../../src/utils/url'; +import type {UserSettings} from '../../../src/definitions'; -test('URL is enabled', () => { +it('URL is enabled', () => { // Not invert listed expect(isURLEnabled( 'https://mail.google.com/mail/u/0/', @@ -247,7 +247,7 @@ test('URL is enabled', () => { )).toBe(true); }); -test('Get URL host or protocol', () => { +it('Get URL host or protocol', () => { expect(getURLHostOrProtocol('https://www.google.com')).toBe('www.google.com'); expect(getURLHostOrProtocol('https://www.google.com/maps')).toBe('www.google.com'); expect(getURLHostOrProtocol('http://localhost:8080')).toBe('localhost:8080'); @@ -257,7 +257,7 @@ test('Get URL host or protocol', () => { expect(getURLHostOrProtocol('file:///Users/index.html')).toBe('/Users/index.html'); }); -test('Absolute URL', () => { +it('Absolute URL', () => { expect(getAbsoluteURL('https://www.google.com', 'image.jpg')).toBe('https://www.google.com/image.jpg'); expect(getAbsoluteURL('https://www.google.com', '/image.jpg')).toBe('https://www.google.com/image.jpg'); expect(getAbsoluteURL('https://www.google.com/path', '/image.jpg')).toBe('https://www.google.com/image.jpg'); @@ -279,7 +279,7 @@ test('Absolute URL', () => { expect(getAbsoluteURL('path/index.html', '/image.jpg?size=128')).toBe(`${location.origin}/image.jpg?size=128`); }); -test('Fully qualified domain', () => { +it('Fully qualified domain', () => { expect(isFullyQualifiedDomain('www.google.com')).toBe(true); expect(isFullyQualifiedDomain('*.google.com')).toBe(false); }); diff --git a/tests/jest.config.js b/tests/jest.config.js deleted file mode 100644 index dbf4ade2d135..000000000000 --- a/tests/jest.config.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - projects: [ - 'tests/config/jest.config.js', - 'tests/utils/jest.config.js', - 'tests/generators/utils/jest.config.js', - ], - verbose: true, -}; diff --git a/tests/project/__snapshots__/tsconf.tests.ts.snap b/tests/project/__snapshots__/tsconf.tests.ts.snap new file mode 100644 index 000000000000..f4e6571c8523 --- /dev/null +++ b/tests/project/__snapshots__/tsconf.tests.ts.snap @@ -0,0 +1,503 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`TypeScript project config file should parse and resolve correctly: src 1`] = ` +Object { + "compileOnSave": false, + "compilerOptions": Object { + "allowJs": true, + "baseUrl": "./", + "downlevelIteration": true, + "jsx": "react", + "jsxFactory": "m", + "lib": Array [ + "es6", + "es2017", + "dom", + "dom.iterable", + ], + "module": "es6", + "moduleResolution": "node", + "noEmit": true, + "noImplicitAny": true, + "target": "es2019", + "types": Array [ + "chrome", + "offscreencanvas", + ], + }, + "exclude": Array [ + "node_modules", + ], + "files": Array [ + "./defaults.ts", + "./definitions.d.ts", + "./api/chrome.ts", + "./api/fetch.ts", + "./api/index.ts", + "./background/config-manager.ts", + "./background/devtools.ts", + "./background/extension.ts", + "./background/icon-manager.ts", + "./background/index.ts", + "./background/make-chromium-happy.ts", + "./background/messenger.ts", + "./background/newsmaker.ts", + "./background/tab-manager.ts", + "./background/user-storage.ts", + "./background/window-theme.ts", + "./background/utils/extension-api.ts", + "./background/utils/migration.ts", + "./background/utils/network.ts", + "./background/utils/state-manager.ts", + "./generators/css-filter.ts", + "./generators/dynamic-theme.ts", + "./generators/modify-colors.ts", + "./generators/static-theme.ts", + "./generators/svg-filter.ts", + "./generators/text-style.ts", + "./generators/theme-engines.ts", + "./generators/utils/format.ts", + "./generators/utils/matrix.ts", + "./generators/utils/parse.ts", + "./inject/fallback.ts", + "./inject/index.ts", + "./inject/style.ts", + "./inject/svg-filter.ts", + "./inject/dynamic-theme/adopted-style-manger.ts", + "./inject/dynamic-theme/css-collection.ts", + "./inject/dynamic-theme/css-rules.ts", + "./inject/dynamic-theme/image.ts", + "./inject/dynamic-theme/index.ts", + "./inject/dynamic-theme/inline-style.ts", + "./inject/dynamic-theme/meta-theme-color.ts", + "./inject/dynamic-theme/modify-css.ts", + "./inject/dynamic-theme/network.ts", + "./inject/dynamic-theme/style-manager.ts", + "./inject/dynamic-theme/stylesheet-modifier.ts", + "./inject/dynamic-theme/stylesheet-proxy.ts", + "./inject/dynamic-theme/variables.ts", + "./inject/dynamic-theme/watch.ts", + "./inject/utils/dom.ts", + "./inject/utils/watch-color-scheme.ts", + "./ui/utils.ts", + "./ui/connect/connector.ts", + "./ui/connect/mock.ts", + "./ui/controls/index.ts", + "./ui/controls/utils.ts", + "./ui/controls/button/index.tsx", + "./ui/controls/checkbox/index.tsx", + "./ui/controls/color-dropdown/index.tsx", + "./ui/controls/color-picker/hsb-picker.tsx", + "./ui/controls/color-picker/index.tsx", + "./ui/controls/dropdown/index.tsx", + "./ui/controls/message-box/index.tsx", + "./ui/controls/multi-switch/index.tsx", + "./ui/controls/nav-button/index.tsx", + "./ui/controls/overlay/index.ts", + "./ui/controls/reset-button/index.tsx", + "./ui/controls/select/index.tsx", + "./ui/controls/shortcut/index.tsx", + "./ui/controls/slider/index.tsx", + "./ui/controls/tab-panel/index.tsx", + "./ui/controls/tab-panel/tab.tsx", + "./ui/controls/text-list/index.tsx", + "./ui/controls/textbox/index.tsx", + "./ui/controls/time-range-picker/index.tsx", + "./ui/controls/toggle/index.tsx", + "./ui/controls/updown/index.tsx", + "./ui/controls/updown/track.tsx", + "./ui/controls/virtual-scroll/index.tsx", + "./ui/devtools/index.tsx", + "./ui/devtools/components/body.tsx", + "./ui/popup/compatibility.js", + "./ui/popup/index.tsx", + "./ui/popup/types.d.ts", + "./ui/popup/automation-page/index.tsx", + "./ui/popup/body/index.tsx", + "./ui/popup/check-button/index.tsx", + "./ui/popup/components/body.tsx", + "./ui/popup/components/custom-settings-toggle/index.tsx", + "./ui/popup/components/engine-switch/index.tsx", + "./ui/popup/components/filter-settings/index.tsx", + "./ui/popup/components/filter-settings/mode-toggle.tsx", + "./ui/popup/components/font-settings/index.tsx", + "./ui/popup/components/header/index.tsx", + "./ui/popup/components/header/more-toggle-settings.tsx", + "./ui/popup/components/loader/index.tsx", + "./ui/popup/components/more-settings/index.tsx", + "./ui/popup/components/news/index.tsx", + "./ui/popup/components/site-list-settings/index.tsx", + "./ui/popup/components/site-toggle/checkmark-icon.tsx", + "./ui/popup/components/site-toggle/index.tsx", + "./ui/popup/control-group/index.tsx", + "./ui/popup/main-page/app-switch.tsx", + "./ui/popup/main-page/help.tsx", + "./ui/popup/main-page/index.tsx", + "./ui/popup/main-page/site-toggle.tsx", + "./ui/popup/main-page/sun-moon-icon.tsx", + "./ui/popup/main-page/system-icon.tsx", + "./ui/popup/main-page/theme-group.tsx", + "./ui/popup/main-page/watch-icon.tsx", + "./ui/popup/manage-settings-page/export-settings.tsx", + "./ui/popup/manage-settings-page/export-theme.tsx", + "./ui/popup/manage-settings-page/fetch-news.tsx", + "./ui/popup/manage-settings-page/import-settings.tsx", + "./ui/popup/manage-settings-page/index.tsx", + "./ui/popup/manage-settings-page/reset-settings-button.tsx", + "./ui/popup/manage-settings-page/sync-config.tsx", + "./ui/popup/manage-settings-page/sync-settings.tsx", + "./ui/popup/news-section/index.tsx", + "./ui/popup/page-viewer/index.tsx", + "./ui/popup/settings-page/automation-button.tsx", + "./ui/popup/settings-page/change-browser-theme.tsx", + "./ui/popup/settings-page/context-menus.tsx", + "./ui/popup/settings-page/devtools.tsx", + "./ui/popup/settings-page/enabled-by-default.tsx", + "./ui/popup/settings-page/index.tsx", + "./ui/popup/settings-page/mange-settings-button.tsx", + "./ui/popup/settings-page/site-list-button.tsx", + "./ui/popup/settings-page/version.tsx", + "./ui/popup/site-list-page/index.tsx", + "./ui/popup/site-list-page/site-list.tsx", + "./ui/popup/theme/utils.ts", + "./ui/popup/theme/controls/background-color.tsx", + "./ui/popup/theme/controls/brightness.tsx", + "./ui/popup/theme/controls/color-scheme.tsx", + "./ui/popup/theme/controls/contrast.tsx", + "./ui/popup/theme/controls/font-picker.tsx", + "./ui/popup/theme/controls/format.ts", + "./ui/popup/theme/controls/grayscale.tsx", + "./ui/popup/theme/controls/index.tsx", + "./ui/popup/theme/controls/mode.tsx", + "./ui/popup/theme/controls/reset-button.tsx", + "./ui/popup/theme/controls/scheme.tsx", + "./ui/popup/theme/controls/scrollbar.tsx", + "./ui/popup/theme/controls/selection.tsx", + "./ui/popup/theme/controls/sepia.tsx", + "./ui/popup/theme/controls/style-system-controls.tsx", + "./ui/popup/theme/controls/text-color.tsx", + "./ui/popup/theme/controls/text-stroke.tsx", + "./ui/popup/theme/controls/theme-control.tsx", + "./ui/popup/theme/controls/use-font.tsx", + "./ui/popup/theme/page/collapsible-panel.tsx", + "./ui/popup/theme/page/index.tsx", + "./ui/popup/theme/preset-picker/index.tsx", + "./ui/popup/utils/issues.ts", + "./ui/popup/utils/markdown.tsx", + "./ui/stylesheet-editor/index.tsx", + "./ui/stylesheet-editor/components/body.tsx", + "./utils/array.ts", + "./utils/async-queue.ts", + "./utils/color.ts", + "./utils/colorscheme-parser.ts", + "./utils/debounce.ts", + "./utils/ipv6.ts", + "./utils/links.ts", + "./utils/locales.ts", + "./utils/log.ts", + "./utils/math.ts", + "./utils/media-query.ts", + "./utils/message.ts", + "./utils/network.ts", + "./utils/parsing.ts", + "./utils/platform.ts", + "./utils/promise-barrier.ts", + "./utils/text.ts", + "./utils/throttle.ts", + "./utils/time.ts", + "./utils/uid.ts", + "./utils/url.ts", + ], +} +`; + +exports[`TypeScript project config file should parse and resolve correctly: src/api 1`] = ` +Object { + "compileOnSave": false, + "compilerOptions": Object { + "allowJs": true, + "baseUrl": "..", + "downlevelIteration": true, + "jsx": "react", + "jsxFactory": "m", + "lib": Array [ + "es6", + "es2017", + "dom", + "dom.iterable", + ], + "module": "es6", + "moduleResolution": "node", + "noEmit": true, + "noImplicitAny": true, + "target": "es5", + "types": Array [ + "chrome", + "offscreencanvas", + ], + }, + "exclude": Array [ + "../node_modules", + ], + "files": Array [ + "./chrome.ts", + "./fetch.ts", + "./index.ts", + ], +} +`; + +exports[`TypeScript project config file should parse and resolve correctly: tests/browser 1`] = ` +Object { + "compileOnSave": false, + "compilerOptions": Object { + "allowJs": true, + "baseUrl": "../../src", + "downlevelIteration": true, + "esModuleInterop": true, + "jsx": "react", + "jsxFactory": "m", + "lib": Array [ + "es6", + "dom", + ], + "module": "commonjs", + "moduleResolution": "node", + "noEmit": true, + "noImplicitAny": true, + "outDir": "./", + "target": "es2019", + "types": Array [ + "chrome", + "jest", + "offscreencanvas", + "puppeteer-core", + ], + }, + "exclude": Array [ + "../../src/node_modules", + ], + "files": Array [ + "./coverage.js", + "./environment.js", + "./globals.d.ts", + "./jest.config.chrome.js", + "./jest.config.firefox.js", + "./jest.config.js", + "./jest.config.shared.js", + "./paths.js", + "./server.js", + "./dynamic/inline-override.tests.ts", + "./dynamic/link-override.tests.ts", + "./dynamic/style-override.tests.ts", + "./e2e/devtools.tests.ts", + "./e2e/toggle.tests.ts", + "./settings/migration.tests.ts", + "./settings/sitelist.tests.ts", + ], +} +`; + +exports[`TypeScript project config file should parse and resolve correctly: tests/config 1`] = ` +Object { + "compileOnSave": false, + "compilerOptions": Object { + "allowJs": true, + "baseUrl": "../../src", + "downlevelIteration": true, + "jsx": "react", + "jsxFactory": "m", + "lib": Array [ + "es6", + "es2017", + "dom", + "dom.iterable", + ], + "module": "commonjs", + "moduleResolution": "node", + "noEmit": true, + "noImplicitAny": true, + "outDir": "./", + "target": "es2019", + "types": Array [ + "jest", + "node", + ], + }, + "exclude": Array [ + "../../src/node_modules", + ], + "files": Array [ + "./config.tests.ts", + "./jest.config.js", + "./locales.tests.ts", + ], +} +`; + +exports[`TypeScript project config file should parse and resolve correctly: tests/generators/utils 1`] = ` +Object { + "compileOnSave": false, + "compilerOptions": Object { + "allowJs": true, + "baseUrl": "../../../src", + "downlevelIteration": true, + "jsx": "react", + "jsxFactory": "m", + "lib": Array [ + "es6", + "es2017", + "dom", + "dom.iterable", + ], + "module": "commonjs", + "moduleResolution": "node", + "noEmit": true, + "noImplicitAny": true, + "outDir": "./", + "target": "es2019", + "types": Array [ + "jest", + "node", + ], + }, + "exclude": Array [ + "../../../src/node_modules", + ], + "files": Array [ + "./jest.config.js", + "./parse.tests.ts", + ], +} +`; + +exports[`TypeScript project config file should parse and resolve correctly: tests/inject 1`] = ` +Object { + "compileOnSave": false, + "compilerOptions": Object { + "allowJs": true, + "baseUrl": "../../src", + "downlevelIteration": true, + "jsx": "react", + "jsxFactory": "m", + "lib": Array [ + "es6", + "es2017", + "dom", + "dom.iterable", + ], + "module": "es6", + "moduleResolution": "node", + "noEmit": true, + "noImplicitAny": true, + "target": "es2019", + "types": Array [ + "chrome", + "jasmine", + "offscreencanvas", + ], + }, + "exclude": Array [ + "../../src/node_modules", + ], + "files": Array [ + "./background-stub.ts", + "./customize.ts", + "./echo-client.ts", + "./echo-server.js", + "./jest.config.js", + "./karma.conf.js", + "./polyfills.ts", + "./run.js", + "./test-utils.ts", + "./dynamic/color.tests.ts", + "./dynamic/fixes.tests.ts", + "./dynamic/image-analysis.tests.ts", + "./dynamic/inline-override.tests.ts", + "./dynamic/link-override.tests.ts", + "./dynamic/media-query.tests.ts", + "./dynamic/shadow-dom.tests.ts", + "./dynamic/style-override.tests.ts", + "./dynamic/variables.tests.ts", + "./utils/url.tests.ts", + ], +} +`; + +exports[`TypeScript project config file should parse and resolve correctly: tests/unit 1`] = ` +Object { + "compileOnSave": false, + "compilerOptions": Object { + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "inlineSourceMap": true, + "lib": Array [ + "esnext", + "dom", + ], + "module": "commonjs", + "noImplicitAny": true, + "skipLibCheck": true, + "target": "esnext", + "types": Array [ + "node", + "jest", + "jest-extended", + ], + }, + "files": Array [ + "./config/config.tests.ts", + "./config/locales.tests.ts", + "./generators/utils/parse.tests.ts", + "./utils/color.tests.ts", + "./utils/math.tests.ts", + "./utils/parsing.tests.ts", + "./utils/promise-barrier.tests.ts", + "./utils/text.tests.ts", + "./utils/time.tests.ts", + "./utils/uid.tests.ts", + ], +} +`; + +exports[`TypeScript project config file should parse and resolve correctly: tests/utils 1`] = ` +Object { + "compileOnSave": false, + "compilerOptions": Object { + "allowJs": true, + "baseUrl": "../../src", + "downlevelIteration": true, + "jsx": "react", + "jsxFactory": "m", + "lib": Array [ + "es6", + "es2017", + "dom", + "dom.iterable", + ], + "module": "commonjs", + "moduleResolution": "node", + "noEmit": true, + "noImplicitAny": true, + "outDir": "./", + "target": "es2019", + "types": Array [ + "jest", + "node", + ], + }, + "exclude": Array [ + "../../src/node_modules", + ], + "files": Array [ + "./color.tests.ts", + "./jest.config.js", + "./math.tests.ts", + "./parsing.tests.ts", + "./promise-barrier.tests.ts", + "./text.tests.ts", + "./time.tests.ts", + "./uid.tests.ts", + ], +} +`; diff --git a/tests/project/build.tests.ts b/tests/project/build.tests.ts new file mode 100644 index 000000000000..0a422f3b2896 --- /dev/null +++ b/tests/project/build.tests.ts @@ -0,0 +1,27 @@ +/** + * NOTE: This test deletes ./build and ./darkreader.js + * (but does not run automatically) + */ +import {forka} from './utils'; +import {resolve, join} from 'path'; +import {tmpdir} from 'os'; +import {mkdtemp, rm} from 'fs/promises'; + +const rootPath = (path: string) => resolve(__dirname, '../..', path); +const buildModule = rootPath('tasks/build.js'); + +describe.skip('build.js', () => { + it('Builds from a different dir', async () => { + // Build from temp dir instead of root dir + const cwd = await mkdtemp(join(tmpdir())); + await rm(rootPath('build'), {recursive: true, force: true}); + await rm(rootPath('darkreader.js'), {force: true}); + + // Fire + const {code, stdout} = await forka(buildModule, ['--debug', '--release', '--api'], {cwd}); + + expect(stdout).toBeDefined(); + expect(stdout).toInclude('MISSION PASSED'); + expect(code).toBe(0); + }, 60000); +}); diff --git a/tests/project/jest.config.js b/tests/project/jest.config.js new file mode 100644 index 000000000000..19d7763e9619 --- /dev/null +++ b/tests/project/jest.config.js @@ -0,0 +1,19 @@ +// @ts-check + +const {dirname} = require('path'); +const rootDir = dirname(require.resolve('../../package.json')); + +/** @type {import('@jest/types').Config.InitialOptions} */ +const config = { + rootDir, + testMatch: ['/tests/project/**/*.tests.ts'], + moduleFileExtensions: ['ts', 'tsx', 'js'], + transform: {'^.+\\.ts(x?)$': 'ts-jest'}, + globals: { + 'ts-jest': {tsconfig: '/tests/project/tsconfig.json'}, + __DEBUG__: false, + }, + setupFilesAfterEnv: ['jest-extended/all'], +}; + +module.exports = config; diff --git a/tests/project/tsconf.tests.ts b/tests/project/tsconf.tests.ts new file mode 100644 index 000000000000..945d8f10e5f8 --- /dev/null +++ b/tests/project/tsconf.tests.ts @@ -0,0 +1,52 @@ +import ts, {ExitStatus} from 'typescript'; +import {dirname, join} from 'path'; +import {ForkOptions} from 'child_process'; +import {tmpdir} from 'os'; +import {mkdtemp} from 'fs/promises'; +import {forka} from './utils'; + +const rootDir = dirname(require.resolve('../../package.json')) +const tscModule = require.resolve('typescript/bin/tsc'); + +const tsProjects: Array<{ tsconfig: string }> = [ + // Browser extension + {tsconfig: 'src'}, + // API + {tsconfig: 'src/api'}, + // E2E tests (Jest, Puppeteer, Node.js) + {tsconfig: 'tests/browser'}, + // Browser tests (Karma, Jasmine) + {tsconfig: 'tests/inject'}, + // Unit tests (Jest, Node.js) + {tsconfig: 'tests/unit'}, +]; + +describe('TypeScript project config', () => { + it.each(tsProjects)('file should parse and resolve correctly: $tsconfig', async ({tsconfig}) => { + // Parse config from temp dir instead of root dir + const cwd = await mkdtemp(join(tmpdir())); + const project = join(rootDir, tsconfig, 'tsconfig.json'); + const {code, stdout} = await tsc(['--project', project, '--showConfig'], {cwd}); + + expect(stdout).toStartWith('{'); + expect(code).toBe(ExitStatus.Success); + const configJson = JSON.parse(stdout); + const config = ts.parseJsonConfigFileContent(configJson, ts.sys, project); + + expect(config.raw).toMatchSnapshot(); + }); + + // Slow and not executed automatically + it.skip.each(tsProjects)('should compile without errors: $tsconfig', async ({tsconfig}) => { + // Compile config from temp dir instead of root dir + const cwd = await mkdtemp(join(tmpdir())); + const project = join(rootDir, tsconfig, 'tsconfig.json'); + const {code, stdout} = await tsc(['--project', project, '--noEmit'], {cwd}); + expect(stdout).toBeUndefined(); + expect(code).toBe(ExitStatus.Success); + }, 60000); +}); + +async function tsc(args: string[], options?: ForkOptions) { + return forka(tscModule, args, {silent: true, ...options}); +} diff --git a/tests/project/tsconfig.json b/tests/project/tsconfig.json new file mode 100644 index 000000000000..b62229d000bd --- /dev/null +++ b/tests/project/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../unit/tsconfig", +} diff --git a/tests/project/utils.ts b/tests/project/utils.ts new file mode 100644 index 000000000000..dbcd8dcc1e0f --- /dev/null +++ b/tests/project/utils.ts @@ -0,0 +1,25 @@ +import type {ForkOptions} from 'child_process'; +import {fork} from 'child_process'; + +export interface ResolvedChildProcess { + code: number; + signal: NodeJS.Signals; + stdout: string; + stderr: string; +} + +export async function forka(modulePath: string, args?: readonly string[], options?: ForkOptions): Promise { + return new Promise((resolve) => { + const proc = fork(modulePath, args, {silent: true, ...options}); + let stdout = '', stderr = ''; + proc.stderr.on('data', (chunk) => { + stderr += chunk.toString(); + }); + proc.stdout.on('data', (chunk) => { + stdout += chunk.toString(); + }); + proc.on('close', (code, signal) => { + resolve({code, signal, stdout: stdout || undefined, stderr: stderr || undefined}); + }); + }); +} diff --git a/tests/support/test-utils.ts b/tests/support/test-utils.ts new file mode 100644 index 000000000000..7890708fcaca --- /dev/null +++ b/tests/support/test-utils.ts @@ -0,0 +1,15 @@ +import {dirname, join} from 'path'; + +export const rootDir: string = dirname(require.resolve('../../package.json')); + +export function rootPath(...paths: string[]) { + return join(rootDir, ...paths); +} + +export function multiline(...lines: string[]) { + return lines.join('\n'); +} + +export function timeout(delay: number) { + return new Promise((resolve) => setTimeout(resolve, delay)); +} diff --git a/tests/config/config.tests.ts b/tests/unit/config/config.tests.ts similarity index 90% rename from tests/config/config.tests.ts rename to tests/unit/config/config.tests.ts index 7dab914e5a5c..2d208038d310 100644 --- a/tests/config/config.tests.ts +++ b/tests/unit/config/config.tests.ts @@ -1,16 +1,16 @@ import {readFile} from 'fs'; -import {resolve as resolvePath} from 'path'; -import {compareURLPatterns} from '../../src/utils/url'; -import {parseArray, formatArray, getTextDiffIndex, getTextPositionMessage} from '../../src/utils/text'; -import {parseInversionFixes, formatInversionFixes} from '../../src/generators/css-filter'; -import {parseDynamicThemeFixes, formatDynamicThemeFixes} from '../../src/generators/dynamic-theme'; -import {parseStaticThemes, formatStaticThemes} from '../../src/generators/static-theme'; -import type {StaticTheme} from '../../src/definitions'; -import {ParseColorSchemeConfig} from '../../src/utils/colorscheme-parser'; +import {compareURLPatterns} from '../../../src/utils/url'; +import {parseArray, formatArray, getTextDiffIndex, getTextPositionMessage} from '../../../src/utils/text'; +import {parseInversionFixes, formatInversionFixes} from '../../../src/generators/css-filter'; +import {parseDynamicThemeFixes, formatDynamicThemeFixes} from '../../../src/generators/dynamic-theme'; +import {parseStaticThemes, formatStaticThemes} from '../../../src/generators/static-theme'; +import type {StaticTheme} from '../../../src/definitions'; +import {ParseColorSchemeConfig} from '../../../src/utils/colorscheme-parser'; +import {rootPath} from '../../support/test-utils'; function readConfig(fileName: string) { return new Promise((resolve, reject) => { - readFile(resolvePath(__dirname, '../../src/config/', fileName), {encoding: 'utf-8'}, (err, data) => { + readFile(rootPath('src/config', fileName), {encoding: 'utf-8'}, (err, data) => { if (err) { reject(err); return; diff --git a/tests/config/locales.tests.ts b/tests/unit/config/locales.tests.ts similarity index 87% rename from tests/config/locales.tests.ts rename to tests/unit/config/locales.tests.ts index 75bf7d3c0ca6..bca129432c44 100644 --- a/tests/config/locales.tests.ts +++ b/tests/unit/config/locales.tests.ts @@ -1,9 +1,9 @@ import {readFile as fsReadFile, readdir as fsReadDir} from 'fs'; -import {resolve as resolvePath} from 'path'; +import {rootPath} from '../../support/test-utils'; function readDir(dir: string) { return new Promise((resolve, reject) => { - fsReadDir(resolvePath(__dirname, dir), (err, files) => { + fsReadDir(dir, (err, files) => { if (err) { reject(err); return; @@ -15,7 +15,7 @@ function readDir(dir: string) { function readLocale(name: string) { return new Promise((resolve, reject) => { - fsReadFile(resolvePath(__dirname, '../../src/_locales/', name), {encoding: 'utf-8'}, (err, data) => { + fsReadFile(rootPath('src/_locales', name), {encoding: 'utf-8'}, (err, data) => { if (err) { reject(err); return; @@ -26,7 +26,7 @@ function readLocale(name: string) { } test('Locales', async () => { - const files = await readDir('../../src/_locales'); + const files = await readDir(rootPath('src/_locales')); const enLocale = await readLocale('en.config'); const enLines = enLocale.split('\n'); const locales: string[] = []; diff --git a/tests/generators/utils/parse.tests.ts b/tests/unit/generators/utils/parse.tests.ts similarity index 99% rename from tests/generators/utils/parse.tests.ts rename to tests/unit/generators/utils/parse.tests.ts index d3ab1b1f4128..2a4ed9c36421 100644 --- a/tests/generators/utils/parse.tests.ts +++ b/tests/unit/generators/utils/parse.tests.ts @@ -1,5 +1,5 @@ -import {indexSitesFixesConfig, getSitesFixesFor} from '../../../src/generators/utils/parse'; -import type {SitesFixesParserOptions} from '../../../src/generators/utils/parse'; +import {indexSitesFixesConfig, getSitesFixesFor} from '../../../../src/generators/utils/parse'; +import type {SitesFixesParserOptions} from '../../../../src/generators/utils/parse'; test('Index config', () => { interface TestFix { diff --git a/tests/unit/jest.config.js b/tests/unit/jest.config.js new file mode 100644 index 000000000000..4601842574b8 --- /dev/null +++ b/tests/unit/jest.config.js @@ -0,0 +1,19 @@ +// @ts-check + +const {dirname} = require('path'); +const rootDir = dirname(require.resolve('../../package.json')); + +/** @type {import('@jest/types').Config.InitialOptions} */ +const config = { + rootDir, + testMatch: ['/tests/unit/**/*.tests.ts'], + moduleFileExtensions: ['ts', 'tsx', 'js'], + transform: {'^.+\\.ts(x?)$': 'ts-jest'}, + globals: { + 'ts-jest': {tsconfig: '/tests/unit/tsconfig.json'}, + __DEBUG__: false, + }, + setupFilesAfterEnv: ['jest-extended/all'], +}; + +module.exports = config; diff --git a/tests/unit/tsconfig.json b/tests/unit/tsconfig.json new file mode 100644 index 000000000000..877e099d9d9d --- /dev/null +++ b/tests/unit/tsconfig.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "target": "ESNext", + "module": "CommonJS", + "lib": [ + "ESNext", + "Dom" + ], + "types": [ + "node", + "jest", + "jest-extended" + ], + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "noImplicitAny": true, + "inlineSourceMap": true + } +} diff --git a/tests/utils/color.tests.ts b/tests/unit/utils/color.tests.ts similarity index 98% rename from tests/utils/color.tests.ts rename to tests/unit/utils/color.tests.ts index 67a21519b50a..a0da7d9476e7 100644 --- a/tests/utils/color.tests.ts +++ b/tests/unit/utils/color.tests.ts @@ -1,5 +1,5 @@ -import type {HSLA} from '../../src/utils/color'; -import {lowerCalcExpression, parse, hslToRGB, rgbToHSL, rgbToString, rgbToHexString, hslToString} from '../../src/utils/color'; +import type {HSLA} from '../../../src/utils/color'; +import {lowerCalcExpression, parse, hslToRGB, rgbToHSL, rgbToString, rgbToHexString, hslToString} from '../../../src/utils/color'; test('Color parsing', () => { expect(parse('rgb(255,0,153)')).toEqual({r: 255, g: 0, b: 153, a: 1}); diff --git a/tests/utils/math.tests.ts b/tests/unit/utils/math.tests.ts similarity index 85% rename from tests/utils/math.tests.ts rename to tests/unit/utils/math.tests.ts index c9c54e39b7fe..46a1401ecb3d 100644 --- a/tests/utils/math.tests.ts +++ b/tests/unit/utils/math.tests.ts @@ -1,4 +1,4 @@ -import {scale, clamp, multiplyMatrices} from '../../src/utils/math'; +import {scale, clamp, multiplyMatrices} from '../../../src/utils/math'; test('Scale', () => { expect(scale(5, 0, 10, 0, 100)).toEqual(50); diff --git a/tests/utils/parsing.tests.ts b/tests/unit/utils/parsing.tests.ts similarity index 96% rename from tests/utils/parsing.tests.ts rename to tests/unit/utils/parsing.tests.ts index c923f630c846..6a9414c68aa3 100644 --- a/tests/utils/parsing.tests.ts +++ b/tests/unit/utils/parsing.tests.ts @@ -1,4 +1,4 @@ -import {parseGradient} from '../../src/utils/parsing'; +import {parseGradient} from '../../../src/utils/parsing'; test('type gradients', () => { expect(parseGradient('linear-gradient(rgb(200))')).toEqual([{ diff --git a/tests/unit/utils/promise-barrier.tests.ts b/tests/unit/utils/promise-barrier.tests.ts new file mode 100644 index 000000000000..11578a432a86 --- /dev/null +++ b/tests/unit/utils/promise-barrier.tests.ts @@ -0,0 +1,97 @@ +import {PromiseBarrier} from '../../../src/utils/promise-barrier'; + +describe('Promise barrier utility', () => { + test('basic functionality', async () => { + const barrier = new PromiseBarrier(); + const fn1 = jest.fn(); + const fn2 = jest.fn(); + (async () => { + fn1(); + const result = await barrier.entry(); + fn2(result); + })(); + expect(fn1).toBeCalled(); + expect(fn2).not.toBeCalled(); + + expect(barrier.isPending()).toBe(true); + expect(barrier.isFulfilled()).toBe(false); + expect(barrier.isRejected()).toBe(false); + await barrier.resolve(2); + expect(barrier.isFulfilled()).toBe(true); + expect(barrier.isPending()).toBe(false); + expect(barrier.isRejected()).toBe(false); + expect(fn1).toBeCalledTimes(1); + expect(fn2).toBeCalledWith(2); + }); + + test('awaiting for barrier after it was settled', async () => { + const barrierFulfilled = new PromiseBarrier(); + expect(barrierFulfilled.isPending()).toBe(true); + expect(barrierFulfilled.isFulfilled()).toBe(false); + expect(barrierFulfilled.isRejected()).toBe(false); + const promise1 = barrierFulfilled.resolve('Hello World!'); + expect(barrierFulfilled.isFulfilled()).toBe(true); + expect(barrierFulfilled.isPending()).toBe(false); + expect(barrierFulfilled.isRejected()).toBe(false); + const fn1 = jest.fn(); + await (async () => fn1(await barrierFulfilled.entry()))(); + await promise1; + expect(fn1).toBeCalledWith('Hello World!'); + + const barrierRejected = new PromiseBarrier(); + const promise2 = barrierRejected.reject('rejection reason'); + const fn2 = jest.fn(); + await (async () => { + try { + await barrierRejected.entry(); + } catch (e) { + fn2(e); + } + })(); + await promise2; + expect(fn2).toBeCalledWith('rejection reason'); + }); + + test('resolving multiple times', async () => { + const barrierFulfilled = new PromiseBarrier(); + expect(barrierFulfilled.isPending()).toBe(true); + expect(barrierFulfilled.isFulfilled()).toBe(false); + expect(barrierFulfilled.isRejected()).toBe(false); + await barrierFulfilled.resolve('Hello World!'); + expect(barrierFulfilled.isFulfilled()).toBe(true); + expect(barrierFulfilled.isPending()).toBe(false); + expect(barrierFulfilled.isRejected()).toBe(false); + await barrierFulfilled.resolve('Hello World 2!'); + expect(barrierFulfilled.isFulfilled()).toBe(true); + expect(barrierFulfilled.isPending()).toBe(false); + expect(barrierFulfilled.isRejected()).toBe(false); + + const fn1 = jest.fn(); + await (async () => fn1(await barrierFulfilled.entry()))(); + + expect(fn1).toBeCalledWith('Hello World!'); + }); + + test('rejecting multiple times', async () => { + const barrierRejected = new PromiseBarrier(); + expect(barrierRejected.isPending()).toBe(true); + expect(barrierRejected.isFulfilled()).toBe(false); + expect(barrierRejected.isRejected()).toBe(false); + await barrierRejected.reject('rejection reason'); + expect(barrierRejected.isRejected()).toBe(true); + expect(barrierRejected.isPending()).toBe(false); + expect(barrierRejected.isFulfilled()).toBe(false); + await barrierRejected.reject('rejection reason 2'); + + const fn2 = jest.fn(); + await (async () => { + try { + await barrierRejected.entry(); + } catch (e) { + fn2(e); + } + })(); + + expect(fn2).toBeCalledWith('rejection reason'); + }); +}); diff --git a/tests/utils/text.tests.ts b/tests/unit/utils/text.tests.ts similarity index 98% rename from tests/utils/text.tests.ts rename to tests/unit/utils/text.tests.ts index f2b4bfb2a29e..b53b9d529da0 100644 --- a/tests/utils/text.tests.ts +++ b/tests/unit/utils/text.tests.ts @@ -1,4 +1,4 @@ -import {formatCSS, getParenthesesRange} from '../../src/utils/text'; +import {formatCSS, getParenthesesRange} from '../../../src/utils/text'; test('CSS formatting', () => { expect(formatCSS('div { color: red; }')) diff --git a/tests/utils/time.tests.ts b/tests/unit/utils/time.tests.ts similarity index 99% rename from tests/utils/time.tests.ts rename to tests/unit/utils/time.tests.ts index 921d8f7f8856..68f19d7d2b01 100644 --- a/tests/utils/time.tests.ts +++ b/tests/unit/utils/time.tests.ts @@ -1,4 +1,4 @@ -import {isInTimeIntervalLocal, nextTimeInterval, isNightAtLocation, nextTimeChangeAtLocation, parseTime, getDuration, getDurationInMinutes} from '../../src/utils/time'; +import {isInTimeIntervalLocal, nextTimeInterval, isNightAtLocation, nextTimeChangeAtLocation, parseTime, getDuration, getDurationInMinutes} from '../../../src/utils/time'; test('Time interval', () => { // isInTimeIntervalLocal is time-zone dependent diff --git a/tests/utils/uid.tests.ts b/tests/unit/utils/uid.tests.ts similarity index 94% rename from tests/utils/uid.tests.ts rename to tests/unit/utils/uid.tests.ts index b047da7bfc23..adf8f5757bed 100644 --- a/tests/utils/uid.tests.ts +++ b/tests/unit/utils/uid.tests.ts @@ -1,5 +1,5 @@ import {randomFillSync} from 'crypto'; -import {generateUID} from '../../src/utils/uid'; +import {generateUID} from '../../../src/utils/uid'; test('Unique identifier generation', () => { // Make sure we are not messing up global context for somebody else diff --git a/tests/utils/jest.config.js b/tests/utils/jest.config.js deleted file mode 100644 index ed12a8408e60..000000000000 --- a/tests/utils/jest.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - verbose: true, - testEnvironment: 'jsdom', - transform: { - '^.+\\.ts$': 'ts-jest' - }, - testRegex: 'tests/utils/.*\\.tests\\.ts$', - moduleFileExtensions: [ - 'ts', - 'js' - ], - rootDir: '../../', - collectCoverage: false, - coverageDirectory: 'tests/coverage', - collectCoverageFrom: [ - '/src/**/*.ts', - ], - globals: { - 'ts-jest': { - tsconfig: './tests/utils/tsconfig.json' - } - } -}; diff --git a/tests/utils/promise-barrier.tests.ts b/tests/utils/promise-barrier.tests.ts deleted file mode 100644 index f54ec9d56c14..000000000000 --- a/tests/utils/promise-barrier.tests.ts +++ /dev/null @@ -1,89 +0,0 @@ -import {PromiseBarrier} from '../../src/utils/promise-barrier'; - -test('Promise barrier utility', async () => { - const barrier = new PromiseBarrier(); - const fn1 = jest.fn(); - const fn2 = jest.fn(); - (async () => { - fn1(); - const result = await barrier.entry(); - fn2(result); - })(); - expect(fn1).toBeCalled(); - expect(fn2).not.toBeCalled(); - - expect(barrier.isPending()).toBe(true); - expect(barrier.isFulfilled()).toBe(false); - expect(barrier.isRejected()).toBe(false); - await barrier.resolve(2); - expect(barrier.isFulfilled()).toBe(true); - expect(barrier.isPending()).toBe(false); - expect(barrier.isRejected()).toBe(false); - expect(fn1).toBeCalledTimes(1); - expect(fn2).toBeCalledWith(2); -}); - -test('Promise barrier utility: awaiting for barrier after it was settled', async () => { - const barrierFulfilled = new PromiseBarrier(); - expect(barrierFulfilled.isPending()).toBe(true); - expect(barrierFulfilled.isFulfilled()).toBe(false); - expect(barrierFulfilled.isRejected()).toBe(false); - const promise1 = barrierFulfilled.resolve('Hello World!'); - expect(barrierFulfilled.isFulfilled()).toBe(true); - expect(barrierFulfilled.isPending()).toBe(false); - expect(barrierFulfilled.isRejected()).toBe(false); - const fn1 = jest.fn(); - (async () => fn1(await barrierFulfilled.entry()))(); - await promise1; - expect(fn1).toBeCalledWith('Hello World!'); - - const barrierRejected = new PromiseBarrier(); - const promise2 = barrierRejected.reject('rejection reason'); - const fn2 = jest.fn(); - (async () => { - try { - await barrierRejected.entry(); - } catch (e) { - fn2(e); - } - })(); - await promise2; - expect(fn2).toBeCalledWith('rejection reason'); -}); - -test('Promise barrier utility: resolving multiple times', async () => { - const barrierFulfilled = new PromiseBarrier(); - expect(barrierFulfilled.isPending()).toBe(true); - expect(barrierFulfilled.isFulfilled()).toBe(false); - expect(barrierFulfilled.isRejected()).toBe(false); - barrierFulfilled.resolve('Hello World!'); - expect(barrierFulfilled.isFulfilled()).toBe(true); - expect(barrierFulfilled.isPending()).toBe(false); - expect(barrierFulfilled.isRejected()).toBe(false); - barrierFulfilled.resolve('Hello World 2!'); - expect(barrierFulfilled.isFulfilled()).toBe(true); - expect(barrierFulfilled.isPending()).toBe(false); - expect(barrierFulfilled.isRejected()).toBe(false); - const fn1 = jest.fn(); - (async () => fn1(await barrierFulfilled.entry()))(); - setTimeout(() => expect(fn1).toBeCalledWith('Hello World!')); - - const barrierRejected = new PromiseBarrier(); - expect(barrierRejected.isPending()).toBe(true); - expect(barrierRejected.isFulfilled()).toBe(false); - expect(barrierRejected.isRejected()).toBe(false); - await barrierRejected.reject('rejection reason'); - expect(barrierRejected.isRejected()).toBe(true); - expect(barrierRejected.isPending()).toBe(false); - expect(barrierRejected.isFulfilled()).toBe(false); - barrierRejected.reject('rejection reason 2'); - const fn2 = jest.fn(); - (async () => { - try { - await barrierRejected.entry(); - } catch (e) { - fn2(e); - } - })(); - setTimeout(() => expect(fn2).toBeCalledWith('rejection reason')); -}); diff --git a/tests/utils/tsconfig.json b/tests/utils/tsconfig.json deleted file mode 100644 index 8577f29983b2..000000000000 --- a/tests/utils/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../src/tsconfig", - "compilerOptions": { - "module": "commonjs", - "outDir": "", - "types": [ - "jest", - "node" - ] - } -} From cf8c7beefe969001461af5782c6ddc8135c0bb4c Mon Sep 17 00:00:00 2001 From: Matt Alexander Date: Mon, 28 Feb 2022 04:31:38 -0600 Subject: [PATCH 451/892] Follow up to PR 8266 (#8300) - Delayed test snapshot update for the changes in "Move unit tests" commit 21794ec6 - Remove log4js dependency (pass throwErrors: true to Karma instead - Fix tsconfig.json enum capitalization to match official schema --- package-lock.json | 1 - package.json | 1 - src/tsconfig.json | 12 +- tests/browser/tsconfig.json | 5 +- tests/inject/run.js | 10 +- .../__snapshots__/tsconf.tests.ts.snap | 140 +----------------- 6 files changed, 18 insertions(+), 151 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4b30558c270a..b2a73fe3e792 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,7 +39,6 @@ "karma-rollup-preprocessor": "github:jlmakes/karma-rollup-preprocessor#master", "karma-safari-launcher": "1.0.0", "less": "4.1.2", - "log4js": "6.4.1", "malevic": "0.18.6", "prettier": "2.5.1", "puppeteer-core": "13.0.1", diff --git a/package.json b/package.json index 109d9958af1f..28e54dafb791 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,6 @@ "karma-rollup-preprocessor": "github:jlmakes/karma-rollup-preprocessor#master", "karma-safari-launcher": "1.0.0", "less": "4.1.2", - "log4js": "6.4.1", "malevic": "0.18.6", "prettier": "2.5.1", "puppeteer-core": "13.0.1", diff --git a/src/tsconfig.json b/src/tsconfig.json index 7e0c46f71e9c..8c8fe3599f0f 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -1,14 +1,14 @@ { "compilerOptions": { - "target": "es2019", + "target": "ES2019", "baseUrl": ".", - "module": "es2015", + "module": "ES2015", "moduleResolution": "node", "lib": [ - "es2015", - "es2017", - "dom", - "dom.iterable" + "ES2015", + "ES2017", + "Dom", + "DOM.Iterable" ], "types": [ "chrome", diff --git a/tests/browser/tsconfig.json b/tests/browser/tsconfig.json index e53ea48cd6b6..3a7c314f679f 100644 --- a/tests/browser/tsconfig.json +++ b/tests/browser/tsconfig.json @@ -1,11 +1,10 @@ { - "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { "target": "ES2019", "module": "CommonJS", "lib": [ - "es2015", - "dom" + "ES2015", + "Dom" ], "types": [ "chrome", diff --git a/tests/inject/run.js b/tests/inject/run.js index 0f50beab12f8..1f75c3b511ff 100644 --- a/tests/inject/run.js +++ b/tests/inject/run.js @@ -1,5 +1,4 @@ // @ts-check -const {getLogger, levels: {DEBUG, INFO}} = require('log4js'); const karma = require('karma'); const path = require('path'); const {createEchoServer} = require('./echo-server'); @@ -12,10 +11,11 @@ async function run() { const args = process.argv.slice(2); const debug = args.includes('--debug'); - // Default logger is not set if config file doesn't load, so config errors are swallowed - getLogger().level = debug ? DEBUG : INFO; - - const karmaConfig = karma.config.parseConfig(path.join(__dirname, './karma.conf.js'), /** @type {any} */({debug})); + const configFilePath = path.join(__dirname, './karma.conf.js'); + /** @type {Object} */ + const cliOptions = {debug}; + const parseOptions = {throwErrors: true}; + const karmaConfig = await karma.config.parseConfig(configFilePath, cliOptions, parseOptions); const echoServer = await createEchoServer(ECHO_SERVER_PORT); const karmaServer = new karma.Server(/** @type {any} */(karmaConfig), () => { diff --git a/tests/project/__snapshots__/tsconf.tests.ts.snap b/tests/project/__snapshots__/tsconf.tests.ts.snap index f4e6571c8523..8557149fc11c 100644 --- a/tests/project/__snapshots__/tsconf.tests.ts.snap +++ b/tests/project/__snapshots__/tsconf.tests.ts.snap @@ -17,17 +17,14 @@ Object { ], "module": "es6", "moduleResolution": "node", - "noEmit": true, "noImplicitAny": true, + "resolveJsonModule": true, "target": "es2019", "types": Array [ "chrome", "offscreencanvas", ], }, - "exclude": Array [ - "node_modules", - ], "files": Array [ "./defaults.ts", "./definitions.d.ts", @@ -228,17 +225,14 @@ Object { ], "module": "es6", "moduleResolution": "node", - "noEmit": true, "noImplicitAny": true, + "resolveJsonModule": true, "target": "es5", "types": Array [ "chrome", "offscreencanvas", ], }, - "exclude": Array [ - "../node_modules", - ], "files": Array [ "./chrome.ts", "./fetch.ts", @@ -252,7 +246,6 @@ Object { "compileOnSave": false, "compilerOptions": Object { "allowJs": true, - "baseUrl": "../../src", "downlevelIteration": true, "esModuleInterop": true, "jsx": "react", @@ -265,7 +258,6 @@ Object { "moduleResolution": "node", "noEmit": true, "noImplicitAny": true, - "outDir": "./", "target": "es2019", "types": Array [ "chrome", @@ -274,17 +266,11 @@ Object { "puppeteer-core", ], }, - "exclude": Array [ - "../../src/node_modules", - ], "files": Array [ "./coverage.js", "./environment.js", "./globals.d.ts", - "./jest.config.chrome.js", - "./jest.config.firefox.js", "./jest.config.js", - "./jest.config.shared.js", "./paths.js", "./server.js", "./dynamic/inline-override.tests.ts", @@ -298,86 +284,13 @@ Object { } `; -exports[`TypeScript project config file should parse and resolve correctly: tests/config 1`] = ` -Object { - "compileOnSave": false, - "compilerOptions": Object { - "allowJs": true, - "baseUrl": "../../src", - "downlevelIteration": true, - "jsx": "react", - "jsxFactory": "m", - "lib": Array [ - "es6", - "es2017", - "dom", - "dom.iterable", - ], - "module": "commonjs", - "moduleResolution": "node", - "noEmit": true, - "noImplicitAny": true, - "outDir": "./", - "target": "es2019", - "types": Array [ - "jest", - "node", - ], - }, - "exclude": Array [ - "../../src/node_modules", - ], - "files": Array [ - "./config.tests.ts", - "./jest.config.js", - "./locales.tests.ts", - ], -} -`; - -exports[`TypeScript project config file should parse and resolve correctly: tests/generators/utils 1`] = ` -Object { - "compileOnSave": false, - "compilerOptions": Object { - "allowJs": true, - "baseUrl": "../../../src", - "downlevelIteration": true, - "jsx": "react", - "jsxFactory": "m", - "lib": Array [ - "es6", - "es2017", - "dom", - "dom.iterable", - ], - "module": "commonjs", - "moduleResolution": "node", - "noEmit": true, - "noImplicitAny": true, - "outDir": "./", - "target": "es2019", - "types": Array [ - "jest", - "node", - ], - }, - "exclude": Array [ - "../../../src/node_modules", - ], - "files": Array [ - "./jest.config.js", - "./parse.tests.ts", - ], -} -`; - exports[`TypeScript project config file should parse and resolve correctly: tests/inject 1`] = ` Object { "compileOnSave": false, "compilerOptions": Object { "allowJs": true, - "baseUrl": "../../src", "downlevelIteration": true, + "esModuleInterop": true, "jsx": "react", "jsxFactory": "m", "lib": Array [ @@ -393,19 +306,18 @@ Object { "target": "es2019", "types": Array [ "chrome", - "jasmine", "offscreencanvas", + "jasmine", ], }, "exclude": Array [ - "../../src/node_modules", + "./coverage", ], "files": Array [ "./background-stub.ts", "./customize.ts", "./echo-client.ts", "./echo-server.js", - "./jest.config.js", "./karma.conf.js", "./polyfills.ts", "./run.js", @@ -459,45 +371,3 @@ Object { ], } `; - -exports[`TypeScript project config file should parse and resolve correctly: tests/utils 1`] = ` -Object { - "compileOnSave": false, - "compilerOptions": Object { - "allowJs": true, - "baseUrl": "../../src", - "downlevelIteration": true, - "jsx": "react", - "jsxFactory": "m", - "lib": Array [ - "es6", - "es2017", - "dom", - "dom.iterable", - ], - "module": "commonjs", - "moduleResolution": "node", - "noEmit": true, - "noImplicitAny": true, - "outDir": "./", - "target": "es2019", - "types": Array [ - "jest", - "node", - ], - }, - "exclude": Array [ - "../../src/node_modules", - ], - "files": Array [ - "./color.tests.ts", - "./jest.config.js", - "./math.tests.ts", - "./parsing.tests.ts", - "./promise-barrier.tests.ts", - "./text.tests.ts", - "./time.tests.ts", - "./uid.tests.ts", - ], -} -`; From bb202bdb2820ee4717c91622341617d5c12c9afa Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 1 Mar 2022 11:00:23 +0000 Subject: [PATCH 452/892] Fix for yeniakit.com.tr (#8307) - Resolves #8303 --- src/config/dynamic-theme-fixes.config | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index bd057733a0ac..8deceb446758 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -18214,6 +18214,22 @@ img[src$="40x40_food_v2.svg"] ================================ +yeniakit.com.tr + +CSS +.photo-news-detail-cover .article-header > .image { + z-index: 0 !important; +} +.photo-news-detail-cover .article-header > .black-shadow { + z-index: 1 !important; +} +.photo-news-detail-cover .article-header > .social-box, +.photo-news-detail-cover .article-header > .category { + z-index: 2 !important; +} + +================================ + yle.fi INVERT From 16fb9ee96d3fbb40c6c2810f1de5f330334b7ff7 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Tue, 1 Mar 2022 03:10:57 -0800 Subject: [PATCH 453/892] Fix for tabletochki.org (#8302) - Resolves #8301 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8deceb446758..ddce3dd6a731 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15197,6 +15197,13 @@ IGNORE INLINE STYLE ================================ +tabletochki.org + +INVERT +.perekaz__list img + +================================ + tails.boum.org CSS From 35822e13c61c175e69a651b228ba3a4e38718ca3 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 1 Mar 2022 11:15:49 +0000 Subject: [PATCH 454/892] Added dark sites (#8308) - Resolves #8305 --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 623d74ff9141..82e3b811847b 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -441,6 +441,7 @@ hoarding.me hoppscotch.io hostedtalk.net hotstar.com +hrmspms.sicorax.mu htmlpasta.com humblebundle.com/$ humblebundle.com/accessibility From 914819ff02bb66f0b024d18c798b202eb569203c Mon Sep 17 00:00:00 2001 From: AshCam1988 <37420496+AshCam1988@users.noreply.github.com> Date: Tue, 1 Mar 2022 21:17:31 +1000 Subject: [PATCH 455/892] Added dark sites (#8306) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 82e3b811847b..2e8259c29f77 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -59,6 +59,7 @@ artixlinux.org artofkeys.com as2.aiae.ovh asciimation.co.nz +ashcam.xyz asherhe.com ashishpanigrahi.xyz asoftmurmur.com From 271f39c9ab2a058196f25a5b70672db13ec68270 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 1 Mar 2022 20:32:05 +0000 Subject: [PATCH 456/892] Fix for zippyshare.com (#8314) - Resolves #8309 --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ddce3dd6a731..d62c660ce053 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -18671,6 +18671,18 @@ img[eeimg="1"] ================================ +zippyshare.com + +INVERT +img#browse + +CSS +.inner_main > table { + background-image: none !important; +} + +================================ + znanium.com INVERT From 9b7db3bcc65f0fe298eac22666d4e517d474e7b3 Mon Sep 17 00:00:00 2001 From: Elaborendum <71190696+Elaborendum@users.noreply.github.com> Date: Tue, 1 Mar 2022 17:58:26 -0500 Subject: [PATCH 457/892] Fix for multiple sites (#8304) Crowdin: Logo at the top left when viewing projects Fandom: Didn't know if it was right to add these. They are ad sections, but their current absence could also confuse a user who isn't using an ad blocker. TVT: Backgrounds of Darth and WMG wikis + subpages icons + loading icon when searching Medium: Separator Weblate: Icon that indicates a string has a suggestion Tumblr: Logos and other elements in the main page, made white because the randomly selected background sometimes has low contrast with those unless they are white + Login with Google/Apple buttons + Video Progress Bar --- src/config/dynamic-theme-fixes.config | 55 +++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d62c660ce053..34d0403ac949 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3612,6 +3612,7 @@ crowdin.com INVERT .crowdin-navbar__logo +svg.logo-icon-projects #master-loader > .master-loader-logo #master-loader-progress.bar @@ -5684,6 +5685,8 @@ body { } #mixed-content-footer, .community-header-wrapper, +.top-ads-container, +.bottom-ads-container, .global-footer { z-index: 1 !important; } @@ -10008,6 +10011,7 @@ medium.com INVERT .svgIcon .svgIcon-use +div[role="separator"] ================================ @@ -16120,6 +16124,24 @@ INVERT tvtropes.org +INVERT +body.darthWiki > i +body.wmgWiki > i +.spi.darthwiki +.spi.sugarwiki +.spi.film +.spi.headscratchers +.spi.laconic-icon +.spi.lightnovel +.spi.manga +.spi.nightmarefuel +.spi.radar +.spi.recap +.spi.shoutout +.spi.wmg +.spi.ymmv +img[src="/img/loading-alt.gif"] + IGNORE IMAGE ANALYSIS body.sugarWiki #header-spacer-left::after body.sugarWiki #header-spacer-right::after @@ -16972,6 +16994,13 @@ CSS ================================ +weblate.org + +INVERT +h5.list-group-item-heading > svg + +================================ + webtoons.com CSS @@ -18002,7 +18031,33 @@ a[title="Tinkoff"] www.tumblr.com +INVERT +.QnWzN > div +div[role="progressbar"] + CSS +a[data-testid="google-login-button"], +a[data-testid="apple-login-button"] { + background-color: var(--darkreader-neutral-background) !important; +} +a[href="/"] > div > svg { + fill: white !important; +} +a[href="/explore"] > svg { + fill: white !important; +} +a[aria-label="Tumblr"] > svg { + fill: white !important; +} +nav.FhRnI > ul > li { + filter: invert(100%) hue-rotate(180deg) contrast(200%) !important; +} +footer[role="contentinfo"] > ul > li > a { + filter: invert(0%) hue-rotate(180deg) contrast(200%) !important; +} +ul.AohpR > li > a { + filter: invert(0%) hue-rotate(180deg) contrast(200%) !important; +} :root { --darkreader-bg--white: 23, 23, 23 !important; --darkreader-text--black: 228, 224, 218 !important; From 1d43a64aae32027bf2209b42efea2ff473a1bd42 Mon Sep 17 00:00:00 2001 From: Elaborendum <71190696+Elaborendum@users.noreply.github.com> Date: Wed, 2 Mar 2022 05:35:20 -0500 Subject: [PATCH 458/892] Fixes for multiple sites (#8317) DeepL: Various icons in the footer + Top main logo in sites other than the main one Gravatar: Main logo + Wordpress login icon Kahoot.it: Answer icons + Countdown + Illustrations before starting a game + Main Logo PD: Check icon Transifex: Close icon Wordpress: Icons in login page --- src/config/dynamic-theme-fixes.config | 35 +++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 34d0403ac949..6f0123a65efd 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3930,6 +3930,11 @@ deepl.com INVERT .dl_ad_pro__features_item::before .dl_logo_text +img[class^="productNavigation-module--logoText"] +img#languageSelectorIcon +footer > div > div > div > div > a > img[alt="DeepL"] +div[class^="socialMediaLinks"] > a +div[class^="pageFooterV2-module--socialMediaLinks"] > a ================================ @@ -7220,8 +7225,12 @@ gravatar.com INVERT a.g-home .g-user-menu > svg +body#page > div > div > nav > ul > li > a > svg.g-logo.g-logo--name-gravatar CSS +a[class="g-sign-in"] > svg > path { + fill: white !important; +} body { background-image: none !important; } @@ -8532,8 +8541,14 @@ div.output_png img kahoot.it INVERT -path[d^="M39.99 12.621v14.736l14.736.001V39.99H39.99v14.736H27.359V39.99H12.62V27.359h14.736l.001-14.737H39.99z"] -path[d^="M46.244 15.355l8.127 7.393-25.623 28.184-15.526-14.483 7.743-7.747 7.333 6.396 17.946-19.743z"] +main[data-functional-selector="correct-answer"] > div > div > div > svg > g > path +main[data-functional-selector="incorrect-answer"] > div > div > div > svg > g > path +main[data-functional-selector="time-up-answer"] > div > div > div > svg > g > path +div[data-functional-selector="kahoot-settings__language-picker"] > div > div > div > div > img +.sc-iqxcLP.klWCeb +g#Background +g#Greyscale +span[data-functional-selector="kahoot-logo"] > svg > g > path IGNORE INLINE STYLE [data-functional-selector^="answer"] @@ -12167,6 +12182,8 @@ peardeck.com INVERT .boxy-svg +.mc-answer__check-inner +.check-svg ================================ @@ -15902,6 +15919,13 @@ CSS ================================ +transifex.com + +INVERT +img.close_image + +================================ + translate.google.* translate.google.*.* @@ -17499,7 +17523,14 @@ img[alt="wordnik logo"] wordpress.com +INVERT +svg.masterbar__wpcom-wordmark +div.wp-login__footer.wp-login__footer--jetpack > img + CSS +svg.social-icons.social-icons__apple.social-icons--enabled { + fill: white !important; +} .p2020-sidebar { background-image: none !important; background: var(--darkreader-neutral-background); From d731d34143dc4756014e07cd44ffb2c727d6e1b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Mar 2022 14:39:41 +0100 Subject: [PATCH 459/892] Bump karma from 6.3.14 to 6.3.16 (#8319) Bumps [karma](https://github.com/karma-runner/karma) from 6.3.14 to 6.3.16. - [Release notes](https://github.com/karma-runner/karma/releases) - [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md) - [Commits](https://github.com/karma-runner/karma/compare/v6.3.14...v6.3.16) --- updated-dependencies: - dependency-name: karma dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 39 ++++++++++++++++++++++++++++++++------- package.json | 2 +- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index b2a73fe3e792..4a9de3d7fcad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "jasmine-core": "4.0.0", "jest": "27.4.7", "jest-extended": "2.0.0", - "karma": "6.3.14", + "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.1.0", "karma-firefox-launcher": "2.1.2", @@ -7849,9 +7849,9 @@ } }, "node_modules/karma": { - "version": "6.3.14", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.14.tgz", - "integrity": "sha512-SDFoU5F4LdosEiUVWUDRPCV/C1zQRNtIakx7rWkigf7R4sxGADlSEeOma4S1f/js7YAzvqLW92ByoiQptg+8oQ==", + "version": "6.3.16", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.16.tgz", + "integrity": "sha512-nEU50jLvDe5yvXqkEJRf8IuvddUkOY2x5Xc4WXHz6dxINgGDrgD2uqQWeVrJs4hbfNaotn+HQ1LZJ4yOXrL7xQ==", "dev": true, "dependencies": { "body-parser": "^1.19.0", @@ -7869,6 +7869,7 @@ "log4js": "^6.4.1", "mime": "^2.5.2", "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", "qjobs": "^1.2.0", "range-parser": "^1.2.1", "rimraf": "^3.0.2", @@ -7979,6 +7980,18 @@ "karma": ">=0.9" } }, + "node_modules/karma/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/keyv": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", @@ -18286,9 +18299,9 @@ } }, "karma": { - "version": "6.3.14", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.14.tgz", - "integrity": "sha512-SDFoU5F4LdosEiUVWUDRPCV/C1zQRNtIakx7rWkigf7R4sxGADlSEeOma4S1f/js7YAzvqLW92ByoiQptg+8oQ==", + "version": "6.3.16", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.16.tgz", + "integrity": "sha512-nEU50jLvDe5yvXqkEJRf8IuvddUkOY2x5Xc4WXHz6dxINgGDrgD2uqQWeVrJs4hbfNaotn+HQ1LZJ4yOXrL7xQ==", "dev": true, "requires": { "body-parser": "^1.19.0", @@ -18306,6 +18319,7 @@ "log4js": "^6.4.1", "mime": "^2.5.2", "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", "qjobs": "^1.2.0", "range-parser": "^1.2.1", "rimraf": "^3.0.2", @@ -18314,6 +18328,17 @@ "tmp": "^0.2.1", "ua-parser-js": "^0.7.30", "yargs": "^16.1.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } } }, "karma-chrome-launcher": { diff --git a/package.json b/package.json index 28e54dafb791..d06bbca27bf6 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "jasmine-core": "4.0.0", "jest": "27.4.7", "jest-extended": "2.0.0", - "karma": "6.3.14", + "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.1.0", "karma-firefox-launcher": "2.1.2", From c51bfbab5ea84734873d1d5e49fd9b922d09fea8 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 2 Mar 2022 15:04:36 +0000 Subject: [PATCH 460/892] Remove unneeded fix (#8320) --- src/config/dynamic-theme-fixes.config | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 6f0123a65efd..358d78a78860 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17,9 +17,6 @@ CSS ::placeholder { opacity: 0.5 !important; } -a[href="https://coinmarketcap.com/"] > svg[width="94"][height="16"] > path { - fill: var(--darkreader-neutral-text) !important; -} #edge-translate-panel-body, .MuiTypography-body1 { color: var(--darkreader-neutral-text) !important; From e5f68b487bf14bf02ca0ee8f17348e432d697efc Mon Sep 17 00:00:00 2001 From: Dave Ruijter Date: Wed, 2 Mar 2022 17:22:24 +0100 Subject: [PATCH 461/892] Fix for azuresynapse.net (#8321) - Fix cursor. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 358d78a78860..8cd157322cff 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1535,6 +1535,13 @@ CSS ================================ +azuresynapse.net + +INVERT +.cursor + +================================ + azurlane.koumakan.jp IGNORE IMAGE ANALYSIS From 38c51fe6a4b5049e8f18b931f4e112b3d8c15985 Mon Sep 17 00:00:00 2001 From: Max Programming <51731966+max-programming@users.noreply.github.com> Date: Wed, 2 Mar 2022 22:46:32 +0530 Subject: [PATCH 462/892] Added dark site (#8325) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 2e8259c29f77..87604c69235e 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -650,6 +650,7 @@ omcar.pl omgwtfnzbs.me onionplay.co online.lloydsbank.co.uk +onlyformats.netlify.app open.spotify.com openbase.io opendota.com From bc9f0a6ec486662abb9a3381116bd1c25053e6d6 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 2 Mar 2022 20:17:07 +0000 Subject: [PATCH 463/892] Add `.log/` to .gitingore (#8323) - `.log/` is a folder generated by typescript's server in combination with https://github.com/typescript-language-server/typescript-language-server which is used by https://github.com/emacs-lsp/lsp-mode/ --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1a92f754c047..75ca8dfbd4d3 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ tests/inject/coverage/ #----------------------------------- .idea/ .vscode/ +.log/ *.code-workspace # Cache files From 049b3739abf0482cf823a9f826f5d5031d8d2499 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Wed, 2 Mar 2022 20:39:14 +0000 Subject: [PATCH 464/892] Change tests build folder (#8326) - Use `build` folder. - Use package NPM version. --- .gitignore | 2 +- package-lock.json | 13 +++++++------ package.json | 2 +- tasks/paths.js | 2 +- tests/inject/karma.conf.js | 2 +- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 75ca8dfbd4d3..45799df47ad9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # Build files #----------------------------------- -build*/ +build darkreader.js debug.log diff --git a/package-lock.json b/package-lock.json index 4a9de3d7fcad..7eb485828605 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,7 +36,7 @@ "karma-coverage": "2.1.0", "karma-firefox-launcher": "2.1.2", "karma-jasmine": "4.0.1", - "karma-rollup-preprocessor": "github:jlmakes/karma-rollup-preprocessor#master", + "karma-rollup-preprocessor": "7.0.8", "karma-safari-launcher": "1.0.0", "less": "4.1.2", "malevic": "0.18.6", @@ -7956,10 +7956,10 @@ "dev": true }, "node_modules/karma-rollup-preprocessor": { - "version": "7.0.7", - "resolved": "git+ssh://git@github.com/jlmakes/karma-rollup-preprocessor.git#de386a6a84664391f178bfe5b4a20a504437dde0", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/karma-rollup-preprocessor/-/karma-rollup-preprocessor-7.0.8.tgz", + "integrity": "sha512-WiuBCS9qsatJuR17dghiTARBZ7LF+ml+eb7qJXhw7IbsdY0lTWELDRQC/93J9i6636CsAXVBL3VJF4WtaFLZzA==", "dev": true, - "license": "MIT", "dependencies": { "chokidar": "^3.3.1", "debounce": "^1.2.0" @@ -18403,9 +18403,10 @@ } }, "karma-rollup-preprocessor": { - "version": "git+ssh://git@github.com/jlmakes/karma-rollup-preprocessor.git#de386a6a84664391f178bfe5b4a20a504437dde0", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/karma-rollup-preprocessor/-/karma-rollup-preprocessor-7.0.8.tgz", + "integrity": "sha512-WiuBCS9qsatJuR17dghiTARBZ7LF+ml+eb7qJXhw7IbsdY0lTWELDRQC/93J9i6636CsAXVBL3VJF4WtaFLZzA==", "dev": true, - "from": "karma-rollup-preprocessor@github:jlmakes/karma-rollup-preprocessor#master", "requires": { "chokidar": "^3.3.1", "debounce": "^1.2.0" diff --git a/package.json b/package.json index d06bbca27bf6..b00b60fbfb7e 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "karma-coverage": "2.1.0", "karma-firefox-launcher": "2.1.2", "karma-jasmine": "4.0.1", - "karma-rollup-preprocessor": "github:jlmakes/karma-rollup-preprocessor#master", + "karma-rollup-preprocessor": "7.0.8", "karma-safari-launcher": "1.0.0", "less": "4.1.2", "malevic": "0.18.6", diff --git a/tasks/paths.js b/tasks/paths.js index 1a2cbaf467ea..3de77f13abd3 100644 --- a/tasks/paths.js +++ b/tasks/paths.js @@ -15,7 +15,7 @@ module.exports = { return `${buildTypeDir}/${platform}`; }, getTestDestDir: function () { - return `build-tests`; + return `build/tests`; }, rootDir, diff --git a/tests/inject/karma.conf.js b/tests/inject/karma.conf.js index 228580d82579..0c024af0daa2 100644 --- a/tests/inject/karma.conf.js +++ b/tests/inject/karma.conf.js @@ -42,7 +42,7 @@ module.exports = (config) => { }), ], output: { - dir: `${getTestDestDir()}`, + dir: getTestDestDir(), strict: true, format: 'iife', sourcemap: 'inline', From 7e05dbb1159f3d1d96e9ac09584b7744aa0a66c2 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Thu, 3 Mar 2022 03:37:54 -0800 Subject: [PATCH 465/892] Fix for askvg.com (#8327) Fixed logo in header --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8cd157322cff..872c9d034b36 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1352,6 +1352,13 @@ header, ================================ +askvg.com + +INVERT +.site-header img + +================================ + askwoody.com CSS From 3ed726486a7593ba5a5b111d301db7ce5d422491 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Thu, 3 Mar 2022 03:41:54 -0800 Subject: [PATCH 466/892] Fix for fsfe.org (#8330) --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 872c9d034b36..266c4d01febd 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6328,6 +6328,18 @@ body, ================================ +fsfe.org + +INVERT +#logo + +CSS +body { + background-image: none !important; +} + +================================ + ftp.nluug.nl INVERT From 62f89382969b7289550b2465f756c0902009172e Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Thu, 3 Mar 2022 03:44:03 -0800 Subject: [PATCH 467/892] Fix for fontsquirrel.com (#8332) --- src/config/dynamic-theme-fixes.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 266c4d01febd..42aace0928b8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6055,6 +6055,11 @@ fontsquirrel.com INVERT .fontlistitem +CSS +#main_content_container { + background-image: none !important; +} + ================================ foobar2000.org From 35bfb3b04f2adb820e92e1a75ee1c72b1dafb0f0 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Thu, 3 Mar 2022 03:44:17 -0800 Subject: [PATCH 468/892] Fix for shields.io (#8331) --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 42aace0928b8..ddb76b053477 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13978,6 +13978,14 @@ CSS ================================ +shields.io + +INVERT +#app a +object + +================================ + shop.dr-rath.com CSS From 1033b9d0089a4293a4784cba5b53d1eef02fdb1a Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Thu, 3 Mar 2022 14:44:51 +0300 Subject: [PATCH 469/892] Fix for downdetector.com (#8333) - Invert map. --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ddb76b053477..f6f7e4bbedaa 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -695,6 +695,17 @@ INVERT ================================ +allestoringen.* +downdetector.* +downdetector.*.* +xn--allestrungen-9ib.* + +INVERT +#map_container +#map-card + +================================ + allmacworld.com INVERT From 0162c238a0b822e24b36b4f0225f7115e7751acd Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Thu, 3 Mar 2022 12:20:52 +0000 Subject: [PATCH 470/892] Update dev dependencies (#8335) --- package-lock.json | 3351 +++++++++++++++++++++------------------------ package.json | 42 +- 2 files changed, 1603 insertions(+), 1790 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7eb485828605..d5c56fd56f7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,45 +10,45 @@ "license": "MIT", "devDependencies": { "@rollup/plugin-node-resolve": "13.1.3", - "@rollup/plugin-replace": "3.0.1", - "@rollup/plugin-typescript": "8.3.0", + "@rollup/plugin-replace": "4.0.0", + "@rollup/plugin-typescript": "8.3.1", "@rollup/pluginutils": "4.1.2", - "@types/chrome": "0.0.176", + "@types/chrome": "0.0.179", "@types/eslint": "8.4.1", "@types/jasmine": "3.10.3", - "@types/jest": "27.4.0", - "@types/karma": "6.3.2", + "@types/jest": "27.4.1", + "@types/karma": "6.3.3", "@types/karma-coverage": "2.0.1", - "@types/node": "17.0.9", + "@types/node": "17.0.21", "@types/offscreencanvas": "2019.6.4", - "@typescript-eslint/eslint-plugin": "5.9.1", - "@typescript-eslint/parser": "5.9.1", - "chokidar": "3.5.2", - "eslint": "8.7.0", + "@typescript-eslint/eslint-plugin": "5.13.0", + "@typescript-eslint/parser": "5.13.0", + "chokidar": "3.5.3", + "eslint": "8.10.0", "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", - "globby": "11.0.4", - "jasmine-core": "4.0.0", - "jest": "27.4.7", + "globby": "13.1.1", + "jasmine-core": "4.0.1", + "jest": "27.5.1", "jest-extended": "2.0.0", - "karma": "6.3.16", + "karma": "6.3.17", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.1.0", + "karma-coverage": "2.2.0", "karma-firefox-launcher": "2.1.2", "karma-jasmine": "4.0.1", "karma-rollup-preprocessor": "7.0.8", "karma-safari-launcher": "1.0.0", "less": "4.1.2", - "malevic": "0.18.6", + "malevic": "0.19.1", "prettier": "2.5.1", - "puppeteer-core": "13.0.1", - "rollup": "2.64.0", + "puppeteer-core": "13.4.1", + "rollup": "2.69.0", "rollup-plugin-istanbul2": "2.0.2", "ts-jest": "27.1.3", "tslib": "2.3.1", - "typescript": "4.5.4", - "web-ext": "6.6.0", - "ws": "8.4.2", + "typescript": "4.6.2", + "web-ext": "6.7.0", + "ws": "8.5.0", "yazl": "2.5.1" }, "funding": { @@ -614,6 +614,15 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/@devicefarmer/adbkit": { "version": "2.11.3", "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit/-/adbkit-2.11.3.tgz", @@ -672,14 +681,14 @@ "dev": true }, "node_modules/@eslint/eslintrc": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", - "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.0.tgz", + "integrity": "sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.2.0", + "espree": "^9.3.1", "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", @@ -691,23 +700,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", @@ -785,16 +777,16 @@ } }, "node_modules/@jest/console": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.4.6.tgz", - "integrity": "sha512-jauXyacQD33n47A44KrlOVeiXHEXDqapSdfb9kTekOchH/Pd18kBIO1+xxJQRLuG+LUuljFCwTG92ra4NW7SpA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.4.6", - "jest-util": "^27.4.2", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0" }, "engines": { @@ -802,35 +794,35 @@ } }, "node_modules/@jest/core": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.4.7.tgz", - "integrity": "sha512-n181PurSJkVMS+kClIFSX/LLvw9ExSb+4IMtD6YnfxZVerw9ANYtW0bPrm0MJu2pfe9SY9FJ9FtQ+MdZkrZwjg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, "dependencies": { - "@jest/console": "^27.4.6", - "@jest/reporters": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.4.2", - "jest-config": "^27.4.7", - "jest-haste-map": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.6", - "jest-resolve-dependencies": "^27.4.6", - "jest-runner": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", - "jest-watcher": "^27.4.6", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", "micromatch": "^4.0.4", "rimraf": "^3.0.0", "slash": "^3.0.0", @@ -849,77 +841,77 @@ } }, "node_modules/@jest/environment": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.4.6.tgz", - "integrity": "sha512-E6t+RXPfATEEGVidr84WngLNWZ8ffCPky8RqqRK6u1Bn0LK92INe0MDttyPl/JOzaq92BmDzOeuqk09TvM22Sg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, "dependencies": { - "@jest/fake-timers": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.4.6" + "jest-mock": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.6.tgz", - "integrity": "sha512-mfaethuYF8scV8ntPpiVGIHQgS0XIALbpY2jt2l7wb/bvq4Q5pDLk4EP4D7SAvYT1QrPOPVZAtbdGAOOyIgs7A==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^27.4.6", - "jest-mock": "^27.4.6", - "jest-util": "^27.4.2" + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/globals": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.4.6.tgz", - "integrity": "sha512-kAiwMGZ7UxrgPzu8Yv9uvWmXXxsy0GciNejlHvfPIfWkSxChzv6bgTS3YqBkGuHcis+ouMFI2696n2t+XYIeFw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, "dependencies": { - "@jest/environment": "^27.4.6", - "@jest/types": "^27.4.2", - "expect": "^27.4.6" + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/reporters": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.6.tgz", - "integrity": "sha512-+Zo9gV81R14+PSq4wzee4GC2mhAN9i9a7qgJWL90Gpx7fHYkWpTBvwWNZUXvJByYR9tAVBdc8VxDWqfJyIUrIQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", "glob": "^7.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.4.6", - "jest-resolve": "^27.4.6", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.6", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -938,39 +930,14 @@ } } }, - "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/reporters/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@jest/source-map": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.4.0.tgz", - "integrity": "sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, "dependencies": { "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "source-map": "^0.6.0" }, "engines": { @@ -978,13 +945,13 @@ } }, "node_modules/@jest/test-result": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.6.tgz", - "integrity": "sha512-fi9IGj3fkOrlMmhQqa/t9xum8jaJOOAi/lZlm6JXSc55rJMXKHxNDN1oCP39B0/DhNOa2OMupF9BcKZnNtXMOQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, "dependencies": { - "@jest/console": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -993,36 +960,36 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.6.tgz", - "integrity": "sha512-3GL+nsf6E1PsyNsJuvPyIz+DwFuCtBdtvPpm/LMXVkBJbdFvQYCDpccYT56qq5BGniXWlE81n2qk1sdXfZebnw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", "dev": true, "dependencies": { - "@jest/test-result": "^27.4.6", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", - "jest-runtime": "^27.4.6" + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/transform": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.4.6.tgz", - "integrity": "sha512-9MsufmJC8t5JTpWEQJ0OcOOAXaH5ioaIX6uHVBLBMoCZPfKKQF+EqP8kACAvCZ0Y1h2Zr3uOccg8re+Dr5jxyw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, "dependencies": { "@babel/core": "^7.1.0", - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-util": "^27.4.2", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -1034,9 +1001,9 @@ } }, "node_modules/@jest/types": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.4.2.tgz", - "integrity": "sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -1050,9 +1017,9 @@ } }, "node_modules/@mdn/browser-compat-data": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.11.tgz", - "integrity": "sha512-rmQPBLe3/DuJy0Bcr1KNuSiIcgV67R2AeLxagKMQTI0R8F9lLC894wJRYhA5ytV0CIi7dzxILqdFeuVbqrkoCA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.1.6.tgz", + "integrity": "sha512-JbtcHGODAlkOT6eDV2rCyOguW3+o34ExMD9DOki6kxzeyN3IBtZ9PI0FlbKeD77Bm5U0UG5Heo4qnNbSajXUnw==", "dev": true }, "node_modules/@nodelib/fs.scandir": { @@ -1134,9 +1101,9 @@ "dev": true }, "node_modules/@rollup/plugin-replace": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-3.0.1.tgz", - "integrity": "sha512-989J5oRzf3mm0pO/0djTijdfEh9U3n63BIXN5X7T4U9BP+fN4oxQ6DvDuBvFaHA6scaHQRclqmKQEkBhB7k7Hg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-4.0.0.tgz", + "integrity": "sha512-+rumQFiaNac9y64OHtkHGmdjm7us9bo1PlbgQfdihQtuNxzjpaB064HbRnewUOggLQxVCCyINfStkgmBeQpv1g==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -1170,9 +1137,9 @@ "dev": true }, "node_modules/@rollup/plugin-typescript": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.0.tgz", - "integrity": "sha512-I5FpSvLbtAdwJ+naznv+B4sjXZUcIvLLceYpITAn7wAP8W0wqc5noLdGIp9HGVntNhRWXctwPYrSSFQxtl0FPA==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.1.tgz", + "integrity": "sha512-84rExe3ICUBXzqNX48WZV2Jp3OddjTMX97O2Py6D1KJaGSwWp0mDHXj+bCGNJqWHIEKDIT2U0sDjhP4czKi6cA==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -1323,9 +1290,9 @@ } }, "node_modules/@types/chrome": { - "version": "0.0.176", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.176.tgz", - "integrity": "sha512-LOveFOMIUhMJjvRzZv5whGBpncP/gdJ4hcxeAqg94wGi6CyKaCmLgFSofgItf85GuLTl/0BQ6J/Y1e8BqZWfEg==", + "version": "0.0.179", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.179.tgz", + "integrity": "sha512-60zloNApIf88RwiG3Q7E+4NBG+znchhWmcaEVAAhUZahQbft5LWBzij4sinsfpAwbTtuWdFfUSpZsFhXTEFPVw==", "dev": true, "dependencies": { "@types/filesystem": "*", @@ -1465,12 +1432,12 @@ "dev": true }, "node_modules/@types/jest": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz", - "integrity": "sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==", + "version": "27.4.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", + "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", "dev": true, "dependencies": { - "jest-diff": "^27.0.0", + "jest-matcher-utils": "^27.0.0", "pretty-format": "^27.0.0" } }, @@ -1487,13 +1454,13 @@ "dev": true }, "node_modules/@types/karma": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/@types/karma/-/karma-6.3.2.tgz", - "integrity": "sha512-ZQfjGEfEV57I3o6Y5iK1+6aoQDguxmCBeQ0H8r9dasRTFn2Ohqgvx44FSPdY+R+/VUVtr8lvAYaRFzdNrQFvww==", + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@types/karma/-/karma-6.3.3.tgz", + "integrity": "sha512-nRMec4mTCt+tkpRqh5/pAxmnjzEgAaalIq7mdfLFH88gSRC8+bxejLiSjHMMT/vHIhJHqg4GPIGCnCFbwvDRww==", "dev": true, "dependencies": { "@types/node": "*", - "log4js": "^6.3.0" + "log4js": "^6.4.1" } }, "node_modules/@types/karma-coverage": { @@ -1513,9 +1480,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.9.tgz", - "integrity": "sha512-5dNBXu/FOER+EXnyah7rn8xlNrfMOQb/qXnw4NQgLkCygKBKhdmF/CA5oXVOKZLBEahw8s2WP9LxIcN/oDDRgQ==", + "version": "17.0.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", + "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", "dev": true }, "node_modules/@types/offscreencanvas": { @@ -1525,9 +1492,9 @@ "dev": true }, "node_modules/@types/prettier": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.3.tgz", - "integrity": "sha512-QzSuZMBuG5u8HqYz01qtMdg/Jfctlnvj1z/lYnIDXs/golxw0fxtRAHd9KrzjR7Yxz1qVeI00o0kiO3PmVdJ9w==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", + "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", "dev": true }, "node_modules/@types/resolve": { @@ -1570,14 +1537,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.1.tgz", - "integrity": "sha512-Xv9tkFlyD4MQGpJgTo6wqDqGvHIRmRgah/2Sjz1PUnJTawjHWIwBivUE9x0QtU2WVii9baYgavo/bHjrZJkqTw==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.13.0.tgz", + "integrity": "sha512-vLktb2Uec81fxm/cfz2Hd6QaWOs8qdmVAZXLdOBX6JFJDhf6oDZpMzZ4/LZ6SFM/5DgDcxIMIvy3F+O9yZBuiQ==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "5.9.1", - "@typescript-eslint/scope-manager": "5.9.1", - "@typescript-eslint/type-utils": "5.9.1", + "@typescript-eslint/scope-manager": "5.13.0", + "@typescript-eslint/type-utils": "5.13.0", + "@typescript-eslint/utils": "5.13.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -1611,39 +1578,15 @@ "node": ">= 4" } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.1.tgz", - "integrity": "sha512-cb1Njyss0mLL9kLXgS/eEY53SZQ9sT519wpX3i+U457l2UXRDuo87hgKfgRazmu9/tQb0x2sr3Y0yrU+Zz0y+w==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.9.1", - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/typescript-estree": "5.9.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, "node_modules/@typescript-eslint/parser": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.1.tgz", - "integrity": "sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.13.0.tgz", + "integrity": "sha512-GdrU4GvBE29tm2RqWOM0P5QfCtgCyN4hXICj/X9ibKED16136l9ZpoJvCL5pSKtmJzA+NRDzQ312wWMejCVVfg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.9.1", - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/typescript-estree": "5.9.1", + "@typescript-eslint/scope-manager": "5.13.0", + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/typescript-estree": "5.13.0", "debug": "^4.3.2" }, "engines": { @@ -1663,13 +1606,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz", - "integrity": "sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.13.0.tgz", + "integrity": "sha512-T4N8UvKYDSfVYdmJq7g2IPJYCRzwtp74KyDZytkR4OL3NRupvswvmJQJ4CX5tDSurW2cvCc1Ia1qM7d0jpa7IA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/visitor-keys": "5.9.1" + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/visitor-keys": "5.13.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1680,12 +1623,12 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.1.tgz", - "integrity": "sha512-tRSpdBnPRssjlUh35rE9ug5HrUvaB9ntREy7gPXXKwmIx61TNN7+l5YKgi1hMKxo5NvqZCfYhA5FvyuJG6X6vg==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.13.0.tgz", + "integrity": "sha512-/nz7qFizaBM1SuqAKb7GLkcNn2buRdDgZraXlkhz+vUGiN1NZ9LzkA595tHHeduAiS2MsHqMNhE2zNzGdw43Yg==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "5.9.1", + "@typescript-eslint/utils": "5.13.0", "debug": "^4.3.2", "tsutils": "^3.21.0" }, @@ -1706,9 +1649,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.1.tgz", - "integrity": "sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.13.0.tgz", + "integrity": "sha512-LmE/KO6DUy0nFY/OoQU0XelnmDt+V8lPQhh8MOVa7Y5k2gGRd6U9Kp3wAjhB4OHg57tUO0nOnwYQhRRyEAyOyg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1719,13 +1662,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.1.tgz", - "integrity": "sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.13.0.tgz", + "integrity": "sha512-Q9cQow0DeLjnp5DuEDjLZ6JIkwGx3oYZe+BfcNuw/POhtpcxMTy18Icl6BJqTSd+3ftsrfuVb7mNHRZf7xiaNA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/visitor-keys": "5.9.1", + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/visitor-keys": "5.13.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -1745,13 +1688,66 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.13.0.tgz", + "integrity": "sha512-+9oHlPWYNl6AwwoEt5TQryEHwiKRVjz7Vk6kaBeD3/kwHE5YqTGHtm/JZY8Bo9ITOeKutFaXnBlMgSATMJALUQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.13.0", + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/typescript-estree": "5.13.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.1.tgz", - "integrity": "sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.13.0.tgz", + "integrity": "sha512-HLKEAS/qA1V7d9EzcpLFykTePmOQqOFim8oCvhY3pZgQ8Hi38hYpHd9e5GN6nQBFQNecNhws5wkS9Y5XIO0s/g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/types": "5.13.0", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -1834,41 +1830,41 @@ } }, "node_modules/addons-linter": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-4.4.0.tgz", - "integrity": "sha512-2N8oo97y2w2MJX/bcvnSb5BG2s+0BOlOu/0Q06wp5bnyEwWbfKFOVX/CorivGkRteY0fbSUWvU55LXgIiLyH5w==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-4.9.0.tgz", + "integrity": "sha512-dknaL2zU9faJHpObJSFhh7RKM7S2uUImQL0I/tIny862wp8u6O7EhFu1ktdFRLO3NirHOTdn0366EcRrbAt1yg==", "dev": true, "dependencies": { - "@mdn/browser-compat-data": "4.0.11", + "@mdn/browser-compat-data": "4.1.6", "addons-moz-compare": "1.2.0", - "addons-scanner-utils": "6.1.0", + "addons-scanner-utils": "6.3.0", "ajv": "6.12.6", "ajv-merge-patch": "4.1.0", "chalk": "4.1.2", "cheerio": "1.0.0-rc.10", - "columnify": "1.5.4", + "columnify": "1.6.0", "common-tags": "1.8.2", "deepmerge": "4.2.2", - "eslint": "8.3.0", - "eslint-plugin-no-unsanitized": "4.0.0", - "eslint-visitor-keys": "3.1.0", - "espree": "9.1.0", + "eslint": "8.8.0", + "eslint-plugin-no-unsanitized": "4.0.1", + "eslint-visitor-keys": "3.2.0", + "espree": "9.3.0", "esprima": "4.0.1", "fluent-syntax": "0.13.0", "glob": "7.2.0", - "image-size": "1.0.0", + "image-size": "1.0.1", "is-mergeable-object": "1.1.1", "jed": "1.1.1", "os-locale": "5.0.0", - "pino": "7.4.0", - "postcss": "8.3.11", + "pino": "7.6.5", + "postcss": "8.4.6", "relaxed-json": "1.0.3", "semver": "7.3.5", "sha.js": "2.4.11", "source-map-support": "0.5.21", "tosource": "1.0.0", "upath": "2.0.1", - "yargs": "17.2.1", + "yargs": "17.3.1", "yauzl": "2.10.0" }, "bin": { @@ -1878,29 +1874,6 @@ "node": ">=12.21.0" } }, - "node_modules/addons-linter/node_modules/@humanwhocodes/config-array": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", - "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/addons-linter/node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/addons-linter/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -1914,24 +1887,23 @@ } }, "node_modules/addons-linter/node_modules/eslint": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", - "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz", + "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.0.4", - "@humanwhocodes/config-array": "^0.6.0", + "@eslint/eslintrc": "^1.0.5", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.0", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.1.0", + "eslint-visitor-keys": "^3.2.0", + "espree": "^9.3.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -1939,7 +1911,7 @@ "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.6.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", @@ -1950,9 +1922,7 @@ "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", "regexpp": "^3.2.0", - "semver": "^7.2.1", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", @@ -1969,18 +1939,18 @@ } }, "node_modules/addons-linter/node_modules/eslint-plugin-no-unsanitized": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.0.tgz", - "integrity": "sha512-Wguc3EZS+7BJ/Pgu8C1/G86eXHUIRz4ZHEhPlwVkS42MbHEyfh8Wm+pDRVAg73EE0TR//SbjkPlHr93yLJT10g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.1.tgz", + "integrity": "sha512-y/lAMWnPPC7RYuUdxlEL/XiCL8FehN9h9s3Kjqbp/Kv0i9NZs+IXSC2kS546Fa4Bumwy31HlVS/OdWX0Kxb5Xg==", "dev": true, "peerDependencies": { "eslint": "^6 || ^7 || ^8" } }, "node_modules/addons-linter/node_modules/eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -1990,13 +1960,22 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/addons-linter/node_modules/eslint-visitor-keys": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", + "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/addons-linter/node_modules/espree": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", - "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", + "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", "dev": true, "dependencies": { - "acorn": "^8.6.0", + "acorn": "^8.7.0", "acorn-jsx": "^5.3.1", "eslint-visitor-keys": "^3.1.0" }, @@ -2025,10 +2004,19 @@ "node": ">=10.13.0" } }, + "node_modules/addons-linter/node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/addons-linter/node_modules/image-size": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.0.tgz", - "integrity": "sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.1.tgz", + "integrity": "sha512-VAwkvNSNGClRw9mDHhc5Efax8PLlsOGcUTh0T/LIriC8vPA3U5PdqXWqkz406MoYHMKW8Uf9gWr05T/rYB44kQ==", "dev": true, "dependencies": { "queue": "6.0.2" @@ -2040,34 +2028,33 @@ "node": ">=12.0.0" } }, - "node_modules/addons-linter/node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "node_modules/addons-linter/node_modules/yargs": { - "version": "17.2.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz", - "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", + "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", "dev": true, "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.0.0" }, "engines": { "node": ">=12" } }, + "node_modules/addons-linter/node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/addons-moz-compare": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/addons-moz-compare/-/addons-moz-compare-1.2.0.tgz", @@ -2075,13 +2062,13 @@ "dev": true }, "node_modules/addons-scanner-utils": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-6.1.0.tgz", - "integrity": "sha512-O9rObtOmnMI1qBmHH2RlV+H3vAJWm594bbxbFYEkYeqSUkXd0Ohzjwnv1af4GFDlrBK6wB8TS0+/2X/zB8+LnA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-6.3.0.tgz", + "integrity": "sha512-sD4U7TX/NFDUYVheydrcpHH9xG3E0eVBFDn1RuUkGpqRyay3SsOU75Pl2lWAbCmeE0Mh9inU1Fwl7Mm1VRWkZw==", "dev": true, "dependencies": { "@types/yauzl": "2.9.2", - "common-tags": "1.8.0", + "common-tags": "1.8.2", "first-chunk-stream": "3.0.0", "strip-bom-stream": "4.0.0", "upath": "2.0.1", @@ -2089,9 +2076,9 @@ }, "peerDependencies": { "@types/download": "8.0.1", - "body-parser": "1.19.0", + "body-parser": "1.19.1", "download": "8.0.0", - "express": "4.17.1", + "express": "4.17.2", "safe-compare": "1.1.4" } }, @@ -2154,15 +2141,6 @@ "string-width": "^4.1.0" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -2333,9 +2311,9 @@ } }, "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, "dependencies": { "safer-buffer": "~2.1.0" @@ -2396,18 +2374,18 @@ "dev": true }, "node_modules/babel-jest": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.6.tgz", - "integrity": "sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", "dev": true, "dependencies": { - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.4.0", + "babel-preset-jest": "^27.5.1", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "slash": "^3.0.0" }, "engines": { @@ -2433,35 +2411,10 @@ "node": ">=8" } }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/babel-plugin-jest-hoist": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz", - "integrity": "sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", @@ -2497,12 +2450,12 @@ } }, "node_modules/babel-preset-jest": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz", - "integrity": "sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^27.4.0", + "babel-plugin-jest-hoist": "^27.5.1", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -2583,21 +2536,21 @@ "dev": true }, "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", + "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", "dev": true, "dependencies": { - "bytes": "3.1.0", + "bytes": "3.1.1", "content-type": "~1.0.4", "debug": "2.6.9", "depd": "~1.1.2", - "http-errors": "1.7.2", + "http-errors": "1.8.1", "iconv-lite": "0.4.24", "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "qs": "6.9.6", + "raw-body": "2.4.2", + "type-is": "~1.6.18" }, "engines": { "node": ">= 0.8" @@ -2831,9 +2784,9 @@ } }, "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", "dev": true, "engines": { "node": ">= 0.8" @@ -2985,10 +2938,16 @@ } }, "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -3134,44 +3093,17 @@ "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/columnify": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", - "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", "dev": true, "dependencies": { - "strip-ansi": "^3.0.0", + "strip-ansi": "^6.0.1", "wcwidth": "^1.0.0" - } - }, - "node_modules/columnify/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/columnify/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, "node_modules/combined-stream": { @@ -3193,9 +3125,9 @@ "dev": true }, "node_modules/common-tags": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, "engines": { "node": ">=4.0.0" @@ -3377,9 +3309,9 @@ } }, "node_modules/core-js": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.0.tgz", - "integrity": "sha512-WJeQqq6jOYgVgg4NrXKL0KLQhi0CT4ZOCvFL+3CQ5o7I6J8HkT5wd53EadMfqTDp1so/MT1J+w2ujhWcCJtN7w==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.0.tgz", + "integrity": "sha512-YUdI3fFu4TF/2WykQ2xzSiTQdldLB4KVuL9WeAy5XONZYt5Cun/fpQvctoKbCgvPhmzADeesTk/j2Rdx77AcKQ==", "dev": true, "hasInstallScript": true, "funding": { @@ -3406,6 +3338,15 @@ "node": ">= 0.10" } }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "dependencies": { + "node-fetch": "2.6.7" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -3529,9 +3470,9 @@ "dev": true }, "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -3969,9 +3910,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.937139", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.937139.tgz", - "integrity": "sha512-daj+rzR3QSxsPRy5vjjthn58axO8c11j58uY0lG5vvlJk/EiOdCWOptGdkXDjtuRHr78emKq0udHCXM4trhoDQ==", + "version": "0.0.960912", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.960912.tgz", + "integrity": "sha512-I3hWmV9rWHbdnUdmMKHF2NuYutIM2kXz2mdXW8ha7TbRlGTVs+PF+PsB5QWvpCek4Fy9B+msiispCfwlhG5Sqg==", "dev": true }, "node_modules/di": { @@ -3981,9 +3922,9 @@ "dev": true }, "node_modules/diff-sequences": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.4.0.tgz", - "integrity": "sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -4326,18 +4267,6 @@ } } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", @@ -4557,12 +4486,12 @@ } }, "node_modules/eslint": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz", - "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.10.0.tgz", + "integrity": "sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.0.5", + "@eslint/eslintrc": "^1.2.0", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -4570,10 +4499,10 @@ "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", + "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.2.0", - "espree": "^9.3.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -4817,9 +4746,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4838,9 +4767,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -4850,15 +4779,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", - "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/eslint/node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", @@ -4890,14 +4810,14 @@ } }, "node_modules/espree": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", - "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", "dev": true, "dependencies": { "acorn": "^8.7.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5050,33 +4970,33 @@ } }, "node_modules/expect": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.4.6.tgz", - "integrity": "sha512-1M/0kAALIaj5LaG66sFJTbRsWTADnylly82cu4bspI0nl+pgP4E6Bh/aqdHlTUjul06K7xQnnrAoqfxVU0+/ag==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", - "jest-get-type": "^27.4.0", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6" + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", + "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", "dev": true, "peer": true, "dependencies": { "accepts": "~1.3.7", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.19.1", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.4.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", @@ -5090,13 +5010,13 @@ "on-finished": "~2.3.0", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.9.6", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", "statuses": "~1.5.0", "type-is": "~1.6.18", "utils-merge": "1.0.1", @@ -5106,29 +5026,6 @@ "node": ">= 0.10.0" } }, - "node_modules/express/node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -5146,6 +5043,27 @@ "dev": true, "peer": true }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true + }, "node_modules/ext-list": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", @@ -5215,9 +5133,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -5227,7 +5145,7 @@ "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, "node_modules/fast-json-patch": { @@ -5261,20 +5179,14 @@ "dev": true }, "node_modules/fast-redact": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.0.2.tgz", - "integrity": "sha512-YN+CYfCVRVMUZOUPeinHNKgytM1wPI/C/UCLEi56EsY2dwwvI00kIJHJoI7pMVqGoMew8SMZ2SSfHKHULHXDsg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.1.tgz", + "integrity": "sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/fastify-warning": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/fastify-warning/-/fastify-warning-0.2.0.tgz", - "integrity": "sha512-s1EQguBw/9qtc1p/WTY4eq9WMRIACkj+HTcOIK1in4MV5aFaQC9ZCIt0dJ7pr5bIf4lPpHvAtP2ywpTNgs7hqw==", - "dev": true - }, "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -5834,20 +5746,19 @@ } }, "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.1.tgz", + "integrity": "sha512-XMzoDZbGZ37tufiv7g0N4F/zp3zkwdFtVbV3EHsVl1KQr4RPLfNoT068/97RPshz2J5xYNEjLKKBKaGHifBd3Q==", "dev": true, "dependencies": { - "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5862,6 +5773,18 @@ "node": ">= 4" } }, + "node_modules/globby/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/got": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", @@ -5912,9 +5835,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, "node_modules/graceful-readlink": { @@ -6086,27 +6009,21 @@ "peer": true }, "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, "dependencies": { "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "toidentifier": "1.0.1" }, "engines": { "node": ">= 0.6" } }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", @@ -6840,14 +6757,15 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", "dev": true, "dependencies": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" }, "engines": { @@ -6919,9 +6837,9 @@ } }, "node_modules/jasmine-core": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.0.0.tgz", - "integrity": "sha512-tq24OCqHElgU9KDpb/8O21r1IfotgjIzalfW9eCmRR40LZpvwXT68iariIyayMwi0m98RDt16aljdbwK0sBMmQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.0.1.tgz", + "integrity": "sha512-w+JDABxQCkxbGGxg+a2hUVZyqUS2JKngvIyLGu/xiw2ZwgsoSB0iiecLQsQORSeaKQ6iGrCyWG86RfNDuoA7Lg==", "dev": true }, "node_modules/jed": { @@ -6931,14 +6849,14 @@ "dev": true }, "node_modules/jest": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.7.tgz", - "integrity": "sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", "dev": true, "dependencies": { - "@jest/core": "^27.4.7", + "@jest/core": "^27.5.1", "import-local": "^3.0.2", - "jest-cli": "^27.4.7" + "jest-cli": "^27.5.1" }, "bin": { "jest": "bin/jest.js" @@ -6956,12 +6874,12 @@ } }, "node_modules/jest-changed-files": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.4.2.tgz", - "integrity": "sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "execa": "^5.0.0", "throat": "^6.0.1" }, @@ -6970,27 +6888,27 @@ } }, "node_modules/jest-circus": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.6.tgz", - "integrity": "sha512-UA7AI5HZrW4wRM72Ro80uRR2Fg+7nR0GESbSI/2M+ambbzVuA63mn5T1p3Z/wlhntzGpIG1xx78GP2YIkf6PhQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", "dev": true, "dependencies": { - "@jest/environment": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.4.6", + "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.6", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.6", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" @@ -7000,21 +6918,21 @@ } }, "node_modules/jest-cli": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.7.tgz", - "integrity": "sha512-zREYhvjjqe1KsGV15mdnxjThKNDgza1fhDT+iUsXWLCq3sxe9w5xnvyctcYVT5PcdLSjv7Y5dCwTS3FCF1tiuw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", "dev": true, "dependencies": { - "@jest/core": "^27.4.7", - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.4.7", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "prompts": "^2.0.1", "yargs": "^16.2.0" }, @@ -7034,33 +6952,35 @@ } }, "node_modules/jest-config": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.4.7.tgz", - "integrity": "sha512-xz/o/KJJEedHMrIY9v2ParIoYSrSVY6IVeE4z5Z3i101GoA5XgfbJz+1C8EYPsv7u7f39dS8F9v46BHDhn0vlw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, "dependencies": { "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.4.6", - "@jest/types": "^27.4.2", - "babel-jest": "^27.4.6", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-circus": "^27.4.6", - "jest-environment-jsdom": "^27.4.6", - "jest-environment-node": "^27.4.6", - "jest-get-type": "^27.4.0", - "jest-jasmine2": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.6", - "jest-runner": "^27.4.6", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "micromatch": "^4.0.4", - "pretty-format": "^27.4.6", - "slash": "^3.0.0" + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -7081,24 +7001,24 @@ "dev": true }, "node_modules/jest-diff": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.6.tgz", - "integrity": "sha512-zjaB0sh0Lb13VyPsd92V7HkqF6yKRH9vm33rwBt7rPYrpQvS1nCvlIy2pICbKta+ZjWngYLNn4cCK4nyZkjS/w==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^27.4.0", - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.6" + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-docblock": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.4.0.tgz", - "integrity": "sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", "dev": true, "dependencies": { "detect-newline": "^3.0.0" @@ -7108,33 +7028,33 @@ } }, "node_modules/jest-each": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.4.6.tgz", - "integrity": "sha512-n6QDq8y2Hsmn22tRkgAk+z6MCX7MeVlAzxmZDshfS2jLcaBlyhpF3tZSJLR+kXmh23GEvS0ojMR8i6ZeRvpQcA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "jest-get-type": "^27.4.0", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.6" + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-environment-jsdom": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.6.tgz", - "integrity": "sha512-o3dx5p/kHPbUlRvSNjypEcEtgs6LmvESMzgRFQE6c+Prwl2JLA4RZ7qAnxc5VM8kutsGRTB15jXeeSbJsKN9iA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", "dev": true, "dependencies": { - "@jest/environment": "^27.4.6", - "@jest/fake-timers": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.4.6", - "jest-util": "^27.4.2", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", "jsdom": "^16.6.0" }, "engines": { @@ -7142,17 +7062,17 @@ } }, "node_modules/jest-environment-node": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.6.tgz", - "integrity": "sha512-yfHlZ9m+kzTKZV0hVfhVu6GuDxKAYeFHrfulmy7Jxwsq4V7+ZK7f+c0XP/tbVDMQW7E4neG2u147hFkuVz0MlQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", "dev": true, "dependencies": { - "@jest/environment": "^27.4.6", - "@jest/fake-timers": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.4.6", - "jest-util": "^27.4.2" + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -7175,30 +7095,30 @@ } }, "node_modules/jest-get-type": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.4.0.tgz", - "integrity": "sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-haste-map": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.6.tgz", - "integrity": "sha512-0tNpgxg7BKurZeFkIOvGCkbmOHbLFf4LUQOxrQSMjvrQaQe3l6E8x6jYC1NuWkGo5WDdbr8FEzUxV2+LWNawKQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.4.0", - "jest-serializer": "^27.4.0", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.6", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "micromatch": "^4.0.4", "walker": "^1.0.7" }, @@ -7210,27 +7130,27 @@ } }, "node_modules/jest-jasmine2": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.6.tgz", - "integrity": "sha512-uAGNXF644I/whzhsf7/qf74gqy9OuhvJ0XYp8SDecX2ooGeaPnmJMjXjKt0mqh1Rl5dtRGxJgNrHlBQIBfS5Nw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", "dev": true, "dependencies": { - "@jest/environment": "^27.4.6", - "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.4.6", + "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.6", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.6", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", "throat": "^6.0.1" }, "engines": { @@ -7238,46 +7158,46 @@ } }, "node_modules/jest-leak-detector": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.6.tgz", - "integrity": "sha512-kkaGixDf9R7CjHm2pOzfTxZTQQQ2gHTIWKY/JZSiYTc90bZp8kSZnUMS3uLAfwTZwc0tcMRoEX74e14LG1WapA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", "dev": true, "dependencies": { - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.6" + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.6.tgz", - "integrity": "sha512-XD4PKT3Wn1LQnRAq7ZsTI0VRuEc9OrCPFiO1XL7bftTGmfNF0DcEwMHRgqiu7NGf8ZoZDREpGrCniDkjt79WbA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.4.6", - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.6" + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-message-util": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.6.tgz", - "integrity": "sha512-0p5szriFU0U74czRSFjH6RyS7UYIAkn/ntwMuOwTGWrQIOh5NzXXrq72LOqIkJKKvFbPq+byZKuBz78fjBERBA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.4.6", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -7286,12 +7206,12 @@ } }, "node_modules/jest-mock": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.6.tgz", - "integrity": "sha512-kvojdYRkst8iVSZ1EJ+vc1RRD9llueBjKzXzeCytH3dMM7zvPV/ULcfI2nr0v0VUgm3Bjt3hBCQvOeaBz+ZTHw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@types/node": "*" }, "engines": { @@ -7316,27 +7236,27 @@ } }, "node_modules/jest-regex-util": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.4.0.tgz", - "integrity": "sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-resolve": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.6.tgz", - "integrity": "sha512-SFfITVApqtirbITKFAO7jOVN45UgFzcRdQanOFzjnbd+CACDoyeX7206JyU92l4cRr73+Qy/TlW51+4vHGt+zw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" @@ -7346,45 +7266,44 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.6.tgz", - "integrity": "sha512-W85uJZcFXEVZ7+MZqIPCscdjuctruNGXUZ3OHSXOfXR9ITgbUKeHj+uGcies+0SsvI5GtUfTw4dY7u9qjTvQOw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", - "jest-regex-util": "^27.4.0", - "jest-snapshot": "^27.4.6" + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-runner": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.6.tgz", - "integrity": "sha512-IDeFt2SG4DzqalYBZRgbbPmpwV3X0DcntjezPBERvnhwKGWTW7C5pbbA5lVkmvgteeNfdd/23gwqv3aiilpYPg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", "dev": true, "dependencies": { - "@jest/console": "^27.4.6", - "@jest/environment": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.4.0", - "jest-environment-jsdom": "^27.4.6", - "jest-environment-node": "^27.4.6", - "jest-haste-map": "^27.4.6", - "jest-leak-detector": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-resolve": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.6", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "source-map-support": "^0.5.6", "throat": "^6.0.1" }, @@ -7393,31 +7312,31 @@ } }, "node_modules/jest-runtime": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.6.tgz", - "integrity": "sha512-eXYeoR/MbIpVDrjqy5d6cGCFOYBFFDeKaNWqTp0h6E74dK0zLHzASQXJpl5a2/40euBmKnprNLJ0Kh0LCndnWQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.4.6", - "@jest/fake-timers": "^27.4.6", - "@jest/globals": "^27.4.6", - "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "execa": "^5.0.0", "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-mock": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -7426,22 +7345,22 @@ } }, "node_modules/jest-serializer": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.4.0.tgz", - "integrity": "sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", "dev": true, "dependencies": { "@types/node": "*", - "graceful-fs": "^4.2.4" + "graceful-fs": "^4.2.9" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-snapshot": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.6.tgz", - "integrity": "sha512-fafUCDLQfzuNP9IRcEqaFAMzEe7u5BF7mude51wyWv7VRex60WznZIC7DfKTgSIlJa8aFzYmXclmN328aqSDmQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", "dev": true, "dependencies": { "@babel/core": "^7.7.2", @@ -7449,22 +7368,22 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.4.6", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.4.6", - "jest-get-type": "^27.4.0", - "jest-haste-map": "^27.4.6", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-util": "^27.4.2", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "natural-compare": "^1.4.0", - "pretty-format": "^27.4.6", + "pretty-format": "^27.5.1", "semver": "^7.3.2" }, "engines": { @@ -7472,16 +7391,16 @@ } }, "node_modules/jest-util": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz", - "integrity": "sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" }, "engines": { @@ -7495,17 +7414,17 @@ "dev": true }, "node_modules/jest-validate": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.6.tgz", - "integrity": "sha512-872mEmCPVlBqbA5dToC57vA3yJaMRfIdpCoD3cyHWJOMx+SJwLNw0I71EkWs41oza/Er9Zno9XuTkRYCPDUJXQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.4.0", + "jest-get-type": "^27.5.1", "leven": "^3.1.0", - "pretty-format": "^27.4.6" + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -7524,17 +7443,17 @@ } }, "node_modules/jest-watcher": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.6.tgz", - "integrity": "sha512-yKQ20OMBiCDigbD0quhQKLkBO+ObGN79MO4nT7YaCuQ5SM+dkBNWE8cZX0FjU6czwMvWw6StWbe+Wv4jJPJ+fw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", "dev": true, "dependencies": { - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.4.2", + "jest-util": "^27.5.1", "string-length": "^4.0.1" }, "engines": { @@ -7542,9 +7461,9 @@ } }, "node_modules/jest-worker": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", - "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "dependencies": { "@types/node": "*", @@ -7641,9 +7560,9 @@ } }, "node_modules/jsdom/node_modules/ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", "dev": true, "engines": { "node": ">=8.3.0" @@ -7849,15 +7768,15 @@ } }, "node_modules/karma": { - "version": "6.3.16", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.16.tgz", - "integrity": "sha512-nEU50jLvDe5yvXqkEJRf8IuvddUkOY2x5Xc4WXHz6dxINgGDrgD2uqQWeVrJs4hbfNaotn+HQ1LZJ4yOXrL7xQ==", + "version": "6.3.17", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.17.tgz", + "integrity": "sha512-2TfjHwrRExC8yHoWlPBULyaLwAFmXmxQrcuFImt/JsAsSZu1uOWTZ1ZsWjqQtWpHLiatJOHL5jFjXSJIgCd01g==", "dev": true, "dependencies": { + "@colors/colors": "1.5.0", "body-parser": "^1.19.0", "braces": "^3.0.2", "chokidar": "^3.5.1", - "colors": "1.4.0", "connect": "^3.7.0", "di": "^0.0.1", "dom-serialize": "^2.2.1", @@ -7908,13 +7827,13 @@ } }, "node_modules/karma-coverage": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.1.0.tgz", - "integrity": "sha512-uIejpnArNFQIovB6EPsKO/T4XofELdJWXcA2ADXztFlKhHbr0Ws6ba7wKTMVWsIhEs4iJxdhQkCQrkkhFJSZCw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", + "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.1", "istanbul-reports": "^3.0.5", @@ -8247,23 +8166,6 @@ "node": ">=8.0" } }, - "node_modules/log4js/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", @@ -8334,9 +8236,9 @@ } }, "node_modules/malevic": { - "version": "0.18.6", - "resolved": "https://registry.npmjs.org/malevic/-/malevic-0.18.6.tgz", - "integrity": "sha512-Um4XRYJpVDhKjRRteiuHdDmcNbI5gX7URsXC6G+5Tk0Dai2W2RB39kg5C/M32IezNPudT+YsgApBh8JG6fIWrA==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/malevic/-/malevic-0.19.1.tgz", + "integrity": "sha512-Om8ryj2MufYydPSNM6DbBYQCCPlp5mgtOrrgQKw6tCZwUIXPFsyfM3d5S/2RIEAsQDYYZpIctM+SX55Fkv5r4w==", "dev": true }, "node_modules/map-age-cleaner": { @@ -8633,9 +8535,9 @@ "optional": true }, "node_modules/nanoid": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", - "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -8698,15 +8600,23 @@ } }, "node_modules/node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, "dependencies": { "whatwg-url": "^5.0.0" }, "engines": { "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/node-fetch/node_modules/tr46": { @@ -9426,17 +9336,16 @@ } }, "node_modules/pino": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-7.4.0.tgz", - "integrity": "sha512-qEHLtKcmYcid6s2qjlGTxaLe9Lq1IiGmd74IZb9Obi/FRTaA+ymb8FD/cmOIL4vt6ug/EtmhGwxZbiGhI+7cuQ==", + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/pino/-/pino-7.6.5.tgz", + "integrity": "sha512-38tAwlJ7HevMENHD5FZE+yxSlAH5Wg3FoOjbB3MX2j3/kgpOEkmDHhTVKkecR57qxD5doHo2yi9nac94gqqbiQ==", "dev": true, "dependencies": { "fast-redact": "^3.0.0", - "fastify-warning": "^0.2.0", - "get-caller-file": "^2.0.5", "on-exit-leak-free": "^0.2.0", "pino-abstract-transport": "v0.5.0", "pino-std-serializers": "^4.0.0", + "process-warning": "^1.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.1.0", "safe-stable-stringify": "^2.1.0", @@ -9485,14 +9394,14 @@ } }, "node_modules/postcss": { - "version": "8.3.11", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", - "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz", + "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==", "dev": true, "dependencies": { - "nanoid": "^3.1.30", + "nanoid": "^3.2.0", "picocolors": "^1.0.0", - "source-map-js": "^0.6.2" + "source-map-js": "^1.0.2" }, "engines": { "node": "^10 || ^12 || >=14" @@ -9533,9 +9442,9 @@ } }, "node_modules/pretty-format": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.6.tgz", - "integrity": "sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "dependencies": { "ansi-regex": "^5.0.1", @@ -9564,6 +9473,12 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "node_modules/process-warning": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", + "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==", + "dev": true + }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -9651,49 +9566,28 @@ } }, "node_modules/puppeteer-core": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.0.1.tgz", - "integrity": "sha512-aKTN7Rtu7zJuhadihaxXnbC4fRPe/Q6VR8u6krJk3dnmTL7am01hl3XG1x9nNCkxi5fA4+e4ba9QmTvFiqGxSA==", + "version": "13.4.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.4.1.tgz", + "integrity": "sha512-AgRIWgIkUXXnbvoRhyveZnyoEYr3wTunSk2/evOfWvFs65GUzsrxnUTUSLgPM4MRshCQmRABW7qE1hDN1AD7nA==", "dev": true, "dependencies": { - "debug": "4.3.2", - "devtools-protocol": "0.0.937139", + "cross-fetch": "3.1.5", + "debug": "4.3.3", + "devtools-protocol": "0.0.960912", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.5", "pkg-dir": "4.2.0", "progress": "2.0.3", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", "tar-fs": "2.1.1", "unbzip2-stream": "1.4.3", - "ws": "8.2.3" + "ws": "8.5.0" }, "engines": { "node": ">=10.18.1" } }, - "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/qjobs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", @@ -9704,12 +9598,15 @@ } }, "node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", "dev": true, "engines": { "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/query-string": { @@ -9772,13 +9669,13 @@ } }, "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", "dev": true, "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.1", + "http-errors": "1.8.1", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -9864,9 +9761,9 @@ "dev": true }, "node_modules/regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -10049,9 +9946,9 @@ } }, "node_modules/request/node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true, "engines": { "node": ">=0.6" @@ -10188,9 +10085,9 @@ } }, "node_modules/rollup": { - "version": "2.64.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.64.0.tgz", - "integrity": "sha512-+c+lbw1lexBKSMb1yxGDVfJ+vchJH3qLbmavR+awDinTDA2C5Ug9u7lkOzj62SCu0PKUExsW36tpgW7Fmpn3yQ==", + "version": "2.69.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.69.0.tgz", + "integrity": "sha512-kjER91tHyek8gAkuz7+558vSnTQ+pITEok1P0aNOS45ZXyngaqPsXJmSel4QPQnJo7EJMjXUU1/GErWkWiKORg==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -10396,9 +10293,9 @@ } }, "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", "dev": true, "peer": true, "dependencies": { @@ -10409,9 +10306,9 @@ "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "1.8.1", "mime": "1.6.0", - "ms": "2.1.1", + "ms": "2.1.3", "on-finished": "~2.3.0", "range-parser": "~1.2.1", "statuses": "~1.5.0" @@ -10451,23 +10348,23 @@ } }, "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "peer": true }, "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", "dev": true, "peer": true, "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.17.2" }, "engines": { "node": ">= 0.8.0" @@ -10483,9 +10380,9 @@ } }, "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "node_modules/sha.js": { @@ -10549,20 +10446,20 @@ } }, "node_modules/sign-addon": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-3.9.0.tgz", - "integrity": "sha512-a8IzM3jNPSHcf2wSkhLgME4QrIe+rKTb8y/qYwGGzby5ktODAH+WBsKIgGZ9p5d2mpppPwbNEsA+YzcL117bbA==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-3.11.0.tgz", + "integrity": "sha512-fcK2WzkMb8e8E9kvuccy+mrBTT81iR+1CowHLU594Elr4E9E9zZFr3itGlL0OoXcRouKmvt7rpXzoARu++tXRQ==", "dev": true, "dependencies": { - "common-tags": "1.8.0", - "core-js": "3.18.0", + "common-tags": "1.8.2", + "core-js": "3.21.0", "deepcopy": "2.1.0", "es6-error": "4.1.1", "es6-promisify": "7.0.0", "jsonwebtoken": "8.5.1", "mz": "2.7.0", "request": "2.88.2", - "source-map-support": "0.5.20", + "source-map-support": "0.5.21", "stream-to-promise": "3.0.0" } }, @@ -10625,9 +10522,9 @@ } }, "node_modules/sonic-boom": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.4.2.tgz", - "integrity": "sha512-zlOmAKFLJzTI+MbvmkWhnOOJ++NYo0Iy7F93ARNPmvZvpWG2l8Ff3uwM3CkpHqRw8v3pcRROScM5E+vbeTeOKw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.6.0.tgz", + "integrity": "sha512-6xYZFRmDEtxGqfOKcDQ4cPLrNa0SPEDI+wlzDAHowXE6YV42NeXqg9mP2KkiM8JVu3lHfZ2iQKYlGOz+kTpphg==", "dev": true, "dependencies": { "atomic-sleep": "^1.0.0" @@ -10682,18 +10579,18 @@ } }, "node_modules/source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", @@ -10745,9 +10642,9 @@ "dev": true }, "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, "dependencies": { "asn1": "~0.2.3", @@ -11142,9 +11039,9 @@ } }, "node_modules/thread-stream": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.13.0.tgz", - "integrity": "sha512-kTMZeX4Dzlb1zZ00/01aerGaTw2i8NE4sWF0TvF1uXewRhCiUjCvatQkvxIvFqauWG2ADFS2Wpd3qBeYL9i3dg==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.13.2.tgz", + "integrity": "sha512-woZFt0cLFkPdhsa+IGpRo1jiSouaHxMIljzTgt30CMjBWoUYbbcHqnunW5Yv+BXko9H05MVIcxMipI3Jblallw==", "dev": true, "dependencies": { "real-require": "^0.1.0" @@ -11228,9 +11125,9 @@ } }, "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "engines": { "node": ">=0.6" @@ -11487,9 +11384,9 @@ } }, "node_modules/typescript": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", - "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", + "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -11780,14 +11677,14 @@ } }, "node_modules/web-ext": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-6.6.0.tgz", - "integrity": "sha512-ja9kuCleKQLesUEx+tEl6ByxwVF1CVCjSc3V0ag78S40NWDRTBJhXwc4c+qlyZ0h/XefXc3waxnsq1izUBe/Nw==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-6.7.0.tgz", + "integrity": "sha512-QN+ufUPMNhLbrEqwFDOuoHy4m2OOPAp8NDMKJaWIByZRh8VPH+JoJ6/NAaIEcs9TPKnkA2018TNIJAfYN9EerA==", "dev": true, "dependencies": { "@babel/runtime": "7.13.9", "@devicefarmer/adbkit": "2.11.3", - "addons-linter": "4.4.0", + "addons-linter": "4.9.0", "bunyan": "1.8.15", "camelcase": "6.2.0", "chrome-launcher": "0.15.0", @@ -11805,7 +11702,7 @@ "node-notifier": "9.0.0", "open": "7.4.2", "parse-json": "5.2.0", - "sign-addon": "3.9.0", + "sign-addon": "3.11.0", "source-map-support": "0.5.20", "strip-bom": "4.0.0", "strip-json-comments": "3.1.1", @@ -11871,6 +11768,16 @@ "which": "^2.0.2" } }, + "node_modules/web-ext/node_modules/source-map-support": { + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/web-ext/node_modules/ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", @@ -12030,9 +11937,9 @@ } }, "node_modules/ws": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", - "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -12647,6 +12554,12 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true + }, "@devicefarmer/adbkit": { "version": "2.11.3", "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit/-/adbkit-2.11.3.tgz", @@ -12695,31 +12608,20 @@ } }, "@eslint/eslintrc": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", - "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.0.tgz", + "integrity": "sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.2.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" } }, "@humanwhocodes/config-array": { @@ -12786,49 +12688,49 @@ "dev": true }, "@jest/console": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.4.6.tgz", - "integrity": "sha512-jauXyacQD33n47A44KrlOVeiXHEXDqapSdfb9kTekOchH/Pd18kBIO1+xxJQRLuG+LUuljFCwTG92ra4NW7SpA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.4.6", - "jest-util": "^27.4.2", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0" } }, "@jest/core": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.4.7.tgz", - "integrity": "sha512-n181PurSJkVMS+kClIFSX/LLvw9ExSb+4IMtD6YnfxZVerw9ANYtW0bPrm0MJu2pfe9SY9FJ9FtQ+MdZkrZwjg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, "requires": { - "@jest/console": "^27.4.6", - "@jest/reporters": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.4.2", - "jest-config": "^27.4.7", - "jest-haste-map": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.6", - "jest-resolve-dependencies": "^27.4.6", - "jest-runner": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", - "jest-watcher": "^27.4.6", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", "micromatch": "^4.0.4", "rimraf": "^3.0.0", "slash": "^3.0.0", @@ -12836,147 +12738,126 @@ } }, "@jest/environment": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.4.6.tgz", - "integrity": "sha512-E6t+RXPfATEEGVidr84WngLNWZ8ffCPky8RqqRK6u1Bn0LK92INe0MDttyPl/JOzaq92BmDzOeuqk09TvM22Sg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, "requires": { - "@jest/fake-timers": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.4.6" + "jest-mock": "^27.5.1" } }, "@jest/fake-timers": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.6.tgz", - "integrity": "sha512-mfaethuYF8scV8ntPpiVGIHQgS0XIALbpY2jt2l7wb/bvq4Q5pDLk4EP4D7SAvYT1QrPOPVZAtbdGAOOyIgs7A==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^27.4.6", - "jest-mock": "^27.4.6", - "jest-util": "^27.4.2" + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" } }, "@jest/globals": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.4.6.tgz", - "integrity": "sha512-kAiwMGZ7UxrgPzu8Yv9uvWmXXxsy0GciNejlHvfPIfWkSxChzv6bgTS3YqBkGuHcis+ouMFI2696n2t+XYIeFw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, "requires": { - "@jest/environment": "^27.4.6", - "@jest/types": "^27.4.2", - "expect": "^27.4.6" + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" } }, "@jest/reporters": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.6.tgz", - "integrity": "sha512-+Zo9gV81R14+PSq4wzee4GC2mhAN9i9a7qgJWL90Gpx7fHYkWpTBvwWNZUXvJByYR9tAVBdc8VxDWqfJyIUrIQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", "glob": "^7.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.4.6", - "jest-resolve": "^27.4.6", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.6", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", "terminal-link": "^2.0.0", "v8-to-istanbul": "^8.1.0" - }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, "@jest/source-map": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.4.0.tgz", - "integrity": "sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, "requires": { "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "source-map": "^0.6.0" } }, "@jest/test-result": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.6.tgz", - "integrity": "sha512-fi9IGj3fkOrlMmhQqa/t9xum8jaJOOAi/lZlm6JXSc55rJMXKHxNDN1oCP39B0/DhNOa2OMupF9BcKZnNtXMOQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, "requires": { - "@jest/console": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.6.tgz", - "integrity": "sha512-3GL+nsf6E1PsyNsJuvPyIz+DwFuCtBdtvPpm/LMXVkBJbdFvQYCDpccYT56qq5BGniXWlE81n2qk1sdXfZebnw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", "dev": true, "requires": { - "@jest/test-result": "^27.4.6", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", - "jest-runtime": "^27.4.6" + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" } }, "@jest/transform": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.4.6.tgz", - "integrity": "sha512-9MsufmJC8t5JTpWEQJ0OcOOAXaH5ioaIX6uHVBLBMoCZPfKKQF+EqP8kACAvCZ0Y1h2Zr3uOccg8re+Dr5jxyw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-util": "^27.4.2", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -12985,9 +12866,9 @@ } }, "@jest/types": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.4.2.tgz", - "integrity": "sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -12998,9 +12879,9 @@ } }, "@mdn/browser-compat-data": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.11.tgz", - "integrity": "sha512-rmQPBLe3/DuJy0Bcr1KNuSiIcgV67R2AeLxagKMQTI0R8F9lLC894wJRYhA5ytV0CIi7dzxILqdFeuVbqrkoCA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.1.6.tgz", + "integrity": "sha512-JbtcHGODAlkOT6eDV2rCyOguW3+o34ExMD9DOki6kxzeyN3IBtZ9PI0FlbKeD77Bm5U0UG5Heo4qnNbSajXUnw==", "dev": true }, "@nodelib/fs.scandir": { @@ -13063,9 +12944,9 @@ } }, "@rollup/plugin-replace": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-3.0.1.tgz", - "integrity": "sha512-989J5oRzf3mm0pO/0djTijdfEh9U3n63BIXN5X7T4U9BP+fN4oxQ6DvDuBvFaHA6scaHQRclqmKQEkBhB7k7Hg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-4.0.0.tgz", + "integrity": "sha512-+rumQFiaNac9y64OHtkHGmdjm7us9bo1PlbgQfdihQtuNxzjpaB064HbRnewUOggLQxVCCyINfStkgmBeQpv1g==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -13092,9 +12973,9 @@ } }, "@rollup/plugin-typescript": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.0.tgz", - "integrity": "sha512-I5FpSvLbtAdwJ+naznv+B4sjXZUcIvLLceYpITAn7wAP8W0wqc5noLdGIp9HGVntNhRWXctwPYrSSFQxtl0FPA==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.1.tgz", + "integrity": "sha512-84rExe3ICUBXzqNX48WZV2Jp3OddjTMX97O2Py6D1KJaGSwWp0mDHXj+bCGNJqWHIEKDIT2U0sDjhP4czKi6cA==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -13218,9 +13099,9 @@ } }, "@types/chrome": { - "version": "0.0.176", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.176.tgz", - "integrity": "sha512-LOveFOMIUhMJjvRzZv5whGBpncP/gdJ4hcxeAqg94wGi6CyKaCmLgFSofgItf85GuLTl/0BQ6J/Y1e8BqZWfEg==", + "version": "0.0.179", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.179.tgz", + "integrity": "sha512-60zloNApIf88RwiG3Q7E+4NBG+znchhWmcaEVAAhUZahQbft5LWBzij4sinsfpAwbTtuWdFfUSpZsFhXTEFPVw==", "dev": true, "requires": { "@types/filesystem": "*", @@ -13360,12 +13241,12 @@ "dev": true }, "@types/jest": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz", - "integrity": "sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==", + "version": "27.4.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", + "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", "dev": true, "requires": { - "jest-diff": "^27.0.0", + "jest-matcher-utils": "^27.0.0", "pretty-format": "^27.0.0" } }, @@ -13382,13 +13263,13 @@ "dev": true }, "@types/karma": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/@types/karma/-/karma-6.3.2.tgz", - "integrity": "sha512-ZQfjGEfEV57I3o6Y5iK1+6aoQDguxmCBeQ0H8r9dasRTFn2Ohqgvx44FSPdY+R+/VUVtr8lvAYaRFzdNrQFvww==", + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@types/karma/-/karma-6.3.3.tgz", + "integrity": "sha512-nRMec4mTCt+tkpRqh5/pAxmnjzEgAaalIq7mdfLFH88gSRC8+bxejLiSjHMMT/vHIhJHqg4GPIGCnCFbwvDRww==", "dev": true, "requires": { "@types/node": "*", - "log4js": "^6.3.0" + "log4js": "^6.4.1" } }, "@types/karma-coverage": { @@ -13408,9 +13289,9 @@ "dev": true }, "@types/node": { - "version": "17.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.9.tgz", - "integrity": "sha512-5dNBXu/FOER+EXnyah7rn8xlNrfMOQb/qXnw4NQgLkCygKBKhdmF/CA5oXVOKZLBEahw8s2WP9LxIcN/oDDRgQ==", + "version": "17.0.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", + "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", "dev": true }, "@types/offscreencanvas": { @@ -13420,9 +13301,9 @@ "dev": true }, "@types/prettier": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.3.tgz", - "integrity": "sha512-QzSuZMBuG5u8HqYz01qtMdg/Jfctlnvj1z/lYnIDXs/golxw0fxtRAHd9KrzjR7Yxz1qVeI00o0kiO3PmVdJ9w==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", + "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", "dev": true }, "@types/resolve": { @@ -13465,14 +13346,14 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.1.tgz", - "integrity": "sha512-Xv9tkFlyD4MQGpJgTo6wqDqGvHIRmRgah/2Sjz1PUnJTawjHWIwBivUE9x0QtU2WVii9baYgavo/bHjrZJkqTw==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.13.0.tgz", + "integrity": "sha512-vLktb2Uec81fxm/cfz2Hd6QaWOs8qdmVAZXLdOBX6JFJDhf6oDZpMzZ4/LZ6SFM/5DgDcxIMIvy3F+O9yZBuiQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "5.9.1", - "@typescript-eslint/scope-manager": "5.9.1", - "@typescript-eslint/type-utils": "5.9.1", + "@typescript-eslint/scope-manager": "5.13.0", + "@typescript-eslint/type-utils": "5.13.0", + "@typescript-eslint/utils": "5.13.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -13489,81 +13370,103 @@ } } }, - "@typescript-eslint/experimental-utils": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.1.tgz", - "integrity": "sha512-cb1Njyss0mLL9kLXgS/eEY53SZQ9sT519wpX3i+U457l2UXRDuo87hgKfgRazmu9/tQb0x2sr3Y0yrU+Zz0y+w==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.9.1", - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/typescript-estree": "5.9.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - } - }, "@typescript-eslint/parser": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.1.tgz", - "integrity": "sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.13.0.tgz", + "integrity": "sha512-GdrU4GvBE29tm2RqWOM0P5QfCtgCyN4hXICj/X9ibKED16136l9ZpoJvCL5pSKtmJzA+NRDzQ312wWMejCVVfg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.9.1", - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/typescript-estree": "5.9.1", + "@typescript-eslint/scope-manager": "5.13.0", + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/typescript-estree": "5.13.0", "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz", - "integrity": "sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.13.0.tgz", + "integrity": "sha512-T4N8UvKYDSfVYdmJq7g2IPJYCRzwtp74KyDZytkR4OL3NRupvswvmJQJ4CX5tDSurW2cvCc1Ia1qM7d0jpa7IA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/visitor-keys": "5.9.1" + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/visitor-keys": "5.13.0" } }, "@typescript-eslint/type-utils": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.1.tgz", - "integrity": "sha512-tRSpdBnPRssjlUh35rE9ug5HrUvaB9ntREy7gPXXKwmIx61TNN7+l5YKgi1hMKxo5NvqZCfYhA5FvyuJG6X6vg==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.13.0.tgz", + "integrity": "sha512-/nz7qFizaBM1SuqAKb7GLkcNn2buRdDgZraXlkhz+vUGiN1NZ9LzkA595tHHeduAiS2MsHqMNhE2zNzGdw43Yg==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "5.9.1", + "@typescript-eslint/utils": "5.13.0", "debug": "^4.3.2", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.1.tgz", - "integrity": "sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.13.0.tgz", + "integrity": "sha512-LmE/KO6DUy0nFY/OoQU0XelnmDt+V8lPQhh8MOVa7Y5k2gGRd6U9Kp3wAjhB4OHg57tUO0nOnwYQhRRyEAyOyg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.1.tgz", - "integrity": "sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.13.0.tgz", + "integrity": "sha512-Q9cQow0DeLjnp5DuEDjLZ6JIkwGx3oYZe+BfcNuw/POhtpcxMTy18Icl6BJqTSd+3ftsrfuVb7mNHRZf7xiaNA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.9.1", - "@typescript-eslint/visitor-keys": "5.9.1", + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/visitor-keys": "5.13.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", "semver": "^7.3.5", "tsutils": "^3.21.0" + }, + "dependencies": { + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + } + } + }, + "@typescript-eslint/utils": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.13.0.tgz", + "integrity": "sha512-+9oHlPWYNl6AwwoEt5TQryEHwiKRVjz7Vk6kaBeD3/kwHE5YqTGHtm/JZY8Bo9ITOeKutFaXnBlMgSATMJALUQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.13.0", + "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/typescript-estree": "5.13.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.1.tgz", - "integrity": "sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.13.0.tgz", + "integrity": "sha512-HLKEAS/qA1V7d9EzcpLFykTePmOQqOFim8oCvhY3pZgQ8Hi38hYpHd9e5GN6nQBFQNecNhws5wkS9Y5XIO0s/g==", "dev": true, "requires": { - "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/types": "5.13.0", "eslint-visitor-keys": "^3.0.0" } }, @@ -13621,61 +13524,44 @@ "dev": true }, "addons-linter": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-4.4.0.tgz", - "integrity": "sha512-2N8oo97y2w2MJX/bcvnSb5BG2s+0BOlOu/0Q06wp5bnyEwWbfKFOVX/CorivGkRteY0fbSUWvU55LXgIiLyH5w==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-4.9.0.tgz", + "integrity": "sha512-dknaL2zU9faJHpObJSFhh7RKM7S2uUImQL0I/tIny862wp8u6O7EhFu1ktdFRLO3NirHOTdn0366EcRrbAt1yg==", "dev": true, "requires": { - "@mdn/browser-compat-data": "4.0.11", + "@mdn/browser-compat-data": "4.1.6", "addons-moz-compare": "1.2.0", - "addons-scanner-utils": "6.1.0", + "addons-scanner-utils": "6.3.0", "ajv": "6.12.6", "ajv-merge-patch": "4.1.0", "chalk": "4.1.2", "cheerio": "1.0.0-rc.10", - "columnify": "1.5.4", + "columnify": "1.6.0", "common-tags": "1.8.2", "deepmerge": "4.2.2", - "eslint": "8.3.0", - "eslint-plugin-no-unsanitized": "4.0.0", - "eslint-visitor-keys": "3.1.0", - "espree": "9.1.0", + "eslint": "8.8.0", + "eslint-plugin-no-unsanitized": "4.0.1", + "eslint-visitor-keys": "3.2.0", + "espree": "9.3.0", "esprima": "4.0.1", "fluent-syntax": "0.13.0", "glob": "7.2.0", - "image-size": "1.0.0", + "image-size": "1.0.1", "is-mergeable-object": "1.1.1", "jed": "1.1.1", "os-locale": "5.0.0", - "pino": "7.4.0", - "postcss": "8.3.11", + "pino": "7.6.5", + "postcss": "8.4.6", "relaxed-json": "1.0.3", "semver": "7.3.5", "sha.js": "2.4.11", "source-map-support": "0.5.21", "tosource": "1.0.0", "upath": "2.0.1", - "yargs": "17.2.1", + "yargs": "17.3.1", "yauzl": "2.10.0" }, "dependencies": { - "@humanwhocodes/config-array": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", - "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true - }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -13683,24 +13569,23 @@ "dev": true }, "eslint": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", - "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz", + "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.0.4", - "@humanwhocodes/config-array": "^0.6.0", + "@eslint/eslintrc": "^1.0.5", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.0", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.1.0", + "eslint-visitor-keys": "^3.2.0", + "espree": "^9.3.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -13708,7 +13593,7 @@ "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.6.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", @@ -13719,9 +13604,7 @@ "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", "regexpp": "^3.2.0", - "semver": "^7.2.1", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", @@ -13729,29 +13612,35 @@ } }, "eslint-plugin-no-unsanitized": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.0.tgz", - "integrity": "sha512-Wguc3EZS+7BJ/Pgu8C1/G86eXHUIRz4ZHEhPlwVkS42MbHEyfh8Wm+pDRVAg73EE0TR//SbjkPlHr93yLJT10g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.1.tgz", + "integrity": "sha512-y/lAMWnPPC7RYuUdxlEL/XiCL8FehN9h9s3Kjqbp/Kv0i9NZs+IXSC2kS546Fa4Bumwy31HlVS/OdWX0Kxb5Xg==", "dev": true, "requires": {} }, "eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, + "eslint-visitor-keys": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", + "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", + "dev": true + }, "espree": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", - "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", + "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", "dev": true, "requires": { - "acorn": "^8.6.0", + "acorn": "^8.7.0", "acorn-jsx": "^5.3.1", "eslint-visitor-keys": "^3.1.0" } @@ -13771,39 +13660,41 @@ "is-glob": "^4.0.3" } }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, "image-size": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.0.tgz", - "integrity": "sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.1.tgz", + "integrity": "sha512-VAwkvNSNGClRw9mDHhc5Efax8PLlsOGcUTh0T/LIriC8vPA3U5PdqXWqkz406MoYHMKW8Uf9gWr05T/rYB44kQ==", "dev": true, "requires": { "queue": "6.0.2" } }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "yargs": { - "version": "17.2.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz", - "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", + "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", "dev": true, "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.0.0" } + }, + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true } } }, @@ -13814,13 +13705,13 @@ "dev": true }, "addons-scanner-utils": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-6.1.0.tgz", - "integrity": "sha512-O9rObtOmnMI1qBmHH2RlV+H3vAJWm594bbxbFYEkYeqSUkXd0Ohzjwnv1af4GFDlrBK6wB8TS0+/2X/zB8+LnA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-6.3.0.tgz", + "integrity": "sha512-sD4U7TX/NFDUYVheydrcpHH9xG3E0eVBFDn1RuUkGpqRyay3SsOU75Pl2lWAbCmeE0Mh9inU1Fwl7Mm1VRWkZw==", "dev": true, "requires": { "@types/yauzl": "2.9.2", - "common-tags": "1.8.0", + "common-tags": "1.8.2", "first-chunk-stream": "3.0.0", "strip-bom-stream": "4.0.0", "upath": "2.0.1", @@ -13873,12 +13764,6 @@ "string-width": "^4.1.0" } }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, "ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -14002,9 +13887,9 @@ "dev": true }, "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, "requires": { "safer-buffer": "~2.1.0" @@ -14053,18 +13938,18 @@ "dev": true }, "babel-jest": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.6.tgz", - "integrity": "sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", "dev": true, "requires": { - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.4.0", + "babel-preset-jest": "^27.5.1", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "slash": "^3.0.0" } }, @@ -14079,33 +13964,12 @@ "@istanbuljs/schema": "^0.1.2", "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" - }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, "babel-plugin-jest-hoist": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz", - "integrity": "sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", "dev": true, "requires": { "@babel/template": "^7.3.3", @@ -14135,12 +13999,12 @@ } }, "babel-preset-jest": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz", - "integrity": "sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^27.4.0", + "babel-plugin-jest-hoist": "^27.5.1", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -14195,21 +14059,21 @@ "dev": true }, "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", + "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", "dev": true, "requires": { - "bytes": "3.1.0", + "bytes": "3.1.1", "content-type": "~1.0.4", "debug": "2.6.9", "depd": "~1.1.2", - "http-errors": "1.7.2", + "http-errors": "1.8.1", "iconv-lite": "0.4.24", "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "qs": "6.9.6", + "raw-body": "2.4.2", + "type-is": "~1.6.18" }, "dependencies": { "debug": { @@ -14387,9 +14251,9 @@ } }, "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", "dev": true }, "cacheable-request": { @@ -14503,9 +14367,9 @@ } }, "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { "anymatch": "~3.1.2", @@ -14621,37 +14485,14 @@ "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true - }, "columnify": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", - "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", "dev": true, "requires": { - "strip-ansi": "^3.0.0", + "strip-ansi": "^6.0.1", "wcwidth": "^1.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } } }, "combined-stream": { @@ -14670,9 +14511,9 @@ "dev": true }, "common-tags": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true }, "component-emitter": { @@ -14825,9 +14666,9 @@ } }, "core-js": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.0.tgz", - "integrity": "sha512-WJeQqq6jOYgVgg4NrXKL0KLQhi0CT4ZOCvFL+3CQ5o7I6J8HkT5wd53EadMfqTDp1so/MT1J+w2ujhWcCJtN7w==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.0.tgz", + "integrity": "sha512-YUdI3fFu4TF/2WykQ2xzSiTQdldLB4KVuL9WeAy5XONZYt5Cun/fpQvctoKbCgvPhmzADeesTk/j2Rdx77AcKQ==", "dev": true }, "core-util-is": { @@ -14846,6 +14687,15 @@ "vary": "^1" } }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "requires": { + "node-fetch": "2.6.7" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -14944,9 +14794,9 @@ "dev": true }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -15301,9 +15151,9 @@ "dev": true }, "devtools-protocol": { - "version": "0.0.937139", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.937139.tgz", - "integrity": "sha512-daj+rzR3QSxsPRy5vjjthn58axO8c11j58uY0lG5vvlJk/EiOdCWOptGdkXDjtuRHr78emKq0udHCXM4trhoDQ==", + "version": "0.0.960912", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.960912.tgz", + "integrity": "sha512-I3hWmV9rWHbdnUdmMKHF2NuYutIM2kXz2mdXW8ha7TbRlGTVs+PF+PsB5QWvpCek4Fy9B+msiispCfwlhG5Sqg==", "dev": true }, "di": { @@ -15313,9 +15163,9 @@ "dev": true }, "diff-sequences": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.4.0.tgz", - "integrity": "sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "dev": true }, "dir-glob": { @@ -15583,15 +15433,6 @@ "@socket.io/base64-arraybuffer": "~1.0.2" } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, "ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", @@ -15759,12 +15600,12 @@ } }, "eslint": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz", - "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.10.0.tgz", + "integrity": "sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.0.5", + "@eslint/eslintrc": "^1.2.0", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -15772,10 +15613,10 @@ "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", + "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.2.0", - "espree": "^9.3.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -15808,21 +15649,15 @@ "dev": true }, "eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, - "eslint-visitor-keys": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", - "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", - "dev": true - }, "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", @@ -16018,20 +15853,20 @@ } }, "eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, "espree": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", - "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", "dev": true, "requires": { "acorn": "^8.7.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" + "eslint-visitor-keys": "^3.3.0" } }, "esprima": { @@ -16143,30 +15978,30 @@ "dev": true }, "expect": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.4.6.tgz", - "integrity": "sha512-1M/0kAALIaj5LaG66sFJTbRsWTADnylly82cu4bspI0nl+pgP4E6Bh/aqdHlTUjul06K7xQnnrAoqfxVU0+/ag==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, "requires": { - "@jest/types": "^27.4.2", - "jest-get-type": "^27.4.0", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6" + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" } }, "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", + "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", "dev": true, "peer": true, "requires": { "accepts": "~1.3.7", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.19.1", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.4.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", @@ -16180,36 +16015,19 @@ "on-finished": "~2.3.0", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.9.6", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", "statuses": "~1.5.0", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "dependencies": { - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true, - "peer": true - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -16226,6 +16044,13 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true, "peer": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "peer": true } } }, @@ -16281,9 +16106,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -16323,15 +16148,9 @@ "dev": true }, "fast-redact": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.0.2.tgz", - "integrity": "sha512-YN+CYfCVRVMUZOUPeinHNKgytM1wPI/C/UCLEi56EsY2dwwvI00kIJHJoI7pMVqGoMew8SMZ2SSfHKHULHXDsg==", - "dev": true - }, - "fastify-warning": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/fastify-warning/-/fastify-warning-0.2.0.tgz", - "integrity": "sha512-s1EQguBw/9qtc1p/WTY4eq9WMRIACkj+HTcOIK1in4MV5aFaQC9ZCIt0dJ7pr5bIf4lPpHvAtP2ywpTNgs7hqw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.1.tgz", + "integrity": "sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A==", "dev": true }, "fastq": { @@ -16772,17 +16591,16 @@ } }, "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.1.tgz", + "integrity": "sha512-XMzoDZbGZ37tufiv7g0N4F/zp3zkwdFtVbV3EHsVl1KQr4RPLfNoT068/97RPshz2J5xYNEjLKKBKaGHifBd3Q==", "dev": true, "requires": { - "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, "dependencies": { "ignore": { @@ -16790,6 +16608,12 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true } } }, @@ -16836,9 +16660,9 @@ } }, "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, "graceful-readlink": { @@ -16963,24 +16787,16 @@ "peer": true }, "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, "requires": { "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } + "toidentifier": "1.0.1" } }, "http-proxy": { @@ -17488,14 +17304,15 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", "dev": true, "requires": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" }, "dependencies": { @@ -17551,9 +17368,9 @@ } }, "jasmine-core": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.0.0.tgz", - "integrity": "sha512-tq24OCqHElgU9KDpb/8O21r1IfotgjIzalfW9eCmRR40LZpvwXT68iariIyayMwi0m98RDt16aljdbwK0sBMmQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.0.1.tgz", + "integrity": "sha512-w+JDABxQCkxbGGxg+a2hUVZyqUS2JKngvIyLGu/xiw2ZwgsoSB0iiecLQsQORSeaKQ6iGrCyWG86RfNDuoA7Lg==", "dev": true }, "jed": { @@ -17563,102 +17380,104 @@ "dev": true }, "jest": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.7.tgz", - "integrity": "sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", "dev": true, "requires": { - "@jest/core": "^27.4.7", + "@jest/core": "^27.5.1", "import-local": "^3.0.2", - "jest-cli": "^27.4.7" + "jest-cli": "^27.5.1" } }, "jest-changed-files": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.4.2.tgz", - "integrity": "sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "execa": "^5.0.0", "throat": "^6.0.1" } }, "jest-circus": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.6.tgz", - "integrity": "sha512-UA7AI5HZrW4wRM72Ro80uRR2Fg+7nR0GESbSI/2M+ambbzVuA63mn5T1p3Z/wlhntzGpIG1xx78GP2YIkf6PhQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", "dev": true, "requires": { - "@jest/environment": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.4.6", + "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.6", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.6", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" } }, "jest-cli": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.7.tgz", - "integrity": "sha512-zREYhvjjqe1KsGV15mdnxjThKNDgza1fhDT+iUsXWLCq3sxe9w5xnvyctcYVT5PcdLSjv7Y5dCwTS3FCF1tiuw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", "dev": true, "requires": { - "@jest/core": "^27.4.7", - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.4.7", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "prompts": "^2.0.1", "yargs": "^16.2.0" } }, "jest-config": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.4.7.tgz", - "integrity": "sha512-xz/o/KJJEedHMrIY9v2ParIoYSrSVY6IVeE4z5Z3i101GoA5XgfbJz+1C8EYPsv7u7f39dS8F9v46BHDhn0vlw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, "requires": { "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.4.6", - "@jest/types": "^27.4.2", - "babel-jest": "^27.4.6", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-circus": "^27.4.6", - "jest-environment-jsdom": "^27.4.6", - "jest-environment-node": "^27.4.6", - "jest-get-type": "^27.4.0", - "jest-jasmine2": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.6", - "jest-runner": "^27.4.6", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "micromatch": "^4.0.4", - "pretty-format": "^27.4.6", - "slash": "^3.0.0" + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "dependencies": { "ci-info": { @@ -17670,66 +17489,66 @@ } }, "jest-diff": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.6.tgz", - "integrity": "sha512-zjaB0sh0Lb13VyPsd92V7HkqF6yKRH9vm33rwBt7rPYrpQvS1nCvlIy2pICbKta+ZjWngYLNn4cCK4nyZkjS/w==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^27.4.0", - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.6" + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" } }, "jest-docblock": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.4.0.tgz", - "integrity": "sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.4.6.tgz", - "integrity": "sha512-n6QDq8y2Hsmn22tRkgAk+z6MCX7MeVlAzxmZDshfS2jLcaBlyhpF3tZSJLR+kXmh23GEvS0ojMR8i6ZeRvpQcA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "jest-get-type": "^27.4.0", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.6" + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" } }, "jest-environment-jsdom": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.6.tgz", - "integrity": "sha512-o3dx5p/kHPbUlRvSNjypEcEtgs6LmvESMzgRFQE6c+Prwl2JLA4RZ7qAnxc5VM8kutsGRTB15jXeeSbJsKN9iA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", "dev": true, "requires": { - "@jest/environment": "^27.4.6", - "@jest/fake-timers": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.4.6", - "jest-util": "^27.4.2", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", "jsdom": "^16.6.0" } }, "jest-environment-node": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.6.tgz", - "integrity": "sha512-yfHlZ9m+kzTKZV0hVfhVu6GuDxKAYeFHrfulmy7Jxwsq4V7+ZK7f+c0XP/tbVDMQW7E4neG2u147hFkuVz0MlQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", "dev": true, "requires": { - "@jest/environment": "^27.4.6", - "@jest/fake-timers": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.4.6", - "jest-util": "^27.4.2" + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" } }, "jest-extended": { @@ -17743,103 +17562,103 @@ } }, "jest-get-type": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.4.0.tgz", - "integrity": "sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true }, "jest-haste-map": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.6.tgz", - "integrity": "sha512-0tNpgxg7BKurZeFkIOvGCkbmOHbLFf4LUQOxrQSMjvrQaQe3l6E8x6jYC1NuWkGo5WDdbr8FEzUxV2+LWNawKQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.4.0", - "jest-serializer": "^27.4.0", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.6", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "micromatch": "^4.0.4", "walker": "^1.0.7" } }, "jest-jasmine2": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.6.tgz", - "integrity": "sha512-uAGNXF644I/whzhsf7/qf74gqy9OuhvJ0XYp8SDecX2ooGeaPnmJMjXjKt0mqh1Rl5dtRGxJgNrHlBQIBfS5Nw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", "dev": true, "requires": { - "@jest/environment": "^27.4.6", - "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.4.6", + "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.6", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.6", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", "throat": "^6.0.1" } }, "jest-leak-detector": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.6.tgz", - "integrity": "sha512-kkaGixDf9R7CjHm2pOzfTxZTQQQ2gHTIWKY/JZSiYTc90bZp8kSZnUMS3uLAfwTZwc0tcMRoEX74e14LG1WapA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", "dev": true, "requires": { - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.6" + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" } }, "jest-matcher-utils": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.6.tgz", - "integrity": "sha512-XD4PKT3Wn1LQnRAq7ZsTI0VRuEc9OrCPFiO1XL7bftTGmfNF0DcEwMHRgqiu7NGf8ZoZDREpGrCniDkjt79WbA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^27.4.6", - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.6" + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" } }, "jest-message-util": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.6.tgz", - "integrity": "sha512-0p5szriFU0U74czRSFjH6RyS7UYIAkn/ntwMuOwTGWrQIOh5NzXXrq72LOqIkJKKvFbPq+byZKuBz78fjBERBA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.4.6", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-mock": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.6.tgz", - "integrity": "sha512-kvojdYRkst8iVSZ1EJ+vc1RRD9llueBjKzXzeCytH3dMM7zvPV/ULcfI2nr0v0VUgm3Bjt3hBCQvOeaBz+ZTHw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@types/node": "*" } }, @@ -17851,114 +17670,113 @@ "requires": {} }, "jest-regex-util": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.4.0.tgz", - "integrity": "sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true }, "jest-resolve": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.6.tgz", - "integrity": "sha512-SFfITVApqtirbITKFAO7jOVN45UgFzcRdQanOFzjnbd+CACDoyeX7206JyU92l4cRr73+Qy/TlW51+4vHGt+zw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" } }, "jest-resolve-dependencies": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.6.tgz", - "integrity": "sha512-W85uJZcFXEVZ7+MZqIPCscdjuctruNGXUZ3OHSXOfXR9ITgbUKeHj+uGcies+0SsvI5GtUfTw4dY7u9qjTvQOw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", "dev": true, "requires": { - "@jest/types": "^27.4.2", - "jest-regex-util": "^27.4.0", - "jest-snapshot": "^27.4.6" + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" } }, "jest-runner": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.6.tgz", - "integrity": "sha512-IDeFt2SG4DzqalYBZRgbbPmpwV3X0DcntjezPBERvnhwKGWTW7C5pbbA5lVkmvgteeNfdd/23gwqv3aiilpYPg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", "dev": true, "requires": { - "@jest/console": "^27.4.6", - "@jest/environment": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.4.0", - "jest-environment-jsdom": "^27.4.6", - "jest-environment-node": "^27.4.6", - "jest-haste-map": "^27.4.6", - "jest-leak-detector": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-resolve": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.6", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "source-map-support": "^0.5.6", "throat": "^6.0.1" } }, "jest-runtime": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.6.tgz", - "integrity": "sha512-eXYeoR/MbIpVDrjqy5d6cGCFOYBFFDeKaNWqTp0h6E74dK0zLHzASQXJpl5a2/40euBmKnprNLJ0Kh0LCndnWQ==", - "dev": true, - "requires": { - "@jest/environment": "^27.4.6", - "@jest/fake-timers": "^27.4.6", - "@jest/globals": "^27.4.6", - "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "execa": "^5.0.0", "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-mock": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0", "strip-bom": "^4.0.0" } }, "jest-serializer": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.4.0.tgz", - "integrity": "sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", "dev": true, "requires": { "@types/node": "*", - "graceful-fs": "^4.2.4" + "graceful-fs": "^4.2.9" } }, "jest-snapshot": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.6.tgz", - "integrity": "sha512-fafUCDLQfzuNP9IRcEqaFAMzEe7u5BF7mude51wyWv7VRex60WznZIC7DfKTgSIlJa8aFzYmXclmN328aqSDmQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", "dev": true, "requires": { "@babel/core": "^7.7.2", @@ -17966,36 +17784,36 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.4.6", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.4.6", - "jest-get-type": "^27.4.0", - "jest-haste-map": "^27.4.6", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-util": "^27.4.2", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "natural-compare": "^1.4.0", - "pretty-format": "^27.4.6", + "pretty-format": "^27.5.1", "semver": "^7.3.2" } }, "jest-util": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz", - "integrity": "sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" }, "dependencies": { @@ -18008,17 +17826,17 @@ } }, "jest-validate": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.6.tgz", - "integrity": "sha512-872mEmCPVlBqbA5dToC57vA3yJaMRfIdpCoD3cyHWJOMx+SJwLNw0I71EkWs41oza/Er9Zno9XuTkRYCPDUJXQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.4.0", + "jest-get-type": "^27.5.1", "leven": "^3.1.0", - "pretty-format": "^27.4.6" + "pretty-format": "^27.5.1" }, "dependencies": { "camelcase": { @@ -18030,24 +17848,24 @@ } }, "jest-watcher": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.6.tgz", - "integrity": "sha512-yKQ20OMBiCDigbD0quhQKLkBO+ObGN79MO4nT7YaCuQ5SM+dkBNWE8cZX0FjU6czwMvWw6StWbe+Wv4jJPJ+fw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", "dev": true, "requires": { - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.4.2", + "jest-util": "^27.5.1", "string-length": "^4.0.1" } }, "jest-worker": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", - "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "requires": { "@types/node": "*", @@ -18123,9 +17941,9 @@ }, "dependencies": { "ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", "dev": true, "requires": {} } @@ -18299,15 +18117,15 @@ } }, "karma": { - "version": "6.3.16", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.16.tgz", - "integrity": "sha512-nEU50jLvDe5yvXqkEJRf8IuvddUkOY2x5Xc4WXHz6dxINgGDrgD2uqQWeVrJs4hbfNaotn+HQ1LZJ4yOXrL7xQ==", + "version": "6.3.17", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.17.tgz", + "integrity": "sha512-2TfjHwrRExC8yHoWlPBULyaLwAFmXmxQrcuFImt/JsAsSZu1uOWTZ1ZsWjqQtWpHLiatJOHL5jFjXSJIgCd01g==", "dev": true, "requires": { + "@colors/colors": "1.5.0", "body-parser": "^1.19.0", "braces": "^3.0.2", "chokidar": "^3.5.1", - "colors": "1.4.0", "connect": "^3.7.0", "di": "^0.0.1", "dom-serialize": "^2.2.1", @@ -18362,13 +18180,13 @@ } }, "karma-coverage": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.1.0.tgz", - "integrity": "sha512-uIejpnArNFQIovB6EPsKO/T4XofELdJWXcA2ADXztFlKhHbr0Ws6ba7wKTMVWsIhEs4iJxdhQkCQrkkhFJSZCw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", + "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", "dev": true, "requires": { "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.1", "istanbul-reports": "^3.0.5", @@ -18635,17 +18453,6 @@ "flatted": "^3.2.4", "rfdc": "^1.3.0", "streamroller": "^3.0.2" - }, - "dependencies": { - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } } }, "lowercase-keys": { @@ -18705,9 +18512,9 @@ } }, "malevic": { - "version": "0.18.6", - "resolved": "https://registry.npmjs.org/malevic/-/malevic-0.18.6.tgz", - "integrity": "sha512-Um4XRYJpVDhKjRRteiuHdDmcNbI5gX7URsXC6G+5Tk0Dai2W2RB39kg5C/M32IezNPudT+YsgApBh8JG6fIWrA==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/malevic/-/malevic-0.19.1.tgz", + "integrity": "sha512-Om8ryj2MufYydPSNM6DbBYQCCPlp5mgtOrrgQKw6tCZwUIXPFsyfM3d5S/2RIEAsQDYYZpIctM+SX55Fkv5r4w==", "dev": true }, "map-age-cleaner": { @@ -18939,9 +18746,9 @@ "optional": true }, "nanoid": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", - "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true }, "natural-compare": { @@ -18988,9 +18795,9 @@ "dev": true }, "node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, "requires": { "whatwg-url": "^5.0.0" @@ -19543,17 +19350,16 @@ } }, "pino": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-7.4.0.tgz", - "integrity": "sha512-qEHLtKcmYcid6s2qjlGTxaLe9Lq1IiGmd74IZb9Obi/FRTaA+ymb8FD/cmOIL4vt6ug/EtmhGwxZbiGhI+7cuQ==", + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/pino/-/pino-7.6.5.tgz", + "integrity": "sha512-38tAwlJ7HevMENHD5FZE+yxSlAH5Wg3FoOjbB3MX2j3/kgpOEkmDHhTVKkecR57qxD5doHo2yi9nac94gqqbiQ==", "dev": true, "requires": { "fast-redact": "^3.0.0", - "fastify-warning": "^0.2.0", - "get-caller-file": "^2.0.5", "on-exit-leak-free": "^0.2.0", "pino-abstract-transport": "v0.5.0", "pino-std-serializers": "^4.0.0", + "process-warning": "^1.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.1.0", "safe-stable-stringify": "^2.1.0", @@ -19593,14 +19399,14 @@ } }, "postcss": { - "version": "8.3.11", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", - "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz", + "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==", "dev": true, "requires": { - "nanoid": "^3.1.30", + "nanoid": "^3.2.0", "picocolors": "^1.0.0", - "source-map-js": "^0.6.2" + "source-map-js": "^1.0.2" } }, "prelude-ls": { @@ -19622,9 +19428,9 @@ "dev": true }, "pretty-format": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.6.tgz", - "integrity": "sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "requires": { "ansi-regex": "^5.0.1", @@ -19646,6 +19452,12 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "process-warning": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", + "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==", + "dev": true + }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -19718,32 +19530,23 @@ } }, "puppeteer-core": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.0.1.tgz", - "integrity": "sha512-aKTN7Rtu7zJuhadihaxXnbC4fRPe/Q6VR8u6krJk3dnmTL7am01hl3XG1x9nNCkxi5fA4+e4ba9QmTvFiqGxSA==", + "version": "13.4.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.4.1.tgz", + "integrity": "sha512-AgRIWgIkUXXnbvoRhyveZnyoEYr3wTunSk2/evOfWvFs65GUzsrxnUTUSLgPM4MRshCQmRABW7qE1hDN1AD7nA==", "dev": true, "requires": { - "debug": "4.3.2", - "devtools-protocol": "0.0.937139", + "cross-fetch": "3.1.5", + "debug": "4.3.3", + "devtools-protocol": "0.0.960912", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.5", "pkg-dir": "4.2.0", "progress": "2.0.3", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", "tar-fs": "2.1.1", "unbzip2-stream": "1.4.3", - "ws": "8.2.3" - }, - "dependencies": { - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "requires": {} - } + "ws": "8.5.0" } }, "qjobs": { @@ -19753,9 +19556,9 @@ "dev": true }, "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", "dev": true }, "query-string": { @@ -19798,13 +19601,13 @@ "dev": true }, "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", "dev": true, "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.1", + "http-errors": "1.8.1", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } @@ -19874,9 +19677,9 @@ "dev": true }, "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -20015,9 +19818,9 @@ } }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true }, "tough-cookie": { @@ -20120,9 +19923,9 @@ } }, "rollup": { - "version": "2.64.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.64.0.tgz", - "integrity": "sha512-+c+lbw1lexBKSMb1yxGDVfJ+vchJH3qLbmavR+awDinTDA2C5Ug9u7lkOzj62SCu0PKUExsW36tpgW7Fmpn3yQ==", + "version": "2.69.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.69.0.tgz", + "integrity": "sha512-kjER91tHyek8gAkuz7+558vSnTQ+pITEok1P0aNOS45ZXyngaqPsXJmSel4QPQnJo7EJMjXUU1/GErWkWiKORg==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -20280,9 +20083,9 @@ } }, "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", "dev": true, "peer": true, "requires": { @@ -20293,9 +20096,9 @@ "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "1.8.1", "mime": "1.6.0", - "ms": "2.1.1", + "ms": "2.1.3", "on-finished": "~2.3.0", "range-parser": "~1.2.1", "statuses": "~1.5.0" @@ -20328,25 +20131,25 @@ "peer": true }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "peer": true } } }, "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", "dev": true, "peer": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.17.2" } }, "set-immediate-shim": { @@ -20356,9 +20159,9 @@ "dev": true }, "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "sha.js": { @@ -20410,20 +20213,20 @@ } }, "sign-addon": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-3.9.0.tgz", - "integrity": "sha512-a8IzM3jNPSHcf2wSkhLgME4QrIe+rKTb8y/qYwGGzby5ktODAH+WBsKIgGZ9p5d2mpppPwbNEsA+YzcL117bbA==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-3.11.0.tgz", + "integrity": "sha512-fcK2WzkMb8e8E9kvuccy+mrBTT81iR+1CowHLU594Elr4E9E9zZFr3itGlL0OoXcRouKmvt7rpXzoARu++tXRQ==", "dev": true, "requires": { - "common-tags": "1.8.0", - "core-js": "3.18.0", + "common-tags": "1.8.2", + "core-js": "3.21.0", "deepcopy": "2.1.0", "es6-error": "4.1.1", "es6-promisify": "7.0.0", "jsonwebtoken": "8.5.1", "mz": "2.7.0", "request": "2.88.2", - "source-map-support": "0.5.20", + "source-map-support": "0.5.21", "stream-to-promise": "3.0.0" } }, @@ -20477,9 +20280,9 @@ } }, "sonic-boom": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.4.2.tgz", - "integrity": "sha512-zlOmAKFLJzTI+MbvmkWhnOOJ++NYo0Iy7F93ARNPmvZvpWG2l8Ff3uwM3CkpHqRw8v3pcRROScM5E+vbeTeOKw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.6.0.tgz", + "integrity": "sha512-6xYZFRmDEtxGqfOKcDQ4cPLrNa0SPEDI+wlzDAHowXE6YV42NeXqg9mP2KkiM8JVu3lHfZ2iQKYlGOz+kTpphg==", "dev": true, "requires": { "atomic-sleep": "^1.0.0" @@ -20524,15 +20327,15 @@ "dev": true }, "source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true }, "source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -20577,9 +20380,9 @@ "dev": true }, "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -20881,9 +20684,9 @@ } }, "thread-stream": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.13.0.tgz", - "integrity": "sha512-kTMZeX4Dzlb1zZ00/01aerGaTw2i8NE4sWF0TvF1uXewRhCiUjCvatQkvxIvFqauWG2ADFS2Wpd3qBeYL9i3dg==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.13.2.tgz", + "integrity": "sha512-woZFt0cLFkPdhsa+IGpRo1jiSouaHxMIljzTgt30CMjBWoUYbbcHqnunW5Yv+BXko9H05MVIcxMipI3Jblallw==", "dev": true, "requires": { "real-require": "^0.1.0" @@ -20952,9 +20755,9 @@ } }, "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, "tosource": { @@ -21140,9 +20943,9 @@ } }, "typescript": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", - "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", + "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", "dev": true }, "ua-parser-js": { @@ -21360,14 +21163,14 @@ } }, "web-ext": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-6.6.0.tgz", - "integrity": "sha512-ja9kuCleKQLesUEx+tEl6ByxwVF1CVCjSc3V0ag78S40NWDRTBJhXwc4c+qlyZ0h/XefXc3waxnsq1izUBe/Nw==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-6.7.0.tgz", + "integrity": "sha512-QN+ufUPMNhLbrEqwFDOuoHy4m2OOPAp8NDMKJaWIByZRh8VPH+JoJ6/NAaIEcs9TPKnkA2018TNIJAfYN9EerA==", "dev": true, "requires": { "@babel/runtime": "7.13.9", "@devicefarmer/adbkit": "2.11.3", - "addons-linter": "4.4.0", + "addons-linter": "4.9.0", "bunyan": "1.8.15", "camelcase": "6.2.0", "chrome-launcher": "0.15.0", @@ -21385,7 +21188,7 @@ "node-notifier": "9.0.0", "open": "7.4.2", "parse-json": "5.2.0", - "sign-addon": "3.9.0", + "sign-addon": "3.11.0", "source-map-support": "0.5.20", "strip-bom": "4.0.0", "strip-json-comments": "3.1.1", @@ -21435,6 +21238,16 @@ "which": "^2.0.2" } }, + "source-map-support": { + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", @@ -21555,9 +21368,9 @@ } }, "ws": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", - "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "dev": true, "requires": {} }, diff --git a/package.json b/package.json index b00b60fbfb7e..1749cec09eea 100644 --- a/package.json +++ b/package.json @@ -66,45 +66,45 @@ }, "devDependencies": { "@rollup/plugin-node-resolve": "13.1.3", - "@rollup/plugin-replace": "3.0.1", - "@rollup/plugin-typescript": "8.3.0", + "@rollup/plugin-replace": "4.0.0", + "@rollup/plugin-typescript": "8.3.1", "@rollup/pluginutils": "4.1.2", - "@types/chrome": "0.0.176", + "@types/chrome": "0.0.179", "@types/eslint": "8.4.1", "@types/jasmine": "3.10.3", - "@types/jest": "27.4.0", - "@types/karma": "6.3.2", + "@types/jest": "27.4.1", + "@types/karma": "6.3.3", "@types/karma-coverage": "2.0.1", - "@types/node": "17.0.9", + "@types/node": "17.0.21", "@types/offscreencanvas": "2019.6.4", - "@typescript-eslint/eslint-plugin": "5.9.1", - "@typescript-eslint/parser": "5.9.1", - "chokidar": "3.5.2", - "eslint": "8.7.0", + "@typescript-eslint/eslint-plugin": "5.13.0", + "@typescript-eslint/parser": "5.13.0", + "chokidar": "3.5.3", + "eslint": "8.10.0", "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", - "globby": "11.0.4", - "jasmine-core": "4.0.0", - "jest": "27.4.7", + "globby": "13.1.1", + "jasmine-core": "4.0.1", + "jest": "27.5.1", "jest-extended": "2.0.0", - "karma": "6.3.16", + "karma": "6.3.17", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.1.0", + "karma-coverage": "2.2.0", "karma-firefox-launcher": "2.1.2", "karma-jasmine": "4.0.1", "karma-rollup-preprocessor": "7.0.8", "karma-safari-launcher": "1.0.0", "less": "4.1.2", - "malevic": "0.18.6", + "malevic": "0.19.1", "prettier": "2.5.1", - "puppeteer-core": "13.0.1", - "rollup": "2.64.0", + "puppeteer-core": "13.4.1", + "rollup": "2.69.0", "rollup-plugin-istanbul2": "2.0.2", "ts-jest": "27.1.3", "tslib": "2.3.1", - "typescript": "4.5.4", - "web-ext": "6.6.0", - "ws": "8.4.2", + "typescript": "4.6.2", + "web-ext": "6.7.0", + "ws": "8.5.0", "yazl": "2.5.1" } } From 5f7fd39589d7f2bab87788038968c87af1f8e3c1 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 3 Mar 2022 12:54:34 +0000 Subject: [PATCH 471/892] Add a Immediate modify option (#8322) - Add a per-site option to enable "Immediate modify", within this mode(only useable for dynamic theme), Dark Reader will modify the page without waiting for it to be shown to the user. With this mode you can open a new tab in the background and switch to it and notice it's already been modified by Dark Reader. - Because users(myself included to a certain extend) might find this behavior unexpected and prefer to let Dark Reader wait until the tab is shown, this option is disabled by default. And because it has chances it will break certain sites, it's implemented to be a per-site toggle(Under `font & more`). - Resolves #7682. --- src/defaults.ts | 1 + src/definitions.d.ts | 1 + src/inject/dynamic-theme/index.ts | 11 +++++++++-- src/inject/utils/dom.ts | 6 +++++- src/ui/popup/theme/controls/immediate-modify.tsx | 16 ++++++++++++++++ src/ui/popup/theme/controls/index.tsx | 2 ++ src/ui/popup/theme/page/index.tsx | 6 +++++- 7 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 src/ui/popup/theme/controls/immediate-modify.tsx diff --git a/src/defaults.ts b/src/defaults.ts index b29889ff0b54..49c82029d25a 100644 --- a/src/defaults.ts +++ b/src/defaults.ts @@ -34,6 +34,7 @@ export const DEFAULT_THEME: Theme = { styleSystemControls: !isCSSColorSchemePropSupported, lightColorScheme: 'Default', darkColorScheme: 'Default', + immediateModify: false, }; export const DEFAULT_COLORSCHEME: ParsedColorSchemeConfig = { diff --git a/src/definitions.d.ts b/src/definitions.d.ts index 711f50fe67b2..3ddeffc4a0a2 100644 --- a/src/definitions.d.ts +++ b/src/definitions.d.ts @@ -64,6 +64,7 @@ export interface Theme { styleSystemControls: boolean; lightColorScheme: string; darkColorScheme: string; + immediateModify: boolean; } export type FilterConfig = Theme; diff --git a/src/inject/dynamic-theme/index.ts b/src/inject/dynamic-theme/index.ts index b25f77e9941f..061546108014 100644 --- a/src/inject/dynamic-theme/index.ts +++ b/src/inject/dynamic-theme/index.ts @@ -5,7 +5,7 @@ import type {StyleElement, StyleManager} from './style-manager'; import {manageStyle, getManageableStyles, cleanLoadingLinks} from './style-manager'; import {watchForStyleChanges, stopWatchingForStyleChanges} from './watch'; import {forEach, push, toArray} from '../../utils/array'; -import {removeNode, watchForNodePosition, iterateShadowHosts, isDOMReady, removeDOMReadyListener, cleanReadyStateCompleteListeners, addDOMReadyListener} from '../utils/dom'; +import {removeNode, watchForNodePosition, iterateShadowHosts, isDOMReady, removeDOMReadyListener, cleanReadyStateCompleteListeners, addDOMReadyListener, setIsDOMReady} from '../utils/dom'; import {logInfo, logWarn} from '../../utils/log'; import {throttle} from '../../utils/throttle'; import {clamp} from '../../utils/math'; @@ -321,7 +321,7 @@ function createThemeAndWatchForUpdates() { watchForUpdates(); } - if (document.hidden) { + if (document.hidden && !filter.immediateModify) { watchForDocumentVisibility(runDynamicStyle); } else { runDynamicStyle(); @@ -426,6 +426,13 @@ export function createOrUpdateDynamicTheme(filterConfig: FilterConfig, dynamicTh ignoredImageAnalysisSelectors = []; ignoredInlineSelectors = []; } + + if (filter.immediateModify) { + setIsDOMReady(() => { + return true; + }); + } + isIFrame = iframe; if (document.head) { if (isAnotherDarkReaderInstanceActive()) { diff --git a/src/inject/utils/dom.ts b/src/inject/utils/dom.ts index 268cb625a67e..008c75ade897 100644 --- a/src/inject/utils/dom.ts +++ b/src/inject/utils/dom.ts @@ -192,8 +192,12 @@ export function iterateShadowHosts(root: Node, iterator: (host: Element) => void } } -export function isDOMReady() { +export let isDOMReady = () => { return document.readyState === 'complete' || document.readyState === 'interactive'; +}; + +export function setIsDOMReady(newFunc: () => boolean) { + isDOMReady = newFunc; } const readyStateListeners = new Set<() => void>(); diff --git a/src/ui/popup/theme/controls/immediate-modify.tsx b/src/ui/popup/theme/controls/immediate-modify.tsx new file mode 100644 index 000000000000..829958aac280 --- /dev/null +++ b/src/ui/popup/theme/controls/immediate-modify.tsx @@ -0,0 +1,16 @@ +import {m} from 'malevic'; +import {DropDown} from '../../../controls'; +import ThemeControl from './theme-control'; + +export default function ImmediateModify(props: {value: boolean; onChange: (value: boolean) => void}) { + const options = [{id: true, content: 'Yes'}, {id: false, content: 'No'}]; + return ( + + + + ); +} diff --git a/src/ui/popup/theme/controls/index.tsx b/src/ui/popup/theme/controls/index.tsx index b555d2b9839a..c06e3bca8737 100644 --- a/src/ui/popup/theme/controls/index.tsx +++ b/src/ui/popup/theme/controls/index.tsx @@ -4,6 +4,7 @@ import Contrast from './contrast'; import ColorSchemeDropDown from './color-scheme'; import FontPicker from './font-picker'; import Grayscale from './grayscale'; +import ImmediateModify from './immediate-modify'; import Mode from './mode'; import ResetButton from './reset-button'; import Scheme from './scheme'; @@ -22,6 +23,7 @@ export { ColorSchemeDropDown, FontPicker, Grayscale, + ImmediateModify, Mode, ResetButton, Scheme, diff --git a/src/ui/popup/theme/page/index.tsx b/src/ui/popup/theme/page/index.tsx index 13286ecc43b0..1232d2459627 100644 --- a/src/ui/popup/theme/page/index.tsx +++ b/src/ui/popup/theme/page/index.tsx @@ -3,7 +3,7 @@ import {DEFAULT_SETTINGS, DEFAULT_THEME, DEFAULT_COLORS} from '../../../../defau import type {Theme} from '../../../../definitions'; import type {ParsedColorSchemeConfig} from '../../../../utils/colorscheme-parser'; import type {ViewProps} from '../../types'; -import {BackgroundColor, Brightness, Contrast, FontPicker, Grayscale, Mode, ResetButton, Scheme, Scrollbar, SelectionColorEditor, Sepia, TextColor, TextStroke, UseFont, StyleSystemControls, ColorSchemeDropDown} from '../controls'; +import {BackgroundColor, Brightness, Contrast, FontPicker, Grayscale, Mode, ResetButton, Scheme, Scrollbar, SelectionColorEditor, Sepia, TextColor, TextStroke, UseFont, StyleSystemControls, ColorSchemeDropDown, ImmediateModify} from '../controls'; import ThemePresetPicker from '../preset-picker'; import {getCurrentThemePreset} from '../utils'; import Collapsible from './collapsible-panel'; @@ -126,6 +126,10 @@ function FontGroup({theme, fonts, change}: FontGroupsProps) { value={theme.styleSystemControls} onChange={(styleSystemControls) => change({styleSystemControls})} /> + change({immediateModify})} + /> ); } From d7f43d5887aef73aa6980a702a5ff431e7187210 Mon Sep 17 00:00:00 2001 From: Myshor Date: Thu, 3 Mar 2022 18:43:17 +0100 Subject: [PATCH 472/892] fix for flow.polar.com (#8336) Fixed intensiveness circles color from black back to red. (INLINE broke it up) --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index f6f7e4bbedaa..881612d7c270 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6012,6 +6012,7 @@ CSS IGNORE INLINE STYLE .zonebox .zonestartbox +stop ================================ From 84bc76a5e9e8e9e6dc904d4ff97ad805599a5c38 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Thu, 3 Mar 2022 18:56:48 +0000 Subject: [PATCH 473/892] Fixed Globby module usage (#8337) The latest update doesn't work with CommonJS directly. --- .gitignore | 2 +- src/tsconfig.json | 2 +- tasks/code-style.js | 5 ++--- tasks/copy.js | 5 ++--- tasks/utils.js | 10 ++++++++++ tasks/zip.js | 9 ++++++--- 6 files changed, 22 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 45799df47ad9..31138007e3f7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # Build files #----------------------------------- -build +build/ darkreader.js debug.log diff --git a/src/tsconfig.json b/src/tsconfig.json index 8c8fe3599f0f..76c9255fc772 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "target": "ES2019", - "baseUrl": ".", + "baseUrl": "./", "module": "ES2015", "moduleResolution": "node", "lib": [ diff --git a/tasks/code-style.js b/tasks/code-style.js index ee97052b98c9..3879bed0f4d3 100644 --- a/tasks/code-style.js +++ b/tasks/code-style.js @@ -1,9 +1,8 @@ // @ts-check -const globby = require('globby'); const prettier = require('prettier'); const {getDestDir, PLATFORM} = require('./paths'); const {createTask} = require('./task'); -const {log, readFile, writeFile} = require('./utils'); +const {log, readFile, writeFile, getPaths} = require('./utils'); /** @type {import('prettier').Options} */ const options = { @@ -21,7 +20,7 @@ const extensions = ['html', 'css', 'js']; async function codeStyle({debug}) { const dir = getDestDir({debug, platform: PLATFORM.CHROME}); - const files = await globby(extensions.map((ext) => `${dir}/**/*.${ext}`)); + const files = await getPaths(extensions.map((ext) => `${dir}/**/*.${ext}`)); for (const file of files) { const code = await readFile(file); const formatted = prettier.format(code, { diff --git a/tasks/copy.js b/tasks/copy.js index 076045a6d69a..f04f63057172 100644 --- a/tasks/copy.js +++ b/tasks/copy.js @@ -1,9 +1,8 @@ // @ts-check -const globby = require('globby'); const {getDestDir, PLATFORM} = require('./paths'); const reload = require('./reload'); const {createTask} = require('./task'); -const {pathExists, copyFile, readFile, writeFile} = require('./utils'); +const {pathExists, copyFile, readFile, writeFile, getPaths} = require('./utils'); const srcDir = 'src'; const cwdPaths = [ @@ -65,7 +64,7 @@ async function copyManifest(path, {debug, platform}) { } async function copy({debug}) { - const files = await globby(paths); + const files = await getPaths(paths); for (const file of files) { for (const platform of Object.values(PLATFORM)) { await copyManifest(file, {debug, platform}); diff --git a/tasks/utils.js b/tasks/utils.js index 15b51cc0b705..808c1dce544f 100644 --- a/tasks/utils.js +++ b/tasks/utils.js @@ -91,6 +91,15 @@ async function writeFile(dest, content) { await fs.writeFile(dest, content, 'utf8'); } +/** + * @param {string | string[]} patterns + * @returns {Promise} + */ +async function getPaths(patterns) { + const {globby} = await import('globby'); + return await globby(patterns); +} + module.exports = { log, copyFile, @@ -98,4 +107,5 @@ module.exports = { readFile, removeFolder, writeFile, + getPaths, }; diff --git a/tasks/zip.js b/tasks/zip.js index e89e5944f9bb..aaa483ee9c10 100644 --- a/tasks/zip.js +++ b/tasks/zip.js @@ -1,20 +1,23 @@ +// @ts-check const fs = require('fs'); -const globby = require('globby'); const yazl = require('yazl'); const {getDestDir, PLATFORM} = require('./paths'); const {createTask} = require('./task'); +const {getPaths} = require('./utils'); function archiveFiles({files, dest, cwd}) { return new Promise((resolve) => { const archive = new yazl.ZipFile(); files.forEach((file) => archive.addFile(file, file.startsWith(`${cwd}/`) ? file.substring(cwd.length + 1) : file)); - archive.outputStream.pipe(fs.createWriteStream(dest)).on('close', () => resolve()); + /** @type {any} */ + const writeStream = fs.createWriteStream(dest); + archive.outputStream.pipe(writeStream).on('close', () => resolve()); archive.end(); }); } async function archiveDirectory({dir, dest}) { - const files = await globby(`${dir}/**/*.*`); + const files = await getPaths(`${dir}/**/*.*`); await archiveFiles({files, dest, cwd: dir}); } From e7fc55ea2c7816bd8cd0c4221cd82f8fe6eac0bc Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Thu, 3 Mar 2022 13:24:00 -0800 Subject: [PATCH 474/892] Fix for distrowatch.com (#8328) --- src/config/dynamic-theme-fixes.config | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 881612d7c270..a5f05b755d64 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4411,11 +4411,11 @@ distrowatch.com INVERT img[src="images/cpxtu/dwbanner.png"] -.NewsLogo > a:first-of-type -.TablesTitle > img CSS -.NavMenu, +input, +.NavMenu, +select, td:not(.NewsDate):not(.NewsHeadline) { background-color: var(--darkreader-neutral-background) !important; } From 3a6ee8c7f1e67af534bb7e93b24ece15b7610bd8 Mon Sep 17 00:00:00 2001 From: xxyzz Date: Fri, 4 Mar 2022 19:43:04 +0800 Subject: [PATCH 475/892] Fix for Wikipedia map (#8340) * Invert Wikipedia map full screen icon and external maps icon * Set Wikipedia map zoom and close button's background to white * Invert Wikipedia map --- src/config/dynamic-theme-fixes.config | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a5f05b755d64..a444c2a7f45a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17355,10 +17355,11 @@ body > .oo-ui-windowManager .vega .marks .minerva-footer-logo img .music-symbol .tool.tool-button[src$="background-image:"] -.wikiEditor-ui .oo-ui-iconElement-icon +.oo-ui-iconElement-icon #p-personal .mw-echo-notifications-badge -.oo-ui-icon-close .mw-ui-icon::before +.mw-kartographer-map +.mw-kartographer-mapDialog-map CSS .mwe-popups-discreet > svg, @@ -17414,6 +17415,10 @@ body.mediawiki, .template-facttext { background-color: #eaecf0 !important; } +.leaflet-bar .oo-ui-icon-close, +.leaflet-control-zoom a { + background-color: white !important; +} IGNORE INLINE STYLE .legend-color From 3059187801a48169a2d0556b603e847314ce81a9 Mon Sep 17 00:00:00 2001 From: Felipe Almeida Date: Fri, 4 Mar 2022 10:08:36 -0300 Subject: [PATCH 476/892] fix: make `cssImportRegex` case insensitive (#8341) - Handle @IMPORT ... cases. --- src/inject/dynamic-theme/css-rules.ts | 2 +- tests/inject/dynamic/link-override.tests.ts | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/inject/dynamic-theme/css-rules.ts b/src/inject/dynamic-theme/css-rules.ts index 53c127add57a..79fba78a8e25 100644 --- a/src/inject/dynamic-theme/css-rules.ts +++ b/src/inject/dynamic-theme/css-rules.ts @@ -89,7 +89,7 @@ export function iterateCSSDeclarations(style: CSSStyleDeclaration, iterate: (pro } export const cssURLRegex = /url\((('.+?')|(".+?")|([^\)]*?))\)/g; -export const cssImportRegex = /@import\s*(url\()?(('.+?')|(".+?")|([^\)]*?))\)? ?(screen)?;?/g; +export const cssImportRegex = /@import\s*(url\()?(('.+?')|(".+?")|([^\)]*?))\)? ?(screen)?;?/gi; export function getCSSURLValue(cssURL: string) { return cssURL.replace(/^url\((.*)\)$/, '$1').trim().replace(/^"(.*)"$/, '$1').replace(/^'(.*)'$/, '$1'); diff --git a/tests/inject/dynamic/link-override.tests.ts b/tests/inject/dynamic/link-override.tests.ts index 042a88ef338a..78835e569a6a 100644 --- a/tests/inject/dynamic/link-override.tests.ts +++ b/tests/inject/dynamic/link-override.tests.ts @@ -95,6 +95,25 @@ describe('LINK STYLES', () => { expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); }); + it('should override cross-origin imports in linked CSS with capital @import', async () => { + const importedCSS = 'h1 { background: gray; }'; + const importedURL = getCSSEchoURL(importedCSS); + stubBackgroundFetchResponse(importedURL, importedCSS); + createCorsLink(multiline( + `@IMPORT "${importedURL}";`, + 'h1 strong { color: red; }', + )); + container.innerHTML = multiline( + '

Cross-origin import link override

', + ); + createOrUpdateDynamicTheme(theme, null, false); + + await timeout(100); + expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); + expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); + expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); + }); + it('should override cross-origin link that has already been loaded', async () => { createCorsLink(multiline( 'h1 { background: gray; }', From f18c3be3ed1ab3d09be2dd02d6646fd8d07ac139 Mon Sep 17 00:00:00 2001 From: Anish De <63192115+AnishDe12020@users.noreply.github.com> Date: Fri, 4 Mar 2022 19:02:58 +0530 Subject: [PATCH 477/892] Added dark sites (#8342) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 87604c69235e..bd27383b1f60 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -636,6 +636,7 @@ noisebridge.net nomanssky.com nostv.pt notebooks.quantumstat.com +notiger.xyz nowplayi.ng null.media nulledbb.com From 0fad2a2bcff85bedb9762c77282fb016fc3a0644 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Fri, 4 Mar 2022 14:07:49 +0000 Subject: [PATCH 478/892] Detect website's dark theme (#7995) - Disable Dark Reader styles during the check. - Check Root and Body backgrounds. - Works for Dynamic, Filter and Static modes. - No way to disable per website yet. --- src/background/extension.ts | 32 ++++++--- src/defaults.ts | 1 + src/definitions.d.ts | 1 + src/inject/detector.ts | 72 +++++++++++++++++++ src/inject/dynamic-theme/image.ts | 15 ++-- src/inject/index.ts | 33 +++++++-- src/inject/style.ts | 1 + .../popup/settings-page/detect-dark-theme.tsx | 20 ++++++ src/ui/popup/settings-page/index.tsx | 2 + src/utils/color.ts | 7 +- 10 files changed, 162 insertions(+), 22 deletions(-) create mode 100644 src/inject/detector.ts create mode 100644 src/ui/popup/settings-page/detect-dark-theme.tsx diff --git a/src/background/extension.ts b/src/background/extension.ts index ae9cd9645b5a..c50803a70238 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -594,6 +594,8 @@ export class Extension implements ExtensionState { const mode = this.autoState === 'scheme-dark' ? 1 : 0; theme = {...theme, mode}; } + const isIFrame = frameURL != null; + const detectDarkTheme = !isIFrame && this.user.settings.detectDarkTheme; logInfo(`Creating CSS for url: ${url}`); logInfo(`Custom theme ${custom ? 'was found' : 'was not found'}, Preset theme ${preset ? 'was found' : 'was not found'} @@ -602,14 +604,20 @@ export class Extension implements ExtensionState { case ThemeEngines.cssFilter: { return { type: MessageType.BG_ADD_CSS_FILTER, - data: createCSSFilterStylesheet(theme, url, frameURL, this.config.INVERSION_FIXES_RAW, this.config.INVERSION_FIXES_INDEX), + data: { + css: createCSSFilterStylesheet(theme, url, frameURL, this.config.INVERSION_FIXES_RAW, this.config.INVERSION_FIXES_INDEX), + detectDarkTheme, + }, }; } case ThemeEngines.svgFilter: { if (isFirefox) { return { type: MessageType.BG_ADD_CSS_FILTER, - data: createSVGFilterStylesheet(theme, url, frameURL, this.config.INVERSION_FIXES_RAW, this.config.INVERSION_FIXES_INDEX), + data: { + css: createSVGFilterStylesheet(theme, url, frameURL, this.config.INVERSION_FIXES_RAW, this.config.INVERSION_FIXES_INDEX), + detectDarkTheme, + }, }; } return { @@ -618,25 +626,31 @@ export class Extension implements ExtensionState { css: createSVGFilterStylesheet(theme, url, frameURL, this.config.INVERSION_FIXES_RAW, this.config.INVERSION_FIXES_INDEX), svgMatrix: getSVGFilterMatrixValue(theme), svgReverseMatrix: getSVGReverseFilterMatrixValue(), + detectDarkTheme, }, }; } case ThemeEngines.staticTheme: { return { type: MessageType.BG_ADD_STATIC_THEME, - data: theme.stylesheet && theme.stylesheet.trim() ? - theme.stylesheet : - createStaticStylesheet(theme, url, frameURL, this.config.STATIC_THEMES_RAW, this.config.STATIC_THEMES_INDEX), + data: { + css: theme.stylesheet && theme.stylesheet.trim() ? + theme.stylesheet : + createStaticStylesheet(theme, url, frameURL, this.config.STATIC_THEMES_RAW, this.config.STATIC_THEMES_INDEX), + detectDarkTheme: this.user.settings.detectDarkTheme, + }, }; } case ThemeEngines.dynamicTheme: { - const filter = {...theme}; - delete filter.engine; const fixes = getDynamicThemeFixesFor(url, frameURL, this.config.DYNAMIC_THEME_FIXES_RAW, this.config.DYNAMIC_THEME_FIXES_INDEX, this.user.settings.enableForPDF); - const isIFrame = frameURL != null; return { type: MessageType.BG_ADD_DYNAMIC_THEME, - data: {filter, fixes, isIFrame}, + data: { + theme, + fixes, + isIFrame, + detectDarkTheme, + }, }; } default: { diff --git a/src/defaults.ts b/src/defaults.ts index 49c82029d25a..69ba9b9d0b9b 100644 --- a/src/defaults.ts +++ b/src/defaults.ts @@ -78,4 +78,5 @@ export const DEFAULT_SETTINGS: UserSettings = { enableForPDF: true, enableForProtectedPages: false, enableContextMenus: false, + detectDarkTheme: false, }; diff --git a/src/definitions.d.ts b/src/definitions.d.ts index 3ddeffc4a0a2..baa9f732e38e 100644 --- a/src/definitions.d.ts +++ b/src/definitions.d.ts @@ -101,6 +101,7 @@ export interface UserSettings { enableForPDF: boolean; enableForProtectedPages: boolean; enableContextMenus: boolean; + detectDarkTheme: boolean; } export interface TimeSettings { diff --git a/src/inject/detector.ts b/src/inject/detector.ts new file mode 100644 index 000000000000..e259e05f42e3 --- /dev/null +++ b/src/inject/detector.ts @@ -0,0 +1,72 @@ +import {parse, getSRGBLightness} from '../utils/color'; + +function hasBuiltInDarkTheme() { + const drStyles = document.querySelectorAll('.darkreader') as NodeListOf; + drStyles.forEach((style) => style.disabled = true); + + const rootColor = parse(getComputedStyle(document.documentElement).backgroundColor); + const bodyColor = document.body ? parse(getComputedStyle(document.body).backgroundColor) : {r: 0, g: 0, b: 0, a: 0}; + const rootLightness = (1 - rootColor.a) + rootColor.a * getSRGBLightness(rootColor.r, rootColor.g, rootColor.b); + const finalLightness = (1 - bodyColor.a) * rootLightness + bodyColor.a * getSRGBLightness(bodyColor.r, bodyColor.g, bodyColor.b); + const darkThemeDetected = finalLightness < 0.5; + + drStyles.forEach((style) => style.disabled = false); + return darkThemeDetected; +} + +function runCheck(callback: (hasDarkTheme: boolean) => void) { + const darkThemeDetected = hasBuiltInDarkTheme(); + callback(darkThemeDetected); +} + +function hasSomeStyle() { + if (document.documentElement.style.backgroundColor || (document.body && document.body.style.backgroundColor)) { + return true; + } + for (const style of document.styleSheets) { + if (style && style.ownerNode && !(style.ownerNode as HTMLElement).classList.contains('darkreader')) { + return true; + } + } + return false; +} + +let observer: MutationObserver; +let readyStateListener: () => void; + +export function runDarkThemeDetector(callback: (hasDarkTheme: boolean) => void) { + stopDarkThemeDetector(); + if (document.body && hasSomeStyle()) { + runCheck(callback); + return; + } + + observer = new MutationObserver(() => { + if (document.body && hasSomeStyle()) { + stopDarkThemeDetector(); + runCheck(callback); + } + }); + observer.observe(document.documentElement, {childList: true}); + + if (document.readyState !== 'complete') { + readyStateListener = () => { + if (document.readyState === 'complete') { + stopDarkThemeDetector(); + runCheck(callback); + } + }; + document.addEventListener('readystatechange', readyStateListener); + } +} + +export function stopDarkThemeDetector() { + if (observer) { + observer.disconnect(); + observer = null; + } + if (readyStateListener) { + document.removeEventListener('readystatechange', readyStateListener); + readyStateListener = null; + } +} diff --git a/src/inject/dynamic-theme/image.ts b/src/inject/dynamic-theme/image.ts index 7b6a77dcaba4..032d03dd7d5d 100644 --- a/src/inject/dynamic-theme/image.ts +++ b/src/inject/dynamic-theme/image.ts @@ -1,5 +1,6 @@ import {getSVGFilterMatrixValue} from '../../generators/svg-filter'; import {bgFetch} from './network'; +import {getSRGBLightness} from '../../utils/color'; import {loadAsDataURL} from '../../utils/network'; import type {FilterConfig} from '../../definitions'; import {logInfo, logWarn} from '../../utils/log'; @@ -140,17 +141,15 @@ function analyzeImage(image: HTMLImageElement) { for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { i = 4 * (y * width + x); - r = d[i + 0] / 255; - g = d[i + 1] / 255; - b = d[i + 2] / 255; - a = d[i + 3] / 255; + r = d[i + 0]; + g = d[i + 1]; + b = d[i + 2]; + a = d[i + 3]; - if (a < TRANSPARENT_ALPHA_THRESHOLD) { + if (a / 255 < TRANSPARENT_ALPHA_THRESHOLD) { transparentPixelsCount++; } else { - // Use sRGB to determine the `pixel Lightness` - // https://en.wikipedia.org/wiki/Relative_luminance - l = 0.2126 * r + 0.7152 * g + 0.0722 * b; + l = getSRGBLightness(r, g, b); if (l < DARK_LIGHTNESS_THRESHOLD) { darkPixelsCount++; } diff --git a/src/inject/index.ts b/src/inject/index.ts index 69b0954d5fba..ec64288a7204 100644 --- a/src/inject/index.ts +++ b/src/inject/index.ts @@ -1,5 +1,6 @@ import {createOrUpdateStyle, removeStyle} from './style'; import {createOrUpdateSVGFilter, removeSVGFilter} from './svg-filter'; +import {runDarkThemeDetector, stopDarkThemeDetector} from './detector'; import {createOrUpdateDynamicTheme, removeDynamicTheme, cleanDynamicThemeCache} from './dynamic-theme'; import {logInfo, logWarn} from '../utils/log'; import {watchForColorSchemeChange} from './utils/watch-color-scheme'; @@ -22,6 +23,7 @@ function cleanup() { removeEventListener('freeze', onFreeze); removeEventListener('resume', onResume); cleanDynamicThemeCache(); + stopDarkThemeDetector(); if (colorSchemeWatcher) { colorSchemeWatcher.disconnect(); colorSchemeWatcher = null; @@ -58,22 +60,44 @@ function onMessage({type, data}: Message) { switch (type) { case MessageType.BG_ADD_CSS_FILTER: case MessageType.BG_ADD_STATIC_THEME: { - const css = data; + const {css, detectDarkTheme} = data; removeDynamicTheme(); createOrUpdateStyle(css, type === MessageType.BG_ADD_STATIC_THEME ? 'static' : 'filter'); + if (detectDarkTheme) { + runDarkThemeDetector((hasDarkTheme) => { + if (hasDarkTheme) { + removeStyle(); + } + }); + } break; } case MessageType.BG_ADD_SVG_FILTER: { - const {css, svgMatrix, svgReverseMatrix} = data; + const {css, svgMatrix, svgReverseMatrix, detectDarkTheme} = data; removeDynamicTheme(); createOrUpdateSVGFilter(svgMatrix, svgReverseMatrix); createOrUpdateStyle(css, 'filter'); + if (detectDarkTheme) { + runDarkThemeDetector((hasDarkTheme) => { + if (hasDarkTheme) { + removeStyle(); + removeSVGFilter(); + } + }); + } break; } case MessageType.BG_ADD_DYNAMIC_THEME: { - const {filter, fixes, isIFrame} = data; + const {theme, fixes, isIFrame, detectDarkTheme} = data; removeStyle(); - createOrUpdateDynamicTheme(filter, fixes, isIFrame); + createOrUpdateDynamicTheme(theme, fixes, isIFrame); + if (detectDarkTheme) { + runDarkThemeDetector((hasDarkTheme) => { + if (hasDarkTheme) { + removeDynamicTheme(); + } + }); + } break; } case MessageType.BG_EXPORT_CSS: { @@ -85,6 +109,7 @@ function onMessage({type, data}: Message) { removeStyle(); removeSVGFilter(); removeDynamicTheme(); + stopDarkThemeDetector(); break; } case MessageType.BG_RELOAD: diff --git a/src/inject/style.ts b/src/inject/style.ts index 63520a539fe0..4b783bc41364 100644 --- a/src/inject/style.ts +++ b/src/inject/style.ts @@ -7,6 +7,7 @@ export function createOrUpdateStyle(css: string, type: string) { document.documentElement.setAttribute('data-darkreader-mode', type); const style = document.createElement('style'); style.id = 'dark-reader-style'; + style.classList.add('darkreader'); style.type = 'text/css'; style.textContent = css; target.appendChild(style); diff --git a/src/ui/popup/settings-page/detect-dark-theme.tsx b/src/ui/popup/settings-page/detect-dark-theme.tsx new file mode 100644 index 000000000000..612672d7bac9 --- /dev/null +++ b/src/ui/popup/settings-page/detect-dark-theme.tsx @@ -0,0 +1,20 @@ +import {m} from 'malevic'; +import CheckButton from '../check-button'; +import type {ViewProps} from '../types'; + +export default function DetectDarkTheme(props: ViewProps) { + function onDetectDarkThemeChange(checked: boolean) { + props.actions.changeSettings({detectDarkTheme: checked}); + } + + return ( + + ); +} diff --git a/src/ui/popup/settings-page/index.tsx b/src/ui/popup/settings-page/index.tsx index 1fafae0cd73d..b502a2f6932f 100644 --- a/src/ui/popup/settings-page/index.tsx +++ b/src/ui/popup/settings-page/index.tsx @@ -5,6 +5,7 @@ import DevToolsGroup from './devtools'; import ManageSettingsButton from './mange-settings-button'; import SiteListButton from './site-list-button'; import EnabledByDefaultGroup from './enabled-by-default'; +import DetectDarkThemeGroup from './detect-dark-theme'; import ChangeBrowserTheme from './change-browser-theme'; import ContextMenusGroup from './context-menus'; import Version from './version'; @@ -26,6 +27,7 @@ export default function SettingsPage(props: SettingsPageProps) { + ); diff --git a/src/utils/color.ts b/src/utils/color.ts index dc5e756bdc22..0ce39d0fd7ab 100644 --- a/src/utils/color.ts +++ b/src/utils/color.ts @@ -263,7 +263,7 @@ export function lowerCalcExpression(color: string): string { // the calc(...) expression. let searchIndex = 0; - const replaceBetweenIndices = (start: number, end:number, replacement: string) => { + const replaceBetweenIndices = (start: number, end: number, replacement: string) => { color = color.substring(0, start) + replacement + color.substring(end); }; @@ -533,3 +533,8 @@ const systemColors: Map = new Map(Object.entries({ WindowText: 0x000000, '-webkit-focus-ring-color': 0xe59700 }).map(([key, value]) => [key.toLowerCase(), value] as [string, number])); + +// https://en.wikipedia.org/wiki/Relative_luminance +export function getSRGBLightness(r: number, g: number, b: number) { + return (0.2126 * r + 0.7152 * g + 0.0722 * b) / 255; +} From 82a692d59a50bdb592984a6d983c2116ad01dec7 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Fri, 4 Mar 2022 14:13:01 +0000 Subject: [PATCH 479/892] Fixed TSConfig warning (#8344) --- src/tsconfig.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/tsconfig.json b/src/tsconfig.json index 76c9255fc772..c539e197b460 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -20,5 +20,8 @@ "resolveJsonModule": true, "jsx": "react", "jsxFactory": "m", - } + }, + "exclude": [ + "src/ui/popup/compatibility.js" + ] } From 460225eec8494c5d83969dd579035446248b8cdf Mon Sep 17 00:00:00 2001 From: Matt Alexander Date: Fri, 4 Mar 2022 11:27:08 -0600 Subject: [PATCH 480/892] Update snapshots relating to "Fixed TSConfig warning (#8344)" (#8346) --- tests/project/__snapshots__/tsconf.tests.ts.snap | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/project/__snapshots__/tsconf.tests.ts.snap b/tests/project/__snapshots__/tsconf.tests.ts.snap index 8557149fc11c..ab3af6419225 100644 --- a/tests/project/__snapshots__/tsconf.tests.ts.snap +++ b/tests/project/__snapshots__/tsconf.tests.ts.snap @@ -25,6 +25,9 @@ Object { "offscreencanvas", ], }, + "exclude": Array [ + "src/ui/popup/compatibility.js", + ], "files": Array [ "./defaults.ts", "./definitions.d.ts", @@ -56,6 +59,7 @@ Object { "./generators/utils/format.ts", "./generators/utils/matrix.ts", "./generators/utils/parse.ts", + "./inject/detector.ts", "./inject/fallback.ts", "./inject/index.ts", "./inject/style.ts", @@ -148,6 +152,7 @@ Object { "./ui/popup/settings-page/automation-button.tsx", "./ui/popup/settings-page/change-browser-theme.tsx", "./ui/popup/settings-page/context-menus.tsx", + "./ui/popup/settings-page/detect-dark-theme.tsx", "./ui/popup/settings-page/devtools.tsx", "./ui/popup/settings-page/enabled-by-default.tsx", "./ui/popup/settings-page/index.tsx", @@ -164,6 +169,7 @@ Object { "./ui/popup/theme/controls/font-picker.tsx", "./ui/popup/theme/controls/format.ts", "./ui/popup/theme/controls/grayscale.tsx", + "./ui/popup/theme/controls/immediate-modify.tsx", "./ui/popup/theme/controls/index.tsx", "./ui/popup/theme/controls/mode.tsx", "./ui/popup/theme/controls/reset-button.tsx", @@ -233,6 +239,9 @@ Object { "offscreencanvas", ], }, + "exclude": Array [ + "../src/ui/popup/compatibility.js", + ], "files": Array [ "./chrome.ts", "./fetch.ts", From a1f7b345dfd2a185799b01a557f4b32c3dece8cb Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Fri, 4 Mar 2022 18:09:24 +0000 Subject: [PATCH 481/892] Fixed TSConfig warning (2nd attempt) (#8347) --- src/tsconfig.json | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/tsconfig.json b/src/tsconfig.json index c539e197b460..4d3119ec2c16 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -20,8 +20,6 @@ "resolveJsonModule": true, "jsx": "react", "jsxFactory": "m", - }, - "exclude": [ - "src/ui/popup/compatibility.js" - ] + "noEmit": true + } } From ca4a603c1f0f2960af61f53c886d26e8824a29bf Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Fri, 4 Mar 2022 20:36:54 +0000 Subject: [PATCH 482/892] Dark theme detection UI message (#8350) --- src/background/extension.ts | 6 +++++- src/background/tab-manager.ts | 10 ++++++++++ src/definitions.d.ts | 1 + src/inject/index.ts | 7 +++++++ src/ui/connect/mock.ts | 1 + src/ui/popup/main-page/site-toggle.tsx | 13 ++++++------- src/utils/message.ts | 2 ++ 7 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/background/extension.ts b/src/background/extension.ts index c50803a70238..0976adf8d25d 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -249,6 +249,9 @@ export class Extension implements ExtensionState { const url = await this.tabs.getActiveTabURL(); const info = this.getURLInfo(url); info.isInjected = await this.tabs.canAccessActiveTab(); + if (this.user.settings.detectDarkTheme) { + info.isDarkThemeDetected = await this.tabs.isActiveTabDarkThemeDetected(); + } return info; }, changeSettings: (settings) => this.changeSettings(settings), @@ -580,7 +583,8 @@ export class Extension implements ExtensionState { url, isInDarkList, isProtected, - isInjected: null + isInjected: null, + isDarkThemeDetected: null, }; } diff --git a/src/background/tab-manager.ts b/src/background/tab-manager.ts index 9dd0d1167e68..516799faa860 100644 --- a/src/background/tab-manager.ts +++ b/src/background/tab-manager.ts @@ -28,6 +28,7 @@ interface FrameInfo { url?: string; state: DocumentState; timestamp: number; + darkThemeDetected?: boolean; } interface TabManagerState { @@ -174,6 +175,10 @@ export default class TabManager { this.stateManager.saveState(); break; } + case MessageType.CS_DARK_THEME_DETECTED: { + this.tabs[sender.tab.id][sender.frameId].darkThemeDetected = true; + break; + } case MessageType.CS_FETCH: { // Using custom response due to Chrome and Firefox incompatibility @@ -294,6 +299,11 @@ export default class TabManager { return Boolean(this.tabs[tab.id]); } + async isActiveTabDarkThemeDetected() { + const tab = await this.getActiveTab(); + return this.tabs[tab.id] && this.tabs[tab.id][0] && this.tabs[tab.id][0].darkThemeDetected; + } + async getActiveTabURL() { return this.getTabURL(await this.getActiveTab()); } diff --git a/src/definitions.d.ts b/src/definitions.d.ts index baa9f732e38e..5fc4ab9316df 100644 --- a/src/definitions.d.ts +++ b/src/definitions.d.ts @@ -119,6 +119,7 @@ export interface TabInfo { isProtected: boolean; isInjected: boolean; isInDarkList: boolean; + isDarkThemeDetected: boolean; } export interface Message { diff --git a/src/inject/index.ts b/src/inject/index.ts index ec64288a7204..713530dfef81 100644 --- a/src/inject/index.ts +++ b/src/inject/index.ts @@ -67,6 +67,7 @@ function onMessage({type, data}: Message) { runDarkThemeDetector((hasDarkTheme) => { if (hasDarkTheme) { removeStyle(); + onDarkThemeDetected(); } }); } @@ -82,6 +83,7 @@ function onMessage({type, data}: Message) { if (hasDarkTheme) { removeStyle(); removeSVGFilter(); + onDarkThemeDetected(); } }); } @@ -95,6 +97,7 @@ function onMessage({type, data}: Message) { runDarkThemeDetector((hasDarkTheme) => { if (hasDarkTheme) { removeDynamicTheme(); + onDarkThemeDetected(); } }); } @@ -136,6 +139,10 @@ function onResume() { sendMessage({type: MessageType.CS_FRAME_RESUME}); } +function onDarkThemeDetected() { + sendMessage({type: MessageType.CS_DARK_THEME_DETECTED}); +} + // Thunderbird don't has "tabs", and emails aren't 'frozen' or 'cached'. // And will currently error: `Promise rejected after context unloaded: Actor 'Conduits' destroyed before query 'RuntimeMessage' was resolved` if (!isThunderbird) { diff --git a/src/ui/connect/mock.ts b/src/ui/connect/mock.ts index affedb31e380..97046753d12e 100644 --- a/src/ui/connect/mock.ts +++ b/src/ui/connect/mock.ts @@ -87,5 +87,6 @@ export function getMockActiveTabInfo(): TabInfo { isProtected: false, isInDarkList: false, isInjected: true, + isDarkThemeDetected: false, }; } diff --git a/src/ui/popup/main-page/site-toggle.tsx b/src/ui/popup/main-page/site-toggle.tsx index 365223aaaad3..04ceec12cc64 100644 --- a/src/ui/popup/main-page/site-toggle.tsx +++ b/src/ui/popup/main-page/site-toggle.tsx @@ -6,13 +6,12 @@ import type {ViewProps} from '../types'; export default function SiteToggleGroup(props: ViewProps) { const isPageEnabled = isURLEnabled(props.tab.url, props.data.settings, props.tab); - const descriptionText = isPDF(props.tab.url) ? - isPageEnabled ? - 'Enabled for PDF files' : - 'Disabled for PDF files' : - isPageEnabled ? - 'Enabled for current website' : - 'Disabled for current website'; + const {isDarkThemeDetected} = props.tab; + const descriptionText = isPDF(props.tab.url) ? ( + isPageEnabled ? 'Enabled for PDF files' : 'Disabled for PDF files' + ) : isDarkThemeDetected ? 'Dark theme detected on page' : ( + isPageEnabled ? 'Enabled for current website' : 'Disabled for current website' + ); const description = ( Date: Fri, 4 Mar 2022 21:37:31 +0000 Subject: [PATCH 483/892] Fix for flashscore.com.tr (#8354) - Resolves #8353 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a444c2a7f45a..1391410772ae 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5977,6 +5977,13 @@ INVERT ================================ +flashscore.com.tr + +INVERT +.header__logo + +================================ + flightfinder.fi INVERT From 40ae55dac4a8ae711e97921352af893080f76319 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 4 Mar 2022 21:56:26 +0000 Subject: [PATCH 484/892] Fix for aosogrenci.anadolu.edu.tr (#8356) - Resolves #8355 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1391410772ae..d1da595b5c5c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -971,6 +971,15 @@ IGNORE IMAGE ANALYSIS ================================ +aosogrenci.anadolu.edu.tr + +CSS +.welcome { + background-image: none !important; +} + +================================ + apclassroom.collegeboard.org INVERT From 2ada42e8048fc58a7d1884d50b883047aa9a81de Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 4 Mar 2022 22:28:38 +0000 Subject: [PATCH 485/892] Fix for gittigidiyor.com (#8361) - Resolves #8358 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d1da595b5c5c..2864a7fec145 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6894,6 +6894,15 @@ table.code .line_content *:not(pre), ================================ +gittigidiyor.com + +CSS +img[data-testid="productImage"] { + mix-blend-mode: normal !important; +} + +================================ + giveawayoftheday.com INVERT From 8c4c6aad34a542c3e72f8aed9f12187d26e290d4 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 4 Mar 2022 22:38:10 +0000 Subject: [PATCH 486/892] Fix for forums.comodo.com (#8362) - Resolves #8360 --- src/config/dynamic-theme-fixes.config | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2864a7fec145..c66383baa329 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6270,6 +6270,21 @@ a[data-mentionid], ================================ +forums.comodo.com + +INVERT +.windowbg span.topslice +.windowbg span.botslice +.windowbg2 span.topslice +.windowbg2 span.botslice + +CSS +body { + background-image: none !important; +} + +================================ + forums.gearsofwar.com IGNORE IMAGE ANALYSIS From 187080f735f58e3450676c1d04aa8ad67e8915a3 Mon Sep 17 00:00:00 2001 From: xxyzz Date: Sat, 5 Mar 2022 06:58:53 +0800 Subject: [PATCH 487/892] Invert MDN logo text and icon (#8334) * Invert MDN icon * Set MDN logo text to neutral color --- src/config/dynamic-theme-fixes.config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c66383baa329..7e35f7cc6bff 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4163,7 +4163,6 @@ CSS developer.mozilla.org INVERT -.logo .copy-icon .bc-browsers > th > span::before .bc-platforms > th::before @@ -4174,8 +4173,10 @@ a.external::after .breadcrumbs-container li .breadcrumb-penultimate::after .breadcrumbs-container li .breadcrumb::after ul.main-menu .top-level-entry::before +span.icon CSS +.logo-text, .search-results-list mark { color: var(--darkreader-neutral-text) !important; } From 3ad7787565c258e09da5c172a41823410b239ba0 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 4 Mar 2022 22:59:40 +0000 Subject: [PATCH 488/892] Add stub for `item` function. (#8363) - Implement a `item` function like the StyleSheetList should have. - Resolves #8349 --- src/inject/dynamic-theme/stylesheet-proxy.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/inject/dynamic-theme/stylesheet-proxy.ts b/src/inject/dynamic-theme/stylesheet-proxy.ts index 5f1bfd186962..23f4fc150ef0 100644 --- a/src/inject/dynamic-theme/stylesheet-proxy.ts +++ b/src/inject/dynamic-theme/stylesheet-proxy.ts @@ -77,9 +77,15 @@ export function injectProxy(enableStyleSheetsProxy: boolean) { const getCurrentValue = () => { const docSheets = documentStyleSheetsDescriptor.get.call(this); - return Object.setPrototypeOf([...docSheets].filter((styleSheet: CSSStyleSheet) => { + const filteredSheets = [...docSheets].filter((styleSheet: CSSStyleSheet) => { return !(styleSheet.ownerNode as HTMLElement).classList.contains('darkreader'); - }), StyleSheetList.prototype); + }); + + (filteredSheets as any).item = (item: number) => { + return filteredSheets[item]; + }; + + return Object.setPrototypeOf(filteredSheets, StyleSheetList.prototype); }; let elements = getCurrentValue(); From 526dd3690cba0ebeb6cab913c7e7117deef2f212 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 4 Mar 2022 23:11:15 +0000 Subject: [PATCH 489/892] Fix for forums.comodo.com (#8364) - Fix buttons --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7e35f7cc6bff..f0cec66d91fc 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6283,6 +6283,9 @@ CSS body { background-image: none !important; } +.buttonlist ul li a span:not(:hover) { + color: ${white} !important; +} ================================ From f2fea2a35a6685760e9294b823b8fdf762ed9bc3 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Sat, 5 Mar 2022 20:24:03 +0800 Subject: [PATCH 490/892] Fix for cnki.net (#8366) - Invert another logo --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index f0cec66d91fc..40c9dfe880da 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3081,6 +3081,7 @@ cnki.net INVERT .hello-yx-box +.klogin_header_Logo .search-main > .input-box > .search-btn .Logo From ede8166070e98d18ae5355ff90788642a0964fb8 Mon Sep 17 00:00:00 2001 From: Pat Nafarrete Date: Sat, 5 Mar 2022 18:11:29 +0000 Subject: [PATCH 491/892] Fix for freedom.press (#8367) --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 40c9dfe880da..4cb32e4aee14 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6347,6 +6347,13 @@ CSS ================================ +freedom.press + +INVERT +.logo-heading-text + +================================ + freelancer.com INVERT From 4c67e528ff60a430f62e751c84c0f729ae73a764 Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Sat, 5 Mar 2022 21:13:19 +0300 Subject: [PATCH 492/892] Fix for inc.com (#8369) - Invert logos. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4cb32e4aee14..fdee7e3529c4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7988,6 +7988,13 @@ CSS ================================ +inc.com + +INVERT +svg[class*="logo"] + +================================ + independent.co.uk INVERT From 4d7216e3a890bff0e8f5c72acf01cf276f65abb3 Mon Sep 17 00:00:00 2001 From: Cassidy Marble Date: Sun, 6 Mar 2022 04:53:45 -0700 Subject: [PATCH 493/892] Fix for patreon.com (#8365) - invert google docs and forms preview - no image analysis --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index fdee7e3529c4..c157fcfdc391 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12209,6 +12209,17 @@ pre { ================================ +patreon.com + +INVERT +a[href^="https://docs.google.com"] img +a[href^="https://forms.gle"] img + +IGNORE IMAGE ANALYSIS +* + +================================ + paulgraham.com CSS From fda8f2ca0821fba2a77b09c47f74818c888a9786 Mon Sep 17 00:00:00 2001 From: Golem64 <65229557+Golem642@users.noreply.github.com> Date: Sun, 6 Mar 2022 13:14:09 +0100 Subject: [PATCH 494/892] Fix for educational french websites (#8373) Added fix for two major french school websites (Toutatice and Pronote) (Updated and fixed from #8359 ) --- src/config/dynamic-theme-fixes.config | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c157fcfdc391..0e5b9b2dff25 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12779,6 +12779,22 @@ body { ================================ +pronote.toutatice.fr + +INVERT +.ObjetGrille +.Cours +.Insecable +.Calendrier_Jour_Selection + +CSS +body, +.ie-chips.tag-style { + background: linear-gradient(90deg, #282c2d 0, #282C2D calc(100% - 0.8rem), transparent calc(100% - 0.8rem), transparent 100%); +} + +================================ + pronto.io CSS @@ -16005,6 +16021,14 @@ CSS ================================ +toutatice.fr + +INVERT +.img-responsive +.banner + +================================ + track.toggl.com CSS From 46ea2068572afde03de8a7c8d6e8902f6e487d67 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 6 Mar 2022 12:44:56 +0000 Subject: [PATCH 495/892] Fix for openbenchmarking.org (#8378) - Resolves #8374 --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0e5b9b2dff25..e8b61a62e413 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11949,6 +11949,17 @@ INVERT ================================ +openbenchmarking.org + +INVERT +g[font-size]:not(g[font-size][fill^="#fff" i]:not(.oborg_expandable_result g)) +g[font-size]:not(g[font-size][fill^="#fff" i]) > text[fill="#005a00"] + +IGNORE INLINE STYLE +g[font-size][fill^="#fff" i] + +================================ + opencollective.com INVERT From 291524dd6894653354af5f5d6ead6396c01d93ef Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Sun, 6 Mar 2022 20:58:57 +0800 Subject: [PATCH 496/892] Fix for qcc.com (#8379) - Invert logo - Invert some bright banners --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e8b61a62e413..1ff6c5045c43 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12952,6 +12952,15 @@ CSS ================================ +qcc.com + +INVERT +.app-login-insert +.logo +.pay-insert + +================================ + quantrimang.com CSS From ecee97b2e23f34f98a57034b59f7daac5531fbc1 Mon Sep 17 00:00:00 2001 From: Finn <34682885+0xhtml@users.noreply.github.com> Date: Sun, 6 Mar 2022 14:08:52 +0100 Subject: [PATCH 497/892] Fix for chessprogramming.org (#8377) * Fix for chessprogramming.org - Correctly invert logo - Invert embedded images * Fix for chessprogramming.org - Narrow down image selector --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1ff6c5045c43..320070ab1f99 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2819,6 +2819,17 @@ INVERT ================================ +chessprogramming.org + +INVERT +.mw-parser-output div[class^='float'] > a > img:not(.thumbimage):not(.thumbborder) +.mw-wiki-logo + +IGNORE IMAGE ANALYSIS +.mw-wiki-logo + +================================ + chilkatsoft.com CSS From 8779ff526ae5cd935df21af9afa12cb5a0186f65 Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Tue, 8 Mar 2022 00:39:56 +0300 Subject: [PATCH 498/892] Fix for wikipedia.org (#8371) - Invert editor toolbar icons. - Invert notification icons. - Invert audio speaker icon. --- src/config/dynamic-theme-fixes.config | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 320070ab1f99..789d82ab3e12 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17480,11 +17480,14 @@ body > .oo-ui-windowManager .vega .marks .minerva-footer-logo img .music-symbol .tool.tool-button[src$="background-image:"] -.oo-ui-iconElement-icon #p-personal .mw-echo-notifications-badge .mw-ui-icon::before .mw-kartographer-map .mw-kartographer-mapDialog-map +.oo-ui-iconElement-icon +.oo-ui-indicatorElement-indicator +.mw-echo-notifications-badge +img[alt="audio speaker icon"] CSS .mwe-popups-discreet > svg, From 0399a789e2d27c376e605cae95e1f26a21263206 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Mon, 7 Mar 2022 14:50:16 -0700 Subject: [PATCH 499/892] Fix for washingtonpost.com (#8383) - Invert logos - Invert dark toggle switch --- src/config/dynamic-theme-fixes.config | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 789d82ab3e12..ebf4fa14e9b6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17050,7 +17050,9 @@ CSS washingtonpost.com INVERT -.masthead_svg__wplogo +.hp-masthead +.switch +.switch::after CSS .flex * { @@ -17058,7 +17060,7 @@ CSS } IGNORE INLINE STYLE -a[href="https://washingtonpost.com"][class*="center"] svg path +.center > svg > path[fill="white"] ================================ From 4d48592163d757697649b39c4244ad957d8d5042 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 7 Mar 2022 21:55:07 +0000 Subject: [PATCH 500/892] Fix for bestchange.ru (#8389) - Resolves #8382 --- src/config/dynamic-theme-fixes.config | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ebf4fa14e9b6..770edb33045e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1816,6 +1816,24 @@ input[type="radio" i] { ================================ +bestchange.ru + +INVERT +.tabs li a + +CSS +body, +.c-inner, +.c-block .c-wrap, +#content_table thead td, +.content .intro, +.c-block, +#content_table tbody td { + background-image: none !important; +} + +================================ + betanews.com CSS From 7270a89246427f20266ae45c999d94a4bf1ee253 Mon Sep 17 00:00:00 2001 From: Golem64 <65229557+Golem642@users.noreply.github.com> Date: Mon, 7 Mar 2022 23:00:24 +0100 Subject: [PATCH 501/892] Added dark sites (#8386) --- src/config/dark-sites.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index bd27383b1f60..f75b800ca2fc 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -368,6 +368,7 @@ gekri.com generated.photos genshin.gg geocities.restorativland.org +geometry.best getaether.net getdweb.net gethalfmoon.com @@ -822,6 +823,7 @@ seximal.net sharkiller.ddns.net shatteredpixel.com sheet.host +shellshock.io sherlock-project.github.io showtimeanytime.com shpposter.club From 16f6f904dda15474013d3c67ca3ce7c70e35de9b Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 7 Mar 2022 22:04:05 +0000 Subject: [PATCH 502/892] Fix for github.com (#8390) - Resolves #8388 --- src/config/dynamic-theme-fixes.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 770edb33045e..2da5b2165ae9 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6896,6 +6896,8 @@ IGNORE INLINE STYLE a[href^="https://apps.apple.com/app/"] g a[href^="https://apps.apple.com/app/"] path tracked-issues-progress svg * +div#user-repositories-list .tooltipped svg * +div#org-repositories .tooltipped svg * ================================ From e2cad2da1bf41a23546e969380c47e089d85f94c Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Tue, 8 Mar 2022 10:49:55 -0700 Subject: [PATCH 503/892] Fix for kyivindependent.com (#8391) - Invert logo. - Fix Patreon icon coloring at top of page. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2da5b2165ae9..366740b856a6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9030,6 +9030,14 @@ INVERT ================================ +kyivindependent.com + +INVERT +.custom-logo-link +.donate__patreon::before + +================================ + labfolder.com CSS From 48b9aa55fdcad72cb2b2a14e2d630191352bd95c Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Tue, 8 Mar 2022 20:53:33 +0300 Subject: [PATCH 504/892] Fix for bestchange.ru (#8392) - Remove background image for reviews. --- src/config/dynamic-theme-fixes.config | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 366740b856a6..e5c3fad7654f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1828,7 +1828,11 @@ body, #content_table thead td, .content .intro, .c-block, -#content_table tbody td { +#content_table tbody td, +#content_reviews, +.review_header, +.review_middle, +.review_bottom { background-image: none !important; } From 828f6c3839145b99c34d1bd1a78787e543373c77 Mon Sep 17 00:00:00 2001 From: Matt Alexander Date: Tue, 8 Mar 2022 12:02:20 -0600 Subject: [PATCH 505/892] Fix tasks/build.js ignoring Ctrl+C (#8348) Co-authored-by: Gusted --- package-lock.json | 117 +++++++++++++----- package.json | 4 +- tasks/build.js | 20 +++ .../__snapshots__/tsconf.tests.ts.snap | 8 +- tests/project/build.tests.ts | 59 ++++++--- tests/project/tsconf.tests.ts | 38 +++--- tests/project/tsconfig.json | 21 +++- tests/project/utils.ts | 75 +++++++---- tests/support/test-utils.ts | 14 +++ 9 files changed, 256 insertions(+), 100 deletions(-) diff --git a/package-lock.json b/package-lock.json index d5c56fd56f7c..72890b5dc8cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,6 +27,7 @@ "eslint": "8.10.0", "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", + "get-stream": "^6.0.1", "globby": "13.1.1", "jasmine-core": "4.0.1", "jest": "27.5.1", @@ -4948,18 +4949,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -5117,6 +5106,21 @@ "@types/yauzl": "^2.9.1" } }, + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -5638,15 +5642,12 @@ } }, "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8918,6 +8919,21 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/os-locale/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/os-locale/node_modules/human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", @@ -9088,6 +9104,21 @@ "node": ">=8" } }, + "node_modules/package-json/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/package-json/node_modules/got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -15961,14 +15992,6 @@ "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - } } }, "exit": { @@ -16091,6 +16114,17 @@ "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } } }, "extsprintf": { @@ -16516,13 +16550,10 @@ "dev": true }, "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true }, "get-symbol-description": { "version": "1.0.0", @@ -19029,6 +19060,15 @@ "strip-final-newline": "^2.0.0" } }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", @@ -19155,6 +19195,15 @@ } } }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", diff --git a/package.json b/package.json index 1749cec09eea..d851d466e781 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "test:inject:debug": "node tests/inject/run.js --debug", "test:project": "jest --config=tests/project/jest.config.js", "test:unit": "jest --config=tests/unit/jest.config.js", - "test:unit:debug": "node --inspect-brk ./node_modules/jest/bin/jest --config=tests/unit/jest.config.js --runInBand --no-cache --watch" + "test:unit:debug": "node --inspect-brk ./node_modules/jest/bin/jest --config=tests/unit/jest.config.js --runInBand --no-cache --watch", + "test:update-snapshots": "npm run test -- --updateSnapshot && npm run test:project -- --updateSnapshot" }, "main": "darkreader.js", "repository": { @@ -83,6 +84,7 @@ "eslint": "8.10.0", "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", + "get-stream": "6.0.1", "globby": "13.1.1", "jasmine-core": "4.0.1", "jest": "27.5.1", diff --git a/tasks/build.js b/tasks/build.js index 189f0da4c48d..ccb71fc8d0aa 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -11,6 +11,7 @@ const codeStyle = require('./code-style'); const zip = require('./zip'); const {runTasks} = require('./task'); const {log} = require('./utils'); +const {fork} = require('child_process'); const standardTask = [ clean, @@ -55,9 +56,28 @@ async function api() { } } +async function executeChildProcess(args) { + if (process.env.BUILD_CHILD) { + throw new Error('Infinite loop'); + } + const env = {...process.env, BUILD_CHILD: '1'}; + const child = fork(__filename, args, {env}); + // Send SIGINTs as SIGKILLs, which are not ignored + process.on('SIGINT', () => { + child.kill('SIGKILL'); + process.exit(130); + }); + return new Promise((resolve, reject) => child.on('error', reject).on('close', resolve)); +} + async function run() { const args = process.argv.slice(2); + // Enable Ctrl+C to cancel the build immediately + if (!process.env.BUILD_CHILD) { + return executeChildProcess(args); + } + if (args.includes('--release')) { await build({debug: false, watch: false}); } diff --git a/tests/project/__snapshots__/tsconf.tests.ts.snap b/tests/project/__snapshots__/tsconf.tests.ts.snap index ab3af6419225..fedd4972c6da 100644 --- a/tests/project/__snapshots__/tsconf.tests.ts.snap +++ b/tests/project/__snapshots__/tsconf.tests.ts.snap @@ -17,6 +17,7 @@ Object { ], "module": "es6", "moduleResolution": "node", + "noEmit": true, "noImplicitAny": true, "resolveJsonModule": true, "target": "es2019", @@ -25,9 +26,6 @@ Object { "offscreencanvas", ], }, - "exclude": Array [ - "src/ui/popup/compatibility.js", - ], "files": Array [ "./defaults.ts", "./definitions.d.ts", @@ -231,6 +229,7 @@ Object { ], "module": "es6", "moduleResolution": "node", + "noEmit": true, "noImplicitAny": true, "resolveJsonModule": true, "target": "es5", @@ -239,9 +238,6 @@ Object { "offscreencanvas", ], }, - "exclude": Array [ - "../src/ui/popup/compatibility.js", - ], "files": Array [ "./chrome.ts", "./fetch.ts", diff --git a/tests/project/build.tests.ts b/tests/project/build.tests.ts index 0a422f3b2896..1e37773e58fa 100644 --- a/tests/project/build.tests.ts +++ b/tests/project/build.tests.ts @@ -1,27 +1,52 @@ -/** - * NOTE: This test deletes ./build and ./darkreader.js - * (but does not run automatically) - */ -import {forka} from './utils'; -import {resolve, join} from 'path'; +import {timeout} from '../support/test-utils'; +import {childClosed, watchStream} from './utils'; +import {join, resolve} from 'path'; import {tmpdir} from 'os'; -import {mkdtemp, rm} from 'fs/promises'; +import {mkdtemp} from 'fs/promises'; +import {fork} from 'child_process'; const rootPath = (path: string) => resolve(__dirname, '../..', path); const buildModule = rootPath('tasks/build.js'); -describe.skip('build.js', () => { - it('Builds from a different dir', async () => { - // Build from temp dir instead of root dir - const cwd = await mkdtemp(join(tmpdir())); - await rm(rootPath('build'), {recursive: true, force: true}); - await rm(rootPath('darkreader.js'), {force: true}); +describe('tasks/build-js.js', () => { + it('should respond to SIGINT signals by exiting immediately', async () => { + expect.assertions(3); + const tmpDir: string = await mkdtemp(join(tmpdir())); + const wantToWaitNoMoreThan = 500; + + // Execute build + // Give it a chance to reach compilation stage + const child = fork(buildModule, ['--debug'], {cwd: tmpDir, silent: true}); + + // Wait for "clean" step to complete + await watchStream(child.stdout).forMatch(/ clean \(\d+ms\)/); + // Let "bundle-js" to get started + await timeout(500); + + // Fire! + child.kill('SIGINT'); + + // Wait for close + await childClosed(child, {timeout: wantToWaitNoMoreThan}); + + expect(child.killed).toBeTrue(); + expect(child.exitCode).toBeGreaterThan(0); + + // By now, "bundle-js" step should not have completed normally + expect((child.stdout.read() || '')).not.toMatch(/ bundle-js \(\d+ms\)/); + }); +}); + +describe('tasks/build.js', () => { + // Slow test (run using `npm run test:project`) + it('should build successfully from an unexpected working directory', async () => { + const tmpDir: string = await mkdtemp(join(tmpdir())); // Fire - const {code, stdout} = await forka(buildModule, ['--debug', '--release', '--api'], {cwd}); + const child = fork(buildModule, ['--debug', '--release', '--api'], {cwd: tmpDir, silent: true}); - expect(stdout).toBeDefined(); + const {stdout} = await childClosed(child); expect(stdout).toInclude('MISSION PASSED'); - expect(code).toBe(0); - }, 60000); + expect(child.exitCode).toBe(0); + }, 120000); }); diff --git a/tests/project/tsconf.tests.ts b/tests/project/tsconf.tests.ts index 945d8f10e5f8..b48bbc4e525b 100644 --- a/tests/project/tsconf.tests.ts +++ b/tests/project/tsconf.tests.ts @@ -1,14 +1,14 @@ import ts, {ExitStatus} from 'typescript'; import {dirname, join} from 'path'; -import {ForkOptions} from 'child_process'; +import {fork} from 'child_process'; import {tmpdir} from 'os'; import {mkdtemp} from 'fs/promises'; -import {forka} from './utils'; +import {childClosed} from './utils'; -const rootDir = dirname(require.resolve('../../package.json')) -const tscModule = require.resolve('typescript/bin/tsc'); +const rootDir = dirname(require.resolve('../../package.json')); +const tsc = require.resolve('typescript/bin/tsc'); -const tsProjects: Array<{ tsconfig: string }> = [ +const tsProjects: Array<{tsconfig: string}> = [ // Browser extension {tsconfig: 'src'}, // API @@ -26,27 +26,25 @@ describe('TypeScript project config', () => { // Parse config from temp dir instead of root dir const cwd = await mkdtemp(join(tmpdir())); const project = join(rootDir, tsconfig, 'tsconfig.json'); - const {code, stdout} = await tsc(['--project', project, '--showConfig'], {cwd}); - expect(stdout).toStartWith('{'); - expect(code).toBe(ExitStatus.Success); - const configJson = JSON.parse(stdout); - const config = ts.parseJsonConfigFileContent(configJson, ts.sys, project); + // Fire + const child = fork(tsc, ['--project', project, '--showConfig'], {silent: true, cwd}); + const {response} = await childClosed(child, {serialization: 'json'}); + expect(child.exitCode).toBe(ExitStatus.Success); + const config = ts.parseJsonConfigFileContent(response, ts.sys, project); expect(config.raw).toMatchSnapshot(); - }); + }, 100000); - // Slow and not executed automatically - it.skip.each(tsProjects)('should compile without errors: $tsconfig', async ({tsconfig}) => { + // Slow test (run using `npm run test:project`) + it.each(tsProjects)('should compile without errors: $tsconfig', async ({tsconfig}) => { // Compile config from temp dir instead of root dir const cwd = await mkdtemp(join(tmpdir())); const project = join(rootDir, tsconfig, 'tsconfig.json'); - const {code, stdout} = await tsc(['--project', project, '--noEmit'], {cwd}); - expect(stdout).toBeUndefined(); - expect(code).toBe(ExitStatus.Success); + + // Fire + const child = fork(tsc, ['--project', project, '--noEmit'], {silent: true, cwd}); + await childClosed(child); + expect(child.exitCode).toBe(ExitStatus.Success); }, 60000); }); - -async function tsc(args: string[], options?: ForkOptions) { - return forka(tscModule, args, {silent: true, ...options}); -} diff --git a/tests/project/tsconfig.json b/tests/project/tsconfig.json index b62229d000bd..1b3be983cde9 100644 --- a/tests/project/tsconfig.json +++ b/tests/project/tsconfig.json @@ -1,3 +1,22 @@ { - "extends": "../unit/tsconfig", + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "target": "ES2021", + "module": "CommonJS", + "lib": [ + "ES2021", + "Dom" + ], + "types": [ + "node", + "jest", + "jest-extended" + ], + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "noImplicitAny": true, + "inlineSourceMap": true, + "allowJs": true + } } diff --git a/tests/project/utils.ts b/tests/project/utils.ts index dbcd8dcc1e0f..d0878b5d950b 100644 --- a/tests/project/utils.ts +++ b/tests/project/utils.ts @@ -1,25 +1,58 @@ -import type {ForkOptions} from 'child_process'; -import {fork} from 'child_process'; +import type {Readable} from 'stream'; +import {PassThrough} from 'stream'; +import type {ChildProcess} from 'child_process'; +import {once} from 'events'; +import getStream from 'get-stream'; +import {promiseWithTimeout} from '../support/test-utils'; -export interface ResolvedChildProcess { - code: number; - signal: NodeJS.Signals; - stdout: string; - stderr: string; +export type ChildClosedOptions = getStream.OptionsWithEncoding & {serialization?: false | 'json'; timeout?: number}; + +export type ChildClosedPayload = {stdout: string; stderr: string; response?: any}; + +/** + * Returns a promise that resolves with a child process's close event + * Also handles character set decoding, deserialization from JSON, accepts a timeout in ms + * + * @example + * const child = fork('./script.js'); + * const {stdout, stderr, response} = await watchChild(child); + * const {exitCode} = child; + */ +export async function childClosed(child: ChildProcess, options?: ChildClosedOptions): Promise { + const deserialize = (output: string) => options?.serialization === 'json' ? JSON.parse(output) : output; + const collect = async (readable: Readable) => getStream(readable || new PassThrough(), options); + const childPromises = Promise.all([once(child, 'close'), collect(child.stdout), collect(child.stderr)]) + .then(([, stdout, stderr]) => ({stdout, stderr, response: deserialize(stdout)})); + if (options?.timeout) { + return promiseWithTimeout(options.timeout, childPromises); + } + return childPromises; } -export async function forka(modulePath: string, args?: readonly string[], options?: ForkOptions): Promise { - return new Promise((resolve) => { - const proc = fork(modulePath, args, {silent: true, ...options}); - let stdout = '', stderr = ''; - proc.stderr.on('data', (chunk) => { - stderr += chunk.toString(); - }); - proc.stdout.on('data', (chunk) => { - stdout += chunk.toString(); - }); - proc.on('close', (code, signal) => { - resolve({code, signal, stdout: stdout || undefined, stderr: stderr || undefined}); +/** + * Returns a promise that resolves when a certain condition has been met, based on the content of a stream. + * + * @example + * await watchStream(child.stdout).forMatch(/Config loaded/) + * thisRunsAfterConfigLoads(); + */ +export const watchStream = (readable: Readable, options?: {encoding: BufferEncoding}) => { + if (!readable.readableEncoding) { + readable.setEncoding(options?.encoding || 'utf-8'); + } + const forCondition = async (cb: {(value: string): boolean}) => { + await new Promise((resolve, reject) => { + readable.on('close', reject).on('data', (chunk: string) => { + if (chunk && cb(chunk)) { + resolve(); + } + }); }); - }); -} + }; + + const forMatch = async (regExp: RegExp) => { + return await forCondition((chunk: string) => chunk.match(regExp) != null); + }; + + return {forCondition, forMatch}; +}; diff --git a/tests/support/test-utils.ts b/tests/support/test-utils.ts index 7890708fcaca..1146dbb7077c 100644 --- a/tests/support/test-utils.ts +++ b/tests/support/test-utils.ts @@ -13,3 +13,17 @@ export function multiline(...lines: string[]) { export function timeout(delay: number) { return new Promise((resolve) => setTimeout(resolve, delay)); } + +export function promiseWithTimeout(ms: number, promise: Promise): Promise { + let id: ReturnType; + return Promise.race([promise, new Promise((_, reject) => { + id = setTimeout(() => reject(new TimeoutError(ms)), ms); + })]).finally(() => clearTimeout(id)); +} + +class TimeoutError extends Error { + constructor(delay: number) { + super(`timeout exceeded (${delay} ms)`); + this.name = 'TimeoutError'; + } +} From c0151ecbc96b006ea0c4e70e777f1d49f3898e2c Mon Sep 17 00:00:00 2001 From: TheSusian Date: Tue, 8 Mar 2022 21:27:02 +0300 Subject: [PATCH 506/892] Added dark sites (#8397) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index f75b800ca2fc..22c8b027f4de 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -531,6 +531,7 @@ lightweightpdf.com limeshark.dev/editor link.brawlstars.com/invite linux.org.ru +linuxgamingcentral.com lipu-linku.github.io liquidplus.com listen.moe From 7a1005f3aa730aa993d9a29a0da3794e88622c82 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 8 Mar 2022 19:00:29 +0000 Subject: [PATCH 507/892] Fix for librewolf.com (#8399) - Resolves #8398 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e5c3fad7654f..a903cb69cb15 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9291,6 +9291,15 @@ INVERT ================================ +librewolf.com + +CSS +.docs-container .max-w-screen-md .screenshot + .inner { + background-image: linear-gradient( 180deg, rgba(255, 255, 255, 0) 0%, rgba(26, 24, 26, var(--darkreader-bg--tw-bg-opacity)) 50% ) !important; +} + +================================ + lichess.org CSS From 9b931be7308a77ea16a861cb76a3580895650e3b Mon Sep 17 00:00:00 2001 From: Matt Alexander Date: Tue, 8 Mar 2022 14:20:42 -0600 Subject: [PATCH 508/892] Adding the eslint-plugin-compat plugin (#8210) --- .eslintrc.js | 69 +++++++++- .github/workflows/test.yml | 3 + package-lock.json | 267 ++++++++++++++++++++++++++++++------- package.json | 20 +-- tasks/check-exists.js | 9 ++ 5 files changed, 302 insertions(+), 66 deletions(-) create mode 100644 tasks/check-exists.js diff --git a/.eslintrc.js b/.eslintrc.js index e8d4a5bc63c9..ab13b477739c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,4 +1,10 @@ -module.exports = { +/** @type {import('eslint').Linter.Config} */ +const config = {overrides: []}; + +// Source code (TS, JSX, JS) +config.overrides.push({ + files: ['{src,tasks,tests}/**/*.{ts,tsx,js,jsx}', '.*.js', 'index.d.ts'], + excludedFiles: ['darkreader.js'], parser: '@typescript-eslint/parser', plugins: ['@typescript-eslint', 'local'], extends: ['plugin:@typescript-eslint/recommended', 'plugin:import/recommended', 'plugin:import/typescript'], @@ -163,8 +169,61 @@ module.exports = { } }, ], +}); + +// Bundled JS + +config.overrides.push({ + files: ['darkreader.js', 'build/debug/chrome/**/*.js'], + env: {browser: true}, + extends: ['plugin:compat/recommended'], + parserOptions: { + ecmaVersion: 2019, + sourceType: 'module' + }, + settings: { + polyfills: [ + 'navigator.deviceMemory', + ], + }, + overrides: [ + + // API (modern clients) + { + files: ['darkreader.js'], + rules: { + + // Compatibility check + 'compat/compat': ['error', [ + '>0.5% and supports es5 and supports promises and supports url', + 'not Explorer > 0', + ].join(', ')] + }, + }, + + // Extension (non-mobile browsers based on Firefox or Chromium) + { + files: ['build/debug/chrome/**/*.js'], + rules: { + + // Compatibility check + 'compat/compat': ['error', [ + '> 0.5% and supports es5', + 'Firefox ESR', + 'last 2 FirefoxAndroid versions', + 'not Explorer > 0', + 'not Safari > 0', + 'not iOS > 0', + 'not ChromeAndroid > 0', + 'not OperaMini all', + ].join(', ')] + }, + }, + ], +}); + +// Ignore temporarily since it's taking forever. +// It seems to be importing typescript or something. +config.ignorePatterns = ['tests/project/tsconf.tests.ts']; - // Ignore temporarily since it's taking forever. - // It seems to be importing typescript or something. - ignorePatterns: ['tests/project/tsconf.tests.ts'], -}; +module.exports = config; diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c08a9f69b73a..5b6705055532 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,3 +45,6 @@ jobs: - name: Lint code for code-style errors run: npm run lint + + - name: Check for compatibility issues + run: npm run lint:bundle diff --git a/package-lock.json b/package-lock.json index 72890b5dc8cb..375b63cbfc68 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,9 +25,10 @@ "@typescript-eslint/parser": "5.13.0", "chokidar": "3.5.3", "eslint": "8.10.0", + "eslint-plugin-compat": "4.0.2", "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", - "get-stream": "^6.0.1", + "get-stream": "6.0.1", "globby": "13.1.1", "jasmine-core": "4.0.1", "jest": "27.5.1", @@ -2329,6 +2330,21 @@ "node": ">=0.8" } }, + "node_modules/ast-metadata-inferer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.7.0.tgz", + "integrity": "sha512-OkMLzd8xelb3gmnp6ToFvvsHLtS6CbagTkFQvQ+ZYFe3/AIl9iKikNR9G7pY3GfOR/2Xc222hwBjzI7HLkE76Q==", + "dev": true, + "dependencies": { + "@mdn/browser-compat-data": "^3.3.14" + } + }, + "node_modules/ast-metadata-inferer/node_modules/@mdn/browser-compat-data": { + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-3.3.14.tgz", + "integrity": "sha512-n2RC9d6XatVbWFdHLimzzUJxJ1KY8LdjqrW6YvGPiRmsHkhOUx74/Ct10x5Yo7bC/Jvqx7cDEW8IMPv/+vwEzA==", + "dev": true + }, "node_modules/async": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", @@ -2641,16 +2657,16 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.0.tgz", + "integrity": "sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", + "caniuse-lite": "^1.0.30001313", + "electron-to-chromium": "^1.4.76", "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -2861,9 +2877,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001228", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", - "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", + "version": "1.0.30001314", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001314.tgz", + "integrity": "sha512-0zaSO+TnCHtHJIbpLroX7nsD+vYuOVjl3uzFbJO1wMVbuveJA0RK2WcQA9ZUIOiO0/ArMiMgHJLxfEZhQiC0kw==", "dev": true, "funding": { "type": "opencollective", @@ -3088,12 +3104,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, "node_modules/columnify": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", @@ -4173,9 +4183,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.3.735", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.735.tgz", - "integrity": "sha512-cp7MWzC3NseUJV2FJFgaiesdrS+A8ZUjX5fLAxdRlcaPDkaPGFplX930S5vf84yqDp4LjuLdKouWuVOTwUfqHQ==", + "version": "1.4.77", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.77.tgz", + "integrity": "sha512-fiDxw8mO9Ph1Z0bjX2sFTPpi0J0QkOiwOJF+5Q0J0baNc/F9lLePAvDPlnoxvbUYYMizqrKPeotRRkJ9LtxAew==", "dev": true }, "node_modules/emittery": { @@ -4646,6 +4656,89 @@ "node": ">=4" } }, + "node_modules/eslint-plugin-compat": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.0.2.tgz", + "integrity": "sha512-xqvoO54CLTVaEYGMzhu35Wzwk/As7rCvz/2dqwnFiWi0OJccEtGIn+5qq3zqIu9nboXlpdBN579fZcItC73Ycg==", + "dev": true, + "dependencies": { + "@mdn/browser-compat-data": "^4.1.5", + "ast-metadata-inferer": "^0.7.0", + "browserslist": "^4.16.8", + "caniuse-lite": "^1.0.30001304", + "core-js": "^3.16.2", + "find-up": "^5.0.0", + "lodash.memoize": "4.1.2", + "semver": "7.3.5" + }, + "engines": { + "node": ">=9.x" + }, + "peerDependencies": { + "eslint": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-compat/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-compat/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-compat/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-compat/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-plugin-import": { "version": "2.25.4", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", @@ -8658,9 +8751,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.72", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", - "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", "dev": true }, "node_modules/normalize-path": { @@ -12102,6 +12195,18 @@ "buffer-crc32": "~0.2.3" } }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zip-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-2.0.0.tgz", @@ -13932,6 +14037,23 @@ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, + "ast-metadata-inferer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.7.0.tgz", + "integrity": "sha512-OkMLzd8xelb3gmnp6ToFvvsHLtS6CbagTkFQvQ+ZYFe3/AIl9iKikNR9G7pY3GfOR/2Xc222hwBjzI7HLkE76Q==", + "dev": true, + "requires": { + "@mdn/browser-compat-data": "^3.3.14" + }, + "dependencies": { + "@mdn/browser-compat-data": { + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-3.3.14.tgz", + "integrity": "sha512-n2RC9d6XatVbWFdHLimzzUJxJ1KY8LdjqrW6YvGPiRmsHkhOUx74/Ct10x5Yo7bC/Jvqx7cDEW8IMPv/+vwEzA==", + "dev": true + } + } + }, "async": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", @@ -14180,16 +14302,16 @@ "dev": true }, "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.0.tgz", + "integrity": "sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", + "caniuse-lite": "^1.0.30001313", + "electron-to-chromium": "^1.4.76", "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" } }, "bs-logger": { @@ -14342,9 +14464,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001228", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", - "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", + "version": "1.0.30001314", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001314.tgz", + "integrity": "sha512-0zaSO+TnCHtHJIbpLroX7nsD+vYuOVjl3uzFbJO1wMVbuveJA0RK2WcQA9ZUIOiO0/ArMiMgHJLxfEZhQiC0kw==", "dev": true }, "caseless": { @@ -14510,12 +14632,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, "columnify": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", @@ -15396,9 +15512,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.735", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.735.tgz", - "integrity": "sha512-cp7MWzC3NseUJV2FJFgaiesdrS+A8ZUjX5fLAxdRlcaPDkaPGFplX930S5vf84yqDp4LjuLdKouWuVOTwUfqHQ==", + "version": "1.4.77", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.77.tgz", + "integrity": "sha512-fiDxw8mO9Ph1Z0bjX2sFTPpi0J0QkOiwOJF+5Q0J0baNc/F9lLePAvDPlnoxvbUYYMizqrKPeotRRkJ9LtxAew==", "dev": true }, "emittery": { @@ -15803,6 +15919,61 @@ } } }, + "eslint-plugin-compat": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.0.2.tgz", + "integrity": "sha512-xqvoO54CLTVaEYGMzhu35Wzwk/As7rCvz/2dqwnFiWi0OJccEtGIn+5qq3zqIu9nboXlpdBN579fZcItC73Ycg==", + "dev": true, + "requires": { + "@mdn/browser-compat-data": "^4.1.5", + "ast-metadata-inferer": "^0.7.0", + "browserslist": "^4.16.8", + "caniuse-lite": "^1.0.30001304", + "core-js": "^3.16.2", + "find-up": "^5.0.0", + "lodash.memoize": "4.1.2", + "semver": "7.3.5" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + } + } + }, "eslint-plugin-import": { "version": "2.25.4", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", @@ -18871,9 +19042,9 @@ "dev": true }, "node-releases": { - "version": "1.1.72", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", - "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", "dev": true }, "normalize-path": { @@ -21516,6 +21687,12 @@ "buffer-crc32": "~0.2.3" } }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, "zip-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-2.0.0.tgz", diff --git a/package.json b/package.json index d851d466e781..8dfa2e3d36e8 100644 --- a/package.json +++ b/package.json @@ -7,10 +7,11 @@ "benchmark-server": "node tests/benchmark-server/index.js", "build": "node tasks/build.js --release", "build:all": "node tasks/build.js --debug --release --api", - "code-style": "eslint --ignore-pattern \"!.eslintplugin.js\" --cache --fix \"src/**/*.ts\" \"src/**/*.tsx\" \"tasks/**/*.js\" \"tests/[!coverage]**/*.js\" \"tests/**/*.ts\" \".eslintrc.js\" \"index.d.ts\" \".eslintplugin.js\"", + "code-style": "eslint --ignore-pattern '!.eslintplugin.js' --cache --fix -- 'src/**/*.ts' 'src/**/*.tsx' 'tasks/**/*.js' 'tests/[!coverage]**/*.js' 'tests/**/*.ts' '.eslintrc.js' 'index.d.ts' '.eslintplugin.js'", "debug": "node tasks/build.js --debug", "debug:watch": "node tasks/build.js --debug --watch", - "lint": "eslint --ignore-pattern \"!.eslintplugin.js\" \"src/**/*.ts\" \"src/**/*.tsx\" \"tasks/**/*.js\" \"tests/**/*.ts\" \"tests/[!coverage]**/*.js\" \"index.d.ts\" \".eslintplugin.js\"", + "lint": "eslint --ignore-pattern '!.eslintplugin.js' -- 'src/**/*.ts' 'src/**/*.tsx' 'tasks/**/*.js' 'tests/**/*.ts' 'tests/[!coverage]**/*.js' 'index.d.ts' '.eslintplugin.js'", + "lint:bundle": "(node ./tasks/check-exists.js ./build/debug/chrome || node tasks/build.js --debug --api) && eslint -- 'build/debug/chrome/**/*.js' 'darkreader.js'", "prepublishOnly": "npm test && npm run api", "release": "npm test && npm run lint && node tasks/build.js --release", "test": "npm run test:unit", @@ -46,20 +47,6 @@ "accessibility", "eye-care" ], - "browserslist": [ - "supports es5", - "not ie > 0", - "not ie_mob > 0", - "not op_mini all", - "not op_mob < 59", - "not android < 50", - "not ios_saf < 6", - "not safari < 9.3", - "not opera < 36", - "not chrome < 49", - "not firefox < 33", - "not edge <= 18" - ], "homepage": "https://darkreader.org/", "funding": { "type": "opencollective", @@ -82,6 +69,7 @@ "@typescript-eslint/parser": "5.13.0", "chokidar": "3.5.3", "eslint": "8.10.0", + "eslint-plugin-compat": "4.0.2", "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", "get-stream": "6.0.1", diff --git a/tasks/check-exists.js b/tasks/check-exists.js new file mode 100644 index 000000000000..fae04fbeaa2c --- /dev/null +++ b/tasks/check-exists.js @@ -0,0 +1,9 @@ +// @ts-check +const {existsSync} = require('fs'); + +const lastArg = process.argv.pop(); +if (lastArg === __filename) { + throw new Error('Error: File or directory expected as a single argument'); +} + +process.exit(existsSync(lastArg) ? 0 : 1); From a48a1ff340b4468e258dc551440f3314a5c0b450 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Wed, 9 Mar 2022 19:46:18 +0000 Subject: [PATCH 509/892] Toggle detected dark theme (#8372) --- src/background/extension.ts | 90 ++++++++++--------- src/background/make-chromium-happy.ts | 1 - src/background/messenger.ts | 15 +--- src/definitions.d.ts | 3 +- src/ui/connect/connector.ts | 13 +-- src/ui/connect/mock.ts | 20 ++--- src/ui/devtools/components/body.tsx | 8 +- src/ui/devtools/index.tsx | 11 ++- src/ui/popup/components/body.tsx | 12 ++- .../custom-settings-toggle/index.tsx | 5 +- .../components/filter-settings/index.tsx | 8 +- src/ui/popup/components/header/index.tsx | 7 +- .../popup/components/more-settings/index.tsx | 7 +- src/ui/popup/components/site-toggle/index.tsx | 8 +- src/ui/popup/index.tsx | 13 ++- src/ui/popup/main-page/site-toggle.tsx | 7 +- src/ui/popup/manage-settings-page/index.tsx | 2 +- src/ui/popup/theme/preset-picker/index.tsx | 11 +-- src/ui/popup/theme/utils.ts | 4 +- src/ui/popup/types.d.ts | 3 +- src/ui/stylesheet-editor/components/body.tsx | 12 +-- src/ui/stylesheet-editor/index.tsx | 11 ++- src/utils/message.ts | 3 +- src/utils/url.ts | 18 ++-- tests/inject/dynamic/image-analysis.tests.ts | 2 +- tests/inject/utils/url.tests.ts | 22 +++++ 26 files changed, 160 insertions(+), 156 deletions(-) diff --git a/src/background/extension.ts b/src/background/extension.ts index 0976adf8d25d..0ccb0884df3d 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -241,23 +241,10 @@ export class Extension implements ExtensionState { collect: async () => { return await this.collectData(); }, - getActiveTabInfo: async () => { - if (!this.user.settings) { - await this.user.loadSettings(); - } - await this.stateManager.loadState(); - const url = await this.tabs.getActiveTabURL(); - const info = this.getURLInfo(url); - info.isInjected = await this.tabs.canAccessActiveTab(); - if (this.user.settings.detectDarkTheme) { - info.isDarkThemeDetected = await this.tabs.isActiveTabDarkThemeDetected(); - } - return info; - }, changeSettings: (settings) => this.changeSettings(settings), setTheme: (theme) => this.setTheme(theme), setShortcut: ({command, shortcut}) => this.setShortcut(command, shortcut), - toggleURL: (url) => this.toggleURL(url), + toggleActiveTab: async () => this.toggleActiveTab(), markNewsAsRead: async (ids) => await this.news.markAsRead(...ids), onPopupOpen: () => this.popupOpeningListener && this.popupOpeningListener(), loadConfig: async (options) => await this.config.load(options), @@ -289,7 +276,7 @@ export class Extension implements ExtensionState { if (isPDF(url)) { this.changeSettings({enableForPDF: !this.user.settings.enableForPDF}); } else { - this.toggleURL(url); + this.toggleActiveTab(); } break; case 'switchEngine': { @@ -377,9 +364,24 @@ export class Extension implements ExtensionState { hasCustomFilterFixes: await this.devtools.hasCustomFilterFixes(), hasCustomStaticFixes: await this.devtools.hasCustomStaticFixes(), }, + activeTab: await this.getActiveTabInfo(), }; } + private async getActiveTabInfo() { + if (!this.user.settings) { + await this.user.loadSettings(); + } + await this.stateManager.loadState(); + const url = await this.tabs.getActiveTabURL(); + const info = this.getURLInfo(url); + info.isInjected = await this.tabs.canAccessActiveTab(); + if (this.user.settings.detectDarkTheme) { + info.isDarkThemeDetected = await this.tabs.isActiveTabDarkThemeDetected(); + } + return info; + } + private onNewsUpdate(news: News[]) { if (!this.icon) { this.icon = new IconManager(); @@ -501,32 +503,33 @@ export class Extension implements ExtensionState { this.messenger.reportChanges(info); } - toggleURL(url: string) { + async toggleActiveTab() { + const settings = this.user.settings; + const tab = await this.getActiveTabInfo(); + const {url} = tab; const isInDarkList = isURLInList(url, this.config.DARK_SITES); - const siteList = isInDarkList ? - this.user.settings.siteListEnabled.slice() : - this.user.settings.siteList.slice(); - const pattern = getURLHostOrProtocol(url); - const index = siteList.indexOf(pattern); - if (index < 0) { - siteList.push(pattern); - } else { - siteList.splice(index, 1); + const host = getURLHostOrProtocol(url); + + function getToggledList(sourceList: string[]) { + const list = sourceList.slice(); + const index = list.indexOf(host); + if (index < 0) { + list.push(host); + } else { + list.splice(index, 1); + } + return list; } - if (isInDarkList) { - this.changeSettings({siteListEnabled: siteList}); - } else { - this.changeSettings({siteList}); + + const darkThemeDetected = !settings.applyToListedOnly && settings.detectDarkTheme && tab.isDarkThemeDetected; + if (isInDarkList || darkThemeDetected || settings.siteListEnabled.includes(host)) { + const toggledList = getToggledList(settings.siteListEnabled); + this.changeSettings({siteListEnabled: toggledList}); + return; } - } - /** - * Adds host name of last focused tab - * into Sites List (or removes). - */ - async toggleCurrentSite() { - const url = await this.tabs.getActiveTabURL(); - this.toggleURL(url); + const toggledList = getToggledList(settings.siteList); + this.changeSettings({siteList: toggledList}); } //------------------------------------ @@ -589,17 +592,18 @@ export class Extension implements ExtensionState { } private getTabMessage = (url: string, frameURL: string): TabData => { + const settings = this.user.settings; const urlInfo = this.getURLInfo(url); - if (this.isExtensionSwitchedOn() && isURLEnabled(url, this.user.settings, urlInfo)) { - const custom = this.user.settings.customThemes.find(({url: urlList}) => isURLInList(url, urlList)); - const preset = custom ? null : this.user.settings.presets.find(({urls}) => isURLInList(url, urls)); - let theme = custom ? custom.theme : preset ? preset.theme : this.user.settings.theme; + if (this.isExtensionSwitchedOn() && isURLEnabled(url, settings, urlInfo)) { + const custom = settings.customThemes.find(({url: urlList}) => isURLInList(url, urlList)); + const preset = custom ? null : settings.presets.find(({urls}) => isURLInList(url, urls)); + let theme = custom ? custom.theme : preset ? preset.theme : settings.theme; if (this.autoState === 'scheme-dark' || this.autoState === 'scheme-light') { const mode = this.autoState === 'scheme-dark' ? 1 : 0; theme = {...theme, mode}; } const isIFrame = frameURL != null; - const detectDarkTheme = !isIFrame && this.user.settings.detectDarkTheme; + const detectDarkTheme = !isIFrame && settings.detectDarkTheme && !isURLInList(url, settings.siteListEnabled); logInfo(`Creating CSS for url: ${url}`); logInfo(`Custom theme ${custom ? 'was found' : 'was not found'}, Preset theme ${preset ? 'was found' : 'was not found'} @@ -641,7 +645,7 @@ export class Extension implements ExtensionState { css: theme.stylesheet && theme.stylesheet.trim() ? theme.stylesheet : createStaticStylesheet(theme, url, frameURL, this.config.STATIC_THEMES_RAW, this.config.STATIC_THEMES_INDEX), - detectDarkTheme: this.user.settings.detectDarkTheme, + detectDarkTheme: settings.detectDarkTheme, }, }; } diff --git a/src/background/make-chromium-happy.ts b/src/background/make-chromium-happy.ts index 9753aab3a1b4..313053672f8d 100644 --- a/src/background/make-chromium-happy.ts +++ b/src/background/make-chromium-happy.ts @@ -12,7 +12,6 @@ export function makeChromiumHappy() { // Messenger MessageType.UI_GET_DATA, - MessageType.UI_GET_ACTIVE_TAB_INFO, MessageType.UI_APPLY_DEV_DYNAMIC_THEME_FIXES, MessageType.UI_APPLY_DEV_INVERSION_FIXES, MessageType.UI_APPLY_DEV_STATIC_THEMES, diff --git a/src/background/messenger.ts b/src/background/messenger.ts index 6d82a0e3241f..a26086df9c17 100644 --- a/src/background/messenger.ts +++ b/src/background/messenger.ts @@ -4,12 +4,11 @@ import {MessageType} from '../utils/message'; export interface ExtensionAdapter { collect: () => Promise; - getActiveTabInfo: () => Promise; changeSettings: (settings: Partial) => void; setTheme: (theme: Partial) => void; setShortcut: ({command, shortcut}: {command: string; shortcut: string}) => void; markNewsAsRead: (ids: string[]) => Promise; - toggleURL: (pattern: string) => void; + toggleActiveTab: () => void; onPopupOpen: () => void; loadConfig: (options: {local: boolean}) => Promise; applyDevDynamicThemeFixes: (json: string) => Error; @@ -34,7 +33,6 @@ export default class Messenger { this.adapter.onPopupOpen(); return ([ MessageType.UI_GET_DATA, - MessageType.UI_GET_ACTIVE_TAB_INFO ].includes(message.type)); } }); @@ -47,9 +45,6 @@ export default class Messenger { case MessageType.UI_GET_DATA: promise = this.adapter.collect(); break; - case MessageType.UI_GET_ACTIVE_TAB_INFO: - promise = this.adapter.getActiveTabInfo(); - break; // These types require data, so we need to add a listener to the port. case MessageType.UI_APPLY_DEV_DYNAMIC_THEME_FIXES: case MessageType.UI_APPLY_DEV_INVERSION_FIXES: @@ -94,10 +89,6 @@ export default class Messenger { this.adapter.collect().then((data) => sendResponse({data})); break; } - case MessageType.UI_GET_ACTIVE_TAB_INFO: { - this.adapter.getActiveTabInfo().then((data) => sendResponse({data})); - break; - } case MessageType.UI_SUBSCRIBE_TO_CHANGES: { this.changeListenerCount++; break; @@ -118,8 +109,8 @@ export default class Messenger { this.adapter.setShortcut(data); break; } - case MessageType.UI_TOGGLE_URL: { - this.adapter.toggleURL(data); + case MessageType.UI_TOGGLE_ACTIVE_TAB: { + this.adapter.toggleActiveTab(); break; } case MessageType.UI_MARK_NEWS_AS_READ: { diff --git a/src/definitions.d.ts b/src/definitions.d.ts index 5fc4ab9316df..186187500ca8 100644 --- a/src/definitions.d.ts +++ b/src/definitions.d.ts @@ -17,6 +17,7 @@ export interface ExtensionData { hasCustomFilterFixes: boolean; hasCustomStaticFixes: boolean; }; + activeTab: TabInfo; } export interface TabData { @@ -28,7 +29,7 @@ export interface ExtensionActions { changeSettings(settings: Partial): void; setTheme(theme: Partial): void; setShortcut(command: string, shortcut: string): void; - toggleURL(url: string): void; + toggleActiveTab(): void; markNewsAsRead(ids: string[]): void; loadConfig(options: {local: boolean}): void; applyDevDynamicThemeFixes(text: string): Promise; diff --git a/src/ui/connect/connector.ts b/src/ui/connect/connector.ts index 2c6237a38ff9..086589bed459 100644 --- a/src/ui/connect/connector.ts +++ b/src/ui/connect/connector.ts @@ -1,5 +1,5 @@ import {isFirefox} from '../../utils/platform'; -import type {ExtensionData, ExtensionActions, FilterConfig, TabInfo, Message, UserSettings} from '../../definitions'; +import type {ExtensionData, ExtensionActions, FilterConfig, Message, UserSettings} from '../../definitions'; import {MessageType} from '../../utils/message'; export default class Connector implements ExtensionActions { @@ -44,13 +44,6 @@ export default class Connector implements ExtensionActions { return await this.sendRequest(MessageType.UI_GET_DATA); } - async getActiveTabInfo() { - if (isFirefox) { - return await this.firefoxSendRequestWithResponse(MessageType.UI_GET_ACTIVE_TAB_INFO); - } - return await this.sendRequest(MessageType.UI_GET_ACTIVE_TAB_INFO); - } - private onChangesReceived = ({type, data}: Message) => { if (type === MessageType.BG_CHANGES) { this.changeSubscribers.forEach((callback) => callback(data)); @@ -77,8 +70,8 @@ export default class Connector implements ExtensionActions { chrome.runtime.sendMessage({type: MessageType.UI_SET_THEME, data: theme}); } - toggleURL(url: string) { - chrome.runtime.sendMessage({type: MessageType.UI_TOGGLE_URL, data: url}); + toggleActiveTab() { + chrome.runtime.sendMessage({type: MessageType.UI_TOGGLE_ACTIVE_TAB, data: {}}); } markNewsAsRead(ids: string[]) { diff --git a/src/ui/connect/mock.ts b/src/ui/connect/mock.ts index 97046753d12e..8d6d4bef269e 100644 --- a/src/ui/connect/mock.ts +++ b/src/ui/connect/mock.ts @@ -1,4 +1,4 @@ -import type {ExtensionData, TabInfo, Theme, UserSettings} from '../../definitions'; +import type {ExtensionData, Theme, UserSettings} from '../../definitions'; export function getMockData(override = {} as Partial): ExtensionData { return Object.assign({ @@ -41,6 +41,7 @@ export function getMockData(override = {} as Partial): ExtensionD latitude: 52.4237178, longitude: 31.021786, }, + detectDarkTheme: false, } as UserSettings, fonts: [ 'serif', @@ -78,15 +79,12 @@ export function getMockData(override = {} as Partial): ExtensionD }, }, forcedScheme: null, + activeTab: { + url: 'https://darkreader.org/', + isProtected: false, + isInDarkList: false, + isInjected: true, + isDarkThemeDetected: false, + }, } as ExtensionData, override); } - -export function getMockActiveTabInfo(): TabInfo { - return { - url: 'https://darkreader.org/', - isProtected: false, - isInDarkList: false, - isInjected: true, - isDarkThemeDetected: false, - }; -} diff --git a/src/ui/devtools/components/body.tsx b/src/ui/devtools/components/body.tsx index e6c0664911d1..c36a4528fcbe 100644 --- a/src/ui/devtools/components/body.tsx +++ b/src/ui/devtools/components/body.tsx @@ -4,18 +4,18 @@ import {withState, useState} from 'malevic/state'; import {Button, MessageBox, Overlay} from '../../controls'; import ThemeEngines from '../../../generators/theme-engines'; import {DEVTOOLS_DOCS_URL} from '../../../utils/links'; -import type {ExtWrapper, TabInfo} from '../../../definitions'; +import type {ExtWrapper} from '../../../definitions'; import {getCurrentThemePreset} from '../../popup/theme/utils'; import {isFirefox} from '../../../utils/platform'; -type BodyProps = ExtWrapper & {tab: TabInfo}; +type BodyProps = ExtWrapper; -function Body({data, tab, actions}: BodyProps) { +function Body({data, actions}: BodyProps) { const context = getContext(); const {state, setState} = useState({errorText: null as string}); let textNode: HTMLTextAreaElement; const previewButtonText = data.settings.previewNewDesign ? 'Switch to old design' : 'Preview new design'; - const {theme} = getCurrentThemePreset({data, tab, actions}); + const {theme} = getCurrentThemePreset({data, actions}); const wrapper = (theme.engine === ThemeEngines.staticTheme ? { diff --git a/src/ui/devtools/index.tsx b/src/ui/devtools/index.tsx index 5c548d840088..43dd62ac257e 100644 --- a/src/ui/devtools/index.tsx +++ b/src/ui/devtools/index.tsx @@ -2,10 +2,10 @@ import {m} from 'malevic'; import {sync} from 'malevic/dom'; import Body from './components/body'; import Connector from '../connect/connector'; -import type {ExtensionData, TabInfo} from '../../definitions'; +import type {ExtensionData} from '../../definitions'; -function renderBody(data: ExtensionData, tab: TabInfo, actions: Connector) { - sync(document.body, ); +function renderBody(data: ExtensionData, actions: Connector) { + sync(document.body, ); } async function start() { @@ -13,9 +13,8 @@ async function start() { window.addEventListener('unload', () => connector.disconnect()); const data = await connector.getData(); - const tabInfo = await connector.getActiveTabInfo(); - renderBody(data, tabInfo, connector); - connector.subscribeToChanges((data) => renderBody(data, tabInfo, connector)); + renderBody(data, connector); + connector.subscribeToChanges((data) => renderBody(data, connector)); } start(); diff --git a/src/ui/popup/components/body.tsx b/src/ui/popup/components/body.tsx index 04ebb6cd4392..2c08546d7786 100644 --- a/src/ui/popup/components/body.tsx +++ b/src/ui/popup/components/body.tsx @@ -15,12 +15,11 @@ import {getDuration} from '../../../utils/time'; import {DONATE_URL, GITHUB_URL, PRIVACY_URL, TWITTER_URL, getHelpURL} from '../../../utils/links'; import {getLocalMessage} from '../../../utils/locales'; import {compose} from '../../utils'; -import type {ExtensionData, ExtensionActions, TabInfo, News as NewsObject} from '../../../definitions'; +import type {ExtensionData, ExtensionActions, News as NewsObject} from '../../../definitions'; import {isMobile, isFirefox, isThunderbird} from '../../../utils/platform'; interface BodyProps { data: ExtensionData; - tab: TabInfo; actions: ExtensionActions; } @@ -113,7 +112,6 @@ function Body(props: BodyProps & {fonts: string[]}) {
@@ -123,20 +121,20 @@ function Body(props: BodyProps & {fonts: string[]}) { onSwitchTab={(tab) => setState({activeTab: tab})} tabs={isThunderbird ? { 'Filter': ( - + ), 'More': ( - + ), } : { 'Filter': ( - + ), 'Site list': ( ), 'More': ( - + ), }} tabLabels={{ diff --git a/src/ui/popup/components/custom-settings-toggle/index.tsx b/src/ui/popup/components/custom-settings-toggle/index.tsx index 6675e40e4329..89abda60d4c9 100644 --- a/src/ui/popup/components/custom-settings-toggle/index.tsx +++ b/src/ui/popup/components/custom-settings-toggle/index.tsx @@ -2,10 +2,11 @@ import {m} from 'malevic'; import {Button} from '../../../controls'; import {getURLHostOrProtocol, isURLInList} from '../../../../utils/url'; import {getLocalMessage} from '../../../../utils/locales'; -import type {ExtWrapper, TabInfo} from '../../../../definitions'; +import type {ExtWrapper} from '../../../../definitions'; import {isThunderbird} from '../../../../utils/platform'; -export default function CustomSettingsToggle({data, tab, actions}: ExtWrapper & {tab: TabInfo}) { +export default function CustomSettingsToggle({data, actions}: ExtWrapper) { + const tab = data.activeTab; const host = getURLHostOrProtocol(tab.url); const isCustom = data.settings.customThemes.some(({url}) => isURLInList(tab.url, url)); diff --git a/src/ui/popup/components/filter-settings/index.tsx b/src/ui/popup/components/filter-settings/index.tsx index f7cc06a6aa43..4d70b1986138 100644 --- a/src/ui/popup/components/filter-settings/index.tsx +++ b/src/ui/popup/components/filter-settings/index.tsx @@ -4,10 +4,10 @@ import CustomSettingsToggle from '../custom-settings-toggle'; import ModeToggle from './mode-toggle'; import {getLocalMessage} from '../../../../utils/locales'; import {isURLInList} from '../../../../utils/url'; -import type {ExtWrapper, TabInfo, FilterConfig} from '../../../../definitions'; +import type {ExtWrapper, FilterConfig} from '../../../../definitions'; -export default function FilterSettings({data, actions, tab}: ExtWrapper & {tab: TabInfo}) { - const custom = data.settings.customThemes.find(({url}) => isURLInList(tab.url, url)); +export default function FilterSettings({data, actions}: ExtWrapper) { + const custom = data.settings.customThemes.find(({url}) => isURLInList(data.activeTab.url, url)); const filterConfig = custom ? custom.theme : data.settings.theme; function setConfig(config: Partial) { @@ -74,7 +74,7 @@ export default function FilterSettings({data, actions, tab}: ExtWrapper & {tab: {contrast} {sepia} {grayscale} - + ); } diff --git a/src/ui/popup/components/header/index.tsx b/src/ui/popup/components/header/index.tsx index ef0961c09a4a..dea64474c5ad 100644 --- a/src/ui/popup/components/header/index.tsx +++ b/src/ui/popup/components/header/index.tsx @@ -1,7 +1,7 @@ import {m} from 'malevic'; import {Shortcut, Toggle} from '../../../controls'; import {getLocalMessage} from '../../../../utils/locales'; -import type {ExtWrapper, TabInfo, UserSettings} from '../../../../definitions'; +import type {ExtWrapper, UserSettings} from '../../../../definitions'; import SunMoonIcon from '../../main-page/sun-moon-icon'; import SystemIcon from '../../main-page/system-icon'; import WatchIcon from '../../main-page/watch-icon'; @@ -13,11 +13,10 @@ function multiline(...lines: string[]) { } type HeaderProps = ExtWrapper & { - tab: TabInfo; onMoreToggleSettingsClick: () => void; }; -function Header({data, actions, tab, onMoreToggleSettingsClick}: HeaderProps) { +function Header({data, actions, onMoreToggleSettingsClick}: HeaderProps) { function toggleExtension(enabled: UserSettings['enabled']) { actions.changeSettings({ enabled, @@ -25,6 +24,7 @@ function Header({data, actions, tab, onMoreToggleSettingsClick}: HeaderProps) { }); } + const tab = data.activeTab; const isAutomation = Boolean(data.settings.automation); const isTimeAutomation = data.settings.automation === 'time'; const isLocationAutomation = data.settings.automation === 'location'; @@ -38,7 +38,6 @@ function Header({data, actions, tab, onMoreToggleSettingsClick}: HeaderProps) {
{tab.isProtected || !tab.isInjected ? ( diff --git a/src/ui/popup/components/more-settings/index.tsx b/src/ui/popup/components/more-settings/index.tsx index f545c729a6ea..9277e20b6abb 100644 --- a/src/ui/popup/components/more-settings/index.tsx +++ b/src/ui/popup/components/more-settings/index.tsx @@ -6,10 +6,11 @@ import {Toggle} from '../../../controls'; import {isURLInList} from '../../../../utils/url'; import {compileMarkdown} from '../../utils/markdown'; import {getLocalMessage} from '../../../../utils/locales'; -import type {ExtWrapper, FilterConfig, TabInfo} from '../../../../definitions'; +import type {ExtWrapper, FilterConfig} from '../../../../definitions'; import {isFirefox} from '../../../../utils/platform'; -export default function MoreSettings({data, actions, tab, fonts}: ExtWrapper & {tab: TabInfo} & {fonts: string[]}) { +export default function MoreSettings({data, actions, fonts}: ExtWrapper & {fonts: string[]}) { + const tab = data.activeTab; const custom = data.settings.customThemes.find(({url}) => isURLInList(tab.url, url)); const filterConfig = custom ? custom.theme : data.settings.theme; @@ -34,7 +35,7 @@ export default function MoreSettings({data, actions, tab, fonts}: ExtWrapper & { setConfig({engine})} />
- + {tab.isProtected ? (

{getLocalMessage('page_protected').replace(/\n/g, ' ')} diff --git a/src/ui/popup/components/site-toggle/index.tsx b/src/ui/popup/components/site-toggle/index.tsx index 2347f7e156c9..a4ec4e382b01 100644 --- a/src/ui/popup/components/site-toggle/index.tsx +++ b/src/ui/popup/components/site-toggle/index.tsx @@ -2,15 +2,17 @@ import {m} from 'malevic'; import CheckmarkIcon from './checkmark-icon'; import {Button} from '../../../controls'; import {getURLHostOrProtocol, isURLEnabled, isPDF} from '../../../../utils/url'; -import type {ExtWrapper, TabInfo} from '../../../../definitions'; +import type {ExtWrapper} from '../../../../definitions'; import {isThunderbird} from '../../../../utils/platform'; -export default function SiteToggleButton({data, tab, actions}: ExtWrapper & {tab: TabInfo}) { +export default function SiteToggleButton({data, actions}: ExtWrapper) { + const tab = data.activeTab; + function onSiteToggleClick() { if (pdf) { actions.changeSettings({enableForPDF: !data.settings.enableForPDF}); } else { - actions.toggleURL(tab.url); + actions.toggleActiveTab(); } } diff --git a/src/ui/popup/index.tsx b/src/ui/popup/index.tsx index 7e9db7e4dadd..1d905a09ac42 100644 --- a/src/ui/popup/index.tsx +++ b/src/ui/popup/index.tsx @@ -3,12 +3,12 @@ import {sync} from 'malevic/dom'; import Connector from '../connect/connector'; import Body from './components/body'; import {popupHasBuiltInHorizontalBorders, popupHasBuiltInBorders, fixNotClosingPopupOnNavigation} from './utils/issues'; -import type {ExtensionData, ExtensionActions, TabInfo} from '../../definitions'; +import type {ExtensionData, ExtensionActions} from '../../definitions'; import {isMobile, isFirefox} from '../../utils/platform'; import {MessageType} from '../../utils/message'; import {getFontList} from '../utils'; -function renderBody(data: ExtensionData, tab: TabInfo, fonts: string[], actions: ExtensionActions) { +function renderBody(data: ExtensionData, fonts: string[], actions: ExtensionActions) { if (data.settings.previewNewDesign) { if (!document.documentElement.classList.contains('preview')) { document.documentElement.classList.add('preview'); @@ -18,7 +18,7 @@ function renderBody(data: ExtensionData, tab: TabInfo, fonts: string[], actions: } sync(document.body, ( - + )); } @@ -26,13 +26,12 @@ async function start() { const connector = new Connector(); window.addEventListener('unload', () => connector.disconnect()); - const [data, tab, fonts] = await Promise.all([ + const [data, fonts] = await Promise.all([ connector.getData(), - connector.getActiveTabInfo(), getFontList() ]); - renderBody(data, tab, fonts, connector); - connector.subscribeToChanges((data) => renderBody(data, tab, fonts, connector)); + renderBody(data, fonts, connector); + connector.subscribeToChanges((data) => renderBody(data, fonts, connector)); } addEventListener('load', start); diff --git a/src/ui/popup/main-page/site-toggle.tsx b/src/ui/popup/main-page/site-toggle.tsx index 04ceec12cc64..5a143454f5d1 100644 --- a/src/ui/popup/main-page/site-toggle.tsx +++ b/src/ui/popup/main-page/site-toggle.tsx @@ -5,9 +5,10 @@ import ControlGroup from '../control-group'; import type {ViewProps} from '../types'; export default function SiteToggleGroup(props: ViewProps) { - const isPageEnabled = isURLEnabled(props.tab.url, props.data.settings, props.tab); - const {isDarkThemeDetected} = props.tab; - const descriptionText = isPDF(props.tab.url) ? ( + const tab = props.data.activeTab; + const isPageEnabled = isURLEnabled(tab.url, props.data.settings, tab); + const {isDarkThemeDetected} = tab; + const descriptionText = isPDF(tab.url) ? ( isPageEnabled ? 'Enabled for PDF files' : 'Disabled for PDF files' ) : isDarkThemeDetected ? 'Dark theme detected on page' : ( isPageEnabled ? 'Enabled for current website' : 'Disabled for current website' diff --git a/src/ui/popup/manage-settings-page/index.tsx b/src/ui/popup/manage-settings-page/index.tsx index 462128ce8d45..95615ca6f2ce 100644 --- a/src/ui/popup/manage-settings-page/index.tsx +++ b/src/ui/popup/manage-settings-page/index.tsx @@ -12,7 +12,7 @@ import FetchNews from './fetch-news'; export default function ManageSettingsPage(props: ViewProps) { const custom = props.data.settings.customThemes.find( - ({url}) => isURLInList(props.tab.url, url) + ({url}) => isURLInList(props.data.activeTab.url, url) ); const engine = custom ? custom.theme.engine : diff --git a/src/ui/popup/theme/preset-picker/index.tsx b/src/ui/popup/theme/preset-picker/index.tsx index e93274bd986b..64e4e733af93 100644 --- a/src/ui/popup/theme/preset-picker/index.tsx +++ b/src/ui/popup/theme/preset-picker/index.tsx @@ -46,12 +46,13 @@ function PresetItem(props: ViewProps & {preset: ThemePreset}) { const MAX_ALLOWED_PRESETS = 3; export default function PresetPicker(props: ViewProps) { - const host = getURLHostOrProtocol(props.tab.url); + const tab = props.data.activeTab; + const host = getURLHostOrProtocol(tab.url); const preset = props.data.settings.presets.find( - ({urls}) => isURLInList(props.tab.url, urls) + ({urls}) => isURLInList(tab.url, urls) ); const custom = props.data.settings.customThemes.find( - ({url}) => isURLInList(props.tab.url, url) + ({url}) => isURLInList(tab.url, url) ); const selectedPresetId = custom ? 'custom' : preset ? preset.id : 'default'; @@ -82,11 +83,11 @@ export default function PresetPicker(props: ViewProps) { ].filter(Boolean); function onPresetChange(id: string) { - const filteredCustomThemes = props.data.settings.customThemes.filter(({url}) => !isURLInList(props.tab.url, url)); + const filteredCustomThemes = props.data.settings.customThemes.filter(({url}) => !isURLInList(tab.url, url)); const filteredPresets = props.data.settings.presets.map((preset) => { return { ...preset, - urls: preset.urls.filter((template) => !isURLMatched(props.tab.url, template)), + urls: preset.urls.filter((template) => !isURLMatched(tab.url, template)), }; }); if (id === 'default') { diff --git a/src/ui/popup/theme/utils.ts b/src/ui/popup/theme/utils.ts index e2f5975d3574..1dc29b0862b2 100644 --- a/src/ui/popup/theme/utils.ts +++ b/src/ui/popup/theme/utils.ts @@ -4,10 +4,10 @@ import type {ViewProps} from '../types'; export function getCurrentThemePreset(props: ViewProps) { const custom = props.data.settings.customThemes.find( - ({url}) => isURLInList(props.tab.url, url) + ({url}) => isURLInList(props.data.activeTab.url, url) ); const preset = custom ? null : props.data.settings.presets.find( - ({urls}) => isURLInList(props.tab.url, urls) + ({urls}) => isURLInList(props.data.activeTab.url, urls) ); let theme = custom ? custom.theme : diff --git a/src/ui/popup/types.d.ts b/src/ui/popup/types.d.ts index 109716b66c14..1f474470fe6c 100644 --- a/src/ui/popup/types.d.ts +++ b/src/ui/popup/types.d.ts @@ -1,8 +1,7 @@ -import type {ExtensionData, ExtensionActions, TabInfo} from '../../definitions'; +import type {ExtensionData, ExtensionActions} from '../../definitions'; export interface ViewProps { actions: ExtensionActions; data: ExtensionData; - tab: TabInfo; fonts?: string[]; } diff --git a/src/ui/stylesheet-editor/components/body.tsx b/src/ui/stylesheet-editor/components/body.tsx index 085573ef9edf..ca0107ba5c14 100644 --- a/src/ui/stylesheet-editor/components/body.tsx +++ b/src/ui/stylesheet-editor/components/body.tsx @@ -2,16 +2,12 @@ import {m} from 'malevic'; import {getContext} from 'malevic/dom'; import {Button, MessageBox, Overlay} from '../../controls'; import {getURLHostOrProtocol, isURLInList} from '../../../utils/url'; -import type {ExtWrapper, TabInfo} from '../../../definitions'; +import type {ExtWrapper} from '../../../definitions'; -interface BodyProps extends ExtWrapper { - tab: TabInfo; -} - -export default function Body({data, tab, actions}: BodyProps) { +export default function Body({data, actions}: ExtWrapper) { const context = getContext(); - const host = getURLHostOrProtocol(tab.url); - const custom = data.settings.customThemes.find(({url}) => isURLInList(tab.url, url)); + const host = getURLHostOrProtocol(data.activeTab.url); + const custom = data.settings.customThemes.find(({url}) => isURLInList(data.activeTab.url, url)); let textNode: HTMLTextAreaElement; diff --git a/src/ui/stylesheet-editor/index.tsx b/src/ui/stylesheet-editor/index.tsx index f5557eaadae6..e25da82b81d3 100644 --- a/src/ui/stylesheet-editor/index.tsx +++ b/src/ui/stylesheet-editor/index.tsx @@ -2,10 +2,10 @@ import {m} from 'malevic'; import {sync} from 'malevic/dom'; import Body from './components/body'; import Connector from '../connect/connector'; -import type {ExtensionActions, ExtensionData, TabInfo} from '../../definitions'; +import type {ExtensionActions, ExtensionData} from '../../definitions'; -function renderBody(data: ExtensionData, tab: TabInfo, actions: ExtensionActions) { - sync(document.body, ); +function renderBody(data: ExtensionData, actions: ExtensionActions) { + sync(document.body, ); } async function start() { @@ -13,9 +13,8 @@ async function start() { window.addEventListener('unload', () => connector.disconnect()); const data = await connector.getData(); - const tab = await connector.getActiveTabInfo(); - renderBody(data, tab, connector); - connector.subscribeToChanges((data) => renderBody(data, tab, connector)); + renderBody(data, connector); + connector.subscribeToChanges((data) => renderBody(data, connector)); } start(); diff --git a/src/utils/message.ts b/src/utils/message.ts index ec2b2d7d7780..4d732dcee8a8 100644 --- a/src/utils/message.ts +++ b/src/utils/message.ts @@ -1,12 +1,11 @@ export const MessageType = { UI_GET_DATA: 'ui-get-data', - UI_GET_ACTIVE_TAB_INFO: 'ui-get-active-tab-info', UI_SUBSCRIBE_TO_CHANGES: 'ui-subscribe-to-changes', UI_UNSUBSCRIBE_FROM_CHANGES: 'ui-unsubscribe-from-changes', UI_CHANGE_SETTINGS: 'ui-change-settings', UI_SET_THEME: 'ui-set-theme', UI_SET_SHORTCUT: 'ui-set-shortcut', - UI_TOGGLE_URL: 'ui-toggle-url', + UI_TOGGLE_ACTIVE_TAB: 'ui-toggle-active-tab', UI_MARK_NEWS_AS_READ: 'ui-mark-news-as-read', UI_LOAD_CONFIG: 'ui-load-config', UI_APPLY_DEV_DYNAMIC_THEME_FIXES: 'ui-apply-dev-dynamic-theme-fixes', diff --git a/src/utils/url.ts b/src/utils/url.ts index f4cdce839b9e..6006eea93fcd 100644 --- a/src/utils/url.ts +++ b/src/utils/url.ts @@ -1,4 +1,4 @@ -import type {UserSettings} from '../definitions'; +import type {UserSettings, TabInfo} from '../definitions'; import {isIPV6, compareIPV6} from './ipv6'; import {isThunderbird} from './platform'; @@ -15,7 +15,7 @@ function fixBaseURL($url: string) { } export function parseURL($url: string, $base: string = null) { - const key = `${$url}${$base ? `;${ $base}` : ''}`; + const key = `${$url}${$base ? `;${$base}` : ''}`; if (parsedURLCache.has(key)) { return parsedURLCache.get(key); } @@ -206,7 +206,7 @@ export function isPDF(url: string) { return false; } -export function isURLEnabled(url: string, userSettings: UserSettings, {isProtected, isInDarkList}: {isProtected: boolean; isInDarkList: boolean}) { +export function isURLEnabled(url: string, userSettings: UserSettings, {isProtected, isInDarkList, isDarkThemeDetected}: Partial) { if (isProtected && !userSettings.enableForProtectedPages) { return false; } @@ -221,14 +221,16 @@ export function isURLEnabled(url: string, userSettings: UserSettings, {isProtect const isURLInUserList = isURLInList(url, userSettings.siteList); const isURLInEnabledList = isURLInList(url, userSettings.siteListEnabled); - if (userSettings.applyToListedOnly && !isURLInEnabledList) { - return isURLInUserList; + if (userSettings.applyToListedOnly) { + return isURLInEnabledList || isURLInUserList; } - - if (isURLInEnabledList && isInDarkList) { + if (isURLInEnabledList) { return true; } - return (!isInDarkList && !isURLInUserList); + if (isInDarkList || (userSettings.detectDarkTheme && isDarkThemeDetected)) { + return false; + } + return !isURLInUserList; } export function isFullyQualifiedDomain(candidate: string) { diff --git a/tests/inject/dynamic/image-analysis.tests.ts b/tests/inject/dynamic/image-analysis.tests.ts index 601e40ea1980..4cba0b36fc2a 100644 --- a/tests/inject/dynamic/image-analysis.tests.ts +++ b/tests/inject/dynamic/image-analysis.tests.ts @@ -247,7 +247,7 @@ describe('IMAGE ANALYSIS', () => { '

Weird color Power!

', ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(50); + await timeout(100); expect(getComputedStyle(container.querySelector('h1')).backgroundImage).toBe('url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iOCIgaGVpZ2h0PSI4Ij48ZGVmcz48ZmlsdGVyIGlkPSJkYXJrcmVhZGVyLWltYWdlLWZpbHRlciI+PGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAuMzMzIC0wLjY2NyAtMC42NjcgMC4wMDAgMS4wMDAgLTAuNjY3IDAuMzMzIC0wLjY2NyAwLjAwMCAxLjAwMCAtMC42NjcgLTAuNjY3IDAuMzMzIDAuMDAwIDEuMDAwIDAuMDAwIDAuMDAwIDAuMDAwIDEuMDAwIDAuMDAwIiAvPjwvZmlsdGVyPjwvZGVmcz48aW1hZ2Ugd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsdGVyPSJ1cmwoI2RhcmtyZWFkZXItaW1hZ2UtZmlsdGVyKSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhacFpYZENiM2c5SWpBZ01DQTRJRGdpSUhkcFpIUm9QU0k0SWlCb1pXbG5hSFE5SWpnaVBnb2dJQ0FnUEhKbFkzUWdabWxzYkQwaWQyaHBkR1VpSUhkcFpIUm9QU0l4TURBbElpQm9aV2xuYUhROUlqRXdNQ1VpSUM4K0Nqd3ZjM1puUGc9PSIgLz48L3N2Zz4="), linear-gradient(rgb(204, 0, 0), rgb(0, 0, 0))'); }); }); diff --git a/tests/inject/utils/url.tests.ts b/tests/inject/utils/url.tests.ts index 753e9907065a..84129e9c1d76 100644 --- a/tests/inject/utils/url.tests.ts +++ b/tests/inject/utils/url.tests.ts @@ -133,6 +133,28 @@ it('URL is enabled', () => { {isProtected: false, isInDarkList: false}, )).toBe(false); + // Dark theme detection + expect(isURLEnabled( + 'https://github.com/', + {siteList: [], siteListEnabled: [], applyToListedOnly: false, detectDarkTheme: true} as UserSettings, + {isProtected: false, isInDarkList: false, isDarkThemeDetected: true}, + )).toBe(false); + expect(isURLEnabled( + 'https://github.com/', + {siteList: [], siteListEnabled: [], applyToListedOnly: false, detectDarkTheme: false} as UserSettings, + {isProtected: false, isInDarkList: false, isDarkThemeDetected: true}, + )).toBe(true); + expect(isURLEnabled( + 'https://github.com/', + {siteList: [], siteListEnabled: [], applyToListedOnly: false, detectDarkTheme: true} as UserSettings, + {isProtected: false, isInDarkList: false, isDarkThemeDetected: false}, + )).toBe(true); + expect(isURLEnabled( + 'https://github.com/', + {siteList: [], siteListEnabled: ['github.com'], applyToListedOnly: false, detectDarkTheme: true} as UserSettings, + {isProtected: false, isInDarkList: false, isDarkThemeDetected: true}, + )).toBe(true); + // Test for PDF enabling expect(isPDF( 'https://www.google.com/file.pdf' From 3bbf61d6b82354db625c483e8e420cbadec514d4 Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Thu, 10 Mar 2022 14:46:12 +0300 Subject: [PATCH 510/892] Fix for freetp.org (#8403) - Remove background image. --- src/config/dynamic-theme-fixes.config | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a903cb69cb15..5862bd83f3e7 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6394,6 +6394,22 @@ INVERT ================================ +freetp.org + +CSS +html, +body, +.wmid, +.wfoot { + background-image: none !important; +} +html, +body { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + fritz.box INVERT From 4837368ffb1dacddbb60141a8ba0152895b784a4 Mon Sep 17 00:00:00 2001 From: TheSusian Date: Thu, 10 Mar 2022 14:50:33 +0300 Subject: [PATCH 511/892] Added dark site (#8407) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 22c8b027f4de..cb48ca926727 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -497,6 +497,7 @@ jsben.ch jsfiddle.net jsitor.com json-diff.com +justfive.news kadantiscam.netlify.app kaoskrew.org keezersquest.nl From c92d150fbd86b30911174d937ed969707eeb0171 Mon Sep 17 00:00:00 2001 From: Max Programming <51731966+max-programming@users.noreply.github.com> Date: Thu, 10 Mar 2022 17:20:52 +0530 Subject: [PATCH 512/892] Added dark site (#8405) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index cb48ca926727..5513866b1919 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -755,6 +755,7 @@ rate.house raunaksitoula.com rawg.io rawgiving.com +ray.so razorsecure.com rbt.asia rdck.dev From 6a4baf1bcd2ade7582d2fcf774330892fab762e5 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 10 Mar 2022 11:52:56 +0000 Subject: [PATCH 513/892] Fix for majaro.org (#8408) - Resolves #8404 --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5862bd83f3e7..0a5db1bde4f8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9944,6 +9944,9 @@ CSS .page-header-image { z-index: 0 !important; } +.custom-footer { + background-image: none !important; +} ================================ From a09afa9624d8efabf55ad1a3bce4352a26dd422c Mon Sep 17 00:00:00 2001 From: Mehdi Tarhoult Date: Thu, 10 Mar 2022 12:53:35 +0100 Subject: [PATCH 514/892] Improve French translation (#8406) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit News = Nouveautés instead of Nouvelles in this context --- src/_locales/fr.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/_locales/fr.config b/src/_locales/fr.config index 2a1338e0adc1..0758acf9482e 100644 --- a/src/_locales/fr.config +++ b/src/_locales/fr.config @@ -99,7 +99,7 @@ Liste de sites Uniquement inversé @not_invert_listed -Non inversé +Non-inversé @add_site_to_list Ajouter un site à la liste @@ -162,7 +162,7 @@ Aide Donner @news -Nouvelles +Nouveautés @read_more Lire la suite From c1d58a0384ec2ca449448d04964172422d3df6c0 Mon Sep 17 00:00:00 2001 From: Anan Laks Date: Thu, 10 Mar 2022 19:04:58 +0700 Subject: [PATCH 515/892] Fix for Wikimedia websites (#8401) Related to #8371 , for the rest of Wikimedia Foundation websites --- src/config/dynamic-theme-fixes.config | 59 +++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0a5db1bde4f8..d1d9316b91c8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3364,6 +3364,12 @@ INVERT .mw-mmv-filepage-buttons .mw-mmv-view-expanded .mw-ui-icon::before .mw-mmv-filepage-buttons .mw-mmv-view-config .mw-ui-icon::before .licensetpl td[style^="width"] +#p-personal .mw-echo-notifications-badge +.mw-ui-icon::before +.oo-ui-iconElement-icon +.oo-ui-indicatorElement-indicator +.mw-echo-notifications-badge +img[alt="audio speaker icon"] IGNORE IMAGE ANALYSIS .mw-wiki-logo @@ -10185,6 +10191,12 @@ mediawiki.org INVERT #p-logo-text +#p-personal .mw-echo-notifications-badge +.mw-ui-icon::before +.oo-ui-iconElement-icon +.oo-ui-indicatorElement-indicator +.mw-echo-notifications-badge +img[alt="audio speaker icon"] IGNORE IMAGE ANALYSIS .mw.wiki-logo @@ -17464,6 +17476,12 @@ INVERT .bookend .mwe-math-fallback-image-inline .mwe-math-fallback-image-display +#p-personal .mw-echo-notifications-badge +.mw-ui-icon::before +.oo-ui-iconElement-icon +.oo-ui-indicatorElement-indicator +.mw-echo-notifications-badge +img[alt="audio speaker icon"] IGNORE INLINE STYLE .infobox td @@ -17474,6 +17492,12 @@ wikidata.org INVERT .wd-mp-headerimage +#p-personal .mw-echo-notifications-badge +.mw-ui-icon::before +.oo-ui-iconElement-icon +.oo-ui-indicatorElement-indicator +.mw-echo-notifications-badge +img[alt="audio speaker icon"] IGNORE IMAGE ANALYSIS .mw-wiki-logo @@ -17499,6 +17523,12 @@ wikimedia.org INVERT img.graphite-graph img[src="images/black.png"] +#p-personal .mw-echo-notifications-badge +.mw-ui-icon::before +.oo-ui-iconElement-icon +.oo-ui-indicatorElement-indicator +.mw-echo-notifications-badge +img[alt="audio speaker icon"] CSS div.mw-warning-with-logexcerpt, @@ -17518,6 +17548,12 @@ wikiquote.org INVERT .bookend +#p-personal .mw-echo-notifications-badge +.mw-ui-icon::before +.oo-ui-iconElement-icon +.oo-ui-indicatorElement-indicator +.mw-echo-notifications-badge +img[alt="audio speaker icon"] ================================ @@ -17621,15 +17657,30 @@ IGNORE IMAGE ANALYSIS wikisource.org wikiversity.org +wikivoyage.org INVERT .mwe-math-fallback-image-inline .mwe-math-fallback-image-display +#p-personal .mw-echo-notifications-badge +.mw-ui-icon::before +.oo-ui-iconElement-icon +.oo-ui-indicatorElement-indicator +.mw-echo-notifications-badge +img[alt="audio speaker icon"] ================================ wikitech.wikimedia.org +INVERT +#p-personal .mw-echo-notifications-badge +.mw-ui-icon::before +.oo-ui-iconElement-icon +.oo-ui-indicatorElement-indicator +.mw-echo-notifications-badge +img[alt="audio speaker icon"] + IGNORE IMAGE ANALYSIS .mw.wiki-logo @@ -17656,6 +17707,14 @@ wiktionary.org INVERT .bookend .central-featured-logo-text +#p-personal .mw-echo-notifications-badge +.mw-ui-icon::before +.mw-kartographer-map +.mw-kartographer-mapDialog-map +.oo-ui-iconElement-icon +.oo-ui-indicatorElement-indicator +.mw-echo-notifications-badge +img[alt="audio speaker icon"] CSS div.NavFrame div.NavHead { From 7a4078849d110bcce4a4d3035c71bb35ebbb3496 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Thu, 10 Mar 2022 14:13:03 +0000 Subject: [PATCH 516/892] Revert IFrame bg fix #8180 (#8409) --- src/inject/dynamic-theme/modify-css.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/inject/dynamic-theme/modify-css.ts b/src/inject/dynamic-theme/modify-css.ts index 6c21e3f14d2f..ef1e061d68b7 100644 --- a/src/inject/dynamic-theme/modify-css.ts +++ b/src/inject/dynamic-theme/modify-css.ts @@ -93,13 +93,11 @@ export function getModifiedUserAgentStyle(theme: Theme, isIFrame: boolean, style lines.push('html {'); lines.push(` background-color: ${modifyBackgroundColor({r: 255, g: 255, b: 255}, theme)} !important;`); lines.push('}'); - - // Apparantly using this on iframe's can cause issues with the background color that would be applied. - if (isCSSColorSchemePropSupported) { - lines.push('html {'); - lines.push(` color-scheme: ${theme.mode === 1 ? 'dark' : 'dark light'} !important;`); - lines.push('}'); - } + } + if (isCSSColorSchemePropSupported) { + lines.push('html {'); + lines.push(` color-scheme: ${theme.mode === 1 ? 'dark' : 'dark light'} !important;`); + lines.push('}'); } const bgSelectors = joinSelectors(isIFrame ? '' : 'html, body', styleSystemControls ? 'input, textarea, select, button' : ''); if (bgSelectors) { From 09c12a219b8482026666630522996345148598d4 Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Thu, 10 Mar 2022 20:48:24 +0300 Subject: [PATCH 517/892] Fix for developer.android.com (#8410) - Remove background for category information. --- src/config/dynamic-theme-fixes.config | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d1d9316b91c8..fac4d70d5173 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4154,15 +4154,16 @@ CSS devsite-search .devsite-searchbox::before { background-color: unset; } -.devsite-wrapper { - background-color: inherit; -} +.devsite-wrapper, button { background-color: inherit; } code { background-color: rgba(255, 255, 255, 0.05); } +.devsite-breadcrumb-list { + background: none !important; +} ================================ From a4ac510aa7ecc5555382b36055fe59b8795cdc66 Mon Sep 17 00:00:00 2001 From: Eric Moynihan Date: Thu, 10 Mar 2022 18:09:20 +0000 Subject: [PATCH 518/892] Fixes for rte.ie (#8315) Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index fac4d70d5173..fdcd80af85f1 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13687,6 +13687,21 @@ INVERT ================================ +rte.ie + +INVERT +.masthead .nav-btn.menu + +CSS +.masthead .weather-widget .icon { + filter: none !important; +} +.theoplayer-skin .theo-control-bar-shadow { + background-image: linear-gradient(transparent var(--darkreader-neutral-background)) !important; +} + +================================ + rtlnieuws.nl CSS From 7f2c3a8b6f1be5da000f594f3640445d55d66a3c Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Thu, 10 Mar 2022 18:50:47 +0000 Subject: [PATCH 519/892] Minor Firefox UI fixes (#8411) - No more space for version number in Settings page. - Fixed rounded corners overflow. - Less bright border color. --- src/ui/popup/body/style.less | 12 ++++++++++++ src/ui/popup/news-section/style.less | 1 + 2 files changed, 13 insertions(+) diff --git a/src/ui/popup/body/style.less b/src/ui/popup/body/style.less index deabf2150bc3..7034c2c3f709 100644 --- a/src/ui/popup/body/style.less +++ b/src/ui/popup/body/style.less @@ -237,3 +237,15 @@ font-size: 32px; } } + +.firefox { + .darkreader-version { + display: none; + } +} + +.preview:not(.mobile) { + body { + border-color: mix(@color-back, @color-control-fore); + } +} diff --git a/src/ui/popup/news-section/style.less b/src/ui/popup/news-section/style.less index 301a1a006726..46507a777828 100644 --- a/src/ui/popup/news-section/style.less +++ b/src/ui/popup/news-section/style.less @@ -2,6 +2,7 @@ .news-section { background-color: @color-back; + border-radius: 0.9375rem; bottom: 0; box-sizing: border-box; height: 1.875rem; From 6b11339ca82c7677a7e2d46bc0e3c5531110f98f Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Thu, 10 Mar 2022 18:52:16 +0000 Subject: [PATCH 520/892] 4.9.46 --- package-lock.json | 4 ++-- package.json | 2 +- src/manifest.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 375b63cbfc68..c1e405e95d7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "darkreader", - "version": "4.9.45", + "version": "4.9.46", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "darkreader", - "version": "4.9.45", + "version": "4.9.46", "license": "MIT", "devDependencies": { "@rollup/plugin-node-resolve": "13.1.3", diff --git a/package.json b/package.json index 8dfa2e3d36e8..f06c5a0965b6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "darkreader", - "version": "4.9.45", + "version": "4.9.46", "description": "Dark mode for every website", "scripts": { "api": "node tasks/build.js --api", diff --git a/src/manifest.json b/src/manifest.json index fd25718ebe32..b52fc6e706b0 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Dark Reader", - "version": "4.9.45", + "version": "4.9.46", "author": "Alexander Shutau", "description": "__MSG_extension_description__", "default_locale": "en", From 949b8e1c9af20722aa845b5cbea0c51f00a3e877 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 11 Mar 2022 16:35:20 +0000 Subject: [PATCH 521/892] Fix for systemd.io (#8420) - Resolves #8415 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index fdcd80af85f1..4efbb7835d8c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15424,6 +15424,13 @@ img[src*="/images/images2/icons/"] ================================ +systemd.io + +INVERT +.page-logo img + +================================ + t.bilibili.com CSS From 7bf22e478bb8a7473a1f4d421dd5ea0b8d424ce2 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Sat, 12 Mar 2022 00:39:08 +0800 Subject: [PATCH 522/892] Fix for habitica.com (#8417) - Fix inverted images everywhere --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4efbb7835d8c..bd834b40a576 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7491,6 +7491,9 @@ habitica.com INVERT .logo path:nth-child(2) +IGNORE IMAGE ANALYSIS +* + ================================ habr.com From 6d2299b51a3e32075b1fb066f8cc4f223d418c42 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 11 Mar 2022 16:40:20 +0000 Subject: [PATCH 523/892] Fix for mesa3d.org (#8421) - Resolves #8416 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index bd834b40a576..0985a7d88571 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10313,6 +10313,13 @@ circle.outline.Oval ================================ +mesa3d.org + +INVERT +.collapsed a svg + +================================ + messages.android.com INVERT From d9c6b23cf74cf83200cd357317d5685daeb4935b Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 11 Mar 2022 16:46:41 +0000 Subject: [PATCH 524/892] Fix for i-item.jd.com (#8422) - Resolves #8419 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0985a7d88571..14656cc102bd 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7826,6 +7826,15 @@ img[class="fusion-standard-logo"] ================================ +i-item.jd.com + +CSS +.itemInfo-wrap .summary-price-wrap .summary-top .summary-promotion { + background-image: none !important; +} + +================================ + icloud.com INVERT From 8bb2206d40a290d19cf105eb624fa55be5e800d5 Mon Sep 17 00:00:00 2001 From: Anan Laks Date: Sat, 12 Mar 2022 19:13:35 +0700 Subject: [PATCH 525/892] Fix for wikipedia.org (Vector-2022 skin) (#8418) - Invert tag line --- src/config/dynamic-theme-fixes.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 14656cc102bd..3abe7c248f81 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17608,6 +17608,8 @@ INVERT .MathJax:not(span#MathJax_Zoom > .MathJax) span#MathJax_Zoom .mw-ext-score +.mw-logo-wordmark +.mw-logo-tagline .mw-wiki-logo .central-textlogo__image .svg-Wikimedia-logo_black From 92198ff0a49a545d96c6abf34fe93f7c5292a53b Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 12 Mar 2022 12:17:59 +0000 Subject: [PATCH 526/892] Fix for motorsport.com (#8430) - Resolves #8424 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 3abe7c248f81..ee4d0a8795e3 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10841,6 +10841,15 @@ CSS ================================ +motorsport.com + +CSS +.ms-schedule-table__cell { + background-color: var(--darkreader-neutral-dark) !important; +} + +================================ + mozilla.net INVERT From e9cf22bf0cc49ee9ddb7319198e1457503cbbd27 Mon Sep 17 00:00:00 2001 From: xxyzz Date: Sat, 12 Mar 2022 20:20:23 +0800 Subject: [PATCH 527/892] Remove unnecessary invert and css for wikipedia.org (#8427) --- src/config/dynamic-theme-fixes.config | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ee4d0a8795e3..cba9a710e3e0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17631,13 +17631,8 @@ body > .oo-ui-windowManager .vega .marks .minerva-footer-logo img .music-symbol .tool.tool-button[src$="background-image:"] -#p-personal .mw-echo-notifications-badge -.mw-ui-icon::before .mw-kartographer-map .mw-kartographer-mapDialog-map -.oo-ui-iconElement-icon -.oo-ui-indicatorElement-indicator -.mw-echo-notifications-badge img[alt="audio speaker icon"] CSS @@ -17694,10 +17689,6 @@ body.mediawiki, .template-facttext { background-color: #eaecf0 !important; } -.leaflet-bar .oo-ui-icon-close, -.leaflet-control-zoom a { - background-color: white !important; -} IGNORE INLINE STYLE .legend-color From cd47475efc83bbeccdcd6e8cd258748ba514cba0 Mon Sep 17 00:00:00 2001 From: Anan Laks Date: Sat, 12 Mar 2022 19:20:47 +0700 Subject: [PATCH 528/892] Fix for autoweek.com (#8428) Inverting nav-logo --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index cba9a710e3e0..260e8fc96554 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1509,6 +1509,13 @@ body { ================================ +autoweek.com + +INVERT +.nav-logo + +================================ + avanti24.pl INVERT From 599065cab26d8c603eb1c65b970834982832cb19 Mon Sep 17 00:00:00 2001 From: Anan Laks Date: Sun, 13 Mar 2022 01:33:59 +0700 Subject: [PATCH 529/892] Remove unnecessary invert for Wikimedia websites (#8431) * Removing unnecessary invert for Wikimedia websites Follow up to #8427 commons.wikimedia.org, mediawiki.org, wikibooks.org, wikidata.org, wikimedia.org, wikinews.org, wikiquote.org, wikisource.org, wiktionary.org, wikiversity.org, wikivoyage.org, wikitech.wikimedia.org * Fix for MediaWiki wordmark (Vector-2022 skin) Inverting .mw-logo-wordmark --- src/config/dynamic-theme-fixes.config | 48 +-------------------------- 1 file changed, 1 insertion(+), 47 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 260e8fc96554..886bd446ad2a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3371,11 +3371,6 @@ INVERT .mw-mmv-filepage-buttons .mw-mmv-view-expanded .mw-ui-icon::before .mw-mmv-filepage-buttons .mw-mmv-view-config .mw-ui-icon::before .licensetpl td[style^="width"] -#p-personal .mw-echo-notifications-badge -.mw-ui-icon::before -.oo-ui-iconElement-icon -.oo-ui-indicatorElement-indicator -.mw-echo-notifications-badge img[alt="audio speaker icon"] IGNORE IMAGE ANALYSIS @@ -10211,11 +10206,7 @@ mediawiki.org INVERT #p-logo-text -#p-personal .mw-echo-notifications-badge -.mw-ui-icon::before -.oo-ui-iconElement-icon -.oo-ui-indicatorElement-indicator -.mw-echo-notifications-badge +.mw-logo-wordmark img[alt="audio speaker icon"] IGNORE IMAGE ANALYSIS @@ -17534,11 +17525,6 @@ INVERT .bookend .mwe-math-fallback-image-inline .mwe-math-fallback-image-display -#p-personal .mw-echo-notifications-badge -.mw-ui-icon::before -.oo-ui-iconElement-icon -.oo-ui-indicatorElement-indicator -.mw-echo-notifications-badge img[alt="audio speaker icon"] IGNORE INLINE STYLE @@ -17550,11 +17536,6 @@ wikidata.org INVERT .wd-mp-headerimage -#p-personal .mw-echo-notifications-badge -.mw-ui-icon::before -.oo-ui-iconElement-icon -.oo-ui-indicatorElement-indicator -.mw-echo-notifications-badge img[alt="audio speaker icon"] IGNORE IMAGE ANALYSIS @@ -17581,11 +17562,6 @@ wikimedia.org INVERT img.graphite-graph img[src="images/black.png"] -#p-personal .mw-echo-notifications-badge -.mw-ui-icon::before -.oo-ui-iconElement-icon -.oo-ui-indicatorElement-indicator -.mw-echo-notifications-badge img[alt="audio speaker icon"] CSS @@ -17606,11 +17582,6 @@ wikiquote.org INVERT .bookend -#p-personal .mw-echo-notifications-badge -.mw-ui-icon::before -.oo-ui-iconElement-icon -.oo-ui-indicatorElement-indicator -.mw-echo-notifications-badge img[alt="audio speaker icon"] ================================ @@ -17713,11 +17684,6 @@ wikivoyage.org INVERT .mwe-math-fallback-image-inline .mwe-math-fallback-image-display -#p-personal .mw-echo-notifications-badge -.mw-ui-icon::before -.oo-ui-iconElement-icon -.oo-ui-indicatorElement-indicator -.mw-echo-notifications-badge img[alt="audio speaker icon"] ================================ @@ -17725,11 +17691,6 @@ img[alt="audio speaker icon"] wikitech.wikimedia.org INVERT -#p-personal .mw-echo-notifications-badge -.mw-ui-icon::before -.oo-ui-iconElement-icon -.oo-ui-indicatorElement-indicator -.mw-echo-notifications-badge img[alt="audio speaker icon"] IGNORE IMAGE ANALYSIS @@ -17758,13 +17719,6 @@ wiktionary.org INVERT .bookend .central-featured-logo-text -#p-personal .mw-echo-notifications-badge -.mw-ui-icon::before -.mw-kartographer-map -.mw-kartographer-mapDialog-map -.oo-ui-iconElement-icon -.oo-ui-indicatorElement-indicator -.mw-echo-notifications-badge img[alt="audio speaker icon"] CSS From 02bea405f49306a36f049503340f441d71d2bbcd Mon Sep 17 00:00:00 2001 From: Robby Bennett Date: Sun, 13 Mar 2022 05:46:38 -0700 Subject: [PATCH 530/892] Fix for bugs.chromium.org (#8432) --- src/config/dynamic-theme-fixes.config | 62 ++++++++++++++++++++------- 1 file changed, 47 insertions(+), 15 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 886bd446ad2a..dd1f1dcecdca 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2395,39 +2395,71 @@ INVERT bugs.chromium.org INVERT -i.material-icons .project-logo +.anchor +.menu CSS :root { --darkreader-fix--border: 1px solid ${#ccc} !important; } -button[type="submit"], -input#searchq, -select#can, -mr-dropdown, -td, th.group-header { - border-bottom: var(--darkreader-fix--border) !important; - border-top: var(--darkreader-fix--border) !important; -} button[type="submit"] + mr-dropdown { border-right: var(--darkreader-fix--border) !important; } :host { - --mr-search-bar-background: var(--darkreader-neutral-background) !important; + --main-color: rgba(232, 230, 227, 0.87) !important; + --can-bg: #1c1c1c !important; + --mr-issue-bg: #121c14 !important; + --mr-search-bar-border: 1px solid var(--darkreader-bg--chops-gray-400) !important; --chops-choice-bg: ${#eceff1} !important; --chops-table-header-bg: ${#f1f3f4} !important; --chops-card-details-bg: var(--darkreader-neutral-background) !important; --chops-card-heading-bg: var(--darkreader-neutral-background) !important; + --chops-toggle-fix: rgba(255, 255, 255, 0.25) !important; } -#can { - border-left: var(--darkreader-fix--border) !important; - background-color: var(--darkreader-neutral-background) !important; +mr-header, mr-issue-header { + border-bottom: var(--darkreader-fix--border) !important; } -mr-header, -th { +.metadata-container { + border-right: var(--darkreader-fix--border) !important; +} +mr-issue-header, mr-issue-metadata { + background: var(--mr-issue-bg) !important; +} +mr-header, thead, .comment-header { + background: var(--chops-card-details-bg) !important; +} +mr-cue { + background: var(--darkreader-bg--chops-notice-bubble-bg) !important; + border: var(--darkreader-border--chops-notice-border) !important; +} +.byline { + color: var(--main-color) !important; +} +.select-container, .select-container optgroup { + color: var(--main-color) !important; + background: var(--can-bg) !important; +} +input#searchq, input#searchq + button, [label="Search options"] { + background: transparent !important; +} +.select-container, input#searchq, input#searchq + button, [label="Search options"] { + border-top: var(--darkreader-fix--border) !important; border-bottom: var(--darkreader-fix--border) !important; } +.select-container { + border-left: var(--darkreader-fix--border) !important; + border-right: var(--darkreader-fix--border) !important; +} +label[for="checkbox"] { + border: var(--darkreader-fix--border) !important; +} +input[type="checkbox"]:checked + label { + background: var(--chops-toggle-fix) !important; +} +.menu { + box-shadow: none !important; +} ================================ From 48edae96b3c503d0e9eae8fcba9b837ff8c9a3cd Mon Sep 17 00:00:00 2001 From: Anan Laks Date: Sun, 13 Mar 2022 19:46:52 +0700 Subject: [PATCH 531/892] Fix for theregister.com (#8435) Invert .blocksandfiles_logo and #sitpub_logo --- src/config/dynamic-theme-fixes.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index dd1f1dcecdca..265f18558fa4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15979,6 +15979,8 @@ theregister.*.* INVERT .row_label.title_rhs_line +.blocksandfiles_logo +#sitpub_logo ================================ From 67f5354cb6545ce02d647d974ae176f254a73533 Mon Sep 17 00:00:00 2001 From: Anan Laks Date: Sun, 13 Mar 2022 19:50:52 +0700 Subject: [PATCH 532/892] Fix for wikimediafoundation.org (#8436) Invert .nav-logo --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 265f18558fa4..c0928db17bf1 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17611,6 +17611,13 @@ div.locked-warning { ================================ +wikimediafoundation.org + +INVERT +.nav-logo + +================================ + wikinews.org wikiquote.org From 1665c62c2656e2e7a961d53bf53806fc3210b4f6 Mon Sep 17 00:00:00 2001 From: Zoran Dori Date: Sun, 13 Mar 2022 13:51:06 +0100 Subject: [PATCH 533/892] Fix for yettel.rs (#8433) - Fix header. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c0928db17bf1..4795f173bd7a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -18671,6 +18671,13 @@ CSS ================================ +yettel.rs + +INVERT +.header-container + +================================ + yle.fi INVERT From 377a12c7e67246397d692884896930d715f38660 Mon Sep 17 00:00:00 2001 From: Anan Laks Date: Mon, 14 Mar 2022 04:25:22 +0700 Subject: [PATCH 534/892] Fix for licensing.biz (#8437) Invert .logo --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4795f173bd7a..54d76a57f49e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9369,6 +9369,13 @@ CSS ================================ +licensing.biz + +INVERT +.logo + +================================ + lichess.org CSS From 8c7543298794a379c1f61f1138ff7169dc4c0acc Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Mon, 14 Mar 2022 17:28:21 +0800 Subject: [PATCH 535/892] Fix for pan.baidu.com (#8440) - Invert logo --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 54d76a57f49e..846b409d0812 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12315,6 +12315,13 @@ CSS ================================ +pan.baidu.com + +INVERT +.module-header-wrapper dt + +================================ + papaya.rocks INVERT From 879bb520a89b3ac42ab53113b59e570e36d9ef56 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Mon, 14 Mar 2022 12:24:19 +0000 Subject: [PATCH 536/892] 4.9.47 --- package-lock.json | 4 ++-- package.json | 2 +- src/manifest.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index c1e405e95d7d..6e84878d14fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "darkreader", - "version": "4.9.46", + "version": "4.9.47", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "darkreader", - "version": "4.9.46", + "version": "4.9.47", "license": "MIT", "devDependencies": { "@rollup/plugin-node-resolve": "13.1.3", diff --git a/package.json b/package.json index f06c5a0965b6..c9db0ece8099 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "darkreader", - "version": "4.9.46", + "version": "4.9.47", "description": "Dark mode for every website", "scripts": { "api": "node tasks/build.js --api", diff --git a/src/manifest.json b/src/manifest.json index b52fc6e706b0..efe7681e53c0 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Dark Reader", - "version": "4.9.46", + "version": "4.9.47", "author": "Alexander Shutau", "description": "__MSG_extension_description__", "default_locale": "en", From 4b00f2a0a219071e68e4ce7d8e5e562464a89ddb Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Tue, 15 Mar 2022 18:05:36 +0000 Subject: [PATCH 537/892] Changelog (#8447) --- CHANGELOG.md | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000000..8cdb41786176 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,115 @@ +## 4.9.47 (Mar 14, 2022) +- Users' fixes for websites. + +## 4.9.46 (Mar 10, 2022) +- v5 Preview: Auto-detect dark theme on websites. +- v5 Preview: Option for running dark theme on hidden tabs immediately. +- Dynamic mode bug fixes. +- Translation improvements. +- Users' fixes for websites. + +## 4.9.45 (Feb 5, 2022) +- Revert reducing brightness for images (due to some performance issues). +- Users' fixes for websites. + +## 4.9.44 (Feb 4, 2022) +- Dynamic mode improvements. +- v5 preview: Ability to automate dark/light scheme. +- Users' fixes for websites. + +## 4.9.43 (Dec 7, 2021) +- Dynamic mode bug fixes. +- Users' fixes for websites. + +## 4.9.42 (Nov 6, 2021) +- Fixed slow performance on some websites. +- Fixed broken UI for some users. +- Users' fixes for websites. + +## 4.9.41 (Nov 5, 2021) +- Fixed white flash when page starts loading. +- Users' fixes for websites. + +## 4.9.40 (Nov 3, 2021) +- Dynamic mode fixes. +- Filipino translation (thanks to @IverCoder). +- Serbian translation (thanks to Nemanja @nebocoder). +- Users' fixes for websites. + +## 4.9.39 (Oct 1, 2021) +- Fixed settings not being saved. +- Fixed not working popup for some users. +- Dynamic mode performance improvements. +- v5 Preview design update. +- Users' fixes for websites. + +## 4.9.37.1 (Sep 23, 2021) +- Fixed error when applying settings after some time. +- Users' fixes for websites. + +## 4.9.36 (Sep 21, 2021) +- Fixed regression bugs after 4.9.35 release (hotkeys, Dev Tools, sunrise/sunset). +- Users' fixes for websites. + +## 4.9.35 (Sep 19, 2021) +- Preparing the app for work in non-persistent background context. +- Dynamic mode bug fixes and performance improvements. +- Users' fixes for websites. + +## 4.9.34 (Jul 7, 2021) +- Dynamic mode bug fixes and performance improvements. +- Minor UI improvements. +- Users' fixes for websites. + +## 4.9.33 (May 28, 2021) +- Fixed disability to switch on sites in Global Dark List. +- Bug fixes. +- Users' fixes for websites. + +## 4.9.32 (Apr 21, 2021) +- Dynamic mode bug fixes. +- Users' fixes for websites. + +## 4.9.31 (Apr 5, 2021) +- Fixed performance bottleneck for websites with CSS variables. +- Users' fixes for websites. + +## 4.9.30 (Apr 1, 2021) +- Improved CSS Variables support. +- Dynamic mode bug fixes. +- Fixed toggle shortcut keys for PDFs. +- Users' fixes for websites. + +## 4.9.29 (Feb 22, 2021) +- Users' fixes for websites. + +## 4.9.27 (Jan 21, 2021) +- Dynamic mode improvements. +- Thunderbird support. +- Users' fixes for websites. +- Users' translation improvements. + +## 4.9.26 (Nov 26, 2020) +- Dynamic mode bug fixes. +- Users' fixes for websites. + +## 4.9.25 (Nov 25, 2020) +- Dynamic mode bug fixes. +- Users' fixes for websites. + +## 4.9.24 (Nov 19, 2020) +- Dynamic mode fixes and performance improvements. +- Updates for Dutch translation. +- Users' fixes for websites. +- Reduced assets size. + +## 4.9.23 (Oct 26, 2020) +- Fixed missing images on some websites. + +## 4.9.22 (Oct 26, 2020) +- Fixed high CPU usage caused by conflict with some websites. +- Dynamic mode bug fixes. +- Users' fixes for websites. + +## 4.9.21 (Sep 26, 2020) +- Fixed wrongly displaying pages where the extension is disabled. From 612d8758627610be12180a8a098cfb4578e81d32 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Wed, 16 Mar 2022 12:12:47 -0700 Subject: [PATCH 538/892] Fix iplocation.net (Dynamic mode) (#8445) Fixes logo in upper-left corner --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 846b409d0812..9b3081d5201a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8386,6 +8386,13 @@ CSS ================================ +iplocation.net + +INVERT +img[src="/assets/images/logo.png"] + +================================ + iqiyi.com INVERT From 29502ed40f6fba53aa3507d39281551ce1e12760 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Wed, 16 Mar 2022 13:20:49 -0600 Subject: [PATCH 539/892] Fix for reuters.com (#8451) Fix dropdown arrows/chevrons in the navbar and navbar "more" menus. Using `class^=` because of the random UID at the end of the class names. --- src/config/dynamic-theme-fixes.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9b3081d5201a..802923a58b60 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13572,6 +13572,8 @@ reuters.com INVERT path[d^="M121.865 50.29c0"] +svg[class^="nav-bar__arrow"] > path +svg[class^="nav-dropdown__icon"] > path ================================ From 9d2c820141c9fd691e3b52af29f58a89b16e4772 Mon Sep 17 00:00:00 2001 From: nobelharvards <9457934+nobelharvards@users.noreply.github.com> Date: Thu, 17 Mar 2022 06:21:07 +1100 Subject: [PATCH 540/892] Added dark sites (#8450) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 5513866b1919..796aca53c722 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -425,6 +425,7 @@ hacktoberfest-projects.vercel.app halowaypoint.com hardcoregaming101.net hardforum.com +hardwaretimes.com hastebin.com hbomax.com hdencode.com From b97907b8c018ad2ad41d7a8c1bb9118910361bac Mon Sep 17 00:00:00 2001 From: Matt Alexander Date: Wed, 16 Mar 2022 14:23:28 -0500 Subject: [PATCH 541/892] Chrome/Firefox Karma tests in CI (#8393) - Fire up karma tests in the CI when non-config changes are made. Co-authored-by: Gusted --- .github/workflows/test-browser.yml | 85 ++++++++++++++++++ package-lock.json | 65 ++++++++++++++ package.json | 9 +- tests/browser/jest.config.firefox.js | 2 + tests/browser/jest.config.js | 3 +- tests/browser/paths.js | 11 ++- tests/inject/dynamic/color.tests.ts | 4 +- tests/inject/dynamic/fixes.tests.ts | 4 +- tests/inject/dynamic/image-analysis.tests.ts | 6 +- tests/inject/dynamic/inline-override.tests.ts | 4 +- tests/inject/dynamic/link-override.tests.ts | 6 +- tests/inject/dynamic/media-query.tests.ts | 4 +- tests/inject/dynamic/shadow-dom.tests.ts | 4 +- tests/inject/dynamic/style-override.tests.ts | 4 +- tests/inject/dynamic/variables.tests.ts | 4 +- tests/inject/karma.conf.js | 90 ++++++++++++++----- tests/inject/run.js | 6 +- tests/inject/{ => support}/background-stub.ts | 4 +- tests/inject/{ => support}/customize.ts | 0 tests/inject/{ => support}/echo-client.ts | 0 tests/inject/{ => support}/echo-server.js | 0 tests/inject/{ => support}/polyfills.ts | 0 tests/inject/{ => support}/test-utils.ts | 0 tests/inject/tsconfig.json | 8 +- .../__snapshots__/tsconf.tests.ts.snap | 20 +++-- tests/project/build.tests.ts | 4 +- tests/project/tsconf.tests.ts | 4 +- tests/project/tsconfig.json | 1 + 28 files changed, 282 insertions(+), 70 deletions(-) create mode 100644 .github/workflows/test-browser.yml create mode 100644 tests/browser/jest.config.firefox.js rename tests/inject/{ => support}/background-stub.ts (91%) rename tests/inject/{ => support}/customize.ts (100%) rename tests/inject/{ => support}/echo-client.ts (100%) rename tests/inject/{ => support}/echo-server.js (100%) rename tests/inject/{ => support}/polyfills.ts (100%) rename tests/inject/{ => support}/test-utils.ts (100%) diff --git a/.github/workflows/test-browser.yml b/.github/workflows/test-browser.yml new file mode 100644 index 000000000000..a5d8171ed4d3 --- /dev/null +++ b/.github/workflows/test-browser.yml @@ -0,0 +1,85 @@ +name: Run browser tests in Karma +on: + + # Runs for pushes and pull requests, + # but if changes are config-only + push: + branches: + - master + paths-ignore: + - 'src/config/*' + pull_request: + branches: + - master + types: + - opened + - synchronize + - reopened + - ready_for_review + paths-ignore: + - 'src/config/**' + + workflow_dispatch: +jobs: + test-browser: + name: Run browser tests + strategy: + matrix: + include: + + # Extended support releases + - channel: esr + firefox: latest-esr + + # Stable releases + - channel: stable + chrome: stable + firefox: latest + coverage: true + + # Beta releases + - channel: beta + chrome: beta + firefox: latest-beta + + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Install Chrome + if: ${{ matrix.chrome }} + uses: browser-actions/setup-chrome@latest + with: + chrome-version: ${{ matrix.chrome }} + - name: Configure Karma with path to Chrome executable + if: ${{ matrix.chrome }} + run: | + chrome --version + echo CHROME_BIN="$(which chrome)" | tee -a "$GITHUB_ENV" + + - name: Install Firefox + if: ${{ matrix.firefox }} + uses: browser-actions/setup-firefox@latest + with: + firefox-version: ${{ matrix.firefox }} + - name: Configure Karma with path to Firefox executable + if: ${{ matrix.firefox }} + run: | + firefox --version + echo FIREFOX_BIN="$(which firefox)" | tee -a "$GITHUB_ENV" + + - name: Node.js setup + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node }} + cache: npm + - name: Track Node and NPM version + run: node --version && npm --version + + - name: Install application dependencies + run: npm ci + + - name: Run tests + run: npm run test:inject -- --ci diff --git a/package-lock.json b/package-lock.json index 6e84878d14fd..079367d78a39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "@typescript-eslint/eslint-plugin": "5.13.0", "@typescript-eslint/parser": "5.13.0", "chokidar": "3.5.3", + "cross-env": "7.0.3", "eslint": "8.10.0", "eslint-plugin-compat": "4.0.2", "eslint-plugin-import": "2.25.4", @@ -40,6 +41,7 @@ "karma-jasmine": "4.0.1", "karma-rollup-preprocessor": "7.0.8", "karma-safari-launcher": "1.0.0", + "karma-spec-reporter": "0.0.33", "less": "4.1.2", "malevic": "0.19.1", "prettier": "2.5.1", @@ -3104,6 +3106,15 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/columnify": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", @@ -3349,6 +3360,24 @@ "node": ">= 0.10" } }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, "node_modules/cross-fetch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", @@ -7993,6 +8022,18 @@ "karma": ">=0.9" } }, + "node_modules/karma-spec-reporter": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.33.tgz", + "integrity": "sha512-xRVevDUkiIVhKbDQ3CmeGEpyzA4b3HeVl95Sx5yJAvurpdKUSYF6ZEbQOqKJ7vrtDniABV1hyFez9KX9+7ruBA==", + "dev": true, + "dependencies": { + "colors": "1.4.0" + }, + "peerDependencies": { + "karma": ">=0.9" + } + }, "node_modules/karma/node_modules/mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -14632,6 +14673,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, "columnify": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", @@ -14834,6 +14881,15 @@ "vary": "^1" } }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, "cross-fetch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", @@ -18439,6 +18495,15 @@ "dev": true, "requires": {} }, + "karma-spec-reporter": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.33.tgz", + "integrity": "sha512-xRVevDUkiIVhKbDQ3CmeGEpyzA4b3HeVl95Sx5yJAvurpdKUSYF6ZEbQOqKJ7vrtDniABV1hyFez9KX9+7ruBA==", + "dev": true, + "requires": { + "colors": "1.4.0" + } + }, "keyv": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", diff --git a/package.json b/package.json index c9db0ece8099..fb2cecdb892d 100644 --- a/package.json +++ b/package.json @@ -17,12 +17,12 @@ "test": "npm run test:unit", "test:all": "npm run test:unit; npm run test:browser; npm run test:inject; npm run test:project", "test:browser": "npm run debug && npm run test:chrome && npm run test:firefox", - "test:chrome": "npm run debug && TEST_BROWSER=chrome jest --config=tests/browser/jest.config.js --runInBand", + "test:chrome": "npm run debug && jest --config=tests/browser/jest.config.js --runInBand", "test:ci": "npm run test:unit", "test:coverage": "jest --config=tests/unit/jest.config.js --coverage", - "test:firefox": "npm run debug && TEST_BROWSER=firefox jest --config=tests/browser/jest.config.js --runInBand", - "test:inject": "node tests/inject/run.js", - "test:inject:debug": "node tests/inject/run.js --debug", + "test:firefox": " npm run debug && jest --config=tests/browser/jest.config.firefox.js --runInBand", + "test:inject": "node --max-old-space-size=3072 tests/inject/run.js", + "test:inject:debug": "node --max-old-space-size=3072 tests/inject/run.js --debug", "test:project": "jest --config=tests/project/jest.config.js", "test:unit": "jest --config=tests/unit/jest.config.js", "test:unit:debug": "node --inspect-brk ./node_modules/jest/bin/jest --config=tests/unit/jest.config.js --runInBand --no-cache --watch", @@ -84,6 +84,7 @@ "karma-jasmine": "4.0.1", "karma-rollup-preprocessor": "7.0.8", "karma-safari-launcher": "1.0.0", + "karma-spec-reporter": "0.0.33", "less": "4.1.2", "malevic": "0.19.1", "prettier": "2.5.1", diff --git a/tests/browser/jest.config.firefox.js b/tests/browser/jest.config.firefox.js new file mode 100644 index 000000000000..89efc0a9bc68 --- /dev/null +++ b/tests/browser/jest.config.firefox.js @@ -0,0 +1,2 @@ +module.exports = require('./jest.config'); +module.exports.globals.product = 'firefox'; diff --git a/tests/browser/jest.config.js b/tests/browser/jest.config.js index 3c384ca2ca64..28075e0375f5 100644 --- a/tests/browser/jest.config.js +++ b/tests/browser/jest.config.js @@ -2,7 +2,6 @@ const {dirname} = require('path'); const rootDir = dirname(require.resolve('../../package.json')); -const product = process.env.TEST_BROWSER || 'chrome'; /** @type {import('@jest/types').Config.InitialOptions} */ const config = { @@ -15,7 +14,7 @@ const config = { globals: { 'ts-jest': {tsconfig: '/tests/browser/tsconfig.json'}, __DEBUG__: false, - product, + product: 'chrome', }, setupFilesAfterEnv: ['jest-extended/all'], collectCoverage: false, diff --git a/tests/browser/paths.js b/tests/browser/paths.js index 1fedb69ffde0..e59ec977ad18 100644 --- a/tests/browser/paths.js +++ b/tests/browser/paths.js @@ -62,10 +62,13 @@ async function getFirefoxPath() { if (process.platform === 'win32') { return await winProgramFiles('Firefox Nightly\\firefox.exe'); } - try { - return await linuxAppPath('firefox-nightly'); - } catch (e) { - // ignore + const possibleLinuxPaths = ['firefox-nightly', 'firefox']; + for (const possiblePath of possibleLinuxPaths) { + try { + return await linuxAppPath(possiblePath); + } catch (e) { + // ignore + } } throw new Error('Could not find firefox-nightly'); } diff --git a/tests/inject/dynamic/color.tests.ts b/tests/inject/dynamic/color.tests.ts index 662390511738..b54b37a2e531 100644 --- a/tests/inject/dynamic/color.tests.ts +++ b/tests/inject/dynamic/color.tests.ts @@ -1,7 +1,7 @@ -import '../polyfills'; +import '../support/polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; -import {multiline} from '../test-utils'; +import {multiline} from '../support/test-utils'; const theme = { ...DEFAULT_THEME diff --git a/tests/inject/dynamic/fixes.tests.ts b/tests/inject/dynamic/fixes.tests.ts index e71545d9fe53..b7d9236270c5 100644 --- a/tests/inject/dynamic/fixes.tests.ts +++ b/tests/inject/dynamic/fixes.tests.ts @@ -1,7 +1,7 @@ -import '../polyfills'; +import '../support/polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; -import {multiline} from '../test-utils'; +import {multiline} from '../support/test-utils'; import type {DynamicThemeFix} from '../../../src/definitions'; import {FilterMode} from '../../../src/generators/css-filter'; diff --git a/tests/inject/dynamic/image-analysis.tests.ts b/tests/inject/dynamic/image-analysis.tests.ts index 4cba0b36fc2a..190f2383d34e 100644 --- a/tests/inject/dynamic/image-analysis.tests.ts +++ b/tests/inject/dynamic/image-analysis.tests.ts @@ -1,8 +1,8 @@ -import '../polyfills'; +import '../support/polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; import {getImageDetails} from '../../../src/inject/dynamic-theme/image'; -import {multiline, timeout} from '../test-utils'; +import {multiline, timeout} from '../support/test-utils'; import type {DynamicThemeFix} from '../../../src/definitions'; const theme = { @@ -40,7 +40,7 @@ function getSVGImageCSS(svg: string, width: number, height: number, selector: st ); } -export const images = { +const images = { darkIcon: multiline( '', ' ', diff --git a/tests/inject/dynamic/inline-override.tests.ts b/tests/inject/dynamic/inline-override.tests.ts index b0d8847a3b65..4e77dae43ae6 100644 --- a/tests/inject/dynamic/inline-override.tests.ts +++ b/tests/inject/dynamic/inline-override.tests.ts @@ -1,8 +1,8 @@ -import '../polyfills'; +import '../support/polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; import {isChromium} from '../../../src/utils/platform'; -import {multiline, timeout} from '../test-utils'; +import {multiline, timeout} from '../support/test-utils'; const theme = { ...DEFAULT_THEME, diff --git a/tests/inject/dynamic/link-override.tests.ts b/tests/inject/dynamic/link-override.tests.ts index 78835e569a6a..90bc88b953e9 100644 --- a/tests/inject/dynamic/link-override.tests.ts +++ b/tests/inject/dynamic/link-override.tests.ts @@ -1,9 +1,9 @@ import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; import {isSafari} from '../../../src/utils/platform'; -import {multiline, timeout} from '../test-utils'; -import {stubChromeRuntimeMessage, resetChromeRuntimeMessageStub, stubBackgroundFetchResponse} from '../background-stub'; -import {getCSSEchoURL} from '../echo-client'; +import {multiline, timeout} from '../support/test-utils'; +import {resetChromeRuntimeMessageStub, stubBackgroundFetchResponse, stubChromeRuntimeMessage} from '../support/background-stub'; +import {getCSSEchoURL} from '../support/echo-client'; const theme = { ...DEFAULT_THEME, diff --git a/tests/inject/dynamic/media-query.tests.ts b/tests/inject/dynamic/media-query.tests.ts index 79525e7c5c8c..c97f8a65b27f 100644 --- a/tests/inject/dynamic/media-query.tests.ts +++ b/tests/inject/dynamic/media-query.tests.ts @@ -1,7 +1,7 @@ -import '../polyfills'; +import '../support/polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; -import {multiline, timeout} from '../test-utils'; +import {multiline, timeout} from '../support/test-utils'; const theme = { ...DEFAULT_THEME, diff --git a/tests/inject/dynamic/shadow-dom.tests.ts b/tests/inject/dynamic/shadow-dom.tests.ts index ef5cd7ae5154..36da95495451 100644 --- a/tests/inject/dynamic/shadow-dom.tests.ts +++ b/tests/inject/dynamic/shadow-dom.tests.ts @@ -1,7 +1,7 @@ -import '../polyfills'; +import '../support/polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; -import {multiline, timeout} from '../test-utils'; +import {multiline, timeout} from '../support/test-utils'; import {isFirefox, isSafari} from '../../../src/utils/platform'; const theme = { diff --git a/tests/inject/dynamic/style-override.tests.ts b/tests/inject/dynamic/style-override.tests.ts index 25d370d7cd56..303db691a296 100644 --- a/tests/inject/dynamic/style-override.tests.ts +++ b/tests/inject/dynamic/style-override.tests.ts @@ -1,8 +1,8 @@ -import '../polyfills'; +import '../support/polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; import {createStyleSheetModifier} from '../../../src/inject/dynamic-theme/stylesheet-modifier'; -import {multiline, timeout} from '../test-utils'; +import {multiline, timeout} from '../support/test-utils'; const theme = { ...DEFAULT_THEME, diff --git a/tests/inject/dynamic/variables.tests.ts b/tests/inject/dynamic/variables.tests.ts index 8dfd69f88f46..701b610df00c 100644 --- a/tests/inject/dynamic/variables.tests.ts +++ b/tests/inject/dynamic/variables.tests.ts @@ -1,8 +1,8 @@ -import '../polyfills'; +import '../support/polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {isFirefox} from '../../../src/utils/platform'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; -import {multiline, timeout} from '../test-utils'; +import {multiline, timeout} from '../support/test-utils'; const theme = { ...DEFAULT_THEME, diff --git a/tests/inject/karma.conf.js b/tests/inject/karma.conf.js index 0c024af0daa2..eb4836270c66 100644 --- a/tests/inject/karma.conf.js +++ b/tests/inject/karma.conf.js @@ -7,13 +7,19 @@ const rollupPluginTypescript = require('@rollup/plugin-typescript'); const typescript = require('typescript'); const {getTestDestDir, rootPath} = require('../../tasks/paths'); -module.exports = (config) => { - config.set({ - basePath: '../../', +/** + * @param {import('karma').Config} config + * @returns {import('karma').ConfigOptions} + */ +function configureKarma(config) { + const headless = config.headless || process.env.KARMA_HEADLESS || false; + + let options = { + basePath: '../..', frameworks: ['jasmine'], files: [ - 'tests/inject/customize.ts', - 'tests/inject/polyfills.ts', + 'tests/inject/support/customize.ts', + 'tests/inject/support/polyfills.ts', {pattern: 'tests/inject/**/*.tests.ts', watched: false}, ], preprocessors: { @@ -25,10 +31,6 @@ module.exports = (config) => { rollupPluginTypescript({ typescript, tsconfig: rootPath('tests/inject/tsconfig.json'), - removeComments: false, - sourceMap: true, - inlineSources: true, - noEmitOnError: true, cacheDir: `${fs.realpathSync(os.tmpdir())}/darkreader_typescript_test_cache`, }), rollupPluginReplace({ @@ -37,9 +39,6 @@ module.exports = (config) => { '__PORT__': '-1', '__WATCH__': 'false', }), - rollupPluginIstanbul({ - exclude: ['tests/**/*.*', 'src/inject/dynamic-theme/stylesheet-proxy.ts'], - }), ], output: { dir: getTestDestDir(), @@ -48,19 +47,64 @@ module.exports = (config) => { sourcemap: 'inline', }, }, - reporters: ['progress', 'coverage'], - coverageReporter: { - type: 'html', - dir: 'tests/inject/coverage/' - }, + reporters: ['spec'], port: 9876, colors: true, logLevel: config.LOG_INFO, autoWatch: true, - browsers: config.debug ? - ['Chrome'] : - ['Chrome', 'Firefox', process.platform === 'darwin' ? 'Safari' : null].filter(Boolean), - singleRun: config.debug ? false : true, - concurrency: config.debug ? Infinity : 1, - }); + browsers: headless + ? ['ChromeHeadless', 'FirefoxHeadless'] + : ['Chrome', 'Firefox', process.platform === 'darwin' ? 'Safari' : null].filter(Boolean), + singleRun: true, + concurrency: 1, + }; + + if (config.debug) { + options.browsers = ['Chrome']; + options.singleRun = false; + options.concurrency = Infinity; + options.logLevel = config.LOG_DEBUG; + } + + if (config.ci) { + options.customLaunchers = {}; + options.browsers = []; + if (process.env.CHROME_BIN) { + options.customLaunchers['CIChromeHeadless'] = { + base: 'ChromeHeadless', + flags: ['--no-sandbox', '--disable-setuid-sandbox'] + }; + options.browsers.push('CIChromeHeadless'); + } + if (process.env.FIREFOX_BIN) { + options.customLaunchers['CIFirefoxHeadless'] = {base: 'FirefoxHeadless'}; + options.browsers.push('CIFirefoxHeadless'); + } + options.autoWatch = false; + options.singleRun = true; + options.concurrency = 1; + options.logLevel = config.LOG_DEBUG; + } + + if (config.coverage) { + const plugin = rollupPluginIstanbul({ + exclude: ['tests/**/*.*', 'src/inject/dynamic-theme/stylesheet-proxy.ts'], + }); + options.rollupPreprocessor.plugins.push(plugin); + options.reporters.push('coverage'); + options.coverageReporter = { + type: 'html', + dir: 'tests/inject/coverage/' + }; + } + + return options; +} + +/** + * @param {import('karma').Config} config + * @returns {void} + */ +module.exports = (config) => { + config.set(configureKarma(config)); }; diff --git a/tests/inject/run.js b/tests/inject/run.js index 1f75c3b511ff..fdcb72e7ec91 100644 --- a/tests/inject/run.js +++ b/tests/inject/run.js @@ -1,7 +1,7 @@ // @ts-check const karma = require('karma'); const path = require('path'); -const {createEchoServer} = require('./echo-server'); +const {createEchoServer} = require('./support/echo-server'); const ECHO_SERVER_PORT = 9966; @@ -10,10 +10,12 @@ process.env.NODE_OPTIONS = '--max_old_space_size=3072'; async function run() { const args = process.argv.slice(2); const debug = args.includes('--debug'); + const ci = args.includes('--ci'); + const coverage = args.includes('--coverage'); const configFilePath = path.join(__dirname, './karma.conf.js'); /** @type {Object} */ - const cliOptions = {debug}; + const cliOptions = {debug, ci, coverage}; const parseOptions = {throwErrors: true}; const karmaConfig = await karma.config.parseConfig(configFilePath, cliOptions, parseOptions); diff --git a/tests/inject/background-stub.ts b/tests/inject/support/background-stub.ts similarity index 91% rename from tests/inject/background-stub.ts rename to tests/inject/support/background-stub.ts index 3e134de514c7..2f910ca4d0e3 100644 --- a/tests/inject/background-stub.ts +++ b/tests/inject/support/background-stub.ts @@ -1,5 +1,5 @@ -import {MessageType} from '../../src/utils/message'; -import type {Message} from '../../src/definitions'; +import {MessageType} from '../../../src/utils/message'; +import type {Message} from '../../../src/definitions'; let nativeSendMessage: typeof chrome.runtime.sendMessage; const bgResponses = new Map(); diff --git a/tests/inject/customize.ts b/tests/inject/support/customize.ts similarity index 100% rename from tests/inject/customize.ts rename to tests/inject/support/customize.ts diff --git a/tests/inject/echo-client.ts b/tests/inject/support/echo-client.ts similarity index 100% rename from tests/inject/echo-client.ts rename to tests/inject/support/echo-client.ts diff --git a/tests/inject/echo-server.js b/tests/inject/support/echo-server.js similarity index 100% rename from tests/inject/echo-server.js rename to tests/inject/support/echo-server.js diff --git a/tests/inject/polyfills.ts b/tests/inject/support/polyfills.ts similarity index 100% rename from tests/inject/polyfills.ts rename to tests/inject/support/polyfills.ts diff --git a/tests/inject/test-utils.ts b/tests/inject/support/test-utils.ts similarity index 100% rename from tests/inject/test-utils.ts rename to tests/inject/support/test-utils.ts diff --git a/tests/inject/tsconfig.json b/tests/inject/tsconfig.json index b4e2f60a049c..3537d74cec24 100644 --- a/tests/inject/tsconfig.json +++ b/tests/inject/tsconfig.json @@ -21,9 +21,13 @@ "jsxFactory": "m", "moduleResolution": "Node", "noEmit": true, - "noImplicitAny": true + "noImplicitAny": true, + "removeComments": false, + "sourceMap": true, + "inlineSources": true, + "noEmitOnError": true }, "exclude": [ - "./coverage", + "./coverage" ] } diff --git a/tests/project/__snapshots__/tsconf.tests.ts.snap b/tests/project/__snapshots__/tsconf.tests.ts.snap index fedd4972c6da..7ed63f9c4540 100644 --- a/tests/project/__snapshots__/tsconf.tests.ts.snap +++ b/tests/project/__snapshots__/tsconf.tests.ts.snap @@ -296,6 +296,7 @@ Object { "allowJs": true, "downlevelIteration": true, "esModuleInterop": true, + "inlineSources": true, "jsx": "react", "jsxFactory": "m", "lib": Array [ @@ -307,7 +308,10 @@ Object { "module": "es6", "moduleResolution": "node", "noEmit": true, + "noEmitOnError": true, "noImplicitAny": true, + "removeComments": false, + "sourceMap": true, "target": "es2019", "types": Array [ "chrome", @@ -319,14 +323,9 @@ Object { "./coverage", ], "files": Array [ - "./background-stub.ts", - "./customize.ts", - "./echo-client.ts", - "./echo-server.js", + "./karma.conf.ci.js", "./karma.conf.js", - "./polyfills.ts", - "./run.js", - "./test-utils.ts", + "./types.d.ts", "./dynamic/color.tests.ts", "./dynamic/fixes.tests.ts", "./dynamic/image-analysis.tests.ts", @@ -336,6 +335,13 @@ Object { "./dynamic/shadow-dom.tests.ts", "./dynamic/style-override.tests.ts", "./dynamic/variables.tests.ts", + "./support/background-stub.ts", + "./support/customize.ts", + "./support/polyfills.ts", + "./support/test-utils.ts", + "./types/karma-rollup-preprocessor.d.ts", + "./types/karma.d.ts", + "./types/rollup-plugin-istanbul2.d.ts", "./utils/url.tests.ts", ], } diff --git a/tests/project/build.tests.ts b/tests/project/build.tests.ts index 1e37773e58fa..617c2a3dbc3c 100644 --- a/tests/project/build.tests.ts +++ b/tests/project/build.tests.ts @@ -11,7 +11,7 @@ const buildModule = rootPath('tasks/build.js'); describe('tasks/build-js.js', () => { it('should respond to SIGINT signals by exiting immediately', async () => { expect.assertions(3); - const tmpDir: string = await mkdtemp(join(tmpdir())); + const tmpDir: string = await mkdtemp(join(tmpdir(), 'darkreader')); const wantToWaitNoMoreThan = 500; // Execute build @@ -40,7 +40,7 @@ describe('tasks/build-js.js', () => { describe('tasks/build.js', () => { // Slow test (run using `npm run test:project`) it('should build successfully from an unexpected working directory', async () => { - const tmpDir: string = await mkdtemp(join(tmpdir())); + const tmpDir: string = await mkdtemp(join(tmpdir(), 'darkreader')); // Fire const child = fork(buildModule, ['--debug', '--release', '--api'], {cwd: tmpDir, silent: true}); diff --git a/tests/project/tsconf.tests.ts b/tests/project/tsconf.tests.ts index b48bbc4e525b..b08156f9280b 100644 --- a/tests/project/tsconf.tests.ts +++ b/tests/project/tsconf.tests.ts @@ -24,7 +24,7 @@ const tsProjects: Array<{tsconfig: string}> = [ describe('TypeScript project config', () => { it.each(tsProjects)('file should parse and resolve correctly: $tsconfig', async ({tsconfig}) => { // Parse config from temp dir instead of root dir - const cwd = await mkdtemp(join(tmpdir())); + const cwd = await mkdtemp(join(tmpdir(), 'darkreader')); const project = join(rootDir, tsconfig, 'tsconfig.json'); // Fire @@ -39,7 +39,7 @@ describe('TypeScript project config', () => { // Slow test (run using `npm run test:project`) it.each(tsProjects)('should compile without errors: $tsconfig', async ({tsconfig}) => { // Compile config from temp dir instead of root dir - const cwd = await mkdtemp(join(tmpdir())); + const cwd = await mkdtemp(join(tmpdir(), 'darkreader')); const project = join(rootDir, tsconfig, 'tsconfig.json'); // Fire diff --git a/tests/project/tsconfig.json b/tests/project/tsconfig.json index 1b3be983cde9..72effbaac2fa 100644 --- a/tests/project/tsconfig.json +++ b/tests/project/tsconfig.json @@ -17,6 +17,7 @@ "forceConsistentCasingInFileNames": true, "noImplicitAny": true, "inlineSourceMap": true, + "noEmit": true, "allowJs": true } } From 91fa9f270a15e8bcfec423b3343312c30d3a8e45 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 16 Mar 2022 19:40:34 +0000 Subject: [PATCH 542/892] Don't detect a dark theme on PDF's (#8453) - PDF's are mysteriously implemented on chrome, they are currently controlled by the PDF option and shouldn't be effected by the detect dark theme option. - Resoles #8452 --- src/background/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/background/extension.ts b/src/background/extension.ts index 0ccb0884df3d..cdf47d341de5 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -603,7 +603,7 @@ export class Extension implements ExtensionState { theme = {...theme, mode}; } const isIFrame = frameURL != null; - const detectDarkTheme = !isIFrame && settings.detectDarkTheme && !isURLInList(url, settings.siteListEnabled); + const detectDarkTheme = !isIFrame && settings.detectDarkTheme && !isURLInList(url, settings.siteListEnabled) && !isPDF(url); logInfo(`Creating CSS for url: ${url}`); logInfo(`Custom theme ${custom ? 'was found' : 'was not found'}, Preset theme ${preset ? 'was found' : 'was not found'} From 8b46abd50b020b84e3953a18a3c9848595356c9e Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 16 Mar 2022 20:35:03 +0000 Subject: [PATCH 543/892] Update Unreleased change log (#8454) --- CHANGELOG.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8cdb41786176..64f6c3481752 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,13 @@ +## Unreleased + +- Fix PDF inversion when Auto-detect dark theme option was enabled. + ## 4.9.47 (Mar 14, 2022) + - Users' fixes for websites. ## 4.9.46 (Mar 10, 2022) + - v5 Preview: Auto-detect dark theme on websites. - v5 Preview: Option for running dark theme on hidden tabs immediately. - Dynamic mode bug fixes. @@ -9,34 +15,41 @@ - Users' fixes for websites. ## 4.9.45 (Feb 5, 2022) + - Revert reducing brightness for images (due to some performance issues). - Users' fixes for websites. ## 4.9.44 (Feb 4, 2022) + - Dynamic mode improvements. - v5 preview: Ability to automate dark/light scheme. - Users' fixes for websites. ## 4.9.43 (Dec 7, 2021) + - Dynamic mode bug fixes. - Users' fixes for websites. ## 4.9.42 (Nov 6, 2021) + - Fixed slow performance on some websites. - Fixed broken UI for some users. - Users' fixes for websites. ## 4.9.41 (Nov 5, 2021) + - Fixed white flash when page starts loading. - Users' fixes for websites. ## 4.9.40 (Nov 3, 2021) + - Dynamic mode fixes. - Filipino translation (thanks to @IverCoder). - Serbian translation (thanks to Nemanja @nebocoder). - Users' fixes for websites. ## 4.9.39 (Oct 1, 2021) + - Fixed settings not being saved. - Fixed not working popup for some users. - Dynamic mode performance improvements. @@ -44,72 +57,88 @@ - Users' fixes for websites. ## 4.9.37.1 (Sep 23, 2021) + - Fixed error when applying settings after some time. - Users' fixes for websites. ## 4.9.36 (Sep 21, 2021) + - Fixed regression bugs after 4.9.35 release (hotkeys, Dev Tools, sunrise/sunset). - Users' fixes for websites. ## 4.9.35 (Sep 19, 2021) + - Preparing the app for work in non-persistent background context. - Dynamic mode bug fixes and performance improvements. - Users' fixes for websites. ## 4.9.34 (Jul 7, 2021) + - Dynamic mode bug fixes and performance improvements. - Minor UI improvements. - Users' fixes for websites. ## 4.9.33 (May 28, 2021) + - Fixed disability to switch on sites in Global Dark List. - Bug fixes. - Users' fixes for websites. ## 4.9.32 (Apr 21, 2021) + - Dynamic mode bug fixes. - Users' fixes for websites. ## 4.9.31 (Apr 5, 2021) + - Fixed performance bottleneck for websites with CSS variables. - Users' fixes for websites. ## 4.9.30 (Apr 1, 2021) + - Improved CSS Variables support. - Dynamic mode bug fixes. - Fixed toggle shortcut keys for PDFs. - Users' fixes for websites. ## 4.9.29 (Feb 22, 2021) + - Users' fixes for websites. ## 4.9.27 (Jan 21, 2021) + - Dynamic mode improvements. - Thunderbird support. - Users' fixes for websites. - Users' translation improvements. ## 4.9.26 (Nov 26, 2020) + - Dynamic mode bug fixes. - Users' fixes for websites. ## 4.9.25 (Nov 25, 2020) + - Dynamic mode bug fixes. - Users' fixes for websites. ## 4.9.24 (Nov 19, 2020) + - Dynamic mode fixes and performance improvements. - Updates for Dutch translation. - Users' fixes for websites. - Reduced assets size. ## 4.9.23 (Oct 26, 2020) + - Fixed missing images on some websites. ## 4.9.22 (Oct 26, 2020) + - Fixed high CPU usage caused by conflict with some websites. - Dynamic mode bug fixes. - Users' fixes for websites. ## 4.9.21 (Sep 26, 2020) + - Fixed wrongly displaying pages where the extension is disabled. From 2d0169733dba67d5210651fa706db72040164b71 Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Thu, 17 Mar 2022 02:04:53 +0300 Subject: [PATCH 544/892] Fix for uteka.ru (#8455) - Invert logo. --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 802923a58b60..5b54169507a0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16829,7 +16829,7 @@ ul.nav-list > li.qt-nav > div > ul > li > a > img uteka.ru INVERT -img[src="/static/img/logo.svg"] +img[src^="/static/img/logo.svg"] ymaps[class$="ground-pane"] ================================ From 8b6ecb7ef06e7e5d06ab397f16721c63b3856e00 Mon Sep 17 00:00:00 2001 From: Isaac <72410860+isaec@users.noreply.github.com> Date: Thu, 17 Mar 2022 12:54:45 -0700 Subject: [PATCH 545/892] Fix OWL (#8457) --- src/config/dynamic-theme-fixes.config | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5b54169507a0..7b1b2f44cd4a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3781,7 +3781,7 @@ INVERT .owl_item_container img[src*=".gif"] .ci-feedback img[src*=".gif"] label img[src*=".gif"] -span.MathJax_SVG +span.MathJax_SVG g[stroke="black"] CSS .owl_item_container img[src*=".GIF"] { @@ -3797,6 +3797,9 @@ div.tool-container.gradient { box-shadow: none; } +IGNORE INLINE STYLE +span.MathJax_SVG g + ================================ cynkra.com From fc09c7261ed9b9e9e93a4765634f3b68803011d5 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Thu, 17 Mar 2022 13:55:27 -0600 Subject: [PATCH 546/892] Fix for cnn.com (#8458) Turn the white line under the top nav bar transparent since it's not normally visible outside of dark mode. --- src/config/dynamic-theme-fixes.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7b1b2f44cd4a..fa667a8597ea 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3173,6 +3173,11 @@ INVERT [data-test="section-link"] > svg:not(.business-logo-icon) img.metadata-header__logo +CSS +#header-nav-container::before { + border-bottom-color: transparent !important; +} + IGNORE INLINE STYLE svg.cnn-badge-icon svg.cnn-badge-icon > rect From 766d0269f5847b3028c0ce369e92cfeb6d86c0ba Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 17 Mar 2022 19:57:57 +0000 Subject: [PATCH 547/892] Fix for vimeo.com (#8461) - Resolves #8456 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index fa667a8597ea..aba444b44e9e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17017,6 +17017,13 @@ INVERT ================================ +vimeo.com + +INVERT +svg[height="31"] + +================================ + virtualbox.org CSS From c8ac0992506837cc94abad68a1b710d50e89e5b1 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 17 Mar 2022 21:28:54 +0100 Subject: [PATCH 548/892] Fix TypeError on `isCSSColorSchemePropSupported` - There's a chance that `el.style` can be undefined. We need to account for that. - Resolves #8368 --- src/utils/platform.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/platform.ts b/src/utils/platform.ts index 5ab8ac088608..0ad7d2444407 100644 --- a/src/utils/platform.ts +++ b/src/utils/platform.ts @@ -58,5 +58,5 @@ export const isCSSColorSchemePropSupported = (() => { } const el = document.createElement('div'); el.setAttribute('style', 'color-scheme: dark'); - return el.style.colorScheme === 'dark'; + return el.style && el.style.colorScheme === 'dark'; })(); From 3099722ef71aee3184bffd905171934cb2c0f9bd Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 17 Mar 2022 20:31:25 +0000 Subject: [PATCH 549/892] Fix for adguard-dns.io (#8462) - Resolves #8460 --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index aba444b44e9e..042c080480d2 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -480,6 +480,18 @@ span.Permission-description:before ================================ +adguard-dns.io + +INVERT +.animation__video + +CSS +.animation__video { + z-index: 0 !important; +} + +================================ + adguard.com INVERT From 129e874f7ad9a9e7d31d0c29b5fd6aed25238ce6 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 17 Mar 2022 20:41:50 +0000 Subject: [PATCH 550/892] Fix TypeError on `isCSSColorSchemePropSupported` (#8463) - There's a chance that `el.style` can be undefined. We need to account for that. - Resolves #8368 --- src/utils/platform.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/platform.ts b/src/utils/platform.ts index 5ab8ac088608..0ad7d2444407 100644 --- a/src/utils/platform.ts +++ b/src/utils/platform.ts @@ -58,5 +58,5 @@ export const isCSSColorSchemePropSupported = (() => { } const el = document.createElement('div'); el.setAttribute('style', 'color-scheme: dark'); - return el.style.colorScheme === 'dark'; + return el.style && el.style.colorScheme === 'dark'; })(); From 0e5683ee91b61b5d4bc4f26aff2cb69db4d577c6 Mon Sep 17 00:00:00 2001 From: Matt Alexander Date: Sat, 19 Mar 2022 06:19:07 -0500 Subject: [PATCH 551/892] =?UTF-8?q?Non-zero=20exit=20code=20for=20failing?= =?UTF-8?q?=20Karma;=20Fixed=20browser=20execute=20boolean=20f=E2=80=A6=20?= =?UTF-8?q?(#8474)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Non-zero exit code for failing Karma; Fixed browser execute boolean flags from CI * Dev cruft fix --- .github/workflows/test-browser.yml | 4 +- package-lock.json | 28 -------- package.json | 4 +- tests/inject/karma.conf.js | 49 +++++++++++--- tests/inject/run.js | 36 ---------- tests/inject/support/echo-client.ts | 2 +- tests/inject/support/echo-server.js | 101 ++++++++++------------------ tests/project/karma-conf.tests.ts | 55 +++++++++++++++ 8 files changed, 136 insertions(+), 143 deletions(-) delete mode 100644 tests/inject/run.js create mode 100644 tests/project/karma-conf.tests.ts diff --git a/.github/workflows/test-browser.yml b/.github/workflows/test-browser.yml index a5d8171ed4d3..a0f004369364 100644 --- a/.github/workflows/test-browser.yml +++ b/.github/workflows/test-browser.yml @@ -57,7 +57,7 @@ jobs: if: ${{ matrix.chrome }} run: | chrome --version - echo CHROME_BIN="$(which chrome)" | tee -a "$GITHUB_ENV" + { echo CHROME_BIN="$(which chrome)"; echo CHROME_TEST=1; } | tee -a "$GITHUB_ENV" - name: Install Firefox if: ${{ matrix.firefox }} @@ -68,7 +68,7 @@ jobs: if: ${{ matrix.firefox }} run: | firefox --version - echo FIREFOX_BIN="$(which firefox)" | tee -a "$GITHUB_ENV" + { echo FIREFOX_BIN="$(which firefox)"; echo FIREFOX_TEST=1; } | tee -a "$GITHUB_ENV" - name: Node.js setup uses: actions/setup-node@v2 diff --git a/package-lock.json b/package-lock.json index 079367d78a39..7e62574bd1a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,6 @@ "@typescript-eslint/eslint-plugin": "5.13.0", "@typescript-eslint/parser": "5.13.0", "chokidar": "3.5.3", - "cross-env": "7.0.3", "eslint": "8.10.0", "eslint-plugin-compat": "4.0.2", "eslint-plugin-import": "2.25.4", @@ -3360,24 +3359,6 @@ "node": ">= 0.10" } }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, "node_modules/cross-fetch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", @@ -14881,15 +14862,6 @@ "vary": "^1" } }, - "cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.1" - } - }, "cross-fetch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", diff --git a/package.json b/package.json index fb2cecdb892d..35236a53e3cb 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,8 @@ "test:ci": "npm run test:unit", "test:coverage": "jest --config=tests/unit/jest.config.js --coverage", "test:firefox": " npm run debug && jest --config=tests/browser/jest.config.firefox.js --runInBand", - "test:inject": "node --max-old-space-size=3072 tests/inject/run.js", - "test:inject:debug": "node --max-old-space-size=3072 tests/inject/run.js --debug", + "test:inject": "node --max-old-space-size=3072 node_modules/.bin/karma start ./tests/inject/karma.conf.js", + "test:inject:debug": "node --max-old-space-size=3072 node_modules/.bin/karma start ./tests/inject/karma.conf.js --debug", "test:project": "jest --config=tests/project/jest.config.js", "test:unit": "jest --config=tests/unit/jest.config.js", "test:unit:debug": "node --inspect-brk ./node_modules/jest/bin/jest --config=tests/unit/jest.config.js --runInBand --no-cache --watch", diff --git a/tests/inject/karma.conf.js b/tests/inject/karma.conf.js index eb4836270c66..e58c3d874110 100644 --- a/tests/inject/karma.conf.js +++ b/tests/inject/karma.conf.js @@ -1,3 +1,6 @@ +/** @typedef {import('karma').Config & Record} LocalConfig */ +/** @typedef {import('karma').ConfigOptions} ConfigOptions */ + const fs = require('fs'); const os = require('os'); const rollupPluginIstanbul = require('rollup-plugin-istanbul2'); @@ -6,15 +9,20 @@ const rollupPluginReplace = require('@rollup/plugin-replace'); const rollupPluginTypescript = require('@rollup/plugin-typescript'); const typescript = require('typescript'); const {getTestDestDir, rootPath} = require('../../tasks/paths'); +const karmaPluginEchoServer = require('./support/echo-server'); /** - * @param {import('karma').Config} config - * @returns {import('karma').ConfigOptions} + * @param {LocalConfig} config + * @param {Record} env + * @returns {ConfigOptions} */ -function configureKarma(config) { - const headless = config.headless || process.env.KARMA_HEADLESS || false; +function configureKarma(config, env) { + const headless = config.headless || env.KARMA_HEADLESS || false; + /** @type {ConfigOptions} */ let options = { + failOnFailingTestSuite: true, + failOnEmptyTestSuite: true, basePath: '../..', frameworks: ['jasmine'], files: [ @@ -22,6 +30,18 @@ function configureKarma(config) { 'tests/inject/support/polyfills.ts', {pattern: 'tests/inject/**/*.tests.ts', watched: false}, ], + plugins: [ + 'karma-chrome-launcher', + 'karma-coverage', + 'karma-firefox-launcher', + 'karma-rollup-preprocessor', + 'karma-jasmine', + 'karma-spec-reporter', + karmaPluginEchoServer, + ], + middleware: [ + 'echo-server' + ], preprocessors: { '**/*.+(ts|tsx)': ['rollup'], }, @@ -69,17 +89,24 @@ function configureKarma(config) { if (config.ci) { options.customLaunchers = {}; options.browsers = []; - if (process.env.CHROME_BIN) { + + // Chrome + if (env.CHROME_TEST) { options.customLaunchers['CIChromeHeadless'] = { base: 'ChromeHeadless', flags: ['--no-sandbox', '--disable-setuid-sandbox'] }; options.browsers.push('CIChromeHeadless'); } - if (process.env.FIREFOX_BIN) { - options.customLaunchers['CIFirefoxHeadless'] = {base: 'FirefoxHeadless'}; + + // Firefox + if (env.FIREFOX_TEST) { + options.customLaunchers['CIFirefoxHeadless'] = { + base: 'FirefoxHeadless', + }; options.browsers.push('CIFirefoxHeadless'); } + options.autoWatch = false; options.singleRun = true; options.concurrency = 1; @@ -102,9 +129,13 @@ function configureKarma(config) { } /** - * @param {import('karma').Config} config + * @param {LocalConfig} config * @returns {void} */ module.exports = (config) => { - config.set(configureKarma(config)); + config.set(configureKarma(config, process.env)); }; + +if (process.env.NODE_ENV === 'test') { + module.exports.configureKarma = configureKarma; +} diff --git a/tests/inject/run.js b/tests/inject/run.js deleted file mode 100644 index fdcb72e7ec91..000000000000 --- a/tests/inject/run.js +++ /dev/null @@ -1,36 +0,0 @@ -// @ts-check -const karma = require('karma'); -const path = require('path'); -const {createEchoServer} = require('./support/echo-server'); - -const ECHO_SERVER_PORT = 9966; - -process.env.NODE_OPTIONS = '--max_old_space_size=3072'; - -async function run() { - const args = process.argv.slice(2); - const debug = args.includes('--debug'); - const ci = args.includes('--ci'); - const coverage = args.includes('--coverage'); - - const configFilePath = path.join(__dirname, './karma.conf.js'); - /** @type {Object} */ - const cliOptions = {debug, ci, coverage}; - const parseOptions = {throwErrors: true}; - const karmaConfig = await karma.config.parseConfig(configFilePath, cliOptions, parseOptions); - - const echoServer = await createEchoServer(ECHO_SERVER_PORT); - const karmaServer = new karma.Server(/** @type {any} */(karmaConfig), () => { - echoServer.close(); - }); - karmaServer.start(); - - async function stop() { - await /** @type {any} */(karmaServer).stop(); - } - - process.on('exit', stop); - process.on('SIGINT', stop); -} - -run(); diff --git a/tests/inject/support/echo-client.ts b/tests/inject/support/echo-client.ts index c5fe5f41bc62..b0c7153acaa5 100644 --- a/tests/inject/support/echo-client.ts +++ b/tests/inject/support/echo-client.ts @@ -1,5 +1,5 @@ export function getEchoURL(content: string, type = 'text/plain') { - return `http://localhost:9966/echo?${new URLSearchParams({type, content})}`; + return `${window.location.origin}/echo?${new URLSearchParams({type, content})}`; } export function getCSSEchoURL(content: string) { diff --git a/tests/inject/support/echo-server.js b/tests/inject/support/echo-server.js index 26490cd8a0c6..d13e42a878c6 100644 --- a/tests/inject/support/echo-server.js +++ b/tests/inject/support/echo-server.js @@ -1,78 +1,49 @@ -// @ts-check -const http = require('http'); -const url = require('url'); -const queryString = require('querystring'); - -async function createEchoServer(/** @type {number} */port) { - /** @type {import('http').Server} */ - let server; - - /** @type {import('http').RequestListener} */ - function handleRequest(req, res) { - const parsedURL = url.parse(req.url); - const pathName = parsedURL.pathname; - - if (pathName !== '/echo') { - res.statusCode = 500; - res.end('The URL path must be /echo'); - return; - } - - const parsedQuery = queryString.parse(parsedURL.query); - if (typeof parsedQuery.content !== 'string') { - res.statusCode = 500; - res.end('Send content like /echo?type=text%2Fplain&content=XYZ'); +/** @typedef {import('connect').NextHandleFunction} NextHandleFunction */ +/** @typedef {import('log4js').Logger} Logger */ + +const pluginName = 'middleware:echo-server'; + +/** + * @param {string} [urlRoot] + * @param {KarmaLogger} logger + * @returns {NextHandleFunction} + */ +function createEchoServer(urlRoot, logger) { + /** @type {Logger} */ + const log = logger.create(pluginName); + log.addContext('urlRoot', urlRoot); + log.info('Echo server ready'); + + return function (req, res, next) { + if (!req.url.startsWith(`${urlRoot}echo?`)) { + next(); return; } - const contentType = parsedQuery.type || 'text/plain'; - const content = parsedQuery.content; + /** @type {Logger} */ + const requestLog = logger.create(pluginName); + requestLog.addContext('request', req); + requestLog.debug('Handling request'); - res.statusCode = 200; - res.setHeader('Content-Type', contentType); - res.end(content, 'utf8'); - } + const {searchParams} = new URL(req.url, `http://${req.headers.host}`); - /** - * @returns {Promise} - */ - function start() { - return new Promise((resolve) => { - server = http - .createServer(handleRequest) - .listen(port, () => resolve()); - }); - } + let contentType = searchParams.get('type') || 'text/plain', + content = searchParams.get('content'), + statusCode = 200; - /** - * @returns {Promise} - */ - function close() { - if (!server) { - return; + if (content === null) { + contentType = 'text/plain'; + content = 'Send content like /echo?type=text%2Fplain&content=XYZ'; + statusCode = 500; } - return new Promise((resolve) => { - server.close((err) => { - if (err) { - console.error(err); - } - server = null; - resolve(); - }); - }); - } - - process.on('exit', close); - process.on('SIGINT', close); - await start(); - - return { - close, - url: `http://localhost:${port}`, + res.writeHead(statusCode, {'Content-Type': contentType}); + res.end(content, 'utf-8'); }; } +createEchoServer.$inject = ['config.urlRoot', 'logger']; + module.exports = { - createEchoServer, + [pluginName]: ['factory', createEchoServer], }; diff --git a/tests/project/karma-conf.tests.ts b/tests/project/karma-conf.tests.ts new file mode 100644 index 000000000000..338f5f01c1ff --- /dev/null +++ b/tests/project/karma-conf.tests.ts @@ -0,0 +1,55 @@ +import type {Config, ConfigOptions} from 'karma'; +import {configureKarma} from '../inject/karma.conf'; +import {LOG_DEBUG, LOG_DISABLE, LOG_ERROR, LOG_INFO, LOG_WARN} from 'karma/lib/constants'; + +const CIChromeHeadless = {base: 'ChromeHeadless', flags: expect.any(Array)}; +const CIFirefoxHeadless = {base: 'FirefoxHeadless'}; + +declare type LocalConfig = Config & Record; +declare type TestCase = { env: Record; wantEntries: Array<[string, unknown]> }; + +const testCases: TestCase[] = [ + { + env: {}, + wantEntries: [ + ['customLaunchers', {}], + ['browsers', []], + ], + }, + { + env: {CHROME_TEST: '1'}, + wantEntries: [ + ['customLaunchers', {CIChromeHeadless}], + ['browsers', ['CIChromeHeadless']], + ], + }, + { + env: {FIREFOX_TEST: '1'}, + wantEntries: [ + ['customLaunchers', {CIFirefoxHeadless}], + ['browsers', ['CIFirefoxHeadless']], + ], + }, + { + env: {CHROME_TEST: '1', FIREFOX_TEST: '1'}, + wantEntries: [ + ['customLaunchers', {CIChromeHeadless, CIFirefoxHeadless}], + ['browsers', ['CIChromeHeadless', 'CIFirefoxHeadless']], + ], + }, +]; + +describe('Karma config tests', () => { + it.each(testCases)('should be informed by environment variables: $env', async ({env, wantEntries}) => { + const ciConfig: LocalConfig = { + ci: true, LOG_DISABLE, LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG, set: () => { + return void 0; + }, + }; + + // Fire + const got: ConfigOptions = configureKarma(ciConfig, env); + + expect(got).toContainEntries(wantEntries); + }); +}); From 081aab1a424ce239755e560996c6aa0d95a95acb Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 19 Mar 2022 11:19:15 +0000 Subject: [PATCH 552/892] Fix for www.stern.de (#8476) - Resolves #8471 --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 042c080480d2..a5302980b645 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -18403,6 +18403,18 @@ CSS ================================ +www.stern.de + +CSS +.page { + --page-background: var(--darkreader-neutral-background) !important; +} +.slide-navigation { + background: var(--darkreader-neutral-background) !important; +} + +================================ + www.storm.mg INVERT From a0c55b2120e29b47048e654e852aa95508abfa9f Mon Sep 17 00:00:00 2001 From: TruncatedDinosour <71613062+TruncatedDinosour@users.noreply.github.com> Date: Sat, 19 Mar 2022 11:19:28 +0000 Subject: [PATCH 553/892] Added dark site (#8470) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 796aca53c722..d218568ce872 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -51,6 +51,7 @@ ara-ara-ufufu.herokuapp.com arche-dev.codeberg.page archive.ragtag.moe argoto.snaz.in +ari-web.xyz arisuchan.jp arkadia.xyz arkenfox.github.io/TZP/ From fa43a106608dd7c71bb3f31245eb001c46498fda Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 19 Mar 2022 11:26:41 +0000 Subject: [PATCH 554/892] Fix for 4t-niagara.com (#8477) - Resolves #8475 --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a5302980b645..5e587bb08a72 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -230,6 +230,20 @@ div.description > span { ================================ +4t-niagara.com + +CSS +.download_link > h3, +.buy_link > h3 { + color: ${#88c1ff} !important; +} +.download_link li, +.buy_link li { + color: ${white} !important; +} + +================================ + aad.org INVERT From c8097eb89b06996da66bf54a3e4492a687d9e2ac Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 21 Mar 2022 20:59:05 +0000 Subject: [PATCH 555/892] Remove non-dark site (#8487) --- src/config/dark-sites.config | 1 - 1 file changed, 1 deletion(-) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index d218568ce872..33e25a0b514a 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -442,7 +442,6 @@ hidive.com himovies.to hiveos.farm hoarding.me -hoppscotch.io hostedtalk.net hotstar.com hrmspms.sicorax.mu From d44d136d260e834f57af03f491ed889be851917c Mon Sep 17 00:00:00 2001 From: CommanderRoot Date: Tue, 22 Mar 2022 20:14:25 +0100 Subject: [PATCH 556/892] Replace deprecated String.prototype.substr() (#8241) String.prototype.substr() is deprecated (see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr) so we replace it with substring() which works similarily but isn't deprecated. Signed-off-by: Tobias Speicher --- src/inject/dynamic-theme/variables.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/inject/dynamic-theme/variables.ts b/src/inject/dynamic-theme/variables.ts index 3553f7ee4c8e..d16450e28311 100644 --- a/src/inject/dynamic-theme/variables.ts +++ b/src/inject/dynamic-theme/variables.ts @@ -644,7 +644,7 @@ function parseRawValue(color: string) { splitted.forEach((number) => { resultInRGB += `${number.trim()}, `; }); - resultInRGB = resultInRGB.substr(0, resultInRGB.length - 2); + resultInRGB = resultInRGB.substring(0, resultInRGB.length - 2); resultInRGB += ')'; return {isRaw: true, color: resultInRGB}; } From 1010c159ecdb3b65693b53ac1439e74407f04f28 Mon Sep 17 00:00:00 2001 From: Abdulrahman Alfawal <61620817+alfawal@users.noreply.github.com> Date: Wed, 23 Mar 2022 01:48:41 +0300 Subject: [PATCH 557/892] Added dark sites (#8468) Co-authored-by: Gusted --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 33e25a0b514a..11bdb7c789c2 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -933,6 +933,7 @@ tildegit.org tildeverse.org tinyzonetv.to tio.run +title-case-converter.vercel.app tmtheme-editor.herokuapp.com toneden.io totalwarwarhammer.gamepedia.com From de7adf46512c5ea7643f0de5ee6dbf619f7e6f7f Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 22 Mar 2022 23:00:07 +0000 Subject: [PATCH 558/892] Fix for loepenshop.com (#8495) - Resolves #8486 --- src/config/dynamic-theme-fixes.config | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5e587bb08a72..cb580a4ab932 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9683,6 +9683,19 @@ td.c { ================================ +loepenshop.com +bonjourfoto.nl + +CSS +body { + background-image: none !important; +} + +IGNORE IMAGE ANALYSIS +div.art-Header-jpeg + +================================ + login.live.com INVERT From 7169146a8bdbf6d5ee9ed06a66792e995d2aee84 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 22 Mar 2022 23:13:42 +0000 Subject: [PATCH 559/892] Fix for hp.com (#8496) * Fix for hp.com - Resolves #8490 * Fix #8491 --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index cb580a4ab932..77c3569cd16c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7810,6 +7810,18 @@ INVERT ================================ +hp.com + +INVERT +#g-nav .c-logo + +CSS +.pdp-bg { + background-image: none !important; +} + +================================ + hs.fi CSS From 1faa13e9828af9fd72a79f14fe239fb24b92cdf1 Mon Sep 17 00:00:00 2001 From: nyuszika7h Date: Thu, 24 Mar 2022 09:56:05 +0100 Subject: [PATCH 560/892] Fix for torguard.net (#8501) - Fix icons on proxy server list page. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 77c3569cd16c..3907ada5a7b6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16267,6 +16267,14 @@ body { ================================ +torguard.net + +INVERT +img[src$="statusok.gif"] +img[src$="statusfailed.gif"] + +================================ + tosdr.org INVERT From a7792efbc30d0bf0860ab4db9c96db7bbd13f156 Mon Sep 17 00:00:00 2001 From: mark8128 Date: Thu, 24 Mar 2022 01:59:46 -0700 Subject: [PATCH 561/892] Fix for nytimes.com (#8497) - Update selectors for puzzle. --- src/config/dynamic-theme-fixes.config | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 3907ada5a7b6..c4485b8e34b7 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11816,6 +11816,21 @@ a[data-testid] > svg { #xwd-board rect[class^="Cell-related--"] { fill: ${goldenrod} !important; } +#xwd-board rect[class^="xwd__cell--cell"] { + fill: ${darkgrey} !important; +} +#xwd-board rect[class^="xwd__cell--highlighted"] { + fill: ${lightgrey} !important; +} +#xwd-board rect[class^="xwd__cell--selected"] { + fill: ${white} !important; +} +#xwd-board rect[class^="xwd__cell--related"] { + fill: ${khaki} !important; +} +#xwd-board rect[class*="xwd__cell--penciled"] ~ text[text-anchor^="middle"] { + fill: ${blue} !important; +} ================================ From 92f998ab80415fcb5f20685a241f5dbef4b2f12b Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 24 Mar 2022 21:38:27 +0100 Subject: [PATCH 562/892] Fix for coolors.co (#8505) - Fix CSS selector which caused a Syntaxerror exception within Dark Reader. --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c4485b8e34b7..f6f4fa34dbbd 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3598,7 +3598,7 @@ CSS } IGNORE INLINE STYLE -#generator* +#generator * ================================ From 698fd6c71e009029010e0d49d776474117296236 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 24 Mar 2022 21:56:45 +0100 Subject: [PATCH 563/892] Stability improvements (#8504) - I've encountered over the years many sites that uses the fonts.googleapis.com to fetch font styles. For Dark Reader, these styles are irrelevant, we don't modify font faces. Avoiding this early in the process will prevent some network activity and lower overhead(very minimal). - If for some reason the document gets loaded before `addDOMReadyListener` or `addReadyStateCompleteListener` has been called, they wouldn't be executed. Per this change, the functions will first check. - Increase timeout delays in certain tests which are time sensitive, I'd expect that the Github CI's server CPU are shared and not that high-speed(to avoid abuse of it) so increasing it should give it plenty of time to finish within that window. --- src/inject/dynamic-theme/style-manager.ts | 3 ++- src/inject/utils/dom.ts | 4 ++-- tests/inject/dynamic/link-override.tests.ts | 12 ++++++------ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/inject/dynamic-theme/style-manager.ts b/src/inject/dynamic-theme/style-manager.ts index 83000a8ffaf2..620b2fbea61f 100644 --- a/src/inject/dynamic-theme/style-manager.ts +++ b/src/inject/dynamic-theme/style-manager.ts @@ -45,7 +45,8 @@ export function shouldManageStyle(element: Node) { element.rel && element.rel.toLowerCase().includes('stylesheet') && !element.disabled && - (isFirefox ? !element.href.startsWith('moz-extension://') : true) + (isFirefox ? !element.href.startsWith('moz-extension://') : true) && + !element.href.startsWith('https://fonts.googleapis.com') ) ) && !element.classList.contains('darkreader') && diff --git a/src/inject/utils/dom.ts b/src/inject/utils/dom.ts index 008c75ade897..b5177d31c9a4 100644 --- a/src/inject/utils/dom.ts +++ b/src/inject/utils/dom.ts @@ -203,7 +203,7 @@ export function setIsDOMReady(newFunc: () => boolean) { const readyStateListeners = new Set<() => void>(); export function addDOMReadyListener(listener: () => void) { - readyStateListeners.add(listener); + isDOMReady() ? listener() : readyStateListeners.add(listener); } export function removeDOMReadyListener(listener: () => void) { @@ -219,7 +219,7 @@ export function isReadyStateComplete() { const readyStateCompleteListeners = new Set<() => void>(); export function addReadyStateCompleteListener(listener: () => void) { - readyStateCompleteListeners.add(listener); + isReadyStateComplete() ? listener() : readyStateCompleteListeners.add(listener); } export function cleanReadyStateCompleteListeners() { diff --git a/tests/inject/dynamic/link-override.tests.ts b/tests/inject/dynamic/link-override.tests.ts index 90bc88b953e9..f062972e9f39 100644 --- a/tests/inject/dynamic/link-override.tests.ts +++ b/tests/inject/dynamic/link-override.tests.ts @@ -89,7 +89,7 @@ describe('LINK STYLES', () => { ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(100); + await timeout(250); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -108,7 +108,7 @@ describe('LINK STYLES', () => { ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(100); + await timeout(250); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -123,13 +123,13 @@ describe('LINK STYLES', () => { '

Loaded cross-origin link override

', ); - await timeout(50); + await timeout(250); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(128, 128, 128)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(0, 0, 0)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 0, 0)'); createOrUpdateDynamicTheme(theme, null, false); - await timeout(50); + await timeout(250); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -184,7 +184,7 @@ describe('LINK STYLES', () => { ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(100); + await timeout(250); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -204,7 +204,7 @@ describe('LINK STYLES', () => { ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(100); + await timeout(250); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); From d5e8033c9cf390f1cd2f67f27330478abc1bb813 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 24 Mar 2022 22:06:44 +0100 Subject: [PATCH 564/892] Increase timeout (#8506) - Seems like CI is still failing(https://github.com/darkreader/darkreader/runs/5683084934?check_suite_focus=true). Give it even more plenty of time. If this still continues to happen we should think about checking if it's the CI and give it some timeout like a second or two seconds. --- tests/inject/dynamic/link-override.tests.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/inject/dynamic/link-override.tests.ts b/tests/inject/dynamic/link-override.tests.ts index f062972e9f39..648dfa5a3608 100644 --- a/tests/inject/dynamic/link-override.tests.ts +++ b/tests/inject/dynamic/link-override.tests.ts @@ -89,7 +89,7 @@ describe('LINK STYLES', () => { ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(250); + await timeout(400); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -108,7 +108,7 @@ describe('LINK STYLES', () => { ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(250); + await timeout(400); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -123,13 +123,13 @@ describe('LINK STYLES', () => { '

Loaded cross-origin link override

', ); - await timeout(250); + await timeout(400); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(128, 128, 128)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(0, 0, 0)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 0, 0)'); createOrUpdateDynamicTheme(theme, null, false); - await timeout(250); + await timeout(400); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -184,7 +184,7 @@ describe('LINK STYLES', () => { ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(250); + await timeout(400); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -204,7 +204,7 @@ describe('LINK STYLES', () => { ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(250); + await timeout(400); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); From 12a4b4cd900f37635580b19f7df348411b8e5783 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 24 Mar 2022 22:12:57 +0100 Subject: [PATCH 565/892] Fix for dhmo.org (#8507) - Resolves #8502 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index f6f4fa34dbbd..1ec1acb1c426 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4349,6 +4349,15 @@ pre { ================================ +dhmo.org + +CSS +body { + background-image: none !important; +} + +================================ + di.com.pl INVERT From beb61ad2a45516f97ca411a225482c3dbc2676f1 Mon Sep 17 00:00:00 2001 From: Sanjay Pavan Date: Fri, 25 Mar 2022 02:54:40 +0530 Subject: [PATCH 566/892] Add Catppuccin theme (#8503) --- src/config/color-schemes.drconf | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/color-schemes.drconf b/src/config/color-schemes.drconf index 5e1403515ba7..89dcd7bdd94d 100644 --- a/src/config/color-schemes.drconf +++ b/src/config/color-schemes.drconf @@ -10,6 +10,14 @@ text: #e8e6e3 ================================ +Catppuccin + +DARK +background: #161320 +text: #d9e0ee + +================================ + Dracula DARK From 8bc7854f1135f6af5051b9a1780158806acef79c Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 24 Mar 2022 22:26:53 +0100 Subject: [PATCH 567/892] Resolve stability in CI (#8508) - Roughly give 500ms for each background fetch call... This really should resolve some errors in CI. --- tests/inject/dynamic/link-override.tests.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tests/inject/dynamic/link-override.tests.ts b/tests/inject/dynamic/link-override.tests.ts index 648dfa5a3608..6b98061824e3 100644 --- a/tests/inject/dynamic/link-override.tests.ts +++ b/tests/inject/dynamic/link-override.tests.ts @@ -89,7 +89,7 @@ describe('LINK STYLES', () => { ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(400); + await timeout(500); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -107,8 +107,7 @@ describe('LINK STYLES', () => { '

Cross-origin import link override

', ); createOrUpdateDynamicTheme(theme, null, false); - - await timeout(400); + await timeout(500); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -123,13 +122,13 @@ describe('LINK STYLES', () => { '

Loaded cross-origin link override

', ); - await timeout(400); + await timeout(500); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(128, 128, 128)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(0, 0, 0)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 0, 0)'); createOrUpdateDynamicTheme(theme, null, false); - await timeout(400); + await timeout(500); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -184,7 +183,7 @@ describe('LINK STYLES', () => { ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(400); + await timeout(500); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -204,7 +203,7 @@ describe('LINK STYLES', () => { ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(400); + await timeout(1000); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); From a14e08f05c765b210d2302548d94e552ff5ee8e4 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 24 Mar 2022 22:38:18 +0100 Subject: [PATCH 568/892] Move code-related CI tests (#8509) - Don't run code-related CI tests when only a config is changed. Move the code-related CI tests to it's own workflow, which only run when a non-config path has been changed. Similar how test-browser.yml operates. --- .github/workflows/test-browser.yml | 2 +- .github/workflows/test-code.yml | 55 ++++++++++++++++++++++++++++++ .github/workflows/test.yml | 8 +---- 3 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/test-code.yml diff --git a/.github/workflows/test-browser.yml b/.github/workflows/test-browser.yml index a0f004369364..0803765d6259 100644 --- a/.github/workflows/test-browser.yml +++ b/.github/workflows/test-browser.yml @@ -2,7 +2,7 @@ name: Run browser tests in Karma on: # Runs for pushes and pull requests, - # but if changes are config-only + # but don't run these when only some config is changed. push: branches: - master diff --git a/.github/workflows/test-code.yml b/.github/workflows/test-code.yml new file mode 100644 index 000000000000..1b941d6b2828 --- /dev/null +++ b/.github/workflows/test-code.yml @@ -0,0 +1,55 @@ +name: Run code tests on Pull Request or Push +on: + + # Runs for pushes and pull requests, + # but don't run these when only some config is changed. + push: + branches: + - master + paths-ignore: + - 'src/config/*' + pull_request: + branches: + - master + types: + - opened + - synchronize + - reopened + - ready_for_review + paths-ignore: + - 'src/config/**' + + workflow_dispatch: +jobs: + test: + name: Run tests + runs-on: ubuntu-latest + steps: + - name: Clone repository + uses: actions/checkout@v2 + + - name: Set up Node.js + uses: actions/setup-node@v2 + with: + node-version: 15.x + + - name: Verify NPM version + run: npm --version + + - name: Set up npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-${{ hashFiles('package-lock.json') }} + restore-keys: | + ${{ runner.OS }}-${{ hashFiles('package-lock.json') }} + ${{ runner.OS }} + + - name: Install npm dependencies + run: npm ci + + - name: Lint code for code-style errors + run: npm run lint + + - name: Check for compatibility issues + run: npm run lint:bundle diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5b6705055532..f713063aea18 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,4 +1,4 @@ -name: Run tests on Pull Request or Push +name: Run config tests on Pull Request or Push on: push: branches: @@ -42,9 +42,3 @@ jobs: - name: Run test against code run: npm run test:ci - - - name: Lint code for code-style errors - run: npm run lint - - - name: Check for compatibility issues - run: npm run lint:bundle From 7d302b27096e487fb590d3fee2bc998f2e82655b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 24 Mar 2022 22:03:29 +0000 Subject: [PATCH 569/892] Bump minimist from 1.2.5 to 1.2.6 (#8510) Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/substack/minimist/releases) - [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e62574bd1a2..fe968aca81ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8516,9 +8516,9 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "node_modules/mkdirp": { @@ -18875,9 +18875,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "mkdirp": { From f86f355ba0cd9e952ec8fd2439a3b4fe0712607e Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Fri, 25 Mar 2022 14:38:18 +0000 Subject: [PATCH 570/892] Update dev dependencies (#8500) --- package-lock.json | 861 ++++++++++++++++------------------------------ package.json | 28 +- 2 files changed, 308 insertions(+), 581 deletions(-) diff --git a/package-lock.json b/package-lock.json index fe968aca81ba..f682467dbc4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,19 +12,19 @@ "@rollup/plugin-node-resolve": "13.1.3", "@rollup/plugin-replace": "4.0.0", "@rollup/plugin-typescript": "8.3.1", - "@rollup/pluginutils": "4.1.2", - "@types/chrome": "0.0.179", + "@rollup/pluginutils": "4.2.0", + "@types/chrome": "0.0.180", "@types/eslint": "8.4.1", - "@types/jasmine": "3.10.3", + "@types/jasmine": "4.0.0", "@types/jest": "27.4.1", "@types/karma": "6.3.3", "@types/karma-coverage": "2.0.1", - "@types/node": "17.0.21", + "@types/node": "17.0.23", "@types/offscreencanvas": "2019.6.4", - "@typescript-eslint/eslint-plugin": "5.13.0", - "@typescript-eslint/parser": "5.13.0", + "@typescript-eslint/eslint-plugin": "5.16.0", + "@typescript-eslint/parser": "5.16.0", "chokidar": "3.5.3", - "eslint": "8.10.0", + "eslint": "8.11.0", "eslint-plugin-compat": "4.0.2", "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", @@ -34,7 +34,7 @@ "jest": "27.5.1", "jest-extended": "2.0.0", "karma": "6.3.17", - "karma-chrome-launcher": "3.1.0", + "karma-chrome-launcher": "3.1.1", "karma-coverage": "2.2.0", "karma-firefox-launcher": "2.1.2", "karma-jasmine": "4.0.1", @@ -43,14 +43,14 @@ "karma-spec-reporter": "0.0.33", "less": "4.1.2", "malevic": "0.19.1", - "prettier": "2.5.1", - "puppeteer-core": "13.4.1", - "rollup": "2.69.0", + "prettier": "2.6.1", + "puppeteer-core": "13.5.1", + "rollup": "2.70.1", "rollup-plugin-istanbul2": "2.0.2", - "ts-jest": "27.1.3", + "ts-jest": "27.1.4", "tslib": "2.3.1", - "typescript": "4.6.2", - "web-ext": "6.7.0", + "typescript": "4.6.3", + "web-ext": "6.8.0", "ws": "8.5.0", "yazl": "2.5.1" }, @@ -684,16 +684,16 @@ "dev": true }, "node_modules/@eslint/eslintrc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.0.tgz", - "integrity": "sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.3.1", "globals": "^13.9.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.0.4", @@ -1020,9 +1020,9 @@ } }, "node_modules/@mdn/browser-compat-data": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.1.6.tgz", - "integrity": "sha512-JbtcHGODAlkOT6eDV2rCyOguW3+o34ExMD9DOki6kxzeyN3IBtZ9PI0FlbKeD77Bm5U0UG5Heo4qnNbSajXUnw==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.1.12.tgz", + "integrity": "sha512-y3Ntio6hb5+m6asxcA3nnIN6URjAFMji2EZZVYGd2Ag5On4mmvPhMnXdiIScCMXgHjFX+5qXuKaojLLhJHZPAg==", "dev": true }, "node_modules/@nodelib/fs.scandir": { @@ -1181,9 +1181,9 @@ "dev": true }, "node_modules/@rollup/pluginutils": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.2.tgz", - "integrity": "sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", + "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", "dev": true, "dependencies": { "estree-walker": "^2.0.1", @@ -1293,9 +1293,9 @@ } }, "node_modules/@types/chrome": { - "version": "0.0.179", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.179.tgz", - "integrity": "sha512-60zloNApIf88RwiG3Q7E+4NBG+znchhWmcaEVAAhUZahQbft5LWBzij4sinsfpAwbTtuWdFfUSpZsFhXTEFPVw==", + "version": "0.0.180", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.180.tgz", + "integrity": "sha512-A/CuuKAaHq2CHEpYBAtl0lp2ib7TTXK7VjJI4q+c+1U/HDvZLJ8IlsdEDzzHdvkNdh36bGONxrMnO9YZrKqbAw==", "dev": true, "dependencies": { "@types/filesystem": "*", @@ -1429,9 +1429,9 @@ } }, "node_modules/@types/jasmine": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.3.tgz", - "integrity": "sha512-SWyMrjgdAUHNQmutvDcKablrJhkDLy4wunTme8oYLjKp41GnHGxMRXr2MQMvy/qy8H3LdzwQk9gH4hZ6T++H8g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.0.tgz", + "integrity": "sha512-KvhqNz4NaONk7cfp4E9x+uXOUp7x4H2Zeyb4yXnw2vIuxD5YfSi1767x+aF7z54elhZcC0OH9/78/WL6+5jcDg==", "dev": true }, "node_modules/@types/jest": { @@ -1483,9 +1483,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", + "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", "dev": true }, "node_modules/@types/offscreencanvas": { @@ -1540,14 +1540,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.13.0.tgz", - "integrity": "sha512-vLktb2Uec81fxm/cfz2Hd6QaWOs8qdmVAZXLdOBX6JFJDhf6oDZpMzZ4/LZ6SFM/5DgDcxIMIvy3F+O9yZBuiQ==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.16.0.tgz", + "integrity": "sha512-SJoba1edXvQRMmNI505Uo4XmGbxCK9ARQpkvOd00anxzri9RNQk0DDCxD+LIl+jYhkzOJiOMMKYEHnHEODjdCw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.13.0", - "@typescript-eslint/type-utils": "5.13.0", - "@typescript-eslint/utils": "5.13.0", + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/type-utils": "5.16.0", + "@typescript-eslint/utils": "5.16.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -1572,24 +1572,15 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/@typescript-eslint/parser": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.13.0.tgz", - "integrity": "sha512-GdrU4GvBE29tm2RqWOM0P5QfCtgCyN4hXICj/X9ibKED16136l9ZpoJvCL5pSKtmJzA+NRDzQ312wWMejCVVfg==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.16.0.tgz", + "integrity": "sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.13.0", - "@typescript-eslint/types": "5.13.0", - "@typescript-eslint/typescript-estree": "5.13.0", + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/typescript-estree": "5.16.0", "debug": "^4.3.2" }, "engines": { @@ -1609,13 +1600,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.13.0.tgz", - "integrity": "sha512-T4N8UvKYDSfVYdmJq7g2IPJYCRzwtp74KyDZytkR4OL3NRupvswvmJQJ4CX5tDSurW2cvCc1Ia1qM7d0jpa7IA==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.16.0.tgz", + "integrity": "sha512-P+Yab2Hovg8NekLIR/mOElCDPyGgFZKhGoZA901Yax6WR6HVeGLbsqJkZ+Cvk5nts/dAlFKm8PfL43UZnWdpIQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.13.0", - "@typescript-eslint/visitor-keys": "5.13.0" + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/visitor-keys": "5.16.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1626,12 +1617,12 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.13.0.tgz", - "integrity": "sha512-/nz7qFizaBM1SuqAKb7GLkcNn2buRdDgZraXlkhz+vUGiN1NZ9LzkA595tHHeduAiS2MsHqMNhE2zNzGdw43Yg==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.16.0.tgz", + "integrity": "sha512-SKygICv54CCRl1Vq5ewwQUJV/8padIWvPgCxlWPGO/OgQLCijY9G7lDu6H+mqfQtbzDNlVjzVWQmeqbLMBLEwQ==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.13.0", + "@typescript-eslint/utils": "5.16.0", "debug": "^4.3.2", "tsutils": "^3.21.0" }, @@ -1652,9 +1643,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.13.0.tgz", - "integrity": "sha512-LmE/KO6DUy0nFY/OoQU0XelnmDt+V8lPQhh8MOVa7Y5k2gGRd6U9Kp3wAjhB4OHg57tUO0nOnwYQhRRyEAyOyg==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.16.0.tgz", + "integrity": "sha512-oUorOwLj/3/3p/HFwrp6m/J2VfbLC8gjW5X3awpQJ/bSG+YRGFS4dpsvtQ8T2VNveV+LflQHjlLvB6v0R87z4g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1665,13 +1656,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.13.0.tgz", - "integrity": "sha512-Q9cQow0DeLjnp5DuEDjLZ6JIkwGx3oYZe+BfcNuw/POhtpcxMTy18Icl6BJqTSd+3ftsrfuVb7mNHRZf7xiaNA==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.16.0.tgz", + "integrity": "sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.13.0", - "@typescript-eslint/visitor-keys": "5.13.0", + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/visitor-keys": "5.16.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -1711,25 +1702,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/@typescript-eslint/utils": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.13.0.tgz", - "integrity": "sha512-+9oHlPWYNl6AwwoEt5TQryEHwiKRVjz7Vk6kaBeD3/kwHE5YqTGHtm/JZY8Bo9ITOeKutFaXnBlMgSATMJALUQ==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.16.0.tgz", + "integrity": "sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.13.0", - "@typescript-eslint/types": "5.13.0", - "@typescript-eslint/typescript-estree": "5.13.0", + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/typescript-estree": "5.16.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -1745,12 +1727,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.13.0.tgz", - "integrity": "sha512-HLKEAS/qA1V7d9EzcpLFykTePmOQqOFim8oCvhY3pZgQ8Hi38hYpHd9e5GN6nQBFQNecNhws5wkS9Y5XIO0s/g==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.16.0.tgz", + "integrity": "sha512-jqxO8msp5vZDhikTwq9ubyMHqZ67UIvawohr4qF3KhlpL7gzSjOd+8471H3nh5LyABkaI85laEKKU8SnGUK5/g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/types": "5.16.0", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -1833,12 +1815,12 @@ } }, "node_modules/addons-linter": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-4.9.0.tgz", - "integrity": "sha512-dknaL2zU9faJHpObJSFhh7RKM7S2uUImQL0I/tIny862wp8u6O7EhFu1ktdFRLO3NirHOTdn0366EcRrbAt1yg==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-4.14.0.tgz", + "integrity": "sha512-TH3/PMS4Dd0Jf3kXW7DLXseHZcD7ZbnfnQAztkrP4YC0HQKQVZJ+lGOuDOGUtVQDMwC/eEdvHvZoRnHDer5qkg==", "dev": true, "dependencies": { - "@mdn/browser-compat-data": "4.1.6", + "@mdn/browser-compat-data": "4.1.12", "addons-moz-compare": "1.2.0", "addons-scanner-utils": "6.3.0", "ajv": "6.12.6", @@ -1848,10 +1830,10 @@ "columnify": "1.6.0", "common-tags": "1.8.2", "deepmerge": "4.2.2", - "eslint": "8.8.0", + "eslint": "8.11.0", "eslint-plugin-no-unsanitized": "4.0.1", - "eslint-visitor-keys": "3.2.0", - "espree": "9.3.0", + "eslint-visitor-keys": "3.3.0", + "espree": "9.3.1", "esprima": "4.0.1", "fluent-syntax": "0.13.0", "glob": "7.2.0", @@ -1859,15 +1841,15 @@ "is-mergeable-object": "1.1.1", "jed": "1.1.1", "os-locale": "5.0.0", - "pino": "7.6.5", - "postcss": "8.4.6", + "pino": "7.9.1", + "postcss": "8.4.12", "relaxed-json": "1.0.3", "semver": "7.3.5", "sha.js": "2.4.11", "source-map-support": "0.5.21", "tosource": "1.0.0", "upath": "2.0.1", - "yargs": "17.3.1", + "yargs": "17.4.0", "yauzl": "2.10.0" }, "bin": { @@ -1877,145 +1859,6 @@ "node": ">=12.21.0" } }, - "node_modules/addons-linter/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/addons-linter/node_modules/eslint": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz", - "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.0.5", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.2.0", - "espree": "^9.3.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/addons-linter/node_modules/eslint-plugin-no-unsanitized": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.1.tgz", - "integrity": "sha512-y/lAMWnPPC7RYuUdxlEL/XiCL8FehN9h9s3Kjqbp/Kv0i9NZs+IXSC2kS546Fa4Bumwy31HlVS/OdWX0Kxb5Xg==", - "dev": true, - "peerDependencies": { - "eslint": "^6 || ^7 || ^8" - } - }, - "node_modules/addons-linter/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/addons-linter/node_modules/eslint-visitor-keys": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", - "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/addons-linter/node_modules/espree": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", - "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", - "dev": true, - "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/addons-linter/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/addons-linter/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/addons-linter/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/addons-linter/node_modules/image-size": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.1.tgz", @@ -2032,9 +1875,9 @@ } }, "node_modules/addons-linter/node_modules/yargs": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", - "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz", + "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==", "dev": true, "dependencies": { "cliui": "^7.0.2", @@ -3931,9 +3774,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.960912", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.960912.tgz", - "integrity": "sha512-I3hWmV9rWHbdnUdmMKHF2NuYutIM2kXz2mdXW8ha7TbRlGTVs+PF+PsB5QWvpCek4Fy9B+msiispCfwlhG5Sqg==", + "version": "0.0.969999", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.969999.tgz", + "integrity": "sha512-6GfzuDWU0OFAuOvBokXpXPLxjOJ5DZ157Ue3sGQQM3LgAamb8m0R0ruSfN0DDu+XG5XJgT50i6zZ/0o8RglreQ==", "dev": true }, "node_modules/di": { @@ -4035,9 +3878,9 @@ } }, "node_modules/domhandler": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", - "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "dependencies": { "domelementtype": "^2.2.0" @@ -4507,12 +4350,12 @@ } }, "node_modules/eslint": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.10.0.tgz", - "integrity": "sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz", + "integrity": "sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.2.0", + "@eslint/eslintrc": "^1.2.1", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -4809,6 +4652,15 @@ "integrity": "sha1-8MBwEclf7EK/tNkJ3rtuoDXzsqQ=", "dev": true }, + "node_modules/eslint-plugin-no-unsanitized": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.1.tgz", + "integrity": "sha512-y/lAMWnPPC7RYuUdxlEL/XiCL8FehN9h9s3Kjqbp/Kv0i9NZs+IXSC2kS546Fa4Bumwy31HlVS/OdWX0Kxb5Xg==", + "dev": true, + "peerDependencies": { + "eslint": "^6 || ^7 || ^8" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -4904,15 +4756,6 @@ "node": ">=10.13.0" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/espree": { "version": "9.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", @@ -5016,13 +4859,6 @@ "node": ">= 0.6" } }, - "node_modules/event-to-promise": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.8.0.tgz", - "integrity": "sha1-S4TxF3K28l93Uvx02XFTGsb1tiY=", - "deprecated": "Use promise-toolbox/fromEvent instead", - "dev": true - }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -5868,15 +5704,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/globby/node_modules/slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", @@ -6226,9 +6053,9 @@ ] }, "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, "engines": { "node": ">= 4" @@ -7910,9 +7737,9 @@ } }, "node_modules/karma-chrome-launcher": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", - "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", "dev": true, "dependencies": { "which": "^1.2.1" @@ -9482,9 +9309,9 @@ } }, "node_modules/pino": { - "version": "7.6.5", - "resolved": "https://registry.npmjs.org/pino/-/pino-7.6.5.tgz", - "integrity": "sha512-38tAwlJ7HevMENHD5FZE+yxSlAH5Wg3FoOjbB3MX2j3/kgpOEkmDHhTVKkecR57qxD5doHo2yi9nac94gqqbiQ==", + "version": "7.9.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-7.9.1.tgz", + "integrity": "sha512-28+D7c5orCoScdcWtiPXrCA9tdVosBWrYQgVtPdYTyiuTt6u/+rbEtpJR+dtVG8k1flhv0H2f0XSkgGm+TdjqQ==", "dev": true, "dependencies": { "fast-redact": "^3.0.0", @@ -9540,21 +9367,27 @@ } }, "node_modules/postcss": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz", - "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==", + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], "dependencies": { - "nanoid": "^3.2.0", + "nanoid": "^3.3.1", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, "engines": { "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" } }, "node_modules/prelude-ls": { @@ -9576,15 +9409,18 @@ } }, "node_modules/prettier": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz", + "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==", "dev": true, "bin": { "prettier": "bin-prettier.js" }, "engines": { "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/pretty-format": { @@ -9634,6 +9470,18 @@ "node": ">=0.4.0" } }, + "node_modules/promise-toolbox": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/promise-toolbox/-/promise-toolbox-0.20.0.tgz", + "integrity": "sha512-VXF6waqUheD19yOU7zxsXhw/HCKlXqXwUc4jM8mchtBqZFNA+GHA7dbJsQDLHP4IUpQuTLpCQRd0lCr5z4CqXQ==", + "dev": true, + "dependencies": { + "make-error": "^1.3.2" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -9712,14 +9560,14 @@ } }, "node_modules/puppeteer-core": { - "version": "13.4.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.4.1.tgz", - "integrity": "sha512-AgRIWgIkUXXnbvoRhyveZnyoEYr3wTunSk2/evOfWvFs65GUzsrxnUTUSLgPM4MRshCQmRABW7qE1hDN1AD7nA==", + "version": "13.5.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.5.1.tgz", + "integrity": "sha512-dobVqWjV34ilyfQHR3BBnCYaekBYTi5MgegEYBRYd3s3uFy8jUpZEEWbaFjG9ETm+LGzR5Lmr0aF6LLuHtiuCg==", "dev": true, "dependencies": { "cross-fetch": "3.1.5", "debug": "4.3.3", - "devtools-protocol": "0.0.960912", + "devtools-protocol": "0.0.969999", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.0", "pkg-dir": "4.2.0", @@ -10231,9 +10079,9 @@ } }, "node_modules/rollup": { - "version": "2.69.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.69.0.tgz", - "integrity": "sha512-kjER91tHyek8gAkuz7+558vSnTQ+pITEok1P0aNOS45ZXyngaqPsXJmSel4QPQnJo7EJMjXUU1/GErWkWiKORg==", + "version": "2.70.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", + "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -11347,9 +11195,9 @@ } }, "node_modules/ts-jest": { - "version": "27.1.3", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", - "integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==", + "version": "27.1.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz", + "integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -11371,7 +11219,6 @@ "@babel/core": ">=7.0.0-beta.0 <8", "@types/jest": "^27.0.0", "babel-jest": ">=27.0.0 <28", - "esbuild": "~0.14.0", "jest": "^27.0.0", "typescript": ">=3.8 <5.0" }, @@ -11530,9 +11377,9 @@ } }, "node_modules/typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", + "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -11823,21 +11670,20 @@ } }, "node_modules/web-ext": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-6.7.0.tgz", - "integrity": "sha512-QN+ufUPMNhLbrEqwFDOuoHy4m2OOPAp8NDMKJaWIByZRh8VPH+JoJ6/NAaIEcs9TPKnkA2018TNIJAfYN9EerA==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-6.8.0.tgz", + "integrity": "sha512-qZ3a4YVs0Vdqet44QRZEcNUQznkrfhsAkSOnZp57O4T4A9Bo3pamePSBeRqdPdJv9GF8ntKG84o3eV0MrEvLbw==", "dev": true, "dependencies": { "@babel/runtime": "7.13.9", "@devicefarmer/adbkit": "2.11.3", - "addons-linter": "4.9.0", + "addons-linter": "4.14.0", "bunyan": "1.8.15", "camelcase": "6.2.0", "chrome-launcher": "0.15.0", "debounce": "1.2.0", "decamelize": "5.0.0", "es6-error": "4.1.1", - "event-to-promise": "0.8.0", "firefox-profile": "4.2.2", "fs-extra": "9.1.0", "fx-runner": "1.2.0", @@ -11848,6 +11694,7 @@ "node-notifier": "9.0.0", "open": "7.4.2", "parse-json": "5.2.0", + "promise-toolbox": "0.20.0", "sign-addon": "3.11.0", "source-map-support": "0.5.20", "strip-bom": "4.0.0", @@ -12766,16 +12613,16 @@ } }, "@eslint/eslintrc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.0.tgz", - "integrity": "sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.3.1", "globals": "^13.9.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.0.4", @@ -13037,9 +12884,9 @@ } }, "@mdn/browser-compat-data": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.1.6.tgz", - "integrity": "sha512-JbtcHGODAlkOT6eDV2rCyOguW3+o34ExMD9DOki6kxzeyN3IBtZ9PI0FlbKeD77Bm5U0UG5Heo4qnNbSajXUnw==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.1.12.tgz", + "integrity": "sha512-y3Ntio6hb5+m6asxcA3nnIN6URjAFMji2EZZVYGd2Ag5On4mmvPhMnXdiIScCMXgHjFX+5qXuKaojLLhJHZPAg==", "dev": true }, "@nodelib/fs.scandir": { @@ -13160,9 +13007,9 @@ } }, "@rollup/pluginutils": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.2.tgz", - "integrity": "sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", + "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", "dev": true, "requires": { "estree-walker": "^2.0.1", @@ -13257,9 +13104,9 @@ } }, "@types/chrome": { - "version": "0.0.179", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.179.tgz", - "integrity": "sha512-60zloNApIf88RwiG3Q7E+4NBG+znchhWmcaEVAAhUZahQbft5LWBzij4sinsfpAwbTtuWdFfUSpZsFhXTEFPVw==", + "version": "0.0.180", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.180.tgz", + "integrity": "sha512-A/CuuKAaHq2CHEpYBAtl0lp2ib7TTXK7VjJI4q+c+1U/HDvZLJ8IlsdEDzzHdvkNdh36bGONxrMnO9YZrKqbAw==", "dev": true, "requires": { "@types/filesystem": "*", @@ -13393,9 +13240,9 @@ } }, "@types/jasmine": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.3.tgz", - "integrity": "sha512-SWyMrjgdAUHNQmutvDcKablrJhkDLy4wunTme8oYLjKp41GnHGxMRXr2MQMvy/qy8H3LdzwQk9gH4hZ6T++H8g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.0.tgz", + "integrity": "sha512-KvhqNz4NaONk7cfp4E9x+uXOUp7x4H2Zeyb4yXnw2vIuxD5YfSi1767x+aF7z54elhZcC0OH9/78/WL6+5jcDg==", "dev": true }, "@types/jest": { @@ -13447,9 +13294,9 @@ "dev": true }, "@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", + "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", "dev": true }, "@types/offscreencanvas": { @@ -13504,77 +13351,69 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.13.0.tgz", - "integrity": "sha512-vLktb2Uec81fxm/cfz2Hd6QaWOs8qdmVAZXLdOBX6JFJDhf6oDZpMzZ4/LZ6SFM/5DgDcxIMIvy3F+O9yZBuiQ==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.16.0.tgz", + "integrity": "sha512-SJoba1edXvQRMmNI505Uo4XmGbxCK9ARQpkvOd00anxzri9RNQk0DDCxD+LIl+jYhkzOJiOMMKYEHnHEODjdCw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.13.0", - "@typescript-eslint/type-utils": "5.13.0", - "@typescript-eslint/utils": "5.13.0", + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/type-utils": "5.16.0", + "@typescript-eslint/utils": "5.16.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", "regexpp": "^3.2.0", "semver": "^7.3.5", "tsutils": "^3.21.0" - }, - "dependencies": { - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - } } }, "@typescript-eslint/parser": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.13.0.tgz", - "integrity": "sha512-GdrU4GvBE29tm2RqWOM0P5QfCtgCyN4hXICj/X9ibKED16136l9ZpoJvCL5pSKtmJzA+NRDzQ312wWMejCVVfg==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.16.0.tgz", + "integrity": "sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.13.0", - "@typescript-eslint/types": "5.13.0", - "@typescript-eslint/typescript-estree": "5.13.0", + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/typescript-estree": "5.16.0", "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.13.0.tgz", - "integrity": "sha512-T4N8UvKYDSfVYdmJq7g2IPJYCRzwtp74KyDZytkR4OL3NRupvswvmJQJ4CX5tDSurW2cvCc1Ia1qM7d0jpa7IA==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.16.0.tgz", + "integrity": "sha512-P+Yab2Hovg8NekLIR/mOElCDPyGgFZKhGoZA901Yax6WR6HVeGLbsqJkZ+Cvk5nts/dAlFKm8PfL43UZnWdpIQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.13.0", - "@typescript-eslint/visitor-keys": "5.13.0" + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/visitor-keys": "5.16.0" } }, "@typescript-eslint/type-utils": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.13.0.tgz", - "integrity": "sha512-/nz7qFizaBM1SuqAKb7GLkcNn2buRdDgZraXlkhz+vUGiN1NZ9LzkA595tHHeduAiS2MsHqMNhE2zNzGdw43Yg==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.16.0.tgz", + "integrity": "sha512-SKygICv54CCRl1Vq5ewwQUJV/8padIWvPgCxlWPGO/OgQLCijY9G7lDu6H+mqfQtbzDNlVjzVWQmeqbLMBLEwQ==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.13.0", + "@typescript-eslint/utils": "5.16.0", "debug": "^4.3.2", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.13.0.tgz", - "integrity": "sha512-LmE/KO6DUy0nFY/OoQU0XelnmDt+V8lPQhh8MOVa7Y5k2gGRd6U9Kp3wAjhB4OHg57tUO0nOnwYQhRRyEAyOyg==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.16.0.tgz", + "integrity": "sha512-oUorOwLj/3/3p/HFwrp6m/J2VfbLC8gjW5X3awpQJ/bSG+YRGFS4dpsvtQ8T2VNveV+LflQHjlLvB6v0R87z4g==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.13.0.tgz", - "integrity": "sha512-Q9cQow0DeLjnp5DuEDjLZ6JIkwGx3oYZe+BfcNuw/POhtpcxMTy18Icl6BJqTSd+3ftsrfuVb7mNHRZf7xiaNA==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.16.0.tgz", + "integrity": "sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.13.0", - "@typescript-eslint/visitor-keys": "5.13.0", + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/visitor-keys": "5.16.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -13595,36 +13434,30 @@ "merge2": "^1.4.1", "slash": "^3.0.0" } - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true } } }, "@typescript-eslint/utils": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.13.0.tgz", - "integrity": "sha512-+9oHlPWYNl6AwwoEt5TQryEHwiKRVjz7Vk6kaBeD3/kwHE5YqTGHtm/JZY8Bo9ITOeKutFaXnBlMgSATMJALUQ==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.16.0.tgz", + "integrity": "sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.13.0", - "@typescript-eslint/types": "5.13.0", - "@typescript-eslint/typescript-estree": "5.13.0", + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/typescript-estree": "5.16.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.13.0.tgz", - "integrity": "sha512-HLKEAS/qA1V7d9EzcpLFykTePmOQqOFim8oCvhY3pZgQ8Hi38hYpHd9e5GN6nQBFQNecNhws5wkS9Y5XIO0s/g==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.16.0.tgz", + "integrity": "sha512-jqxO8msp5vZDhikTwq9ubyMHqZ67UIvawohr4qF3KhlpL7gzSjOd+8471H3nh5LyABkaI85laEKKU8SnGUK5/g==", "dev": true, "requires": { - "@typescript-eslint/types": "5.13.0", + "@typescript-eslint/types": "5.16.0", "eslint-visitor-keys": "^3.0.0" } }, @@ -13682,12 +13515,12 @@ "dev": true }, "addons-linter": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-4.9.0.tgz", - "integrity": "sha512-dknaL2zU9faJHpObJSFhh7RKM7S2uUImQL0I/tIny862wp8u6O7EhFu1ktdFRLO3NirHOTdn0366EcRrbAt1yg==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-4.14.0.tgz", + "integrity": "sha512-TH3/PMS4Dd0Jf3kXW7DLXseHZcD7ZbnfnQAztkrP4YC0HQKQVZJ+lGOuDOGUtVQDMwC/eEdvHvZoRnHDer5qkg==", "dev": true, "requires": { - "@mdn/browser-compat-data": "4.1.6", + "@mdn/browser-compat-data": "4.1.12", "addons-moz-compare": "1.2.0", "addons-scanner-utils": "6.3.0", "ajv": "6.12.6", @@ -13697,10 +13530,10 @@ "columnify": "1.6.0", "common-tags": "1.8.2", "deepmerge": "4.2.2", - "eslint": "8.8.0", + "eslint": "8.11.0", "eslint-plugin-no-unsanitized": "4.0.1", - "eslint-visitor-keys": "3.2.0", - "espree": "9.3.0", + "eslint-visitor-keys": "3.3.0", + "espree": "9.3.1", "esprima": "4.0.1", "fluent-syntax": "0.13.0", "glob": "7.2.0", @@ -13708,122 +13541,18 @@ "is-mergeable-object": "1.1.1", "jed": "1.1.1", "os-locale": "5.0.0", - "pino": "7.6.5", - "postcss": "8.4.6", + "pino": "7.9.1", + "postcss": "8.4.12", "relaxed-json": "1.0.3", "semver": "7.3.5", "sha.js": "2.4.11", "source-map-support": "0.5.21", "tosource": "1.0.0", "upath": "2.0.1", - "yargs": "17.3.1", + "yargs": "17.4.0", "yauzl": "2.10.0" }, "dependencies": { - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz", - "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.0.5", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.2.0", - "espree": "^9.3.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - } - }, - "eslint-plugin-no-unsanitized": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.1.tgz", - "integrity": "sha512-y/lAMWnPPC7RYuUdxlEL/XiCL8FehN9h9s3Kjqbp/Kv0i9NZs+IXSC2kS546Fa4Bumwy31HlVS/OdWX0Kxb5Xg==", - "dev": true, - "requires": {} - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", - "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", - "dev": true - }, - "espree": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", - "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", - "dev": true, - "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, "image-size": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.1.tgz", @@ -13834,9 +13563,9 @@ } }, "yargs": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", - "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz", + "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -15326,9 +15055,9 @@ "dev": true }, "devtools-protocol": { - "version": "0.0.960912", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.960912.tgz", - "integrity": "sha512-I3hWmV9rWHbdnUdmMKHF2NuYutIM2kXz2mdXW8ha7TbRlGTVs+PF+PsB5QWvpCek4Fy9B+msiispCfwlhG5Sqg==", + "version": "0.0.969999", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.969999.tgz", + "integrity": "sha512-6GfzuDWU0OFAuOvBokXpXPLxjOJ5DZ157Ue3sGQQM3LgAamb8m0R0ruSfN0DDu+XG5XJgT50i6zZ/0o8RglreQ==", "dev": true }, "di": { @@ -15408,9 +15137,9 @@ } }, "domhandler": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", - "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "requires": { "domelementtype": "^2.2.0" @@ -15775,12 +15504,12 @@ } }, "eslint": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.10.0.tgz", - "integrity": "sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz", + "integrity": "sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.2.0", + "@eslint/eslintrc": "^1.2.1", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -15847,12 +15576,6 @@ "requires": { "is-glob": "^4.0.3" } - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true } } }, @@ -16055,6 +15778,13 @@ "integrity": "sha1-8MBwEclf7EK/tNkJ3rtuoDXzsqQ=", "dev": true }, + "eslint-plugin-no-unsanitized": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.1.tgz", + "integrity": "sha512-y/lAMWnPPC7RYuUdxlEL/XiCL8FehN9h9s3Kjqbp/Kv0i9NZs+IXSC2kS546Fa4Bumwy31HlVS/OdWX0Kxb5Xg==", + "dev": true, + "requires": {} + }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -16164,12 +15894,6 @@ "dev": true, "peer": true }, - "event-to-promise": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.8.0.tgz", - "integrity": "sha1-S4TxF3K28l93Uvx02XFTGsb1tiY=", - "dev": true - }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -16833,12 +16557,6 @@ "slash": "^4.0.0" }, "dependencies": { - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, "slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", @@ -17094,9 +16812,9 @@ "dev": true }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "image-size": { @@ -18390,9 +18108,9 @@ } }, "karma-chrome-launcher": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", - "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", "dev": true, "requires": { "which": "^1.2.1" @@ -19607,9 +19325,9 @@ } }, "pino": { - "version": "7.6.5", - "resolved": "https://registry.npmjs.org/pino/-/pino-7.6.5.tgz", - "integrity": "sha512-38tAwlJ7HevMENHD5FZE+yxSlAH5Wg3FoOjbB3MX2j3/kgpOEkmDHhTVKkecR57qxD5doHo2yi9nac94gqqbiQ==", + "version": "7.9.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-7.9.1.tgz", + "integrity": "sha512-28+D7c5orCoScdcWtiPXrCA9tdVosBWrYQgVtPdYTyiuTt6u/+rbEtpJR+dtVG8k1flhv0H2f0XSkgGm+TdjqQ==", "dev": true, "requires": { "fast-redact": "^3.0.0", @@ -19656,12 +19374,12 @@ } }, "postcss": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz", - "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==", + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", "dev": true, "requires": { - "nanoid": "^3.2.0", + "nanoid": "^3.3.1", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } @@ -19679,9 +19397,9 @@ "dev": true }, "prettier": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz", + "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==", "dev": true }, "pretty-format": { @@ -19721,6 +19439,15 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "promise-toolbox": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/promise-toolbox/-/promise-toolbox-0.20.0.tgz", + "integrity": "sha512-VXF6waqUheD19yOU7zxsXhw/HCKlXqXwUc4jM8mchtBqZFNA+GHA7dbJsQDLHP4IUpQuTLpCQRd0lCr5z4CqXQ==", + "dev": true, + "requires": { + "make-error": "^1.3.2" + } + }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -19787,14 +19514,14 @@ } }, "puppeteer-core": { - "version": "13.4.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.4.1.tgz", - "integrity": "sha512-AgRIWgIkUXXnbvoRhyveZnyoEYr3wTunSk2/evOfWvFs65GUzsrxnUTUSLgPM4MRshCQmRABW7qE1hDN1AD7nA==", + "version": "13.5.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.5.1.tgz", + "integrity": "sha512-dobVqWjV34ilyfQHR3BBnCYaekBYTi5MgegEYBRYd3s3uFy8jUpZEEWbaFjG9ETm+LGzR5Lmr0aF6LLuHtiuCg==", "dev": true, "requires": { "cross-fetch": "3.1.5", "debug": "4.3.3", - "devtools-protocol": "0.0.960912", + "devtools-protocol": "0.0.969999", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.0", "pkg-dir": "4.2.0", @@ -20180,9 +19907,9 @@ } }, "rollup": { - "version": "2.69.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.69.0.tgz", - "integrity": "sha512-kjER91tHyek8gAkuz7+558vSnTQ+pITEok1P0aNOS45ZXyngaqPsXJmSel4QPQnJo7EJMjXUU1/GErWkWiKORg==", + "version": "2.70.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", + "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -21071,9 +20798,9 @@ } }, "ts-jest": { - "version": "27.1.3", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", - "integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==", + "version": "27.1.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz", + "integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==", "dev": true, "requires": { "bs-logger": "0.x", @@ -21200,9 +20927,9 @@ } }, "typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", + "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", "dev": true }, "ua-parser-js": { @@ -21420,21 +21147,20 @@ } }, "web-ext": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-6.7.0.tgz", - "integrity": "sha512-QN+ufUPMNhLbrEqwFDOuoHy4m2OOPAp8NDMKJaWIByZRh8VPH+JoJ6/NAaIEcs9TPKnkA2018TNIJAfYN9EerA==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-6.8.0.tgz", + "integrity": "sha512-qZ3a4YVs0Vdqet44QRZEcNUQznkrfhsAkSOnZp57O4T4A9Bo3pamePSBeRqdPdJv9GF8ntKG84o3eV0MrEvLbw==", "dev": true, "requires": { "@babel/runtime": "7.13.9", "@devicefarmer/adbkit": "2.11.3", - "addons-linter": "4.9.0", + "addons-linter": "4.14.0", "bunyan": "1.8.15", "camelcase": "6.2.0", "chrome-launcher": "0.15.0", "debounce": "1.2.0", "decamelize": "5.0.0", "es6-error": "4.1.1", - "event-to-promise": "0.8.0", "firefox-profile": "4.2.2", "fs-extra": "9.1.0", "fx-runner": "1.2.0", @@ -21445,6 +21171,7 @@ "node-notifier": "9.0.0", "open": "7.4.2", "parse-json": "5.2.0", + "promise-toolbox": "0.20.0", "sign-addon": "3.11.0", "source-map-support": "0.5.20", "strip-bom": "4.0.0", diff --git a/package.json b/package.json index 35236a53e3cb..10dbb0519625 100644 --- a/package.json +++ b/package.json @@ -56,19 +56,19 @@ "@rollup/plugin-node-resolve": "13.1.3", "@rollup/plugin-replace": "4.0.0", "@rollup/plugin-typescript": "8.3.1", - "@rollup/pluginutils": "4.1.2", - "@types/chrome": "0.0.179", + "@rollup/pluginutils": "4.2.0", + "@types/chrome": "0.0.180", "@types/eslint": "8.4.1", - "@types/jasmine": "3.10.3", + "@types/jasmine": "4.0.0", "@types/jest": "27.4.1", "@types/karma": "6.3.3", "@types/karma-coverage": "2.0.1", - "@types/node": "17.0.21", + "@types/node": "17.0.23", "@types/offscreencanvas": "2019.6.4", - "@typescript-eslint/eslint-plugin": "5.13.0", - "@typescript-eslint/parser": "5.13.0", + "@typescript-eslint/eslint-plugin": "5.16.0", + "@typescript-eslint/parser": "5.16.0", "chokidar": "3.5.3", - "eslint": "8.10.0", + "eslint": "8.11.0", "eslint-plugin-compat": "4.0.2", "eslint-plugin-import": "2.25.4", "eslint-plugin-local": "1.0.0", @@ -78,7 +78,7 @@ "jest": "27.5.1", "jest-extended": "2.0.0", "karma": "6.3.17", - "karma-chrome-launcher": "3.1.0", + "karma-chrome-launcher": "3.1.1", "karma-coverage": "2.2.0", "karma-firefox-launcher": "2.1.2", "karma-jasmine": "4.0.1", @@ -87,14 +87,14 @@ "karma-spec-reporter": "0.0.33", "less": "4.1.2", "malevic": "0.19.1", - "prettier": "2.5.1", - "puppeteer-core": "13.4.1", - "rollup": "2.69.0", + "prettier": "2.6.1", + "puppeteer-core": "13.5.1", + "rollup": "2.70.1", "rollup-plugin-istanbul2": "2.0.2", - "ts-jest": "27.1.3", + "ts-jest": "27.1.4", "tslib": "2.3.1", - "typescript": "4.6.2", - "web-ext": "6.7.0", + "typescript": "4.6.3", + "web-ext": "6.8.0", "ws": "8.5.0", "yazl": "2.5.1" } From 714ba00e03405045f9119732cea6935aebfb2f83 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Sun, 27 Mar 2022 12:57:27 -0700 Subject: [PATCH 571/892] Fix vimeo.com (dynamic) (#8512) - Fixes logo in header and footer Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1ec1acb1c426..cccb16433127 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17103,7 +17103,7 @@ INVERT vimeo.com INVERT -svg[height="31"] +svg[alt="Vimeo"] ================================ From 65962ee42fa5cdbb57629a2e34a36005fbd040d3 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Sun, 27 Mar 2022 12:59:56 -0700 Subject: [PATCH 572/892] Fix for cnbc.com (#8514) Example page: https://www.cnbc.com/2021/12/29/omicron-not-the-same-disease-as-earlier-covid-strains-oxford-scientist.html Fixes bullet points and TV logo. --- src/config/dynamic-theme-fixes.config | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index cccb16433127..2b798c57c2b6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3168,6 +3168,10 @@ INVERT cnbc.com +INVERT +.RenderKeyPoints-list li::before +.WatchLiveRightRail-logo + CSS div[class^="FeaturedStories-styles-makeit-background"]::before { opacity: 0.1 !important; From 40b80a0f5e890b1792252e320c650e2e5f1b4cf8 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Sun, 27 Mar 2022 13:02:21 -0700 Subject: [PATCH 573/892] Fix for spectrum.com and spectrum.net (#8516) spectrum.com - Invert logo - Hide bright background image on homepage spectrum.net - Invert bright banner images - Invert logo - Hide bright background image on homepage --- src/config/dynamic-theme-fixes.config | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2b798c57c2b6..b16ac39ffb70 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14765,6 +14765,18 @@ CSS ================================ +spectrum.com + +INVERT +img[src$="spectrum-logo.svg"] + +CSS +.sp-background-image { + background-image: none !important; +} + +================================ + spectrum.ieee.org INVERT @@ -14772,6 +14784,19 @@ a[title="Spectrum Logo"] > svg ================================ +spectrum.net + +INVERT +.banner-wrapper > .image-container +img[src$="spectrum-logo.svg"] + +CSS +.unauthenticated-homepage { + background-image: none !important; +} + +================================ + speed.cloudflare.com INVERT From aefa5570ad703a33a68378244b2843c3ad31b032 Mon Sep 17 00:00:00 2001 From: Andrei Balaci <47945400+abalaci@users.noreply.github.com> Date: Sun, 27 Mar 2022 23:10:24 +0300 Subject: [PATCH 574/892] Update dark sites (#8518) --- src/config/dark-sites.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 11bdb7c789c2..3ce9cfc5acf7 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -891,7 +891,6 @@ support.steampowered.com supremacy1914.com surviv.io svtplay.se -symfony.com szmarczak.com t.maisputain.ovh tacoanon.github.io @@ -1014,6 +1013,7 @@ whirl.codes widgetbot.io wiki.step-project.com windowsterminalthemes.dev +winget.run wiocha.pl wolfy.fr worldofamalur.de From 99e00e77e42ed274e93124f5f57c60a000e6ec71 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 27 Mar 2022 22:10:32 +0200 Subject: [PATCH 575/892] Fix for deadpixeltest.org (#8523) - Resolves #8517 --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b16ac39ffb70..80819f1507c3 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4006,6 +4006,18 @@ img[alt="Dawn Logo"] ================================ +deadpixeltest.org + +CSS +html { + background-color: transparent !important; +} + +IGNORE INLINE STYLE +body + +================================ + debian.org INVERT From f8041d127d0cf3f5b22506715ed717cd27aeb3eb Mon Sep 17 00:00:00 2001 From: linsui <36977733+linsui@users.noreply.github.com> Date: Sun, 27 Mar 2022 20:55:38 +0000 Subject: [PATCH 576/892] Fix for scribe.rip (#8520) - Fix background-color --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 80819f1507c3..a84f3b239528 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14153,6 +14153,15 @@ INVERT ================================ +scribe.rip + +CSS +body { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + script.google.com INVERT From b81e665c7c2ea1e865d9ae8ab410ba465ace0788 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 27 Mar 2022 22:59:06 +0200 Subject: [PATCH 577/892] Fix for gain.tv (#8527) - Resolves #8521 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a84f3b239528..cdb98442ca37 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6604,6 +6604,15 @@ CSS ================================ +gain.tv + +CSS +.body-new-index .hero-img-container { + z-index: 0 !important; +} + +================================ + garmin.com INVERT From 4be5ec21e1d0b6dda10c6900f1977ea3fb925292 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Sun, 27 Mar 2022 23:02:26 +0200 Subject: [PATCH 578/892] Fix for polymc.org (#8522) - Fix logo --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index cdb98442ca37..b1b4e6b216fd 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12924,6 +12924,14 @@ CSS ================================ +polymc.org +polymc.github.io + +IGNORE INLINE STYLE +svg.home * + +================================ + poradnikzdrowie.pl INVERT From a80440bb556c5bd629623c897cc1dd51e8988676 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 27 Mar 2022 23:21:09 +0200 Subject: [PATCH 579/892] Fix for istanbulfm.com.tr (#8529) - Resolves #8524 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b1b4e6b216fd..7949b11c6fd6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8518,6 +8518,15 @@ div.grey-gui-bg, ================================ +istanbulfm.com.tr + +CSS +#jarallax-container-0 { + z-index: 0 !important; +} + +================================ + itbiznes.pl INVERT From a26fd2ea182952cf6abf847218f2aeeb1f63bc4a Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 27 Mar 2022 23:39:55 +0200 Subject: [PATCH 580/892] Fix Gruvbox color-scheme's foreground (#8531) --- src/config/color-schemes.drconf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/color-schemes.drconf b/src/config/color-schemes.drconf index 89dcd7bdd94d..3162619a386d 100644 --- a/src/config/color-schemes.drconf +++ b/src/config/color-schemes.drconf @@ -30,11 +30,11 @@ Gruvbox DARK background: #282828 -text: #8ec07c +text: #ebdbb2 LIGHT background: #fbf1c7 -text: #427b58 +text: #3c3836 ================================ From 9729ec34023b3edd01781a36c42019b4b38b0f54 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 27 Mar 2022 23:47:50 +0200 Subject: [PATCH 581/892] Fix for samsung.* (#8532) - Resolves #8530 --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7949b11c6fd6..22196fd7c5a0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14029,6 +14029,7 @@ samsung.* INVERT .icon +.gnb__logo CSS .feature-full-bleed-text img { From 37c413b2462c99625ca8070ec9c1b26e7d02d248 Mon Sep 17 00:00:00 2001 From: Andrea Date: Sun, 27 Mar 2022 23:45:22 -0700 Subject: [PATCH 582/892] Fix for duolingo.com (#8534) - Fix word pairing opacity. --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 22196fd7c5a0..a3dbe2f25ac4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5092,7 +5092,7 @@ INVERT [data-test="skill-icon"] + div img CSS -button[aria-disabled="true"] > span { +button[aria-disabled="true"] { opacity: 0.3 !important; } From 94311a9cd129daaff830b4e3df3d72451afe8d3c Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Mon, 28 Mar 2022 11:36:21 -0700 Subject: [PATCH 583/892] Fix for onelook.com (#8536) Fixes logo at top center of page --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a3dbe2f25ac4..758a1fede9a6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12075,6 +12075,13 @@ table[style*="/cvir/UI"], ================================ +onelook.com + +INVERT +img[alt="OneLook"] + +================================ + onet.pl plejada.pl From ef455d41ebfdffc49693f1dd9652d8fe7ecfa02f Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Mon, 28 Mar 2022 11:39:17 -0700 Subject: [PATCH 584/892] Fix for radeonramdisk.com (#8535) Fixes AMD logo in upper-left corner --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 758a1fede9a6..817434d2123e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13355,6 +13355,13 @@ INVERT ================================ +radeonramdisk.com + +INVERT +#logo + +================================ + radio17.pl INVERT From 69a56035bee4314fd75aef21185a4e35665af0f0 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 29 Mar 2022 22:39:03 +0200 Subject: [PATCH 585/892] Fix for scribus.net (#8556) - Resolves #8540 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 817434d2123e..8a6c8028d67b 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14203,6 +14203,13 @@ body { ================================ +scribus.net + +INVERT +#site-header img + +================================ + script.google.com INVERT From 7010912c189ed21510ae59eb084e7cee7fcb31df Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 29 Mar 2022 22:43:50 +0200 Subject: [PATCH 586/892] Fix for redhat.com (#8557) - Resolves #8541 --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8a6c8028d67b..455f9ac05e79 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13588,6 +13588,9 @@ p, li { background-color: ${white} !important; } +IGNORE INLINE STYLE +.redhat-logo * + ================================ redpenreviews.org From 81b949c7517fa7b97573fff4a72db1fde27b7924 Mon Sep 17 00:00:00 2001 From: davext Date: Tue, 29 Mar 2022 13:45:08 -0700 Subject: [PATCH 587/892] Fix for sellercentral.amazon.com (#8542) - Fix sellercentral.amazon.com for inversion. Co-authored-by: Gusted --- src/config/inversion-fixes.config | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/config/inversion-fixes.config b/src/config/inversion-fixes.config index aaeb786de3d9..d0e50cbb2fa9 100644 --- a/src/config/inversion-fixes.config +++ b/src/config/inversion-fixes.config @@ -1966,6 +1966,24 @@ INVERT ================================ +sellercentral.amazon.com + +CSS +.sc-header { + background: #5c00ff !important; +} +.small,.account-switch-icon{ + fill: black !important; +} +.locale-icon-wrapper{ + color: black !important; +} +.logo-container { + filter: brightness(0%) !important; +} + +================================ + semlar.com INVERT From be13c0bdf6030afc04be21151e33dd56bdbf2a00 Mon Sep 17 00:00:00 2001 From: Zurani <93269403+zuranihenry@users.noreply.github.com> Date: Tue, 29 Mar 2022 23:04:03 +0200 Subject: [PATCH 588/892] Added dark sites (#8526) Co-authored-by: Gusted --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 3ce9cfc5acf7..8a7813215071 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -453,6 +453,7 @@ humblebundle.com/refer humblebundle.com/subscription humblegames.com hyper.is +hyperbeam.dev i3wm.org ibookpile.net identinator.com From 7c31b5904057998ffd1f5cff40ad7cd9adf27aa2 Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Tue, 29 Mar 2022 16:06:00 -0500 Subject: [PATCH 589/892] Fix for planet.gnome.org (#8548) - Resolves #8543 Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 455f9ac05e79..b92be54bf88e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12755,6 +12755,15 @@ footer > div > div > a > img ================================ +planet.gnome.org + +CSS +div.post { + background-image: none !important; +} + +================================ + planetagracza.pl INVERT From 79148d849347b18c67b1ca4aab76b11f9ee2e240 Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Tue, 29 Mar 2022 16:06:36 -0500 Subject: [PATCH 590/892] Fix for discuss.pixls.us (#8545) - Resolves #8537 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b92be54bf88e..5e45a03cb5fc 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4543,6 +4543,13 @@ body ================================ +discuss.pixls.us + +INVERT +#site-logo.logo-big + +================================ + disk.yandex.* docviewer.yandex.* From a3089dbba932003f36ce46f6278ab3dc42e9c9a5 Mon Sep 17 00:00:00 2001 From: Pineapples <91441379+IHatePineapples@users.noreply.github.com> Date: Thu, 31 Mar 2022 17:51:16 +0000 Subject: [PATCH 591/892] Improve French translation (#8559) - I just made some general improvements to sound more natural and accurate (in context). But also took into account size of fields/buttons for the choice of words. --- src/_locales/fr.config | 64 +++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/_locales/fr.config b/src/_locales/fr.config index 0758acf9482e..e8cd15e4d79a 100644 --- a/src/_locales/fr.config +++ b/src/_locales/fr.config @@ -1,40 +1,40 @@ @extension_description -Un thème sombre pour chaque site Web. Prenez soin de vos yeux, utilisez Dark Reader pour votre navigation nocturne et quotidienne. +Thème sombre partout sur le net. Détendez vous et vos yeux, profitez d'un thème sombre sur internet jour et nuit. @loading_please_wait -Chargement, veuillez patienter +Chargement en cours, veuillez patienter #==== Top section ==== @on -Marche +Actif @off -Arrêt +Inactif @toggle_current_site -Activer/Désactiver le site actuel +Activer/Désactiver sur le site actuel @setup_hotkey_toggle_site -Configurer la touche de raccourci -du basculement du site actuel +Configurer le raccourci clavier +pour activer/désactiver sur le site actuel @toggle_extension Activer/Désactiver l'extension @setup_hotkey_toggle_extension -Configuration de l'extension -Touche de raccourci bascule +Configurer l'extension +Raccourci clavier pour activer/désactiver @automation -Automatisation +Réglage automatique @set_active_hours -Définissez les heures d’activité +Définir les heures d’activité @set_location -Activer après le coucher du soleil à l'endroit +Activer après le coucher du soleil à cet emplacement @longitude Longitude @@ -48,13 +48,13 @@ par le navigateur @page_in_dark_list Ce site est dans la -liste noire mondiale +liste noire de l'extension @system_dark_mode -Utilisez des couleurs du système +Utiliser les couleurs du système @system_dark_mode_description -Activer lorsque le mode sombre du système est +Actif lorsque le mode sombre du système est actif #==== Filter ==== @@ -66,10 +66,10 @@ Filtrer Mode @dark -Obscur +Sombre @light -Lumineux +Clair @brightness Luminosité @@ -78,25 +78,25 @@ Luminosité Contraste @grayscale -Niveaux de gris +N/B @sepia Sépia @only_for -Uniquement pour +Uniquement @only_for_description -Appliquer les paramètres au site actuel seulement +Appliquer les paramètres au site actuel uniquement #==== Site list ==== @site_list -Liste de sites +Liste des sites @invert_listed_only -Uniquement inversé +Inversé seul @not_invert_listed Non-inversé @@ -114,7 +114,7 @@ Configurer un raccourci pour ajouter un site Plus @select_font -Sélectionnez une police +Choisir une police @text_stroke Trait du texte @@ -122,7 +122,7 @@ Trait du texte @try_experimental_theme_engines Essayez les moteurs de thème **expérimentaux**: **Filtre+** préserve la satur. des couleurs, utilise le GPU -**Thème statique** génère un thème rapide simple +**Thème statique** génère un thème simple et rapide **Dynamique** analyse les couleurs et les images @engine_filter @@ -132,7 +132,7 @@ Filtre Filtre+ @engine_static -Statique +Statiq. @engine_dynamic Dynamiq. @@ -141,7 +141,7 @@ Dynamiq. Mode de génération de thème @custom_browser_theme_on -Modifié +Custom. @custom_browser_theme_off Défaut @@ -159,10 +159,10 @@ Confid. Aide @donate -Donner +Dons @news -Nouveautés +Actus @read_more Lire la suite @@ -174,10 +174,10 @@ Dévelop. #==== Store listing ==== @store_listing -Cette extension de protection oculaire active le mode nuit en créant à la volée des thèmes sombres pour les sites Web. Dark Reader inverse les couleurs vives, ce qui les rend très contrastés et faciles à lire la nuit. +Cette extension de navigateur implémente un thème sombre global en créant à la volée des thèmes sombres pour chaque site Web que vous visitez. Dark Reader augmente le contraste des couleurs vives pour les rendre plus agréables à la vue la nuit. -Vous pouvez régler la luminosité, le contraste, le filtre sépia, le mode sombre, les paramètres de police et la liste des sites ignorés. +Vous pouvez également ajuster la luminosité, le contraste, le filtre sépia, le thème sombre, la police du texte ainsi que la liste des sites ignorés par l'extension. -Dark Reader n’affiche pas de publicités et n’envoie aucune donnée utilisateur. Il est entièrement open source https://github.com/darkreader/darkreader +Dark Reader n'intègre pas de publicités et ne partage vos données avec personne d'autre. Il est entièrement open-source. https://github.com/darkreader/darkreader -Avant de l’installer, désactivez vos extensions similaires. Profitez et regardez! +Il est nécessaire de désactiver toute extension similaire à Dark Reader pour que celle-ci fonctionne correctement. Profitez-en et prenez soin de vos yeux! From 41eecbf27557579727b4c41d7fccda35bd128c29 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Thu, 31 Mar 2022 14:17:40 -0700 Subject: [PATCH 592/892] Fix For nymag.com (#8552) - Resolves #8553 --- src/config/dynamic-theme-fixes.config | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5e45a03cb5fc..6a0c31312ef8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11809,16 +11809,27 @@ body, nymag.com INVERT -.logo-svg +.article-feed-header svg .article-nav-top-center #latest-feed-title +.logo-svg #site-feed-curbed-title > .feed-title-wrapper .tab-trigger > svg .tab-trigger > svg > circle .tab-trigger > svg > g > circle +.title-logo #vulture-trigger > svg > g > path:nth-child(1) #wwwthecut-trigger > svg > .active > path +CSS +.collection-articles-lede_first-featured .lede-item[data-track-index="0"] .lede-image-wrap { + z-index: 0 !important; +} +.collection-articles-lede_first-featured .lede-item[data-track-index="0"] .lede-text-wrap { + z-index: 1 !important; + position: absolute !important; +} + ================================ nytimes.com From a2310d99a684611cc77f597ef89aaf922f1f9b39 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Fri, 1 Apr 2022 05:35:33 +0800 Subject: [PATCH 593/892] Fix for portal.saltyfish.io (#8560) - Invert logo --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 6a0c31312ef8..0319ee205782 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12989,6 +12989,13 @@ INVERT ================================ +portal.saltyfish.io + +INVERT +.logo-img + +================================ + portswigger.net INVERT From 5d9c5381511cd524822806883ba5ca3abd5e4571 Mon Sep 17 00:00:00 2001 From: Aaron Cottle Date: Fri, 1 Apr 2022 08:42:13 +1100 Subject: [PATCH 594/892] Fix for wikipedia.org (#8546) - Fix music symbols. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0319ee205782..eb33bcc3fe2c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17904,7 +17904,7 @@ div.post-content.footer-content > h2 > img #p-logo-text body > .oo-ui-windowManager .vega .marks .minerva-footer-logo img -.music-symbol +.music-symbol img .tool.tool-button[src$="background-image:"] .mw-kartographer-map .mw-kartographer-mapDialog-map From 0eccbdce22523f3441fdb6b5269953a6e407960e Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 2 Apr 2022 22:51:56 +0200 Subject: [PATCH 595/892] Fix gradient & URL parsing (#8576) - Fix a issue whereby on gradient the indexes weren't updated and thus unrelated data came into the gradient. - Sort the matches based on the index(so correct order in final result). - Resolves #8538 --- src/inject/dynamic-theme/modify-css.ts | 80 +++++++------------- src/utils/parsing.ts | 16 ++-- tests/inject/dynamic/image-analysis.tests.ts | 12 +++ tests/unit/utils/parsing.tests.ts | 43 +++++++---- 4 files changed, 81 insertions(+), 70 deletions(-) diff --git a/src/inject/dynamic-theme/modify-css.ts b/src/inject/dynamic-theme/modify-css.ts index ef1e061d68b7..17df232ee25c 100644 --- a/src/inject/dynamic-theme/modify-css.ts +++ b/src/inject/dynamic-theme/modify-css.ts @@ -304,15 +304,11 @@ function shouldIgnoreImage(selectorText: string, selectors: string[]) { interface bgImageMatches { type: 'url' | 'gradient'; - urlInfo?: { - index: number; - match: string; - }; - gradientInfo?: { - type: string; - content: string; - hasComma: boolean; - }; + index: number; + match: string; + offset: number; + typeGradient?: string; + hasComma?: boolean; } export function getBgImageModifier( @@ -339,18 +335,17 @@ export function getBgImageModifier( }; const matches: bgImageMatches[] = - (getIndices(urls).map((i) => ({type: 'url', urlInfo: i})) as bgImageMatches[]) - .concat(gradients.map((i) => ({type: 'gradient', gradientInfo: i}))); + (gradients.map((i) => ({type: 'gradient', ...i})) as bgImageMatches[]) + .concat(getIndices(urls).map((i) => ({type: 'url', offset: 0, ...i}))) + .sort((a, b) => a.index > b.index ? 1 : -1); const getGradientModifier = (gradient: parsedGradient) => { - const type = gradient.type; - const content = gradient.content; - const hasComma = gradient.hasComma; + const {typeGradient, match, hasComma} = gradient; const partsRegex = /([^\(\),]+(\([^\(\)]*(\([^\(\)]*\)*[^\(\)]*)?\))?[^\(\),]*),?/g; const colorStopRegex = /^(from|color-stop|to)\(([^\(\)]*?,\s*)?(.*?)\)$/; - const parts = getMatches(partsRegex, content, 1).map((part) => { + const parts = getMatches(partsRegex, match, 1).map((part) => { part = part.trim(); let rgb = tryParseColor(part); @@ -376,7 +371,7 @@ export function getBgImageModifier( }); return (filter: FilterConfig) => { - return `${type}(${parts.map((modify) => modify(filter)).join(', ')})${hasComma ? ', ' : ''}`; + return `${typeGradient}(${parts.map((modify) => modify(filter)).join(', ')})${hasComma ? ', ' : ''}`; }; }; @@ -458,50 +453,33 @@ export function getBgImageModifier( const modifiers: CSSValueModifier[] = []; - let index = 0; - matches.forEach(({type, urlInfo, gradientInfo}, i) => { - if (type === 'url') { - const match = urlInfo.match; - const matchStart = urlInfo.index; - const prefixStart = index; - const matchEnd = matchStart + match.length; + let matchIndex = 0; + matches.forEach(({type, match, index, typeGradient, hasComma, offset}, i) => { + const matchStart = index; + const prefixStart = matchIndex; + const matchEnd = matchStart + match.length + offset; + matchIndex = matchEnd; + + // Make sure we still push all the unrelated content between gradients and URL's. + prefixStart !== matchStart && modifiers.push(() => value.substring(prefixStart, matchStart)); - index = matchEnd; - modifiers.push(() => value.substring(prefixStart, matchStart)); + if (type === 'url') { modifiers.push(getURLModifier(match)); - if (i === matches.length - 1) { - modifiers.push(() => value.substring(matchEnd)); - } } else if (type === 'gradient') { - modifiers.push(getGradientModifier(gradientInfo)); + modifiers.push(getGradientModifier({match, index, typeGradient, hasComma, offset})); + } + + if (i === matches.length - 1) { + modifiers.push(() => value.substring(matchEnd)); } }); return (filter: FilterConfig) => { const results = modifiers.filter(Boolean).map((modify) => modify(filter)); if (results.some((r) => r instanceof Promise)) { - return Promise.all(results) - .then((asyncResults) => { - let result = ''; - let lastWasURL = false; - // Go trough asyncResults and add seperators between URL's and gradients where needed. - asyncResults.filter(Boolean).forEach((asyncResult) => { - if (lastWasURL) { - // Only add a seperator when asyncResult isn't empty. - if (asyncResult) { - result += ', '; - } - lastWasURL = false; - } - - result += asyncResult; - - if (asyncResult.startsWith('url(')) { - lastWasURL = true; - } - }); - return result; - }); + return Promise.all(results).then((asyncResults) => { + return asyncResults.filter(Boolean).join(''); + }); } return results.join(''); }; diff --git a/src/utils/parsing.ts b/src/utils/parsing.ts index c5cd2c54bd1b..be444f2545ba 100644 --- a/src/utils/parsing.ts +++ b/src/utils/parsing.ts @@ -7,9 +7,11 @@ const radialGradient = 'radial-'; const linearGradient = 'linear-'; export interface parsedGradient { - type: string; - content: string; + typeGradient: string; + match: string; hasComma: boolean; + index: number; + offset: number; } // Parse the value according to the specifiction. @@ -59,12 +61,16 @@ export function parseGradient(value: string): parsedGradient[] { // We can go parse the rest of the value as a gradient. const {start, end} = getParenthesesRange(value, index + gradientLength); - const content = value.substring(start + 1, end - 1); + const match = value.substring(start + 1, end - 1); startIndex = end + 1 + conicGradientLength; result.push({ - type: typeGradient, - content, + typeGradient, + match, + // -gradient() is not within match, so in order to still "skip" that section + // we add that length as offset. + offset: typeGradient.length + 2, + index: index - typeGradient.length + gradientLength, hasComma: true, }); } diff --git a/tests/inject/dynamic/image-analysis.tests.ts b/tests/inject/dynamic/image-analysis.tests.ts index 190f2383d34e..b44f15f8b884 100644 --- a/tests/inject/dynamic/image-analysis.tests.ts +++ b/tests/inject/dynamic/image-analysis.tests.ts @@ -250,4 +250,16 @@ describe('IMAGE ANALYSIS', () => { await timeout(100); expect(getComputedStyle(container.querySelector('h1')).backgroundImage).toBe('url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iOCIgaGVpZ2h0PSI4Ij48ZGVmcz48ZmlsdGVyIGlkPSJkYXJrcmVhZGVyLWltYWdlLWZpbHRlciI+PGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAuMzMzIC0wLjY2NyAtMC42NjcgMC4wMDAgMS4wMDAgLTAuNjY3IDAuMzMzIC0wLjY2NyAwLjAwMCAxLjAwMCAtMC42NjcgLTAuNjY3IDAuMzMzIDAuMDAwIDEuMDAwIDAuMDAwIDAuMDAwIDAuMDAwIDEuMDAwIDAuMDAwIiAvPjwvZmlsdGVyPjwvZGVmcz48aW1hZ2Ugd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsdGVyPSJ1cmwoI2RhcmtyZWFkZXItaW1hZ2UtZmlsdGVyKSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhacFpYZENiM2c5SWpBZ01DQTRJRGdpSUhkcFpIUm9QU0k0SWlCb1pXbG5hSFE5SWpnaVBnb2dJQ0FnUEhKbFkzUWdabWxzYkQwaWQyaHBkR1VpSUhkcFpIUm9QU0l4TURBbElpQm9aV2xuYUhROUlqRXdNQ1VpSUM4K0Nqd3ZjM1puUGc9PSIgLz48L3N2Zz4="), linear-gradient(rgb(204, 0, 0), rgb(0, 0, 0))'); }); + + it('should handle background-image with URL and gradient (revered)', async () => { + container.innerHTML = multiline( + '', + '

Weird color Power!

', + ); + createOrUpdateDynamicTheme(theme, null, false); + await timeout(100); + expect(getComputedStyle(container.querySelector('h1')).backgroundImage).toBe('linear-gradient(rgb(204, 0, 0), rgb(0, 0, 0)), url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iOCIgaGVpZ2h0PSI4Ij48ZGVmcz48ZmlsdGVyIGlkPSJkYXJrcmVhZGVyLWltYWdlLWZpbHRlciI+PGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAuMzMzIC0wLjY2NyAtMC42NjcgMC4wMDAgMS4wMDAgLTAuNjY3IDAuMzMzIC0wLjY2NyAwLjAwMCAxLjAwMCAtMC42NjcgLTAuNjY3IDAuMzMzIDAuMDAwIDEuMDAwIDAuMDAwIDAuMDAwIDAuMDAwIDEuMDAwIDAuMDAwIiAvPjwvZmlsdGVyPjwvZGVmcz48aW1hZ2Ugd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsdGVyPSJ1cmwoI2RhcmtyZWFkZXItaW1hZ2UtZmlsdGVyKSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhacFpYZENiM2c5SWpBZ01DQTRJRGdpSUhkcFpIUm9QU0k0SWlCb1pXbG5hSFE5SWpnaVBnb2dJQ0FnUEhKbFkzUWdabWxzYkQwaWQyaHBkR1VpSUhkcFpIUm9QU0l4TURBbElpQm9aV2xuYUhROUlqRXdNQ1VpSUM4K0Nqd3ZjM1puUGc9PSIgLz48L3N2Zz4=")'); + }); }); diff --git a/tests/unit/utils/parsing.tests.ts b/tests/unit/utils/parsing.tests.ts index 6a9414c68aa3..41f00315c32a 100644 --- a/tests/unit/utils/parsing.tests.ts +++ b/tests/unit/utils/parsing.tests.ts @@ -2,45 +2,60 @@ import {parseGradient} from '../../../src/utils/parsing'; test('type gradients', () => { expect(parseGradient('linear-gradient(rgb(200))')).toEqual([{ - type: 'linear-gradient', - content: 'rgb(200)', + typeGradient: 'linear-gradient', + match: 'rgb(200)', + offset: 17, + index: 0, hasComma: false, }]); expect(parseGradient(`linear-gradient(217deg, rgba(255,0,0,.8), rgba(255,0,0,0) 70.71%), linear-gradient(127deg, rgba(0,255,0,.8), rgba(0,255,0,0) 70.71%), linear-gradient(336deg, rgba(0,0,255,.8), rgba(0,0,255,0) 70.71%);`)).toEqual([ { - type: 'linear-gradient', - content: '217deg, rgba(255,0,0,.8), rgba(255,0,0,0) 70.71%', + offset: 17, + match: '217deg, rgba(255,0,0,.8), rgba(255,0,0,0) 70.71%', hasComma: true, + index: 0, + typeGradient: 'linear-gradient', }, { - type: 'linear-gradient', - content: '127deg, rgba(0,255,0,.8), rgba(0,255,0,0) 70.71%', + typeGradient: 'linear-gradient', + match: '127deg, rgba(0,255,0,.8), rgba(0,255,0,0) 70.71%', hasComma: true, + offset: 17, + index: 71, }, { - type: 'linear-gradient', - content: '336deg, rgba(0,0,255,.8), rgba(0,0,255,0) 70.71%', + typeGradient: 'linear-gradient', + match: '336deg, rgba(0,0,255,.8), rgba(0,0,255,0) 70.71%', hasComma: false, + offset: 17, + index: 142 } ]); expect(parseGradient('radial-gradient(rgb(200))')).toEqual([{ - type: 'radial-gradient', - content: 'rgb(200)', + typeGradient: 'radial-gradient', + match: 'rgb(200)', + index: 0, + offset: 17, hasComma: false, + }]); expect(parseGradient('repeating-linear-gradient(transparent, #4d9f0c 40px), repeating-linear-gradient(0.25turn, transparent, #3f87a6 20px);')).toEqual([ { - type: 'repeating-linear-gradient', - content: 'transparent, #4d9f0c 40px', + typeGradient: 'repeating-linear-gradient', + match: 'transparent, #4d9f0c 40px', hasComma: true, + offset: 27, + index: 0, }, { - type: 'repeating-linear-gradient', - content: '0.25turn, transparent, #3f87a6 20px', + typeGradient: 'repeating-linear-gradient', + match: '0.25turn, transparent, #3f87a6 20px', hasComma: false, + index: 54, + offset: 27, } ]); }); From da3ccf3fd2c8d729d2763ce8376561533f702688 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 2 Apr 2022 23:04:16 +0200 Subject: [PATCH 596/892] Fix for to-do.live.com (#8577) - Resolves #8562 --- src/config/dynamic-theme-fixes.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index eb33bcc3fe2c..0974025e29a8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16376,6 +16376,11 @@ to-do.live.com INVERT span[class^="ms-Toggle-thumb"] +CSS +.backgroundLines { + background-image: linear-gradient(180deg, var(--darkreader-bg--bg-primary), var(--darkreader-bg--bg-primary) 52px, var(--darkreader-bg--bg-separator) 52px, var(--darkreader-bg--bg-separator) 52px) !important; +} + ================================ todoist.com From f376dd089a711e0b65111cbf5955003be7a61e86 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Sun, 3 Apr 2022 05:05:48 +0800 Subject: [PATCH 597/892] Fix for circt/mlir.llvm.org (#8567) - Remove background color of header --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0974025e29a8..2fd28d4da16c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3000,6 +3000,16 @@ body { ================================ +circt.llvm.org +mlir.llvm.org + +CSS +header { + background: none !important; +} + +================================ + circuit-diagram.org INVERT From 6b249b955ee2e0864ff652a0588ab73f2b458e13 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Sun, 3 Apr 2022 05:05:58 +0800 Subject: [PATCH 598/892] Update soepub's URL (#8568) Their forum was moved to this new url. --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2fd28d4da16c..ba421b05ed55 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -18576,7 +18576,7 @@ body > div.t3-wrapper > div > div.section-wrap.bg-wrap1 > div > div > div.custom ================================ -www.soepub.com/discuzx33 +www.soepub.com/discuzx34 CSS .c_l, From 8bb1832dc8b4aedb52c2ae63ac3d761b9d665511 Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Sat, 2 Apr 2022 16:06:31 -0500 Subject: [PATCH 599/892] Update README.md (#8551) - Corrected grammatical errors, fixed passive voice use, reworded several sentences and paragraphs, and fixed format issues. --- README.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 795bb7a55cce..3f2dc5a7f36d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

Dark Reader's mascot

-

Dark Reader analyzes web pages and aims to reduce the eyestrain while browsing the web.

+

Dark Reader analyzes web pages and aims to reduce eyestrain while browsing the web.


Chrome Web Store Firefox Add-ons Apple App Store Edge Addons Thunderbird @@ -22,12 +22,12 @@ Read more about contributing to Dark Reader in [CONTRIBUTING.md](https://github. You can install the extension from a file. Install [Node.js LTS](https://nodejs.org/en/). Download the source code (or check out from git). -Open terminal in the root folder and run: +Open the terminal in the root folder and run: -- `npm install` -- `npm run build` +- `npm install` +- `npm run build` -This will generate a `build/release/darkreader-chrome.zip` file that is useable in a Chromium-based browser and also a `build/release/darkreader-firefox.xpi` file that is useable in Firefox. +This will create a `build/release/darkreader-chrome.zip` file for use in a Chromium-based browser and a `build/release/darkreader-firefox.xpi` file for use in Firefox. ## Using Dark Reader for a website @@ -90,14 +90,13 @@ const CSS = await collectCSS(); const isEnabled = isDarkReaderEnabled(); ``` -Be aware, that darkreader will add the `chrome` object onto the `window` object, these are to stub certain functions that -the code will use. They originate from the webextension-api. +Be aware that darkreader will add the `chrome` object onto the `window` object. These are to stub certain functions that the code will use. They originate from the webextension-api. ## Site fixes -Automatically syncing the site fixes to every Dark Reader user was disabled because the GitHub team doesn't allow using GitHub as a CDN. Storing these files and making requests to other resources would be expensive and look suspicious. As such, changes are included with each new Dark Reader release. +Automatically syncing the site fixes to every Dark Reader user was disabled because the GitHub team does not allow using GitHub as a CDN. The storage of these files would be expensive, and making requests to other resources would look suspicious. Each new release of Dark Reader will include these changes. -However, this can be enabled by the following steps: +However, this can be enabled using the following steps: - Click on the Dark Reader icon. - Click on the Dev tools button (in the bottom-right corner). @@ -119,7 +118,7 @@ However, this can be enabled by the following steps:

Sponsors

-

Does your company use Dark Reader? Ask your manager or the marketing team if your company would be interested in supporting our project. Your support will allow the maintainers to dedicate more time for maintenance and new features for everyone. Also, your company's logo will show on GitHub. Who doesn't want a little extra exposure? Here's the info.

+

Does your company use Dark Reader? Ask your manager or the marketing team if your company would be interested in supporting our project. Your support will allow the maintainers to dedicate more time to maintenance and creating new features for everyone. Also, your company's logo will show on GitHub. Who doesn't want a little extra exposure? Here's the info.

Thank you to all our wonderful sponsors!


From 14f7fd59041f2442eef6c1ee47f19b09fd451ab5 Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Sat, 2 Apr 2022 16:07:58 -0500 Subject: [PATCH 600/892] Fix for mesa3d.org (#8549) * Fix for mesa3d.org Additional fix for Dropdown Caret when section is expanded. * Update fix --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ba421b05ed55..3fe7ddd07aa2 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10488,7 +10488,7 @@ circle.outline.Oval mesa3d.org INVERT -.collapsed a svg +[data-bs-toggle="collapse"] > a > svg ================================ From 03eaef313cb643e029da6e8c17448ca38aaac87c Mon Sep 17 00:00:00 2001 From: Delta <46466697+DeltaxHunter@users.noreply.github.com> Date: Sat, 2 Apr 2022 22:19:14 +0100 Subject: [PATCH 601/892] Added dark sites (#8570) --- src/config/dark-sites.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 8a7813215071..79c6fc71d55a 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -426,6 +426,7 @@ hacktoberfest-projects.vercel.app halowaypoint.com hardcoregaming101.net hardforum.com +hardstuck.gg hardwaretimes.com hastebin.com hbomax.com @@ -746,6 +747,7 @@ pxseu.com pylon.bot qbraid.com raidbots.com +raidcore.gg raider.io raidforums.com raidplan.io From c334275f762037875fd435f99bcbee22ae5d244f Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 2 Apr 2022 23:42:22 +0200 Subject: [PATCH 602/892] Fix for leagueoflegends.com (#8578) - Resolves #8572 --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 3fe7ddd07aa2..1c421039535b 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9351,6 +9351,18 @@ CSS ================================ +leagueoflegends.com + +CSS +article > div > canvas[class^="style__Canvas"] { + display: none !important; +} +div[class^="style__NavContent"] { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + learnopengl.com CSS From 787ae6a467afca30e1f0ea6cc4542288eadec74b Mon Sep 17 00:00:00 2001 From: Aymeric Date: Sun, 3 Apr 2022 11:52:01 +0200 Subject: [PATCH 603/892] Added dark sites (#8010) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 79c6fc71d55a..d27a5e2c349d 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -603,6 +603,7 @@ my80stv.com my90stv.com mynoise.net mypodficacademia.com +mystere.dev n-o-d-e.net namechk.com nanhu.ca From ad1b8d8db572bdbfee259e2cb2c133ce4023ca28 Mon Sep 17 00:00:00 2001 From: lehenry Date: Sun, 3 Apr 2022 11:59:10 +0200 Subject: [PATCH 604/892] Fix for BoardGameGeek.com (#8370) - Neutral text for form inputs Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1c421039535b..853f0e65b07b 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2259,6 +2259,19 @@ div#logo ================================ +boardgamegeek.com + +CSS +.legacy button, +.legacy input, +.legacy optgroup, +.legacy select, +.legacy textarea{ + color: var(--darkreader-neutral-text) !important; +} + +================================ + bol.com CSS From 27654d8426545fc68d7a143209f207fe1c5b9e2e Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Mon, 4 Apr 2022 15:43:38 -0500 Subject: [PATCH 605/892] Added dark sites (#8580) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index d27a5e2c349d..59d3523bc850 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -551,6 +551,7 @@ lootgod.com lordofthemanor.io lospec.com lukesmith.xyz +lutris.net m2v.ru m4rtyr.github.io macbb.org From 55ff30ebaa3037dc81c6dff79cc24f6f0b78bea9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 5 Apr 2022 08:36:52 +0200 Subject: [PATCH 606/892] Added dark site (#8582) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 59d3523bc850..d508879e1ea2 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -169,6 +169,7 @@ chess.com chessbomb.com chitownhousemusic.com chromatic-tuner.com +cider.sh cinema-city.pl cl00e9ment.gitlab.io/kingdom-blazon-generator/ clash3d.com From 10c00511188ce65492fb1bdd3b2c3c9ada3d282d Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 5 Apr 2022 16:15:36 +0200 Subject: [PATCH 607/892] Fix for www.qt.io (#8598) - Resolves #8584 --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 853f0e65b07b..441446f18c3f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -18587,6 +18587,18 @@ INVERT ================================ +www.qt.io + +CSS +.b-background__wrapper .b-background__asset[style^="background-image"] { + filter: brightness(50%) sepia(40%) !important; +} +div[class*="frontpage"] .scheme--default p { + color: var(--darkreader-neutral-text) !important; +} + +================================ + www.realtek.com CSS From 77d43a38427a8d619a799414723a237b8a28a8aa Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Tue, 5 Apr 2022 09:17:29 -0500 Subject: [PATCH 608/892] Add dark sites (#8586) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index d508879e1ea2..5efa0c91315a 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -996,6 +996,7 @@ virustotal.com/old-browsers visualboxsite.com vixlatio.com vizality.com +vogons.org vortetty.k3live.com vrv.co vscodethemes.com From d6e034f07ce61e28030fcdbd1e732e50c91b8342 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 5 Apr 2022 16:17:44 +0200 Subject: [PATCH 609/892] Fix for photofeeler.com (#8599) - Resolves #8585 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 441446f18c3f..0c00e71cef0c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12711,6 +12711,13 @@ div#outer { ================================ +photofeeler.com + +INVERT +.navbar-brand + +================================ + phys.nagoya-u.ac.jp INVERT From 4e74be67b71530caadeeecaaa4f389f8139d3865 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 5 Apr 2022 17:13:32 +0200 Subject: [PATCH 610/892] Fix time automation (#8600) - Currently we're sending to the browser the unix time with user's time zone. But we need to adjust for user's timezone offset as the browser expects the unix time to be in UTC timezone. - Resolves #8515 - Resolves #7143 --- CHANGELOG.md | 1 + src/utils/time.ts | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64f6c3481752..0cfdbaa83352 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## Unreleased - Fix PDF inversion when Auto-detect dark theme option was enabled. +- Fix time automation when user's time zone is non-UTC. ## 4.9.47 (Mar 14, 2022) diff --git a/src/utils/time.ts b/src/utils/time.ts index e4a63c8aaa3b..7a373c760045 100644 --- a/src/utils/time.ts +++ b/src/utils/time.ts @@ -57,7 +57,9 @@ export function nextTimeInterval(time0: string, time1: string, date: Date = new date.setHours(a[0]); date.setMinutes(a[1]); date.setSeconds(0); - return date.getTime(); + date.setMilliseconds(0); + // Convert into UTC timezone Unix time. + return date.getTime() + date.getTimezoneOffset() * 60 * 1000; } if (compareTime(t, b) < 0) { @@ -66,7 +68,9 @@ export function nextTimeInterval(time0: string, time1: string, date: Date = new date.setHours(b[0]); date.setMinutes(b[1]); date.setSeconds(0); - return date.getTime(); + date.setMilliseconds(0); + // Convert into UTC timezone Unix time. + return date.getTime() + date.getTimezoneOffset() * 60 * 60 * 1000; } // a <= b <= t From 39ce1aee65d02bcb4abe53335698c228ca1e0ec1 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 5 Apr 2022 17:21:53 +0200 Subject: [PATCH 611/892] Fix for katahiromz.web.fc2.com (#8601) - Resolves #8587 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0c00e71cef0c..335dd215e226 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8909,6 +8909,15 @@ INVERT ================================ +katahiromz.web.fc2.com + +CSS +body { + background-image: none !important; +} + +================================ + kaytrip.com INVERT From 81c09fdadbbdf6e162e620eab19760d10167794c Mon Sep 17 00:00:00 2001 From: Johnny Shields Date: Wed, 6 Apr 2022 00:22:33 +0900 Subject: [PATCH 612/892] Fix for atlassian.net (#8588) - Fix background colors on Jira. - Resolves #8566 Co-authored-by: Gusted --- CHANGELOG.md | 1 + src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cfdbaa83352..82950a506ce7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ - Fix PDF inversion when Auto-detect dark theme option was enabled. - Fix time automation when user's time zone is non-UTC. +- Fix Jira's background. ## 4.9.47 (Mar 14, 2022) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 335dd215e226..26ed7d5b7c75 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1501,6 +1501,12 @@ code:first-of-type { box-shadow: 0 0 4px ${rgba(3,9,15,0.15)} !important; background-color: ${rgba(3, 9, 15, 0.02)} !important; } +#ak-main-content { + background-color: var(--darkreader-neutal-background) !important; +} +#jira-issue-header, #jira-issue-header-actions { + background-color: rgb(29, 32, 33) !important; +} .ak-editor-panel[data-panel-type="note"] { background-color: ${rgb(217, 200, 228)} !important; } @@ -1513,6 +1519,12 @@ code:first-of-type { .ak-editor-panel[data-panel-type="warning"] { background-color: ${rgb(238, 229, 187)} !important; } +.ak-renderer-document hr, .ProseMirror hr { + background-color: rgb(69, 70, 72) !important; +} +.ProseMirror hr.ak-editor-selected-node { + background-color: rgb(0, 101, 255) !important; +} IGNORE INLINE STYLE .ak-editor-content-area * From d741f973578bbdaa977e5eeab57977b69718e272 Mon Sep 17 00:00:00 2001 From: Tyler Olson Date: Tue, 5 Apr 2022 08:46:20 -0700 Subject: [PATCH 613/892] Fix for webassign.net (#8596) - Fix landing page. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 26ed7d5b7c75..e44a4809ff66 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17660,6 +17660,13 @@ body { #webAssign { background-color: var(--darkreader-neutral-background) !important; } +#webAssignMain, +#webAssignContent { + background-color: var(--darkreader-neutral-background) !important; +} +img[alt~="key"] { + background-color: ${black} !important; +} ================================ From 4663be3f30e691ff987381dfc5ac2d296dd07547 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 5 Apr 2022 18:24:58 +0200 Subject: [PATCH 614/892] Fix for narimiran.github.io/nim-basics (#8606) - Resolves #8594 --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e44a4809ff66..583a768bb13d 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11386,6 +11386,16 @@ INVERT ================================ +narimiran.github.io/nim-basics + +CSS +body, +#toc.toc2 { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + nasa.gov IGNORE IMAGE ANALYSIS From 68e177c5cbdc1fd24d6c091bed47b383510830a2 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Tue, 5 Apr 2022 09:33:49 -0700 Subject: [PATCH 615/892] Fix for covims.org (#8602) --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 583a768bb13d..c205253ed3f0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3718,6 +3718,13 @@ a { ================================ +covims.org + +INVERT +img[alt="Covims Logo.png"] + +================================ + cowkrakowie.pl INVERT From a94a978a5ed1e5f453d5c6643bd2109b1712759c Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Tue, 5 Apr 2022 09:38:00 -0700 Subject: [PATCH 616/892] Remove trailing whitespaces in config (#8604) Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 162 +++++++++++++------------- 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c205253ed3f0..768a7ebbc35f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -91,7 +91,7 @@ ul.sub-menu { background-color: var(--darkreader-neutral-background) !important; } ul.sub-menu::after { - border-bottom-color: var(--darkreader-neutral-background) !important; + border-bottom-color: var(--darkreader-neutral-background) !important; } .progress-wrap { box-shadow: var(--darkreader-neutral-background) 0px 0px 0px 3px inset !important; @@ -371,7 +371,7 @@ CSS .label-stack-item { background-color: var(--color) !important; } -.label-stack-item-button, +.label-stack-item-button, .label-stack-item-delete { color: ${white} !important; } @@ -1477,17 +1477,17 @@ span.code, code.code { } .ghx-parent-group, .ghx-issue { - background-color: rgba(119, 183, 255, 0.05) !important; + background-color: rgba(119, 183, 255, 0.05) !important; } span.loader-wrapper a, .css-s0tfqx, .css-1vn31bx, .css-1gx5gpx, .css-wvfva4 { - background-color: rgba(240,246,252,0.1) !important; + background-color: rgba(240,246,252,0.1) !important; } .css-1yfnrso, -.aui-flag, +.aui-flag, .aui-message { box-shadow: 0 0 20px rgba(240,246,252,0.15) !important; } @@ -3577,7 +3577,7 @@ CSS color: var(--darkreader-neutral-text) !important; } .cfc-color-text-secondary { - color: ${#333} !important; + color: ${#333} !important; } ================================ @@ -4395,8 +4395,8 @@ a.button, .devsite-landing-row-item { border-color: var(--darkreader-border--devsite-select-border) !important; } -.pre-style, -code, +.pre-style, +code, pre { background: var(--darkreader-neutral-background) !important; } @@ -6132,11 +6132,11 @@ INVERT firefox.net.cn CSS -.btn, -.core_follow, -.pop_deep .ct dt.reward, -.pages a, .pages strong, -.design_mode_edit, +.btn, +.core_follow, +.pop_deep .ct dt.reward, +.pages a, .pages strong, +.design_mode_edit, .pop_showmsg { background-image: none; } @@ -6200,8 +6200,8 @@ CSS background-color: rgba(255, 255, 255, 0.15) !important; background-blend-mode: color; } -.altitudetitle, .altdescmax, .altdescmin, -.zonedesctitle, .zonedescmax, .zonedesclight, +.altitudetitle, .altdescmax, .altdescmin, +.zonedesctitle, .zonedescmax, .zonedesclight, .maxhighlightval, .maxhighlightname { color: rgb(0, 0, 0) !important; } @@ -6394,7 +6394,7 @@ CSS } ul.dropmenu li { border: none !important; - background: var(--darkreader-neutral-background) !important; + background: var(--darkreader-neutral-background) !important; } ul.dropmenu ul { border: 1px solid var(--darkreader-neutral-text) !important; @@ -6566,7 +6566,7 @@ div.formular input[type="radio"] div.formular input[type="checkbox"] CSS -div.formular input[type="radio"], +div.formular input[type="radio"], div.formular input[type="checkbox"] { background-color: transparent !important; } @@ -7160,16 +7160,16 @@ CSS border: none !important; } .overlay1::after { - background: unset !important; + background: unset !important; } -.overlay1::before { - opacity: 0.8 !important; - background-color: unset !impotant; - background-image: unset !impotant; +.overlay1::before { + opacity: 0.8 !important; + background-color: unset !impotant; + background-image: unset !impotant; } .overlay1::before { background-color: unset !important; - background-image: unset !important; + background-image: unset !important; } ================================ @@ -7205,7 +7205,7 @@ globo.com CSS .bar-scrubber .bar-scrubber-icon, -.bar-background .bar-fill-2 { +.bar-background .bar-fill-2 { background-color: var(--darkreader-neutral-text) !important; } .bar-background .bar-fill-1 { @@ -7348,7 +7348,7 @@ INVERT CSS #file-editor .CodeMirror, -#file-editor .CodeMirror-lines, +#file-editor .CodeMirror-lines, #file-editor .CodeMirror-gutters, #wrap { background-color: var(--darkreader-neutral-background) !important; @@ -7908,7 +7908,7 @@ CSS hs.fi CSS -article, +article, article > article { background-color: var(--darkreader-neutral-background) !important; } @@ -8414,7 +8414,7 @@ INVERT .search-submit CSS -.calendar-date, +.calendar-date, .calendar-body { background-color: var(--darkreader-neutral-background) !important; background-image: none !important; @@ -8429,7 +8429,7 @@ img[src*="/img/"] CSS .star-on-png::before { - color: #FCAD03 !important; + color: #FCAD03 !important; } ================================ @@ -8461,16 +8461,16 @@ CSS .ipsBadge { --darkreader-bg--badge--background: var(--darkreader-neutral-background) !important; } -.ipsReact_reactCount > a, -.ipsReact_reactCount > span, -.elFullInbox_menu, -.ipsMenu_auto, -.ipsMenu_footerBar, -.ipsMenu_headerBar, -.ipsMenu_innerContent, -.ipsMenu_item, -.ipsMenu_sep, -.ipsMenu_title, +.ipsReact_reactCount > a, +.ipsReact_reactCount > span, +.elFullInbox_menu, +.ipsMenu_auto, +.ipsMenu_footerBar, +.ipsMenu_headerBar, +.ipsMenu_innerContent, +.ipsMenu_item, +.ipsMenu_sep, +.ipsMenu_title, .ipsPadding { background-color: var(--darkreader-neutral-background) !important; } @@ -8556,11 +8556,11 @@ h4, h5, h6 { ising.pl CSS -body.grey-gui-bg #content, +body.grey-gui-bg #content, div.grey-gui-bg, -.small-navy-heading, -.small-blue-heading, -.small-purple-heading, +.small-navy-heading, +.small-blue-heading, +.small-purple-heading, .small-navy2-heading { background-image: none !important; } @@ -8703,7 +8703,7 @@ i[class^="icon"].hidden-xs { .product-tile .product-image { background-color: white !important; } -.product-tile .product-swatches .swatch-list li.selected img, +.product-tile .product-swatches .swatch-list li.selected img, .product-tile .product-swatches .swatch-list li.selected:hover img { border-color: white !important; } @@ -8968,7 +8968,7 @@ CSS .status-20-fg { color: #FF2190 !important; } -.status-30-fg { +.status-30-fg { color: #FFF719 !important; } .status-40-fg { @@ -8977,10 +8977,10 @@ CSS .status-50-fg { color: #0062FF !important; } -.status-80-fg { +.status-80-fg { color: #47FF19 !important; } -.status-90-fg { +.status-90-fg { color: #727985 !important; } @@ -9611,7 +9611,7 @@ body { div#header { color: black !important; } -div#header a:link, +div#header a:link, div#header a:visited { color: black !important; } @@ -10326,7 +10326,7 @@ CSS } #searchBtn { border-color: black !important; - background-color: var(--darkreader-neutral-background) !important; + background-color: var(--darkreader-neutral-background) !important; } #content h1 { color: var(--darkreader-neutral-text) !important; @@ -10513,7 +10513,7 @@ mendeley.com CSS .highlightLayer * { - background-color: var(--darkreader-selection-text) !important; + background-color: var(--darkreader-selection-text) !important; } ================================ @@ -10896,7 +10896,7 @@ header.smaller #szukajka .inputsearch, background-image: none !important; background-color: var(--darkreader-neutral-background) !important; } -#searchbox, +#searchbox, select { color: var(--darkreader-neutral-background) !important; } @@ -11267,7 +11267,7 @@ CSS my.contabo.com CSS -#mainmenu > div, +#mainmenu > div, #submenu > div, .button, .ui-button { @@ -11433,7 +11433,7 @@ a[href="#comments"] CSS img[class*="Footer--Logo"] { - background-color: #fff !important; + background-color: #fff !important; } ================================ @@ -11808,7 +11808,7 @@ ns.nl CSS .section--nsYellow { - background-color: var(--darkreader-neutral-background) !important; + background-color: var(--darkreader-neutral-background) !important; } ================================ @@ -12621,7 +12621,7 @@ body { payu.com CSS -img[src$="PayU-Map_Homepage_World.svg"] { +img[src$="PayU-Map_Homepage_World.svg"] { filter: invert(90%) hue-rotate(180deg) contrast(90%) !important; } @@ -12650,10 +12650,10 @@ input, textarea { color: var(--darkreader-neutral-text) !important; } li.level0 > a { - color: var(--darkreader-neutral-text) !important; + color: var(--darkreader-neutral-text) !important; } li.level0 > a:hover { - color: #ff4d23 !important; + color: #ff4d23 !important; } ================================ @@ -13298,7 +13298,7 @@ publicwww.com CSS body { - background-image: none !important; + background-image: none !important; } ================================ @@ -13356,7 +13356,7 @@ pz.gov.pl CSS .banner-text { - color: var(--darkreader-neutral-background) !important; + color: var(--darkreader-neutral-background) !important; } ================================ @@ -13418,7 +13418,7 @@ CSS fill: rgb(219, 87, 83) !important; } body { - background-color: var(--darkreader-neutral-background) !important; + background-color: var(--darkreader-neutral-background) !important; } IGNORE INLINE STYLE @@ -13849,7 +13849,7 @@ img[src*="donate"] img[src*="faq"] CSS -body, +body, .tftable th { background: none !important; } @@ -13994,7 +13994,7 @@ p, .compat-types, .compat-hdr-left, .compat-status-container { - color: var(--darkreader-neutral-text) !important; + color: var(--darkreader-neutral-text) !important; } ================================ @@ -15048,7 +15048,7 @@ INVERT sporza.be CSS -.sc-score, +.sc-score, .sc-score__away, .bouton:hover { color: ${#222} !important; @@ -15069,7 +15069,7 @@ CSS background-color: ${#AAA} !important; } .logo__letters { - fill: var(--darkreader-neutral-background) !important; + fill: var(--darkreader-neutral-background) !important; } .vrt-link { background-color: ${rgba(255, 165, 0, 0)} !important; @@ -15080,7 +15080,7 @@ CSS } .vrt-site-footer__navigation--green { background-color: ${#AAA} !important; - color: var(--darkreader-neutral-background) !important; + color: var(--darkreader-neutral-background) !important; } ================================ @@ -15263,7 +15263,7 @@ stats.stackexchange.com CSS .site-header { - background-image: none !important; + background-image: none !important; } ================================ @@ -15650,7 +15650,7 @@ CSS .is-high-contrast .checkbox-button-display { opacity: 1 !important; } -.modern-browser .radio-button-display::after, +.modern-browser .radio-button-display::after, .modern-browser .checkbox-button-display::after { border-color: var(--darkreader-neutral-text) !important; } @@ -15698,7 +15698,7 @@ CSS .weather-icon { filter: invert(1) hue-rotate(180deg) !important; } -.live-marker .dot, +.live-marker .dot, .live-label::before, .active::before { background-color: var(--darkreader-neutral-text) !important; @@ -15836,7 +15836,7 @@ INVERT CSS section { - background-image: none !important; + background-image: none !important; } ================================ @@ -16121,7 +16121,7 @@ testudo.umd.edu CSS #secondary-side, #widgetbox_widget_parent_0 { - background-color: var(--darkreader-neutral-background) !important; + background-color: var(--darkreader-neutral-background) !important; } ================================ @@ -16491,7 +16491,7 @@ INVERT .play CSS -div.top_section_bg, +div.top_section_bg, div.bottom_section_bg { background-color: ${#e7e5e4} !important; } @@ -16569,7 +16569,7 @@ CSS background-color: var(--darkreader-neutral-background) !important; } .user-info__name { - color: inherit !important; + color: inherit !important; } .progress-ring__content { background-color: white !important; @@ -16845,7 +16845,7 @@ CSS background: url("https://tweakers.net/g/if/v3/framework/tweakers_logo_full.svg") no-repeat center !important;; } @media screen and (max-width: 1000px) { - #logo a { + #logo a { background: url("https://tweakers.net/g/if/v3/framework/menu_icons_responsive_v6.png") no-repeat -8px -220px !important; } } @@ -16894,7 +16894,7 @@ CSS border-color: ${#ccc} !important; } @media screen and (max-width: 767px) { - #userbar li.icon a { + #userbar li.icon a { background-image: url("https://tweakers.net/g/if/v3/framework/menu_icons_responsive_v6.png") !important; } #categoryBrowser li.more.active { @@ -17467,7 +17467,7 @@ IGNORE INLINE STYLE w.atwiki.jp CSS -.atwiki-contents-shadow, +.atwiki-contents-shadow, .main_wrapper { background-color: var(--darkreader-neutral-background) !important; } @@ -18132,8 +18132,8 @@ CSS #page-area .content { background-image: none !important; } -#content-columns .block .corners-top, -#content-columns .block .corners-bottom, +#content-columns .block .corners-top, +#content-columns .block .corners-bottom, #page-area .content .corners-top, #page-area .content .corners-bottom { filter: invert(91%) !important; @@ -18243,9 +18243,9 @@ svg.social-icons.social-icons__apple.social-icons--enabled { worldcubeassociation.org CSS -.event-checkbox input[type="checkbox"] + i.cubing-icon, -.event-checkbox input[type="radio"] + i.cubing-icon, -.event-radio input[type="checkbox"] + i.cubing-icon, +.event-checkbox input[type="checkbox"] + i.cubing-icon, +.event-checkbox input[type="radio"] + i.cubing-icon, +.event-radio input[type="checkbox"] + i.cubing-icon, .event-radio input[type="radio"] + i.cubing-icon { color: rgba(0, 0, 0, 1) !important; } @@ -18947,7 +18947,7 @@ span.logo.burger-sidebar__sidebar-logo yamicsoft.com CSS -.slider-wrapper .slide-secound-detail, +.slider-wrapper .slide-secound-detail, .slider-wrapper .slide-secound-title { color: var(--darkreader-neutral-background) !important; } @@ -19337,7 +19337,7 @@ paper-item[aria-selected="true"] { background-color: rgba(255,255,255,0.2) !important; } iron-input.paper-input > input.paper-input, -.input-content.paper-input-container > label, +.input-content.paper-input-container > label, .input-content.paper-input-container > .paper-input-label { color: var(--paper-input-container-shared-input-style_-_color) !important; } From 10a49f48e0210468535b861423e6ccb768cdd982 Mon Sep 17 00:00:00 2001 From: Augustin <76097844+august159@users.noreply.github.com> Date: Sat, 9 Apr 2022 10:57:08 +0200 Subject: [PATCH 617/892] Fix for notion (#8593) Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 768a7ebbc35f..3f5428867170 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11733,6 +11733,11 @@ CSS body { background-color: var(--darkreader-neutral-background) !important; } +.notion-page-block, +div[contenteditable="true"], +.notion-page-content div { + color: var(--darkreader-neutral-text) !important; +} .notion-divider-block div div { border-bottom: 1px solid ${rgba(55, 53, 47, 0.4)} !important; } @@ -11741,7 +11746,8 @@ nav[aria-label="Main footer navigation"] .logo svg > path:nth-child(1) { fill: var(--darkreader-neutral-background) !important; } .header .logo svg > path:nth-child(3), -nav[aria-label="Main footer navigation"] .logo svg > path:nth-child(3) { +nav[aria-label="Main footer navigation"] .logo svg > path:nth-child(3), +.notion-focusable svg { fill: var(--darkreader-neutral-text) !important; } From d8007562bcf90e92609a5b8fc8785697940b4f13 Mon Sep 17 00:00:00 2001 From: Andrei Balaci <47945400+abalaci@users.noreply.github.com> Date: Sat, 9 Apr 2022 12:02:56 +0300 Subject: [PATCH 618/892] Add dark site (#8609) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 5efa0c91315a..130e39df279b 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -268,6 +268,7 @@ disneyplus.com distrotube.com dlive.tv dodi-repacks.site +doesitarm.com dood.la doodstream.com dota2.ru From c5cfee82b485f9ad0ad2e2f2da4c805fbc4bbec9 Mon Sep 17 00:00:00 2001 From: Jeroen Behaegel Date: Sat, 9 Apr 2022 11:04:52 +0200 Subject: [PATCH 619/892] Fix for atlassian.net (#8610) - Fix variable name. --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 3f5428867170..deb50484c3d5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1502,7 +1502,7 @@ code:first-of-type { background-color: ${rgba(3, 9, 15, 0.02)} !important; } #ak-main-content { - background-color: var(--darkreader-neutal-background) !important; + background-color: var(--darkreader-neutral-background) !important; } #jira-issue-header, #jira-issue-header-actions { background-color: rgb(29, 32, 33) !important; From e5c502f8c0ac3cd665273d919ba5ec093461ecb9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 9 Apr 2022 11:05:41 +0200 Subject: [PATCH 620/892] Bump moment from 2.29.1 to 2.29.2 (#8612) Bumps [moment](https://github.com/moment/moment) from 2.29.1 to 2.29.2. - [Release notes](https://github.com/moment/moment/releases) - [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md) - [Commits](https://github.com/moment/moment/compare/2.29.1...2.29.2) --- updated-dependencies: - dependency-name: moment dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f682467dbc4f..65e4a8d453e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8367,9 +8367,9 @@ "dev": true }, "node_modules/moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "version": "2.29.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", + "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==", "dev": true, "optional": true, "engines": { @@ -18611,9 +18611,9 @@ "dev": true }, "moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "version": "2.29.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", + "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==", "dev": true, "optional": true }, From d07388cb11fb1a18f63419022c24bc53cce288eb Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Mon, 11 Apr 2022 23:49:14 +0300 Subject: [PATCH 621/892] Fix for webkitgtk.org (#8623) - Remove background image. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index deb50484c3d5..4f463337fcfa 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17702,6 +17702,15 @@ CSS ================================ +webkitgtk.org + +CSS +#main_wrapper { + background-image: none !important; +} + +================================ + weblate.org INVERT From a182703e5947ac2a4dc917f7d6c7078f245714d8 Mon Sep 17 00:00:00 2001 From: Hedreon <39467046+Hedreon@users.noreply.github.com> Date: Tue, 12 Apr 2022 00:03:10 +0100 Subject: [PATCH 622/892] Fix for soundcloud.com (#8564) - Fix search's input background. - Fix header separator. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4f463337fcfa..a42cfba65584 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14871,6 +14871,12 @@ body, .searchTitle { background: none !important; } +.sc-classic .header__navMenu > li > a { + border-right-color: #454545 !important; +} +.headerSearch__input { + background: ${#f1f4f6} !important; +} ================================ From bcd1365da761fb662b95820eb5acdbc96d9a3f92 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Tue, 12 Apr 2022 13:54:28 +0100 Subject: [PATCH 623/892] Validate settings (#8611) Validate settings loaded from storage. In rare cases settings can be corrupt due to system shutdown, or importing a wrong file (or incorrectly saving them). --- src/background/user-storage.ts | 6 + src/utils/validation.ts | 200 ++++++++++++++++++++++++++ tests/unit/utils/validation.tests.ts | 202 +++++++++++++++++++++++++++ 3 files changed, 408 insertions(+) create mode 100644 src/utils/validation.ts create mode 100644 tests/unit/utils/validation.tests.ts diff --git a/src/background/user-storage.ts b/src/background/user-storage.ts index f4d42733d98a..faaff61544da 100644 --- a/src/background/user-storage.ts +++ b/src/background/user-storage.ts @@ -5,6 +5,7 @@ import type {UserSettings} from '../definitions'; import {readSyncStorage, readLocalStorage, writeSyncStorage, writeLocalStorage} from './utils/extension-api'; import {logWarn} from '../utils/log'; import {PromiseBarrier} from '../utils/promise-barrier'; +import {validateSettings} from '../utils/validation'; const SAVE_TIMEOUT = 1000; @@ -40,6 +41,8 @@ export default class UserStorage { this.loadBarrier = new PromiseBarrier(); const local = await readLocalStorage(DEFAULT_SETTINGS); + const {errors: localCfgErrors} = validateSettings(local); + localCfgErrors.forEach((err) => logWarn(err)); if (local.syncSettings == null) { local.syncSettings = DEFAULT_SETTINGS.syncSettings; } @@ -59,6 +62,9 @@ export default class UserStorage { return local; } + const {errors: syncCfgErrors} = validateSettings($sync); + syncCfgErrors.forEach((err) => logWarn(err)); + this.fillDefaults($sync); this.loadBarrier.resolve($sync); diff --git a/src/utils/validation.ts b/src/utils/validation.ts new file mode 100644 index 000000000000..9419f0de53b3 --- /dev/null +++ b/src/utils/validation.ts @@ -0,0 +1,200 @@ +import {DEFAULT_SETTINGS, DEFAULT_THEME} from '../defaults'; +import type {UserSettings, Theme, ThemePreset, CustomSiteConfig, TimeSettings, LocationSettings} from '../definitions'; + +function isBoolean(x: any): x is boolean { + return typeof x === 'boolean'; +} + +function isPlainObject(x: any): x is Record { + return typeof x === 'object' && x != null && !Array.isArray(x); +} + +function isArray(x: any) { + return Array.isArray(x); +} + +function isString(x: any): x is string { + return typeof x === 'string'; +} + +function isNonEmptyString(x: any): x is string { + return x && isString(x); +} + +function isNonEmptyArrayOfNonEmptyStrings(x: any): x is any[] { + return Array.isArray(x) && x.length > 0 && x.every((s) => isNonEmptyString(s)); +} + +function isRegExpMatch(regexp: RegExp) { + return (x: any): x is string => { + return isString(x) && x.match(regexp) != null; + }; +} + +const isTime = isRegExpMatch(/^((0?[0-9])|(1[0-9])|(2[0-3])):([0-5][0-9])$/); +function isNumber(x: any): x is number { + return typeof x === 'number' && !isNaN(x); +} + +function isNumberBetween(min: number, max: number) { + return (x: any): x is number => { + return isNumber(x) && x >= min && x <= max; + }; +} + +function isOneOf(...values: any[]) { + return (x: any) => values.includes(x); +} + +function hasRequiredProperties(obj: T, keys: Array) { + return keys.every((key) => obj.hasOwnProperty(key)); +} + +function createValidator() { + const errors: string[] = []; + + function validateProperty(obj: T, key: keyof T, validator: (x: any) => boolean, fallback: T) { + if (!obj.hasOwnProperty(key) || validator(obj[key])) { + return; + } + errors.push(`Unexpected value for "${key}": ${JSON.stringify(obj[key])}`); + obj[key] = fallback[key]; + } + + function validateArray(obj: T, key: keyof T, validator: (x: any) => boolean) { + if (!obj.hasOwnProperty(key)) { + return; + } + const wrongValues = new Set(); + const arr: any[] = obj[key] as any; + for (let i = 0; i < arr.length; i++) { + if (!validator(arr[i])) { + wrongValues.add(arr[i]); + arr.splice(i, 1); + i--; + } + } + if (wrongValues.size > 0) { + errors.push(`Array "${key}" has wrong values: ${Array.from(wrongValues).map((v) => JSON.stringify(v)).join('; ')}`); + } + } + + return {validateProperty, validateArray, errors}; +} + +export function validateSettings(settings: Partial) { + if (!isPlainObject(settings)) { + return {errors: ['Settings are not a plain object'], settings: DEFAULT_SETTINGS}; + } + + const {validateProperty, validateArray, errors} = createValidator(); + const isValidPresetTheme = (theme: Theme) => { + if (!isPlainObject(theme)) { + return false; + } + const {errors: themeErrors} = validateTheme(theme); + return themeErrors.length === 0; + }; + + validateProperty(settings, 'enabled', isBoolean, DEFAULT_SETTINGS); + validateProperty(settings, 'fetchNews', isBoolean, DEFAULT_SETTINGS); + + validateProperty(settings, 'theme', isPlainObject, DEFAULT_SETTINGS); + const {errors: themeErrors} = validateTheme(settings.theme); + errors.push(...themeErrors); + + validateProperty(settings, 'presets', isArray, DEFAULT_SETTINGS); + validateArray(settings, 'presets', (preset: ThemePreset) => { + const presetValidator = createValidator(); + if (!(isPlainObject(preset) && hasRequiredProperties(preset, ['id', 'name', 'urls', 'theme']))) { + return false; + } + presetValidator.validateProperty(preset, 'id', isNonEmptyString, preset); + presetValidator.validateProperty(preset, 'name', isNonEmptyString, preset); + presetValidator.validateProperty(preset, 'urls', isNonEmptyArrayOfNonEmptyStrings, preset); + presetValidator.validateProperty(preset, 'theme', isValidPresetTheme, preset); + return presetValidator.errors.length === 0; + }); + + validateProperty(settings, 'customThemes', isArray, DEFAULT_SETTINGS); + validateArray(settings, 'customThemes', (custom: CustomSiteConfig) => { + if (!(isPlainObject(custom) && hasRequiredProperties(custom, ['url', 'theme']))) { + return false; + } + const presetValidator = createValidator(); + presetValidator.validateProperty(custom, 'url', isNonEmptyArrayOfNonEmptyStrings, custom); + presetValidator.validateProperty(custom, 'theme', isValidPresetTheme, custom); + return presetValidator.errors.length === 0; + }); + + validateProperty(settings, 'siteList', isArray, DEFAULT_SETTINGS); + validateArray(settings, 'siteList', isNonEmptyString); + validateProperty(settings, 'siteListEnabled', isArray, DEFAULT_SETTINGS); + validateArray(settings, 'siteListEnabled', isNonEmptyString); + + validateProperty(settings, 'applyToListedOnly', isBoolean, DEFAULT_SETTINGS); + validateProperty(settings, 'changeBrowserTheme', isBoolean, DEFAULT_SETTINGS); + validateProperty(settings, 'syncSettings', isBoolean, DEFAULT_SETTINGS); + validateProperty(settings, 'syncSitesFixes', isBoolean, DEFAULT_SETTINGS); + validateProperty(settings, 'automation', isOneOf('', 'time', 'system', 'location'), DEFAULT_SETTINGS); + validateProperty(settings, 'automationBehaviour', isOneOf('OnOff', 'Scheme'), DEFAULT_SETTINGS); + + validateProperty(settings, 'time', (time: TimeSettings) => { + if (!isPlainObject(time)) { + return false; + } + const timeValidator = createValidator(); + timeValidator.validateProperty(time, 'activation', isTime, time); + timeValidator.validateProperty(time, 'deactivation', isTime, time); + return timeValidator.errors.length === 0; + }, DEFAULT_SETTINGS); + + validateProperty(settings, 'location', (location: LocationSettings) => { + if (!isPlainObject(location)) { + return false; + } + const locValidator = createValidator(); + const isValidLoc = (x: any) => x === null || isNumber(x); + locValidator.validateProperty(location, 'latitude', isValidLoc, location); + locValidator.validateProperty(location, 'longitude', isValidLoc, location); + return locValidator.errors.length === 0; + }, DEFAULT_SETTINGS); + + validateProperty(settings, 'previewNewDesign', isBoolean, DEFAULT_SETTINGS); + validateProperty(settings, 'enableForPDF', isBoolean, DEFAULT_SETTINGS); + validateProperty(settings, 'enableForProtectedPages', isBoolean, DEFAULT_SETTINGS); + validateProperty(settings, 'enableContextMenus', isBoolean, DEFAULT_SETTINGS); + validateProperty(settings, 'detectDarkTheme', isBoolean, DEFAULT_SETTINGS); + + return {errors, settings}; +} + +export function validateTheme(theme: Partial) { + if (!isPlainObject(theme)) { + return {errors: ['Theme is not a plain object'], theme: DEFAULT_THEME}; + } + + const {validateProperty, errors} = createValidator(); + validateProperty(theme, 'mode', isOneOf(0, 1), DEFAULT_THEME); + validateProperty(theme, 'brightness', isNumberBetween(0, 200), DEFAULT_THEME); + validateProperty(theme, 'contrast', isNumberBetween(0, 200), DEFAULT_THEME); + validateProperty(theme, 'grayscale', isNumberBetween(0, 100), DEFAULT_THEME); + validateProperty(theme, 'sepia', isNumberBetween(0, 100), DEFAULT_THEME); + validateProperty(theme, 'useFont', isBoolean, DEFAULT_THEME); + validateProperty(theme, 'fontFamily', isNonEmptyString, DEFAULT_THEME); + validateProperty(theme, 'textStroke', isNumberBetween(0, 1), DEFAULT_THEME); + validateProperty(theme, 'engine', isOneOf('dynamicTheme', 'staticTheme', 'cssFilter', 'svgFilter'), DEFAULT_THEME); + validateProperty(theme, 'stylesheet', isString, DEFAULT_THEME); + validateProperty(theme, 'darkSchemeBackgroundColor', isRegExpMatch(/^#[0-9a-f]{6}$/i), DEFAULT_THEME); + validateProperty(theme, 'darkSchemeTextColor', isRegExpMatch(/^#[0-9a-f]{6}$/i), DEFAULT_THEME); + validateProperty(theme, 'lightSchemeBackgroundColor', isRegExpMatch(/^#[0-9a-f]{6}$/i), DEFAULT_THEME); + validateProperty(theme, 'lightSchemeTextColor', isRegExpMatch(/^#[0-9a-f]{6}$/i), DEFAULT_THEME); + validateProperty(theme, 'scrollbarColor', (x: any) => x === '' || isRegExpMatch(/^(auto)|(#[0-9a-f]{6})$/i)(x), DEFAULT_THEME); + validateProperty(theme, 'selectionColor', isRegExpMatch(/^(auto)|(#[0-9a-f]{6})$/i), DEFAULT_THEME); + validateProperty(theme, 'styleSystemControls', isBoolean, DEFAULT_THEME); + validateProperty(theme, 'lightColorScheme', isNonEmptyString, DEFAULT_THEME); + validateProperty(theme, 'darkColorScheme', isNonEmptyString, DEFAULT_THEME); + validateProperty(theme, 'immediateModify', isBoolean, DEFAULT_THEME); + + return {errors, theme}; +} diff --git a/tests/unit/utils/validation.tests.ts b/tests/unit/utils/validation.tests.ts new file mode 100644 index 000000000000..19c9d4c3f742 --- /dev/null +++ b/tests/unit/utils/validation.tests.ts @@ -0,0 +1,202 @@ +import {validateSettings, validateTheme} from '../../../src/utils/validation'; +import {DEFAULT_SETTINGS, DEFAULT_THEME} from '../../../src/defaults'; +import type {Theme, UserSettings} from '../../../src/definitions'; + +test('Settings Validation', () => { + const defaultTheme = JSON.parse(JSON.stringify(DEFAULT_THEME)); + let themeValidation = validateTheme(defaultTheme); + expect(themeValidation.errors).toEqual([]); + expect(defaultTheme).toEqual(DEFAULT_THEME); + + const partTheme = { + brightness: 125, + contrast: -50, + }; + themeValidation = validateTheme(partTheme as any); + expect(themeValidation.errors.length).toBe(1); + expect(partTheme).toEqual({ + brightness: 125, + contrast: DEFAULT_THEME.contrast, + }); + + const wonkyTheme = { + mode: 'dark', + brightness: 250, + contrast: -50, + grayscale: false, + sepia: 105, + useFont: 'ok', + fontFamily: '', + textStroke: 2, + engine: 'dymanic', + stylesheet: 3, + darkSchemeBackgroundColor: 'red', + darkSchemeTextColor: '#abc12x', + lightSchemeBackgroundColor: '', + lightSchemeTextColor: '#ffffff00', + scrollbarColor: false, + selectionColor: 'green', + styleSystemControls: null as boolean, + lightColorScheme: '', + darkColorScheme: false, + immediateModify: 1, + }; + themeValidation = validateTheme(wonkyTheme as any); + expect(themeValidation.errors.length).toBeGreaterThan(0); + expect(wonkyTheme).toEqual(DEFAULT_THEME); + + const defaultSet = JSON.parse(JSON.stringify(DEFAULT_SETTINGS)); + let validation = validateSettings(defaultSet); + expect(validation.errors).toEqual([]); + expect(defaultSet).toEqual(DEFAULT_SETTINGS); + + const wonkySet = { + enabled: '', + fetchNews: null as boolean, + theme: { + mode: 'dark', + brightness: 250, + contrast: -50, + grayscale: false, + sepia: 105, + useFont: 'ok', + fontFamily: '', + textStroke: 2, + engine: 'dymanic', + stylesheet: 3, + darkSchemeBackgroundColor: 'red', + darkSchemeTextColor: '#abc12x', + lightSchemeBackgroundColor: '', + lightSchemeTextColor: '#ffffff00', + scrollbarColor: false, + selectionColor: 'green', + styleSystemControls: null as boolean, + lightColorScheme: '', + darkColorScheme: false, + immediateModify: 1, + }, + presets: [ + {id: '', name: 'P1', urls: ['a.com'], theme: {brightness: 100}}, + {id: 'p2', name: '', urls: ['a.com'], theme: {brightness: 100}}, + {id: 'p3', name: 'P3', urls: [], theme: {brightness: 100}}, + {id: 'p4', name: 'P4', urls: ['a.com'], theme: {brightness: -50}}, + {id: 'p5', name: 'P5', urls: ['a.com'], theme: {brightness: 100}}, + {id: 'p6', urls: ['a.com'], theme: {brightness: 100}}, + {id: 'p7', name: 'P7', urls: ['a.com'], theme: null}, + null, + ], + customThemes: [ + {url: [] as any[], theme: {brightness: 100}}, + {url: [''], theme: {brightness: 100}}, + {url: ['a.com'], theme: {brightness: 100}}, + {url: ['a.com'], theme: {brightness: -50}}, + {url: ['a.com']}, + {url: ['a.com'], theme: null}, + null, + ], + siteList: ['a.com', '', 'b.com'], + siteListEnabled: {0: 'a.com', 1: 'b.com'}, + applyToListedOnly: null as boolean, + changeBrowserTheme: 1, + syncSettings: null as boolean, + syncSitesFixes: 0, + automation: 'off', + automationBehaviour: 'Default', + time: { + activation: '10:00PM', + deactivation: '19:00', + }, + location: { + latitude: 59, + longitude: '5.3', + }, + previewNewDesign: '', + enableForPDF: null as boolean, + enableForProtectedPages: 'ok', + enableContextMenus: 'yes', + detectDarkTheme: 'no', + }; + validation = validateSettings(wonkySet as any); + expect(validation.errors.length).toBeGreaterThan(0); + expect(wonkySet).toEqual({ + ...DEFAULT_SETTINGS, + siteList: ['a.com', 'b.com'], + presets: [{id: 'p5', name: 'P5', urls: ['a.com'], theme: {brightness: 100}}], + customThemes: [{url: ['a.com'], theme: {brightness: 100}}], + }); + + const nullishSet = { + theme: null as any, + presets: null as any, + customThemes: null as any, + time: null as any, + location: null as any, + }; + validation = validateSettings(nullishSet); + expect(validation.errors.length).toBe(5); + expect(nullishSet).toEqual({ + theme: DEFAULT_THEME, + presets: DEFAULT_SETTINGS.presets, + customThemes: DEFAULT_SETTINGS.customThemes, + time: DEFAULT_SETTINGS.time, + location: DEFAULT_SETTINGS.location, + }); + + const validSet: UserSettings = { + enabled: true, + fetchNews: true, + theme: { + mode: 0, + brightness: 125, + contrast: 50, + grayscale: 25, + sepia: 5, + useFont: true, + fontFamily: 'Comic Sans', + textStroke: 0.5, + engine: 'dynamicTheme', + stylesheet: '.x { color: red; }', + darkSchemeBackgroundColor: '#abcdef', + darkSchemeTextColor: '#abc123', + lightSchemeBackgroundColor: '#ff0000', + lightSchemeTextColor: '#ffffff', + scrollbarColor: '', + selectionColor: 'auto', + styleSystemControls: false, + lightColorScheme: 'Lightness', + darkColorScheme: 'Darkness', + immediateModify: true, + }, + presets: [ + {id: 'p5', name: 'P5', urls: ['a.com'], theme: {brightness: 100} as Theme}, + ], + customThemes: [ + {url: ['a.com'], theme: {brightness: 100} as Theme}, + ], + siteList: ['a.com', 'b.com'], + siteListEnabled: ['c.com'], + applyToListedOnly: true, + changeBrowserTheme: true, + syncSettings: false, + syncSitesFixes: true, + automation: 'time', + automationBehaviour: 'Scheme', + time: { + activation: '18:00', + deactivation: '7:00', + }, + location: { + latitude: 59, + longitude: 53, + }, + previewNewDesign: true, + enableForPDF: false, + enableForProtectedPages: true, + enableContextMenus: true, + detectDarkTheme: true, + }; + const validSetCopy = JSON.parse(JSON.stringify(validSet)); + validation = validateSettings(validSet); + expect(validation.errors).toEqual([]); + expect(validSet).toEqual(validSetCopy); +}); From 5ac903741710746ff5b5bbd951dc1cf05b5309ef Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 13 Apr 2022 10:46:09 +0000 Subject: [PATCH 624/892] Fix for spaceweather.com (#8631) * Fix for spaceweather.com - Resolves #8624 * Re-order fix --- src/config/dynamic-theme-fixes.config | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a42cfba65584..db15897c6f0f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14949,6 +14949,19 @@ INVERT ================================ +spaceweather.com + +INVERT +[src$="current_conditions.jpg"] +[src$="center_tablebg_top_r2_c1.jpg"] + +CSS +[background] { + background-image: none !important; +} + +================================ + spanish.kwiziq.com CSS From 5189db5688f7ce0f9255d9f4bc0eb35d13230b7f Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Wed, 13 Apr 2022 03:46:48 -0700 Subject: [PATCH 625/892] Fix for theatlantic.com (#8626) - Invert nav hamburger menu - Invert chevron and divider in subscription prompt area Looks like the site was recently redesigned to include random strings at the end of most or all class names, so I removed the old inversions and used 'class^=' instead. --- src/config/dynamic-theme-fixes.config | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index db15897c6f0f..e24c9e286bcc 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16161,8 +16161,9 @@ INVERT theatlantic.com INVERT -.c-nav__icon--lacroix -.hamburger-inner +[class^="NavHamburgerButton_root"] +[class^="NudgeShared_chevron"] +[class^="NonMeteredNudge_desktopTextContainer"]::after ================================ From dd96929ea635c94927c43b22a0bd6de5f6cc9bc9 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 13 Apr 2022 10:51:09 +0000 Subject: [PATCH 626/892] Fix for secure.fanboy.co.nz (#8632) - Resolves #8628 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e24c9e286bcc..089b7abe7bb6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14392,6 +14392,15 @@ INVERT ================================ +secure.fanboy.co.nz + +CSS +html { + background-image: none !important; +} + +================================ + secureage.com INVERT From 26f7db6982308703a9dfbc70ba960ec0ee3503a5 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 13 Apr 2022 13:15:37 +0000 Subject: [PATCH 627/892] Add timeZoneOffset via `setMinutes` (#8634) - `getTimeZoneOffset` can returns minutes that aren't a multiple of 60, so add it by `setMinutes`(which correctly adjusts hours, days etc when it's smaller than 0 or higher than 60). --- src/utils/time.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/utils/time.ts b/src/utils/time.ts index 7a373c760045..7f3c9900b877 100644 --- a/src/utils/time.ts +++ b/src/utils/time.ts @@ -55,22 +55,22 @@ export function nextTimeInterval(time0: string, time1: string, date: Date = new // t < a <= b // Schedule for todate at time a date.setHours(a[0]); - date.setMinutes(a[1]); + // Add the timezoneOffset to ensure unix time returns it in UTC timezone. + date.setMinutes(a[1] + date.getTimezoneOffset()); date.setSeconds(0); date.setMilliseconds(0); - // Convert into UTC timezone Unix time. - return date.getTime() + date.getTimezoneOffset() * 60 * 1000; + return date.getTime(); } if (compareTime(t, b) < 0) { // a <= t < b // Schedule for today at time b date.setHours(b[0]); - date.setMinutes(b[1]); + // Add the timezoneOffset to ensure unix time returns it in UTC timezone. + date.setMinutes(b[1] + date.getTimezoneOffset()); date.setSeconds(0); date.setMilliseconds(0); - // Convert into UTC timezone Unix time. - return date.getTime() + date.getTimezoneOffset() * 60 * 60 * 1000; + return date.getTime(); } // a <= b <= t From ff31019126f656e1e4b090a2c6fecaab552b4410 Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Thu, 14 Apr 2022 08:04:52 -0500 Subject: [PATCH 628/892] Added dark site (#8635) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 130e39df279b..4e0b03e3f9b7 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -518,6 +518,7 @@ knockout.chat kodenames.io kreatea.space kreato.cf +krisoneil.com/home krunker.io ksp.mff.cuni.cz kulbachny.com From 4097740e113592fa9420704cd9f5cf97ab82a912 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 14 Apr 2022 16:24:56 +0000 Subject: [PATCH 629/892] Fix for twit.tv (#8641) - Resolves #8636 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 089b7abe7bb6..8ba3db1a2a51 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16944,6 +16944,13 @@ table.highlights .title a.showMoreItems ================================ +twit.tv + +INVERT +.logo-large + +================================ + twitch.tv INVERT From c01a1cf842c6127c2d6d017828334cc05a18875a Mon Sep 17 00:00:00 2001 From: hyperstown <64496017+hyperstown@users.noreply.github.com> Date: Thu, 14 Apr 2022 18:26:18 +0200 Subject: [PATCH 630/892] Fix for myanimelist.net (#8625) - Resolves #8621 Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8ba3db1a2a51..9a6859cc47c1 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11343,6 +11343,10 @@ CSS body:not(.ownlist) { background-color: var(--darkreader-neutral-background) !important; } +body { + background-image: none !important; + background-color: var(--dakreader-neutral-background) !important; +} ================================ From 38109c8b174b81da48b3a643f58443c2919deddc Mon Sep 17 00:00:00 2001 From: Anan Laks Date: Fri, 15 Apr 2022 23:59:24 +0700 Subject: [PATCH 631/892] Fix for theregister.* (#8643) Inverting .devclass_logo --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9a6859cc47c1..d605be539822 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16340,6 +16340,7 @@ theregister.*.* INVERT .row_label.title_rhs_line .blocksandfiles_logo +.devclass_logo #sitpub_logo ================================ From f38385fb6e31c8f9e514597c8b3178d3e1ed2ad9 Mon Sep 17 00:00:00 2001 From: Elaborendum <71190696+Elaborendum@users.noreply.github.com> Date: Fri, 15 Apr 2022 12:12:34 -0500 Subject: [PATCH 632/892] Add many site fixes (#8629) - Zoho: Main logo in settings page - A0: Github icon in login page - Crowdin: Various icons. Not entirely sure if the addition in CSS is correct, but without it the icon inexplicably changes from a bell into a loading gif. It can only be seen when logged in. - RAE: Images at the bottom - GDrive: New denied access image, not entirely convinced about the result. - FFMonitor: Mobile icon in dropdown menu - FFRelay: Mobile and VPN icons in dropdown menu and icons in profile dropdown menu - Qwant: Maps - OSM: Loading icon when searching - TFD: Various icons - Vimeo: Header logo when seeing a single video and footer logo on main page - MC: Various logos and dropdown menu icons --- src/config/dynamic-theme-fixes.config | 66 ++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d605be539822..4283625fd6c4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -430,6 +430,7 @@ accounts.zoho.com INVERT div#product_img.tfa_totp_mode +span.zoho_logo ================================ @@ -1547,6 +1548,13 @@ body { ================================ +auth0.com + +INVERT +button[data-handler="authorise-github"] > img.icon.icon-default + +================================ + autoweek.com INVERT @@ -3795,9 +3803,21 @@ crowdin.com INVERT .crowdin-navbar__logo svg.logo-icon-projects +.nav.pull-right > li > a > i +.btn-group.pull-right > a > i +.pull-right.btn-toolbar > button > i +.pull-right.btn-toolbar > div > button > i +.btn.btn-small.dropdown-toggle.files-dropmenu.btn-link-2 +.file_type.file_folder.file_branch +.static-icon.static-icon-star-black.muted.clearfix #master-loader > .master-loader-logo #master-loader-progress.bar +CSS +i.notification-placeholder-icon.static-icon.ajax-loader-icon.static-icon-alarm { + background-image: url(https://d2srrzh48sp2nh.cloudfront.net/52aa3a4b/images/application-icons/svg/bell-o.svg) !important; +} + ================================ crunchbase.com @@ -4694,7 +4714,9 @@ CSS img[src="/images/logos/ASALE2.png"], img[src="/images/logos/rae.png"], img[src="/images/LibroDeEstilo_300.jpg"], -img[src="/app/doc/es/img/dle.jpg"] { +img[src="/app/doc/es/img/dle.jpg"], +a[href="https://dej.rae.es"] > img.img-responsive.b-lazy.b-loaded, +img[src="/images/logos/BCRAEl.jpg"] { filter: invert(93.7%) hue-rotate(180deg) contrast(90.6%) !important } @@ -5007,6 +5029,9 @@ div[role="menu"] div[role="menuitem"][class*=" "] > div > div > div, div[role="button"][aria-disabled="true"] > div { filter: invert(50%) !important; } +#request-access-icon { + filter: invert(93.7%) hue-rotate(180deg) contrast(90.6%) !important +} IGNORE INLINE STYLE div[role="presentation"] svg @@ -5019,6 +5044,11 @@ INVERT div[role="menu"] > div[role="menuitem"] > div > div > div div[role="menu"] > div[role="menuitem"] > div > div +CSS +#request-access-icon { + filter: invert(93.7%) hue-rotate(180deg) contrast(90.6%) !important +} + ================================ drive.google.com/picker @@ -10934,6 +10964,7 @@ monitor.firefox.com INVERT svg[class="Mozilla-logo"] > path[fill="#ffffff"] +.fx-bento-app-link.fx-bento-link.fx-mobile > span::before ================================ @@ -12388,6 +12419,9 @@ div[dir="ltr", id="map"] { .map-layout #map { background-color: ${#1b1b1b} !important; } +img.loader { + filter: invert(93.7%) hue-rotate(180deg) contrast(90.6%) !important +} IGNORE INLINE STYLE .ideditor .main-content * @@ -13442,6 +13476,7 @@ qwant.com INVERT .background-home__logo .home__logo__container .home__logo +canvas.mapboxgl-canvas ================================ @@ -13773,6 +13808,10 @@ relay.firefox.com INVERT img.c-landing-hero-brands img.c-brand-title +.fx-bento-app-link.fx-bento-link.fx-mobile > span::before +.fx-bento-app-link.fx-bento-link.fx-vpn > span::before +div.glocal-site-options > a > img +div.glocal-site-options > form > button::before ================================ @@ -16239,6 +16278,21 @@ INVERT ================================ +thefreedictionary.com + +INVERT +strong.i.logo +a.i.keyboard-link.mobile-hidden +#regButton::before +ul.social-networks +a.i.icon-notif +div.box > a.i +div.cprh > span.i.A.cpr +a.i.popup-opener +ul.logos-list + +================================ + theguardian.com INVERT @@ -17371,6 +17425,8 @@ vimeo.com INVERT svg[alt="Vimeo"] +#header-vimeo-logo +footer > div > div > a > svg > path[d^="M89.05 23.658a12.087 12.087"] ================================ @@ -18631,6 +18687,14 @@ www.mayoclinic.org INVERT .mc-logo .logo > a > img[alt="Mayo Clinic"] +img[src="/-/media/images/mayologo.png"] +img[src="/styles/img/gbs/logo-mayoclinic-mobile.png"] + +CSS +ul#nav.nav > li.no-image > a, +ul#nav.nav > li.current > a { + background-image: url("/UniversalNav/Styles/img/sprite-globalnavarrows.png") !important; +} ================================ From 7d86395de5c6e212a2fa34a875cafd5f80106240 Mon Sep 17 00:00:00 2001 From: Anan Laks Date: Sun, 17 Apr 2022 01:43:36 +0700 Subject: [PATCH 633/892] Fix for wikimediastatus.net (#8649) Inverting .logo-container --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4283625fd6c4..5447619e7ca6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -18078,6 +18078,13 @@ INVERT ================================ +wikimediastatus.net + +INVERT +.logo-container + +================================ + wikinews.org wikiquote.org From 3ed0c71e7b9b0f7820554d2ee7f08c969b051a00 Mon Sep 17 00:00:00 2001 From: Elaborendum <71190696+Elaborendum@users.noreply.github.com> Date: Sat, 16 Apr 2022 13:46:13 -0500 Subject: [PATCH 634/892] Remove non-dark site (#8650) --- src/config/dark-sites.config | 1 - 1 file changed, 1 deletion(-) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 4e0b03e3f9b7..671488a5b5ae 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -912,7 +912,6 @@ teambeyond.net teamos-hkrg.com teaspeak.de techwithalext.com -teddit.namazso.eu teddit.zaggy.nl telecineplay.com.br teleseer.com From f6912978d0ef416eb21a5025f406e84258b65dff Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Sat, 16 Apr 2022 15:48:30 -0500 Subject: [PATCH 635/892] Add dark sites to list (#8652) --- src/config/dark-sites.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 671488a5b5ae..adafc22d6645 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -110,6 +110,7 @@ bip.staszic.waw.pl birdie0.github.io bitcoinity.org/markets bitcoinwisdom.com +bithatch.co.uk bittube.video blackhat.com blackhatsem.com @@ -667,6 +668,7 @@ open.spotify.com openbase.io opendota.com openemu.org +openrazer.github.io orama-interactive.itch.io/pixelorama orteil.dashnet.org/cookieclicker osu.ppy.sh @@ -731,6 +733,7 @@ poelab.com poison.gg polsatboxgo.pl polsatgo.pl +polychromatic.app pony.tube pool.pm powercord.dev From 9f093be2b55e57dba12fb6c289ee9d158629f84b Mon Sep 17 00:00:00 2001 From: Mirmon Date: Sat, 16 Apr 2022 22:59:29 +0200 Subject: [PATCH 636/892] Fix for Upwork.com (#8620) Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5447619e7ca6..c479425d3fa4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17195,6 +17195,27 @@ CSS ================================ +upwork.com + +CSS +.profile-completeness-nudges-tiles-alternative .carousel-wrapper .up-icon svg { + filter: drop-shadow(0 0 0px var(--white)) drop-shadow(0 0 0px var(--white)); +} +.up-skill-container .up-btn.up-btn-next::before, +.up-skill-container .up-btn.up-btn-prev::before { + opacity: 0 !important; +} +.up-tab-scroll-hint:after { + background: none !important; +} +.up-d-skeleton { + color: transparent !important; + background-color: var(--darkreader-bg--skeleton-color) !important; + background-image: linear-gradient(90deg, var(--darkreader-bg--skeleton-color), #24242400, var(--darkreader-bg--skeleton-color)) !important; +} + +================================ + urbandecay.com IGNORE INLINE STYLE From ed63f855fbf68b54c8f60bb0067ce2e78846f17b Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Sun, 17 Apr 2022 09:41:40 +0400 Subject: [PATCH 637/892] Stable async tests (#8648) - Listen to async events in Dynamic mode tests. - Restore CORS echo server (launched in a hacky way). --- src/inject/dynamic-theme/index.ts | 4 + .../dynamic-theme/stylesheet-modifier.ts | 2 +- src/utils/throttle.ts | 5 + tasks/bundle-api.js | 1 + tasks/bundle-js.js | 1 + tests/browser/jest.config.js | 1 + tests/inject/dynamic/image-analysis.tests.ts | 10 +- tests/inject/dynamic/link-override.tests.ts | 31 ++++-- tests/inject/dynamic/variables.tests.ts | 6 +- tests/inject/karma.conf.js | 12 ++- tests/inject/support/echo-client.ts | 2 +- tests/inject/support/echo-server.js | 99 ++++++++++++------- tests/inject/support/test-utils.ts | 6 ++ tests/project/jest.config.js | 1 + tests/unit/jest.config.js | 1 + 15 files changed, 121 insertions(+), 61 deletions(-) diff --git a/src/inject/dynamic-theme/index.ts b/src/inject/dynamic-theme/index.ts index 061546108014..809588e6ff61 100644 --- a/src/inject/dynamic-theme/index.ts +++ b/src/inject/dynamic-theme/index.ts @@ -22,6 +22,7 @@ import {parse} from '../../utils/color'; import {parsedURLCache} from '../../utils/url'; import {variablesStore} from './variables'; +declare const __TEST__: boolean; const INSTANCE_ID = generateUID(); const styleManagers = new Map(); const adoptedStyleManagers = [] as AdoptedStyleSheetManager[]; @@ -257,6 +258,9 @@ function createManager(element: StyleElement) { variablesStore.addRulesForMatching(details.rules); variablesStore.matchVariablesAndDependants(); manager.render(filter, ignoredImageAnalysisSelectors); + if (__TEST__) { + document.dispatchEvent(new CustomEvent('__darkreader__test__dynamicUpdateComplete')); + } } const manager = manageStyle(element, {update, loadingStart, loadingEnd}); diff --git a/src/inject/dynamic-theme/stylesheet-modifier.ts b/src/inject/dynamic-theme/stylesheet-modifier.ts index 44330844a38d..e5cdf17948fc 100644 --- a/src/inject/dynamic-theme/stylesheet-modifier.ts +++ b/src/inject/dynamic-theme/stylesheet-modifier.ts @@ -69,7 +69,7 @@ export function createStyleSheetModifier() { notFoundCacheKeys.delete(cssText); if (rule.parentRule instanceof CSSMediaRule) { - cssText += `;${ (rule.parentRule as CSSMediaRule).media.mediaText}`; + cssText += `;${(rule.parentRule as CSSMediaRule).media.mediaText}`; } if (!rulesTextCache.has(cssText)) { rulesTextCache.add(cssText); diff --git a/src/utils/throttle.ts b/src/utils/throttle.ts index d6ccc170edb7..f5734b4a3a9c 100644 --- a/src/utils/throttle.ts +++ b/src/utils/throttle.ts @@ -30,6 +30,8 @@ export function throttle any>(callback: T) { type Task = () => void; +declare const __TEST__: boolean; + export function createAsyncTasksQueue() { const tasks: Task[] = []; let frameId: number = null; @@ -40,6 +42,9 @@ export function createAsyncTasksQueue() { task(); } frameId = null; + if (__TEST__) { + document.dispatchEvent(new CustomEvent('__darkreader__test__asyncQueueComplete')); + } } function add(task: Task) { diff --git a/tasks/bundle-api.js b/tasks/bundle-api.js index 75e5713d8c43..f49649a50726 100644 --- a/tasks/bundle-api.js +++ b/tasks/bundle-api.js @@ -30,6 +30,7 @@ async function bundleAPI({debug}) { rollupPluginReplace({ preventAssignment: true, '__DEBUG__': 'false', + '__TEST__': 'false', }), ].filter((x) => x) }); diff --git a/tasks/bundle-js.js b/tasks/bundle-js.js index 0063cb16ea23..7a32a8bde81d 100644 --- a/tasks/bundle-js.js +++ b/tasks/bundle-js.js @@ -139,6 +139,7 @@ async function bundleJS(/** @type {JSEntry} */entry, {debug, watch}) { preventAssignment: true, '__DEBUG__': debug ? 'true' : 'false', '__PORT__': watch ? String(PORT) : '-1', + '__TEST__': 'false', '__WATCH__': watch ? 'true' : 'false', }), ].filter((x) => x) diff --git a/tests/browser/jest.config.js b/tests/browser/jest.config.js index 28075e0375f5..f6941520c11f 100644 --- a/tests/browser/jest.config.js +++ b/tests/browser/jest.config.js @@ -14,6 +14,7 @@ const config = { globals: { 'ts-jest': {tsconfig: '/tests/browser/tsconfig.json'}, __DEBUG__: false, + __TEST__: true, product: 'chrome', }, setupFilesAfterEnv: ['jest-extended/all'], diff --git a/tests/inject/dynamic/image-analysis.tests.ts b/tests/inject/dynamic/image-analysis.tests.ts index b44f15f8b884..943afcaf4085 100644 --- a/tests/inject/dynamic/image-analysis.tests.ts +++ b/tests/inject/dynamic/image-analysis.tests.ts @@ -2,7 +2,7 @@ import '../support/polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; import {getImageDetails} from '../../../src/inject/dynamic-theme/image'; -import {multiline, timeout} from '../support/test-utils'; +import {multiline, waitForEvent} from '../support/test-utils'; import type {DynamicThemeFix} from '../../../src/definitions'; const theme = { @@ -171,7 +171,7 @@ describe('IMAGE ANALYSIS', () => { '

Dark icon

', ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(50); + await waitForEvent('__darkreader__test__asyncQueueComplete'); const bgImageValue = getComputedStyle(container.querySelector('i')).backgroundImage; const info = await getBgImageInfo(bgImageValue); expect(info.darkness).toBe(0); @@ -214,7 +214,7 @@ describe('IMAGE ANALYSIS', () => { '

Light background

', ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(75); + await waitForEvent('__darkreader__test__asyncQueueComplete'); const bgImageValue = getComputedStyle(container.querySelector('h1')).backgroundImage; expect(bgImageValue).toBe('none'); }); @@ -247,7 +247,7 @@ describe('IMAGE ANALYSIS', () => { '

Weird color Power!

', ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(100); + await waitForEvent('__darkreader__test__asyncQueueComplete'); expect(getComputedStyle(container.querySelector('h1')).backgroundImage).toBe('url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iOCIgaGVpZ2h0PSI4Ij48ZGVmcz48ZmlsdGVyIGlkPSJkYXJrcmVhZGVyLWltYWdlLWZpbHRlciI+PGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAuMzMzIC0wLjY2NyAtMC42NjcgMC4wMDAgMS4wMDAgLTAuNjY3IDAuMzMzIC0wLjY2NyAwLjAwMCAxLjAwMCAtMC42NjcgLTAuNjY3IDAuMzMzIDAuMDAwIDEuMDAwIDAuMDAwIDAuMDAwIDAuMDAwIDEuMDAwIDAuMDAwIiAvPjwvZmlsdGVyPjwvZGVmcz48aW1hZ2Ugd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsdGVyPSJ1cmwoI2RhcmtyZWFkZXItaW1hZ2UtZmlsdGVyKSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhacFpYZENiM2c5SWpBZ01DQTRJRGdpSUhkcFpIUm9QU0k0SWlCb1pXbG5hSFE5SWpnaVBnb2dJQ0FnUEhKbFkzUWdabWxzYkQwaWQyaHBkR1VpSUhkcFpIUm9QU0l4TURBbElpQm9aV2xuYUhROUlqRXdNQ1VpSUM4K0Nqd3ZjM1puUGc9PSIgLz48L3N2Zz4="), linear-gradient(rgb(204, 0, 0), rgb(0, 0, 0))'); }); @@ -259,7 +259,7 @@ describe('IMAGE ANALYSIS', () => { '

Weird color Power!

', ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(100); + await waitForEvent('__darkreader__test__asyncQueueComplete'); expect(getComputedStyle(container.querySelector('h1')).backgroundImage).toBe('linear-gradient(rgb(204, 0, 0), rgb(0, 0, 0)), url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iOCIgaGVpZ2h0PSI4Ij48ZGVmcz48ZmlsdGVyIGlkPSJkYXJrcmVhZGVyLWltYWdlLWZpbHRlciI+PGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAuMzMzIC0wLjY2NyAtMC42NjcgMC4wMDAgMS4wMDAgLTAuNjY3IDAuMzMzIC0wLjY2NyAwLjAwMCAxLjAwMCAtMC42NjcgLTAuNjY3IDAuMzMzIDAuMDAwIDEuMDAwIDAuMDAwIDAuMDAwIDAuMDAwIDEuMDAwIDAuMDAwIiAvPjwvZmlsdGVyPjwvZGVmcz48aW1hZ2Ugd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsdGVyPSJ1cmwoI2RhcmtyZWFkZXItaW1hZ2UtZmlsdGVyKSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhacFpYZENiM2c5SWpBZ01DQTRJRGdpSUhkcFpIUm9QU0k0SWlCb1pXbG5hSFE5SWpnaVBnb2dJQ0FnUEhKbFkzUWdabWxzYkQwaWQyaHBkR1VpSUhkcFpIUm9QU0l4TURBbElpQm9aV2xuYUhROUlqRXdNQ1VpSUM4K0Nqd3ZjM1puUGc9PSIgLz48L3N2Zz4=")'); }); }); diff --git a/tests/inject/dynamic/link-override.tests.ts b/tests/inject/dynamic/link-override.tests.ts index 6b98061824e3..89d86053c9b0 100644 --- a/tests/inject/dynamic/link-override.tests.ts +++ b/tests/inject/dynamic/link-override.tests.ts @@ -1,7 +1,7 @@ import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; import {isSafari} from '../../../src/utils/platform'; -import {multiline, timeout} from '../support/test-utils'; +import {multiline, timeout, waitForEvent} from '../support/test-utils'; import {resetChromeRuntimeMessageStub, stubBackgroundFetchResponse, stubChromeRuntimeMessage} from '../support/background-stub'; import {getCSSEchoURL} from '../support/echo-client'; @@ -23,12 +23,23 @@ function createStyleLink(href: string) { return link; } +function selectTestStyleLink() { + return document.querySelector('.testcase--link') as HTMLLinkElement; +} + function createCorsLink(content: string) { const url = getCSSEchoURL(content); stubBackgroundFetchResponse(url, content); return createStyleLink(url); } +async function waitForLinkLoading(link: HTMLLinkElement) { + return new Promise((resolve, reject) => { + link.addEventListener('load', resolve, {once: true}); + link.addEventListener('error', reject, {once: true}); + }); +} + beforeEach(() => { container = document.body; container.innerHTML = ''; @@ -70,7 +81,7 @@ describe('LINK STYLES', () => { ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(50); + await waitForEvent('__darkreader__test__dynamicUpdateComplete'); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -89,7 +100,7 @@ describe('LINK STYLES', () => { ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(500); + await waitForEvent('__darkreader__test__dynamicUpdateComplete'); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -107,7 +118,7 @@ describe('LINK STYLES', () => { '

Cross-origin import link override

', ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(500); + await waitForEvent('__darkreader__test__dynamicUpdateComplete'); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -122,13 +133,13 @@ describe('LINK STYLES', () => { '

Loaded cross-origin link override

', ); - await timeout(500); + await waitForLinkLoading(selectTestStyleLink()); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(128, 128, 128)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(0, 0, 0)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 0, 0)'); createOrUpdateDynamicTheme(theme, null, false); - await timeout(500); + await waitForEvent('__darkreader__test__dynamicUpdateComplete'); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); @@ -145,10 +156,10 @@ describe('LINK STYLES', () => { createOrUpdateDynamicTheme(theme, null, false); await timeout(50); - expect(document.querySelector('.testcase--link').nextElementSibling.classList.contains(isSafari ? 'darkreader--cors' : 'darkreader--sync')).toBe(true); + expect(selectTestStyleLink().nextElementSibling.classList.contains(isSafari ? 'darkreader--cors' : 'darkreader--sync')).toBe(true); link.disabled = true; await timeout(0); - expect(document.querySelector('.testcase--link').nextElementSibling.classList.contains(isSafari ? 'darkreader--cors' : 'darkreader--sync')).toBe(false); + expect(selectTestStyleLink().nextElementSibling.classList.contains(isSafari ? 'darkreader--cors' : 'darkreader--sync')).toBe(false); }); it("Shouldn't wait on link that won't be loaded", async () => { const link = createStyleLink(null); @@ -164,7 +175,7 @@ describe('LINK STYLES', () => { ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(0); + await timeout(50); const h1 = document.querySelector('h1'); expect(getComputedStyle(h1).backgroundColor).toBe('rgb(102, 102, 102)'); expect(document.querySelector('.darkreader--fallback').textContent).toBe(''); @@ -183,7 +194,7 @@ describe('LINK STYLES', () => { ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(500); + await waitForEvent('__darkreader__test__dynamicUpdateComplete'); expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(102, 102, 102)'); expect(getComputedStyle(container.querySelector('h1')).color).toBe('rgb(255, 255, 255)'); expect(getComputedStyle(container.querySelector('h1 strong')).color).toBe('rgb(255, 26, 26)'); diff --git a/tests/inject/dynamic/variables.tests.ts b/tests/inject/dynamic/variables.tests.ts index 701b610df00c..1b9e53a4c551 100644 --- a/tests/inject/dynamic/variables.tests.ts +++ b/tests/inject/dynamic/variables.tests.ts @@ -2,7 +2,7 @@ import '../support/polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {isFirefox} from '../../../src/utils/platform'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; -import {multiline, timeout} from '../support/test-utils'; +import {multiline, timeout, waitForEvent} from '../support/test-utils'; const theme = { ...DEFAULT_THEME, @@ -844,7 +844,7 @@ describe('CSS VARIABLES OVERRIDE', () => { '', ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(100); + await waitForEvent('__darkreader__test__asyncQueueComplete'); expect(getComputedStyle(container.querySelector('.icon1')).backgroundImage).toMatch(/^url\("data:image\/svg\+xml;base64,.*"\)$/); expect(getComputedStyle(container.querySelector('.icon2')).backgroundImage).toMatch(/^url\("data:image\/svg\+xml;base64,.*"\)$/); expect(getComputedStyle(container.querySelector('.icon3')).backgroundImage).toMatch(/^url\("data:image\/svg\+xml;base64,.*"\), url\("data:image\/svg\+xml;base64,.*"\)$/); @@ -872,7 +872,7 @@ describe('CSS VARIABLES OVERRIDE', () => { '

Mixed background

', ); createOrUpdateDynamicTheme(theme, null, false); - await timeout(100); + await waitForEvent('__darkreader__test__asyncQueueComplete'); expect(getComputedStyle(container.querySelector('.icon')).backgroundImage).toMatch(/^url\("data:image\/svg\+xml;base64,.*"\), linear-gradient\(rgb\(204, 0, 0\), rgb\(0, 0, 0\)\)$/); }); diff --git a/tests/inject/karma.conf.js b/tests/inject/karma.conf.js index e58c3d874110..22554a861ea2 100644 --- a/tests/inject/karma.conf.js +++ b/tests/inject/karma.conf.js @@ -9,7 +9,7 @@ const rollupPluginReplace = require('@rollup/plugin-replace'); const rollupPluginTypescript = require('@rollup/plugin-typescript'); const typescript = require('typescript'); const {getTestDestDir, rootPath} = require('../../tasks/paths'); -const karmaPluginEchoServer = require('./support/echo-server'); +const {createEchoServer} = require('./support/echo-server'); /** * @param {LocalConfig} config @@ -37,10 +37,6 @@ function configureKarma(config, env) { 'karma-rollup-preprocessor', 'karma-jasmine', 'karma-spec-reporter', - karmaPluginEchoServer, - ], - middleware: [ - 'echo-server' ], preprocessors: { '**/*.+(ts|tsx)': ['rollup'], @@ -57,6 +53,7 @@ function configureKarma(config, env) { preventAssignment: true, '__DEBUG__': 'false', '__PORT__': '-1', + '__TEST__': 'true', '__WATCH__': 'false', }), ], @@ -125,6 +122,11 @@ function configureKarma(config, env) { }; } + // HACK: Create CORS server here + // Previously a separate Karma runner file was used + const corsServerPort = 9966; + createEchoServer(corsServerPort).then(() => console.log(`CORS echo server running on port ${corsServerPort}`)); + return options; } diff --git a/tests/inject/support/echo-client.ts b/tests/inject/support/echo-client.ts index b0c7153acaa5..c5fe5f41bc62 100644 --- a/tests/inject/support/echo-client.ts +++ b/tests/inject/support/echo-client.ts @@ -1,5 +1,5 @@ export function getEchoURL(content: string, type = 'text/plain') { - return `${window.location.origin}/echo?${new URLSearchParams({type, content})}`; + return `http://localhost:9966/echo?${new URLSearchParams({type, content})}`; } export function getCSSEchoURL(content: string) { diff --git a/tests/inject/support/echo-server.js b/tests/inject/support/echo-server.js index d13e42a878c6..bb3525484ec4 100644 --- a/tests/inject/support/echo-server.js +++ b/tests/inject/support/echo-server.js @@ -1,49 +1,76 @@ -/** @typedef {import('connect').NextHandleFunction} NextHandleFunction */ -/** @typedef {import('log4js').Logger} Logger */ - -const pluginName = 'middleware:echo-server'; - -/** - * @param {string} [urlRoot] - * @param {KarmaLogger} logger - * @returns {NextHandleFunction} - */ -function createEchoServer(urlRoot, logger) { - /** @type {Logger} */ - const log = logger.create(pluginName); - log.addContext('urlRoot', urlRoot); - log.info('Echo server ready'); - - return function (req, res, next) { - if (!req.url.startsWith(`${urlRoot}echo?`)) { - next(); +// @ts-check +const http = require('http'); + +async function createEchoServer(/** @type {number} */port) { + /** @type {import('http').Server} */ + let server; + + /** @type {import('http').RequestListener} */ + function handleRequest(req, res) { + const parsedURL = new URL(req.url, `http://${req.headers.host}`); + const pathName = parsedURL.pathname; + + if (pathName !== '/echo') { + res.statusCode = 500; + res.end('The URL path must be /echo'); return; } - /** @type {Logger} */ - const requestLog = logger.create(pluginName); - requestLog.addContext('request', req); - requestLog.debug('Handling request'); + const {searchParams} = parsedURL; + + const content = searchParams.get('content'); + if (!content) { + res.statusCode = 500; + res.end('Send content like /echo?type=text%2Fplain&content=XYZ'); + return; + } - const {searchParams} = new URL(req.url, `http://${req.headers.host}`); + const contentType = searchParams.get('type') || 'text/plain'; + res.statusCode = 200; + res.setHeader('Content-Type', contentType); + res.end(content, 'utf8'); + } - let contentType = searchParams.get('type') || 'text/plain', - content = searchParams.get('content'), - statusCode = 200; + /** + * @returns {Promise} + */ + function start() { + return new Promise((resolve) => { + server = http + .createServer(handleRequest) + .listen(port, () => resolve()); + }); + } - if (content === null) { - contentType = 'text/plain'; - content = 'Send content like /echo?type=text%2Fplain&content=XYZ'; - statusCode = 500; + /** + * @returns {Promise} + */ + function close() { + if (!server) { + return; } + return new Promise((resolve) => { + server.close((err) => { + if (err) { + console.error(err); + } + server = null; + resolve(); + }); + }); + } + + process.on('exit', close); + process.on('SIGINT', close); - res.writeHead(statusCode, {'Content-Type': contentType}); - res.end(content, 'utf-8'); + await start(); + + return { + close, + url: `http://localhost:${port}`, }; } -createEchoServer.$inject = ['config.urlRoot', 'logger']; - module.exports = { - [pluginName]: ['factory', createEchoServer], + createEchoServer, }; diff --git a/tests/inject/support/test-utils.ts b/tests/inject/support/test-utils.ts index 4a1638419ae8..c28b2e32d9cf 100644 --- a/tests/inject/support/test-utils.ts +++ b/tests/inject/support/test-utils.ts @@ -7,3 +7,9 @@ export function multiline(...lines: string[]) { export function timeout(delay: number) { return new Promise((resolve) => setTimeout(resolve, delay)); } + +export function waitForEvent(eventName: string) { + return new Promise((resolve) => { + document.addEventListener(eventName, resolve, {once: true}); + }); +} diff --git a/tests/project/jest.config.js b/tests/project/jest.config.js index 19d7763e9619..ff98041bab6d 100644 --- a/tests/project/jest.config.js +++ b/tests/project/jest.config.js @@ -12,6 +12,7 @@ const config = { globals: { 'ts-jest': {tsconfig: '/tests/project/tsconfig.json'}, __DEBUG__: false, + __TEST__: true, }, setupFilesAfterEnv: ['jest-extended/all'], }; diff --git a/tests/unit/jest.config.js b/tests/unit/jest.config.js index 4601842574b8..1f18701808c8 100644 --- a/tests/unit/jest.config.js +++ b/tests/unit/jest.config.js @@ -12,6 +12,7 @@ const config = { globals: { 'ts-jest': {tsconfig: '/tests/unit/tsconfig.json'}, __DEBUG__: false, + __TEST__: true, }, setupFilesAfterEnv: ['jest-extended/all'], }; From a347746a1d1e0c54abdf5ce7269187e2f1467b14 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Mon, 18 Apr 2022 17:57:13 +0400 Subject: [PATCH 638/892] Revert timer timing (#8638) - Revert #8634 and #8600. - Prevent setting alarm in the past (potential Firefox timezone bug). --- src/background/extension.ts | 6 +++++- src/utils/time.ts | 6 ++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/background/extension.ts b/src/background/extension.ts index cdf47d341de5..f76e20951d45 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -153,7 +153,11 @@ export class Extension implements ExtensionState { this.autoState = state; if (nextCheck) { - chrome.alarms.create(Extension.ALARM_NAME, {when: nextCheck}); + if (nextCheck < Date.now()) { + logWarn(`Alarm is set in the past: ${nextCheck}. The time is: ${new Date()}. ISO: ${(new Date()).toISOString()}`); + } else { + chrome.alarms.create(Extension.ALARM_NAME, {when: nextCheck}); + } } } diff --git a/src/utils/time.ts b/src/utils/time.ts index 7f3c9900b877..933dec03885a 100644 --- a/src/utils/time.ts +++ b/src/utils/time.ts @@ -55,8 +55,7 @@ export function nextTimeInterval(time0: string, time1: string, date: Date = new // t < a <= b // Schedule for todate at time a date.setHours(a[0]); - // Add the timezoneOffset to ensure unix time returns it in UTC timezone. - date.setMinutes(a[1] + date.getTimezoneOffset()); + date.setMinutes(a[1]); date.setSeconds(0); date.setMilliseconds(0); return date.getTime(); @@ -66,8 +65,7 @@ export function nextTimeInterval(time0: string, time1: string, date: Date = new // a <= t < b // Schedule for today at time b date.setHours(b[0]); - // Add the timezoneOffset to ensure unix time returns it in UTC timezone. - date.setMinutes(b[1] + date.getTimezoneOffset()); + date.setMinutes(b[1]); date.setSeconds(0); date.setMilliseconds(0); return date.getTime(); From 8794c88b9124d4f54766087e987339b4fa514d75 Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Mon, 18 Apr 2022 10:13:23 -0500 Subject: [PATCH 639/892] Add ukui.org to dark sites (#8666) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index adafc22d6645..b2265e3ab978 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -970,6 +970,7 @@ tycrek.com tynker.com/ide typing.works ufplanets.com +ukui.org unc0ver.dev undergroundcellar.com underlords.com From 374ecdbad5a04cd8b25b0fbedcbbfd5d1f5dc305 Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Mon, 18 Apr 2022 10:13:57 -0500 Subject: [PATCH 640/892] Add lumina-desktop.org to dark sites (#8667) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index b2265e3ab978..cc24c5f61722 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -555,6 +555,7 @@ lootgod.com lordofthemanor.io lospec.com lukesmith.xyz +lumina-desktop.org lutris.net m2v.ru m4rtyr.github.io From 5e5062f4cf6354895fa44163e512eb31e164dea4 Mon Sep 17 00:00:00 2001 From: Anish De <63192115+AnishDe12020@users.noreply.github.com> Date: Mon, 18 Apr 2022 20:45:48 +0530 Subject: [PATCH 641/892] Add xdox.me to dark sites (#8682) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index cc24c5f61722..8b48dfd99d2c 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -1056,6 +1056,7 @@ www.worldofplayers.de x1337x.*/$ x64dbg.com xbins.org +xdox.me xela.dev xn--rpa.cc xonotic.org From f19478f2d43a05d0a44b7bb8a1466ec0f00b9968 Mon Sep 17 00:00:00 2001 From: Anish De <63192115+AnishDe12020@users.noreply.github.com> Date: Mon, 18 Apr 2022 20:47:11 +0530 Subject: [PATCH 642/892] Add raycast.com to dark sites (#8683) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 8b48dfd99d2c..e1e24e3e184c 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -769,6 +769,7 @@ raunaksitoula.com rawg.io rawgiving.com ray.so +raycast.com razorsecure.com rbt.asia rdck.dev From cf1973fa13a651392fd2a6472ccca03f70e35fcc Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Mon, 18 Apr 2022 16:48:04 +0100 Subject: [PATCH 643/892] 4.9.48 --- CHANGELOG.md | 5 +++-- package-lock.json | 4 ++-- package.json | 2 +- src/manifest.json | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82950a506ce7..63c76aa7ccf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,9 @@ -## Unreleased +## 4.9.48 (Apr 18, 2022) - Fix PDF inversion when Auto-detect dark theme option was enabled. -- Fix time automation when user's time zone is non-UTC. - Fix Jira's background. +- User's settings validation. +- Users' fixes for websites. ## 4.9.47 (Mar 14, 2022) diff --git a/package-lock.json b/package-lock.json index 65e4a8d453e8..51be2f5d1dc0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "darkreader", - "version": "4.9.47", + "version": "4.9.48", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "darkreader", - "version": "4.9.47", + "version": "4.9.48", "license": "MIT", "devDependencies": { "@rollup/plugin-node-resolve": "13.1.3", diff --git a/package.json b/package.json index 10dbb0519625..637b892a585a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "darkreader", - "version": "4.9.47", + "version": "4.9.48", "description": "Dark mode for every website", "scripts": { "api": "node tasks/build.js --api", diff --git a/src/manifest.json b/src/manifest.json index efe7681e53c0..5440f16dc468 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Dark Reader", - "version": "4.9.47", + "version": "4.9.48", "author": "Alexander Shutau", "description": "__MSG_extension_description__", "default_locale": "en", From 0d9dbeb0ad3eab0d081f16c6e7672a93bce62e4b Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 12:44:55 +0000 Subject: [PATCH 644/892] Fix for endeavouros.com (#8693) - Resolves #8654 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c479425d3fa4..e317602dc517 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5486,6 +5486,13 @@ body { ================================ +endeavouros.com + +INVERT +.navbar-brand + +================================ + endoflife.date CSS From b4b77bd700f3115e6295258e9a87aa9cbb926a4a Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 12:46:56 +0000 Subject: [PATCH 645/892] Fix for gameranx.com (#8694) - Resolves #8655 --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e317602dc517..de7e328474ac 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6699,6 +6699,20 @@ CSS ================================ +gameranx.com + +CSS +body { + background-color: var(--darkreader-neutral-background) !important; +} +.mai-toc__listitem, +.mai-toc__details, +.mai-toc-default .mai-toc__summary { + background-color: ${#f7f7f7} !important; +} + +================================ + garmin.com INVERT From 1458b343cacb7ec7ec7c49c9f06629b0dee44367 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 12:50:15 +0000 Subject: [PATCH 646/892] Fix for aldi.us (#8695) - Resolves #8656 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index de7e328474ac..b9288651f93f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -602,6 +602,13 @@ CSS ================================ +aldi.us + +IGNORE INLINE STYLE +.company-logo-content * + +================================ + alertus.com INVERT From 4c04eed4938d37141370bcd5493a4815c642aa0b Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 12:51:21 +0000 Subject: [PATCH 647/892] Fix for thriftbooks.com (#8696) - Resolves #8657 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b9288651f93f..93ad897a9895 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16457,6 +16457,13 @@ a.logo ================================ +thriftbooks.com + +INVERT +.DesktopHeader-logo + +================================ + thronemaster.net INVERT From 2f0b582da01bd1aa340a7b245da1818c36f88f93 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 12:53:10 +0000 Subject: [PATCH 648/892] Fix for food4less.com (#8697) - Resolves #8658 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 93ad897a9895..8cc5b369054a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6325,6 +6325,13 @@ img[src="/foobarlogo.png"] ================================ +food4less.com + +INVERT +img[alt="Food4less logo"] + +================================ + foolcontrol.org CSS From c28313f4ee0bb7ae3d1884d4eff1a101a28527d7 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 12:53:23 +0000 Subject: [PATCH 649/892] Fix for shaneco.com (#8698) - Resolves #8659 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8cc5b369054a..8d4cd01b991e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14606,6 +14606,13 @@ INVERT ================================ +shaneco.com + +INVERT +.logo-full + +================================ + share.dmhy.org CSS From cd46076bbe36cfc9647751450f814b59cc92fc6f Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 12:58:56 +0000 Subject: [PATCH 650/892] Fix for picknsave.com (#8699) - Resolves #8660 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8d4cd01b991e..c031148a7c7c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12863,6 +12863,13 @@ CSS ================================ +picknsave.com + +INVERT +.KrogerHeader-Logo--inner + +================================ + picrew.me IGNORE INLINE STYLE From 3c1ce3d736f6e064e85ce0c950a3d21958c9940f Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 12:59:25 +0000 Subject: [PATCH 651/892] Fix for fredmeyerjewelers.com (#8700) - Resolves #8661 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c031148a7c7c..4bb589ce744a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6566,6 +6566,15 @@ a[title="Framework Home"] > img[alt="Framework"] ================================ +fredmeyerjewelers.com + +INVERT +#header1_mainlogo +.mobileNavIcons img +.mobileNavIcons input:not(.searchdesktop) + +================================ + freecommander.com CSS From 1498c497285a7147db541645f99071c644eab02a Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 13:04:33 +0000 Subject: [PATCH 652/892] Fix for myfood4less.com (#8701) - Resolves #8662 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4bb589ce744a..a563f99239d5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11432,6 +11432,13 @@ IGNORE INLINE STYLE ================================ +myfood4less.com + +INVERT +.elementor-widget-theme-site-logo + +================================ + mymenu.be INVERT From 171a7bf47f7fdbc0739ef7dc82e4bf5ab57c6511 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 14:43:16 +0000 Subject: [PATCH 653/892] Fix for thesaurus.com (#8702) - Resolves #8663 --- src/config/dynamic-theme-fixes.config | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a563f99239d5..1454a85b15e6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16467,7 +16467,9 @@ INVERT thesaurus.com INVERT -#__next > div header svg +img[alt^="Grammar Coach"] +[data-grammar-coach-hero="true"] + [data-promotion-page="true"] +[data-grammar-coach-hero="true"] + [data-promotion-page="true"] > div ================================ From beecf36e5a74dbcfd18cddec428a324d5130402e Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 14:51:35 +0000 Subject: [PATCH 654/892] Fix for steamdeck.com (#8704) - Resolves #8664 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1454a85b15e6..3e911dbfb087 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15464,6 +15464,13 @@ i.ml-1 ================================ +steamdeck.com + +IGNORE INLINE STYLE +#header-logo-arc ~ * + +================================ + stevendoesstuffs.dev INVERT From acb9f40e28085a414a73bc47c809e32795f4f93e Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 14:54:44 +0000 Subject: [PATCH 655/892] Fix for www.songsterr.com (#8705) - Resolves #8665 --- src/config/dynamic-theme-fixes.config | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 3e911dbfb087..2d48ce07502e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -18910,6 +18910,10 @@ CSS www.songsterr.com +INVERT +use[href^="#rest"] +use[href^="#dot"] + CSS #tablature svg text { fill: var(--darkreader-neutral-text) !important; From 93e6982548ef81f312059c9ab91ebdbc4d78e624 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 14:58:02 +0000 Subject: [PATCH 656/892] Fix for nxos.org (#8706) - Resolves #8668 --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2d48ce07502e..42e5a9fcce02 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11971,6 +11971,14 @@ body, ================================ +nxos.org + +INVERT +#logo +a[href^="#sidewidgetarea"] + +================================ + nymag.com INVERT From b6bb8103b5028cfa4a3cd3b7b173f5b386ef83f8 Mon Sep 17 00:00:00 2001 From: Konstantin Mikhailov Date: Thu, 21 Apr 2022 00:58:33 +1000 Subject: [PATCH 657/892] Fix for banki.ru (#8670) - Fix comments. --- src/config/dynamic-theme-fixes.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 42e5a9fcce02..a16ab54d7bd9 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1718,6 +1718,11 @@ banki.ru INVERT .header__logo +CSS +.comment:nth-child(even) { + background-color: ${#f5f5f5} !important; +} + ================================ bankier.pl From caa2f14a1b91d87057469ffbac23d56bf1d64083 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 15:02:40 +0000 Subject: [PATCH 658/892] Fix for tizen.org (#8707) - Resolves #8671 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a16ab54d7bd9..9771068adf01 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16615,6 +16615,13 @@ svg > path[style*="--boost"] { ================================ +tizen.org + +INVERT +#header #logo + +================================ + tjournal.ru INVERT From aa3e958990838b4c751c575db3f9b7fe17cb331e Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 15:05:02 +0000 Subject: [PATCH 659/892] Fix for rockylinux.org (#8708) - Resolves #8672 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9771068adf01..4dfd2a4aba60 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14046,6 +14046,13 @@ CSS ================================ +rockylinux.org + +INVERT +img[alt="Rocky Linux"] + +================================ + rog.asus.com IGNORE IMAGE ANALYSIS From 38430fb1060b2e6ad2d115eeea337bfcd621f792 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 15:05:19 +0000 Subject: [PATCH 660/892] Fix for fosshost.org (#8709) - Resolves #8673 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4dfd2a4aba60..82d60484e7bc 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6564,6 +6564,13 @@ img[src$="layout/logo.svg"] ================================ +fosshost.org + +INVERT +img[alt="Fosshost Logo"] + +================================ + frame.work INVERT From 8afc718f341dc36cfebe49dfe6bc6f004c69903f Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 15:05:50 +0000 Subject: [PATCH 661/892] Fix for elementary.io (#8710) - Resolves #8674 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 82d60484e7bc..2c7e6a4d663e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5482,6 +5482,13 @@ td { ================================ +elementary.io + +IGNORE INLINE STYLE +.logotype-svg + +================================ + elp.northumbria.ac.uk INVERT From 22629609509e0ce157a3eeafcb58103f9d1cbb35 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 15:35:24 +0000 Subject: [PATCH 662/892] Fix for ubuntubudgie.org (#8711) - Resolves #8669 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2c7e6a4d663e..aafdbb807716 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17209,6 +17209,13 @@ g#ubuntu-logo > path ================================ +ubuntubudgie.org + +INVERT +.custom-logo + +================================ + udemy.com CSS From d14cd07720b0e0ef04133241e56570fda8bc39f1 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 15:39:57 +0000 Subject: [PATCH 663/892] Fix for bugs.mojang.com (#8712) - Resolves #8675 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index aafdbb807716..5c0f8507de71 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2534,6 +2534,13 @@ input[type="checkbox"]:checked + label { ================================ +bugs.mojang.com + +INVERT +#logo + +================================ + bugs.python.org INVERT From 8b26844a246d3d3fa9c5d937623e83337e05c1b8 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 15:51:42 +0000 Subject: [PATCH 664/892] Fix for raspberrypi.com (#8713) - Resolves #8677 --- src/config/dynamic-theme-fixes.config | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5c0f8507de71..365c0c8d693a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13672,9 +13672,12 @@ td[style^="background:"] raspberrypi.com +INVERT +.__rptl-header-logo path[fill="#000"] + CSS body { - color: var(--darkreader-neutral-text); + color: var(--darkreader-neutral-text) !important; } ================================ From 797e5ea694b6e892ffffbd24401e969633fdff2d Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 15:53:53 +0000 Subject: [PATCH 665/892] Fix for helzberg.com (#8714) - Resolves #8679 --- src/config/dynamic-theme-fixes.config | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 365c0c8d693a..3c3c312978f9 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7865,6 +7865,12 @@ INVERT helzberg.com +INVERT +.logo +.footer.content +.footer.content > div +.footer__column--logo + IGNORE INLINE STYLE a[id^="powered_by_pixleee"] From 962120c3bdbe26d9e618405e881653ac65839b2d Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 15:57:41 +0000 Subject: [PATCH 666/892] Fix for lambdalabs.com (#8715) - Resolves #8680 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 3c3c312978f9..68105e5050b7 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9412,6 +9412,13 @@ a { ================================ +lambdalabs.com + +INVERT +.lambda-logo + +================================ + languagetool.org INVERT From 29874119ddf650c4169d506497a97c6dbc4ef7d2 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 15:59:38 +0000 Subject: [PATCH 667/892] Fix for shells.com (#8716) - Resolves #8681 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 68105e5050b7..cc3cf3378faf 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14729,6 +14729,13 @@ CSS ================================ +shells.com + +INVERT +img[alt="Shells Logo"] + +================================ + shields.io INVERT From 39ddc89693fb05f400c4bdd0df5b574877e99410 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 20 Apr 2022 16:07:56 +0000 Subject: [PATCH 668/892] Fix for ge.globo.com (#8717) - Resolves #8687 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index cc3cf3378faf..acffb27cf546 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6830,6 +6830,15 @@ CSS ================================ +ge.globo.com + +CSS +.glb-grid .tabela-body { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + geekflare.com INVERT From fad4dbfaa6ff6f3a8d835c65fbc90ad0b799b4b6 Mon Sep 17 00:00:00 2001 From: Bobakanoosh Date: Wed, 20 Apr 2022 11:25:08 -0500 Subject: [PATCH 669/892] Added dark site(#8691) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index e1e24e3e184c..8064bbdd648d 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -906,6 +906,7 @@ surviv.io svtplay.se szmarczak.com t.maisputain.ovh +tabstats.com tacoanon.github.io takethewalk.net talentbrick.com From 34feb16dc4beb71d53e87910292310a709283366 Mon Sep 17 00:00:00 2001 From: Zayadur Khan Date: Wed, 20 Apr 2022 17:15:34 -0400 Subject: [PATCH 670/892] Update fixes (#8718) - Add dark site. - Fix for buffer.com - Fix for tiktok.com Co-authored-by: Gusted --- src/config/dark-sites.config | 1 + src/config/dynamic-theme-fixes.config | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 8064bbdd648d..f2815cd8836a 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -950,6 +950,7 @@ tmtheme-editor.herokuapp.com toneden.io totalwarwarhammer.gamepedia.com tracker.fumik0.com +tracker.gg tracr.co training.azeria-labs.com trblwlf.tk diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index acffb27cf546..494cf8778141 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2456,6 +2456,13 @@ CSS ================================ +buffer.com + +IGNORE INLINE STYLE +div[class^="style__LogoWrapper"] * + +================================ + bugreplay.com INVERT @@ -19090,6 +19097,8 @@ div[class*="DivVolumeControlContainer"] .volume-control-container-browser .seek-bar-container .volume-control-container +svg[class*="StyledLinkLogo"] +svg[class*="SvgPlayIcon"] ================================ From b068edb309ce4e83040fccb2f15784800d76577c Mon Sep 17 00:00:00 2001 From: Elaborendum <71190696+Elaborendum@users.noreply.github.com> Date: Thu, 21 Apr 2022 08:27:13 -0500 Subject: [PATCH 671/892] Update fixes (#8686) - Fix for crowdin. - Fix google maps. --- src/config/dynamic-theme-fixes.config | 28 ++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 494cf8778141..33f9a81dc07e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3829,21 +3829,10 @@ crowdin.com INVERT .crowdin-navbar__logo svg.logo-icon-projects -.nav.pull-right > li > a > i -.btn-group.pull-right > a > i -.pull-right.btn-toolbar > button > i -.pull-right.btn-toolbar > div > button > i -.btn.btn-small.dropdown-toggle.files-dropmenu.btn-link-2 .file_type.file_folder.file_branch -.static-icon.static-icon-star-black.muted.clearfix #master-loader > .master-loader-logo #master-loader-progress.bar -CSS -i.notification-placeholder-icon.static-icon.ajax-loader-icon.static-icon-alarm { - background-image: url(https://d2srrzh48sp2nh.cloudfront.net/52aa3a4b/images/application-icons/svg/bell-o.svg) !important; -} - ================================ crunchbase.com @@ -7540,6 +7529,23 @@ a[href*="about/products"] img[src$="menu_black_24dp.png"] #assistive-chips .e2moi img button[guidedhelpid="searchbutton"] +a[href^="//myaccount.google.com/yourdata/maps"] > div +img[src^="//www.google.com/images/branding/lockups/"][alt="Google Maps"] +div[role="checkbox"] > div +div[aria-label="Toggle star"][role="checkbox"] +#legendPanel > div > div > div > div > div > div > div > div > div[jsaction^="keydown"][jsshadow=""][role="checkbox"][style=""] +#legendPanel > div > div > div > div > div > div > div > div > div > div > div > div[jsaction^="keydown"][jsshadow=""][role="checkbox"] +#map-canvas > div > #watermark +body.vsc-initialized > #app > #map-container > #map > .map-outer.map-extent +body.vsc-initialized > #app > #map-container > #map > div > div > div > button[jsaction="map.toggle-map-control"] > img +body.vsc-initialized > #app > #map-container > #map > div > div > div > div > div > button[jsaction="map.zoom-out"] > img +body.vsc-initialized > #app > #map-container > #map > div > div > div > div > div > button[jsaction="map.zoom-in"] > img +#app-container > #modal-dialog > div > div > div > div > button[jsaction="modal.close"] + +CSS +#app-container > #modal-dialog > div > div > div > div > button[jsaction="modal.close"] { + background-color: $var(--darkreader-neutral-background) !important; +} IGNORE IMAGE ANALYSIS .widget-settings-map From 5b5a520eb0286ab9a0299eec00362e6b4d3ef8c7 Mon Sep 17 00:00:00 2001 From: Zayadur Khan Date: Fri, 22 Apr 2022 17:40:15 -0400 Subject: [PATCH 672/892] Fix for level.co (#8720) - Invert logo. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 33f9a81dc07e..f9919bb93ae5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9618,6 +9618,14 @@ INVERT ================================ +lever.co + +INVERT +a.main-header-logo +div.site-branding + +================================ + lg.com INVERT From ae146f4a6fd15ae86fc725e76619519401ce6877 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 22 Apr 2022 21:44:30 +0000 Subject: [PATCH 673/892] Fix for google.*/maps (#8735) * Fix for google.*/maps - Resolves #8719 * Update dynamic-theme-fixes.config --- src/config/dynamic-theme-fixes.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index f9919bb93ae5..e2d91044db9a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7541,6 +7541,8 @@ body.vsc-initialized > #app > #map-container > #map > div > div > div > button[j body.vsc-initialized > #app > #map-container > #map > div > div > div > div > div > button[jsaction="map.zoom-out"] > img body.vsc-initialized > #app > #map-container > #map > div > div > div > div > div > button[jsaction="map.zoom-in"] > img #app-container > #modal-dialog > div > div > div > div > button[jsaction="modal.close"] +div[data-tooltip^="Zoom"] +div[style="top: 0px;"] > div > div > div > :first-child CSS #app-container > #modal-dialog > div > div > div > div > button[jsaction="modal.close"] { From acdfb503de127dde922ba927772ea2cbe0009522 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 22 Apr 2022 21:45:38 +0000 Subject: [PATCH 674/892] Fix for sugaroutfitters.com (#8736) - Resolves #8722 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e2d91044db9a..6b1ba5ab186c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15850,6 +15850,15 @@ INVERT ================================ +sugaroutfitters.com + +CSS +.clearfix { + display: none !important; +} + +================================ + suite.smarttech-prod.com INVERT From 980e9d9fe148b945807dfedc34cc325c68ac7547 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 22 Apr 2022 21:52:30 +0000 Subject: [PATCH 675/892] Fix for drive.google.com (#8737) - Resolves #8724 --- src/config/dynamic-theme-fixes.config | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 6b1ba5ab186c..93efc40dd523 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5035,6 +5035,7 @@ div[role="menu"] > div > div[role="menuitem"] > div > div > div div[data-label="nd"] > div > div > svg > path[fill="#000000"] div[role="document"] > div[role="button"] .a-b-c div > svg > circle[fill="white"] +img[src*="empty_state_trash"] CSS span[data-type="spelling"] { @@ -5045,7 +5046,10 @@ div[role="button"][aria-disabled="true"] > div { filter: invert(50%) !important; } #request-access-icon { - filter: invert(93.7%) hue-rotate(180deg) contrast(90.6%) !important + filter: invert(93.7%) hue-rotate(180deg) contrast(90.6%) !important +} +:root { + --dt-secondary-container: ${#f1f3f4} !important; } IGNORE INLINE STYLE From e996829495bf4d520fab6a272b7746ff9b81b458 Mon Sep 17 00:00:00 2001 From: Victor Valerio Moraes Date: Fri, 22 Apr 2022 18:53:44 -0300 Subject: [PATCH 676/892] Fix for central.proxyvote.com (#8726) - Invert radio button. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 93efc40dd523..49b5cc300c22 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2885,6 +2885,13 @@ INVERT ================================ +central.proxyvote.com + +INVERT +.custom-control-label::after + +================================ + centrum24.pl INVERT From 8d8cebb6b56dbafea156dd4b83172ee8d204029e Mon Sep 17 00:00:00 2001 From: Tiagoquix <30274161+Tiagoquix@users.noreply.github.com> Date: Fri, 22 Apr 2022 18:59:20 -0300 Subject: [PATCH 677/892] Update PT-BR translation (#8732) Some improvements and corrections of some texts that are too big (which end up not having enough space). Also adds a colon after "(open-source)". --- src/_locales/pt-BR.config | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/_locales/pt-BR.config b/src/_locales/pt-BR.config index 4999bac31a82..057af54b74f2 100644 --- a/src/_locales/pt-BR.config +++ b/src/_locales/pt-BR.config @@ -1,8 +1,8 @@ @extension_description -Tema escuro para todos os sites. Mantenha seus olhos relaxados usando o tema escuro em sua navegação diária. +Tema escuro para todos os sites. Mantenha os seus olhos relaxados usando o tema escuro em sua navegação diária. @loading_please_wait -Carregando, por favor, aguarde +Carregando, aguarde #==== Top section ==== @@ -14,14 +14,14 @@ Ati. Des. @toggle_current_site -Ativar/Des. no site atual +Alternar (site atual) @setup_hotkey_toggle_site -Configurar o atalho de -alternância do site atual +Configurar atalho de +alternância (site atual) @toggle_extension -Ativar/Des. extensão +Ativar/des. extensão @setup_hotkey_toggle_extension Atalho de alternância @@ -48,13 +48,13 @@ pelo navegador @page_in_dark_list Este site está na -Lista Negra global +lista negra global @system_dark_mode Usar o esquema de cores do sistema @system_dark_mode_description -Ative quando o modo escuro do sistema estiver habilitado +Ativar quando o sistema estiver no modo escuro #==== Filter ==== @@ -78,10 +78,10 @@ Brilho Contraste @grayscale -Tons de Cinza +Tons de cinza @sepia -Tons de Sépia +Tons de sépia @only_for Somente para @@ -105,7 +105,7 @@ Não inverter listados Adicionar site à lista @setup_add_site_hotkey -Configurar uma tecla de atalho para adicionar um site +Configurar um atalho para adicionar um site #==== More settings ==== @@ -121,7 +121,7 @@ Intensidade do texto @try_experimental_theme_engines Experimente os motores de temas **experimentais**: -**Filtro+** preserva a saturação de cores, usa a GPU +**Filtro+** preserva a saturação de cores (usa a GPU) **Tema estático** gera um tema simples rapidamente **Tema dinâmico** analisa cores e imagens @@ -174,10 +174,10 @@ Ferramentas #==== Store listing ==== @store_listing -Esta extensão ajuda seus olhos a relaxarem ao criar e aplicar o modo escuro aos sites que você visita. O Dark Reader inverte as cores brilhantes, tornando-as de alto contraste e deixando-as fáceis de serem lidas à noite. +Esta extensão ajuda os seus olhos a relaxarem ao criar e aplicar o modo escuro aos sites que você visita. O Dark Reader inverte as cores brilhantes, tornando-as de alto contraste e deixando-as fáceis de serem lidas à noite. Você pode ajustar o brilho, o contraste, os tons de sépia, o modo escuro, as configurações de fonte e a lista negra. -O Dark Reader não exibe anúncios e não compartilha os dados de seus usuários. O código-fonte é totalmente aberto (open-source) https://github.com/darkreader/darkreader +O Dark Reader não exibe anúncios e não compartilha os dados de seus usuários. O código-fonte é totalmente aberto (open-source): https://github.com/darkreader/darkreader Antes de instalar esta extensão, desative extensões semelhantes. Divirta-se! From 6c63eb7b767052c67038eac9d0b5a7100c7134bb Mon Sep 17 00:00:00 2001 From: Benjamin Gamard Date: Fri, 22 Apr 2022 23:59:57 +0200 Subject: [PATCH 678/892] Added dark sites (#8731) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index f2815cd8836a..acb90e80c328 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -1079,3 +1079,4 @@ zombsroyale.io zoomquilt.org zoomquilt2.com ztdp.ca +zunivers.zerator.com From edc301502ee7c10b041b2fffcc609d8523bb4291 Mon Sep 17 00:00:00 2001 From: Elaborendum <71190696+Elaborendum@users.noreply.github.com> Date: Fri, 22 Apr 2022 17:05:30 -0500 Subject: [PATCH 679/892] Fix for tasks.google.com (#8739) - Fix tasks color. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 49b5cc300c22..89d39fa9dab9 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16209,6 +16209,13 @@ INVERT ================================ +tasks.google.com + +INVERT +div[role="listitem"] > div > div > div[role="presentation"] + +================================ + tastoid.com/ CSS From 4caf5e2a703022d47d6bf295527afb4f5eb5b882 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 22 Apr 2022 22:11:55 +0000 Subject: [PATCH 680/892] Fix for google.*/maps (#8740) --- src/config/dynamic-theme-fixes.config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 89d39fa9dab9..52aef75a5e27 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7552,8 +7552,9 @@ body.vsc-initialized > #app > #map-container > #map > div > div > div > button[j body.vsc-initialized > #app > #map-container > #map > div > div > div > div > div > button[jsaction="map.zoom-out"] > img body.vsc-initialized > #app > #map-container > #map > div > div > div > div > div > button[jsaction="map.zoom-in"] > img #app-container > #modal-dialog > div > div > div > div > button[jsaction="modal.close"] -div[data-tooltip^="Zoom"] +#map-canvas div[data-tooltip] div[style="top: 0px;"] > div > div > div > :first-child +div[style="top: 0px;"] > div > :last-child > div > :nth-child(2) CSS #app-container > #modal-dialog > div > div > div > div > button[jsaction="modal.close"] { From e8e5bbe29748e68f8838617cfbaf6d85477efd72 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 25 Apr 2022 11:51:02 +0000 Subject: [PATCH 681/892] Fix several sites (#8768) - Resolves #8745, #8746, #8747, #8748, #8749, #8750, #8751, #8752, --- src/config/dynamic-theme-fixes.config | 87 +++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 52aef75a5e27..98f42c7711cf 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1014,6 +1014,21 @@ CSS ================================ +apartmentlist.com + +INVERT +div[class*="LogoContainer"] +div[class*="MenuButton"] + +================================ + +apartments.com + +INVERT +.logo + +================================ + apclassroom.collegeboard.org INVERT @@ -3242,6 +3257,13 @@ INVERT ================================ +cloudlinux.com + +INVERT +img.mega-menu-logo + +================================ + cnbc.com INVERT @@ -4470,6 +4492,13 @@ div#naglowek { ================================ +diamondsdirect.com + +INVERT +[alt="Diamonds Direct Logo"] + +================================ + dianping.com INVERT @@ -5599,6 +5628,13 @@ select.input-small { ================================ +ernestjones.co.uk + +INVERT +.logo__img + +================================ + eshop-switch.com INVERT @@ -7364,6 +7400,13 @@ INVERT ================================ +godaddy.com + +INVERT +.logo-mark + +================================ + godoc.org CSS @@ -8823,6 +8866,17 @@ INVERT ================================ +jared.com +kay.com +banter.com +peoplesjewellers.com +zales.com + +INVERT +.company-logo + +================================ + java.com INVERT @@ -14127,6 +14181,13 @@ CSS ================================ +rocksbox.com + +INVERT +.nav_logo + +================================ + rockylinux.org INVERT @@ -14576,6 +14637,18 @@ INVERT ================================ +seamonkey-project.org + +INVERT +img[src*="logo.png"] + +CSS +#breadcrumbs { + background-image: none !important; +} + +================================ + sec.sangfor.com sec.sangfor.com.cn @@ -17075,6 +17148,20 @@ button.slick-next.slick-arrow::before ================================ +tuxcare.com + +INVERT +.navbar__logo + +================================ + +tuxedocomputers.com + +INVERT +#logo + +================================ + tv.yandex.* INVERT From 81136ae77754806af0c6220688109f5956f9e581 Mon Sep 17 00:00:00 2001 From: Pat Nafarrete Date: Mon, 25 Apr 2022 11:52:52 +0000 Subject: [PATCH 682/892] Fix for ubuntu.com (#8764) --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 98f42c7711cf..5755bd954e78 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17371,6 +17371,7 @@ div[class^='c5'] .gm-style ubuntu.com INVERT +.cls-2 .global-nav__header-logo-anchor CSS From 917902f575281551468b9aaf190cddd5ab402a6e Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Mon, 25 Apr 2022 06:59:02 -0500 Subject: [PATCH 683/892] Added dark sites (#8766) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index acb90e80c328..71e9639688ec 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -1061,6 +1061,7 @@ x64dbg.com xbins.org xdox.me xela.dev +xerolinux.xyz xn--rpa.cc xonotic.org yande.re From 98d68b452ac30cd6d40b40bb56c7d6b98360f3d8 Mon Sep 17 00:00:00 2001 From: Elaborendum <71190696+Elaborendum@users.noreply.github.com> Date: Mon, 25 Apr 2022 06:59:36 -0500 Subject: [PATCH 684/892] Fix for google.*/maps (#8741) - Fix google logo on sidebar --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5755bd954e78..683d426c1b61 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7598,6 +7598,7 @@ body.vsc-initialized > #app > #map-container > #map > div > div > div > div > di #map-canvas div[data-tooltip] div[style="top: 0px;"] > div > div > div > :first-child div[style="top: 0px;"] > div > :last-child > div > :nth-child(2) +div[style="top: 0px;"] > div:first-child:not([style^="background"]) > :last-child CSS #app-container > #modal-dialog > div > div > div > div > button[jsaction="modal.close"] { From c05893542db4be402277f9013f2fdfcd0db0e6c4 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 25 Apr 2022 15:24:03 +0000 Subject: [PATCH 685/892] Fix for panthema.net (#8769) - Fix background-image. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 683d426c1b61..f7ba3eae2493 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12785,6 +12785,15 @@ INVERT ================================ +panthema.net + +CSS +body { + background-image: none !important; +} + +================================ + papaya.rocks INVERT From 25df7d2e6eaffb5de430b1440f06f33b3dc84877 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Wed, 27 Apr 2022 03:43:23 -0700 Subject: [PATCH 686/892] Fix for eletimes.com (#8775) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index f7ba3eae2493..5a912a5d9b09 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5532,6 +5532,13 @@ IGNORE INLINE STYLE ================================ +eletimes.com + +INVERT +.tdb-logo-img + +================================ + elp.northumbria.ac.uk INVERT From c07094385a7e0fb8ad0c829dac8cd064d5d69304 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 30 Apr 2022 21:25:41 +0000 Subject: [PATCH 687/892] Fix for docs.expo.dev (#8792) - Resolves #8778 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5a912a5d9b09..41f9eb48818e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4864,6 +4864,13 @@ div.footer-logo > img[alt="Codacy"] ================================ +docs.expo.dev + +IGNORE INLINE STYLE +tr svg * + +================================ + docs.google.com INVERT From bbf3df4fdce79446629501677099ba1fc52d19b0 Mon Sep 17 00:00:00 2001 From: Tiagoquix <30274161+Tiagoquix@users.noreply.github.com> Date: Sat, 30 Apr 2022 18:33:12 -0300 Subject: [PATCH 688/892] Update PT-BR translation (#8785) --- src/_locales/pt-BR.config | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/_locales/pt-BR.config b/src/_locales/pt-BR.config index 057af54b74f2..210efce0a39e 100644 --- a/src/_locales/pt-BR.config +++ b/src/_locales/pt-BR.config @@ -24,8 +24,8 @@ alternância (site atual) Ativar/des. extensão @setup_hotkey_toggle_extension -Atalho de alternância -da extensão +Configurar atalho de +alternância da extensão @automation Automatização @@ -111,7 +111,7 @@ Configurar um atalho para adicionar um site #==== More settings ==== @more -Mais +Extras @select_font Selecione uma fonte From 3dec2eb88925a32d6ab708d625c42f0bd4d57d2a Mon Sep 17 00:00:00 2001 From: Pat Nafarrete Date: Sat, 30 Apr 2022 21:43:44 +0000 Subject: [PATCH 689/892] Fix for kubuntu.org (#8790) - Invert logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 41f9eb48818e..add0165356be 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9461,6 +9461,13 @@ INVERT ================================ +kubuntu.org + +INVERT +.logo + +================================ + kulinarnyblog.pl INVERT From 4ff1c5a81b3698a5aae1728510c813e5ff5aa18a Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 30 Apr 2022 22:00:55 +0000 Subject: [PATCH 690/892] Fix for tiktok.com (#8794) --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index add0165356be..61e8dbbd9984 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -19263,6 +19263,13 @@ div[class*="DivVolumeControlContainer"] svg[class*="StyledLinkLogo"] svg[class*="SvgPlayIcon"] +CSS +[data-e2e="like-icon"] svg, +[data-e2e="comment-icon"] svg, +[data-e2e="share-icon"] svg { + fill: var(--darkreader-neutral-text) !important; +} + ================================ www.tinkoff.ru From e337194376173193de2b16e7c30ae9f54260412a Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 30 Apr 2022 22:29:31 +0000 Subject: [PATCH 691/892] Fix for spc.noaa.gov (#8793) - Resolves #8786 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 61e8dbbd9984..14e24734c66b 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15305,6 +15305,15 @@ CSS ================================ +spc.noaa.gov + +CSS +body { + background-image: none !important; +} + +================================ + spectrum.com INVERT From 6ad1a2ad0ecbdcc791c373515da6a356dd2e474b Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 30 Apr 2022 22:30:56 +0000 Subject: [PATCH 692/892] Fix for g1.globo.com (#8795) - Fix typo. - Resolves #8791 --- src/config/dynamic-theme-fixes.config | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 14e24734c66b..7e7d06270814 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6791,7 +6791,10 @@ g1.globo.com CSS .multicontent { background-color: var(--darkreader-neutral-background) !important; - color: var(--darkeader-neutral-text) !important; + color: var(--darkreader-neutral-text) !important; +} +span.bstn-hl-summary { + color: var(--darkreader-neutral-text) !important; } ================================ From 879fdaac29d00f0e0a720fe53bcde786c6af667f Mon Sep 17 00:00:00 2001 From: pipipear <65990558+pipipear@users.noreply.github.com> Date: Sun, 1 May 2022 07:16:42 -0700 Subject: [PATCH 693/892] Fix for docs.google.com (#8788) - Fix Google meet icon. --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7e7d06270814..a5d5b13d7d28 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4875,6 +4875,7 @@ docs.google.com INVERT .docs-icon +.goog-flat-menu-button-caption .punch-filmstrip-controls-icon #docs-editor canvas .docs-homescreen-icon From be8a65c03ea6ce6c724e9092e4827d1037387d13 Mon Sep 17 00:00:00 2001 From: Diego Mateos Date: Sun, 1 May 2022 16:29:06 +0200 Subject: [PATCH 694/892] Fix for notion.so (#8799) * The first edit is vital: Currently it was overwriting any colored text back to white/black. * The other two selectors: were increasing contrast of a few non-important UI icons. So in my opinion it makes sense that these elements have less contrast that the text, right now they were equal. And I think the site looks better overall. --- src/config/dynamic-theme-fixes.config | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a5d5b13d7d28..9191fb743cd2 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11982,23 +11982,9 @@ CSS body { background-color: var(--darkreader-neutral-background) !important; } -.notion-page-block, -div[contenteditable="true"], -.notion-page-content div { - color: var(--darkreader-neutral-text) !important; -} .notion-divider-block div div { border-bottom: 1px solid ${rgba(55, 53, 47, 0.4)} !important; } -.header .logo svg > path:nth-child(1), -nav[aria-label="Main footer navigation"] .logo svg > path:nth-child(1) { - fill: var(--darkreader-neutral-background) !important; -} -.header .logo svg > path:nth-child(3), -nav[aria-label="Main footer navigation"] .logo svg > path:nth-child(3), -.notion-focusable svg { - fill: var(--darkreader-neutral-text) !important; -} ================================ From ae5065e6aa94eb22ba8fdd74ad3ae161f13cc256 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 1 May 2022 14:47:07 +0000 Subject: [PATCH 695/892] Allow exception to happen in adoptedStyleSheets code (#8801) - Allow a exception to occure in the `handleAdoptedStyleSheets` code, this fixes a regression with Firefox Nightly. - Resolves #8789 --- src/inject/dynamic-theme/index.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/inject/dynamic-theme/index.ts b/src/inject/dynamic-theme/index.ts index 809588e6ff61..c1ee9a3e9453 100644 --- a/src/inject/dynamic-theme/index.ts +++ b/src/inject/dynamic-theme/index.ts @@ -335,13 +335,21 @@ function createThemeAndWatchForUpdates() { } function handleAdoptedStyleSheets(node: ShadowRoot | Document) { - if (Array.isArray(node.adoptedStyleSheets)) { - if (node.adoptedStyleSheets.length > 0) { - const newManger = createAdoptedStyleSheetOverride(node); + try { + if (Array.isArray(node.adoptedStyleSheets)) { + if (node.adoptedStyleSheets.length > 0) { + const newManger = createAdoptedStyleSheetOverride(node); - adoptedStyleManagers.push(newManger); - newManger.render(filter, ignoredImageAnalysisSelectors); + adoptedStyleManagers.push(newManger); + newManger.render(filter, ignoredImageAnalysisSelectors); + } } + } catch (err) { + // For future readers, Dark Reader typically does not use 'try/catch' in its code but, + // due to a problem in Firefox Nightly, this is an exception. Allowing this exception + // to occur causes no consequence. + // Ref: https://github.com/darkreader/darkreader/issues/8789#issuecomment-1114210080 + logWarn('Error occured in handleAdoptedStyleSheets: ', err); } } From ab123227d040197322b5233a7902d222e36f8195 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 1 May 2022 15:10:41 +0000 Subject: [PATCH 696/892] Fix for boringcompany.com (#8803) - Resolves #8802 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9191fb743cd2..08cbb8d5d826 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2388,6 +2388,15 @@ INVERT ================================ +boringcompany.com + +CSS +.tweak-overlay-parallax-enabled .Parallax-item { + z-index: 1 !important; +} + +================================ + boxberry.ru INVERT From 8147febc4dcb405276923b2e9cbc40129a6e3732 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Sun, 1 May 2022 16:36:11 +0100 Subject: [PATCH 697/892] 4.9.49 --- CHANGELOG.md | 5 +++++ package-lock.json | 4 ++-- package.json | 2 +- src/manifest.json | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 63c76aa7ccf6..9aebccda23fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 4.9.49 (May 1, 2022) + +- Fix working in Firefox Nightly 101. +- Users' fixes for websites. + ## 4.9.48 (Apr 18, 2022) - Fix PDF inversion when Auto-detect dark theme option was enabled. diff --git a/package-lock.json b/package-lock.json index 51be2f5d1dc0..40f8e898aaf0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "darkreader", - "version": "4.9.48", + "version": "4.9.49", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "darkreader", - "version": "4.9.48", + "version": "4.9.49", "license": "MIT", "devDependencies": { "@rollup/plugin-node-resolve": "13.1.3", diff --git a/package.json b/package.json index 637b892a585a..2f7b091cbcc4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "darkreader", - "version": "4.9.48", + "version": "4.9.49", "description": "Dark mode for every website", "scripts": { "api": "node tasks/build.js --api", diff --git a/src/manifest.json b/src/manifest.json index 5440f16dc468..707a5ba30bee 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Dark Reader", - "version": "4.9.48", + "version": "4.9.49", "author": "Alexander Shutau", "description": "__MSG_extension_description__", "default_locale": "en", From b8651033810202e609f719d5da0547801a562ceb Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Sun, 1 May 2022 16:44:48 +0100 Subject: [PATCH 698/892] 4.9.50 The latest site fix didn't get into 4.9.49 which was already submitted. --- CHANGELOG.md | 2 +- package-lock.json | 2 +- package.json | 2 +- src/manifest.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9aebccda23fc..80b9eae5a456 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## 4.9.49 (May 1, 2022) +## 4.9.50 (May 1, 2022) - Fix working in Firefox Nightly 101. - Users' fixes for websites. diff --git a/package-lock.json b/package-lock.json index 40f8e898aaf0..2b4fb17773a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "darkreader", - "version": "4.9.49", + "version": "4.9.50", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 2f7b091cbcc4..0a13141668a6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "darkreader", - "version": "4.9.49", + "version": "4.9.50", "description": "Dark mode for every website", "scripts": { "api": "node tasks/build.js --api", diff --git a/src/manifest.json b/src/manifest.json index 707a5ba30bee..19992728dc72 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Dark Reader", - "version": "4.9.49", + "version": "4.9.50", "author": "Alexander Shutau", "description": "__MSG_extension_description__", "default_locale": "en", From df4f1aee5c463776d8486ffca4f48a4ba658de73 Mon Sep 17 00:00:00 2001 From: vivekkoya <67130044+vivekkoya@users.noreply.github.com> Date: Sun, 1 May 2022 10:48:10 -0700 Subject: [PATCH 699/892] Add Telugu translation (#8798) Co-authored-by: Gusted --- src/_locales/tel.config | 183 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 src/_locales/tel.config diff --git a/src/_locales/tel.config b/src/_locales/tel.config new file mode 100644 index 000000000000..b542b31e70f8 --- /dev/null +++ b/src/_locales/tel.config @@ -0,0 +1,183 @@ +@extension_description +ప్రతి వెబ్‌సైట్‌కి ముదురు థీమ్. మీ కళ్లను కాపాడుకోండి, రాత్రి మరియు పగలు బ్రౌజింగ్ట్‌కి ముదురు థీమ్ ఉపయోగించండి. + +@loading_please_wait +దయచేసి వేచి ఉండండి... + + +#====Top section ==== + +@on +ఆన్ + +@off +ఆపండి + +@toggle_current_site +సైట్ కోసం సక్రియం చేయండి + +@setup_hotkey_toggle_site +సైట్ మార్చడానికి పొడిగింపు సెటప్ +హాట్‌కీని ప్రారంభించండి + +@toggle_extension +పొడిగింపును ప్రారంభించండి + +@setup_hotkey_toggle_extension +పొడిగింపు సెట్టింగులు +హాట్‌కీని ప్రారంభించండి + +@automation +స్వయంచాలకంగా పూర్తయింది + +@set_active_hours +మేల్కొనే గంటలను మార్చండి + +@set_location +సూర్యాస్తమయం వద్ద ప్రారంభించండి + +@longitude +రేఖాంశం + +@latitude +అక్షాంశం + +@page_protected +ఈ పేజీ +బ్రౌజర్ ద్వారా రక్షించబడింది + +@page_in_dark_list +ఈ పేజీ +చీకటి థీమ్ జాబితాలో ఉంది + +@system_dark_mode +సిస్టమ్ కలర్ స్కీమ్‌ను ఉపయోగించండి + +@system_dark_mode_description +సిస్టమ్ కలర్ స్కీమ్ ఎనేబుల్ లో ఉంది + + +#==== Filter ==== + +@filter +ఫిల్టర్ + +@mode +మోడ్ + +@dark +నలుపు + +@light +కాంతి + +@brightness +ఎంత కాంతి + +@contrast +విరుద్ధంగా + +@grayscale +గ్రేస్కేల్ + +@sepia +సెపియా + +@only_for +దీని కోసం మాత్రమే + +@only_for_description +ప్రస్తుత సైట్ కోసం మాత్రమే ఎంపికలను వర్తించండి + + +#==== Site list ==== + +@site_list +సైట్ జాబితా + +@invert_listed_only +విలోమ జాబితా మాత్రమే + +@not_invert_listed +విలోమ జాబితా కాదు + +@add_site_to_list +జాబితాకు సైట్‌ను జోడించండి + +@setup_add_site_hotkey +సైట్‌ను జోడించడానికి హాట్‌కీని సెటప్ చేయండి + + +#==== More settings ==== + +@more +మరింత + +@select_font +ఫాంట్ ఎంచుకోండి + +@text_stroke +టెక్స్ట్ స్ట్రోక్ + +@try_experimental_theme_engines +ప్రయత్నించండి ** ప్రయోగాత్మక ** థీమ్ ఇంజన్లు: +** ఫిల్టర్+** రంగుల సంతృప్తతను సంరక్షిస్తుంది, GPU ని ఉపయోగిస్తుంది +** స్టాటిక్ థీమ్ ** సరళమైన వేగవంతమైన థీమ్‌ను ఉత్పత్తి చేస్తుంది +** డైనమిక్ థీమ్ ** రంగులు మరియు చిత్రాలను విశ్లేషిస్తుంది + +@engine_filter +ఫిల్టర్ + +@engine_filter_plus +ఫిల్టర్+ + +@engine_static +స్థిరమైన + +@engine_dynamic +చురుకుగా + +@theme_generation_mode +థీమ్ యొక్క మోడ్‌ను మార్చండి + +@custom_browser_theme_on +ఆచారం + +@custom_browser_theme_off +డిఫాల్ట్ + +@change_browser_theme +బ్రౌజర్ థీమ్‌ను మార్చండి + + +#==== Footer ==== + +@privacy +గోప్యత + +@help +సహాయం + +@donate +దయచేసి దానం చేయండి + +@news +వార్తలు + +@read_more +ఇంకా చదవండి + +@open_dev_tools +ఓపెన్ దేవ్ టూల్స్ + + +#==== Store listing ==== + +@store_listing +ఈ కంటి-సంరక్షణ పొడిగింపు ఫ్లైలో వెబ్‌సైట్ల కోసం చీకటి ఇతివృత్తాలను సృష్టించడం ద్వారా నైట్ మోడ్‌ను అనుమతిస్తుంది. డార్క్ రీడర్ ప్రకాశవంతమైన రంగులను విలోమం చేస్తుంది, అవి అధిక విరుద్ధంగా మరియు రాత్రి చదవడం సులభం చేస్తాడు. + +మీరు ప్రకాశం, కాంట్రాస్ట్, సెపియా ఫిల్టర్, డార్క్ మోడ్, ఫాంట్ సెట్టింగులు మరియు విస్మరించే-జాబితాను సర్దుబాటు చేయవచ్చు. + +డార్క్ రీడర్ ప్రకటనలను చూపించదు మరియు వినియోగదారుల డేటాను ఎక్కడా పంపదు. ఇది పూర్తిగా ఓపెన్-సోర్స్: https://github.com/darkreader/darkreader + +మీరు దీన్ని ఇన్‌స్టాల్ చేయడానికి ముందు, ఇలాంటి పొడిగింపులను నిలిపివేయండి. చూడటం ఆనందించండి! From 5c5d0df3e52ca0ee6992f7b8b02d020e063a2754 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 1 May 2022 17:54:35 +0000 Subject: [PATCH 700/892] Fix for alphacoders.com (#8805) - Fix background-image. --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 08cbb8d5d826..1530cce47303 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -753,6 +753,16 @@ INVERT ================================ +alphacoders.com + +INVERT +.main +.main > * +#page_header +#page_header > * + +================================ + alphashooters.com CSS From 3e47e063eb52c706154da20d0b4c3d4d6058f7d7 Mon Sep 17 00:00:00 2001 From: Tiagoquix <30274161+Tiagoquix@users.noreply.github.com> Date: Sun, 1 May 2022 15:03:32 -0300 Subject: [PATCH 701/892] Add some dark sites (#8796) --- src/config/dark-sites.config | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 71e9639688ec..6a325e283322 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -105,7 +105,6 @@ betterttv.com bherila.net bin.disroot.org binclub.dev -bing.com/$ bip.staszic.waw.pl birdie0.github.io bitcoinity.org/markets @@ -176,6 +175,7 @@ cl00e9ment.gitlab.io/kingdom-blazon-generator/ clash3d.com clashofstats.com clt.gg +cncnet.org codepen.io codesandbox.io codestackr.com @@ -544,6 +544,7 @@ lipu-linku.github.io liquidplus.com listen.moe livesplit.org +loadout.tf lolesports.com lollilol.cf lollilol.ml @@ -904,6 +905,7 @@ support.steampowered.com supremacy1914.com surviv.io svtplay.se +sync-tube.de szmarczak.com t.maisputain.ovh tabstats.com @@ -923,6 +925,7 @@ telecineplay.com.br teleseer.com televizeseznam.cz telugucz.com +term.ooo terminal.sexy tetr.io textfiles.com @@ -948,6 +951,7 @@ tio.run title-case-converter.vercel.app tmtheme-editor.herokuapp.com toneden.io +top.gg totalwarwarhammer.gamepedia.com tracker.fumik0.com tracker.gg @@ -1045,6 +1049,7 @@ wtfast.com www.canalplus.com www.cc.com www.chiefdelphi.com +www.deviantart.com www.digikam.org www.directvnow.com www.gotimelinr.com From c89304261c8dc2f661a7c5a0bfb13d58c27e6bd1 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 1 May 2022 18:06:11 +0000 Subject: [PATCH 702/892] Fix for leagueoflegends.com (#8806) - Fix featured news. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1530cce47303..947a7af28409 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9642,6 +9642,9 @@ CSS leagueoflegends.com +INVERT +[data-testid="featurednews"] div[class^="style__ItemWrapper"] div[class^="style__Container"] canvas + CSS article > div > canvas[class^="style__Canvas"] { display: none !important; From 0cd7d98298d7f358348fbbb2ce3adec3d32d36d1 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 1 May 2022 18:10:53 +0000 Subject: [PATCH 703/892] Fix for patuscada.bar (#8807) - Fix logo. - Fix background image. --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 947a7af28409..c0bf0349b311 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12892,6 +12892,20 @@ IGNORE IMAGE ANALYSIS ================================ +patuscada.bar + +INVERT +.topo +.topo > * +.patuscada-logo +.botoes-topo a:last-child img +.logo + +IGNORE IMAGE ANALYSIS +.etiqueta-vermelha + +================================ + paulgraham.com CSS From 707ba8384971ddd01e69f5fb3ac0b1c26f8bda06 Mon Sep 17 00:00:00 2001 From: Christopher Lail Date: Sun, 1 May 2022 13:21:09 -0500 Subject: [PATCH 704/892] Fix for bing.com (#8781) - Fix summary side panel. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c0bf0349b311..8e08d86aad97 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2056,6 +2056,9 @@ CSS .l_ecrd_imcolheader.gradient { z-index: 2 !important; } +#b_content { + background-image: none !important +} IGNORE INLINE STYLE .b_header_bg From 8546f3e20493990842d7cb67d17ea42c9b80d75f Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Mon, 2 May 2022 05:06:12 -0700 Subject: [PATCH 705/892] Fix for overleaf.com (#8809) Remove PDF viewer inversion so that the displayed PDF is an accurate view of the finished product. --- src/config/dynamic-theme-fixes.config | 1 - 1 file changed, 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8e08d86aad97..4ddd935cd3b4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12741,7 +12741,6 @@ div.o365cs-base > span.ms-Icon--WaffleOffice36 overleaf.com INVERT -.pdf-viewer .mwe-math-element ================================ From c34018d75e69ced2134cb894d517d958b79ff5e5 Mon Sep 17 00:00:00 2001 From: Siddharth Ray <58677791+kidsonfilms-python-rules@users.noreply.github.com> Date: Mon, 2 May 2022 05:09:14 -0700 Subject: [PATCH 706/892] Added dark site (#8808) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 6a325e283322..9dfe19a01461 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -267,6 +267,7 @@ discourse.disneyheroesgame.com discuss.noisebridge.info disneyplus.com distrotube.com +djflame.tech dlive.tv dodi-repacks.site doesitarm.com From f87409ecec03ec2d686d3da1beff30ea9578b778 Mon Sep 17 00:00:00 2001 From: Tiagoquix <30274161+Tiagoquix@users.noreply.github.com> Date: Mon, 2 May 2022 09:15:58 -0300 Subject: [PATCH 707/892] Add dark site (#8810) --- src/config/dark-sites.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 9dfe19a01461..31b1403e9199 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -364,6 +364,7 @@ fusengine.github.io/apaxy-v2 gamebanana.com gamejolt.com gameloop.fun +gaming.amazon.com garamlee500.github.io garudalinux.org gatsbyjs.org @@ -1047,6 +1048,7 @@ wowaudit.com wowhead.com wowinterface.com wtfast.com +www.ageofempires.com www.canalplus.com www.cc.com www.chiefdelphi.com From a551a1e9c6e5cfe38e59728af63bdd6e8cb6ad19 Mon Sep 17 00:00:00 2001 From: Snazzah <7025343+Snazzah@users.noreply.github.com> Date: Mon, 2 May 2022 07:17:08 -0500 Subject: [PATCH 708/892] Fix for iconify.design (#8811) - Fix icons. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4ddd935cd3b4..7355eb2ffda6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8251,6 +8251,9 @@ iconify.design IGNORE INLINE STYLE svg.iconify * +svg#footer-icon-name * +svg#icon-nav-prev * +svg#icon-nav-next * .si-svg-wrapper svg * .block-container .icons svg * From 48f947aeca74b2e04059144c2cfaef35e139aba5 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 2 May 2022 12:25:30 +0000 Subject: [PATCH 709/892] Fix for drive.google.com (#8815) - Resolves #8782 --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7355eb2ffda6..bb023affddaf 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5120,6 +5120,7 @@ div[role="button"][aria-disabled="true"] > div { IGNORE INLINE STYLE div[role="presentation"] svg +div[data-label="nd"] > div > div > svg > path[fill="#000000"] ================================ From 73b7ac972f02d6463eee5225c8fa12652b273fc7 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 2 May 2022 12:35:58 +0000 Subject: [PATCH 710/892] Fix for igurublog.wordpress.com (#8816) - Resolves #8813 --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index bb023affddaf..5ac6768e90b7 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8314,6 +8314,18 @@ CSS ================================ +igurublog.wordpress.com + +CSS +body, +.entry, +#content, +#container { + background-image: none !important; +} + +================================ + ikea.* CSS From 7b5dd825a1327b6d437417c967f06403ffd51bcb Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Tue, 3 May 2022 22:49:04 +0300 Subject: [PATCH 711/892] Fix for vk.com (#8817) - Invert unread icon in messages for dark theme. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5ac6768e90b7..b20f957671f5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17917,6 +17917,15 @@ INVERT ================================ +vk.com + +CSS +body[scheme="vkcom_dark"] ._im_dialog_unread_ct { + background: var(--counter_primary_background) !important; +} + +================================ + vod.tvp.pl INVERT From a4cac88d475c09dc7f5279dfb79cd0114f54fd20 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Tue, 3 May 2022 12:49:12 -0700 Subject: [PATCH 712/892] Fix sciencebasedmedicine.org (Dynamic) (#8819) --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b20f957671f5..19c389099e03 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14574,6 +14574,13 @@ h1.news-article__hero__title { ================================ +sciencebasedmedicine.org + +INVERT +.site-logo + +================================ + scipy-lectures.org INVERT From 466821e1f76dbd3b20ba414f64bc9d79349a9f09 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 3 May 2022 19:58:14 +0000 Subject: [PATCH 713/892] Fix for developers.google.com (#8823) - Resolves #8820 --- src/config/dynamic-theme-fixes.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 19c389099e03..dc645b1f0df1 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4475,6 +4475,8 @@ CSS --devsite-searchbox-inactive: var(--darkreader-neutral-background) !important; --devsite-button-background: var(--darkreader-neutral-background) !important; --devsite-footer-background: var(--darkreader-neutral-background) !important; + --devsite-breadcrumb-list-background: var(--darkreader-neutral-background) !important; + --devsite-background-3: ${rgb(198, 198, 198)} !important; } button, a.button, From ecb466d30da2524707882915dc312aee0b51c719 Mon Sep 17 00:00:00 2001 From: Tiagoquix <30274161+Tiagoquix@users.noreply.github.com> Date: Tue, 3 May 2022 17:05:27 -0300 Subject: [PATCH 714/892] Add dark site (#8822) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 31b1403e9199..3c5a44b8ef77 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -85,6 +85,7 @@ azm.azerialabs.com badboybill.com batflix.org battle.net +battlelog.battlefield.com bbaovanc.com bbc.co.uk/iplayer bdeditor.dev From 6789ea05693da67ef9b7c7bb5204c6c3eb358371 Mon Sep 17 00:00:00 2001 From: Gusted Date: Tue, 3 May 2022 20:05:44 +0000 Subject: [PATCH 715/892] Fix for ario-player.sourceforge.net (#8824) - Resolves #8821 --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index dc645b1f0df1..14d4d9d2c555 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1307,6 +1307,20 @@ CSS ================================ +ario-player.sourceforge.net + +INVERT +div.header + +CSS +div.main, +#menu li a, +#menu li { + background-image: none !important; +} + +================================ + ars.particify.de CSS From 753b7452f61ab0da6f1b38a281b3374daef18fc0 Mon Sep 17 00:00:00 2001 From: Joshua Hansen <43594988+Joshlha@users.noreply.github.com> Date: Wed, 4 May 2022 11:01:19 -0700 Subject: [PATCH 716/892] Fix for zendesk.com (#8826) - Fix comment box. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 14d4d9d2c555..110b0e984614 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -20031,6 +20031,15 @@ CSS ================================ +zendesk.com + +CSS +.zendesk-editor--rich-text-container { + background-image: none !important; +} + +================================ + zenn.dev INVERT From 1804f3acb36e8bf4da5e36f5cfd142e005ecbc2d Mon Sep 17 00:00:00 2001 From: Adam Beer Date: Wed, 4 May 2022 19:49:38 -0400 Subject: [PATCH 717/892] Fix for omgubuntu.co.uk (#8830) - Use gradient background (as original). --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 110b0e984614..50534c817995 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12418,6 +12418,15 @@ IGNORE IMAGE ANALYSIS ================================ +omgubuntu.co.uk + +CSS +.header { + background: var(--header-background) !important; +} + +================================ + omni.se CSS From 06e5602b240d8e876928aa34f24202c74c4bc3b6 Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Fri, 6 May 2022 01:19:47 +0300 Subject: [PATCH 718/892] Fix for getpocket.com (#8831) - Remove obsolete rules. - Fix inversion of in-article links. --- src/config/dynamic-theme-fixes.config | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 50534c817995..b90283c7fafa 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1108,13 +1108,6 @@ svg text.time_cursor { ================================ -app.getpocket.com - -IGNORE IMAGE ANALYSIS -* - -================================ - app.grammarly.com CSS @@ -7046,8 +7039,9 @@ login-container { getpocket.com CSS -a .title span { +a[rel="noopener noreferrer"] { text-shadow: none !important; + background-image: linear-gradient(to top,transparent,transparent 1px,var(--darkreader-text--color-canvas) 1px,var(--darkreader-text--color-canvas) 2px,transparent 2px) !important; } ================================ From 1058afaa2b7567299f185198c119af6ee5046a9c Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Thu, 5 May 2022 19:10:01 -0600 Subject: [PATCH 719/892] Fix for caddyserver.com (#8834) Resolves #8783 - Remove bright background in top banner - Invert dark logos --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b90283c7fafa..f56b3970d217 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2730,6 +2730,20 @@ INVERT ================================ +caddyserver.com + +INVERT +#logo +#zerossl-logo +#footer-logo + +CSS +.hero { + background-image: none !important; +} + +================================ + caiyunapp.com INVERT From b9a2425c4b3b1e5160cedb0242cdf8e2b97a4913 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Fri, 6 May 2022 02:03:25 -0600 Subject: [PATCH 720/892] Fix for vanguard.com (#8835) * Fix for vanguard.com Inversions for: - Dark menu chevrons - Dark magnifying glass search icons - Light text on light background buy/sell transaction buttons * Add inversion for unreadable HoldingDetailForm buttons --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index f56b3970d217..8227862dc383 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17743,6 +17743,14 @@ INVERT vanguard.com +INVERT +.vgn-accordionIcon +.vgn-arrow::after +#vgn-searchToggleButtonButton--long-form +#vgn-searchToggleButtonButton--small-form +input[id^="buysellForm:"] +input[id^="HoldingDetailForm:"] + CSS .hidePageIfJSdisabled { display: block !important; From 429ef1f2f6a35e581f8342d50e16417a09ccaf6a Mon Sep 17 00:00:00 2001 From: "BANO.notIT" Date: Fri, 6 May 2022 22:57:46 +0300 Subject: [PATCH 721/892] Fix for ind.ie (#8633) * Fix triangle texts on ind.ie/ethical-design/ * Code-style Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8227862dc383..096187d9a69f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8494,6 +8494,13 @@ svg[class*="logo"] ================================ +ind.ie + +INVERT +.three-rs .three-rs-list p + +================================ + independent.co.uk INVERT From 5dadcac30f4d39081d4288ba38a00ddd5a5ca9bb Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Fri, 6 May 2022 16:34:52 -0500 Subject: [PATCH 722/892] Fix for raspberrypi.org (#8836) Resolves #8678. All credit goes to @xcasxcursex --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 096187d9a69f..ba277b42bb2a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13910,6 +13910,9 @@ body { raspberrypi.org +INVERT +.site-header__home-link + IGNORE IMAGE ANALYSIS .c-at-home__container From 2ef0665a088018f870117567a27d9eb042fa9ef6 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Fri, 6 May 2022 14:35:12 -0700 Subject: [PATCH 723/892] Fix for liveuamap.com (#8839) - Darken map theme - Invert comment, share, and logo icons - Remove bright background gradient behind the Live News header --- src/config/dynamic-theme-fixes.config | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ba277b42bb2a..5f55bc18addd 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10102,6 +10102,21 @@ div.icoShare.iconSprite ================================ +liveuamap.com + +INVERT +.comment-link::after +.leaflet-pane > .leaflet-layer +.logo +.top-bright > label::after + +CSS +.head-news { + background-image: none !important; +} + +================================ + lkml.org INVERT From 3309e7dc57a72d3784a58e23b63fd1136c953eb9 Mon Sep 17 00:00:00 2001 From: "BANO.notIT" Date: Sun, 8 May 2022 06:04:36 +0300 Subject: [PATCH 724/892] Fix for dnd.su (#8579) - Fix background-image. --- src/config/dynamic-theme-fixes.config | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5f55bc18addd..b4c566bb5fb8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4825,6 +4825,32 @@ INVERT ================================ +dnd.su + +CSS +input, +select, +textarea, +.input-cast_time, +.input-style, +.input-select, +.button, +button:not(.lg-icon), +.workshop__checkbox .workshop__label::before, +.card-type, +.paper-1, +.desc .additionalInfo, +.subsection .additionalInfo, +.trumbowyg-editor .additionalInfo, +.social-menu ul, +#ya-site-form0 .ya-site-form__form .ya-site-form__input-text, +#ya-site-form0 .ya-site-form__submit { + background-image: none !important; + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + dnd5e.wikidot.com CSS From dd45b1ae4de519b95ee5e19bb79522046c4d9c2f Mon Sep 17 00:00:00 2001 From: Tiagoquix <30274161+Tiagoquix@users.noreply.github.com> Date: Sun, 8 May 2022 00:08:28 -0300 Subject: [PATCH 725/892] Add dark site (#8840) This is for: `mastercomfig.com` `mastercomfig.com/app` `docs.mastercomfig.com` --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 3c5a44b8ef77..99b64602078f 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -572,6 +572,7 @@ mangaplus.shueisha.co.jp mango.pdf.zone maroon.jonah.pw marte.dev +mastercomfig.com mastodon.online mastodon.social matteotiscia.com From baa78f29c6b4938ed354b008ff5a87aa0ca61f00 Mon Sep 17 00:00:00 2001 From: Pat Nafarrete Date: Sun, 8 May 2022 03:44:39 +0000 Subject: [PATCH 726/892] Fix for tails.boum.org (#8841) --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b4c566bb5fb8..c38cf5a6a3ba 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16380,6 +16380,9 @@ INVERT tails.boum.org +INVERT +.laptop + CSS body { background-image: none !important; From e22332e0bf3b1d315ae4caa524a70c40bb7a2754 Mon Sep 17 00:00:00 2001 From: Kai Azim <68963405+MrKai77@users.noreply.github.com> Date: Sat, 7 May 2022 21:45:04 -0600 Subject: [PATCH 727/892] New Theme: Tokyo Night (#8844) --- src/config/color-schemes.drconf | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/color-schemes.drconf b/src/config/color-schemes.drconf index 3162619a386d..db9d693a3b3a 100644 --- a/src/config/color-schemes.drconf +++ b/src/config/color-schemes.drconf @@ -60,3 +60,15 @@ LIGHT background: #fdf6e3 text: #586e75 +================================ + +Tokyo Night + +DARK +background: #1a1b26 +text: #a9b1d6 + +LIGHT +background: #d5d6db +text: #343b58 + From ee4bbbfb5a0bfa6534f33c9742f288dabc1c76c9 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 9 May 2022 22:04:06 +0200 Subject: [PATCH 728/892] Remove fastpath. (#8852) - In only a small subset of scenario's the fastpath is actually used. This isn't worth the performance loss of `try {} catch {}`. --- src/inject/dynamic-theme/style-manager.ts | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/inject/dynamic-theme/style-manager.ts b/src/inject/dynamic-theme/style-manager.ts index 620b2fbea61f..24324d5a5678 100644 --- a/src/inject/dynamic-theme/style-manager.ts +++ b/src/inject/dynamic-theme/style-manager.ts @@ -315,18 +315,6 @@ export function manageStyle(element: StyleElement, {update, loadingStart, loadin cancelAsyncOperations = false; function removeCSSRulesFromSheet(sheet: CSSStyleSheet) { - // Check if we can use a fastpath by using sheet.replaceSync. - // Because replaceSync can throw DOMExceptions we have to use try-catch. - try { - if (sheet.replaceSync) { - sheet.replaceSync(''); - return; - } - } catch (err) { - logWarn('Could not use fastpath for removing rules from stylesheet', err); - } - // If we hit this point, the replaceSync didn't work - // and we have to iterate over the CSSRules. for (let i = sheet.cssRules.length - 1; i >= 0; i--) { sheet.deleteRule(i); } From dbe6122c4b4e8a2b8e284ed691d4ffb54e710d6e Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 9 May 2022 22:50:35 +0200 Subject: [PATCH 729/892] Hide long logs (#8853) - The onmessage logs can be quite long in the console is annoying to go trough when you need to debug based of logs(because browser bugs). So, hide them in a collapsed group by default. --- src/inject/index.ts | 4 ++-- src/utils/log.ts | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/inject/index.ts b/src/inject/index.ts index 713530dfef81..f400cab036ce 100644 --- a/src/inject/index.ts +++ b/src/inject/index.ts @@ -2,7 +2,7 @@ import {createOrUpdateStyle, removeStyle} from './style'; import {createOrUpdateSVGFilter, removeSVGFilter} from './svg-filter'; import {runDarkThemeDetector, stopDarkThemeDetector} from './detector'; import {createOrUpdateDynamicTheme, removeDynamicTheme, cleanDynamicThemeCache} from './dynamic-theme'; -import {logInfo, logWarn} from '../utils/log'; +import {logInfo, logWarn, logInfoCollapsed} from '../utils/log'; import {watchForColorSchemeChange} from './utils/watch-color-scheme'; import {collectCSS} from './dynamic-theme/css-collection'; import type {Message} from '../definitions'; @@ -56,7 +56,7 @@ function sendMessage(message: Message) { } function onMessage({type, data}: Message) { - logInfo('onMessage', type, data); + logInfoCollapsed(`onMessage[${type}]`, data); switch (type) { case MessageType.BG_ADD_CSS_FILTER: case MessageType.BG_ADD_STATIC_THEME: { diff --git a/src/utils/log.ts b/src/utils/log.ts index 1881dd7c470a..e5b6642fe9ca 100644 --- a/src/utils/log.ts +++ b/src/utils/log.ts @@ -8,3 +8,11 @@ export function logInfo(...args: any[]) { export function logWarn(...args: any[]) { DEBUG && console.warn(...args); } + +export function logInfoCollapsed(title: any, ...args: any[]) { + if (DEBUG) { + console.groupCollapsed(title); + console.log(...args); + console.groupEnd(); + } +} From 3f80b6f8b06b61d33d567ecb72221bbd1134fc90 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 9 May 2022 23:39:43 +0200 Subject: [PATCH 730/892] Specify frameId for CS_FETCH_RESPONSE (#8855) - When responding to CS_FETCH, specify to which frameId we want to send the data. Otherwise another frame would receive data from another requestURL. - Resolves https://github.com/darkreader/darkreader/issues/8851 --- src/background/tab-manager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/background/tab-manager.ts b/src/background/tab-manager.ts index 516799faa860..637456d0c076 100644 --- a/src/background/tab-manager.ts +++ b/src/background/tab-manager.ts @@ -184,7 +184,7 @@ export default class TabManager { // Using custom response due to Chrome and Firefox incompatibility // Sometimes fetch error behaves like synchronous and sends `undefined` const id = message.id; - const sendResponse = (response: Partial) => chrome.tabs.sendMessage(sender.tab.id, {type: MessageType.BG_FETCH_RESPONSE, id, ...response}); + const sendResponse = (response: Partial) => chrome.tabs.sendMessage(sender.tab.id, {type: MessageType.BG_FETCH_RESPONSE, id, ...response}, {frameId: sender.frameId}); if (isThunderbird) { // In thunderbird some CSS is loaded on a chrome:// URL. // Thunderbird restricted Add-ons to load those URL's. From 08b594aa8a5a9505da7d5326b214c93512d77288 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Tue, 10 May 2022 14:33:41 -0700 Subject: [PATCH 731/892] Fix for bloomberg.com (#8857) - Fix top nav bar border color. - Invert dark magnifying glass icon, Live Now icon, and current tab indicator. --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c38cf5a6a3ba..0bc5b43c22c0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2319,6 +2319,20 @@ CSS ================================ +bloomberg.com + +INVERT +.navi-bar__button-icon +.navi-sections__item--LiveNow::before +.navi-sections__link--current::after + +CSS +.navi { + border-color: var(--darkreader-border--color-black) !important; +} + +================================ + blueberryroasters.pl INVERT From e574ff89481c90154dccdf8f8c9324182567ee96 Mon Sep 17 00:00:00 2001 From: Tiagoquix <30274161+Tiagoquix@users.noreply.github.com> Date: Wed, 11 May 2022 03:28:46 -0300 Subject: [PATCH 732/892] Add dark site (#8860) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 99b64602078f..71509771d219 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -886,6 +886,7 @@ staszic.waw.pl statbot.net stateofjs.com steam.tv +steamcharts.com steamchina.com steamcommunity.com steamdb.info From d697a7cee7ae8f9527a78c3904634d070859cb35 Mon Sep 17 00:00:00 2001 From: Subatomic Honda Civic <105336176+subatomic-honda-civic@users.noreply.github.com> Date: Wed, 11 May 2022 21:13:30 +0000 Subject: [PATCH 733/892] Add dark site (#8861) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 71509771d219..e1003cb46b23 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -955,6 +955,7 @@ tinyzonetv.to tio.run title-case-converter.vercel.app tmtheme-editor.herokuapp.com +tommytran.io toneden.io top.gg totalwarwarhammer.gamepedia.com From 4901ce85b03fbab7d11d8187f286e3cf1fa33c31 Mon Sep 17 00:00:00 2001 From: Subatomic Honda Civic <105336176+subatomic-honda-civic@users.noreply.github.com> Date: Wed, 11 May 2022 21:15:11 +0000 Subject: [PATCH 734/892] Add dark sites (#8863) --- src/config/dark-sites.config | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index e1003cb46b23..5f07e0ce0bdd 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -711,6 +711,12 @@ pic.cleoold.com pic8.co ping.pe piped.kavin.rocks +piped.mha.fi +piped.mint.lgbt +piped.moomoo.me +piped.privacy.com.de +piped.silkky.cloud +piped.tokhmi.xyz piracybank.org piskelapp.com pitokmm.it From 62e86f22be7b01d89bb9802101b67af6ea202a02 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 11 May 2022 23:20:25 +0200 Subject: [PATCH 735/892] Fix for fz-juelich.de (#8868) - Resolves #8867 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0bc5b43c22c0..98d7e309b557 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6872,6 +6872,15 @@ td { ================================ +fz-juelich.de + +CSS +body { + background-image: none !important; +} + +================================ + g1.com.br g1.globo.com From 1035f98f3b202958ce5d1bd1820e2ad8ba5ef589 Mon Sep 17 00:00:00 2001 From: Nico Mexis Date: Wed, 11 May 2022 23:49:57 +0200 Subject: [PATCH 736/892] Fix for studip.uni-passau.de (#8866) - Fix header. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 98d7e309b557..2010d5042832 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16007,6 +16007,15 @@ paper-radio-button ================================ +studip.uni-passau.de + +CSS +#layout_container > div { + background-image: none; +} + +================================ + studyflix.de INVERT From a5c31e1fab8bde05a1b8bfad48ba815c92503c92 Mon Sep 17 00:00:00 2001 From: Christian <79660414+christiankek@users.noreply.github.com> Date: Thu, 12 May 2022 13:02:03 -0400 Subject: [PATCH 737/892] Add dark site (#8869) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 5f07e0ce0bdd..5216e73705ec 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -389,6 +389,7 @@ ghidra-sre.org ghostpgp.com giantbomb.com gibber.cc +gibbu.github.io/ThemePreview/ gifrun.com gifyourgame.com giggl.app From 80820ce5774413f49c9346161fe52c3845dd56ce Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 12 May 2022 19:33:31 +0200 Subject: [PATCH 738/892] Fix for www.w3schools.com (#8873) - Resolves #8871 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2010d5042832..5914916e29dc 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -19512,6 +19512,13 @@ ul.AohpR > li > a { ================================ +www.w3schools.com + +IGNORE INLINE STYLE +.colorbox .innerbox + +================================ + www.windy.com INVERT From 0394ba9a7b5f5f93a737acc889c5e638f6821939 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 12 May 2022 21:18:31 +0200 Subject: [PATCH 739/892] Fix for tweakers.net (#8874) * Fix for tweakers.net * Fix formatting --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5914916e29dc..dd5b8ff8e138 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17505,6 +17505,14 @@ CSS box-shadow: none !important; } } +#contentArea, +#categoryBrowser, +#categoryBrowser .sublist, +#categoryBrowser .mainlist, +#categoryBrowser ul, +#categoryBrowser li { + border-color: ${#b2b9bd} !important; +} IGNORE IMAGE ANALYSIS #categoryBrowser li a From 599e4bd90a83e6555e127ede4ab86dd768737bf6 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Thu, 12 May 2022 14:27:58 -0700 Subject: [PATCH 740/892] Fix for allrecipes.com (#8875) Inversions for: Checkboxes in recipes, external link icon, ellipses icon in share button, email icon in login panel, search icon, favorite icon, recipe ratings bars, and logged-out profile image icon. --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index dd5b8ff8e138..a2c3ea376aad 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -753,6 +753,20 @@ INVERT ================================ +allrecipes.com + +INVERT +.checkbox-list-checkmark::before +.external-link-icon +.icon-ellipsis > svg +.icon-email-outline +.icon-search +.icon-share-favorite +.rating-bar-wrapper +img[src="/img/profile.png"] + +================================ + alphacoders.com INVERT From 4b532cc394726dc151f3934dfe8a6b7b47eca09e Mon Sep 17 00:00:00 2001 From: Subatomic Honda Civic <105336176+subatomic-honda-civic@users.noreply.github.com> Date: Fri, 13 May 2022 08:36:07 +0000 Subject: [PATCH 741/892] Add dark site (#8870) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 5216e73705ec..ce430857c034 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -764,6 +764,7 @@ proxy.vulpes.one psi.cynicaloptimist.me psyoptions.io ptt.cc +pussthecat.org pxseu.com pylon.bot qbraid.com From b109e1b72f604b0c9813a394d99677df1f5f8eea Mon Sep 17 00:00:00 2001 From: Pavel Moiseenko <19418601+rakleed@users.noreply.github.com> Date: Fri, 13 May 2022 17:25:22 +0300 Subject: [PATCH 742/892] Fix for getpocket.com (#8881) - Specify the rule. --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a2c3ea376aad..e63c2a827483 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7116,7 +7116,7 @@ login-container { getpocket.com CSS -a[rel="noopener noreferrer"] { +p a[rel="noopener noreferrer"] { text-shadow: none !important; background-image: linear-gradient(to top,transparent,transparent 1px,var(--darkreader-text--color-canvas) 1px,var(--darkreader-text--color-canvas) 2px,transparent 2px) !important; } From 99378ab3f8ccb8f16ba5b74bce910994d8a6c1be Mon Sep 17 00:00:00 2001 From: threeoh6000 <98581137+threeoh6000@users.noreply.github.com> Date: Sat, 14 May 2022 20:17:21 +0000 Subject: [PATCH 743/892] Add dark site (#8883) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index ce430857c034..8335c3f26bd9 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -182,6 +182,7 @@ codesandbox.io codestackr.com codingame.com coinpot.co +colean.cc comicextra.com comicpunch.net conficturaindustries.com From d37f414f335b404d5ad51aeb89d3f49fc02919f5 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Sun, 15 May 2022 04:17:54 +0800 Subject: [PATCH 744/892] Fix for juwai.com (#8884) Invert logos. --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e63c2a827483..2566b34dde5f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9208,6 +9208,14 @@ INVERT ================================ +juwai.com + +INVERT +.c-header__logo +.c-responsive-navigation__logo + +================================ + k-report.net CSS From e218b883ff3657222327f3c85cf695ffa6a17505 Mon Sep 17 00:00:00 2001 From: wzxu Date: Sun, 15 May 2022 04:23:47 +0800 Subject: [PATCH 745/892] Fix for porkbun.com (#8885) - Fix handshake image. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2566b34dde5f..beb5e888672f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13510,6 +13510,13 @@ INVERT ================================ +porkbun.com + +INVERT +img[src="/images/handshake-icon.svg"] + +================================ + portal.qiniu.com INVERT From 5c0f5f1f5999e4404475910ed50cdd5e8874a6b9 Mon Sep 17 00:00:00 2001 From: Navinn Ravindaran Date: Sat, 14 May 2022 16:32:19 -0400 Subject: [PATCH 746/892] Fix for acorn.utoronto.ca (#8888) - Add more selectors. --- src/config/dynamic-theme-fixes.config | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index beb5e888672f..af42719e8fc3 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -465,7 +465,9 @@ CSS .acorn-classic.page-container .academic-history .credit-earned-section, .acorn-classic.page-container .academic-history .average-section, .acorn-classic.page-container .academic-history .courses, -.acorn-classic.page-container .academic-history .coursesHeader { +.acorn-classic.page-container .academic-history .coursesHeader, +.acorn-classic.page-container .academic-history .academic-history-report .gpa-listing, +.acorn-classic.page-container .academic-history-recent table .emph { color: var(--darkreader-neutral-text) !important; } From 5f932b0fd2dbb120f54fd93a6470ca5a89711f4c Mon Sep 17 00:00:00 2001 From: Valentin Heidelberger <31535155+va1entin@users.noreply.github.com> Date: Sat, 14 May 2022 22:37:23 +0200 Subject: [PATCH 747/892] Remove non-dark site (#8889) --- src/config/dark-sites.config | 1 - 1 file changed, 1 deletion(-) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 8335c3f26bd9..11bec72336ec 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -1007,7 +1007,6 @@ v3rmillion.net v7player.wostreaming.net v8.dev vakhtangov.ru -valh.io valvestore.forfansbyfans.com vancedapp.com vanillatweaks.net From 34acea2ab897884a51461453faccc9b715b14052 Mon Sep 17 00:00:00 2001 From: Pat Nafarrete Date: Sat, 14 May 2022 16:43:38 -0400 Subject: [PATCH 748/892] Fix for icrc.org (#8886) - Fix logo. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index af42719e8fc3..905765a191f6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8358,6 +8358,16 @@ CSS ================================ +icrc.org + +CSS +.logo, +.logo img { + background-color: #fff !important; +} + +================================ + ieee.org INVERT From 5150941d0fc2475ba9b6bc537d3ade52ceeaec36 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 15 May 2022 15:40:17 +0200 Subject: [PATCH 749/892] Trim CSSURL before using `^ $`-regex. (#8892) - Resolves #8890 --- CHANGELOG.md | 4 ++++ src/inject/dynamic-theme/css-rules.ts | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 80b9eae5a456..eaa8911479c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## Unreleased + +- Fix CSS imports that contains `url(...)` and ends with `screen`. + ## 4.9.50 (May 1, 2022) - Fix working in Firefox Nightly 101. diff --git a/src/inject/dynamic-theme/css-rules.ts b/src/inject/dynamic-theme/css-rules.ts index 79fba78a8e25..464d1c6e260a 100644 --- a/src/inject/dynamic-theme/css-rules.ts +++ b/src/inject/dynamic-theme/css-rules.ts @@ -92,7 +92,7 @@ export const cssURLRegex = /url\((('.+?')|(".+?")|([^\)]*?))\)/g; export const cssImportRegex = /@import\s*(url\()?(('.+?')|(".+?")|([^\)]*?))\)? ?(screen)?;?/gi; export function getCSSURLValue(cssURL: string) { - return cssURL.replace(/^url\((.*)\)$/, '$1').trim().replace(/^"(.*)"$/, '$1').replace(/^'(.*)'$/, '$1'); + return cssURL.trim().replace(/^url\((.*)\)$/, '$1').trim().replace(/^"(.*)"$/, '$1').replace(/^'(.*)'$/, '$1'); } export function getCSSBaseBath(url: string) { From 9a402764579097bb877cf2f215df9583610b61d2 Mon Sep 17 00:00:00 2001 From: linsui <36977733+linsui@users.noreply.github.com> Date: Sun, 15 May 2022 13:43:41 +0000 Subject: [PATCH 750/892] Fix doc.qt.io (#8891) - Fix background. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 905765a191f6..0aeb527f2c47 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4958,6 +4958,15 @@ header a[href="/"] svg { ================================ +doc.qt.io + +CSS +:root { + --content-bg-color: var(--darkreader-neutral-background) !important; +} + +================================ + docs.codacy.com INVERT From 4afd5e0f733cecd79312a3fe6685183c1845e8bf Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 15 May 2022 15:48:02 +0200 Subject: [PATCH 751/892] Fix for startech.com.bd (#8882) - Resolves for startech.com.bd --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0aeb527f2c47..8ba03c0a071a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15801,6 +15801,13 @@ img[alt="logo"] ================================ +startech.com.bd + +INVERT +#nav-toggler + +================================ + startpage.com INVERT From 738e68ce8b765948f76b6a4ffd53d9ad98d1d5d3 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 15 May 2022 15:50:01 +0200 Subject: [PATCH 752/892] Add changelog (#8893) - For https://github.com/darkreader/darkreader/pull/8855 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eaa8911479c6..75fb6c851624 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## Unreleased - Fix CSS imports that contains `url(...)` and ends with `screen`. +- Send network response to the correct frame in tab. ## 4.9.50 (May 1, 2022) From a57fc1e899adea6a8a16eb3a4a050bce876a8d0d Mon Sep 17 00:00:00 2001 From: Arhun Saday Date: Sat, 21 May 2022 15:22:31 +0200 Subject: [PATCH 753/892] Add dark site (#8895) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 11bec72336ec..e68c08a8c54c 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -497,6 +497,7 @@ jakubkaczor.github.io jbzd.com.pl jekyllrb.com jellymar.io +jeusto.com jhey.dev jigsawpuzzles.io jmoore.dev From 497081c01e614ebcdb372b90a8b076c40a640700 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 21 May 2022 13:22:51 +0000 Subject: [PATCH 754/892] Remove cast for crypto. (#8925) - Type declarations have been updated and we don't need any cast anymore in order to use `randomUUID()`. --- src/utils/uid.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/utils/uid.ts b/src/utils/uid.ts index 639b5f4d3a43..fd8f4e1d6b1d 100644 --- a/src/utils/uid.ts +++ b/src/utils/uid.ts @@ -4,8 +4,7 @@ function hexify(number: number) { export function generateUID() { if ('randomUUID' in crypto) { - // TODO: remove any cast once type declarations are updated - const uuid = (crypto as any).randomUUID(); + const uuid = crypto.randomUUID(); return uuid.substring(0, 8) + uuid.substring(9, 13) + uuid.substring(14, 18) + uuid.substring(19, 23) + uuid.substring(24); } From 9ffb0079b3e7e8475133b2066015725e6fd1c793 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Sat, 21 May 2022 06:31:49 -0700 Subject: [PATCH 755/892] Fix for merriam-webster.com (#8897) - Fix logo. --- src/config/dynamic-theme-fixes.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8ba03c0a071a..026463200b21 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10952,6 +10952,11 @@ merriam-webster.com INVERT circle.outline.Oval +CSS +.logo-cnt path[fill="#004990"] { + fill: ${#0085e0} !important; +} + ================================ mesa3d.org From ae1610a1796c977d9533c8b0eb6bc6f4a9dabd9a Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 21 May 2022 13:33:25 +0000 Subject: [PATCH 756/892] Fix for simepar.br (#8926) - Resolves #8896 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 026463200b21..7a808e4f1b84 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15170,6 +15170,15 @@ img[alt="Niantic"] ================================ +simepar.br + +CSS +.highcharts-text-outline { + display: none !important; +} + +================================ + simplemachines.org CSS From 8907064e957514694aeacef3293b7d942b2bbb95 Mon Sep 17 00:00:00 2001 From: Tiagoquix <30274161+Tiagoquix@users.noreply.github.com> Date: Sat, 21 May 2022 10:34:07 -0300 Subject: [PATCH 757/892] Add dark site (#8898) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index e68c08a8c54c..f8f6ad2291ad 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -101,6 +101,7 @@ bequiet.com bestblackhatforum.com beta.crunchyroll.com beta.destinyitemmanager.com +betteranime.net betterdiscord.app betterttv.com bherila.net From 9f9e0f7961bf2f9ba048d8ad464b98228fc0da87 Mon Sep 17 00:00:00 2001 From: Baran <53825631+BaRaN6161TURK@users.noreply.github.com> Date: Sat, 21 May 2022 16:38:33 +0300 Subject: [PATCH 758/892] Add dark sites (#8902) --- src/config/dark-sites.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index f8f6ad2291ad..15435ffc92f7 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -513,6 +513,8 @@ json-diff.com justfive.news kadantiscam.netlify.app kaoskrew.org +kbh.games +kbhgames.com keezersquest.nl kfocus.org killabee-gaming.com From 6f2f6e25e778a57c0daea31ddbc960839e3d14d5 Mon Sep 17 00:00:00 2001 From: Gitoffthelawn Date: Sat, 21 May 2022 06:47:03 -0700 Subject: [PATCH 759/892] Fix for webmd.com (#8905) - Fix logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7a808e4f1b84..c086f228450e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -18449,6 +18449,13 @@ h5.list-group-item-heading > svg ================================ +webmd.com + +INVERT +.global-nav-logo + +================================ + webtoons.com CSS From 220733770d8deb29de9aa73232fd9a61e4b66b68 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Sat, 21 May 2022 08:00:03 -0600 Subject: [PATCH 760/892] Fix for frame.work (#8918) - Fix logo. --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c086f228450e..9634e239f142 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6758,6 +6758,7 @@ frame.work INVERT a[title="Framework Home"] > img[alt="Framework"] +#site-logo ================================ From 1d4dc5ca5b2c609ff35ff546c0ce1ed9fdbb7b9c Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 21 May 2022 14:19:00 +0000 Subject: [PATCH 761/892] Fix for containertoolbx.org (#8927) - Resolves #8922 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9634e239f142..3f84bb9d3507 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3738,6 +3738,15 @@ img[src*="rotate"] ================================ +containertoolbx.org + +CSS +body, img, video, iframe { + filter: none !important; +} + +================================ + convertio.co INVERT From d8466a09a90dd9fd1eb17f85ff9ef74bd07514c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Paw=C5=82owski?= <59766830+pawl0wski@users.noreply.github.com> Date: Sat, 21 May 2022 16:19:18 +0200 Subject: [PATCH 762/892] Fix for bulldogjob.pl (#8909) - Invert logo. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 3f84bb9d3507..7922bb4d2de9 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2664,6 +2664,15 @@ CSS ================================ +bulldogjob.pl + +INVERT +img[alt~="Bulldogjob"] +img[src="/bulldog.guide.svg"] +img[src="/bulldog.tte.icon.svg"] + +================================ + bulldogjob.pl/proxied/job-offers IGNORE IMAGE ANALYSIS From f66c489e721829860bfe454d43a6fe079139bae8 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 21 May 2022 14:21:11 +0000 Subject: [PATCH 763/892] Fix for rostov.tele2.ru (#8928) - Resolves #8923 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7922bb4d2de9..c15e1d077021 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14483,6 +14483,13 @@ img[src="/static/core/images/logo.svg"] ================================ +rostov.tele2.ru + +INVERT +.header-navbar-logo + +================================ + rottentomatoes.com IGNORE IMAGE ANALYSIS From abf9257c6a7d0b04ca0e317eaefe7bfe0fec4569 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Paw=C5=82owski?= <59766830+pawl0wski@users.noreply.github.com> Date: Sat, 21 May 2022 16:31:31 +0200 Subject: [PATCH 764/892] Fix for edukacja.olsztyn.eu (#8910) - Invert footers and headers - Remove the white background when logging out - Invert logout dialog - Invert the bright images - Invert black text --- src/config/dynamic-theme-fixes.config | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c15e1d077021..e5e37d94f629 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10279,6 +10279,20 @@ IGNORE IMAGE ANALYSIS ================================ +logowanie.edukacja.olsztyn.eu + +INVERT +img[alt="Nagłówek strony"] +img#logo +img[src="/Resources/wylogowano-plansza.jpg"] + +CSS +body { + background-image: none !important; +} + +================================ + lol.fandom.com CSS @@ -13562,6 +13576,17 @@ img[src="/images/handshake-icon.svg"] ================================ +portal.edukacja.olsztyn.eu + +INVERT +div.main +div#welcome-img +#pageheader +div#ctl00_TheFooter img +a.link-gray > p + +================================ + portal.qiniu.com INVERT From 2d3b3f4bbeb0f9c58f8e645b8f944cb66d99f128 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 21 May 2022 19:59:07 +0000 Subject: [PATCH 765/892] Use Shunting-Yard algorithm for lowering calc. (#8929) - Currently we were using a hacky made up parser(made by me) to handle simple cases of `calc(...)` and safely evaluate them. However this doesn't handle all cases and updating this hacky function to also handle precede is not great for maintenance. - This patch fixes that by using the [Shunting-Yard algorithm](https://en.wikipedia.org/wiki/Shunting_yard_algorithm). Which is a small but powerful parser & evaluator which converts infix notation and transform it into RPN(which is really really easy and fast to evaluate). - Resolves #8894 --- CHANGELOG.md | 1 + src/utils/color.ts | 103 +++++----------------------- src/utils/math-eval.ts | 100 +++++++++++++++++++++++++++ tests/inject/dynamic/color.tests.ts | 11 +++ tests/unit/utils/color.tests.ts | 1 + 5 files changed, 132 insertions(+), 84 deletions(-) create mode 100644 src/utils/math-eval.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 75fb6c851624..53a5504958e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ - Fix CSS imports that contains `url(...)` and ends with `screen`. - Send network response to the correct frame in tab. +- Handle more cases lowering `calc(...)` by using [Shunting Yard algorithm](https://en.wikipedia.org/wiki/Shunting_yard_algorithm). ## 4.9.50 (May 1, 2022) diff --git a/src/utils/color.ts b/src/utils/color.ts index 0ce39d0fd7ab..bf869cc80b46 100644 --- a/src/utils/color.ts +++ b/src/utils/color.ts @@ -1,3 +1,6 @@ +import {evalMath} from './math-eval'; +import {getParenthesesRange} from './text'; + export interface RGBA { r: number; g: number; @@ -246,15 +249,6 @@ function getSystemColor($color: string) { }; } -// Check if the char is a digit. -const isCharDigit = (char: string) => char >= '0' && char <= '9'; - -// Get the amount of digits their are in a number. -// f(5) => 1 -// f(123) => 3 -// f(912412) => 6 -const getAmountOfDigits = (number: number) => Math.floor(Math.log10(number)) + 1; - // lowerCalcExpression is a helper function that tries to remove `calc(...)` // expressions from the given string. It can only lower expressions to a certain // degree so we can keep this function easy and simple to understand. @@ -263,90 +257,31 @@ export function lowerCalcExpression(color: string): string { // the calc(...) expression. let searchIndex = 0; + // Replace the content between two indices. const replaceBetweenIndices = (start: number, end: number, replacement: string) => { color = color.substring(0, start) + replacement + color.substring(end); }; - // Because we're talking about numbers within variables - // We assume that the max length of such number is 3. - const getNumber = () => { - let resultNumber = 0; - for (let i = 1; i < 4; i++) { - const char = color[searchIndex + i]; - // If we hit a whitespace that means we hit the end of the number. - if (char === ' ') { - break; - } - // Check if the current char is numeric. - if (isCharDigit(char)) { - // Ensure that the current number is multipled by 10 - // So that the "first" digit on that number is a 0 - // Which is going to be filled by the `char`. - resultNumber *= 10; - resultNumber += Number(char); - } else { - break; - } - } - const lenDigits = getAmountOfDigits(resultNumber); - searchIndex += lenDigits; - - // We've now got the first number, let's try to see if this number - // a percentage, which is the currently only supported element type. - const possibleType = color[searchIndex + 1]; - if (possibleType !== '%') { - return; - } - searchIndex++; - return resultNumber; - }; - - while ((searchIndex = color.indexOf('calc(')) !== 0) { - const startIndex = searchIndex; - searchIndex += 4; - // Get the first number - const firstNumber = getNumber(); - - // No first number? Let's not break this while loop. - // And return the current state of color variable. - if (!firstNumber) { - break; - } - - // The char after the xxx% should be a whitespace. - if (color[searchIndex + 1] !== ' ') { + // Run this code until it doesn't find any `calc(...)`. + while ((searchIndex = color.indexOf('calc(')) !== -1) { + // Get the parantheses ranges of `calc(...)` + const range = getParenthesesRange(color, searchIndex); + if (!range) { break; } - searchIndex++; - const operation = color[searchIndex + 1]; - // Only allow - and + - if (operation !== '+' && operation !== '-') { - break; - } - searchIndex++; + // Get the content between the parentheses. + let slice = color.slice(range.start + 1, range.end - 1); + // Does the content include a percentage? + const includesPercentage = slice.includes('%'); + // Remove all percentages. + slice = slice.split('%').join(''); - // The char after the xxx% -/+ should be a whitespace. - if (color[searchIndex + 1] !== ' ') { - break; - } - searchIndex++; - - // Get the second number - const secondNumber = getNumber(); - if (!secondNumber) { - break; - } - // Create the replacement string. - let replacement: string; - if (operation === '+') { - replacement = `${firstNumber + secondNumber}%`; - } else { - replacement = `${firstNumber - secondNumber}%`; - } + // Pass the content to the evalMath library and round it's output. + const output = Math.round(evalMath(slice)); - // Replace the string between the indices. - replaceBetweenIndices(startIndex, searchIndex + 2, replacement); + // Replace `calc(...)` with the result. + replaceBetweenIndices(range.start - 4, range.end, output + (includesPercentage ? '%' : '')); } return color; } diff --git a/src/utils/math-eval.ts b/src/utils/math-eval.ts new file mode 100644 index 000000000000..66e6b63932c4 --- /dev/null +++ b/src/utils/math-eval.ts @@ -0,0 +1,100 @@ +// evalMath is a function that's able to evaluates a mathematical expression and return it's ouput. +// +// Internally it uses the Shunting Yard algoritm. First it produces a reverse polish notation(RPN) stack. +// Example: 1 + 2 * 3 -> [1, 2, 3, *, +] which with parentheses means 1 (2 3 *) + +// +// Then it evaluates the RPN stack and returns the output. +export function evalMath(expression: string): number { + // Stack where operators & numbers are stored in RPN. + const rpnStack: string[] = []; + // The working stack where new tokens are pushed. + const workingStack: string[] = []; + + let lastToken: string; + // Iterate over the expression. + for (let i = 0, len = expression.length; i < len; i++) { + const token = expression[i]; + + // Skip if the token is empty or a whitespace. + if (!token || token === ' ') { + continue; + } + + // Is the token a operator? + if (operators.has(token)) { + const op = operators.get(token); + + // Go trough the workingstack and determine it's place in the workingStack + while (workingStack.length) { + const currentOp = operators.get(workingStack[0]); + if (!currentOp) { + break; + } + + // Is the current operation equal or less than the current operation? + // Then move that operation to the rpnStack. + if (op.lessOrEqualThan(currentOp)) { + rpnStack.push(workingStack.shift()); + } else { + break; + } + } + // Add the operation to the workingStack. + workingStack.unshift(token); + // Otherwise was the last token a operator? + } else if (!lastToken || operators.has(lastToken)) { + rpnStack.push(token); + // Otherwise just append the result to the last token(e.g. multiple digits numbers). + } else { + rpnStack[rpnStack.length - 1] += token; + } + // Set the last token. + lastToken = token; + } + + // Push the working stack on top of the rpnStack. + rpnStack.push(...workingStack); + + // Now evaluate the rpnStack. + const stack: number[] = []; + for (let i = 0, len = rpnStack.length; i < len; i++) { + const op = operators.get(rpnStack[i]); + if (op) { + // Get the arguments of for the operation(first two in the stack). + const args = stack.splice(0, 2); + // Excute it, because of reverse notation we first pass second item then the first item. + stack.push(op.exec(args[1], args[0])); + } else { + // Add the number to the stack. + stack.unshift(parseFloat(rpnStack[i])); + } + } + + return stack[0]; +} + +// Operator class defines a operator that can be parsed & evaluated by evalMath. +class Operator { + private precendce: number; + private execMethod: (left: number, right: number) => number; + + constructor(precedence: number, method: (left: number, right: number) => number) { + this.precendce = precedence; + this.execMethod = method; + } + + public exec(left: number, right: number): number { + return this.execMethod(left, right); + } + + public lessOrEqualThan(op: Operator) { + return this.precendce <= op.precendce; + } +} + +const operators: Map = new Map([ + ['+', new Operator(1, (left: number, right: number): number => left + right)], + ['-', new Operator(1, (left: number, right: number): number => left - right)], + ['*', new Operator(2, (left: number, right: number): number => left * right)], + ['/', new Operator(2, (left: number, right: number): number => left / right)], +]); diff --git a/tests/inject/dynamic/color.tests.ts b/tests/inject/dynamic/color.tests.ts index b54b37a2e531..db29439e8024 100644 --- a/tests/inject/dynamic/color.tests.ts +++ b/tests/inject/dynamic/color.tests.ts @@ -100,4 +100,15 @@ describe('COLOR PARSING', () => { createOrUpdateDynamicTheme(theme, null, false); expect(getComputedStyle(container.querySelector('h1')).backgroundImage).toBe('-webkit-linear-gradient(bottom, rgb(24, 26, 27) 15%, rgb(29, 32, 33) 85%)'); }); + + it('should handle complex calc(...) cases', () => { + container.innerHTML = multiline( + '', + '

Weird color Power!

', + ); + createOrUpdateDynamicTheme(theme, null, false); + expect(getComputedStyle(container.querySelector('h1')).backgroundColor).toBe('rgb(28, 31, 32)'); + }); }); diff --git a/tests/unit/utils/color.tests.ts b/tests/unit/utils/color.tests.ts index a0da7d9476e7..ca89dade7554 100644 --- a/tests/unit/utils/color.tests.ts +++ b/tests/unit/utils/color.tests.ts @@ -98,4 +98,5 @@ test('Color conversion', () => { test('Lower calc expressions', () => { expect(lowerCalcExpression('hsl(0, 0%, calc(95% - 3%))')).toEqual('hsl(0, 0%, 92%)'); expect(lowerCalcExpression('hsl(0, calc(25% + 12%), calc(95% - 3%))')).toEqual('hsl(0, 37%, 92%)'); + expect(lowerCalcExpression('rgb(calc(216.75 + 153 * .15), calc(216.75 + 205 * .15), calc(216.75 + 255 * .15))')).toEqual('rgb(240, 248, 255)'); }); From 0da9588e9285d3679577b56aa380a79bef80bb3a Mon Sep 17 00:00:00 2001 From: DavedZrod <90824958+DavedZrod@users.noreply.github.com> Date: Sun, 22 May 2022 15:57:58 +0700 Subject: [PATCH 766/892] Fix for gamepress.gg(#8924) - Fix tierlist. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e5e37d94f629..c76eb2569f13 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6948,6 +6948,15 @@ CSS ================================ +gamepress.gg + +CSS +.TLW-tier-charname { + color: ${black} !important; +} + +================================ + gameranx.com CSS From f64bf148f9177c9bb9198bd53b7857d9128d52af Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Mon, 23 May 2022 22:37:38 +0100 Subject: [PATCH 767/892] Display news icon when available (#8941) --- src/background/extension.ts | 5 +++++ src/background/icon-manager.ts | 5 +++++ src/background/newsmaker.ts | 10 +++++----- src/definitions.d.ts | 2 ++ src/ui/popup/components/news/index.tsx | 4 ++++ src/ui/popup/components/news/style.less | 18 ++++++++++++++++++ 6 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/background/extension.ts b/src/background/extension.ts index f76e20951d45..91954e573064 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -397,6 +397,11 @@ export class Extension implements ExtensionState { return; } + if (latestNews && latestNews.badge && !latestNews.read) { + this.icon.showBadge(latestNews.badge); + return; + } + this.icon.hideBadge(); } diff --git a/src/background/icon-manager.ts b/src/background/icon-manager.ts index 0dea7517704d..a9bf19069d3c 100644 --- a/src/background/icon-manager.ts +++ b/src/background/icon-manager.ts @@ -39,6 +39,11 @@ export default class IconManager { chrome.browserAction.setBadgeText({text: '!'}); } + showBadge(text: string) { + chrome.browserAction.setBadgeBackgroundColor({color: '#e96c4c'}); + chrome.browserAction.setBadgeText({text}); + } + hideBadge() { chrome.browserAction.setBadgeText({text: ''}); } diff --git a/src/background/newsmaker.ts b/src/background/newsmaker.ts index 851bc7285cb5..79bd1d0c1372 100644 --- a/src/background/newsmaker.ts +++ b/src/background/newsmaker.ts @@ -72,12 +72,12 @@ export default class Newsmaker { private async getNews() { try { const response = await fetch(`https://darkreader.github.io/blog/posts.json`, {cache: 'no-cache'}); - const $news: Array<{id: string; date: string; headline: string; important?: boolean}> = await response.json(); + const $news: Array & {date: string}> = await response.json(); const readNews = await this.getReadNews(); - const news: News[] = $news.map(({id, date, headline, important}) => { - const url = getBlogPostURL(id); - const read = this.isRead(id, readNews); - return {id, date, headline, url, important, read}; + const news: News[] = $news.map((n) => { + const url = getBlogPostURL(n.id); + const read = this.isRead(n.id, readNews); + return {...n, url, read}; }); for (let i = 0; i < news.length; i++) { const date = new Date(news[i].date); diff --git a/src/definitions.d.ts b/src/definitions.d.ts index 186187500ca8..994c3e2652db 100644 --- a/src/definitions.d.ts +++ b/src/definitions.d.ts @@ -188,4 +188,6 @@ export interface News { headline: string; important: boolean; read?: boolean; + badge?: string; + icon?: string; } diff --git a/src/ui/popup/components/news/index.tsx b/src/ui/popup/components/news/index.tsx index 18ff6dce8511..f496ae2b1706 100644 --- a/src/ui/popup/components/news/index.tsx +++ b/src/ui/popup/components/news/index.tsx @@ -37,9 +37,13 @@ export function NewsGroup({news, expanded, onNewsOpen, onClose}: NewsProps) { 'news__event': true, 'news__event--unread': !event.read, 'news__event--important': event.important, + 'news__event--has-icon': event.icon, }} > onNewsOpen(event)} href={event.url} target="_blank" rel="noopener noreferrer"> + {event.icon ? + + : null} {formattedDate} diff --git a/src/ui/popup/components/news/style.less b/src/ui/popup/components/news/style.less index 776404605c62..a55c41f899bf 100644 --- a/src/ui/popup/components/news/style.less +++ b/src/ui/popup/components/news/style.less @@ -1,5 +1,7 @@ @import "../../../theme"; +@size-news-icon: 2.5rem; + .news { bottom: @size-control-inner + @size-border + @popup-content-padding; box-sizing: border-box; @@ -97,6 +99,22 @@ } } + &__icon { + background-position: center; + background-repeat: no-repeat; + background-size: contain; + display: inline-block; + height: @size-news-icon; + left: 0; + position: absolute; + top: calc(50% - @size-news-icon / 2); + width: @size-news-icon; + } + + &--has-icon { + padding-left: @size-news-icon + @indent-small; + } + &--unread { font-weight: bold; From 3c829b9fa6c0bdaa57389a10add5e94b2a4b46e7 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Wed, 25 May 2022 12:37:51 -0600 Subject: [PATCH 768/892] Fix for kali.org (#8942) - Remove light background. --- src/config/dynamic-theme-fixes.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c76eb2569f13..d549c07ba6b4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9313,6 +9313,11 @@ IGNORE IMAGE ANALYSIS kali.org +CSS +#kali-platforms .card > div { + background-image: none !important; +} + IGNORE IMAGE ANALYSIS #banner-logo From c1d93e40a6dc758a524a18e7bfcd52cdfcbb3613 Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Wed, 25 May 2022 12:50:29 -0600 Subject: [PATCH 769/892] Fix for understandingwar.org (#8887) - Ignore image analysis throughout site to fix images. - Set text in header search bar and top menu to be the correct color. Not using ${color} to avoid messing with the site's color scheme. - Remove bright background images from posts and various other areas of the site. - Force white background behind transparent ISW logos on home page and publications sections. --- src/config/dynamic-theme-fixes.config | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d549c07ba6b4..bf670b407722 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -17787,6 +17787,30 @@ a.logo[title="United Nations"] ================================ +understandingwar.org + +CSS +#edit-search-block-form--2, +#nice-menu-1 > li > a { + color: var(--darkreader-neutral-background) !important; + text-shadow: none !important; +} +#mainwrap, +.secondarybox, +.content, +.view-filters { + background-image: none !important; +} +img[src*="ISW\%20LOGO"], +img[src*="ISW\%20Logo"] { + background-color: white !important; +} + +IGNORE IMAGE ANALYSIS +* + +================================ + uokik.gov.pl INVERT From 7a8d14308518a4921488ca07f62d2343984fee98 Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Wed, 25 May 2022 13:53:53 -0500 Subject: [PATCH 770/892] Add dark site (#8949) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 15435ffc92f7..57eda7f67d4c 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -544,6 +544,7 @@ leakth.is lecantiche.com lemmi.no letterboxd.com +libreboot.org lightweightpdf.com limeshark.dev/editor link.brawlstars.com/invite From eed3b5516c5e321b509c69e313a60992833182f4 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 25 May 2022 18:54:31 +0000 Subject: [PATCH 771/892] Fix for music.apple.com (#8956) - Resolves #8948 --- src/config/dynamic-theme-fixes.config | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index bf670b407722..06c410ab00db 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11695,10 +11695,10 @@ CSS music.apple.com INVERT -.web-navigation__logo-link.button-reset.ember-view -.native-upsell__logo -.native-upsell__action -.dt-search-box__icon +body:not(.dark-mode) .web-navigation__logo-link.button-reset.ember-view +body:not(.dark-mode) .native-upsell__logo +body:not(.dark-mode) .native-upsell__action +body:not(.dark-mode) .dt-search-box__icon .web-chrome-playback-controls .dt-media-contextual-menu .web-chrome-playback-lcd__contextual-badge--non-marquee.web-chrome-playback-lcd__contextual-badge From 786b0650518ffa64572311295393ab1476d82cd9 Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Wed, 25 May 2022 13:56:04 -0500 Subject: [PATCH 772/892] Remove non-dark sites (#8950) - Malicious sites. --- src/config/dark-sites.config | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 57eda7f67d4c..45b7490e56f9 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -556,8 +556,6 @@ listen.moe livesplit.org loadout.tf lolesports.com -lollilol.cf -lollilol.ml lollilol.xyz lookmovie.ag looskie.com From 4dd2fb9e15036ea71705af7241050a6bd98ebfa0 Mon Sep 17 00:00:00 2001 From: HISEROD <94516882+HISEROD@users.noreply.github.com> Date: Wed, 25 May 2022 13:58:51 -0500 Subject: [PATCH 773/892] Add dark site (#8940) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 45b7490e56f9..a9fd45e8dbe6 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -450,6 +450,7 @@ herodamage.com hexiro.me hidive.com himovies.to +hiserod.github.io hiveos.farm hoarding.me hostedtalk.net From 6adfb068fc84233b4ee2b30e651a7273c9e4b08b Mon Sep 17 00:00:00 2001 From: "@cnagy" <3061769+c-nagy@users.noreply.github.com> Date: Wed, 25 May 2022 13:24:21 -0600 Subject: [PATCH 774/892] Add dark sites (#8934) --- src/config/dark-sites.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index a9fd45e8dbe6..8ac1ec56dfbd 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -348,6 +348,7 @@ florr.io fluxpoint.dev flyordie.io fmovies.to +food-le.co fortnite-api.com forum.cswarzone.com forum.lastos.org @@ -882,6 +883,7 @@ slider.kz slippi.gg slither.io snazzah.com +somafm.com spacebattles.com spacestationgaming.com spark.lucko.me From f409072d9a7c9003aaf9d840f3a40b0f0ee0827f Mon Sep 17 00:00:00 2001 From: Erik Johnson Date: Wed, 25 May 2022 16:25:42 -0500 Subject: [PATCH 775/892] Fix for atlassian.net (#8914) - Fix issues list. --- src/config/dynamic-theme-fixes.config | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 06c410ab00db..5b4a076872e4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1557,6 +1557,9 @@ code:first-of-type { box-shadow: 0 0 4px ${rgba(3,9,15,0.15)} !important; background-color: ${rgba(3, 9, 15, 0.02)} !important; } +.sc-186t4q4-1 { + background-color: ${rgba(3, 9, 15, 0.02)} !important; +} #ak-main-content { background-color: var(--darkreader-neutral-background) !important; } @@ -5218,7 +5221,7 @@ div[role="button"][aria-disabled="true"] > div { filter: invert(50%) !important; } #request-access-icon { - filter: invert(93.7%) hue-rotate(180deg) contrast(90.6%) !important + filter: invert(93.7%) hue-rotate(180deg) contrast(90.6%) !important } :root { --dt-secondary-container: ${#f1f3f4} !important; @@ -7769,7 +7772,7 @@ div[style="top: 0px;"] > div:first-child:not([style^="background"]) > :last-chil CSS #app-container > #modal-dialog > div > div > div > div > button[jsaction="modal.close"] { - background-color: $var(--darkreader-neutral-background) !important; + background-color: $var(--darkreader-neutral-background) !important; } IGNORE IMAGE ANALYSIS @@ -17884,7 +17887,7 @@ upwork.com CSS .profile-completeness-nudges-tiles-alternative .carousel-wrapper .up-icon svg { - filter: drop-shadow(0 0 0px var(--white)) drop-shadow(0 0 0px var(--white)); + filter: drop-shadow(0 0 0px var(--white)) drop-shadow(0 0 0px var(--white)); } .up-skill-container .up-btn.up-btn-next::before, .up-skill-container .up-btn.up-btn-prev::before { From 5ce80f61e205c87d9619882a02a903ae040a1225 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Thu, 26 May 2022 21:39:36 +0100 Subject: [PATCH 776/892] v5 News section (#8953) --- src/background/extension.ts | 8 +- src/background/icon-manager.ts | 5 - src/background/messenger.ts | 5 + src/background/newsmaker.ts | 50 ++++++++-- src/definitions.d.ts | 3 +- src/ui/connect/connector.ts | 4 + src/ui/popup/components/news/index.tsx | 1 - src/ui/popup/index.tsx | 7 ++ src/ui/popup/news-section/index.tsx | 79 ++++++++++++--- src/ui/popup/news-section/style.less | 128 ++++++++++++++++++++++--- src/utils/message.ts | 1 + 11 files changed, 246 insertions(+), 45 deletions(-) diff --git a/src/background/extension.ts b/src/background/extension.ts index 91954e573064..12d43c39060a 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -250,6 +250,7 @@ export class Extension implements ExtensionState { setShortcut: ({command, shortcut}) => this.setShortcut(command, shortcut), toggleActiveTab: async () => this.toggleActiveTab(), markNewsAsRead: async (ids) => await this.news.markAsRead(...ids), + markNewsAsDisplayed: async (ids) => await this.news.markAsDisplayed(...ids), onPopupOpen: () => this.popupOpeningListener && this.popupOpeningListener(), loadConfig: async (options) => await this.config.load(options), applyDevDynamicThemeFixes: (text) => this.devtools.applyDynamicThemeFixes(text), @@ -392,12 +393,7 @@ export class Extension implements ExtensionState { } const latestNews = news.length > 0 && news[0]; - if (latestNews && latestNews.important && !latestNews.read) { - this.icon.showImportantBadge(); - return; - } - - if (latestNews && latestNews.badge && !latestNews.read) { + if (latestNews && latestNews.badge && !latestNews.read && !latestNews.displayed) { this.icon.showBadge(latestNews.badge); return; } diff --git a/src/background/icon-manager.ts b/src/background/icon-manager.ts index a9bf19069d3c..01be0d35786f 100644 --- a/src/background/icon-manager.ts +++ b/src/background/icon-manager.ts @@ -34,11 +34,6 @@ export default class IconManager { }); } - showImportantBadge() { - chrome.browserAction.setBadgeBackgroundColor({color: '#e96c4c'}); - chrome.browserAction.setBadgeText({text: '!'}); - } - showBadge(text: string) { chrome.browserAction.setBadgeBackgroundColor({color: '#e96c4c'}); chrome.browserAction.setBadgeText({text}); diff --git a/src/background/messenger.ts b/src/background/messenger.ts index a26086df9c17..00003497415e 100644 --- a/src/background/messenger.ts +++ b/src/background/messenger.ts @@ -8,6 +8,7 @@ export interface ExtensionAdapter { setTheme: (theme: Partial) => void; setShortcut: ({command, shortcut}: {command: string; shortcut: string}) => void; markNewsAsRead: (ids: string[]) => Promise; + markNewsAsDisplayed: (ids: string[]) => Promise; toggleActiveTab: () => void; onPopupOpen: () => void; loadConfig: (options: {local: boolean}) => Promise; @@ -117,6 +118,10 @@ export default class Messenger { this.adapter.markNewsAsRead(data); break; } + case MessageType.UI_MARK_NEWS_AS_DISPLAYED: { + this.adapter.markNewsAsDisplayed(data); + break; + } case MessageType.UI_LOAD_CONFIG: { this.adapter.loadConfig(data); break; diff --git a/src/background/newsmaker.ts b/src/background/newsmaker.ts index 79bd1d0c1372..1f28d8d14fb3 100644 --- a/src/background/newsmaker.ts +++ b/src/background/newsmaker.ts @@ -69,15 +69,26 @@ export default class Newsmaker { ])); } + private async getDisplayedNews(): Promise { + const sync = await readSyncStorage({displayedNews: []}); + const local = await readLocalStorage({displayedNews: []}); + return Array.from(new Set([ + ...sync ? sync.displayedNews : [], + ...local ? local.displayedNews : [], + ])); + } + private async getNews() { try { const response = await fetch(`https://darkreader.github.io/blog/posts.json`, {cache: 'no-cache'}); const $news: Array & {date: string}> = await response.json(); const readNews = await this.getReadNews(); + const displayedNews = await this.getDisplayedNews(); const news: News[] = $news.map((n) => { const url = getBlogPostURL(n.id); - const read = this.isRead(n.id, readNews); - return {...n, url, read}; + const read = this.wasRead(n.id, readNews); + const displayed = this.wasDisplayed(n.id, displayedNews); + return {...n, url, read, displayed}; }); for (let i = 0; i < news.length; i++) { const date = new Date(news[i].date); @@ -103,9 +114,9 @@ export default class Newsmaker { } }); if (changed) { - this.latest = this.latest.map(({id, date, url, headline, important}) => { - const read = this.isRead(id, results); - return {id, date, url, headline, important, read}; + this.latest = this.latest.map((n) => { + const read = this.wasRead(n.id, results); + return {...n, read}; }); this.onUpdate(this.latest); const obj = {readNews: results}; @@ -115,7 +126,34 @@ export default class Newsmaker { } } - isRead(id: string, readNews: string[]) { + async markAsDisplayed(...ids: string[]) { + const displayedNews = await this.getDisplayedNews(); + const results = displayedNews.slice(); + let changed = false; + ids.forEach((id) => { + if (displayedNews.indexOf(id) < 0) { + results.push(id); + changed = true; + } + }); + if (changed) { + this.latest = this.latest.map((n) => { + const displayed = this.wasDisplayed(n.id, results); + return {...n, displayed}; + }); + this.onUpdate(this.latest); + const obj = {displayedNews: results}; + await writeLocalStorage(obj); + await writeSyncStorage(obj); + await this.stateManager.saveState(); + } + } + + wasRead(id: string, readNews: string[]) { return readNews.includes(id); } + + wasDisplayed(id: string, displayedNews: string[]) { + return displayedNews.includes(id); + } } diff --git a/src/definitions.d.ts b/src/definitions.d.ts index 994c3e2652db..971ca900bc89 100644 --- a/src/definitions.d.ts +++ b/src/definitions.d.ts @@ -31,6 +31,7 @@ export interface ExtensionActions { setShortcut(command: string, shortcut: string): void; toggleActiveTab(): void; markNewsAsRead(ids: string[]): void; + markNewsAsDisplayed(ids: string[]): void; loadConfig(options: {local: boolean}): void; applyDevDynamicThemeFixes(text: string): Promise; resetDevDynamicThemeFixes(): void; @@ -186,8 +187,8 @@ export interface News { date: string; url: string; headline: string; - important: boolean; read?: boolean; + displayed?: boolean; badge?: string; icon?: string; } diff --git a/src/ui/connect/connector.ts b/src/ui/connect/connector.ts index 086589bed459..b508fb2ad585 100644 --- a/src/ui/connect/connector.ts +++ b/src/ui/connect/connector.ts @@ -78,6 +78,10 @@ export default class Connector implements ExtensionActions { chrome.runtime.sendMessage({type: MessageType.UI_MARK_NEWS_AS_READ, data: ids}); } + markNewsAsDisplayed(ids: string[]) { + chrome.runtime.sendMessage({type: MessageType.UI_MARK_NEWS_AS_DISPLAYED, data: ids}); + } + loadConfig(options: {local: boolean}) { chrome.runtime.sendMessage({type: MessageType.UI_LOAD_CONFIG, data: options}); } diff --git a/src/ui/popup/components/news/index.tsx b/src/ui/popup/components/news/index.tsx index f496ae2b1706..7eac609e9720 100644 --- a/src/ui/popup/components/news/index.tsx +++ b/src/ui/popup/components/news/index.tsx @@ -36,7 +36,6 @@ export function NewsGroup({news, expanded, onNewsOpen, onClose}: NewsProps) { class={{ 'news__event': true, 'news__event--unread': !event.read, - 'news__event--important': event.important, 'news__event--has-icon': event.icon, }} > diff --git a/src/ui/popup/index.tsx b/src/ui/popup/index.tsx index 1d905a09ac42..d8ee727ecf6a 100644 --- a/src/ui/popup/index.tsx +++ b/src/ui/popup/index.tsx @@ -17,6 +17,13 @@ function renderBody(data: ExtensionData, fonts: string[], actions: ExtensionActi document.documentElement.classList.remove('preview'); } + if (data.news && data.news.length > 0) { + const latest = data.news[0]; + if (latest && !latest.displayed) { + actions.markNewsAsDisplayed([latest.id]); + } + } + sync(document.body, ( )); diff --git a/src/ui/popup/news-section/index.tsx b/src/ui/popup/news-section/index.tsx index 3c8a3dcde046..ec47c80f8907 100644 --- a/src/ui/popup/news-section/index.tsx +++ b/src/ui/popup/news-section/index.tsx @@ -1,4 +1,5 @@ import {m} from 'malevic'; +import {getContext} from 'malevic/dom'; import {getDuration} from '../../../utils/time'; import type {News} from '../../../definitions'; import type {ViewProps} from '../types'; @@ -13,22 +14,76 @@ function isFresh(n: News) { } } +function NewsLink(props: {news: News; isSmall?: boolean; onClick: () => void}) { + const {news} = props; + return ( + + {news.icon ? + + : null} + {news.headline} + + ); +} + export default function NewsSection(props: ViewProps) { + const context = getContext(); + const store = context.getStore({ + expanded: false, + didNewsSlideIn: false, + }); + const {expanded, didNewsSlideIn} = store; + const news = props.data.news; const latest = news && news.length > 0 ? news[0] : null; + + function markLatestAsRead() { + if (latest) { + props.actions.markNewsAsRead([latest.id]); + } + } + + function toggleNews() { + if (expanded) { + markLatestAsRead(); + } + store.expanded = !expanded; + store.didNewsSlideIn = didNewsSlideIn || !store.expanded; + context.refresh(); + } + + context.onRender(() => { + if (latest && !latest.read && !store.expanded && !store.didNewsSlideIn) { + setTimeout(toggleNews, 750); + } + }); + return ( -
- {latest ? - {latest.headline} - : null} +
+ {latest ? : null} +
+
+
+ What's New +
+ +
+ {latest ? : null} +
); } diff --git a/src/ui/popup/news-section/style.less b/src/ui/popup/news-section/style.less index 46507a777828..1fd8ad021227 100644 --- a/src/ui/popup/news-section/style.less +++ b/src/ui/popup/news-section/style.less @@ -1,34 +1,92 @@ @import "../../theme.less"; +@news-section-expanded-height: 6rem; +@news-section-collapsed-height: 1.875rem; + .news-section { background-color: @color-back; - border-radius: 0.9375rem; + border-bottom-left-radius: @news-section-collapsed-height / 2; + border-bottom-right-radius: @news-section-collapsed-height / 2; bottom: 0; box-sizing: border-box; - height: 1.875rem; + display: flex; + flex-direction: column; + height: @news-section-collapsed-height; left: 0; overflow: hidden; - padding: 0.375rem 1rem 0.5rem 1rem; + padding: 0; position: absolute; text-align: center; + transition: height @time-slow; user-select: none; white-space: nowrap; width: 100%; - &__main-link { + &__popover { + align-items: stretch; + background-color: @color-back; + display: flex; + flex-direction: column; + left: 0; + height: @news-section-expanded-height; + opacity: 0; + pointer-events: none; + position: absolute; + top: 0; + transition: opacity @time-slow; + width: 100%; + + &__top { + border-top: @size-border solid @color-border; + display: flex; + flex-direction: row; + justify-content: space-between; + margin-bottom: @indent-small; + } + } + + &__title { + color: @color-heading; + font-size: @size-text-large; + line-height: @size-control-inner; + margin-left: @popup-content-padding; + } + + &__news { + align-items: center; box-sizing: border-box; color: @color-fore; - display: inline-block; - font-weight: bold; - line-height: 1rem; - height: 1rem; - overflow: hidden; - position: relative; - text-overflow: ellipsis; + display: flex; + flex-direction: row; + font-weight: normal; + justify-content: flex-start; + height: 2.5rem; + padding: 0 @popup-content-padding; width: 100%; - &--fresh:not(:visited) { + &__icon { + background-position: center; + background-repeat: no-repeat; + background-size: contain; + display: inline-block; + flex: none; + height: 3rem; + margin-right: @indent-small; + width: 3rem; + } + + &__text { + flex: auto; + font-size: @size-text-large; + display: inline-block; + line-height: @size-text-large; + text-align: left; + white-space: normal; + } + + &--highlight { color: @color-heading; + font-weight: bold; } &:hover { @@ -36,7 +94,49 @@ } } - &:empty { - display: none; + &__close { + color: @color-heading; + cursor: pointer; + display: inline-block; + font-size: @size-control-inner * 3 / 4; + height: @size-control-inner; + line-height: @size-control-inner; + text-align: center; + user-select: none; + width: @size-control-inner; + + &:hover { + background-color: fade(@color-control-active, 25%); + } + } + + &--expanded { + height: @news-section-expanded-height; } } + +.news-section--expanded .news-section__popover { + opacity: 1; + pointer-events: all; +} + +.news-section__news--small { + bottom: 0; + font-weight: bold; + height: @news-section-collapsed-height; + padding: 0 @popup-content-padding; +} + +.news-section__news--small .news-section__news__icon { + height: 1.5rem; + margin-right: @indent-small / 2; + width: 1.5rem; +} + +.news-section__news--small .news-section__news__text { + font-size: @size-text-normal; + line-height: @size-text-normal-height; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} diff --git a/src/utils/message.ts b/src/utils/message.ts index 4d732dcee8a8..fe9f6d411a93 100644 --- a/src/utils/message.ts +++ b/src/utils/message.ts @@ -7,6 +7,7 @@ export const MessageType = { UI_SET_SHORTCUT: 'ui-set-shortcut', UI_TOGGLE_ACTIVE_TAB: 'ui-toggle-active-tab', UI_MARK_NEWS_AS_READ: 'ui-mark-news-as-read', + UI_MARK_NEWS_AS_DISPLAYED: 'ui-mark-news-as-displayed', UI_LOAD_CONFIG: 'ui-load-config', UI_APPLY_DEV_DYNAMIC_THEME_FIXES: 'ui-apply-dev-dynamic-theme-fixes', UI_RESET_DEV_DYNAMIC_THEME_FIXES: 'ui-reset-dev-dynamic-theme-fixes', From e977814f299433ee3a2f69a52d215f5e474cc313 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Thu, 26 May 2022 22:37:50 +0100 Subject: [PATCH 777/892] Toucan extension fixes (#8963) TODO: Find out what's wrong with JSS --- src/config/dynamic-theme-fixes.config | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5b4a076872e4..853ca19fb0e2 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -24,6 +24,30 @@ CSS gr-main-header { background-color: ${lightblue} !important; } +.tou-z65h9k, +.tou-mignzq, +.tou-1b6i2ox, +.tou-lnqlqk { + background-color: var(--darkreader-neutral-background) !important; +} +.tou-75mvi { + background-color: ${rgb(207, 236, 245)} !important; +} +.tou-ta9e87, +.tou-1w3fhi0, +.tou-1b8t2us, +.tou-py7lfi, +.tou-1lpmd9d, +.tou-1frrtv8, +.tou-17ezmgn { + background-color: ${rgb(245, 245, 245)} !important; +} +.tou-uknfeu { + background-color: ${rgb(250, 237, 218)} !important; +} +.tou-6i3zyv { + background-color: ${rgb(133, 195, 216)} !important; +} IGNORE INLINE STYLE .sr-wrapper * From da63b6d6bdc434a3c8fb2ca65d677ae303309f48 Mon Sep 17 00:00:00 2001 From: Aaron Ang <66870149+aaronangxz@users.noreply.github.com> Date: Fri, 27 May 2022 05:49:49 +0800 Subject: [PATCH 778/892] Malay translation (#8962) --- src/_locales/ms.config | 183 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 src/_locales/ms.config diff --git a/src/_locales/ms.config b/src/_locales/ms.config new file mode 100644 index 000000000000..b70ac0ba9c1e --- /dev/null +++ b/src/_locales/ms.config @@ -0,0 +1,183 @@ +@extension_description +Mod gelap untuk setiap laman web. Jaga mata anda, gunakan tema gelap untuk melayari laman web, malam dan siang. + +@loading_please_wait +Sedang dimuatkan, sila tunggu + + +#==== Top section ==== + +@on +Buka + +@off +Tutup + +@toggle_current_site +Toggel laman terkini + +@setup_hotkey_toggle_site +Menyiapkan laman terkini +toggel hotkey + +@toggle_extension +Toggel ekstensi + +@setup_hotkey_toggle_extension +Menyiapkan ekstensi +toggel hotkey + +@automation +Otomatisasi + +@set_active_hours +Sediakan waktu aktif + +@set_location +Aktifkan selepas asar di lokasi + +@longitude +Tegak + +@latitude +Lintang + +@page_protected +Halaman ini telah dilindungi +oleh pelayar + +@page_in_dark_list +Halamn in dalam senarai +gelap global + +@system_dark_mode +Gunakan skema warna sistem + +@system_dark_mode_description +Aktifkan semasa skema gelap sistem dibuka + + +#==== Filter ==== + +@filter +Penapis + +@mode +Mode + +@dark +Gelap + +@light +Terang + +@brightness +Kecerahan + +@contrast +Kontras + +@grayscale +Skala kelabu + +@sepia +Sepia + +@only_for +Hanya untuk + +@only_for_description +Gunakan tetapan pada laman web semasa sahaja + + +#==== Site list ==== + +@site_list +Senarai laman + +@invert_listed_only +Senarai songsang sahaja + +@not_invert_listed +Senarai tidak songsang + +@add_site_to_list +Tambahkan laman ke senarai + +@setup_add_site_hotkey +Sediakan hotkey untuk menambah laman + + +#==== More settings ==== + +@more +Lebih + +@select_font +Pilihkan fon + +@text_stroke +Lejang teks + +@try_experimental_theme_engines +Cubakan enjin tema **percubaan**: +**Penapis+** mengekalkan ketepuan warna, menggunakan GPU +**Tema statik** menjana tema pantas yang ringkas +**Tema dinamik** menganalisis warna dan imej + +@engine_filter +Penapis + +@engine_filter_plus +Penapis+ + +@engine_static +Statis + +@engine_dynamic +Dinamis + +@theme_generation_mode +Mod penjanaan tema + +@custom_browser_theme_on +Adat + +@custom_browser_theme_off +Lalai + +@change_browser_theme +Tukar tema pelayar + + +#==== Footer ==== + +@privacy +Privasi + +@help +Bantuan + +@donate +Derma + +@news +Berita + +@read_more +Baca lagi + +@open_dev_tools +Alat Developer + + +#==== Store listing ==== + +@store_listing +Ekstensi penjagaan mata ini mendayakan mod malam dengan mencipta tema gelap untuk laman web dengan cepat. Dark Reader menyongsangkan warna terang, menjadikannya kontras tinggi dan mudah dibaca pada waktu malam. + +Anda boleh melaraskan kecerahan, kontras, penapis sepia, mod gelap, tetapan fon dan senarai abaikan. + +Dark Reader tidak memaparkan iklan dan tidak menghantar data pengguna ke mana-mana sahaja. Ia adalah sumber terbuka sepenuhnya: https://github.com/darkreader/darkreader + +Sebelum anda memasangnya, lumpuhkan sambungan yang serupa. Selamat menonton! From 58ab11b3fdd124b0af58d8cd36f524ee7fc34349 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Thu, 26 May 2022 23:15:04 +0100 Subject: [PATCH 779/892] Use correct file name for Telugu (#8964) --- src/_locales/{tel.config => te.config} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/_locales/{tel.config => te.config} (100%) diff --git a/src/_locales/tel.config b/src/_locales/te.config similarity index 100% rename from src/_locales/tel.config rename to src/_locales/te.config From 349224059a8f076d71be5d09c281ac710bee8bc6 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Fri, 27 May 2022 00:12:10 +0100 Subject: [PATCH 780/892] 4.9.51 --- CHANGELOG.md | 17 ++++++++++++----- package-lock.json | 2 +- package.json | 2 +- src/manifest.json | 2 +- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53a5504958e0..331daf6e8479 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,15 @@ -## Unreleased - -- Fix CSS imports that contains `url(...)` and ends with `screen`. -- Send network response to the correct frame in tab. -- Handle more cases lowering `calc(...)` by using [Shunting Yard algorithm](https://en.wikipedia.org/wiki/Shunting_yard_algorithm). +## 4.9.51 (May 27, 2022) + +Dynamic mode improvements: +- Fixed CSS imports that contain `url(...)` and end with `screen`. +- Send network responses to correct frames in tabs. +- Improved `calc(...)` color handling by using [Shunting Yard algorithm](https://en.wikipedia.org/wiki/Shunting_yard_algorithm). +New translations: +- Malay translation. +- Telugu translation. +Other: +- UI improvements. +- Users' fixes for websites. ## 4.9.50 (May 1, 2022) diff --git a/package-lock.json b/package-lock.json index 2b4fb17773a3..ea7ad1230dd8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "darkreader", - "version": "4.9.50", + "version": "4.9.51", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 0a13141668a6..3d2a2709b673 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "darkreader", - "version": "4.9.50", + "version": "4.9.51", "description": "Dark mode for every website", "scripts": { "api": "node tasks/build.js --api", diff --git a/src/manifest.json b/src/manifest.json index 19992728dc72..330985f2be7b 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Dark Reader", - "version": "4.9.50", + "version": "4.9.51", "author": "Alexander Shutau", "description": "__MSG_extension_description__", "default_locale": "en", From ea5cbe8207ffb25e47723599588ec45fd0e36767 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 27 May 2022 11:50:15 +0000 Subject: [PATCH 781/892] Fix for proton.me (#8968) - Fix account.proton.me - Fix proton.me - Resolves #8957 --- src/config/dynamic-theme-fixes.config | 28 +++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 853ca19fb0e2..e5089792a1a0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -386,20 +386,21 @@ INVERT ================================ -account.protonmail.com +account.proton.me + +INVERT +.sign-layout-bg +.sign-layout-bg > * CSS -:root { - --field-background-color: var(--darkreader-bg--background-norm) !important; -} -.label-stack-item { - background-color: var(--color) !important; -} -.label-stack-item-button, -.label-stack-item-delete { - color: ${white} !important; +.qr-code { + border: 5px solid white !important; } +IGNORE INLINE STYLE +.logo * +.qr-code * + ================================ account.ui.com @@ -13806,6 +13807,13 @@ body { ================================ +proton.me + +INVERT +img[src$="hero-2x.png"] + +================================ + proxmox.com INVERT From 521ba2f2e4e209750fcb7d0be85aa2ab0ba655f5 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 27 May 2022 11:53:40 +0000 Subject: [PATCH 782/892] Fix for bitwarden.com (#8969) - Invert logo for vault.bitwarden.com - Resolves #8958 --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e5089792a1a0..ea6297835920 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2187,6 +2187,7 @@ bitwarden.com INVERT img[alt="Github Logo"] img[src$="forbes.png"] +app-login img.logo IGNORE IMAGE ANALYSIS blockquote .blockquote-header From ad98afe3950014ed3e3001eedfed26cae4715b28 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 27 May 2022 12:02:04 +0000 Subject: [PATCH 783/892] Fix for bible.optina.ru (#8970) - Resolves #8951 --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ea6297835920..bcbba13782ac 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2033,6 +2033,17 @@ img[src^="/graphs/"] ================================ +bible.optina.ru + +CSS +body, +#left, +#right { + background-image: none !important; +} + +================================ + bibliotecapleyades.net CSS From 615df51975d462972b00f082b0bd881439d05457 Mon Sep 17 00:00:00 2001 From: Emil Rapp Date: Fri, 27 May 2022 14:04:49 +0200 Subject: [PATCH 784/892] Fix for student.ladok.se (#8919) - Fix background. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index bcbba13782ac..b131027c6021 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16182,6 +16182,15 @@ INVERT ================================ +student.ladok.se + +CSS +#sidomeny .middle { + background: var(--darkreader-neutral-background) !important; +} + +================================ + studio.youtube.com INVERT From bc278c5b949a6d186ecf4c17f2b89ca7ed697a2c Mon Sep 17 00:00:00 2001 From: plasticuproject <19690649+plasticuproject@users.noreply.github.com> Date: Fri, 27 May 2022 08:07:00 -0400 Subject: [PATCH 785/892] Add dark site (#8947) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 8ac1ec56dfbd..a62c7da11e13 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -728,6 +728,7 @@ piracybank.org piskelapp.com pitokmm.it planetneverwinter.de +plasticuproject.com platinumgod.co.uk play.geforcenow.com play.hbogo.com From a5e6782f157ea63bf4210305afe2dbc9e5fb0851 Mon Sep 17 00:00:00 2001 From: CarloHD <93845907+CarloHD@users.noreply.github.com> Date: Fri, 27 May 2022 14:13:30 +0200 Subject: [PATCH 786/892] Fix for urpredditodicittadinanza.lavoro.gov.it & drive.google.com (#8933) - Fix background. --- src/config/dynamic-theme-fixes.config | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index b131027c6021..8572c831137c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5263,6 +5263,12 @@ div[role="button"][aria-disabled="true"] > div { :root { --dt-secondary-container: ${#f1f3f4} !important; } +button[guidedhelpid="new_menu_button"] { + background-color: ${#dbdde0} !important; +} +div[data-target="autopurgebanner"] > section { + background: ${#dbdde0} !important; +} IGNORE INLINE STYLE div[role="presentation"] svg @@ -17973,6 +17979,15 @@ nav a[href="/"] svg > g > path:first-child ================================ +urpredditodicittadinanza.lavoro.gov.it + +CSS +:root { + --lwc-colorContentAreaBackground : transparent !important; +} + +================================ + userstyles.world INVERT From 40d9dffc0442ff4f1bfee9135b418ecb76ae96b3 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 28 May 2022 16:57:33 +0000 Subject: [PATCH 787/892] Remove mail.protonmail.com (#8972) - Removing so we can make a fresh start for mail.proton.me fixes. --- src/config/dynamic-theme-fixes.config | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8572c831137c..beaf537c41f5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10585,28 +10585,6 @@ IGNORE INLINE STYLE ================================ -mail.protonmail.com - -CSS -.customCheckbox-input:not(:checked) + .customCheckbox-mask { - background: none !important; -} -select.field { - background: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} -.label-stack-item { - background: var(--background) !important; -} -.items-column-list-inner { - border: solid var(--bordercolor-input) !important; -} -.main { - border-color: ${darkgray} !important; -} - -================================ - mail.qq.com INVERT From cd147429f97560cd85640d25a8612a4c783e4509 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 4 Jun 2022 16:53:06 +0000 Subject: [PATCH 788/892] Fix for wikipedia.org (#9012) - Resolves #8974 --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index beaf537c41f5..cbe40a538c5d 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -18956,7 +18956,7 @@ body.mediawiki, } IGNORE INLINE STYLE -.legend-color +.legend-color:not(table.wikitable .legend-color) #on_image_elements span IGNORE IMAGE ANALYSIS From cd9d70ad2f03ad3c396d3d78a70ee8bf89a01763 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 4 Jun 2022 17:25:54 +0000 Subject: [PATCH 789/892] Fix mulitple sites (#9013) - Fix for allspice.io - Fix for crutchfield.com - Fix for patriotmemory.com - Fix for netlify.com - Fix for nlnet.nl - Fix for opencollective.com - Fix for towhee.io - Fix for msi.com - Resolves #8975 --- src/config/dynamic-theme-fixes.config | 42 ++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index cbe40a538c5d..be0c99adb3a7 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -794,6 +794,13 @@ img[src="/img/profile.png"] ================================ +allspice.io + +INVERT +[data-mesh-id="SITE_HEADERinlineContent"] img + +================================ + alphacoders.com INVERT @@ -4008,6 +4015,13 @@ CSS ================================ +crutchfield.com + +INVERT +.logo-module svg + +================================ + cryptostorm.is INVERT @@ -11581,6 +11595,7 @@ a.logo .site-logo .site-header-menu-toggle--button span .flickity-button-icon +.homeLink__logo CSS #MSI_Support .top-headBg, @@ -12033,6 +12048,9 @@ INVERT netlify.com +INVERT +.masthead-home-logo + CSS [data-darkreader-inline-fill] { fill: var(--scrim-icon-color) !important; @@ -12179,6 +12197,13 @@ CSS ================================ +nlnet.nl + +INVERT +.header_logo + +================================ + nnmclub.to nnm-club.me @@ -12847,7 +12872,7 @@ g[font-size][fill^="#fff" i] opencollective.com INVERT -img[alt="Open collective"] +img[alt="Open Collective"] CSS #section-contributors > div { @@ -13133,6 +13158,14 @@ IGNORE IMAGE ANALYSIS ================================ +patriotmemory.com + +INVERT +.w-nav a[href="/"] img +.w-nav-brand + +================================ + patuscada.bar INVERT @@ -17314,6 +17347,13 @@ INVERT ================================ +towhee.io + +INVERT +.logo-wrapper + +================================ + track.toggl.com CSS From ee9199d8a5f1e145a91b6584516a7eac98808094 Mon Sep 17 00:00:00 2001 From: Committing Date: Sat, 4 Jun 2022 18:26:37 +0100 Subject: [PATCH 790/892] daddyanity.com is dark (#8976) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index a62c7da11e13..eccc8c5cf0b8 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -214,6 +214,7 @@ cyberpunk.net cybersole.io cyberspatial.com cytu.be +daddyanity.com daily-fire.com daksh.eu.org danidev.net From e2ce37ee81760b3d74fe4aa5308b724345c1d91b Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 4 Jun 2022 17:40:39 +0000 Subject: [PATCH 791/892] Fix for fairtradeoriginal.* (#9014) - Resolves #8979 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index be0c99adb3a7..d77127766e6a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6177,6 +6177,15 @@ IGNORE IMAGE ANALYSIS ================================ +fairtradeoriginal.* + +INVERT +.SiteLayout +.SiteLayout > * +.Inset-image + +================================ + fakespot.com INVERT From c387e7042e55b3e1d764d60273f41e0d8ad51017 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 4 Jun 2022 17:43:23 +0000 Subject: [PATCH 792/892] Fix for artsy.net (#9015) - Resolves #8981 --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d77127766e6a..4b84620eec46 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1402,6 +1402,18 @@ INVERT ================================ +artsy.net + +CSS +[aria-checked="false"][role="checkbox"] svg path { + fill: transparent !important; +} + +IGNORE INLINE STYLE +[role="checkbox"] svg * + +================================ + arxiv.org CSS From 1efbb3e78e02ea98fa2d666fdf0aee5ce91ed0de Mon Sep 17 00:00:00 2001 From: Alphonsus Okoli Date: Sat, 4 Jun 2022 14:09:01 -0400 Subject: [PATCH 793/892] Fix spelling errors in color-schemes document (#8997) --- docs/color-schemes-drconf.spec | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/color-schemes-drconf.spec b/docs/color-schemes-drconf.spec index eb4ba364d372..cdc6fd29ee29 100644 --- a/docs/color-schemes-drconf.spec +++ b/docs/color-schemes-drconf.spec @@ -4,11 +4,11 @@ which doesn't really follow the standard for other files. Spec: - A section is a unique defined colorscheme following the syntax rules. - The file must begin with a section, with the name of "Default" which has both a light and dark variant. -- A seperator must be placed between new sections, the seperator is `'='.repeat(32)`. -- A new line must be placed before and after the seperator. -- All but not the first section should start with a new line(this is the same new line after the seperator). -- The first keywoard in the section(after the possible new line) should be a unique colorscheme name. -- After 2 new lines of the first keywoard should either be "DARK" or "LIGHT", at least 1 variant should be defined. +- A separator must be placed between new sections, the separator is `'='.repeat(32)`. +- A new line must be placed before and after the separator. +- All but not the first section should start with a new line(this is the same new line after the separator). +- The first keyword in the section(after the possible new line) should be a unique colorscheme name. +- After 2 new lines of the first keyword should either be "DARK" or "LIGHT", at least 1 variant should be defined. - If a color scheme has both variants the order should start with "DARK" and then "LIGHT" for consistency. - Within the variants a background color and text color can be defined, both are required. - The syntax of defining background-color and text color should be `{background,text}: #6-or-3-length-hex-color` each on a new line. From 9cb420f0431fd64ac6497f2c14e881554c5b2eca Mon Sep 17 00:00:00 2001 From: Dave Moreno Date: Sat, 4 Jun 2022 12:11:44 -0600 Subject: [PATCH 794/892] Fix for databricks.com (#9001) - Fix modal's background color. --- src/config/dynamic-theme-fixes.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4b84620eec46..109444dc07ac 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3364,6 +3364,9 @@ span[role="presentation"] { .ansiout { color: ${rgb(85, 85, 85)} !important; } +.rm-modal { + background: var(--darkreader-neutral-background) !important; +} ================================ From 5e9ef97db9179c0d3ced962f6ead4b2ccd4ed1cd Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 4 Jun 2022 18:24:05 +0000 Subject: [PATCH 795/892] Fix for cbsnews.com (#9017) - Resolves #9002 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 109444dc07ac..ada92701f54a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2995,6 +2995,15 @@ INVERT ================================ +cbsnews.com + +CSS +.content__read-more { + color: var(--darkreader-neutral-color) !important; +} + +================================ + cdaction.pl INVERT From 7bc1f4351fedc028b565499144ef5f49c284d8db Mon Sep 17 00:00:00 2001 From: linsui <36977733+linsui@users.noreply.github.com> Date: Sat, 4 Jun 2022 18:25:08 +0000 Subject: [PATCH 796/892] Fix more scribe instances (#9007) --- src/config/dynamic-theme-fixes.config | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ada92701f54a..d8801d514171 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14987,6 +14987,10 @@ INVERT ================================ scribe.rip +scribe.nixnet.services +scribe.citizen4.eu +scribe.bus-hit.me +scribe.froth.zone CSS body { From ccff62153e286c770c64979e4418fa3b6da41c81 Mon Sep 17 00:00:00 2001 From: minemobs <38861340+Minemobs@users.noreply.github.com> Date: Sat, 4 Jun 2022 21:26:44 +0200 Subject: [PATCH 797/892] Fix for readme.io (#9011) - Fix background color. --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d8801d514171..7a9c5e4b1699 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14215,6 +14215,16 @@ INVERT ================================ +readme.io + +CSS +.rm-PlaygroundRequest, +.CodeTabs-toolbar { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + readpaper.com/pdf-annotate/note INVERT From d9f75074fff2f9e54d2bf4cb9ec01672ac73c01b Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Sat, 4 Jun 2022 14:57:28 -0500 Subject: [PATCH 798/892] Fix multiple sites (#9018) - Fix for murena.com logo - Fix for nixos.org logo Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7a9c5e4b1699..489347debcb2 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11716,6 +11716,13 @@ INVERT ================================ +murena.com + +INVERT +picture.wordmark--link + +================================ + musclewiki.com INVERT @@ -12219,6 +12226,9 @@ body, nixos.org +INVERT +header a[href="/"]::after + CSS .demo-preview > .thumbnail svg .background { fill: var(--darkreader-neutral-background) !important; From c4a16590b7f00a993782568f62f687d24c28ad74 Mon Sep 17 00:00:00 2001 From: Zach Coleman Date: Sat, 4 Jun 2022 16:02:09 -0400 Subject: [PATCH 799/892] Add dark site (#8973) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index eccc8c5cf0b8..338bbbcd1ba6 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -660,6 +660,7 @@ nitwhiz.xyz nodejs.dev noisebridge.net nomanssky.com +northward.info nostv.pt notebooks.quantumstat.com notiger.xyz From d586a0cb2bb449ce1d1a3960e26b2fcfde179c9d Mon Sep 17 00:00:00 2001 From: sauce420 <77341102+sauce420@users.noreply.github.com> Date: Sun, 5 Jun 2022 14:41:17 +0000 Subject: [PATCH 800/892] astronvim.github.io is dark (#9019) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 338bbbcd1ba6..b9da95bf545b 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -69,6 +69,7 @@ ass.rip ass.software assassins-creed.de ast4u.me +astronvim.github.io astrovpn.co atelier.net/virtual-economy atlassurvivalshelters.com From d13125a9ff1818757ce0c2ec7b75d26368fb64a8 Mon Sep 17 00:00:00 2001 From: Christian Busse Date: Sun, 5 Jun 2022 21:41:25 +0200 Subject: [PATCH 801/892] Fix for forms.reform.app (#9006) - Fix checkboxes. - Invert logo. --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 489347debcb2..42afbdf38b20 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6648,6 +6648,18 @@ nav a > img[alt="Home"] ================================ +forms.reform.app + +INVERT +.logo + +CSS +svg.text-white { + color: var(--darkreader-neutral-background); +} + +================================ + forms.yandex.ru INVERT From 5cb3f4154ffbd6bd0df32d9f37f70a694e19a3d3 Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Mon, 6 Jun 2022 06:31:10 -0500 Subject: [PATCH 802/892] Fix for e.foundation (#9026) - Fix logo. --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 42afbdf38b20..8173d7580602 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -5510,6 +5510,13 @@ CSS ================================ +e.foundation + +INVERT +img.attachment-full.size-full + +================================ + ea.com INVERT From fa9c88d29974c16496c0c3331662fe169a4ebf20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erkin=20Alp=20G=C3=BCney?= Date: Mon, 6 Jun 2022 14:31:32 +0300 Subject: [PATCH 803/892] Fix for iett.istanbul (#8990) - Update to latest version. --- src/config/dynamic-theme-fixes.config | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8173d7580602..72303fcc0ae5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8527,14 +8527,12 @@ INVERT iett.istanbul CSS -.LineTimeDuyuru > li:nth-child(1) { - display:none; +#routedesc p:nth-child(2) { + font-size: 0; } -.LineTimeDuyuru::before { - content: "Kırmızı renkli seferler ÖHO ve OAŞ'a, beyaz renkli seferler İETT'ye aittir." -} -.DetailTable img { - filter: invert(100%) hue-rotate(180deg) !important; +#routedesc p:nth-child(2)::after { + font-size: 20px; + content: "Kırmızı renkli seferler ÖHO ve OAŞ; beyaz renkli seferler İETT’ye aittir." } ================================ From 88d4cff0dd25c60c63b991c041c17986822c0e46 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 6 Jun 2022 13:37:16 +0200 Subject: [PATCH 804/892] Fix for hacdias.com (#9027) - Resolves #9022 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 72303fcc0ae5..30a696ade961 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8122,6 +8122,15 @@ html { ================================ +hacdias.com + +CSS +:root { + --background: var(--darkreader-neutral-background) !important; +} + +================================ + hackerone.com INVERT From 4c634a666b8a254d970700d29a341c663ec76c6b Mon Sep 17 00:00:00 2001 From: Sebastian Dolfen <44836090+Sebastian-Dolfen@users.noreply.github.com> Date: Mon, 6 Jun 2022 13:42:04 +0200 Subject: [PATCH 805/892] Fix for fontawesome.com (#8298) -Fixes background of header in icons, docs and start -Fixes background of docs -Fixes background of doc version-selector Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 30a696ade961..875bf428a664 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6596,6 +6596,20 @@ INVERT ================================ +fontawesome.com + +CSS +#icons-header, #docs-header, +#hero > div:not(.container), +.app-content.docs { + background-color: var(--darkreader-neutral-background) !important; +} +.doc-nav > div { + background-color: var(--darkreader-bg--background-norm) !important; +} + +================================ + fontsinuse.com INVERT From 1eb4330e734c17231b2a5372a94064abdf7ce7d9 Mon Sep 17 00:00:00 2001 From: wzxu Date: Wed, 8 Jun 2022 15:07:35 +0800 Subject: [PATCH 806/892] Fix for behance.net & dribbble.com (#9028) - Fix logo. --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 875bf428a664..3f939fae3345 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1940,6 +1940,13 @@ body[style] { ================================ +behance.net + +INVERT +div[class^="PrimaryNav-logoWrap"] + +================================ + berlingske.dk INVERT @@ -5272,6 +5279,13 @@ body { ================================ +dribbble.com + +INVERT +.site-nav-desktop-logo + +================================ + drive.google.com INVERT From 58d4ed21f37585d3a164e4218bd2d35e9896861f Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Wed, 8 Jun 2022 02:14:23 -0500 Subject: [PATCH 807/892] Remove non darksites (#9040) - These sites are now parked domains. --- src/config/dark-sites.config | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index b9da95bf545b..1c6d585d098e 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -65,8 +65,6 @@ asherhe.com ashishpanigrahi.xyz asoftmurmur.com aspenuwu.me -ass.rip -ass.software assassins-creed.de ast4u.me astronvim.github.io From 584ebd05f7157b7cedcd0c86fc5297e52b3f31bf Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Wed, 8 Jun 2022 04:38:41 -0500 Subject: [PATCH 808/892] Add dark site (#9038) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 1c6d585d098e..33c594a59fbf 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -47,6 +47,7 @@ app.revolt.chat app.sqldbm.com applesilicongames.com application.security +aqtiongame.com ara-ara-ufufu.herokuapp.com arche-dev.codeberg.page archive.ragtag.moe From 081b6a8b799eedcac00941762396126bbd60c0b0 Mon Sep 17 00:00:00 2001 From: dereklyonheart <49388020+dereklyonheart@users.noreply.github.com> Date: Wed, 8 Jun 2022 02:44:02 -0700 Subject: [PATCH 809/892] Fix for chase.com & brilliant.org (#9041) - Fix logo. --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 3f939fae3345..13bcbe8e2d10 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2584,6 +2584,15 @@ CSS ================================ +brilliant.org + +INVERT +[class*="b-sprite-landing"] +[class*="b-sprite-publishers"] +.logo + +================================ + bsi.bund.de INVERT @@ -3112,6 +3121,9 @@ CSS chase.com +INVERT +.single-logo-icon + CSS .menu-button-item { color: var(--darkreader-neutral-text) !important; From de4d52c2564be74cd1ed3abe1ae8f9b02503379f Mon Sep 17 00:00:00 2001 From: Abhishek Paudel <10024463+abpaudel@users.noreply.github.com> Date: Wed, 8 Jun 2022 12:49:57 -0400 Subject: [PATCH 810/892] Fix for overleaf.com (#9039) - Fix editor. --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 13bcbe8e2d10..25d751169ac3 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13114,7 +13114,7 @@ div.o365cs-base > span.ms-Icon--WaffleOffice36 overleaf.com INVERT -.mwe-math-element +.canvasWrapper ================================ From facdd6484a8dc52623d49876fb115934e1cc678e Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 8 Jun 2022 20:06:56 +0200 Subject: [PATCH 811/892] Fix multiple sites (#9042) - Fix for audio-technica.com - Fix for metal.equinix.com - Fix for bluemic.com - Fix for nationalgeographic.com - Fix for podium.com - Fix for system76.com - Resolves #9024 --- src/config/dynamic-theme-fixes.config | 42 +++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 25d751169ac3..7f0a9ca9de4a 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1641,6 +1641,13 @@ INVERT ================================ +audio-technica.com + +INVERT +.o-header__logo + +================================ + audycje.tokfm.pl/widget CSS @@ -2422,6 +2429,13 @@ div#logo ================================ +bluemic.com + +INVERT +.blue-logo + +================================ + boardgamegeek.com CSS @@ -11243,6 +11257,13 @@ g > rect ================================ +metal.equinix.com + +INVERT +.tw-logo + +================================ + meteo.imgw.pl INVERT @@ -12063,6 +12084,13 @@ img[class*="Footer--Logo"] { ================================ +nationalgeographic.com + +INVERT +.NavBar__Logo__Container + +================================ + nature.com INVERT @@ -13672,6 +13700,13 @@ ymaps[class$="ground-pane"] ================================ +podium.com + +INVERT +.logoWrap + +================================ + poeditor.com INVERT @@ -16681,6 +16716,13 @@ img[src*="/images/images2/icons/"] ================================ +system76.com + +INVERT +svg[class^="sys-logo"] + +================================ + systemd.io INVERT From e376dfead12d3f0e0fdebdb0ed3213b794d1e935 Mon Sep 17 00:00:00 2001 From: Christian Llupo Date: Wed, 8 Jun 2022 21:12:02 +0300 Subject: [PATCH 812/892] Added dark site (#9035) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 33c594a59fbf..930bd2b40ae8 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -366,6 +366,7 @@ freespeechextremist.com frozensand.com funnyjunk.com fusengine.github.io/apaxy-v2 +galacticabot.vercel.app gamebanana.com gamejolt.com gameloop.fun From 8bd4e29cb68a5c35298db5f64f89f1119ed4b05b Mon Sep 17 00:00:00 2001 From: Cristhian Diaz Date: Wed, 8 Jun 2022 13:14:59 -0500 Subject: [PATCH 813/892] Fix for hmong.* (#8275) - Fix math expression. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7f0a9ca9de4a..e73a46b35ed4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8357,6 +8357,14 @@ body ================================ +hmong.* +wikihmong.com + +INVERT +span.mwe-math-element + +================================ + homebrewery.naturalcrit.com CSS From 826b6ed77676da5f7e1a3be476f8b4ac21f60955 Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Wed, 8 Jun 2022 13:43:44 -0500 Subject: [PATCH 814/892] Fix for grammarly.com (#9029) - Fix logo. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e73a46b35ed4..403612792a14 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8025,6 +8025,13 @@ INVERT ================================ +grammarly.com + +INVERT +img[alt="Grammarly logo"] + +================================ + gramota.ru INVERT From ec11a8de1f76f2bb960faaae8ef62c92021ad597 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 8 Jun 2022 20:56:21 +0200 Subject: [PATCH 815/892] Fix for comenius.susqu.edu (#9043) - Resolves #9030 --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 403612792a14..430ef45516d5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3683,6 +3683,17 @@ IGNORE INLINE STYLE ================================ +comenius.susqu.edu + +CSS +body, +table, +td { + background-image: none !important; +} + +================================ + comicfury.com CSS From b859f45070c68972a8d21b948e3368f767b79481 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 8 Jun 2022 20:58:32 +0200 Subject: [PATCH 816/892] Fix for mlb.com (#9044) - Resolves #9033 --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 430ef45516d5..586b6b4672a5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11460,6 +11460,16 @@ INVERT ================================ +mlb.com + +CSS +#percentile-rank text, +.legend { + fill: var(--darkreader-neutral-text) !important; +} + +================================ + mnt.ee CSS From b72217b38719c4aa516585b7a00d44c757ddd28b Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 8 Jun 2022 21:06:12 +0200 Subject: [PATCH 817/892] Fix for stackexchange (#9045) - Not required anymore since #8929 - Resolves #9032 --- src/config/dynamic-theme-fixes.config | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 586b6b4672a5..4283abc0cec5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16077,8 +16077,6 @@ INVERT .h-auto[alt="Role-playing Games"] a.js-gps-track::before img[alt="The Stack Exchange Network"] -aside.s-notice -aside.s-notice > * CSS body, From 72551b501511f4862f6404dc408332b71c29f249 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 8 Jun 2022 21:11:15 +0200 Subject: [PATCH 818/892] Fix for willthompson.co.uk (#9046) - Resolves #9037 --- src/config/dynamic-theme-fixes.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 4283abc0cec5..553252b54023 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -19262,6 +19262,14 @@ ymaps[class$="svg-icon-content"] > ymaps ================================ +willthompson.co.uk + +INVERT +body +body > * + +================================ + windows.php.net CSS From 0eb9e2875c7ca6a042e4fe8761309ffb0b5ce0b3 Mon Sep 17 00:00:00 2001 From: Myshor Date: Thu, 9 Jun 2022 21:32:43 +0200 Subject: [PATCH 819/892] Fix for strava.com (#9051) * Fix for strava.com Total refactor of icons invert as I found some black in dark mode. --- src/config/dynamic-theme-fixes.config | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 553252b54023..1e41b408b846 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16321,12 +16321,9 @@ CSS strava.com INVERT -.icon-dark .labelGroup #effort-box .gear::after -.icon-lg -.icon-edit .week.clearfix svg #compare-graph svg #compare-graph canvas @@ -16336,6 +16333,14 @@ nav svg .weekly-goal svg .sport-type footer img[alt="Strava"] .activity-indicator +.icon-other +#open-global-search-button +.icon-caret-down +.icon-share +.icon-kudo +.icon-comment +.icon-collapse +.icon-sm CSS .base-chart .grid-line, @@ -16371,10 +16376,10 @@ CSS } IGNORE IMAGE ANALYSIS -.app-icon.icon-nav-training .app-icon.icon-fb .app-icon.icon-rowing .app-icon.icon-nordicski +.app-icon.icon-walk ================================ From 384c905282c9f0e49ce15c3b7dc29a9ec3f3c94e Mon Sep 17 00:00:00 2001 From: Myshor Date: Thu, 9 Jun 2022 22:07:57 +0200 Subject: [PATCH 820/892] Fix for ipko.pl (#9055) Changed class for iPKO logo to invert. --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 1e41b408b846..0e82b0d03b73 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9087,7 +9087,7 @@ INVERT ipko.pl INVERT -._16muV +.NB3WM CSS ._1IGN3 { From c4e56e9556f9dee4ff62c13c0436eebee50d04ee Mon Sep 17 00:00:00 2001 From: Myshor Date: Fri, 10 Jun 2022 00:14:41 +0200 Subject: [PATCH 821/892] fix for onet.pl (#9056) Refactor for black icons. --- src/config/dynamic-theme-fixes.config | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0e82b0d03b73..32cfdc4c6283 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12893,19 +12893,21 @@ INVERT .forecast img .icon-shareIcon svg .locationName svg -.logoImage +.logo-cls-1 .logoImageRight .serviceIcon .sheet .weatherBox .iconNow -.weatherIcon +[class*="weatherIcon"] .websiteLogo a.serviceLogo img img[alt="O!Konto"] img[alt="Plejada.pl"] -svg[class="menuIconClose"] ul.contentList img.icon +svg[class*="MenuIcon"] +svg[class*="LoginIcon"] .weatherExtrasWidget__category-image img +[class*="SponsorImage"] CSS .mainBoxBgHolder { From 02d1cc954d81509be003c48a3e4b706efa4b428c Mon Sep 17 00:00:00 2001 From: Myshor Date: Fri, 10 Jun 2022 22:57:49 +0200 Subject: [PATCH 822/892] Fix for strava.com (#9062) Fix for two icons related to segments private records. --- src/config/dynamic-theme-fixes.config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 32cfdc4c6283..8410524a9fa4 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16342,7 +16342,8 @@ footer img[alt="Strava"] .icon-kudo .icon-comment .icon-collapse -.icon-sm +.icon-sm:not([class*="icon-at-pr"]):not(.icon-run) +.icon-star CSS .base-chart .grid-line, From 076d90a40a0be7a5b077f06110abb02c3e2379e4 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Fri, 10 Jun 2022 22:04:35 +0100 Subject: [PATCH 823/892] Description according to policies + Translate tool (#9063) - CWS policies ask to describe all the unnecessary functionality. - Use Google Translate to translate single lines. --- package.json | 3 +- src/_locales/ar.config | 2 + src/_locales/be.config | 2 + src/_locales/bn.config | 2 + src/_locales/cs.config | 2 + src/_locales/de.config | 2 + src/_locales/el.config | 2 + src/_locales/en-GB.config | 2 + src/_locales/en-US.config | 2 + src/_locales/en.config | 2 + src/_locales/es.config | 2 + src/_locales/fa-IR.config | 2 + src/_locales/fa.config | 2 + src/_locales/fil.config | 2 + src/_locales/fr.config | 2 + src/_locales/he.config | 2 + src/_locales/hi.config | 2 + src/_locales/id.config | 2 + src/_locales/it.config | 2 + src/_locales/ja.config | 2 + src/_locales/ko.config | 2 + src/_locales/ms.config | 2 + src/_locales/nl.config | 2 + src/_locales/no.config | 2 + src/_locales/pl.config | 2 + src/_locales/pt-BR.config | 2 + src/_locales/pt-PT.config | 2 + src/_locales/ro.config | 2 + src/_locales/ru.config | 2 + src/_locales/si.config | 2 + src/_locales/sk.config | 2 + src/_locales/sr.config | 2 + src/_locales/sv.config | 2 + src/_locales/te.config | 2 + src/_locales/th.config | 2 + src/_locales/tr.config | 2 + src/_locales/uk.config | 2 + src/_locales/vi.config | 2 + src/_locales/zh-CN.config | 2 + src/_locales/zh-TW.config | 2 + tasks/translate.js | 93 +++++++++++++++++++++++++++++++++++++++ tasks/utils.js | 34 ++++++++++++++ 42 files changed, 207 insertions(+), 1 deletion(-) create mode 100644 tasks/translate.js diff --git a/package.json b/package.json index 3d2a2709b673..6494de715f18 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,8 @@ "test:project": "jest --config=tests/project/jest.config.js", "test:unit": "jest --config=tests/unit/jest.config.js", "test:unit:debug": "node --inspect-brk ./node_modules/jest/bin/jest --config=tests/unit/jest.config.js --runInBand --no-cache --watch", - "test:update-snapshots": "npm run test -- --updateSnapshot && npm run test:project -- --updateSnapshot" + "test:update-snapshots": "npm run test -- --updateSnapshot && npm run test:project -- --updateSnapshot", + "translate-line": "node ./tasks/translate.js --line" }, "main": "darkreader.js", "repository": { diff --git a/src/_locales/ar.config b/src/_locales/ar.config index cd74f64bcac8..fa1ae1b96e6d 100644 --- a/src/_locales/ar.config +++ b/src/_locales/ar.config @@ -178,6 +178,8 @@ بإمكانك ضبط السطوع، التباين، الفلتر البني، الوضع المظلم، إعدادات الخط وقائمة التجاهل. +قد نطلب منك دعم تطوير التطبيق من خلال تبرع. قد ترى أخبارًا حول Dark Reader في قائمة الإعدادات المنبثقة. هناك أدوات المطور للمستخدمين ذوي الخبرة. + لا يقوم Dark Reader بعرض إعلانات ولا يقوم بإرسال بيانات المستخدم إلى أي مكان. الإضافة مفتوحة المصدر بالكامل https://github.com/darkreader/darkreader قبل التثبيت قم بتعطيل الإضافات المماثلة. استمتع بالمشاهدة! diff --git a/src/_locales/be.config b/src/_locales/be.config index 5f8ef149b3e9..f609031dd153 100644 --- a/src/_locales/be.config +++ b/src/_locales/be.config @@ -178,6 +178,8 @@ Маецца магчымасць наладжваць яркасць, кантраснасць, шрыфт, рэжым інверсіі, рэжым накладання жоўтага фільтра (сэпія). +Мы можам папрасіць вас падтрымаць распрацоўку прыкладання ахвяраваннем. Вы можаце ўбачыць навіны аб Dark Reader ва ўсплывальным акне налад. Ёсць інструменты распрацоўшчыка для вопытных карыстальнікаў. + Dark Reader ня ўбудоўвае рэкламу і не збірае дадзеныя карыстальніка, увесь зыходны код адкрыты https://github.com/darkreader/darkreader Перад усталёўкай адключыце падобныя пашырэнні. Прыемнага прагляду! diff --git a/src/_locales/bn.config b/src/_locales/bn.config index 4a25424fd07f..deaa766f5cd3 100644 --- a/src/_locales/bn.config +++ b/src/_locales/bn.config @@ -178,6 +178,8 @@ আপনি উজ্জ্বলতা, কনট্রাস্ট, সেপিয়া ফিল্টার, ডার্ক মোড, ফন্ট সেটিংস এবং ইগনোর-লিস্ট সমন্বয় করতে পারেন। +আমরা আপনাকে অনুদান দিয়ে অ্যাপটির বিকাশে সহায়তা করতে বলতে পারি। আপনি সেটিংস পপআপে ডার্ক রিডার সম্পর্কে খবর দেখতে পারেন। অভিজ্ঞ ব্যবহারকারীদের জন্য বিকাশকারী সরঞ্জাম রয়েছে। + Dark Reader বিজ্ঞাপন দেখায় না এবং ব্যবহারকারীর ডেটা কোথাও প্রেরণ করে না। এটি সম্পূর্ণ ওপেন সোর্স https://github.com/darkreader/darkreader ইনস্টল করার আগে অনুরূপ এক্সটেনশন ডিজ্যাবল করুন এবং এক্সটেনশনটি উপভোগ করুন! diff --git a/src/_locales/cs.config b/src/_locales/cs.config index f6f35010eba2..513fca37c1a3 100644 --- a/src/_locales/cs.config +++ b/src/_locales/cs.config @@ -178,6 +178,8 @@ Toto k očím šetrné rozšíření přepíná stránky do nočního režimu t Můžete upravit jas, kontrast, sépiový filtr, tmavý mód, nastavení písma a seznam ignorovaných stránek. +Můžeme vás požádat, abyste podpořili vývoj aplikace darem. Novinky o Dark Reader můžete vidět ve vyskakovacím okně nastavení. Pro zkušené uživatele existují nástroje pro vývojáře. + Dark Reader neobsahuje reklamy a nikam neodesílá data uživatele. Projekt je plně open-source a repositář je možné nalézt na https://github.com/darkreader/darkreader Před instalací vypněte všechna podobná rozšíření. Přejeme příjemné surfování! diff --git a/src/_locales/de.config b/src/_locales/de.config index 956534f61c92..774fd408cb9b 100644 --- a/src/_locales/de.config +++ b/src/_locales/de.config @@ -178,6 +178,8 @@ Zum Schutz der Augen ermöglicht diese Erweiterung das Erstellen dunkler Farblay Helligkeit, Kontrast, Sepia-Filter, Dark-Modus, Schrifteinstellungen und Ignorier-Liste können manuell verwaltet und individuell eingestellt werden. +Wir können Sie bitten, die Entwicklung der App mit einer Spende zu unterstützen. Möglicherweise sehen Sie im Einstellungs-Popup Neuigkeiten über Dark Reader. Es gibt Entwicklertools für erfahrene Benutzer. + Dark Reader zeigt dabei keine Werbung und sendet keine Benutzerdaten irgendwohin. Es ist komplett quelloffen: https://github.com/darkreader/darkreader Beachten Sie, dass Sie ähnliche Erweiterungen deaktivieren sollen, bevor Sie Dark Reader installieren. Viel Spaß beim angenehmeren Surfen! diff --git a/src/_locales/el.config b/src/_locales/el.config index 48649d781f6d..970d3f242129 100644 --- a/src/_locales/el.config +++ b/src/_locales/el.config @@ -178,6 +178,8 @@ Sepia Μπορείτε να προσαρμόσετε φωτεινότητα, αντίθεση, φίλτρο sepia, σκούρα εμφάνιση και λίστα ιστσελίδων στις οποίες το πρόσθετο δεν θα παρεμβαίνει. +Μπορεί να σας ζητήσουμε να υποστηρίξετε την ανάπτυξη της εφαρμογής με μια δωρεά. Μπορεί να δείτε νέα σχετικά με το Dark Reader στο αναδυόμενο παράθυρο ρυθμίσεων. Υπάρχουν Εργαλεία προγραμματιστών για έμπειρους χρήστες. + Το Dark Reader δεν εμφανίζει διαφιμήσεις ούτε κάνει οποιαδήποτε αποστολή στατιστικών/πληροφορίών του χρήστη. Είναι 100% ανοικτού κώδικά https://github.com/darkreader/darkreader Πριν εγκαταστήσετε το πρόσθετο αυτό θα πρέπει να αφαιρέσετε παρόμοια πρόσθετα. Καλό σερφάρισμα! diff --git a/src/_locales/en-GB.config b/src/_locales/en-GB.config index 97b2a84c1eeb..12044c43d810 100644 --- a/src/_locales/en-GB.config +++ b/src/_locales/en-GB.config @@ -178,6 +178,8 @@ This eye-care extension enables night mode by creating dark themes for websites You can adjust the brightness, contrast, sepia filter, dark mode, font settings and the ignore-list. +We may ask you to support the development of the app with a donation. You may see news about Dark Reader in the settings popup. There are Developer Tools for experienced users. + Dark Reader doesn't show ads and doesn't send users' data anywhere. It's fully open-source: https://github.com/darkreader/darkreader Before you install it, disable similar extensions. Enjoy watching! diff --git a/src/_locales/en-US.config b/src/_locales/en-US.config index 8b84dba34a73..4e4f0d89621d 100644 --- a/src/_locales/en-US.config +++ b/src/_locales/en-US.config @@ -178,6 +178,8 @@ This eye-care extension enables night mode by creating dark themes for websites You can adjust the brightness, contrast, sepia filter, dark mode, font settings and the ignore-list. +We may ask you to support the development of the app with a donation. You may see news about Dark Reader in the settings popup. There are Developer Tools for experienced users. + Dark Reader doesn't show ads and doesn't send users' data anywhere. It's fully open-source: https://github.com/darkreader/darkreader Before you install it, disable similar extensions. Enjoy watching! diff --git a/src/_locales/en.config b/src/_locales/en.config index 8b84dba34a73..4e4f0d89621d 100644 --- a/src/_locales/en.config +++ b/src/_locales/en.config @@ -178,6 +178,8 @@ This eye-care extension enables night mode by creating dark themes for websites You can adjust the brightness, contrast, sepia filter, dark mode, font settings and the ignore-list. +We may ask you to support the development of the app with a donation. You may see news about Dark Reader in the settings popup. There are Developer Tools for experienced users. + Dark Reader doesn't show ads and doesn't send users' data anywhere. It's fully open-source: https://github.com/darkreader/darkreader Before you install it, disable similar extensions. Enjoy watching! diff --git a/src/_locales/es.config b/src/_locales/es.config index 4225ff00c345..17cd2385afc8 100644 --- a/src/_locales/es.config +++ b/src/_locales/es.config @@ -178,6 +178,8 @@ Esta extensión que cuida los ojos habilita el modo nocturno, creando temas oscu Puede ajustar brillo, contraste, filtro sepia, modo oscuro, configuración de fuentes y lista de ignorados +Es posible que le pidamos que apoye el desarrollo de la aplicación con una donación. Es posible que vea noticias sobre Dark Reader en la ventana emergente de configuración. Existen herramientas de desarrollo para usuarios experimentados. + Dark Reader no muestra publicidad y no envía la información del usuario a ningún lado. Es totalmente de código abierto https://github.com/darkreader/darkreader Antes de instalarlo, desactive extensiones similares. Disfrute mirando! diff --git a/src/_locales/fa-IR.config b/src/_locales/fa-IR.config index 33d74253c912..ffff0088eb8a 100644 --- a/src/_locales/fa-IR.config +++ b/src/_locales/fa-IR.config @@ -178,6 +178,8 @@ شما میتوانید میزان روشنایی، کنتراست، فیلتر قرمز قهوه ای، حالت تاریک، نوع قلم و لیست سایت های نادیده گرفته شده را تنظیم کنید. +ممکن است از شما بخواهیم با کمک مالی از توسعه برنامه حمایت کنید. ممکن است اخبار مربوط به Dark Reader را در پنجره بازشو ببینید. ابزارهای توسعه دهنده برای کاربران با تجربه وجود دارد. + دارک ریدر تبلیغات نشان نمیدهد و اطلاعات کاربران را برای جایی ارسال نمیکند. همچنین بصورت کامل متن باز است https://github.com/darkreader/darkreader قبل از نصب افزونه های مشابه را حذف کنید. از تماشا کردن لذت ببرید! diff --git a/src/_locales/fa.config b/src/_locales/fa.config index 33d74253c912..ffff0088eb8a 100644 --- a/src/_locales/fa.config +++ b/src/_locales/fa.config @@ -178,6 +178,8 @@ شما میتوانید میزان روشنایی، کنتراست، فیلتر قرمز قهوه ای، حالت تاریک، نوع قلم و لیست سایت های نادیده گرفته شده را تنظیم کنید. +ممکن است از شما بخواهیم با کمک مالی از توسعه برنامه حمایت کنید. ممکن است اخبار مربوط به Dark Reader را در پنجره بازشو ببینید. ابزارهای توسعه دهنده برای کاربران با تجربه وجود دارد. + دارک ریدر تبلیغات نشان نمیدهد و اطلاعات کاربران را برای جایی ارسال نمیکند. همچنین بصورت کامل متن باز است https://github.com/darkreader/darkreader قبل از نصب افزونه های مشابه را حذف کنید. از تماشا کردن لذت ببرید! diff --git a/src/_locales/fil.config b/src/_locales/fil.config index 0a09a6f8863b..a658c1c8f4bd 100644 --- a/src/_locales/fil.config +++ b/src/_locales/fil.config @@ -178,6 +178,8 @@ Mabilisang binubuksan ng ekstensyong ito ang night mode sa pamamagitan ng madili Puwede mong i-adjust ang liwanag, contrast, sepia filter, dark mode, mga setting ng font at ang ignore-list. +Maaari naming hilingin sa iyo na suportahan ang pagbuo ng app gamit ang isang donasyon. Maaari kang makakita ng mga balita tungkol sa Dark Reader sa popup ng mga setting. Mayroong Mga Tool ng Developer para sa mga may karanasang user. + Hindi nagpapakita ng mga ad ang Dark Reader o ipinapadala ang iyong data kung saan-saan. Open-source ito: https://github.com/darkreader/darkreader Bago mo ikabit (i-install) ito, tanggalin muna ang mga katulad na ekstensyon. Magsaya sa panonood! diff --git a/src/_locales/fr.config b/src/_locales/fr.config index e8cd15e4d79a..a625c06d41b5 100644 --- a/src/_locales/fr.config +++ b/src/_locales/fr.config @@ -178,6 +178,8 @@ Cette extension de navigateur implémente un thème sombre global en créant à Vous pouvez également ajuster la luminosité, le contraste, le filtre sépia, le thème sombre, la police du texte ainsi que la liste des sites ignorés par l'extension. +Nous pouvons vous demander de soutenir le développement de l'application par un don. Vous pouvez voir des informations sur Dark Reader dans la fenêtre contextuelle des paramètres. Il existe des outils de développement pour les utilisateurs expérimentés. + Dark Reader n'intègre pas de publicités et ne partage vos données avec personne d'autre. Il est entièrement open-source. https://github.com/darkreader/darkreader Il est nécessaire de désactiver toute extension similaire à Dark Reader pour que celle-ci fonctionne correctement. Profitez-en et prenez soin de vos yeux! diff --git a/src/_locales/he.config b/src/_locales/he.config index 2611116859e4..ac37acfbc469 100644 --- a/src/_locales/he.config +++ b/src/_locales/he.config @@ -178,6 +178,8 @@ Dev tools ניתן להתאים את הבהירות, הניגודיות, מסנן חום-אדמדם, מצב כהה, הגדרות גופן ורשימת אתרים להתעלמות. +אנו עשויים לבקש ממך לתמוך בפיתוח האפליקציה בתרומה. ייתכן שתראה חדשות על Dark Reader בחלון הקופץ של ההגדרות. ישנם כלים למפתחים למשתמשים מנוסים. + Reader Dark אינו מציג מודעות ואינו שולח את נתוני המשתמש לשום מקום. זהו קוד פתוח לחלוטין https://github.com/darkreader/darkreader לצורך פעולה תקינה, השבת תוספים דומים. צפייה נעימה! diff --git a/src/_locales/hi.config b/src/_locales/hi.config index a69f911c7bea..426e2296d6da 100644 --- a/src/_locales/hi.config +++ b/src/_locales/hi.config @@ -178,6 +178,8 @@ आप चमक, कंट्रास्ट, सेपिया फ़िल्टर, डार्क मोड, फ़ॉन्ट सेटिंग्स और न चलन-सूची समायोजित कर सकते हैं। +हम आपसे दान के साथ ऐप के विकास का समर्थन करने के लिए कह सकते हैं। आप सेटिंग पॉपअप में डार्क रीडर के बारे में समाचार देख सकते हैं। अनुभवी उपयोगकर्ताओं के लिए डेवलपर टूल हैं। + डार्क रीडर विज्ञापन नहीं दिखाता है और कहीं भी उपयोगकर्ता का डेटा नहीं भेजता है। यह पूरी तरह से मुक्त-स्रोत है https://github.com/darkreader/darkreader डार्क रीडर का उपयोग करने से पहले इसी तरह की एक्सटेंशन अक्षम करें। देखने का मज़ा लें! diff --git a/src/_locales/id.config b/src/_locales/id.config index 20cb5534b299..19002bf21db1 100644 --- a/src/_locales/id.config +++ b/src/_locales/id.config @@ -178,6 +178,8 @@ Ekstensi ini mengaktifkan mode malam dengan membuat halaman situs web menjadi ge Anda bisa mengatur kecerahan, kontras, filter sepia, mode malam, setelan fon dan pengecualian situs web. +Kami mungkin meminta Anda untuk mendukung pengembangan aplikasi dengan donasi. Anda mungkin melihat berita tentang Pembaca Gelap di sembulan pengaturan. Ada Alat Pengembang untuk pengguna berpengalaman. + Dark Reader tidak menampilkan iklan dan tidak mengirimkan data penggunan ke manapun. Sepenuhnya bersumber terbuka: https://github.com/darkreader/darkreader Sebelum memasang, silakan nonaktifkan ekstensi serupa. Selamat berselancar! diff --git a/src/_locales/it.config b/src/_locales/it.config index bcf966410ce2..4c751542fb39 100644 --- a/src/_locales/it.config +++ b/src/_locales/it.config @@ -178,6 +178,8 @@ Questa estensione si prende cura dei tuoi occhi e ti consente di creare al volo Puoi modificare luminosità, contrasto, filtro seppia, modalità notturna, caratteri e lista di siti da ignorare. +Potremmo chiederti di sostenere lo sviluppo dell'app con una donazione. Potresti vedere notizie su Dark Reader nel popup delle impostazioni. Sono disponibili strumenti per sviluppatori per utenti esperti. + Dark Reader non mostra pubblicità e non invia i dati dell'utente da nessuna parte. È pienamente open-source https://github.com/darkreader/darkreader Prima di installare disabilita altre estensioni simili. Buona lettura! diff --git a/src/_locales/ja.config b/src/_locales/ja.config index 24f756476fc3..baa1ed6111cb 100644 --- a/src/_locales/ja.config +++ b/src/_locales/ja.config @@ -178,6 +178,8 @@ 明るさ、コントラスト、セピアフィルター、ダークモード、フォント設定、無視リストを調整することができます。 +寄付でアプリの開発をサポートするようお願いする場合があります。設定ポップアップにDarkReaderに関するニュースが表示される場合があります。経験豊富なユーザー向けの開発ツールがあります。 + Dark Readerは広告を表示せず、ユーザーのデータをどこにも送信しません。 また完全にオープンソースです https://github.com/darkreader/darkreader インストールする前に、同様の拡張機能を無効にしてください。 ブラウジングをお楽しみください! diff --git a/src/_locales/ko.config b/src/_locales/ko.config index 4175000a84bf..d3dc72039443 100644 --- a/src/_locales/ko.config +++ b/src/_locales/ko.config @@ -178,6 +178,8 @@ 밝기, 대비, 세피아 필터, 어두운 모드, 폰트와 예외 목록을 설정할 수 있습니다. +기부로 앱 개발 지원을 요청할 수 있습니다. 설정 팝업에서 Dark Reader에 대한 뉴스를 볼 수 있습니다. 숙련된 사용자를 위한 개발자 도구가 있습니다. + 다크 리더는 광고를 보여주지 않으며 사용자의 데이터를 어디에도 보내지 않습니다. 완전히 오픈 소스입니다. https://github.com/darkreader/darkreader 설치하기 전에 비슷한 기능을 가진 확장 기능을 사용 해제하시기 바랍니다. 편하게 읽으십시오! diff --git a/src/_locales/ms.config b/src/_locales/ms.config index b70ac0ba9c1e..a89e8ad996aa 100644 --- a/src/_locales/ms.config +++ b/src/_locales/ms.config @@ -178,6 +178,8 @@ Ekstensi penjagaan mata ini mendayakan mod malam dengan mencipta tema gelap untu Anda boleh melaraskan kecerahan, kontras, penapis sepia, mod gelap, tetapan fon dan senarai abaikan. +Kami mungkin meminta anda menyokong pembangunan aplikasi dengan sumbangan. Anda mungkin melihat berita tentang Pembaca Gelap dalam pop timbul tetapan. Terdapat Alat Pembangun untuk pengguna berpengalaman. + Dark Reader tidak memaparkan iklan dan tidak menghantar data pengguna ke mana-mana sahaja. Ia adalah sumber terbuka sepenuhnya: https://github.com/darkreader/darkreader Sebelum anda memasangnya, lumpuhkan sambungan yang serupa. Selamat menonton! diff --git a/src/_locales/nl.config b/src/_locales/nl.config index 4813308b609a..36439fe2a004 100644 --- a/src/_locales/nl.config +++ b/src/_locales/nl.config @@ -178,6 +178,8 @@ Deze oogzorgextensie heeft een nachtstand die automatisch donkere thema's maakt Je kunt de helderheid, het contrast, het kleurenfilter, de donkere modus, het lettertype en de lijst van te negeren websites geheel instellen naar wens. +We kunnen je vragen om de ontwikkeling van de app te ondersteunen met een donatie. Mogelijk ziet u nieuws over Dark Reader in de pop-up met instellingen. Er zijn Developer Tools voor ervaren gebruikers. + Dark Reader laat nooit advertenties zien en gebruikt nooit je gegevens. Deze extensie is volledig open-source op https://github.com/darkreader/darkreader Voor de installatie is het aangeraden soortgelijke extensies eerst uit te schakelen. Veel kijkplezier! diff --git a/src/_locales/no.config b/src/_locales/no.config index 89aaabd7073e..ff18d68c0990 100644 --- a/src/_locales/no.config +++ b/src/_locales/no.config @@ -178,6 +178,8 @@ Denne øye-beskyttelse utvidelsen aktiverer nattmodus og lager mørke temaer for Du kan regulere lysstyrken, kontrasten, bruntone, nattmodus, skrifttype-instillinger og ignorer-liste. +Vi kan be deg om å støtte utviklingen av appen med en donasjon. Du kan se nyheter om Dark Reader i popup-vinduet for innstillinger. Det finnes utviklerverktøy for erfarne brukere. + Dark Reader viser ikke reklame og sender ikke ut brukerens data. Utvidelsen er åpen-kilde tilgjengelig på https://github.com/darkreader/darkreader Deaktiver lignende utvidelser før du installerer. Nyt opplevelsen! diff --git a/src/_locales/pl.config b/src/_locales/pl.config index 8cc400d3c24e..11bf0b70c52f 100644 --- a/src/_locales/pl.config +++ b/src/_locales/pl.config @@ -178,6 +178,8 @@ To rozszerzenie dbające o zdrowie oczu aktywuje tryb nocny tworząc dynamiczne Możesz dopasować jasność, kontrast, filtr sepii, tryb ciemny, ustawienia czcionki i listę ignorowanych stron. +Możemy poprosić Cię o wsparcie rozwoju aplikacji darowizną. Możesz zobaczyć wiadomości o Dark Reader w wyskakującym okienku ustawień. Istnieją narzędzia programistyczne dla doświadczonych użytkowników. + Dark reader nie wyświetla reklam ani nie wysyła nigdzie danych użytkowników. Jest oprogramowaniem o w pełni otwartym kodzie źródłowym https://github.com/darkreader/darkreader Przed instalacją usuń podobne rozszerzenia. Miłego oglądania! diff --git a/src/_locales/pt-BR.config b/src/_locales/pt-BR.config index 210efce0a39e..3a17d9786300 100644 --- a/src/_locales/pt-BR.config +++ b/src/_locales/pt-BR.config @@ -178,6 +178,8 @@ Esta extensão ajuda os seus olhos a relaxarem ao criar e aplicar o modo escuro Você pode ajustar o brilho, o contraste, os tons de sépia, o modo escuro, as configurações de fonte e a lista negra. +Podemos pedir que você apoie o desenvolvimento do aplicativo com uma doação. Você pode ver notícias sobre o Dark Reader no pop-up de configurações. Existem Ferramentas de Desenvolvedor para usuários experientes. + O Dark Reader não exibe anúncios e não compartilha os dados de seus usuários. O código-fonte é totalmente aberto (open-source): https://github.com/darkreader/darkreader Antes de instalar esta extensão, desative extensões semelhantes. Divirta-se! diff --git a/src/_locales/pt-PT.config b/src/_locales/pt-PT.config index 756be23de759..5fdc49f7cf22 100644 --- a/src/_locales/pt-PT.config +++ b/src/_locales/pt-PT.config @@ -178,6 +178,8 @@ Esta extensão de cuidados com os olhos ativa o modo noturno ao criar temas escu Pode ajustar o brilho, o contraste, o filtro sépia, o modo escuro, as definições do tipo de letra e a lista de ignorados. +Podemos pedir que você apoie o desenvolvimento do aplicativo com uma doação. Você pode ver notícias sobre o Dark Reader no pop-up de configurações. Existem Ferramentas de Desenvolvedor para usuários experientes. + O Dark Reader não mostra anúncios e não envia os dados dos utilizadores para lado nenhum. É totalmente de código aberto: https://github.com/darkreader/darkreader Antes de o instalar, desative extensões semelhantes. Desfrute da visualização! diff --git a/src/_locales/ro.config b/src/_locales/ro.config index 779fabab4903..18c8748f9926 100755 --- a/src/_locales/ro.config +++ b/src/_locales/ro.config @@ -178,6 +178,8 @@ Această extensie, care se îngrijește de ochii tăi, permite activarea modului Poți ajusta luminozitatea, contrastul, filtrul sepia, modul întunecat, setările fontului si lista siteurilor de ignorat. +Vă putem cere să susțineți dezvoltarea aplicației printr-o donație. Este posibil să vedeți știri despre Dark Reader în fereastra pop-up de setări. Există instrumente pentru dezvoltatori pentru utilizatorii experimentați. + Dark Reader nu afișează reclame și nu trimite datele utilizatorului nicăieri. Este în întregime open-source https://github.com/darkreader/darkreader Înainte de instalare dezactivează extensile similare. Vizionare plăcută! diff --git a/src/_locales/ru.config b/src/_locales/ru.config index f68081d2fd61..dc4aaa1c0f28 100644 --- a/src/_locales/ru.config +++ b/src/_locales/ru.config @@ -178,6 +178,8 @@ Имеется возможность настраивать яркость, контрастность, шрифт, режим инверсии, режим наложения жёлтого фильтра (сепия). +Мы можем попросить вас поддержать разработку приложения пожертвованием. Вы можете увидеть новости о Dark Reader во всплывающем окне настроек. Есть инструменты разработчика для опытных пользователей. + Дарк Ридер не встраивает рекламу и не собирает пользовательские данные. Весь исходный код открыт https://github.com/darkreader/darkreader Перед установкой отключите подобные расширения. Приятного просмотра! diff --git a/src/_locales/si.config b/src/_locales/si.config index 3e75452d3929..6112c4952c54 100644 --- a/src/_locales/si.config +++ b/src/_locales/si.config @@ -178,6 +178,8 @@ Dev මෙවලම් ඔබට දීප්තිය (brightness), contrast, sepia ෆිල්ටරය, අඳුරු මාදිලිය, අකුරු (font) සැකසුම් සහ නොසලකා හැරීම් ලැයිස්තුව (ignore-list) සකස් කළ හැකිය. +පරිත්‍යාගයක් සමඟ යෙදුමේ සංවර්ධනයට සහාය දෙන ලෙස අපි ඔබෙන් ඉල්ලා සිටිය හැක. ඔබට සැකසීම් උත්පතන තුළ Dark Reader පිළිබඳ පුවත් දැකිය හැක. පළපුරුදු පරිශීලකයින් සඳහා සංවර්ධක මෙවලම් තිබේ. + Dark Reader දැන්වීම් නොපෙන්වන අතර පරිශීලකයාගේ දත්ත කොතැනකටවත් යවන්නේ නැත. එය සම්පූර්ණයෙන්ම විවෘත මූලාශ්‍රයකි (open-source) https://github.com/darkreader/darkreader ඔබ ස්ථාපනය කිරීමට පෙර සමාන දිගු (extensions) අක්‍රීය කරන්න. නැරඹීමෙන් විනෝද වන්න! diff --git a/src/_locales/sk.config b/src/_locales/sk.config index ddaa3e6496f2..d39c00f25319 100644 --- a/src/_locales/sk.config +++ b/src/_locales/sk.config @@ -178,6 +178,8 @@ Toto rozšírenie je šetrné k očiam, vytvára nočný režim pre stránky za Upravovať môžete jas, kontrast, sépiový filter, tmavý režim, nastavenia písma a zoznam ignorovaných stránok. +Môžeme vás požiadať, aby ste podporili vývoj aplikácie darom. Novinky o Dark Reader môžete vidieť vo vyskakovacom okne nastavení. Pre skúsených používateľov existujú nástroje pre vývojárov. + Dark Reader je bez reklám a nikam neodosiela žiadne dáta užívateľov. Má plne otvorený zdrojový kód https://github.com/darkreader/darkreader Pred inštaláciou zakážte podobné rozšírenia. Užite si sledovanie! diff --git a/src/_locales/sr.config b/src/_locales/sr.config index 2eb405a7cf52..d7e03f6bd9f4 100644 --- a/src/_locales/sr.config +++ b/src/_locales/sr.config @@ -178,6 +178,8 @@ Ova ekstenzija brine o vašim očima tako što omogućava tamnu temu za sajtove. Možete podesiti osvetljenje, kontrast, sepija filter, tamni mod, font i listu ignorisanih sajtova. +Možemo vas zamoliti da podržite razvoj aplikacije donacijom. Možda ćete videti vesti o Dark Reader-u u iskačućem prozoru za podešavanja. Postoje alatke za programere za iskusne korisnike. + Dark Reader ne prikazuje reklame i nigde ne šalje podatke korisnika. Kod ekstenzije je u potpunosti otvoren: https://github.com/darkreader/darkreader Pre instalacije, isključite druge slične ekstenzije. Uživajte! diff --git a/src/_locales/sv.config b/src/_locales/sv.config index e33b87c6ebe2..05fa389ba73b 100644 --- a/src/_locales/sv.config +++ b/src/_locales/sv.config @@ -178,6 +178,8 @@ Detta ögonskonande tillägg aktiverar ett nattläge som skapar mörka teman på Du kan justera ljusstyrkan, kontrasten, sepiafiltret, mörkerläget, typsnittet och ignoreringslistan. +Vi kan be dig att stödja utvecklingen av appen med en donation. Du kan se nyheter om Dark Reader i popup-fönstret för inställningar. Det finns utvecklarverktyg för erfarna användare. + Dark Reader visar inte reklam och skickar inte användardata någonstans. Den har helt öppen källkod https://github.com/darkreader/darkreader Inaktivera liknande tillägg innan du installerar. Trevlig läsning! diff --git a/src/_locales/te.config b/src/_locales/te.config index b542b31e70f8..1792ac0b0b36 100644 --- a/src/_locales/te.config +++ b/src/_locales/te.config @@ -178,6 +178,8 @@ మీరు ప్రకాశం, కాంట్రాస్ట్, సెపియా ఫిల్టర్, డార్క్ మోడ్, ఫాంట్ సెట్టింగులు మరియు విస్మరించే-జాబితాను సర్దుబాటు చేయవచ్చు. +మేము విరాళంతో యాప్ అభివృద్ధికి మద్దతు ఇవ్వమని మిమ్మల్ని అడగవచ్చు. మీరు సెట్టింగ్‌ల పాప్‌అప్‌లో డార్క్ రీడర్ గురించిన వార్తలను చూడవచ్చు. అనుభవజ్ఞులైన వినియోగదారుల కోసం డెవలపర్ సాధనాలు ఉన్నాయి. + డార్క్ రీడర్ ప్రకటనలను చూపించదు మరియు వినియోగదారుల డేటాను ఎక్కడా పంపదు. ఇది పూర్తిగా ఓపెన్-సోర్స్: https://github.com/darkreader/darkreader మీరు దీన్ని ఇన్‌స్టాల్ చేయడానికి ముందు, ఇలాంటి పొడిగింపులను నిలిపివేయండి. చూడటం ఆనందించండి! diff --git a/src/_locales/th.config b/src/_locales/th.config index ddd54d2abf33..c6fce11dd037 100644 --- a/src/_locales/th.config +++ b/src/_locales/th.config @@ -178,6 +178,8 @@ คุณสามารถปรับแต่งความสว่าง, คอนทราสต์, สีซีเปีย, โหมดมืด, ตั้งค่าฟอนต์ และทำรายการยกเว้นได้ +เราอาจขอให้คุณสนับสนุนการพัฒนาแอพด้วยการบริจาค คุณอาจเห็นข่าวเกี่ยวกับ Dark Reader ในป๊อปอัปการตั้งค่า มีเครื่องมือสำหรับนักพัฒนาสำหรับผู้ใช้ที่มีประสบการณ์ + Dark Reader ไม่แสดงโฆษณา และไม่ส่งข้อมูลของผู้ใช้เด็ดขาด ตัวส่วนเสริมเป็นโอเพนซอร์สโดยสมบูรณ์ดูได้ที่ https://github.com/darkreader/darkreader ก่อนที่จะติดตั้ง ปิดส่วนเสริมที่ทำหน้าที่เหมือนๆกันก่อนนะ ขอให้สนุกกับธีมสีมืดนะ! diff --git a/src/_locales/tr.config b/src/_locales/tr.config index ba68d9069559..afb462c012bf 100644 --- a/src/_locales/tr.config +++ b/src/_locales/tr.config @@ -178,6 +178,8 @@ Bu göz bakım eklentisi web siteleri için anında koyu temalar oluşturarak ge Parlaklığı, kontrastı, sepya filtresini, koyu modu, yazı tipi ayarlarını ve yoksayma listesini ayarlayabilirsiniz. +Uygulamanın gelişimini bir bağışla desteklemenizi isteyebiliriz. Ayarlar açılır penceresinde Dark Reader ile ilgili haberleri görebilirsiniz. Deneyimli kullanıcılar için Geliştirici Araçları bulunmaktadır. + Dark Reader, reklam göstermez ve kullanıcının verilerini hiçbir yere göndermez. Tamamen açık kaynak kodludur. https://github.com/darkreader/darkreader Yüklemeden önce benzer uzantıları devre dışı bırakın. Gezintinin tadını çıkarın! diff --git a/src/_locales/uk.config b/src/_locales/uk.config index f57b5b953b6b..a9e81b6384cc 100644 --- a/src/_locales/uk.config +++ b/src/_locales/uk.config @@ -178,6 +178,8 @@ Ви можете налаштувати яскравість, контраст, сепію, темний вигляд, налаштування вигляду тексту та список нехтування. +Ми можемо попросити вас підтримати розробку програми пожертвуванням. Ви можете побачити новини про Dark Reader у спливаючому вікні налаштувань. Є інструменти розробника для досвідчених користувачів. + Dark Reader не містить рекламу і не надсилає дані користувача нікуди. Це розширення з відкритим кодом https://github.com/darkreader/darkreader Перед встановленням відімкніть подібні розширення. Насолоджуйтесь переглядом! diff --git a/src/_locales/vi.config b/src/_locales/vi.config index dbda1baf204f..52d125891e32 100644 --- a/src/_locales/vi.config +++ b/src/_locales/vi.config @@ -178,6 +178,8 @@ Tiện ích chăm sóc mắt này cho phép chế độ ban đêm tạo chủ đ Bạn có thể điều chỉnh độ sáng, độ tương phản, bộ lọc màu nâu đỏ, chế độ tối, cài đặt phông chữ và danh sách bỏ qua. +Chúng tôi có thể yêu cầu bạn hỗ trợ sự phát triển của ứng dụng bằng một khoản đóng góp. Bạn có thể thấy tin tức về Dark Reader trong cửa sổ bật lên cài đặt. Có Công cụ dành cho nhà phát triển cho người dùng có kinh nghiệm. + Dark Reader không hiển thị quảng cáo và không gửi dữ liệu của người dùng ở bất cứ đâu. Nó hoàn toàn là mã nguồn mở https://github.com/darkreader/darkreader Trước khi bạn cài đặt vô hiệu hóa các phần mở rộng tương tự. Thích xem! diff --git a/src/_locales/zh-CN.config b/src/_locales/zh-CN.config index f26bb5fc07d2..c38ad2e34b3a 100644 --- a/src/_locales/zh-CN.config +++ b/src/_locales/zh-CN.config @@ -178,6 +178,8 @@ 您可以调整亮度、对比度,应用棕褐色滤镜、黑暗模式,设置字体和忽略的网站列表。 +我们可能会要求您通过捐款来支持应用程序的开发。您可能会在设置弹出窗口中看到有关 Dark Reader 的新闻。有针对经验丰富的用户的开发人员工具。 + Dark Reader 无广告,也不会向任何地方发送用户的数据。它完全开源 https://github.com/darkreader/darkreader 安装前请禁用类似的扩展。冲浪愉快! diff --git a/src/_locales/zh-TW.config b/src/_locales/zh-TW.config index 580b16c62b59..240bc2b98ebb 100644 --- a/src/_locales/zh-TW.config +++ b/src/_locales/zh-TW.config @@ -178,6 +178,8 @@ 您可以調整亮度,對比度,套用棕褐色濾鏡,深色模式,設定字體和忽略的網站列表。 +我們可能會要求您通過捐款來支持應用程序的開發。您可能會在設置彈出窗口中看到有關 Dark Reader 的新聞。有針對經驗豐富的用戶的開發人員工具。 + Dark Reader 沒有廣告,也不會在任何地方發送用戶的資料。它完全開源於 https://github.com/darkreader/darkreader 安裝前請先停止使用類似的擴充套件,以避免衝突。瀏覽愉快! diff --git a/tasks/translate.js b/tasks/translate.js new file mode 100644 index 000000000000..54d723992aa0 --- /dev/null +++ b/tasks/translate.js @@ -0,0 +1,93 @@ +// @ts-check +const fs = require('fs').promises; +const {readFile, writeFile, httpsRequest, timeout, log} = require('./utils'); + +// To use this tool: +// 1. Edit a line in en.config. +// 2. Run `npm run translate-line 123` where 123 is a line number starting from 1. +// 3. The line will be translated and written into other locales. +// TODO: If neccessary, new @id and empty lines should be copied as well. +// TODO: Serbian translates into Cyrillic, but it is somehow possible to do Latin. + +/** @typedef {{locale: string; file: string; content: string}} LocaleFile */ + +const dir = 'src/_locales'; + +/** + * Translates `en` locale line for all locales + * @param {number} lineNumber Line number starting from 1 + */ +async function translateEnLine(lineNumber) { + log(`Translating line ${lineNumber}`); + + const locales = await getAllLocales(); + const enLocale = locales.find((l) => l.locale === 'en'); + const otherLocales = locales.filter((l) => l.locale !== 'en'); + + const enLines = enLocale.content.split('\n'); + const index = lineNumber - 1; + const line = enLines[index]; + + for (const l of otherLocales) { + await timeout(1000); + const translated = await translate(line, l.locale); + const lines = l.content.split('\n'); + lines.splice( + index, + // Replace the line if already exists + lines.length === enLines.length ? 1 : 0, + translated, + ); + await writeFile(`${dir}/${l.file}`, lines.join('\n')); + log(`${l.locale}: ${translated}`); + } + + log.ok('Translation done'); +} + +/** + * @returns {Promise} + */ +async function getAllLocales() { + const fileList = await fs.readdir(dir); + + /** @type {LocaleFile[]} */ + const locales = []; + + for (const file of fileList) { + if (!file.endsWith('.config')) { + continue; + } + const locale = file.substring(0, file.lastIndexOf('.config')); + const content = await readFile(`${dir}/${file}`); + locales.push({locale, file, content}); + } + + return locales; +} + +/** + * @param {string} text + * @param {string} lang + * @return {Promise} + */ +async function translate(text, lang) { + const url = new URL('https://translate.googleapis.com/translate_a/single'); + url.search = (new URLSearchParams({ + client: 'gtx', + sl: 'en-US', + tl: lang, + dt: 't', + dj: '1', + q: text, + })).toString(); + const response = await httpsRequest(url.toString()); + const translation = JSON.parse(response.text()); + return translation.sentences.map((s) => s.trans).join(''); +} + +const args = process.argv.slice(2); +if (args[0] === '--line') { + const lineNumber = Number(args[1]); + translateEnLine(lineNumber); +} diff --git a/tasks/utils.js b/tasks/utils.js index 808c1dce544f..04c30be56f01 100644 --- a/tasks/utils.js +++ b/tasks/utils.js @@ -1,5 +1,6 @@ // @ts-check const fs = require('fs').promises; +const https = require('https'); const path = require('path'); /** @type {{[color: string]: (text: string) => string}} */ @@ -100,6 +101,37 @@ async function getPaths(patterns) { return await globby(patterns); } +/** + * @param {number} delay + * @returns {Promise} + */ +function timeout(delay) { + return new Promise((resolve) => setTimeout(resolve, delay)); +} + +/** + * @param {string} url + * @returns {Promise<{buffer(): Buffer; text(encoding?: string): string; type(): string}>} + */ +function httpsRequest(url) { + return new Promise((resolve) => { + /** @type {any[]} */ + const data = []; + https.get(url, (response) => { + response + .on('data', (chunk) => data.push(chunk)) + .on('end', () => { + const buffer = Buffer.concat(data); + resolve({ + buffer: () => buffer, + text: (/** @type {BufferEncoding} */encoding = 'utf8') => buffer.toString(encoding), + type: () => response.headers['content-type'], + }); + }); + }); + }); +} + module.exports = { log, copyFile, @@ -108,4 +140,6 @@ module.exports = { removeFolder, writeFile, getPaths, + httpsRequest, + timeout, }; From ebad82b22fb146faa9b2a6a265bdedf508d6f89c Mon Sep 17 00:00:00 2001 From: Case_Of <31049012+CaseOf@users.noreply.github.com> Date: Sat, 11 Jun 2022 23:00:24 +0200 Subject: [PATCH 824/892] Fix for caf.fr (#9031) - Fix background image. --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8410524a9fa4..7ee03f4b6b98 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2872,6 +2872,16 @@ CSS ================================ +caf.fr + +CSS +#theme-contenu-cnaf .row[class*="conteneur-"][class*="-cnaf"] > [class*="col-"], +#theme-contenu-menu-background-cnaf { + background-image: none !important; +} + +================================ + caiyunapp.com INVERT From 0aa92f06d5e3323f06b6db3bdfd3c17b9ba1b609 Mon Sep 17 00:00:00 2001 From: Cole Crouter Date: Sat, 11 Jun 2022 15:04:43 -0600 Subject: [PATCH 825/892] Add dark site (#9048) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 930bd2b40ae8..33ee5bed34ce 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -775,6 +775,7 @@ psi.cynicaloptimist.me psyoptions.io ptt.cc pussthecat.org +pvplegacy.net pxseu.com pylon.bot qbraid.com From b6721c05206ad27789a7f378d635e39fbf56dc8d Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Sun, 12 Jun 2022 05:14:20 +0800 Subject: [PATCH 826/892] Fix for superbuy.com (#9052) - Invert logo --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7ee03f4b6b98..800e8fd0ad86 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16584,6 +16584,13 @@ INVERT ================================ +superbuy.com + +INVERT +.header-logo + +================================ + support.discord.com INVERT From 6043ed3ab5300e9e498e91a71a693d4b5300c506 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 11 Jun 2022 23:17:23 +0200 Subject: [PATCH 827/892] Fix for nbi.ku.dk (#9066) - Resolves #9050 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 800e8fd0ad86..af95873216cc 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -12186,6 +12186,15 @@ INVERT ================================ +nbi.ku.dk + +CSS +.tile-link { + color: var(--darkreader-neutral-color) !important; +} + +================================ + nejm.org INVERT From 4571734812870f41d74eeda9aba52523a47c3b71 Mon Sep 17 00:00:00 2001 From: ernl <48961712+ernl@users.noreply.github.com> Date: Sat, 11 Jun 2022 23:21:37 +0200 Subject: [PATCH 828/892] Add dark sites (#9060) --- src/config/dark-sites.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 33ee5bed34ce..4a87c32f92e3 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -317,6 +317,7 @@ epack.js.org epicgames.com/id epicgames.com/store erai-raws.info +ericnl.com escapefromtarkov.com escapefromtarkov.fandom.com esportal.com @@ -766,6 +767,7 @@ pre.fyp.nl premid.app primevideo.com progettosnaps.net +programsquared.com projectdiscovery.io protogen.dev protondb.com From 1b14786cf1643d3301184d38250413475be7cd2c Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Sun, 12 Jun 2022 05:24:48 +0800 Subject: [PATCH 829/892] Fix for sf-express.com (#9064) - Invert logo, map, and a button. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index af95873216cc..6ec70d5f8d6e 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15391,6 +15391,15 @@ INVERT ================================ +sf-express.com + +INVERT +.home-icon +.map +.order-btn + +================================ + shaneco.com INVERT From 9c63f29e3a349176081d91dc408ea9a930006d80 Mon Sep 17 00:00:00 2001 From: Erik Hanson Date: Sat, 11 Jun 2022 16:25:46 -0500 Subject: [PATCH 830/892] Fix for retracmirrors.com (#9004) - Fix background-image. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 6ec70d5f8d6e..7b828935b957 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14649,6 +14649,15 @@ body { ================================ +retracmirrors.com + +CSS +body, #app > div { + background-image: none !important; +} + +================================ + reuters.com INVERT From 1addb9e779c2f379ebcb2205f8b1225bc049d8d1 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 12 Jun 2022 00:11:34 +0200 Subject: [PATCH 831/892] Fix for community.progress.com (#9068) - Resolves #9067 --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7b828935b957..c5d4eab44380 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3791,6 +3791,16 @@ INVERT ================================ +community.progress.com + +CSS +:root { + --lwc-colorContentAreaBackground: var(--darkreader-neutral-background) !important; + --lwc-pageHeaderColorBackground: ${rgb(243, 243, 243)} !important; +} + +================================ + compass.pressekompass.net INVERT From 1804c425287e9d547c0ff75f21c3fc3b042b26df Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Mon, 13 Jun 2022 03:00:38 +0800 Subject: [PATCH 832/892] Fix for superbuy.com (#9070) - Invert another logo --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index c5d4eab44380..a2a06367ea72 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -16625,6 +16625,7 @@ superbuy.com INVERT .header-logo +.logo img ================================ From cd460e05016270bccf6fa1bf248cdc5fc7aa1657 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 13 Jun 2022 19:24:11 +0200 Subject: [PATCH 833/892] Fix for linustechtips.com (#9076) - Fix background-color on hover card(hovering over a user's avatar in the forum, shows this card) --- src/config/dynamic-theme-fixes.config | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a2a06367ea72..744dc5a63bcb 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10358,9 +10358,11 @@ INVERT .ipsMenu CSS -.ipsBadge, -a.ipsBadge { - --darkreader-bg--badge--background: ${white} linear-gradient(rgba(0,0,0,0.9), rgba(0,0,0,0.9)) +:root { + --darkreader-bg--badge--background: ${white} linear-gradient(rgba(0,0,0,0.9), rgba(0,0,0,0.9)) !important +} +.ipsHovercard { + background-color: ${#fff} !important; } ================================ From 8ae40f853c5c42924d922fc989ccaade018a8b6e Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 13 Jun 2022 21:14:29 +0200 Subject: [PATCH 834/892] Fix for magister.net (#9077) - Fix weird background image in grade's grid. --- src/config/dynamic-theme-fixes.config | 28 +++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 744dc5a63bcb..d55ca78e4bf1 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -439,18 +439,6 @@ CSS ================================ -accounts.magister.net - -INVERT -.bottom > img - -CSS -.splash-container { - z-index: 0 !important; -} - -================================ - accounts.zoho.com INVERT @@ -10685,6 +10673,22 @@ body { ================================ +magister.net + +INVERT +.bottom > img + +CSS +.splash-container { + z-index: 0 !important; +} +.cijfers-k-grid.k-grid .grade.empty { + background-image: none !important; + background-color: ${#cfcfcf} !important; +} + +================================ + mail.google.com INVERT From 00764c5673e0573cbaae98a7ebd07d1b77622392 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 17 Jun 2022 21:24:37 +0200 Subject: [PATCH 835/892] Fix for shopping.google.com (#9094) - Resolves #9073 --- src/config/dynamic-theme-fixes.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d55ca78e4bf1..babb716269ca 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -19750,6 +19750,7 @@ CSS background-image: none !important; } html, +body, img, [role="img"], video, iframe, #gb, a[href^="https://shopping.google.com"][href*="/lists"] > span { From d72856ad93fd0d4f6aeceede90135420b67cdec4 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 17 Jun 2022 21:25:53 +0200 Subject: [PATCH 836/892] Fix for postani-student.hr (#9095) - Resolves #9075 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index babb716269ca..7aa4e060eb3c 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13897,6 +13897,15 @@ img[alt="The Daily Swig"] ================================ +postani-student.hr + +CSS +body { + background-image: none !important; +} + +================================ + postnauka.ru INVERT From 1bb6175dabe5ddbc7a5c71409690de5d6d8f156a Mon Sep 17 00:00:00 2001 From: Nyako <87289390+NyakoFox@users.noreply.github.com> Date: Fri, 17 Jun 2022 16:04:12 -0400 Subject: [PATCH 837/892] Added dark sites (#9078) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 4a87c32f92e3..a757e0ee7662 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -534,6 +534,7 @@ kodenames.io kreatea.space kreato.cf krisoneil.com/home +kristal.cc krunker.io ksp.mff.cuni.cz kulbachny.com From 9f6e13f0325d7fcd9bfef6f77689bdbcf1bda9b6 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 17 Jun 2022 22:24:17 +0200 Subject: [PATCH 838/892] Fix for wikipedia.org (#9096) - Resolves #9085 --- src/config/dynamic-theme-fixes.config | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 7aa4e060eb3c..082d6eda60b0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -19196,8 +19196,6 @@ wikiless.org INVERT .mwe-math-fallback-image-inline .mwe-math-fallback-image-display -.MathJax:not(span#MathJax_Zoom > .MathJax) -span#MathJax_Zoom .mw-ext-score .mw-logo-wordmark .mw-logo-tagline From 2579e39c82e43d70299d3dc168b169f8e74ed65d Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 17 Jun 2022 22:29:03 +0200 Subject: [PATCH 839/892] Fix for simply-v.de (#9097) - Resolves #9087 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 082d6eda60b0..48848a0bcc00 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15592,6 +15592,15 @@ h3.catbg2, ================================ +simply-v.de + +CSS +body { + background-image: none !important; +} + +================================ + singularlabs.com INVERT From 450e8cb8f97152da3e930c95419edbf7e3110299 Mon Sep 17 00:00:00 2001 From: ZSPFX Date: Sat, 18 Jun 2022 03:33:06 +0700 Subject: [PATCH 840/892] Added dark site (#9089) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index a757e0ee7662..e84ec3ff5bd2 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -36,6 +36,7 @@ animepahe.com animixplay.to animk.info anishde.dev +anitrack.co anon.sx antalbiztonsag.com aonprd.com From 761a067b3a28ffadfbf7a119b969dabfe7a7f010 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 17 Jun 2022 22:43:19 +0200 Subject: [PATCH 841/892] Fix for a11ywithlindsey.com (#9098) - Resolves #9091 --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 48848a0bcc00..450da084b0b5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -268,6 +268,18 @@ CSS ================================ +a11ywithlindsey.com + +INVERT +.logo + +CSS +:root { + --off-white: var(--darkreader-neutral-background) !important; +} + +================================ + aad.org INVERT From 2a0e0cffd5a6917351216aaa24707bb435f141be Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 17 Jun 2022 22:45:03 +0200 Subject: [PATCH 842/892] Fix for 10minutemail.com (#9099) - Resolves #9092 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 450da084b0b5..beb20f3f12e6 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -90,6 +90,15 @@ body, ================================ +10minutemail.com + +CSS +#main_content { + background-image: none !important; +} + +================================ + 123-3d.nl 123accu.nl 123inkt.nl From c3724f652a2bcf7cb4fbcc6b141bd623166ba9fc Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 18 Jun 2022 14:13:58 +0200 Subject: [PATCH 843/892] Fix for mailbox.org (#9103) - Fix background-image on blog and fix incorrect background-color of blog content. --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index beb20f3f12e6..359f318f2ceb 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10850,6 +10850,18 @@ div.mb > div > svg > path { ================================ +mailbox.org + +CSS +body.bg-blog { + background-image: none !important; +} +.common .mod_article > .inside { + background-color: var(--darkreader-neutral-background) !important; +} + +================================ + makeuseof.com IGNORE IMAGE ANALYSIS From 426f93527aaea30ab9e95d468bbceae3c724ea81 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 19 Jun 2022 00:33:41 +0200 Subject: [PATCH 844/892] Fix for protonvpn.com (#9105) - Resolves #9090 --- src/config/dynamic-theme-fixes.config | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 359f318f2ceb..e39863a6a3a2 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -408,6 +408,7 @@ INVERT ================================ account.proton.me +account.protonvpn.com INVERT .sign-layout-bg @@ -14102,6 +14103,16 @@ img[src$="hero-2x.png"] ================================ +protonvpn.com + +INVERT +.navbar-brand +.protonmail-link +#page_home .parallax +#page_home .parallax > * + +================================ + proxmox.com INVERT From 62725e43d6901823c4518405ca1bbccf892099ed Mon Sep 17 00:00:00 2001 From: Adam Beer Date: Sat, 18 Jun 2022 18:37:44 -0400 Subject: [PATCH 845/892] Fix for minecraft.net (#8945) --- src/config/dynamic-theme-fixes.config | 39 ++++++++++++++++++++------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e39863a6a3a2..0de5720eded1 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3183,6 +3183,14 @@ header .logo ================================ +checkout.minecraft.net + +IGNORE INLINE STYLE +symbol#esrb [fill="#000"] +symbol#esrb [fill="#fff"] + +================================ + chem.libretexts.org INVERT @@ -11446,15 +11454,6 @@ IGNORE IMAGE ANALYSIS ================================ -minecraft.net - -CSS -div[style$="/bg-wool-white.png);"] { - background-image: none !important; -} - -================================ - minecraftskins.com CSS @@ -19861,6 +19860,28 @@ ul#nav.nav > li.current > a { ================================ +www.minecraft.net + +INVERT +.feature-details img +.ms-accordion .shade +.ms-accordion td.platform-data +.nav-links__tab-icon + +CSS +.ms-accordion td.platform-data { + background-color: white !important; +} +div[style*="background-image: url("][style*="/background-images/bg-wool-white.png"], +.promo-area .bg-wool-light { + background-image: none !important; +} + +IGNORE IMAGE ANALYSIS +.promo-area .trans-top-dark + +================================ + www.mozilla.org INVERT From a8a651a396f5e4b10639d42c7fe2f782924f21b7 Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Sat, 18 Jun 2022 17:45:16 -0500 Subject: [PATCH 846/892] Add dark site (#9100) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index e84ec3ff5bd2..2477a8763fed 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -963,6 +963,7 @@ tgw1916.net/bacteria_abis.html the-eye.eu thealiendrew.github.io thegraph.com +thelinuxcast.org themes.vscode.one thetatoken.org thinkwithportals.com From 24410a8d8cb9928b765b5342ede822dddd5289df Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 19 Jun 2022 00:54:30 +0200 Subject: [PATCH 847/892] Fix for bitcoinprice.com (#9106) - Resolves #9101 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 0de5720eded1..610f01da83da 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2227,6 +2227,15 @@ IGNORE INLINE STYLE ================================ +bitcoinprice.com + +CSS +.highcharts-button-box { + fill: var(--darkreader-neutral-background) !important; +} + +================================ + bitly.com CSS From 8ae774fae490031c661c87d7bc1676a707b11195 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 19 Jun 2022 01:23:25 +0200 Subject: [PATCH 848/892] Correctly handle escaped values in CSS URL's (#9107) - Resolves #9104 --- CHANGELOG.md | 9 +++++++++ src/inject/dynamic-theme/css-rules.ts | 4 +++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 331daf6e8479..496f0fd31249 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,22 @@ +## Unreleased + +- Correctly handle escaped characters in CSS `url(...)` values. + ## 4.9.51 (May 27, 2022) Dynamic mode improvements: + - Fixed CSS imports that contain `url(...)` and end with `screen`. - Send network responses to correct frames in tabs. - Improved `calc(...)` color handling by using [Shunting Yard algorithm](https://en.wikipedia.org/wiki/Shunting_yard_algorithm). + New translations: + - Malay translation. - Telugu translation. + Other: + - UI improvements. - Users' fixes for websites. diff --git a/src/inject/dynamic-theme/css-rules.ts b/src/inject/dynamic-theme/css-rules.ts index 464d1c6e260a..34e6614cc6ca 100644 --- a/src/inject/dynamic-theme/css-rules.ts +++ b/src/inject/dynamic-theme/css-rules.ts @@ -91,8 +91,10 @@ export function iterateCSSDeclarations(style: CSSStyleDeclaration, iterate: (pro export const cssURLRegex = /url\((('.+?')|(".+?")|([^\)]*?))\)/g; export const cssImportRegex = /@import\s*(url\()?(('.+?')|(".+?")|([^\)]*?))\)? ?(screen)?;?/gi; +// First try to extract the CSS URL value. +// Then do some post fixes, like unescaping backslashes in the URL. (Chromium don't handle this natively). export function getCSSURLValue(cssURL: string) { - return cssURL.trim().replace(/^url\((.*)\)$/, '$1').trim().replace(/^"(.*)"$/, '$1').replace(/^'(.*)'$/, '$1'); + return cssURL.trim().replace(/^url\((.*)\)$/, '$1').trim().replace(/^"(.*)"$/, '$1').replace(/^'(.*)'$/, '$1').replace(/(?:\\(.))/g, '$1'); } export function getCSSBaseBath(url: string) { From 7bfd90f99f8e0aff35a1cbb6bb504dbfd3476377 Mon Sep 17 00:00:00 2001 From: redtrillix <54786587+redtrillix@users.noreply.github.com> Date: Wed, 22 Jun 2022 01:04:04 +0800 Subject: [PATCH 849/892] Removed obsolete editor (#9115) - Atom editor no longer supported by the developer. --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 087629e8a48a..0137e79d0efc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -195,7 +195,7 @@ It will after making any code changes, the project will be automatically recompi ## Tips -For editing the code you can use any text editor or web IDE (like [Visual Studio Code](https://code.visualstudio.com), [Atom](https://atom.io/), or [WebStorm](https://www.jetbrains.com/webstorm/)). +For editing the code you can use any text editor or web IDE (like [Visual Studio Code](https://code.visualstudio.com), or [WebStorm](https://www.jetbrains.com/webstorm/)). **Please preserve code style** (whitespaces etc). This can automatically be done by executing `npm run code-style`. From f9ab0ff5df76ea67559fce8b1b0b7006a21b8197 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 22 Jun 2022 21:41:07 +0200 Subject: [PATCH 850/892] Fix for pixaful.com (#9119) - Resolves #9109 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 610f01da83da..322f58c89d31 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -13659,6 +13659,15 @@ INVERT ================================ +pixaful.com + +CSS +body { + background-image: none !important; +} + +================================ + pixiv.net CSS From 774f5143b8fb218c03ce5da5c638e9ae07858470 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 22 Jun 2022 21:46:34 +0200 Subject: [PATCH 851/892] Fix for www.scien.cx (#9120) - Resolves #9111 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 322f58c89d31..e9416f20b552 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -19987,6 +19987,15 @@ body > div.t3-wrapper > div > div.section-wrap.bg-wrap1 > div > div > div.custom ================================ +www.scien.cx + +CSS +body.custom-background { + background-image: none !important; +} + +================================ + www.soepub.com/discuzx34 CSS From c9b03a91ebfe8a04b844fb1764962e46ba73083f Mon Sep 17 00:00:00 2001 From: Siddharth Ray <58677791+kidsonfilms-python-rules@users.noreply.github.com> Date: Wed, 22 Jun 2022 12:53:23 -0700 Subject: [PATCH 852/892] Add dark site (#9114) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 2477a8763fed..b679034ce0cc 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -1088,6 +1088,7 @@ www.mtv.com www.netflix.com www.razer.com www.seebham.codes +www.siddharthray.com www.teamfortress.com www.tvnz.co.nz www.wickeditor.com/editor/ From a70445ab7da88a9bfb35c53abc73c697f6d80133 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 22 Jun 2022 21:55:30 +0200 Subject: [PATCH 853/892] Fix for pulumi.com (#9121) - Resolves #9113 --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index e9416f20b552..6d729795beae 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -14193,6 +14193,15 @@ body { ================================ +pulumi.com + +CSS +:host { + --neutral-fill-stealth-rest: var(--darkreader-neutral-background) !important; +} + +================================ + pushsquare.com CSS From bcdbf740b566a4f626d727eadd061f81aa5733c2 Mon Sep 17 00:00:00 2001 From: Tarald Berge Date: Wed, 22 Jun 2022 22:09:25 +0200 Subject: [PATCH 854/892] Fix for Finn.no (#9117) - Main page ads and footer. --- src/config/dynamic-theme-fixes.config | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 6d729795beae..2627a3a81927 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -6551,6 +6551,10 @@ header.ant-layout-header img finn.no +INVERT +finn-footer +article.ads__unit overflowmenu-active + IGNORE INLINE STYLE svg * From 81531f213658b3a66119f7acea4408e21ca152d4 Mon Sep 17 00:00:00 2001 From: Dave Moreno Date: Wed, 22 Jun 2022 14:12:05 -0600 Subject: [PATCH 855/892] Fix for churchofjesuschrist.org (#9086) - Invert 2 SVG's and uninverted buttons - Override background images Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 2627a3a81927..cc253e8937d3 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3283,6 +3283,19 @@ INVERT ================================ +churchofjesuschrist.org + +INVERT +svg + +CSS +.container, +#PFmainFooter { + background: var(--darkreader-neutral-background) !important +} + +================================ + cinedrome.ch CSS From 7182b62cd6e3fee0dbb0e26827ac64d5c7552b35 Mon Sep 17 00:00:00 2001 From: Sean Whalen <44679+seanthegeek@users.noreply.github.com> Date: Wed, 22 Jun 2022 16:19:43 -0400 Subject: [PATCH 856/892] Fix Thunderbird's header tables (#9122) - Resolves #9118 --- src/config/dynamic-theme-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index cc253e8937d3..5997515835e0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8770,6 +8770,16 @@ body { ================================ +imap: +pop3: + +CSS +table[class|="moz-header"] { + background: none; +} + +================================ + imdb.com INVERT From a41ff948a16e258090b48741a934e966742d3fe7 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 22 Jun 2022 22:55:36 +0200 Subject: [PATCH 857/892] Fix several sites (#9123) - Resolves #9108 --- src/config/dynamic-theme-fixes.config | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 5997515835e0..80856d44cc96 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -572,6 +572,13 @@ CSS ================================ +afterpay.com + +INVERT +div[class^="navigation_logo"] + +================================ + aftonbladet.se CSS @@ -2477,6 +2484,13 @@ CSS ================================ +bonfire.com + +INVERT +.sw-Logo + +================================ + book.douban.com IGNORE IMAGE ANALYSIS @@ -8218,6 +8232,13 @@ p.promo_price ================================ +guitarworld.com + +INVERT +.site-logo + +================================ + gurushots.com CSS @@ -14562,6 +14583,13 @@ div.fly-but-wrap.left.relative > span ================================ +redbubble.com + +INVERT +[data-testid="ds-wordmark"] + +================================ + reddit.com INVERT From abf9beaa540c3cb644109db33c91a3a87b2422c4 Mon Sep 17 00:00:00 2001 From: donfiguerres Date: Sat, 25 Jun 2022 04:54:07 +0800 Subject: [PATCH 858/892] Fix CodeQL Failures (#9049) Co-authored-by: Gusted --- src/inject/dynamic-theme/modify-css.ts | 2 +- src/inject/dynamic-theme/style-manager.ts | 2 +- src/inject/dynamic-theme/stylesheet-proxy.ts | 12 +++++++++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/inject/dynamic-theme/modify-css.ts b/src/inject/dynamic-theme/modify-css.ts index 17df232ee25c..f6dba09c9535 100644 --- a/src/inject/dynamic-theme/modify-css.ts +++ b/src/inject/dynamic-theme/modify-css.ts @@ -220,7 +220,7 @@ function getModifiedScrollbarStyle(theme: Theme) { export function getModifiedFallbackStyle(filter: FilterConfig, {strict}: {strict: boolean}) { const lines: string[] = []; // https://github.com/darkreader/darkreader/issues/3618#issuecomment-895477598 - const isMicrosoft = location.hostname.endsWith('microsoft.com'); + const isMicrosoft = ['microsoft.com', 'docs.microsoft.com'].includes(location.hostname); lines.push(`html, body, ${strict ? `body :not(iframe)${isMicrosoft ? ':not(div[style^="position:absolute;top:0;left:-"]' : ''}` : 'body > :not(iframe)'} {`); lines.push(` background-color: ${modifyBackgroundColor({r: 255, g: 255, b: 255}, filter)} !important;`); lines.push(` border-color: ${modifyBorderColor({r: 64, g: 64, b: 64}, filter)} !important;`); diff --git a/src/inject/dynamic-theme/style-manager.ts b/src/inject/dynamic-theme/style-manager.ts index 24324d5a5678..bece550a3f64 100644 --- a/src/inject/dynamic-theme/style-manager.ts +++ b/src/inject/dynamic-theme/style-manager.ts @@ -46,7 +46,7 @@ export function shouldManageStyle(element: Node) { element.rel.toLowerCase().includes('stylesheet') && !element.disabled && (isFirefox ? !element.href.startsWith('moz-extension://') : true) && - !element.href.startsWith('https://fonts.googleapis.com') + ((new URL(element.href)).hostname !== 'fonts.googleapis.com') ) ) && !element.classList.contains('darkreader') && diff --git a/src/inject/dynamic-theme/stylesheet-proxy.ts b/src/inject/dynamic-theme/stylesheet-proxy.ts index 23f4fc150ef0..6cdccac59107 100644 --- a/src/inject/dynamic-theme/stylesheet-proxy.ts +++ b/src/inject/dynamic-theme/stylesheet-proxy.ts @@ -11,7 +11,17 @@ export function injectProxy(enableStyleSheetsProxy: boolean) { // Reference: // https://github.com/darkreader/darkreader/issues/6480#issuecomment-897696175 - const shouldWrapHTMLElement = location.hostname.endsWith('baidu.com'); + const shouldWrapHTMLElement = [ + 'baidu.com', + 'baike.baidu.com', + 'ditu.baidu.com', + 'map.baidu.com', + 'maps.baidu.com', + 'haokan.baidu.com', + 'pan.baidu.com', + 'passport.baidu.com', + 'tieba.baidu.com', + 'www.baidu.com'].includes(location.hostname); const getElementsByTagNameDescriptor = shouldWrapHTMLElement ? Object.getOwnPropertyDescriptor(Element.prototype, 'getElementsByTagName') : null; From ec5731e05ba61d5462771e98fd59c829b6b34e4f Mon Sep 17 00:00:00 2001 From: nyuszika7h Date: Fri, 24 Jun 2022 23:18:40 +0200 Subject: [PATCH 859/892] Fix for signulous.com (#9128) - Fix checkbox. --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 80856d44cc96..daa082b0f56f 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15682,6 +15682,18 @@ img[alt="Niantic"] ================================ +signulous.com + +INVERT +.checkbox input:checked + +CSS +.checkbox input:checked { + background-color: white; +} + +================================ + simepar.br CSS From 85169ed3e890cea5973e7ddef8eb8f85a6768cfd Mon Sep 17 00:00:00 2001 From: q1800 <95879668+q1800@users.noreply.github.com> Date: Fri, 24 Jun 2022 16:20:02 -0500 Subject: [PATCH 860/892] Cleanup Manjaro website fixes (#9131) --- src/config/dynamic-theme-fixes.config | 38 +++++++-------------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index daa082b0f56f..34a4f3c1c018 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4928,23 +4928,6 @@ body > div:nth-child(1) > svg:nth-child(1) ================================ -discover.manjaro.org - -CSS -html, body { - background-image: url("/static/images/tux.svg") !important; - background-repeat: no-repeat !important; - background-position: bottom 0 left -12px !important; - background-size: 60px !important; - background-attachment: fixed !important; - background-color: var(--darkreader-neutral-background) !important; -} - -IGNORE IMAGE ANALYSIS -body - -================================ - discuss.pixls.us INVERT @@ -6935,6 +6918,15 @@ CSS ================================ +forum.manjaro.org + +CSS +.custom-footer { + background-image: none !important; +} + +================================ + forum.miranda-ng.org CSS @@ -10942,18 +10934,6 @@ INVERT ================================ -manjaro.org - -CSS -.page-header-image { - z-index: 0 !important; -} -.custom-footer { - background-image: none !important; -} - -================================ - manualslib.com IGNORE IMAGE ANALYSIS From 9bcf53dadd51d019f9fd0d05a138b7bb7cca4011 Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 24 Jun 2022 23:37:08 +0200 Subject: [PATCH 861/892] Fix for manjaro.org (#9135) - Resolves #9133 --- src/config/dynamic-theme-fixes.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 34a4f3c1c018..728a7bdfc2c9 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -10934,6 +10934,20 @@ INVERT ================================ +manjaro.org + +CSS +.bg-teal-accent-400, +.bg-teal-accent-400 path { + background-color: ${rgb(29,233,182)} !important; + fill: ${rgb(29,233,182)} !important; +} + +IGNORE INLINE STYLE +.bg-teal-accent-400 path + +================================ + manualslib.com IGNORE IMAGE ANALYSIS From 4a4a9f47061f11ba38c340caa760169baa7d2ccd Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 24 Jun 2022 23:46:39 +0200 Subject: [PATCH 862/892] Fix for cdn77.com (#9136) - Resolves #9134 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 728a7bdfc2c9..a716b69fddfd 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3105,6 +3105,13 @@ CSS ================================ +cdn77.com + +INVERT +a[class^="Nav_logo"] + +================================ + cdp.contentdelivery.nu CSS From 9ce662d0be8f525348e5e70e454981078a07811d Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 25 Jun 2022 14:17:23 +0200 Subject: [PATCH 863/892] Use a safe check around checking google fonts (#9138) - If element.href is empty or some invalid URL. Don't let Dark Reader crash due to that. --- src/inject/dynamic-theme/style-manager.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/inject/dynamic-theme/style-manager.ts b/src/inject/dynamic-theme/style-manager.ts index bece550a3f64..423448b11b06 100644 --- a/src/inject/dynamic-theme/style-manager.ts +++ b/src/inject/dynamic-theme/style-manager.ts @@ -35,6 +35,22 @@ export interface StyleManager { export const STYLE_SELECTOR = 'style, link[rel*="stylesheet" i]:not([disabled])'; +// isFontsGoogleApiStyle returns is the given link element is a style from +// google fonts. +function isFontsGoogleApiStyle(element: HTMLLinkElement): boolean { + if (!element.href) { + return false; + } + + try { + const elementURL = new URL(element.href); + return elementURL.hostname === 'fonts.googleapis.com'; + } catch (err) { + logInfo(`Couldn't construct ${element.href} as URL`); + return false; + } +} + export function shouldManageStyle(element: Node) { return ( ( @@ -46,7 +62,7 @@ export function shouldManageStyle(element: Node) { element.rel.toLowerCase().includes('stylesheet') && !element.disabled && (isFirefox ? !element.href.startsWith('moz-extension://') : true) && - ((new URL(element.href)).hostname !== 'fonts.googleapis.com') + !isFontsGoogleApiStyle(element) ) ) && !element.classList.contains('darkreader') && From c8a951588cd16c9e0c9912e8518fb2722896828c Mon Sep 17 00:00:00 2001 From: Retro <44505837+dankmolot@users.noreply.github.com> Date: Sat, 25 Jun 2022 15:32:56 +0300 Subject: [PATCH 864/892] Fix for wiki.facepunch.com (#9124) - Use correct selector. --- src/config/dynamic-theme-fixes.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index a716b69fddfd..615369602e3b 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -19204,7 +19204,7 @@ CSS body { background-color: transparent !important; } -.body { +.content { background-image: none !important; } From c328599d4492e93a52f7fcaef0f02bbc40f0ae13 Mon Sep 17 00:00:00 2001 From: Eric Moynihan Date: Sun, 26 Jun 2022 12:33:11 +0100 Subject: [PATCH 865/892] Fix for irishtimes.com (#9139) - Fixed logo inversion on homepage --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 615369602e3b..9a30d6cc9c2d 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -9207,6 +9207,13 @@ INVERT ================================ +irishtimes.com + +INVERT +.masthead-block-logo img + +================================ + is.muni.cz INVERT From ee3c7c103f78d0b94d2014a1ea839aa11ee05a44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erkin=20Alp=20G=C3=BCney?= Date: Sun, 26 Jun 2022 14:35:25 +0300 Subject: [PATCH 866/892] Fix for fotw.info (#9140) - Fix background-image. --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 9a30d6cc9c2d..92fbdfe8f031 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -7026,6 +7026,15 @@ img[alt="Fosshost Logo"] ================================ +fotw.info + +CSS +body { + background-image: none !important; +} + +================================ + frame.work INVERT From 7961d7e84e83afdc8b6bf6519a6953d303073719 Mon Sep 17 00:00:00 2001 From: meWho <82191558+meWho3000@users.noreply.github.com> Date: Sun, 26 Jun 2022 19:36:08 +0800 Subject: [PATCH 867/892] Add dark site (#9141) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index b679034ce0cc..aa9296df0dc9 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -598,6 +598,7 @@ memory-alpha.fandom.com merklex.io metronom.us metropool.nl +mewho.com/starfield47 migueldemoura.com mikemaximus.github.io/gbm-web minehut.com From c017b38d0aa0afb8cca11ba1df1cb309bc2f9dda Mon Sep 17 00:00:00 2001 From: Geraldo Almeida <89487123+gralmeidan@users.noreply.github.com> Date: Mon, 27 Jun 2022 10:24:52 -0400 Subject: [PATCH 868/892] Fix for app.betrybe.com (#9116) - Some sections were inverted, too bright, and/or unreadable --- src/config/dynamic-theme-fixes.config | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 92fbdfe8f031..d3a2b77b55d5 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -1141,6 +1141,35 @@ INVERT ================================ +app.betrybe.com + +INVERT +section.quiz-result__template summary +section.quiz-result__template summary .block-code + +CSS +.home-projects details, +.header button, +.header a, +.module-index-content { + background-color: transparent !important +} +.header button:hover, +.header a:hover, +.module-index-content summary:active, +.quiz-question label { + background-color: var(--darkreader-neutral-background) !important +} +.quiz-question label p { + color: rgb(180, 200, 255) !important +} +.quiz-question__alternatives label:hover, +.quiz-question__alternatives input[type=radio]:checked + label { + background: initial !important +} + +================================ + app.codesignal.com CSS From d17faa51c81b6ece7bf599bd2b698c6742975c60 Mon Sep 17 00:00:00 2001 From: Alexander Shutau Date: Tue, 28 Jun 2022 12:15:59 +0100 Subject: [PATCH 869/892] 4.9.52 --- CHANGELOG.md | 2 +- package-lock.json | 2 +- package.json | 2 +- src/manifest.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 496f0fd31249..50cc3340d600 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## Unreleased +## 4.9.52 (June 28, 2022) - Correctly handle escaped characters in CSS `url(...)` values. diff --git a/package-lock.json b/package-lock.json index ea7ad1230dd8..6e1fccb25ca1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "darkreader", - "version": "4.9.51", + "version": "4.9.52", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 6494de715f18..f324f3cec28d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "darkreader", - "version": "4.9.51", + "version": "4.9.52", "description": "Dark mode for every website", "scripts": { "api": "node tasks/build.js --api", diff --git a/src/manifest.json b/src/manifest.json index 330985f2be7b..134d5e361f5a 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Dark Reader", - "version": "4.9.51", + "version": "4.9.52", "author": "Alexander Shutau", "description": "__MSG_extension_description__", "default_locale": "en", From 6203ec47ec1ae76cc5c3ab7d9e281312c44ead06 Mon Sep 17 00:00:00 2001 From: Anton Bershanskiy <45960703+bershanskiy@users.noreply.github.com> Date: Wed, 29 Jun 2022 18:48:36 +0300 Subject: [PATCH 870/892] Use XSS-safe method of injecting stylesheet proxy script with MV3 (#9129) --- src/inject/dynamic-theme/index.ts | 32 +++++++++++-- src/inject/dynamic-theme/mv3-injector.ts | 26 +++++++++++ src/inject/dynamic-theme/mv3-proxy.ts | 58 ++++++++++++++++++++++++ src/manifest-mv3.json | 21 +++++++++ tasks/bundle-js.js | 21 +++++++-- 5 files changed, 150 insertions(+), 8 deletions(-) create mode 100644 src/inject/dynamic-theme/mv3-injector.ts create mode 100644 src/inject/dynamic-theme/mv3-proxy.ts diff --git a/src/inject/dynamic-theme/index.ts b/src/inject/dynamic-theme/index.ts index c1ee9a3e9453..15a5bf033650 100644 --- a/src/inject/dynamic-theme/index.ts +++ b/src/inject/dynamic-theme/index.ts @@ -16,7 +16,7 @@ import type {FilterConfig, DynamicThemeFix} from '../../definitions'; import {generateUID} from '../../utils/uid'; import type {AdoptedStyleSheetManager} from './adopted-style-manger'; import {createAdoptedStyleSheetOverride} from './adopted-style-manger'; -import {isFirefox} from '../../utils/platform'; +import {isFirefox, isMV3} from '../../utils/platform'; import {injectProxy} from './stylesheet-proxy'; import {parse} from '../../utils/color'; import {parsedURLCache} from '../../utils/url'; @@ -44,6 +44,9 @@ function createOrUpdateStyle(className: string, root: ParentNode = document.head return element; } +/** + * Note: This function is used only with MV2. + */ function createOrUpdateScript(className: string, root: ParentNode = document.head || document) { let element: HTMLScriptElement = root.querySelector(`.${className}`); if (!element) { @@ -54,6 +57,18 @@ function createOrUpdateScript(className: string, root: ParentNode = document.hea return element; } +/** + * Note: This function is used only with MV3. + * String passed as src parameter must be included in web_accessible_resources manifest key. + */ +function injectProxyScriptMV3(arg: boolean) { + logInfo('MV3 proxy injector: regular path attempts to inject...'); + const element = document.createElement('script'); + element.src = chrome.runtime.getURL('inject/proxy.js'); + element.dataset.arg = JSON.stringify(arg); + document.head.prepend(element); +} + const nodePositionWatchers = new Map>(); function setupNodePositionWatcher(node: Node, alias: string) { @@ -133,10 +148,17 @@ function createStaticStyleOverrides() { const rootVarsStyle = createOrUpdateStyle('darkreader--root-vars'); document.head.insertBefore(rootVarsStyle, variableStyle.nextSibling); - const proxyScript = createOrUpdateScript('darkreader--proxy'); - proxyScript.append(`(${injectProxy})(!${fixes && fixes.disableStyleSheetsProxy})`); - document.head.insertBefore(proxyScript, rootVarsStyle.nextSibling); - proxyScript.remove(); + const injectProxyArg = !(fixes && fixes.disableStyleSheetsProxy); + if (isMV3) { + injectProxyScriptMV3(injectProxyArg); + // Notify dedicated injector of the data + document.dispatchEvent(new CustomEvent('__darkreader__stylesheetProxy__arg', {detail: injectProxyArg})); + } else { + const proxyScript = createOrUpdateScript('darkreader--proxy'); + proxyScript.append(`(${injectProxy})(${injectProxyArg})`); + document.head.insertBefore(proxyScript, rootVarsStyle.nextSibling); + proxyScript.remove(); + } } const shadowRootsWithOverrides = new Set(); diff --git a/src/inject/dynamic-theme/mv3-injector.ts b/src/inject/dynamic-theme/mv3-injector.ts new file mode 100644 index 000000000000..b3cb133cab5c --- /dev/null +++ b/src/inject/dynamic-theme/mv3-injector.ts @@ -0,0 +1,26 @@ +/** + * Note: This content script is used only with MV3 to inject stylesheet proxy like so: + * 1. This file (injector) is run in isolated content script context and it injects proxy + * into the real page context. + * 2. The proxy prepares everything for stylesheet-proxy and executes it. + */ + +import {logInfo} from '../../utils/log'; + +logInfo('MV3 proxy injector: dedicated injector started...'); + +/** + * On the first run of event loop, document.head does not exist yet, so we have to wait for the second one. + */ +function injectScript() { + if (document.head) { + logInfo('MV3 proxy injector: dedicated injector attempts to inject...'); + const script = document.createElement('script'); + script.src = chrome.runtime.getURL('inject/proxy.js'); + document.head.prepend(script); + } else { + setTimeout(injectScript); + } +} + +injectScript(); diff --git a/src/inject/dynamic-theme/mv3-proxy.ts b/src/inject/dynamic-theme/mv3-proxy.ts new file mode 100644 index 000000000000..8b3a5c1de242 --- /dev/null +++ b/src/inject/dynamic-theme/mv3-proxy.ts @@ -0,0 +1,58 @@ +import {injectProxy} from './stylesheet-proxy'; +import {logInfo} from '../../utils/log'; + +document.currentScript.remove(); + +const key = 'darkreaderProxyInjected'; +const EVENT_DONE = '__darkreader__stylesheetProxy__done'; +const EVENT_ARG = '__darkreader__stylesheetProxy__arg'; + +function injectProxyAndCleanup(arg: boolean) { + injectProxy(arg); + doneReceiver(); + document.dispatchEvent(new CustomEvent(EVENT_DONE)); +} + +function regularPath() { + const argString = document.currentScript.dataset.arg; + if (argString !== undefined) { + document.documentElement.dataset[key] = 'true'; + const arg: boolean = JSON.parse(argString); + logInfo(`MV3 proxy injector: regular path runs injectProxy(${arg}).`); + injectProxyAndCleanup(arg); + } +} + +function dataReceiver(e: any) { + document.removeEventListener(EVENT_ARG, dataReceiver); + if (document.documentElement.dataset[key] !== undefined) { + logInfo(`MV3 proxy injector: dedicated path exits because everything is done.`); + return; + } + document.documentElement.dataset[key] = 'true'; + logInfo(`MV3 proxy injector: dedicated path runs injectProxy(${e.detail}).`); + injectProxyAndCleanup(e.detail); +} + +function doneReceiver() { + document.removeEventListener(EVENT_ARG, dataReceiver); + document.removeEventListener(EVENT_DONE, doneReceiver); +} + +function dedicatedPath() { + logInfo('MV3 proxy injector: dedicated path setup...'); + document.addEventListener(EVENT_ARG, dataReceiver); + document.addEventListener(EVENT_DONE, doneReceiver); +} + +function inject() { + if (document.documentElement.dataset[key] !== undefined) { + logInfo('MV3 proxy injector: proxy exits because everything is done.'); + return; + } + logInfo('MV3 proxy injector: proxy attempts to inject...'); + regularPath(); + dedicatedPath(); +} + +inject(); diff --git a/src/manifest-mv3.json b/src/manifest-mv3.json index 4f812c3e0d81..c316ad762b6a 100644 --- a/src/manifest-mv3.json +++ b/src/manifest-mv3.json @@ -11,6 +11,21 @@ "background": { "service_worker": "background.js" }, + "content_scripts": [ + { + "matches": [ + "" + ], + "js": [ + "inject/injector.js", + "inject/fallback.js", + "inject/index.js" + ], + "run_at": "document_start", + "all_frames": true, + "match_about_blank": true + } + ], "permissions": [ "alarms", "fontSettings", @@ -21,5 +36,11 @@ ], "host_permissions": [ "*://*/*" + ], + "web_accessible_resources": [ + { + "matches": ["*://*/*"], + "resources": ["inject/proxy.js"] + } ] } diff --git a/tasks/bundle-js.js b/tasks/bundle-js.js index 7a32a8bde81d..2c03b5b30004 100644 --- a/tasks/bundle-js.js +++ b/tasks/bundle-js.js @@ -46,8 +46,9 @@ function patchMV3JS(/** @type {string} */code) { * @property {string} src * @property {string} dest * @property {string} reloadType - * @property {({debug}) => Promise} postBuild + * @property {(({debug}) => Promise) | undefined} postBuild * @property {string[]} watchFiles + * @property {(typeof PLATFORM.CHROME) | undefined} platform */ /** @type {JSEntry[]} */ @@ -80,6 +81,20 @@ const jsEntries = [ }, watchFiles: null, }, + { + src: 'src/inject/dynamic-theme/mv3-injector.ts', + dest: 'inject/injector.js', + reloadType: reload.FULL, + platform: PLATFORM.CHROME_MV3, + watchFiles: null, + }, + { + src: 'src/inject/dynamic-theme/mv3-proxy.ts', + dest: 'inject/proxy.js', + reloadType: reload.FULL, + platform: PLATFORM.CHROME_MV3, + watchFiles: null, + }, { src: 'src/inject/fallback.ts', dest: 'inject/fallback.js', @@ -146,12 +161,12 @@ async function bundleJS(/** @type {JSEntry} */entry, {debug, watch}) { }); entry.watchFiles = bundle.watchFiles; await bundle.write({ - file: `${getDestDir({debug, platform: PLATFORM.CHROME})}/${dest}`, + file: `${getDestDir({debug, platform: entry.platform || PLATFORM.CHROME})}/${dest}`, strict: true, format: 'iife', sourcemap: debug ? 'inline' : false, }); - await entry.postBuild({debug}); + entry.postBuild && await entry.postBuild({debug}); } function getWatchFiles() { From 5515f6ebd35ad87e0f67507bc0705a732d5eb1b4 Mon Sep 17 00:00:00 2001 From: Gusted Date: Wed, 29 Jun 2022 18:55:04 +0200 Subject: [PATCH 871/892] Don't manage styles that have a empty `href` attribute (#9150) - Resolves #9145 --- CHANGELOG.md | 4 ++++ src/inject/dynamic-theme/style-manager.ts | 1 + src/inject/dynamic-theme/watch.ts | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50cc3340d600..80b82a446fe9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## Unreleased + +- Don't manage styles that have a empty `href` attribute. + ## 4.9.52 (June 28, 2022) - Correctly handle escaped characters in CSS `url(...)` values. diff --git a/src/inject/dynamic-theme/style-manager.ts b/src/inject/dynamic-theme/style-manager.ts index 423448b11b06..9e367fe6b6f4 100644 --- a/src/inject/dynamic-theme/style-manager.ts +++ b/src/inject/dynamic-theme/style-manager.ts @@ -60,6 +60,7 @@ export function shouldManageStyle(element: Node) { element instanceof HTMLLinkElement && element.rel && element.rel.toLowerCase().includes('stylesheet') && + element.href && !element.disabled && (isFirefox ? !element.href.startsWith('moz-extension://') : true) && !isFontsGoogleApiStyle(element) diff --git a/src/inject/dynamic-theme/watch.ts b/src/inject/dynamic-theme/watch.ts index a577c68cf8ef..d038ceed2a8d 100644 --- a/src/inject/dynamic-theme/watch.ts +++ b/src/inject/dynamic-theme/watch.ts @@ -219,7 +219,7 @@ export function watchForStyleChanges(currentStyles: StyleElement[], update: (sty onHugeMutations: handleHugeTreeMutations, }); const attrObserver = new MutationObserver(handleAttributeMutations); - attrObserver.observe(root, {attributes: true, attributeFilter: ['rel', 'disabled', 'media'], subtree: true}); + attrObserver.observe(root, {attributes: true, attributeFilter: ['rel', 'disabled', 'media', 'href'], subtree: true}); observers.push(treeObserver, attrObserver); observedRoots.add(root); } From a44c711dad052221d01bd297acb7964059cf3b35 Mon Sep 17 00:00:00 2001 From: TruncatedDinosour <71613062+TruncatedDinosour@users.noreply.github.com> Date: Thu, 30 Jun 2022 19:31:39 +0000 Subject: [PATCH 872/892] Add dark site (#9147) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index aa9296df0dc9..d9f9535b621c 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -1077,6 +1077,7 @@ wowaudit.com wowhead.com wowinterface.com wtfast.com +wttr.in www.ageofempires.com www.canalplus.com www.cc.com From e796511d7a673cf4a2cdb5f42592799dcf363d3e Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 30 Jun 2022 21:51:01 +0200 Subject: [PATCH 873/892] Fix for calendar.google.com (#9159) - Resolves #9143 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index d3a2b77b55d5..20469658def0 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -2968,9 +2968,16 @@ CSS div[role="checkbox"] > div > div > div { border: 1px solid ${black} !important; } +div[role="dialog"] div[role="slider"][data-saturation] div:nth-child(2) { + background-image: linear-gradient(to right,#fff 0%,rgba(255,255,255,0) 100%) !important; +} IGNORE INLINE STYLE div[role="checkbox"] +div[role="gridcell"] div[role="button"] +div[role="dialog"] div[role="slider"] +div[role="dialog"] div[role="slider"] div[style] +div[role="dialog"] div[role="button"][data-contrast] ================================ From bdc9d3277d3142a7bfba8619923efcc6ac9f1321 Mon Sep 17 00:00:00 2001 From: TomerGan <55950199+TomerGan@users.noreply.github.com> Date: Thu, 30 Jun 2022 23:08:39 +0300 Subject: [PATCH 874/892] Add dark site (#9160) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index d9f9535b621c..83122b8aa26a 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -538,6 +538,7 @@ krisoneil.com/home kristal.cc krunker.io ksp.mff.cuni.cz +kuik.li kulbachny.com kwejk.pl kyleggiero.me From af9e68a7b8dbe9b9a88bdc4e5f15a4504017f7ca Mon Sep 17 00:00:00 2001 From: Antonio Fernandez Date: Thu, 30 Jun 2022 16:13:53 -0400 Subject: [PATCH 875/892] Fix for ikea.ee (Issue #9080) (#9148) - Fix light cards. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 20469658def0..71810e19ebd8 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -8800,6 +8800,11 @@ CSS .hnf-svg-icon { fill: var(--darkreader-neutral-text) !important; } +.card, +.card-header, +.card-footer { + background-color: var(--darkreader-neutral-background) !important; +} IGNORE INLINE STYLE .gpr__color-dot From 3b6441928546cf76756413c4f3bff838ce9c4544 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 30 Jun 2022 23:22:30 +0200 Subject: [PATCH 876/892] Use `navigator.UserAgentData` when possible (#9161) - Make chromium happy by using `navigator.UserAgentData` when available. It currently convert the data into a string so it can be used via `.includes(...)` and co-exist with the older `navigator.userAgent`. - Resolves #9142 --- .eslintrc.js | 1 + CHANGELOG.md | 1 + src/utils/platform.ts | 29 +++++++++++++++++++++++++---- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index ab13b477739c..75099666e607 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -184,6 +184,7 @@ config.overrides.push({ settings: { polyfills: [ 'navigator.deviceMemory', + 'navigator.userAgentData', ], }, overrides: [ diff --git a/CHANGELOG.md b/CHANGELOG.md index 80b82a446fe9..0bba962b2584 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## Unreleased - Don't manage styles that have a empty `href` attribute. +- Use `navigator.UserAgentData` when possible. ## 4.9.52 (June 28, 2022) diff --git a/src/utils/platform.ts b/src/utils/platform.ts index 0ad7d2444407..180eaa269ad8 100644 --- a/src/utils/platform.ts +++ b/src/utils/platform.ts @@ -1,5 +1,26 @@ -const userAgent = typeof navigator === 'undefined' ? 'some useragent' : navigator.userAgent.toLowerCase(); -const platform = typeof navigator === 'undefined' ? 'some platform' : navigator.platform.toLowerCase(); +interface UserAgentData { + brands: Array<{ + brand: string; + version: string; + }>; + mobile: boolean; + platform: string; +} + +declare global { + interface NavigatorID { + userAgentData: UserAgentData; + } +} + +const isNavigatorDefined = typeof navigator !== 'undefined'; +const userAgent = isNavigatorDefined ? navigator.userAgentData ? + navigator.userAgentData.brands.map((brand) => `${brand.brand.toLowerCase()} ${brand.version}`).join(' ') : navigator.userAgent.toLowerCase() + : 'some useragent'; + +const platform = isNavigatorDefined ? navigator.userAgentData ? + navigator.userAgentData.platform.toLowerCase() : navigator.platform.toLowerCase() + : 'some platform'; export const isChromium = userAgent.includes('chrome') || userAgent.includes('chromium'); export const isThunderbird = userAgent.includes('thunderbird'); @@ -11,7 +32,7 @@ export const isEdge = userAgent.includes('edg'); export const isSafari = userAgent.includes('safari') && !isChromium; export const isWindows = platform.startsWith('win'); export const isMacOS = platform.startsWith('mac'); -export const isMobile = userAgent.includes('mobile'); +export const isMobile = (isNavigatorDefined && navigator.userAgentData) ? navigator.userAgentData.mobile : userAgent.includes('mobile'); export const isShadowDomSupported = typeof ShadowRoot === 'function'; export const isMatchMediaChangeEventListenerSupported = ( typeof MediaQueryList === 'function' && @@ -19,7 +40,7 @@ export const isMatchMediaChangeEventListenerSupported = ( ); export const chromiumVersion = (() => { - const m = userAgent.match(/chrom[e|ium]\/([^ ]+)/); + const m = userAgent.match(/chrom(?:e|ium)(?:\/| )([^ ]+)/); if (m && m[1]) { return m[1]; } From 270b3a7f635d73be3b58ee68417b0178aa10bed1 Mon Sep 17 00:00:00 2001 From: Gusted Date: Thu, 30 Jun 2022 23:27:41 +0200 Subject: [PATCH 877/892] Fix tests for stable & beta (#9162) - Seems like behavior changes again arounding the whitespace so use a more safe and sound approach. --- tests/inject/dynamic/inline-override.tests.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/inject/dynamic/inline-override.tests.ts b/tests/inject/dynamic/inline-override.tests.ts index 4e77dae43ae6..7561f369f9ed 100644 --- a/tests/inject/dynamic/inline-override.tests.ts +++ b/tests/inject/dynamic/inline-override.tests.ts @@ -59,7 +59,8 @@ describe('INLINE STYLES', () => { container.innerHTML = 'Watch inline style'; createOrUpdateDynamicTheme(theme, null, false); const span = document.querySelector('span'); - expect(span.getAttribute('style')).toBe(`color: red; --darkreader-inline-color:${!isChromium ? ' ' : ''}#ff1a1a;`); + expect(span.getAttribute('style').startsWith('color: red; --darkreader-inline-color:')).toBeTrue(); + expect(span.getAttribute('style').endsWith('#ff1a1a;')).toBeTrue(); span.style.color = ''; await timeout(0); From 0a0baa311158a393e4cea4b8a89074fea5f4b088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93li?= Date: Fri, 1 Jul 2022 12:46:02 +0100 Subject: [PATCH 878/892] Add runtothefinish.com (#9156) - Use dark background color for variable. Co-authored-by: Gusted --- src/config/dynamic-theme-fixes.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 71810e19ebd8..37ec88e5dd04 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -15162,6 +15162,15 @@ INVERT ================================ +runtothefinish.com + +CSS +:root { + --body-background-color: var(--darkreader-neutral-background) !important; +} + +================================ + rynekzdrowia.pl INVERT From 7422333ecb808772db2d6141369ae0953ea17354 Mon Sep 17 00:00:00 2001 From: Anton Bershanskiy <45960703+bershanskiy@users.noreply.github.com> Date: Fri, 1 Jul 2022 15:05:00 +0300 Subject: [PATCH 879/892] Refactor: make makeChromiumHappy() consistent (#9164) --- src/background/make-chromium-happy.ts | 7 ++++--- src/background/tab-manager.ts | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/background/make-chromium-happy.ts b/src/background/make-chromium-happy.ts index 313053672f8d..9d764945a549 100644 --- a/src/background/make-chromium-happy.ts +++ b/src/background/make-chromium-happy.ts @@ -1,15 +1,16 @@ import {MessageType} from '../utils/message'; import type {Message} from '../definitions'; +import {isChromium} from '../utils/platform'; // This function exists to prevent Chrome from logging an error about // closed conduit. It just sends a dummy message in response to incomming message // to utilise open conduit. This response message is not even used on the other side. export function makeChromiumHappy() { + if (!isChromium) { + return; + } chrome.runtime.onMessage.addListener((message: Message, _, sendResponse) => { if (![ - // TabManager - MessageType.CS_FRAME_CONNECT, - // Messenger MessageType.UI_GET_DATA, MessageType.UI_APPLY_DEV_DYNAMIC_THEME_FIXES, diff --git a/src/background/tab-manager.ts b/src/background/tab-manager.ts index 637456d0c076..7d848c13b976 100644 --- a/src/background/tab-manager.ts +++ b/src/background/tab-manager.ts @@ -127,7 +127,6 @@ export default class TabManager { frameURL: frameId === 0 ? null : senderURL, }); this.stateManager.saveState(); - sendResponse({type: '¯\\_(ツ)_/¯'}); break; } case MessageType.CS_FRAME_FORGET: { From eec3deeb76d29c5f6e5354bb62defe07599bcde4 Mon Sep 17 00:00:00 2001 From: Anton Bershanskiy <45960703+bershanskiy@users.noreply.github.com> Date: Sat, 2 Jul 2022 22:13:13 +0300 Subject: [PATCH 880/892] Fix: use chrome.tabs.onRemoved to clear TabManager data (#9166) --- src/background/tab-manager.ts | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/background/tab-manager.ts b/src/background/tab-manager.ts index 7d848c13b976..cc3b68f91d47 100644 --- a/src/background/tab-manager.ts +++ b/src/background/tab-manager.ts @@ -63,6 +63,22 @@ export default class TabManager { this.tabs = {}; this.getTabMessage = getTabMessage; + async function removeFrame(tabManager: TabManager, tabId: number, frameId: number){ + await tabManager.stateManager.loadState(); + + if (frameId === 0) { + delete tabManager.tabs[tabId]; + } + + if (tabManager.tabs[tabId] && tabManager.tabs[tabId][frameId]) { + // We need to use delete here because Object.entries() + // in sendMessage() would enumerate undefined as well. + delete tabManager.tabs[tabId][frameId]; + } + + tabManager.stateManager.saveState(); + } + chrome.runtime.onMessage.addListener(async (message: Message, sender, sendResponse) => { function addFrame(tabs: {[tabId: number]: {[frameId: number]: FrameInfo}}, tabId: number, frameId: number, senderURL: string, timestamp: number) { let frames: {[frameId: number]: FrameInfo}; @@ -130,24 +146,11 @@ export default class TabManager { break; } case MessageType.CS_FRAME_FORGET: { - await this.stateManager.loadState(); if (!sender.tab) { logWarn('Unexpected message', message, sender); break; } - const tabId = sender.tab.id; - const frameId = sender.frameId; - - if (frameId === 0) { - delete this.tabs[tabId]; - } - - if (this.tabs[tabId] && this.tabs[tabId][frameId]) { - // We need to use delete here because Object.entries() - // in sendMessage() would enumerate undefined as well. - delete this.tabs[tabId][frameId]; - } - this.stateManager.saveState(); + removeFrame(this, sender.tab.id, sender.frameId); break; } case MessageType.CS_FRAME_FREEZE: @@ -226,6 +229,8 @@ export default class TabManager { } } }); + + chrome.tabs.onRemoved.addListener(async (tabId) => removeFrame(this, tabId, 0)); } getTabURL(tab: chrome.tabs.Tab): string { From 7603f61e750e94b6ff4859d372b2d92afb51f85c Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 2 Jul 2022 21:28:49 +0200 Subject: [PATCH 881/892] Remove unused import (#9173) - Fix a warning by ESLint. --- tests/inject/dynamic/inline-override.tests.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/inject/dynamic/inline-override.tests.ts b/tests/inject/dynamic/inline-override.tests.ts index 7561f369f9ed..9858a08247e7 100644 --- a/tests/inject/dynamic/inline-override.tests.ts +++ b/tests/inject/dynamic/inline-override.tests.ts @@ -1,7 +1,6 @@ import '../support/polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; -import {isChromium} from '../../../src/utils/platform'; import {multiline, timeout} from '../support/test-utils'; const theme = { From ea59afe33acf2271077bd25f3671da012d2df853 Mon Sep 17 00:00:00 2001 From: Anton Bershanskiy <45960703+bershanskiy@users.noreply.github.com> Date: Sat, 2 Jul 2022 22:50:21 +0300 Subject: [PATCH 882/892] In MV3 builds, use promise-based message passing in CS (#9174) --- src/background/make-chromium-happy.ts | 4 ++-- src/inject/index.ts | 29 +++++++++++++++------------ 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/background/make-chromium-happy.ts b/src/background/make-chromium-happy.ts index 9d764945a549..fe1c1115db1d 100644 --- a/src/background/make-chromium-happy.ts +++ b/src/background/make-chromium-happy.ts @@ -1,12 +1,12 @@ import {MessageType} from '../utils/message'; import type {Message} from '../definitions'; -import {isChromium} from '../utils/platform'; +import {isChromium, isMV3} from '../utils/platform'; // This function exists to prevent Chrome from logging an error about // closed conduit. It just sends a dummy message in response to incomming message // to utilise open conduit. This response message is not even used on the other side. export function makeChromiumHappy() { - if (!isChromium) { + if (isMV3 || !isChromium) { return; } chrome.runtime.onMessage.addListener((message: Message, _, sendResponse) => { diff --git a/src/inject/index.ts b/src/inject/index.ts index f400cab036ce..c16a643cc25a 100644 --- a/src/inject/index.ts +++ b/src/inject/index.ts @@ -7,7 +7,7 @@ import {watchForColorSchemeChange} from './utils/watch-color-scheme'; import {collectCSS} from './dynamic-theme/css-collection'; import type {Message} from '../definitions'; import {MessageType} from '../utils/message'; -import {isThunderbird} from '../utils/platform'; +import {isMV3, isThunderbird} from '../utils/platform'; let unloaded = false; @@ -34,24 +34,27 @@ function sendMessage(message: Message) { if (unloaded) { return; } - try { - chrome.runtime.sendMessage(message, (response) => { - // Vivaldi bug workaround. See TabManager for details. - if (response === 'unsupportedSender') { - removeStyle(); - removeSVGFilter(); - removeDynamicTheme(); - cleanup(); - } - }); - } catch (e) { + const responseHandler = (response: 'unsupportedSender' | undefined) => { + // Vivaldi bug workaround. See TabManager for details. + if (response === 'unsupportedSender') { + removeStyle(); + removeSVGFilter(); + removeDynamicTheme(); + cleanup(); + } + }; + + if (isMV3) { /* * Background can be unreachable if: * - extension was disabled * - extension was uninstalled * - extension was updated and this is the old instance of content script */ - cleanup(); + const promise: Promise = chrome.runtime.sendMessage(message) as any; + promise.then(responseHandler).catch(cleanup); + } else { + chrome.runtime.sendMessage(message, responseHandler); } } From d79724d8b09d18abc80b637eb3205a0fa104841b Mon Sep 17 00:00:00 2001 From: Igor M Date: Sat, 2 Jul 2022 17:14:01 -0300 Subject: [PATCH 883/892] Add dark site (#9175) --- src/config/dark-sites.config | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/dark-sites.config b/src/config/dark-sites.config index 83122b8aa26a..539cb4bf315c 100644 --- a/src/config/dark-sites.config +++ b/src/config/dark-sites.config @@ -1044,6 +1044,7 @@ vizality.com vogons.org vortetty.k3live.com vrv.co +vscode.dev vscodethemes.com vtcdirectory.com vuecinemas.nl From 4ea533eef521bc2f45844a36086f883750492339 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sat, 2 Jul 2022 22:51:17 +0200 Subject: [PATCH 884/892] Fix codeberg.org (#9176) - Fix for codeberg.org (it will be changing it's landing page soon, already seen in codeberg-test.org), https://codeberg.org/Codeberg/gitea/pulls/35 --- src/config/dynamic-theme-fixes.config | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 37ec88e5dd04..ccb4dae9c8bd 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -3639,6 +3639,19 @@ CSS ================================ +codeberg.org +codeberg-test.org + +CSS +main header .header-background-image { + filter: brightness(50%) sepia(40%) !important; +} +main header .header-title { + z-index: 1 !important; +} + +================================ + codecademy.com INVERT From 8e74e97d77d3d84046e4dcc6a27ce487d43a75e0 Mon Sep 17 00:00:00 2001 From: Benno Straub Date: Sun, 3 Jul 2022 12:37:59 +0200 Subject: [PATCH 885/892] Fix for thomann.de (#9170) - Fix product images. Co-authored-by: Gusted --- src/config/inversion-fixes.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/inversion-fixes.config b/src/config/inversion-fixes.config index d0e50cbb2fa9..242b77e408fa 100644 --- a/src/config/inversion-fixes.config +++ b/src/config/inversion-fixes.config @@ -2180,6 +2180,16 @@ img ================================ +thomann.de + +CSS +.fx-mix-blend-mode--multiply, +.product__image { + mix-blend-mode: unset !important; +} + +================================ + tianchi.aliyun.com NO INVERT From 2953e41f6f20f3ff7c26ffa6e1a2f66f8fc8ae8b Mon Sep 17 00:00:00 2001 From: Anton Bershanskiy <45960703+bershanskiy@users.noreply.github.com> Date: Sun, 3 Jul 2022 15:52:21 +0300 Subject: [PATCH 886/892] Refactor: Use proper MessageType enum (#9178) --- src/background/messenger.ts | 2 + src/background/tab-manager.ts | 3 ++ src/definitions.d.ts | 5 ++- src/inject/index.ts | 2 + src/ui/connect/connector.ts | 4 +- src/utils/message.ts | 82 +++++++++++++++++------------------ 6 files changed, 53 insertions(+), 45 deletions(-) diff --git a/src/background/messenger.ts b/src/background/messenger.ts index 00003497415e..60c04d09a62d 100644 --- a/src/background/messenger.ts +++ b/src/background/messenger.ts @@ -153,6 +153,8 @@ export default class Messenger { this.adapter.resetDevStaticThemes(); break; } + default: + break; } } diff --git a/src/background/tab-manager.ts b/src/background/tab-manager.ts index cc3b68f91d47..b9ea9e94bdb1 100644 --- a/src/background/tab-manager.ts +++ b/src/background/tab-manager.ts @@ -227,6 +227,9 @@ export default class TabManager { chrome.tabs.sendMessage(activeTab.id, {type: MessageType.BG_EXPORT_CSS}, {frameId: 0}); break; } + + default: + break; } }); diff --git a/src/definitions.d.ts b/src/definitions.d.ts index 971ca900bc89..a6e62ee31c28 100644 --- a/src/definitions.d.ts +++ b/src/definitions.d.ts @@ -1,5 +1,6 @@ import type {ParsedColorSchemeConfig} from './utils/colorscheme-parser'; import type {FilterMode} from './generators/css-filter'; +import type {MessageType} from './utils/message'; export interface ExtensionData { isEnabled: boolean; @@ -21,7 +22,7 @@ export interface ExtensionData { } export interface TabData { - type: string; + type: MessageType; data?: any; } @@ -125,7 +126,7 @@ export interface TabInfo { } export interface Message { - type: string; + type: MessageType; data?: any; id?: number; error?: any; diff --git a/src/inject/index.ts b/src/inject/index.ts index c16a643cc25a..88616ede264f 100644 --- a/src/inject/index.ts +++ b/src/inject/index.ts @@ -122,6 +122,8 @@ function onMessage({type, data}: Message) { logWarn('Cleaning up before update'); cleanup(); break; + default: + break; } } diff --git a/src/ui/connect/connector.ts b/src/ui/connect/connector.ts index b508fb2ad585..29a861be7ced 100644 --- a/src/ui/connect/connector.ts +++ b/src/ui/connect/connector.ts @@ -9,7 +9,7 @@ export default class Connector implements ExtensionActions { this.changeSubscribers = new Set(); } - private async sendRequest(type: string, data?: string) { + private async sendRequest(type: MessageType, data?: string) { return new Promise((resolve, reject) => { chrome.runtime.sendMessage({type, data}, ({data, error}: Message) => { if (error) { @@ -21,7 +21,7 @@ export default class Connector implements ExtensionActions { }); } - private async firefoxSendRequestWithResponse(type: string, data?: string) { + private async firefoxSendRequestWithResponse(type: MessageType, data?: string) { return new Promise((resolve, reject) => { const dataPort = chrome.runtime.connect({name: type}); dataPort.onDisconnect.addListener(() => reject()); diff --git a/src/utils/message.ts b/src/utils/message.ts index fe9f6d411a93..20502b9052b5 100644 --- a/src/utils/message.ts +++ b/src/utils/message.ts @@ -1,43 +1,43 @@ -export const MessageType = { - UI_GET_DATA: 'ui-get-data', - UI_SUBSCRIBE_TO_CHANGES: 'ui-subscribe-to-changes', - UI_UNSUBSCRIBE_FROM_CHANGES: 'ui-unsubscribe-from-changes', - UI_CHANGE_SETTINGS: 'ui-change-settings', - UI_SET_THEME: 'ui-set-theme', - UI_SET_SHORTCUT: 'ui-set-shortcut', - UI_TOGGLE_ACTIVE_TAB: 'ui-toggle-active-tab', - UI_MARK_NEWS_AS_READ: 'ui-mark-news-as-read', - UI_MARK_NEWS_AS_DISPLAYED: 'ui-mark-news-as-displayed', - UI_LOAD_CONFIG: 'ui-load-config', - UI_APPLY_DEV_DYNAMIC_THEME_FIXES: 'ui-apply-dev-dynamic-theme-fixes', - UI_RESET_DEV_DYNAMIC_THEME_FIXES: 'ui-reset-dev-dynamic-theme-fixes', - UI_APPLY_DEV_INVERSION_FIXES: 'ui-apply-dev-inversion-fixes', - UI_RESET_DEV_INVERSION_FIXES: 'ui-reset-dev-inversion-fixes', - UI_APPLY_DEV_STATIC_THEMES: 'ui-apply-dev-static-themes', - UI_RESET_DEV_STATIC_THEMES: 'ui-reset-dev-static-themes', - UI_SAVE_FILE: 'ui-save-file', - UI_REQUEST_EXPORT_CSS: 'ui-request-export-css', +export enum MessageType { + UI_GET_DATA = 'ui-get-data', + UI_SUBSCRIBE_TO_CHANGES = 'ui-subscribe-to-changes', + UI_UNSUBSCRIBE_FROM_CHANGES = 'ui-unsubscribe-from-changes', + UI_CHANGE_SETTINGS = 'ui-change-settings', + UI_SET_THEME = 'ui-set-theme', + UI_SET_SHORTCUT = 'ui-set-shortcut', + UI_TOGGLE_ACTIVE_TAB = 'ui-toggle-active-tab', + UI_MARK_NEWS_AS_READ = 'ui-mark-news-as-read', + UI_MARK_NEWS_AS_DISPLAYED = 'ui-mark-news-as-displayed', + UI_LOAD_CONFIG = 'ui-load-config', + UI_APPLY_DEV_DYNAMIC_THEME_FIXES = 'ui-apply-dev-dynamic-theme-fixes', + UI_RESET_DEV_DYNAMIC_THEME_FIXES = 'ui-reset-dev-dynamic-theme-fixes', + UI_APPLY_DEV_INVERSION_FIXES = 'ui-apply-dev-inversion-fixes', + UI_RESET_DEV_INVERSION_FIXES = 'ui-reset-dev-inversion-fixes', + UI_APPLY_DEV_STATIC_THEMES = 'ui-apply-dev-static-themes', + UI_RESET_DEV_STATIC_THEMES = 'ui-reset-dev-static-themes', + UI_SAVE_FILE = 'ui-save-file', + UI_REQUEST_EXPORT_CSS = 'ui-request-export-css', - BG_CHANGES: 'bg-changes', - BG_ADD_CSS_FILTER: 'bg-add-css-filter', - BG_ADD_STATIC_THEME: 'bg-add-static-theme', - BG_ADD_SVG_FILTER: 'bg-add-svg-filter', - BG_ADD_DYNAMIC_THEME: 'bg-add-dynamic-theme', - BG_EXPORT_CSS: 'bg-export-css', - BG_UNSUPPORTED_SENDER: 'bg-unsupported-sender', - BG_CLEAN_UP: 'bg-clean-up', - BG_RELOAD: 'bg-reload', - BG_FETCH_RESPONSE: 'bg-fetch-response', - BG_UI_UPDATE: 'bg-ui-update', - BG_CSS_UPDATE: 'bg-css-update', + BG_CHANGES = 'bg-changes', + BG_ADD_CSS_FILTER = 'bg-add-css-filter', + BG_ADD_STATIC_THEME = 'bg-add-static-theme', + BG_ADD_SVG_FILTER = 'bg-add-svg-filter', + BG_ADD_DYNAMIC_THEME = 'bg-add-dynamic-theme', + BG_EXPORT_CSS = 'bg-export-css', + BG_UNSUPPORTED_SENDER = 'bg-unsupported-sender', + BG_CLEAN_UP = 'bg-clean-up', + BG_RELOAD = 'bg-reload', + BG_FETCH_RESPONSE = 'bg-fetch-response', + BG_UI_UPDATE = 'bg-ui-update', + BG_CSS_UPDATE = 'bg-css-update', - CS_COLOR_SCHEME_CHANGE: 'cs-color-scheme-change', - CS_FRAME_CONNECT: 'cs-frame-connect', - CS_FRAME_FORGET: 'cs-frame-forget', - CS_FRAME_FREEZE: 'cs-frame-freeze', - CS_FRAME_RESUME: 'cs-frame-resume', - CS_EXPORT_CSS_RESPONSE: 'cs-export-css-response', - CS_FETCH: 'cs-fetch', - CS_DARK_THEME_DETECTED: 'cs-dark-theme-detected', - CS_DARK_THEME_NOT_DETECTED: 'cs-dark-theme-not-detected', -}; + CS_COLOR_SCHEME_CHANGE = 'cs-color-scheme-change', + CS_FRAME_CONNECT = 'cs-frame-connect', + CS_FRAME_FORGET = 'cs-frame-forget', + CS_FRAME_FREEZE = 'cs-frame-freeze', + CS_FRAME_RESUME = 'cs-frame-resume', + CS_EXPORT_CSS_RESPONSE = 'cs-export-css-response', + CS_FETCH = 'cs-fetch', + CS_DARK_THEME_DETECTED = 'cs-dark-theme-detected', + CS_DARK_THEME_NOT_DETECTED = 'cs-dark-theme-not-detected', +} From b8b7d49b08d36bce8bbe6a21c533c9181faed8ac Mon Sep 17 00:00:00 2001 From: Anton Bershanskiy <45960703+bershanskiy@users.noreply.github.com> Date: Sun, 3 Jul 2022 17:39:23 +0300 Subject: [PATCH 887/892] Refactor: avoid objects with only one attribute (#9179) --- src/background/extension.ts | 2 +- src/background/tab-manager.ts | 2 +- src/inject/index.ts | 2 +- src/inject/utils/watch-color-scheme.ts | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/background/extension.ts b/src/background/extension.ts index 12d43c39060a..fdb292c88aab 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -422,7 +422,7 @@ export class Extension implements ExtensionState { }); } - private onColorSchemeChange = ({isDark}: {isDark: boolean}) => { + private onColorSchemeChange = (isDark: boolean) => { if (isFirefox) { this.wasLastColorSchemeDark = isDark; } diff --git a/src/background/tab-manager.ts b/src/background/tab-manager.ts index b9ea9e94bdb1..eff6b278d3f7 100644 --- a/src/background/tab-manager.ts +++ b/src/background/tab-manager.ts @@ -21,7 +21,7 @@ interface ConnectionMessageOptions { interface TabManagerOptions { getConnectionMessage: (options: ConnectionMessageOptions) => Message | Promise; getTabMessage: (url: string, frameUrl: string) => Message; - onColorSchemeChange: ({isDark}: {isDark: boolean}) => void; + onColorSchemeChange: (isDark: boolean) => void; } interface FrameInfo { diff --git a/src/inject/index.ts b/src/inject/index.ts index 88616ede264f..ab29f372381a 100644 --- a/src/inject/index.ts +++ b/src/inject/index.ts @@ -12,7 +12,7 @@ import {isMV3, isThunderbird} from '../utils/platform'; let unloaded = false; // TODO: Use background page color scheme watcher when browser bugs fixed. -let colorSchemeWatcher = watchForColorSchemeChange(({isDark}) => { +let colorSchemeWatcher = watchForColorSchemeChange((isDark) => { logInfo('Media query was changed'); sendMessage({type: MessageType.CS_COLOR_SCHEME_CHANGE, data: {isDark}}); }); diff --git a/src/inject/utils/watch-color-scheme.ts b/src/inject/utils/watch-color-scheme.ts index 030a8f13d9d5..e684d9025c7c 100644 --- a/src/inject/utils/watch-color-scheme.ts +++ b/src/inject/utils/watch-color-scheme.ts @@ -1,8 +1,8 @@ import {isMatchMediaChangeEventListenerSupported} from '../../utils/platform'; -export function watchForColorSchemeChange(callback: ({isDark}: {isDark: boolean}) => void) { +export function watchForColorSchemeChange(callback: (isDark: boolean) => void) { const query = matchMedia('(prefers-color-scheme: dark)'); - const onChange = () => callback({isDark: query.matches}); + const onChange = () => callback(query.matches); if (isMatchMediaChangeEventListenerSupported) { query.addEventListener('change', onChange); } else { From fe929d5ca3578e2bf4f9a9a1aece09ead40c3157 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 3 Jul 2022 23:45:26 +0200 Subject: [PATCH 888/892] Add darkreader-lock meta (#9181) - Add `` to look for and if available remove Dark Reader. - Resolves #4325 - Resolves #4330 - Superseeds #4334 --- CHANGELOG.md | 1 + src/inject/dynamic-theme/index.ts | 19 +++++++++++++++ tests/inject/dynamic/fixes.tests.ts | 37 ++++++++++++++++++++++++++++- 3 files changed, 56 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bba962b2584..169ff7196938 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ - Don't manage styles that have a empty `href` attribute. - Use `navigator.UserAgentData` when possible. +- Add a `` detector, to disable Dark Reader when detected (only dynamic theme). ## 4.9.52 (June 28, 2022) diff --git a/src/inject/dynamic-theme/index.ts b/src/inject/dynamic-theme/index.ts index 15a5bf033650..b79e91b28f5a 100644 --- a/src/inject/dynamic-theme/index.ts +++ b/src/inject/dynamic-theme/index.ts @@ -431,6 +431,18 @@ function stopWatchingForUpdates() { cleanReadyStateCompleteListeners(); } +let metaObserver: MutationObserver; + +function addMetaListener() { + metaObserver = new MutationObserver(() => { + if (document.querySelector('meta[name="darkreader-lock"]')) { + metaObserver.disconnect(); + removeDynamicTheme(); + } + }); + metaObserver.observe(document.head, {childList: true, subtree: true}); +} + function createDarkReaderInstanceMarker() { const metaElement: HTMLMetaElement = document.createElement('meta'); metaElement.name = 'darkreader'; @@ -439,6 +451,10 @@ function createDarkReaderInstanceMarker() { } function isAnotherDarkReaderInstanceActive() { + if (document.querySelector('meta[name="darkreader-lock"]')) { + return true; + } + const meta: HTMLMetaElement = document.querySelector('meta[name="darkreader"]'); if (meta) { if (meta.content !== INSTANCE_ID) { @@ -447,6 +463,7 @@ function isAnotherDarkReaderInstanceActive() { return false; } createDarkReaderInstanceMarker(); + addMetaListener(); return false; } @@ -532,6 +549,8 @@ export function removeDynamicTheme() { manager.destroy(); }); adoptedStyleManagers.splice(0); + + metaObserver && metaObserver.disconnect(); } export function cleanDynamicThemeCache() { diff --git a/tests/inject/dynamic/fixes.tests.ts b/tests/inject/dynamic/fixes.tests.ts index b7d9236270c5..1be4a6a4cbe5 100644 --- a/tests/inject/dynamic/fixes.tests.ts +++ b/tests/inject/dynamic/fixes.tests.ts @@ -1,9 +1,10 @@ import '../support/polyfills'; import {DEFAULT_THEME} from '../../../src/defaults'; import {createOrUpdateDynamicTheme, removeDynamicTheme} from '../../../src/inject/dynamic-theme'; -import {multiline} from '../support/test-utils'; +import {multiline, timeout} from '../support/test-utils'; import type {DynamicThemeFix} from '../../../src/definitions'; import {FilterMode} from '../../../src/generators/css-filter'; +import {removeNode} from '../../../src/inject/utils/dom'; let container: HTMLElement; @@ -15,6 +16,7 @@ beforeEach(() => { afterEach(() => { removeDynamicTheme(); container.innerHTML = ''; + removeNode(document.head.querySelector('meta[name="darkreader-lock"]')); }); describe('FIXES', () => { @@ -77,4 +79,37 @@ describe('FIXES', () => { createOrUpdateDynamicTheme(DEFAULT_THEME, fixes, false); expect(getComputedStyle(container.querySelector('.text')).backgroundColor).toBe('rgb(128, 0, 128)'); }); + + it('should ignore styling when darkreader-lock detected', async () => { + document.head.innerHTML = '', + container.innerHTML = multiline( + '', + ); + createOrUpdateDynamicTheme(DEFAULT_THEME, null, false); + + expect(getComputedStyle(document.body).backgroundColor).toBe('rgb(255, 192, 203)'); + }); + + it('should ignore styling when delayed darkreader-lock detected', async () => { + container.innerHTML = multiline( + '', + ); + createOrUpdateDynamicTheme(DEFAULT_THEME, null, false); + + expect(getComputedStyle(container).backgroundColor).toBe('rgb(89, 0, 16)'); + const metaElement: HTMLMetaElement = document.createElement('meta'); + metaElement.name = 'darkreader-lock'; + document.head.appendChild(metaElement); + await timeout(100); + + expect(getComputedStyle(container).backgroundColor).toBe('rgb(255, 192, 203)'); + }); }); From 6fb67a91b8d8a0b82d5db91c213b9b6fdb833d9a Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 4 Jul 2022 00:27:36 +0200 Subject: [PATCH 889/892] Fix for metrobyt-mobile.com (#9182) - Resolves #9177 --- src/config/dynamic-theme-fixes.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index ccb4dae9c8bd..8dbf2d57f98b 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -11518,6 +11518,18 @@ div > img[src] { ================================ +metrobyt-mobile.com + +INVERT +#digital-header-logo-img + +CSS +#Desktop-img { + z-index: 0 !important; +} + +================================ + mewe.com CSS From e6546369d1a35a69845371222876eab5773183c6 Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 4 Jul 2022 04:49:59 +0200 Subject: [PATCH 890/892] Fix for curseforge.com (#9184) - Resolves #8980 --- src/config/dynamic-theme-fixes.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/config/dynamic-theme-fixes.config b/src/config/dynamic-theme-fixes.config index 8dbf2d57f98b..55a4f297fba2 100644 --- a/src/config/dynamic-theme-fixes.config +++ b/src/config/dynamic-theme-fixes.config @@ -4259,6 +4259,13 @@ INVERT ================================ +curseforge.com + +IGNORE IMAGE ANALYSIS +.e-generic-header + +================================ + cxp.cengage.com INVERT From 5e287e5c14d7e6b4c8567db8029b61ced0d0ac3a Mon Sep 17 00:00:00 2001 From: Anton Bershanskiy <45960703+bershanskiy@users.noreply.github.com> Date: Mon, 4 Jul 2022 07:55:47 +0300 Subject: [PATCH 891/892] MV3: 'system' Automation (#9180) --- src/background/extension.ts | 48 ++++++++++++++++++++++++-- src/background/tab-manager.ts | 6 ++++ src/background/utils/state-manager.ts | 4 +-- src/inject/index.ts | 13 +++---- src/inject/utils/watch-color-scheme.ts | 33 +++++++++++------- 5 files changed, 80 insertions(+), 24 deletions(-) diff --git a/src/background/extension.ts b/src/background/extension.ts index fdb292c88aab..07d1eb29d397 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -32,6 +32,10 @@ interface ExtensionState { registeredContextMenus: boolean; } +interface SystemColorState { + isDark: boolean | null; +} + declare const __DEBUG__: boolean; export class Extension implements ExtensionState { @@ -54,6 +58,12 @@ export class Extension implements ExtensionState { private static ALARM_NAME = 'auto-time-alarm'; private static LOCAL_STORAGE_KEY = 'Extension-state'; + + // Store system color theme + private static SYSTEM_COLOR_LOCAL_STORAGE_KEY = 'system-color-state'; + private systemColorStateManager: StateManager; + private isDark: boolean | null = null; + constructor() { this.config = new ConfigManager(); this.devtools = new DevTools(this.config, async () => this.onSettingsChanged()); @@ -86,6 +96,35 @@ export class Extension implements ExtensionState { } } + private async MV3initSystemColorStateManager(isDark: boolean | null): Promise { + if (!isMV3) { + return; + } + if (!this.systemColorStateManager) { + this.systemColorStateManager = new StateManager(Extension.SYSTEM_COLOR_LOCAL_STORAGE_KEY, this, { + isDark, + }); + } + if (isDark === null) { + // Attempt to restore data from storage + return this.systemColorStateManager.loadState(); + } else if (this.isDark !== isDark) { + this.isDark = isDark; + return this.systemColorStateManager.saveState(); + } + } + + private async MV3saveSystemColorStateManager(): Promise { + if (!isMV3) { + return; + } + if (!this.systemColorStateManager) { + logWarn('MV3saveSystemColorStateManager() called before MV3initSystemColorStateManager()'); + return; + } + return this.systemColorStateManager.saveState(); + } + private alarmListener = (alarm: chrome.alarms.Alarm): void => { if (alarm.name === Extension.ALARM_NAME) { this.callWhenSettingsLoaded(() => { @@ -116,8 +155,11 @@ export class Extension implements ExtensionState { break; case 'system': if (isMV3) { - logWarn('system automation is not yet supported. Defaulting to ON.'); - isAutoDark = true; + isAutoDark = this.isDark; + if (this.isDark === null) { + logWarn('System color scheme is unknown. Defaulting to Dark.'); + isAutoDark = true; + } break; } if (isFirefox) { @@ -163,6 +205,7 @@ export class Extension implements ExtensionState { async start() { await this.config.load({local: true}); + await this.MV3initSystemColorStateManager(null); await this.user.loadSettings(); if (this.user.settings.enableContextMenus && !this.registeredContextMenus) { @@ -423,6 +466,7 @@ export class Extension implements ExtensionState { } private onColorSchemeChange = (isDark: boolean) => { + this.MV3initSystemColorStateManager(isDark); if (isFirefox) { this.wasLastColorSchemeDark = isDark; } diff --git a/src/background/tab-manager.ts b/src/background/tab-manager.ts index eff6b278d3f7..ceb4783a3a0d 100644 --- a/src/background/tab-manager.ts +++ b/src/background/tab-manager.ts @@ -97,6 +97,9 @@ export default class TabManager { switch (message.type) { case MessageType.CS_FRAME_CONNECT: { + if (isMV3) { + onColorSchemeChange(message.data.isDark); + } await this.stateManager.loadState(); const reply = (options: ConnectionMessageOptions) => { const message = getConnectionMessage(options); @@ -161,6 +164,9 @@ export default class TabManager { this.stateManager.saveState(); break; case MessageType.CS_FRAME_RESUME: { + if (isMV3) { + onColorSchemeChange(message.data.isDark); + } await this.stateManager.loadState(); const tabId = sender.tab.id; const frameId = sender.frameId; diff --git a/src/background/utils/state-manager.ts b/src/background/utils/state-manager.ts index 70be6b9fbf1a..100c7ece1462 100644 --- a/src/background/utils/state-manager.ts +++ b/src/background/utils/state-manager.ts @@ -84,8 +84,8 @@ export class StateManager { private collectState() { const state = {} as T; - for (const key of Object.keys(this.defaults)) { - state[key as keyof T] = this.parent[key as keyof T] || this.defaults[key as keyof T]; + for (const key of Object.keys(this.defaults) as Array) { + state[key] = this.parent[key] || this.defaults[key]; } return state; } diff --git a/src/inject/index.ts b/src/inject/index.ts index ab29f372381a..2fa9e522c3d3 100644 --- a/src/inject/index.ts +++ b/src/inject/index.ts @@ -3,7 +3,7 @@ import {createOrUpdateSVGFilter, removeSVGFilter} from './svg-filter'; import {runDarkThemeDetector, stopDarkThemeDetector} from './detector'; import {createOrUpdateDynamicTheme, removeDynamicTheme, cleanDynamicThemeCache} from './dynamic-theme'; import {logInfo, logWarn, logInfoCollapsed} from '../utils/log'; -import {watchForColorSchemeChange} from './utils/watch-color-scheme'; +import {isSystemDarkScheme, runColorSchemeChangeDetector, stopColorSchemeChangeDetector} from './utils/watch-color-scheme'; import {collectCSS} from './dynamic-theme/css-collection'; import type {Message} from '../definitions'; import {MessageType} from '../utils/message'; @@ -12,7 +12,7 @@ import {isMV3, isThunderbird} from '../utils/platform'; let unloaded = false; // TODO: Use background page color scheme watcher when browser bugs fixed. -let colorSchemeWatcher = watchForColorSchemeChange((isDark) => { +runColorSchemeChangeDetector((isDark) => { logInfo('Media query was changed'); sendMessage({type: MessageType.CS_COLOR_SCHEME_CHANGE, data: {isDark}}); }); @@ -24,10 +24,7 @@ function cleanup() { removeEventListener('resume', onResume); cleanDynamicThemeCache(); stopDarkThemeDetector(); - if (colorSchemeWatcher) { - colorSchemeWatcher.disconnect(); - colorSchemeWatcher = null; - } + stopColorSchemeChangeDetector(); } function sendMessage(message: Message) { @@ -128,7 +125,7 @@ function onMessage({type, data}: Message) { } chrome.runtime.onMessage.addListener(onMessage); -sendMessage({type: MessageType.CS_FRAME_CONNECT}); +sendMessage({type: MessageType.CS_FRAME_CONNECT, data: {isDark: isSystemDarkScheme()}}); function onPageHide(e: PageTransitionEvent) { if (e.persisted === false) { @@ -141,7 +138,7 @@ function onFreeze() { } function onResume() { - sendMessage({type: MessageType.CS_FRAME_RESUME}); + sendMessage({type: MessageType.CS_FRAME_RESUME, data: {isDark: isSystemDarkScheme()}}); } function onDarkThemeDetected() { diff --git a/src/inject/utils/watch-color-scheme.ts b/src/inject/utils/watch-color-scheme.ts index e684d9025c7c..9e3910d34e24 100644 --- a/src/inject/utils/watch-color-scheme.ts +++ b/src/inject/utils/watch-color-scheme.ts @@ -1,20 +1,29 @@ import {isMatchMediaChangeEventListenerSupported} from '../../utils/platform'; -export function watchForColorSchemeChange(callback: (isDark: boolean) => void) { - const query = matchMedia('(prefers-color-scheme: dark)'); - const onChange = () => callback(query.matches); +let query: MediaQueryList = null; +let onChange: () => void = null; + +export function runColorSchemeChangeDetector(callback: (isDark: boolean) => void) { + query = matchMedia('(prefers-color-scheme: dark)'); + onChange = () => callback(query.matches); if (isMatchMediaChangeEventListenerSupported) { query.addEventListener('change', onChange); } else { query.addListener(onChange); } - return { - disconnect() { - if (isMatchMediaChangeEventListenerSupported) { - query.removeEventListener('change', onChange); - } else { - query.removeListener(onChange); - } - }, - }; } + +export function stopColorSchemeChangeDetector() { + if (!query || !onChange) { + return; + } + if (isMatchMediaChangeEventListenerSupported) { + query.removeEventListener('change', onChange); + } else { + query.removeListener(onChange); + } + query = null; + onChange = null; +} + +export const isSystemDarkScheme = () => (query || matchMedia('(prefers-color-scheme: dark)')).matches; From 12caab050d6e3c5bdf49d3d49a9f47a0378d3235 Mon Sep 17 00:00:00 2001 From: Anton Bershanskiy <45960703+bershanskiy@users.noreply.github.com> Date: Mon, 4 Jul 2022 10:23:20 +0300 Subject: [PATCH 892/892] Refactor: use consistent style in switch statements (#9188) --- src/background/extension.ts | 12 +++++------ src/background/index.ts | 9 +++----- src/background/messenger.ts | 39 ++++++++++++----------------------- src/background/tab-manager.ts | 12 +++++------ src/inject/index.ts | 6 ++---- 5 files changed, 29 insertions(+), 49 deletions(-) diff --git a/src/background/extension.ts b/src/background/extension.ts index 07d1eb29d397..68431af56006 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -148,11 +148,12 @@ export class Extension implements ExtensionState { let isAutoDark: boolean; let nextCheck: number; switch (automation) { - case 'time': + case 'time': { const {time} = this.user.settings; isAutoDark = isInTimeIntervalLocal(time.activation, time.deactivation); nextCheck = nextTimeInterval(time.activation, time.deactivation); break; + } case 'system': if (isMV3) { isAutoDark = this.isDark; @@ -179,9 +180,8 @@ export class Extension implements ExtensionState { } break; } - case '': { + case '': break; - } } let state: AutomationState = ''; @@ -318,7 +318,7 @@ export class Extension implements ExtensionState { automation: '', }); break; - case 'addSite': + case 'addSite': { logInfo('Add Site command entered'); const url = frameURL || await this.tabs.getActiveTabURL(); if (isPDF(url)) { @@ -327,6 +327,7 @@ export class Extension implements ExtensionState { this.toggleActiveTab(); } break; + } case 'switchEngine': { logInfo('Switch Engine command entered'); const engines = Object.values(ThemeEngines); @@ -710,9 +711,8 @@ export class Extension implements ExtensionState { }, }; } - default: { + default: throw new Error(`Unknown engine ${theme.engine}`); - } } } diff --git a/src/background/index.ts b/src/background/index.ts index 2636914d5f2f..7cbccd09a62f 100644 --- a/src/background/index.ts +++ b/src/background/index.ts @@ -46,15 +46,13 @@ if (WATCH) { send({type: 'reloading'}); } switch (message.type) { - case 'reload:css': { + case 'reload:css': chrome.runtime.sendMessage({type: MessageType.BG_CSS_UPDATE}); break; - } - case 'reload:ui': { + case 'reload:ui': chrome.runtime.sendMessage({type: MessageType.BG_UI_UPDATE}); break; - } - case 'reload:full': { + case 'reload:full': chrome.tabs.query({}, (tabs) => { for (const tab of tabs) { if (canInjectScript(tab.url)) { @@ -64,7 +62,6 @@ if (WATCH) { chrome.runtime.reload(); }); break; - } } }; socket.onclose = () => { diff --git a/src/background/messenger.ts b/src/background/messenger.ts index 60c04d09a62d..3441a31b0f0b 100644 --- a/src/background/messenger.ts +++ b/src/background/messenger.ts @@ -86,73 +86,60 @@ export default class Messenger { private onUIMessage({type, data}: Message, sendResponse: (response: {data?: ExtensionData | TabInfo; error?: string}) => void) { switch (type) { - case MessageType.UI_GET_DATA: { + case MessageType.UI_GET_DATA: this.adapter.collect().then((data) => sendResponse({data})); break; - } - case MessageType.UI_SUBSCRIBE_TO_CHANGES: { + case MessageType.UI_SUBSCRIBE_TO_CHANGES: this.changeListenerCount++; break; - } - case MessageType.UI_UNSUBSCRIBE_FROM_CHANGES: { + case MessageType.UI_UNSUBSCRIBE_FROM_CHANGES: this.changeListenerCount--; break; - } - case MessageType.UI_CHANGE_SETTINGS: { + case MessageType.UI_CHANGE_SETTINGS: this.adapter.changeSettings(data); break; - } - case MessageType.UI_SET_THEME: { + case MessageType.UI_SET_THEME: this.adapter.setTheme(data); break; - } - case MessageType.UI_SET_SHORTCUT: { + case MessageType.UI_SET_SHORTCUT: this.adapter.setShortcut(data); break; - } - case MessageType.UI_TOGGLE_ACTIVE_TAB: { + case MessageType.UI_TOGGLE_ACTIVE_TAB: this.adapter.toggleActiveTab(); break; - } - case MessageType.UI_MARK_NEWS_AS_READ: { + case MessageType.UI_MARK_NEWS_AS_READ: this.adapter.markNewsAsRead(data); break; - } - case MessageType.UI_MARK_NEWS_AS_DISPLAYED: { + case MessageType.UI_MARK_NEWS_AS_DISPLAYED: this.adapter.markNewsAsDisplayed(data); break; - } - case MessageType.UI_LOAD_CONFIG: { + case MessageType.UI_LOAD_CONFIG: this.adapter.loadConfig(data); break; - } case MessageType.UI_APPLY_DEV_DYNAMIC_THEME_FIXES: { const error = this.adapter.applyDevDynamicThemeFixes(data); sendResponse({error: (error ? error.message : null)}); break; } - case MessageType.UI_RESET_DEV_DYNAMIC_THEME_FIXES: { + case MessageType.UI_RESET_DEV_DYNAMIC_THEME_FIXES: this.adapter.resetDevDynamicThemeFixes(); break; - } case MessageType.UI_APPLY_DEV_INVERSION_FIXES: { const error = this.adapter.applyDevInversionFixes(data); sendResponse({error: (error ? error.message : null)}); break; } - case MessageType.UI_RESET_DEV_INVERSION_FIXES: { + case MessageType.UI_RESET_DEV_INVERSION_FIXES: this.adapter.resetDevInversionFixes(); break; - } case MessageType.UI_APPLY_DEV_STATIC_THEMES: { const error = this.adapter.applyDevStaticThemes(data); sendResponse({error: error ? error.message : null}); break; } - case MessageType.UI_RESET_DEV_STATIC_THEMES: { + case MessageType.UI_RESET_DEV_STATIC_THEMES: this.adapter.resetDevStaticThemes(); break; - } default: break; } diff --git a/src/background/tab-manager.ts b/src/background/tab-manager.ts index ceb4783a3a0d..8b05a1643362 100644 --- a/src/background/tab-manager.ts +++ b/src/background/tab-manager.ts @@ -148,21 +148,21 @@ export default class TabManager { this.stateManager.saveState(); break; } - case MessageType.CS_FRAME_FORGET: { + case MessageType.CS_FRAME_FORGET: if (!sender.tab) { logWarn('Unexpected message', message, sender); break; } removeFrame(this, sender.tab.id, sender.frameId); break; - } - case MessageType.CS_FRAME_FREEZE: + case MessageType.CS_FRAME_FREEZE: { await this.stateManager.loadState(); const info = this.tabs[sender.tab.id][sender.frameId]; info.state = DocumentState.FROZEN; info.url = null; this.stateManager.saveState(); break; + } case MessageType.CS_FRAME_RESUME: { if (isMV3) { onColorSchemeChange(message.data.isDark); @@ -183,10 +183,9 @@ export default class TabManager { this.stateManager.saveState(); break; } - case MessageType.CS_DARK_THEME_DETECTED: { + case MessageType.CS_DARK_THEME_DETECTED: this.tabs[sender.tab.id][sender.frameId].darkThemeDetected = true; break; - } case MessageType.CS_FETCH: { // Using custom response due to Chrome and Firefox incompatibility @@ -214,10 +213,9 @@ export default class TabManager { break; } - case MessageType.CS_COLOR_SCHEME_CHANGE: { + case MessageType.CS_COLOR_SCHEME_CHANGE: onColorSchemeChange(message.data); break; - } case MessageType.UI_SAVE_FILE: { const {content, name} = message.data; diff --git a/src/inject/index.ts b/src/inject/index.ts index 2fa9e522c3d3..25afc7c21f97 100644 --- a/src/inject/index.ts +++ b/src/inject/index.ts @@ -103,18 +103,16 @@ function onMessage({type, data}: Message) { } break; } - case MessageType.BG_EXPORT_CSS: { + case MessageType.BG_EXPORT_CSS: collectCSS().then((collectedCSS) => sendMessage({type: MessageType.CS_EXPORT_CSS_RESPONSE, data: collectedCSS})); break; - } case MessageType.BG_UNSUPPORTED_SENDER: - case MessageType.BG_CLEAN_UP: { + case MessageType.BG_CLEAN_UP: removeStyle(); removeSVGFilter(); removeDynamicTheme(); stopDarkThemeDetector(); break; - } case MessageType.BG_RELOAD: logWarn('Cleaning up before update'); cleanup();

Dark Reader's mascot