@serwist/sw 9.0.0-preview.2 → 9.0.0-preview.21

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.
Files changed (262) hide show
  1. package/dist/abstractions/Serwist.d.ts +82 -0
  2. package/dist/abstractions/Serwist.d.ts.map +1 -0
  3. package/dist/{disableDevLogs.d.ts → abstractions/disableDevLogs.d.ts} +2 -0
  4. package/dist/abstractions/disableDevLogs.d.ts.map +1 -0
  5. package/dist/{fallbacks.d.ts → abstractions/fallbacks.d.ts} +9 -20
  6. package/dist/abstractions/fallbacks.d.ts.map +1 -0
  7. package/dist/{handlePrecaching.d.ts → abstractions/handlePrecaching.d.ts} +8 -10
  8. package/dist/abstractions/handlePrecaching.d.ts.map +1 -0
  9. package/dist/abstractions/installSerwist.d.ts +15 -0
  10. package/dist/abstractions/installSerwist.d.ts.map +1 -0
  11. package/dist/abstractions/navigationPreload.d.ts +20 -0
  12. package/dist/abstractions/navigationPreload.d.ts.map +1 -0
  13. package/dist/{registerRuntimeCaching.d.ts → abstractions/registerRuntimeCaching.d.ts} +2 -0
  14. package/dist/abstractions/registerRuntimeCaching.d.ts.map +1 -0
  15. package/dist/abstractions/types.d.ts +29 -0
  16. package/dist/abstractions/types.d.ts.map +1 -0
  17. package/dist/chunks/NavigationRoute.js +54 -0
  18. package/dist/chunks/NetworkOnly.js +193 -0
  19. package/dist/chunks/PrecacheFallbackPlugin.js +573 -0
  20. package/dist/chunks/Strategy.js +410 -0
  21. package/dist/chunks/precacheAndRoute.js +113 -0
  22. package/dist/chunks/registerRoute.js +7 -0
  23. package/dist/chunks/singletonPrecacheController.js +433 -0
  24. package/dist/chunks/singletonRouter.js +435 -0
  25. package/dist/index.d.ts +11 -9
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +121 -124
  28. package/dist/index.plugins.d.ts +41 -0
  29. package/dist/index.plugins.d.ts.map +1 -0
  30. package/dist/index.plugins.js +671 -0
  31. package/dist/index.precaching.d.ts +25 -0
  32. package/dist/index.precaching.d.ts.map +1 -0
  33. package/dist/index.precaching.js +24 -0
  34. package/dist/index.routing.d.ts +15 -0
  35. package/dist/index.routing.d.ts.map +1 -0
  36. package/dist/index.routing.js +19 -0
  37. package/dist/index.strategies.d.ts +22 -0
  38. package/dist/index.strategies.d.ts.map +1 -0
  39. package/dist/index.strategies.js +146 -0
  40. package/dist/plugins/backgroundSync/BackgroundSyncPlugin.d.ts +23 -0
  41. package/dist/plugins/backgroundSync/BackgroundSyncPlugin.d.ts.map +1 -0
  42. package/dist/plugins/backgroundSync/Queue.d.ts +166 -0
  43. package/dist/plugins/backgroundSync/Queue.d.ts.map +1 -0
  44. package/dist/plugins/backgroundSync/QueueDb.d.ts +90 -0
  45. package/dist/plugins/backgroundSync/QueueDb.d.ts.map +1 -0
  46. package/dist/plugins/backgroundSync/QueueStore.d.ts +75 -0
  47. package/dist/plugins/backgroundSync/QueueStore.d.ts.map +1 -0
  48. package/dist/plugins/backgroundSync/StorableRequest.d.ts +51 -0
  49. package/dist/plugins/backgroundSync/StorableRequest.d.ts.map +1 -0
  50. package/dist/plugins/broadcastUpdate/BroadcastCacheUpdate.d.ts +45 -0
  51. package/dist/plugins/broadcastUpdate/BroadcastCacheUpdate.d.ts.map +1 -0
  52. package/dist/plugins/broadcastUpdate/BroadcastUpdatePlugin.d.ts +27 -0
  53. package/dist/plugins/broadcastUpdate/BroadcastUpdatePlugin.d.ts.map +1 -0
  54. package/dist/plugins/broadcastUpdate/constants.d.ts +5 -0
  55. package/dist/plugins/broadcastUpdate/constants.d.ts.map +1 -0
  56. package/dist/plugins/broadcastUpdate/responsesAreSame.d.ts +11 -0
  57. package/dist/plugins/broadcastUpdate/responsesAreSame.d.ts.map +1 -0
  58. package/dist/plugins/broadcastUpdate/types.d.ts +34 -0
  59. package/dist/plugins/broadcastUpdate/types.d.ts.map +1 -0
  60. package/dist/plugins/cacheableResponse/CacheableResponse.d.ts +40 -0
  61. package/dist/plugins/cacheableResponse/CacheableResponse.d.ts.map +1 -0
  62. package/dist/plugins/cacheableResponse/CacheableResponsePlugin.d.ts +27 -0
  63. package/dist/plugins/cacheableResponse/CacheableResponsePlugin.d.ts.map +1 -0
  64. package/dist/plugins/expiration/CacheExpiration.d.ts +66 -0
  65. package/dist/plugins/expiration/CacheExpiration.d.ts.map +1 -0
  66. package/dist/plugins/expiration/ExpirationPlugin.d.ts +116 -0
  67. package/dist/plugins/expiration/ExpirationPlugin.d.ts.map +1 -0
  68. package/dist/plugins/expiration/models/CacheTimestampsModel.d.ts +73 -0
  69. package/dist/plugins/expiration/models/CacheTimestampsModel.d.ts.map +1 -0
  70. package/dist/plugins/googleAnalytics/constants.d.ts +10 -0
  71. package/dist/plugins/googleAnalytics/constants.d.ts.map +1 -0
  72. package/dist/plugins/googleAnalytics/initialize.d.ts +34 -0
  73. package/dist/plugins/googleAnalytics/initialize.d.ts.map +1 -0
  74. package/dist/plugins/precaching/PrecacheFallbackPlugin.d.ts +54 -0
  75. package/dist/plugins/precaching/PrecacheFallbackPlugin.d.ts.map +1 -0
  76. package/dist/plugins/rangeRequests/RangeRequestsPlugin.d.ts +19 -0
  77. package/dist/plugins/rangeRequests/RangeRequestsPlugin.d.ts.map +1 -0
  78. package/dist/plugins/rangeRequests/createPartialResponse.d.ts +18 -0
  79. package/dist/plugins/rangeRequests/createPartialResponse.d.ts.map +1 -0
  80. package/dist/plugins/rangeRequests/utils/calculateEffectiveBoundaries.d.ts +14 -0
  81. package/dist/plugins/rangeRequests/utils/calculateEffectiveBoundaries.d.ts.map +1 -0
  82. package/dist/plugins/rangeRequests/utils/parseRangeHeader.d.ts +12 -0
  83. package/dist/plugins/rangeRequests/utils/parseRangeHeader.d.ts.map +1 -0
  84. package/dist/precaching/PrecacheController.d.ts +145 -0
  85. package/dist/precaching/PrecacheController.d.ts.map +1 -0
  86. package/dist/precaching/PrecacheRoute.d.ts +20 -0
  87. package/dist/precaching/PrecacheRoute.d.ts.map +1 -0
  88. package/dist/precaching/PrecacheStrategy.d.ts +68 -0
  89. package/dist/precaching/PrecacheStrategy.d.ts.map +1 -0
  90. package/dist/precaching/addPlugins.d.ts +8 -0
  91. package/dist/precaching/addPlugins.d.ts.map +1 -0
  92. package/dist/precaching/addRoute.d.ts +15 -0
  93. package/dist/precaching/addRoute.d.ts.map +1 -0
  94. package/dist/precaching/cleanupOutdatedCaches.d.ts +6 -0
  95. package/dist/precaching/cleanupOutdatedCaches.d.ts.map +1 -0
  96. package/dist/precaching/createHandlerBoundToURL.d.ts +17 -0
  97. package/dist/precaching/createHandlerBoundToURL.d.ts.map +1 -0
  98. package/dist/precaching/getCacheKeyForURL.d.ts +20 -0
  99. package/dist/precaching/getCacheKeyForURL.d.ts.map +1 -0
  100. package/dist/precaching/matchPrecache.d.ts +14 -0
  101. package/dist/precaching/matchPrecache.d.ts.map +1 -0
  102. package/dist/precaching/precache.d.ts +19 -0
  103. package/dist/precaching/precache.d.ts.map +1 -0
  104. package/dist/precaching/precacheAndRoute.d.ts +14 -0
  105. package/dist/precaching/precacheAndRoute.d.ts.map +1 -0
  106. package/dist/precaching/singletonPrecacheController.d.ts +38 -0
  107. package/dist/precaching/singletonPrecacheController.d.ts.map +1 -0
  108. package/dist/precaching/types.d.ts +37 -0
  109. package/dist/precaching/types.d.ts.map +1 -0
  110. package/dist/precaching/utils/PrecacheCacheKeyPlugin.d.ts +17 -0
  111. package/dist/precaching/utils/PrecacheCacheKeyPlugin.d.ts.map +1 -0
  112. package/dist/precaching/utils/PrecacheInstallReportPlugin.d.ts +15 -0
  113. package/dist/precaching/utils/PrecacheInstallReportPlugin.d.ts.map +1 -0
  114. package/dist/precaching/utils/createCacheKey.d.ts +16 -0
  115. package/dist/precaching/utils/createCacheKey.d.ts.map +1 -0
  116. package/dist/precaching/utils/deleteOutdatedCaches.d.ts +18 -0
  117. package/dist/precaching/utils/deleteOutdatedCaches.d.ts.map +1 -0
  118. package/dist/precaching/utils/generateURLVariations.d.ts +12 -0
  119. package/dist/precaching/utils/generateURLVariations.d.ts.map +1 -0
  120. package/dist/precaching/utils/getCacheKeyForURL.d.ts +14 -0
  121. package/dist/precaching/utils/getCacheKeyForURL.d.ts.map +1 -0
  122. package/dist/precaching/utils/printCleanupDetails.d.ts +6 -0
  123. package/dist/precaching/utils/printCleanupDetails.d.ts.map +1 -0
  124. package/dist/precaching/utils/printInstallDetails.d.ts +7 -0
  125. package/dist/precaching/utils/printInstallDetails.d.ts.map +1 -0
  126. package/dist/precaching/utils/removeIgnoredSearchParams.d.ts +12 -0
  127. package/dist/precaching/utils/removeIgnoredSearchParams.d.ts.map +1 -0
  128. package/dist/routing/NavigationRoute.d.ts +57 -0
  129. package/dist/routing/NavigationRoute.d.ts.map +1 -0
  130. package/dist/routing/RegExpRoute.d.ts +24 -0
  131. package/dist/routing/RegExpRoute.d.ts.map +1 -0
  132. package/dist/routing/Route.d.ts +33 -0
  133. package/dist/routing/Route.d.ts.map +1 -0
  134. package/dist/routing/Router.d.ts +150 -0
  135. package/dist/routing/Router.d.ts.map +1 -0
  136. package/dist/routing/parseRoute.d.ts +16 -0
  137. package/dist/routing/parseRoute.d.ts.map +1 -0
  138. package/dist/routing/registerRoute.d.ts +15 -0
  139. package/dist/routing/registerRoute.d.ts.map +1 -0
  140. package/dist/routing/setCatchHandler.d.ts +9 -0
  141. package/dist/routing/setCatchHandler.d.ts.map +1 -0
  142. package/dist/routing/setDefaultHandler.d.ts +12 -0
  143. package/dist/routing/setDefaultHandler.d.ts.map +1 -0
  144. package/dist/routing/singletonRouter.d.ts +47 -0
  145. package/dist/routing/singletonRouter.d.ts.map +1 -0
  146. package/dist/routing/unregisterRoute.d.ts +8 -0
  147. package/dist/routing/unregisterRoute.d.ts.map +1 -0
  148. package/dist/routing/utils/constants.d.ts +15 -0
  149. package/dist/routing/utils/constants.d.ts.map +1 -0
  150. package/dist/routing/utils/normalizeHandler.d.ts +10 -0
  151. package/dist/routing/utils/normalizeHandler.d.ts.map +1 -0
  152. package/dist/strategies/CacheFirst.d.ts +23 -0
  153. package/dist/strategies/CacheFirst.d.ts.map +1 -0
  154. package/dist/strategies/CacheOnly.d.ts +20 -0
  155. package/dist/strategies/CacheOnly.d.ts.map +1 -0
  156. package/dist/strategies/NetworkFirst.d.ts +61 -0
  157. package/dist/strategies/NetworkFirst.d.ts.map +1 -0
  158. package/dist/strategies/NetworkOnly.d.ts +32 -0
  159. package/dist/strategies/NetworkOnly.d.ts.map +1 -0
  160. package/dist/strategies/StaleWhileRevalidate.d.ts +35 -0
  161. package/dist/strategies/StaleWhileRevalidate.d.ts.map +1 -0
  162. package/dist/strategies/Strategy.d.ts +83 -0
  163. package/dist/strategies/Strategy.d.ts.map +1 -0
  164. package/dist/strategies/StrategyHandler.d.ts +189 -0
  165. package/dist/strategies/StrategyHandler.d.ts.map +1 -0
  166. package/dist/strategies/plugins/cacheOkAndOpaquePlugin.d.ts +3 -0
  167. package/dist/strategies/plugins/cacheOkAndOpaquePlugin.d.ts.map +1 -0
  168. package/dist/strategies/utils/messages.d.ts +5 -0
  169. package/dist/strategies/utils/messages.d.ts.map +1 -0
  170. package/package.json +42 -19
  171. package/src/abstractions/Serwist.ts +177 -0
  172. package/src/abstractions/disableDevLogs.ts +10 -0
  173. package/src/abstractions/fallbacks.ts +65 -0
  174. package/src/abstractions/handlePrecaching.ts +65 -0
  175. package/src/abstractions/installSerwist.ts +28 -0
  176. package/src/abstractions/navigationPreload.ts +64 -0
  177. package/src/abstractions/registerRuntimeCaching.ts +17 -0
  178. package/src/abstractions/types.ts +29 -0
  179. package/src/index.plugins.ts +95 -0
  180. package/src/index.precaching.ts +41 -0
  181. package/src/index.routing.ts +28 -0
  182. package/src/index.strategies.ts +26 -0
  183. package/src/index.ts +31 -9
  184. package/src/plugins/backgroundSync/BackgroundSyncPlugin.ts +39 -0
  185. package/src/plugins/backgroundSync/Queue.ts +438 -0
  186. package/src/plugins/backgroundSync/QueueDb.ts +176 -0
  187. package/src/plugins/backgroundSync/QueueStore.ts +161 -0
  188. package/src/plugins/backgroundSync/StorableRequest.ts +142 -0
  189. package/src/plugins/broadcastUpdate/BroadcastCacheUpdate.ts +159 -0
  190. package/src/plugins/broadcastUpdate/BroadcastUpdatePlugin.ts +43 -0
  191. package/src/plugins/broadcastUpdate/constants.ts +12 -0
  192. package/src/plugins/broadcastUpdate/responsesAreSame.ts +48 -0
  193. package/src/plugins/broadcastUpdate/types.ts +37 -0
  194. package/src/plugins/cacheableResponse/CacheableResponse.ts +141 -0
  195. package/src/plugins/cacheableResponse/CacheableResponsePlugin.ts +46 -0
  196. package/src/plugins/expiration/CacheExpiration.ts +192 -0
  197. package/src/plugins/expiration/ExpirationPlugin.ts +297 -0
  198. package/src/plugins/expiration/models/CacheTimestampsModel.ts +184 -0
  199. package/src/plugins/googleAnalytics/constants.ts +22 -0
  200. package/src/plugins/googleAnalytics/initialize.ts +213 -0
  201. package/src/plugins/precaching/PrecacheFallbackPlugin.ts +86 -0
  202. package/src/plugins/rangeRequests/RangeRequestsPlugin.ts +39 -0
  203. package/src/plugins/rangeRequests/createPartialResponse.ts +92 -0
  204. package/src/plugins/rangeRequests/utils/calculateEffectiveBoundaries.ts +58 -0
  205. package/src/plugins/rangeRequests/utils/parseRangeHeader.ts +54 -0
  206. package/src/precaching/PrecacheController.ts +332 -0
  207. package/src/precaching/PrecacheRoute.ts +50 -0
  208. package/src/precaching/PrecacheStrategy.ts +238 -0
  209. package/src/precaching/addPlugins.ts +21 -0
  210. package/src/precaching/addRoute.ts +30 -0
  211. package/src/precaching/cleanupOutdatedCaches.ts +33 -0
  212. package/src/precaching/createHandlerBoundToURL.ts +30 -0
  213. package/src/precaching/getCacheKeyForURL.ts +33 -0
  214. package/src/precaching/matchPrecache.ts +25 -0
  215. package/src/precaching/precache.ts +31 -0
  216. package/src/precaching/precacheAndRoute.ts +27 -0
  217. package/src/precaching/singletonPrecacheController.ts +57 -0
  218. package/src/precaching/types.ts +46 -0
  219. package/src/precaching/utils/PrecacheCacheKeyPlugin.ts +36 -0
  220. package/src/precaching/utils/PrecacheInstallReportPlugin.ts +49 -0
  221. package/src/precaching/utils/createCacheKey.ts +68 -0
  222. package/src/precaching/utils/deleteOutdatedCaches.ts +40 -0
  223. package/src/precaching/utils/generateURLVariations.ts +55 -0
  224. package/src/precaching/utils/getCacheKeyForURL.ts +36 -0
  225. package/src/precaching/utils/printCleanupDetails.ts +38 -0
  226. package/src/precaching/utils/printInstallDetails.ts +53 -0
  227. package/src/precaching/utils/removeIgnoredSearchParams.ts +29 -0
  228. package/src/routing/NavigationRoute.ts +119 -0
  229. package/src/routing/RegExpRoute.ts +74 -0
  230. package/src/routing/Route.ts +68 -0
  231. package/src/routing/Router.ts +481 -0
  232. package/src/routing/parseRoute.ts +78 -0
  233. package/src/routing/registerRoute.ts +27 -0
  234. package/src/routing/setCatchHandler.ts +21 -0
  235. package/src/routing/setDefaultHandler.ts +24 -0
  236. package/src/routing/singletonRouter.ts +76 -0
  237. package/src/routing/unregisterRoute.ts +11 -0
  238. package/src/routing/utils/constants.ts +24 -0
  239. package/src/routing/utils/normalizeHandler.ts +40 -0
  240. package/src/strategies/CacheFirst.ts +87 -0
  241. package/src/strategies/CacheOnly.ts +58 -0
  242. package/src/strategies/NetworkFirst.ts +228 -0
  243. package/src/strategies/NetworkOnly.ts +96 -0
  244. package/src/strategies/StaleWhileRevalidate.ts +109 -0
  245. package/src/strategies/Strategy.ts +202 -0
  246. package/src/strategies/StrategyHandler.ts +557 -0
  247. package/src/strategies/plugins/cacheOkAndOpaquePlugin.ts +26 -0
  248. package/src/strategies/utils/messages.ts +20 -0
  249. package/dist/disableDevLogs.d.ts.map +0 -1
  250. package/dist/fallbacks.d.ts.map +0 -1
  251. package/dist/handlePrecaching.d.ts.map +0 -1
  252. package/dist/installSerwist.d.ts +0 -21
  253. package/dist/installSerwist.d.ts.map +0 -1
  254. package/dist/registerRuntimeCaching.d.ts.map +0 -1
  255. package/dist/types.d.ts +0 -110
  256. package/dist/types.d.ts.map +0 -1
  257. package/src/disableDevLogs.ts +0 -10
  258. package/src/fallbacks.ts +0 -83
  259. package/src/handlePrecaching.ts +0 -65
  260. package/src/installSerwist.ts +0 -106
  261. package/src/registerRuntimeCaching.ts +0 -84
  262. package/src/types.ts +0 -113
