PageSourceSearch

https://www.natvit.fr/sw.js

js natvit.fr collected 2026-10-03 01:01:47 UTC 6,503 bytes, 236 lines download raw bytes

1/* eslint-disable */
2// documentation officielle: https://developers.google.com/web/tools/workbox/
3importScripts('/frontend/angular-1.3.15/serviceWorker/workbox-sw-3.5.0.js');
4
5if (!workbox) {
6	console.error(`Workbox didn't load`);
7} else {
8	// activer les console de debug
9	// workbox.setConfig({ debug: true });
10	const VERSION = 'v1.0';
11
12	const OFFLINE_PAGE =
13		'/frontend/angular-1.3.15/serviceWorker/views/offline.html';
14
15	var ROOT_URL = registration.scope.replace(/mobile\//gim, '');
16
17	/*
18	 * handleCacheParams
19	 *
20	 * clone une requette en retirant les parametre get de la requete qui gèrent le cache _= _t= et v=
21	 */
22	function handleCacheParams(request) {
23		var myUrl = new URL(request.url);
24		var isInternalRequest = request.url.indexOf(ROOT_URL) > -1;
25		var params = myUrl.searchParams;
26		if (
27			isInternalRequest &&
28			(params.has('_') || params.has('_t') || params.has('v'))
29		) {
30			params.delete('_');
31			params.delete('_t');
32			params.delete('v');
33			var url = myUrl.toString();
34			request = new Request(url, {
35				method: request.method,
36				headers: request.headers,
37				mode: request.mode,
38				credentials: request.credentials,
39				redirect: request.redirect,
40				referrer: request.referrer,
41				integrity: request.integrity,
42			});
43		}
44		return request;
45	}
46
47	/*
48	 * removeCacheGetParamsPlugin
49	 *
50	 * Retire les parametre GET envoyés par le front pour eviter que
51	 * le navigateur ne mette en cache les fichiers
52	 *
53	 * - retire le param lors du fetch vers le network
54	 * - renomme l'url de l'appel dans le cache après son insertion
55	 * - essaie de récupérer l'url sans les params dans le cache si fail
56	 */
57	const removeCacheGetParamsPlugin = {
58		requestWillFetch: async ({ request }) => {
59			return handleCacheParams(request);
60		},
61		cachedResponseWillBeUsed: async ({ request, cachedResponse }) => {
62			if (cachedResponse) {
63				return cachedResponse;
64			} else {
65				var req = handleCacheParams(request);
66				return caches.match(req.url);
67			}
68		},
69		cacheDidUpdate: async ({ cacheName, request }) => {
70			var myUrl = new URL(request.url);
71			var params = myUrl.searchParams;
72			if (params.get('_') || params.get('_t') || params.get('v')) {
73				params.delete('_');
74				params.delete('_t');
75				params.delete('v');
76				const freshResponse = await caches.match(request, { cacheName });
77				caches
78					.open(cacheName)
79					.then(function(cache) {
80						cache.delete(request.url);
81						return cache.put(myUrl.toString(), freshResponse);
82					})
83					.catch(function(e) {
84						return freshResponse;
85					});
86			}
87		},
88	};
89
90	// on lance le service worker de suite pour le client
91	workbox.skipWaiting();
92	workbox.clientsClaim();
93
94	// analytics
95	workbox.googleAnalytics.initialize();
96
97	// init des nom de cache
98	workbox.core.setCacheNameDetails({
99		prefix: 'oxatis',
100		suffix: VERSION,
101		precache: 'scripts',
102		runtime: 'runtime',
103	});
104
105	// ne pas toucher -- sera modifié par la tache gulp
106	workbox.precaching.precacheAndRoute([
107  {
108    "url": "/frontend/angular-1.3.15/modules/oxSharedCart/oxSharedCart.js",
109    "revision": "d946194bf8942e9cf917188ecc7bff64"
110  },
111  {
112    "url": "/frontend/angular-1.3.15/angularFramework.js",
113    "revision": "76515364679ab64b2032928e811eedeb"
114  },
115  {
116    "url": "/frontend/angular-1.3.15/lazyDirectives/all.js",
117    "revision": "7c9edad9576c01b379cc4831067c2a51"
118  },
119  {
120    "url": "/frontend/angular-1.3.15/css/oxApps.css",
121    "revision": "f1a521d2db3452cd3d9e51c004bc1e0d"
122  },
123  {
124    "url": "/frontend/angular-1.3.15/serviceWorker/views/offline.html",
125    "revision": "3d3d871594e3355ea018a06f567d06be"
126  }
127]);
128
129	// par défaut --> networkFirst + cache si 200 ou 404 (on ne cache pas les reponses 'opaques' ni les POST)
130	var defaultStrategy = workbox.strategies.networkFirst({
131		cacheName: 'oxatis-runtime-' + VERSION,
132		plugins: [
133			new workbox.cacheableResponse.Plugin({ statuses: [200, 404] }),
134			removeCacheGetParamsPlugin,
135		],
136	});
137	workbox.routing.setDefaultHandler({
138		handle: args => {
139			// si entete uniquement cache, on ne renvoie rien
140			if (
141				args.event.request.cache === 'only-if-cached' &&
142				args.event.request.mode !== 'same-origin'
143			) {
144				return;
145			}
146			if (args.event.request.method === 'GET') {
147				return defaultStrategy.handle(args);
148			}
149			return fetch(args.event.request);
150		},
151	});
152
153	const regAdmin = /\/(?:tk(.*)|ad(.*)|Login)\.asp/i;
154	const fnNetworkOnly = ({ event }) =>
155		// urls externes
156		(event.request.url.indexOf(ROOT_URL) === -1 &&
157			event.request.url.indexOf('.oxatis.com') === -1) ||
158		// page d'admin ou toolkit
159		(!!event.request.referrer && !!event.request.referrer.match(regAdmin)) ||
160		event.request.url.match(regAdmin);
161
162	workbox.routing.registerRoute(
163		fnNetworkOnly,
164		new workbox.strategies.NetworkOnly()
165	);
166
167	// script frontend divers + apps (hors précache qui ne seront pas rapellés)
168	workbox.routing.registerRoute(
169		/\/frontend(.*)\/angular/,
170		workbox.strategies.staleWhileRevalidate({
171			cacheName: 'oxatis-scripts-' + VERSION,
172			plugins: [removeCacheGetParamsPlugin],
173		})
174	);
175
176	// appels webservices
177	workbox.routing.registerRoute(
178		/\/ws\//,
179		workbox.strategies.networkFirst({
180			cacheName: 'oxatis-ws-' + VERSION,
181			plugins: [
182				new workbox.expiration.Plugin({
183					maxAgeSeconds: 4 * 24 * 60 * 60, // 4 Days
184				}),
185				removeCacheGetParamsPlugin,
186			],
187		})
188	);
189
190	// images
191	workbox.routing.registerRoute(
192		/\.(?:png|gif|jpg|jpeg|svg)$/,
193		workbox.strategies.cacheFirst({
194			cacheName: 'oxatis-images-' + VERSION,
195			plugins: [
196				new workbox.expiration.Plugin({
197					maxAgeSeconds: 30 * 24 * 60 * 60, // 30 Days
198				}),
199			],
200		})
201	);
202
203	// gestion des actions / pages de navigation
204	// --> networkFirst -> cache si pas de réseau --> page offline en dernier recours
205	const navigateHandler = workbox.strategies.networkFirst({
206		cacheName: 'oxatis-navigate-' + VERSION,
207	});
208	workbox.routing.registerRoute(
209		({ event }) => event.request.mode === 'navigate',
210		({ event }) => {
211			return navigateHandler
212				.handle({ event })
213				.then(rsp => {
214					return (
215						rsp ||
216						caches.match(OFFLINE_PAGE).then(function(response) {
217							var init = {
218								status: response.status,
219								statusText: response.statusText,
220								headers: {},
221							};
222							response.headers.forEach(function(v, k) {
223								init.headers[k] = v;
224							});
225							return response.text().then(function(body) {
226								return new Response(body, init);
227							});
228						})
229					);
230				})
231				.catch(() => {
232					return caches.match(OFFLINE_PAGE);
233				});
234		}
235	);
236}

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.