serwist 9.0.0-preview.24

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 (330) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/NavigationRoute.d.ts +57 -0
  4. package/dist/NavigationRoute.d.ts.map +1 -0
  5. package/dist/PrecacheRoute.d.ts +17 -0
  6. package/dist/PrecacheRoute.d.ts.map +1 -0
  7. package/dist/PrecacheStrategy.d.ts +66 -0
  8. package/dist/PrecacheStrategy.d.ts.map +1 -0
  9. package/dist/RegExpRoute.d.ts +24 -0
  10. package/dist/RegExpRoute.d.ts.map +1 -0
  11. package/dist/Route.d.ts +33 -0
  12. package/dist/Route.d.ts.map +1 -0
  13. package/dist/Serwist.d.ts +331 -0
  14. package/dist/Serwist.d.ts.map +1 -0
  15. package/dist/cacheNames.d.ts +20 -0
  16. package/dist/cacheNames.d.ts.map +1 -0
  17. package/dist/chunks/NetworkOnly.js +599 -0
  18. package/dist/chunks/PrecacheFallbackPlugin.js +634 -0
  19. package/dist/chunks/Serwist.js +1034 -0
  20. package/dist/chunks/registerQuotaErrorCallback.js +17 -0
  21. package/dist/chunks/resultingClientExists.js +32 -0
  22. package/dist/chunks/timeout.js +400 -0
  23. package/dist/chunks/waitUntil.js +24 -0
  24. package/dist/cleanupOutdatedCaches.d.ts +6 -0
  25. package/dist/cleanupOutdatedCaches.d.ts.map +1 -0
  26. package/dist/clientsClaim.d.ts +6 -0
  27. package/dist/clientsClaim.d.ts.map +1 -0
  28. package/dist/constants.d.ts +15 -0
  29. package/dist/constants.d.ts.map +1 -0
  30. package/dist/copyResponse.d.ts +20 -0
  31. package/dist/copyResponse.d.ts.map +1 -0
  32. package/dist/disableDevLogs.d.ts +7 -0
  33. package/dist/disableDevLogs.d.ts.map +1 -0
  34. package/dist/index.d.ts +21 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.internal.d.ts +16 -0
  37. package/dist/index.internal.d.ts.map +1 -0
  38. package/dist/index.internal.js +24 -0
  39. package/dist/index.js +27 -0
  40. package/dist/index.legacy.d.ts +32 -0
  41. package/dist/index.legacy.d.ts.map +1 -0
  42. package/dist/index.legacy.js +640 -0
  43. package/dist/index.plugins.d.ts +41 -0
  44. package/dist/index.plugins.d.ts.map +1 -0
  45. package/dist/index.plugins.js +669 -0
  46. package/dist/index.strategies.d.ts +22 -0
  47. package/dist/index.strategies.d.ts.map +1 -0
  48. package/dist/index.strategies.js +144 -0
  49. package/dist/legacy/PrecacheController.d.ts +146 -0
  50. package/dist/legacy/PrecacheController.d.ts.map +1 -0
  51. package/dist/legacy/PrecacheFallbackPlugin.d.ts +62 -0
  52. package/dist/legacy/PrecacheFallbackPlugin.d.ts.map +1 -0
  53. package/dist/legacy/PrecacheRoute.d.ts +19 -0
  54. package/dist/legacy/PrecacheRoute.d.ts.map +1 -0
  55. package/dist/legacy/Router.d.ts +151 -0
  56. package/dist/legacy/Router.d.ts.map +1 -0
  57. package/dist/legacy/addPlugins.d.ts +9 -0
  58. package/dist/legacy/addPlugins.d.ts.map +1 -0
  59. package/dist/legacy/addRoute.d.ts +16 -0
  60. package/dist/legacy/addRoute.d.ts.map +1 -0
  61. package/dist/legacy/createHandlerBoundToURL.d.ts +18 -0
  62. package/dist/legacy/createHandlerBoundToURL.d.ts.map +1 -0
  63. package/dist/legacy/fallbacks.d.ts +59 -0
  64. package/dist/legacy/fallbacks.d.ts.map +1 -0
  65. package/dist/legacy/getCacheKeyForURL.d.ts +20 -0
  66. package/dist/legacy/getCacheKeyForURL.d.ts.map +1 -0
  67. package/dist/legacy/handlePrecaching.d.ts +54 -0
  68. package/dist/legacy/handlePrecaching.d.ts.map +1 -0
  69. package/dist/legacy/installSerwist.d.ts +15 -0
  70. package/dist/legacy/installSerwist.d.ts.map +1 -0
  71. package/dist/legacy/matchPrecache.d.ts +15 -0
  72. package/dist/legacy/matchPrecache.d.ts.map +1 -0
  73. package/dist/legacy/precache.d.ts +20 -0
  74. package/dist/legacy/precache.d.ts.map +1 -0
  75. package/dist/legacy/precacheAndRoute.d.ts +15 -0
  76. package/dist/legacy/precacheAndRoute.d.ts.map +1 -0
  77. package/dist/legacy/registerRoute.d.ts +16 -0
  78. package/dist/legacy/registerRoute.d.ts.map +1 -0
  79. package/dist/legacy/registerRuntimeCaching.d.ts +11 -0
  80. package/dist/legacy/registerRuntimeCaching.d.ts.map +1 -0
  81. package/dist/legacy/setCatchHandler.d.ts +10 -0
  82. package/dist/legacy/setCatchHandler.d.ts.map +1 -0
  83. package/dist/legacy/setDefaultHandler.d.ts +13 -0
  84. package/dist/legacy/setDefaultHandler.d.ts.map +1 -0
  85. package/dist/legacy/singletonPrecacheController.d.ts +34 -0
  86. package/dist/legacy/singletonPrecacheController.d.ts.map +1 -0
  87. package/dist/legacy/singletonRouter.d.ts +41 -0
  88. package/dist/legacy/singletonRouter.d.ts.map +1 -0
  89. package/dist/legacy/unregisterRoute.d.ts +9 -0
  90. package/dist/legacy/unregisterRoute.d.ts.map +1 -0
  91. package/dist/legacy/utils/PrecacheCacheKeyPlugin.d.ts +16 -0
  92. package/dist/legacy/utils/PrecacheCacheKeyPlugin.d.ts.map +1 -0
  93. package/dist/legacy/utils/getCacheKeyForURL.d.ts +14 -0
  94. package/dist/legacy/utils/getCacheKeyForURL.d.ts.map +1 -0
  95. package/dist/models/messages/messageGenerator.d.ts +4 -0
  96. package/dist/models/messages/messageGenerator.d.ts.map +1 -0
  97. package/dist/models/messages/messages.d.ts +44 -0
  98. package/dist/models/messages/messages.d.ts.map +1 -0
  99. package/dist/models/pluginEvents.d.ts +10 -0
  100. package/dist/models/pluginEvents.d.ts.map +1 -0
  101. package/dist/models/quotaErrorCallbacks.d.ts +3 -0
  102. package/dist/models/quotaErrorCallbacks.d.ts.map +1 -0
  103. package/dist/navigationPreload.d.ts +24 -0
  104. package/dist/navigationPreload.d.ts.map +1 -0
  105. package/dist/parseRoute.d.ts +16 -0
  106. package/dist/parseRoute.d.ts.map +1 -0
  107. package/dist/plugins/backgroundSync/BackgroundSyncPlugin.d.ts +23 -0
  108. package/dist/plugins/backgroundSync/BackgroundSyncPlugin.d.ts.map +1 -0
  109. package/dist/plugins/backgroundSync/Queue.d.ts +166 -0
  110. package/dist/plugins/backgroundSync/Queue.d.ts.map +1 -0
  111. package/dist/plugins/backgroundSync/QueueDb.d.ts +90 -0
  112. package/dist/plugins/backgroundSync/QueueDb.d.ts.map +1 -0
  113. package/dist/plugins/backgroundSync/QueueStore.d.ts +75 -0
  114. package/dist/plugins/backgroundSync/QueueStore.d.ts.map +1 -0
  115. package/dist/plugins/backgroundSync/StorableRequest.d.ts +51 -0
  116. package/dist/plugins/backgroundSync/StorableRequest.d.ts.map +1 -0
  117. package/dist/plugins/broadcastUpdate/BroadcastCacheUpdate.d.ts +45 -0
  118. package/dist/plugins/broadcastUpdate/BroadcastCacheUpdate.d.ts.map +1 -0
  119. package/dist/plugins/broadcastUpdate/BroadcastUpdatePlugin.d.ts +27 -0
  120. package/dist/plugins/broadcastUpdate/BroadcastUpdatePlugin.d.ts.map +1 -0
  121. package/dist/plugins/broadcastUpdate/constants.d.ts +5 -0
  122. package/dist/plugins/broadcastUpdate/constants.d.ts.map +1 -0
  123. package/dist/plugins/broadcastUpdate/responsesAreSame.d.ts +11 -0
  124. package/dist/plugins/broadcastUpdate/responsesAreSame.d.ts.map +1 -0
  125. package/dist/plugins/broadcastUpdate/types.d.ts +34 -0
  126. package/dist/plugins/broadcastUpdate/types.d.ts.map +1 -0
  127. package/dist/plugins/cacheableResponse/CacheableResponse.d.ts +40 -0
  128. package/dist/plugins/cacheableResponse/CacheableResponse.d.ts.map +1 -0
  129. package/dist/plugins/cacheableResponse/CacheableResponsePlugin.d.ts +27 -0
  130. package/dist/plugins/cacheableResponse/CacheableResponsePlugin.d.ts.map +1 -0
  131. package/dist/plugins/expiration/CacheExpiration.d.ts +66 -0
  132. package/dist/plugins/expiration/CacheExpiration.d.ts.map +1 -0
  133. package/dist/plugins/expiration/ExpirationPlugin.d.ts +116 -0
  134. package/dist/plugins/expiration/ExpirationPlugin.d.ts.map +1 -0
  135. package/dist/plugins/expiration/models/CacheTimestampsModel.d.ts +73 -0
  136. package/dist/plugins/expiration/models/CacheTimestampsModel.d.ts.map +1 -0
  137. package/dist/plugins/googleAnalytics/constants.d.ts +10 -0
  138. package/dist/plugins/googleAnalytics/constants.d.ts.map +1 -0
  139. package/dist/plugins/googleAnalytics/initialize.d.ts +30 -0
  140. package/dist/plugins/googleAnalytics/initialize.d.ts.map +1 -0
  141. package/dist/plugins/precaching/PrecacheFallbackPlugin.d.ts +53 -0
  142. package/dist/plugins/precaching/PrecacheFallbackPlugin.d.ts.map +1 -0
  143. package/dist/plugins/rangeRequests/RangeRequestsPlugin.d.ts +19 -0
  144. package/dist/plugins/rangeRequests/RangeRequestsPlugin.d.ts.map +1 -0
  145. package/dist/plugins/rangeRequests/createPartialResponse.d.ts +18 -0
  146. package/dist/plugins/rangeRequests/createPartialResponse.d.ts.map +1 -0
  147. package/dist/plugins/rangeRequests/utils/calculateEffectiveBoundaries.d.ts +14 -0
  148. package/dist/plugins/rangeRequests/utils/calculateEffectiveBoundaries.d.ts.map +1 -0
  149. package/dist/plugins/rangeRequests/utils/parseRangeHeader.d.ts +12 -0
  150. package/dist/plugins/rangeRequests/utils/parseRangeHeader.d.ts.map +1 -0
  151. package/dist/registerQuotaErrorCallback.d.ts +8 -0
  152. package/dist/registerQuotaErrorCallback.d.ts.map +1 -0
  153. package/dist/setCacheNameDetails.d.ts +9 -0
  154. package/dist/setCacheNameDetails.d.ts.map +1 -0
  155. package/dist/strategies/CacheFirst.d.ts +23 -0
  156. package/dist/strategies/CacheFirst.d.ts.map +1 -0
  157. package/dist/strategies/CacheOnly.d.ts +20 -0
  158. package/dist/strategies/CacheOnly.d.ts.map +1 -0
  159. package/dist/strategies/NetworkFirst.d.ts +61 -0
  160. package/dist/strategies/NetworkFirst.d.ts.map +1 -0
  161. package/dist/strategies/NetworkOnly.d.ts +32 -0
  162. package/dist/strategies/NetworkOnly.d.ts.map +1 -0
  163. package/dist/strategies/StaleWhileRevalidate.d.ts +35 -0
  164. package/dist/strategies/StaleWhileRevalidate.d.ts.map +1 -0
  165. package/dist/strategies/Strategy.d.ts +83 -0
  166. package/dist/strategies/Strategy.d.ts.map +1 -0
  167. package/dist/strategies/StrategyHandler.d.ts +189 -0
  168. package/dist/strategies/StrategyHandler.d.ts.map +1 -0
  169. package/dist/strategies/plugins/cacheOkAndOpaquePlugin.d.ts +3 -0
  170. package/dist/strategies/plugins/cacheOkAndOpaquePlugin.d.ts.map +1 -0
  171. package/dist/strategies/utils/messages.d.ts +5 -0
  172. package/dist/strategies/utils/messages.d.ts.map +1 -0
  173. package/dist/types.d.ts +317 -0
  174. package/dist/types.d.ts.map +1 -0
  175. package/dist/utils/Deferred.d.ts +19 -0
  176. package/dist/utils/Deferred.d.ts.map +1 -0
  177. package/dist/utils/PrecacheCacheKeyPlugin.d.ts +16 -0
  178. package/dist/utils/PrecacheCacheKeyPlugin.d.ts.map +1 -0
  179. package/dist/utils/PrecacheInstallReportPlugin.d.ts +14 -0
  180. package/dist/utils/PrecacheInstallReportPlugin.d.ts.map +1 -0
  181. package/dist/utils/SerwistError.d.ts +24 -0
  182. package/dist/utils/SerwistError.d.ts.map +1 -0
  183. package/dist/utils/assert.d.ts +11 -0
  184. package/dist/utils/assert.d.ts.map +1 -0
  185. package/dist/utils/cacheMatchIgnoreParams.d.ts +15 -0
  186. package/dist/utils/cacheMatchIgnoreParams.d.ts.map +1 -0
  187. package/dist/utils/cacheNames.d.ts +40 -0
  188. package/dist/utils/cacheNames.d.ts.map +1 -0
  189. package/dist/utils/canConstructReadableStream.d.ts +12 -0
  190. package/dist/utils/canConstructReadableStream.d.ts.map +1 -0
  191. package/dist/utils/canConstructResponseFromBodyStream.d.ts +11 -0
  192. package/dist/utils/canConstructResponseFromBodyStream.d.ts.map +1 -0
  193. package/dist/utils/createCacheKey.d.ts +16 -0
  194. package/dist/utils/createCacheKey.d.ts.map +1 -0
  195. package/dist/utils/deleteOutdatedCaches.d.ts +18 -0
  196. package/dist/utils/deleteOutdatedCaches.d.ts.map +1 -0
  197. package/dist/utils/dontWaitFor.d.ts +7 -0
  198. package/dist/utils/dontWaitFor.d.ts.map +1 -0
  199. package/dist/utils/executeQuotaErrorCallbacks.d.ts +8 -0
  200. package/dist/utils/executeQuotaErrorCallbacks.d.ts.map +1 -0
  201. package/dist/utils/generateURLVariations.d.ts +12 -0
  202. package/dist/utils/generateURLVariations.d.ts.map +1 -0
  203. package/dist/utils/getFriendlyURL.d.ts +3 -0
  204. package/dist/utils/getFriendlyURL.d.ts.map +1 -0
  205. package/dist/utils/logger.d.ts +24 -0
  206. package/dist/utils/logger.d.ts.map +1 -0
  207. package/dist/utils/normalizeHandler.d.ts +10 -0
  208. package/dist/utils/normalizeHandler.d.ts.map +1 -0
  209. package/dist/utils/pluginUtils.d.ts +5 -0
  210. package/dist/utils/pluginUtils.d.ts.map +1 -0
  211. package/dist/utils/printCleanupDetails.d.ts +6 -0
  212. package/dist/utils/printCleanupDetails.d.ts.map +1 -0
  213. package/dist/utils/printInstallDetails.d.ts +7 -0
  214. package/dist/utils/printInstallDetails.d.ts.map +1 -0
  215. package/dist/utils/removeIgnoredSearchParams.d.ts +12 -0
  216. package/dist/utils/removeIgnoredSearchParams.d.ts.map +1 -0
  217. package/dist/utils/resultingClientExists.d.ts +12 -0
  218. package/dist/utils/resultingClientExists.d.ts.map +1 -0
  219. package/dist/utils/timeout.d.ts +10 -0
  220. package/dist/utils/timeout.d.ts.map +1 -0
  221. package/dist/utils/waitUntil.d.ts +11 -0
  222. package/dist/utils/waitUntil.d.ts.map +1 -0
  223. package/dist/utils/welcome.d.ts +2 -0
  224. package/dist/utils/welcome.d.ts.map +1 -0
  225. package/package.json +85 -0
  226. package/src/NavigationRoute.ts +119 -0
  227. package/src/PrecacheRoute.ts +46 -0
  228. package/src/PrecacheStrategy.ts +239 -0
  229. package/src/RegExpRoute.ts +74 -0
  230. package/src/Route.ts +67 -0
  231. package/src/Serwist.ts +920 -0
  232. package/src/cacheNames.ts +39 -0
  233. package/src/cleanupOutdatedCaches.ts +32 -0
  234. package/src/clientsClaim.ts +18 -0
  235. package/src/constants.ts +24 -0
  236. package/src/copyResponse.ts +60 -0
  237. package/src/disableDevLogs.ts +10 -0
  238. package/src/index.internal.ts +33 -0
  239. package/src/index.legacy.ts +66 -0
  240. package/src/index.plugins.ts +95 -0
  241. package/src/index.strategies.ts +26 -0
  242. package/src/index.ts +39 -0
  243. package/src/legacy/PrecacheController.ts +337 -0
  244. package/src/legacy/PrecacheFallbackPlugin.ts +93 -0
  245. package/src/legacy/PrecacheRoute.ts +48 -0
  246. package/src/legacy/Router.ts +484 -0
  247. package/src/legacy/addPlugins.ts +21 -0
  248. package/src/legacy/addRoute.ts +29 -0
  249. package/src/legacy/createHandlerBoundToURL.ts +30 -0
  250. package/src/legacy/fallbacks.ts +94 -0
  251. package/src/legacy/getCacheKeyForURL.ts +32 -0
  252. package/src/legacy/handlePrecaching.ts +86 -0
  253. package/src/legacy/installSerwist.ts +19 -0
  254. package/src/legacy/matchPrecache.ts +26 -0
  255. package/src/legacy/precache.ts +31 -0
  256. package/src/legacy/precacheAndRoute.ts +28 -0
  257. package/src/legacy/registerRoute.ts +27 -0
  258. package/src/legacy/registerRuntimeCaching.ts +17 -0
  259. package/src/legacy/setCatchHandler.ts +21 -0
  260. package/src/legacy/setDefaultHandler.ts +24 -0
  261. package/src/legacy/singletonPrecacheController.ts +53 -0
  262. package/src/legacy/singletonRouter.ts +70 -0
  263. package/src/legacy/unregisterRoute.ts +12 -0
  264. package/src/legacy/utils/PrecacheCacheKeyPlugin.ts +33 -0
  265. package/src/legacy/utils/getCacheKeyForURL.ts +36 -0
  266. package/src/models/messages/messageGenerator.ts +29 -0
  267. package/src/models/messages/messages.ts +233 -0
  268. package/src/models/pluginEvents.ts +17 -0
  269. package/src/models/quotaErrorCallbacks.ts +13 -0
  270. package/src/navigationPreload.ts +68 -0
  271. package/src/parseRoute.ts +78 -0
  272. package/src/plugins/backgroundSync/BackgroundSyncPlugin.ts +38 -0
  273. package/src/plugins/backgroundSync/Queue.ts +440 -0
  274. package/src/plugins/backgroundSync/QueueDb.ts +176 -0
  275. package/src/plugins/backgroundSync/QueueStore.ts +160 -0
  276. package/src/plugins/backgroundSync/StorableRequest.ts +142 -0
  277. package/src/plugins/broadcastUpdate/BroadcastCacheUpdate.ts +161 -0
  278. package/src/plugins/broadcastUpdate/BroadcastUpdatePlugin.ts +42 -0
  279. package/src/plugins/broadcastUpdate/constants.ts +12 -0
  280. package/src/plugins/broadcastUpdate/responsesAreSame.ts +49 -0
  281. package/src/plugins/broadcastUpdate/types.ts +37 -0
  282. package/src/plugins/cacheableResponse/CacheableResponse.ts +144 -0
  283. package/src/plugins/cacheableResponse/CacheableResponsePlugin.ts +45 -0
  284. package/src/plugins/expiration/CacheExpiration.ts +193 -0
  285. package/src/plugins/expiration/ExpirationPlugin.ts +300 -0
  286. package/src/plugins/expiration/models/CacheTimestampsModel.ts +184 -0
  287. package/src/plugins/googleAnalytics/constants.ts +22 -0
  288. package/src/plugins/googleAnalytics/initialize.ts +209 -0
  289. package/src/plugins/precaching/PrecacheFallbackPlugin.ts +83 -0
  290. package/src/plugins/rangeRequests/RangeRequestsPlugin.ts +38 -0
  291. package/src/plugins/rangeRequests/createPartialResponse.ts +93 -0
  292. package/src/plugins/rangeRequests/utils/calculateEffectiveBoundaries.ts +59 -0
  293. package/src/plugins/rangeRequests/utils/parseRangeHeader.ts +55 -0
  294. package/src/registerQuotaErrorCallback.ts +34 -0
  295. package/src/setCacheNameDetails.ts +53 -0
  296. package/src/strategies/CacheFirst.ts +88 -0
  297. package/src/strategies/CacheOnly.ts +59 -0
  298. package/src/strategies/NetworkFirst.ts +229 -0
  299. package/src/strategies/NetworkOnly.ts +98 -0
  300. package/src/strategies/StaleWhileRevalidate.ts +110 -0
  301. package/src/strategies/Strategy.ts +204 -0
  302. package/src/strategies/StrategyHandler.ts +554 -0
  303. package/src/strategies/plugins/cacheOkAndOpaquePlugin.ts +26 -0
  304. package/src/strategies/utils/messages.ts +21 -0
  305. package/src/types.ts +358 -0
  306. package/src/utils/Deferred.ts +33 -0
  307. package/src/utils/PrecacheCacheKeyPlugin.ts +33 -0
  308. package/src/utils/PrecacheInstallReportPlugin.ts +47 -0
  309. package/src/utils/SerwistError.ts +41 -0
  310. package/src/utils/assert.ts +89 -0
  311. package/src/utils/cacheMatchIgnoreParams.ts +54 -0
  312. package/src/utils/cacheNames.ts +87 -0
  313. package/src/utils/canConstructReadableStream.ts +34 -0
  314. package/src/utils/canConstructResponseFromBodyStream.ts +37 -0
  315. package/src/utils/createCacheKey.ts +68 -0
  316. package/src/utils/deleteOutdatedCaches.ts +40 -0
  317. package/src/utils/dontWaitFor.ts +16 -0
  318. package/src/utils/executeQuotaErrorCallbacks.ts +33 -0
  319. package/src/utils/generateURLVariations.ts +55 -0
  320. package/src/utils/getFriendlyURL.ts +16 -0
  321. package/src/utils/logger.ts +95 -0
  322. package/src/utils/normalizeHandler.ts +40 -0
  323. package/src/utils/pluginUtils.ts +15 -0
  324. package/src/utils/printCleanupDetails.ts +38 -0
  325. package/src/utils/printInstallDetails.ts +53 -0
  326. package/src/utils/removeIgnoredSearchParams.ts +29 -0
  327. package/src/utils/resultingClientExists.ts +58 -0
  328. package/src/utils/timeout.ts +19 -0
  329. package/src/utils/waitUntil.ts +21 -0
  330. package/src/utils/welcome.ts +19 -0
