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,87 @@
1
+ /*
2
+ Copyright 2018 Google LLC
3
+
4
+ Use of this source code is governed by an MIT-style
5
+ license that can be found in the LICENSE file or at
6
+ https://opensource.org/licenses/MIT.
7
+ */
8
+
9
+ declare let registration: ServiceWorkerRegistration | undefined;
10
+
11
+ export interface CacheNameDetails {
12
+ googleAnalytics: string;
13
+ precache: string;
14
+ prefix: string;
15
+ runtime: string;
16
+ suffix: string;
17
+ }
18
+
19
+ export interface PartialCacheNameDetails {
20
+ /**
21
+ * The string to add to the beginning of the precache and runtime cache names.
22
+ */
23
+ prefix?: string;
24
+ /**
25
+ * The string to add to the end of the precache and runtime cache names.
26
+ */
27
+ suffix?: string;
28
+ /**
29
+ * The cache name to use for precache caching.
30
+ */
31
+ precache?: string;
32
+ /**
33
+ * The cache name to use for runtime caching.
34
+ */
35
+ runtime?: string;
36
+ /**
37
+ * The cache name to use for `@serwist/google-analytics` caching.
38
+ */
39
+ googleAnalytics?: string;
40
+ [propName: string]: string | undefined;
41
+ }
42
+
43
+ export type CacheNameDetailsProp = "googleAnalytics" | "precache" | "prefix" | "runtime" | "suffix";
44
+
45
+ const _cacheNameDetails: CacheNameDetails = {
46
+ googleAnalytics: "googleAnalytics",
47
+ precache: "precache-v2",
48
+ prefix: "serwist",
49
+ runtime: "runtime",
50
+ suffix: typeof registration !== "undefined" ? registration.scope : "",
51
+ };
52
+
53
+ const _createCacheName = (cacheName: string): string => {
54
+ return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix].filter((value) => value && value.length > 0).join("-");
55
+ };
56
+
57
+ const eachCacheNameDetail = (fn: (key: CacheNameDetailsProp) => void): void => {
58
+ for (const key of Object.keys(_cacheNameDetails)) {
59
+ fn(key as CacheNameDetailsProp);
60
+ }
61
+ };
62
+
63
+ export const cacheNames = {
64
+ updateDetails: (details: PartialCacheNameDetails): void => {
65
+ eachCacheNameDetail((key: CacheNameDetailsProp): void => {
66
+ const detail = details[key];
67
+ if (typeof detail === "string") {
68
+ _cacheNameDetails[key] = detail;
69
+ }
70
+ });
71
+ },
72
+ getGoogleAnalyticsName: (userCacheName?: string): string => {
73
+ return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);
74
+ },
75
+ getPrecacheName: (userCacheName?: string): string => {
76
+ return userCacheName || _createCacheName(_cacheNameDetails.precache);
77
+ },
78
+ getPrefix: (): string => {
79
+ return _cacheNameDetails.prefix;
80
+ },
81
+ getRuntimeName: (userCacheName?: string): string => {
82
+ return userCacheName || _createCacheName(_cacheNameDetails.runtime);
83
+ },
84
+ getSuffix: (): string => {
85
+ return _cacheNameDetails.suffix;
86
+ },
87
+ };
@@ -0,0 +1,34 @@
1
+ /*
2
+ Copyright 2019 Google LLC
3
+
4
+ Use of this source code is governed by an MIT-style
5
+ license that can be found in the LICENSE file or at
6
+ https://opensource.org/licenses/MIT.
7
+ */
8
+
9
+ let supportStatus: boolean | undefined;
10
+
11
+ /**
12
+ * A utility function that determines whether the current browser supports
13
+ * constructing a [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/ReadableStream)
14
+ * object.
15
+ *
16
+ * @returns `true`, if the current browser can successfully construct a `ReadableStream`, `false` otherwise.
17
+ *
18
+ * @private
19
+ */
20
+ function canConstructReadableStream(): boolean {
21
+ if (supportStatus === undefined) {
22
+ // See https://github.com/GoogleChrome/workbox/issues/1473
23
+ try {
24
+ new ReadableStream({ start() {} });
25
+ supportStatus = true;
26
+ } catch (error) {
27
+ supportStatus = false;
28
+ }
29
+ }
30
+
31
+ return supportStatus;
32
+ }
33
+
34
+ export { canConstructReadableStream };
@@ -0,0 +1,37 @@
1
+ /*
2
+ Copyright 2019 Google LLC
3
+
4
+ Use of this source code is governed by an MIT-style
5
+ license that can be found in the LICENSE file or at
6
+ https://opensource.org/licenses/MIT.
7
+ */
8
+
9
+ let supportStatus: boolean | undefined;
10
+
11
+ /**
12
+ * A utility function that determines whether the current browser supports
13
+ * constructing a new `Response` from a `response.body` stream.
14
+ *
15
+ * @returns `true`, if the current browser can successfully construct
16
+ * a `Response` from a `response.body` stream, `false` otherwise.
17
+ * @private
18
+ */
19
+ function canConstructResponseFromBodyStream(): boolean {
20
+ if (supportStatus === undefined) {
21
+ const testResponse = new Response("");
22
+
23
+ if ("body" in testResponse) {
24
+ try {
25
+ new Response(testResponse.body);
26
+ supportStatus = true;
27
+ } catch (error) {
28
+ supportStatus = false;
29
+ }
30
+ }
31
+ supportStatus = false;
32
+ }
33
+
34
+ return supportStatus;
35
+ }
36
+
37
+ export { canConstructResponseFromBodyStream };
@@ -0,0 +1,68 @@
1
+ /*
2
+ Copyright 2018 Google LLC
3
+
4
+ Use of this source code is governed by an MIT-style
5
+ license that can be found in the LICENSE file or at
6
+ https://opensource.org/licenses/MIT.
7
+ */
8
+
9
+ import { SerwistError } from "./SerwistError.js";
10
+
11
+ import type { PrecacheEntry } from "../types.js";
12
+
13
+ interface CacheKey {
14
+ cacheKey: string;
15
+ url: string;
16
+ }
17
+
18
+ // Name of the search parameter used to store revision info.
19
+ const REVISION_SEARCH_PARAM = "__WB_REVISION__";
20
+
21
+ /**
22
+ * Converts a manifest entry into a versioned URL suitable for precaching.
23
+ *
24
+ * @param entry
25
+ * @returns A URL with versioning info.
26
+ *
27
+ * @private
28
+ */
29
+ export const createCacheKey = (entry: PrecacheEntry | string): CacheKey => {
30
+ if (!entry) {
31
+ throw new SerwistError("add-to-cache-list-unexpected-type", { entry });
32
+ }
33
+
34
+ // If a precache manifest entry is a string, it's assumed to be a versioned
35
+ // URL, like '/app.abcd1234.js'. Return as-is.
36
+ if (typeof entry === "string") {
37
+ const urlObject = new URL(entry, location.href);
38
+ return {
39
+ cacheKey: urlObject.href,
40
+ url: urlObject.href,
41
+ };
42
+ }
43
+
44
+ const { revision, url } = entry;
45
+ if (!url) {
46
+ throw new SerwistError("add-to-cache-list-unexpected-type", { entry });
47
+ }
48
+
49
+ // If there's just a URL and no revision, then it's also assumed to be a
50
+ // versioned URL.
51
+ if (!revision) {
52
+ const urlObject = new URL(url, location.href);
53
+ return {
54
+ cacheKey: urlObject.href,
55
+ url: urlObject.href,
56
+ };
57
+ }
58
+
59
+ // Otherwise, construct a properly versioned URL using the custom Serwist
60
+ // search parameter along with the revision info.
61
+ const cacheKeyURL = new URL(url, location.href);
62
+ const originalURL = new URL(url, location.href);
63
+ cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision);
64
+ return {
65
+ cacheKey: cacheKeyURL.href,
66
+ url: originalURL.href,
67
+ };
68
+ };
@@ -0,0 +1,40 @@
1
+ /*
2
+ Copyright 2018 Google LLC
3
+
4
+ Use of this source code is governed by an MIT-style
5
+ license that can be found in the LICENSE file or at
6
+ https://opensource.org/licenses/MIT.
7
+ */
8
+
9
+ // Give TypeScript the correct global.
10
+ declare const self: ServiceWorkerGlobalScope;
11
+
12
+ const SUBSTRING_TO_FIND = "-precache-";
13
+
14
+ /**
15
+ * Cleans up incompatible precaches that were created by older versions of
16
+ * Serwist, by a service worker registered under the current scope.
17
+ *
18
+ * This is meant to be called as part of the `activate` event.
19
+ *
20
+ * This should be safe to use as long as you don't include `substringToFind`
21
+ * (defaulting to `-precache-`) in your non-precache cache names.
22
+ *
23
+ * @param currentPrecacheName The cache name currently in use for
24
+ * precaching. This cache won't be deleted.
25
+ * @param substringToFind Cache names which include this
26
+ * substring will be deleted (excluding `currentPrecacheName`).
27
+ * @returns A list of all the cache names that were deleted.
28
+ * @private
29
+ */
30
+ export const deleteOutdatedCaches = async (currentPrecacheName: string, substringToFind: string = SUBSTRING_TO_FIND): Promise<string[]> => {
31
+ const cacheNames = await self.caches.keys();
32
+
33
+ const cacheNamesToDelete = cacheNames.filter((cacheName) => {
34
+ return cacheName.includes(substringToFind) && cacheName.includes(self.registration.scope) && cacheName !== currentPrecacheName;
35
+ });
36
+
37
+ await Promise.all(cacheNamesToDelete.map((cacheName) => self.caches.delete(cacheName)));
38
+
39
+ return cacheNamesToDelete;
40
+ };
@@ -0,0 +1,16 @@
1
+ /*
2
+ Copyright 2019 Google LLC
3
+ Use of this source code is governed by an MIT-style
4
+ license that can be found in the LICENSE file or at
5
+ https://opensource.org/licenses/MIT.
6
+ */
7
+
8
+ /**
9
+ * A helper function that prevents a promise from being flagged as unused.
10
+ *
11
+ * @private
12
+ */
13
+ export function dontWaitFor(promise: Promise<any>): void {
14
+ // Effective no-op.
15
+ void promise.then(() => {});
16
+ }
@@ -0,0 +1,33 @@
1
+ /*
2
+ Copyright 2018 Google LLC
3
+
4
+ Use of this source code is governed by an MIT-style
5
+ license that can be found in the LICENSE file or at
6
+ https://opensource.org/licenses/MIT.
7
+ */
8
+
9
+ import { logger } from "./logger.js";
10
+ import { quotaErrorCallbacks } from "../models/quotaErrorCallbacks.js";
11
+
12
+ /**
13
+ * Runs all of the callback functions, one at a time sequentially, in the order
14
+ * in which they were registered.
15
+ *
16
+ * @private
17
+ */
18
+ export const executeQuotaErrorCallbacks = async (): Promise<void> => {
19
+ if (process.env.NODE_ENV !== "production") {
20
+ logger.log(`About to run ${quotaErrorCallbacks.size} callbacks to clean up caches.`);
21
+ }
22
+
23
+ for (const callback of quotaErrorCallbacks) {
24
+ await callback();
25
+ if (process.env.NODE_ENV !== "production") {
26
+ logger.log(callback, "is complete.");
27
+ }
28
+ }
29
+
30
+ if (process.env.NODE_ENV !== "production") {
31
+ logger.log("Finished running callbacks.");
32
+ }
33
+ };
@@ -0,0 +1,55 @@
1
+ /*
2
+ Copyright 2019 Google LLC
3
+
4
+ Use of this source code is governed by an MIT-style
5
+ license that can be found in the LICENSE file or at
6
+ https://opensource.org/licenses/MIT.
7
+ */
8
+
9
+ import type { PrecacheRouteOptions } from "../types.js";
10
+ import { removeIgnoredSearchParams } from "./removeIgnoredSearchParams.js";
11
+
12
+ /**
13
+ * Generator function that yields possible variations on the original URL to
14
+ * check, one at a time.
15
+ *
16
+ * @param url
17
+ * @param options
18
+ *
19
+ * @private
20
+ */
21
+ export function* generateURLVariations(
22
+ url: string,
23
+ {
24
+ directoryIndex = "index.html",
25
+ ignoreURLParametersMatching = [/^utm_/, /^fbclid$/],
26
+ cleanURLs = true,
27
+ urlManipulation,
28
+ }: PrecacheRouteOptions = {},
29
+ ): Generator<string, void, unknown> {
30
+ const urlObject = new URL(url, location.href);
31
+ urlObject.hash = "";
32
+ yield urlObject.href;
33
+
34
+ const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching);
35
+ yield urlWithoutIgnoredParams.href;
36
+
37
+ if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith("/")) {
38
+ const directoryURL = new URL(urlWithoutIgnoredParams.href);
39
+ directoryURL.pathname += directoryIndex;
40
+ yield directoryURL.href;
41
+ }
42
+
43
+ if (cleanURLs) {
44
+ const cleanURL = new URL(urlWithoutIgnoredParams.href);
45
+ cleanURL.pathname += ".html";
46
+ yield cleanURL.href;
47
+ }
48
+
49
+ if (urlManipulation) {
50
+ const additionalURLs = urlManipulation({ url: urlObject });
51
+ for (const urlToAttempt of additionalURLs) {
52
+ yield urlToAttempt.href;
53
+ }
54
+ }
55
+ }
@@ -0,0 +1,16 @@
1
+ /*
2
+ Copyright 2018 Google LLC
3
+
4
+ Use of this source code is governed by an MIT-style
5
+ license that can be found in the LICENSE file or at
6
+ https://opensource.org/licenses/MIT.
7
+ */
8
+
9
+ const getFriendlyURL = (url: URL | string): string => {
10
+ const urlObj = new URL(String(url), location.href);
11
+ // See https://github.com/GoogleChrome/workbox/issues/2323
12
+ // We want to include everything, except for the origin if it's same-origin.
13
+ return urlObj.href.replace(new RegExp(`^${location.origin}`), "");
14
+ };
15
+
16
+ export { getFriendlyURL };
@@ -0,0 +1,95 @@
1
+ /*
2
+ Copyright 2019 Google LLC
3
+ Use of this source code is governed by an MIT-style
4
+ license that can be found in the LICENSE file or at
5
+ https://opensource.org/licenses/MIT.
6
+ */
7
+
8
+ // logger is used inside of both service workers and the window global scope.
9
+ declare global {
10
+ interface WorkerGlobalScope {
11
+ __WB_DISABLE_DEV_LOGS: boolean;
12
+ }
13
+
14
+ interface Window {
15
+ __WB_DISABLE_DEV_LOGS: boolean;
16
+ }
17
+ }
18
+
19
+ /**
20
+ * The logger used by Serwist inside of both service workers and the window global scope.
21
+ *
22
+ * Note: This is forcibly `null` in production mode to reduce bundle size. Do check whether
23
+ * you are currently in development mode (by using `process.env.NODE_ENV !== "production"`)
24
+ * before using it.
25
+ */
26
+ export const logger =
27
+ process.env.NODE_ENV === "production"
28
+ ? null!
29
+ : (() => {
30
+ // Don't overwrite this value if it's already set.
31
+ // See https://github.com/GoogleChrome/workbox/pull/2284#issuecomment-560470923
32
+ if (!("__WB_DISABLE_DEV_LOGS" in globalThis)) {
33
+ self.__WB_DISABLE_DEV_LOGS = false;
34
+ }
35
+
36
+ let inGroup = false;
37
+
38
+ const methodToColorMap = {
39
+ debug: "#7f8c8d", // Gray
40
+ log: "#2ecc71", // Green
41
+ warn: "#f39c12", // Yellow
42
+ error: "#c0392b", // Red
43
+ groupCollapsed: "#3498db", // Blue
44
+ groupEnd: null, // No colored prefix on groupEnd
45
+ };
46
+
47
+ type LoggerMethods = keyof typeof methodToColorMap;
48
+
49
+ const print = (method: LoggerMethods, args: any[]) => {
50
+ if (self.__WB_DISABLE_DEV_LOGS) {
51
+ return;
52
+ }
53
+
54
+ if (method === "groupCollapsed") {
55
+ // Safari doesn't print all console.groupCollapsed() arguments:
56
+ // https://bugs.webkit.org/show_bug.cgi?id=182754
57
+ if (typeof navigator !== "undefined" && /^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
58
+ console[method](...args);
59
+ return;
60
+ }
61
+ }
62
+
63
+ const styles = [
64
+ `background: ${methodToColorMap[method]!}`,
65
+ "border-radius: 0.5em",
66
+ "color: white",
67
+ "font-weight: bold",
68
+ "padding: 2px 0.5em",
69
+ ];
70
+
71
+ // When in a group, the serwist prefix is not displayed.
72
+ const logPrefix = inGroup ? [] : ["%cserwist", styles.join(";")];
73
+
74
+ console[method](...logPrefix, ...args);
75
+
76
+ if (method === "groupCollapsed") {
77
+ inGroup = true;
78
+ }
79
+ if (method === "groupEnd") {
80
+ inGroup = false;
81
+ }
82
+ };
83
+
84
+ const loggerMethods = Object.keys(methodToColorMap) as LoggerMethods[];
85
+
86
+ return loggerMethods.reduce(
87
+ (api, method) => {
88
+ api[method] = (...args: any[]) => {
89
+ print(method, args);
90
+ };
91
+ return api;
92
+ },
93
+ {} as { [method in LoggerMethods]: (...args: any[]) => void },
94
+ );
95
+ })();
@@ -0,0 +1,40 @@
1
+ /*
2
+ Copyright 2018 Google LLC
3
+
4
+ Use of this source code is governed by an MIT-style
5
+ license that can be found in the LICENSE file or at
6
+ https://opensource.org/licenses/MIT.
7
+ */
8
+
9
+ import type { RouteHandler, RouteHandlerObject } from "../types.js";
10
+ import { assert } from "./assert.js";
11
+
12
+ /**
13
+ * @param handler Either a function, or an object with a
14
+ * 'handle' method.
15
+ * @returns An object with a handle method.
16
+ *
17
+ * @private
18
+ */
19
+ export const normalizeHandler = (handler: RouteHandler): RouteHandlerObject => {
20
+ if (handler && typeof handler === "object") {
21
+ if (process.env.NODE_ENV !== "production") {
22
+ assert!.hasMethod(handler, "handle", {
23
+ moduleName: "serwist",
24
+ className: "Route",
25
+ funcName: "constructor",
26
+ paramName: "handler",
27
+ });
28
+ }
29
+ return handler;
30
+ }
31
+ if (process.env.NODE_ENV !== "production") {
32
+ assert!.isType(handler, "function", {
33
+ moduleName: "serwist",
34
+ className: "Route",
35
+ funcName: "constructor",
36
+ paramName: "handler",
37
+ });
38
+ }
39
+ return { handle: handler };
40
+ };
@@ -0,0 +1,15 @@
1
+ /*
2
+ Copyright 2018 Google LLC
3
+
4
+ Use of this source code is governed by an MIT-style
5
+ license that can be found in the LICENSE file or at
6
+ https://opensource.org/licenses/MIT.
7
+ */
8
+
9
+ import type { SerwistPlugin } from "../types.js";
10
+
11
+ export const pluginUtils = {
12
+ filter: (plugins: SerwistPlugin[], callbackName: string): SerwistPlugin[] => {
13
+ return plugins.filter((plugin) => callbackName in plugin);
14
+ },
15
+ };
@@ -0,0 +1,38 @@
1
+ /*
2
+ Copyright 2018 Google LLC
3
+
4
+ Use of this source code is governed by an MIT-style
5
+ license that can be found in the LICENSE file or at
6
+ https://opensource.org/licenses/MIT.
7
+ */
8
+
9
+ import { logger } from "./logger.js";
10
+
11
+ /**
12
+ * @param groupTitle
13
+ * @param deletedURLs
14
+ *
15
+ * @private
16
+ */
17
+ const logGroup = (groupTitle: string, deletedURLs: string[]) => {
18
+ logger.groupCollapsed(groupTitle);
19
+
20
+ for (const url of deletedURLs) {
21
+ logger.log(url);
22
+ }
23
+
24
+ logger.groupEnd();
25
+ };
26
+
27
+ /**
28
+ * @param deletedURLs
29
+ * @private
30
+ */
31
+ export const printCleanupDetails = (deletedURLs: string[]): void => {
32
+ const deletionCount = deletedURLs.length;
33
+ if (deletionCount > 0) {
34
+ logger.groupCollapsed(`During precaching cleanup, ${deletionCount} cached request${deletionCount === 1 ? " was" : "s were"} deleted.`);
35
+ logGroup("Deleted Cache Requests", deletedURLs);
36
+ logger.groupEnd();
37
+ }
38
+ };
@@ -0,0 +1,53 @@
1
+ /*
2
+ Copyright 2018 Google LLC
3
+
4
+ Use of this source code is governed by an MIT-style
5
+ license that can be found in the LICENSE file or at
6
+ https://opensource.org/licenses/MIT.
7
+ */
8
+
9
+ import { logger } from "./logger.js";
10
+
11
+ /**
12
+ * @param groupTitle
13
+ * @param urls
14
+ *
15
+ * @private
16
+ */
17
+ function _nestedGroup(groupTitle: string, urls: string[]): void {
18
+ if (urls.length === 0) {
19
+ return;
20
+ }
21
+
22
+ logger.groupCollapsed(groupTitle);
23
+
24
+ for (const url of urls) {
25
+ logger.log(url);
26
+ }
27
+
28
+ logger.groupEnd();
29
+ }
30
+
31
+ /**
32
+ * @param urlsToPrecache
33
+ * @param urlsAlreadyPrecached
34
+ * @private
35
+ */
36
+ export const printInstallDetails = (urlsToPrecache: string[], urlsAlreadyPrecached: string[]): void => {
37
+ const precachedCount = urlsToPrecache.length;
38
+ const alreadyPrecachedCount = urlsAlreadyPrecached.length;
39
+
40
+ if (precachedCount || alreadyPrecachedCount) {
41
+ let message = `Precaching ${precachedCount} file${precachedCount === 1 ? "" : "s"}.`;
42
+
43
+ if (alreadyPrecachedCount > 0) {
44
+ message += ` ${alreadyPrecachedCount} ` + `file${alreadyPrecachedCount === 1 ? " is" : "s are"} already cached.`;
45
+ }
46
+
47
+ logger.groupCollapsed(message);
48
+
49
+ _nestedGroup("View newly precached URLs.", urlsToPrecache);
50
+ _nestedGroup("View previously precached URLs.", urlsAlreadyPrecached);
51
+ logger.groupEnd();
52
+ }
53
+ };
@@ -0,0 +1,29 @@
1
+ /*
2
+ Copyright 2018 Google LLC
3
+
4
+ Use of this source code is governed by an MIT-style
5
+ license that can be found in the LICENSE file or at
6
+ https://opensource.org/licenses/MIT.
7
+ */
8
+
9
+ /**
10
+ * Removes any URL search parameters that should be ignored.
11
+ *
12
+ * @param urlObject The original URL.
13
+ * @param ignoreURLParametersMatching RegExps to test against
14
+ * each search parameter name. Matches mean that the search parameter should be
15
+ * ignored.
16
+ * @returns The URL with any ignored search parameters removed.
17
+ * @private
18
+ */
19
+ export const removeIgnoredSearchParams = (urlObject: URL, ignoreURLParametersMatching: RegExp[] = []): URL => {
20
+ // Convert the iterable into an array at the start of the loop to make sure
21
+ // deletion doesn't mess up iteration.
22
+ for (const paramName of [...urlObject.searchParams.keys()]) {
23
+ if (ignoreURLParametersMatching.some((regExp) => regExp.test(paramName))) {
24
+ urlObject.searchParams.delete(paramName);
25
+ }
26
+ }
27
+
28
+ return urlObject;
29
+ };