serwist 9.0.5 → 9.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2018 Google LLC, 2019 ShadowWalker w@weiw.io https://weiw.io, 2023 Serwist
3
+ Copyright (c) 2018-2023 Google LLC, 2019-2023 ShadowWalker w@weiw.io https://weiw.io, 2020-2023 Anthony Fu <https://github.com/antfu>, 2023-PRESENT Serwist
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/dist/Serwist.d.ts CHANGED
@@ -3,8 +3,8 @@ import { type HTTPMethod } from "./constants.js";
3
3
  import { type GoogleAnalyticsInitializeOptions } from "./lib/googleAnalytics/initializeGoogleAnalytics.js";
4
4
  import { type PrecacheFallbackEntry } from "./lib/precaching/PrecacheFallbackPlugin.js";
5
5
  import { Strategy } from "./lib/strategies/Strategy.js";
6
- import type { RouteHandler, RouteHandlerCallback, RouteHandlerCallbackOptions, RouteMatchCallback, RouteMatchCallbackOptions, SerwistPlugin } from "./types.js";
7
- import type { PrecacheRouteOptions, RuntimeCaching } from "./types.js";
6
+ import type { PrecacheOptions, RouteHandler, RouteHandlerCallback, RouteHandlerCallbackOptions, RouteMatchCallback, RouteMatchCallbackOptions } from "./types.js";
7
+ import type { RuntimeCaching } from "./types.js";
8
8
  import type { CleanupResult, InstallResult, PrecacheEntry } from "./types.js";
9
9
  export interface FallbackEntry extends PrecacheFallbackEntry {
10
10
  }
@@ -14,48 +14,6 @@ export interface FallbacksOptions {
14
14
  */
15
15
  entries: FallbackEntry[];
16
16
  }
