Merge v2.6.45 into v3.0.0
This commit is contained in:
commit
bbafce3fa4
|
@ -138,7 +138,7 @@ https://cdnjs.cloudflare.com/ajax/libs/ajax-bootstrap-select/1.4.5/js/ajax-boots
|
|||
https://cdnjs.cloudflare.com/ajax/libs/algoliasearch/3.35.1/algoliasearch.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/algoliasearch/4.14.3/algoliasearch.umd.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/alpinejs/2.8.2/alpine.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/alpinejs/3.10.5/cdn.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/alpinejs/3.11.1/cdn.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/angucomplete-alt/3.0.0/angucomplete-alt.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/angular-bootstrap-colorpicker/3.0.32/css/colorpicker.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/angular-bootstrap-colorpicker/3.0.32/js/bootstrap-colorpicker-module.min.js
|
||||
|
@ -184,7 +184,7 @@ https://cdnjs.cloudflare.com/ajax/libs/asciinema-player/2.6.1/asciinema-player.m
|
|||
https://cdnjs.cloudflare.com/ajax/libs/asciinema-player/2.6.1/asciinema-player.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/autocomplete.js/0.38.1/autocomplete.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/axios/0.27.2/axios.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/axios/1.2.2/axios.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/axios/1.2.3/axios.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.10/backbone-min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.4.1/backbone-min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.css
|
||||
|
@ -314,7 +314,7 @@ https://cdnjs.cloudflare.com/ajax/libs/bxslider/4.2.15/jquery.bxslider.min.js
|
|||
https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.bundle.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.9.1/chart.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.1.1/chart.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.2.0/chart.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/chosen/1.8.7/chosen.jquery.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/clappr/0.4.7/clappr.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js
|
||||
|
@ -326,7 +326,7 @@ https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.min.js
|
|||
https://cdnjs.cloudflare.com/ajax/libs/d3/4.13.0/d3.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/d3/5.16.0/d3.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/d3/6.7.0/d3.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/d3/7.8.0/d3.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/d3/7.8.2/d3.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/d3-legend/2.25.6/d3-legend.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.7/dayjs.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/dexie/3.2.2/dexie.min.js
|
||||
|
@ -1159,10 +1159,10 @@ https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.5/styles/zenburn.min.cs
|
|||
https://cdnjs.cloudflare.com/ajax/libs/history/4.10.1/history.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/history/5.3.0/history.production.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/hls.js/0.14.17/hls.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.2.9/hls.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.3.1/hls.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/hogan.js/3.0.2/hogan.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/instantsearch.js/3.7.0/instantsearch.production.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/instantsearch.js/4.49.3/instantsearch.production.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/instantsearch.js/4.49.4/instantsearch.production.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/iScroll/5.2.0/iscroll.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/izimodal/1.6.1/js/iziModal.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/jasny-bootstrap/3.1.3/css/jasny-bootstrap.min.css
|
||||
|
@ -1264,7 +1264,7 @@ https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.3/leaflet.css
|
|||
https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.3/leaflet.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/Leaflet.EasyButton/2.4.0/easy-button.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.5.3/leaflet.markercluster.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.10.15/libphonenumber-js.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.10.18/libphonenumber-js.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/libsodium-wrappers/0.5.4/sodium.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.3/js/lightbox.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/lightcase/2.5.0/css/lightcase.min.css
|
||||
|
@ -1273,9 +1273,9 @@ https://cdnjs.cloudflare.com/ajax/libs/lightcase/2.5.0/js/lightcase.min.js
|
|||
https://cdnjs.cloudflare.com/ajax/libs/lightgallery/1.10.0/css/lightgallery.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/lightgallery/1.10.0/fonts/lg.woff
|
||||
https://cdnjs.cloudflare.com/ajax/libs/lightgallery/1.10.0/js/lightgallery.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/lightgallery/2.7.0/css/lightgallery.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/lightgallery/2.7.0/fonts/lg.woff
|
||||
https://cdnjs.cloudflare.com/ajax/libs/lightgallery/2.7.0/lightgallery.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/lightgallery/2.7.1/css/lightgallery.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/lightgallery/2.7.1/fonts/lg.woff
|
||||
https://cdnjs.cloudflare.com/ajax/libs/lightgallery/2.7.1/lightgallery.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/lozad.js/1.16.0/lozad.min.js
|
||||
|
@ -1491,7 +1491,7 @@ https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.2.0/umd/react-dom.production
|
|||
https://cdnjs.cloudflare.com/ajax/libs/react-redux/7.2.8/react-redux.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/react-redux/8.0.5/react-redux.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/react-router/5.3.3/react-router.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/react-router/6.6.1/react-router.production.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/react-router/6.7.0/react-router.production.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/redux/4.2.0/redux.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/rickshaw/1.7.1/rickshaw.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/rickshaw/1.7.1/rickshaw.min.js
|
||||
|
@ -1692,6 +1692,8 @@ https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js
|
|||
https://cdnjs.cloudflare.com/ajax/libs/showdown/2.1.0/showdown.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/simplebar/5.3.9/simplebar.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/simplebar/5.3.9/simplebar.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/simplebar/6.2.0/simplebar.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/simplebar/6.2.0/simplebar.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/simplemde/1.11.2/simplemde.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/simplemde/1.11.2/simplemde.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css
|
||||
|
@ -1702,7 +1704,7 @@ https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.js
|
|||
https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick-theme.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/slick-lightbox/0.2.12/slick-lightbox.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/slick-lightbox/0.2.12/slick-lightbox.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/slider-pro/1.6.1/js/jquery.sliderPro.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/slider-pro/1.6.2/js/jquery.sliderPro.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/snowplow/2.18.2/sp.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.4.0/socket.io.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/socket.io/3.1.3/socket.io.min.js
|
||||
|
@ -1785,6 +1787,8 @@ https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/fonts/glyphicons-
|
|||
https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/css/bootstrap.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/js/bootstrap.bundle.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/css/bootstrap.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/js/bootstrap.bundle.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.1/css/bootstrap.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.1/js/bootstrap.bundle.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.2.3/css/bootstrap.min.css
|
||||
|
@ -1820,8 +1824,8 @@ https://cdnjs.cloudflare.com/ajax/libs/video.js/6.13.0/video-js.min.css
|
|||
https://cdnjs.cloudflare.com/ajax/libs/video.js/6.13.0/video.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/video.js/7.21.1/video-js.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/video.js/7.21.1/video.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/video.js/8.0.2/video-js.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/video.js/8.0.2/video.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/video.js/8.0.3/video-js.min.css
|
||||
https://cdnjs.cloudflare.com/ajax/libs/video.js/8.0.3/video.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/vue/3.2.45/vue.global.prod.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/vue-i18n/8.27.2/vue-i18n.min.js
|
||||
https://cdnjs.cloudflare.com/ajax/libs/vue-i18n/9.2.2/vue-i18n.cjs.min.js
|
||||
|
@ -1848,6 +1852,7 @@ https://cdn.jsdelivr.net/g/algoliasearch@3(algoliasearchLite.min.js),algoliasear
|
|||
https://cdn.jsdelivr.net/npm/@algolia/autocomplete-js@1.5.4/dist/umd/index.production.min.js
|
||||
https://cdn.jsdelivr.net/npm/anchor-js@3.2.2/anchor.min.js
|
||||
https://cdn.jsdelivr.net/npm/anchor-js@4.3.1/anchor.min.js
|
||||
https://cdn.jsdelivr.net/npm/anchor-js@5.0.0/anchor.min.js
|
||||
https://cdn.jsdelivr.net/npm/angular-stripe-checkout@5.1.0/angular-stripe-checkout.min.js
|
||||
https://cdn.jsdelivr.net/npm/appboy-web-sdk@3.5.1/appboy.min.js
|
||||
https://cdn.jsdelivr.net/npm/docsify-themeable@0.9.0/dist/css/theme-defaults.css
|
||||
|
@ -1858,7 +1863,7 @@ https://cdn.jsdelivr.net/npm/instantsearch.css@7.4.5/themes/algolia-min.css
|
|||
https://cdn.jsdelivr.net/npm/instantsearch.css@8.0.0/themes/algolia-min.css
|
||||
https://cdn.jsdelivr.net/npm/in-view@0.6.1/dist/in-view.min.js
|
||||
https://cdn.jsdelivr.net/npm/leaflet.featuregroup.subgroup@1.0.2/dist/leaflet.featuregroup.subgroup.js
|
||||
https://cdn.jsdelivr.net/npm/ngx-bootstrap@10.2.0/datepicker/bs-datepicker.css
|
||||
https://cdn.jsdelivr.net/npm/ngx-bootstrap@10.2.1/datepicker/bs-datepicker.css
|
||||
https://cdn.jsdelivr.net/npm/ngx-bootstrap@6.2.0/datepicker/bs-datepicker.css
|
||||
https://cdn.jsdelivr.net/npm/object-assign@4.1.1/index.js
|
||||
https://cdn.jsdelivr.net/npm/p2p-media-loader-core@0.6.2/build/p2p-media-loader-core.min.js
|
||||
|
@ -1874,8 +1879,8 @@ https://cdn.jsdelivr.net/npm/swiper@6.8.4/swiper-bundle.min.css
|
|||
https://cdn.jsdelivr.net/npm/swiper@6.8.4/swiper-bundle.min.js
|
||||
https://cdn.jsdelivr.net/npm/swiper@7.4.1/swiper-bundle.min.css
|
||||
https://cdn.jsdelivr.net/npm/swiper@7.4.1/swiper-bundle.min.js
|
||||
https://cdn.jsdelivr.net/npm/swiper@8.4.5/swiper-bundle.min.css
|
||||
https://cdn.jsdelivr.net/npm/swiper@8.4.5/swiper-bundle.min.js
|
||||
https://cdn.jsdelivr.net/npm/swiper@8.4.6/swiper-bundle.min.css
|
||||
https://cdn.jsdelivr.net/npm/swiper@8.4.6/swiper-bundle.min.js
|
||||
https://cdn.jsdelivr.net/npm/urlize.js/urlize.js
|
||||
https://cdn.jsdelivr.net/npm/vanilla-lazyload@17.8.3/dist/lazyload.min.js
|
||||
https://cdn.jsdelivr.net/npm/videojs-seek-buttons@1.6.0/dist/videojs-seek-buttons.css
|
||||
|
@ -1884,8 +1889,8 @@ https://cdn.jsdelivr.net/npm/videojs-seek-buttons@2.2.1/dist/videojs-seek-button
|
|||
https://cdn.jsdelivr.net/npm/videojs-seek-buttons@2.2.1/dist/videojs-seek-buttons.min.js
|
||||
https://cdn.jsdelivr.net/npm/videojs-seek-buttons@3.0.1/dist/videojs-seek-buttons.css
|
||||
https://cdn.jsdelivr.net/npm/videojs-seek-buttons@3.0.1/dist/videojs-seek-buttons.min.js
|
||||
https://cdn.jsdelivr.net/npm/videojs-seek-buttons@4.0.1/dist/videojs-seek-buttons.css
|
||||
https://cdn.jsdelivr.net/npm/videojs-seek-buttons@4.0.1/dist/videojs-seek-buttons.min.js
|
||||
https://cdn.jsdelivr.net/npm/videojs-seek-buttons@4.0.2/dist/videojs-seek-buttons.css
|
||||
https://cdn.jsdelivr.net/npm/videojs-seek-buttons@4.0.2/dist/videojs-seek-buttons.min.js
|
||||
https://cdn.jsdelivr.net/npm/vue@1.0.28/dist/vue.min.js
|
||||
https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js
|
||||
https://cdn.jsdelivr.net/npm/vue-match-media@1.0.3/dist/index.min.js
|
||||
|
|
|
@ -20,11 +20,11 @@
|
|||
"description": "Show icon badge description."
|
||||
},
|
||||
"blockMissingTitle": {
|
||||
"message": "阻止缺失资源的请求",
|
||||
"message": "阻止对缺失资源的请求",
|
||||
"description": "Block requests for missing resources title"
|
||||
},
|
||||
"blockMissingDescription": {
|
||||
"message": "如果请求的资源在本地不可用,则取消当前被拦截的请求。",
|
||||
"message": "即使所需的资源在本地不可用,也取消拦截的请求。",
|
||||
"description": "Block requests for missing resources description."
|
||||
},
|
||||
"disablePrefetchTitle": {
|
||||
|
@ -112,7 +112,7 @@
|
|||
"description": "Do not apply HTML filter to these domains:"
|
||||
},
|
||||
"htmlFilterDomainsDescription": {
|
||||
"message": "输入 HTML 过滤器要处理或忽略的域名,每行一个。",
|
||||
"message": "输入要由 HTML 过滤器处理或忽略处理的域名,一行一个。",
|
||||
"description": "Enter the domains to be handled or ignored by the HTML filter. One entry per line."
|
||||
},
|
||||
"htmlFilterDomainsTitleInclude": {
|
||||
|
@ -176,7 +176,7 @@
|
|||
"description": "Are you sure you want to delete all the statistics?"
|
||||
},
|
||||
"labelDomainsAllowlistGoogleFonts": {
|
||||
"message": "允许以下域名加载 Google Fonts,每行一个。",
|
||||
"message": "允许以下域名加载 Google Fonts,一行一个。",
|
||||
"description": "These domains are allowed to load Google Fonts. One entry per line."
|
||||
},
|
||||
"btnGeneral": {
|
||||
|
@ -300,7 +300,7 @@
|
|||
"description": "Browser compatibility"
|
||||
},
|
||||
"helpIntroductionDescription": {
|
||||
"message": "LocalCDN 是一个 web 浏览器扩展,模拟内容交付网络,以改善您的在线隐私。它拦截流量,在本地找到支持的框架/库,并将它们注入网站。请随意使用下面的测试实用程序来确定您是否得到了适当的保护。欲了解更多信息,请阅读教程或我们的维基页面。",
|
||||
"message": "LocalCDN 是一个用于本地模拟内容交付网络(CDN)的网页浏览器扩展,可以改善您的在线隐私。它能够拦截请求,找出本地支持的框架/库,并将它们注入网站,从而避免向内容交付网络发出请求。请随意使用下面的测试实用程序来确定您是否真正得到保护。欲了解更多信息,请阅读教程,或浏览我们的维基页面。",
|
||||
"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": {
|
||||
|
@ -328,15 +328,15 @@
|
|||
"description": "The result then looks like this:"
|
||||
},
|
||||
"helpHtmlFilterWhyTitle": {
|
||||
"message": "为何必需删除交叉起源和完整性属性?",
|
||||
"message": "为何必须删除 crossorigin 和 integrity 这两个属性?",
|
||||
"description": "Why is it necessary to remove crossorigin and integrity attributes?"
|
||||
},
|
||||
"helpHtmlFilterCrossorigin": {
|
||||
"message": "crossorigin 属性阻止替换,因为目标与请求的目标不匹配。",
|
||||
"message": "crossorigin 属性会阻止替换请求,因为被替换请求的目标来源(origin)与原始请求的目标来源不匹配。",
|
||||
"description": "The crossorigin attribute prevents the replacement because the destination does not match the requested one."
|
||||
},
|
||||
"helpHtmlFilterIntegrity": {
|
||||
"message": "为了节省磁盘空间和交付更多的框架,LocalCDN 升级了一个框架。完整性标记是文件的散列值。如果检查失败,浏览器将不包含框架。完整性检查将失败,因为例如 jQuery 1.10.1和 jQuery 1.12.4的散列值是不同的。",
|
||||
"message": "为了节省磁盘空间,交付更多的框架,LocalCDN 会使用更新版本的框架来代替略旧版本的相同框架。完整性标记是文件的哈希值(hash),正常情况下,只有两个文件完全相同,它们的哈希值才会相同。如果框架的完整性检查失败,浏览器将拒绝包含框架。综合上述情况,完整性检查的确会失败,因为例如 jQuery 1.10.1 和 jQuery 1.12.4 的哈希值是不同的。",
|
||||
"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 won‘t 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": {
|
||||
|
@ -380,7 +380,7 @@
|
|||
"description": "Hard"
|
||||
},
|
||||
"helpWebsiteIssuesDescription": {
|
||||
"message": "有两个可能的原因:要么是需要一个框架/库,但 LocalCDN (还)没有交付,要么是一个 SOP 。SOP (同源策略)是一种安全机制,它决定了浏览器允许加载哪些数据。它有助于隔离恶意文档,从而减少可能的攻击向量。此策略阻止浏览器加载其外部框架。不幸的是,目前没有解决办法。",
|
||||
"message": "有两个可能的原因:要么是 LocalCDN(还)没有包含某个需要的框架或库,要么是被 SOP(同源策略)屏蔽了。同源策略是一种用于确定浏览器可以加载哪些数据的安全机制。它有助于隔离恶意文档,从而减少可能的攻击向量。此策略会阻止浏览器从 LocalCDN 加载其外部框架。不幸的是,目前对此还没有解决办法。",
|
||||
"description": "There are two possible reasons: Either a framework/library is required that LocalCDN doesn‘t (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": {
|
||||
|
@ -404,7 +404,7 @@
|
|||
"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": "有哪些东西会被同步,当我选择 »同步« 作为存储类型?",
|
||||
"message": "当我选择 »同步« 作为存储类型时,有哪些东西会被同步?",
|
||||
"description": "What will be synchronized when I select »sync« as storage type?"
|
||||
},
|
||||
"helpSyncDescription": {
|
||||
|
|
|
@ -440,13 +440,14 @@ const BadResources = {
|
|||
|
||||
const LogString = {
|
||||
'PREFIX': '[ LocalCDN ]',
|
||||
'FONT_AWESOME': 'Font Awesome is not fully supported by your browser.',
|
||||
'NOT_SUPPORTED': 'is not fully supported by your browser.',
|
||||
'GOOGLE_MATERIAL_ICONS': 'Google Material Icons are not fully supported by your browser.',
|
||||
'YANDEX': 'Workaround. Disable LocalCDN if website and CDN are the same',
|
||||
'REPLACED_RESOURCE': 'Replaced resource:',
|
||||
'MISSING_RESOURCE': 'Missing resource:',
|
||||
'EVIL_RESOURCE_BLOCKED': 'Evil resource blocked:',
|
||||
'NON_GET_REQUEST_BLOCKED': 'Non-GET-Request blocked',
|
||||
'IFRAME': 'Possible iframe request:',
|
||||
};
|
||||
|
||||
// Supported charsets for TextDecoder()
|
||||
|
|
|
@ -31,7 +31,14 @@ var interceptor = {};
|
|||
*/
|
||||
|
||||
interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) {
|
||||
let validCandidate, targetDetails, targetDomain, isGoogleFont, isGoogleMaterialIcons, initiatorDomain, isListed;
|
||||
let validCandidate, targetDetails, targetDomain, isGoogleFont, isGoogleMaterialIcons, initiatorDomain, isListed,
|
||||
iframe;
|
||||
|
||||
iframe = '';
|
||||
if (tab.url !== requestDetails.originUrl) {
|
||||
console.log(`${LogString.PREFIX} ${LogString.IFRAME} ${tab.url} -> ${requestDetails.originUrl}`);
|
||||
iframe = requestDetails.originUrl;
|
||||
}
|
||||
|
||||
if (requestDetails['type'] === WebRequestType.MAIN_FRAME &&
|
||||
helpers.checkAllowlisted(
|
||||
|
@ -57,7 +64,7 @@ interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) {
|
|||
// Block POST, HEAD, PUT, DELETE, TRACE, OPTIONS
|
||||
if (BlockedRequestMethods[requestDetails.method]) {
|
||||
console.warn(`${LogString.PREFIX} ${LogString.NON_GET_REQUEST_BLOCKED}`);
|
||||
log.append(tab.url, requestDetails.url, LogString.NON_GET_REQUEST_BLOCKED, true);
|
||||
log.append(tab.url, requestDetails.url, LogString.NON_GET_REQUEST_BLOCKED, true, iframe);
|
||||
return {
|
||||
'cancel': true
|
||||
};
|
||||
|
@ -72,7 +79,7 @@ interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) {
|
|||
|
||||
if (interceptor._isBadResource(requestDetails.url)) {
|
||||
console.log(`${LogString.PREFIX} ${LogString.EVIL_RESOURCE_BLOCKED} ${requestDetails.url}`);
|
||||
log.append(tab.url, requestDetails.url, '-', true);
|
||||
log.append(tab.url, requestDetails.url, '-', true, iframe);
|
||||
return {
|
||||
'cancel': true
|
||||
};
|
||||
|
@ -105,7 +112,7 @@ interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) {
|
|||
}
|
||||
|
||||
console.log(`${LogString.PREFIX} ${LogString.REPLACED_RESOURCE} ${targetDetails.path}`);
|
||||
log.append(tab.url, requestDetails.url, targetDetails.path, false);
|
||||
log.append(tab.url, requestDetails.url, targetDetails.path, false, iframe);
|
||||
|
||||
return {
|
||||
'redirectUrl': chrome.runtime.getURL(targetDetails.path + fileGuard.secret)
|
||||
|
|
|
@ -52,9 +52,10 @@ requestAnalyzer.isValidCandidate = function (requestDetails, tabDetails) {
|
|||
|
||||
// Font Awesome injections in Chromium deactivated (https://gitlab.com/nobody42/localcdn/-/issues/67)
|
||||
if (!BrowserType.FIREFOX) {
|
||||
if (requestDetails.url.includes('font-awesome') || requestDetails.url.includes('fontawesome')) {
|
||||
console.warn(`${LogString.PREFIX} ${LogString.FONT_AWESOME}`);
|
||||
log.append(tabDetails.url, requestDetails.url, LogString.FONT_AWESOME, true);
|
||||
let requestType = requestAnalyzer.chromeSupport(requestDetails.url);
|
||||
if (requestType !== '') {
|
||||
console.warn(`${LogString.PREFIX} ${requestType} ${LogString.NOT_SUPPORTED}`);
|
||||
log.append(tabDetails.url, requestDetails.url, `${requestType} ${LogString.NOT_SUPPORTED}`, true);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -69,6 +70,20 @@ requestAnalyzer.isValidCandidate = function (requestDetails, tabDetails) {
|
|||
return requestDetails.method === WebRequest.GET;
|
||||
};
|
||||
|
||||
requestAnalyzer.chromeSupport = function (url) {
|
||||
let value = '';
|
||||
|
||||
if (url.includes('font-awesome')) {
|
||||
value = 'font-awesome';
|
||||
} else if (url.includes('fontawesome')) {
|
||||
value = 'font-awesome';
|
||||
} else if (url.includes('fork-awesome')) {
|
||||
value = 'fork-awesome';
|
||||
}
|
||||
|
||||
return value;
|
||||
};
|
||||
|
||||
requestAnalyzer.isGoogleMaterialIcons = function (url) {
|
||||
return url.includes('Material+Icons') || url.includes('materialicons');
|
||||
};
|
||||
|
|
|
@ -64,11 +64,11 @@ shorthands.specialFiles = function (channelHost, channelPath, searchString) {
|
|||
'bundle': ''
|
||||
};
|
||||
} else if (channelPath.endsWith(MaterialIcons.DEFAULT)) {
|
||||
lastVersion = targets.setLastVersion('/google-material-design-icons/');
|
||||
lastVersion = targets.setLastVersion('/materialicons/');
|
||||
return {
|
||||
'source': channelHost,
|
||||
'versionDelivered': lastVersion,
|
||||
'path': `resources/google-material-design-icons/${lastVersion}/MaterialIcons.woff2`,
|
||||
'path': `resources/google-material-design-icons/materialicons/${lastVersion}/MaterialIcons.woff2`,
|
||||
'bundle': ''
|
||||
};
|
||||
} else if (Regex.BOOTSTRAP_DATEPICKER_3.test(channelPath)) {
|
||||
|
|
|
@ -21,10 +21,10 @@
|
|||
|
||||
var log = {};
|
||||
|
||||
log.append = function (initiator, resource, target, highlight) {
|
||||
log.append = function (initiator, resource, target, highlight, iframe = '') {
|
||||
storageManager.type.get(Setting.LOGGING, function (items) {
|
||||
if (items.enableLogging) {
|
||||
log.data.push({initiator, resource, target, highlight});
|
||||
log.data.push({initiator, resource, target, highlight, iframe});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
|
@ -82,9 +82,10 @@ targets.setLastVersion = function (type, version) {
|
|||
if (type.startsWith('/algoliasearch/3.')) return '3.35.1';
|
||||
if (type.startsWith('/algoliasearch/4.')) return '4.14.3';
|
||||
if (type.startsWith('/alpinejs/2.')) return '2.8.2';
|
||||
if (type.startsWith('/alpinejs/3.')) return '3.10.5';
|
||||
if (type.startsWith('/alpinejs/3.')) return '3.11.1';
|
||||
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';
|
||||
if (type.startsWith('/angular.js/1.')) {
|
||||
if (helpers.compareVersion('1.0.8', version)) return '1.0.8'; // <= v1.0.8
|
||||
if (helpers.compareVersion('1.2.19', version)) return '1.2.19'; // > v1.0.8 to <= v1.2.19
|
||||
|
@ -135,7 +136,7 @@ targets.setLastVersion = function (type, version) {
|
|||
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.2.2';
|
||||
if (type.startsWith('/axios/1.')) return '1.2.3';
|
||||
if (type.startsWith('/backbone.js/0.')) return '0.9.10';
|
||||
if (type.startsWith('/backbone.js/1.')) return '1.4.1';
|
||||
if (type.startsWith('/baguettebox.js/1.')) return '1.11.1';
|
||||
|
@ -170,7 +171,7 @@ targets.setLastVersion = function (type, version) {
|
|||
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.1.1';
|
||||
if (type.startsWith('/Chart.js/4.')) return '4.2.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';
|
||||
|
@ -182,7 +183,7 @@ targets.setLastVersion = function (type, version) {
|
|||
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.8.0';
|
||||
if (type.startsWith('/d3/7.')) return '7.8.2';
|
||||
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.7';
|
||||
|
@ -217,15 +218,11 @@ targets.setLastVersion = function (type, version) {
|
|||
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.11.4';
|
||||
|
||||
// just for testing ----------------------------------------------
|
||||
if (type.startsWith('/materialicons/')) return 'v139';
|
||||
if (type.startsWith('/materialiconsoutlined/')) return 'v108';
|
||||
if (type.startsWith('/materialiconsround/')) return 'v107';
|
||||
if (type.startsWith('/materialiconssharp/')) return 'v108';
|
||||
if (type.startsWith('/materialiconstwotone/')) return 'v111';
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
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';
|
||||
|
@ -234,12 +231,12 @@ targets.setLastVersion = function (type, version) {
|
|||
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.2.9';
|
||||
if (type.startsWith('/hls.js/1.')) return '1.3.1';
|
||||
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.0.0';
|
||||
if (type.startsWith('/instantsearch.js/3.')) return '3.7.0';
|
||||
if (type.startsWith('/instantsearch.js/4.')) return '4.49.3';
|
||||
if (type.startsWith('/instantsearch.js/4.')) return '4.49.4';
|
||||
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';
|
||||
|
@ -315,12 +312,12 @@ 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.10.15';
|
||||
if (type.startsWith('/libphonenumber-js/1.')) return '1.10.18';
|
||||
if (type.startsWith('/libsodium-wrappers/0.')) return '0.5.4';
|
||||
if (type.startsWith('/lightbox2/2.')) return '2.11.3';
|
||||
if (type.startsWith('/lightcase/2.')) return '2.5.0';
|
||||
if (type.startsWith('/lightgallery/1.')) return '1.10.0';
|
||||
if (type.startsWith('/lightgallery/2.')) return '2.7.0';
|
||||
if (type.startsWith('/lightgallery/2.')) return '2.7.1';
|
||||
if (type.startsWith('/lodash.js/3.')) return '3.10.1';
|
||||
if (type.startsWith('/lodash.js/4.')) return '4.17.21';
|
||||
if (type.startsWith('/lozad')) return '1.16.0';
|
||||
|
@ -358,7 +355,7 @@ 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 '10.2.0';
|
||||
return '10.2.1';
|
||||
}
|
||||
if (type.startsWith('/ngx-bootstrap/7.')) return '7.1.2';
|
||||
if (type.startsWith('/ngx-bootstrap/8.')) return '8.0.0';
|
||||
|
@ -403,7 +400,7 @@ targets.setLastVersion = function (type, version) {
|
|||
if (type.startsWith('/react-redux/7.')) return '7.2.8';
|
||||
if (type.startsWith('/react-redux/8.')) return '8.0.5';
|
||||
if (type.startsWith('/react-router/5.')) return '5.3.3';
|
||||
if (type.startsWith('/react-router/6.')) return '6.6.1';
|
||||
if (type.startsWith('/react-router/6.')) return '6.7.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.0';
|
||||
|
@ -419,14 +416,15 @@ targets.setLastVersion = function (type, version) {
|
|||
if (type.startsWith('/showdown/0.')) return '0.5.1';
|
||||
if (type.startsWith('/showdown/1.')) return '1.9.1';
|
||||
if (type.startsWith('/showdown/2.')) return '2.1.0';
|
||||
if (type.startsWith('/simplebar/')) return '5.3.9';
|
||||
if (type.startsWith('/simplebar/5.')) return '5.3.9';
|
||||
if (type.startsWith('/simplebar/6.')) return '6.2.0';
|
||||
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
|
||||
return '1.9.0';
|
||||
}
|
||||
if (type.startsWith('/slick-lightbox/0.')) return '0.2.12';
|
||||
if (type.startsWith('/slider-pro/1.')) return '1.6.1';
|
||||
if (type.startsWith('/slider-pro/1.')) return '1.6.2';
|
||||
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';
|
||||
|
@ -445,7 +443,7 @@ targets.setLastVersion = function (type, version) {
|
|||
if (type.startsWith('/Swiper/5.')) return '5.4.5';
|
||||
if (type.startsWith('/Swiper/6.')) return '6.8.4';
|
||||
if (type.startsWith('/Swiper/7.')) return '7.4.1';
|
||||
if (type.startsWith('/Swiper/8.') || type.startsWith('/Swiper/')) return '8.4.5';
|
||||
if (type.startsWith('/Swiper/8.') || type.startsWith('/Swiper/')) return '8.4.6';
|
||||
if (type.startsWith('/tensorflow/2.')) return '4.2.0';
|
||||
if (type.startsWith('/tensorflow/3.')) return '4.2.0';
|
||||
if (type.startsWith('/tensorflow/4.')) return '4.2.0';
|
||||
|
@ -463,6 +461,7 @@ targets.setLastVersion = function (type, version) {
|
|||
}
|
||||
if (type.startsWith('/twitter-bootstrap/4.')) {
|
||||
if (helpers.compareVersion('4.1.1', version)) return '4.1.1'; // <= 4.1.1
|
||||
if (helpers.compareVersion('4.4.1', version)) return '4.4.1'; // <= 4.4.1
|
||||
return '4.6.1';
|
||||
}
|
||||
if (type.startsWith('/twitter-bootstrap/5.')) return '5.2.3';
|
||||
|
@ -477,12 +476,12 @@ targets.setLastVersion = function (type, version) {
|
|||
if (type.startsWith('/videojs-seek-buttons/1.')) return '1.6.0';
|
||||
if (type.startsWith('/videojs-seek-buttons/2.')) return '2.2.1';
|
||||
if (type.startsWith('/videojs-seek-buttons/3.')) return '3.0.1';
|
||||
if (type.startsWith('/videojs-seek-buttons/4.')) return '4.0.1';
|
||||
if (type.startsWith('/videojs-seek-buttons/4.')) return '4.0.2';
|
||||
if (type.startsWith('/video.js/')) {
|
||||
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.0.2';
|
||||
return '8.0.3';
|
||||
}
|
||||
if (type.startsWith('/vue/1.')) return '1.0.28';
|
||||
if (type.startsWith('/vue/2.')) return '2.6.14';
|
||||
|
|
|
@ -24,6 +24,7 @@ table td:first-child {
|
|||
|
||||
td {
|
||||
padding: 2px 15px;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
textarea {
|
||||
|
|
|
@ -38,6 +38,12 @@
|
|||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
<p>
|
||||
Legend
|
||||
<br>
|
||||
<span>(i) = A website includes this iframe. It's possible that the request is from there.</span>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -40,7 +40,7 @@ logging._generateTable = function () {
|
|||
}
|
||||
|
||||
for (let i = data.length - 1; i >= 0; i--) {
|
||||
let tbody, row, cell, content, redirect;
|
||||
let tbody, row, cell, content, redirect, initiator;
|
||||
|
||||
tbody = document.getElementById('logging-content').getElementsByTagName('tbody')[0];
|
||||
row = tbody.insertRow();
|
||||
|
@ -53,8 +53,14 @@ logging._generateTable = function () {
|
|||
content = document.createTextNode(i + 1);
|
||||
cell.appendChild(content);
|
||||
|
||||
if (Object.values(data[i])[4] === '') {
|
||||
initiator = Object.values(data[i])[0];
|
||||
} else {
|
||||
initiator = `${Object.values(data[i])[0]}\n(i) ${Object.values(data[i])[4]}`;
|
||||
}
|
||||
|
||||
cell = row.insertCell();
|
||||
content = document.createTextNode(Object.values(data[i])[0]);
|
||||
content = document.createTextNode(initiator);
|
||||
cell.appendChild(content);
|
||||
|
||||
cell = row.insertCell();
|
||||
|
|
|
@ -177,7 +177,7 @@ body {
|
|||
padding: 5px 9px;
|
||||
}
|
||||
|
||||
#html-filter-domains-title-exclude {
|
||||
#html-filter-domains-title-include {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
|
|
@ -66,6 +66,39 @@
|
|||
</div>
|
||||
<div id="history"><span id="history-indicator">+</span> Previous Versions</div>
|
||||
<div id="history-release-notes">
|
||||
<p class='release-date'>2023-01-21 (v2.6.45)</p>
|
||||
<p>Updated</p>
|
||||
<ul>
|
||||
<li>ngx-bootstrap v10.2.0 -> v10.2.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1285">#1285</a>)</li>
|
||||
<li>Chart.js v4.1.1 -> v4.2.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1286">#1286</a>)</li>
|
||||
<li>video.js v8.0.2 -> v8.0.3 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1287">#1287</a>)</li>
|
||||
<li>libphonenumber-js v1.10.15 -> v1.10.18 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1288">#1288</a>)</li>
|
||||
<li>react-router v6.6.1 -> v6.7.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1289">#1289</a>)</li>
|
||||
<li>instantsearch.js v4.49.3 -> v4.49.4 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1290">#1290</a>)</li>
|
||||
<li>d3 v7.8.0 -> v7.8.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1291">#1291</a>)</li>
|
||||
<li>lightgallery v2.7.0 -> v2.7.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1292">#1292</a>)</li>
|
||||
<li>hls.js v1.2.9 -> v1.3.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1293">#1293</a>)</li>
|
||||
<li>axios v1.2.2 -> v1.2.3 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1297">#1297</a>)</li>
|
||||
<li>videojs-seek-buttons v4.0.1 -> v4.0.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1299">#1299</a>)</li>
|
||||
<li>Swiper v8.4.5 -> v8.4.6 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1300">#1300</a>)</li>
|
||||
<li>alpinejs v3.10.5 -> v3.11.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1301">#1301</a>)</li>
|
||||
<li>slider-pro v1.6.1 -> v1.6.2 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1303">#1303</a>)</li>
|
||||
</ul>
|
||||
<p>Added</p>
|
||||
<ul>
|
||||
<li>twitter-bootstrap v4.4.1 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1284">#1284</a>)</li>
|
||||
<li>simplebar v6.2.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1298">#1298</a>)</li>
|
||||
<li>anchor-js v5.0.0 (<a href="https://codeberg.org/nobody/LocalCDN/issues/1304">#1304</a>)</li>
|
||||
</ul>
|
||||
<p>Mapping</p>
|
||||
<ul>
|
||||
<li>Direct call of Google Material Icons (<a href="https://codeberg.org/nobody/LocalCDN/issues/1295">#1295</a>)</li>
|
||||
</ul>
|
||||
<p>Improved</p>
|
||||
<ul>
|
||||
<li>Allow Fork-Awesome in Chromium (<a href="https://codeberg.org/nobody/LocalCDN/issues/1296">#1296</a>)</li>
|
||||
<li>SimpleLog extended for iframes (<a href="https://codeberg.org/nobody/LocalCDN/issues/1302">#1302</a>)</li>
|
||||
</ul>
|
||||
<p class='release-date'>2023-01-05 (v2.6.44)</p>
|
||||
<p>Updated</p>
|
||||
<ul>
|
||||
|
|
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
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
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
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* lightgallery | 2.7.0 | October 9th 2022
|
||||
* lightgallery | 2.7.1 | January 11th 2023
|
||||
* http://www.lightgalleryjs.com/
|
||||
* Copyright (c) 2020 Sachin Neravath;
|
||||
* @license GPLv3
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
[data-simplebar]{position:relative;flex-direction:column;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.simplebar-wrapper{overflow:hidden;width:inherit;height:inherit;max-width:inherit;max-height:inherit}.simplebar-mask{direction:inherit;position:absolute;overflow:hidden;padding:0;margin:0;left:0;top:0;bottom:0;right:0;width:auto!important;height:auto!important;z-index:0}.simplebar-offset{direction:inherit!important;box-sizing:inherit!important;resize:none!important;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;margin:0;-webkit-overflow-scrolling:touch}.simplebar-content-wrapper{direction:inherit;box-sizing:border-box!important;position:relative;display:block;height:100%;width:auto;max-width:100%;max-height:100%;overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.simplebar-content-wrapper::-webkit-scrollbar,.simplebar-hide-scrollbar::-webkit-scrollbar{display:none;width:0;height:0}.simplebar-content:after,.simplebar-content:before{content:' ';display:table}.simplebar-placeholder{max-height:100%;max-width:100%;width:100%;pointer-events:none}.simplebar-height-auto-observer-wrapper{box-sizing:inherit!important;height:100%;width:100%;max-width:1px;position:relative;float:left;max-height:1px;overflow:hidden;z-index:-1;padding:0;margin:0;pointer-events:none;flex-grow:inherit;flex-shrink:0;flex-basis:0}.simplebar-height-auto-observer{box-sizing:inherit;display:block;opacity:0;position:absolute;top:0;left:0;height:1000%;width:1000%;min-height:1px;min-width:1px;overflow:hidden;pointer-events:none;z-index:-1}.simplebar-track{z-index:1;position:absolute;right:0;bottom:0;pointer-events:none;overflow:hidden}[data-simplebar].simplebar-dragging{pointer-events:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[data-simplebar].simplebar-dragging .simplebar-content{pointer-events:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[data-simplebar].simplebar-dragging .simplebar-track{pointer-events:all}.simplebar-scrollbar{position:absolute;left:0;right:0;min-height:10px}.simplebar-scrollbar:before{position:absolute;content:'';background:#000;border-radius:7px;left:2px;right:2px;opacity:0;transition:opacity .2s .5s linear}.simplebar-scrollbar.simplebar-visible:before{opacity:.5;transition-delay:0s;transition-duration:0s}.simplebar-track.simplebar-vertical{top:0;width:11px}.simplebar-scrollbar:before{top:2px;bottom:2px;left:2px;right:2px}.simplebar-track.simplebar-horizontal{left:0;height:11px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar{right:auto;left:0;top:0;bottom:0;min-height:0;min-width:10px;width:auto}[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical{right:auto;left:0}.simplebar-dummy-scrollbar-size{direction:rtl;position:fixed;opacity:0;visibility:hidden;height:500px;width:500px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:scrollbar!important}.simplebar-dummy-scrollbar-size>div{width:200%;height:200%;margin:10px 0}.simplebar-hide-scrollbar{position:fixed;left:0;visibility:hidden;overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}
|
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
File diff suppressed because one or more lines are too long
|
@ -1,2 +1,2 @@
|
|||
/*! @name videojs-seek-buttons @version 4.0.1 @license Apache-2.0 */
|
||||
/*! @name videojs-seek-buttons @version 4.0.2 @license Apache-2.0 */
|
||||
.video-js .vjs-seek-button{font-family:'VideoJS';cursor:pointer;font-weight:400;font-style:normal}.video-js .vjs-seek-button.skip-back .vjs-icon-placeholder::before{transform:rotate(-45deg);-ms-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);content:'\f116'}.video-js .vjs-seek-button.skip-forward .vjs-icon-placeholder::before{transform:scale(-1,1) rotate(-45deg);-ms-transform:scale(-1,1) rotate(-45deg);-webkit-transform:scale(-1,1) rotate(-45deg);content:'\f116'}
|
|
@ -1,2 +1,2 @@
|
|||
/*! @name videojs-seek-buttons @version 4.0.1 @license Apache-2.0 */
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("video.js")):"function"==typeof define&&define.amd?define(["video.js"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).videojsSeekButtons=t(e.videojs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=t(e);const s=o.default.getComponent("Button"),i={forwardIndex:1,backIndex:1},n=function(e){this.ready((()=>{((e,t)=>{e.addClass("vjs-seek-buttons"),t.forward&&t.forward>0&&(e.controlBar.seekForward=e.controlBar.addChild("seekButton",{direction:"forward",seconds:t.forward},t.forwardIndex)),t.back&&t.back>0&&(e.controlBar.seekBack=e.controlBar.addChild("seekButton",{direction:"back",seconds:t.back},t.backIndex))})(this,o.default.obj.merge(i,e))}))};n.VERSION="4.0.1";return o.default.registerComponent("SeekButton",class extends s{constructor(e,t){super(e,t),"forward"===this.options_.direction?this.controlText(this.localize("Seek forward {{seconds}} seconds").replace("{{seconds}}",this.options_.seconds)):"back"===this.options_.direction&&this.controlText(this.localize("Seek back {{seconds}} seconds").replace("{{seconds}}",this.options_.seconds))}buildCSSClass(){return`vjs-seek-button skip-${this.options_.direction} skip-${this.options_.seconds} ${super.buildCSSClass()}`}handleClick(){const e=this.player_.currentTime();if("forward"===this.options_.direction){let t=this.player_.duration();this.player_.liveTracker&&this.player_.liveTracker.isLive()&&(t=this.player_.liveTracker.seekableEnd()),this.player_.currentTime(Math.min(e+this.options_.seconds,t))}else"back"===this.options_.direction&&this.player_.currentTime(Math.max(0,e-this.options_.seconds))}}),o.default.registerPlugin("seekButtons",n),n}));
|
||||
/*! @name videojs-seek-buttons @version 4.0.2 @license Apache-2.0 */
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("video.js")):"function"==typeof define&&define.amd?define(["video.js"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).videojsSeekButtons=t(e.videojs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=t(e);const s=o.default.getComponent("Button"),i={forwardIndex:1,backIndex:1},n=function(e){this.ready((()=>{((e,t)=>{e.addClass("vjs-seek-buttons"),t.forward&&t.forward>0&&(e.controlBar.seekForward=e.controlBar.addChild("seekButton",{direction:"forward",seconds:t.forward},t.forwardIndex)),t.back&&t.back>0&&(e.controlBar.seekBack=e.controlBar.addChild("seekButton",{direction:"back",seconds:t.back},t.backIndex))})(this,o.default.obj.merge(i,e))}))};n.VERSION="4.0.2";return o.default.registerComponent("SeekButton",class extends s{constructor(e,t){super(e,t),"forward"===this.options_.direction?this.controlText(this.localize("Seek forward {{seconds}} seconds").replace("{{seconds}}",this.options_.seconds)):"back"===this.options_.direction&&this.controlText(this.localize("Seek back {{seconds}} seconds").replace("{{seconds}}",this.options_.seconds))}buildCSSClass(){return`vjs-seek-button skip-${this.options_.direction} skip-${this.options_.seconds} ${super.buildCSSClass()}`}handleClick(){const e=this.player_.currentTime();if("forward"===this.options_.direction){let t=this.player_.duration();this.player_.liveTracker&&this.player_.liveTracker.isLive()&&(t=this.player_.liveTracker.seekableEnd()),this.player_.currentTime(Math.min(e+this.options_.seconds,t))}else"back"===this.options_.direction&&this.player_.currentTime(Math.max(0,e-this.options_.seconds))}}),o.default.registerPlugin("seekButtons",n),n}));
|
Loading…
Reference in New Issue