package/dist/index.js CHANGED
@@ -1,159 +1,156 @@
1
- import { precacheAndRoute, cleanupOutdatedCaches, createHandlerBoundToURL, PrecacheFallbackPlugin } from '@serwist/precaching';
2
- import { registerRoute, NavigationRoute } from '@serwist/routing';
3
1
  import { setCacheNameDetails, clientsClaim } from '@serwist/core';
2
+ import { P as PrecacheFallbackPlugin, i as initialize } from './chunks/PrecacheFallbackPlugin.js';
3
+ import { p as precacheAndRoute, P as PrecacheRoute, c as cleanupOutdatedCaches, a as createHandlerBoundToURL } from './chunks/precacheAndRoute.js';
4
+ import { g as getSingletonPrecacheController } from './chunks/singletonPrecacheController.js';
5
+ import { N as NavigationRoute } from './chunks/NavigationRoute.js';
6
+ import { g as getSingletonRouter, p as parseRoute } from './chunks/singletonRouter.js';
7
+ import { S as Strategy } from './chunks/Strategy.js';
4
8
  import { logger } from '@serwist/core/internal';
5
- import { initialize } from '@serwist/google-analytics/initialize';
6
- import { enable } from '@serwist/navigation-preload';
7
- import { BackgroundSyncPlugin } from '@serwist/background-sync';
8
- import { BroadcastUpdatePlugin } from '@serwist/broadcast-update';
9
- import { CacheableResponsePlugin } from '@serwist/cacheable-response';
10
- import { ExpirationPlugin } from '@serwist/expiration';
11
- import { RangeRequestsPlugin } from '@serwist/range-requests';
12
- import { CacheFirst, CacheOnly, NetworkFirst, NetworkOnly, StaleWhileRevalidate } from '@serwist/strategies';
9
+ import { r as registerRoute } from './chunks/registerRoute.js';
10
+ import './chunks/NetworkOnly.js';
11
+ import 'idb';
13
12
 
