PageSourceSearch

https://www.sundancenow.com/sw.js?ver=2.0.8

js sundancenow.com collected 2026-09-24 08:51:12 UTC 2,496 bytes, 118 lines download raw bytes

1const cacheName = 'sundancenow.com-site-cache';
2const appName = 'sundance';
3const assets = '^http?s:\/\/(local|dev|staging|pre-prod|www).sundancenow.com\/.*.(js|css|woff|woff2|otf|png|svg|jpg|jpeg)$';
4const cachePatterns = [
5// Google fonts CSS
6'http?s:\/\/fonts.googleapis.com/.*',
7// Google fonts static files
8'http?s:\/\/fonts.gstatic.com/.*',
9// Site assets
10assets,
11];
12const isCachable = function (request) {
13for (let i = 0; i < cachePatterns.length; i++) {
14if (
15(new RegExp(cachePatterns[i])).test(request.url) &&
16request.method === 'GET' &&
17request.url.indexOf('pixel') === -1
18) {
19return true;
20}
21}
22return false;
23};
24self.skipWaiting().then(r => r);
25self.addEventListener('fetch', function (event) {
26if (isCachable(event.request)) {
27event.respondWith(
28caches.open(cacheName).then(function (cache) {
29return cache.match(event.request).then(function (response) {
30return response || fetch(event.request).then(function (response) {
31try {
32if(response.status === 200) {
33cache.put(event.request, response.clone());
34}
35} catch (e) {
36clearCache();
37}
38return response;
39});
40});
41})
42);
43}
44});
45self.addEventListener('activate', e => {
46e.waitUntil(clearCache());
47e.waitUntil(updateFromManifest());
48return self.clients.claim();
49});
50
51const updateFromManifest = () => {
52fetch(
53'/app/themes/rlje/subthemes/' + appName + '/src/manifest.json',
54{
55method: 'GET',
56redirect: 'follow'
57}
58)
59.then(response => response.text())
60.then(result => {
61fetchManifestFiles(result);
62})
63.catch(error => {
64console.log('error', error);
65});
66};
67
68const fetchManifestFiles = (source) => {
69try {
70const data = JSON.parse(source);
71for (const property in data) {
72if (data.hasOwnProperty(property)) {
73let rewritten = () => {
74const exclusions = ['/favicon.ico', '/robots.txt', '/svg/svg-map.svg'];
75return exclusions.indexOf(data[property]) !== -1 ||
76data[property].indexOf('fonts') !== -1;
77
78};
79let url = rewritten() ? data[property] : '/app/themes/rlje/subthemes/' + appName + data[property];
80fetch(
81url,
82{
83method: 'GET',
84redirect: 'follow'
85}
86)
87.then(response => saveToCache(url, response))
88.catch(error => console.log('error', error));
89}
90}
91} catch (e) {
92console.log(e);
93}
94};
95
96const saveToCache = (url, response) => {
97try {
98caches.open(cacheName).then(function (cache) {
99try {
100cache.put(url, response.clone());
101} catch (e) {
102console.log(e);
103}
104});
105} catch (e) {
106console.log(e);
107}
108};
109
110const clearCache = () => {
111caches.keys().then(keyList => {
112return Promise.all(keyList.map(key => {
113if (key !== cacheName) {
114return caches.delete(key);
115}
116}));
117});
118};

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.