@qwik.dev/router 2.0.0-beta.11 → 2.0.0-beta.14

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 (132) hide show
  1. package/lib/adapters/azure-swa/vite/index.mjs +28 -207
  2. package/lib/adapters/bun-server/vite/index.mjs +16 -202
  3. package/lib/adapters/cloud-run/vite/index.mjs +15 -201
  4. package/lib/adapters/cloudflare-pages/vite/index.mjs +65 -6
  5. package/lib/adapters/deno-server/vite/index.mjs +18 -204
  6. package/lib/adapters/netlify-edge/vite/index.mjs +58 -246
  7. package/lib/adapters/node-server/vite/index.mjs +16 -202
  8. package/lib/adapters/shared/vite/index.d.ts +4 -4
  9. package/lib/adapters/shared/vite/index.mjs +250 -149
  10. package/lib/adapters/ssg/vite/index.mjs +12 -199
  11. package/lib/adapters/vercel-edge/vite/index.d.ts +1 -1
  12. package/lib/adapters/vercel-edge/vite/index.mjs +50 -235
  13. package/lib/chunks/error-handler.mjs +57 -0
  14. package/lib/chunks/format-error.mjs +137 -0
  15. package/lib/chunks/fs.mjs +254 -0
  16. package/lib/chunks/index.mjs +884 -0
  17. package/lib/chunks/mime-types.mjs +52 -0
  18. package/lib/chunks/routing.qwik.mjs +429 -0
  19. package/lib/chunks/types.qwik.mjs +22 -0
  20. package/lib/index.d.ts +11 -4
  21. package/lib/index.qwik.mjs +533 -1019
  22. package/lib/middleware/aws-lambda/index.mjs +38 -28
  23. package/lib/middleware/azure-swa/index.mjs +65 -48
  24. package/lib/middleware/bun/index.mjs +104 -119
  25. package/lib/middleware/cloudflare-pages/index.mjs +69 -49
  26. package/lib/middleware/deno/index.mjs +94 -114
  27. package/lib/middleware/firebase/index.mjs +26 -18
  28. package/lib/middleware/netlify-edge/index.mjs +53 -38
  29. package/lib/middleware/node/index.mjs +184 -167
  30. package/lib/middleware/request-handler/index.d.ts +22 -4
  31. package/lib/middleware/request-handler/index.mjs +1203 -877
  32. package/lib/middleware/vercel-edge/index.mjs +72 -49
  33. package/lib/service-worker/index.mjs +4 -0
  34. package/lib/ssg/index.mjs +14 -22
  35. package/lib/vite/index.d.ts +13 -7
  36. package/lib/vite/index.mjs +1609 -1217
  37. package/package.json +27 -44
  38. package/lib/adapters/azure-swa/vite/index-BqUeglYs.cjs +0 -1
  39. package/lib/adapters/azure-swa/vite/index-CBIchDYq.js +0 -651
  40. package/lib/adapters/azure-swa/vite/index-ClHGw5z1.js +0 -6
  41. package/lib/adapters/azure-swa/vite/index-CrwlB95_.js +0 -22
  42. package/lib/adapters/azure-swa/vite/index-DTIOTwZo.cjs +0 -11
  43. package/lib/adapters/azure-swa/vite/index-vQuPcef3.cjs +0 -1
  44. package/lib/adapters/azure-swa/vite/index.cjs +0 -5
  45. package/lib/adapters/bun-server/vite/index-BqUeglYs.cjs +0 -1
  46. package/lib/adapters/bun-server/vite/index-CBIchDYq.js +0 -651
  47. package/lib/adapters/bun-server/vite/index-ClHGw5z1.js +0 -6
  48. package/lib/adapters/bun-server/vite/index-CrwlB95_.js +0 -22
  49. package/lib/adapters/bun-server/vite/index-DTIOTwZo.cjs +0 -11
  50. package/lib/adapters/bun-server/vite/index-vQuPcef3.cjs +0 -1
  51. package/lib/adapters/bun-server/vite/index.cjs +0 -5
  52. package/lib/adapters/cloud-run/vite/index-BqUeglYs.cjs +0 -1
  53. package/lib/adapters/cloud-run/vite/index-CBIchDYq.js +0 -651
  54. package/lib/adapters/cloud-run/vite/index-ClHGw5z1.js +0 -6
  55. package/lib/adapters/cloud-run/vite/index-CrwlB95_.js +0 -22
  56. package/lib/adapters/cloud-run/vite/index-DTIOTwZo.cjs +0 -11
  57. package/lib/adapters/cloud-run/vite/index-vQuPcef3.cjs +0 -1
  58. package/lib/adapters/cloud-run/vite/index.cjs +0 -5
  59. package/lib/adapters/cloudflare-pages/vite/index-Bg_9YkM5.js +0 -22
  60. package/lib/adapters/cloudflare-pages/vite/index-C1aDmh1S.cjs +0 -1
  61. package/lib/adapters/cloudflare-pages/vite/index-CHT9Y93A.js +0 -254
  62. package/lib/adapters/cloudflare-pages/vite/index-Ck7KvpK1.cjs +0 -11
  63. package/lib/adapters/cloudflare-pages/vite/index-ClHGw5z1.js +0 -6
  64. package/lib/adapters/cloudflare-pages/vite/index-Cp1cjAds.js +0 -645
  65. package/lib/adapters/cloudflare-pages/vite/index-D9RL9dvJ.cjs +0 -5
  66. package/lib/adapters/cloudflare-pages/vite/index-vQuPcef3.cjs +0 -1
  67. package/lib/adapters/cloudflare-pages/vite/index.cjs +0 -1
  68. package/lib/adapters/deno-server/vite/index-BqUeglYs.cjs +0 -1
  69. package/lib/adapters/deno-server/vite/index-CBIchDYq.js +0 -651
  70. package/lib/adapters/deno-server/vite/index-ClHGw5z1.js +0 -6
  71. package/lib/adapters/deno-server/vite/index-CrwlB95_.js +0 -22
  72. package/lib/adapters/deno-server/vite/index-DTIOTwZo.cjs +0 -11
  73. package/lib/adapters/deno-server/vite/index-vQuPcef3.cjs +0 -1
  74. package/lib/adapters/deno-server/vite/index.cjs +0 -5
  75. package/lib/adapters/netlify-edge/vite/index-BqUeglYs.cjs +0 -1
  76. package/lib/adapters/netlify-edge/vite/index-CBIchDYq.js +0 -651
  77. package/lib/adapters/netlify-edge/vite/index-ClHGw5z1.js +0 -6
  78. package/lib/adapters/netlify-edge/vite/index-CrwlB95_.js +0 -22
  79. package/lib/adapters/netlify-edge/vite/index-DTIOTwZo.cjs +0 -11
  80. package/lib/adapters/netlify-edge/vite/index-vQuPcef3.cjs +0 -1
  81. package/lib/adapters/netlify-edge/vite/index.cjs +0 -6
  82. package/lib/adapters/node-server/vite/index-BqUeglYs.cjs +0 -1
  83. package/lib/adapters/node-server/vite/index-CBIchDYq.js +0 -651
  84. package/lib/adapters/node-server/vite/index-ClHGw5z1.js +0 -6
  85. package/lib/adapters/node-server/vite/index-CrwlB95_.js +0 -22
  86. package/lib/adapters/node-server/vite/index-DTIOTwZo.cjs +0 -11
  87. package/lib/adapters/node-server/vite/index-vQuPcef3.cjs +0 -1
  88. package/lib/adapters/node-server/vite/index.cjs +0 -5
  89. package/lib/adapters/shared/vite/index-BqUeglYs.cjs +0 -1
  90. package/lib/adapters/shared/vite/index-CBIchDYq.js +0 -651
  91. package/lib/adapters/shared/vite/index-ClHGw5z1.js +0 -6
  92. package/lib/adapters/shared/vite/index-CrwlB95_.js +0 -22
  93. package/lib/adapters/shared/vite/index-DTIOTwZo.cjs +0 -11
  94. package/lib/adapters/shared/vite/index-vQuPcef3.cjs +0 -1
  95. package/lib/adapters/shared/vite/index.cjs +0 -5
  96. package/lib/adapters/ssg/vite/index-BqUeglYs.cjs +0 -1
  97. package/lib/adapters/ssg/vite/index-CBIchDYq.js +0 -651
  98. package/lib/adapters/ssg/vite/index-ClHGw5z1.js +0 -6
  99. package/lib/adapters/ssg/vite/index-CrwlB95_.js +0 -22
  100. package/lib/adapters/ssg/vite/index-DTIOTwZo.cjs +0 -11
  101. package/lib/adapters/ssg/vite/index-vQuPcef3.cjs +0 -1
  102. package/lib/adapters/ssg/vite/index.cjs +0 -5
  103. package/lib/adapters/vercel-edge/vite/index-BqUeglYs.cjs +0 -1
  104. package/lib/adapters/vercel-edge/vite/index-CBIchDYq.js +0 -651
  105. package/lib/adapters/vercel-edge/vite/index-ClHGw5z1.js +0 -6
  106. package/lib/adapters/vercel-edge/vite/index-CrwlB95_.js +0 -22
  107. package/lib/adapters/vercel-edge/vite/index-DTIOTwZo.cjs +0 -11
  108. package/lib/adapters/vercel-edge/vite/index-vQuPcef3.cjs +0 -1
  109. package/lib/adapters/vercel-edge/vite/index.cjs +0 -5
  110. package/lib/index.qwik.cjs +0 -2126
  111. package/lib/middleware/aws-lambda/index.cjs +0 -1
  112. package/lib/middleware/azure-swa/index.cjs +0 -1
  113. package/lib/middleware/bun/index.cjs +0 -1
  114. package/lib/middleware/cloudflare-pages/index.cjs +0 -1
  115. package/lib/middleware/deno/index.cjs +0 -1
  116. package/lib/middleware/firebase/index.cjs +0 -1
  117. package/lib/middleware/netlify-edge/index.cjs +0 -1
  118. package/lib/middleware/node/index.cjs +0 -1
  119. package/lib/middleware/request-handler/index.cjs +0 -18
  120. package/lib/middleware/vercel-edge/index.cjs +0 -1
  121. package/lib/service-worker.cjs +0 -1
  122. package/lib/service-worker.mjs +0 -5
  123. package/lib/ssg/deno.cjs +0 -1
  124. package/lib/ssg/deno.mjs +0 -6
  125. package/lib/ssg/index-CBIchDYq.js +0 -651
  126. package/lib/ssg/index-ClHGw5z1.js +0 -6
  127. package/lib/ssg/index-DTIOTwZo.cjs +0 -11
  128. package/lib/ssg/index-vQuPcef3.cjs +0 -1
  129. package/lib/ssg/index.cjs +0 -1
  130. package/lib/ssg/node.cjs +0 -11
  131. package/lib/ssg/node.mjs +0 -651
  132. package/lib/vite/index.cjs +0 -42
