@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.
- package/lib/adapters/azure-swa/vite/index.mjs +28 -207
- package/lib/adapters/bun-server/vite/index.mjs +16 -202
- package/lib/adapters/cloud-run/vite/index.mjs +15 -201
- package/lib/adapters/cloudflare-pages/vite/index.mjs +65 -6
- package/lib/adapters/deno-server/vite/index.mjs +18 -204
- package/lib/adapters/netlify-edge/vite/index.mjs +58 -246
- package/lib/adapters/node-server/vite/index.mjs +16 -202
- package/lib/adapters/shared/vite/index.d.ts +4 -4
- package/lib/adapters/shared/vite/index.mjs +250 -149
- package/lib/adapters/ssg/vite/index.mjs +12 -199
- package/lib/adapters/vercel-edge/vite/index.d.ts +1 -1
- package/lib/adapters/vercel-edge/vite/index.mjs +50 -235
- package/lib/chunks/error-handler.mjs +57 -0
- package/lib/chunks/format-error.mjs +137 -0
- package/lib/chunks/fs.mjs +254 -0
- package/lib/chunks/index.mjs +884 -0
- package/lib/chunks/mime-types.mjs +52 -0
- package/lib/chunks/routing.qwik.mjs +429 -0
- package/lib/chunks/types.qwik.mjs +22 -0
- package/lib/index.d.ts +11 -4
- package/lib/index.qwik.mjs +533 -1019
- package/lib/middleware/aws-lambda/index.mjs +38 -28
- package/lib/middleware/azure-swa/index.mjs +65 -48
- package/lib/middleware/bun/index.mjs +104 -119
- package/lib/middleware/cloudflare-pages/index.mjs +69 -49
- package/lib/middleware/deno/index.mjs +94 -114
- package/lib/middleware/firebase/index.mjs +26 -18
- package/lib/middleware/netlify-edge/index.mjs +53 -38
- package/lib/middleware/node/index.mjs +184 -167
- package/lib/middleware/request-handler/index.d.ts +22 -4
- package/lib/middleware/request-handler/index.mjs +1203 -877
- package/lib/middleware/vercel-edge/index.mjs +72 -49
- package/lib/service-worker/index.mjs +4 -0
- package/lib/ssg/index.mjs +14 -22
- package/lib/vite/index.d.ts +13 -7
- package/lib/vite/index.mjs +1609 -1217
- package/package.json +27 -44
- package/lib/adapters/azure-swa/vite/index-BqUeglYs.cjs +0 -1
- package/lib/adapters/azure-swa/vite/index-CBIchDYq.js +0 -651
- package/lib/adapters/azure-swa/vite/index-ClHGw5z1.js +0 -6
- package/lib/adapters/azure-swa/vite/index-CrwlB95_.js +0 -22
- package/lib/adapters/azure-swa/vite/index-DTIOTwZo.cjs +0 -11
- package/lib/adapters/azure-swa/vite/index-vQuPcef3.cjs +0 -1
- package/lib/adapters/azure-swa/vite/index.cjs +0 -5
- package/lib/adapters/bun-server/vite/index-BqUeglYs.cjs +0 -1
- package/lib/adapters/bun-server/vite/index-CBIchDYq.js +0 -651
- package/lib/adapters/bun-server/vite/index-ClHGw5z1.js +0 -6
- package/lib/adapters/bun-server/vite/index-CrwlB95_.js +0 -22
- package/lib/adapters/bun-server/vite/index-DTIOTwZo.cjs +0 -11
- package/lib/adapters/bun-server/vite/index-vQuPcef3.cjs +0 -1
- package/lib/adapters/bun-server/vite/index.cjs +0 -5
- package/lib/adapters/cloud-run/vite/index-BqUeglYs.cjs +0 -1
- package/lib/adapters/cloud-run/vite/index-CBIchDYq.js +0 -651
- package/lib/adapters/cloud-run/vite/index-ClHGw5z1.js +0 -6
- package/lib/adapters/cloud-run/vite/index-CrwlB95_.js +0 -22
- package/lib/adapters/cloud-run/vite/index-DTIOTwZo.cjs +0 -11
- package/lib/adapters/cloud-run/vite/index-vQuPcef3.cjs +0 -1
- package/lib/adapters/cloud-run/vite/index.cjs +0 -5
- package/lib/adapters/cloudflare-pages/vite/index-Bg_9YkM5.js +0 -22
- package/lib/adapters/cloudflare-pages/vite/index-C1aDmh1S.cjs +0 -1
- package/lib/adapters/cloudflare-pages/vite/index-CHT9Y93A.js +0 -254
- package/lib/adapters/cloudflare-pages/vite/index-Ck7KvpK1.cjs +0 -11
- package/lib/adapters/cloudflare-pages/vite/index-ClHGw5z1.js +0 -6
- package/lib/adapters/cloudflare-pages/vite/index-Cp1cjAds.js +0 -645
- package/lib/adapters/cloudflare-pages/vite/index-D9RL9dvJ.cjs +0 -5
- package/lib/adapters/cloudflare-pages/vite/index-vQuPcef3.cjs +0 -1
- package/lib/adapters/cloudflare-pages/vite/index.cjs +0 -1
- package/lib/adapters/deno-server/vite/index-BqUeglYs.cjs +0 -1
- package/lib/adapters/deno-server/vite/index-CBIchDYq.js +0 -651
- package/lib/adapters/deno-server/vite/index-ClHGw5z1.js +0 -6
- package/lib/adapters/deno-server/vite/index-CrwlB95_.js +0 -22
- package/lib/adapters/deno-server/vite/index-DTIOTwZo.cjs +0 -11
- package/lib/adapters/deno-server/vite/index-vQuPcef3.cjs +0 -1
- package/lib/adapters/deno-server/vite/index.cjs +0 -5
- package/lib/adapters/netlify-edge/vite/index-BqUeglYs.cjs +0 -1
- package/lib/adapters/netlify-edge/vite/index-CBIchDYq.js +0 -651
- package/lib/adapters/netlify-edge/vite/index-ClHGw5z1.js +0 -6
- package/lib/adapters/netlify-edge/vite/index-CrwlB95_.js +0 -22
- package/lib/adapters/netlify-edge/vite/index-DTIOTwZo.cjs +0 -11
- package/lib/adapters/netlify-edge/vite/index-vQuPcef3.cjs +0 -1
- package/lib/adapters/netlify-edge/vite/index.cjs +0 -6
- package/lib/adapters/node-server/vite/index-BqUeglYs.cjs +0 -1
- package/lib/adapters/node-server/vite/index-CBIchDYq.js +0 -651
- package/lib/adapters/node-server/vite/index-ClHGw5z1.js +0 -6
- package/lib/adapters/node-server/vite/index-CrwlB95_.js +0 -22
- package/lib/adapters/node-server/vite/index-DTIOTwZo.cjs +0 -11
- package/lib/adapters/node-server/vite/index-vQuPcef3.cjs +0 -1
- package/lib/adapters/node-server/vite/index.cjs +0 -5
- package/lib/adapters/shared/vite/index-BqUeglYs.cjs +0 -1
- package/lib/adapters/shared/vite/index-CBIchDYq.js +0 -651
- package/lib/adapters/shared/vite/index-ClHGw5z1.js +0 -6
- package/lib/adapters/shared/vite/index-CrwlB95_.js +0 -22
- package/lib/adapters/shared/vite/index-DTIOTwZo.cjs +0 -11
- package/lib/adapters/shared/vite/index-vQuPcef3.cjs +0 -1
- package/lib/adapters/shared/vite/index.cjs +0 -5
- package/lib/adapters/ssg/vite/index-BqUeglYs.cjs +0 -1
- package/lib/adapters/ssg/vite/index-CBIchDYq.js +0 -651
- package/lib/adapters/ssg/vite/index-ClHGw5z1.js +0 -6
- package/lib/adapters/ssg/vite/index-CrwlB95_.js +0 -22
- package/lib/adapters/ssg/vite/index-DTIOTwZo.cjs +0 -11
- package/lib/adapters/ssg/vite/index-vQuPcef3.cjs +0 -1
- package/lib/adapters/ssg/vite/index.cjs +0 -5
- package/lib/adapters/vercel-edge/vite/index-BqUeglYs.cjs +0 -1
- package/lib/adapters/vercel-edge/vite/index-CBIchDYq.js +0 -651
- package/lib/adapters/vercel-edge/vite/index-ClHGw5z1.js +0 -6
- package/lib/adapters/vercel-edge/vite/index-CrwlB95_.js +0 -22
- package/lib/adapters/vercel-edge/vite/index-DTIOTwZo.cjs +0 -11
- package/lib/adapters/vercel-edge/vite/index-vQuPcef3.cjs +0 -1
- package/lib/adapters/vercel-edge/vite/index.cjs +0 -5
- package/lib/index.qwik.cjs +0 -2126
- package/lib/middleware/aws-lambda/index.cjs +0 -1
- package/lib/middleware/azure-swa/index.cjs +0 -1
- package/lib/middleware/bun/index.cjs +0 -1
- package/lib/middleware/cloudflare-pages/index.cjs +0 -1
- package/lib/middleware/deno/index.cjs +0 -1
- package/lib/middleware/firebase/index.cjs +0 -1
- package/lib/middleware/netlify-edge/index.cjs +0 -1
- package/lib/middleware/node/index.cjs +0 -1
- package/lib/middleware/request-handler/index.cjs +0 -18
- package/lib/middleware/vercel-edge/index.cjs +0 -1
- package/lib/service-worker.cjs +0 -1
- package/lib/service-worker.mjs +0 -5
- package/lib/ssg/deno.cjs +0 -1
- package/lib/ssg/deno.mjs +0 -6
- package/lib/ssg/index-CBIchDYq.js +0 -651
- package/lib/ssg/index-ClHGw5z1.js +0 -6
- package/lib/ssg/index-DTIOTwZo.cjs +0 -11
- package/lib/ssg/index-vQuPcef3.cjs +0 -1
- package/lib/ssg/index.cjs +0 -1
- package/lib/ssg/node.cjs +0 -11
- package/lib/ssg/node.mjs +0 -651
- package/lib/vite/index.cjs +0 -42
|
@@ -1,41 +1,51 @@
|
|
|
1
|
-
import { createQwikRouter as
|
|
2
|
-
|
|
3
|
-
|
|
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
|
|
6
|
-
render:
|
|
7
|
-
qwikRouterConfig:
|
|
8
|
-
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(
|
|
13
|
-
|
|
16
|
+
getOrigin(req) {
|
|
17
|
+
if (process.env.IS_OFFLINE) {
|
|
18
|
+
return `http://${req.headers.host}`;
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
14
21
|
}
|
|
15
|
-
})
|
|
22
|
+
});
|
|
23
|
+
const fixPath = (pathT) => {
|
|
16
24
|
if (!globalThis.__NO_TRAILING_SLASH__) {
|
|
17
|
-
const
|
|
18
|
-
if (
|
|
19
|
-
return
|
|
20
|
-
|
|
21
|
-
|
|
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
|
|
33
|
+
return pathT;
|
|
24
34
|
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
|
|
34
|
-
|
|
43
|
+
};
|
|
44
|
+
return { fixPath, router, staticFile, notFound, handle };
|
|
45
|
+
} catch (err) {
|
|
46
|
+
throw new Error(err.message);
|
|
35
47
|
}
|
|
36
48
|
}
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
u as createQwikRouter
|
|
41
|
-
};
|
|
49
|
+
const createQwikCity = createQwikRouter;
|
|
50
|
+
|
|
51
|
+
export { createQwikCity, createQwikRouter };
|
|
@@ -1,74 +1,91 @@
|
|
|
1
|
-
import { setServerPlatform
|
|
2
|
-
import { requestHandler
|
|
3
|
-
import { parseString
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
|
16
|
-
platform:
|
|
24
|
+
url,
|
|
25
|
+
platform: context,
|
|
17
26
|
env: {
|
|
18
|
-
get(
|
|
19
|
-
return process.env[
|
|
27
|
+
get(key) {
|
|
28
|
+
return process.env[key];
|
|
20
29
|
}
|
|
21
30
|
},
|
|
22
|
-
request: new Request(
|
|
23
|
-
getWritableStream: (
|
|
24
|
-
const
|
|
25
|
-
status
|
|
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:
|
|
37
|
+
cookies: cookies.headers().map((header) => parseString(header))
|
|
29
38
|
};
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
50
|
+
resolve(response);
|
|
39
51
|
}
|
|
40
52
|
});
|
|
41
53
|
},
|
|
42
|
-
getClientConn: () =>
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
|
52
|
-
if (
|
|
53
|
-
return
|
|
68
|
+
const response = await handledResponse.response;
|
|
69
|
+
if (response) {
|
|
70
|
+
return response;
|
|
71
|
+
}
|
|
54
72
|
}
|
|
55
|
-
const
|
|
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":
|
|
59
|
-
body:
|
|
76
|
+
headers: { "Content-Type": "text/html; charset=utf-8", "X-Not-Found": url.pathname },
|
|
77
|
+
body: notFoundHtml
|
|
60
78
|
};
|
|
61
|
-
} catch (
|
|
62
|
-
|
|
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
|
|
87
|
+
return onAzureSwaRequest;
|
|
69
88
|
}
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
v as createQwikRouter
|
|
74
|
-
};
|
|
89
|
+
const createQwikCity = createQwikRouter;
|
|
90
|
+
|
|
91
|
+
export { createQwikCity, createQwikRouter };
|
|
@@ -1,156 +1,141 @@
|
|
|
1
|
-
import { setServerPlatform
|
|
2
|
-
import { _TextEncoderStream_polyfill
|
|
3
|
-
import { join
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
|
18
|
+
const url = new URL(request.url);
|
|
19
|
+
const serverRequestEv = {
|
|
60
20
|
mode: "server",
|
|
61
21
|
locale: void 0,
|
|
62
|
-
url
|
|
22
|
+
url,
|
|
63
23
|
env: {
|
|
64
|
-
get(
|
|
65
|
-
return Bun.env[
|
|
24
|
+
get(key) {
|
|
25
|
+
return Bun.env[key];
|
|
66
26
|
}
|
|
67
27
|
},
|
|
68
|
-
request
|
|
69
|
-
getWritableStream: (
|
|
70
|
-
const { readable
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
35
|
+
resolve(response);
|
|
36
|
+
return writable;
|
|
75
37
|
},
|
|
76
38
|
platform: {
|
|
77
|
-
ssr:
|
|
39
|
+
ssr: true
|
|
78
40
|
},
|
|
79
|
-
getClientConn: () =>
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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
|
|
86
|
-
if (
|
|
87
|
-
const
|
|
88
|
-
|
|
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
|
-
|
|
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
|
|
72
|
+
const notFound = async (request) => {
|
|
100
73
|
try {
|
|
101
|
-
const
|
|
102
|
-
|
|
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":
|
|
78
|
+
headers: { "Content-Type": "text/html; charset=utf-8", "X-Not-Found": url.pathname }
|
|
105
79
|
});
|
|
106
80
|
} catch (e) {
|
|
107
|
-
|
|
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
|
-
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
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
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
S as createQwikRouter
|
|
156
|
-
};
|
|
139
|
+
const createQwikCity = createQwikRouter;
|
|
140
|
+
|
|
141
|
+
export { createQwikCity, createQwikRouter };
|
|
@@ -1,75 +1,95 @@
|
|
|
1
|
-
import { setServerPlatform
|
|
2
|
-
import { _TextEncoderStream_polyfill
|
|
3
|
-
|
|
4
|
-
|
|
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 =
|
|
12
|
+
globalThis.TextEncoderStream = _TextEncoderStream_polyfill;
|
|
13
|
+
}
|
|
14
|
+
if (opts.manifest) {
|
|
15
|
+
setServerPlatform(opts.manifest);
|
|
9
16
|
}
|
|
10
|
-
|
|
11
|
-
async function m(n, s, i) {
|
|
17
|
+
async function onCloudflarePagesFetch(request, env, ctx) {
|
|
12
18
|
try {
|
|
13
|
-
const
|
|
14
|
-
if (
|
|
15
|
-
return
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
|
32
|
+
const serverRequestEv = {
|
|
23
33
|
mode: "server",
|
|
24
34
|
locale: void 0,
|
|
25
|
-
url
|
|
26
|
-
request
|
|
35
|
+
url,
|
|
36
|
+
request,
|
|
27
37
|
env: {
|
|
28
|
-
get(
|
|
29
|
-
return
|
|
38
|
+
get(key) {
|
|
39
|
+
return env[key];
|
|
30
40
|
}
|
|
31
41
|
},
|
|
32
|
-
getWritableStream: (
|
|
33
|
-
const { readable
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
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
|
|
45
|
-
env
|
|
46
|
-
ctx
|
|
58
|
+
request,
|
|
59
|
+
env,
|
|
60
|
+
ctx
|
|
47
61
|
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
|
54
|
-
if (
|
|
55
|
-
|
|
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
|
|
58
|
-
return new Response(
|
|
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":
|
|
81
|
+
headers: { "Content-Type": "text/html; charset=utf-8", "X-Not-Found": url.pathname }
|
|
61
82
|
});
|
|
62
83
|
} catch (e) {
|
|
63
|
-
|
|
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
|
|
91
|
+
return onCloudflarePagesFetch;
|
|
70
92
|
}
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
E as createQwikRouter
|
|
75
|
-
};
|
|
93
|
+
const createQwikCity = createQwikRouter;
|
|
94
|
+
|
|
95
|
+
export { createQwikCity, createQwikRouter };
|