@serwist/sw 9.0.0-preview.17 → 9.0.0-preview.19

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 (254) hide show
  1. package/dist/{Serwist.d.ts → abstractions/Serwist.d.ts} +6 -15
  2. package/dist/abstractions/Serwist.d.ts.map +1 -0
  3. package/dist/abstractions/disableDevLogs.d.ts.map +1 -0
  4. package/dist/{fallbacks.d.ts → abstractions/fallbacks.d.ts} +2 -2
  5. package/dist/abstractions/fallbacks.d.ts.map +1 -0
  6. package/dist/{handlePrecaching.d.ts → abstractions/handlePrecaching.d.ts} +1 -1
  7. package/dist/abstractions/handlePrecaching.d.ts.map +1 -0
  8. package/dist/abstractions/installSerwist.d.ts.map +1 -0
  9. package/dist/abstractions/navigationPreload.d.ts +20 -0
  10. package/dist/abstractions/navigationPreload.d.ts.map +1 -0
  11. package/dist/abstractions/registerRuntimeCaching.d.ts.map +1 -0
  12. package/dist/{types.d.ts → abstractions/types.d.ts} +1 -1
  13. package/dist/abstractions/types.d.ts.map +1 -0
  14. package/dist/chunks/NavigationRoute.js +54 -0
  15. package/dist/chunks/NetworkOnly.js +193 -0
  16. package/dist/chunks/PrecacheFallbackPlugin.js +573 -0
  17. package/dist/chunks/Strategy.js +410 -0
  18. package/dist/chunks/getOrCreatePrecacheController.js +429 -0
  19. package/dist/chunks/precacheAndRoute.js +112 -0
  20. package/dist/chunks/registerRoute.js +408 -0
  21. package/dist/index.d.ts +10 -9
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +50 -12
  24. package/dist/index.plugins.d.ts +40 -11
  25. package/dist/index.plugins.d.ts.map +1 -1
  26. package/dist/index.plugins.js +671 -5
  27. package/dist/index.precaching.d.ts +24 -0
  28. package/dist/index.precaching.d.ts.map +1 -0
  29. package/dist/index.precaching.js +24 -0
  30. package/dist/index.routing.d.ts +13 -0
  31. package/dist/index.routing.d.ts.map +1 -0
  32. package/dist/index.routing.js +21 -0
  33. package/dist/index.strategies.d.ts +19 -2
  34. package/dist/index.strategies.d.ts.map +1 -1
  35. package/dist/index.strategies.js +146 -1
  36. package/dist/plugins/backgroundSync/BackgroundSyncPlugin.d.ts +23 -0
  37. package/dist/plugins/backgroundSync/BackgroundSyncPlugin.d.ts.map +1 -0
  38. package/dist/plugins/backgroundSync/Queue.d.ts +166 -0
  39. package/dist/plugins/backgroundSync/Queue.d.ts.map +1 -0
  40. package/dist/plugins/backgroundSync/QueueDb.d.ts +90 -0
  41. package/dist/plugins/backgroundSync/QueueDb.d.ts.map +1 -0
  42. package/dist/plugins/backgroundSync/QueueStore.d.ts +75 -0
  43. package/dist/plugins/backgroundSync/QueueStore.d.ts.map +1 -0
  44. package/dist/plugins/backgroundSync/StorableRequest.d.ts +51 -0
  45. package/dist/plugins/backgroundSync/StorableRequest.d.ts.map +1 -0
  46. package/dist/plugins/broadcastUpdate/BroadcastCacheUpdate.d.ts +45 -0
  47. package/dist/plugins/broadcastUpdate/BroadcastCacheUpdate.d.ts.map +1 -0
  48. package/dist/plugins/broadcastUpdate/BroadcastUpdatePlugin.d.ts +27 -0
  49. package/dist/plugins/broadcastUpdate/BroadcastUpdatePlugin.d.ts.map +1 -0
  50. package/dist/plugins/broadcastUpdate/constants.d.ts +5 -0
  51. package/dist/plugins/broadcastUpdate/constants.d.ts.map +1 -0
  52. package/dist/plugins/broadcastUpdate/responsesAreSame.d.ts +11 -0
  53. package/dist/plugins/broadcastUpdate/responsesAreSame.d.ts.map +1 -0
  54. package/dist/plugins/broadcastUpdate/types.d.ts +34 -0
  55. package/dist/plugins/broadcastUpdate/types.d.ts.map +1 -0
  56. package/dist/plugins/cacheableResponse/CacheableResponse.d.ts +40 -0
  57. package/dist/plugins/cacheableResponse/CacheableResponse.d.ts.map +1 -0
  58. package/dist/plugins/cacheableResponse/CacheableResponsePlugin.d.ts +27 -0
  59. package/dist/plugins/cacheableResponse/CacheableResponsePlugin.d.ts.map +1 -0
  60. package/dist/plugins/expiration/CacheExpiration.d.ts +66 -0
  61. package/dist/plugins/expiration/CacheExpiration.d.ts.map +1 -0
  62. package/dist/plugins/expiration/ExpirationPlugin.d.ts +116 -0
  63. package/dist/plugins/expiration/ExpirationPlugin.d.ts.map +1 -0
  64. package/dist/plugins/expiration/models/CacheTimestampsModel.d.ts +73 -0
  65. package/dist/plugins/expiration/models/CacheTimestampsModel.d.ts.map +1 -0
  66. package/dist/plugins/googleAnalytics/constants.d.ts +10 -0
  67. package/dist/plugins/googleAnalytics/constants.d.ts.map +1 -0
  68. package/dist/plugins/googleAnalytics/initialize.d.ts +26 -0
  69. package/dist/plugins/googleAnalytics/initialize.d.ts.map +1 -0
  70. package/dist/plugins/precaching/PrecacheFallbackPlugin.d.ts +54 -0
  71. package/dist/plugins/precaching/PrecacheFallbackPlugin.d.ts.map +1 -0
  72. package/dist/plugins/rangeRequests/RangeRequestsPlugin.d.ts +19 -0
  73. package/dist/plugins/rangeRequests/RangeRequestsPlugin.d.ts.map +1 -0
  74. package/dist/plugins/rangeRequests/createPartialResponse.d.ts +18 -0
  75. package/dist/plugins/rangeRequests/createPartialResponse.d.ts.map +1 -0
  76. package/dist/plugins/rangeRequests/utils/calculateEffectiveBoundaries.d.ts +14 -0
  77. package/dist/plugins/rangeRequests/utils/calculateEffectiveBoundaries.d.ts.map +1 -0
  78. package/dist/plugins/rangeRequests/utils/parseRangeHeader.d.ts +12 -0
  79. package/dist/plugins/rangeRequests/utils/parseRangeHeader.d.ts.map +1 -0
  80. package/dist/precaching/PrecacheController.d.ts +145 -0
  81. package/dist/precaching/PrecacheController.d.ts.map +1 -0
  82. package/dist/precaching/PrecacheRoute.d.ts +20 -0
  83. package/dist/precaching/PrecacheRoute.d.ts.map +1 -0
  84. package/dist/precaching/PrecacheStrategy.d.ts +68 -0
  85. package/dist/precaching/PrecacheStrategy.d.ts.map +1 -0
  86. package/dist/precaching/addPlugins.d.ts +8 -0
  87. package/dist/precaching/addPlugins.d.ts.map +1 -0
  88. package/dist/precaching/addRoute.d.ts +15 -0
  89. package/dist/precaching/addRoute.d.ts.map +1 -0
  90. package/dist/precaching/cleanupOutdatedCaches.d.ts +6 -0
  91. package/dist/precaching/cleanupOutdatedCaches.d.ts.map +1 -0
  92. package/dist/precaching/createHandlerBoundToURL.d.ts +17 -0
  93. package/dist/precaching/createHandlerBoundToURL.d.ts.map +1 -0
  94. package/dist/precaching/getCacheKeyForURL.d.ts +20 -0
  95. package/dist/precaching/getCacheKeyForURL.d.ts.map +1 -0
  96. package/dist/precaching/matchPrecache.d.ts +14 -0
  97. package/dist/precaching/matchPrecache.d.ts.map +1 -0
  98. package/dist/precaching/precache.d.ts +19 -0
  99. package/dist/precaching/precache.d.ts.map +1 -0
  100. package/dist/precaching/precacheAndRoute.d.ts +14 -0
  101. package/dist/precaching/precacheAndRoute.d.ts.map +1 -0
  102. package/dist/precaching/types.d.ts +37 -0
  103. package/dist/precaching/types.d.ts.map +1 -0
  104. package/dist/precaching/utils/PrecacheCacheKeyPlugin.d.ts +17 -0
  105. package/dist/precaching/utils/PrecacheCacheKeyPlugin.d.ts.map +1 -0
  106. package/dist/precaching/utils/PrecacheInstallReportPlugin.d.ts +15 -0
  107. package/dist/precaching/utils/PrecacheInstallReportPlugin.d.ts.map +1 -0
  108. package/dist/precaching/utils/createCacheKey.d.ts +16 -0
  109. package/dist/precaching/utils/createCacheKey.d.ts.map +1 -0
  110. package/dist/precaching/utils/deleteOutdatedCaches.d.ts +18 -0
  111. package/dist/precaching/utils/deleteOutdatedCaches.d.ts.map +1 -0
  112. package/dist/precaching/utils/generateURLVariations.d.ts +12 -0
  113. package/dist/precaching/utils/generateURLVariations.d.ts.map +1 -0
  114. package/dist/precaching/utils/getCacheKeyForURL.d.ts +14 -0
  115. package/dist/precaching/utils/getCacheKeyForURL.d.ts.map +1 -0
  116. package/dist/precaching/utils/getOrCreatePrecacheController.d.ts +7 -0
  117. package/dist/precaching/utils/getOrCreatePrecacheController.d.ts.map +1 -0
  118. package/dist/precaching/utils/printCleanupDetails.d.ts +6 -0
  119. package/dist/precaching/utils/printCleanupDetails.d.ts.map +1 -0
  120. package/dist/precaching/utils/printInstallDetails.d.ts +7 -0
  121. package/dist/precaching/utils/printInstallDetails.d.ts.map +1 -0
  122. package/dist/precaching/utils/removeIgnoredSearchParams.d.ts +12 -0
  123. package/dist/precaching/utils/removeIgnoredSearchParams.d.ts.map +1 -0
  124. package/dist/routing/NavigationRoute.d.ts +57 -0
  125. package/dist/routing/NavigationRoute.d.ts.map +1 -0
  126. package/dist/routing/RegExpRoute.d.ts +24 -0
  127. package/dist/routing/RegExpRoute.d.ts.map +1 -0
  128. package/dist/routing/Route.d.ts +33 -0
  129. package/dist/routing/Route.d.ts.map +1 -0
  130. package/dist/routing/Router.d.ts +124 -0
  131. package/dist/routing/Router.d.ts.map +1 -0
  132. package/dist/routing/registerRoute.d.ts +15 -0
  133. package/dist/routing/registerRoute.d.ts.map +1 -0
  134. package/dist/routing/setCatchHandler.d.ts +9 -0
  135. package/dist/routing/setCatchHandler.d.ts.map +1 -0
  136. package/dist/routing/setDefaultHandler.d.ts +12 -0
  137. package/dist/routing/setDefaultHandler.d.ts.map +1 -0
  138. package/dist/routing/unregisterRoute.d.ts +8 -0
  139. package/dist/routing/unregisterRoute.d.ts.map +1 -0
  140. package/dist/routing/utils/constants.d.ts +15 -0
  141. package/dist/routing/utils/constants.d.ts.map +1 -0
  142. package/dist/routing/utils/getOrCreateDefaultRouter.d.ts +10 -0
  143. package/dist/routing/utils/getOrCreateDefaultRouter.d.ts.map +1 -0
  144. package/dist/routing/utils/normalizeHandler.d.ts +10 -0
  145. package/dist/routing/utils/normalizeHandler.d.ts.map +1 -0
  146. package/dist/routing/utils/parseRoute.d.ts +5 -0
  147. package/dist/routing/utils/parseRoute.d.ts.map +1 -0
  148. package/dist/strategies/CacheFirst.d.ts +23 -0
  149. package/dist/strategies/CacheFirst.d.ts.map +1 -0
  150. package/dist/strategies/CacheOnly.d.ts +20 -0
  151. package/dist/strategies/CacheOnly.d.ts.map +1 -0
  152. package/dist/strategies/NetworkFirst.d.ts +61 -0
  153. package/dist/strategies/NetworkFirst.d.ts.map +1 -0
  154. package/dist/strategies/NetworkOnly.d.ts +32 -0
  155. package/dist/strategies/NetworkOnly.d.ts.map +1 -0
  156. package/dist/strategies/StaleWhileRevalidate.d.ts +35 -0
  157. package/dist/strategies/StaleWhileRevalidate.d.ts.map +1 -0
  158. package/dist/strategies/Strategy.d.ts +83 -0
  159. package/dist/strategies/Strategy.d.ts.map +1 -0
  160. package/dist/strategies/StrategyHandler.d.ts +189 -0
  161. package/dist/strategies/StrategyHandler.d.ts.map +1 -0
  162. package/dist/strategies/plugins/cacheOkAndOpaquePlugin.d.ts +3 -0
  163. package/dist/strategies/plugins/cacheOkAndOpaquePlugin.d.ts.map +1 -0
  164. package/dist/strategies/utils/messages.d.ts +5 -0
  165. package/dist/strategies/utils/messages.d.ts.map +1 -0
  166. package/package.json +22 -17
  167. package/src/{Serwist.ts → abstractions/Serwist.ts} +18 -21
  168. package/src/{fallbacks.ts → abstractions/fallbacks.ts} +5 -5
  169. package/src/{handlePrecaching.ts → abstractions/handlePrecaching.ts} +6 -3
  170. package/src/{installSerwist.ts → abstractions/installSerwist.ts} +2 -2
  171. package/src/abstractions/navigationPreload.ts +64 -0
  172. package/src/{registerRuntimeCaching.ts → abstractions/registerRuntimeCaching.ts} +1 -1
  173. package/src/{types.ts → abstractions/types.ts} +1 -1
  174. package/src/index.plugins.ts +65 -16
  175. package/src/index.precaching.ts +38 -0
  176. package/src/index.routing.ts +14 -0
  177. package/src/index.strategies.ts +22 -2
  178. package/src/index.ts +21 -9
  179. package/src/plugins/backgroundSync/BackgroundSyncPlugin.ts +39 -0
  180. package/src/plugins/backgroundSync/Queue.ts +438 -0
  181. package/src/plugins/backgroundSync/QueueDb.ts +176 -0
  182. package/src/plugins/backgroundSync/QueueStore.ts +161 -0
  183. package/src/plugins/backgroundSync/StorableRequest.ts +142 -0
  184. package/src/plugins/broadcastUpdate/BroadcastCacheUpdate.ts +159 -0
  185. package/src/plugins/broadcastUpdate/BroadcastUpdatePlugin.ts +43 -0
  186. package/src/plugins/broadcastUpdate/constants.ts +12 -0
  187. package/src/plugins/broadcastUpdate/responsesAreSame.ts +48 -0
  188. package/src/plugins/broadcastUpdate/types.ts +37 -0
  189. package/src/plugins/cacheableResponse/CacheableResponse.ts +141 -0
  190. package/src/plugins/cacheableResponse/CacheableResponsePlugin.ts +46 -0
  191. package/src/plugins/expiration/CacheExpiration.ts +192 -0
  192. package/src/plugins/expiration/ExpirationPlugin.ts +297 -0
  193. package/src/plugins/expiration/models/CacheTimestampsModel.ts +184 -0
  194. package/src/plugins/googleAnalytics/constants.ts +22 -0
  195. package/src/plugins/googleAnalytics/initialize.ts +200 -0
  196. package/src/plugins/precaching/PrecacheFallbackPlugin.ts +86 -0
  197. package/src/plugins/rangeRequests/RangeRequestsPlugin.ts +39 -0
  198. package/src/plugins/rangeRequests/createPartialResponse.ts +92 -0
  199. package/src/plugins/rangeRequests/utils/calculateEffectiveBoundaries.ts +58 -0
  200. package/src/plugins/rangeRequests/utils/parseRangeHeader.ts +54 -0
  201. package/src/precaching/PrecacheController.ts +332 -0
  202. package/src/precaching/PrecacheRoute.ts +50 -0
  203. package/src/precaching/PrecacheStrategy.ts +238 -0
  204. package/src/precaching/addPlugins.ts +21 -0
  205. package/src/precaching/addRoute.ts +30 -0
  206. package/src/precaching/cleanupOutdatedCaches.ts +33 -0
  207. package/src/precaching/createHandlerBoundToURL.ts +30 -0
  208. package/src/precaching/getCacheKeyForURL.ts +33 -0
  209. package/src/precaching/matchPrecache.ts +26 -0
  210. package/src/precaching/precache.ts +31 -0
  211. package/src/precaching/precacheAndRoute.ts +27 -0
  212. package/src/precaching/types.ts +46 -0
  213. package/src/precaching/utils/PrecacheCacheKeyPlugin.ts +36 -0
  214. package/src/precaching/utils/PrecacheInstallReportPlugin.ts +49 -0
  215. package/src/precaching/utils/createCacheKey.ts +68 -0
  216. package/src/precaching/utils/deleteOutdatedCaches.ts +40 -0
  217. package/src/precaching/utils/generateURLVariations.ts +55 -0
  218. package/src/precaching/utils/getCacheKeyForURL.ts +36 -0
  219. package/src/precaching/utils/getOrCreatePrecacheController.ts +22 -0
  220. package/src/precaching/utils/printCleanupDetails.ts +38 -0
  221. package/src/precaching/utils/printInstallDetails.ts +53 -0
  222. package/src/precaching/utils/removeIgnoredSearchParams.ts +29 -0
  223. package/src/routing/NavigationRoute.ts +119 -0
  224. package/src/routing/RegExpRoute.ts +74 -0
  225. package/src/routing/Route.ts +68 -0
  226. package/src/routing/Router.ts +432 -0
  227. package/src/routing/registerRoute.ts +33 -0
  228. package/src/routing/setCatchHandler.ts +22 -0
  229. package/src/routing/setDefaultHandler.ts +25 -0
  230. package/src/routing/unregisterRoute.ts +12 -0
  231. package/src/routing/utils/constants.ts +24 -0
  232. package/src/routing/utils/getOrCreateDefaultRouter.ts +29 -0
  233. package/src/routing/utils/normalizeHandler.ts +40 -0
  234. package/src/routing/utils/parseRoute.ts +67 -0
  235. package/src/strategies/CacheFirst.ts +87 -0
  236. package/src/strategies/CacheOnly.ts +58 -0
  237. package/src/strategies/NetworkFirst.ts +228 -0
  238. package/src/strategies/NetworkOnly.ts +96 -0
  239. package/src/strategies/StaleWhileRevalidate.ts +109 -0
  240. package/src/strategies/Strategy.ts +202 -0
  241. package/src/strategies/StrategyHandler.ts +557 -0
  242. package/src/strategies/plugins/cacheOkAndOpaquePlugin.ts +26 -0
  243. package/src/strategies/utils/messages.ts +20 -0
  244. package/dist/Serwist.d.ts.map +0 -1
  245. package/dist/disableDevLogs.d.ts.map +0 -1
  246. package/dist/fallbacks.d.ts.map +0 -1
  247. package/dist/handlePrecaching.d.ts.map +0 -1
  248. package/dist/installSerwist.d.ts.map +0 -1
  249. package/dist/registerRuntimeCaching.d.ts.map +0 -1
  250. package/dist/types.d.ts.map +0 -1
  251. /package/dist/{disableDevLogs.d.ts → abstractions/disableDevLogs.d.ts} +0 -0
  252. /package/dist/{installSerwist.d.ts → abstractions/installSerwist.d.ts} +0 -0
  253. /package/dist/{registerRuntimeCaching.d.ts → abstractions/registerRuntimeCaching.d.ts} +0 -0
  254. /package/src/{disableDevLogs.ts → abstractions/disableDevLogs.ts} +0 -0