14
13
  const disableDevLogs = ()=>{
15
14
  self.__WB_DISABLE_DEV_LOGS = true;
16
15
  };
17
16
 
18
17
  const fallbacks = ({ runtimeCaching, entries, precacheOptions })=>{
19
- precacheAndRoute(entries.map(({ url, revision })=>({
20
- url: typeof url === "string" ? url : url.toString(),
21
- revision
22
- })), precacheOptions);
23
- runtimeCaching = runtimeCaching.map((cacheEntry)=>{
24
- if (!cacheEntry.options || cacheEntry.options.precacheFallback || cacheEntry.options.plugins?.some((plugin)=>"handlerDidError" in plugin)) {
25
- return cacheEntry;
26
- }
27
- if (!cacheEntry.options.plugins) {
28
- cacheEntry.options.plugins = [];
18
+ precacheAndRoute(entries, precacheOptions);
19
+ const fallbackPlugin = new PrecacheFallbackPlugin({
20
+ fallbackUrls: entries
21
+ });
22
+ runtimeCaching.forEach((cacheEntry)=>{
23
+ if (cacheEntry.handler instanceof Strategy && !cacheEntry.handler.plugins.some((plugin)=>"handlerDidError" in plugin)) {
24
+ cacheEntry.handler.plugins.push(fallbackPlugin);
29
25
  }
30
- cacheEntry.options.plugins.push({
31
- async handlerDidError (info) {
32
- for (const { matcher, url, cacheMatchOptions = {
33
- ignoreSearch: true
34
- } } of entries){
35
- if (matcher(info)) {
36
- return caches.match(url, cacheMatchOptions);
37
- }
38
- }
39
- return Response.error();
40
- }
41
- });
42
26
  return cacheEntry;
43
27
  });
44
28
  return runtimeCaching;
45
29
  };
46
30
 
47
- const handlePrecaching = ({ precacheEntries, precacheOptions, cleanupOutdatedCaches: cleanupOutdatedCaches$1 = false, ...options })=>{
48
- if (!!precacheEntries && precacheEntries.length > 0) {
49
- precacheAndRoute(precacheEntries, precacheOptions);
50
- }
51
- if (cleanupOutdatedCaches$1) cleanupOutdatedCaches();
52
- if (options.navigateFallback) {
53
- registerRoute(new NavigationRoute(createHandlerBoundToURL(options.navigateFallback), {
54
- allowlist: options.navigateFallbackAllowlist,
55
- denylist: options.navigateFallbackDenylist
56
- }));
57
- }
58
- };
59
-
60
- const nonNullable = (value)=>value !== null && value !== undefined;
61
-
62
- const HANDLER_NAME_TO_METHOD = {
63
- CacheFirst,
64
- CacheOnly,
65
- NetworkFirst,
66
- NetworkOnly,
67
- StaleWhileRevalidate
31
+ const isNavigationPreloadSupported = ()=>{
32
+ return Boolean(self.registration?.navigationPreload);
68
33
  };
69
- const registerRuntimeCaching = (...runtimeCachingList)=>{
70
- if (!("__WB_FORCE_RUNTIME_CACHING" in globalThis)) {
71
- self.__WB_FORCE_RUNTIME_CACHING = false;
72
- }
73
- if (!self.__WB_FORCE_RUNTIME_CACHING && process.env.NODE_ENV !== "production") {
74
- logger.log("registerRuntimeCaching is disabled in development mode.");
75
- return;
34
+ const enableNavigationPreload = (headerValue)=>{
35
+ if (isNavigationPreloadSupported()) {
36
+ self.addEventListener("activate", (event)=>{
37
+ event.waitUntil(self.registration.navigationPreload.enable().then(()=>{
38
+ if (headerValue) {
39
+ void self.registration.navigationPreload.setHeaderValue(headerValue);
40
+ }
41
+ if (process.env.NODE_ENV !== "production") {
42
+ logger.log("Navigation preloading is enabled.");
43
+ }
44
+ }));
45
+ });
46
+ } else {
47
+ if (process.env.NODE_ENV !== "production") {
48
+ logger.log("Navigation preloading is not supported in this browser.");
49
+ }
76
50
  }
77
- for (const rcEntry of runtimeCachingList){
78
- if (typeof rcEntry.handler === "string") {
79
- const { cacheName, networkTimeoutSeconds, fetchOptions, matchOptions, plugins, backgroundSync, broadcastUpdate, cacheableResponse, expiration, precacheFallback, rangeRequests } = rcEntry.options;
80
- const Handler = HANDLER_NAME_TO_METHOD[rcEntry.handler];
81
- registerRoute(rcEntry.urlPattern, new Handler({
82
- cacheName: cacheName ?? undefined,
83
- networkTimeoutSeconds,
84
- fetchOptions,
85
- matchOptions,
86
- plugins: [
87
- ...plugins ?? [],
88
- backgroundSync && new BackgroundSyncPlugin(backgroundSync.name, backgroundSync.options),
89
- broadcastUpdate && new BroadcastUpdatePlugin({
90
- channelName: broadcastUpdate.channelName,
91
- ...broadcastUpdate.options
92
- }),
93
- cacheableResponse && new CacheableResponsePlugin(cacheableResponse),
94
- expiration && new ExpirationPlugin(expiration),
95
- precacheFallback && new PrecacheFallbackPlugin(precacheFallback),
96
- rangeRequests ? new RangeRequestsPlugin() : undefined
97
- ].filter(nonNullable)
98
- }), rcEntry.method);
99
- } else {
100
- registerRoute(rcEntry.urlPattern, rcEntry.handler, rcEntry.method);
51
+ };
52
+ const disableNavigationPreload = ()=>{
53
+ if (isNavigationPreloadSupported()) {
54
+ self.addEventListener("activate", (event)=>{
55
+ event.waitUntil(self.registration.navigationPreload.disable().then(()=>{
56
+ if (process.env.NODE_ENV !== "production") {
57
+ logger.log("Navigation preloading is disabled.");
58
+ }
59
+ }));
60
+ });
61
+ } else {
62
+ if (process.env.NODE_ENV !== "production") {
63
+ logger.log("Navigation preloading is not supported in this browser.");
101
64
  }
102
65
  }
103
66
  };
104
67
 
105
- const installSerwist = ({ precacheEntries, precacheOptions, cleanupOutdatedCaches, skipWaiting = false, importScripts, navigationPreload = false, cacheId, clientsClaim: clientsClaim$1 = false, runtimeCaching, offlineAnalyticsConfig, disableDevLogs: disableDevLogs$1, fallbacks: fallbacks$1, ...options })=>{
106
- if (!!importScripts && importScripts.length > 0) self.importScripts(...importScripts);
107
- if (navigationPreload) enable();
108
- if (cacheId !== undefined) {
109
- setCacheNameDetails({
110
- prefix: cacheId
111
- });
68
+ class Serwist {
69
+ _precacheController;
70
+ _router;
71
+ constructor({ precacheController, router } = {}){
72
+ this._precacheController = precacheController || getSingletonPrecacheController();
73
+ this._router = router || getSingletonRouter();
112
74
  }
113
- if (skipWaiting) {
114
- self.skipWaiting();
115
- } else {
116
- self.addEventListener("message", (event)=>{
117
- if (event.data && event.data.type === "SKIP_WAITING") {
118
- self.skipWaiting();
75
+ install({ precacheEntries, precacheOptions, cleanupOutdatedCaches: cleanupOutdatedCaches$1, navigateFallback, navigateFallbackAllowlist, navigateFallbackDenylist, skipWaiting = false, importScripts, navigationPreload = false, cacheId, clientsClaim: clientsClaim$1 = false, runtimeCaching, offlineAnalyticsConfig, disableDevLogs: disableDevLogs$1 = false, fallbacks: fallbacks$1 } = {}) {
76
+ if (!!importScripts && importScripts.length > 0) self.importScripts(...importScripts);
77
+ if (navigationPreload) enableNavigationPreload();
78
+ if (cacheId !== undefined) {
79
+ setCacheNameDetails({
80
+ prefix: cacheId
81
+ });
82
+ }
83
+ if (skipWaiting) {
84
+ self.skipWaiting();
85
+ } else {
86
+ self.addEventListener("message", (event)=>{
87
+ if (event.data && event.data.type === "SKIP_WAITING") {
88
+ self.skipWaiting();
89
+ }
90
+ });
91
+ }
92
+ if (clientsClaim$1) clientsClaim();
93
+ if (!!precacheEntries && precacheEntries.length > 0) {
94
+ this._precacheController.precache(precacheEntries);
95
+ this._router.registerRoute(new PrecacheRoute(this._precacheController, precacheOptions));
96
+ if (cleanupOutdatedCaches$1) cleanupOutdatedCaches();
97
+ if (navigateFallback) {
98
+ this._router.registerRoute(new NavigationRoute(createHandlerBoundToURL(navigateFallback), {
99
+ allowlist: navigateFallbackAllowlist,
100
+ denylist: navigateFallbackDenylist
101
+ }));
119
102
  }
120
- });
121
- }
122
- if (clientsClaim$1) clientsClaim();
123
- handlePrecaching({
124
- precacheEntries,
125
- precacheOptions,
126
- cleanupOutdatedCaches,
127
- ...options.navigateFallback && {
128
- navigateFallback: options.navigateFallback,
129
- navigateFallbackAllowlist: options.navigateFallbackAllowlist,
130
- navigateFallbackDenylist: options.navigateFallbackDenylist
131
103
  }
132
- });
133
- if (runtimeCaching !== undefined) {
134
- if (!("__WB_FORCE_RUNTIME_CACHING" in globalThis)) {
135
- self.__WB_FORCE_RUNTIME_CACHING = false;
104
+ if (offlineAnalyticsConfig !== undefined) {
105
+ if (typeof offlineAnalyticsConfig === "boolean") {
106
+ offlineAnalyticsConfig && initialize();
107
+ } else {
108
+ initialize(offlineAnalyticsConfig);
109
+ }
136
110
  }
137
- if (!self.__WB_FORCE_RUNTIME_CACHING && process.env.NODE_ENV !== "production") {
138
- logger.log("runtimeCaching and fallbacks are disabled in development mode.");
139
- } else {
111
+ if (runtimeCaching !== undefined) {
140
112
  if (fallbacks$1 !== undefined) {
141
- runtimeCaching = fallbacks({
113
+ fallbacks({
142
114
  ...fallbacks$1,
143
115
  runtimeCaching
144
116
  });
145
117
  }
146
- registerRuntimeCaching(...runtimeCaching);
118
+ for (const entry of runtimeCaching){
119
+ this._router.registerRoute(parseRoute(entry.matcher, entry.handler, entry.method));
120
+ }
147
121
  }
122
+ if (disableDevLogs$1) disableDevLogs();
148
123
  }
149
- if (offlineAnalyticsConfig !== undefined) {
150
- if (typeof offlineAnalyticsConfig === "boolean") {
151
- offlineAnalyticsConfig && initialize();
152
- } else {
153
- initialize(offlineAnalyticsConfig);
124
+ }
125
+
126
+ const handlePrecaching = ({ precacheEntries, precacheOptions, cleanupOutdatedCaches: cleanupOutdatedCaches$1 = false, ...options })=>{
127
+ if (!!precacheEntries && precacheEntries.length > 0) {
128
+ precacheAndRoute(precacheEntries, precacheOptions);
129
+ if (cleanupOutdatedCaches$1) cleanupOutdatedCaches();
130
+ if (options.navigateFallback) {
131
+ registerRoute(new NavigationRoute(createHandlerBoundToURL(options.navigateFallback), {
132
+ allowlist: options.navigateFallbackAllowlist,
133
+ denylist: options.navigateFallbackDenylist
134
+ }));
154
135
  }
155
136
  }
156
- if (disableDevLogs$1) disableDevLogs();
157
137
  };
158
138
 
159
- export { disableDevLogs, fallbacks, handlePrecaching, installSerwist, registerRuntimeCaching };
139
+ const installSerwist = (options)=>{
140
+ if (process.env.NODE_ENV !== "production") {
141
+ logger.warn("'installSerwist' has been deprecated. Please migrate to 'new Serwist().install()'.");
142
+ }
143
+ const serwist = new Serwist({
144
+ precacheController: getSingletonPrecacheController(),
145
+ router: getSingletonRouter()
146
+ });
147
+ serwist.install(options);
148
+ };
149
+
150
+ const registerRuntimeCaching = (...runtimeCachingList)=>{
151
+ for (const entry of runtimeCachingList){
152
+ registerRoute(entry.matcher, entry.handler, entry.method);
153
+ }
154
+ };
155
+
156
+ export { Serwist, disableDevLogs, disableNavigationPreload, enableNavigationPreload, fallbacks, handlePrecaching, installSerwist, isNavigationPreloadSupported, registerRuntimeCaching };
@@ -0,0 +1,41 @@
1
+ import { BackgroundSyncPlugin } from "./plugins/backgroundSync/BackgroundSyncPlugin.js";
2
+ import type { QueueEntry as BackgroundSyncQueueEntry, QueueOptions as BackgroundSyncQueueOptions } from "./plugins/backgroundSync/Queue.js";
3
+ import { Queue as BackgroundSyncQueue } from "./plugins/backgroundSync/Queue.js";
4
+ import { QueueStore as BackgroundSyncQueueStore } from "./plugins/backgroundSync/QueueStore.js";
5
+ import { StorableRequest } from "./plugins/backgroundSync/StorableRequest.js";
6
+ import { BroadcastCacheUpdate } from "./plugins/broadcastUpdate/BroadcastCacheUpdate.js";
7
+ import { BroadcastUpdatePlugin } from "./plugins/broadcastUpdate/BroadcastUpdatePlugin.js";
8
+ import { CACHE_UPDATED_MESSAGE_META as BROADCAST_UPDATE_MESSAGE_META, CACHE_UPDATED_MESSAGE_TYPE as BROADCAST_UPDATE_MESSAGE_TYPE, defaultHeadersToCheck as BROADCAST_UPDATE_DEFAULT_HEADERS } from "./plugins/broadcastUpdate/constants.js";
9
+ import { responsesAreSame } from "./plugins/broadcastUpdate/responsesAreSame.js";
10
+ import type { BroadcastCacheUpdateOptions, BroadcastMessage, BroadcastPayload, BroadcastPayloadGenerator } from "./plugins/broadcastUpdate/types.js";
11
+ import type { CacheableResponseOptions } from "./plugins/cacheableResponse/CacheableResponse.js";
12
+ import { CacheableResponse } from "./plugins/cacheableResponse/CacheableResponse.js";
13
+ import { CacheableResponsePlugin } from "./plugins/cacheableResponse/CacheableResponsePlugin.js";
14
+ import { CacheExpiration } from "./plugins/expiration/CacheExpiration.js";
15
+ import type { ExpirationPluginOptions } from "./plugins/expiration/ExpirationPlugin.js";
16
+ import { ExpirationPlugin } from "./plugins/expiration/ExpirationPlugin.js";
17
+ import type { GoogleAnalyticsInitializeOptions } from "./plugins/googleAnalytics/initialize.js";
18
+ import { initialize as initializeGoogleAnalytics } from "./plugins/googleAnalytics/initialize.js";
19
+ import type { PrecacheFallbackEntry, PrecacheFallbackPluginOptions } from "./plugins/precaching/PrecacheFallbackPlugin.js";
20
+ import { PrecacheFallbackPlugin } from "./plugins/precaching/PrecacheFallbackPlugin.js";
21
+ import { RangeRequestsPlugin } from "./plugins/rangeRequests/RangeRequestsPlugin.js";
22
+ import { createPartialResponse } from "./plugins/rangeRequests/createPartialResponse.js";
23
+ interface SyncManager {
24
+ getTags(): Promise<string[]>;
25
+ register(tag: string): Promise<void>;
26
+ }
27
+ declare global {
28
+ interface ServiceWorkerRegistration {
29
+ readonly sync: SyncManager;
30
+ }
31
+ interface SyncEvent extends ExtendableEvent {
32
+ readonly lastChance: boolean;
33
+ readonly tag: string;
34
+ }
35
+ interface ServiceWorkerGlobalScopeEventMap {
36
+ sync: SyncEvent;
37
+ }
38
+ }
39
+ export { BackgroundSyncPlugin, BackgroundSyncQueue, BackgroundSyncQueueStore, StorableRequest, BroadcastCacheUpdate, BroadcastUpdatePlugin, responsesAreSame, BROADCAST_UPDATE_MESSAGE_META, BROADCAST_UPDATE_MESSAGE_TYPE, BROADCAST_UPDATE_DEFAULT_HEADERS, CacheableResponse, CacheableResponsePlugin, CacheExpiration, ExpirationPlugin, PrecacheFallbackPlugin, createPartialResponse, RangeRequestsPlugin, initializeGoogleAnalytics, };
40
+ export type { BackgroundSyncQueueOptions, BackgroundSyncQueueEntry, BroadcastCacheUpdateOptions, BroadcastPayload, BroadcastPayloadGenerator, BroadcastMessage, CacheableResponseOptions, ExpirationPluginOptions, PrecacheFallbackEntry, PrecacheFallbackPluginOptions, GoogleAnalyticsInitializeOptions, };
41
+ //# sourceMappingURL=index.plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.plugins.d.ts","sourceRoot":"","sources":["../src/index.plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,KAAK,EAAE,UAAU,IAAI,wBAAwB,EAAE,YAAY,IAAI,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC5I,OAAO,EAAE,KAAK,IAAI,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,UAAU,IAAI,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAC3F,OAAO,EACL,0BAA0B,IAAI,6BAA6B,EAC3D,0BAA0B,IAAI,6BAA6B,EAC3D,qBAAqB,IAAI,gCAAgC,EAC1D,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACjF,OAAO,KAAK,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACrJ,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wDAAwD,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,UAAU,IAAI,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,KAAK,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAC3H,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AAGzF,UAAU,WAAW;IACnB,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,yBAAyB;QACjC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;KAC5B;IAED,UAAU,SAAU,SAAQ,eAAe;QACzC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;QAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACtB;IAED,UAAU,gCAAgC;QACxC,IAAI,EAAE,SAAS,CAAC;KACjB;CACF;AAED,OAAO,EAEL,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,EAEf,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,6BAA6B,EAC7B,6BAA6B,EAC7B,gCAAgC,EAEhC,iBAAiB,EACjB,uBAAuB,EAEvB,eAAe,EACf,gBAAgB,EAEhB,sBAAsB,EAEtB,qBAAqB,EACrB,mBAAmB,EAEnB,yBAAyB,GAC1B,CAAC;AAEF,YAAY,EAEV,0BAA0B,EAC1B,wBAAwB,EAExB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,EAEhB,wBAAwB,EAExB,uBAAuB,EAEvB,qBAAqB,EACrB,6BAA6B,EAE7B,gCAAgC,GACjC,CAAC"}