1'use strict';var pushData;var afterCallback;var callbackUrl='https://notification.lumeflow.ai/subscription/callback';function logConsoleError(message){var consoleType=typeof console;if(consoleType!=='undefined'&&console&&console.error){console.error(message)}} 2function parseJSON(text){var data={};if('string'===typeof text){try{data=JSON.parse(text);if('object'!==typeof data){data={}}}catch(e){logConsoleError(e)}}else if('object'===typeof text){data=text} 3return data} 4function createRequestUrl(callback,event){if(pushData&&pushData.id){var request=callbackUrl+'?id='+pushData.id;if(event){request+='&event='+event} 5if('function'!==typeof fetch||'function'!==typeof Request){return!1} 6try{var buildRequest=new Request(request,{mode:'no-cors',headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',}});fetch(buildRequest)}catch(e){console.error(e)}} 7if('function'===typeof callback){callback()}} 8function pushEventCallback(event){var data=parseJSON(event.data.text());if(!data||!data.id||!data.title||!data.body){return} 9pushData=data;afterCallback=null;createRequestUrl(null,'show');var title=data.title,options={body:data.body};if(data.icon){options.icon=data.icon} 10if(data.badge){options.badge=data.badge} 11if(data.requireInteraction){options.requireInteraction=data.requireInteraction} 12if(data.image){options.image=data.image} 13if(data.actions){options.actions=data.actions} 14if(data.data){options.data=data.data} 15if(data.dir){options.dir=data.dir} 16if(data.tag){options.tag=data.tag} 17var notificationPromise=self.registration.showNotification(title,options);event.waitUntil(notificationPromise)} 18function clickEventCallback(event){event.notification.close();var jumpUrl=event.notification.data.link;switch(event.action){case 'coffee':jumpUrl=event.notification.data.coffee;break;case 'doughnut':jumpUrl=event.notification.data.doughnut;break;case 'gramophone':jumpUrl=event.notification.data.gramophone;break;case 'atom':jumpUrl=event.notification.data.atom;break;default:break} 19if(jumpUrl&&/^https?:\/\//.test(jumpUrl)){afterCallback=function(){clients.openWindow(jumpUrl)}} 20event.waitUntil(createRequestUrl(afterCallback,'click'))} 21function closeEventCallback(){createRequestUrl(null,'close')} 22self.addEventListener('push',pushEventCallback);self.addEventListener('notificationclick',clickEventCallback);self.addEventListener('notificationclose',closeEventCallback)
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.