Compare commits

..

No commits in common. "main" and "v2.6.56" have entirely different histories.

1186 changed files with 12027 additions and 15205 deletions

View File

@ -34,7 +34,6 @@
"BadResources": true,
"LogString": true,
"BlockedRequestMethods": true,
"GoogleDomains": true,
"fileGuard": true,
"files": true,

View File

@ -1,13 +1,16 @@
## Please read the following points carefully(!). This is not a template or a form. These are just a few tips before you create a ticket. Please delete all text and describe the problem.
## Please read this text carefully(!)
* Only Firefox: Does the website work after you activate the HTML filter?
* Is there already an existing issue? (e.g. search for the URL of the website)
* Is there already an existing issue? (Search for the URL, e.g. "codeberg.org" or "localcdn.org")
* For the most common problems and solutions I have created an online tool. Please test the broken website there: https://www.localcdn.org/test/check
* Check the FAQs: https://codeberg.org/nobody/LocalCDN/wiki
## If none of the points apply
* write the URL in the title
* one or two screenshots can be helpful
## If none of the above points have helped, then
* Write the URL of the website in the title, for example
* Describe the problem as detailed as possible (maybe one or two screenshots can be helpful)
## Please delete this text(!)
## and describe the problem
Thank you for your understanding

File diff suppressed because it is too large Load Diff

View File

@ -159,10 +159,6 @@
"message": "العام الماضي",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "حذف",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Миналата година",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "Всички",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Премахване",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "L'any passat",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Suprimeix",
"description": "Button to delete all statistics data."

View File

@ -128,7 +128,7 @@
"description": "If requests for missing resources are allowed, connections to \"fonts.googleapis.com\" are not blocked. Enable this option to block these requests."
},
"chooseIconStyle": {
"message": "Vybraná ikona tohoto rozšíření",
"message": "Vyberte si ikonu pro toto rozšíření",
"description": "Choose an icon for this extension"
},
"internalStatisticsTitle": {
@ -159,10 +159,6 @@
"message": "Minulý rok",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Smazat",
"description": "Button to delete all statistics data."
@ -208,7 +204,7 @@
"description": "Local"
},
"labelStorageTypeSync": {
"message": "Synchronizova",
"message": "Synchronizovat",
"description": "Sync"
},
"headerImportExport": {
@ -336,11 +332,11 @@
"description": "Why is it necessary to remove crossorigin and integrity attributes?"
},
"helpHtmlFilterCrossorigin": {
"message": "Atribut crossorigin brání nahrazení, protože cíl neodpovídá požadovanému.",
"message": "",
"description": "The crossorigin attribute prevents the replacement because the destination does not match the requested one."
},
"helpHtmlFilterIntegrity": {
"message": "Chcete-li ušetřit místo na disku a dodat více rámců LocalCDN upgraduje rámec. Značka integrity je hash hodnotou souboru. Pokud se kontrola nezdaří, prohlížeč nebude obsahovat framework. Kontrola integrity se nezdaří, protože hodnoty hash pro např. jQuery 1.10.1 a jQuery 1.12.4 se liší.",
"message": "",
"description": "To save disk space and to deliver more frameworks LocalCDN upgrades a framework. An integrity tag is the hash value of a file. If the check fails, the browser wont include a framework. The integrity check will fail because the hash values for e.g. jQuery 1.10.1 and jQuery 1.12.4 are different."
},
"helpHtmlFilterErrors": {
@ -348,7 +344,7 @@
"description": "Unfortunately, it sometimes happens that special characters are then displayed incorrectly. In this case you can deactivate the setting again, to display the umlauts correctly."
},
"helpRuleGeneratorDescription": {
"message": "Pokud chcete automaticky přesměrovat všechna podporovaná připojení k CDN do LocalCDN, můžete přidat tato pravidla do vašeho blokovače reklam pro povolení těchto přesměrování. Pokud pravidla nechcete přidat, musíte povolit každé CDN zvlášť na každé webové stránce.",
"message": "",
"description": "If you want to automatically redirect all supported CDN connections to LocalCDN, you can add these rules to your adblocker to allow these redirections. If you do not want to add these rules, you must allow each CDN connection individually for each website."
},
"helpRuleGeneratorUblockTitle": {
@ -356,7 +352,7 @@
"description": "Only uBlock Origin:"
},
"helpRuleGeneratorUblockDescription": {
"message": "Tato pravidla jsou relevantní pouze ve »středním« nebo »těžkém« režimu, protože blokuje veškeré zdroje třetích stran. Nejsou potřeba ve »výchozím«, »jednoduchém« nebo »velmi jednoduchém« režimu. Pro více informací navštivte Wiki uBlock Origin.",
"message": "",
"description": "These rules are only relevant in »medium« or »hard« mode, because it blocks all 3rd-party resources. They are not necessary in »default«, »easy« or »very-easy« mode. For more information, please visit the uBlock Origin Wiki."
},
"helpRuleGeneratorUblockTableIcon": {
@ -368,11 +364,11 @@
"description": "Mode"
},
"helpRuleGeneratorUblockTableUseful": {
"message": "Týká se",
"message": "",
"description": "Rules useful"
},
"helpRuleGeneratorUblockTableDefaultEasy": {
"message": "Výchozí/lehký",
"message": "",
"description": "Default/Easy"
},
"helpRuleGeneratorUblockTableMedium": {
@ -380,23 +376,23 @@
"description": "Medium"
},
"helpRuleGeneratorUblockTableHard": {
"message": "Přísný",
"message": "",
"description": "Hard"
},
"helpWebsiteIssuesDescription": {
"message": "Jsou tu dvě možné příčiny: buď požadovaný framework/knihovna není (zatím) poskytována LocalCDN nebo SOP. SOP (Same origin policy) je bezpečnostní mechanizmus, který určuje, jaká data může prohlížeč načíst. Pomáhá izolovat zákeřné dokumenty a snižuje tím možné způsoby útoku. Tato zásada znemožňuje prohlížeči načíst externí frameworky LocalCDN. Bohužel to v současnosti nemá žádné řešení.",
"message": "",
"description": "There are two possible reasons: Either a framework/library is required that LocalCDN doesnt (yet) deliver or an SOP. A SOP (Same origin policy) is a security mechanism that determines what data the browser is allowed to load. It helps to isolate malicious documents and thus reduce possible attack vectors. This policy prevents the browser from loading the external frameworks of LocalCDN. Unfortunately there is no solution for this at the moment."
},
"helpBlockGoogleFontsDescription": {
"message": "LocalCDN může nahradit »Google Material Icons«. Chcete-li zachytit připojení, váš blokátor reklam (např. uBlock Origin, uMatrix nebo AdGuard) musí požadavek povolit. LocalCDN naslouchá těmto požadavkům a pokud dotaz obsahuje »Google Material Icons«, zdroj bude nahrazen. Pokud zrušíte zaškrtnutí možnosti »Blokovat požadavky na chybějící obsah«, bude povolen průchod neexistujícím zdrojům a načte se »Google Fonts«, protože »Google Material Icons« a »Google Fonts« používají stejnou doménu. Pokud si to nepřejete, můžete zablokovat »Google Fonts« na LocalCDN .",
"message": "",
"description": "LocalCDN can replace »Google Material Icons«. To catch the connection your adblocker (e.g. uBlock Origin, uMatrix or AdGuard) must allow the request. LocalCDN listens on these requests and if the query contains »Google Material Icons«, the resource will be replaced. If you uncheck the »Block requests for missing content« option, non-existent resources will be allowed to pass and »Google Fonts« will be loaded, because »Google Material Icons« and »Google Fonts« use the same domain. If you dont want this, you can block »Google Fonts« on LocalCDN."
},
"helpStatisticsDescription": {
"message": "Nepanikařte, nic nebude přeneseno. Bylo by to proti všem mým zásadám. Statistiky (formát JSON) obsahují následující informace: datum, CDN+počítadlo a framework+počítadlo. To je vše, tady je příklad:",
"message": "",
"description": "Dont panic, nothing will be transmitted. It would be against all my principles. The statistics (JSON format) contains the following information: Date, CDN+counter and framework+counter. Thats all. Ive an example here:"
},
"helpStatisticsContent": {
"message": "Statistiky neobsahují informace o prohlížeči, operačním systému, webové stránce, IP adrese ani jiné informace. Jen datum, CDN+počítadlo a framework+počítadlo. Ukazují vám frameworky, které byly nahrazeny LocalCDN, a jak často a které CDN byly vyžádány.",
"message": "",
"description": "The statistics contain no information about the browser, operating system, requesting website, IP addresses or any other information. Just date, CDN+counter and framework+counter. It shows you which frameworks are replaced by LocalCDNs how often and which CDNs were requested."
},
"helpStatisticsTruthTitle": {
@ -404,27 +400,27 @@
"description": "How do I know thats true?"
},
"helpStatisticsTruthDescription": {
"message": "Úložiště rozšíření lze zobrazit přímo v prohlížeči Firefox. Otevřete URL »about:debugging«, přepněte na »Úložiště« a zvolte »Extension Storage«. Pod klíčem »internalStatisticsData« najdete shromážděná data. Stačí jej zkopírovat a vložit do tiskárny JSON PrettyPrinter, aby byl čitelnější. Vezměte prosím na vědomí, že musíte odstranit první a poslední uvozovky a klíč k nim. V tomto videu byste to měli jasně vidět.",
"message": "",
"description": "The extension storage can be viewed directly with the Firefox browser. Open the URL »about:debugging«, switch to »Storage« and select »Extension Storage«. Under the key »internalStatisticsData« you will find the collected data. Just copy it and put it into a JSON PrettyPrinter to make it more readable. Please note that you have to remove the first and last quotation mark and the key to it. You should be able to see this clearly in this video."
},
"helpSyncTitle": {
"message": "Co bude synchronizováno, když vyberu »synchronizovaný« typ úložiště?",
"message": "",
"description": "What will be synchronized when I select »sync« as storage type?"
},
"helpSyncDescription": {
"message": "Synchronizace bude fungovat pouze pokud jste přihlášeni Firefox účtem ve vašem zařízení a dovolili jste synchronizaci nastavení doplňků. Zvláštní server pro synchronizaci pod vaší kontrolou bude též fungovat. Bude se synchronizovat většina nastavení LocalCDN napříč všemi zařízeními.",
"message": "",
"description": "Sync will only work if you are logged in with a Firefox account on the device and have allowed add-ons to sync in the settings. A separate sync server under your control will also work. This will synchronize most of the settings of LocalCDN across all devices."
},
"helpSyncAccount": {
"message": "Pokud nemáte účet pro synchronizaci, nic nebude synchronizováno. V tomto případě nemá výběr vliv.",
"message": "",
"description": "If you dont have a sync account, nothing will be synchronized. In that case it makes no difference what type of storage you have selected."
},
"helpSyncContentNever": {
"message": "Položky, které nikdy nebudou synchronizovány:",
"message": "",
"description": "Things that are never synchronized:"
},
"helpNumberOfInjections": {
"message": "Počet vložení",
"message": "",
"description": "Numbers of injections"
},
"helpYes": {
@ -444,7 +440,7 @@
"description": "Settings that will be synchronized:"
},
"helpIcons": {
"message": "Výchozí, světlá, modrá/šedá",
"message": "",
"description": "Default, Light, Blue/Grey"
},
"helpSyncContentLinks": {
@ -460,71 +456,71 @@
"description": "Replace"
},
"helpReplaceOther": {
"message": "Nahradit ostatní zdroje",
"message": "",
"description": "Replace other resources"
},
"helpUpgradeAllResources": {
"message": "Nahradit všechny zdroje",
"message": "",
"description": "Upgrade all resources"
},
"helpExplanationChrome": {
"message": "Všechny prohlížeče založené na Chromiu",
"message": "",
"description": "All Chromium based Browser"
},
"helpLimitation": {
"message": "Toto není omezení LocalCDN, ale chybějící API v prohlížečích založených na Chromiu.",
"message": "",
"description": "This is not a limitation of LocalCDN, but missing API support of Chromium based browsers."
},
"titleBadgeDefault": {
"message": "Výchozí odznak",
"message": "",
"description": "Default badge"
},
"titleBadgeHTMLFilter": {
"message": "Odznak HTML filtru",
"message": "",
"description": "HTML filter badge"
},
"titleBadgeMissingResource": {
"message": "Odznak chybějících nebo blokovaných zdrojů",
"message": "",
"description": "Missing or blocked resources badge"
},
"counterBlocked": {
"message": "Zablokovaných",
"message": "",
"description": "Blocked"
},
"counterMissing": {
"message": "Chybějících",
"message": "",
"description": "Missing"
},
"permissionRevokedHeader": {
"message": "Oprávnění odebráno",
"message": "",
"description": "Permission revoked"
},
"permissionRevokedPermissionName": {
"message": "Přistupovat k vašim datům pro všechny webové stránky",
"message": "",
"description": "The exact name of the permission. Exactly as it is displayed in Firefox."
},
"permissionRevokedDescription": {
"message": "Prosíme, nezakazujte toto oprávnění. LocalCDN potřebuje toto oprávnění pro detekci a přesměrování požadavků na CDN.",
"message": "",
"description": "Please do not disable the permission. LocalCDN needs the permission to detect and redirect requests to CDNs."
},
"helpWhyThisPermission": {
"message": "Proč toto rozšíření potřebuje toto oprávnění?",
"message": "",
"description": "Why does this extension need this permission?"
},
"helpPermissionDescription": {
"message": "LocalCDN potřebuje znát, které požadavky jsou vytvořeny webovou stránkou pro jejich přesměrování nebo blokování. Po představení MV3 je toto oprávnění volitelné.",
"message": "",
"description": "LocalCDN needs to know which requests are created by a website to redirect or block it. With the introduction of MV3, this permission is listed as an optional permission."
},
"permissionMissing": {
"message": "Chybějící oprávnění",
"message": "",
"description": "Missing permission"
},
"permissionAllow": {
"message": "Povolit",
"message": "",
"description": "Allow"
},
"permissionMoreInfo": {
"message": "Další informace",
"message": "",
"description": "More info"
}
}

View File

@ -159,10 +159,6 @@
"message": "Sidste år",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Slette",
"description": "Button to delete all statistics data."
@ -192,7 +188,7 @@
"description": "Advanced"
},
"btnOther": {
"message": "Andet",
"message": "Anden",
"description": "Other"
},
"btnInfo": {

View File

@ -159,10 +159,6 @@
"message": "Letztes Jahr",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "Alles",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Löschen",
"description": "Button to delete all statistics data."
@ -484,7 +480,7 @@
"description": "HTML filter badge"
},
"titleBadgeMissingResource": {
"message": "Symbol für fehlende oder blockierte Ressourcen",
"message": "Symbol für fehlende oder blockierte Resourcen",
"description": "Missing or blocked resources badge"
},
"counterBlocked": {

View File

@ -159,10 +159,6 @@
"message": "Τον προηγούμενο χρόνο",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Διαγραφή",
"description": "Button to delete all statistics data."
@ -484,47 +480,47 @@
"description": "HTML filter badge"
},
"titleBadgeMissingResource": {
"message": "Εικονίδιο ανύπαρκτου ή αποκλεισμένου πόρου",
"message": "Εικονίδιο ανύπαρκτου πόρου",
"description": "Missing or blocked resources badge"
},
"counterBlocked": {
"message": "Αποκλεισμένο",
"message": "",
"description": "Blocked"
},
"counterMissing": {
"message": "Ανύπαρκτο",
"message": "",
"description": "Missing"
},
"permissionRevokedHeader": {
"message": "Ανάκληση άδειας",
"message": "",
"description": "Permission revoked"
},
"permissionRevokedPermissionName": {
"message": "Πρόσβαση στα δεδομένα σας σε όλους τους ιστότοπους",
"message": "",
"description": "The exact name of the permission. Exactly as it is displayed in Firefox."
},
"permissionRevokedDescription": {
"message": "Παρακαλώ μην ανακαλέσετε την άδεια. Το LocalCDN τη χρειάζεται για την ανίχνευση και την ανακατεύθυνση των αιτημάτων στα CDN.",
"message": "",
"description": "Please do not disable the permission. LocalCDN needs the permission to detect and redirect requests to CDNs."
},
"helpWhyThisPermission": {
"message": "Γιατί η επέκταση αυτή χρειάζεται αυτή την άδεια;",
"message": "",
"description": "Why does this extension need this permission?"
},
"helpPermissionDescription": {
"message": "Το LocalCDN χρειάζεται να γνωρίζει τι αιτήσεις δημιουργούνται από έναν ιστότοπο, για την ανακατεύθυνση ή την αποκλεισμό του. Με την παρουσίαση του MV3, η άδεια αυτή θεωρείται προαιρετική.",
"message": "",
"description": "LocalCDN needs to know which requests are created by a website to redirect or block it. With the introduction of MV3, this permission is listed as an optional permission."
},
"permissionMissing": {
"message": "Ανύπαρκτη άδεια",
"message": "",
"description": "Missing permission"
},
"permissionAllow": {
"message": "Επίτρεψε",
"message": "",
"description": "Allow"
},
"permissionMoreInfo": {
"message": "Περισσότερες πληροφορίες",
"message": "",
"description": "More info"
}
}

View File

