@qwik.dev/router 2.0.0-alpha.9 → 2.0.0-beta.10

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 (159) hide show
  1. package/README.md +1 -1
  2. package/adapters/static/vite.d.ts +1 -1
  3. package/lib/adapters/azure-swa/vite/index-BqUeglYs.cjs +1 -0
  4. package/lib/adapters/azure-swa/vite/index-CBIchDYq.js +651 -0
  5. package/lib/adapters/azure-swa/vite/index-ClHGw5z1.js +6 -0
  6. package/lib/adapters/azure-swa/vite/index-CrwlB95_.js +22 -0
  7. package/lib/adapters/azure-swa/vite/index-DTIOTwZo.cjs +11 -0
  8. package/lib/adapters/azure-swa/vite/index-vQuPcef3.cjs +1 -0
  9. package/lib/adapters/azure-swa/vite/index.cjs +5 -96
  10. package/lib/adapters/azure-swa/vite/index.d.ts +13 -13
  11. package/lib/adapters/azure-swa/vite/index.mjs +201 -26
  12. package/lib/adapters/bun-server/vite/index-BqUeglYs.cjs +1 -0
  13. package/lib/adapters/bun-server/vite/index-CBIchDYq.js +651 -0
  14. package/lib/adapters/bun-server/vite/index-ClHGw5z1.js +6 -0
  15. package/lib/adapters/bun-server/vite/index-CrwlB95_.js +22 -0
  16. package/lib/adapters/bun-server/vite/index-DTIOTwZo.cjs +11 -0
  17. package/lib/adapters/bun-server/vite/index-vQuPcef3.cjs +1 -0
  18. package/lib/adapters/bun-server/vite/index.cjs +5 -50
  19. package/lib/adapters/bun-server/vite/index.d.ts +14 -14
  20. package/lib/adapters/bun-server/vite/index.mjs +196 -12
  21. package/lib/adapters/cloud-run/vite/index-BqUeglYs.cjs +1 -0
  22. package/lib/adapters/cloud-run/vite/index-CBIchDYq.js +651 -0
  23. package/lib/adapters/cloud-run/vite/index-ClHGw5z1.js +6 -0
  24. package/lib/adapters/cloud-run/vite/index-CrwlB95_.js +22 -0
  25. package/lib/adapters/cloud-run/vite/index-DTIOTwZo.cjs +11 -0
  26. package/lib/adapters/cloud-run/vite/index-vQuPcef3.cjs +1 -0
  27. package/lib/adapters/cloud-run/vite/index.cjs +5 -47
  28. package/lib/adapters/cloud-run/vite/index.d.ts +13 -13
  29. package/lib/adapters/cloud-run/vite/index.mjs +195 -11
  30. package/lib/adapters/cloudflare-pages/vite/index-BIeHg2Cj.cjs +5 -0
  31. package/lib/adapters/cloudflare-pages/vite/index-C455V8_A.cjs +1 -0
  32. package/lib/adapters/cloudflare-pages/vite/index-ClHGw5z1.js +6 -0
  33. package/lib/adapters/cloudflare-pages/vite/index-D3HITboM.js +645 -0
  34. package/lib/adapters/cloudflare-pages/vite/index-DKcVHRBy.cjs +11 -0
  35. package/lib/adapters/cloudflare-pages/vite/index-DwovcBp3.js +22 -0
  36. package/lib/adapters/cloudflare-pages/vite/index-bogwy7wh.js +250 -0
  37. package/lib/adapters/cloudflare-pages/vite/index-vQuPcef3.cjs +1 -0
  38. package/lib/adapters/cloudflare-pages/vite/index.cjs +1 -115
  39. package/lib/adapters/cloudflare-pages/vite/index.d.ts +27 -27
  40. package/lib/adapters/cloudflare-pages/vite/index.mjs +4 -78
  41. package/lib/adapters/deno-server/vite/index-BqUeglYs.cjs +1 -0
  42. package/lib/adapters/deno-server/vite/index-CBIchDYq.js +651 -0
  43. package/lib/adapters/deno-server/vite/index-ClHGw5z1.js +6 -0
  44. package/lib/adapters/deno-server/vite/index-CrwlB95_.js +22 -0
  45. package/lib/adapters/deno-server/vite/index-DTIOTwZo.cjs +11 -0
  46. package/lib/adapters/deno-server/vite/index-vQuPcef3.cjs +1 -0
  47. package/lib/adapters/deno-server/vite/index.cjs +5 -62
  48. package/lib/adapters/deno-server/vite/index.d.ts +14 -14
  49. package/lib/adapters/deno-server/vite/index.mjs +198 -14
  50. package/lib/adapters/netlify-edge/vite/index-BqUeglYs.cjs +1 -0
  51. package/lib/adapters/netlify-edge/vite/index-CBIchDYq.js +651 -0
  52. package/lib/adapters/netlify-edge/vite/index-ClHGw5z1.js +6 -0
  53. package/lib/adapters/netlify-edge/vite/index-CrwlB95_.js +22 -0
  54. package/lib/adapters/netlify-edge/vite/index-DTIOTwZo.cjs +11 -0
  55. package/lib/adapters/netlify-edge/vite/index-vQuPcef3.cjs +1 -0
  56. package/lib/adapters/netlify-edge/vite/index.cjs +6 -129
  57. package/lib/adapters/netlify-edge/vite/index.d.ts +44 -44
  58. package/lib/adapters/netlify-edge/vite/index.mjs +240 -60
  59. package/lib/adapters/node-server/vite/index-BqUeglYs.cjs +1 -0
  60. package/lib/adapters/node-server/vite/index-CBIchDYq.js +651 -0
  61. package/lib/adapters/node-server/vite/index-ClHGw5z1.js +6 -0
  62. package/lib/adapters/node-server/vite/index-CrwlB95_.js +22 -0
  63. package/lib/adapters/node-server/vite/index-DTIOTwZo.cjs +11 -0
  64. package/lib/adapters/node-server/vite/index-vQuPcef3.cjs +1 -0
  65. package/lib/adapters/node-server/vite/index.cjs +5 -50
  66. package/lib/adapters/node-server/vite/index.d.ts +14 -14
  67. package/lib/adapters/node-server/vite/index.mjs +196 -12
  68. package/lib/adapters/shared/vite/index-BqUeglYs.cjs +1 -0
  69. package/lib/adapters/shared/vite/index-CBIchDYq.js +651 -0
  70. package/lib/adapters/shared/vite/index-ClHGw5z1.js +6 -0
  71. package/lib/adapters/shared/vite/index-CrwlB95_.js +22 -0
  72. package/lib/adapters/shared/vite/index-DTIOTwZo.cjs +11 -0
  73. package/lib/adapters/shared/vite/index-vQuPcef3.cjs +1 -0
  74. package/lib/adapters/shared/vite/index.cjs +5 -371
  75. package/lib/adapters/shared/vite/index.d.ts +108 -114
  76. package/lib/adapters/shared/vite/index.mjs +158 -288
  77. package/lib/adapters/ssg/vite/index-BqUeglYs.cjs +1 -0
  78. package/lib/adapters/ssg/vite/index-CBIchDYq.js +651 -0
  79. package/lib/adapters/ssg/vite/index-ClHGw5z1.js +6 -0
  80. package/lib/adapters/ssg/vite/index-CrwlB95_.js +22 -0
  81. package/lib/adapters/ssg/vite/index-DTIOTwZo.cjs +11 -0
  82. package/lib/adapters/ssg/vite/index-vQuPcef3.cjs +1 -0
  83. package/lib/adapters/ssg/vite/index.cjs +5 -0
  84. package/lib/adapters/ssg/vite/index.d.ts +13 -0
  85. package/lib/adapters/ssg/vite/index.mjs +201 -0
  86. package/lib/adapters/vercel-edge/vite/index-BqUeglYs.cjs +1 -0
  87. package/lib/adapters/vercel-edge/vite/index-CBIchDYq.js +651 -0
  88. package/lib/adapters/vercel-edge/vite/index-ClHGw5z1.js +6 -0
  89. package/lib/adapters/vercel-edge/vite/index-CrwlB95_.js +22 -0
  90. package/lib/adapters/vercel-edge/vite/index-DTIOTwZo.cjs +11 -0
  91. package/lib/adapters/vercel-edge/vite/index-vQuPcef3.cjs +1 -0
  92. package/lib/adapters/vercel-edge/vite/index.cjs +5 -118
  93. package/lib/adapters/vercel-edge/vite/index.d.ts +45 -45
  94. package/lib/adapters/vercel-edge/vite/index.mjs +230 -51
  95. package/lib/index.d.ts +1000 -810
  96. package/lib/index.qwik.cjs +438 -203
  97. package/lib/index.qwik.mjs +440 -205
  98. package/lib/middleware/aws-lambda/index.cjs +1 -0
  99. package/lib/middleware/aws-lambda/index.d.ts +49 -48
  100. package/lib/middleware/aws-lambda/index.mjs +27 -41
  101. package/lib/middleware/azure-swa/index.cjs +1 -0
  102. package/lib/middleware/azure-swa/index.d.ts +28 -28
  103. package/lib/middleware/azure-swa/index.mjs +46 -269
  104. package/lib/middleware/bun/index.cjs +1 -0
  105. package/lib/middleware/bun/index.d.ts +35 -35
  106. package/lib/middleware/bun/index.mjs +68 -120
  107. package/lib/middleware/cloudflare-pages/index.cjs +1 -0
  108. package/lib/middleware/cloudflare-pages/index.d.ts +35 -35
  109. package/lib/middleware/cloudflare-pages/index.mjs +48 -80
  110. package/lib/middleware/deno/index.cjs +1 -0
  111. package/lib/middleware/deno/index.d.ts +47 -47
  112. package/lib/middleware/deno/index.mjs +63 -110
  113. package/lib/middleware/firebase/index.cjs +1 -0
  114. package/lib/middleware/firebase/index.d.ts +26 -26
  115. package/lib/middleware/firebase/index.mjs +16 -28
  116. package/lib/middleware/netlify-edge/index.cjs +1 -0
  117. package/lib/middleware/netlify-edge/index.d.ts +27 -27
  118. package/lib/middleware/netlify-edge/index.mjs +36 -64
  119. package/lib/middleware/node/index.cjs +1 -314
  120. package/lib/middleware/node/index.d.ts +64 -64
  121. package/lib/middleware/node/index.mjs +116 -198
  122. package/lib/middleware/request-handler/index.cjs +11 -1538
  123. package/lib/middleware/request-handler/index.d.ts +711 -676
  124. package/lib/middleware/request-handler/index.mjs +895 -1281
  125. package/lib/middleware/vercel-edge/index.cjs +1 -0
  126. package/lib/middleware/vercel-edge/index.d.ts +26 -26
  127. package/lib/middleware/vercel-edge/index.mjs +47 -82
  128. package/lib/modules.d.ts +4 -12
  129. package/lib/service-worker.cjs +1 -267
  130. package/lib/service-worker.d.ts +15 -4
  131. package/lib/service-worker.mjs +3 -263
  132. package/lib/ssg/deno.cjs +1 -0
  133. package/lib/ssg/deno.mjs +6 -0
  134. package/lib/ssg/index-CBIchDYq.js +651 -0
  135. package/lib/ssg/index-ClHGw5z1.js +6 -0
  136. package/lib/ssg/index-DTIOTwZo.cjs +11 -0
  137. package/lib/ssg/index-vQuPcef3.cjs +1 -0
  138. package/lib/ssg/index.cjs +1 -0
  139. package/lib/{static → ssg}/index.d.ts +96 -96
  140. package/lib/ssg/index.mjs +22 -0
  141. package/lib/ssg/node.cjs +11 -0
  142. package/lib/ssg/node.mjs +651 -0
  143. package/lib/vite/index.cjs +29 -27484
  144. package/lib/vite/index.d.ts +170 -154
  145. package/lib/vite/index.mjs +1422 -27288
  146. package/modules.d.ts +4 -12
  147. package/package.json +51 -40
  148. package/ssg.d.ts +2 -0
  149. package/static.d.ts +1 -1
  150. package/lib/adapters/static/vite/index.cjs +0 -361
  151. package/lib/adapters/static/vite/index.d.ts +0 -10
  152. package/lib/adapters/static/vite/index.mjs +0 -324
  153. package/lib/static/deno.mjs +0 -8
  154. package/lib/static/index.cjs +0 -67
  155. package/lib/static/index.mjs +0 -48
  156. package/lib/static/node.cjs +0 -1124
  157. package/lib/static/node.mjs +0 -1086
  158. package/middleware/request-handler/generated/not-found-paths.ts +0 -7
  159. package/middleware/request-handler/generated/static-paths.ts +0 -35
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("@qwik.dev/core/server"),o=require("@qwik.dev/router/middleware/request-handler"),g="x-vercel-ip-country",_="x-real-ip",v="__vdpl",y="VERCEL_SKEW_PROTECTION_ENABLED",S="VERCEL_DEPLOYMENT_ID",T="BASE_URL";function l(n){n.qwikCityPlan&&!n.qwikRouterConfig&&(console.warn("qwikCityPlan is deprecated. Simply remove it."),n.qwikRouterConfig=n.qwikCityPlan),n.manifest&&w.setServerPlatform(n.manifest);async function d(e){try{const t=new URL(e.url);if(o.isStaticPath(e.method,t))return new Response(null,{headers:{"x-middleware-next":"1"}});const E=globalThis.process,s={mode:"server",locale:void 0,url:t,request:e,env:{get(r){return E.env[r]}},getWritableStream:(r,a,c,h)=>{const{readable:R,writable:m}=new TransformStream;if(s.env.get(y)){const C=s.env.get(S)||"",f=s.env.get(T)||"/";e.headers.has("Sec-Fetch-Dest")&&c.set(v,C,{path:f,secure:!0,sameSite:!0,httpOnly:!0})}const p=new Response(R,{status:r,headers:o.mergeHeadersCookies(a,c)});return h(p),m},platform:{},getClientConn:()=>({ip:e.headers.get(_)??void 0,country:e.headers.get(g)??void 0})},i=await o.requestHandler(s,n);if(i){i.completion.then(a=>{a&&console.error(a)});const r=await i.response;if(r)return r}const u=!e.headers.get("accept")?.includes("text/html")||o.isStaticPath(e.method||"GET",t)?"Not Found":o.getNotFound(t.pathname);return new Response(u,{status:404,headers:{"Content-Type":"text/html; charset=utf-8","X-Not-Found":t.pathname}})}catch(t){return console.error(t),new Response(String(t||"Error"),{status:500,headers:{"Content-Type":"text/plain; charset=utf-8","X-Error":"vercel-edge"}})}}return d}const L=l;exports.createQwikCity=L;exports.createQwikRouter=l;
@@ -1,26 +1,26 @@
1
- import type { ServerRenderOptions } from '@qwik.dev/router/middleware/request-handler';
2
-
3
- /**
4
- * @deprecated Use `createQwikRouter` instead. Will be removed in V3
5
- * @public
6
- */
7
- export declare const createQwikCity: typeof createQwikRouter;
8
-
9
- /** @public */
10
- export declare function createQwikRouter(opts: QwikRouterVercelEdgeOptions): (request: Request) => Promise<Response>;
11
-
12
- /** @public */
13
- export declare interface PlatformVercel {
14
- }
15
-
16
- /**
17
- * @deprecated Use `QwikRouterVercelEdgeOptions` instead. Will be removed in V3
18
- * @public
19
- */
20
- export declare type QwikCityVercelEdgeOptions = QwikRouterVercelEdgeOptions;
21
-
22
- /** @public */
23
- export declare interface QwikRouterVercelEdgeOptions extends ServerRenderOptions {
24
- }
25
-
26
- export { }
1
+ import type { ServerRenderOptions } from '@qwik.dev/router/middleware/request-handler';
2
+
3
+ /**
4
+ * @deprecated Use `createQwikRouter` instead. Will be removed in V3
5
+ * @public
6
+ */
7
+ export declare const createQwikCity: typeof createQwikRouter;
8
+
9
+ /** @public */
10
+ export declare function createQwikRouter(opts: QwikRouterVercelEdgeOptions): (request: Request) => Promise<Response>;
11
+
12
+ /** @public */
13
+ export declare interface PlatformVercel {
14
+ }
15
+
16
+ /**
17
+ * @deprecated Use `QwikRouterVercelEdgeOptions` instead. Will be removed in V3
18
+ * @public
19
+ */
20
+ export declare type QwikCityVercelEdgeOptions = QwikRouterVercelEdgeOptions;
21
+
22
+ /** @public */
23
+ export declare interface QwikRouterVercelEdgeOptions extends ServerRenderOptions {
24
+ }
25
+
26
+ export { }
@@ -1,109 +1,74 @@
1
- // packages/qwik-router/src/middleware/vercel-edge/index.ts
2
- import { getNotFound } from "@qwik-router-not-found-paths";
3
- import { isStaticPath } from "@qwik-router-static-paths";
4
- import { _deserialize, _serialize, _verifySerializable } from "@qwik.dev/core/internal";
5
- import { setServerPlatform } from "@qwik.dev/core/server";
6
- import { mergeHeadersCookies, requestHandler } from "../request-handler/index.mjs";
7
- var COUNTRY_HEADER_NAME = "x-vercel-ip-country";
8
- var IP_HEADER_NAME = "x-real-ip";
9
- var VERCEL_COOKIE = "__vdpl";
10
- var VERCEL_SKEW_PROTECTION_ENABLED = "VERCEL_SKEW_PROTECTION_ENABLED";
11
- var VERCEL_DEPLOYMENT_ID = "VERCEL_DEPLOYMENT_ID";
12
- var BASE_URL = "BASE_URL";
13
- function createQwikRouter(opts) {
14
- if (opts.qwikCityPlan && !opts.qwikRouterConfig) {
15
- console.warn("qwikCityPlan is deprecated. Use qwikRouterConfig instead.");
16
- opts.qwikRouterConfig = opts.qwikCityPlan;
17
- } else if (!opts.qwikRouterConfig) {
18
- throw new Error("qwikRouterConfig is required.");
19
- }
20
- const qwikSerializer = {
21
- _deserialize,
22
- _serialize,
23
- _verifySerializable
24
- };
25
- if (opts.manifest) {
26
- setServerPlatform(opts.manifest);
27
- }
28
- async function onVercelEdgeRequest(request) {
1
+ import { setServerPlatform as C } from "@qwik.dev/core/server";
2
+ import { isStaticPath as c, mergeHeadersCookies as _, requestHandler as w, getNotFound as g } from "@qwik.dev/router/middleware/request-handler";
3
+ const v = "x-vercel-ip-country", y = "x-real-ip", L = "__vdpl", N = "VERCEL_SKEW_PROTECTION_ENABLED", S = "VERCEL_DEPLOYMENT_ID", T = "BASE_URL";
4
+ function O(n) {
5
+ n.qwikCityPlan && !n.qwikRouterConfig && (console.warn("qwikCityPlan is deprecated. Simply remove it."), n.qwikRouterConfig = n.qwikCityPlan), n.manifest && C(n.manifest);
6
+ async function l(e) {
29
7
  try {
30
- const url = new URL(request.url);
31
- if (isStaticPath(request.method, url)) {
8
+ const t = new URL(e.url);
9
+ if (c(e.method, t))
32
10
  return new Response(null, {
33
11
  headers: {
34
12
  "x-middleware-next": "1"
35
13
  }
36
14
  });
37
- }
38
- const p = (() => globalThis.process)();
39
- const serverRequestEv = {
15
+ const E = globalThis.process, o = {
40
16
  mode: "server",
41
17
  locale: void 0,
42
- url,
43
- request,
18
+ url: t,
19
+ request: e,
44
20
  env: {
45
- get(key) {
46
- return p.env[key];
21
+ get(r) {
22
+ return E.env[r];
47
23
  }
48
24
  },
49
- getWritableStream: (status, headers, cookies, resolve) => {
50
- const { readable, writable } = new TransformStream();
51
- if (serverRequestEv.env.get(VERCEL_SKEW_PROTECTION_ENABLED)) {
52
- const deploymentId = serverRequestEv.env.get(VERCEL_DEPLOYMENT_ID) || "";
53
- const baseUrl = serverRequestEv.env.get(BASE_URL) || "/";
54
- if (request.headers.has("Sec-Fetch-Dest")) {
55
- cookies.set(VERCEL_COOKIE, deploymentId, {
56
- path: baseUrl,
57
- secure: true,
58
- sameSite: true,
59
- httpOnly: true
60
- });
61
- }
25
+ getWritableStream: (r, s, i, u) => {
26
+ const { readable: m, writable: h } = new TransformStream();
27
+ if (o.env.get(N)) {
28
+ const R = o.env.get(S) || "", f = o.env.get(T) || "/";
29
+ e.headers.has("Sec-Fetch-Dest") && i.set(L, R, {
30
+ path: f,
31
+ secure: !0,
32
+ sameSite: !0,
33
+ httpOnly: !0
34
+ });
62
35
  }
63
- const response = new Response(readable, {
64
- status,
65
- headers: mergeHeadersCookies(headers, cookies)
36
+ const p = new Response(m, {
37
+ status: r,
38
+ headers: _(s, i)
66
39
  });
67
- resolve(response);
68
- return writable;
40
+ return u(p), h;
69
41
  },
70
42
  platform: {},
71
- getClientConn: () => {
72
- return {
73
- ip: request.headers.get(IP_HEADER_NAME) ?? void 0,
74
- country: request.headers.get(COUNTRY_HEADER_NAME) ?? void 0
75
- };
76
- }
77
- };
78
- const handledResponse = await requestHandler(serverRequestEv, opts, qwikSerializer);
79
- if (handledResponse) {
80
- handledResponse.completion.then((v) => {
81
- if (v) {
82
- console.error(v);
83
- }
43
+ getClientConn: () => ({
44
+ ip: e.headers.get(y) ?? void 0,
45
+ country: e.headers.get(v) ?? void 0
46
+ })
47
+ }, a = await w(o, n);
48
+ if (a) {
49
+ a.completion.then((s) => {
50
+ s && console.error(s);
84
51
  });
85
- const response = await handledResponse.response;
86
- if (response) {
87
- return response;
88
- }
52
+ const r = await a.response;
53
+ if (r)
54
+ return r;
89
55
  }
90
- const notFoundHtml = isStaticPath(request.method || "GET", url) ? "Not Found" : getNotFound(url.pathname);
91
- return new Response(notFoundHtml, {
56
+ const d = !e.headers.get("accept")?.includes("text/html") || c(e.method || "GET", t) ? "Not Found" : g(t.pathname);
57
+ return new Response(d, {
92
58
  status: 404,
93
- headers: { "Content-Type": "text/html; charset=utf-8", "X-Not-Found": url.pathname }
59
+ headers: { "Content-Type": "text/html; charset=utf-8", "X-Not-Found": t.pathname }
94
60
  });
95
- } catch (e) {
96
- console.error(e);
97
- return new Response(String(e || "Error"), {
61
+ } catch (t) {
62
+ return console.error(t), new Response(String(t || "Error"), {
98
63
  status: 500,
99
64
  headers: { "Content-Type": "text/plain; charset=utf-8", "X-Error": "vercel-edge" }
100
65
  });
101
66
  }
102
67
  }
103
- return onVercelEdgeRequest;
68
+ return l;
104
69
  }
105
- var createQwikCity = createQwikRouter;
70
+ const x = O;
106
71
  export {
107
- createQwikCity,
108
- createQwikRouter
72
+ x as createQwikCity,
73
+ O as createQwikRouter
109
74
  };
package/lib/modules.d.ts CHANGED
@@ -19,20 +19,12 @@ declare module '@qwik-city-plan' {
19
19
  export { default } from '@qwik-router-config';
20
20
  }
21
21
 
22
- declare module '@qwik-router-not-found-paths' {
23
- function getNotFound(_pathname: string): string;
24
- export { getNotFound };
25
- }
26
-
27
22
  declare module '@qwik-city-not-found-paths' {
28
- export * from '@qwik-router-not-found-paths';
29
- }
30
-
31
- declare module '@qwik-router-static-paths' {
32
- function isStaticPath(method: string, url: URL): boolean;
33
- export { isStaticPath };
23
+ /** @deprecated Use `getNotFound` from `@qwik.dev/router/middleware/request-handler` instead. */
24
+ export { getNotFound } from '@qwik.dev/router/middleware/request-handler';
34
25
  }
35
26
 
36
27
  declare module '@qwik-city-static-paths' {
37
- export * from '@qwik-router-static-paths';
28
+ /** @deprecated Use `isStaticPath` from `@qwik.dev/router/middleware/request-handler` instead. */
29
+ export { isStaticPath } from '@qwik.dev/router/middleware/request-handler';
38
30
  }
@@ -1,267 +1 @@
1
- 'use strict';
2
-
3
- const getCacheToDelete = (appBundles, cachedUrls) => cachedUrls.filter((url) => !appBundles.some((appBundle) => url.endsWith(appBundle[0])));
4
- const useCache = (request, response) => !!response && !hasNoCacheHeader(response);
5
- const hasNoCacheHeader = (r) => {
6
- const cacheControl = r.headers.get('Cache-Control') || '';
7
- return cacheControl.includes('no-cache') || cacheControl.includes('max-age=0');
8
- };
9
- const isAppBundleRequest = (appBundles, requestPathname) => appBundles.some((b) => requestPathname.endsWith('/' + b[0]));
10
- const getAppBundleByName = (appBundles, appBundleName) => appBundles.find((b) => b[0] === appBundleName);
11
- const getAppBundlesNamesFromIds = (appBundles, bundleIds) => bundleIds.map((bundleId) => (appBundles[bundleId] ? appBundles[bundleId][0] : null));
12
- const resolveSymbols = (appSymbols, symbolsHashes) => symbolsHashes.map((s) => appSymbols.get(s)).filter((s) => s != null);
13
- const computeAppSymbols = (appBundles) => {
14
- const appSymbols = new Map();
15
- for (const bundle of appBundles) {
16
- const hashes = bundle[2];
17
- if (hashes) {
18
- for (const hash of hashes) {
19
- appSymbols.set(hash, bundle[0]);
20
- }
21
- }
22
- }
23
- return appSymbols;
24
- };
25
-
26
- const cachedFetch = (cache, fetch, awaitingRequests, request) => new Promise((promiseResolve, promiseReject) => {
27
- const url = request.url;
28
- const awaitingRequestResolves = awaitingRequests.get(url);
29
- if (awaitingRequestResolves) {
30
- // there's already an active request happening
31
- // don't start a new request
32
- awaitingRequestResolves.push([promiseResolve, promiseReject]);
33
- }
34
- else {
35
- // there isn't already an active request for this url
36
- // start a new request
37
- const resolve = (response) => {
38
- // the response has been resolved
39
- const resolves = awaitingRequests.get(url);
40
- if (resolves) {
41
- awaitingRequests.delete(url);
42
- // loop through each of the active requests
43
- for (const [awaitingResolve] of resolves) {
44
- // clone a new response for each of the active requests
45
- awaitingResolve(response.clone());
46
- }
47
- }
48
- else {
49
- // somehow the array of awaiting requests doesn't exist
50
- promiseResolve(response.clone());
51
- }
52
- };
53
- const reject = (msg) => {
54
- const resolves = awaitingRequests.get(url);
55
- if (resolves) {
56
- awaitingRequests.delete(url);
57
- for (const [_, awaitingReject] of resolves) {
58
- awaitingReject(msg);
59
- }
60
- }
61
- else {
62
- promiseReject(msg);
63
- }
64
- };
65
- // create a new array of the request waiting to be resolved
66
- awaitingRequests.set(url, [[promiseResolve, promiseReject]]);
67
- cache
68
- .match(url)
69
- .then((cachedResponse) => {
70
- if (useCache(request, cachedResponse)) {
71
- // cached response found and user did not specifically send
72
- // a request header to NOT use the cache (wasn't a hard refresh)
73
- resolve(cachedResponse);
74
- }
75
- else {
76
- // no cached response found or user didn't want to use the cache
77
- // do a full network request
78
- return fetch(request).then(async (networkResponse) => {
79
- if (networkResponse.ok) {
80
- // network response was good, let's cache it
81
- await cache.put(url, networkResponse.clone());
82
- }
83
- resolve(networkResponse);
84
- });
85
- }
86
- })
87
- .catch((err) => {
88
- // network error, probably offline
89
- return cache.match(url).then((cachedResponse) => {
90
- if (cachedResponse) {
91
- // luckily we have a cached version, let's use it instead of an offline message
92
- resolve(cachedResponse);
93
- }
94
- else {
95
- // darn, we've got no connectivity and no cached response
96
- reject(err);
97
- }
98
- });
99
- });
100
- }
101
- });
102
-
103
- const qBuildCacheName = 'QwikBuild';
104
- const existingPrefetchUrls = new Set();
105
- const awaitingRequests = new Map();
106
- const prefetchQueue = [];
107
-
108
- const prefetchBundleNames = (appBundles, qBuildCache, fetch, baseUrl, prefetchAppBundleNames, highPriority = false) => {
109
- if (Array.isArray(prefetchAppBundleNames)) {
110
- addBundlesToPrefetchQueue(prefetchAppBundleNames, appBundles, baseUrl, highPriority);
111
- }
112
- drainQueue(qBuildCache, fetch);
113
- };
114
- function addBundlesToPrefetchQueue(bundlesToPrefetch, appBundles, baseUrl, highPriority) {
115
- for (const prefetchAppBundleName of bundlesToPrefetch) {
116
- try {
117
- const appBundle = getAppBundleByName(appBundles, prefetchAppBundleName);
118
- if (appBundle) {
119
- const importedBundleNames = getAppBundlesNamesFromIds(appBundles, appBundle[1]);
120
- const url = new URL(prefetchAppBundleName, baseUrl).href;
121
- const queueIndex = prefetchQueue.indexOf(url);
122
- if (queueIndex > -1) {
123
- // already in the queue
124
- if (highPriority) {
125
- // move to the front of the queue
126
- prefetchQueue.splice(queueIndex, 1);
127
- prefetchQueue.unshift(url);
128
- }
129
- }
130
- else {
131
- if (highPriority) {
132
- // add to the front of the queue
133
- prefetchQueue.unshift(url);
134
- }
135
- else {
136
- // add to the end of the queue
137
- prefetchQueue.push(url);
138
- }
139
- addBundlesToPrefetchQueue(importedBundleNames, appBundles, baseUrl, highPriority);
140
- }
141
- }
142
- }
143
- catch (e) {
144
- console.error(e);
145
- }
146
- }
147
- }
148
- function drainQueue(qBuildCache, fetch) {
149
- // do not prefetch more than 6 requests at a time to ensure
150
- // the browser is able to handle a user request as soon as possible
151
- while (prefetchQueue.length > 0 && awaitingRequests.size < 6) {
152
- const url = prefetchQueue.shift();
153
- if (!existingPrefetchUrls.has(url)) {
154
- const request = new Request(url);
155
- existingPrefetchUrls.add(url);
156
- cachedFetch(qBuildCache, fetch, awaitingRequests, request)
157
- .catch(() => {
158
- existingPrefetchUrls.delete(url);
159
- })
160
- .finally(() => drainQueue(qBuildCache, fetch));
161
- }
162
- }
163
- }
164
- const prefetchLinkBundles = (appBundles, libraryBundleIds, linkBundles, qBuildCache, fetch, baseUrl, linkPathnames) => {
165
- try {
166
- prefetchBundleNames(appBundles, qBuildCache, fetch, baseUrl, getAppBundlesNamesFromIds(appBundles, libraryBundleIds));
167
- }
168
- catch (e) {
169
- console.error(e);
170
- }
171
- for (const linkPathname of linkPathnames) {
172
- try {
173
- for (const linkBundle of linkBundles) {
174
- const [route, linkBundleIds] = linkBundle;
175
- console;
176
- if (route.test(linkPathname)) {
177
- prefetchBundleNames(appBundles, qBuildCache, fetch, baseUrl, getAppBundlesNamesFromIds(appBundles, linkBundleIds));
178
- break;
179
- }
180
- }
181
- }
182
- catch (e) {
183
- console.error(e);
184
- }
185
- }
186
- };
187
- const prefetchWaterfall = (appBundles, qBuildCache, fetch, requestedBuildUrl) => {
188
- try {
189
- const { baseUrl, requestedBundleName } = splitUrlToBaseAndBundle(requestedBuildUrl);
190
- prefetchBundleNames(appBundles, qBuildCache, fetch, baseUrl, [requestedBundleName], true);
191
- }
192
- catch (e) {
193
- console.error(e);
194
- }
195
- };
196
- function splitUrlToBaseAndBundle(fullUrl) {
197
- const segments = fullUrl.href.split('/');
198
- const requestedBundleName = segments[segments.length - 1];
199
- segments[segments.length - 1] = '';
200
- const baseUrl = new URL(segments.join('/'));
201
- return {
202
- baseUrl,
203
- requestedBundleName,
204
- };
205
- }
206
-
207
- const setupServiceWorkerScope = (swScope, appBundles, libraryBundleIds, linkBundles) => {
208
- const swFetch = swScope.fetch.bind(swScope);
209
- const appSymbols = computeAppSymbols(appBundles);
210
- swScope.addEventListener('activate', (event) => {
211
- (async () => {
212
- try {
213
- // Delete any other caches that are not the current SW cache name
214
- event.waitUntil(swScope.caches.keys().then((keys) => Promise.all(keys.map((key) => {
215
- if (key !== qBuildCacheName) {
216
- return caches.delete(key);
217
- }
218
- }))));
219
- // Delete old bundles
220
- const qBuildCache = await swScope.caches.open(qBuildCacheName);
221
- const cachedRequestKeys = await qBuildCache.keys();
222
- const cachedUrls = cachedRequestKeys.map((r) => r.url);
223
- const cachedRequestsToDelete = getCacheToDelete(appBundles, cachedUrls);
224
- await Promise.all(cachedRequestsToDelete.map((r) => qBuildCache.delete(r)));
225
- }
226
- catch (e) {
227
- console.error(e);
228
- }
229
- })();
230
- });
231
- swScope.addEventListener('message', async ({ data }) => {
232
- if (data.type === 'qprefetch' && typeof data.base === 'string') {
233
- const qBuildCache = await swScope.caches.open(qBuildCacheName);
234
- const baseUrl = new URL(data.base, swScope.origin);
235
- if (Array.isArray(data.links)) {
236
- prefetchLinkBundles(appBundles, libraryBundleIds, linkBundles, qBuildCache, swFetch, baseUrl, data.links);
237
- }
238
- if (Array.isArray(data.bundles)) {
239
- prefetchBundleNames(appBundles, qBuildCache, swFetch, baseUrl, data.bundles);
240
- }
241
- if (Array.isArray(data.symbols)) {
242
- prefetchBundleNames(appBundles, qBuildCache, swFetch, baseUrl, resolveSymbols(appSymbols, data.symbols));
243
- }
244
- }
245
- });
246
- swScope.addEventListener('fetch', (event) => {
247
- const request = event.request;
248
- if (request.method === 'GET') {
249
- const url = new URL(request.url);
250
- if (isAppBundleRequest(appBundles, url.pathname)) {
251
- event.respondWith(swScope.caches.open(qBuildCacheName).then((qBuildCache) => {
252
- prefetchWaterfall(appBundles, qBuildCache, swFetch, url);
253
- return cachedFetch(qBuildCache, swFetch, awaitingRequests, request);
254
- }));
255
- }
256
- }
257
- });
258
- };
259
-
260
- /** @public */
261
- const setupServiceWorker = () => {
262
- if (typeof self !== 'undefined' && typeof appBundles !== 'undefined') {
263
- setupServiceWorkerScope(self, appBundles, libraryBundleIds, linkBundles);
264
- }
265
- };
266
-
267
- exports.setupServiceWorker = setupServiceWorker;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=()=>{};exports.setupServiceWorker=e;
@@ -1,4 +1,15 @@
1
- /** @public */
2
- export declare const setupServiceWorker: () => void;
3
-
4
- export { }
1
+ /**
2
+ * @deprecated This is no longer needed, Qwik now automatically embeds preloading logic into the
3
+ * application.
4
+ *
5
+ * If your service-worker.ts file contains no custom code, you should deploy to production until
6
+ * you're sure that all users picked up the new version, then you can remove it and also remove
7
+ * the `<ServiceWorkerRegister />` component from your `Root.tsx`.
8
+ *
9
+ * If you do have custom service worker logic, you should keep the `service-worker.ts` file and
10
+ * `<ServiceWorkerRegister />` component, but remove the `setupServiceWorker()` call.
11
+ * @public
12
+ */
13
+ export declare const setupServiceWorker: () => void;
14
+
15
+ export { }