@qwik.dev/router 2.0.0-beta.4 → 2.0.0-beta.40

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 (87) hide show
  1. package/adapters/static/vite.d.ts +1 -1
  2. package/lib/adapters/azure-swa/vite/index.d.ts +2 -2
  3. package/lib/adapters/azure-swa/vite/index.mjs +44 -58
  4. package/lib/adapters/bun-server/vite/index.d.ts +2 -2
  5. package/lib/adapters/bun-server/vite/index.mjs +16 -23
  6. package/lib/adapters/cloud-run/vite/index.d.ts +2 -2
  7. package/lib/adapters/cloud-run/vite/index.mjs +15 -20
  8. package/lib/adapters/cloudflare-pages/vite/index.d.ts +2 -2
  9. package/lib/adapters/cloudflare-pages/vite/index.mjs +45 -77
  10. package/lib/adapters/deno-server/vite/index.d.ts +2 -2
  11. package/lib/adapters/deno-server/vite/index.mjs +25 -35
  12. package/lib/adapters/netlify-edge/vite/index.d.ts +2 -2
  13. package/lib/adapters/netlify-edge/vite/index.mjs +49 -89
  14. package/lib/adapters/node-server/vite/index.d.ts +2 -2
  15. package/lib/adapters/node-server/vite/index.mjs +16 -23
  16. package/lib/adapters/shared/vite/index.d.ts +9 -22
  17. package/lib/adapters/shared/vite/index.mjs +273 -333
  18. package/lib/adapters/ssg/vite/index.d.ts +13 -0
  19. package/lib/adapters/ssg/vite/index.mjs +13 -0
  20. package/lib/adapters/vercel-edge/vite/index.d.ts +3 -3
  21. package/lib/adapters/vercel-edge/vite/index.mjs +73 -80
  22. package/lib/chunks/dev-preloaded-route-loader.mjs +2 -0
  23. package/lib/chunks/format.mjs +24 -0
  24. package/lib/chunks/fs.mjs +133 -0
  25. package/lib/chunks/head.qwik.mjs +1217 -0
  26. package/lib/chunks/http-error.qwik.mjs +27 -0
  27. package/lib/chunks/pathname.mjs +57 -0
  28. package/lib/chunks/request-body-limit.mjs +27 -0
  29. package/lib/chunks/request-path.mjs +49 -0
  30. package/lib/chunks/routes.mjs +26 -0
  31. package/lib/chunks/server-error.mjs +16 -0
  32. package/lib/chunks/system.mjs +265 -0
  33. package/lib/chunks/url.mjs +59 -0
  34. package/lib/chunks/user-response.mjs +1707 -0
  35. package/lib/chunks/worker-thread.mjs +264 -0
  36. package/lib/index.d.ts +626 -170
  37. package/lib/index.qwik.mjs +1649 -1964
  38. package/lib/middleware/aws-lambda/index.d.ts +15 -16
  39. package/lib/middleware/aws-lambda/index.mjs +45 -54
  40. package/lib/middleware/azure-swa/index.mjs +85 -295
  41. package/lib/middleware/bun/index.d.ts +20 -5
  42. package/lib/middleware/bun/index.mjs +119 -205
  43. package/lib/middleware/cloudflare-pages/index.mjs +83 -105
  44. package/lib/middleware/deno/index.d.ts +22 -5
  45. package/lib/middleware/deno/index.mjs +105 -192
  46. package/lib/middleware/firebase/index.mjs +22 -35
  47. package/lib/middleware/netlify-edge/index.mjs +63 -81
  48. package/lib/middleware/node/index.d.ts +17 -5
  49. package/lib/middleware/node/index.mjs +299 -273
  50. package/lib/middleware/request-handler/index.d.ts +206 -99
  51. package/lib/middleware/request-handler/index.mjs +117 -1648
  52. package/lib/middleware/vercel-edge/index.mjs +76 -101
  53. package/lib/modules.d.ts +11 -16
  54. package/lib/service-worker/index.mjs +13 -0
  55. package/lib/{static → ssg}/index.d.ts +46 -22
  56. package/lib/ssg/index.mjs +257 -0
  57. package/lib/vite/index.d.ts +58 -10
  58. package/lib/vite/index.mjs +2459 -27446
  59. package/modules.d.ts +11 -16
  60. package/package.json +63 -67
  61. package/ssg.d.ts +2 -0
  62. package/static.d.ts +1 -1
  63. package/lib/adapters/azure-swa/vite/index.cjs +0 -96
  64. package/lib/adapters/bun-server/vite/index.cjs +0 -50
  65. package/lib/adapters/cloud-run/vite/index.cjs +0 -47
  66. package/lib/adapters/cloudflare-pages/vite/index.cjs +0 -115
  67. package/lib/adapters/deno-server/vite/index.cjs +0 -62
  68. package/lib/adapters/netlify-edge/vite/index.cjs +0 -129
  69. package/lib/adapters/node-server/vite/index.cjs +0 -50
  70. package/lib/adapters/shared/vite/index.cjs +0 -378
  71. package/lib/adapters/static/vite/index.cjs +0 -368
  72. package/lib/adapters/static/vite/index.d.ts +0 -10
  73. package/lib/adapters/static/vite/index.mjs +0 -331
  74. package/lib/adapters/vercel-edge/vite/index.cjs +0 -118
  75. package/lib/index.qwik.cjs +0 -2022
  76. package/lib/middleware/node/index.cjs +0 -314
  77. package/lib/middleware/request-handler/index.cjs +0 -1691
  78. package/lib/service-worker.cjs +0 -17
  79. package/lib/service-worker.mjs +0 -15
  80. package/lib/static/deno.mjs +0 -8
  81. package/lib/static/index.cjs +0 -67
  82. package/lib/static/index.mjs +0 -48
  83. package/lib/static/node.cjs +0 -1126
  84. package/lib/static/node.mjs +0 -1088
  85. package/lib/vite/index.cjs +0 -27525
  86. package/middleware/request-handler/generated/not-found-paths.ts +0 -7
  87. package/middleware/request-handler/generated/static-paths.ts +0 -35