@ -159,10 +159,6 @@
"message": "Last year",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "All",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Delete",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Last year",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "All",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Delete",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Last year",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "All",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Delete",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Lasta jaro",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Forviŝi",
"description": "Button to delete all statistics data."
@ -296,7 +292,7 @@
"description": "What about the statistics? Is anything transferred to any servers?"
},
"helpWhatWillBeSynchronizedTitle": {
"message": "Kio estos sinkronigita kiam mi elektas \"sinkronigi\" kiel stokotipo?",
"message": "",
"description": "What will be synchronized when I select »sync« as storage type?"
},
"helpBrowserCompatibilityTitle": {

View File

@ -1,6 +1,6 @@
{
"extensionDescription": {
"message": "Protege contra el rastreo a través de CDN (Redes de entrega de contenido) mediante la redirección a recursos locales.",
"message": "Le protege contra el rastreo de CDN (Redes de entrega de contenido) mediante la redirección a recursos locales.",
"description": "Protects you against tracking through CDNs (Content Delivery Networks) by redirecting to local resources."
},
"amountInjectedDescription": {
@ -159,10 +159,6 @@
"message": "Último año",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "Todo",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Eliminar",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Viimane aasta",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Kustuta",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Iaz",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Ezabatu",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Viime vuosi",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Poista",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Lannée dernière",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Supprimer",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "שנה שעברה",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "מחיקה",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Prošle godine",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Izbriši",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Múlt év",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Törlés",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Tahun lalu",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "Semua",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Hapus",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Ultimo anno",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Elimina",
"description": "Button to delete all statistics data."
@ -496,7 +492,7 @@
"description": "Missing"
},
"permissionRevokedHeader": {
"message": "Autorizzazione revocata",
"message": "",
"description": "Permission revoked"
},
"permissionRevokedPermissionName": {
@ -504,27 +500,27 @@
"description": "The exact name of the permission. Exactly as it is displayed in Firefox."
},
"permissionRevokedDescription": {
"message": "Non disabilitare l'autorizzazione. LocalCDN ha bisogno dell'autorizzazione per rilevare e reindirizzare le richieste a CDNs.",
"message": "",
"description": "Please do not disable the permission. LocalCDN needs the permission to detect and redirect requests to CDNs."
},
"helpWhyThisPermission": {
"message": "Perche questa estensione necessita di questa autorizzazione?",
"message": "",
"description": "Why does this extension need this permission?"
},
"helpPermissionDescription": {
"message": "LocalCDN ha bisogno di sapere quali richieste sono create da un sito web per reindirizzarle o bloccarle. Con l'introduzione di MV3, questa autorizzazione è elencata come facoltativa.",
"message": "",
"description": "LocalCDN needs to know which requests are created by a website to redirect or block it. With the introduction of MV3, this permission is listed as an optional permission."
},
"permissionMissing": {
"message": "Autorizzazione mancante",
"message": "",
"description": "Missing permission"
},
"permissionAllow": {
"message": "Consenti",
"message": "",
"description": "Allow"
},
"permissionMoreInfo": {
"message": "Più informazioni",
"message": "",
"description": "More info"
}
}

View File

@ -159,10 +159,6 @@
"message": "昨年",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "すべて",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "削除",
"description": "Button to delete all statistics data."
@ -496,35 +492,35 @@
"description": "Missing"
},
"permissionRevokedHeader": {
"message": "権限が拒否されました",
"message": "",
"description": "Permission revoked"
},
"permissionRevokedPermissionName": {
"message": "すべてのウェブサイトの保存されたデータへのアクセス",
"message": "",
"description": "The exact name of the permission. Exactly as it is displayed in Firefox."
},
"permissionRevokedDescription": {
"message": "権限は無効にしないでください。LocalCDNがCDNへのリクエストを検出してリダイレクトするにはこの権限が必要です。",
"message": "",
"description": "Please do not disable the permission. LocalCDN needs the permission to detect and redirect requests to CDNs."
},
"helpWhyThisPermission": {
"message": "なぜこの拡張機能はこの権限が必要なのですか?",
"message": "",
"description": "Why does this extension need this permission?"
},
"helpPermissionDescription": {
"message": "LocalCDNはリクエストをリダイレクトまたはブロックするために、ウェブサイトが発するリクエストを知る必要があります。MV3の導入により、この権限はオプションの権限として記載されています。",
"message": "",
"description": "LocalCDN needs to know which requests are created by a website to redirect or block it. With the introduction of MV3, this permission is listed as an optional permission."
},
"permissionMissing": {
"message": "権限の不足",
"message": "",
"description": "Missing permission"
},
"permissionAllow": {
"message": "許可",
"message": "",
"description": "Allow"
},
"permissionMoreInfo": {
"message": "詳細",
"message": "",
"description": "More info"
}
}

View File

@ -159,10 +159,6 @@
"message": "ಕಳೆದ ವರ್ಷ",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "ಅಳಿಸಿ",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "작년",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "삭제",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Praeitus Metus",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Ištrinti",
"description": "Button to delete all statistics data."
@ -496,35 +492,35 @@
"description": "Missing"
},
"permissionRevokedHeader": {
"message": "Leidimai atsiimti",
"message": "",
"description": "Permission revoked"
},
"permissionRevokedPermissionName": {
"message": "Pasiekite visus savo duomenis, visuose tinklapiuose",
"message": "",
"description": "The exact name of the permission. Exactly as it is displayed in Firefox."
},
"permissionRevokedDescription": {
"message": "Prašome neuždrausti šio leidimo. „LocalCDN“ reikalauja jo, kad aptiktų ir peradresuotų užklausas į „CDN'us“.",
"message": "",
"description": "Please do not disable the permission. LocalCDN needs the permission to detect and redirect requests to CDNs."
},
"helpWhyThisPermission": {
"message": "Kodėl šiam plėtiniui reikia šio leidimo?",
"message": "",
"description": "Why does this extension need this permission?"
},
"helpPermissionDescription": {
"message": "„LocalCDN“ reikia žinoti, kurie tinklapio prašymai reikalajaumi, kad peradresuotų ar blokuotų jį. Su „MV3“, šis leidimas yra žymimas, kaip pasirinktinis.",
"message": "",
"description": "LocalCDN needs to know which requests are created by a website to redirect or block it. With the introduction of MV3, this permission is listed as an optional permission."
},
"permissionMissing": {
"message": "Trūksta leidimo",
"message": "",
"description": "Missing permission"
},
"permissionAllow": {
"message": "Leisti",
"message": "",
"description": "Allow"
},
"permissionMoreInfo": {
"message": "Daugiau informacijos",
"message": "",
"description": "More info"
}
}

View File

@ -159,10 +159,6 @@
"message": "കഴിഞ്ഞ വർഷം",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "ഇല്ലാതാക്കുക",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Siste år",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Slett",
"description": "Button to delete all statistics data."
@ -516,15 +512,15 @@
"description": "LocalCDN needs to know which requests are created by a website to redirect or block it. With the introduction of MV3, this permission is listed as an optional permission."
},
"permissionMissing": {
"message": "Manglende tillatelse",
"message": "",
"description": "Missing permission"
},
"permissionAllow": {
"message": "Tillat",
"message": "",
"description": "Allow"
},
"permissionMoreInfo": {
"message": "Mer info",
"message": "",
"description": "More info"
}
}

View File

@ -159,10 +159,6 @@
"message": "Afgelopen jaar",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Verwijderen",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Ostatni rok",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Usuń",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Ano passado",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Apagar",
"description": "Button to delete all statistics data."
@ -484,47 +480,47 @@
"description": "HTML filter badge"
},
"titleBadgeMissingResource": {
"message": "Ícone de recurso ausente ou bloqueado",
"message": "Emblema de recurso ausente",
"description": "Missing or blocked resources badge"
},
"counterBlocked": {
"message": "Bloqueado",
"message": "",
"description": "Blocked"
},
"counterMissing": {
"message": "Ausente",
"message": "",
"description": "Missing"
},
"permissionRevokedHeader": {
"message": "Permissão revogada",
"message": "",
"description": "Permission revoked"
},
"permissionRevokedPermissionName": {
"message": "Acede os seus dados em todos os sites",
"message": "",
"description": "The exact name of the permission. Exactly as it is displayed in Firefox."
},
"permissionRevokedDescription": {
"message": "Por favor, não desative a permissão. O LocalCDN precisa dessa permissão para detetar e redirecionar os pedidos para os CDNs.",
"message": "",
"description": "Please do not disable the permission. LocalCDN needs the permission to detect and redirect requests to CDNs."
},
"helpWhyThisPermission": {
"message": "Por que esta extensão precisa dessa permissão?",
"message": "",
"description": "Why does this extension need this permission?"
},
"helpPermissionDescription": {
"message": "O LocalCDN precisa saber quais pedidos são criados por um site para bloqueá-lo ou redirecioná-lo. Com a introdução do MV3, essa permissão é mostrada como opcional.",
"message": "",
"description": "LocalCDN needs to know which requests are created by a website to redirect or block it. With the introduction of MV3, this permission is listed as an optional permission."
},
"permissionMissing": {
"message": "Permissão ausente",
"message": "",
"description": "Missing permission"
},
"permissionAllow": {
"message": "Permitir",
"message": "",
"description": "Allow"
},
"permissionMoreInfo": {
"message": "Mais informações",
"message": "",
"description": "More info"
}
}

View File

@ -159,10 +159,6 @@
"message": "Ano passado",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Excluir",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Último ano",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Eliminar",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Anul trecut",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Ștergeți",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "За год",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Очистить",
"description": "Button to delete all statistics data."
@ -496,35 +492,35 @@
"description": "Missing"
},
"permissionRevokedHeader": {
"message": "Отменять разрешение",
"message": "",
"description": "Permission revoked"
},
"permissionRevokedPermissionName": {
"message": "Доступ к данным для всех веб-сайтов",
"message": "",
"description": "The exact name of the permission. Exactly as it is displayed in Firefox."
},
"permissionRevokedDescription": {
"message": "Пожалуйста, не отключайте это разрешение. LocalCDN необходимо разрешение для обнаружения и перенаправления запросов к CDN.",
"message": "",
"description": "Please do not disable the permission. LocalCDN needs the permission to detect and redirect requests to CDNs."
},
"helpWhyThisPermission": {
"message": "Зачем расширению нужно это разрешение?",
"message": "",
"description": "Why does this extension need this permission?"
},
"helpPermissionDescription": {
"message": "LocalCDN должен знать, какие запросы создает тот или иной сайт, чтобы перенаправить или блокировать его. С введением MV3 это разрешение включено в список опциональных.",
"message": "",
"description": "LocalCDN needs to know which requests are created by a website to redirect or block it. With the introduction of MV3, this permission is listed as an optional permission."
},
"permissionMissing": {
"message": "Отсутствующее разрешение",
"message": "",
"description": "Missing permission"
},
"permissionAllow": {
"message": "Разрешение",
"message": "",
"description": "Allow"
},
"permissionMoreInfo": {
"message": "Дополнительная информация",
"message": "",
"description": "More info"
}
}

View File

@ -159,10 +159,6 @@
"message": "",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Posledný rok",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Vymazať",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Förra året",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Radera",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Geçen yıl",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "Tümü",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Sil",
"description": "Button to delete all statistics data."

View File

@ -159,10 +159,6 @@
"message": "Останнього року",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Видалити",
"description": "Button to delete all statistics data."
@ -484,47 +480,47 @@
"description": "HTML filter badge"
},
"titleBadgeMissingResource": {
"message": "Значок відсутнього або заблокованого ресурсу",
"message": "Значок відсутніх ресурсів",
"description": "Missing or blocked resources badge"
},
"counterBlocked": {
"message": "Заблоковано",
"message": "",
"description": "Blocked"
},
"counterMissing": {
"message": "Відсутній",
"message": "",
"description": "Missing"
},
"permissionRevokedHeader": {
"message": "Дозвіл відкликано",
"message": "",
"description": "Permission revoked"
},
"permissionRevokedPermissionName": {
"message": "Доступ до ваших даних для всіх вебсайтів",
"message": "",
"description": "The exact name of the permission. Exactly as it is displayed in Firefox."
},
"permissionRevokedDescription": {
"message": "Будь ласка, не вимикайте цей дозвіл. LocalCDN потрібен цей дозвіл, щоб виявляти і перенаправляти запити на CDN.",
"message": "",
"description": "Please do not disable the permission. LocalCDN needs the permission to detect and redirect requests to CDNs."
},
"helpWhyThisPermission": {
"message": "Навіщо цьому розширенню потрібен цей дозвіл?",
"message": "",
"description": "Why does this extension need this permission?"
},
"helpPermissionDescription": {
"message": "LocalCDN має знати, які запити створює вебсайт, щоб перенаправляти або блокувати їх. З впровадженням MV3 цей дозвіл вказано як необов'язковий.",
"message": "",
"description": "LocalCDN needs to know which requests are created by a website to redirect or block it. With the introduction of MV3, this permission is listed as an optional permission."
},
"permissionMissing": {
"message": "Відсутній дозвіл",
"message": "",
"description": "Missing permission"
},
"permissionAllow": {
"message": "Дозволити",
"message": "",
"description": "Allow"
},
"permissionMoreInfo": {
"message": "Докладніше",
"message": "",
"description": "More info"
}
}

View File

@ -159,10 +159,6 @@
"message": "Năm ngoái",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "Xoá",
"description": "Button to delete all statistics data."
@ -492,39 +488,39 @@
"description": "Blocked"
},
"counterMissing": {
"message": "Không có sẵn",
"message": "",
"description": "Missing"
},
"permissionRevokedHeader": {
"message": "Đã thu hồi quyền",
"message": "",
"description": "Permission revoked"
},
"permissionRevokedPermissionName": {
"message": "Truy cập dữ liệu của bạn cho tất cả website",
"message": "",
"description": "The exact name of the permission. Exactly as it is displayed in Firefox."
},
"permissionRevokedDescription": {
"message": "Xin đừng tắt quyền đi. LocalCDN cần có quyền này để tìm thấy và chuyển hướng các yêu cầu tới CDN.",
"message": "",
"description": "Please do not disable the permission. LocalCDN needs the permission to detect and redirect requests to CDNs."
},
"helpWhyThisPermission": {
"message": "Tại sao tiện ích mở rộng này cần quyền này?",
"message": "",
"description": "Why does this extension need this permission?"
},
"helpPermissionDescription": {
"message": "LocalCDN cần biết trang web tạo ra yêu cầu nào để chuyển hướng hoặc chặn nó. Với sự ra đời của MV3, quyền này được liệt kê dưới dạng quyền tùy chọn.",
"message": "",
"description": "LocalCDN needs to know which requests are created by a website to redirect or block it. With the introduction of MV3, this permission is listed as an optional permission."
},
"permissionMissing": {
"message": "Quyền bị thiếu",
"message": "",
"description": "Missing permission"
},
"permissionAllow": {
"message": "Cho phép",
"message": "",
"description": "Allow"
},
"permissionMoreInfo": {
"message": "Thêm thông tin",
"message": "",
"description": "More info"
}
}

View File

@ -159,10 +159,6 @@
"message": "去年",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "全部",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "删除",
"description": "Button to delete all statistics data."
@ -496,23 +492,23 @@
"description": "Missing"
},
"permissionRevokedHeader": {
"message": "已撤消权限",
"message": "",
"description": "Permission revoked"
},
"permissionRevokedPermissionName": {
"message": "访问所有网站的数据",
"message": "",
"description": "The exact name of the permission. Exactly as it is displayed in Firefox."
},
"permissionRevokedDescription": {
"message": "请不要禁用此权限。LocalCDN 需要此权限来检测并重定向到 CDN 的请求。",
"message": "",
"description": "Please do not disable the permission. LocalCDN needs the permission to detect and redirect requests to CDNs."
},
"helpWhyThisPermission": {
"message": "此扩展为何需要这个权限?",
"message": "",
"description": "Why does this extension need this permission?"
},
"helpPermissionDescription": {
"message": "LocalCDN 需要知道哪些请求是由网站所创建以重定向或拦截它。MV3 规范中此权限被列为可选项。",
"message": "",
"description": "LocalCDN needs to know which requests are created by a website to redirect or block it. With the introduction of MV3, this permission is listed as an optional permission."
},
"permissionMissing": {
@ -524,7 +520,7 @@
"description": "Allow"
},
"permissionMoreInfo": {
"message": "更多信息",
"message": "",
"description": "More info"
}
}

View File

