@qwik.dev/router 2.0.0-beta.13 → 2.0.0-beta.15
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 +7 -7
- package/lib/adapters/bun-server/vite/index.mjs +7 -7
- package/lib/adapters/cloud-run/vite/index.mjs +7 -7
- package/lib/adapters/cloudflare-pages/vite/index.mjs +8 -8
- package/lib/adapters/deno-server/vite/index.mjs +7 -7
- package/lib/adapters/netlify-edge/vite/index.mjs +7 -7
- package/lib/adapters/node-server/vite/index.mjs +7 -7
- package/lib/adapters/shared/vite/index.mjs +8 -8
- package/lib/adapters/ssg/vite/index.mjs +7 -8
- package/lib/adapters/vercel-edge/vite/index.mjs +7 -7
- package/lib/chunks/error-handler.mjs +2 -4
- package/lib/chunks/format-error.mjs +6 -6
- package/lib/chunks/fs.mjs +6 -27
- package/lib/chunks/index.mjs +39 -31
- package/lib/chunks/mime-types.mjs +2 -3
- package/lib/chunks/routing.qwik.mjs +23 -47
- package/lib/chunks/types.qwik.mjs +2 -5
- package/lib/index.d.ts +2 -1
- package/lib/index.qwik.mjs +48 -68
- package/lib/middleware/aws-lambda/index.mjs +4 -5
- package/lib/middleware/azure-swa/index.mjs +6 -7
- package/lib/middleware/bun/index.mjs +8 -9
- package/lib/middleware/cloudflare-pages/index.mjs +5 -6
- package/lib/middleware/deno/index.mjs +7 -8
- package/lib/middleware/firebase/index.mjs +4 -5
- package/lib/middleware/netlify-edge/index.mjs +5 -6
- package/lib/middleware/node/index.mjs +15 -11
- package/lib/middleware/request-handler/index.d.ts +2 -2
- package/lib/middleware/request-handler/index.mjs +64 -79
- package/lib/middleware/vercel-edge/index.mjs +5 -6
- package/lib/service-worker/index.mjs +2 -3
- package/lib/ssg/index.mjs +3 -4
- package/lib/vite/index.d.ts +7 -1
- package/lib/vite/index.mjs +91 -68
- package/package.json +21 -39
- package/lib/adapters/azure-swa/vite/index.cjs +0 -61
- package/lib/adapters/bun-server/vite/index.cjs +0 -27
- package/lib/adapters/cloud-run/vite/index.cjs +0 -24
- package/lib/adapters/cloudflare-pages/vite/index.cjs +0 -65
- package/lib/adapters/deno-server/vite/index.cjs +0 -39
- package/lib/adapters/netlify-edge/vite/index.cjs +0 -88
- package/lib/adapters/node-server/vite/index.cjs +0 -27
- package/lib/adapters/shared/vite/index.cjs +0 -306
- package/lib/adapters/ssg/vite/index.cjs +0 -19
- package/lib/adapters/vercel-edge/vite/index.cjs +0 -81
- package/lib/chunks/error-handler.cjs +0 -58
- package/lib/chunks/format-error.cjs +0 -136
- package/lib/chunks/fs.cjs +0 -274
- package/lib/chunks/index.cjs +0 -877
- package/lib/chunks/mime-types.cjs +0 -52
- package/lib/chunks/routing.qwik.cjs +0 -452
- package/lib/chunks/types.qwik.cjs +0 -24
- package/lib/index.qwik.cjs +0 -1662
- package/lib/middleware/aws-lambda/index.cjs +0 -52
- package/lib/middleware/azure-swa/index.cjs +0 -92
- package/lib/middleware/bun/index.cjs +0 -143
- package/lib/middleware/cloudflare-pages/index.cjs +0 -96
- package/lib/middleware/deno/index.cjs +0 -130
- package/lib/middleware/firebase/index.cjs +0 -33
- package/lib/middleware/netlify-edge/index.cjs +0 -71
- package/lib/middleware/node/index.cjs +0 -219
- package/lib/middleware/request-handler/index.cjs +0 -1488
- package/lib/middleware/vercel-edge/index.cjs +0 -98
- package/lib/service-worker/index.cjs +0 -5
- package/lib/ssg/index.cjs +0 -15
- package/lib/vite/index.cjs +0 -2021
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const server = require("@qwik.dev/core/server");
|
|
4
|
-
const requestHandler = require("@qwik.dev/router/middleware/request-handler");
|
|
5
|
-
const fs = require("node:fs");
|
|
6
|
-
const path = require("node:path");
|
|
7
|
-
const node_url = require("node:url");
|
|
8
|
-
const mimeTypes = require("../../chunks/mime-types.cjs");
|
|
9
|
-
const node_http2 = require("node:http2");
|
|
10
|
-
var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
|
|
11
|
-
function computeOrigin(req, opts) {
|
|
12
|
-
return opts?.getOrigin?.(req) ?? opts?.origin ?? process.env.ORIGIN ?? fallbackOrigin(req);
|
|
13
|
-
}
|
|
14
|
-
function fallbackOrigin(req) {
|
|
15
|
-
const { PROTOCOL_HEADER, HOST_HEADER } = process.env;
|
|
16
|
-
const headers = req.headers;
|
|
17
|
-
const protocol = PROTOCOL_HEADER && headers[PROTOCOL_HEADER] || (req.socket.encrypted || req.connection.encrypted ? "https" : "http");
|
|
18
|
-
const hostHeader = HOST_HEADER ?? (req instanceof node_http2.Http2ServerRequest ? ":authority" : "host");
|
|
19
|
-
const host = headers[hostHeader];
|
|
20
|
-
return `${protocol}://${host}`;
|
|
21
|
-
}
|
|
22
|
-
function getUrl(req, origin) {
|
|
23
|
-
return normalizeUrl(req.originalUrl || req.url || "/", origin);
|
|
24
|
-
}
|
|
25
|
-
function isIgnoredError(message = "") {
|
|
26
|
-
const ignoredErrors = ["The stream has been destroyed", "write after end"];
|
|
27
|
-
return ignoredErrors.some((ignored) => message.includes(ignored));
|
|
28
|
-
}
|
|
29
|
-
const invalidHeadersPattern = /^:(method|scheme|authority|path)$/i;
|
|
30
|
-
function normalizeUrl(url, base) {
|
|
31
|
-
const DOUBLE_SLASH_REG = /\/\/|\\\\/g;
|
|
32
|
-
return new URL(url.replace(DOUBLE_SLASH_REG, "/"), base);
|
|
33
|
-
}
|
|
34
|
-
async function fromNodeHttp(url, req, res, mode, getClientConn) {
|
|
35
|
-
const requestHeaders = new Headers();
|
|
36
|
-
const nodeRequestHeaders = req.headers;
|
|
37
|
-
try {
|
|
38
|
-
for (const [key, value] of Object.entries(nodeRequestHeaders)) {
|
|
39
|
-
if (invalidHeadersPattern.test(key)) {
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
if (typeof value === "string") {
|
|
43
|
-
requestHeaders.set(key, value);
|
|
44
|
-
} else if (Array.isArray(value)) {
|
|
45
|
-
for (const v of value) {
|
|
46
|
-
requestHeaders.append(key, v);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
} catch (err) {
|
|
51
|
-
console.error(err);
|
|
52
|
-
}
|
|
53
|
-
const getRequestBody = async function* () {
|
|
54
|
-
for await (const chunk of req) {
|
|
55
|
-
yield chunk;
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
const body = req.method === "HEAD" || req.method === "GET" ? void 0 : getRequestBody();
|
|
59
|
-
const controller = new AbortController();
|
|
60
|
-
const options = {
|
|
61
|
-
method: req.method,
|
|
62
|
-
headers: requestHeaders,
|
|
63
|
-
body,
|
|
64
|
-
signal: controller.signal,
|
|
65
|
-
duplex: "half"
|
|
66
|
-
};
|
|
67
|
-
res.on("close", () => {
|
|
68
|
-
controller.abort();
|
|
69
|
-
});
|
|
70
|
-
const serverRequestEv = {
|
|
71
|
-
mode,
|
|
72
|
-
url,
|
|
73
|
-
request: new Request(url.href, options),
|
|
74
|
-
env: {
|
|
75
|
-
get(key) {
|
|
76
|
-
return process.env[key];
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
getWritableStream: (status, headers, cookies) => {
|
|
80
|
-
res.statusCode = status;
|
|
81
|
-
try {
|
|
82
|
-
for (const [key, value] of headers) {
|
|
83
|
-
if (invalidHeadersPattern.test(key)) {
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
res.setHeader(key, value);
|
|
87
|
-
}
|
|
88
|
-
const cookieHeaders = cookies.headers();
|
|
89
|
-
if (cookieHeaders.length > 0) {
|
|
90
|
-
res.setHeader("Set-Cookie", cookieHeaders);
|
|
91
|
-
}
|
|
92
|
-
} catch (err) {
|
|
93
|
-
console.error(err);
|
|
94
|
-
}
|
|
95
|
-
return new WritableStream({
|
|
96
|
-
write(chunk) {
|
|
97
|
-
if (res.closed || res.destroyed) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
res.write(chunk, (error) => {
|
|
101
|
-
if (error && !isIgnoredError(error.message)) {
|
|
102
|
-
console.error(error);
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
},
|
|
106
|
-
close() {
|
|
107
|
-
res.end();
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
},
|
|
111
|
-
getClientConn: () => {
|
|
112
|
-
return getClientConn ? getClientConn(req) : {
|
|
113
|
-
ip: req.socket.remoteAddress
|
|
114
|
-
};
|
|
115
|
-
},
|
|
116
|
-
platform: {
|
|
117
|
-
ssr: true,
|
|
118
|
-
incomingMessage: req,
|
|
119
|
-
node: process.versions.node
|
|
120
|
-
// Weirdly needed to make typecheck of insights happy
|
|
121
|
-
},
|
|
122
|
-
locale: void 0
|
|
123
|
-
};
|
|
124
|
-
return serverRequestEv;
|
|
125
|
-
}
|
|
126
|
-
function createQwikRouter(opts) {
|
|
127
|
-
if (opts.qwikCityPlan && !opts.qwikRouterConfig) {
|
|
128
|
-
console.warn("qwikCityPlan is deprecated. Simply remove it.");
|
|
129
|
-
opts.qwikRouterConfig = opts.qwikCityPlan;
|
|
130
|
-
}
|
|
131
|
-
if (opts.manifest) {
|
|
132
|
-
server.setServerPlatform(opts.manifest);
|
|
133
|
-
}
|
|
134
|
-
const staticFolder = opts.static?.root ?? path.join(node_url.fileURLToPath(typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("middleware/node/index.cjs", document.baseURI).href), "..", "..", "dist");
|
|
135
|
-
const router = async (req, res, next) => {
|
|
136
|
-
try {
|
|
137
|
-
const origin = computeOrigin(req, opts);
|
|
138
|
-
const serverRequestEv = await fromNodeHttp(
|
|
139
|
-
getUrl(req, origin),
|
|
140
|
-
req,
|
|
141
|
-
res,
|
|
142
|
-
"server",
|
|
143
|
-
opts.getClientConn
|
|
144
|
-
);
|
|
145
|
-
const handled = await requestHandler.requestHandler(serverRequestEv, opts);
|
|
146
|
-
if (handled) {
|
|
147
|
-
const err = await handled.completion;
|
|
148
|
-
if (err) {
|
|
149
|
-
throw err;
|
|
150
|
-
}
|
|
151
|
-
if (handled.requestEv.headersSent) {
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
next();
|
|
156
|
-
} catch (e) {
|
|
157
|
-
console.error(e);
|
|
158
|
-
next(e);
|
|
159
|
-
}
|
|
160
|
-
};
|
|
161
|
-
const notFound = async (req, res, next) => {
|
|
162
|
-
try {
|
|
163
|
-
if (!res.headersSent) {
|
|
164
|
-
const origin = computeOrigin(req, opts);
|
|
165
|
-
const url = getUrl(req, origin);
|
|
166
|
-
const notFoundHtml = !req.headers.accept?.includes("text/html") || requestHandler.isStaticPath(req.method || "GET", url) ? "Not Found" : requestHandler.getNotFound(url.pathname);
|
|
167
|
-
res.writeHead(404, {
|
|
168
|
-
"Content-Type": "text/html; charset=utf-8",
|
|
169
|
-
"X-Not-Found": url.pathname
|
|
170
|
-
});
|
|
171
|
-
res.end(notFoundHtml);
|
|
172
|
-
}
|
|
173
|
-
} catch (e) {
|
|
174
|
-
console.error(e);
|
|
175
|
-
next(e);
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
const staticFile = async (req, res, next) => {
|
|
179
|
-
try {
|
|
180
|
-
const origin = computeOrigin(req, opts);
|
|
181
|
-
const url = getUrl(req, origin);
|
|
182
|
-
if (requestHandler.isStaticPath(req.method || "GET", url)) {
|
|
183
|
-
const pathname = url.pathname;
|
|
184
|
-
let filePath;
|
|
185
|
-
if (path.basename(pathname).includes(".")) {
|
|
186
|
-
filePath = path.join(staticFolder, pathname);
|
|
187
|
-
} else if (!globalThis.__NO_TRAILING_SLASH__) {
|
|
188
|
-
filePath = path.join(staticFolder, pathname + "index.html");
|
|
189
|
-
} else {
|
|
190
|
-
filePath = path.join(staticFolder, pathname, "index.html");
|
|
191
|
-
}
|
|
192
|
-
const ext = path.extname(filePath).replace(/^\./, "");
|
|
193
|
-
const stream = fs.createReadStream(filePath);
|
|
194
|
-
stream.on("error", next);
|
|
195
|
-
const contentType = mimeTypes.MIME_TYPES[ext];
|
|
196
|
-
if (contentType) {
|
|
197
|
-
res.setHeader("Content-Type", contentType);
|
|
198
|
-
}
|
|
199
|
-
if (opts.static?.cacheControl) {
|
|
200
|
-
res.setHeader("Cache-Control", opts.static.cacheControl);
|
|
201
|
-
}
|
|
202
|
-
stream.pipe(res);
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
return next();
|
|
206
|
-
} catch (e) {
|
|
207
|
-
console.error(e);
|
|
208
|
-
next(e);
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
return {
|
|
212
|
-
router,
|
|
213
|
-
notFound,
|
|
214
|
-
staticFile
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
const createQwikCity = createQwikRouter;
|
|
218
|
-
exports.createQwikCity = createQwikCity;
|
|
219
|
-
exports.createQwikRouter = createQwikRouter;
|