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

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 (249) hide show
  1. package/dist/index.d.ts +4 -11
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -156
  4. package/package.json +7 -42
  5. package/src/index.ts +5 -22
  6. package/README.md +0 -1
  7. package/dist/abstractions/Serwist.d.ts +0 -82
  8. package/dist/abstractions/Serwist.d.ts.map +0 -1
  9. package/dist/abstractions/disableDevLogs.d.ts +0 -7
  10. package/dist/abstractions/disableDevLogs.d.ts.map +0 -1
  11. package/dist/abstractions/fallbacks.d.ts +0 -39
  12. package/dist/abstractions/fallbacks.d.ts.map +0 -1
  13. package/dist/abstractions/handlePrecaching.d.ts +0 -39
  14. package/dist/abstractions/handlePrecaching.d.ts.map +0 -1
  15. package/dist/abstractions/installSerwist.d.ts +0 -15
  16. package/dist/abstractions/installSerwist.d.ts.map +0 -1
  17. package/dist/abstractions/navigationPreload.d.ts +0 -20
  18. package/dist/abstractions/navigationPreload.d.ts.map +0 -1
  19. package/dist/abstractions/registerRuntimeCaching.d.ts +0 -11
  20. package/dist/abstractions/registerRuntimeCaching.d.ts.map +0 -1
  21. package/dist/abstractions/types.d.ts +0 -29
  22. package/dist/abstractions/types.d.ts.map +0 -1
  23. package/dist/chunks/NavigationRoute.js +0 -54
  24. package/dist/chunks/NetworkOnly.js +0 -193
  25. package/dist/chunks/PrecacheFallbackPlugin.js +0 -573
  26. package/dist/chunks/Strategy.js +0 -410
  27. package/dist/chunks/precacheAndRoute.js +0 -113
  28. package/dist/chunks/registerRoute.js +0 -7
  29. package/dist/chunks/singletonPrecacheController.js +0 -433
  30. package/dist/chunks/singletonRouter.js +0 -435
  31. package/dist/index.plugins.d.ts +0 -41
  32. package/dist/index.plugins.d.ts.map +0 -1
  33. package/dist/index.plugins.js +0 -671
  34. package/dist/index.precaching.d.ts +0 -25
  35. package/dist/index.precaching.d.ts.map +0 -1
  36. package/dist/index.precaching.js +0 -24
  37. package/dist/index.routing.d.ts +0 -15
  38. package/dist/index.routing.d.ts.map +0 -1
  39. package/dist/index.routing.js +0 -19
  40. package/dist/index.strategies.d.ts +0 -22
  41. package/dist/index.strategies.d.ts.map +0 -1
  42. package/dist/index.strategies.js +0 -146
  43. package/dist/plugins/backgroundSync/BackgroundSyncPlugin.d.ts +0 -23
  44. package/dist/plugins/backgroundSync/BackgroundSyncPlugin.d.ts.map +0 -1
  45. package/dist/plugins/backgroundSync/Queue.d.ts +0 -166
  46. package/dist/plugins/backgroundSync/Queue.d.ts.map +0 -1
  47. package/dist/plugins/backgroundSync/QueueDb.d.ts +0 -90
  48. package/dist/plugins/backgroundSync/QueueDb.d.ts.map +0 -1
  49. package/dist/plugins/backgroundSync/QueueStore.d.ts +0 -75
  50. package/dist/plugins/backgroundSync/QueueStore.d.ts.map +0 -1
  51. package/dist/plugins/backgroundSync/StorableRequest.d.ts +0 -51
  52. package/dist/plugins/backgroundSync/StorableRequest.d.ts.map +0 -1
  53. package/dist/plugins/broadcastUpdate/BroadcastCacheUpdate.d.ts +0 -45
  54. package/dist/plugins/broadcastUpdate/BroadcastCacheUpdate.d.ts.map +0 -1
  55. package/dist/plugins/broadcastUpdate/BroadcastUpdatePlugin.d.ts +0 -27
  56. package/dist/plugins/broadcastUpdate/BroadcastUpdatePlugin.d.ts.map +0 -1
  57. package/dist/plugins/broadcastUpdate/constants.d.ts +0 -5
  58. package/dist/plugins/broadcastUpdate/constants.d.ts.map +0 -1
  59. package/dist/plugins/broadcastUpdate/responsesAreSame.d.ts +0 -11
  60. package/dist/plugins/broadcastUpdate/responsesAreSame.d.ts.map +0 -1
  61. package/dist/plugins/broadcastUpdate/types.d.ts +0 -34
  62. package/dist/plugins/broadcastUpdate/types.d.ts.map +0 -1
  63. package/dist/plugins/cacheableResponse/CacheableResponse.d.ts +0 -40
  64. package/dist/plugins/cacheableResponse/CacheableResponse.d.ts.map +0 -1
  65. package/dist/plugins/cacheableResponse/CacheableResponsePlugin.d.ts +0 -27
  66. package/dist/plugins/cacheableResponse/CacheableResponsePlugin.d.ts.map +0 -1
  67. package/dist/plugins/expiration/CacheExpiration.d.ts +0 -66
  68. package/dist/plugins/expiration/CacheExpiration.d.ts.map +0 -1
  69. package/dist/plugins/expiration/ExpirationPlugin.d.ts +0 -116
  70. package/dist/plugins/expiration/ExpirationPlugin.d.ts.map +0 -1
  71. package/dist/plugins/expiration/models/CacheTimestampsModel.d.ts +0 -73
  72. package/dist/plugins/expiration/models/CacheTimestampsModel.d.ts.map +0 -1
  73. package/dist/plugins/googleAnalytics/constants.d.ts +0 -10
  74. package/dist/plugins/googleAnalytics/constants.d.ts.map +0 -1
  75. package/dist/plugins/googleAnalytics/initialize.d.ts +0 -34
  76. package/dist/plugins/googleAnalytics/initialize.d.ts.map +0 -1
  77. package/dist/plugins/precaching/PrecacheFallbackPlugin.d.ts +0 -54
  78. package/dist/plugins/precaching/PrecacheFallbackPlugin.d.ts.map +0 -1
  79. package/dist/plugins/rangeRequests/RangeRequestsPlugin.d.ts +0 -19
  80. package/dist/plugins/rangeRequests/RangeRequestsPlugin.d.ts.map +0 -1
  81. package/dist/plugins/rangeRequests/createPartialResponse.d.ts +0 -18
  82. package/dist/plugins/rangeRequests/createPartialResponse.d.ts.map +0 -1
  83. package/dist/plugins/rangeRequests/utils/calculateEffectiveBoundaries.d.ts +0 -14
  84. package/dist/plugins/rangeRequests/utils/calculateEffectiveBoundaries.d.ts.map +0 -1
  85. package/dist/plugins/rangeRequests/utils/parseRangeHeader.d.ts +0 -12
  86. package/dist/plugins/rangeRequests/utils/parseRangeHeader.d.ts.map +0 -1
  87. package/dist/precaching/PrecacheController.d.ts +0 -145
  88. package/dist/precaching/PrecacheController.d.ts.map +0 -1
  89. package/dist/precaching/PrecacheRoute.d.ts +0 -20
  90. package/dist/precaching/PrecacheRoute.d.ts.map +0 -1
  91. package/dist/precaching/PrecacheStrategy.d.ts +0 -68
  92. package/dist/precaching/PrecacheStrategy.d.ts.map +0 -1
  93. package/dist/precaching/addPlugins.d.ts +0 -8
  94. package/dist/precaching/addPlugins.d.ts.map +0 -1
  95. package/dist/precaching/addRoute.d.ts +0 -15
  96. package/dist/precaching/addRoute.d.ts.map +0 -1
  97. package/dist/precaching/cleanupOutdatedCaches.d.ts +0 -6
  98. package/dist/precaching/cleanupOutdatedCaches.d.ts.map +0 -1
  99. package/dist/precaching/createHandlerBoundToURL.d.ts +0 -17
  100. package/dist/precaching/createHandlerBoundToURL.d.ts.map +0 -1
  101. package/dist/precaching/getCacheKeyForURL.d.ts +0 -20
  102. package/dist/precaching/getCacheKeyForURL.d.ts.map +0 -1
  103. package/dist/precaching/matchPrecache.d.ts +0 -14
  104. package/dist/precaching/matchPrecache.d.ts.map +0 -1
  105. package/dist/precaching/precache.d.ts +0 -19
  106. package/dist/precaching/precache.d.ts.map +0 -1
  107. package/dist/precaching/precacheAndRoute.d.ts +0 -14
  108. package/dist/precaching/precacheAndRoute.d.ts.map +0 -1
  109. package/dist/precaching/singletonPrecacheController.d.ts +0 -38
  110. package/dist/precaching/singletonPrecacheController.d.ts.map +0 -1
  111. package/dist/precaching/types.d.ts +0 -37
  112. package/dist/precaching/types.d.ts.map +0 -1
  113. package/dist/precaching/utils/PrecacheCacheKeyPlugin.d.ts +0 -17
  114. package/dist/precaching/utils/PrecacheCacheKeyPlugin.d.ts.map +0 -1
  115. package/dist/precaching/utils/PrecacheInstallReportPlugin.d.ts +0 -15
  116. package/dist/precaching/utils/PrecacheInstallReportPlugin.d.ts.map +0 -1
  117. package/dist/precaching/utils/createCacheKey.d.ts +0 -16
  118. package/dist/precaching/utils/createCacheKey.d.ts.map +0 -1
  119. package/dist/precaching/utils/deleteOutdatedCaches.d.ts +0 -18
  120. package/dist/precaching/utils/deleteOutdatedCaches.d.ts.map +0 -1
  121. package/dist/precaching/utils/generateURLVariations.d.ts +0 -12
  122. package/dist/precaching/utils/generateURLVariations.d.ts.map +0 -1
  123. package/dist/precaching/utils/getCacheKeyForURL.d.ts +0 -14
  124. package/dist/precaching/utils/getCacheKeyForURL.d.ts.map +0 -1
  125. package/dist/precaching/utils/printCleanupDetails.d.ts +0 -6
  126. package/dist/precaching/utils/printCleanupDetails.d.ts.map +0 -1
  127. package/dist/precaching/utils/printInstallDetails.d.ts +0 -7
  128. package/dist/precaching/utils/printInstallDetails.d.ts.map +0 -1
  129. package/dist/precaching/utils/removeIgnoredSearchParams.d.ts +0 -12
  130. package/dist/precaching/utils/removeIgnoredSearchParams.d.ts.map +0 -1
  131. package/dist/routing/NavigationRoute.d.ts +0 -57
  132. package/dist/routing/NavigationRoute.d.ts.map +0 -1
  133. package/dist/routing/RegExpRoute.d.ts +0 -24
  134. package/dist/routing/RegExpRoute.d.ts.map +0 -1
  135. package/dist/routing/Route.d.ts +0 -33
  136. package/dist/routing/Route.d.ts.map +0 -1
  137. package/dist/routing/Router.d.ts +0 -150
  138. package/dist/routing/Router.d.ts.map +0 -1
  139. package/dist/routing/parseRoute.d.ts +0 -16
  140. package/dist/routing/parseRoute.d.ts.map +0 -1
  141. package/dist/routing/registerRoute.d.ts +0 -15
  142. package/dist/routing/registerRoute.d.ts.map +0 -1
  143. package/dist/routing/setCatchHandler.d.ts +0 -9
  144. package/dist/routing/setCatchHandler.d.ts.map +0 -1
  145. package/dist/routing/setDefaultHandler.d.ts +0 -12
  146. package/dist/routing/setDefaultHandler.d.ts.map +0 -1
  147. package/dist/routing/singletonRouter.d.ts +0 -47
  148. package/dist/routing/singletonRouter.d.ts.map +0 -1
  149. package/dist/routing/unregisterRoute.d.ts +0 -8
  150. package/dist/routing/unregisterRoute.d.ts.map +0 -1
  151. package/dist/routing/utils/constants.d.ts +0 -15
  152. package/dist/routing/utils/constants.d.ts.map +0 -1
  153. package/dist/routing/utils/normalizeHandler.d.ts +0 -10
  154. package/dist/routing/utils/normalizeHandler.d.ts.map +0 -1
  155. package/dist/strategies/CacheFirst.d.ts +0 -23
  156. package/dist/strategies/CacheFirst.d.ts.map +0 -1
  157. package/dist/strategies/CacheOnly.d.ts +0 -20
  158. package/dist/strategies/CacheOnly.d.ts.map +0 -1
  159. package/dist/strategies/NetworkFirst.d.ts +0 -61
  160. package/dist/strategies/NetworkFirst.d.ts.map +0 -1
  161. package/dist/strategies/NetworkOnly.d.ts +0 -32
  162. package/dist/strategies/NetworkOnly.d.ts.map +0 -1
  163. package/dist/strategies/StaleWhileRevalidate.d.ts +0 -35
  164. package/dist/strategies/StaleWhileRevalidate.d.ts.map +0 -1
  165. package/dist/strategies/Strategy.d.ts +0 -83
  166. package/dist/strategies/Strategy.d.ts.map +0 -1
  167. package/dist/strategies/StrategyHandler.d.ts +0 -189
  168. package/dist/strategies/StrategyHandler.d.ts.map +0 -1
  169. package/dist/strategies/plugins/cacheOkAndOpaquePlugin.d.ts +0 -3
  170. package/dist/strategies/plugins/cacheOkAndOpaquePlugin.d.ts.map +0 -1
  171. package/dist/strategies/utils/messages.d.ts +0 -5
  172. package/dist/strategies/utils/messages.d.ts.map +0 -1
  173. package/src/abstractions/Serwist.ts +0 -177
  174. package/src/abstractions/disableDevLogs.ts +0 -10
  175. package/src/abstractions/fallbacks.ts +0 -65
  176. package/src/abstractions/handlePrecaching.ts +0 -65
  177. package/src/abstractions/installSerwist.ts +0 -28
  178. package/src/abstractions/navigationPreload.ts +0 -64
  179. package/src/abstractions/registerRuntimeCaching.ts +0 -17
  180. package/src/abstractions/types.ts +0 -29
  181. package/src/index.plugins.ts +0 -95
  182. package/src/index.precaching.ts +0 -41
  183. package/src/index.routing.ts +0 -28
  184. package/src/index.strategies.ts +0 -26
  185. package/src/plugins/backgroundSync/BackgroundSyncPlugin.ts +0 -39
  186. package/src/plugins/backgroundSync/Queue.ts +0 -438
  187. package/src/plugins/backgroundSync/QueueDb.ts +0 -176
  188. package/src/plugins/backgroundSync/QueueStore.ts +0 -161
  189. package/src/plugins/backgroundSync/StorableRequest.ts +0 -142
  190. package/src/plugins/broadcastUpdate/BroadcastCacheUpdate.ts +0 -159
  191. package/src/plugins/broadcastUpdate/BroadcastUpdatePlugin.ts +0 -43
  192. package/src/plugins/broadcastUpdate/constants.ts +0 -12
  193. package/src/plugins/broadcastUpdate/responsesAreSame.ts +0 -48
  194. package/src/plugins/broadcastUpdate/types.ts +0 -37
  195. package/src/plugins/cacheableResponse/CacheableResponse.ts +0 -141
  196. package/src/plugins/cacheableResponse/CacheableResponsePlugin.ts +0 -46
  197. package/src/plugins/expiration/CacheExpiration.ts +0 -192
  198. package/src/plugins/expiration/ExpirationPlugin.ts +0 -297
  199. package/src/plugins/expiration/models/CacheTimestampsModel.ts +0 -184
  200. package/src/plugins/googleAnalytics/constants.ts +0 -22
  201. package/src/plugins/googleAnalytics/initialize.ts +0 -213
  202. package/src/plugins/precaching/PrecacheFallbackPlugin.ts +0 -86
  203. package/src/plugins/rangeRequests/RangeRequestsPlugin.ts +0 -39
  204. package/src/plugins/rangeRequests/createPartialResponse.ts +0 -92
  205. package/src/plugins/rangeRequests/utils/calculateEffectiveBoundaries.ts +0 -58
  206. package/src/plugins/rangeRequests/utils/parseRangeHeader.ts +0 -54
  207. package/src/precaching/PrecacheController.ts +0 -332
  208. package/src/precaching/PrecacheRoute.ts +0 -50
  209. package/src/precaching/PrecacheStrategy.ts +0 -238
  210. package/src/precaching/addPlugins.ts +0 -21
  211. package/src/precaching/addRoute.ts +0 -30
  212. package/src/precaching/cleanupOutdatedCaches.ts +0 -33
  213. package/src/precaching/createHandlerBoundToURL.ts +0 -30
  214. package/src/precaching/getCacheKeyForURL.ts +0 -33
  215. package/src/precaching/matchPrecache.ts +0 -25
  216. package/src/precaching/precache.ts +0 -31
  217. package/src/precaching/precacheAndRoute.ts +0 -27
  218. package/src/precaching/singletonPrecacheController.ts +0 -57
  219. package/src/precaching/types.ts +0 -46
  220. package/src/precaching/utils/PrecacheCacheKeyPlugin.ts +0 -36
  221. package/src/precaching/utils/PrecacheInstallReportPlugin.ts +0 -49
  222. package/src/precaching/utils/createCacheKey.ts +0 -68
  223. package/src/precaching/utils/deleteOutdatedCaches.ts +0 -40
  224. package/src/precaching/utils/generateURLVariations.ts +0 -55
  225. package/src/precaching/utils/getCacheKeyForURL.ts +0 -36
  226. package/src/precaching/utils/printCleanupDetails.ts +0 -38
  227. package/src/precaching/utils/printInstallDetails.ts +0 -53
  228. package/src/precaching/utils/removeIgnoredSearchParams.ts +0 -29
  229. package/src/routing/NavigationRoute.ts +0 -119
  230. package/src/routing/RegExpRoute.ts +0 -74
  231. package/src/routing/Route.ts +0 -68
  232. package/src/routing/Router.ts +0 -481
  233. package/src/routing/parseRoute.ts +0 -78
  234. package/src/routing/registerRoute.ts +0 -27
  235. package/src/routing/setCatchHandler.ts +0 -21
  236. package/src/routing/setDefaultHandler.ts +0 -24
  237. package/src/routing/singletonRouter.ts +0 -76
  238. package/src/routing/unregisterRoute.ts +0 -11
  239. package/src/routing/utils/constants.ts +0 -24
  240. package/src/routing/utils/normalizeHandler.ts +0 -40
  241. package/src/strategies/CacheFirst.ts +0 -87
  242. package/src/strategies/CacheOnly.ts +0 -58
  243. package/src/strategies/NetworkFirst.ts +0 -228
  244. package/src/strategies/NetworkOnly.ts +0 -96
  245. package/src/strategies/StaleWhileRevalidate.ts +0 -109
  246. package/src/strategies/Strategy.ts +0 -202
  247. package/src/strategies/StrategyHandler.ts +0 -557
  248. package/src/strategies/plugins/cacheOkAndOpaquePlugin.ts +0 -26
  249. package/src/strategies/utils/messages.ts +0 -20