@@ -1,6 +1,6 @@
1
- import { type GoogleAnalyticsInitializeOptions } from "@serwist/google-analytics/initialize";
2
- import { PrecacheController } from "@serwist/precaching";
3
- import { Router } from "@serwist/routing";
1
+ import { type GoogleAnalyticsInitializeOptions } from "../plugins/googleAnalytics/initialize.js";
2
+ import { PrecacheController } from "../precaching/PrecacheController.js";
3
+ import { Router } from "../routing/Router.js";
4
4
  import type { FallbacksOptions } from "./fallbacks.js";
5
5
  import { type HandlePrecachingOptions } from "./handlePrecaching.js";
6
6
  import type { RuntimeCaching } from "./types.js";
@@ -8,22 +8,13 @@ export interface SerwistOptions {
8
8
  /**
9
9
  * The precache controller that will be used to perform efficient
10
10
  * precaching of assets.
11
- * @default
12
- * ```js
13
- * new PrecacheController()
14
- * ```
15
- * @see https://serwist.pages.dev/docs/sw/precache-controller
11
+ * @see https://serwist.pages.dev/docs/sw/precaching
16
12
  */
17
13
  precacheController?: PrecacheController;
18
14
  /**
19
15
  * The router that will be used to process a `FetchEvent`, responding
20
16
  * with a `Response` if a matching route exists.
21
- *
22
- * @default
23
- * ```js
24
- * new Router()
25
- * ```
26
- * @see https://serwist.pages.dev/docs/sw/router
17
+ * @see https://serwist.pages.dev/docs/sw/routing
27
18
  */
28
19
  router?: Router;
29
20
  }