@@ -0,0 +1,32 @@
1
+ import { NavigationRoute } from "./NavigationRoute.js";
2
+ import { PrecacheStrategy } from "./PrecacheStrategy.js";
3
+ import { RegExpRoute } from "./RegExpRoute.js";
4
+ import { Route } from "./Route.js";
5
+ import { cleanupOutdatedCaches } from "./cleanupOutdatedCaches.js";
6
+ import { PrecacheController } from "./legacy/PrecacheController.js";
7
+ import { PrecacheFallbackPlugin } from "./legacy/PrecacheFallbackPlugin.js";
8
+ import type { PrecacheFallbackEntry, PrecacheFallbackPluginOptions } from "./legacy/PrecacheFallbackPlugin.js";
9
+ import { PrecacheRoute } from "./legacy/PrecacheRoute.js";
10
+ import { Router } from "./legacy/Router.js";
11
+ import { addPlugins } from "./legacy/addPlugins.js";
12
+ import { addRoute } from "./legacy/addRoute.js";
13
+ import { createHandlerBoundToURL } from "./legacy/createHandlerBoundToURL.js";
14
+ import type { FallbackEntry, FallbacksOptions } from "./legacy/fallbacks.js";
15
+ import { fallbacks } from "./legacy/fallbacks.js";
16
+ import { getCacheKeyForURL } from "./legacy/getCacheKeyForURL.js";
17
+ import { type HandlePrecachingOptions, handlePrecaching } from "./legacy/handlePrecaching.js";
18
+ import { type InstallSerwistOptions, installSerwist } from "./legacy/installSerwist.js";
19
+ import { matchPrecache } from "./legacy/matchPrecache.js";
20
+ import { precache } from "./legacy/precache.js";
21
+ import { precacheAndRoute } from "./legacy/precacheAndRoute.js";
22
+ import { registerRoute } from "./legacy/registerRoute.js";
23
+ import { registerRuntimeCaching } from "./legacy/registerRuntimeCaching.js";
24
+ import { setCatchHandler } from "./legacy/setCatchHandler.js";
25
+ import { setDefaultHandler } from "./legacy/setDefaultHandler.js";
26
+ import { getSingletonPrecacheController, setSingletonPrecacheController } from "./legacy/singletonPrecacheController.js";
27
+ import { getSingletonRouter, setSingletonRouter } from "./legacy/singletonRouter.js";
28
+ import { unregisterRoute } from "./legacy/unregisterRoute.js";
29
+ import { parseRoute } from "./parseRoute.js";
30
+ export { NavigationRoute, PrecacheStrategy, RegExpRoute, Route, cleanupOutdatedCaches, parseRoute, addPlugins, addRoute, createHandlerBoundToURL, getCacheKeyForURL, fallbacks, matchPrecache, precache, precacheAndRoute, PrecacheController, PrecacheFallbackPlugin, PrecacheRoute, getSingletonPrecacheController, setSingletonPrecacheController, handlePrecaching, installSerwist, registerRuntimeCaching, registerRoute, Router, setCatchHandler, setDefaultHandler, getSingletonRouter, setSingletonRouter, unregisterRoute, };
31
+ export type { HandlePrecachingOptions, InstallSerwistOptions, FallbackEntry, FallbacksOptions, PrecacheFallbackEntry, PrecacheFallbackPluginOptions };
32
+ //# sourceMappingURL=index.legacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.legacy.d.ts","sourceRoot":"","sources":["../src/index.legacy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAC/G,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,KAAK,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,KAAK,qBAAqB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AACzH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAIL,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,KAAK,EACL,qBAAqB,EACrB,UAAU,EAEV,UAAU,EACV,QAAQ,EACR,uBAAuB,EACvB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,8BAA8B,EAC9B,8BAA8B,EAC9B,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,MAAM,EACN,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,GAChB,CAAC;AACF,YAAY,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,aAAa,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,CAAC"}
@@ -0,0 +1,640 @@
1
+ import { g as PrecacheStrategy, h as createCacheKey, j as parallel, k as printInstallDetails, l as printCleanupDetails, m as PrecacheInstallReportPlugin, n as generateURLVariations, p as parseRoute, c as cleanupOutdatedCaches, N as NavigationRoute, S as Serwist } from './chunks/Serwist.js';
2
+ export { R as RegExpRoute } from './chunks/Serwist.js';
3
+ import { R as Route, n as normalizeHandler, d as defaultMethod } from './chunks/PrecacheFallbackPlugin.js';
4
+ import { c as cacheNames, f as finalAssertExports, S as SerwistError, l as logger, g as getFriendlyURL } from './chunks/timeout.js';
5
+ import { w as waitUntil } from './chunks/waitUntil.js';
6
+ import { S as Strategy } from './chunks/NetworkOnly.js';
7
+ import 'idb';
8
+
9
+ class PrecacheCacheKeyPlugin {
10
+ _precacheController;
11
+ constructor({ precacheController }){
12
+ this._precacheController = precacheController;
13
+ }
14
+ cacheKeyWillBeUsed = async ({ request, params })=>{
15
+ const cacheKey = params?.cacheKey || this._precacheController.getCacheKeyForURL(request.url);
16
+ return cacheKey ? new Request(cacheKey, {
17
+ headers: request.headers
18
+ }) : request;
19
+ };
20
+ }
21
+
22
+ class PrecacheController {
23
+ _installAndActiveListenersAdded;
24
+ _concurrentPrecaching;
25
+ _strategy;
26
+ _urlsToCacheKeys = new Map();
27
+ _urlsToCacheModes = new Map();
28
+ _cacheKeysToIntegrities = new Map();
29
+ constructor({ cacheName, plugins = [], fallbackToNetwork = true, concurrentPrecaching = 1 } = {}){
30
+ this._concurrentPrecaching = concurrentPrecaching;
31
+ this._strategy = new PrecacheStrategy({
32
+ cacheName: cacheNames.getPrecacheName(cacheName),
33
+ plugins: [
34
+ ...plugins,
35
+ new PrecacheCacheKeyPlugin({
36
+ precacheController: this
37
+ })
38
+ ],
39
+ fallbackToNetwork
40
+ });
41
+ this.install = this.install.bind(this);
42
+ this.activate = this.activate.bind(this);
43
+ }
44
+ get strategy() {
45
+ return this._strategy;
46
+ }
47
+ precache(entries) {
48
+ this.addToCacheList(entries);
49
+ if (!this._installAndActiveListenersAdded) {
50
+ self.addEventListener("install", this.install);
51
+ self.addEventListener("activate", this.activate);
52
+ this._installAndActiveListenersAdded = true;
53
+ }
54
+ }
55
+ addToCacheList(entries) {
56
+ if (process.env.NODE_ENV !== "production") {
57
+ finalAssertExports.isArray(entries, {
58
+ moduleName: "serwist/legacy",
59
+ className: "PrecacheController",
60
+ funcName: "addToCacheList",
61
+ paramName: "entries"
62
+ });
63
+ }
64
+ const urlsToWarnAbout = [];
65
+ for (const entry of entries){
66
+ if (typeof entry === "string") {
67
+ urlsToWarnAbout.push(entry);
68
+ } else if (entry && !entry.integrity && entry.revision === undefined) {
69
+ urlsToWarnAbout.push(entry.url);
70
+ }
71
+ const { cacheKey, url } = createCacheKey(entry);
72
+ const cacheMode = typeof entry !== "string" && entry.revision ? "reload" : "default";
73
+ if (this._urlsToCacheKeys.has(url) && this._urlsToCacheKeys.get(url) !== cacheKey) {
74
+ throw new SerwistError("add-to-cache-list-conflicting-entries", {
75
+ firstEntry: this._urlsToCacheKeys.get(url),
76
+ secondEntry: cacheKey
77
+ });
78
+ }
79
+ if (typeof entry !== "string" && entry.integrity) {
80
+ if (this._cacheKeysToIntegrities.has(cacheKey) && this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) {
81
+ throw new SerwistError("add-to-cache-list-conflicting-integrities", {
82
+ url
83
+ });
84
+ }
85
+ this._cacheKeysToIntegrities.set(cacheKey, entry.integrity);
86
+ }
87
+ this._urlsToCacheKeys.set(url, cacheKey);
88
+ this._urlsToCacheModes.set(url, cacheMode);
89
+ if (urlsToWarnAbout.length > 0) {
90
+ const warningMessage = `Serwist is precaching URLs without revision info: ${urlsToWarnAbout.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;
91
+ if (process.env.NODE_ENV === "production") {
92
+ console.warn(warningMessage);
93
+ } else {
94
+ logger.warn(warningMessage);
95
+ }
96
+ }
97
+ }
98
+ }
99
+ install(event) {
100
+ return waitUntil(event, async ()=>{
101
+ const installReportPlugin = new PrecacheInstallReportPlugin();
102
+ this.strategy.plugins.push(installReportPlugin);
103
+ await parallel(this._concurrentPrecaching, Array.from(this._urlsToCacheKeys.entries()), async ([url, cacheKey])=>{
104
+ const integrity = this._cacheKeysToIntegrities.get(cacheKey);
105
+ const cacheMode = this._urlsToCacheModes.get(url);
106
+ const request = new Request(url, {
107
+ integrity,
108
+ cache: cacheMode,
109
+ credentials: "same-origin"
110
+ });
111
+ await Promise.all(this.strategy.handleAll({
112
+ event,
113
+ request,
114
+ url: new URL(request.url),
115
+ params: {
116
+ cacheKey
117
+ }
118
+ }));
119
+ });
120
+ const { updatedURLs, notUpdatedURLs } = installReportPlugin;
121
+ if (process.env.NODE_ENV !== "production") {
122
+ printInstallDetails(updatedURLs, notUpdatedURLs);
123
+ }
124
+ return {
125
+ updatedURLs,
126
+ notUpdatedURLs
127
+ };
128
+ });
129
+ }
130
+ activate(event) {
131
+ return waitUntil(event, async ()=>{
132
+ const cache = await self.caches.open(this.strategy.cacheName);
133
+ const currentlyCachedRequests = await cache.keys();
134
+ const expectedCacheKeys = new Set(this._urlsToCacheKeys.values());
135
+ const deletedCacheRequests = [];
136
+ for (const request of currentlyCachedRequests){
137
+ if (!expectedCacheKeys.has(request.url)) {
138
+ await cache.delete(request);
139
+ deletedCacheRequests.push(request.url);
140
+ }
141
+ }
142
+ if (process.env.NODE_ENV !== "production") {
143
+ printCleanupDetails(deletedCacheRequests);
144
+ }
145
+ return {
146
+ deletedCacheRequests
147
+ };
148
+ });
149
+ }
150
+ getURLsToCacheKeys() {
151
+ return this._urlsToCacheKeys;
152
+ }
153
+ getCachedURLs() {
154
+ return [
155
+ ...this._urlsToCacheKeys.keys()
156
+ ];
157
+ }
158
+ getCacheKeyForURL(url) {
159
+ const urlObject = new URL(url, location.href);
160
+ return this._urlsToCacheKeys.get(urlObject.href);
161
+ }
162
+ getIntegrityForCacheKey(cacheKey) {
163
+ return this._cacheKeysToIntegrities.get(cacheKey);
164
+ }
165
+ async matchPrecache(request) {
166
+ const url = request instanceof Request ? request.url : request;
167
+ const cacheKey = this.getCacheKeyForURL(url);
168
+ if (cacheKey) {
169
+ const cache = await self.caches.open(this.strategy.cacheName);
170
+ return cache.match(cacheKey);
171
+ }
172
+ return undefined;
173
+ }
174
+ createHandlerBoundToURL(url) {
175
+ const cacheKey = this.getCacheKeyForURL(url);
176
+ if (!cacheKey) {
177
+ throw new SerwistError("non-precached-url", {
178
+ url
179
+ });
180
+ }
181
+ return (options)=>{
182
+ options.request = new Request(url);
183
+ options.params = {
184
+ cacheKey,
185
+ ...options.params
186
+ };
187
+ return this.strategy.handle(options);
188
+ };
189
+ }
190
+ }
191
+
192
+ let defaultPrecacheController = undefined;
193
+ const getSingletonPrecacheController = ()=>{
194
+ if (!defaultPrecacheController) {
195
+ defaultPrecacheController = new PrecacheController();
196
+ }
197
+ return defaultPrecacheController;
198
+ };
199
+ const setSingletonPrecacheController = (precacheController)=>{
200
+ defaultPrecacheController = precacheController;
201
+ return defaultPrecacheController;
202
+ };
203
+
204
+ class PrecacheFallbackPlugin {
205
+ _fallbackUrls;
206
+ _precacheController;
207
+ constructor({ fallbackUrls, precacheController }){
208
+ this._fallbackUrls = fallbackUrls;
209
+ this._precacheController = precacheController || getSingletonPrecacheController();
210
+ }
211
+ async handlerDidError(param) {
212
+ for (const fallback of this._fallbackUrls){
213
+ if (typeof fallback === "string") {
214
+ const fallbackResponse = await this._precacheController.matchPrecache(fallback);
215
+ if (fallbackResponse !== undefined) {
216
+ return fallbackResponse;
217
+ }
218
+ } else if (fallback.matcher(param)) {
219
+ const fallbackResponse = await this._precacheController.matchPrecache(fallback.url);
220
+ if (fallbackResponse !== undefined) {
221
+ return fallbackResponse;
222
+ }
223
+ }
224
+ }
225
+ return undefined;
226
+ }
227
+ }
228
+
229
+ class PrecacheRoute extends Route {
230
+ constructor(precacheController, options){
231
+ const match = ({ request })=>{
232
+ const urlsToCacheKeys = precacheController.getURLsToCacheKeys();
233
+ for (const possibleURL of generateURLVariations(request.url, options)){
234
+ const cacheKey = urlsToCacheKeys.get(possibleURL);
235
+ if (cacheKey) {
236
+ const integrity = precacheController.getIntegrityForCacheKey(cacheKey);
237
+ return {
238
+ cacheKey,
239
+ integrity
240
+ };
241
+ }
242
+ }
243
+ if (process.env.NODE_ENV !== "production") {
244
+ logger.debug(`Precaching did not find a match for ${getFriendlyURL(request.url)}`);
245
+ }
246
+ return;
247
+ };
248
+ super(match, precacheController.strategy);
249
+ }
250
+ }
251
+
252
+ class Router {
253
+ _routes;
254
+ _defaultHandlerMap;
255
+ _fetchListenerHandler = null;
256
+ _cacheListenerHandler = null;
257
+ _catchHandler;
258
+ constructor(){
259
+ this._routes = new Map();
260
+ this._defaultHandlerMap = new Map();
261
+ }
262
+ get routes() {
263
+ return this._routes;
264
+ }
265
+ addFetchListener() {
266
+ if (!this._fetchListenerHandler) {
267
+ this._fetchListenerHandler = (event)=>{
268
+ const { request } = event;
269
+ const responsePromise = this.handleRequest({
270
+ request,
271
+ event
272
+ });
273
+ if (responsePromise) {
274
+ event.respondWith(responsePromise);
275
+ }
276
+ };
277
+ self.addEventListener("fetch", this._fetchListenerHandler);
278
+ }
279
+ }
280
+ removeFetchListener() {
281
+ if (this._fetchListenerHandler) {
282
+ self.removeEventListener("fetch", this._fetchListenerHandler);
283
+ this._fetchListenerHandler = null;
284
+ }
285
+ }
286
+ addCacheListener() {
287
+ if (!this._cacheListenerHandler) {
288
+ this._cacheListenerHandler = (event)=>{
289
+ if (event.data && event.data.type === "CACHE_URLS") {
290
+ const { payload } = event.data;
291
+ if (process.env.NODE_ENV !== "production") {
292
+ logger.debug("Caching URLs from the window", payload.urlsToCache);
293
+ }
294
+ const requestPromises = Promise.all(payload.urlsToCache.map((entry)=>{
295
+ if (typeof entry === "string") {
296
+ entry = [
297
+ entry
298
+ ];
299
+ }
300
+ const request = new Request(...entry);
301
+ return this.handleRequest({
302
+ request,
303
+ event
304
+ });
305
+ }));
306
+ event.waitUntil(requestPromises);
307
+ if (event.ports?.[0]) {
308
+ void requestPromises.then(()=>event.ports[0].postMessage(true));
309
+ }
310
+ }
311
+ };
312
+ self.addEventListener("message", this._cacheListenerHandler);
313
+ }
314
+ }
315
+ removeCacheListener() {
316
+ if (this._cacheListenerHandler) {
317
+ self.removeEventListener("message", this._cacheListenerHandler);
318
+ }
319
+ }
320
+ handleRequest({ request, event }) {
321
+ if (process.env.NODE_ENV !== "production") {
322
+ finalAssertExports.isInstance(request, Request, {
323
+ moduleName: "serwist/legacy",
324
+ className: "Router",
325
+ funcName: "handleRequest",
326
+ paramName: "options.request"
327
+ });
328
+ }
329
+ const url = new URL(request.url, location.href);
330
+ if (!url.protocol.startsWith("http")) {
331
+ if (process.env.NODE_ENV !== "production") {
332
+ logger.debug("Router only supports URLs that start with 'http'.");
333
+ }
334
+ return;
335
+ }
336
+ const sameOrigin = url.origin === location.origin;
337
+ const { params, route } = this.findMatchingRoute({
338
+ event,
339
+ request,
340
+ sameOrigin,
341
+ url
342
+ });
343
+ let handler = route?.handler;
344
+ const debugMessages = [];
345
+ if (process.env.NODE_ENV !== "production") {
346
+ if (handler) {
347
+ debugMessages.push([
348
+ "Found a route to handle this request:",
349
+ route
350
+ ]);
351
+ if (params) {
352
+ debugMessages.push([
353
+ `Passing the following params to the route's handler:`,
354
+ params
355
+ ]);
356
+ }
357
+ }
358
+ }
359
+ const method = request.method;
360
+ if (!handler && this._defaultHandlerMap.has(method)) {
361
+ if (process.env.NODE_ENV !== "production") {
362
+ debugMessages.push(`Failed to find a matching route. Falling back to the default handler for ${method}.`);
363
+ }
364
+ handler = this._defaultHandlerMap.get(method);
365
+ }
366
+ if (!handler) {
367
+ if (process.env.NODE_ENV !== "production") {
368
+ logger.debug(`No route found for: ${getFriendlyURL(url)}`);
369
+ }
370
+ return;
371
+ }
372
+ if (process.env.NODE_ENV !== "production") {
373
+ logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);
374
+ for (const msg of debugMessages){
375
+ if (Array.isArray(msg)) {
376
+ logger.log(...msg);
377
+ } else {
378
+ logger.log(msg);
379
+ }
380
+ }
381
+ logger.groupEnd();
382
+ }
383
+ let responsePromise;
384
+ try {
385
+ responsePromise = handler.handle({
386
+ url,
387
+ request,
388
+ event,
389
+ params
390
+ });
391
+ } catch (err) {
392
+ responsePromise = Promise.reject(err);
393
+ }
394
+ const catchHandler = route?.catchHandler;
395
+ if (responsePromise instanceof Promise && (this._catchHandler || catchHandler)) {
396
+ responsePromise = responsePromise.catch(async (err)=>{
397
+ if (catchHandler) {
398
+ if (process.env.NODE_ENV !== "production") {
399
+ logger.groupCollapsed(`Error thrown when responding to: ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`);
400
+ logger.error("Error thrown by:", route);
401
+ logger.error(err);
402
+ logger.groupEnd();
403
+ }
404
+ try {
405
+ return await catchHandler.handle({
406
+ url,
407
+ request,
408
+ event,
409
+ params
410
+ });
411
+ } catch (catchErr) {
412
+ if (catchErr instanceof Error) {
413
+ err = catchErr;
414
+ }
415
+ }
416
+ }
417
+ if (this._catchHandler) {
418
+ if (process.env.NODE_ENV !== "production") {
419
+ logger.groupCollapsed(`Error thrown when responding to: ${getFriendlyURL(url)}. Falling back to global Catch Handler.`);
420
+ logger.error("Error thrown by:", route);
421
+ logger.error(err);
422
+ logger.groupEnd();
423
+ }
424
+ return this._catchHandler.handle({
425
+ url,
426
+ request,
427
+ event
428
+ });
429
+ }
430
+ throw err;
431
+ });
432
+ }
433
+ return responsePromise;
434
+ }
435
+ findMatchingRoute({ url, sameOrigin, request, event }) {
436
+ const routes = this._routes.get(request.method) || [];
437
+ for (const route of routes){
438
+ let params;
439
+ const matchResult = route.match({
440
+ url,
441
+ sameOrigin,
442
+ request,
443
+ event
444
+ });
445
+ if (matchResult) {
446
+ if (process.env.NODE_ENV !== "production") {
447
+ if (matchResult instanceof Promise) {
448
+ logger.warn(`While routing ${getFriendlyURL(url)}, an async matchCallback function was used. Please convert the following route to use a synchronous matchCallback function:`, route);
449
+ }
450
+ }
451
+ params = matchResult;
452
+ if (Array.isArray(params) && params.length === 0) {
453
+ params = undefined;
454
+ } else if (matchResult.constructor === Object && Object.keys(matchResult).length === 0) {
455
+ params = undefined;
456
+ } else if (typeof matchResult === "boolean") {
457
+ params = undefined;
458
+ }
459
+ return {
460
+ route,
461
+ params
462
+ };
463
+ }
464
+ }
465
+ return {};
466
+ }
467
+ setDefaultHandler(handler, method = defaultMethod) {
468
+ this._defaultHandlerMap.set(method, normalizeHandler(handler));
469
+ }
470
+ setCatchHandler(handler) {
471
+ this._catchHandler = normalizeHandler(handler);
472
+ }
473
+ registerCapture(capture, handler, method) {
474
+ const route = parseRoute(capture, handler, method);
475
+ this.registerRoute(route);
476
+ return route;
477
+ }
478
+ registerRoute(route) {
479
+ if (process.env.NODE_ENV !== "production") {
480
+ finalAssertExports.isType(route, "object", {
481
+ moduleName: "serwist/legacy",
482
+ className: "Router",
483
+ funcName: "registerRoute",
484
+ paramName: "route"
485
+ });
486
+ finalAssertExports.hasMethod(route, "match", {
487
+ moduleName: "serwist/legacy",
488
+ className: "Router",
489
+ funcName: "registerRoute",
490
+ paramName: "route"
491
+ });
492
+ finalAssertExports.isType(route.handler, "object", {
493
+ moduleName: "serwist/legacy",
494
+ className: "Router",
495
+ funcName: "registerRoute",
496
+ paramName: "route"
497
+ });
498
+ finalAssertExports.hasMethod(route.handler, "handle", {
499
+ moduleName: "serwist/legacy",
500
+ className: "Router",
501
+ funcName: "registerRoute",
502
+ paramName: "route.handler"
503
+ });
504
+ finalAssertExports.isType(route.method, "string", {
505
+ moduleName: "serwist/legacy",
506
+ className: "Router",
507
+ funcName: "registerRoute",
508
+ paramName: "route.method"
509
+ });
510
+ }
511
+ if (!this._routes.has(route.method)) {
512
+ this._routes.set(route.method, []);
513
+ }
514
+ this._routes.get(route.method).push(route);
515
+ }
516
+ unregisterRoute(route) {
517
+ if (!this._routes.has(route.method)) {
518
+ throw new SerwistError("unregister-route-but-not-found-with-method", {
519
+ method: route.method
520
+ });
521
+ }
522
+ const routeIndex = this._routes.get(route.method).indexOf(route);
523
+ if (routeIndex > -1) {
524
+ this._routes.get(route.method).splice(routeIndex, 1);
525
+ } else {
526
+ throw new SerwistError("unregister-route-route-not-registered");
527
+ }
528
+ }
529
+ }
530
+
531
+ const addPlugins = (plugins)=>{
532
+ const precacheController = getSingletonPrecacheController();
533
+ precacheController.strategy.plugins.push(...plugins);
534
+ };
535
+
536
+ let defaultRouter = undefined;
537
+ const getSingletonRouter = ()=>{
538
+ if (!defaultRouter) {
539
+ defaultRouter = new Router();
540
+ defaultRouter.addFetchListener();
541
+ defaultRouter.addCacheListener();
542
+ }
543
+ return defaultRouter;
544
+ };
545
+ const setSingletonRouter = (router)=>{
546
+ if (defaultRouter) {
547
+ defaultRouter.removeFetchListener();
548
+ defaultRouter.removeCacheListener();
549
+ }
550
+ defaultRouter = router;
551
+ defaultRouter.addFetchListener();
552
+ defaultRouter.addCacheListener();
553
+ return defaultRouter;
554
+ };
555
+
556
+ const registerRoute = (capture, handler, method)=>{
557
+ return getSingletonRouter().registerCapture(capture, handler, method);
558
+ };
559
+
560
+ const addRoute = (options)=>{
561
+ const precacheRoute = new PrecacheRoute(getSingletonPrecacheController(), options);
562
+ registerRoute(precacheRoute);
563
+ };
564
+
565
+ const createHandlerBoundToURL = (url)=>{
566
+ const precacheController = getSingletonPrecacheController();
567
+ return precacheController.createHandlerBoundToURL(url);
568
+ };
569
+
570
+ const fallbacks = ({ precacheController = getSingletonPrecacheController(), router = getSingletonRouter(), runtimeCaching, entries, precacheOptions })=>{
571
+ precacheController.precache(entries);
572
+ router.registerRoute(new PrecacheRoute(precacheController, precacheOptions));
573
+ const fallbackPlugin = new PrecacheFallbackPlugin({
574
+ fallbackUrls: entries
575
+ });
576
+ runtimeCaching.forEach((cacheEntry)=>{
577
+ if (cacheEntry.handler instanceof Strategy && !cacheEntry.handler.plugins.some((plugin)=>"handlerDidError" in plugin)) {
578
+ cacheEntry.handler.plugins.push(fallbackPlugin);
579
+ }
580
+ return cacheEntry;
581
+ });
582
+ return runtimeCaching;
583
+ };
584
+
585
+ const getCacheKeyForURL = (url)=>{
586
+ const precacheController = getSingletonPrecacheController();
587
+ return precacheController.getCacheKeyForURL(url);
588
+ };
589
+
590
+ const handlePrecaching = ({ precacheController = getSingletonPrecacheController(), router = getSingletonRouter(), precacheEntries, precacheOptions, cleanupOutdatedCaches: cleanupOutdatedCaches$1 = false, navigateFallback, navigateFallbackAllowlist, navigateFallbackDenylist })=>{
591
+ if (!!precacheEntries && precacheEntries.length > 0) {
592
+ precacheController.precache(precacheEntries);
593
+ router.registerRoute(new PrecacheRoute(precacheController, precacheOptions));
594
+ if (cleanupOutdatedCaches$1) cleanupOutdatedCaches();
595
+ if (navigateFallback) {
596
+ router.registerRoute(new NavigationRoute(createHandlerBoundToURL(navigateFallback), {
597
+ allowlist: navigateFallbackAllowlist,
598
+ denylist: navigateFallbackDenylist
599
+ }));
600
+ }
601
+ }
602
+ };
603
+
604
+ const installSerwist = (options)=>{
605
+ const serwist = new Serwist(options);
606
+ serwist.addEventListeners();
607
+ };
608
+
609
+ const matchPrecache = (request)=>{
610
+ return getSingletonPrecacheController().matchPrecache(request);
611
+ };
612
+
613
+ const precache = (entries)=>{
614
+ getSingletonPrecacheController().precache(entries);
615
+ };
616
+
617
+ const precacheAndRoute = (entries, options)=>{
618
+ precache(entries);
619
+ addRoute(options);
620
+ };
621
+
622
+ const registerRuntimeCaching = (...runtimeCachingList)=>{
623
+ for (const entry of runtimeCachingList){
624
+ registerRoute(entry.matcher, entry.handler, entry.method);
625
+ }
626
+ };
627
+
628
+ const setCatchHandler = (handler)=>{
629
+ getSingletonRouter().setCatchHandler(handler);
630
+ };
631
+
632
+ const setDefaultHandler = (handler)=>{
633
+ getSingletonRouter().setDefaultHandler(handler);
634
+ };
635
+
636
+ const unregisterRoute = (route)=>{
637
+ getSingletonRouter().unregisterRoute(route);
638
+ };
639
+
640
+ export { NavigationRoute, PrecacheController, PrecacheFallbackPlugin, PrecacheRoute, PrecacheStrategy, Route, Router, addPlugins, addRoute, cleanupOutdatedCaches, createHandlerBoundToURL, fallbacks, getCacheKeyForURL, getSingletonPrecacheController, getSingletonRouter, handlePrecaching, installSerwist, matchPrecache, parseRoute, precache, precacheAndRoute, registerRoute, registerRuntimeCaching, setCatchHandler, setDefaultHandler, setSingletonPrecacheController, setSingletonRouter, unregisterRoute };