@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
@@ -0,0 +1,408 @@
1
+ import { assert, logger, getFriendlyURL, SerwistError } from '@serwist/core/internal';
2
+
3
+ const defaultMethod = "GET";
4
+ const validMethods = [
5
+ "DELETE",
6
+ "GET",
7
+ "HEAD",
8
+ "PATCH",
9
+ "POST",
10
+ "PUT"
11
+ ];
12
+
13
+ const normalizeHandler = (handler)=>{
14
+ if (handler && typeof handler === "object") {
15
+ if (process.env.NODE_ENV !== "production") {
16
+ assert.hasMethod(handler, "handle", {
17
+ moduleName: "@serwist/routing",
18
+ className: "Route",
19
+ funcName: "constructor",
20
+ paramName: "handler"
21
+ });
22
+ }
23
+ return handler;
24
+ }
25
+ if (process.env.NODE_ENV !== "production") {
26
+ assert.isType(handler, "function", {
27
+ moduleName: "@serwist/routing",
28
+ className: "Route",
29
+ funcName: "constructor",
30
+ paramName: "handler"
31
+ });
32
+ }
33
+ return {
34
+ handle: handler
35
+ };
36
+ };
37
+
38
+ class Route {
39
+ handler;
40
+ match;
41
+ method;
42
+ catchHandler;
43
+ constructor(match, handler, method = defaultMethod){
44
+ if (process.env.NODE_ENV !== "production") {
45
+ assert.isType(match, "function", {
46
+ moduleName: "@serwist/routing",
47
+ className: "Route",
48
+ funcName: "constructor",
49
+ paramName: "match"
50
+ });
51
+ if (method) {
52
+ assert.isOneOf(method, validMethods, {
53
+ paramName: "method"
54
+ });
55
+ }
56
+ }
57
+ this.handler = normalizeHandler(handler);
58
+ this.match = match;
59
+ this.method = method;
60
+ }
61
+ setCatchHandler(handler) {
62
+ this.catchHandler = normalizeHandler(handler);
63
+ }
64
+ }
65
+
66
+ class Router {
67
+ _routes;
68
+ _defaultHandlerMap;
69
+ _catchHandler;
70
+ constructor(){
71
+ this._routes = new Map();
72
+ this._defaultHandlerMap = new Map();
73
+ }
74
+ get routes() {
75
+ return this._routes;
76
+ }
77
+ addFetchListener() {
78
+ self.addEventListener("fetch", (event)=>{
79
+ const { request } = event;
80
+ const responsePromise = this.handleRequest({
81
+ request,
82
+ event
83
+ });
84
+ if (responsePromise) {
85
+ event.respondWith(responsePromise);
86
+ }
87
+ });
88
+ }
89
+ addCacheListener() {
90
+ self.addEventListener("message", (event)=>{
91
+ if (event.data && event.data.type === "CACHE_URLS") {
92
+ const { payload } = event.data;
93
+ if (process.env.NODE_ENV !== "production") {
94
+ logger.debug("Caching URLs from the window", payload.urlsToCache);
95
+ }
96
+ const requestPromises = Promise.all(payload.urlsToCache.map((entry)=>{
97
+ if (typeof entry === "string") {
98
+ entry = [
99
+ entry
100
+ ];
101
+ }
102
+ const request = new Request(...entry);
103
+ return this.handleRequest({
104
+ request,
105
+ event
106
+ });
107
+ }));
108
+ event.waitUntil(requestPromises);
109
+ if (event.ports?.[0]) {
110
+ void requestPromises.then(()=>event.ports[0].postMessage(true));
111
+ }
112
+ }
113
+ });
114
+ }
115
+ handleRequest({ request, event }) {
116
+ if (process.env.NODE_ENV !== "production") {
117
+ assert.isInstance(request, Request, {
118
+ moduleName: "@serwist/routing",
119
+ className: "Router",
120
+ funcName: "handleRequest",
121
+ paramName: "options.request"
122
+ });
123
+ }
124
+ const url = new URL(request.url, location.href);
125
+ if (!url.protocol.startsWith("http")) {
126
+ if (process.env.NODE_ENV !== "production") {
127
+ logger.debug("The Serwist router only supports URLs that start with 'http'.");
128
+ }
129
+ return;
130
+ }
131
+ const sameOrigin = url.origin === location.origin;
132
+ const { params, route } = this.findMatchingRoute({
133
+ event,
134
+ request,
135
+ sameOrigin,
136
+ url
137
+ });
138
+ let handler = route?.handler;
139
+ const debugMessages = [];
140
+ if (process.env.NODE_ENV !== "production") {
141
+ if (handler) {
142
+ debugMessages.push([
143
+ "Found a route to handle this request:",
144
+ route
145
+ ]);
146
+ if (params) {
147
+ debugMessages.push([
148
+ `Passing the following params to the route's handler:`,
149
+ params
150
+ ]);
151
+ }
152
+ }
153
+ }
154
+ const method = request.method;
155
+ if (!handler && this._defaultHandlerMap.has(method)) {
156
+ if (process.env.NODE_ENV !== "production") {
157
+ debugMessages.push(`Failed to find a matching route. Falling back to the default handler for ${method}.`);
158
+ }
159
+ handler = this._defaultHandlerMap.get(method);
160
+ }
161
+ if (!handler) {
162
+ if (process.env.NODE_ENV !== "production") {
163
+ logger.debug(`No route found for: ${getFriendlyURL(url)}`);
164
+ }
165
+ return;
166
+ }
167
+ if (process.env.NODE_ENV !== "production") {
168
+ logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);
169
+ for (const msg of debugMessages){
170
+ if (Array.isArray(msg)) {
171
+ logger.log(...msg);
172
+ } else {
173
+ logger.log(msg);
174
+ }
175
+ }
176
+ logger.groupEnd();
177
+ }
178
+ let responsePromise;
179
+ try {
180
+ responsePromise = handler.handle({
181
+ url,
182
+ request,
183
+ event,
184
+ params
185
+ });
186
+ } catch (err) {
187
+ responsePromise = Promise.reject(err);
188
+ }
189
+ const catchHandler = route?.catchHandler;
190
+ if (responsePromise instanceof Promise && (this._catchHandler || catchHandler)) {
191
+ responsePromise = responsePromise.catch(async (err)=>{
192
+ if (catchHandler) {
193
+ if (process.env.NODE_ENV !== "production") {
194
+ logger.groupCollapsed(`Error thrown when responding to: ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`);
195
+ logger.error("Error thrown by:", route);
196
+ logger.error(err);
197
+ logger.groupEnd();
198
+ }
199
+ try {
200
+ return await catchHandler.handle({
201
+ url,
202
+ request,
203
+ event,
204
+ params
205
+ });
206
+ } catch (catchErr) {
207
+ if (catchErr instanceof Error) {
208
+ err = catchErr;
209
+ }
210
+ }
211
+ }
212
+ if (this._catchHandler) {
213
+ if (process.env.NODE_ENV !== "production") {
214
+ logger.groupCollapsed(`Error thrown when responding to: ${getFriendlyURL(url)}. Falling back to global Catch Handler.`);
215
+ logger.error("Error thrown by:", route);
216
+ logger.error(err);
217
+ logger.groupEnd();
218
+ }
219
+ return this._catchHandler.handle({
220
+ url,
221
+ request,
222
+ event
223
+ });
224
+ }
225
+ throw err;
226
+ });
227
+ }
228
+ return responsePromise;
229
+ }
230
+ findMatchingRoute({ url, sameOrigin, request, event }) {
231
+ const routes = this._routes.get(request.method) || [];
232
+ for (const route of routes){
233
+ let params;
234
+ const matchResult = route.match({
235
+ url,
236
+ sameOrigin,
237
+ request,
238
+ event
239
+ });
240
+ if (matchResult) {
241
+ if (process.env.NODE_ENV !== "production") {
242
+ if (matchResult instanceof Promise) {
243
+ logger.warn(`While routing ${getFriendlyURL(url)}, an async matchCallback function was used. Please convert the following route to use a synchronous matchCallback function:`, route);
244
+ }
245
+ }
246
+ params = matchResult;
247
+ if (Array.isArray(params) && params.length === 0) {
248
+ params = undefined;
249
+ } else if (matchResult.constructor === Object && Object.keys(matchResult).length === 0) {
250
+ params = undefined;
251
+ } else if (typeof matchResult === "boolean") {
252
+ params = undefined;
253
+ }
254
+ return {
255
+ route,
256
+ params
257
+ };
258
+ }
259
+ }
260
+ return {};
261
+ }
262
+ setDefaultHandler(handler, method = defaultMethod) {
263
+ this._defaultHandlerMap.set(method, normalizeHandler(handler));
264
+ }
265
+ setCatchHandler(handler) {
266
+ this._catchHandler = normalizeHandler(handler);
267
+ }
268
+ registerRoute(route) {
269
+ if (process.env.NODE_ENV !== "production") {
270
+ assert.isType(route, "object", {
271
+ moduleName: "@serwist/routing",
272
+ className: "Router",
273
+ funcName: "registerRoute",
274
+ paramName: "route"
275
+ });
276
+ assert.hasMethod(route, "match", {
277
+ moduleName: "@serwist/routing",
278
+ className: "Router",
279
+ funcName: "registerRoute",
280
+ paramName: "route"
281
+ });
282
+ assert.isType(route.handler, "object", {
283
+ moduleName: "@serwist/routing",
284
+ className: "Router",
285
+ funcName: "registerRoute",
286
+ paramName: "route"
287
+ });
288
+ assert.hasMethod(route.handler, "handle", {
289
+ moduleName: "@serwist/routing",
290
+ className: "Router",
291
+ funcName: "registerRoute",
292
+ paramName: "route.handler"
293
+ });
294
+ assert.isType(route.method, "string", {
295
+ moduleName: "@serwist/routing",
296
+ className: "Router",
297
+ funcName: "registerRoute",
298
+ paramName: "route.method"
299
+ });
300
+ }
301
+ if (!this._routes.has(route.method)) {
302
+ this._routes.set(route.method, []);
303
+ }
304
+ this._routes.get(route.method).push(route);
305
+ }
306
+ unregisterRoute(route) {
307
+ if (!this._routes.has(route.method)) {
308
+ throw new SerwistError("unregister-route-but-not-found-with-method", {
309
+ method: route.method
310
+ });
311
+ }
312
+ const routeIndex = this._routes.get(route.method).indexOf(route);
313
+ if (routeIndex > -1) {
314
+ this._routes.get(route.method).splice(routeIndex, 1);
315
+ } else {
316
+ throw new SerwistError("unregister-route-route-not-registered");
317
+ }
318
+ }
319
+ }
320
+
321
+ let defaultRouter;
322
+ const getOrCreateDefaultRouter = ()=>{
323
+ if (!defaultRouter) {
324
+ defaultRouter = new Router();
325
+ defaultRouter.addFetchListener();
326
+ defaultRouter.addCacheListener();
327
+ }
328
+ return defaultRouter;
329
+ };
330
+
331
+ class RegExpRoute extends Route {
332
+ constructor(regExp, handler, method){
333
+ if (process.env.NODE_ENV !== "production") {
334
+ assert.isInstance(regExp, RegExp, {
335
+ moduleName: "@serwist/routing",
336
+ className: "RegExpRoute",
337
+ funcName: "constructor",
338
+ paramName: "pattern"
339
+ });
340
+ }
341
+ const match = ({ url })=>{
342
+ const result = regExp.exec(url.href);
343
+ if (!result) {
344
+ return;
345
+ }
346
+ if (url.origin !== location.origin && result.index !== 0) {
347
+ if (process.env.NODE_ENV !== "production") {
348
+ logger.debug(`The regular expression '${regExp.toString()}' only partially matched against the cross-origin URL '${url.toString()}'. RegExpRoute's will only handle cross-origin requests if they match the entire URL.`);
349
+ }
350
+ return;
351
+ }
352
+ return result.slice(1);
353
+ };
354
+ super(match, handler, method);
355
+ }
356
+ }
357
+
358
+ const parseRoute = (capture, handler, method)=>{
359
+ let route;
360
+ if (typeof capture === "string") {
361
+ const captureUrl = new URL(capture, location.href);
362
+ if (process.env.NODE_ENV !== "production") {
363
+ if (!(capture.startsWith("/") || capture.startsWith("http"))) {
364
+ throw new SerwistError("invalid-string", {
365
+ moduleName: "@serwist/routing",
366
+ funcName: "registerRoute",
367
+ paramName: "capture"
368
+ });
369
+ }
370
+ const valueToCheck = capture.startsWith("http") ? captureUrl.pathname : capture;
371
+ const wildcards = "[*:?+]";
372
+ if (new RegExp(`${wildcards}`).exec(valueToCheck)) {
373
+ logger.debug(`The '$capture' parameter contains an Express-style wildcard character (${wildcards}). Strings are now always interpreted as exact matches; use a RegExp for partial or wildcard matches.`);
374
+ }
375
+ }
376
+ const matchCallback = ({ url })=>{
377
+ if (process.env.NODE_ENV !== "production") {
378
+ if (url.pathname === captureUrl.pathname && url.origin !== captureUrl.origin) {
379
+ logger.debug(`${capture} only partially matches the cross-origin URL ${url.toString()}. This route will only handle cross-origin requests if they match the entire URL.`);
380
+ }
381
+ }
382
+ return url.href === captureUrl.href;
383
+ };
384
+ route = new Route(matchCallback, handler, method);
385
+ } else if (capture instanceof RegExp) {
386
+ route = new RegExpRoute(capture, handler, method);
387
+ } else if (typeof capture === "function") {
388
+ route = new Route(capture, handler, method);
389
+ } else if (capture instanceof Route) {
390
+ route = capture;
391
+ } else {
392
+ throw new SerwistError("unsupported-route-type", {
393
+ moduleName: "@serwist/routing",
394
+ funcName: "registerRoute",
395
+ paramName: "capture"
396
+ });
397
+ }
398
+ return route;
399
+ };
400
+
401
+ const registerRoute = (capture, handler, method)=>{
402
+ const route = parseRoute(capture, handler, method);
403
+ const defaultRouter = getOrCreateDefaultRouter();
404
+ defaultRouter.registerRoute(route);
405
+ return route;
406
+ };
407
+
408
+ export { Route as R, RegExpRoute as a, Router as b, getOrCreateDefaultRouter as g, parseRoute as p, registerRoute as r };
package/dist/index.d.ts CHANGED
@@ -1,11 +1,12 @@
1
- import { Serwist, type SerwistOptions, type SerwistInstallOptions } from "./Serwist.js";
2
- import { disableDevLogs } from "./disableDevLogs.js";
3
- import type { FallbackEntry, FallbackMatcher, FallbacksOptions } from "./fallbacks.js";
4
- import { fallbacks } from "./fallbacks.js";
5
- import { type HandlePrecachingOptions, handlePrecaching } from "./handlePrecaching.js";
6
- import { type InstallSerwistOptions, installSerwist } from "./installSerwist.js";
7
- import { registerRuntimeCaching } from "./registerRuntimeCaching.js";
8
- import type { RuntimeCaching } from "./types.js";
9
- export { disableDevLogs, fallbacks, handlePrecaching, installSerwist, Serwist, registerRuntimeCaching };
1
+ import { Serwist, type SerwistInstallOptions, type SerwistOptions } from "./abstractions/Serwist.js";
2
+ import { disableDevLogs } from "./abstractions/disableDevLogs.js";
3
+ import type { FallbackEntry, FallbackMatcher, FallbacksOptions } from "./abstractions/fallbacks.js";
4
+ import { fallbacks } from "./abstractions/fallbacks.js";
5
+ import { type HandlePrecachingOptions, handlePrecaching } from "./abstractions/handlePrecaching.js";
6
+ import { type InstallSerwistOptions, installSerwist } from "./abstractions/installSerwist.js";
7
+ import { disableNavigationPreload, enableNavigationPreload, isNavigationPreloadSupported } from "./abstractions/navigationPreload.js";
8
+ import { registerRuntimeCaching } from "./abstractions/registerRuntimeCaching.js";
9
+ import type { RuntimeCaching } from "./abstractions/types.js";
10
+ export { disableDevLogs, fallbacks, handlePrecaching, installSerwist, Serwist, registerRuntimeCaching, disableNavigationPreload, enableNavigationPreload, isNavigationPreloadSupported, };
10
11
  export type { FallbackEntry, FallbackMatcher, FallbacksOptions, HandlePrecachingOptions, InstallSerwistOptions, SerwistOptions, SerwistInstallOptions, RuntimeCaching, };
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,KAAK,qBAAqB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;AACxG,YAAY,EACV,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,cAAc,EACd,qBAAqB,EACrB,cAAc,GACf,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpG,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,KAAK,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACpG,OAAO,EAAE,KAAK,qBAAqB,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AACtI,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EACL,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,OAAO,EACP,sBAAsB,EAEtB,wBAAwB,EACxB,uBAAuB,EACvB,4BAA4B,GAC7B,CAAC;AACF,YAAY,EACV,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,cAAc,EACd,qBAAqB,EACrB,cAAc,GACf,CAAC"}
package/dist/index.js CHANGED
@@ -1,12 +1,13 @@
1
1
  import { setCacheNameDetails, clientsClaim } from '@serwist/core';
