1 2!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e7e8e0e8-0f8b-5f0d-ade4-672c209e2f2f")}catch(e){}}(); 3(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7580],{15550:(e,t,r)=>{"use strict";r.d(t,{b:()=>w});let a="event",n="createdAt",s="user_info",o="user_info_id",i="setup_response",c=async(e,t,r)=>new Promise((a,n)=>{let s=indexedDB.open(e,t);s.onerror=()=>{n(s.error)},s.onsuccess=()=>{a(s.result)},s.onupgradeneeded=()=>{r(s.result)}}),u=async(e,t,r,a)=>new Promise((n,s)=>{let o=e.transaction(t,"readwrite").objectStore(t).put(a,r);o.onerror=()=>{s(o.error)},o.onsuccess=()=>{n()}}),l=async(e,t,r,a,n)=>new Promise((s,o)=>{let i=e.transaction(t,"readonly").objectStore(t).index(r).openCursor(null,n),c=[];i.onerror=()=>{o(i.error)},i.onsuccess=()=>{let e=i.result;e&&c.length<a?(c.push(e.value),e.continue()):s(c)}}),p=async(e,t,r)=>new Promise((a,n)=>{let s=e.transaction(t,"readonly").objectStore(t).get(r);s.onerror=()=>{n(s.error)},s.onsuccess=()=>{a(s.result)}}),d=async(e,t)=>new Promise((r,a)=>{let n=e.transaction(t,"readonly").objectStore(t).count();n.onerror=()=>{a(n.error)},n.onsuccess=()=>{r(n.result)}}),v=async(e,t,r)=>new Promise((a,n)=>{let s=e.transaction(t,"readwrite").objectStore(t),o=[];r.forEach(e=>{let t=s.delete(e);o.push(new Promise((e,r)=>{t.onerror=()=>{r(t.error)},t.onsuccess=()=>{e()}}))}),Promise.all(o).then(()=>a()).catch(n)}),w=async(e={})=>{let t={dbName:"spidersense",maxEventsStored:300,targetSizeAfterClearingSpace:200,now:Date.now,...e},r=async()=>c(t.dbName,1,e=>{e.objectStoreNames.contains(a)||e.createObjectStore(a).createIndex(n,n),e.objectStoreNames.contains(s)||e.createObjectStore(s),e.objectStoreNames.contains(i)||e.createObjectStore(i)}),w=await r(),f=async()=>w&&(e=>{try{return e.transaction([a],"readwrite"),!0}catch(e){return"InvalidStateError"!==e.name}})(w)?w:w=await r(),m=async e=>{let t=e.map(e=>e.id),r=await f();await v(r,a,t)};return{getEvents:async e=>{let t=await f();return await l(t,a,n,e,"next")},saveEvent:async e=>{let r=await f(),s=await d(r,a);if(s>=t.maxEventsStored){let e=s-t.targetSizeAfterClearingSpace,o=await l(r,a,n,e,"next");await m(o)}await u(r,a,e.id,e)},deleteEvents:async e=>{await m(e)},getUserInfo:async()=>{let e=await f();return await p(e,s,o)},saveUserInfo:async e=>{let t=await f();await u(t,s,o,e)},getSetupResponse:async e=>{let t=await f();return await p(t,i,e)},saveSetupResponse:async(e,t)=>{let r=await f();await u(r,i,t,e)}}}},38636:(e,t,r)=>{"use strict";r.d(t,{_:()=>n});var a=r(56971);function n(e,t){(0,a._)(e,t),t.add(e)}},56971:(e,t,r)=>{"use strict";function a(e,t){if(t.has(e))throw TypeError("Cannot initialize the same private elements twice on an object")}r.d(t,{_:()=>a})},57037:(e,t,r)=>{"use strict";r.d(t,{e:()=>a});let a=(e,t)=>{if("undefined"==typeof window)throw"This helper can only be used in web-based environments";let r=`spidersense:user_id:v1_${e}`;return()=>{let e=window.localStorage?.getItem(r);if(null==e){let e=t();return window.localStorage?.setItem(r,e),e}return e}}},65098:(e,t,r)=>{"use strict";r.d(t,{k:()=>a});let a=()=>async(e,t)=>{console.debug(`Waiting for lock ${e}...`),navigator.locks.request(e,async()=>(console.debug(`Lock ${e} acquired!`),await t(),new Promise(()=>{})))}},65818:(e,t,r)=>{"use strict";function a(e,t,r){if(!t.has(e))throw TypeError("attempted to get private field on non-instance");return r}r.d(t,{_:()=>a})},68966:(e,t,r)=>{"use strict";var a;r.d(t,{AI:()=>a,U_:()=>c}),function(e){e.INFO="info",e.WARNING="warning",e.ERROR="error",e.CRITICAL="critical"}(a||(a={}));let n=({event:e,rule:t,isSpooner:r,isPremium:a,experiments:s})=>{switch(t.name){case"spooners":if(r)return t.value;return;case"premium_users":if(a)return t.value;return;case"categories":{let r=e.categories.join("/").toLowerCase();return t.value.find(e=>r.includes(e.name.toLowerCase()))?.value}case"experiments":return t.value.find(e=>s.includes(e.name.toLowerCase()))?.value;case"severity":return t.value.find(t=>t.name.toLowerCase()===e.severity.toLowerCase())?.value;case"standard":return t.value;case"and":{let o=t.value.flatMap(t=>n({event:e,rule:t,isSpooner:r,isPremium:a,experiments:s}
3)).filter(e=>void 0!==e);if(o.length!==t.value.length)return;return o.every(e=>e)}default:return}},s=(e,t,r,a,s)=>{for(let o of t){let t=n({event:e,rule:o,isSpooner:r,isPremium:a,experiments:s});if(void 0!==t)return t}return!1},o=async e=>{let t=await e.persistenceManager.getUserInfo()||{},r=((e,t,r,a,n)=>{let s={};return async(o,i)=>{let c=s[o];if(c){let{response:e,requestTimestamp:t}=c;if(void 0===n||t+1e3*n>r())return e}let u=await e.getSetupResponse(o);if((e=>"object"==typeof e&&null!==e&&"requestTimestamp"in e&&"response"in e)(u)||(u=void 0),u&&u.requestTimestamp+1e3*a>r())return u.response;if(!i)throw Error("No local config and skip remote fetch");let l=await t.setup(o),p={response:l,requestTimestamp:r()};return await e.saveSetupResponse(p,o),s[o]=p,l}})(e.persistenceManager,e.apiManager,e.now,e.setupResponseTtl,e.setupResponseSessionTtl),a=async t=>{if(!e.canSync())return void e.scheduler.schedule(()=>a(t),t);let n=t;try{let t=e.user.userID(),a=await r(t,!0),o=await e.persistenceManager.getEvents(50),i=o.filter(t=>s(t,a.rules,e.user.isSpooner(),e.user.isPremium(),e.user.experiments()));if(i.length>0){let r=[];for(let t of i){let a=e.eventProcessors.reduce((t,r)=>r.processEvent(t,e),t);r.push(a)}await e.apiManager.send(r,t)}await e.persistenceManager.deleteEvents(o),n=1e3*a.send_next_batch_interval}catch{n=Math.min(2*t,3e5)}finally{e.scheduler.schedule(()=>a(n),n)}},n=async a=>{try{let t,n=await (t=e.user.userID(),r(t,!1));if(void 0!==n&&!s(a,n.rules,e.user.isSpooner(),e.user.isPremium(),e.user.experiments()))return}catch{}await e.persistenceManager.saveEvent({id:e.uuid(),createdAt:e.now(),userId:e.user.userID(),...a,info:{user:{...t,isSpooner:e.user.isSpooner(),isPremium:e.user.isPremium(),experiments:e.user.experiments()},app_version:e.appVersion,...a.info}})},o=async r=>{t={...t,...r},await e.persistenceManager.saveUserInfo(t)};return e.scheduler.schedule(()=>e.lockRunner("spidersenseSendEvents",()=>a(1e4)),1e4),{updateUserInfo:o,addEvent:n}},i=(e,t)=>e.categories.join("/")+(null!=t?`/${t}`:""),c=async e=>{let t=e.apiManager||function(e){return{setup:async t=>{var r,a,n;let s,o=(r=e.appId,`https://spidersense.bendingspoons.com/v1/public/setup/${r}`),i=`${o}?user_id=${t}&app_version=${e.appVersion}`;return await (a=fetch(i,{method:"GET",headers:{"Content-Type":"application/json"}}).then(e=>{if(!e.ok)throw Error("Received invalid /setup response!");return e.json()}),n=Error("/setup request timed out!"),Promise.race([a,new Promise((e,t)=>s=setTimeout(()=>t(n),5e3))]).finally(()=>clearTimeout(s)))},send:async(t,r)=>{var a;let n={url:`${(a=e.appId,`https://spidersense.bendingspoons.com/v2/public/apps/${a}/events`)}?should_sample=false`,body:{user_id:r,sent_at:e.now()/1e3,payloads:t.map(e=>({id:e.id,severity:e.severity,categories:e.categories,description:e.description,error_code:e.errorCode,created_at:e.createdAt/1e3,info:{...e.info}}))}};if(!(await fetch(n.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n.body)})).ok)throw Error("Received invalid response!")}}}({appId:e.bspId,appVersion:e.version,now:e.now||Date.now}),r=await o({uuid:e.uuid,now:e.now||Date.now,scheduler:e.scheduler??{schedule:(e,t)=>{setTimeout(e,t)}},persistenceManager:e.persistenceManager,apiManager:t,lockRunner:e.lockRunner??(async(e,t)=>{await t()}),setupResponseTtl:e.network.setupResponseTtl??0,user:e.user,canSync:e.network.canSync,eventProcessors:e.eventProcessors??[],setupResponseSessionTtl:e.network.setupResponseSessionTtl,appVersion:e.version}),a=((e,t)=>{let r=new Map,a=new Map,n=new Map,s=e=>{let t=a.get(e);return a.delete(e),t},o=e=>{let t=n.get(e);return n.delete(e),t},c=t=>{e.addEvent(t)};return{track:c,trackStart:(e,r)=>{a.set(i(e,r?.id),t()),r?.metadataForComplete&&n.set(i(e,r?.id),r.metadataForComplete),c({...e,categories:[...e.categories,"start"]})},trackComplete:(e,a)=>{let n=s(i(e,a)),u=o(i(e,a)),l=r.get(i(e,a));null!=n&&c({...e,categories:[...e.categories,"complete"],info:{...e.info,duration:t()-n,...void 0!==l&&{subEvents:Object.values(l).sort((e,t)=>e.start-t.start)},...void 0!==u&&{metadataFromStart:u}}})},trackFail:(e,a,n,u)=>{let l=s(i(e,a)),p=o(i(e,a)),d=r.get(i(e,a));null!=l&&c({...e,categories:[...e.categories,"fail"],...void 0!==n&&{description:n},...void 0!==u&&{errorCode:u},info:{...e.info,duration:t()-l,...void 0!==d&&{subEvents:Object.values(d).sort((e,t)=>
3e.start-t.start)},...void 0!==p&&{metadataFromStart:p}}})},trackCancel:(e,a,n)=>{let u=s(i(e,a)),l=o(i(e,a)),p=r.get(i(e,a));null!=u&&c({...e,categories:[...e.categories,"cancel"],...void 0!==n&&{description:n},info:{...e.info,duration:t()-u,...void 0!==p&&{subEvents:Object.values(p).sort((e,t)=>e.start-t.start)},...void 0!==l&&{metadataFromStart:l}}})},trackSubEventStart:(e,n,s)=>{let o=i(e,s);if(!a.has(o))return;let c=t();r.set(o,{...r.get(o),[n]:{name:n,start:c}})},trackSubEventComplete:(e,n,s)=>{let o=i(e,s);if(!a.has(o))return;let c=r.get(o)?.[n];if(c){let e=t()-c.start;r.set(o,{...r.get(o),[n]:{...c,duration:e}})}}}})(r,e.now||Date.now),n=(e,t)=>({...e,categories:[...t,...e.categories]}),s=e=>{let t=((e,t)=>({track:r=>e.track(n(r,t)),trackStart:(r,a)=>e.trackStart(n(r,t),a),trackComplete:(r,a)=>e.trackComplete(n(r,t),a),trackFail:(r,a,s,o)=>e.trackFail(n(r,t),a,s,o),trackCancel:(r,a,s)=>e.trackCancel(n(r,t),a,s),trackSubEventStart:(r,a,s)=>e.trackSubEventStart(n(r,t),a,s),trackSubEventComplete:(r,a,s)=>e.trackSubEventComplete(n(r,t),a,s)}))(a,e);return{track:t.track,trackStart:t.trackStart,trackComplete:t.trackComplete,trackFail:t.trackFail,trackCancel:t.trackCancel,trackSubEventStart:t.trackSubEventStart,trackSubEventComplete:t.trackSubEventComplete,updateUserInfo:r.updateUserInfo,withCategoriesPrefix:e=>s(e,t)}};return s([],a)}},85203:(e,t)=>{var r;!function(){"use strict";var a={}.hasOwnProperty;function n(){for(var e="",t=0;t<arguments.length;t++){var r=arguments[t];r&&(e=s(e,function(e){if("string"==typeof e||"number"==typeof e)return e;if("object"!=typeof e)return"";if(Array.isArray(e))return n.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var t="";for(var r in e)a.call(e,r)&&e[r]&&(t=s(t,r));return t}(r)))}return e}function s(e,t){return t?e?e+" "+t:e+t:e}e.exports?(n.default=n,e.exports=n):void 0===(r=(function(){return n}).apply(t,[]))||(e.exports=r)}()}}]); 4//# sourceMappingURL=7580-5dd51059f2252696.js.map 5//# debugId=e7e8e0e8-0f8b-5f0d-ade4-672c209e2f2f
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.