PageSourceSearch

https://www.cdn77.com/sw.js

js cdn77.com collected 2026-10-02 02:32:52 UTC 14,935 bytes, 170 lines download raw bytes

1/// <reference no-default-lib="true"/>
2/// <reference lib="esnext" />
3/// <reference lib="webworker" />
4
5// replaced in process-service-worker.js
6const VERSION = 'e6b80a92';
7
8const PRECACHE = `precache-${VERSION}`;
9const RUNTIME = `runtime-${VERSION}`;
10
11const FILE_WHITELIST = /.*\.(woff|woff2|webp)$/;
12
13// A list of local resources we always want to be cached.
14const PRECACHE_URLS = [
15  '/favicon.ico',
16  '/site.webmanifest',
17  '/android-chrome-192x192.png',
18  '/_next/static/chunks/0-uep9dxb7obp.js','/_next/static/chunks/0-w0uj17hf5w2.css','/_next/static/chunks/01jy_9ice6cbn.js','/_next/static/chunks/05yahk1u37okx.js','/_next/static/chunks/06cv6zmtqssdm.js','/_next/static/chunks/0b45prlzdj--w.css','/_next/static/chunks/0cz1d0mv5g_q7.js','/_next/static/chunks/0eqptb8vqnyp_.js','/_next/static/chunks/0fuhe_a_nft0h.js','/_next/static/chunks/0kb1m-jtf4ya_.css','/_next/static/chunks/0l61pd443zg6h.js','/_next/static/chunks/0m24t1qk1l2vg.js','/_next/static/chunks/0msxr90chbbfm.js','/_next/static/chunks/0nzq0pg96wsxf.js','/_next/static/chunks/0ppdadw1aza2v.css','/_next/static/chunks/0qg86ooiq5sb5.css','/_next/static/chunks/0qyggj26xcivo.css','/_next/static/chunks/0rm27ft1w_d75.css','/_next/static/chunks/0xabw_fpcgn-t.css','/_next/static/chunks/0yppd1pshiu7l.js','/_next/static/chunks/0z34oh2kov875.js','/_next/static/chunks/0z_okp0i2xdkd.js','/_next/static/chunks/0zw3jw8_7k660.js','/_next/static/chunks/10vs4u9ome1si.js','/_next/static/chunks/1_h0lhl9oo1-1.js','/_next/static/chunks/1axc6rqcrw47z.js','/_next/static/chunks/1davaz-j0gi7_.js','/_next/static/chunks/1ddqez3s38m6y.js','/_next/static/chunks/1fh8-kqglo6_i.css','/_next/static/chunks/1gqkxlohz9oa6.js','/_next/static/chunks/1i2kjdd947qu4.css','/_next/static/chunks/1ihepgnv0z0f6.js','/_next/static/chunks/1j9rb9xi1hkvh.js','/_next/static/chunks/1k2knzocwtz92.js','/_next/static/chunks/1ksp47uc67hdz.css','/_next/static/chunks/1kt6ximg4keew.js','/_next/static/chunks/1mvps63h7-p20.js','/_next/static/chunks/1p9n2orzf4o43.js','/_next/static/chunks/1q-0jam7598ti.js','/_next/static/chunks/1s_f7x7czvg9m.js','/_next/static/chunks/1xbj3dxg8yfqb.js','/_next/static/chunks/1y3s70uq-9bxq.css','/_next/static/chunks/1zkxq8s6-7s2-.js','/_next/static/chunks/2-2rsel4m_s6p.css','/_next/static/chunks/21r9078hjmp74.js','/_next/static/chunks/2481xdt83bya2.js','/_next/static/chunks/25akvh8i8xkjb.js','/_next/static/chunks/25v19jlr-uvke.js','/_next/static/chunks/2a31h1_7qb0f3.js','/_next/static/chunks/2b9ol0uzptcau.css','/_next/static/chunks/2domk_zbzxkui.css','/_next/static/chunks/2duti4p5--itz.js','/_next/static/chunks/2ek7jvk2t69-l.js','/_next/static/chunks/2ezrg7xgtk48b.js','/_next/static/chunks/2fdb81dub-0v2.js','/_next/static/chunks/2gnuycrbuk43-.js','/_next/static/chunks/2i7iqi9g4x6mn.css','/_next/static/chunks/2jmf5qi_ssh1e.css','/_next/static/chunks/2m990hxb0j8m_.js','/_next/static/chunks/2nwlt5hai_5ov.js','/_next/static/chunks/2orl-5qutkaqu.css','/_next/static/chunks/2p7mumw_drvoy.css','/_next/static/chunks/2qcxruvqnvqym.css','/_next/static/chunks/2t3s45kx219tt.js','/_next/static/chunks/2u92d4gy7m4om.css','/_next/static/chunks/2v5hw_mw9wggq.js','/_next/static/chunks/2vfg5wcpfnb-j.js','/_next/static/chunks/2wt90w-_ob76x.js','/_next/static/chunks/2yhqqrszl-k9m.css','/_next/static/chunks/2yx2bshebr_o6.js','/_next/static/chunks/3-ezcs9q3bemy.js','/_next/static/chunks/31bnmc2rzfwz9.js','/_next/static/chunks/31q1lt1-s19hl.js','/_next/static/chunks/32ugovpc5shaz.css','/_next/static/chunks/33eyuqee5r0ve.js','/_next/static/chunks/34jxf_ucwkhz5.js','/_next/static/chunks/36_weklvgfpi4.js','/_next/static/chunks/380p6uoqnw3ia.js','/_next/static/chunks/39g_i06azpov6.css','/_next/static/chunks/3b4a0prjhorxh.js','/_next/static/chunks/3c04j1y3vog1q.css','/_next/static/chunks/3dceioc3687f4.css','/_next/static/chunks/3eauo370j09ts.js','/_next/static/chunks/3eyqq-l9kjp2w.js','/_next/static/chunks/3f8dc0grutz_o.js','/_next/static/chunks/3g3y0pb-lvvah.js','/_next/static/chunks/3g9h1gcgacjlj.js','/_next/static/chunks/3h5_hsbun9alc.js','/_next/static/chunks/3id_2ubx_x12m.css','/_next/static/chunks/3k3h8a5cs4dg8.js','/_next/static/chunks/3kgeizlcjb4ya.css','/_next/static/chunks/3kmniz6di69z_.js','/_next/static/chunks/3nwe5efrrqdxk.js','/_next/static/chunks/3pb1kkjke_91-.js','/_next/static/chunks/3q79lmo7517-w.js','/_next/static/chunks/3r_8ghc6ld8sv.js','/_next/static/chunks/3uesybnfvncbz.css','/_next/static/chunks/3wtlyrcav0a9w.js','/_next/static/chunks/3
18yda6os6a8qx7.js','/_next/static/chunks/41xeewtyqx7wl.js','/_next/static/chunks/44konl5zlikzz.css','/_next/static/chunks/turbopack-3jhlqgd5iu3oi.js','/_next/static/media/aeryn.0rpwmcqvgz-fv.svg','/_next/static/media/africa-map.156gu4efa7fre.svg','/_next/static/media/airtel.25exyesksqf-a.svg','/_next/static/media/algarTelecom.0ikmgoet80o4s.svg','/_next/static/media/arelion.2aisxhtjwvzzc.svg','/_next/static/media/att.0na9b5kthi-aq.svg','/_next/static/media/avast.0cifx5y64ttlt.svg','/_next/static/media/banijay.1-snfp5_b1v_i.svg','/_next/static/media/banijay.378z7w4ctj-o8.svg','/_next/static/media/bell.2-kcd6g92o6px.svg','/_next/static/media/bigLinux.0-n1l8poj89wb.svg','/_next/static/media/biglobe.02vqi6lu71wst.svg','/_next/static/media/blender.1aj4vlggddf0i.svg','/_next/static/media/blender.1blqp7b_2cha7.svg','/_next/static/media/bt.1_ok8r77bobun.svg','/_next/static/media/cachyOs.1wl05hxt1p79_.svg','/_next/static/media/capterra.12jpmolqyp3-k.svg','/_next/static/media/cdn77.05e7ckk5de-13.svg','/_next/static/media/cdn77.16nxa5h2x1djv.svg','/_next/static/media/cdn77.2ks2l-8t7xxo3.svg','/_next/static/media/centos.1bhkcysajyyez.svg','/_next/static/media/charter.3_6rl4pg04rqu.svg','/_next/static/media/circles.3rw96d1ywpmbf.svg','/_next/static/media/claro.0y5wlr4m2yf_t.svg','/_next/static/media/cloudstack.1ngtan714ko40.svg','/_next/static/media/cogent.2rc1v6tpmdxp1.svg','/_next/static/media/comcast.2ufmmvpfgzspn.svg','/_next/static/media/coreBackBone.06zhtmaxqi3v9.svg','/_next/static/media/cox.1ff8schghai6r.svg','/_next/static/media/crozdesk.23-irkj3j0j91.svg','/_next/static/media/cta-lines.09v5ehjvsdjh2.svg','/_next/static/media/cwBusiness.3t6qt124u9a-a.svg','/_next/static/media/datapacket.293i6umnucl8-.svg','/_next/static/media/datapacket.3kl8-fky9u0ld.svg','/_next/static/media/dathost.2c5ja0mu8na_o.svg','/_next/static/media/deepin.43blu6fo0gb_9.svg','/_next/static/media/docomo.3ywqk7lonh3wr.svg','/_next/static/media/edge-computing.2_7w3-3ckh5zh.svg','/_next/static/media/esa.09ypwj31s1s8i.svg','/_next/static/media/esa.2z77rerov4v91.svg','/_next/static/media/eset.2-sar_oll2nkn.svg','/_next/static/media/eset.33yo5mpa18aiz.svg','/_next/static/media/esl.2kdwoi48mnqw7.svg','/_next/static/media/esl.2ur0vkbymb64g.svg','/_next/static/media/execution.1pv5iblkd2egs.svg','/_next/static/media/fedora.1l7gi6oh062hx.svg','/_next/static/media/floNetworks.0mr7lq-xh5-zu.svg','/_next/static/media/g2crowd.1yexrundaryzd.svg','/_next/static/media/gaijin.2_c1_if6rdd-7.svg','/_next/static/media/gentooLinux.1yy0bawryv2_d.svg','/_next/static/media/globe.382p6tnvtj626.svg','/_next/static/media/globenet.0tsmfylrwbx-m.svg','/_next/static/media/gnome.0imzoav_40_ri.svg','/_next/static/media/gnome.0s_jaflgh6ki4.svg','/_next/static/media/google.1galmpb8mtyo0.svg','/_next/static/media/gtt.35zgo5tlws0i0.svg','/_next/static/media/iij.0hcvopuxjge9s.svg','/_next/static/media/infrastructure.2hmqzk326b2bs.svg','/_next/static/media/jupiter.1znpa767osimx.svg','/_next/static/media/jupitercom.1ii605ytmv2h5.svg','/_next/static/media/kddi.2pamy7n8phxxl.svg','/_next/static/media/kde.3ubn4_b73ppvi.svg','/_next/static/media/kt.0--5zrvtrforr.svg','/_next/static/media/letsEncrypt.1dmea97l6bu3t.svg','/_next/static/media/libertyGlobal.1ojzla18-n_uy.svg','/_next/static/media/lineBottom.3pi9wmo-jel8t.svg','/_next/static/media/lineTop.0sm8xj011jl61.svg','/_next/static/media/lumen.2vek3o_d_njl6.svg','/_next/static/media/macaroniOs.34s-5bx213x-v.svg','/_next/static/media/manjaro.09oiyksvwhszm.svg','/_next/static/media/manjaro.3h6m9t3v1vd6g.svg','/_next/static/media/map.1gha3wvo554zt.svg','/_next/static/media/map.1ibyjveh71t5e.svg','/_next/static/media/map.3h2kpjni8s_7x.svg','/_next/static/media/map.43m5drs_rsu6e.svg','/_next/static/media/masomo.39wfs2qft_we4.svg','/_next/static/media/meo.1861_f77f9tzn.svg','/_next/static/media/microOrm.32whj3ji66rga.svg','/_next/static/media/network.0in39mynh5t_6.svg','/_next/static/media/nodecraft.3i2yxlptr5cfb.svg','/_next/static/media/ntt.296tvrfu_er68.svg','/_next/static/media/nttCommunications.3-bm8ktv89yae.svg','/_next/static/media/nttDocomo.3di06s1wdrgqc.svg','/_next/static/media/orange.0bizatetbzufa.svg','/_next/static/media/pccw.2bjygb59kjw10.svg','/_next/static/media/phpMyAdmin.0zt-omiqmi-1l.svg','/_next/static/media/rakuten.16g5v4wj31g_8.svg','/_next/static/media/rating.24xikj46izz93.svg','/_next/static/media/reliance.0connqqs-hm5v.svg','/_next/static/media/rogers.3cpizvu6u_erj.svg','/_next/static/media/seaborn.2fh54yd-0w_2p.svg','/_next/static/media/shaw.1r-3oqf1gdbuw.svg','/_next/static/media/skTelecom.2dp_07_jmnhjh.svg','/_next/static/media/sky.18p8enh6ltlvj.svg','/_next/static/media/sleepiest.205uws2v1s65z.svg','/_next/static/media/softbank.32dq4qs-mbejz.svg','/_next/static/media/sparkle.2wq0danonuhda.svg','/_next/static/media/sport1.2gbu8439ip7vs.svg','/_next/static/media/sport1.2h75rn2tcajty.svg','/_next/static/media/starz.2l3ucw41qo-qq.svg','/_next/static/media/swisscom.2i1x2du97zqlk.svg','/_next/static/media/tata.08h3tmeoy_z8m.svg','/_next/static/media/telstra.30x15488i8b11.svg','/_next/static/media/telus.0lmj_t_7zs6wk.svg','/_next/static/media/telxius.0rzzhd6edyc8x.svg','/_next/static/media/tmobile.2vc5zstymegu1.svg','/_next/static/media/totalplay.0nr1zbli_3-8o.svg','/_next/static/media/udemy.0tcx2euj-snr7.svg','/_next/static/media/udemy.2awd1i7k2zem7.svg','/_next/static/media/videotron.293kf8c1csoyi.svg','/_next/static/media/vodafone.3z4j1z4qncys8.svg','/_next/static/media/workflow.3_oh8ieoorl3c.svg',
19];
20
21const LOG_ENABLED = false;
22const log = (message, color) => {
23  if (!LOG_ENABLED) {
24    return;
25  }
26
27  console.log(
28    '%c[SW] %s',
29    `background: ${color}; color: white; font-weight: bold; padding: 2px 6px; border-radius: 3px;`,
30    message,
31  );
32};
33
34// The install handler takes care of precaching the resources we always need.
35self.addEventListener('install', event => {
36  log(`🚀 Service Worker v${VERSION} installing...`, '#2196F3');
37  event.waitUntil(
38    caches
39      .open(PRECACHE)
40      .then(cache => {
41        log(`📦 Precache opened: ${PRECACHE}`, '#4CAF50');
42        return cache.addAll(PRECACHE_URLS);
43      })
44      .then(() => {
45        log(`✅ Precache complete (${PRECACHE_URLS.length} files)`, '#4CAF50');
46        return self.skipWaiting();
47      }),
48  );
49});
50
51// The activate handler takes care of cleaning up old caches.
52self.addEventListener('activate', event => {
53  const currentCaches = [PRECACHE, RUNTIME];
54
55  log(`🔄 Service Worker activating...`, '#FF9800');
56  log(`📋 Current caches: ${currentCaches.join(', ')}`, '#9C27B0');
57
58  event.waitUntil(
59    caches
60      .keys()
61      .then(cacheNames => {
62        const cachesToDelete = cacheNames.filter(cacheName => !currentCaches.includes(cacheName));
63        if (cachesToDelete.length > 0) {
64          log(`🗑️  Found ${cachesToDelete.length} old caches to delete:`, '#f44336');
65          cachesToDelete.forEach(cache => log(`   - ${cache}`, '#f44336'));
66        } else {
67          log(`✨ No old caches found`, '#4CAF50');
68        }
69        return cachesToDelete;
70      })
71      .then(cachesToDelete => {
72        return Promise.all(
73          cachesToDelete.map(cacheToDelete => {
74            log(`🗑️  Deleting old cache: ${cacheToDelete}`, '#f44336');
75            return caches.delete(cacheToDelete);
76          }),
77        );
78      })
79      .then(() => {
80        log(`✅ Service Worker activated and ready`, '#4CAF50');
81        return self.clients.claim();
82      }),
83  );
84});
85
86// The fetch handler serves responses for same-origin resources from a cache.
87// If no response is found, it populates the runtime cache with the response
88// from the network before returning it to the page.
89self.addEventListener('fetch', event => {
90  if (event.request.method !== 'GET') {
91    log(`⚙️  Non-GET request: ${event.request.method} ${event.request.url}`, '#607D8B');
92    return;
93  }
94
95  const fetchUrl = event.request.url;
96  const url = new URL(fetchUrl);
97
98  // request.url is absolute, so API requests must be matched on the pathname.
99  if (url.pathname.startsWith('/api')) {
100    log(`⚙️  API request: ${event.request.url}`, '#607D8B');
101    return;
102  }
103
104  // Don't try to handle anything besides http(s) (e.g. browser extension request or data URIs)
105  if (!url.protocol.startsWith('http')) {
106    log(`⚙️  Non-HTTP request: ${event.request.url}`, '#607D8B');
107    return;
108  }
109
110  // Do not handle navigation requests
111  if (event.request.mode === 'navigate') {
112    log(`⚙️  Navigation request: ${event.request.url}`, '#607D8B');
113    return;
114  }
115
116  // Skip cross-origin requests, like those for Google Analytics.
117  if (event.request.url.startsWith(self.location.origin)) {
118    event.respondWith(
119      caches.match(event.request).then(async cachedResponse => {
120        if (cachedResponse) {
121          log(`📦 Cache HIT: ${event.request.url}`, '#4CAF50');
122          return cachedResponse;
123        }
124
125        log(`🌐 Cache MISS: ${event.request.url}`, '#FF9800');
126
127        return caches.open(RUNTIME).then(cache => {
128          return fetch(event.request)
129            .then(response => {
130              if (
131                /\./.test(url.pathname) &&
132                !/\.html?$/.test(url.pathname) &&
133                response.headers.get('content-type')?.startsWith('text/html')
134              ) {
135                log(
136                  `Not in cache, tried network and received unexpected HTML - triggering page reload: ${url.pathname}`,
137                  '#f44336',
138                );
139                return response;
140              }
141
142              if (response.type === 'opaque') {
143                log(`⚠️  Opaque response (CORS): ${fetchUrl}`, '#FF9800');
144                return response;
145              }
146
147              if (response.status !== 200) {
148                log(`⚠️  Non-200 response (${response.status}): ${fetchUrl}`, '#FF9800');
149                return response;
150              }
151
152              if (!FILE_WHITELIST.test(url.pathname)) {
153                log(`📝 File type not cached: ${fetchUrl}`, '#607D8B');
154                return response;
155              }
156
157              log(`💾 Caching response: ${fetchUrl}`, '#9C27B0');
158              // Put a copy of the response in the runtime cache.
159              return cache.put(event.request, response.clone()).then(() => {
160                return response;
161              });
162            })
163            .catch(err => {
164              log(`❌ Network error: ${fetchUrl}`, '#f44336');
165            });
166        });
167      }),
168    );
169  }
170});

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.