@@ -1,208 +1,122 @@
1
- // packages/qwik-router/src/middleware/bun/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";
1
+ import { n as MIME_TYPES, t as normalizeRequestUrl } from "../../chunks/url.mjs";
2
+ import { isDev } from "@qwik.dev/core/build";
5
3
  import { setServerPlatform } from "@qwik.dev/core/server";
6
- import {
7
- _TextEncoderStream_polyfill,
8
- mergeHeadersCookies,
9
- requestHandler
10
- } from "../request-handler/index.mjs";
11
4
  import { extname, join } from "node:path";
12
-
13
- // packages/qwik-router/src/middleware/request-handler/mime-types.ts
14
- var MIME_TYPES = {
15
- "3gp": "video/3gpp",
16
- "3gpp": "video/3gpp",
17
- asf: "video/x-ms-asf",
18
- asx: "video/x-ms-asf",
19
- avi: "video/x-msvideo",
20
- avif: "image/avif",
21
- bmp: "image/x-ms-bmp",
22
- css: "text/css",
23
- flv: "video/x-flv",
24
- gif: "image/gif",
25
- htm: "text/html",
26
- html: "text/html",
27
- ico: "image/x-icon",
28
- jng: "image/x-jng",
29
- jpeg: "image/jpeg",
30
- jpg: "image/jpeg",
31
- js: "application/javascript",
32
- json: "application/json",
33
- kar: "audio/midi",
34
- m4a: "audio/x-m4a",
35
- m4v: "video/x-m4v",
36
- mid: "audio/midi",
37
- midi: "audio/midi",
38
- mng: "video/x-mng",
39
- mov: "video/quicktime",
40
- mp3: "audio/mpeg",
41
- mp4: "video/mp4",
42
- mpeg: "video/mpeg",
43
- mpg: "video/mpeg",
44
- ogg: "audio/ogg",
45
- pdf: "application/pdf",
46
- png: "image/png",
47
- rar: "application/x-rar-compressed",
48
- shtml: "text/html",
49
- svg: "image/svg+xml",
50
- svgz: "image/svg+xml",
51
- tif: "image/tiff",
52
- tiff: "image/tiff",
53
- ts: "video/mp2t",
54
- txt: "text/plain",
55
- wbmp: "image/vnd.wap.wbmp",
56
- webm: "video/webm",
57
- webp: "image/webp",
58
- wmv: "video/x-ms-wmv",
59
- woff: "font/woff",
60
- woff2: "font/woff2",
61
- xml: "text/xml",
62
- zip: "application/zip"
63
- };
64
-
65
- // packages/qwik-router/src/middleware/bun/index.ts
66
- function createQwikRouter(opts) {
67
- var _a;
68
- if (opts.qwikCityPlan && !opts.qwikRouterConfig) {
69
- console.warn("qwikCityPlan is deprecated. Use qwikRouterConfig instead.");
70
- opts.qwikRouterConfig = opts.qwikCityPlan;
71
- } else if (!opts.qwikRouterConfig) {
72
- throw new Error("qwikRouterConfig is required.");
73
- }
74
- globalThis.TextEncoderStream ||= _TextEncoderStream_polyfill;
75
- const qwikSerializer = { _deserialize, _serialize, _verifySerializable };
76
- if (opts.manifest) {
77
- setServerPlatform(opts.manifest);
78
- }
79
- const staticFolder = ((_a = opts.static) == null ? void 0 : _a.root) ?? join(Bun.fileURLToPath(import.meta.url), "..", "..", "dist");
80
- async function router(request) {
81
- try {
82
- const url = new URL(request.url);
83
- const serverRequestEv = {
84
- mode: "server",
85
- locale: void 0,
86
- url,
87
- env: {
88
- get(key) {
89
- return Bun.env[key];
90
- }
91
- },
92
- request,
93
- getWritableStream: (status, headers, cookies, resolve) => {
94
- const { readable, writable } = new TransformStream();
95
- const response = new Response(readable, {
96
- status,
97
- headers: mergeHeadersCookies(headers, cookies)
98
- });
99
- resolve(response);
100
- return writable;
101
- },
102
- platform: {
103
- ssr: true
104
- },
105
- getClientConn: () => {
106
- return opts.getClientConn ? opts.getClientConn(request) : {};
107
- }
108
- };
109
- const handledResponse = await requestHandler(serverRequestEv, opts, qwikSerializer);
110
- if (handledResponse) {
111
- handledResponse.completion.then((v) => {
112
- if (v) {
113
- console.error(v);
114
- }
115
- });
116
- const response = await handledResponse.response;
117
- if (response) {
118
- const status = response.status;
119
- const location = response.headers.get("Location");
120
- const isRedirect = status >= 301 && status <= 308 && location;
121
- if (isRedirect) {
122
- return new Response(null, response);
123
- }
124
- return response;
125
- }
126
- }
127
- return null;
128
- } catch (e) {
129
- console.error(e);
130
- return new Response(String(e || "Error"), {
131
- status: 500,
132
- headers: { "Content-Type": "text/plain; charset=utf-8", "X-Error": "bun-server" }
133
- });
134
- }
135
- }
136
- const notFound = async (request) => {
137
- try {
138
- const url = new URL(request.url);
139
- const notFoundHtml = isStaticPath(request.method || "GET", url) ? "Not Found" : getNotFound(url.pathname);
140
- return new Response(notFoundHtml, {
141
- status: 404,
142
- headers: { "Content-Type": "text/html; charset=utf-8", "X-Not-Found": url.pathname }
143
- });
144
- } catch (e) {
145
- console.error(e);
146
- return new Response(String(e || "Error"), {
147
- status: 500,
148
- headers: { "Content-Type": "text/plain; charset=utf-8", "X-Error": "bun-server" }
149
- });
150
- }
151
- };
152
- const openStaticFile = async (url) => {
153
- const pathname = url.pathname;
154
- const fileName = pathname.slice(url.pathname.lastIndexOf("/"));
155
- let filePath;
156
- if (fileName.includes(".")) {
157
- filePath = join(staticFolder, pathname);
158
- } else if (opts.qwikRouterConfig.trailingSlash) {
159
- filePath = join(staticFolder, pathname + "index.html");
160
- } else {
161
- filePath = join(staticFolder, pathname, "index.html");
162
- }
163
- return {
164
- filePath,
165
- content: Bun.file(filePath)
166
- };
167
- };
168
- const staticFile = async (request) => {
169
- var _a2;
170
- try {
171
- const url = new URL(request.url);
172
- if (isStaticPath(request.method || "GET", url)) {
173
- const { filePath, content } = await openStaticFile(url);
174
- if (!await content.exists()) {
175
- return new Response("Not Found", {
176
- status: 404,
177
- headers: { "Content-Type": "text/plain; charset=utf-8", "X-Not-Found": url.pathname }
178
- });
179
- }
180
- const ext = extname(filePath).replace(/^\./, "");
181
- return new Response(await content.stream(), {
182
- status: 200,
183
- headers: {
184
- "content-type": MIME_TYPES[ext] || "text/plain; charset=utf-8",
185
- "Cache-Control": ((_a2 = opts.static) == null ? void 0 : _a2.cacheControl) || "max-age=3600"
186
- }
187
- });
188
- }
189
- return null;
190
- } catch (e) {
191
- console.error(e);
192
- return new Response(String(e || "Error"), {
193
- status: 500,
194
- headers: { "Content-Type": "text/plain; charset=utf-8", "X-Error": "bun-server" }
195
- });
196
- }
197
- };
198
- return {
199
- router,
200
- notFound,
201
- staticFile
202
- };
5
+ import { _TextEncoderStream_polyfill, isStaticPath, mergeHeadersCookies, requestHandler } from "@qwik.dev/router/middleware/request-handler";
6
+ function getRequestUrl(request, opts) {
7
+ const url = new URL(request.url);
8
+ const origin = opts.getOrigin?.(request) ?? Bun.env.ORIGIN;
9
+ if (!origin) return url;
10
+ return normalizeRequestUrl(`${url.pathname}${url.search}${url.hash}`, origin);
203
11
  }
204
- var createQwikCity = createQwikRouter;
205
- export {
206
- createQwikCity,
207
- createQwikRouter
208
- };
12
+ /** @public */ function createQwikRouter(opts) {
13
+ globalThis.TextEncoderStream ||= _TextEncoderStream_polyfill;
14
+ if (opts.manifest) setServerPlatform(opts.manifest);
15
+ const staticFolder = opts.static?.root ?? join(Bun.fileURLToPath(import.meta.url), "..", "..", "dist");
16
+ async function router(request) {
17
+ try {
18
+ const serverRequestEv = {
19
+ mode: "server",
20
+ locale: void 0,
21
+ url: getRequestUrl(request, opts),
22
+ env: { get(key) {
23
+ return Bun.env[key];
24
+ } },
25
+ request,
26
+ getWritableStream: (status, headers, cookies, resolve) => {
27
+ const { readable, writable } = new TransformStream();
28
+ resolve(new Response(readable, {
29
+ status,
30
+ headers: mergeHeadersCookies(headers, cookies)
31
+ }));
32
+ return writable;
33
+ },
34
+ platform: { ssr: true },
35
+ getClientConn: () => {
36
+ return opts.getClientConn ? opts.getClientConn(request) : {};
37
+ }
38
+ };
39
+ const handledResponse = await requestHandler(serverRequestEv, opts);
40
+ if (handledResponse) {
41
+ handledResponse.completion.then((completion) => {
42
+ if (completion) console.error(completion);
43
+ });
44
+ const response = await handledResponse.response;
45
+ if (response) {
46
+ const status = response.status;
47
+ const location = response.headers.get("Location");
48
+ if (status >= 301 && status <= 308 && location) return new Response(null, response);
49
+ return response;
50
+ }
51
+ }
52
+ return null;
53
+ } catch (e) {
54
+ console.error(e);
55
+ return new Response(isDev ? String(e || "Error") : "Internal Server Error", {
56
+ status: 500,
57
+ headers: {
58
+ "Content-Type": "text/plain; charset=utf-8",
59
+ "X-Error": "bun-server"
60
+ }
61
+ });
62
+ }
63
+ }
64
+ /** @deprecated `router` handles 404 responses. Will be removed in V3. */ const notFound = async (_request) => {
65
+ return null;
66
+ };
67
+ const openStaticFile = async (url) => {
68
+ const pathname = url.pathname;
69
+ const fileName = pathname.slice(url.pathname.lastIndexOf("/"));
70
+ let filePath;
71
+ if (fileName.includes(".")) filePath = join(staticFolder, pathname);
72
+ else if (!globalThis.__NO_TRAILING_SLASH__) filePath = join(staticFolder, pathname + "index.html");
73
+ else filePath = join(staticFolder, pathname, "index.html");
74
+ return {
75
+ filePath,
76
+ content: Bun.file(filePath)
77
+ };
78
+ };
79
+ const staticFile = async (request) => {
80
+ try {
81
+ const url = getRequestUrl(request, opts);
82
+ if (isStaticPath(request.method || "GET", url)) {
83
+ const { filePath, content } = await openStaticFile(url);
84
+ if (!await content.exists()) return new Response("Not Found", {
85
+ status: 404,
86
+ headers: {
87
+ "Content-Type": "text/plain; charset=utf-8",
88
+ "X-Not-Found": url.pathname
89
+ }
90
+ });
91
+ const ext = extname(filePath).replace(/^\./, "");
92
+ return new Response(await content.stream(), {
93
+ status: 200,
94
+ headers: {
95
+ "content-type": MIME_TYPES[ext] || "text/plain; charset=utf-8",
96
+ "Cache-Control": opts.static?.cacheControl || "max-age=3600"
97
+ }
98
+ });
99
+ }
100
+ return null;
101
+ } catch (e) {
102
+ console.error(e);
103
+ return new Response(isDev ? String(e || "Error") : "Internal Server Error", {
104
+ status: 500,
105
+ headers: {
106
+ "Content-Type": "text/plain; charset=utf-8",
107
+ "X-Error": "bun-server"
108
+ }
109
+ });
110
+ }
111
+ };
112
+ return {
113
+ router,
114
+ notFound,
115
+ staticFile
116
+ };
117
+ }
118
+ /**
119
+ * @deprecated Use `createQwikRouter` instead. Will be removed in V3
120
+ * @public
121
+ */ var createQwikCity = createQwikRouter;
122
+ export { createQwikCity, createQwikRouter };
@@ -1,107 +1,85 @@
1
- // packages/qwik-router/src/middleware/cloudflare-pages/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";
1
+ import { isDev } from "@qwik.dev/core/build";
5
2
  import { setServerPlatform } from "@qwik.dev/core/server";
6
- import {
7
- _TextEncoderStream_polyfill,
8
- mergeHeadersCookies,
9
- requestHandler
10
- } from "../request-handler/index.mjs";
11
- function createQwikRouter(opts) {
12
- if (opts.qwikCityPlan && !opts.qwikRouterConfig) {
13
- console.warn("qwikCityPlan is deprecated. Use qwikRouterConfig instead.");
14
- opts.qwikRouterConfig = opts.qwikCityPlan;
15
- } else if (!opts.qwikRouterConfig) {
16
- throw new Error("qwikRouterConfig is required.");
17
- }
18
- try {
19
- new globalThis.TextEncoderStream();
20
- } catch (e) {
21
- globalThis.TextEncoderStream = _TextEncoderStream_polyfill;
22
- }
23
- const qwikSerializer = { _deserialize, _serialize, _verifySerializable };
24
- if (opts.manifest) {
25
- setServerPlatform(opts.manifest);
26
- }
27
- async function onCloudflarePagesFetch(request, env, ctx) {
28
- try {
29
- const url = new URL(request.url);
30
- if (isStaticPath(request.method, url)) {
31
- return env.ASSETS.fetch(request);
32
- }
33
- const useCache = url.hostname !== "127.0.0.1" && url.hostname !== "localhost" && url.port === "" && request.method === "GET";
34
- const cacheKey = new Request(url.href, request);
35
- const cache = useCache ? await caches.open("custom:qwikrouter") : null;
36
- if (cache) {
37
- const cachedResponse = await cache.match(cacheKey);
38
- if (cachedResponse) {
39
- return cachedResponse;
40
- }
41
- }
42
- const serverRequestEv = {
43
- mode: "server",
44
- locale: void 0,
45
- url,
46
- request,
47
- env: {
48
- get(key) {
49
- return env[key];
50
- }
51
- },
52
- getWritableStream: (status, headers, cookies, resolve) => {
53
- const { readable, writable } = new TransformStream();
54
- const response = new Response(readable, {
55
- status,
56
- headers: mergeHeadersCookies(headers, cookies)
57
- });
58
- resolve(response);
59
- return writable;
60
- },
61
- getClientConn: () => {
62
- return {
63
- ip: request.headers.get("CF-connecting-ip") || "",
64
- country: request.headers.get("CF-IPCountry") || ""
65
- };
66
- },
67
- platform: {
68
- request,
69
- env,
70
- ctx
71
- }
72
- };
73
- const handledResponse = await requestHandler(serverRequestEv, opts, qwikSerializer);
74
- if (handledResponse) {
75
- handledResponse.completion.then((v) => {
76
- if (v) {
77
- console.error(v);
78
- }
79
- });
80
- const response = await handledResponse.response;
81
- if (response) {
82
- if (response.ok && cache && response.headers.has("Cache-Control")) {
83
- ctx.waitUntil(cache.put(cacheKey, response.clone()));
84
- }
85
- return response;
86
- }
87
- }
88
- const notFoundHtml = isStaticPath(request.method || "GET", url) ? "Not Found" : getNotFound(url.pathname);
89
- return new Response(notFoundHtml, {
90
- status: 404,
91
- headers: { "Content-Type": "text/html; charset=utf-8", "X-Not-Found": url.pathname }
92
- });
93
- } catch (e) {
94
- console.error(e);
95
- return new Response(String(e || "Error"), {
96
- status: 500,
97
- headers: { "Content-Type": "text/plain; charset=utf-8", "X-Error": "cloudflare-pages" }
98
- });
99
- }
100
- }
101
- return onCloudflarePagesFetch;
3
+ import { _TextEncoderStream_polyfill, getErrorHtml, isStaticPath, mergeHeadersCookies, requestHandler } from "@qwik.dev/router/middleware/request-handler";
4
+ /** @public */ function createQwikRouter(opts) {
5
+ try {
6
+ new globalThis.TextEncoderStream();
7
+ } catch {
8
+ globalThis.TextEncoderStream = _TextEncoderStream_polyfill;
9
+ }
10
+ if (opts.manifest) setServerPlatform(opts.manifest);
11
+ async function onCloudflarePagesFetch(request, env, ctx) {
12
+ try {
13
+ const url = new URL(request.url);
14
+ if (isStaticPath(request.method, url)) return env.ASSETS.fetch(request);
15
+ const useCache = url.hostname !== "127.0.0.1" && url.hostname !== "localhost" && url.port === "" && request.method === "GET";
16
+ const cacheKey = new Request(url.href, request);
17
+ const cache = useCache ? await caches.open("custom:qwikrouter") : null;
18
+ if (cache) {
19
+ const cachedResponse = await cache.match(cacheKey);
20
+ if (cachedResponse) return cachedResponse;
21
+ }
22
+ const handledResponse = await requestHandler({
23
+ mode: "server",
24
+ locale: void 0,
25
+ url,
26
+ request,
27
+ env: { get(key) {
28
+ return env[key];
29
+ } },
30
+ getWritableStream: (status, headers, cookies, resolve) => {
31
+ const { readable, writable } = new TransformStream();
32
+ resolve(new Response(readable, {
33
+ status,
34
+ headers: mergeHeadersCookies(headers, cookies)
35
+ }));
36
+ return writable;
37
+ },
38
+ getClientConn: () => {
39
+ return {
40
+ ip: request.headers.get("CF-connecting-ip") || "",
41
+ country: request.headers.get("CF-IPCountry") || ""
42
+ };
43
+ },
44
+ platform: {
45
+ request,
46
+ env,
47
+ ctx
48
+ }
49
+ }, opts);
50
+ if (handledResponse) {
51
+ handledResponse.completion.then((completion) => {
52
+ if (completion) console.error(completion);
53
+ });
54
+ const response = await handledResponse.response;
55
+ if (response) {
56
+ if (response.ok && cache && response.headers.has("Cache-Control")) ctx.waitUntil(cache.put(cacheKey, response.clone()));
57
+ return response;
58
+ }
59
+ }
60
+ const notFoundHtml = !request.headers.get("accept")?.includes("text/html") || isStaticPath(request.method || "GET", url) ? "Not Found" : getErrorHtml(404, "Not Found");
61
+ return new Response(notFoundHtml, {
62
+ status: 404,
63
+ headers: {
64
+ "Content-Type": "text/html; charset=utf-8",
65
+ "X-Not-Found": url.pathname
66
+ }
67
+ });
68
+ } catch (e) {
69
+ console.error(e);
70
+ return new Response(isDev ? String(e || "Error") : "Internal Server Error", {
71
+ status: 500,
72
+ headers: {
73
+ "Content-Type": "text/plain; charset=utf-8",
74
+ "X-Error": "cloudflare-pages"
75
+ }
76
+ });
77
+ }
78
+ }
79
+ return onCloudflarePagesFetch;
102
80
  }
103
- var createQwikCity = createQwikRouter;
104
- export {
105
- createQwikCity,
106
- createQwikRouter
107
- };
81
+ /**
82
+ * @deprecated Use `createQwikRouter` instead. Will be removed in V3
83
+ * @public
84
+ */ var createQwikCity = createQwikRouter;
85
+ export { createQwikCity, createQwikRouter };
@@ -8,11 +8,7 @@ import type { ServerRenderOptions } from '@qwik.dev/router/middleware/request-ha
8
8
  export declare const createQwikCity: typeof createQwikRouter;
9
9
 
10
10
  /** @public */
11
- export declare function createQwikRouter(opts: QwikRouterDenoOptions): {
12
- router: (request: Request, info: ServeHandlerInfo) => Promise<Response | null>;
13
- notFound: (request: Request) => Promise<Response>;
14
- staticFile: (request: Request) => Promise<Response | null>;
15
- };
11
+ export declare function createQwikRouter(opts: QwikRouterDenoOptions): QwikRouterDenoMiddleware;
16
12
 
17
13
  /** @public */
18
14
  export declare interface NetAddr {
@@ -27,8 +23,18 @@ export declare interface NetAddr {
27
23
  */
28
24
  export declare type QwikCityDenoOptions = QwikRouterDenoOptions;
29
25
 
26
+ /** @public */
27
+ export declare interface QwikRouterDenoMiddleware {
28
+ router: (request: Request, info: ServeHandlerInfo) => Promise<Response | null>;
29
+ /** @deprecated `router` handles 404 responses. Will be removed in V3. */
30
+ notFound: (request: Request) => Promise<Response>;
31
+ staticFile: (request: Request) => Promise<Response | null>;
32
+ }
33
+
30
34
  /** @public */
31
35
  export declare interface QwikRouterDenoOptions extends ServerRenderOptions {
36
+ /** Maximum request body size in bytes. Defaults to 10 MiB. */
37
+ requestBodyLimit?: number;
32
38
  /** Options for serving static files */
33
39
  static?: {
34
40
  /** The root folder for statics files. Defaults to /dist */
@@ -36,6 +42,17 @@ export declare interface QwikRouterDenoOptions extends ServerRenderOptions {
36
42
  /** Set the Cache-Control header for all static files */
37
43
  cacheControl?: string;
38
44
  };
45
+ /**
46
+ * Provide a function that computes the origin of the server, used to resolve relative URLs and
47
+ * validate the request origin against CSRF attacks.
48
+ *
49
+ * When not specified, it defaults to the `ORIGIN` environment variable (if set).
50
+ *
51
+ * If `ORIGIN` is not set, it's derived from the incoming request, which is not recommended for
52
+ * production use.
53
+ */
54
+ getOrigin?: (request: Request, info?: ServeHandlerInfo) => string | null;
55
+ /** Provide a function that returns a `ClientConn` for the given request. */
39
56
  getClientConn?: (request: Request, info: ServeHandlerInfo) => ClientConn;
40
57
  }
41
58