@@ -1,435 +0,0 @@
1
- import { assert, logger, SerwistError, getFriendlyURL } 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 RegExpRoute extends Route {
67
- constructor(regExp, handler, method){
68
- if (process.env.NODE_ENV !== "production") {
69
- assert.isInstance(regExp, RegExp, {
70
- moduleName: "@serwist/routing",
71
- className: "RegExpRoute",
72
- funcName: "constructor",
73
- paramName: "pattern"
74
- });
75
- }
76
- const match = ({ url })=>{
77
- const result = regExp.exec(url.href);
78
- if (!result) {
79
- return;
80
- }
81
- if (url.origin !== location.origin && result.index !== 0) {
82
- if (process.env.NODE_ENV !== "production") {
83
- 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.`);
84
- }
85
- return;
86
- }
87
- return result.slice(1);
88
- };
89
- super(match, handler, method);
90
- }
91
- }
92
-
93
- const parseRoute = (capture, handler, method)=>{
94
- let route;
95
- if (typeof capture === "string") {
96
- const captureUrl = new URL(capture, location.href);
97
- if (process.env.NODE_ENV !== "production") {
98
- if (!(capture.startsWith("/") || capture.startsWith("http"))) {
99
- throw new SerwistError("invalid-string", {
100
- moduleName: "@serwist/routing",
101
- funcName: "registerRoute",
102
- paramName: "capture"
103
- });
104
- }
105
- const valueToCheck = capture.startsWith("http") ? captureUrl.pathname : capture;
106
- const wildcards = "[*:?+]";
107
- if (new RegExp(`${wildcards}`).exec(valueToCheck)) {
108
- 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.`);
109
- }
110
- }
111
- const matchCallback = ({ url })=>{
112
- if (process.env.NODE_ENV !== "production") {
113
- if (url.pathname === captureUrl.pathname && url.origin !== captureUrl.origin) {
114
- 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.`);
115
- }
116
- }
117
- return url.href === captureUrl.href;
118
- };
119
- route = new Route(matchCallback, handler, method);
120
- } else if (capture instanceof RegExp) {
121
- route = new RegExpRoute(capture, handler, method);
122
- } else if (typeof capture === "function") {
123
- route = new Route(capture, handler, method);
124
- } else if (capture instanceof Route) {
125
- route = capture;
126
- } else {
127
- throw new SerwistError("unsupported-route-type", {
128
- moduleName: "@serwist/routing",
129
- funcName: "registerRoute",
130
- paramName: "capture"
131
- });
132
- }
133
- return route;
134
- };
135
-
136
- class Router {
137
- _routes;
138
- _defaultHandlerMap;
139
- _fetchListenerHandler = null;
140
- _cacheListenerHandler = null;
141
- _catchHandler;
142
- constructor(){
143
- this._routes = new Map();
144
- this._defaultHandlerMap = new Map();
145
- }
146
- get routes() {
147
- return this._routes;
148
- }
149
- addFetchListener() {
150
- if (!this._fetchListenerHandler) {
151
- this._fetchListenerHandler = (event)=>{
152
- const { request } = event;
153
- const responsePromise = this.handleRequest({
154
- request,
155
- event
156
- });
157
- if (responsePromise) {
158
- event.respondWith(responsePromise);
159
- }
160
- };
161
- self.addEventListener("fetch", this._fetchListenerHandler);
162
- }
163
- }
164
- removeFetchListener() {
165
- if (this._fetchListenerHandler) {
166
- self.removeEventListener("fetch", this._fetchListenerHandler);
167
- this._fetchListenerHandler = null;
168
- }
169
- }
170
- addCacheListener() {
171
- if (!this._cacheListenerHandler) {
172
- this._cacheListenerHandler = (event)=>{
173
- if (event.data && event.data.type === "CACHE_URLS") {
174
- const { payload } = event.data;
175
- if (process.env.NODE_ENV !== "production") {
176
- logger.debug("Caching URLs from the window", payload.urlsToCache);
177
- }
178
- const requestPromises = Promise.all(payload.urlsToCache.map((entry)=>{
179
- if (typeof entry === "string") {
180
- entry = [
181
- entry
182
- ];
183
- }
184
- const request = new Request(...entry);
185
- return this.handleRequest({
186
- request,
187
- event
188
- });
189
- }));
190
- event.waitUntil(requestPromises);
191
- if (event.ports?.[0]) {
192
- void requestPromises.then(()=>event.ports[0].postMessage(true));
193
- }
194
- }
195
- };
196
- self.addEventListener("message", this._cacheListenerHandler);
197
- }
198
- }
199
- removeCacheListener() {
200
- if (this._cacheListenerHandler) {
201
- self.removeEventListener("message", this._cacheListenerHandler);
202
- }
203
- }
204
- handleRequest({ request, event }) {
205
- if (process.env.NODE_ENV !== "production") {
206
- assert.isInstance(request, Request, {
207
- moduleName: "@serwist/routing",
208
- className: "Router",
209
- funcName: "handleRequest",
210
- paramName: "options.request"
211
- });
212
- }
213
- const url = new URL(request.url, location.href);
214
- if (!url.protocol.startsWith("http")) {
215
- if (process.env.NODE_ENV !== "production") {
216
- logger.debug("Router only supports URLs that start with 'http'.");
217
- }
218
- return;
219
- }
220
- const sameOrigin = url.origin === location.origin;
221
- const { params, route } = this.findMatchingRoute({
222
- event,
223
- request,
224
- sameOrigin,
225
- url
226
- });
227
- let handler = route?.handler;
228
- const debugMessages = [];
229
- if (process.env.NODE_ENV !== "production") {
230
- if (handler) {
231
- debugMessages.push([
232
- "Found a route to handle this request:",
233
- route
234
- ]);
235
- if (params) {
236
- debugMessages.push([
237
- `Passing the following params to the route's handler:`,
238
- params
239
- ]);
240
- }
241
- }
242
- }
243
- const method = request.method;
244
- if (!handler && this._defaultHandlerMap.has(method)) {
245
- if (process.env.NODE_ENV !== "production") {
246
- debugMessages.push(`Failed to find a matching route. Falling back to the default handler for ${method}.`);
247
- }
248
- handler = this._defaultHandlerMap.get(method);
249
- }
250
- if (!handler) {
251
- if (process.env.NODE_ENV !== "production") {
252
- logger.debug(`No route found for: ${getFriendlyURL(url)}`);
253
- }
254
- return;
255
- }
256
- if (process.env.NODE_ENV !== "production") {
257
- logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);
258
- for (const msg of debugMessages){
259
- if (Array.isArray(msg)) {
260
- logger.log(...msg);
261
- } else {
262
- logger.log(msg);
263
- }
264
- }
265
- logger.groupEnd();
266
- }
267
- let responsePromise;
268
- try {
269
- responsePromise = handler.handle({
270
- url,
271
- request,
272
- event,
273
- params
274
- });
275
- } catch (err) {
276
- responsePromise = Promise.reject(err);
277
- }
278
- const catchHandler = route?.catchHandler;
279
- if (responsePromise instanceof Promise && (this._catchHandler || catchHandler)) {
280
- responsePromise = responsePromise.catch(async (err)=>{
281
- if (catchHandler) {
282
- if (process.env.NODE_ENV !== "production") {
283
- logger.groupCollapsed(`Error thrown when responding to: ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`);
284
- logger.error("Error thrown by:", route);
285
- logger.error(err);
286
- logger.groupEnd();
287
- }
288
- try {
289
- return await catchHandler.handle({
290
- url,
291
- request,
292
- event,
293
- params
294
- });
295
- } catch (catchErr) {
296
- if (catchErr instanceof Error) {
297
- err = catchErr;
298
- }
299
- }
300
- }
301
- if (this._catchHandler) {
302
- if (process.env.NODE_ENV !== "production") {
303
- logger.groupCollapsed(`Error thrown when responding to: ${getFriendlyURL(url)}. Falling back to global Catch Handler.`);
304
- logger.error("Error thrown by:", route);
305
- logger.error(err);
306
- logger.groupEnd();
307
- }
308
- return this._catchHandler.handle({
309
- url,
310
- request,
311
- event
312
- });
313
- }
314
- throw err;
315
- });
316
- }
317
- return responsePromise;
318
- }
319
- findMatchingRoute({ url, sameOrigin, request, event }) {
320
- const routes = this._routes.get(request.method) || [];
321
- for (const route of routes){
322
- let params;
323
- const matchResult = route.match({
324
- url,
325
- sameOrigin,
326
- request,
327
- event
328
- });
329
- if (matchResult) {
330
- if (process.env.NODE_ENV !== "production") {
331
- if (matchResult instanceof Promise) {
332
- logger.warn(`While routing ${getFriendlyURL(url)}, an async matchCallback function was used. Please convert the following route to use a synchronous matchCallback function:`, route);
333
- }
334
- }
335
- params = matchResult;
336
- if (Array.isArray(params) && params.length === 0) {
337
- params = undefined;
338
- } else if (matchResult.constructor === Object && Object.keys(matchResult).length === 0) {
339
- params = undefined;
340
- } else if (typeof matchResult === "boolean") {
341
- params = undefined;
342
- }
343
- return {
344
- route,
345
- params
346
- };
347
- }
348
- }
349
- return {};
350
- }
351
- setDefaultHandler(handler, method = defaultMethod) {
352
- this._defaultHandlerMap.set(method, normalizeHandler(handler));
353
- }
354
- setCatchHandler(handler) {
355
- this._catchHandler = normalizeHandler(handler);
356
- }
357
- registerCapture(capture, handler, method) {
358
- const route = parseRoute(capture, handler, method);
359
- this.registerRoute(route);
360
- return route;
361
- }
362
- registerRoute(route) {
363
- if (process.env.NODE_ENV !== "production") {
364
- assert.isType(route, "object", {
365
- moduleName: "@serwist/routing",
366
- className: "Router",
367
- funcName: "registerRoute",
368
- paramName: "route"
369
- });
370
- assert.hasMethod(route, "match", {
371
- moduleName: "@serwist/routing",
372
- className: "Router",
373
- funcName: "registerRoute",
374
- paramName: "route"
375
- });
376
- assert.isType(route.handler, "object", {
377
- moduleName: "@serwist/routing",
378
- className: "Router",
379
- funcName: "registerRoute",
380
- paramName: "route"
381
- });
382
- assert.hasMethod(route.handler, "handle", {
383
- moduleName: "@serwist/routing",
384
- className: "Router",
385
- funcName: "registerRoute",
386
- paramName: "route.handler"
387
- });
388
- assert.isType(route.method, "string", {
389
- moduleName: "@serwist/routing",
390
- className: "Router",
391
- funcName: "registerRoute",
392
- paramName: "route.method"
393
- });
394
- }
395
- if (!this._routes.has(route.method)) {
396
- this._routes.set(route.method, []);
397
- }
398
- this._routes.get(route.method).push(route);
399
- }
400
- unregisterRoute(route) {
401
- if (!this._routes.has(route.method)) {
402
- throw new SerwistError("unregister-route-but-not-found-with-method", {
403
- method: route.method
404
- });
405
- }
406
- const routeIndex = this._routes.get(route.method).indexOf(route);
407
- if (routeIndex > -1) {
408
- this._routes.get(route.method).splice(routeIndex, 1);
409
- } else {
410
- throw new SerwistError("unregister-route-route-not-registered");
411
- }
412
- }
413
- }
414
-
415
- let defaultRouter = undefined;
416
- const getSingletonRouter = ()=>{
417
- if (!defaultRouter) {
418
- defaultRouter = new Router();
419
- defaultRouter.addFetchListener();
420
- defaultRouter.addCacheListener();
421
- }
422
- return defaultRouter;
423
- };
424
- const setSingletonRouter = (router)=>{
425
- if (defaultRouter) {
426
- defaultRouter.removeFetchListener();
427
- defaultRouter.removeCacheListener();
428
- }
429
- defaultRouter = router;
430
- defaultRouter.addFetchListener();
431
- defaultRouter.addCacheListener();
432
- return defaultRouter;
433
- };
434
-
435
- export { Route as R, RegExpRoute as a, Router as b, getSingletonRouter as g, parseRoute as p, setSingletonRouter as s };
@@ -1,41 +0,0 @@
1
- import { BackgroundSyncPlugin } from "./plugins/backgroundSync/BackgroundSyncPlugin.js";
2
- import type { QueueEntry as BackgroundSyncQueueEntry, QueueOptions as BackgroundSyncQueueOptions } from "./plugins/backgroundSync/Queue.js";
3
- import { Queue as BackgroundSyncQueue } from "./plugins/backgroundSync/Queue.js";
4
- import { QueueStore as BackgroundSyncQueueStore } from "./plugins/backgroundSync/QueueStore.js";
5
- import { StorableRequest } from "./plugins/backgroundSync/StorableRequest.js";
6
- import { BroadcastCacheUpdate } from "./plugins/broadcastUpdate/BroadcastCacheUpdate.js";
7
- import { BroadcastUpdatePlugin } from "./plugins/broadcastUpdate/BroadcastUpdatePlugin.js";
8
- import { CACHE_UPDATED_MESSAGE_META as BROADCAST_UPDATE_MESSAGE_META, CACHE_UPDATED_MESSAGE_TYPE as BROADCAST_UPDATE_MESSAGE_TYPE, defaultHeadersToCheck as BROADCAST_UPDATE_DEFAULT_HEADERS } from "./plugins/broadcastUpdate/constants.js";
9
- import { responsesAreSame } from "./plugins/broadcastUpdate/responsesAreSame.js";
10
- import type { BroadcastCacheUpdateOptions, BroadcastMessage, BroadcastPayload, BroadcastPayloadGenerator } from "./plugins/broadcastUpdate/types.js";
11
- import type { CacheableResponseOptions } from "./plugins/cacheableResponse/CacheableResponse.js";
12
- import { CacheableResponse } from "./plugins/cacheableResponse/CacheableResponse.js";
13
- import { CacheableResponsePlugin } from "./plugins/cacheableResponse/CacheableResponsePlugin.js";
14
- import { CacheExpiration } from "./plugins/expiration/CacheExpiration.js";
15
- import type { ExpirationPluginOptions } from "./plugins/expiration/ExpirationPlugin.js";
16
- import { ExpirationPlugin } from "./plugins/expiration/ExpirationPlugin.js";
17
- import type { GoogleAnalyticsInitializeOptions } from "./plugins/googleAnalytics/initialize.js";
18
- import { initialize as initializeGoogleAnalytics } from "./plugins/googleAnalytics/initialize.js";
19
- import type { PrecacheFallbackEntry, PrecacheFallbackPluginOptions } from "./plugins/precaching/PrecacheFallbackPlugin.js";
20
- import { PrecacheFallbackPlugin } from "./plugins/precaching/PrecacheFallbackPlugin.js";
21
- import { RangeRequestsPlugin } from "./plugins/rangeRequests/RangeRequestsPlugin.js";
22
- import { createPartialResponse } from "./plugins/rangeRequests/createPartialResponse.js";
23
- interface SyncManager {
24
- getTags(): Promise<string[]>;
25
- register(tag: string): Promise<void>;
26
- }
27
- declare global {
28
- interface ServiceWorkerRegistration {
29
- readonly sync: SyncManager;
30
- }
31
- interface SyncEvent extends ExtendableEvent {
32
- readonly lastChance: boolean;
33
- readonly tag: string;
34
- }
35
- interface ServiceWorkerGlobalScopeEventMap {
36
- sync: SyncEvent;
37
- }
38
- }
39
- export { BackgroundSyncPlugin, BackgroundSyncQueue, BackgroundSyncQueueStore, StorableRequest, BroadcastCacheUpdate, BroadcastUpdatePlugin, responsesAreSame, BROADCAST_UPDATE_MESSAGE_META, BROADCAST_UPDATE_MESSAGE_TYPE, BROADCAST_UPDATE_DEFAULT_HEADERS, CacheableResponse, CacheableResponsePlugin, CacheExpiration, ExpirationPlugin, PrecacheFallbackPlugin, createPartialResponse, RangeRequestsPlugin, initializeGoogleAnalytics, };
40
- export type { BackgroundSyncQueueOptions, BackgroundSyncQueueEntry, BroadcastCacheUpdateOptions, BroadcastPayload, BroadcastPayloadGenerator, BroadcastMessage, CacheableResponseOptions, ExpirationPluginOptions, PrecacheFallbackEntry, PrecacheFallbackPluginOptions, GoogleAnalyticsInitializeOptions, };
41
- //# sourceMappingURL=index.plugins.d.ts.map
@@ -1 +0,0 @@
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"}