1'use strict'; 2importScripts('sw-analytics.js'); 3self.analytics.trackingId = 'G-W593ZSG28J'; 4 5try { 6 7 /* Replace below code with current site start*/ 8 9 10// 86acbd31cd7c09cf30acb66d2fbedc91daa48b86:1594362511.2451456 11// 86acbd31cd7c09cf30acb66d2fbedc91daa48b86:1724922914.5667512 12importScripts('https://aswpsdkus.com/notify/v1/ua-sdk.min.js') 13uaSetup.worker(self, { 14 15 defaultIcon: 'https://www.grandvelas.com/resourcefiles/pwa_images/grandvelas\u002D192x192.png', 16 defaultTitle: 'Grand Velas', 17 defaultActionURL: 'https://www.grandvelas.com/', 18 appKey: 'ZPirAuM6TnWTwR5KJ8sFTQ', 19 token: 'MTpaUGlyQXVNNlRuV1R3UjVLSjhzRlRROkRIX3k5eWVfcExuRTJfeElxYjRBc0V5Y2ZSOXVxSWZoeEJsSkRIQ0RwYkU', 20 vapidPublicKey: 'BM-CG3cuw5z1oL6eOdIEa_UC584hPRhGItLU3X9jOBmUZ1Z9vHBsQykpqjAcRavcIKBHPxJWr0U8n8kiHgjn20s=' 21,workerUrl: 'https://www.grandvelas.com/serviceworker.js'}) 22 23 24 /* Replace below code with current site end*/ 25} catch (err) { 26 /* console.log(err.message); */ 27} 28 29 30 31var cacheName = 'grandvelas2024-202610021614145970'; 32 33var filesToCache = [ 34'./', 35'./offline', 36'./dynamic/css/without-banner.aspx', 37'./dynamic/js/without-banner.aspx' 38]; 39 40var siteURL = "https://www.grandvelas.com/"; 41/* Install Service Worker*/ 42self.addEventListener('install', function (event) { 43 44 event.waitUntil( 45 /* Open the Cache*/ 46 caches.open(cacheName).then(function (cache) { 47 /* Add Files to the Cache*/ 48 return cache.addAll(filesToCache); 49 }) 50 ); 51}); 52 53 54/* Fired when the Service Worker starts up*/ 55self.addEventListener('activate', function (event) { 56 event.waitUntil( 57 caches.keys().then(function (cacheNames) { 58 return Promise.all(cacheNames.map(function (key) { 59 if (key !== cacheName) { 60 return caches.delete(key); 61 } 62 })); 63 }) 64 ); 65 return self.clients.claim(); 66 67}); 68 69 70self.addEventListener('fetch', function (event) { 71 // bypass cache for specific routes 72 if (/\/cms7\//.test(event.request.url) || /IsDraftPage=true/.test(event.request.url) || /reqsrc=clientlogin/.test(event.request.url) || /ccadmin\/cms/.test(event.request.url) || /googletagmanager/.test(event.request.url) || /content_editor/.test(event.request.url) || /api/.test(event.request.url) || /recaptcha/.test(event.request.url) || /.pdf/.test(event.request.url) || /weatherwidgethandler.ashx/.test(event.request.url) || /events/.test(event.request.url) || /serviceworker.js/.test(event.request.url)) {} 73 else { 74 // bypass cache for all post requests 75 if (event.request.method === 'POST') { 76 return; 77 } 78 // fetch cache-first for all resource types and external urls, fetch from cache if no network 79 if (navigator.onLine==false || event.request.url.indexOf(siteURL) == -1 || /.ico/.test(event.request.url) || /.woff/.test(event.request.url) || /.woff2/.test(event.request.url) || /.svg/.test(event.request.url) || /.png/.test(event.request.url) || /.bmp/.test(event.request.url) || /.jpeg/.test(event.request.url) || /.jpg/.test(event.request.url) || /.js/.test(event.request.url) || /.css/.test(event.request.url) || /.aspx/.test(event.request.url) || /.aspx/.test(event.request.url) || /\/image\//.test(event.request.url) || /\/images\//.test(event.request.url) || /\/images_noindex\//.test(event.request.url) || /\/resourcefiles\//.test(event.request.url) || /\/fonts\//.test(event.request.url)) { 80 event.respondWith( 81 caches.match(event.request) 82 .then(function (response) { 83 return response || fetchAndCache(event.request); 84 }) 85 ); 86 } 87 else { 88 // fetch network-first for all the pages if no network serve from cache 89 event.respondWith( 90 fromNetwork(event.request).catch(() => 91 caches.match(event.request) 92 .then(function (response) { 93 // server from cache 94 if (response != undefined) { 95 return response; 96 } 97 else { 98 // if cache not avaible during no network then show offline page 99 if (event.request.url.search("/amp") > -1) { 100 return caches.match('amp/offline'); 101 } 102 103 return caches.match('offline'); 104 } 105 106 }) 107 ) 108 ); 109 } 110 } 111}); 112 113// fetch the resource from the network 114const fromNetwork = (request) => 115 new Promise((fulfill, reject) => { 116 fetch(request).then(response => { 117 var res = response.clone(); 118 fulfill(response); 119 if (!response.type == 'basic') { 120 throw Error(response.statusText); 121 } 122 // caching the response for next request 123 caches.open(cacheName) 124 .then(function (cache) { 125 cache.put(request, res); 126 }); 127 }, reject); 128 });
129 130function fetchAndCache(url) { 131 return fetch(url) 132 .then(function (response) { 133 /* Check if we received a valid response*/ 134 135 if (!response.type == 'basic') { 136 throw Error(response.statusText); 137 } 138 return caches.open(cacheName) 139 .then(function (cache) { 140 cache.put(url, response.clone()); 141 return response; 142 }); 143 }) 144 .catch(function (error) { 145 146 // var checkstring1 = window.location.pathname; 147 if (url.url.search("/amp") > -1) { 148 return caches.match('amp/offline'); 149 150 } 151 152 return caches.match('offline'); 153 154 }); 155} 156 157self.addEventListener('push', function (event) { 158 159 self.analytics.trackEvent('pushmessage-received'); 160}); 161 162 163self.addEventListener('notificationclick', function (event) { 164 165 event.notification.close(); 166 var notification = event.notification; 167 var rc_data = event.notification.data; 168 /* console.log(JSON.stringify(rc_data));*/ 169 170 var tk = rc_data.channel_id; 171 var msgid = rc_data.data.extras.msgid; 172 var key1 = Object.keys(rc_data.action)[0]; 173 var url = rc_data.action[key1]; 174 var currentdate = encodeURIComponent(new Date()); 175 176 fetch('https://www.grandvelas.com/api/PushNotificationApi/notificationviewed?msgid=' + msgid + '&tokn=' + tk + '&cdate=' + currentdate).then(function (response) { 177 if (response.status !== 200) { 178 179 throw new Error(); 180 } 181 }) 182 183 if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1) { 184 /* Firefox no action*/ 185 186 event.waitUntil( 187 Promise.all([ 188 self.analytics.trackEvent('pushmessage-clicked') 189 ]) 190 ); 191 } else { 192 event.waitUntil( 193 Promise.all([ 194 clients.openWindow(url), 195 self.analytics.trackEvent('pushmessage-clicked') 196 ]) 197 ); 198 } 199 200 201 202 203 204}); 205 206 207 208 209self.addEventListener('notificationclose', function (event) { 210 event.notification.close(); 211 212});
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.