@ -159,10 +159,6 @@
"message": "去年",
"description": "Statistics view for past year."
},
"labelAll": {
"message": "全部",
"description": "Statistics view over the whole time range"
},
"labelDelete": {
"message": "刪除",
"description": "Button to delete all statistics data."
@ -260,11 +256,11 @@
"description": "beta"
},
"changeBadgeColorMissingResourcesTitle": {
"message": "用圖標表示缺失資源",
"message": "用圖示表明資源缺失",
"description": "Indicate missing resources on the icon"
},
"changeBadgeColorMissingResourcesDescription": {
"message": "若缺失資源則改變圖章顏色。",
"message": "若資源缺失則改變圖章顏色。",
"description": "Change the badge color if resources are missing."
},
"titleHelp": {
@ -300,11 +296,11 @@
"description": "What will be synchronized when I select »sync« as storage type?"
},
"helpBrowserCompatibilityTitle": {
"message": "瀏覽器容性",
"message": "瀏覽器容性",
"description": "Browser compatibility"
},
"helpIntroductionDescription": {
"message": "LocalCDN 是一款會以模仿內容分發網絡的方式,進一步保障您隱私的擴充功能。它將會攔截流量,以本機支援的框架/程式庫注入網站取以代之。您可以使用以下測試工具檢查您是否已受到適當的保護。欲知詳情,請瀏覽教程或 Wiki 頁面。",
"message": "LocalCDN 是模仿內容傳遞網路的瀏覽器附加元件,用以進一步保障隱私。它將會攔截流量,以本機支援的框架/程式庫取代而注入網站。您可以使用以下工具測試是否有效。欲知詳情,請瀏覽教程或 Wiki 頁面。",
"description": "LocalCDN is a web browser extension that emulates Content Delivery Networks to improve your online privacy. It intercepts traffic, finds supported frameworks/libraries locally, and injects them into the website. Feel free to use the following testing utility to find out if you are properly protected. For more information read the tutorial or our Wiki pages."
},
"helpLinkTestUtility": {
@ -320,7 +316,7 @@
"description": "Wiki pages"
},
"helpHtmlFilterDescription": {
"message": "在大多數情況下LocalCDN 可以輕鬆替換嵌入式框架並保護隱私。 在某些情況下,網站可能會嘗試通過在 HTML 源始碼中設置某些選項來防止這種情況發生。 LocalCDN 會在瀏覽器中顯示 HTML 源始碼之前讀取並刪除這些部分(紅色)。",
"message": "在大多數情況下LocalCDN 可以輕鬆替換嵌入式框架並提高隱私性。 在某些情況下,網站可能會嘗試通過在 HTML 源代碼中設置某些選項來防止這種情況發生。 LocalCDN 在 HTML 源代碼顯示在瀏覽器中之前讀取它並刪除這些部分(紅色)。",
"description": "In most cases LocalCDN can easily replace embedded frameworks and improves privacy. In some cases the website may try to prevent this by setting certain options in the HTML source code. LocalCDN reads the HTML source code before it is displayed in the browser and removes these part (red)."
},
"helpHtmlFilterBefore": {
@ -356,7 +352,7 @@
"description": "Only uBlock Origin:"
},
"helpRuleGeneratorUblockDescription": {
"message": "這些規則只適用於 »Medium« 或 »Hard« 模式,因為它們會阻擋所有第三方資源。在 »Default«、»Easy« 或 »Very-easy« 模式下則不是必需的。有關更多信息,請瀏覽 uBlock Origin Wiki。",
"message": "這些規則只適用於 »Medium« 或 »Hard« 模式,因為它阻擋所有第三方資源。在 »Default«、»Easy« 或 »Very-easy« 模式下並不必要。有關更多信息,請瀏覽 uBlock Origin Wiki。",
"description": "These rules are only relevant in »medium« or »hard« mode, because it blocks all 3rd-party resources. They are not necessary in »default«, »easy« or »very-easy« mode. For more information, please visit the uBlock Origin Wiki."
},
"helpRuleGeneratorUblockTableIcon": {
@ -372,23 +368,23 @@
"description": "Rules useful"
},
"helpRuleGeneratorUblockTableDefaultEasy": {
"message": "預設/簡易",
"message": "Default/Easy",
"description": "Default/Easy"
},
"helpRuleGeneratorUblockTableMedium": {
"message": "中等",
"message": "Medium",
"description": "Medium"
},
"helpRuleGeneratorUblockTableHard": {
"message": "困難",
"message": "Hard",
"description": "Hard"
},
"helpWebsiteIssuesDescription": {
"message": "這有兩個可能的原因因為頁面需要一個LocalCDN尚不支援的函式庫或是因為同源策略。同源策略Same origin policy是一個瀏覽器用來區分資料是否允許被載入的安全機制。同源機制幫助我們區分有害的檔案藉此減少潛在的攻擊媒介。這個策略會阻止瀏覽器從LocalCDN載入一些外部的框架。不幸的是目前並沒有針對這個問題的解決方法。",
"message": "",
"description": "There are two possible reasons: Either a framework/library is required that LocalCDN doesnt (yet) deliver or an SOP. A SOP (Same origin policy) is a security mechanism that determines what data the browser is allowed to load. It helps to isolate malicious documents and thus reduce possible attack vectors. This policy prevents the browser from loading the external frameworks of LocalCDN. Unfortunately there is no solution for this at the moment."
},
"helpBlockGoogleFontsDescription": {
"message": "LocalCDN可以將Google Material Icons圖示字型。為了攔截針對這些字型的連接您的廣告阻擋器——例如uBlock Origin、uMatrix、Adguard——必須允許這些請求。LocalCDN監聽這些請求以在當請求包含Google Material Icons時置換資源。若您取消選擇「阻擋缺失資源」選項不存在的資源會被允許以致Google Fonts字體會被載入因為Google Material Icons與Google Fonts使用同一個域名。如果您不希望如此您可以使用LocalCDN阻擋Google Fonts。",
"message": "",
"description": "LocalCDN can replace »Google Material Icons«. To catch the connection your adblocker (e.g. uBlock Origin, uMatrix or AdGuard) must allow the request. LocalCDN listens on these requests and if the query contains »Google Material Icons«, the resource will be replaced. If you uncheck the »Block requests for missing content« option, non-existent resources will be allowed to pass and »Google Fonts« will be loaded, because »Google Material Icons« and »Google Fonts« use the same domain. If you dont want this, you can block »Google Fonts« on LocalCDN."
},
"helpStatisticsDescription": {
@ -412,39 +408,39 @@
"description": "What will be synchronized when I select »sync« as storage type?"
},
"helpSyncDescription": {
"message": "只有當您在裝置上使用 Firefox 帳戶登入並在設定中允許擴充套件同步設定同步才會起作用,您控制下的單獨同步伺服器也可以工作,這將在所有裝置上同步 LocalCDN 的大部分設定。",
"message": "",
"description": "Sync will only work if you are logged in with a Firefox account on the device and have allowed add-ons to sync in the settings. A separate sync server under your control will also work. This will synchronize most of the settings of LocalCDN across all devices."
},
"helpSyncAccount": {
"message": "如果您沒有同步帳戶,則不會同步任何內容。在這種情況下,您選擇什麼儲存的類型都沒有區別。",
"message": "",
"description": "If you dont have a sync account, nothing will be synchronized. In that case it makes no difference what type of storage you have selected."
},
"helpSyncContentNever": {
"message": "永遠不同步的東西:",
"message": "",
"description": "Things that are never synchronized:"
},
"helpNumberOfInjections": {
"message": "取代次數",
"message": "",
"description": "Numbers of injections"
},
"helpYes": {
"message": "",
"message": "",
"description": "Yes"
},
"helpNo": {
"message": "",
"message": "",
"description": "No"
},
"helpData": {
"message": "資料",
"message": "",
"description": "Data"
},
"helpSyncContentEver": {
"message": "會被同步的設定:",
"message": "",
"description": "Settings that will be synchronized:"
},
"helpIcons": {
"message": "預設、淺色、藍色/灰色",
"message": "",
"description": "Default, Light, Blue/Grey"
},
"helpSyncContentLinks": {
@ -452,7 +448,7 @@
"description": "More information about Firefox Sync:"
},
"helpBrowserCompatibility": {
"message": "瀏覽器相容性",
"message": "",
"description": "Browser compatibility"
},
"helpReplace": {
@ -464,67 +460,67 @@
"description": "Replace other resources"
},
"helpUpgradeAllResources": {
"message": "升級所有資源",
"message": "",
"description": "Upgrade all resources"
},
"helpExplanationChrome": {
"message": "所有基於 Chromium 的瀏覽器",
"message": "",
"description": "All Chromium based Browser"
},
"helpLimitation": {
"message": "這不是 LocalCDN 的限制,而是缺少基於 Chromium 的瀏覽器的 API 支援。",
"message": "",
"description": "This is not a limitation of LocalCDN, but missing API support of Chromium based browsers."
},
"titleBadgeDefault": {
"message": "預設標籤",
"message": "",
"description": "Default badge"
},
"titleBadgeHTMLFilter": {
"message": "HTML 過濾器標籤",
"message": "",
"description": "HTML filter badge"
},
"titleBadgeMissingResource": {
"message": "資源標籤遺失或被阻止",
"message": "",
"description": "Missing or blocked resources badge"
},
"counterBlocked": {
"message": "阻止的",
"message": "",
"description": "Blocked"
},
"counterMissing": {
"message": "遺失的",
"message": "",
"description": "Missing"
},
"permissionRevokedHeader": {
"message": "權限被撤銷",
"message": "",
"description": "Permission revoked"
},
"permissionRevokedPermissionName": {
"message": "存取您在所有網站上的數據",
"message": "",
"description": "The exact name of the permission. Exactly as it is displayed in Firefox."
},
"permissionRevokedDescription": {
"message": "請勿停用該權限。 LocalCDN 需要該權限偵測請求並將請求重新導向到 CDN 。",
"message": "",
"description": "Please do not disable the permission. LocalCDN needs the permission to detect and redirect requests to CDNs."
},
"helpWhyThisPermission": {
"message": "為什麼這個擴充需要這個權限?",
"message": "",
"description": "Why does this extension need this permission?"
},
"helpPermissionDescription": {
"message": "LocalCDN 需要知道網站創建了哪些請求來重定向或封鎖它。隨著MV3的引入該權限被列為可選權限。",
"message": "",
"description": "LocalCDN needs to know which requests are created by a website to redirect or block it. With the introduction of MV3, this permission is listed as an optional permission."
},
"permissionMissing": {
"message": "缺少權限",
"message": "",
"description": "Missing permission"
},
"permissionAllow": {
"message": "允許",
"message": "",
"description": "Allow"
},
"permissionMoreInfo": {
"message": "更多資訊",
"message": "",
"description": "More info"
}
}

View File