@@ -1,41 +1,51 @@
1
- import { createQwikRouter as c } from "@qwik.dev/router/middleware/node";
2
- function u(r) {
3
- r.qwikCityPlan && !r.qwikRouterConfig && (console.warn("qwikCityPlan is deprecated. Simply remove it."), r.qwikRouterConfig = r.qwikCityPlan);
1
+ import { createQwikRouter as createQwikRouter$1 } from '@qwik.dev/router/middleware/node';
2
+
3
+ function createQwikRouter(opts) {
4
+ if (opts.qwikCityPlan && !opts.qwikRouterConfig) {
5
+ console.warn("qwikCityPlan is deprecated. Simply remove it.");
6
+ opts.qwikRouterConfig = opts.qwikCityPlan;
7
+ }
4
8
  try {
5
- const { router: n, staticFile: i, notFound: a } = c({
6
- render: r.render,
7
- qwikRouterConfig: r.qwikRouterConfig,
8
- manifest: r.manifest,
9
+ const { router, staticFile, notFound } = createQwikRouter$1({
10
+ render: opts.render,
11
+ qwikRouterConfig: opts.qwikRouterConfig,
12
+ manifest: opts.manifest,
9
13
  static: {
10
14
  cacheControl: "public, max-age=31557600"
11
15
  },
12
- getOrigin(e) {
13
- return process.env.IS_OFFLINE ? `http://${e.headers.host}` : null;
16
+ getOrigin(req) {
17
+ if (process.env.IS_OFFLINE) {
18
+ return `http://${req.headers.host}`;
19
+ }
20
+ return null;
14
21
  }
15
- }), o = (e) => {
22
+ });
23
+ const fixPath = (pathT) => {
16
24
  if (!globalThis.__NO_TRAILING_SLASH__) {
17
- const t = new URL(e, "http://aws-qwik.local");
18
- if (t.pathname.includes(".", t.pathname.lastIndexOf("/")))
19
- return e;
20
- if (!t.pathname.endsWith("/"))
21
- return t.pathname + "/" + t.search;
25
+ const url = new URL(pathT, "http://aws-qwik.local");
26
+ if (url.pathname.includes(".", url.pathname.lastIndexOf("/"))) {
27
+ return pathT;
28
+ }
29
+ if (!url.pathname.endsWith("/")) {
30
+ return url.pathname + "/" + url.search;
31
+ }
22
32
  }
23
- return e;
33
+ return pathT;
24
34
  };
25
- return { fixPath: o, router: n, staticFile: i, notFound: a, handle: (e, t) => {
26
- e.url = o(e.url), i(e, t, () => {
27
- n(e, t, () => {
28
- a(e, t, () => {
35
+ const handle = (req, res) => {
36
+ req.url = fixPath(req.url);
37
+ staticFile(req, res, () => {
38
+ router(req, res, () => {
39
+ notFound(req, res, () => {
29
40
  });
30
41
  });
31
42
  });
32
- } };
33
- } catch (n) {
34
- throw new Error(n.message);
43
+ };
44
+ return { fixPath, router, staticFile, notFound, handle };
45
+ } catch (err) {
46
+ throw new Error(err.message);
35
47
  }
36
48
  }
37
- const s = u;
38
- export {
39
- s as createQwikCity,
40
- u as createQwikRouter
41
- };
49
+ const createQwikCity = createQwikRouter;
50
+
51
+ export { createQwikCity, createQwikRouter };
@@ -1,74 +1,91 @@
1
- import { setServerPlatform as w } from "@qwik.dev/core/server";
2
- import { requestHandler as p, isStaticPath as b, getNotFound as g } from "@qwik.dev/router/middleware/request-handler";
3
- import { parseString as C } from "set-cookie-parser";
4
- function v(t) {
5
- t.qwikCityPlan && !t.qwikRouterConfig && (console.warn("qwikCityPlan is deprecated. Simply remove it."), t.qwikRouterConfig = t.qwikCityPlan), t.manifest && w(t.manifest);
6
- async function c(u, e) {
1
+ import { setServerPlatform } from '@qwik.dev/core/server';
2
+ import { requestHandler, isStaticPath, getNotFound } from '@qwik.dev/router/middleware/request-handler';
3
+ import { parseString } from 'set-cookie-parser';
4
+
5
+ function createQwikRouter(opts) {
6
+ if (opts.qwikCityPlan && !opts.qwikRouterConfig) {
7
+ console.warn("qwikCityPlan is deprecated. Simply remove it.");
8
+ opts.qwikRouterConfig = opts.qwikCityPlan;
9
+ }
10
+ if (opts.manifest) {
11
+ setServerPlatform(opts.manifest);
12
+ }
13
+ async function onAzureSwaRequest(context, req) {
7
14
  try {
8
- const n = new URL(e.headers["x-ms-original-url"]), l = {
9
- method: e.method || "GET",
10
- headers: e.headers,
11
- body: e.bufferBody || e.rawBody || e.body
12
- }, f = {
15
+ const url = new URL(req.headers["x-ms-original-url"]);
16
+ const options = {
17
+ method: req.method || "GET",
18
+ headers: req.headers,
19
+ body: req.bufferBody || req.rawBody || req.body
20
+ };
21
+ const serverRequestEv = {
13
22
  mode: "server",
14
23
  locale: void 0,
15
- url: n,
16
- platform: u,
24
+ url,
25
+ platform: context,
17
26
  env: {
18
- get(o) {
19
- return process.env[o];
27
+ get(key) {
28
+ return process.env[key];
20
29
  }
21
30
  },
22
- request: new Request(n, l),
23
- getWritableStream: (o, i, m, y) => {
24
- const r = {
25
- status: o,
31
+ request: new Request(url, options),
32
+ getWritableStream: (status, headers, cookies, resolve) => {
33
+ const response = {
34
+ status,
26
35
  body: new Uint8Array(),
27
36
  headers: {},
28
- cookies: m.headers().map((a) => C(a))
37
+ cookies: cookies.headers().map((header) => parseString(header))
29
38
  };
30
- return i.forEach((a, s) => r.headers[s] = a), new WritableStream({
31
- write(a) {
32
- if (r.body instanceof Uint8Array) {
33
- const s = new Uint8Array(r.body.length + a.length);
34
- s.set(r.body), s.set(a, r.body.length), r.body = s;
39
+ headers.forEach((value, key) => response.headers[key] = value);
40
+ return new WritableStream({
41
+ write(chunk) {
42
+ if (response.body instanceof Uint8Array) {
43
+ const newBuffer = new Uint8Array(response.body.length + chunk.length);
44
+ newBuffer.set(response.body);
45
+ newBuffer.set(chunk, response.body.length);
46
+ response.body = newBuffer;
35
47
  }
36
48
  },
37
49
  close() {
38
- y(r);
50
+ resolve(response);
39
51
  }
40
52
  });
41
53
  },
42
- getClientConn: () => ({
43
- ip: e.headers["x-forwarded-client-Ip"],
44
- country: void 0
45
- })
46
- }, d = await p(f, t);
47
- if (d) {
48
- d.completion.then((i) => {
49
- i && console.error(i);
54
+ getClientConn: () => {
55
+ return {
56
+ ip: req.headers["x-forwarded-client-Ip"],
57
+ country: void 0
58
+ };
59
+ }
60
+ };
61
+ const handledResponse = await requestHandler(serverRequestEv, opts);
62
+ if (handledResponse) {
63
+ handledResponse.completion.then((err) => {
64
+ if (err) {
65
+ console.error(err);
66
+ }
50
67
  });
51
- const o = await d.response;
52
- if (o)
53
- return o;
68
+ const response = await handledResponse.response;
69
+ if (response) {
70
+ return response;
71
+ }
54
72
  }
55
- const h = !e.headers.accept?.includes("text/html") || b(e.method || "GET", n) ? "Not Found" : g(n.pathname);
73
+ const notFoundHtml = !req.headers.accept?.includes("text/html") || isStaticPath(req.method || "GET", url) ? "Not Found" : getNotFound(url.pathname);
56
74
  return {
57
75
  status: 404,
58
- headers: { "Content-Type": "text/html; charset=utf-8", "X-Not-Found": n.pathname },
59
- body: h
76
+ headers: { "Content-Type": "text/html; charset=utf-8", "X-Not-Found": url.pathname },
77
+ body: notFoundHtml
60
78
  };
61
- } catch (n) {
62
- return console.error(n), {
79
+ } catch (e) {
80
+ console.error(e);
81
+ return {
63
82
  status: 500,
64
83
  headers: { "Content-Type": "text/plain; charset=utf-8" }
65
84
  };
66
85
  }
67
86
  }
68
- return c;
87
+ return onAzureSwaRequest;
69
88
  }
70
- const x = v;
71
- export {
72
- x as createQwikCity,
73
- v as createQwikRouter
74
- };
89
+ const createQwikCity = createQwikRouter;
90
+
91
+ export { createQwikCity, createQwikRouter };
@@ -1,156 +1,141 @@
1
- import { setServerPlatform as x } from "@qwik.dev/core/server";
2
- import { _TextEncoderStream_polyfill as w, mergeHeadersCookies as C, requestHandler as R, isStaticPath as p, getNotFound as y } from "@qwik.dev/router/middleware/request-handler";
3
- import { join as s, extname as b } from "node:path";
4
- const T = {
5
- "3gp": "video/3gpp",
6
- "3gpp": "video/3gpp",
7
- asf: "video/x-ms-asf",
8
- asx: "video/x-ms-asf",
9
- avi: "video/x-msvideo",
10
- avif: "image/avif",
11
- bmp: "image/x-ms-bmp",
12
- css: "text/css",
13
- flv: "video/x-flv",
14
- gif: "image/gif",
15
- htm: "text/html",
16
- html: "text/html",
17
- ico: "image/x-icon",
18
- jng: "image/x-jng",
19
- jpeg: "image/jpeg",
20
- jpg: "image/jpeg",
21
- js: "application/javascript",
22
- json: "application/json",
23
- kar: "audio/midi",
24
- m4a: "audio/x-m4a",
25
- m4v: "video/x-m4v",
26
- mid: "audio/midi",
27
- midi: "audio/midi",
28
- mng: "video/x-mng",
29
- mov: "video/quicktime",
30
- mp3: "audio/mpeg",
31
- mp4: "video/mp4",
32
- mpeg: "video/mpeg",
33
- mpg: "video/mpeg",
34
- ogg: "audio/ogg",
35
- pdf: "application/pdf",
36
- png: "image/png",
37
- rar: "application/x-rar-compressed",
38
- shtml: "text/html",
39
- svg: "image/svg+xml",
40
- svgz: "image/svg+xml",
41
- tif: "image/tiff",
42
- tiff: "image/tiff",
43
- ts: "video/mp2t",
44
- txt: "text/plain",
45
- wbmp: "image/vnd.wap.wbmp",
46
- webm: "video/webm",
47
- webp: "image/webp",
48
- wmv: "video/x-ms-wmv",
49
- woff: "font/woff",
50
- woff2: "font/woff2",
51
- xml: "text/xml",
52
- zip: "application/zip"
53
- };
54
- function S(i) {
55
- i.qwikCityPlan && !i.qwikRouterConfig && (console.warn("qwikCityPlan is deprecated. Simply remove it."), i.qwikRouterConfig = i.qwikCityPlan), globalThis.TextEncoderStream ||= w, i.manifest && x(i.manifest);
56
- const m = i.static?.root ?? s(Bun.fileURLToPath(import.meta.url), "..", "..", "dist");
57
- async function d(t) {
1
+ import { setServerPlatform } from '@qwik.dev/core/server';
2
+ import { _TextEncoderStream_polyfill, isStaticPath, getNotFound, mergeHeadersCookies, requestHandler } from '@qwik.dev/router/middleware/request-handler';
3
+ import { join, extname } from 'node:path';
4
+ import { M as MIME_TYPES } from '../../chunks/mime-types.mjs';
5
+
6
+ function createQwikRouter(opts) {
7
+ if (opts.qwikCityPlan && !opts.qwikRouterConfig) {
8
+ console.warn("qwikCityPlan is deprecated. Simply remove it.");
9
+ opts.qwikRouterConfig = opts.qwikCityPlan;
10
+ }
11
+ globalThis.TextEncoderStream ||= _TextEncoderStream_polyfill;
12
+ if (opts.manifest) {
13
+ setServerPlatform(opts.manifest);
14
+ }
15
+ const staticFolder = opts.static?.root ?? join(Bun.fileURLToPath(import.meta.url), "..", "..", "dist");
16
+ async function router(request) {
58
17
  try {
59
- const a = {
18
+ const url = new URL(request.url);
19
+ const serverRequestEv = {
60
20
  mode: "server",
61
21
  locale: void 0,
62
- url: new URL(t.url),
22
+ url,
63
23
  env: {
64
- get(o) {
65
- return Bun.env[o];
24
+ get(key) {
25
+ return Bun.env[key];
66
26
  }
67
27
  },
68
- request: t,
69
- getWritableStream: (o, r, l, c) => {
70
- const { readable: g, writable: h } = new TransformStream(), v = new Response(g, {
71
- status: o,
72
- headers: C(r, l)
28
+ request,
29
+ getWritableStream: (status, headers, cookies, resolve) => {
30
+ const { readable, writable } = new TransformStream();
31
+ const response = new Response(readable, {
32
+ status,
33
+ headers: mergeHeadersCookies(headers, cookies)
73
34
  });
74
- return c(v), h;
35
+ resolve(response);
36
+ return writable;
75
37
  },
76
38
  platform: {
77
- ssr: !0
39
+ ssr: true
78
40
  },
79
- getClientConn: () => i.getClientConn ? i.getClientConn(t) : {}
80
- }, n = await R(a, i);
81
- if (n) {
82
- n.completion.then((r) => {
83
- r && console.error(r);
41
+ getClientConn: () => {
42
+ return opts.getClientConn ? opts.getClientConn(request) : {};
43
+ }
44
+ };
45
+ const handledResponse = await requestHandler(serverRequestEv, opts);
46
+ if (handledResponse) {
47
+ handledResponse.completion.then((v) => {
48
+ if (v) {
49
+ console.error(v);
50
+ }
84
51
  });
85
- const o = await n.response;
86
- if (o) {
87
- const r = o.status, l = o.headers.get("Location");
88
- return r >= 301 && r <= 308 && l ? new Response(null, o) : o;
52
+ const response = await handledResponse.response;
53
+ if (response) {
54
+ const status = response.status;
55
+ const location = response.headers.get("Location");
56
+ const isRedirect = status >= 301 && status <= 308 && location;
57
+ if (isRedirect) {
58
+ return new Response(null, response);
59
+ }
60
+ return response;
89
61
  }
90
62
  }
91
63
  return null;
92
64
  } catch (e) {
93
- return console.error(e), new Response(String(e || "Error"), {
65
+ console.error(e);
66
+ return new Response(String(e || "Error"), {
94
67
  status: 500,
95
68
  headers: { "Content-Type": "text/plain; charset=utf-8", "X-Error": "bun-server" }
96
69
  });
97
70
  }
98
71
  }
99
- const u = async (t) => {
72
+ const notFound = async (request) => {
100
73
  try {
101
- const e = new URL(t.url), a = !t.headers.get("accept")?.includes("text/html") || p(t.method || "GET", e) ? "Not Found" : y(e.pathname);
102
- return new Response(a, {
74
+ const url = new URL(request.url);
75
+ const notFoundHtml = !request.headers.get("accept")?.includes("text/html") || isStaticPath(request.method || "GET", url) ? "Not Found" : getNotFound(url.pathname);
76
+ return new Response(notFoundHtml, {
103
77
  status: 404,
104
- headers: { "Content-Type": "text/html; charset=utf-8", "X-Not-Found": e.pathname }
78
+ headers: { "Content-Type": "text/html; charset=utf-8", "X-Not-Found": url.pathname }
105
79
  });
106
80
  } catch (e) {
107
- return console.error(e), new Response(String(e || "Error"), {
81
+ console.error(e);
82
+ return new Response(String(e || "Error"), {
108
83
  status: 500,
109
84
  headers: { "Content-Type": "text/plain; charset=utf-8", "X-Error": "bun-server" }
110
85
  });
111
86
  }
112
- }, f = async (t) => {
113
- const e = t.pathname, a = e.slice(t.pathname.lastIndexOf("/"));
114
- let n;
115
- return a.includes(".") ? n = s(m, e) : globalThis.__NO_TRAILING_SLASH__ ? n = s(m, e, "index.html") : n = s(m, e + "index.html"), {
116
- filePath: n,
117
- content: Bun.file(n)
87
+ };
88
+ const openStaticFile = async (url) => {
89
+ const pathname = url.pathname;
90
+ const fileName = pathname.slice(url.pathname.lastIndexOf("/"));
91
+ let filePath;
92
+ if (fileName.includes(".")) {
93
+ filePath = join(staticFolder, pathname);
94
+ } else if (!globalThis.__NO_TRAILING_SLASH__) {
95
+ filePath = join(staticFolder, pathname + "index.html");
96
+ } else {
97
+ filePath = join(staticFolder, pathname, "index.html");
98
+ }
99
+ return {
100
+ filePath,
101
+ content: Bun.file(filePath)
118
102
  };
119
103
  };
120
- return {
121
- router: d,
122
- notFound: u,
123
- staticFile: async (t) => {
124
- try {
125
- const e = new URL(t.url);
126
- if (p(t.method || "GET", e)) {
127
- const { filePath: a, content: n } = await f(e);
128
- if (!await n.exists())
129
- return new Response("Not Found", {
130
- status: 404,
131
- headers: { "Content-Type": "text/plain; charset=utf-8", "X-Not-Found": e.pathname }
132
- });
133
- const o = b(a).replace(/^\./, "");
134
- return new Response(await n.stream(), {
135
- status: 200,
136
- headers: {
137
- "content-type": T[o] || "text/plain; charset=utf-8",
138
- "Cache-Control": i.static?.cacheControl || "max-age=3600"
139
- }
104
+ const staticFile = async (request) => {
105
+ try {
106
+ const url = new URL(request.url);
107
+ if (isStaticPath(request.method || "GET", url)) {
108
+ const { filePath, content } = await openStaticFile(url);
109
+ if (!await content.exists()) {
110
+ return new Response("Not Found", {
111
+ status: 404,
112
+ headers: { "Content-Type": "text/plain; charset=utf-8", "X-Not-Found": url.pathname }
140
113
  });
141
114
  }
142
- return null;
143
- } catch (e) {
144
- return console.error(e), new Response(String(e || "Error"), {
145
- status: 500,
146
- headers: { "Content-Type": "text/plain; charset=utf-8", "X-Error": "bun-server" }
115
+ const ext = extname(filePath).replace(/^\./, "");
116
+ return new Response(await content.stream(), {
117
+ status: 200,
118
+ headers: {
119
+ "content-type": MIME_TYPES[ext] || "text/plain; charset=utf-8",
120
+ "Cache-Control": opts.static?.cacheControl || "max-age=3600"
121
+ }
147
122
  });
148
123
  }
124
+ return null;
125
+ } catch (e) {
126
+ console.error(e);
127
+ return new Response(String(e || "Error"), {
128
+ status: 500,
129
+ headers: { "Content-Type": "text/plain; charset=utf-8", "X-Error": "bun-server" }
130
+ });
149
131
  }
150
132
  };
133
+ return {
134
+ router,
135
+ notFound,
136
+ staticFile
137
+ };
151
138
  }
152
- const P = S;
153
- export {
154
- P as createQwikCity,
155
- S as createQwikRouter
156
- };
139
+ const createQwikCity = createQwikRouter;
140
+
141
+ export { createQwikCity, createQwikRouter };
@@ -1,75 +1,95 @@
1
- import { setServerPlatform as y } from "@qwik.dev/core/server";
2
- import { _TextEncoderStream_polyfill as R, isStaticPath as h, mergeHeadersCookies as S, requestHandler as T, getNotFound as k } from "@qwik.dev/router/middleware/request-handler";
3
- function E(r) {
4
- r.qwikCityPlan && !r.qwikRouterConfig && (console.warn("qwikCityPlan is deprecated. Simply remove it."), r.qwikRouterConfig = r.qwikCityPlan);
1
+ import { setServerPlatform } from '@qwik.dev/core/server';
2
+ import { _TextEncoderStream_polyfill, isStaticPath, mergeHeadersCookies, requestHandler, getNotFound } from '@qwik.dev/router/middleware/request-handler';
3
+
4
+ function createQwikRouter(opts) {
5
+ if (opts.qwikCityPlan && !opts.qwikRouterConfig) {
6
+ console.warn("qwikCityPlan is deprecated. Simply remove it.");
7
+ opts.qwikRouterConfig = opts.qwikCityPlan;
8
+ }
5
9
  try {
6
10
  new globalThis.TextEncoderStream();
7
11
  } catch {
8
- globalThis.TextEncoderStream = R;
12
+ globalThis.TextEncoderStream = _TextEncoderStream_polyfill;
13
+ }
14
+ if (opts.manifest) {
15
+ setServerPlatform(opts.manifest);
9
16
  }
10
- r.manifest && y(r.manifest);
11
- async function m(n, s, i) {
17
+ async function onCloudflarePagesFetch(request, env, ctx) {
12
18
  try {
13
- const e = new URL(n.url);
14
- if (h(n.method, e))
15
- return s.ASSETS.fetch(n);
16
- const d = e.hostname !== "127.0.0.1" && e.hostname !== "localhost" && e.port === "" && n.method === "GET", l = new Request(e.href, n), o = d ? await caches.open("custom:qwikrouter") : null;
17
- if (o) {
18
- const t = await o.match(l);
19
- if (t)
20
- return t;
19
+ const url = new URL(request.url);
20
+ if (isStaticPath(request.method, url)) {
21
+ return env.ASSETS.fetch(request);
22
+ }
23
+ const useCache = url.hostname !== "127.0.0.1" && url.hostname !== "localhost" && url.port === "" && request.method === "GET";
24
+ const cacheKey = new Request(url.href, request);
25
+ const cache = useCache ? await caches.open("custom:qwikrouter") : null;
26
+ if (cache) {
27
+ const cachedResponse = await cache.match(cacheKey);
28
+ if (cachedResponse) {
29
+ return cachedResponse;
30
+ }
21
31
  }
22
- const c = await T({
32
+ const serverRequestEv = {
23
33
  mode: "server",
24
34
  locale: void 0,
25
- url: e,
26
- request: n,
35
+ url,
36
+ request,
27
37
  env: {
28
- get(t) {
29
- return s[t];
38
+ get(key) {
39
+ return env[key];
30
40
  }
31
41
  },
32
- getWritableStream: (t, a, f, p) => {
33
- const { readable: w, writable: C } = new TransformStream(), g = new Response(w, {
34
- status: t,
35
- headers: S(a, f)
42
+ getWritableStream: (status, headers, cookies, resolve) => {
43
+ const { readable, writable } = new TransformStream();
44
+ const response = new Response(readable, {
45
+ status,
46
+ headers: mergeHeadersCookies(headers, cookies)
36
47
  });
37
- return p(g), C;
48
+ resolve(response);
49
+ return writable;
50
+ },
51
+ getClientConn: () => {
52
+ return {
53
+ ip: request.headers.get("CF-connecting-ip") || "",
54
+ country: request.headers.get("CF-IPCountry") || ""
55
+ };
38
56
  },
39
- getClientConn: () => ({
40
- ip: n.headers.get("CF-connecting-ip") || "",
41
- country: n.headers.get("CF-IPCountry") || ""
42
- }),
43
57
  platform: {
44
- request: n,
45
- env: s,
46
- ctx: i
58
+ request,
59
+ env,
60
+ ctx
47
61
  }
48
- }, r);
49
- if (c) {
50
- c.completion.then((a) => {
51
- a && console.error(a);
62
+ };
63
+ const handledResponse = await requestHandler(serverRequestEv, opts);
64
+ if (handledResponse) {
65
+ handledResponse.completion.then((v) => {
66
+ if (v) {
67
+ console.error(v);
68
+ }
52
69
  });
53
- const t = await c.response;
54
- if (t)
55
- return t.ok && o && t.headers.has("Cache-Control") && i.waitUntil(o.put(l, t.clone())), t;
70
+ const response = await handledResponse.response;
71
+ if (response) {
72
+ if (response.ok && cache && response.headers.has("Cache-Control")) {
73
+ ctx.waitUntil(cache.put(cacheKey, response.clone()));
74
+ }
75
+ return response;
76
+ }
56
77
  }
57
- const u = !n.headers.get("accept")?.includes("text/html") || h(n.method || "GET", e) ? "Not Found" : k(e.pathname);
58
- return new Response(u, {
78
+ const notFoundHtml = !request.headers.get("accept")?.includes("text/html") || isStaticPath(request.method || "GET", url) ? "Not Found" : getNotFound(url.pathname);
79
+ return new Response(notFoundHtml, {
59
80
  status: 404,
60
- headers: { "Content-Type": "text/html; charset=utf-8", "X-Not-Found": e.pathname }
81
+ headers: { "Content-Type": "text/html; charset=utf-8", "X-Not-Found": url.pathname }
61
82
  });
62
83
  } catch (e) {
63
- return console.error(e), new Response(String(e || "Error"), {
84
+ console.error(e);
85
+ return new Response(String(e || "Error"), {
64
86
  status: 500,
65
87
  headers: { "Content-Type": "text/plain; charset=utf-8", "X-Error": "cloudflare-pages" }
66
88
  });
67
89
  }
68
90
  }
69
- return m;
91
+ return onCloudflarePagesFetch;
70
92
  }
71
- const x = E;
72
- export {
73
- x as createQwikCity,
74
- E as createQwikRouter
75
- };
93
+ const createQwikCity = createQwikRouter;
94
+
95
+ export { createQwikCity, createQwikRouter };