2
- import { initialize } from '@serwist/google-analytics/initialize';
3
- import { enable } from '@serwist/navigation-preload';
4
- import { precacheAndRoute, PrecacheFallbackPlugin, PrecacheController, PrecacheRoute, cleanupOutdatedCaches, createHandlerBoundToURL } from '@serwist/precaching';
5
- import { Router, NavigationRoute, registerRoute } from '@serwist/routing';
6
- import { parseRoute, getOrCreateDefaultRouter } from '@serwist/routing/internal';
7
- import { Strategy } from '@serwist/strategies';
2
+ import { P as PrecacheFallbackPlugin, i as initialize } from './chunks/PrecacheFallbackPlugin.js';
3
+ import { p as precacheAndRoute, P as PrecacheRoute, c as cleanupOutdatedCaches, a as createHandlerBoundToURL } from './chunks/precacheAndRoute.js';
4
+ import { g as getOrCreatePrecacheController } from './chunks/getOrCreatePrecacheController.js';
5
+ import { N as NavigationRoute } from './chunks/NavigationRoute.js';
6
+ import { g as getOrCreateDefaultRouter, p as parseRoute, r as registerRoute } from './chunks/registerRoute.js';
7
+ import { S as Strategy } from './chunks/Strategy.js';
8
8
  import { logger } from '@serwist/core/internal';