@ -432,7 +432,9 @@ function check_resource() {
# CREATE URLs
# =============================================================================
function create_url() {
if [ "$folder" = "ethjs" ]; then
if [ "$folder" = "angular-stripe-checkout" ]; then
url="$JSDELIVR/npm/angular-stripe-checkout@$version/angular-stripe-checkout.min.js"
elif [ "$folder" = "ethjs" ]; then
url="$JSDELIVR/npm/ethjs@$version/dist/ethjs.min.js"
elif [ "$folder" = "react-lifecycles-compat" ]; then
url="$JSDELIVR/npm/react-lifecycles-compat@$version/react-lifecycles-compat.min.js"
@ -538,11 +540,7 @@ function create_url() {
if [ "$jfile" = "mdb-ui-kit.min.css" ]; then
url="$CLOUDFLARE/$folder/$version/mdb.min.css"
elif [ "$jfile" = "mdb-ui-kit.min.js" ]; then
if [ "$version" = "3.11.0" ] || [ "$version" = "4.4.0" ] || [ "$version" = "5.0.0" ] || [ "$version" = "6.4.2" ]; then
url="$CLOUDFLARE/$folder/$version/mdb.min.js"
else
url="$CLOUDFLARE/$folder/$version/mdb.es.min.js"
fi
url="$CLOUDFLARE/$folder/$version/mdb.min.js"
fi
elif [ "$folder" = "Modaal" ]; then
if [ "$jfile" = "modaal.min.css" ]; then
@ -662,6 +660,8 @@ function create_url() {
url="$CLOUDFLARE/$folder/$version/$relativpath"
elif [ "$folder" = "Chart.js" ] && [ "$version" = "2.9.4" ] && [ "$jfile" = "chart.min.js" ]; then
url="$CLOUDFLARE/$folder/$version/Chart.bundle.min.js"
elif [ "$folder" = "angular-ui-select" ] && [ "$version" = "0.19.8" ]; then
url="$JSDELIVR/npm/ui-select@$version/dist/select.min.js"
elif [ "$folder" = "plyr" ]; then
if [ "$jfile" = "plyr.min.js" ]; then
url="$JSDELIVR/npm/plyr@$version/dist/plyr.min.js"
@ -741,10 +741,6 @@ function create_url() {
url="$CLOUDFLARE/$folder/$version/vue-router.min.js"
elif [ "$folder" = "ScrollMagic" ] && [ "$jfile" != "ScrollMagic.min.js" ];then
url="$CLOUDFLARE/$folder/$version/plugins/$jfile"
elif [ "$folder" = "redux" ] && [ "$version" != "4.2.1" ];then
url="$CLOUDFLARE/$folder/$version/redux.legacy-esm.min.js"
elif [ "$folder" = "supabase-js" ]; then
url="$UNPKG/@supabase/supabase-js@$version/dist/umd/supabase.js"
# --------------------------------------------------------------------------
else
if [ "$subfile" = "$jfile" ]; then

View File

@ -273,12 +273,6 @@ const Regex = {
'BOOTSTRAP_FONTS_ONLY': /\/bootstrap\/(?:\d{1,2}\.){1,3}\d{1,2}\/fonts\//,
'ROCKET_LOADER': /ajax\.cloudflare\.com\/cdn-cgi\/scripts\/[a-zA-Z0-9]{8}\/cloudflare-static\/rocket-loader\.min\.js/,
'TWITTER_BOOTSTRAP_ALPHA_BETA': /-(alpha|beta).?\d?/,
'INTERNAL_STATISTICS_DATA': /((2\d)\d{2})-(0[1-9]|1[012])-(0[1-9]|[12]\d|3[01])/,
'DOMAIN': /[a-z0-9]+([-.]{1}[a-z0-9]+)*\.[a-z]{2,24}/,
'INTERNAL_RESOURCES': /resources\/[0-9a-z.-]+\/((?:\d{1,2}\.){1,3}\d{1,2})?.*\.(css|jsm)/,
'ISO_DATE': /((2\d)\d{2})-(0[1-9]|1[012])-(0[1-9]|[12]\d|3[01])/,
'HEX_COLOR': /#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/,
'DOCSIFY': /docsify@(?:\d{1,2}\.){0,3}\d{1,2}(?:-\d)?$/,
};
const MaterialIcons = {
@ -456,258 +450,6 @@ const LogString = {
'IFRAME': 'Possible iframe request:',
};
/**
* https://codeberg.org/nobody/LocalCDN/issues/1560
*/
const GoogleDomains = {
'google.com': true,
'youtube.com': true,
'ytimg.com': true,
'withgoogle.com': true,
'withyoutube.com': true,
'google.ws': true,
'google.vu': true,
'google.vg': true,
'google.tt': true,
'google.to': true,
'google.tn': true,
'google.tm': true,
'google.tl': true,
'google.tk': true,
'google.tg': true,
'google.td': true,
'google.st': true,
'google.sr': true,
'google.so': true,
'google.sn': true,
'google.sm': true,
'google.sk': true,
'google.si': true,
'google.sh': true,
'google.se': true,
'google.sc': true,
'google.rw': true,
'google.ru': true,
'google.rs': true,
'google.ro': true,
'google.pt': true,
'google.ps': true,
'google.pn': true,
'google.pl': true,
'google.nu': true,
'google.nr': true,
'google.no': true,
'google.nl': true,
'google.ne': true,
'google.mw': true,
'google.mv': true,
'google.mu': true,
'google.ms': true,
'google.mn': true,
'google.ml': true,
'google.mk': true,
'google.mg': true,
'google.me': true,
'google.md': true,
'google.lv': true,
'google.lu': true,
'google.lt': true,
'google.lk': true,
'google.li': true,
'google.la': true,
'google.kz': true,
'google.ki': true,
'google.kg': true,
'google.jo': true,
'google.je': true,
'google.it': true,
'google.is': true,
'google.iq': true,
'google.io': true,
'google.im': true,
'google.ie': true,
'google.hu': true,
'google.ht': true,
'google.hr': true,
'google.hn': true,
'google.gy': true,
'google.gr': true,
'google.gp': true,
'google.gm': true,
'google.gl': true,
'google.gg': true,
'google.gf': true,
'google.ge': true,
'google.ga': true,
'google.fr': true,
'google.fm': true,
'google.fi': true,
'google.es': true,
'google.ee': true,
'google.dz': true,
'google.dm': true,
'google.dk': true,
'google.dj': true,
'google.de': true,
'google.cz': true,
'google.cv': true,
'google.com.vn': true,
'google.com.vc': true,
'google.com.uy': true,
'google.com.ua': true,
'google.com.tw': true,
'google.com.tr': true,
'google.com.tj': true,
'google.com.sv': true,
'google.com.sl': true,
'google.com.sg': true,
'google.com.sb': true,
'google.com.sa': true,
'google.com.qa': true,
'google.com.py': true,
'google.com.pr': true,
'google.com.pk': true,
'google.com.ph': true,
'google.com.pg': true,
'google.com.pe': true,
'google.com.pa': true,
'google.com.om': true,
'google.com.np': true,
'google.com.ni': true,
'google.com.ng': true,
'google.com.nf': true,
'google.com.na': true,
'google.com.my': true,
'google.com.mx': true,
'google.com.mt': true,
'google.com.mm': true,
'google.com.ly': true,
'google.com.lc': true,
'google.com.lb': true,
'google.com.kw': true,
'google.com.kh': true,
'google.com.jm': true,
'google.com.hk': true,
'google.com.gt': true,
'google.com.gi': true,
'google.com.gh': true,
'google.com.fj': true,
'google.com.et': true,
'google.com.eg': true,
'google.com.ec': true,
'google.com.do': true,
'google.com.cy': true,
'google.com.cu': true,
'google.com.co': true,
'google.com.bz': true,
'google.com.br': true,
'google.com.bo': true,
'google.com.bn': true,
'google.com.bh': true,
'google.com.bd': true,
'google.com.au': true,
'google.com.ar': true,
'google.com.ai': true,
'google.com.ag': true,
'google.com.af': true,
'google.co.zw': true,
'google.co.zm': true,
'google.co.za': true,
'google.co.vi': true,
'google.co.ve': true,
'google.co.uz': true,
'google.co.uk': true,
'google.co.ug': true,
'google.co.tz': true,
'google.co.th': true,
'google.co.pn': true,
'google.co.nz': true,
'google.co.mz': true,
'google.co.ma': true,
'google.co.ls': true,
'google.co.kr': true,
'google.co.ke': true,
'google.co.jp': true,
'google.co.in': true,
'google.co.il': true,
'google.co.id': true,
'google.co.cr': true,
'google.co.ck': true,
'google.co.bw': true,
'google.co.ao': true,
'google.cn': true,
'google.cm': true,
'google.cl': true,
'google.ci': true,
'google.ch': true,
'google.cg': true,
'google.cf': true,
'google.cd': true,
'google.cc': true,
'google.cat': true,
'google.ca': true,
'google.by': true,
'google.bt': true,
'google.bs': true,
'google.bj': true,
'google.bi': true,
'google.bg': true,
'google.bf': true,
'google.be': true,
'google.ba': true,
'google.az': true,
'google.at': true,
'google.as': true,
'google.am': true,
'google.al': true,
'google.ae': true,
'google.ad': true,
'google.ac': true,
'g.cn': true,
'yt.be': true,
'youtubegaming.com': true,
'youtubeeducation.com': true,
'youtube-nocookie.com': true,
'youtu.be': true,
'igoogle.com': true,
'gooogle.com': true,
'goolge.com': true,
'googlr.com': true,
'googlesyndication.com': true,
'googlesource.com': true,
'googlescholar.com': true,
'googlepagecreator.com': true,
'googlemembers.com': true,
'googlemember.com': true,
'googlemaps.com': true,
'googlemail.com': true,
'googleearth.com': true,
'googlee.com': true,
'googledrive.com': true,
'googlecommerce.com': true,
'googlecode.com': true,
'googlebot.com': true,
'googlearth.com': true,
'googleapps.com': true,
'googleapis.com': true,
'googleanalytics.com': true,
'googleadservices.com': true,
'google.org': true,
'google.net': true,
'google-analytics.com': true,
'googl.com': true,
'googil.com': true,
'googel.com': true,
'goo.gl': true,
'gogole.com': true,
'gogle.com': true,
'gmail.com': true,
'ggoogle.com': true,
'g.co': true,
'android.com': true,
'developer.android.com': true,
};
// Supported charsets for TextDecoder()
// https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder/TextDecoder
const EncodingTypes = {

View File

@ -21,7 +21,7 @@
* File Guard
*/
let fileGuard = {};
var fileGuard = {};
/**

View File

@ -23,7 +23,7 @@
* Interceptor
*/
let interceptor = {};
var interceptor = {};
/**
@ -32,7 +32,7 @@ let interceptor = {};
interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) {
let validCandidate, targetDetails, targetDomain, isGoogleFont, isGoogleMaterialIcons, initiatorDomain, isListed,
iframe, isGoogleDomain;
iframe;
iframe = '';
if (tab.url !== requestDetails.originUrl) {
@ -95,9 +95,8 @@ interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) {
if (BrowserType.FIREFOX && isGoogleFont && !isGoogleMaterialIcons) {
initiatorDomain = helpers.extractDomainFromUrl(tab.url, true);
isListed = helpers.checkAllowlisted(initiatorDomain, interceptor.allowedDomainsGoogleFonts);
isGoogleDomain = helpers.isGoogleDomain(initiatorDomain);
// Check if the website is allowed to load Google Fonts
if (interceptor.blockGoogleFonts === true && isListed === false && isGoogleDomain === false) {
if (interceptor.blockGoogleFonts === true && isListed === false) {
console.log(`${LogString.PREFIX} Google fonts blocked ${requestDetails.url}`);
log.append(tab.url, requestDetails.url, '-', true, iframe);
interceptor._handleMissingCandidate(requestDetails.url, tabIdentifier);
@ -105,11 +104,6 @@ interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) {
return {
'redirectUrl': chrome.runtime.getURL('resources/google-fonts-placeholder.css')
};
} else if (isGoogleDomain === true) {
console.log(`${LogString.PREFIX} Google fonts allowed, because Google Website ${initiatorDomain}`);
return {
'cancel': false
};
} else if (interceptor.blockGoogleFonts === false || isListed === true) {
return {
'cancel': false

View File

@ -23,7 +23,7 @@
* Main
*/
let main = {};
var main = {};
/**

View File

@ -19,7 +19,7 @@
* Manipulate DOM
*/
let manipulateDOM = {};
var manipulateDOM = {};
/**

View File

@ -23,7 +23,7 @@
* Mappings
*/
let mappings = {};
var mappings = {};
/*
* Date of last update.
@ -64,6 +64,7 @@ mappings.cdn = {
'mootools/{version}/mootools-core': resources.mootools,
'prototype/{version}/prototype.': resources.prototypeJS,
'scriptaculous/{version}/scriptaculous.': resources.scriptaculous,
'swfobject/{version}/swfobject.': resources.swfobject,
'webfont/{version}/webfont.': resources.webfontloader,
'webfont/{version}/webfontloader.js': resources.webfontloader,
'webfont/1/webfont.js': resources.webfontloader
@ -103,6 +104,8 @@ mappings.cdn = {
'angular-ui-bootstrap/{version}/ui-bootstrap-tpls.': resources.angularUiBootstrapTPLS,
'angular-ui-bootstrap/{version}/ui-bootstrap.min.js': resources.angularUiBootstrap,
'angular-ui-router/{version}/angular-ui-router.': resources.angularUiRouter,
'angular-ui-select/{version}/select.': resources.angularJsUiSelect,
'angular-ui-utils/{version}/angular-ui-utils.': resources.angularUiUtils,
'angularjs-slider/{version}/rzslider.': resources.angularJSslider,
'angular.js/{version}/angular.': resources.angular,
'angular.js/{version}/angular-animate.': resources.angularAnimate,
@ -269,7 +272,6 @@ mappings.cdn = {
'bootstrap/{version}/bootstrap.js': resources.bootstrapJS,
'bootstrap/{version}/bootstrap.min.css': resources.bootstrapCSS,
'bootstrap/{version}/bootstrap.css': resources.bootstrapCSS,
'bootswatch/{version}/flatly/': resources.bootswatchFlatly,
'bowser/{version}/': resources.bowserJS,
'bower-angular-translate/{version}/angular-translate.': resources.angularTranslate,
'bower-angular-translate-loader-partial/{version}/angular-translate-loader-partial.': resources.angularTranslateLoaderPartial,
@ -296,7 +298,7 @@ mappings.cdn = {
'cookieconsent2/{version}/cookieconsent.css': resources.cookieconsent2CSS,
'corejs-typeahead/{version}/typeahead.bundle.': resources.corejsTypeahead,
'd3/{version}/d3.min.js': resources.d3JS,
'datatables/{version}/': resources.datatables,
'd3-legend/{version}/d3-legend.': resources.d3legend,
'dayjs/{version}/dayjs.': resources.dayjs,
'dexie/{version}/dexie.': resources.dexie,
'docsearch.js/{version}/docsearch.min.js': resources.docsearchJS,
@ -305,6 +307,8 @@ mappings.cdn = {
'docsearch.js/{version}/docsearch.css': resources.docsearchCSS,
'docsify/{version}/docsify.min.js': resources.docsify,
'docsify/{version}/docsify.js': resources.docsify,
'drawer/{version}/js/drawer.min.js': resources.drawerJS,
'drawer/{version}/css/drawer.min.css': resources.drawerCSS,
'dygraph/{version}/dygraph': resources.dygraph,
'element-ui/{version}/': resources.elementUI,
'ext-core/{version}/ext-core.': resources.extCore,
@ -316,6 +320,7 @@ mappings.cdn = {
'fancybox/{version}/jquery.fancybox.css': resources.fancyBoxCSS,
'fastclick/{version}/fastclick.': resources.fastclick,
'feather-icons/{version}/feather.': resources.feather,
'FitText.js/{version}/jquery.fittext.': resources.fitTextJs,
'flickity/{version}/flickity.pkgd.': resources.flickity,
'font-awesome/{version}/css/font-awesome': resources.fontawesome,
'font-awesome/{version}/css/': resources.fontawesome5CSS,
@ -505,6 +510,7 @@ mappings.cdn = {
'swagger-ui/{version}/swagger-ui-standalone-preset.min.js': resources.swaggerUiJS,
'swagger-ui/{version}/swagger-ui.css': resources.swaggerUiCSS,
'swagger-ui/{version}/swagger-ui.min.css': resources.swaggerUiCSS,
'swfobject/{version}/swfobject.': resources.swfobject,
'Swiper/{version}/css/swiper.': resources.swiperCSS,
'Swiper/{version}/js/swiper.': resources.swiperJS,
'Swiper/{version}/swiper-bundle.min.js': resources.swiperJS,
@ -578,6 +584,7 @@ mappings.cdn = {
'angular@{version}/angular.': resources.angular,
'angular@{version}/angular.min.': resources.angular,
'angular-payments@{version}/lib/angular-payments.js': resources.angularPayments,
'angular-stripe-checkout@{version}/angular-stripe-checkout.js': resources.angularStripeCheckout,
'animate.css@{version}/animate.min.css': resources.animateCSS,
'animejs@{version}/lib/anime.': resources.animejs,
'aos@{version}/dist/aos.css': resources.aosCSS,
@ -594,7 +601,6 @@ mappings.cdn = {
'bootstrap@{version}/dist/css/bootstrap.': resources.bootstrapCSS,
'bootstrap-icons@{version}/font/bootstrap-icons.css': resources.bootstrapIcons,
'bootstrap-icons@{version}/font/bootstrap-icons.min.css': resources.bootstrapIcons,
'bootstrap-select@{version}/dist/css/bootstrap-select.': resources.bootstrapSelectCSS,
'bootstrap-select@{version}/dist/js/bootstrap-select.': resources.bootstrapSelectJS,
'bootstrap-table@{version}/dist/bootstrap-table.min.js': resources.bootstrapTableJS,
'bootstrap-table@{version}/dist/bootstrap-table.js': resources.bootstrapTableJS,
@ -651,9 +657,6 @@ mappings.cdn = {
'jquery-ui-dist@{version}/jquery-ui.js': resources.jQueryUI,
'jquery-ui-dist@{version}/jquery-ui.min.js': resources.jQueryUI,
'jquery-validation@{version}/dist/jquery.validate.': resources.jqueryValidationPlugin,
'js-cookie@{version}/dist/js.cookie.js': resources.jscookie,
'js-cookie@{version}/dist/js.cookie.min.js': resources.jscookie,
'js-cookie@{version}/src/js.cookie.': resources.jscookie,
'leaflet@{version}/dist/leaflet.js': resources.leafletJS,
'leaflet@{version}/dist/leaflet.css': resources.leafletCSS,
'leaflet-easybutton@{version}/src/easy-button.js': resources.leafletEasyButton,
@ -712,13 +715,13 @@ mappings.cdn = {
'swiper/swiper-bundle.min.css': resources.swiperCSS,
'swiper/swiper-bundle.js': resources.swiperJS,
'swiper/swiper-bundle.min.js': resources.swiperJS,
'swfobject@{version}/index.js': resources.swfobject,
'store-js@{version}/dist/store.legacy.min.js': resources.storeJS,
'scriptaculous-js@{version}/scriptaculous.': resources.scriptaculous,
'slick-carousel@{version}/slick/slick.min.css': resources.slickCarouselCSS,
'slick-carousel@{version}/slick/slick.css': resources.slickCarouselCSS,
'slick-carousel@{version}/slick/slick.min.js': resources.slickCarouselJS,
'slick-carousel@{version}/slick/slick.js': resources.slickCarouselJS,
'@supabase/supabase-js@{version}': resources.supabaseJs,
'@tensorflow/tfjs@{version}/dist/tf.min.js': resources.tensorflow,
'@tensorflow/tfjs@{version}/dist/tf.js': resources.tensorflow,
'underscore@{version}/underscore.': resources.underscore,
@ -782,6 +785,7 @@ mappings.cdn = {
'simplemde/{version}/simplemde.css': resources.simplemdeCSS,
'simplemde/{version}/simplemde.min.css': resources.simplemdeCSS,
'snowplow/{version}/sp.': resources.snowplow,
'swfobject/{version}/swfobject.': resources.swfobject,
'underscorejs/{version}/underscore.': resources.underscore,
'underscorejs/{version}/underscore-min.': resources.underscore,
'webfontloader/{version}/webfont': resources.webfontloader
@ -824,6 +828,7 @@ mappings.cdn = {
'momentjs/{version}/moment.min.': resources.moment,
'prototype/{version}/prototype.': resources.prototypeJS,
'scriptaculous/{version}/scriptaculous.': resources.scriptaculous,
'swfobject/{version}/swfobject.': resources.swfobject,
'underscore/{version}/underscore.': resources.underscore,
'underscore/{version}/underscore-min.': resources.underscore
}
@ -844,6 +849,7 @@ mappings.cdn = {
'momentjs/{version}/moment.min.': resources.moment,
'prototype/{version}/prototype.': resources.prototypeJS,
'scriptaculous/{version}/scriptaculous.': resources.scriptaculous,
'swfobject/{version}/swfobject.': resources.swfobject,
'underscore/{version}/underscore.': resources.underscore,
'underscore/{version}/underscore-min.': resources.underscore
}
@ -874,6 +880,8 @@ mappings.cdn = {
'mootools/{version}/mootools-core.': resources.mootools,
'prototype/{version}/prototype.': resources.prototypeJS,
'scriptaculous/{version}/scriptaculous.': resources.scriptaculous,
'swfobject/{version}/swfobject.': resources.swfobject,
'swfobject/{version}/swfobject_src.': resources.swfobject,
'underscore.js/{version}/underscore.': resources.underscore,
'underscore.js/{version}/underscore-min.': resources.underscore,
'webfont/{version}/webfont.': resources.webfontloader,
@ -906,6 +914,7 @@ mappings.cdn = {
'mootools/{version}/mootools-core.': resources.mootools,
'prototype/{version}/prototype.': resources.prototypeJS,
'scriptaculous/{version}/scriptaculous.': resources.scriptaculous,
'swfobject/{version}/swfobject.': resources.swfobject,
'underscore.js/{version}/underscore.': resources.underscore,
'underscore.js/{version}/underscore-min.': resources.underscore,
'webfont/{version}/webfont.': resources.webfontloader,
@ -933,6 +942,7 @@ mappings.cdn = {
'mootools/{version}/mootools-core.': resources.mootools,
'prototype/{version}/prototype.': resources.prototypeJS,
'scriptaculous/{version}/scriptaculous.': resources.scriptaculous,
'swfobject/{version}/swfobject.': resources.swfobject,
'underscore.js/{version}/underscore.': resources.underscore,
'underscore.js/{version}/underscore-min.': resources.underscore,
'webfont/{version}/webfont.': resources.webfontloader,
@ -964,6 +974,7 @@ mappings.cdn = {
'mootools/{version}/mootools-core.': resources.mootools,
'prototype/{version}/prototype.': resources.prototypeJS,
'scriptaculous/{version}/scriptaculous.': resources.scriptaculous,
'swfobject/{version}/swfobject.': resources.swfobject,
'webfont/{version}/webfont.': resources.webfontloader,
'webfont/{version}/webfont_debug.': resources.webfontloader
}
@ -996,6 +1007,7 @@ mappings.cdn = {
'mootools/{version}/mootools-core.': resources.mootools,
'prototype/{version}/prototype.': resources.prototypeJS,
'scriptaculous/{version}/scriptaculous.': resources.scriptaculous,
'swfobject/{version}/swfobject.': resources.swfobject,
'twitter-bootstrap/{version}/js/bootstrap.': resources.bootstrapJS,
'twitter-bootstrap/{version}/css/bootstrap.': resources.bootstrapCSS,
'underscore.js/{version}/underscore.': resources.underscore,
@ -1039,6 +1051,7 @@ mappings.cdn = {
'mootools/{version}/mootools.': resources.mootools,
'prototype/{version}/prototype.': resources.prototypeJS,
'scriptaculous/{version}/scriptaculous.': resources.scriptaculous,
'swfobject/{version}/swfobject.': resources.swfobject,
'underscore/{version}/underscore.': resources.underscore,
'underscore/{version}/underscore-min.': resources.underscore,
'webfont/{version}/webfont.': resources.webfontloader,

View File

@ -23,7 +23,7 @@
* Messenger
*/
let messenger = {};
var messenger = {};
/**

View File

@ -23,7 +23,7 @@
* Request Analyzer
*/
let requestAnalyzer = {};
var requestAnalyzer = {};
/**
@ -259,8 +259,6 @@ requestAnalyzer._getPathOfBundle = function (initiator, channelHost, channelPath
filename = requestAnalyzer._handleUncompressedFiles(filename);
} else if (bundle === 'ScrollMagic (Bundle)' && !filename.endsWith('.min.js')) {
filename = requestAnalyzer._handleUncompressedFiles(filename);
} else if (bundle === 'Font Awesome (Fonts) (Bundle)') {
filename = requestAnalyzer._handleFontawesomeFiles(targetPath, filename);
}
if (filename === false) {
@ -309,13 +307,6 @@ requestAnalyzer._handleTinyMCE = function (channelPath, channelHost, initiator)
return filename;
};
requestAnalyzer._handleFontawesomeFiles = function (targetPath, filename) {
if (targetPath === 'resources/font-awesome/4.7.0/fonts/') {
return filename.replace('fontawesome-webfont.woff', 'fontawesome-webfont.woff2');
}
return filename;
};
requestAnalyzer._applyAllowlistedDomains = function () {
storageManager.type.get(Setting.ALLOWLISTED_DOMAINS, function (items) {
requestAnalyzer.allowlistedDomains = items.allowlistedDomains || {};

View File

@ -18,7 +18,7 @@
* Request Sanitizer
*/
let requestSanitizer = {};
var requestSanitizer = {};
/**

View File

@ -23,7 +23,7 @@
* Resources
*/
let resources = {
var resources = {
// Ajax Bootstrap Select
'ajaxBootstrapSelect': {
@ -106,6 +106,14 @@ let resources = {
'angularJSslider': {
'path': 'resources/angularjs-slider/{version}/rzslider.min.jsm'
},
// AngularJS ui-select [Deprecated]
'angularJsUiSelect': {
'path': 'resources/angular-ui-select/{version}/select.min.jsm'
},
// angular-ui-utils [Deprecated]
'angularUiUtils': {
'path': 'resources/angular-ui-utils/{version}/angular-ui-utils.min.jsm'
},
// AngularUI Bootstrap [Deprecated]
'angularUiBootstrapTPLS': {
'path': 'resources/angular-ui-bootstrap/{version}/ui-bootstrap-tpls.min.jsm'
@ -128,6 +136,10 @@ let resources = {
'angularPayments': {
'path': 'resources/zumper-angular-payments/{version}/angular-payments.jsm'
},
// Angular Stripe Checkout [Deprecated]
'angularStripeCheckout': {
'path': 'resources/angular-stripe-checkout/{version}/angular-stripe-checkout.min.jsm'
},
// Angular Translate (Bundle)
'angularTranslate': {
'path': 'resources/angular-translate/{version}/'
@ -325,6 +337,10 @@ let resources = {
'd3JS': {
'path': 'resources/d3/{version}/d3.min.jsm'
},
// D3 Legend [Deprecated]
'd3legend': {
'path': 'resources/d3-legend/{version}/d3-legend.min.jsm'
},
// datatables
'datatables': {
'path': 'resources/datatables/{version}/'
@ -358,6 +374,13 @@ let resources = {
'docsifyThemeSimpleDark': {
'path': 'resources/docsify-themeable/{version}/theme-simple-dark.css'
},
// Drawer [Deprecated]
'drawerJS': {
'path': 'resources/drawer/{version}/drawer.min.jsm'
},
'drawerCSS': {
'path': 'resources/drawer/{version}/drawer.min.css'
},
// dygraph
'dygraph': {
'path': 'resources/dygraph/{version}/dygraph.min.jsm'
@ -400,6 +423,10 @@ let resources = {
'feather': {
'path': 'resources/feather-icons/{version}/feather.min.jsm'
},
// FitText.js [Deprecated]
'fitTextJs': {
'path': 'resources/FitText.js/{version}/jquery.fittext.min.jsm'
},
// flickity
'flickity': {
'path': 'resources/flickity/{version}/flickity.pkgd.min.jsm'
@ -1024,10 +1051,6 @@ let resources = {
'storeJS': {
'path': 'resources/store.js/{version}/store.legacy.min.jsm'
},
// suprabase-js
'supabaseJs': {
'path': 'resources/supabase-js/{version}/supabase.min.jsm'
},
// swagger-ui
'swaggerUiJS': {
'path': 'resources/swagger-ui/{version}/swagger-ui-bundle.min.jsm'
@ -1035,6 +1058,10 @@ let resources = {
'swaggerUiCSS': {
'path': 'resources/swagger-ui/{version}/swagger-ui.min.css'
},
// SWFObject [Deprecated]
'swfobject': {
'path': 'resources/swfobject/{version}/swfobject.jsm'
},
// Swiper
'swiperJS': {
'path': 'resources/Swiper/{version}/js/swiper.min.jsm'

View File

@ -23,7 +23,7 @@
* Shorthands
*/
let shorthands = {};
var shorthands = {};
shorthands.specialFiles = function (channelHost, channelPath, searchString) {
@ -288,15 +288,6 @@ shorthands.specialFiles = function (channelHost, channelPath, searchString) {
'path': `resources/aos/${lastVersion}/${file}`,
'bundle': ''
};
} else if (Regex.DOCSIFY.test(channelPath)) {
lastVersion = targets.setLastVersion('/docsify/');
return {
'source': channelHost,
'versionDelivered': lastVersion,
'versionRequested': channelPath.split('@')[1],
'path': `resources/docsify/${lastVersion}/docsify.min.jsm`,
'bundle': ''
};
}
return {
'result': false,

View File

@ -23,7 +23,7 @@
* State Manager
*/
let stateManager = {};
var stateManager = {};
/**
@ -96,19 +96,15 @@ stateManager.addDomainToAllowlist = function (domain) {
stateManager.removeDomainFromAllowlist = function (domain) {
return new Promise((resolve) => {
let allowlistedDomains;
let allowlistedDomains, wildcard;
allowlistedDomains = requestAnalyzer.allowlistedDomains;
wildcard = helpers.getWildcard(domain);
if (allowlistedDomains[domain]) {
delete allowlistedDomains[domain];
} else {
for (const key in allowlistedDomains) {
if (key.startsWith('*.') && domain.endsWith(key.substring(2))) {
delete allowlistedDomains[key];
break;
}
}
delete allowlistedDomains[wildcard];
}
storageManager.type.set({allowlistedDomains}, resolve);

View File

@ -26,7 +26,7 @@ const InvalidFile = 'Invalid file!';
* Storage Manager
*/
let storageManager = {};
var storageManager = {};
/**
@ -213,7 +213,7 @@ storageManager._validateDomainsAndStatistics = function (type, obj) {
if (type === 'allowedDomainsGoogleFonts' || type === 'domainsManipulateDOM' || type === 'allowlistedDomains') {
for (const [key, value] of Object.entries(obj)) {
// eslint-disable-next-line no-useless-escape
if (((Regex.DOMAIN).test(key) || key === '') && value === true) {
if (((/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,24}/).test(key) || key === '') && value === true) {
valid[key] = value;
} else {
alert(`${chrome.i18n.getMessage('dialogImportFailed')}: ${key}`);
@ -222,12 +222,12 @@ storageManager._validateDomainsAndStatistics = function (type, obj) {
}
} else if (type === 'internalStatisticsData') {
for (const [date, values] of Object.entries(obj)) {
if ((Regex.INTERNAL_STATISTICS_DATA).test(date)) {
if ((/((2\d)\d{2})-(0[1-9]|1[012])-(0[1-9]|[12]\d|3[01])/).test(date)) {
for (const [types, category] of Object.entries(values)) {
if (types === 'frameworks') {
for (const [name, counter] of Object.entries(category)) {
// eslint-disable-next-line max-len
if (!(Regex.INTERNAL_RESOURCES).test(name) && !storageManager._validateNumbers(counter)) {
if (!(/resources\/[0-9a-z.-]+\/((?:\d{1,2}\.){1,3}\d{1,2})?.*\.(css|jsm)/).test(name) && !storageManager._validateNumbers(counter)) {
alert(`${chrome.i18n.getMessage('dialogImportFailed')}: ${name}`);
throw InvalidFile;
}
@ -235,7 +235,7 @@ storageManager._validateDomainsAndStatistics = function (type, obj) {
} else if (types === 'cdns') {
for (const [name, counter] of Object.entries(category)) {
// eslint-disable-next-line no-useless-escape, max-len
if (!(Regex.DOMAIN).test(name) && !storageManager._validateNumbers(counter)) {
if (!(/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,24}/).test(name) && !storageManager._validateNumbers(counter)) {
alert(`${chrome.i18n.getMessage('dialogImportFailed')}: ${name}`);
throw InvalidFile;
}
@ -259,9 +259,9 @@ storageManager._validateDomainsAndStatistics = function (type, obj) {
};
storageManager._validateStrings = function (value) {
if ((Regex.ISO_DATE).test(value)) {
if ((/((2\d)\d{2})-(0[1-9]|1[012])-(0[1-9]|[12]\d|3[01])/).test(value)) {
return value;
} else if ((Regex.HEX_COLOR).test(value)) {
} else if ((/#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/).test(value)) {
return value;
} else if (value === 'Default' || value === 'Light' || value === 'Grey') {
return value;

View File

@ -1,15 +1,11 @@
{
"manifest_version": 2,
"name": "LocalCDN",
"version": "2.6.68",
"version": "2.6.56",
"browser_specific_settings": {
"gecko": {
"id": "{b86e4813-687a-43e6-ab65-0bde4ab75758}",
"strict_min_version": "113.0"
},
"gecko_android": {
"id": "{b86e4813-687a-43e6-ab65-0bde4ab75758}",
"strict_min_version": "120.0"
"strict_min_version": "86.0"
}
},
"author": "nobody",

View File

@ -23,7 +23,7 @@
* Helpers
*/
let helpers = {};
var helpers = {};
/**
@ -175,39 +175,22 @@ helpers.getWildcard = function (initiatorDomain) {
domain = domain.join().replace(/,/g, '.');
return domain;
}
};
helpers.getTopLevelDomain = function (initiatorDomain) {
let domain = initiatorDomain.split('.');
domain[domain.length - 2] = '*';
return `${domain[domain.length - 2]}.${domain[domain.length - 1]}`;
};
helpers.checkAllowlisted = function (domain, list) {
if (!domain) return false;
let domainWithoutPrefix, wildcard;
const subdomains = helpers.getAllSubdomains(domain);
for (const subdomain of subdomains) {
if (list[subdomain]) return true;
}
return false;
};
helpers.getAllSubdomains = function (domain) {
const parts = domain.split('.').reverse();
const subdomains = [];
let currentSubdomain = '';
for (const part of parts) {
currentSubdomain = part + (currentSubdomain ? `.${currentSubdomain}` : '');
subdomains.push(`*.${currentSubdomain}`);
subdomains.push(currentSubdomain);
if (domain === null) {
return false;
}
return subdomains;
if (domain.startsWith(Address.WWW_PREFIX)) {
domainWithoutPrefix = domain.slice(Address.WWW_PREFIX.length);
}
wildcard = helpers.getWildcard(domain);
return Boolean(list[domain] || list[domainWithoutPrefix] || list[wildcard] || list[domainWithoutPrefix]);
};
helpers.extractFilenameFromPath = function (path) {
@ -311,14 +294,3 @@ helpers.compareVersion = function (v1, v2) {
}
return v1.length === v2.length ? true : v1.length < v2.length ? false : true;
};
helpers.isGoogleDomain = function (initiatorDomain) {
let parts = initiatorDomain.split('.');
// remove subdomains if exist
if (parts.length > 2) {
parts.shift();
}
return GoogleDomains[parts.join('.')] || false;
};

View File

@ -19,7 +19,7 @@
* Log
*/
let log = {};
var log = {};
log.append = function (initiator, resource, target, highlight, iframe = '') {
storageManager.type.get(Setting.LOGGING, function (items) {

View File

@ -19,7 +19,7 @@
* Updates
*/
let ruleGenerator = {};
var ruleGenerator = {};
/**

View File

@ -20,7 +20,7 @@
* Stats
*/
let stats = {};
var stats = {};
/**

View File

@ -19,7 +19,7 @@
* Targets
*/
let targets = {};
var targets = {};
/**
@ -80,9 +80,9 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/1000hz-bootstrap-validator/0.')) return '0.11.9';
if (type.startsWith('/ajax-bootstrap-select/1.')) return '1.4.5';
if (type.startsWith('/algoliasearch/3.')) return '3.35.1';
if (type.startsWith('/algoliasearch/4.')) return '4.23.3';
if (type.startsWith('/algoliasearch/4.')) return '4.20.0';
if (type.startsWith('/alpinejs/2.')) return '2.8.2';
if (type.startsWith('/alpinejs/3.')) return '3.14.0';
if (type.startsWith('/alpinejs/3.')) return '3.13.0';
if (type.startsWith('/anchor-js/3.')) return '3.2.2';
if (type.startsWith('/anchor-js/4.')) return '4.3.1';
if (type.startsWith('/anchor-js/5.')) return '5.0.0';
@ -110,7 +110,8 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/angularjs-toaster/3.')) return '3.0.0';
if (type.startsWith('/angular-bootstrap-colorpicker/3.')) return '3.0.32';
if (type.startsWith('/zumper-angular-payments/1.')) return '1.0.7';
if (type.startsWith('/angular-translate-loader-partial/2.')) return '2.19.1';
if (type.startsWith('/angular-stripe-checkout@5.')) return '5.1.0';
if (type.startsWith('/angular-translate-loader-partial/2.')) return '2.19.0';
if (type.startsWith('/angular-ui-bootstrap/')) {
if (helpers.compareVersion('0.10.0', version)) return '0.10.0'; // <= v0.10.0
if (helpers.compareVersion('0.14.3', version)) return '0.14.3'; // > 0.10.0 <= v0.14.3
@ -121,21 +122,23 @@ targets.setLastVersion = function (type, version) {
if (helpers.compareVersion('0.4.3', version)) return '0.4.3'; // <= 0.4.3
return '1.1.0'; // > 0.4.3
}
if (type.startsWith('/angular-ui-utils/0.')) return '0.1.1';
if (type.startsWith('/angular-ui-select/0.')) return '0.20.0';
if (type.startsWith('/angucomplete-alt/3.')) return '3.0.0';
if (type.startsWith('/animate.css/3.')) return '3.7.2';
if (type.startsWith('/animate.css/4.')) return '4.1.1';
if (type.startsWith('/animejs/3.')) return '3.2.2';
if (type.startsWith('/animejs/3.')) return '3.2.1';
if (type.startsWith('/autocomplete.js/0.')) return '0.38.1';
if (type.startsWith('/autocomplete.js/1.')) return '1.5.4';
if (type.startsWith('/angular-material/1.') || type.startsWith('/angular-material/0.')) return '1.2.5';
if (type.startsWith('/angular-translate/2.')) return '2.19.1';
if (type.startsWith('/angular-translate/2.')) return '2.19.0';
if (type.startsWith('/aos/2.') || type.startsWith('/aos/latest')) return '2.3.4';
if (type.startsWith('/appboy-web-sdk/3.')) return '3.5.1';
if (type.startsWith('/asciinema-player/2.')) return '2.6.1';
if (type.startsWith('/axios/0.')) return '0.27.2';
if (type.startsWith('/axios/1.')) return '1.7.2';
if (type.startsWith('/axios/1.')) return '1.5.0';
if (type.startsWith('/backbone.js/0.')) return '0.9.10';
if (type.startsWith('/backbone.js/1.')) return '1.6.0';
if (type.startsWith('/backbone.js/1.')) return '1.5.0';
if (type.startsWith('/baguettebox.js/1.')) return '1.11.1';
if (type.startsWith('/blazy/1.')) return '1.8.2';
if (type.startsWith('/bluebird/3.')) return '3.7.2';
@ -147,48 +150,48 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/bootstrap-daterangepicker/2.')) return '2.1.27';
if (type.startsWith('/bootstrap-daterangepicker/3.')) return '3.1';
if (type.startsWith('/bootstrap-datepicker/1.')) return '1.10.0';
if (type.startsWith('/bootstrap-icons/1.')) return '1.11.3';
if (type.startsWith('/bootstrap-icons/1.')) return '1.11.1';
if (type.startsWith('/bootstrap-multiselect/0.')) return '0.9.16';
if (type.startsWith('/bootstrap-multiselect/1.')) return '1.1.2';
if (type.startsWith('/bootstrap-slider/10.')) return '10.6.2';
if (type.startsWith('/bootstrap-slider/11.')) return '11.0.2';
if (type.startsWith('/bootstrap-select/1.')) return '1.13.18';
if (type.startsWith('/bootstrap-table/1.')) return '1.22.6';
if (type.startsWith('/bootstrap-table/1.')) return '1.22.1';
if (type.startsWith('/bootstrap-toggle/2.')) return '2.2.2';
if (type.startsWith('/bootstrap-vue/2.')) return '2.23.1';
if (type.startsWith('/bootstrap-3-typeahead/4.')) return '4.0.2';
if (type.startsWith('/bootswatch/3.')) return '3.4.0';
if (type.startsWith('/bootswatch/4.')) return '4.6.1';
if (type.startsWith('/bootswatch/5.')) return '5.3.3';
if (type.startsWith('/bootswatch/5.')) return '5.3.2';
if (type.startsWith('/bowser/')) {
if (version !== 'latest' && helpers.compareVersion('1.9.4', version)) return '1.9.4';
return '2.11.0';
}
if (type.startsWith('/bulma/0.')) return '1.0.0';
if (type.startsWith('/bulma/1.')) return '1.0.1';
if (type.startsWith('/bxslider/4.')) return '4.2.17';
if (type.startsWith('/bulma/0.')) return '0.9.4';
if (type.startsWith('/bxslider/4.')) return '4.2.15';
if (type.startsWith('/Chart.js/2.')) return '2.9.4';
if (type.startsWith('/Chart.js/3.')) return '3.9.1';
if (type.startsWith('/Chart.js/4.')) return '4.4.1';
if (type.startsWith('/Chart.js/4.')) return '4.4.0';
if (type.startsWith('/clappr/0.') || type.startsWith('/clappr/latest/')) return '0.4.7';
if (type.startsWith('/chosen/1.')) return '1.8.7';
if (type.startsWith('/clipboard.js/1.')) return '1.7.1';
if (type.startsWith('/clipboard.js/2.')) return '2.0.11';
if (type.startsWith('/cookieconsent2/3.')) return '3.1.1';
if (type.startsWith('/corejs-typeahead/1.')) return '1.3.4';
if (type.startsWith('/corejs-typeahead/1.')) return '1.3.3';
if (type.startsWith('/createjs/')) return '1.0.0';
if (type.startsWith('/d3/3.')) return '3.5.17';
if (type.startsWith('/d3/4.')) return '4.13.0';
if (type.startsWith('/d3/5.')) return '5.16.0';
if (type.startsWith('/d3/6.')) return '6.7.0';
if (type.startsWith('/d3/7.')) return '7.9.0';
if (type.startsWith('/d3/7.')) return '7.8.5';
if (type.startsWith('/d3-legend/2.')) return '2.25.6';
if (type.startsWith('/datatables/1.')) return '1.11.0';
if (type.startsWith('/dayjs/1.')) return '1.11.11';
if (type.startsWith('/dexie/3.')) return '3.2.6';
if (type.startsWith('/dexie/4.') || type.startsWith('/dexie/latest')) return '4.0.7';
if (type.startsWith('/dayjs/1.')) return '1.11.10';
if (type.startsWith('/dexie/3.') || type.startsWith('/dexie/latest')) return '3.2.4';
if (type.startsWith('/docsearch.js/2.')) return '2.6.3';
if (type.startsWith('/docsify/4.') || type.startsWith('/docsify/')) return '4.13.1';
if (type.startsWith('/docsify-themeable/0.')) return '0.9.0';
if (type.startsWith('/drawer/3.')) return '3.2.2';
if (type.startsWith('/dygraph/1.')) return '1.1.1';
if (type.startsWith('/dygraph/2.')) return '2.2.1';
if (type.startsWith('/element-ui/2.')) return '2.15.14';
@ -199,13 +202,14 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/fastclick/1.')) return '1.0.6';
if (type.startsWith('/fancybox/2.')) return '2.1.7';
if (type.startsWith('/fancybox/3.')) return '3.5.7';
if (type.startsWith('/feather-icons/4.')) return '4.29.2';
if (type.startsWith('/feather-icons/4.')) return '4.29.1';
if (type.startsWith('/FitText.js/1.')) return '1.2.0';
if (type.startsWith('/flickity/3.')) return '3.0.0';
if (type.startsWith('/flv.js/')) return '1.6.2';
if (type.startsWith('/font-awesome/3.')) return '3.2.1';
if (type.startsWith('/font-awesome/4.')) return '4.7.0';
if (type.startsWith('/font-awesome/5.')) return '5.15.4';
if (type.startsWith('/font-awesome/6.')) return '6.5.2';
if (type.startsWith('/font-awesome/6.')) return '6.4.2';
if (type.startsWith('/fork-awesome/1.')) return '1.2.0';
if (type.startsWith('/foundation/5.')) return '5.5.3';
if (type.startsWith('/foundation/6.')) return '6.8.1';
@ -213,27 +217,27 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/granim/2.')) return '2.0.0';
if (type.startsWith('/gsap/1.')) return '1.20.5';
if (type.startsWith('/gsap/2.')) return '2.1.3';
if (type.startsWith('/gsap/3.')) return '3.12.5';
if (type.startsWith('/materialicons/')) return 'v142';
if (type.startsWith('/gsap/3.')) return '3.12.2';
if (type.startsWith('/materialicons/')) return 'v140';
if (type.startsWith('/materialiconsoutlined/')) return 'v109';
if (type.startsWith('/materialiconsround/')) return 'v108';
if (type.startsWith('/materialiconssharp/')) return 'v109';
if (type.startsWith('/materialiconstwotone/')) return 'v112';
if (type.startsWith('/handlebars.js/4.')) return '4.7.8';
if (type.startsWith('/highlight.js/7.')) return '11.9.0';
if (type.startsWith('/highlight.js/8.')) return '11.9.0';
if (type.startsWith('/highlight.js/9.')) return '11.9.0';
if (type.startsWith('/highlight.js/10.')) return '11.9.0';
if (type.startsWith('/highlight.js/11.')) return '11.9.0';
if (type.startsWith('/highlight.js/7.')) return '9.18.5';
if (type.startsWith('/highlight.js/8.')) return '9.18.5';
if (type.startsWith('/highlight.js/9.')) return '9.18.5';
if (type.startsWith('/highlight.js/10.')) return '10.7.3';
if (type.startsWith('/highlight.js/11.')) return '11.8.0';
if (type.startsWith('/history/4.')) return '4.10.1';
if (type.startsWith('/history/5.')) return '5.3.0';
if (type.startsWith('/hls.js/0.')) return '0.14.17';
if (type.startsWith('/hls.js/1.')) return '1.5.9';
if (type.startsWith('/hls.js/1.')) return '1.4.12';
if (type.startsWith('/hogan.js/')) return '3.0.2';
if (type.startsWith('/instantsearch.css/7.')) return '7.4.5';
if (type.startsWith('/instantsearch.css/8.')) return '8.2.0';
if (type.startsWith('/instantsearch.css/8.')) return '8.1.0';
if (type.startsWith('/instantsearch.js/3.')) return '3.7.0';
if (type.startsWith('/instantsearch.js/4.')) return '4.70.0';
if (type.startsWith('/instantsearch.js/4.')) return '4.57.0';
if (type.startsWith('/in-view/0.')) return '0.6.1';
if (type.startsWith('/iScroll/5.')) return '5.2.0';
if (type.startsWith('/izimodal/1.')) return '1.6.1';
@ -256,7 +260,7 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/jqueryui/1.')) {
if (helpers.compareVersion('1.8.24', version)) return '1.8.24'; // <= v1.8.24
if (helpers.compareVersion('1.10.0', version)) return '1.10.0'; // > v1.8.24 to <= v1.10.0
return '1.13.3'; // >= 1.8.19
return '1.13.2'; // >= 1.8.19
}
if (type.startsWith('/jquery-ajax-unobtrusive/3.')) return '3.2.6';
if (type.startsWith('/jquery.blockUI/2.')) return '2.70';
@ -277,7 +281,7 @@ targets.setLastVersion = function (type, version) {
}
if (type.startsWith('/jquery-mousewheel/3.')) return '3.1.13';
if (type.startsWith('/jScrollPane/2.')) return '2.2.2';
if (type.startsWith('/jquery-validate/1.')) return '1.20.0';
if (type.startsWith('/jquery-validate/1.')) return '1.19.5';
if (type.startsWith('/jeditable.js/1.')) return '1.8.0';
if (type.startsWith('/jeditable.js/2.')) return '2.0.19';
if (type.startsWith('/jquery.cycle2/2.')) return '2.1.6';
@ -309,7 +313,7 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/Leaflet.EasyButton/2.')) return '2.4.0';
if (type.startsWith('/leaflet.featuregroup.subgroup/1.')) return '1.0.2';
if (type.startsWith('/leaflet.markercluster/1.')) return '1.5.3';
if (type.startsWith('/libphonenumber-js/1.')) return '1.11.2';
if (type.startsWith('/libphonenumber-js/1.')) return '1.10.44';
if (type.startsWith('/libsodium-wrappers/0.')) return '0.5.4';
if (type.startsWith('/lightbox2/2.')) return '2.11.4';
if (type.startsWith('/lightcase/2.')) return '2.5.0';
@ -320,7 +324,7 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/lozad')) return '1.16.0';
if (type.startsWith('/lunr.js/2.')) return '2.3.9';
if (type.startsWith('/magnific-popup.js/1.')) return '1.1.0';
if (type.startsWith('/markdown-it/')) return '13.0.2';
if (type.startsWith('/markdown-it/')) return '13.0.1';
if (type.startsWith('/mdbootstrap/4.')) return '4.20.0';
if (type.startsWith('/material-design-icons/2.')) return '2.8.94';
if (type.startsWith('/material-design-icons/3.')) return '3.9.97';
@ -336,14 +340,13 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/mdb-ui-kit/3.')) return '3.11.0';
if (type.startsWith('/mdb-ui-kit/4.')) return '4.4.0';
if (type.startsWith('/mdb-ui-kit/5.')) return '5.0.0';
if (type.startsWith('/mdb-ui-kit/6.')) return '6.4.2';
if (type.startsWith('/mdb-ui-kit/7.')) return '7.3.0';
if (type.startsWith('/mdb-ui-kit/6.')) return '6.4.1';
if (type.startsWith('/mobile/1.')) return '1.4.5';
if (type.startsWith('/Modaal/0.')) return '0.4.4';
if (type.startsWith('/modernizr/2.')) return '2.8.3';
if (type.startsWith('/moment.js/2.')) {
if (helpers.compareVersion('2.5.1', version)) return '2.5.1'; // <= v2.5.1
return '2.30.1';
return '2.29.4';
}
if (type.startsWith('/mootools/1.')) {
if (helpers.compareVersion('1.4.5', version)) return '1.4.5'; // <= v1.4.5
@ -353,10 +356,10 @@ targets.setLastVersion = function (type, version) {
// The only resource used from ngx-bootstrap is the CSS file for the datepicker.
// This CSS is unchanged since version 7. So it's not necessary to host it more than once.
if (helpers.compareVersion('6.2.0', version)) return '6.2.0'; // <= v6.2.0
return '12.0.0';
return '11.0.2';
}
if (type.startsWith('/noUiSlider/14.')) return '14.7.0';
if (type.startsWith('/noUiSlider/15.')) return '15.7.2';
if (type.startsWith('/noUiSlider/15.')) return '15.7.1';
if (type.startsWith('/nprogress/0.')) return '0.2.0';
if (type.startsWith('/nvd3/1.')) return '1.8.6';
if (type.startsWith('/object-assign@4.')) return '4.1.1';
@ -366,7 +369,7 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/owl-carousel/2.')) return '2.3.4';
if (type.startsWith('/p2p-media-loader-core') || type.startsWith('/p2p-media-loader-hlsjs')) return '0.6.2';
if (type.startsWith('/p5.js/0.')) return '0.10.2';
if (type.startsWith('/p5.js/1.')) return '1.9.4';
if (type.startsWith('/p5.js/1.')) return '1.7.0';
if (type.startsWith('/page.js/1.')) return '1.11.6';
if (type.startsWith('/paginationjs/2.')) return '2.6.0';
if (type.startsWith('/plyr/3.')) return '3.7.8';
@ -383,28 +386,27 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/raven.js/3.')) return '3.27.2';
if (type.startsWith('/react/16.')) return '16.14.0';
if (type.startsWith('/react/17.')) return '17.0.2';
if (type.startsWith('/react/18.')) return '18.3.1';
if (type.startsWith('/react/18.')) return '18.2.0';
if (type.startsWith('/react-dom/16.')) return '16.14.0';
if (type.startsWith('/react-dom/17.')) return '17.0.2';
if (type.startsWith('/react-dom/18.')) return '18.3.1';
if (type.startsWith('/react-dom/18.')) return '18.2.0';
if (type.startsWith('/react-intl/')) {
// NOTE: Parameters swapped. (= anything greater than v5.0.0)
if (helpers.compareVersion(version, '5.0.0')) return '6.6.8'; // >= v5.0.0
if (helpers.compareVersion(version, '5.0.0')) return '6.4.7'; // >= v5.0.0
}
if (type.startsWith('/react-redux/7.')) return '7.2.8';
if (type.startsWith('/react-redux/8.')) return '8.1.3';
if (type.startsWith('/react-redux/8.')) return '8.1.2';
if (type.startsWith('/react-router/5.')) return '5.3.3';
if (type.startsWith('/react-router/6.')) return '6.23.1';
if (type.startsWith('/react-router/6.')) return '6.16.0';
if (type.startsWith('/react-side-effect/')) return '2.1.2';
if (type.startsWith('/react-lifecycles-compat/')) return '3.0.4';
if (type.startsWith('/redux/4.')) return '4.2.1';
if (type.startsWith('/redux/5.')) return '5.0.1';
if (type.startsWith('/rickshaw/1.')) return '1.7.1';
if (type.startsWith('/script.js/2.')) return '2.5.9';
if (type.startsWith('/scriptaculous/1.')) return '1.9.0';
if (type.startsWith('/ScrollMagic/2.')) return '2.0.8';
if (type.startsWith('/search-insights/1.')) return '1.10.0';
if (type.startsWith('/search-insights/2.')) return '2.14.0';
if (type.startsWith('/search-insights/2.')) return '2.8.2';
if (type.startsWith('/select2/3.')) return '3.5.4';
if (type.startsWith('/select2/4.')) return '4.0.13';
if (type.startsWith('/semantic-ui/2.')) return '2.5.0';
@ -412,7 +414,7 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/showdown/1.')) return '1.9.1';
if (type.startsWith('/showdown/2.')) return '2.1.0';
if (type.startsWith('/simplebar/5.')) return '5.3.9';
if (type.startsWith('/simplebar/6.')) return '6.2.6';
if (type.startsWith('/simplebar/6.')) return '6.2.5';
if (type.startsWith('/simplemde/')) return '1.11.2';
if (type.startsWith('/slick-carousel/1.')) {
if (helpers.compareVersion('1.8.1', version)) return '1.8.1'; // <= v1.8.1
@ -423,7 +425,7 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/snowplow/2.')) return '2.18.2';
if (type.startsWith('/socket.io/2.')) return '2.4.0';
if (type.startsWith('/socket.io/3.')) return '3.1.3';
if (type.startsWith('/socket.io/4.')) return '4.7.5';
if (type.startsWith('/socket.io/4.')) return '4.7.2';
if (type.startsWith('/spin.js/2.')) return '2.3.2';
if (type.startsWith('/spin.js/3.')) return '3.1.0';
if (type.startsWith('/spin.js/4.')) return '4.1.1';
@ -431,9 +433,9 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/stickyfill/2.')) return '2.1.0';
if (type.startsWith('/sticky-js/')) return '1.3.0';
if (type.startsWith('/store.js/2.')) return '2.0.12';
if (type.startsWith('/supabase-js/2.')) return '2.39.3';
if (type.startsWith('/swagger-ui/4.')) return '4.18.3';
if (type.startsWith('/swagger-ui/5.')) return '5.17.14';
if (type.startsWith('/swagger-ui/5.')) return '5.7.2';
if (type.startsWith('/swfobject/2.')) return '2.2';
if (type.startsWith('/Swiper/3.')) return '3.4.2';
if (type.startsWith('/Swiper/4.')) return '4.5.1';
if (type.startsWith('/Swiper/5.')) return '5.4.5';
@ -441,15 +443,14 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/Swiper/7.')) return '7.4.1';
if (type.startsWith('/Swiper/8.')) return '8.4.7';
if (type.startsWith('/Swiper/9.')) return '9.4.1';
if (type.startsWith('/Swiper/10.') || type.startsWith('/Swiper/11.') || type.startsWith('/Swiper/')) return '11.0.5';
if (type.startsWith('/Swiper/10.') || type.startsWith('/Swiper/')) return '10.3.0';
if (type.startsWith('/tensorflow/')) {
// NOTE: Parameters swapped. (= anything greater than v2.0.0)
if (helpers.compareVersion(version, '2.0.0')) return '4.19.0'; // >= v2.0.0
if (helpers.compareVersion(version, '2.0.0')) return '4.11.0'; // >= v2.0.0
}
if (type.startsWith('/tether/1.')) return '1.4.7';
if (type.startsWith('/tinymce/5.')) return '5.10.5';
if (type.startsWith('/tinymce/6.')) return '7.0.1';
if (type.startsWith('/tinymce/7.')) return '7.1.1';
if (type.startsWith('/tinymce/6.')) return '6.7.0';
if (type.startsWith('/tooltipster/3.')) return '3.3.0';
if (type.startsWith('/tooltipster/4.')) return '4.2.8';
if (type.startsWith('/toastr.js/2.') || type.startsWith('/toastr.js/latest/')) return '2.1.4';
@ -464,16 +465,13 @@ targets.setLastVersion = function (type, version) {
if (helpers.compareVersion('4.4.1', version)) return '4.4.1'; // <= 4.4.1
return '4.6.1';
}
if (type.startsWith('/twitter-bootstrap/5.')) {
if (helpers.compareVersion('5.1.3', version)) return '5.1.3'; // <= 5.1.3
return '5.3.3';
}
if (type.startsWith('/twitter-bootstrap/5.')) return '5.3.2';
if (type.startsWith('/twix.js/0.')) return '0.3.0';
if (type.startsWith('/twix.js/1.')) return '1.3.0';
if (type.startsWith('/underscore.js/1.')) return '1.13.6';
if (type.startsWith('/URI.js/1.')) return '1.19.11';
if (type.startsWith('/urlive/1.')) return '1.1.1';
if (type.startsWith('/vanilla-lazyload')) return '19.1.3';
if (type.startsWith('/vanilla-lazyload')) return '17.8.4';
if (type.startsWith('/vex-js/3.')) return '3.1.1';
if (type.startsWith('/vex-js/4.')) return '4.1.0';
if (type.startsWith('/videojs-seek-buttons/1.')) return '1.6.0';
@ -484,17 +482,17 @@ targets.setLastVersion = function (type, version) {
if (helpers.compareVersion('5.20.5', version)) return '5.20.5'; // <= 5.20.5
if (helpers.compareVersion('6.13.0', version)) return '6.13.0'; // > 5.20.5 to <= 6.13.0
if (helpers.compareVersion('7.21.1', version)) return '7.21.1'; // > 6.13.0 to <= 7.21.1
return '8.14.0';
return '8.5.3';
}
if (type.startsWith('/vue/1.')) return '1.0.28';
if (type.startsWith('/vue/2.')) return '2.6.14';
if (type.startsWith('/vue/3.')) return '3.4.27';
if (type.startsWith('/vue/3.')) return '3.3.4';
if (type.startsWith('/vue-i18n/8.')) return '8.27.2';
if (type.startsWith('/vue-i18n/9.')) return '9.13.1';
if (type.startsWith('/vue-i18n/9.')) return '9.4.1';
if (type.startsWith('/vue-match-media/1.')) return '1.0.3';
if (type.startsWith('/vue-resource/1.')) return '1.5.3';
if (type.startsWith('/vue-router/3.')) return '3.6.5';
if (type.startsWith('/vue-router/4.')) return '4.3.2';
if (type.startsWith('/vue-router/4.')) return '4.2.5';
if (type.startsWith('/vuex/3.')) return '3.6.2';
if (type.startsWith('/vuex/4.')) return '4.1.0';
if (type.startsWith('/waypoints/4.')) return '4.0.1';
@ -502,8 +500,7 @@ targets.setLastVersion = function (type, version) {
if (type.startsWith('/webfont')) return '1.6.28';
if (type.startsWith('/webrtc-adapter/6.')) return '6.4.8';
if (type.startsWith('/webrtc-adapter/7.')) return '7.7.1';
if (type.startsWith('/webrtc-adapter/8.')) return '9.0.1';
if (type.startsWith('/webrtc-adapter/9.')) return '9.0.1';
if (type.startsWith('/webrtc-adapter/8.')) return '8.2.3';
if (type.startsWith('/wow/1.')) return '1.1.2';
if (version === null) return 'latest';
return '';
@ -515,7 +512,6 @@ targets.determineResourceName = function (filename) {
};
const ListOfFiles = {
'supabase.min.jsm': 'supabase-js',
'handlebars.min.jsm': 'handlebars.js',
'URI.min.jsm': 'URI.js',
'vue-router.global.min.jsm': 'vue-router',
@ -609,7 +605,6 @@ const ListOfFiles = {
'jquery.validate.unobtrusive.min.jsm': 'jQuery Validate Unobtrusive',
'jquery.sliderPro.min.jsm': 'Slider Pro (JS)',
'knockout-min.jsm': 'Knockout',
'knockout-latest.min.jsm': 'Knockout',
'bootstrap-multiselect.min.jsm': 'Bootstrap Multiselect',
'ajax-bootstrap-select.min.jsm': 'Ajax Bootstrap Select',
'bootstrap-vue.min.jsm': 'BootstrapVue (JS)',

View File

@ -22,7 +22,7 @@
* Wrappers
*/
let wrappers = {};
var wrappers = {};
/**

View File

@ -19,7 +19,7 @@
* Help
*/
let help = {};
var help = {};
/**

View File

@ -19,7 +19,7 @@
* Logging Page
*/
let logging = {};
var logging = {};
logging._onDocumentLoaded = function () {
logging._getLoggingData()

View File

@ -19,7 +19,7 @@
* Options (Advanced)
*/
let optionsAdvanced = {};
var optionsAdvanced = {};
/**
@ -88,10 +88,6 @@ optionsAdvanced.init = function (opt) {
negateHtmlFilterList = options.getOptionElement(Setting.NEGATE_HTML_FILTER_LIST);
negateHtmlFilterList.addEventListener('change', options.onOptionChanged);
negateHtmlFilterList.checked = opt[Setting.NEGATE_HTML_FILTER_LIST];
if (opt[Setting.NEGATE_HTML_FILTER_LIST] === false) {
document.getElementById('html-filter-domains-title-include').style.display = 'block';
document.getElementById('html-filter-domains-title-exclude').style.display = 'none';
}
changeBadgeColorMissingResources = options.getOptionElement(Setting.CHANGE_BADGE_COLOR_MISSING_RESOURCES);
changeBadgeColorMissingResources.addEventListener('change', options.onOptionChanged);

View File

@ -19,7 +19,7 @@
* Options (Basic)
*/
let optionsBasic = {};
var optionsBasic = {};
/**

View File

@ -19,7 +19,7 @@
* Options (Info)
*/
let optionsInfo = {};
var optionsInfo = {};
/**

View File

@ -19,7 +19,7 @@
* Options (Other)
*/
let optionsOther = {};
var optionsOther = {};
/**
@ -34,11 +34,7 @@ optionsOther._renderIconSection = function (opt) {
return;
}
if (opt.selectedIcon === null || opt.selectedIcon === undefined) {
selectedIcon = 'Default';
} else {
selectedIcon = opt.selectedIcon;
}
selectedIcon = opt.selectedIcon;
if (selectedIcon === 'Default') {
document.getElementById('icon-default').checked = true;

View File

@ -111,7 +111,6 @@
<img class="checked-unchecked" src="../../icons/checked.svg" alt=""> example.com<br>
<img class="checked-unchecked" src="../../icons/checked.svg" alt=""> sub.example.com<br>
<img class="checked-unchecked" src="../../icons/checked.svg" alt=""> *.example.com<br>
<img class="checked-unchecked" src="../../icons/checked.svg" alt=""> *.com<br>
<img class="checked-unchecked" src="../../icons/unchecked.svg" alt=""> https://example.com<br>
<img class="checked-unchecked" src="../../icons/unchecked.svg" alt=""> https://*.example.com<br>
<img class="checked-unchecked" src="../../icons/unchecked.svg" alt=""> https://example.com/page/example.html
@ -164,7 +163,6 @@
<img class="checked-unchecked" src="../../icons/checked.svg" alt=""> example.com<br>
<img class="checked-unchecked" src="../../icons/checked.svg" alt=""> sub.example.com<br>
<img class="checked-unchecked" src="../../icons/checked.svg" alt=""> *.example.com<br>
<img class="checked-unchecked" src="../../icons/checked.svg" alt=""> *.com<br>
<img class="checked-unchecked" src="../../icons/unchecked.svg" alt=""> https://example.com<br>
<img class="checked-unchecked" src="../../icons/unchecked.svg" alt=""> https://*.example.com<br>
<img class="checked-unchecked" src="../../icons/unchecked.svg" alt=""> https://example.com/page/example.html
@ -204,7 +202,6 @@
<img class="checked-unchecked" src="../../icons/checked.svg" alt=""> example.com<br>
<img class="checked-unchecked" src="../../icons/checked.svg" alt=""> sub.example.com<br>
<img class="checked-unchecked" src="../../icons/checked.svg" alt=""> *.example.com<br>
<img class="checked-unchecked" src="../../icons/checked.svg" alt=""> *.com<br>
<img class="checked-unchecked" src="../../icons/unchecked.svg" alt=""> https://example.com<br>
<img class="checked-unchecked" src="../../icons/unchecked.svg" alt=""> https://*.example.com<br>
<img class="checked-unchecked" src="../../icons/unchecked.svg" alt=""> https://example.com/page/example.html

View File

@ -23,7 +23,7 @@
* Options
*/
let options = {};
var options = {};
/**
@ -196,7 +196,7 @@ options._configureLinkPrefetching = function (value) {
};
options._serializeAllowlistedDomains = function (allowlistedDomains) {
if (allowlistedDomains === undefined || allowlistedDomains === null) {
if (allowlistedDomains === undefined) {
return '';
}

View File

@ -23,7 +23,7 @@
* Popup
*/
let popup = {};
var popup = {};
/**
@ -145,7 +145,7 @@ popup._renderDomainAllowlistPanel = function () {
googleFontsToggleElement = document.getElementById('google-fonts-toggle-switch');
if (popup._blockGoogleFonts === false || helpers.isGoogleDomain(popup._domain) === true) {
if (popup._blockGoogleFonts === false) {
document.getElementById('div-google-fonts').hidden = true;
}
@ -295,9 +295,7 @@ popup._determineStatusGoogleFonts = function () {
};
chrome.runtime.sendMessage(message, function (response) {
if (response !== undefined) {
popup._domainGoogleFonts = response.value;
}
popup._domainGoogleFonts = response.value;
resolve();
});
});

View File

@ -23,7 +23,6 @@
<option value="week" data-i18n-content="labelPastWeek">Past week</option>
<option value="month" data-i18n-content="labelPastMonth">Past month</option>
<option value="year" data-i18n-content="labelPastYear">Past year</option>
<option value="all" data-i18n-content="labelAll">All</option>
</select>
<div id="btn-delete" class="button" data-i18n-content="labelDelete">Delete</div>
</div>

View File

@ -19,7 +19,7 @@
* Statistic
*/
let statistics = {};
var statistics = {};
/**
@ -127,8 +127,6 @@ statistics._setDateRange = function () {
days = 30;
} else if (type === 'year') {
days = 365;
} else if (type === 'all') {
days = statistics._daysSinceYearOfRelease();
} else {
statistics._dateRange = [new Date().toISOString().slice(0, 10)];
}
@ -240,7 +238,7 @@ statistics._displayNameOfFramework = function (str, type) {
statistics._handlerDateRange = function ({target}) {
let type = target.value;
if (type === 'day' || type === 'week' || type === 'month' || type === 'year' || type === 'all') {
if (type === 'day' || type === 'week' || type === 'month' || type === 'year') {
statistics._dateUnit = type;
statistics._saveDefaultRange(type);
} else if (type === 'delete') {
@ -272,14 +270,6 @@ statistics._registerListener = function () {
});
};
statistics._daysSinceYearOfRelease = function () {
let timeDifference, millisecondsPerDay;
timeDifference = new Date() - new Date('2020-01-01');
millisecondsPerDay = 24 * 60 * 60 * 1000;
return Math.floor(timeDifference / millisecondsPerDay);
};
/**
* Initializations

View File

@ -27,27 +27,27 @@
<div class="release-notes-area">
<p>Updated</p>
<ul>
<li>alpinejs v3.13.10 -> v3.14.0</li>
<li>axios v1.6.8 -> v1.7.2</li>
<li>bootstrap-table v1.22.5 -> v1.22.6</li>
<li>bulma v1.0.0 -> v1.0.1</li>
<li>bxslider v4.2.15 -> v4.2.17</li>
<li>dexie v4.0.4 -> v4.0.7</li>
<li>hls.js v1.5.8 -> v1.5.9</li>
<li>instantsearch.css v8.1.0 -> v8.2.0</li>
<li>instantsearch.js v4.68.0 -> v4.70.0</li>
<li>libphonenumber-js v1.10.62 -> v1.11.2</li>
<li>mdb-ui-kit v7.2.0 -> v7.3.0</li>
<li>noUiSlider v15.7.1 -> v15.7.2</li>
<li>p5.js v1.9.3 -> v1.9.4</li>
<li>react-intl v6.6.6 -> v6.6.8</li>
<li>react-router v6.23.0 -> v6.23.1</li>
<li>search-insights v2.13.0 -> v2.14.0</li>
<li>simplebar v6.2.5 -> v6.2.6</li>
<li>swagger-ui v5.17.3 -> v5.17.14</li>
<li>tinymce v7.0.1 -> v7.1.1</li>
<li>video.js v8.13.0 -> v8.14.0</li>
<li>vue v3.4.26 -> v3.4.27</li>
<li>search-insights v2.8.1 -> v2.8.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1528">#1528</a>)</li>
<li>react-intl v6.4.4 -> v6.4.7 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1529">#1529</a>)</li>
<li>swagger-ui v5.4.2 -> v5.7.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1530">#1530</a>)</li>
<li>hls.js v1.4.10 -> v1.4.12 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1531">#1531</a>)</li>
<li>vue-i18n v9.2.2 -> v9.4.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1532">#1532</a>)</li>
<li>instantsearch.js v4.56.9 -> v4.57.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1533">#1533</a>)</li>
<li>algoliasearch v4.19.1 -> v4.20.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1534">#1534</a>)</li>
<li>twitter-bootstrap v5.3.1 -> v5.3.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1536">#1536</a>)</li>
<li>react-router v6.15.0 -> v6.16.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1537">#1537</a>)</li>
<li>tensorflow v4.10.0 -> v4.11.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1538">#1538</a>)</li>
<li>bootstrap-icons v1.10.5 -> v1.11.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1539">#1539</a>)</li>
<li>dayjs v1.11.9 -> v1.11.10 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1540">#1540</a>)</li>
<li>bootswatch v5.3.1 -> v5.3.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1541">#1541</a>)</li>
<li>lightgallery v2.7.1 -> v2.7.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1542">#1542</a>)</li>
<li>instantsearch.css v8.0.0 -> v8.1.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1543">#1543</a>)</li>
<li>Swiper v10.2.0 -> v10.3.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1544">#1544</a>)</li>
<li>vue-router v4.2.4 -> v4.2.5 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1545">#1545</a>)</li>
</ul>
<p>Fixed</p>
<ul>
<li>HTML filter trim spaces in character set detection (<a href="https://codeberg.org/nobody/LocalCDN/issues/1526">#1526</a>)</li>
</ul>
</div>
<div id="generator-section">
@ -86,310 +86,6 @@
</div>
<div id="history"><span id="history-indicator">+</span> Previous Versions</div>
<div id="history-release-notes">
<p class='release-date'>2023-05-06 (v2.6.67)</p>
<p>Updated</p>
<ul>
<li>alpinejs v3.13.8 -> v3.13.10</li>
<li>bootstrap-table v1.22.4 -> v1.22.5</li>
<li>dayjs v1.11.10 -> v1.11.11</li>
<li>feather-icons v4.29.1 -> v4.29.2</li>
<li>instantsearch.js v4.66.1 -> v4.68.0</li>
<li>jqueryui v1.13.2 -> v1.13.3</li>
<li>libphonenumber-js v1.10.60 -> v1.10.62</li>
<li>p5.js v1.9.2 -> v1.9.3</li>
<li>react v18.2.0 -> v18.3.1</li>
<li>react-dom v18.2.0 -> v18.3.1</li>
<li>react-intl v6.6.5 -> v6.6.6</li>
<li>react-router v6.22.3 -> v6.23.0</li>
<li>swagger-ui v5.15.1 -> v5.17.3</li>
<li>tensorflow v4.17.0 -> v4.19.0</li>
<li>video.js v8.11.8 -> v8.13.0</li>
<li>vue v3.4.21 -> v3.4.26</li>
<li>vue-i18n v9.12.0 -> v9.13.1</li>
<li>vue-router v4.3.0 -> v4.3.2</li>
</ul>
<p>Added</p>
<ul>
<li>twitter-bootstrap v5.1.3 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1624">#1624</a>)</li>
</ul>
<p>Improved</p>
<ul>
<li>Wildcard support extended in all lists (<a href="https://codeberg.org/nobody/LocalCDN/issues/1622">#1622</a>)</li>
<li>Extend statistics over the whole time range (<a href="https://codeberg.org/nobody/LocalCDN/issues/1626">#1626</a>)</li>
</ul>
<p>Fixed</p>
<ul>
<li>Welcome Page autoclose if check "Allow this extension to run in Private Windows" (<a href="https://codeberg.org/nobody/LocalCDN/issues/1625">#1625</a>)</li>
</ul>
<p class='release-date'>2023-04-13 (v2.6.66)</p>
<p>Updated</p>
<ul>
<li>tinymce v6.8.3 -> v7.0.1 (<a href="https://codeberg.org/nobody/LocalCDN/commit/fbd89e2d82c04df4591b7c0a67c8260251326574">fbd89e2d82</a>)</li>
<li>bulma v0.9.4 -> v1.0.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/225905ca68112ff1fc8a81c89a631480d062d42d">225905ca68</a>)</li>
<li>vanilla-lazyload v17.8.8 -> v19.1.3 (<a href="https://codeberg.org/nobody/LocalCDN/commit/5b24cdc41228ab6a478a572638e65b808aea4d7b">5b24cdc412</a>)</li>
<li>materialicons v141 -> v142 (<a href="https://codeberg.org/nobody/LocalCDN/commit/4e841ab63717633465f73d7afc880b93c5bbff57">4e841ab637</a>)</li>
<li>react-intl v6.6.2 -> v6.6.5 (<a href="https://codeberg.org/nobody/LocalCDN/commit/7aeb64677349de976244fc041d295219abd30a32">7aeb646773</a>)</li>
<li>font-awesome v6.5.1 -> v6.5.2 (<a href="https://codeberg.org/nobody/LocalCDN/commit/6b684648a94add0c3cd9aab66886bd38ec9cc312">6b684648a9</a>)</li>
<li>alpinejs v3.13.7 -> v3.13.8 (<a href="https://codeberg.org/nobody/LocalCDN/commit/8fa3d016a16c87d93da3ab10583c31b979354b87">8fa3d016a1</a>)</li>
<li>swagger-ui v5.12.0 -> v5.15.1 (<a href="https://codeberg.org/nobody/LocalCDN/commit/3d658a279456a89e325b93ca15eac9b19d1fbc37">3d658a2794</a>)</li>
<li>p5.js v1.9.1 -> v1.9.2 (<a href="https://codeberg.org/nobody/LocalCDN/commit/b5fc4e089e33e7438ddf2bbd26253400057271d2">b5fc4e089e</a>)</li>
<li>hls.js v1.5.7 -> v1.5.8 (<a href="https://codeberg.org/nobody/LocalCDN/commit/d5e06b9b10767b185162c90ab3300b4a485fc74a">d5e06b9b10</a>)</li>
<li>bootstrap-table v1.22.3 -> v1.22.4 (<a href="https://codeberg.org/nobody/LocalCDN/commit/870b08ba367975f88898ffc77983ab2e6785d6bc">870b08ba36</a>)</li>
<li>dexie v3.2.6 -> v4.0.4 (<a href="https://codeberg.org/nobody/LocalCDN/commit/34cb76848d2a5e924863811b514f73fbd97a70c4">34cb76848d</a>)</li>
<li>vue-i18n v9.10.2 -> v9.12.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/8cddef7544b81dd6120d8720eeccafbe693fe95c">8cddef7544</a>)</li>
<li>webrtc-adapter v8.2.3 -> v9.0.1 (<a href="https://codeberg.org/nobody/LocalCDN/commit/e2bd8ce3fac43d93a996adb7bd67f417e0e48792">e2bd8ce3fa</a>)</li>
<li>instantsearch.js v4.66.0 -> v4.66.1 (<a href="https://codeberg.org/nobody/LocalCDN/commit/ab082579dcec2ea633ccfc335177919dc7933abb">ab082579dc</a>)</li>
<li>libphonenumber-js v1.10.58 -> v1.10.60 (<a href="https://codeberg.org/nobody/LocalCDN/commit/3dcc7025e37ce011300bd1c26b0459c41d5b038f">3dcc7025e3</a>)</li>
<li>algoliasearch v4.22.1 -> v4.23.3 (<a href="https://codeberg.org/nobody/LocalCDN/commit/ace529316c88ba48d0ea5b3c9f00d44518c6f56d">ace529316c</a>)</li>
</ul>
<p>Improved</p>
<ul>
<li>highlight.js v7.x, v8.x, v9.x, v10.x -> v11.x (<a href="https://codeberg.org/nobody/LocalCDN/commit/4d38d04e17bbf2f44a1c986b790bfe4b1bdade20">4d38d04e17</a>)</li>
</ul>
<p>Removed</p>
<ul>
<li>FitText.js (<a href="https://codeberg.org/nobody/LocalCDN/commit/cc9dacbde6c1221eba09806b401a3313aba5bd7d">cc9dacbde6</a>)</li>
<li>angular-ui-select (<a href="https://codeberg.org/nobody/LocalCDN/commit/4e8cd7127f6704881ce7943a1690a10b69693c7c">4e8cd7127f</a>)</li>
<li>angular-ui-utils (<a href="https://codeberg.org/nobody/LocalCDN/commit/71f358392c6183a281fc7dc129cecabb914c8e0a">71f358392c</a>)</li>
<li>angular-stripe-checkout (<a href="https://codeberg.org/nobody/LocalCDN/commit/1211a9c43a39326152669d83ec36d819cc21fb50">1211a9c43a</a>)</li>
<li>d3-legend (<a href="https://codeberg.org/nobody/LocalCDN/commit/fb5a3f779b86b493dd71f0ba6899f2b9f17ac4f3">fb5a3f779b</a>)</li>
<li>drawer (<a href="https://codeberg.org/nobody/LocalCDN/commit/5df53e2ea2266130a76931aa30e46d73e22c6f5b">5df53e2ea2</a>)</li>
</ul>
<p class='release-date'>2023-03-17 (v2.6.65)</p>
<p>Updated</p>
<ul>
<li>d3 v7.8.5 -> v7.9.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/9096750ba29d9d103e1cdced53b394d718099d55">9096750ba2</a>)</li>
<li>axios v1.6.7 -> v1.6.8 (<a href="https://codeberg.org/nobody/LocalCDN/commit/76a887af6175959e15c2b3582f813e29c07198fd">76a887af61</a>)</li>
<li>socket.io v4.7.4 -> v4.7.5 (<a href="https://codeberg.org/nobody/LocalCDN/commit/1be054976b61d2c0ff25a296b4179746b9b43f33">1be054976b</a>)</li>
<li>react-router v6.22.2 -> v6.22.3 (<a href="https://codeberg.org/nobody/LocalCDN/commit/cf2cae09e4cca7a30be8295a51405a60fc0806e8">cf2cae09e4</a>)</li>
<li>video.js v8.11.5 -> v8.11.8 (<a href="https://codeberg.org/nobody/LocalCDN/commit/b98d1fd75368e2eca39f6674654c271594284f64">b98d1fd753</a>)</li>
<li>alpinejs v3.13.5 -> v3.13.7 (<a href="https://codeberg.org/nobody/LocalCDN/commit/5efa34e9327cc27c1b867fde651b80e44d3f66e6">5efa34e932</a>)</li>
<li>swagger-ui v5.11.8 -> v5.12.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/773beb1697b68d4a23c84ce84cc91d2e0c983f47">773beb1697</a>)</li>
<li>mdb-ui-kit v7.1.0 -> v7.2.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/e3ba1c8c32acb03f3c585e53ffbc0f154c3ef8db">e3ba1c8c32</a>)</li>
<li>p5.js v1.9.0 -> v1.9.1 (<a href="https://codeberg.org/nobody/LocalCDN/commit/9fd72962886333d710635f2af0fbbfb7ccee4ffd">9fd7296288</a>)</li>
<li>vue-i18n v9.9.1 -> v9.10.2 (<a href="https://codeberg.org/nobody/LocalCDN/commit/008db469fe79f9324b17c82f418c9e48614783bf">008db469fe</a>)</li>
<li>libphonenumber-js v1.10.57 -> v1.10.58 (<a href="https://codeberg.org/nobody/LocalCDN/commit/74dea23e1d8791f58b3c32da1835412afe03e39e">74dea23e1d</a>)</li>
</ul>
<p>Improved</p>
<ul>
<li>Support wildcard TLD in all lists (<a href="https://codeberg.org/nobody/LocalCDN/issues/1622">#1622</a>)</li>
<li>Fixed incorrect description in the settings (<a href="https://codeberg.org/nobody/LocalCDN/issues/1622">#1622</a>)</li>
</ul>
<p>Fixed</p>
<ul>
<li>docsify themes (<a href="https://codeberg.org/nobody/LocalCDN/issues/1623">#1623</a>)</li>
</ul>
<p class='release-date'>2023-02-29 (v2.6.64)</p>
<p>Updated</p>
<ul>
<li>vue v3.4.15 -> v3.4.21 (<a href="https://codeberg.org/nobody/LocalCDN/commit/e277722b22601b954d30033b187a53f066972962">e277722b22</a>)</li>
<li>tinymce v6.8.2 -> v6.8.3 (<a href="https://codeberg.org/nobody/LocalCDN/commit/c637d1b56e3cfe485cb035952960af80384b3b9e">c637d1b56e</a>)</li>
<li>twitter-bootstrap v5.3.2 -> v5.3.3 (<a href="https://codeberg.org/nobody/LocalCDN/commit/47afb3e6144fea91d8edd603bbae36d7e4849d6a">47afb3e614</a>)</li>
<li>react-router v6.22.0 -> v6.22.2 (<a href="https://codeberg.org/nobody/LocalCDN/commit/f99b07a6fd124913874778aaadb3ff246da7148f">f99b07a6fd</a>)</li>
<li>video.js v8.11.1 -> v8.11.5 (<a href="https://codeberg.org/nobody/LocalCDN/commit/093f9253e809f423dbb3b0e8eb9d9224d2b5c3e1">093f9253e8</a>)</li>
<li>backbone.js v1.5.0 -> v1.6.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/e38e56a473de4fac28a1338e2ba6fce7774ee5c7">e38e56a473</a>)</li>
<li>swagger-ui v5.11.2 -> v5.11.8 (<a href="https://codeberg.org/nobody/LocalCDN/commit/e2ff54ce1812eabfd2c28f2083d9a033cd28b4e1">e2ff54ce18</a>)</li>
<li>vue-router v4.2.5 -> v4.3.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/06c9f62631043ffd767fbc857f81ace0da80e4c1">06c9f62631</a>)</li>
<li>hls.js v1.5.3 -> v1.5.7 (<a href="https://codeberg.org/nobody/LocalCDN/commit/35b8e794034f303b3239a39201d89e6c44c9d7ac">35b8e79403</a>)</li>
<li>bootstrap-table v1.22.2 -> v1.22.3 (<a href="https://codeberg.org/nobody/LocalCDN/commit/353dde8cff797ef1a453661f894b33dd0ccea670">353dde8cff</a>)</li>
<li>dexie v3.2.4 -> v3.2.6 (<a href="https://codeberg.org/nobody/LocalCDN/commit/c4cb8b2b6b4938c40eccc6ad6118524b568b6acd">c4cb8b2b6b</a>)</li>
<li>instantsearch.js v4.64.2 -> v4.66.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/21dbfe807e137ed203ce2f5666e87d7699351f83">21dbfe807e</a>)</li>
<li>libphonenumber-js v1.10.55 -> v1.10.57 (<a href="https://codeberg.org/nobody/LocalCDN/commit/6a76aa6cf1d369949537b9e61bdf6cf798c50121">6a76aa6cf1</a>)</li>
<li>vanilla-lazyload v17.8.5 -> v17.8.8 (<a href="https://codeberg.org/nobody/LocalCDN/commit/eec43134f84bf8f40ac443f68a9202573a9bc247">eec43134f8</a>)</li>
<li>bootswatch v5.3.2 -> v5.3.3 (<a href="https://codeberg.org/nobody/LocalCDN/commit/856a849ebb17b64af6b0a4e173610ae4920e30cc">856a849ebb</a>)</li>
</ul>
<p class='release-date'>2023-02-04 (v2.6.63)</p>
<p>Updated</p>
<ul>
<li>materialicons v140 -> v141 (<a href="https://codeberg.org/nobody/LocalCDN/commit/6123be7478548b985cad5f28e1c25a1f191238be">6123be7478</a>)</li>
<li>gsap v3.12.4 -> v3.12.5 (<a href="https://codeberg.org/nobody/LocalCDN/commit/062a90bbdb8d0b8f25473fad4fe9305b89c7616f">062a90bbdb</a>)</li>
<li>react-intl v6.5.5 -> v6.6.2 (<a href="https://codeberg.org/nobody/LocalCDN/commit/057c9465ebc3a3db6414105c54e934bec999410f">057c9465eb</a>)</li>
<li>angular-translate v2.19.0 -> v2.19.1 (<a href="https://codeberg.org/nobody/LocalCDN/commit/8a58c9ca79e37be8f2128ce4740d8a55f795faeb">8a58c9ca79</a>)</li>
<li>angular-translate-loader-partial v2.19.0 -> v2.19.1 (<a href="https://codeberg.org/nobody/LocalCDN/commit/e906cdcd591da91bbd580536307378b13577e44a">e906cdcd59</a>)</li>
<li>vue v3.4.9 -> v3.4.15 (<a href="https://codeberg.org/nobody/LocalCDN/commit/e420da12433938427fb75655c1adef8ce63ed7cf">e420da1243</a>)</li>
<li>axios v1.6.5 -> v1.6.7 (<a href="https://codeberg.org/nobody/LocalCDN/commit/afb82f6ebc49163b14b92839e88673cdea45da8c">afb82f6ebc</a>)</li>
<li>react-router v6.21.1 -> v6.22.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/f2be418a43fa42330759d80fbac67e78a4705428">f2be418a43</a>)</li>
<li>video.js v8.9.0 -> v8.11.1 (<a href="https://codeberg.org/nobody/LocalCDN/commit/bab22c90f292b7e4edaf6b3986109b7a48534f65">bab22c90f2</a>)</li>
<li>alpinejs v3.13.3 -> v3.13.5 (<a href="https://codeberg.org/nobody/LocalCDN/commit/a73b3dbd14735e20a5392226a82b8100f99d6736">a73b3dbd14</a>)</li>
<li>swagger-ui v5.11.0 -> v5.11.2 (<a href="https://codeberg.org/nobody/LocalCDN/commit/c8cc450ce88bef045a1b2493b5086d9927e9fd31">c8cc450ce8</a>)</li>
<li>tensorflow v4.16.0 -> v4.17.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/ed51d96de8832f7ec80db1583d277c28c91b9716">ed51d96de8</a>)</li>
<li>hls.js v1.5.1 -> v1.5.3 (<a href="https://codeberg.org/nobody/LocalCDN/commit/1cd7e033fe402ed9d5b8be4cabc0d099ac4793c5">1cd7e033fe</a>)</li>
<li>vue-i18n v9.9.0 -> v9.9.1 (<a href="https://codeberg.org/nobody/LocalCDN/commit/986ce46187308b3db73f428ad82fe4dca366d43a">986ce46187</a>)</li>
<li>instantsearch.js v4.63.0 -> v4.64.2 (<a href="https://codeberg.org/nobody/LocalCDN/commit/a059ea04bd0d51b2cd21109af115033d391ea988">a059ea04bd</a>)</li>
<li>libphonenumber-js v1.10.53 -> v1.10.55 (<a href="https://codeberg.org/nobody/LocalCDN/commit/88be389f55e0f5f0f7f42d73bba75118d3e0606f">88be389f55</a>)</li>
<li>corejs-typeahead v1.3.3 -> v1.3.4 (<a href="https://codeberg.org/nobody/LocalCDN/commit/1ee357539007d3f7d6ee1801296570ab270b8b2f">1ee3575390</a>)</li>
</ul>
<p>Added</p>
<ul>
<li>supabase-js (<a href="https://codeberg.org/nobody/LocalCDN/issues/1619">#1619</a>)</li>
</ul>
<p>Remove</p>
<ul>
<li>SWFObject (<a href="https://codeberg.org/nobody/LocalCDN/commit/2f9bdcd6c09446a9f9ac6c56d0337da804ca6ffc">2f9bdcd6c0</a>)</li>
</ul>
<p>Mapping</p>
<ul>
<li>docsify -> cdn.jsdelivr.net (<a href="https://codeberg.org/nobody/LocalCDN/issues/1616">#1616</a>)</li>
<li>Font Awesome v4.7.0 woff -> woff2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1617">#1617</a>)</li>
</ul>
<p class='release-date'>2023-01-13 (v2.6.62)</p>
<p>Updated</p>
<ul>
<li>vue v3.3.13 -> v3.4.9 (<a href="https://codeberg.org/nobody/LocalCDN/commit/881b142f279f98bf3fb44a6e1728e8964bfd5bd6">881b142f27</a>)</li>
<li>axios v1.6.3 -> v1.6.5 (<a href="https://codeberg.org/nobody/LocalCDN/commit/de1450dec75d39aa0eacbd894c6cea9ff8ebb81b">de1450dec7</a>)</li>
<li>socket.io v4.7.2 -> v4.7.4 (<a href="https://codeberg.org/nobody/LocalCDN/commit/8d18fd35bac8db4c88b66307397865f0d754977e">8d18fd35ba</a>)</li>
<li>moment.js v2.30.0 -> v2.30.1 (<a href="https://codeberg.org/nobody/LocalCDN/commit/bad9334a5b6fde879053d54cd3efe6804abbcb6f">bad9334a5b</a>)</li>
<li>video.js v8.8.0 -> v8.9.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/c6583298f6a7475c89ff833b108cbc7b40911628">c6583298f6</a>)</li>
<li>swagger-ui v5.10.5 -> v5.11.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/945e841986ace53c6d00b5275e2a1b34dfe3d434">945e841986</a>)</li>
<li>tensorflow v4.15.0 -> v4.16.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/cb9783a10962dce6a331fdb307b895c3907a87fb">cb9783a109</a>)</li>
<li>hls.js v1.4.14 -> v1.5.1 (<a href="https://codeberg.org/nobody/LocalCDN/commit/4f8892857313d3d5f8dc0cfe6e593b9f70eb3289">4f88928573</a>)</li>
<li>bootstrap-table v1.22.1 -> v1.22.2 (<a href="https://codeberg.org/nobody/LocalCDN/commit/8bd3e388362ee56a8ee3ef305437f7e3aeff4193">8bd3e38836</a>)</li>
<li>vue-i18n v9.8.0 -> v9.9.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/01c9d7780500b7d09982fea46f7e1d6562500d4d">01c9d77805</a>)</li>
<li>bootstrap-icons v1.11.2 -> v1.11.3 (<a href="https://codeberg.org/nobody/LocalCDN/commit/a8c01e1308dff2363b0d19591d4303de49d41d88">a8c01e1308</a>)</li>
<li>algoliasearch v4.22.0 -> v4.22.1 (<a href="https://codeberg.org/nobody/LocalCDN/commit/5678f07e273576d41063cb4dc3d373acbcd59de1">5678f07e27</a>)</li>
</ul>
<p class='release-date'>2023-12-29 (v2.6.61)</p>
<p>Updated</p>
<ul>
<li>vue v3.3.11 -> v3.3.13 (<a href="https://codeberg.org/nobody/LocalCDN/commit/3a346eeba8cfd524722d578b3c80db6f313f39bd">3a346eeba8</a>)</li>
<li>axios v1.6.2 -> v1.6.3 (<a href="https://codeberg.org/nobody/LocalCDN/commit/cbb8f629fc85924d01fe0ac63a51748c5b780e44">cbb8f629fc</a>)</li>
<li>redux v5.0.0 -> v5.0.1 (<a href="https://codeberg.org/nobody/LocalCDN/commit/d0712af389b3856e64c3d9088b267322262ac486">d0712af389</a>)</li>
<li>react-router v6.20.1 -> v6.21.1 (<a href="https://codeberg.org/nobody/LocalCDN/commit/65dce2b6ee65c10aaef4da5bb262f83d016dc818">65dce2b6ee</a>)</li>
<li>moment.js v2.29.4 -> v2.30.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/e66966d8eb9d87a51e1c00c3dcadddf9a5e486b0">e66966d8eb</a>)</li>
<li>video.js v8.7.0 -> v8.8.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/eebd7895bcade4a18cf938a7f89f2530709af239">eebd7895bc</a>)</li>
<li>swagger-ui v5.10.3 -> v5.10.5 (<a href="https://codeberg.org/nobody/LocalCDN/commit/920adb917a1e9e008fc724486fe28c6d2998aaa8">920adb917a</a>)</li>
<li>tensorflow v4.14.0 -> v4.15.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/a42c8b360ab6cea91da9b62ce3ce78ffd392213d">a42c8b360a</a>)</li>
<li>gsap v3.12.3 -> v3.12.4 (<a href="https://codeberg.org/nobody/LocalCDN/commit/f5fe905889e4dee81ea7ac14ed2b62b9b228a5f8">f5fe905889</a>)</li>
<li>hls.js v1.4.13 -> v1.4.14 (<a href="https://codeberg.org/nobody/LocalCDN/commit/ba026ff85f839686d600984f7d93448ec1d22434">ba026ff85f</a>)</li>
<li>instantsearch.js v4.62.0 -> v4.63.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/ee0626a234185bfde6ce73349562e64725deb601">ee0626a234</a>)</li>
<li>libphonenumber-js v1.10.51 -> v1.10.53 (<a href="https://codeberg.org/nobody/LocalCDN/commit/1d5ec6cae0b566ea394b13a72f3a9a8bef6908d0">1d5ec6cae0</a>)</li>
<li>algoliasearch v4.21.0 -> v4.22.0 (<a href="https://codeberg.org/nobody/LocalCDN/commit/ce32d63913aeb5d66663034de7c3bb307a36b831">ce32d63913</a>)</li>
</ul>
<p>Improved</p>
<ul>
<li>Extend the Google Service check and also include subdomains (<a href="https://codeberg.org/nobody/LocalCDN/issues/1560">#1560</a>)</li>
</ul>
<p class='release-date'>2023-12-12 (v2.6.60)</p>
<p>Updated</p>
<ul>
<li>vue v3.3.8 -> v3.3.11 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1591">#1591</a>)</li>
<li>gsap v3.12.2 -> v3.12.3 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1592">#1592</a>)</li>
<li>font-awesome v6.4.2 -> v6.5.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1593">#1593</a>)</li>
<li>tinymce v6.7.3 -> v6.8.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1594">#1594</a>)</li>
<li>react-router v6.19.0 -> v6.20.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1595">#1595</a>)</li>
<li>animejs v3.2.1 -> v3.2.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1596">#1596</a>)</li>
<li>Swiper v11.0.4 -> v11.0.5 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1597">#1597</a>)</li>
<li>alpinejs v3.13.2 -> v3.13.3 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1598">#1598</a>)</li>
<li>swagger-ui v5.10.0 -> v5.10.3 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1599">#1599</a>)</li>
<li>p5.js v1.8.0 -> v1.9.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1600">#1600</a>)</li>
<li>tensorflow v4.13.0 -> v4.14.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1601">#1601</a>)</li>
<li>vue-i18n v9.7.0 -> v9.8.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1602">#1602</a>)</li>
<li>bootstrap-icons v1.11.1 -> v1.11.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1603">#1603</a>)</li>
<li>libphonenumber-js v1.10.49 -> v1.10.51 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1604">#1604</a>)</li>
<li>Chart.js v4.4.0 -> v4.4.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1605">#1605</a>)</li>
<li>video.js v8.6.1 -> v8.7.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1606">#1606</a>)</li>
<li>hls.js v1.4.12 -> v1.4.13 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1607">#1607</a>)</li>
<li>instantsearch.js v4.60.0 -> v4.62.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1608">#1608</a>)</li>
<li>mdb-ui-kit v7.1.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1609">#1609</a>)</li>
<li>redux v5.0.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1610">#1610</a>)</li>
<li>search-insights v2.11.0 -> v2.13.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1611">#1611</a>)</li>
<li>ngx-bootstrap v11.0.2 -> v12.0.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1612">#1612</a>)</li>
<li>algoliasearch v4.20.0 -> v4.21.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1613">#1613</a>)</li>
</ul>
<p class='release-date'>2023-11-19 (v2.6.59)</p>
<p>Updated</p>
<ul>
<li>react-intl v6.5.1 -> v6.5.5 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1579">#1579</a>)</li>
<li>search-insights v2.9.0 -> v2.11.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1580">#1580</a>)</li>
<li>vue v3.3.7 -> v3.3.8 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1581">#1581</a>)</li>
<li>axios v1.6.0 -> v1.6.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1582">#1582</a>)</li>
<li>react-router v6.17.0 -> v6.19.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1583">#1583</a>)</li>
<li>Swiper v11.0.3 -> v11.0.4 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1584">#1584</a>)</li>
<li>swagger-ui v5.9.1 -> v5.10.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1585">#1585</a>)</li>
<li>tensorflow v4.12.0 -> v4.13.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1586">#1586</a>)</li>
<li>tinymce v6.7.2 -> v6.7.3 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1587">#1587</a>)</li>
<li>vue-i18n v9.6.1 -> v9.7.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1588">#1588</a>)</li>
<li>instantsearch.js v4.59.0 -> v4.60.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1589">#1589</a>)</li>
</ul>
<p class='release-date'>2023-10-28 (v2.6.58)</p>
<p>Updated</p>
<ul>
<li>tinymce v6.7.0 -> v6.7.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1562">#1562</a>)</li>
<li>react-intl v6.4.7 -> v6.5.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1563">#1563</a>)</li>
<li>search-insights v2.8.3 -> v2.9.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1564">#1564</a>)</li>
<li>vanilla-lazyload v17.8.4 -> v17.8.5 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1565">#1565</a>)</li>
<li>alpinejs v3.13.1 -> v3.13.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1566">#1566</a>)</li>
<li>axios v1.5.1 -> v1.6.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1567">#1567</a>)</li>
<li>react-router v6.16.0 -> v6.17.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1568">#1568</a>)</li>
<li>Swiper v10.3.1 -> v11.0.3 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1569">#1569</a>)</li>
<li>video.js v8.6.0 -> v8.6.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1570">#1570</a>)</li>
<li>vue v3.3.4 -> v3.3.7 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1571">#1571</a>)</li>
<li>swagger-ui v5.9.0 -> v5.9.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1572">#1572</a>)</li>
<li>p5.js v1.7.0 -> v1.8.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1573">#1573</a>)</li>
<li>tensorflow v4.11.0 -> v4.12.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1574">#1574</a>)</li>
<li>vue-i18n v9.5.0 -> v9.6.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1575">#1575</a>)</li>
<li>instantsearch.js v4.58.0 -> v4.59.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1576">#1576</a>)</li>
<li>libphonenumber-js v1.10.47 -> v1.10.49 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1577">#1577</a>)</li>
</ul>
<p>Improved</p>
<ul>
<li>Allow Google fonts for Google services by default and permanently (<a href="https://codeberg.org/nobody/LocalCDN/issues/1560">#1560</a>)</li>
<li>Firefox Sync (<a href="https://codeberg.org/nobody/LocalCDN/issues/1510">#1510</a>)</li>
</ul>
<p>Mapping</p>
<ul>
<li>bootswatch -> cdnjs.cloudflare.com (<a href="https://codeberg.org/nobody/LocalCDN/issues/1561">#1561</a>)</li>
<li>datatables -> cdnjs.cloudflare.com (<a href="https://codeberg.org/nobody/LocalCDN/issues/1561">#1561</a>)</li>
<li>bootstrap-select -> cdn.jsdelivr.net (<a href="https://codeberg.org/nobody/LocalCDN/issues/1561">#1561</a>)</li>
<li>js-cookie -> cdn.jsdelivr.net (<a href="https://codeberg.org/nobody/LocalCDN/issues/1561">#1561</a>)</li>
</ul>
<p class='release-date'>2023-10-12 (v2.6.57)</p>
<p>Updated</p>
<ul>
<li>highlight.js v11.8.0 -> v11.9.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1546">#1546</a>)</li>
<li>search-insights v2.8.2 -> v2.8.3 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1547">#1547</a>)</li>
<li>axios v1.5.0 -> v1.5.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1548">#1548</a>)</li>
<li>Swiper v10.3.0 -> v10.3.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1549">#1549</a>)</li>
<li>video.js v8.5.3 -> v8.6.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1550">#1550</a>)</li>
<li>alpinejs v3.13.0 -> v3.13.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1551">#1551</a>)</li>
<li>swagger-ui v5.7.2 -> v5.9.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1552">#1552</a>)</li>
<li>mdb-ui-kit v6.4.1 -> v6.4.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1553">#1553</a>)</li>
<li>react-redux v8.1.2 -> v8.1.3 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1554">#1554</a>)</li>
<li>markdown-it v13.0.1 -> v13.0.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1555">#1555</a>)</li>
<li>jquery-validate v1.19.5 -> v1.20.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1556">#1556</a>)</li>
<li>vue-i18n v9.4.1 -> v9.5.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1557">#1557</a>)</li>
<li>instantsearch.js v4.57.0 -> v4.58.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1558">#1558</a>)</li>
<li>libphonenumber-js v1.10.44 -> v1.10.47 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1559">#1559</a>)</li>
</ul>
<p>Improved</p>
<ul>
<li>Update manifest.json to prepare Firefox for Android support and new signing method by Mozilla (<a href="https://codeberg.org/nobody/LocalCDN/issues/136">#136</a>)</li>
</ul>
<p class='release-date'>2023-09-23 (v2.6.56)</p>
<p>Updated</p>
<ul>
<li>search-insights v2.8.1 -> v2.8.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1528">#1528</a>)</li>
<li>react-intl v6.4.4 -> v6.4.7 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1529">#1529</a>)</li>
<li>swagger-ui v5.4.2 -> v5.7.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1530">#1530</a>)</li>
<li>hls.js v1.4.10 -> v1.4.12 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1531">#1531</a>)</li>
<li>vue-i18n v9.2.2 -> v9.4.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1532">#1532</a>)</li>
<li>instantsearch.js v4.56.9 -> v4.57.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1533">#1533</a>)</li>
<li>algoliasearch v4.19.1 -> v4.20.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1534">#1534</a>)</li>
<li>twitter-bootstrap v5.3.1 -> v5.3.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1536">#1536</a>)</li>
<li>react-router v6.15.0 -> v6.16.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1537">#1537</a>)</li>
<li>tensorflow v4.10.0 -> v4.11.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1538">#1538</a>)</li>
<li>bootstrap-icons v1.10.5 -> v1.11.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1539">#1539</a>)</li>
<li>dayjs v1.11.9 -> v1.11.10 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1540">#1540</a>)</li>
<li>bootswatch v5.3.1 -> v5.3.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1541">#1541</a>)</li>
<li>lightgallery v2.7.1 -> v2.7.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1542">#1542</a>)</li>
<li>instantsearch.css v8.0.0 -> v8.1.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1543">#1543</a>)</li>
<li>Swiper v10.2.0 -> v10.3.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1544">#1544</a>)</li>
<li>vue-router v4.2.4 -> v4.2.5 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1545">#1545</a>)</li>
</ul>
<p>Fixed</p>
<ul>
<li>HTML filter trim spaces in character set detection (<a href="https://codeberg.org/nobody/LocalCDN/issues/1526">#1526</a>)</li>
</ul>
<p class='release-date'>2023-09-03 (v2.6.55)</p>
<p>Updated</p>
<ul>

View File

@ -20,7 +20,7 @@
* Updates
*/
let updates = {};
var updates = {};
/**

View File

@ -9,6 +9,7 @@
<link rel="stylesheet" type="text/css" href="../style.css">
<link rel="stylesheet" type="text/css" href="../base.css">
<link rel="stylesheet" type="text/css" href="welcome.css">
<script src="../../core/constants.js"></script>
<script src="welcome.js"></script>
</head>
<body>
@ -17,7 +18,7 @@
<div class="notice">
<h2>What is LocalCDN?</h2>
<p>LocalCDN is a web browser extension that emulates Content Delivery Networks to improve your online privacy. It intercepts traffic, finds supported resources locally, and injects them into the environment. All of this happens automatically, so no prior configuration is required. Feel free to use one of our <a href="https://www.localcdn.org/test/" rel="nofollow noopener noreferrer">testing utilities</a> to find out if you are properly protected. For a good start there is a short <a href="https://www.localcdn.org/tutorial" rel="nofollow noopener noreferrer">tutorial</a> and our <a href="https://codeberg.org/nobody/LocalCDN/wiki" rel="nofollow noopener noreferrer">Wiki pages</a>. LocalCDN supports more than 100 Libraries and 26 CDNs!</p>
<p id="chromium-banner" hidden>Non-Firefox browsers do not support all features of LocalCDN. <a class="no-icon" href="../help/help.html#non-firefox">Read more</a></p>
<p id="chromium-banner">Non-Firefox browsers do not support all features of LocalCDN. <a class="no-icon" href="../help/help.html#non-firefox">Read more</a></p>
<a id="donate" class="no-icon" href="../donate/donate.html">If you like LocalCDN, I would be happy about a small donation.</a>
</div>
<div class="notice">

View File

@ -19,7 +19,7 @@
* Welcome
*/
let welcome = {};
var welcome = {};
/**
@ -27,7 +27,7 @@ let welcome = {};
*/
welcome._onDocumentLoaded = function () {
if (!window.location.href.startsWith('moz-extension')) {
if (!BrowserType.FIREFOX) {
document.getElementById('chromium-banner').style.display = 'block';
}
document.getElementById('open-settings').addEventListener('mouseup', function () { chrome.runtime.openOptionsPage(); });

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,10 @@
/*!
* FitText.js 1.2
*
* Copyright 2011, Dave Rupert http://daverupert.com
* Released under the WTFPL license
* http://sam.zoy.org/wtfpl/
*
* Date: Thu May 05 14:23:00 2011 -0600
*/
(function(a){a.fn.fitText=function(d,b){var e=d||1,c=a.extend({minFontSize:Number.NEGATIVE_INFINITY,maxFontSize:Number.POSITIVE_INFINITY},b);return this.each(function(){var f=a(this);var g=function(){f.css("font-size",Math.max(Math.min(f.width()/(e*10),parseFloat(c.maxFontSize)),parseFloat(c.minFontSize)))};g();a(window).on("resize.fittext orientationchange.fittext",g)})}})(jQuery);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More