@@ -72,7 +63,7 @@ export interface SerwistInstallOptions extends HandlePrecachingOptions {
72
63
  /**
73
64
  * Disables Serwist's logging in development mode.
74
65
  *
75
- * @default falseOmit<SerwistOptions, "precacheController">
66
+ * @default false
76
67
  */
77
68
  disableDevLogs?: boolean;
78
69
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Serwist.d.ts","sourceRoot":"","sources":["../../src/abstractions/Serwist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,gCAAgC,EAAc,MAAM,0CAA0C,CAAC;AAC7G,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAMzE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAK9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAsB,SAAQ,uBAAuB;IACpE;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;IAClC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,gCAAgC,GAAG,OAAO,CAAC;IACpE;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;CACtD;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,OAAO,CAAS;gBACZ,EAAE,kBAAkB,EAAE,MAAM,EAAE,GAAE,cAAmB;IAI/D,OAAO,CAAC,EACN,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,wBAAwB,EACxB,WAAmB,EACnB,aAAa,EACb,iBAAyB,EACzB,OAAO,EACP,YAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,cAAsB,EACtB,SAAS,GACV,EAAE,qBAAqB;CA8DzB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disableDevLogs.d.ts","sourceRoot":"","sources":["../../src/abstractions/disableDevLogs.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAAO,IAEjC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { HandlerDidErrorCallbackParam } from "@serwist/core";
2
- import type { PrecacheRouteOptions } from "@serwist/precaching";
3
- import type { PrecacheFallbackEntry } from "@serwist/precaching";
2
+ import type { PrecacheFallbackEntry } from "../plugins/precaching/PrecacheFallbackPlugin.js";
3
+ import type { PrecacheRouteOptions } from "../precaching/types.js";
4
4
  import type { RuntimeCaching } from "./types.js";
5
5
  export type FallbackMatcher = (_: HandlerDidErrorCallbackParam) => boolean;
6
6
  export interface FallbackEntry extends PrecacheFallbackEntry {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallbacks.d.ts","sourceRoot":"","sources":["../../src/abstractions/fallbacks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAC;AAE7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,4BAA4B,KAAK,OAAO,CAAC;AAE3E,MAAM,WAAW,aAAc,SAAQ,qBAAqB;IAC1D;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC;;OAEG;IACH,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB;;;OAGG;IACH,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACxC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,iDAAkD,gBAAgB,KAAG,cAAc,EAoBxG,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { PrecacheEntry, PrecacheRouteOptions } from "@serwist/precaching";
1
+ import type { PrecacheEntry, PrecacheRouteOptions } from "../precaching/types.js";
2
2
  export interface HandlePrecachingOptions {
3
3
  /**
4
4
  * A list of fallback entries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlePrecaching.d.ts","sourceRoot":"","sources":["../../src/abstractions/handlePrecaching.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAIlF,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,aAAa,GAAG,MAAM,CAAC,EAAE,CAAC;IAC7C;;OAEG;IACH,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;IACrC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;CACrC;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,4EAAqF,uBAAuB,KAAG,IAoB3I,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installSerwist.d.ts","sourceRoot":"","sources":["../../src/abstractions/installSerwist.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEnE;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,cAAc,YAAa,qBAAqB,KAAG,IAS/D,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Checks whether the current browser supports
3
+ * navigation preloading.
4
+ *
5
+ * @returns
6
+ */
7
+ export declare const isNavigationPreloadSupported: () => boolean;
8
+ /**
9
+ * If the browser supports navigation preloading, then this will enable it.
10
+ *
11
+ * @param headerValue Optional. Allows developers to override the value of
12
+ * the `Service-Worker-Navigation-Preload` header which will be sent to the
13
+ * server when making the navigation request.
14
+ */
15
+ export declare const enableNavigationPreload: (headerValue?: string) => void;
16
+ /**
17
+ * If the browser supports navigation preloading, then this will disable it.
18
+ */
19
+ export declare const disableNavigationPreload: () => void;
20
+ //# sourceMappingURL=navigationPreload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigationPreload.d.ts","sourceRoot":"","sources":["../../src/abstractions/navigationPreload.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,QAAO,OAE/C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,iBAAkB,MAAM,KAAG,IAqB9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,QAAO,IAgB3C,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerRuntimeCaching.d.ts","sourceRoot":"","sources":["../../src/abstractions/registerRuntimeCaching.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,0BAA2B,cAAc,EAAE,KAAG,IAIhF,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { RouteHandler, RouteMatchCallback } from "@serwist/core";
2
- import type { HTTPMethod } from "@serwist/routing";
2
+ import type { HTTPMethod } from "../routing/utils/constants.js";
3
3
  export interface RuntimeCaching {
4
4
  /**
5
5
  * The HTTP method to match against. The default value of `'GET'` is normally
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/abstractions/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;;;;;;;OASG;IACH,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,kBAAkB,CAAC;IAC9C;;;;OAIG;IACH,OAAO,EAAE,YAAY,CAAC;CACvB"}
@@ -0,0 +1,54 @@
1
+ import { assert, logger } from '@serwist/core/internal';
2
+ import { R as Route } from './registerRoute.js';
3
+
4
+ class NavigationRoute extends Route {
5
+ _allowlist;
6
+ _denylist;
7
+ constructor(handler, { allowlist = [
8
+ /./
9
+ ], denylist = [] } = {}){
10
+ if (process.env.NODE_ENV !== "production") {
11
+ assert.isArrayOfClass(allowlist, RegExp, {
12
+ moduleName: "@serwist/routing",
13
+ className: "NavigationRoute",
14
+ funcName: "constructor",
15
+ paramName: "options.allowlist"
16
+ });
17
+ assert.isArrayOfClass(denylist, RegExp, {
18
+ moduleName: "@serwist/routing",
19
+ className: "NavigationRoute",
20
+ funcName: "constructor",
21
+ paramName: "options.denylist"
22
+ });
23
+ }
24
+ super((options)=>this._match(options), handler);
25
+ this._allowlist = allowlist;
26
+ this._denylist = denylist;
27
+ }
28
+ _match({ url, request }) {
29
+ if (request && request.mode !== "navigate") {
30
+ return false;
31
+ }
32
+ const pathnameAndSearch = url.pathname + url.search;
33
+ for (const regExp of this._denylist){
34
+ if (regExp.test(pathnameAndSearch)) {
35
+ if (process.env.NODE_ENV !== "production") {
36
+ logger.log(`The navigation route ${pathnameAndSearch} is not being used, since the URL matches this denylist pattern: ${regExp.toString()}`);
37
+ }
38
+ return false;
39
+ }
40
+ }
41
+ if (this._allowlist.some((regExp)=>regExp.test(pathnameAndSearch))) {
42
+ if (process.env.NODE_ENV !== "production") {
43
+ logger.debug(`The navigation route ${pathnameAndSearch} is being used.`);
44
+ }
45
+ return true;
46
+ }
47
+ if (process.env.NODE_ENV !== "production") {
48
+ logger.log(`The navigation route ${pathnameAndSearch} is not being used, since the URL being navigated to doesn't match the allowlist.`);
49
+ }
50
+ return false;
51
+ }
52
+ }
53
+
54
+ export { NavigationRoute as N };
@@ -0,0 +1,193 @@
1
+ import { getFriendlyURL, logger, assert, SerwistError, timeout } from '@serwist/core/internal';
2
+ import { S as Strategy } from './Strategy.js';
3
+
4
+ const cacheOkAndOpaquePlugin = {
5
+ cacheWillUpdate: async ({ response })=>{
6
+ if (response.status === 200 || response.status === 0) {
7
+ return response;
8
+ }
9
+ return null;
10
+ }
11
+ };
12
+
13
+ const messages = {
14
+ strategyStart: (strategyName, request)=>`Using ${strategyName} to respond to '${getFriendlyURL(request.url)}'`,
15
+ printFinalResponse: (response)=>{
16
+ if (response) {
17
+ logger.groupCollapsed("View the final response here.");
18
+ logger.log(response || "[No response returned]");
19
+ logger.groupEnd();
20
+ }
21
+ }
22
+ };
23
+
24
+ class NetworkFirst extends Strategy {
25
+ _networkTimeoutSeconds;
26
+ constructor(options = {}){
27
+ super(options);
28
+ if (!this.plugins.some((p)=>"cacheWillUpdate" in p)) {
29
+ this.plugins.unshift(cacheOkAndOpaquePlugin);
30
+ }
31
+ this._networkTimeoutSeconds = options.networkTimeoutSeconds || 0;
32
+ if (process.env.NODE_ENV !== "production") {
33
+ if (this._networkTimeoutSeconds) {
34
+ assert.isType(this._networkTimeoutSeconds, "number", {
35
+ moduleName: "@serwist/strategies",
36
+ className: this.constructor.name,
37
+ funcName: "constructor",
38
+ paramName: "networkTimeoutSeconds"
39
+ });
40
+ }
41
+ }
42
+ }
43
+ async _handle(request, handler) {
44
+ const logs = [];
45
+ if (process.env.NODE_ENV !== "production") {
46
+ assert.isInstance(request, Request, {
47
+ moduleName: "@serwist/strategies",
48
+ className: this.constructor.name,
49
+ funcName: "handle",
50
+ paramName: "makeRequest"
51
+ });
52
+ }
53
+ const promises = [];
54
+ let timeoutId;
55
+ if (this._networkTimeoutSeconds) {
56
+ const { id, promise } = this._getTimeoutPromise({
57
+ request,
58
+ logs,
59
+ handler
60
+ });
61
+ timeoutId = id;
62
+ promises.push(promise);
63
+ }
64
+ const networkPromise = this._getNetworkPromise({
65
+ timeoutId,
66
+ request,
67
+ logs,
68
+ handler
69
+ });
70
+ promises.push(networkPromise);
71
+ const response = await handler.waitUntil((async ()=>{
72
+ return await handler.waitUntil(Promise.race(promises)) || await networkPromise;
73
+ })());
74
+ if (process.env.NODE_ENV !== "production") {
75
+ logger.groupCollapsed(messages.strategyStart(this.constructor.name, request));
76
+ for (const log of logs){
77
+ logger.log(log);
78
+ }
79
+ messages.printFinalResponse(response);
80
+ logger.groupEnd();
81
+ }
82
+ if (!response) {
83
+ throw new SerwistError("no-response", {
84
+ url: request.url
85
+ });
86
+ }
87
+ return response;
88
+ }
89
+ _getTimeoutPromise({ request, logs, handler }) {
90
+ let timeoutId;
91
+ const timeoutPromise = new Promise((resolve)=>{
92
+ const onNetworkTimeout = async ()=>{
93
+ if (process.env.NODE_ENV !== "production") {
94
+ logs.push(`Timing out the network response at ${this._networkTimeoutSeconds} seconds.`);
95
+ }
96
+ resolve(await handler.cacheMatch(request));
97
+ };
98
+ timeoutId = setTimeout(onNetworkTimeout, this._networkTimeoutSeconds * 1000);
99
+ });
100
+ return {
101
+ promise: timeoutPromise,
102
+ id: timeoutId
103
+ };
104
+ }
105
+ async _getNetworkPromise({ timeoutId, request, logs, handler }) {
106
+ let error = undefined;
107
+ let response = undefined;
108
+ try {
109
+ response = await handler.fetchAndCachePut(request);
110
+ } catch (fetchError) {
111
+ if (fetchError instanceof Error) {
112
+ error = fetchError;
113
+ }
114
+ }
115
+ if (timeoutId) {
116
+ clearTimeout(timeoutId);
117
+ }
118
+ if (process.env.NODE_ENV !== "production") {
119
+ if (response) {
120
+ logs.push("Got response from network.");
121
+ } else {
122
+ logs.push("Unable to get a response from the network. Will respond " + "with a cached response.");
123
+ }
124
+ }
125
+ if (error || !response) {
126
+ response = await handler.cacheMatch(request);
127
+ if (process.env.NODE_ENV !== "production") {
128
+ if (response) {
129
+ logs.push(`Found a cached response in the '${this.cacheName}' cache.`);
130
+ } else {
131
+ logs.push(`No response found in the '${this.cacheName}' cache.`);
132
+ }
133
+ }
134
+ }
135
+ return response;
136
+ }
137
+ }
138
+
139
+ class NetworkOnly extends Strategy {
140
+ _networkTimeoutSeconds;
141
+ constructor(options = {}){
142
+ super(options);
143
+ this._networkTimeoutSeconds = options.networkTimeoutSeconds || 0;
144
+ }
145
+ async _handle(request, handler) {
146
+ if (process.env.NODE_ENV !== "production") {
147
+ assert.isInstance(request, Request, {
148
+ moduleName: "@serwist/strategies",
149
+ className: this.constructor.name,
150
+ funcName: "_handle",
151
+ paramName: "request"
152
+ });
153
+ }
154
+ let error = undefined;
155
+ let response;
156
+ try {
157
+ const promises = [
158
+ handler.fetch(request)
159
+ ];
160
+ if (this._networkTimeoutSeconds) {
161
+ const timeoutPromise = timeout(this._networkTimeoutSeconds * 1000);
162
+ promises.push(timeoutPromise);
163
+ }
164
+ response = await Promise.race(promises);
165
+ if (!response) {
166
+ throw new Error(`Timed out the network response after ${this._networkTimeoutSeconds} seconds.`);
167
+ }
168
+ } catch (err) {
169
+ if (err instanceof Error) {
170
+ error = err;
171
+ }
172
+ }
173
+ if (process.env.NODE_ENV !== "production") {
174
+ logger.groupCollapsed(messages.strategyStart(this.constructor.name, request));
175
+ if (response) {
176
+ logger.log("Got response from network.");
177
+ } else {
178
+ logger.log("Unable to get a response from the network.");
179
+ }
180
+ messages.printFinalResponse(response);
181
+ logger.groupEnd();
182
+ }
183
+ if (!response) {
184
+ throw new SerwistError("no-response", {
185
+ url: request.url,
186
+ error
187
+ });
188
+ }
189
+ return response;
190
+ }
191
+ }
192
+
193
+ export { NetworkOnly as N, NetworkFirst as a, cacheOkAndOpaquePlugin as c, messages as m };