17
- export interface PrecacheOptions extends PrecacheRouteOptions {
18
- /**
19
- * The cache used for precaching.
20
- */
21
- cacheName?: string;
22
- /**
23
- * Whether outdated caches should be removed.
24
- *
25
- * @default false
26
- */
27
- cleanupOutdatedCaches?: boolean;
28
- /**
29
- * The number of precache requests that should be made concurrently.
30
- *
31
- * @default 10
32
- */
33
- concurrency?: number;
34
- /**
35
- * Whether to attempt to get the response from the network if there's
36
- * a precache miss.
37
- */
38
- fallbackToNetwork?: boolean;
39
- /**
40
- * An URL that should point to a HTML file with which navigation requests for URLs that aren't
41
- * precached will be fulfilled.
42
- */
43
- navigateFallback?: string;
44
- /**
45
- * URLs that should be allowed to use the `navigateFallback` handler.
46
- */
47
- navigateFallbackAllowlist?: RegExp[];
48
- /**
49
- * URLs that should not be allowed to use the `navigateFallback` handler. This takes precedence
50
- * over `navigateFallbackAllowlist`.
51
- */
52
- navigateFallbackDenylist?: RegExp[];
53
- /**
54
- * Plugins to use when precaching as well as responding to fetch
55
- * events for precached assets.
56
- */
57
- plugins?: SerwistPlugin[];
58
- }
59
17
  export interface SerwistOptions {
60
18
  /**
61
19
  * A list of URLs that should be cached.
@@ -1 +1 @@
1
- {"version":3,"file":"Serwist.d.ts","sourceRoot":"","sources":["../src/Serwist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Serwist.d.ts","sourceRoot":"","sources":["../src/Serwist.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { f as finalAssertExports, l as logger, D as Deferred, g as getFriendlyURL, S as SerwistError, t as timeout, d as cacheMatchIgnoreParams, e as executeQuotaErrorCallbacks, c as cacheNames, h as canConstructResponseFromBodyStream } from './waitUntil.js';
1
+ import { f as finalAssertExports, l as logger, D as Deferred, S as SerwistError, g as getFriendlyURL, t as timeout, d as cacheMatchIgnoreParams, e as executeQuotaErrorCallbacks, c as cacheNames, h as canConstructResponseFromBodyStream } from './waitUntil.js';
2
2
  import { openDB } from 'idb';
3
3
 
4
4
  const defaultMethod = "GET";
@@ -261,14 +261,9 @@ class StrategyHandler {
261
261
  async fetch(input) {
262
262
  const { event } = this;
263
263
  let request = toRequest(input);
264
- if (request.mode === "navigate" && event instanceof FetchEvent && event.preloadResponse) {
265
- const possiblePreloadResponse = await event.preloadResponse;
266
- if (possiblePreloadResponse) {
267
- if (process.env.NODE_ENV !== "production") {
268
- logger.log(`Using a preloaded navigation response for '${getFriendlyURL(request.url)}'`);
269
- }
270
- return possiblePreloadResponse;
271
- }
264
+ const preloadResponse = await this.getPreloadResponse();
265
+ if (preloadResponse) {
266
+ return preloadResponse;
272
267
  }
273
268
  const originalRequest = this.hasCallback("fetchDidFail") ? request.clone() : null;
274
269
  try {
@@ -471,6 +466,18 @@ class StrategyHandler {
471
466
  destroy() {
472
467
  this._handlerDeferred.resolve(null);
473
468
  }
469
+ async getPreloadResponse() {
470
+ if (this.event instanceof FetchEvent && this.event.request.mode === "navigate" && "preloadResponse" in this.event) {
471
+ const possiblePreloadResponse = await this.event.preloadResponse;
472
+ if (possiblePreloadResponse) {
473
+ if (process.env.NODE_ENV !== "production") {
474
+ logger.log(`Using a preloaded navigation response for '${getFriendlyURL(this.event.request.url)}'`);
475
+ }
476
+ return possiblePreloadResponse;
477
+ }
478
+ }
479
+ return undefined;
480
+ }
474
481
  async _ensureResponseSafeToCache(response) {
475
482
  let responseToCache = response;
476
483
  let pluginsUsed = false;
@@ -1284,6 +1291,10 @@ class PrecacheStrategy extends Strategy {
1284
1291
  this.plugins.push(PrecacheStrategy.copyRedirectedCacheableResponsesPlugin);
1285
1292
  }
1286
1293
  async _handle(request, handler) {
1294
+ const preloadResponse = await handler.getPreloadResponse();
1295
+ if (preloadResponse) {
1296
+ return preloadResponse;
1297
+ }
1287
1298
  const response = await handler.cacheMatch(request);
1288
1299
  if (response) {
1289
1300
  return response;
package/dist/index.js CHANGED
@@ -169,6 +169,37 @@ class PrecacheCacheKeyPlugin {
169
169
  };
170
170
  }
171
171
 
172
+ const parsePrecacheOptions = (serwist, precacheOptions = {})=>{
173
+ const { cacheName: precacheCacheName, plugins: precachePlugins = [], fetchOptions: precacheFetchOptions, matchOptions: precacheMatchOptions, fallbackToNetwork: precacheFallbackToNetwork, directoryIndex: precacheDirectoryIndex, ignoreURLParametersMatching: precacheIgnoreUrls, cleanURLs: precacheCleanUrls, urlManipulation: precacheUrlManipulation, cleanupOutdatedCaches, concurrency = 10, navigateFallback, navigateFallbackAllowlist, navigateFallbackDenylist } = precacheOptions ?? {};
174
+ return {
175
+ precacheStrategyOptions: {
176
+ cacheName: cacheNames$1.getPrecacheName(precacheCacheName),
177
+ plugins: [
178
+ ...precachePlugins,
179
+ new PrecacheCacheKeyPlugin({
180
+ precacheController: serwist
181
+ })
182
+ ],
183
+ fetchOptions: precacheFetchOptions,
184
+ matchOptions: precacheMatchOptions,
185
+ fallbackToNetwork: precacheFallbackToNetwork
186
+ },
187
+ precacheRouteOptions: {
188
+ directoryIndex: precacheDirectoryIndex,
189
+ ignoreURLParametersMatching: precacheIgnoreUrls,
190
+ cleanURLs: precacheCleanUrls,
191
+ urlManipulation: precacheUrlManipulation
192
+ },
193
+ precacheMiscOptions: {
194
+ cleanupOutdatedCaches,
195
+ concurrency,
196
+ navigateFallback,
197
+ navigateFallbackAllowlist,
198
+ navigateFallbackDenylist
199
+ }
200
+ };
201
+ };
202
+
172
203
  class Serwist {
173
204
  _urlsToCacheKeys = new Map();
174
205
  _urlsToCacheModes = new Map();
@@ -179,17 +210,9 @@ class Serwist {
179
210
  _defaultHandlerMap;
180
211
  _catchHandler;
181
212
  constructor({ precacheEntries, precacheOptions, skipWaiting = false, importScripts, navigationPreload = false, cacheId, clientsClaim: clientsClaim$1 = false, runtimeCaching, offlineAnalyticsConfig, disableDevLogs: disableDevLogs$1 = false, fallbacks } = {}){
182
- this._concurrentPrecaching = precacheOptions?.concurrency ?? 10;
183
- this._precacheStrategy = new PrecacheStrategy({
184
- cacheName: cacheNames$1.getPrecacheName(precacheOptions?.cacheName),
185
- plugins: [
186
- ...precacheOptions?.plugins ?? [],
187
- new PrecacheCacheKeyPlugin({
188
- precacheController: this
189
- })
190
- ],
191
- fallbackToNetwork: precacheOptions?.fallbackToNetwork
192
- });
213
+ const { precacheStrategyOptions, precacheRouteOptions, precacheMiscOptions } = parsePrecacheOptions(this, precacheOptions);
214
+ this._concurrentPrecaching = precacheMiscOptions.concurrency;
215
+ this._precacheStrategy = new PrecacheStrategy(precacheStrategyOptions);
193
216
  this._routes = new Map();
194
217
  this._defaultHandlerMap = new Map();
195
218
  this.handleInstall = this.handleInstall.bind(this);
@@ -216,14 +239,14 @@ class Serwist {
216
239
  if (!!precacheEntries && precacheEntries.length > 0) {
217
240
  this.addToPrecacheList(precacheEntries);
218
241
  }
219
- if (precacheOptions?.cleanupOutdatedCaches) {
220
- cleanupOutdatedCaches(precacheOptions?.cacheName);
242
+ if (precacheMiscOptions.cleanupOutdatedCaches) {
243
+ cleanupOutdatedCaches(precacheStrategyOptions.cacheName);
221
244
  }
222
- this.registerRoute(new PrecacheRoute(this, precacheOptions));
223
- if (precacheOptions?.navigateFallback) {
224
- this.registerRoute(new NavigationRoute(this.createHandlerBoundToUrl(precacheOptions?.navigateFallback), {
225
- allowlist: precacheOptions?.navigateFallbackAllowlist,
226
- denylist: precacheOptions?.navigateFallbackDenylist
245
+ this.registerRoute(new PrecacheRoute(this, precacheRouteOptions));
246
+ if (precacheMiscOptions.navigateFallback) {
247
+ this.registerRoute(new NavigationRoute(this.createHandlerBoundToUrl(precacheMiscOptions.navigateFallback), {
248
+ allowlist: precacheMiscOptions.navigateFallbackAllowlist,
249
+ denylist: precacheMiscOptions.navigateFallbackDenylist
227
250
  }));
228
251
  }
229
252
  if (offlineAnalyticsConfig !== undefined) {
@@ -2,7 +2,11 @@ import type { SerwistPlugin } from "../../types.js";
2
2
  import type { StrategyOptions } from "./Strategy.js";
3
3
  import { Strategy } from "./Strategy.js";
4
4
  import type { StrategyHandler } from "./StrategyHandler.js";
5
- interface PrecacheStrategyOptions extends StrategyOptions {
5
+ export interface PrecacheStrategyOptions extends StrategyOptions {
6
+ /**
7
+ * Plugins to use when precaching as well as responding to `fetch` events for precached assets.
8
+ */
9
+ plugins?: StrategyOptions["plugins"];
6
10
  /**
7
11
  * Whether to attempt to get the response from the network
8
12
  * if there's a precache miss.
@@ -62,5 +66,4 @@ export declare class PrecacheStrategy extends Strategy {
62
66
  */
63
67
  _useDefaultCacheabilityPluginIfNeeded(): void;
64
68
  }
