PageSourceSearch

https://www.suedwind-buchwelt.at/sw.js

js suedwind-buchwelt.at collected 2026-10-06 06:29:43 UTC 4,018 bytes, 118 lines download raw bytes

1'use strict';
2
3var expectedCaches = [ 'bm-core-v1', 'bm-pages', 'bm-assets' ];
4var c_pages = [ '/','/offline','/home' ];
5var c_core = [ '/css/styles.css?cee10459', '/css/style_bm.css?6702cbea', 'https://fonts.googleapis.com/css?family=Open+Sans+Condensed:300,700?59372dae', '/js/vendor/jquery.flexslider-min.js?66cd1602', '/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js?0d1d5c9a', '/js/vendor/jquery.jplayer.min.js?95af5642', '/js/vendor/jplayer.playlist.min.js?fefc2c68', '/js/main.js?fc460036' ];
6var c_assets = [  ];
7
8self.addEventListener('install', function(event) {
9  event.waitUntil(async function() {
10    const pages = await caches.open('bm-pages');
11    pages.addAll( c_pages );
12    const assets = await caches.open('bm-assets');
13    assets.addAll( c_assets );
14    caches.open('bm-core-v1').then(function(cache) {
15      var todo=c_core.slice();
16      cache.keys().then(function (keys) {
17        keys.map( req => {
18          var url=new URL(req.url);
19          if (url.origin==location.origin) url=url.pathname+url.search; else url=req.url;
20          if (todo.indexOf(url)>=0) todo.splice(todo.indexOf(url),1);
21        });
22      });
23      //console.log(todo);
24      return cache.addAll( todo );
25    }).then(function() {
26      return self.skipWaiting();
27    })
28  }());
29});
30
31self.addEventListener('activate', function(event) {
32  self.clients.claim();
33  console.log('activate');
34  event.waitUntil(Promise.all( [
35    caches.keys().then(function(cacheNames) {
36      return Promise.all(
37        cacheNames.map(function(cacheName) {
38          if (!/^bm-/.test(cacheName)) {
39            return;
40          }
41          if (expectedCaches.indexOf(cacheName) == -1) {
42            return caches.delete(cacheName);
43          }
44        })
45      );
46    })
47  ,caches.open('bm-core-v1').then(function(cache) {
48    cache.keys().then(function(items) {
49     items.map(item => {
50       var url=new URL(item.url);
51       if (url.origin==location.origin) url=url.pathname+url.search;
52       else url=item.url;
53       if (c_core.indexOf(url)==-1) {
54         console.log("del "+url);
55         cache.delete(item);
56       }
57     });
58    })
59  })
60  ] ) );
61});
62
63self.addEventListener('fetch', function(evt) {
64  var url=new URL(evt.request.url);
65  if (url.origin==location.origin) url=url.pathname+url.search; else url=evt.request.url;
66
67  if (c_core.find(el => el.split("?")[0] == url)) { 
68    console.log('core '+evt.request.url);
69    evt.respondWith(fromCache(evt.request,'bm-core-v1').catch(function() {
70      console.log('fallback net');
71      return fetch(evt.request);
72    }));
73  }
74  if (c_pages.find(el => el.split("?")[0] == url)) { 
75    console.log('page '+evt.request.url);
76    evt.respondWith(networkOrCache(evt.request,'bm-pages'));
77  }
78});
79
80function networkOrCache(request,cachename) {
81  return fromNetwork(request, 2500).catch(function () {
82    console.log('fallback cache');
83    return fromCache(request,cachename);
84  });
85}
86
87function fromCache(request, cachename) {
88  return caches.open(cachename).then(function (cache) {
89    return cache.match(request,{ignoreSearch:true,ignoreMethod:true,ignoreVary:true}).then(function (matching) {
90      return matching || Promise.reject('no-match');
91    });
92  });
93}
94
95function fromNetwork(request, timeout) {
96  return new Promise(function (fulfill, reject) {
97    var timeoutId = setTimeout(reject, timeout);
98    fetch(request).then(function (response) {
99      clearTimeout(timeoutId);
100      fulfill(response);
101    }, reject);
102  });
103}
104
105var FALLBACK =
106    '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="180" stroke-linejoin="round">' +
107    '  <path stroke="#DDD" stroke-width="25" d="M99,18 15,162H183z"/>' +
108    '  <path stroke-width="17" fill="#FFF" d="M99,18 15,162H183z" stroke="#eee"/>' +
109    '  <path d="M91,70a9,9 0 0,1 18,0l-5,50a4,4 0 0,1-8,0z" fill="#aaa"/>' +
110    '  <circle cy="138" r="9" cx="100" fill="#aaa"/>' +
111    '</svg>';
112
113function useFallback() {
114  return Promise.resolve(new Response(FALLBACK, { headers: {
115    'Content-Type': 'image/svg+xml'
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.