@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
@@ -1,15 +1,10 @@
1
- // packages/qwik-router/src/middleware/node/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 { requestHandler } from "../request-handler/index.mjs";
7
- import { createReadStream } from "node:fs";
8
- import { basename, extname, join } from "node:path";
9
- import { fileURLToPath } from "node:url";
10
-
11
- // packages/qwik-router/src/middleware/request-handler/mime-types.ts
12
- var MIME_TYPES = {
1
+ import { setServerPlatform as R } from "@qwik.dev/core/server";
2
+ import { requestHandler as b, isStaticPath as x, getNotFound as C } from "@qwik.dev/router/middleware/request-handler";
3
+ import { createReadStream as k } from "node:fs";
4
+ import { join as v, basename as S, extname as T } from "node:path";
5
+ import { fileURLToPath as j } from "node:url";
6
+ import { Http2ServerRequest as O } from "node:http2";
7
+ const _ = {
13
8
  "3gp": "video/3gpp",
14
9
  "3gpp": "video/3gpp",
15
10
  asf: "video/x-ms-asf",
@@ -59,229 +54,152 @@ var MIME_TYPES = {
59
54
  xml: "text/xml",
60
55
  zip: "application/zip"
61
56
  };
62
-
63
- // packages/qwik-router/src/middleware/node/http.ts
64
- import { Http2ServerRequest } from "node:http2";
65
- function computeOrigin(req, opts) {
66
- var _a;
67
- return ((_a = opts == null ? void 0 : opts.getOrigin) == null ? void 0 : _a.call(opts, req)) ?? (opts == null ? void 0 : opts.origin) ?? process.env.ORIGIN ?? fallbackOrigin(req);
57
+ function w(e, t) {
58
+ return t?.getOrigin?.(e) ?? t?.origin ?? process.env.ORIGIN ?? A(e);
68
59
  }
69
- function fallbackOrigin(req) {
70
- const { PROTOCOL_HEADER, HOST_HEADER } = process.env;
71
- const headers = req.headers;
72
- const protocol = PROTOCOL_HEADER && headers[PROTOCOL_HEADER] || (req.socket.encrypted || req.connection.encrypted ? "https" : "http");
73
- const hostHeader = HOST_HEADER ?? (req instanceof Http2ServerRequest ? ":authority" : "host");
74
- const host = headers[hostHeader];
75
- return `${protocol}://${host}`;
60
+ function A(e) {
61
+ const { PROTOCOL_HEADER: t, HOST_HEADER: n } = process.env, u = e.headers, h = t && u[t] || (e.socket.encrypted || e.connection.encrypted ? "https" : "http"), o = n ?? (e instanceof O ? ":authority" : "host"), r = u[o];
62
+ return `${h}://${r}`;
76
63
  }
77
- function getUrl(req, origin) {
78
- return normalizeUrl(req.originalUrl || req.url || "/", origin);
64
+ function y(e, t) {
65
+ return F(e.originalUrl || e.url || "/", t);
79
66
  }
80
- function isIgnoredError(message = "") {
81
- const ignoredErrors = ["The stream has been destroyed", "write after end"];
82
- return ignoredErrors.some((ignored) => message.includes(ignored));
67
+ function P(e = "") {
68
+ return ["The stream has been destroyed", "write after end"].some((n) => e.includes(n));
83
69
  }
84
- var invalidHeadersPattern = /^:(method|scheme|authority|path)$/i;
85
- function normalizeUrl(url, base) {
86
- const DOUBLE_SLASH_REG = /\/\/|\\\\/g;
87
- return new URL(url.replace(DOUBLE_SLASH_REG, "/"), base);
70
+ const H = /^:(method|scheme|authority|path)$/i;
71
+ function F(e, t) {
72
+ const n = /\/\/|\\\\/g;
73
+ return new URL(e.replace(n, "/"), t);
88
74
  }
89
- async function fromNodeHttp(url, req, res, mode, getClientConn) {
90
- const requestHeaders = new Headers();
91
- const nodeRequestHeaders = req.headers;
75
+ async function L(e, t, n, u, h) {
76
+ const o = new Headers(), r = t.headers;
92
77
  try {
93
- for (const [key, value] of Object.entries(nodeRequestHeaders)) {
94
- if (invalidHeadersPattern.test(key)) {
95
- continue;
78
+ for (const [a, l] of Object.entries(r))
79
+ if (!H.test(a)) {
80
+ if (typeof l == "string")
81
+ o.set(a, l);
82
+ else if (Array.isArray(l))
83
+ for (const f of l)
84
+ o.append(a, f);
96
85
  }
97
- if (typeof value === "string") {
98
- requestHeaders.set(key, value);
99
- } else if (Array.isArray(value)) {
100
- for (const v of value) {
101
- requestHeaders.append(key, v);
102
- }
103
- }
104
- }
105
- } catch (err) {
106
- console.error(err);
86
+ } catch (a) {
87
+ console.error(a);
107
88
  }
108
- const getRequestBody = async function* () {
109
- for await (const chunk of req) {
110
- yield chunk;
111
- }
112
- };
113
- const body = req.method === "HEAD" || req.method === "GET" ? void 0 : getRequestBody();
114
- const controller = new AbortController();
115
- const options = {
116
- method: req.method,
117
- headers: requestHeaders,
118
- body,
119
- signal: controller.signal,
89
+ const m = async function* () {
90
+ for await (const a of t)
91
+ yield a;
92
+ }, i = t.method === "HEAD" || t.method === "GET" ? void 0 : m(), c = new AbortController(), s = {
93
+ method: t.method,
94
+ headers: o,
95
+ body: i,
96
+ signal: c.signal,
120
97
  duplex: "half"
121
98
  };
122
- res.on("close", () => {
123
- controller.abort();
124
- });
125
- const serverRequestEv = {
126
- mode,
127
- url,
128
- request: new Request(url.href, options),
99
+ return n.on("close", () => {
100
+ c.abort();
101
+ }), {
102
+ mode: u,
103
+ url: e,
104
+ request: new Request(e.href, s),
129
105
  env: {
130
- get(key) {
131
- return process.env[key];
106
+ get(a) {
107
+ return process.env[a];
132
108
  }
133
109
  },
134
- getWritableStream: (status, headers, cookies) => {
135
- res.statusCode = status;
110
+ getWritableStream: (a, l, f) => {
111
+ n.statusCode = a;
136
112
  try {
137
- for (const [key, value] of headers) {
138
- if (invalidHeadersPattern.test(key)) {
139
- continue;
140
- }
141
- res.setHeader(key, value);
142
- }
143
- const cookieHeaders = cookies.headers();
144
- if (cookieHeaders.length > 0) {
145
- res.setHeader("Set-Cookie", cookieHeaders);
146
- }
147
- } catch (err) {
148
- console.error(err);
113
+ for (const [g, E] of l)
114
+ H.test(g) || n.setHeader(g, E);
115
+ const p = f.headers();
116
+ p.length > 0 && n.setHeader("Set-Cookie", p);
117
+ } catch (p) {
118
+ console.error(p);
149
119
  }
150
120
  return new WritableStream({
151
- write(chunk) {
152
- if (res.closed || res.destroyed) {
153
- return;
154
- }
155
- res.write(chunk, (error) => {
156
- if (error && !isIgnoredError(error.message)) {
157
- console.error(error);
158
- }
121
+ write(p) {
122
+ n.closed || n.destroyed || n.write(p, (g) => {
123
+ g && !P(g.message) && console.error(g);
159
124
  });
160
125
  },
161
126
  close() {
162
- res.end();
127
+ n.end();
163
128
  }
164
129
  });
165
130
  },
166
- getClientConn: () => {
167
- return getClientConn ? getClientConn(req) : {
168
- ip: req.socket.remoteAddress
169
- };
131
+ getClientConn: () => h ? h(t) : {
132
+ ip: t.socket.remoteAddress
170
133
  },
171
134
  platform: {
172
- ssr: true,
173
- incomingMessage: req,
135
+ ssr: !0,
136
+ incomingMessage: t,
174
137
  node: process.versions.node
175
138
  // Weirdly needed to make typecheck of insights happy
176
139
  },
177
140
  locale: void 0
178
141
  };
179
- return serverRequestEv;
180
142
  }
181
-
182
- // packages/qwik-router/src/middleware/node/index.ts
183
- function createQwikRouter(opts) {
184
- var _a;
185
- if (opts.qwikCityPlan && !opts.qwikRouterConfig) {
186
- console.warn("qwikCityPlan is deprecated. Use qwikRouterConfig instead.");
187
- opts.qwikRouterConfig = opts.qwikCityPlan;
188
- } else if (!opts.qwikRouterConfig) {
189
- throw new Error("qwikRouterConfig is required.");
190
- }
191
- const qwikSerializer = {
192
- _deserialize,
193
- _serialize,
194
- _verifySerializable
195
- };
196
- if (opts.manifest) {
197
- setServerPlatform(opts.manifest);
198
- }
199
- const staticFolder = ((_a = opts.static) == null ? void 0 : _a.root) ?? join(fileURLToPath(import.meta.url), "..", "..", "dist");
200
- const router = async (req, res, next) => {
201
- try {
202
- const origin = computeOrigin(req, opts);
203
- const serverRequestEv = await fromNodeHttp(
204
- getUrl(req, origin),
205
- req,
206
- res,
207
- "server",
208
- opts.getClientConn
209
- );
210
- const handled = await requestHandler(serverRequestEv, opts, qwikSerializer);
211
- if (handled) {
212
- const err = await handled.completion;
213
- if (err) {
214
- throw err;
215
- }
216
- if (handled.requestEv.headersSent) {
217
- return;
143
+ function N(e) {
144
+ e.qwikCityPlan && !e.qwikRouterConfig && (console.warn("qwikCityPlan is deprecated. Simply remove it."), e.qwikRouterConfig = e.qwikCityPlan), e.manifest && R(e.manifest);
145
+ const t = e.static?.root ?? v(j(import.meta.url), "..", "..", "dist");
146
+ return {
147
+ router: async (o, r, m) => {
148
+ try {
149
+ const i = w(o, e), c = await L(
150
+ y(o, i),
151
+ o,
152
+ r,
153
+ "server",
154
+ e.getClientConn
155
+ ), s = await b(c, e);
156
+ if (s) {
157
+ const d = await s.completion;
158
+ if (d)
159
+ throw d;
160
+ if (s.requestEv.headersSent)
161
+ return;
218
162
  }
163
+ m();
164
+ } catch (i) {
165
+ console.error(i), m(i);
219
166
  }
220
- next();
221
- } catch (e) {
222
- console.error(e);
223
- next(e);
224
- }
225
- };
226
- const notFound = async (req, res, next) => {
227
- try {
228
- if (!res.headersSent) {
229
- const origin = computeOrigin(req, opts);
230
- const url = getUrl(req, origin);
231
- const notFoundHtml = isStaticPath(req.method || "GET", url) ? "Not Found" : getNotFound(url.pathname);
232
- res.writeHead(404, {
233
- "Content-Type": "text/html; charset=utf-8",
234
- "X-Not-Found": url.pathname
235
- });
236
- res.end(notFoundHtml);
237
- }
238
- } catch (e) {
239
- console.error(e);
240
- next(e);
241
- }
242
- };
243
- const staticFile = async (req, res, next) => {
244
- var _a2;
245
- try {
246
- const origin = computeOrigin(req, opts);
247
- const url = getUrl(req, origin);
248
- if (isStaticPath(req.method || "GET", url)) {
249
- const pathname = url.pathname;
250
- let filePath;
251
- if (basename(pathname).includes(".")) {
252
- filePath = join(staticFolder, pathname);
253
- } else if (opts.qwikRouterConfig.trailingSlash) {
254
- filePath = join(staticFolder, pathname + "index.html");
255
- } else {
256
- filePath = join(staticFolder, pathname, "index.html");
257
- }
258
- const ext = extname(filePath).replace(/^\./, "");
259
- const stream = createReadStream(filePath);
260
- stream.on("error", next);
261
- const contentType = MIME_TYPES[ext];
262
- if (contentType) {
263
- res.setHeader("Content-Type", contentType);
167
+ },
168
+ notFound: async (o, r, m) => {
169
+ try {
170
+ if (!r.headersSent) {
171
+ const i = w(o, e), c = y(o, i), s = !o.headers.accept?.includes("text/html") || x(o.method || "GET", c) ? "Not Found" : C(c.pathname);
172
+ r.writeHead(404, {
173
+ "Content-Type": "text/html; charset=utf-8",
174
+ "X-Not-Found": c.pathname
175
+ }), r.end(s);
264
176
  }
265
- if ((_a2 = opts.static) == null ? void 0 : _a2.cacheControl) {
266
- res.setHeader("Cache-Control", opts.static.cacheControl);
177
+ } catch (i) {
178
+ console.error(i), m(i);
179
+ }
180
+ },
181
+ staticFile: async (o, r, m) => {
182
+ try {
183
+ const i = w(o, e), c = y(o, i);
184
+ if (x(o.method || "GET", c)) {
185
+ const s = c.pathname;
186
+ let d;
187
+ S(s).includes(".") ? d = v(t, s) : globalThis.__NO_TRAILING_SLASH__ ? d = v(t, s, "index.html") : d = v(t, s + "index.html");
188
+ const a = T(d).replace(/^\./, ""), l = k(d);
189
+ l.on("error", m);
190
+ const f = _[a];
191
+ f && r.setHeader("Content-Type", f), e.static?.cacheControl && r.setHeader("Cache-Control", e.static.cacheControl), l.pipe(r);
192
+ return;
267
193
  }
268
- stream.pipe(res);
269
- return;
194
+ return m();
195
+ } catch (i) {
196
+ console.error(i), m(i);
270
197
  }
271
- return next();
272
- } catch (e) {
273
- console.error(e);
274
- next(e);
275
198
  }
276
199
  };
277
- return {
278
- router,
279
- notFound,
280
- staticFile
281
- };
282
200
  }
283
- var createQwikCity = createQwikRouter;
201
+ const $ = N;
284
202
  export {
285
- createQwikCity,
286
- createQwikRouter
203
+ $ as createQwikCity,
204
+ N as createQwikRouter
287
205
  };