65
- export {};
66
69
  //# sourceMappingURL=PrecacheStrategy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PrecacheStrategy.d.ts","sourceRoot":"","sources":["../../../src/lib/strategies/PrecacheStrategy.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAMpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,UAAU,uBAAwB,SAAQ,eAAe;IACvD;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAE7C,MAAM,CAAC,QAAQ,CAAC,iCAAiC,EAAE,aAAa,CAQ9D;IAEF,MAAM,CAAC,QAAQ,CAAC,sCAAsC,EAAE,aAAa,CAInE;IAEF;;OAEG;gBACS,OAAO,GAAE,uBAA4B;IAcjD;;;;;OAKG;IACG,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkBtE,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IAyE3E,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IAqBnF;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,qCAAqC,IAAI,IAAI;CA4B9C"}
1
+ {"version":3,"file":"PrecacheStrategy.d.ts","sourceRoot":"","sources":["../../../src/lib/strategies/PrecacheStrategy.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAMpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACrC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAE7C,MAAM,CAAC,QAAQ,CAAC,iCAAiC,EAAE,aAAa,CAQ9D;IAEF,MAAM,CAAC,QAAQ,CAAC,sCAAsC,EAAE,aAAa,CAInE;IAEF;;OAEG;gBACS,OAAO,GAAE,uBAA4B;IAcjD;;;;;OAKG;IACG,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IAwBtE,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IAyE3E,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IAqBnF;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,qCAAqC,IAAI,IAAI;CA4B9C"}
@@ -169,6 +169,14 @@ export declare class StrategyHandler {
169
169
  * `waitUntil()` promise.
170
170
  */
171
171
  destroy(): void;
172
+ /**
173
+ * This method checks if the navigation preload `Response` is available.
174
+ *
175
+ * @param request
176
+ * @param event
177
+ * @returns
178
+ */
179
+ getPreloadResponse(): Promise<Response | undefined>;
172
180
  /**
173
181
  * This method will call `cacheWillUpdate` on the available plugins (or use
174
182
  * status === 200) to determine if the response is safe and valid to cache.
@@ -1 +1 @@
1
- {"version":3,"file":"StrategyHandler.d.ts","sourceRoot":"","sources":["../../../src/lib/strategies/StrategyHandler.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AASvH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAO9C;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACI,KAAK,EAAE,eAAe,CAAC;IAC9B;;;OAGG;IACI,OAAO,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACI,GAAG,CAAC,EAAE,GAAG,CAAC;IACjB;;;;;;;OAOG;IACI,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IAEzC,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;IACjD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAiB;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoC;IAEpE;;;;;;;;;OASG;gBAED,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,sBAAsB,GAAG;QAChC,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;KACtD;IAsCH;;;;;;;;;;;;OAYG;IACG,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAyElD;;;;;;;;OAQG;IACG,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAS7D;;;;;;;;;;;OAWG;IACG,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IA+BjE;;;;;;;;;;;;;;OAcG;IACG,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IA8FtE;;;;;;;;;;OAUG;IACG,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB7E;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO;IAS5D;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,CAAC,SAAS,MAAM,WAAW,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3I;;;;;OAKG;IACF,gBAAgB,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAgBnG;;;;;;;;;OASG;IACH,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAK7C;;;;;;;OAOG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAOlC;;;OAGG;IACH,OAAO,IAAI,IAAI;IAIf;;;;;;;OAOG;IACG,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;CAmCpF"}
1
+ {"version":3,"file":"StrategyHandler.d.ts","sourceRoot":"","sources":["../../../src/lib/strategies/StrategyHandler.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AASvH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAO9C;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACI,KAAK,EAAE,eAAe,CAAC;IAC9B;;;OAGG;IACI,OAAO,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACI,GAAG,CAAC,EAAE,GAAG,CAAC;IACjB;;;;;;;OAOG;IACI,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IAEzC,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;IACjD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAiB;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoC;IAEpE;;;;;;;;;OASG;gBAED,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,sBAAsB,GAAG;QAChC,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;KACtD;IAsCH;;;;;;;;;;;;OAYG;IACG,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAqElD;;;;;;;;OAQG;IACG,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAS7D;;;;;;;;;;;OAWG;IACG,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IA+BjE;;;;;;;;;;;;;;OAcG;IACG,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IA8FtE;;;;;;;;;;OAUG;IACG,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB7E;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO;IAS5D;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,CAAC,SAAS,MAAM,WAAW,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3I;;;;;OAKG;IACF,gBAAgB,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAgBnG;;;;;;;;;OASG;IACH,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAK7C;;;;;;;OAOG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAOlC;;;OAGG;IACH,OAAO,IAAI,IAAI;IAIf;;;;;;OAMG;IACG,kBAAkB,IAAI,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAazD;;;;;;;OAOG;IACG,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;CAmCpF"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { HTTPMethod } from "./constants.js";
2
+ import type { PrecacheStrategyOptions } from "./lib/strategies/PrecacheStrategy.js";
2
3
  export type PromiseOrNot<T> = T | Promise<T>;
3
4
  export interface MapLikeObject {
4
5
  [key: string]: any;
@@ -317,6 +318,34 @@ export interface PrecacheRouteOptions {
317
318
  */
318
319
  urlManipulation?: UrlManipulation;
319
320
  }
321
+ export interface PrecacheOptions extends PrecacheStrategyOptions, PrecacheRouteOptions {
322
+ /**
323
+ * Whether outdated caches should be removed.
324
+ *
325
+ * @default false
326
+ */
327
+ cleanupOutdatedCaches?: boolean;
328
+ /**
329
+ * The number of precache requests that should be made concurrently.
330
+ *
331
+ * @default 10
332
+ */
333
+ concurrency?: number;
334
+ /**
335
+ * An URL that should point to a HTML file with which navigation requests for URLs that aren't
336
+ * precached will be fulfilled.
337
+ */
338
+ navigateFallback?: string;
339
+ /**
340
+ * URLs that should be allowed to use the `navigateFallback` handler.
341
+ */
342
+ navigateFallbackAllowlist?: RegExp[];
343
+ /**
344
+ * URLs that should not be allowed to use the `navigateFallback` handler. This takes precedence
345
+ * over `navigateFallbackAllowlist`.
346
+ */
347
+ navigateFallbackDenylist?: RegExp[];
348
+ }
320
349
  export type UrlManipulation = ({ url }: {
321
350
  url: URL;
322
351
  }) => URL[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { Serwist } from "../Serwist.js";
2
+ import type { PrecacheOptions } from "../types.js";
3
+ import { PrecacheCacheKeyPlugin } from "./PrecacheCacheKeyPlugin.js";
4
+ export declare const parsePrecacheOptions: (serwist: Serwist, precacheOptions?: PrecacheOptions) => {
5
+ precacheStrategyOptions: {
6
+ cacheName: string;
7
+ plugins: (import("../types.js").SerwistPlugin | PrecacheCacheKeyPlugin)[];
8
+ fetchOptions: RequestInit | undefined;
9
+ matchOptions: CacheQueryOptions | undefined;
10
+ fallbackToNetwork: boolean | undefined;
11
+ };
12
+ precacheRouteOptions: {
13
+ directoryIndex: string | null | undefined;
14
+ ignoreURLParametersMatching: RegExp[] | undefined;
15
+ cleanURLs: boolean | undefined;
16
+ urlManipulation: import("../types.js").UrlManipulation | undefined;
17
+ };
18
+ precacheMiscOptions: {
19
+ cleanupOutdatedCaches: boolean | undefined;
20
+ concurrency: number;
21
+ navigateFallback: string | undefined;
22
+ navigateFallbackAllowlist: RegExp[] | undefined;
23
+ navigateFallbackDenylist: RegExp[] | undefined;
24
+ };
25
+ };
26
+ //# sourceMappingURL=parsePrecacheOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsePrecacheOptions.d.ts","sourceRoot":"","sources":["../../src/utils/parsePrecacheOptions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,eAAO,MAAM,oBAAoB,YAAa,OAAO,oBAAmB,eAAe;;;;;;;;;;;;;;;;;;;;;CAwCtF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "serwist",
3
- "version": "9.0.5",
3
+ "version": "9.0.6",
4
4
  "type": "module",
5
5
  "description": "A Swiss Army knife for service workers.",
6
6
  "files": [
@@ -13,7 +13,10 @@
13
13
  "service worker",
14
14
  "sw"
15
15
  ],
16
- "author": "Google's Web DevRel Team, Serwist's Team",
16
+ "author": "Google's Web DevRel Team",
17
+ "contributors": [
18
+ "Serwist <ducanh2912.rusty@gmail.com> (https://serwist.pages.dev/)"
19
+ ],
17
20
  "license": "MIT",
18
21
  "repository": "https://github.com/serwist/serwist",
19
22
  "bugs": "https://github.com/serwist/serwist/issues",
@@ -49,10 +52,10 @@
49
52
  "idb": "8.0.0"
50
53
  },
51
54
  "devDependencies": {
52
- "rollup": "4.18.1",
53
- "typescript": "5.5.3",
54
- "@serwist/configs": "9.0.5",
55
- "@serwist/utils": "9.0.5"
55
+ "rollup": "4.21.0",
56
+ "typescript": "5.5.4",
57
+ "@serwist/configs": "9.0.6",
58
+ "@serwist/utils": "9.0.6"
56
59
  },
57
60
  "peerDependencies": {
58
61
  "typescript": ">=5.0.0"
package/src/Serwist.ts CHANGED
@@ -11,21 +11,19 @@ import { Strategy } from "./lib/strategies/Strategy.js";
11
11
  import { enableNavigationPreload } from "./navigationPreload.js";
12
12
  import { setCacheNameDetails } from "./setCacheNameDetails.js";
13
13
  import type {
14
+ PrecacheOptions,
14
15
  RouteHandler,
15
16
  RouteHandlerCallback,
16
17
  RouteHandlerCallbackOptions,
17
18
  RouteHandlerObject,
18
19
  RouteMatchCallback,
19
20
  RouteMatchCallbackOptions,
20
- SerwistPlugin,
21
21
  } from "./types.js";
22
- import type { PrecacheRouteOptions, RuntimeCaching } from "./types.js";
22
+ import type { RuntimeCaching } from "./types.js";
23
23
  import type { CleanupResult, InstallResult, PrecacheEntry } from "./types.js";
24
- import { PrecacheCacheKeyPlugin } from "./utils/PrecacheCacheKeyPlugin.js";
25
24
  import { PrecacheInstallReportPlugin } from "./utils/PrecacheInstallReportPlugin.js";
26
25
  import { SerwistError } from "./utils/SerwistError.js";
27
26
  import { assert } from "./utils/assert.js";
28
- import { cacheNames as privateCacheNames } from "./utils/cacheNames.js";
29
27
  import { cleanupOutdatedCaches as cleanupOutdatedCachesImpl } from "./utils/cleanupOutdatedCaches.js";
30
28
  import { clientsClaim as clientsClaimImpl } from "./utils/clientsClaim.js";
31
29
  import { createCacheKey } from "./utils/createCacheKey.js";
@@ -36,6 +34,7 @@ import { parseRoute } from "./utils/parseRoute.js";
36
34
  import { printCleanupDetails } from "./utils/printCleanupDetails.js";
37
35
  import { printInstallDetails } from "./utils/printInstallDetails.js";
38
36
  import { waitUntil } from "./utils/waitUntil.js";
37
+ import { parsePrecacheOptions } from "./utils/parsePrecacheOptions.js";
39
38
 
40
39
  declare const self: ServiceWorkerGlobalScope;
41
40
 
@@ -48,49 +47,6 @@ export interface FallbacksOptions {
48
47
  entries: FallbackEntry[];
49
48
  }
50
49
 
51
- export interface PrecacheOptions extends PrecacheRouteOptions {
52
- /**
53
- * The cache used for precaching.
54
- */
55
- cacheName?: string;
56
- /**
57
- * Whether outdated caches should be removed.
58
- *
59
- * @default false
60
- */
61
- cleanupOutdatedCaches?: boolean;
62
- /**
63
- * The number of precache requests that should be made concurrently.
64
- *
65
- * @default 10
66
- */
67
- concurrency?: number;
68
- /**
69
- * Whether to attempt to get the response from the network if there's
70
- * a precache miss.
71
- */
72
- fallbackToNetwork?: boolean;
73
- /**
74
- * An URL that should point to a HTML file with which navigation requests for URLs that aren't
75
- * precached will be fulfilled.
76
- */
77
- navigateFallback?: string;
78
- /**
79
- * URLs that should be allowed to use the `navigateFallback` handler.
80
- */
81
- navigateFallbackAllowlist?: RegExp[];
82
- /**
83
- * URLs that should not be allowed to use the `navigateFallback` handler. This takes precedence
84
- * over `navigateFallbackAllowlist`.
85
- */
86
- navigateFallbackDenylist?: RegExp[];
87
- /**
88
- * Plugins to use when precaching as well as responding to fetch
89
- * events for precached assets.
90
- */
91
- plugins?: SerwistPlugin[];
92
- }
93
-
94
50
  export interface SerwistOptions {
95
51
  /**
96
52
  * A list of URLs that should be cached.
@@ -192,12 +148,10 @@ export class Serwist {
192
148
  disableDevLogs = false,
193
149
  fallbacks,
194
150
  }: SerwistOptions = {}) {
195
- this._concurrentPrecaching = precacheOptions?.concurrency ?? 10;
196
- this._precacheStrategy = new PrecacheStrategy({
197
- cacheName: privateCacheNames.getPrecacheName(precacheOptions?.cacheName),
198
- plugins: [...(precacheOptions?.plugins ?? []), new PrecacheCacheKeyPlugin({ precacheController: this })],
199
- fallbackToNetwork: precacheOptions?.fallbackToNetwork,
200
- });
151
+ const { precacheStrategyOptions, precacheRouteOptions, precacheMiscOptions } = parsePrecacheOptions(this, precacheOptions);
152
+
153
+ this._concurrentPrecaching = precacheMiscOptions.concurrency;
154
+ this._precacheStrategy = new PrecacheStrategy(precacheStrategyOptions);
201
155
  this._routes = new Map();
202
156
  this._defaultHandlerMap = new Map();
203
157
 
@@ -232,17 +186,17 @@ export class Serwist {
232
186
  this.addToPrecacheList(precacheEntries);
233
187
  }
234
188
 
235
- if (precacheOptions?.cleanupOutdatedCaches) {
236
- cleanupOutdatedCachesImpl(precacheOptions?.cacheName);
189
+ if (precacheMiscOptions.cleanupOutdatedCaches) {
190
+ cleanupOutdatedCachesImpl(precacheStrategyOptions.cacheName);
237
191
  }
238
192
 
239
- this.registerRoute(new PrecacheRoute(this, precacheOptions));
193
+ this.registerRoute(new PrecacheRoute(this, precacheRouteOptions));
240
194
 
241
- if (precacheOptions?.navigateFallback) {
195
+ if (precacheMiscOptions.navigateFallback) {
242
196
  this.registerRoute(
243
- new NavigationRoute(this.createHandlerBoundToUrl(precacheOptions?.navigateFallback), {
244
- allowlist: precacheOptions?.navigateFallbackAllowlist,
245
- denylist: precacheOptions?.navigateFallbackDenylist,
197
+ new NavigationRoute(this.createHandlerBoundToUrl(precacheMiscOptions.navigateFallback), {
198
+ allowlist: precacheMiscOptions.navigateFallbackAllowlist,
199
+ denylist: precacheMiscOptions.navigateFallbackDenylist,
246
200
  }),
247
201
  );
248
202
  }
@@ -268,7 +222,7 @@ export class Serwist {
268
222
  runtimeCaching.forEach((cacheEntry) => {
269
223
  if (
270
224
  cacheEntry.handler instanceof Strategy &&
271
- // PrecacheFallbackPlugin also has `handlerDidError`, so we don't need to check for its instances.
225
+ // This also filters entries with `PrecacheFallbackPlugin` as it also has `handlerDidError`.
272
226
  !cacheEntry.handler.plugins.some((plugin) => "handlerDidError" in plugin)
273
227
  ) {
274
228
  cacheEntry.handler.plugins.push(fallbackPlugin);
@@ -17,7 +17,11 @@ import type { StrategyOptions } from "./Strategy.js";
17
17
  import { Strategy } from "./Strategy.js";
18
18
  import type { StrategyHandler } from "./StrategyHandler.js";
19
19
 
20
- interface PrecacheStrategyOptions extends StrategyOptions {
20
+ export interface PrecacheStrategyOptions extends StrategyOptions {
21
+ /**
22
+ * Plugins to use when precaching as well as responding to `fetch` events for precached assets.
23
+ */
24
+ plugins?: StrategyOptions["plugins"];
21
25
  /**
22
26
  * Whether to attempt to get the response from the network
23
27
  * if there's a precache miss.
@@ -75,6 +79,12 @@ export class PrecacheStrategy extends Strategy {
75
79
  * @returns
76
80
  */
77
81
  async _handle(request: Request, handler: StrategyHandler): Promise<Response> {
82
+ const preloadResponse = await handler.getPreloadResponse();
83
+
84
+ if (preloadResponse) {
85
+ return preloadResponse;
86
+ }
87
+
78
88
  const response = await handler.cacheMatch(request);
79
89
 
80
90
  if (response) {
@@ -131,14 +131,10 @@ export class StrategyHandler {
131
131
  const { event } = this;
132
132
  let request: Request = toRequest(input);
133
133
 
134
- if (request.mode === "navigate" && event instanceof FetchEvent && event.preloadResponse) {
135
- const possiblePreloadResponse = (await event.preloadResponse) as Response | undefined;
136
- if (possiblePreloadResponse) {
137
- if (process.env.NODE_ENV !== "production") {
138
- logger.log(`Using a preloaded navigation response for '${getFriendlyURL(request.url)}'`);
139
- }
140
- return possiblePreloadResponse;
141
- }
134
+ const preloadResponse = await this.getPreloadResponse();
135
+
136
+ if (preloadResponse) {
137
+ return preloadResponse;
142
138
  }
143
139
 
144
140
  // If there is a fetchDidFail plugin, we need to save a clone of the
@@ -498,6 +494,26 @@ export class StrategyHandler {
498
494
  this._handlerDeferred.resolve(null);
499
495
  }
500
496
 
497
+ /**
498
+ * This method checks if the navigation preload `Response` is available.
499
+ *
500
+ * @param request
501
+ * @param event
502
+ * @returns
503
+ */
504
+ async getPreloadResponse(): Promise<Response | undefined> {
505
+ if (this.event instanceof FetchEvent && this.event.request.mode === "navigate" && "preloadResponse" in this.event) {
506
+ const possiblePreloadResponse = (await this.event.preloadResponse) as Response | undefined;
507
+ if (possiblePreloadResponse) {
508
+ if (process.env.NODE_ENV !== "production") {
509
+ logger.log(`Using a preloaded navigation response for '${getFriendlyURL(this.event.request.url)}'`);
510
+ }
511
+ return possiblePreloadResponse;
512
+ }
513
+ }
514
+ return undefined;
515
+ }
516
+
501
517
  /**
502
518
  * This method will call `cacheWillUpdate` on the available plugins (or use
503
519
  * status === 200) to determine if the response is safe and valid to cache.
package/src/types.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { HTTPMethod } from "./constants.js";
2
+ import type { PrecacheStrategyOptions } from "./lib/strategies/PrecacheStrategy.js";
2
3
  import type { Route } from "./Route.js";
3
4
  import type { Serwist } from "./Serwist.js";
4
5
 
@@ -363,4 +364,33 @@ export interface PrecacheRouteOptions {
363
364
  urlManipulation?: UrlManipulation;
364
365
  }
365
366
 
367
+ export interface PrecacheOptions extends PrecacheStrategyOptions, PrecacheRouteOptions {
368
+ /**
369
+ * Whether outdated caches should be removed.
370
+ *
371
+ * @default false
372
+ */
373
+ cleanupOutdatedCaches?: boolean;
374
+ /**
375
+ * The number of precache requests that should be made concurrently.
376
+ *
377
+ * @default 10
378
+ */
379
+ concurrency?: number;
380
+ /**
381
+ * An URL that should point to a HTML file with which navigation requests for URLs that aren't
382
+ * precached will be fulfilled.
383
+ */
384
+ navigateFallback?: string;
385
+ /**
386
+ * URLs that should be allowed to use the `navigateFallback` handler.
387
+ */
388
+ navigateFallbackAllowlist?: RegExp[];
389
+ /**
390
+ * URLs that should not be allowed to use the `navigateFallback` handler. This takes precedence
391
+ * over `navigateFallbackAllowlist`.
392
+ */
393
+ navigateFallbackDenylist?: RegExp[];
394
+ }
395
+
366
396
  export type UrlManipulation = ({ url }: { url: URL }) => URL[];
@@ -0,0 +1,47 @@
1
+ import { privateCacheNames } from "../index.internal.js";
2
+ import type { PrecacheStrategyOptions } from "../lib/strategies/PrecacheStrategy.js";
3
+ import type { Serwist } from "../Serwist.js";
4
+ import type { PrecacheOptions, PrecacheRouteOptions } from "../types.js";
5
+ import { PrecacheCacheKeyPlugin } from "./PrecacheCacheKeyPlugin.js";
6
+
7
+ export const parsePrecacheOptions = (serwist: Serwist, precacheOptions: PrecacheOptions = {}) => {
8
+ const {
9
+ cacheName: precacheCacheName,
10
+ plugins: precachePlugins = [],
11
+ fetchOptions: precacheFetchOptions,
12
+ matchOptions: precacheMatchOptions,
13
+ fallbackToNetwork: precacheFallbackToNetwork,
14
+ directoryIndex: precacheDirectoryIndex,
15
+ ignoreURLParametersMatching: precacheIgnoreUrls,
16
+ cleanURLs: precacheCleanUrls,
17
+ urlManipulation: precacheUrlManipulation,
18
+ cleanupOutdatedCaches,
19
+ concurrency = 10,
20
+ navigateFallback,
21
+ navigateFallbackAllowlist,
22
+ navigateFallbackDenylist,
23
+ } = precacheOptions ?? {};
24
+
25
+ return {
26
+ precacheStrategyOptions: {
27
+ cacheName: privateCacheNames.getPrecacheName(precacheCacheName),
28
+ plugins: [...precachePlugins, new PrecacheCacheKeyPlugin({ precacheController: serwist })],
29
+ fetchOptions: precacheFetchOptions,
30
+ matchOptions: precacheMatchOptions,
31
+ fallbackToNetwork: precacheFallbackToNetwork,
32
+ } satisfies PrecacheStrategyOptions,
33
+ precacheRouteOptions: {
34
+ directoryIndex: precacheDirectoryIndex,
35
+ ignoreURLParametersMatching: precacheIgnoreUrls,
36
+ cleanURLs: precacheCleanUrls,
37
+ urlManipulation: precacheUrlManipulation,
38
+ } satisfies PrecacheRouteOptions,
39
+ precacheMiscOptions: {
40
+ cleanupOutdatedCaches,
41
+ concurrency,
42
+ navigateFallback,
43
+ navigateFallbackAllowlist,
44
+ navigateFallbackDenylist,
45
+ },
46
+ };
47
+ };