-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathspeedsize-sw.js
3 lines (3 loc) · 6.59 KB
/
speedsize-sw.js
1
2
3
/* 20-12-2021 */
const config = {"clientId":"08612fe1-9391-4cf3-ac1a-6dd49c36b276","isAllowed":true,"ignoredFiles":["captcha_code_file.php"],"forbiddenPaths":["/jira","/jira/*","/confluence","/confluence/*"],"mLinkBaseUrl":"https://speedmedia.jfrog.com","whitelistDomains":["jfrog.com","jfrog.info","jfrog-swampup.site.strattic.io"],"format":"auto","useOriginalCDN":false,"allowedPaths":[],"lazyload":{"hideBackgrounds":false,"blurredPlaceholders":false,"awaitWorker":false,"native":true,"hideImgElements":false,"eagerCheck":false},"maxDpr":1.5,"allowCrossOrigin":false,"enableStatement":""} || {};
const e=1.5,n=[64,96,100,128,160,192,200,240,256,320,360,480,540,600,640,720,750,768,800,828,1024,1080,1125,1152,1170,1200,1242,1280,1284,1366,1440,1536,1600,1650,1920,2048,2256,2304,2560,2736,2880,3e3,3200,3440,3840],{navigator:t}=self,i=t.userAgent.toLowerCase(),r=t.vendor&&t.vendor.toLowerCase(),s=new URL(config.mLinkBaseUrl).hostname,o=[{mime:"image/avif",ext:".avif"},{mime:"image/webp",ext:".webp"},{mime:"image/jp2",ext:".jp2"},{mime:"image/jxr",ext:".jxr"}],c=[{mime:'video/mp4;codecs="av01"',ext:"_av1.webm"},{mime:'video/mp4;codecs="hev1.1.6.L93.B0"',ext:"_hevc.mp4"},{mime:'video/mp4;codecs="vp09.00.50.08"',ext:".webm"}],u=[".jpg",".jpeg",".png",".webp",".mp4",".webm",".mov"];function f(e){const{userAgentData:n}=t;if(!e||!n)return null;let i=null;if(n&&n.brands&&n.brands.length){const{brands:t}=n;for(let n=0;n<t.length;n+=1)if(t[n].brand===e){i=t[n].version;break}}return i}function a(){return!!f("Opera")||i.includes("opr")}function l(e,n=null){let t=f("Opera");return t=t?parseInt(t,10):parseInt(i.substring(i.indexOf("opr")).split("/")[1],10),n?t>=e&&t<=n:t>=e}function d(){return i.includes("firefox")}function g(e,n=null){const t=parseInt(i.substring(i.indexOf("firefox")).split("/")[1],10);return n?t>=e&&t<=n:t>=e}function h(){return!!f("Microsoft Edge")||i.includes("edg")}function m(e,n=null){let t=f("Microsoft Edge");return t=t?parseInt(t,10):parseInt(i.substring(i.indexOf("edg")).split("/")[1],10),n?t>=e&&t<=n:t>=e}function p(){return!(!i.includes("safari")||i.includes("chrome")||i.includes("crios"))}function b(){return p()&&i.includes("macintosh")}function x(e,n=null){const t=parseInt(i.substring(i.indexOf("version")).split("/")[1],10);return n?t>=e&&t<=n:t>=e}function v(){return i.includes("iphone")||i.includes("ipad")||i.includes("macintosh")}function w(){return i.includes("android")}function O(){return p()&&(i.includes("iphone")||i.includes("ipad"))}function L(){return i.includes("crios")}function I(e,n=null){const t=parseInt(i.split(" os")[1],10)||parseInt(i.split(" os x")[1],10);return n?t>=e&&t<=n:t>=e}function R(){return!!f("Google Chrome")||!a()&&!d()&&!h()&&!p()&&("google inc."===r||i.includes("chrome")&&w())}function W(e,n=null){let t=f("Google Chrome");return t=t?parseInt(t,10):parseInt(i.substring(i.indexOf("chrome")).split("/")[1],10),n?t>=e&&t<=n:t>=e}function E(){return h()?m(18):d()?g(65):a()?l(19):!(!O()&&!L())&&I(14)}function $(){return!!h()&&m(12,18)}function j(){return b()?x(5):!(!O()&&!L())&&I(5)}function D(){return b()?x(13):!(!O()&&!L())&&I(11)}function k(){return h()?m(79):d()?g(28):a()?l(16):!!R()&&W(25)}function A(){return!d()||v()||w()?a()?l(57):!(!R()||w())&&W(70):g(67)}function U(e){return"image"===e}function C(e){return"video"===e}function _(e,n,t){const i=(n?o:c).filter((e=>t.includes(e.mime)))[0];if(!i)return e;const r=e.split("/"),s=r[r.length-1],f=s.lastIndexOf("."),a=f>0?s.substring(f):"";if(!a)return`${e}${i.ext}`;if(!u.includes(a))return e;const l=`${s.substring(0,f)}${i.ext}`;return r[r.length-1]=l,r.join("/")}function y(e,n,t,i,r={}){const s=[];Object.keys(r).forEach((e=>{s.push(`${e}_${r[e]}`)})),config.format&&s.push(`f_${config.format}`),p()&&s.push("s_videoimg");const o=s.join(",");return`${config.mLinkBaseUrl}/${config.clientId}/${n}/${o}`}function B(e){if(!e)return!1;const n=new URL(e).hostname;return n===s||!n.endsWith(self.location.hostname)&&0!==e.indexOf(self.location.origin)}function P(e){if(e<=n[0])return n[0];if(e>=n[n.length-1])return n[n.length-1];for(let t=n.length-2;t>=0;t-=1)if(e>=n[t])return n[t+1];return null}self.addEventListener("install",(()=>{self.skipWaiting()})),self.addEventListener("activate",(e=>{e.waitUntil(self.clients.claim())}));const M={"image/webp":E(),"image/jxr":$(),"image/jp2":j(),"video/mp4;codecs='vp09.00.50.08'":k(),"video/mp4;codecs='hev1.1.6.L93.B0'":D(),"video/mp4;codecs='av01'":A()};function q(e){let n=!1;const{hostname:t}=new URL(e);if(t===s)return!1;if(config.whitelistDomains&&config.whitelistDomains.length)for(let e=0;e<config.whitelistDomains.length;e+=1){const i=config.whitelistDomains[e];if(t.indexOf(i)>=0){n=!0;break}}return n}function z(e){let n=!1;return config.ignoredFiles.forEach((t=>{(t.endsWith("*")&&0===e.indexOf(t.substring(0,t.length-1))||t===e)&&(n=!0)})),n}let F,S=!0;function G(e){const n=parseFloat(e.headers.get("DPR")),t=parseInt(e.headers.get("Width"),10),i=parseInt(e.headers.get("Viewport-Width"),10);if(n&&i){return P((t?Math.min(t,i):i)*Math.min(n,config.maxDpr||1.5))}if(F){return P(F.vpWidth*Math.min(F.DPR,config.maxDpr||1.5))}return null}self.onmessage=function(e){const{data:n}=e;"DISABLE_WORKER"===n.type?S=!1:"ENABLE_WORKER"===n.type?S=!0:"WINDOW_PARAMS"===n.type&&(F=n.data)};const K={},N={};self.addEventListener("fetch",(async e=>{if(!S)return;const{clientId:n}=e,{destination:t,url:i,signal:r}=e.request;if(0===i.indexOf(config.mLinkBaseUrl))return;if(!U(t))return;if(!config.allowCrossOrigin&&B(i)&&!q(i))return;const s=new URL(i);let o=s.href;const{hostname:c}=s;if(s.hash&&(o=s.origin+s.pathname+s.search),s.hash&&s.hash.indexOf("speedsize-ignore")>=0||s.search&&s.search.indexOf("speedsize-ignore")>=0)return;if(s.pathname&&(s.pathname.endsWith(".ico")||"/"===s.pathname))return;if(config.ignoredFiles&&config.ignoredFiles.length&&z(s.pathname))return;const u={mode:"no-cors",signal:r};e.respondWith((async()=>{if(config.forbiddenPaths&&config.forbiddenPaths.length&&!K[n]){if(N[n])return fetch(i,u);const e=await self.clients.get(n);if(!e)return fetch(i,u);const{url:t}=e,r=new URL(t).pathname.toLowerCase();let s=!0;for(let e=0;e<config.forbiddenPaths.length;e+=1){const n=config.forbiddenPaths[e].toLowerCase();if(n.endsWith("*")&&0===r.indexOf(n.substring(0,n.length-1)))s=!1;else if(n===r){s=!1;break}}if(!s)return N[n]=!0,fetch(i,u);K[n]=!0}const r=e.request.headers.get("accept"),f={},a=G(e.request);!a||config.disableAutoResize||config.disableWorkerAutoResize||(f.mxw=a);const l=y(t,o,c,s.pathname,f);let d=r;Object.keys(M).forEach((e=>{!d.includes(e)&&M[e]&&(d=`${e},${d}`)}));const g={mode:"no-cors",headers:{Accept:d,"User-Agent":e.request.headers.get("user-agent")}};return config.noCORS&&delete g.mode,fetch(l,g)})())}));