9
- import { getOrCreatePrecacheController } from '@serwist/precaching/internal';
9
+ import './chunks/NetworkOnly.js';
10
+ import 'idb';
10
11
 
11
12
  const disableDevLogs = ()=>{
12
13
  self.__WB_DISABLE_DEV_LOGS = true;
@@ -26,16 +27,53 @@ const fallbacks = ({ runtimeCaching, entries, precacheOptions })=>{
26
27
  return runtimeCaching;
27
28
  };
28
29
 
30
+ const isNavigationPreloadSupported = ()=>{
31
+ return Boolean(self.registration?.navigationPreload);
32
+ };
33
+ const enableNavigationPreload = (headerValue)=>{
34
+ if (isNavigationPreloadSupported()) {
35
+ self.addEventListener("activate", (event)=>{
36
+ event.waitUntil(self.registration.navigationPreload.enable().then(()=>{
37
+ if (headerValue) {
38
+ void self.registration.navigationPreload.setHeaderValue(headerValue);
39
+ }
40
+ if (process.env.NODE_ENV !== "production") {
41
+ logger.log("Navigation preloading is enabled.");
42
+ }
43
+ }));
44
+ });
45
+ } else {
46
+ if (process.env.NODE_ENV !== "production") {
47
+ logger.log("Navigation preloading is not supported in this browser.");
48
+ }
49
+ }
50
+ };
51
+ const disableNavigationPreload = ()=>{
52
+ if (isNavigationPreloadSupported()) {
53
+ self.addEventListener("activate", (event)=>{
54
+ event.waitUntil(self.registration.navigationPreload.disable().then(()=>{
55
+ if (process.env.NODE_ENV !== "production") {
56
+ logger.log("Navigation preloading is disabled.");
57
+ }
58
+ }));
59
+ });
60
+ } else {
61
+ if (process.env.NODE_ENV !== "production") {
62
+ logger.log("Navigation preloading is not supported in this browser.");
63
+ }
64
+ }
65
+ };
66
+
29
67
  class Serwist {
30
68
  _precacheController;
31
69
  _router;
32
- constructor({ precacheController = new PrecacheController(), router = new Router() } = {}){
33
- this._precacheController = precacheController;
34
- this._router = router;
70
+ constructor({ precacheController, router } = {}){
71
+ this._precacheController = precacheController || getOrCreatePrecacheController();
72
+ this._router = router || getOrCreateDefaultRouter();
35
73
  }
36
74
  install({ precacheEntries, precacheOptions, cleanupOutdatedCaches: cleanupOutdatedCaches$1, navigateFallback, navigateFallbackAllowlist, navigateFallbackDenylist, skipWaiting = false, importScripts, navigationPreload = false, cacheId, clientsClaim: clientsClaim$1 = false, runtimeCaching, offlineAnalyticsConfig, disableDevLogs: disableDevLogs$1 = false, fallbacks: fallbacks$1 }) {
37
75
  if (!!importScripts && importScripts.length > 0) self.importScripts(...importScripts);
38
- if (navigationPreload) enable();
76
+ if (navigationPreload) enableNavigationPreload();
39
77
  if (cacheId !== undefined) {
40
78
  setCacheNameDetails({
41
79
  prefix: cacheId
@@ -114,4 +152,4 @@ const registerRuntimeCaching = (...runtimeCachingList)=>{
114
152
  }
115
153
  };
116
154
 
117
- export { Serwist, disableDevLogs, fallbacks, handlePrecaching, installSerwist, registerRuntimeCaching };
155
+ export { Serwist, disableDevLogs, disableNavigationPreload, enableNavigationPreload, fallbacks, handlePrecaching, installSerwist, isNavigationPreloadSupported, registerRuntimeCaching };
@@ -1,12 +1,41 @@
1
- import type { QueueEntry, QueueOptions } from "@serwist/background-sync";
2
- import { BackgroundSyncPlugin, Queue, QueueStore, StorableRequest } from "@serwist/background-sync";
3
- import type { BroadcastCacheUpdateOptions, BroadcastMessage, BroadcastPayload, BroadcastPayloadGenerator } from "@serwist/broadcast-update";
4
- import { BroadcastCacheUpdate, BroadcastUpdatePlugin, CACHE_UPDATED_MESSAGE_META as BROADCAST_UPDATE_MESSAGE_META, CACHE_UPDATED_MESSAGE_TYPE as BROADCAST_UPDATE_MESSAGE_TYPE, defaultHeadersToCheck as BROADCAST_UPDATE_DEFAULT_HEADERS, responsesAreSame } from "@serwist/broadcast-update";
5
- import type { CacheableResponseOptions } from "@serwist/cacheable-response";
6
- import { CacheableResponse, CacheableResponsePlugin } from "@serwist/cacheable-response";
7
- import type { ExpirationPluginOptions } from "@serwist/expiration";
8
- import { CacheExpiration, ExpirationPlugin } from "@serwist/expiration";
9
- import { RangeRequestsPlugin, createPartialResponse } from "@serwist/range-requests";
10
- export { BackgroundSyncPlugin, Queue as BackgroundSyncQueue, QueueStore as BackgroundSyncQueueStore, StorableRequest, BroadcastCacheUpdate, BroadcastUpdatePlugin, responsesAreSame, BROADCAST_UPDATE_MESSAGE_META, BROADCAST_UPDATE_MESSAGE_TYPE, BROADCAST_UPDATE_DEFAULT_HEADERS, CacheableResponse, CacheableResponsePlugin, CacheExpiration, ExpirationPlugin, createPartialResponse, RangeRequestsPlugin, };
11
- export type { QueueOptions as BackgroundSyncQueueOptions, QueueEntry as BackgroundSyncQueueEntry, BroadcastCacheUpdateOptions, BroadcastPayload, BroadcastPayloadGenerator, BroadcastMessage, CacheableResponseOptions, ExpirationPluginOptions, };
1
+ import { BackgroundSyncPlugin } from "./plugins/backgroundSync/BackgroundSyncPlugin.js";
2
+ import type { QueueEntry as BackgroundSyncQueueEntry, QueueOptions as BackgroundSyncQueueOptions } from "./plugins/backgroundSync/Queue.js";
3
+ import { Queue as BackgroundSyncQueue } from "./plugins/backgroundSync/Queue.js";
4
+ import { QueueStore as BackgroundSyncQueueStore } from "./plugins/backgroundSync/QueueStore.js";
5
+ import { StorableRequest } from "./plugins/backgroundSync/StorableRequest.js";
6
+ import { BroadcastCacheUpdate } from "./plugins/broadcastUpdate/BroadcastCacheUpdate.js";
7
+ import { BroadcastUpdatePlugin } from "./plugins/broadcastUpdate/BroadcastUpdatePlugin.js";
8
+ import { CACHE_UPDATED_MESSAGE_META as BROADCAST_UPDATE_MESSAGE_META, CACHE_UPDATED_MESSAGE_TYPE as BROADCAST_UPDATE_MESSAGE_TYPE, defaultHeadersToCheck as BROADCAST_UPDATE_DEFAULT_HEADERS } from "./plugins/broadcastUpdate/constants.js";
9
+ import { responsesAreSame } from "./plugins/broadcastUpdate/responsesAreSame.js";
10
+ import type { BroadcastCacheUpdateOptions, BroadcastMessage, BroadcastPayload, BroadcastPayloadGenerator } from "./plugins/broadcastUpdate/types.js";
11
+ import type { CacheableResponseOptions } from "./plugins/cacheableResponse/CacheableResponse.js";
12
+ import { CacheableResponse } from "./plugins/cacheableResponse/CacheableResponse.js";
13
+ import { CacheableResponsePlugin } from "./plugins/cacheableResponse/CacheableResponsePlugin.js";
14
+ import { CacheExpiration } from "./plugins/expiration/CacheExpiration.js";
15
+ import type { ExpirationPluginOptions } from "./plugins/expiration/ExpirationPlugin.js";
16
+ import { ExpirationPlugin } from "./plugins/expiration/ExpirationPlugin.js";
17
+ import type { GoogleAnalyticsInitializeOptions } from "./plugins/googleAnalytics/initialize.js";
18
+ import { initialize as initializeGoogleAnalytics } from "./plugins/googleAnalytics/initialize.js";
19
+ import type { PrecacheFallbackEntry, PrecacheFallbackPluginOptions } from "./plugins/precaching/PrecacheFallbackPlugin.js";
20
+ import { PrecacheFallbackPlugin } from "./plugins/precaching/PrecacheFallbackPlugin.js";
21
+ import { RangeRequestsPlugin } from "./plugins/rangeRequests/RangeRequestsPlugin.js";
22
+ import { createPartialResponse } from "./plugins/rangeRequests/createPartialResponse.js";
23
+ interface SyncManager {
24
+ getTags(): Promise<string[]>;
25
+ register(tag: string): Promise<void>;
26
+ }
27
+ declare global {
28
+ interface ServiceWorkerRegistration {
29
+ readonly sync: SyncManager;
30
+ }
31
+ interface SyncEvent extends ExtendableEvent {
32
+ readonly lastChance: boolean;
33
+ readonly tag: string;
34
+ }
35
+ interface ServiceWorkerGlobalScopeEventMap {
36
+ sync: SyncEvent;
37
+ }
38
+ }
39
+ export { BackgroundSyncPlugin, BackgroundSyncQueue, BackgroundSyncQueueStore, StorableRequest, BroadcastCacheUpdate, BroadcastUpdatePlugin, responsesAreSame, BROADCAST_UPDATE_MESSAGE_META, BROADCAST_UPDATE_MESSAGE_TYPE, BROADCAST_UPDATE_DEFAULT_HEADERS, CacheableResponse, CacheableResponsePlugin, CacheExpiration, ExpirationPlugin, PrecacheFallbackPlugin, createPartialResponse, RangeRequestsPlugin, initializeGoogleAnalytics, };
40
+ export type { BackgroundSyncQueueOptions, BackgroundSyncQueueEntry, BroadcastCacheUpdateOptions, BroadcastPayload, BroadcastPayloadGenerator, BroadcastMessage, CacheableResponseOptions, ExpirationPluginOptions, PrecacheFallbackEntry, PrecacheFallbackPluginOptions, GoogleAnalyticsInitializeOptions, };
12
41
  //# sourceMappingURL=index.plugins.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.plugins.d.ts","sourceRoot":"","sources":["../src/index.plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACpG,OAAO,KAAK,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC5I,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,IAAI,6BAA6B,EAC3D,0BAA0B,IAAI,6BAA6B,EAC3D,qBAAqB,IAAI,gCAAgC,EACzD,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErF,OAAO,EACL,oBAAoB,EACpB,KAAK,IAAI,mBAAmB,EAC5B,UAAU,IAAI,wBAAwB,EACtC,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,6BAA6B,EAC7B,6BAA6B,EAC7B,gCAAgC,EAChC,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,GACpB,CAAC;AAEF,YAAY,EACV,YAAY,IAAI,0BAA0B,EAC1C,UAAU,IAAI,wBAAwB,EACtC,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,GACxB,CAAC"}
1
+ {"version":3,"file":"index.plugins.d.ts","sourceRoot":"","sources":["../src/index.plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,KAAK,EAAE,UAAU,IAAI,wBAAwB,EAAE,YAAY,IAAI,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC5I,OAAO,EAAE,KAAK,IAAI,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,UAAU,IAAI,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAC3F,OAAO,EACL,0BAA0B,IAAI,6BAA6B,EAC3D,0BAA0B,IAAI,6BAA6B,EAC3D,qBAAqB,IAAI,gCAAgC,EAC1D,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACjF,OAAO,KAAK,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACrJ,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wDAAwD,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,UAAU,IAAI,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,KAAK,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAC3H,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AAGzF,UAAU,WAAW;IACnB,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,yBAAyB;QACjC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;KAC5B;IAED,UAAU,SAAU,SAAQ,eAAe;QACzC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;QAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACtB;IAED,UAAU,gCAAgC;QACxC,IAAI,EAAE,SAAS,CAAC;KACjB;CACF;AAED,OAAO,EAEL,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,EAEf,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,6BAA6B,EAC7B,6BAA6B,EAC7B,gCAAgC,EAEhC,iBAAiB,EACjB,uBAAuB,EAEvB,eAAe,EACf,gBAAgB,EAEhB,sBAAsB,EAEtB,qBAAqB,EACrB,mBAAmB,EAEnB,yBAAyB,GAC1B,CAAC;AAEF,YAAY,EAEV,0BAA0B,EAC1B,wBAAwB,EAExB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,EAEhB,wBAAwB,EAExB,uBAAuB,EAEvB,qBAAqB,EACrB,6BAA6B,EAE7B,gCAAgC,GACjC,CAAC"}