@barqel/barq 1.0.0 → 1.0.1
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/README.md +3 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4304 -10
- package/dist/index.js.map +24 -1
- package/dist/internal/node-compat.d.ts +2 -0
- package/dist/internal/node-compat.d.ts.map +1 -0
- package/dist/node-patch.d.ts +3 -0
- package/dist/node-patch.d.ts.map +1 -0
- package/dist/node-patch.js +4304 -0
- package/dist/node-patch.js.map +24 -0
- package/package.json +12 -3
- package/dist/app.js +0 -1370
- package/dist/app.js.map +0 -1
- package/dist/context.js +0 -261
- package/dist/context.js.map +0 -1
- package/dist/cookies.js +0 -234
- package/dist/cookies.js.map +0 -1
- package/dist/cors.js +0 -82
- package/dist/cors.js.map +0 -1
- package/dist/errors.js +0 -81
- package/dist/errors.js.map +0 -1
- package/dist/http.js +0 -127
- package/dist/http.js.map +0 -1
- package/dist/internal/ip.js +0 -151
- package/dist/internal/ip.js.map +0 -1
- package/dist/internal/pathname.js +0 -158
- package/dist/internal/pathname.js.map +0 -1
- package/dist/internal/query.js +0 -126
- package/dist/internal/query.js.map +0 -1
- package/dist/internal/scan.js +0 -1069
- package/dist/internal/scan.js.map +0 -1
- package/dist/internal/shutdown.js +0 -30
- package/dist/internal/shutdown.js.map +0 -1
- package/dist/internal/trie.js +0 -560
- package/dist/internal/trie.js.map +0 -1
- package/dist/middleware.js +0 -269
- package/dist/middleware.js.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/validation.js +0 -32
- package/dist/validation.js.map +0 -1
package/dist/cors.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
export function cors(options = {}) {
|
|
2
|
-
const methods = (options.methods ?? ["GET", "HEAD", "PUT", "POST", "DELETE", "PATCH"]).join(", ");
|
|
3
|
-
const allowedHeaders = options.allowedHeaders?.join(", ");
|
|
4
|
-
const exposedHeaders = options.exposedHeaders?.join(", ");
|
|
5
|
-
const maxAge = options.maxAge !== undefined ? String(options.maxAge) : null;
|
|
6
|
-
const credentials = options.credentials === true;
|
|
7
|
-
function resolveOrigin(reqOrigin) {
|
|
8
|
-
if (!options.origin || options.origin === "*") {
|
|
9
|
-
return credentials ? (reqOrigin ?? "*") : "*";
|
|
10
|
-
}
|
|
11
|
-
if (!reqOrigin)
|
|
12
|
-
return null;
|
|
13
|
-
if (typeof options.origin === "string") {
|
|
14
|
-
return options.origin === reqOrigin ? reqOrigin : null;
|
|
15
|
-
}
|
|
16
|
-
if (Array.isArray(options.origin)) {
|
|
17
|
-
return options.origin.includes(reqOrigin) ? reqOrigin : null;
|
|
18
|
-
}
|
|
19
|
-
if (typeof options.origin === "function") {
|
|
20
|
-
const result = options.origin(reqOrigin);
|
|
21
|
-
if (typeof result === "string")
|
|
22
|
-
return result;
|
|
23
|
-
return result ? reqOrigin : null;
|
|
24
|
-
}
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
function setCorsHeaders(headers, matchedOrigin) {
|
|
28
|
-
if (matchedOrigin) {
|
|
29
|
-
headers.set("access-control-allow-origin", matchedOrigin);
|
|
30
|
-
if (matchedOrigin !== "*") {
|
|
31
|
-
headers.append("vary", "Origin");
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
if (credentials) {
|
|
35
|
-
headers.set("access-control-allow-credentials", "true");
|
|
36
|
-
}
|
|
37
|
-
if (exposedHeaders) {
|
|
38
|
-
headers.set("access-control-expose-headers", exposedHeaders);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return {
|
|
42
|
-
before(ctx) {
|
|
43
|
-
const reqOrigin = ctx.req.headers.get("origin");
|
|
44
|
-
const matchedOrigin = resolveOrigin(reqOrigin);
|
|
45
|
-
if (ctx.req.method === "OPTIONS") {
|
|
46
|
-
const headers = new Headers();
|
|
47
|
-
setCorsHeaders(headers, matchedOrigin);
|
|
48
|
-
headers.set("access-control-allow-methods", methods);
|
|
49
|
-
if (allowedHeaders) {
|
|
50
|
-
headers.set("access-control-allow-headers", allowedHeaders);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
const reqHeaders = ctx.req.headers.get("access-control-request-headers");
|
|
54
|
-
if (reqHeaders) {
|
|
55
|
-
headers.set("access-control-allow-headers", reqHeaders);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
if (maxAge) {
|
|
59
|
-
headers.set("access-control-max-age", maxAge);
|
|
60
|
-
}
|
|
61
|
-
headers.set("content-length", "0");
|
|
62
|
-
return new Response(null, { status: 204, headers });
|
|
63
|
-
}
|
|
64
|
-
ctx.state._corsOrigin = matchedOrigin;
|
|
65
|
-
},
|
|
66
|
-
after(ctx, res) {
|
|
67
|
-
const matchedOrigin = ctx.state
|
|
68
|
-
._corsOrigin;
|
|
69
|
-
if (matchedOrigin !== undefined) {
|
|
70
|
-
const headers = new Headers(res.headers);
|
|
71
|
-
setCorsHeaders(headers, matchedOrigin);
|
|
72
|
-
return new Response(res.body, {
|
|
73
|
-
status: res.status,
|
|
74
|
-
statusText: res.statusText,
|
|
75
|
-
headers,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
return res;
|
|
79
|
-
},
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=cors.js.map
|
package/dist/cors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cors.js","sourceRoot":"","sources":["../src/cors.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.js
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { json } from "./http";
|
|
2
|
-
export class HttpError extends Error {
|
|
3
|
-
status;
|
|
4
|
-
body;
|
|
5
|
-
headers;
|
|
6
|
-
constructor(status, body, headers) {
|
|
7
|
-
if (!Number.isInteger(status) || status < 100 || status > 599) {
|
|
8
|
-
throw new Error(`Invalid HTTP status code: ${status}. Must be an integer between 100 and 599.`);
|
|
9
|
-
}
|
|
10
|
-
super(typeof body === "string" ? body : `HTTP ${status}`);
|
|
11
|
-
this.name = "HttpError";
|
|
12
|
-
this.status = status;
|
|
13
|
-
this.body = body ?? { error: defaultStatusText(status) };
|
|
14
|
-
if (headers !== undefined)
|
|
15
|
-
this.headers = headers;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
function defaultStatusText(status) {
|
|
19
|
-
switch (status) {
|
|
20
|
-
case 400:
|
|
21
|
-
return "Bad Request";
|
|
22
|
-
case 401:
|
|
23
|
-
return "Unauthorized";
|
|
24
|
-
case 403:
|
|
25
|
-
return "Forbidden";
|
|
26
|
-
case 404:
|
|
27
|
-
return "Not Found";
|
|
28
|
-
case 405:
|
|
29
|
-
return "Method Not Allowed";
|
|
30
|
-
case 408:
|
|
31
|
-
return "Request Timeout";
|
|
32
|
-
case 409:
|
|
33
|
-
return "Conflict";
|
|
34
|
-
case 413:
|
|
35
|
-
return "Payload Too Large";
|
|
36
|
-
case 418:
|
|
37
|
-
return "I'm a teapot";
|
|
38
|
-
case 422:
|
|
39
|
-
return "Unprocessable Entity";
|
|
40
|
-
case 429:
|
|
41
|
-
return "Too Many Requests";
|
|
42
|
-
case 500:
|
|
43
|
-
return "Internal Server Error";
|
|
44
|
-
case 502:
|
|
45
|
-
return "Bad Gateway";
|
|
46
|
-
case 503:
|
|
47
|
-
return "Service Unavailable";
|
|
48
|
-
case 504:
|
|
49
|
-
return "Gateway Timeout";
|
|
50
|
-
default:
|
|
51
|
-
return status >= 500 ? "Internal Server Error" : "Error";
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
function safeJson(status, body, headers) {
|
|
55
|
-
try {
|
|
56
|
-
const init = headers !== undefined ? { status, headers } : { status };
|
|
57
|
-
return json(body, init);
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
return new Response("Internal Server Error", {
|
|
61
|
-
status: 500,
|
|
62
|
-
headers: { "content-type": "text/plain; charset=utf-8" },
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
export function errorToResponse(err, development) {
|
|
67
|
-
if (err instanceof Response) {
|
|
68
|
-
return err;
|
|
69
|
-
}
|
|
70
|
-
if (err instanceof HttpError) {
|
|
71
|
-
return safeJson(err.status, err.body, err.headers);
|
|
72
|
-
}
|
|
73
|
-
if (development) {
|
|
74
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
75
|
-
const stack = err instanceof Error ? err.stack : undefined;
|
|
76
|
-
return safeJson(500, { error: "Internal Server Error", message, stack });
|
|
77
|
-
}
|
|
78
|
-
return safeJson(500, { error: "Internal Server Error" });
|
|
79
|
-
}
|
|
80
|
-
export const createErrorResponse = errorToResponse;
|
|
81
|
-
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/http.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
const NULL_BODY_STATUSES = new Set([204, 205, 304]);
|
|
2
|
-
const DEFAULT_JSON_HEADERS = Object.freeze({
|
|
3
|
-
"content-type": "application/json; charset=utf-8",
|
|
4
|
-
});
|
|
5
|
-
const DEFAULT_JSON_INIT = Object.freeze({
|
|
6
|
-
status: 200,
|
|
7
|
-
headers: DEFAULT_JSON_HEADERS,
|
|
8
|
-
});
|
|
9
|
-
const DEFAULT_TEXT_HEADERS = Object.freeze({
|
|
10
|
-
"content-type": "text/plain; charset=utf-8",
|
|
11
|
-
});
|
|
12
|
-
export function isNullBodyStatus(status) {
|
|
13
|
-
return (status >= 100 && status < 200) || NULL_BODY_STATUSES.has(status);
|
|
14
|
-
}
|
|
15
|
-
function createJsonResponse(data, init) {
|
|
16
|
-
// Preserve JSON.stringify's empty-body behavior for values that do not
|
|
17
|
-
// produce a JSON value, while using Bun's native serializer otherwise.
|
|
18
|
-
if (data === undefined ||
|
|
19
|
-
typeof data === "function" ||
|
|
20
|
-
typeof data === "symbol") {
|
|
21
|
-
return new Response(JSON.stringify(data), init);
|
|
22
|
-
}
|
|
23
|
-
return Response.json(data, init);
|
|
24
|
-
}
|
|
25
|
-
export function json(data, init) {
|
|
26
|
-
if (init === undefined) {
|
|
27
|
-
if (typeof data === "object" && data !== null) {
|
|
28
|
-
return new Response(JSON.stringify(data), DEFAULT_JSON_INIT);
|
|
29
|
-
}
|
|
30
|
-
return createJsonResponse(data, DEFAULT_JSON_INIT);
|
|
31
|
-
}
|
|
32
|
-
if (typeof init === "number") {
|
|
33
|
-
if (isNullBodyStatus(init)) {
|
|
34
|
-
return new Response(null, { status: init });
|
|
35
|
-
}
|
|
36
|
-
return createJsonResponse(data, {
|
|
37
|
-
status: init,
|
|
38
|
-
headers: DEFAULT_JSON_HEADERS,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
const status = init.status ?? 200;
|
|
42
|
-
if (isNullBodyStatus(status)) {
|
|
43
|
-
return new Response(null, { ...init, status });
|
|
44
|
-
}
|
|
45
|
-
if (init.headers === undefined) {
|
|
46
|
-
return createJsonResponse(data, {
|
|
47
|
-
...init,
|
|
48
|
-
status,
|
|
49
|
-
headers: DEFAULT_JSON_HEADERS,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
const headers = new Headers(init.headers);
|
|
53
|
-
if (!headers.has("content-type")) {
|
|
54
|
-
headers.set("content-type", "application/json; charset=utf-8");
|
|
55
|
-
}
|
|
56
|
-
return createJsonResponse(data, { ...init, status, headers });
|
|
57
|
-
}
|
|
58
|
-
export function text(body, init) {
|
|
59
|
-
if (init === undefined) {
|
|
60
|
-
return new Response(body);
|
|
61
|
-
}
|
|
62
|
-
if (typeof init === "number") {
|
|
63
|
-
if (isNullBodyStatus(init)) {
|
|
64
|
-
return new Response(null, { status: init });
|
|
65
|
-
}
|
|
66
|
-
return new Response(body, {
|
|
67
|
-
status: init,
|
|
68
|
-
headers: DEFAULT_TEXT_HEADERS,
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
const status = init.status ?? 200;
|
|
72
|
-
if (isNullBodyStatus(status)) {
|
|
73
|
-
return new Response(null, { ...init, status });
|
|
74
|
-
}
|
|
75
|
-
if (init.headers === undefined) {
|
|
76
|
-
return new Response(body, {
|
|
77
|
-
...init,
|
|
78
|
-
status,
|
|
79
|
-
headers: DEFAULT_TEXT_HEADERS,
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
const headers = new Headers(init.headers);
|
|
83
|
-
if (!headers.has("content-type")) {
|
|
84
|
-
headers.set("content-type", "text/plain; charset=utf-8");
|
|
85
|
-
}
|
|
86
|
-
return new Response(body, { ...init, status, headers });
|
|
87
|
-
}
|
|
88
|
-
export function empty(status = 204, headers) {
|
|
89
|
-
const init = headers !== undefined ? { status, headers } : { status };
|
|
90
|
-
return new Response(null, init);
|
|
91
|
-
}
|
|
92
|
-
// biome-ignore lint/suspicious/noControlCharactersInRegex: This regex detects control characters in redirect targets.
|
|
93
|
-
const CONTROL_CHARS = /[\u0000-\u001f\u007f]/;
|
|
94
|
-
const ALLOWED_REDIRECT_STATUSES = new Set([301, 302, 303, 307, 308]);
|
|
95
|
-
export function redirect(url, status = 302, allowlist) {
|
|
96
|
-
if (!ALLOWED_REDIRECT_STATUSES.has(status)) {
|
|
97
|
-
throw new TypeError(`redirect status must be one of: ${Array.from(ALLOWED_REDIRECT_STATUSES).join(", ")}`);
|
|
98
|
-
}
|
|
99
|
-
if (CONTROL_CHARS.test(url) || url.includes("\\")) {
|
|
100
|
-
throw new TypeError("redirect target contains control or backslash characters");
|
|
101
|
-
}
|
|
102
|
-
if (url.charCodeAt(0) === 47) {
|
|
103
|
-
if (url.charCodeAt(1) === 47) {
|
|
104
|
-
throw new TypeError("redirect target must not be protocol-relative");
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
let parsed;
|
|
109
|
-
try {
|
|
110
|
-
parsed = new URL(url);
|
|
111
|
-
}
|
|
112
|
-
catch {
|
|
113
|
-
throw new TypeError("redirect target must be a root-relative path or an absolute URL");
|
|
114
|
-
}
|
|
115
|
-
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
116
|
-
throw new TypeError(`redirect target protocol is not allowed: ${parsed.protocol}`);
|
|
117
|
-
}
|
|
118
|
-
const host = parsed.host.toLowerCase();
|
|
119
|
-
if (allowlist !== undefined && !allowlist.has(host)) {
|
|
120
|
-
throw new TypeError(`redirect target host is not allowlisted: ${host}`);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
const res = new Response(null, { status });
|
|
124
|
-
res.headers.set("location", url);
|
|
125
|
-
return res;
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/ip.js
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { isIP } from "node:net";
|
|
2
|
-
function ipv4ToNumber(bytes) {
|
|
3
|
-
return (((bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3]) >>> 0);
|
|
4
|
-
}
|
|
5
|
-
export function compileTrustProxy(trust) {
|
|
6
|
-
if (!trust)
|
|
7
|
-
return () => false;
|
|
8
|
-
if (trust === true)
|
|
9
|
-
return () => true;
|
|
10
|
-
if (typeof trust === "function")
|
|
11
|
-
return trust;
|
|
12
|
-
const ranges = typeof trust === "string" ? [trust] : trust;
|
|
13
|
-
if (ranges.length === 0)
|
|
14
|
-
return () => false;
|
|
15
|
-
const matchers = [];
|
|
16
|
-
for (const range of ranges) {
|
|
17
|
-
if (range === "loopback") {
|
|
18
|
-
matchers.push((ip) => {
|
|
19
|
-
const addr = parseIpAddress(ip);
|
|
20
|
-
if (addr === null)
|
|
21
|
-
return false;
|
|
22
|
-
if (addr.length === 4)
|
|
23
|
-
return addr[0] === 127;
|
|
24
|
-
return addr.slice(0, 15).every((b) => b === 0) && addr[15] === 1;
|
|
25
|
-
});
|
|
26
|
-
continue;
|
|
27
|
-
}
|
|
28
|
-
const slash = range.indexOf("/");
|
|
29
|
-
const netText = slash === -1 ? range : range.slice(0, slash);
|
|
30
|
-
const netBytes = parseIpAddress(netText);
|
|
31
|
-
if (!netBytes)
|
|
32
|
-
continue;
|
|
33
|
-
const bits = slash === -1 ? netBytes.length * 8 : Number(range.slice(slash + 1));
|
|
34
|
-
if (netBytes.length === 4) {
|
|
35
|
-
const netNum = ipv4ToNumber(netBytes);
|
|
36
|
-
const mask = bits === 0 ? 0 : (~0 << (32 - bits)) >>> 0;
|
|
37
|
-
const expected = (netNum & mask) >>> 0;
|
|
38
|
-
matchers.push((ip) => {
|
|
39
|
-
const addr = parseIpAddress(ip);
|
|
40
|
-
if (addr?.length !== 4)
|
|
41
|
-
return false;
|
|
42
|
-
return (ipv4ToNumber(addr) & mask) >>> 0 === expected;
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
matchers.push((ip) => ipMatchesRange(ip, range));
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return (ip) => matchers.some((m) => m(ip));
|
|
50
|
-
}
|
|
51
|
-
export function isIpRange(value) {
|
|
52
|
-
if (value === "loopback")
|
|
53
|
-
return true;
|
|
54
|
-
const slash = value.indexOf("/");
|
|
55
|
-
if (slash !== value.lastIndexOf("/"))
|
|
56
|
-
return false;
|
|
57
|
-
const address = slash === -1 ? value : value.slice(0, slash);
|
|
58
|
-
const bytes = parseIpAddress(address);
|
|
59
|
-
if (bytes === null)
|
|
60
|
-
return false;
|
|
61
|
-
if (slash === -1)
|
|
62
|
-
return true;
|
|
63
|
-
const bitsText = value.slice(slash + 1);
|
|
64
|
-
if (!/^\d+$/.test(bitsText))
|
|
65
|
-
return false;
|
|
66
|
-
const bits = Number(bitsText);
|
|
67
|
-
return Number.isInteger(bits) && bits >= 0 && bits <= bytes.length * 8;
|
|
68
|
-
}
|
|
69
|
-
export function ipMatchesRange(ip, range) {
|
|
70
|
-
const address = parseIpAddress(ip);
|
|
71
|
-
if (address === null)
|
|
72
|
-
return false;
|
|
73
|
-
if (range === "loopback") {
|
|
74
|
-
if (address.length === 4)
|
|
75
|
-
return address[0] === 127;
|
|
76
|
-
return (address.slice(0, 15).every((byte) => byte === 0) && address[15] === 1);
|
|
77
|
-
}
|
|
78
|
-
const slash = range.indexOf("/");
|
|
79
|
-
const networkText = slash === -1 ? range : range.slice(0, slash);
|
|
80
|
-
const network = parseIpAddress(networkText);
|
|
81
|
-
if (network === null || address.length !== network.length)
|
|
82
|
-
return false;
|
|
83
|
-
const bits = slash === -1 ? network.length * 8 : Number(range.slice(slash + 1));
|
|
84
|
-
if (!Number.isInteger(bits) || bits < 0 || bits > network.length * 8) {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
const fullBytes = Math.floor(bits / 8);
|
|
88
|
-
for (let i = 0; i < fullBytes; i++) {
|
|
89
|
-
if (address[i] !== network[i])
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
const remainingBits = bits % 8;
|
|
93
|
-
if (remainingBits === 0)
|
|
94
|
-
return true;
|
|
95
|
-
const mask = (0xff << (8 - remainingBits)) & 0xff;
|
|
96
|
-
return (address[fullBytes] & mask) === (network[fullBytes] & mask);
|
|
97
|
-
}
|
|
98
|
-
export function isValidIpAddress(value) {
|
|
99
|
-
return parseIpAddress(value) !== null;
|
|
100
|
-
}
|
|
101
|
-
function parseIpAddress(value) {
|
|
102
|
-
const version = isIP(value);
|
|
103
|
-
if (version === 4) {
|
|
104
|
-
const bytes = value.split(".").map(Number);
|
|
105
|
-
if (bytes.length !== 4)
|
|
106
|
-
return null;
|
|
107
|
-
return Uint8Array.from(bytes);
|
|
108
|
-
}
|
|
109
|
-
if (version !== 6)
|
|
110
|
-
return null;
|
|
111
|
-
let address = value.toLowerCase();
|
|
112
|
-
if (address.includes(".")) {
|
|
113
|
-
const separator = address.lastIndexOf(":");
|
|
114
|
-
const ipv4 = address
|
|
115
|
-
.slice(separator + 1)
|
|
116
|
-
.split(".")
|
|
117
|
-
.map(Number);
|
|
118
|
-
if (separator === -1 || ipv4.length !== 4)
|
|
119
|
-
return null;
|
|
120
|
-
const high = ((ipv4[0] << 8) | ipv4[1]).toString(16);
|
|
121
|
-
const low = ((ipv4[2] << 8) | ipv4[3]).toString(16);
|
|
122
|
-
address = `${address.slice(0, separator + 1)}${high}:${low}`;
|
|
123
|
-
}
|
|
124
|
-
const halves = address.split("::");
|
|
125
|
-
if (halves.length > 2)
|
|
126
|
-
return null;
|
|
127
|
-
const left = halves[0] ? halves[0].split(":") : [];
|
|
128
|
-
const right = halves.length === 2 && halves[1] ? halves[1].split(":") : [];
|
|
129
|
-
const missing = 8 - left.length - right.length;
|
|
130
|
-
if ((halves.length === 1 && missing !== 0) ||
|
|
131
|
-
(halves.length === 2 && missing < 1)) {
|
|
132
|
-
return null;
|
|
133
|
-
}
|
|
134
|
-
const groups = [
|
|
135
|
-
...left,
|
|
136
|
-
...new Array(halves.length === 2 ? missing : 0).fill("0"),
|
|
137
|
-
...right,
|
|
138
|
-
];
|
|
139
|
-
if (groups.length !== 8 ||
|
|
140
|
-
groups.some((group) => !/^[0-9a-f]{1,4}$/.test(group))) {
|
|
141
|
-
return null;
|
|
142
|
-
}
|
|
143
|
-
const bytes = new Uint8Array(16);
|
|
144
|
-
for (let i = 0; i < groups.length; i++) {
|
|
145
|
-
const group = Number.parseInt(groups[i], 16);
|
|
146
|
-
bytes[i * 2] = group >>> 8;
|
|
147
|
-
bytes[i * 2 + 1] = group & 0xff;
|
|
148
|
-
}
|
|
149
|
-
return bytes;
|
|
150
|
-
}
|
|
151
|
-
//# sourceMappingURL=ip.js.map
|
package/dist/internal/ip.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ip.js","sourceRoot":"","sources":["../../src/internal/ip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAIhC,SAAS,YAAY,CAAC,KAAiB;IACrC,OAAO,CACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAKa;IAEb,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC;IAC/B,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;IACtC,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAE9C,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC;IAE5C,MAAM,QAAQ,GAAgB,EAAE,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;gBACnB,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;gBAChC,IAAI,IAAI,KAAK,IAAI;oBAAE,OAAO,KAAK,CAAC;gBAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;gBAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,MAAM,IAAI,GACR,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;gBACnB,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;gBAChC,IAAI,IAAI,EAAE,MAAM,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACrC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,MAAM,OAAO,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU,EAAE,KAAa;IACtD,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;QACpD,OAAO,CACL,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CACtE,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxE,MAAM,IAAI,GACR,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAC9C,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC;IAC/B,IAAI,aAAa,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC;IAClD,OAAO,CAAC,OAAO,CAAC,SAAS,CAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAE,GAAG,IAAI,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACxC,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/B,IAAI,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,OAAO;aACjB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;aACpB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,MAAM,CAAC,CAAC;QACf,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACvD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;IAC/D,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC/C,IACE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC;QACtC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,EACpC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG;QACb,GAAG,IAAI;QACP,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACzD,GAAG,KAAK;KACT,CAAC;IACF,IACE,MAAM,CAAC,MAAM,KAAK,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EACtD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;QAC9C,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;QAC3B,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;IAClC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
function decodeSegment(seg) {
|
|
2
|
-
if (seg.indexOf("%") === -1)
|
|
3
|
-
return seg;
|
|
4
|
-
try {
|
|
5
|
-
return decodeURIComponent(seg);
|
|
6
|
-
}
|
|
7
|
-
catch {
|
|
8
|
-
return seg;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
function decodePercentSegment(seg) {
|
|
12
|
-
try {
|
|
13
|
-
return decodeURIComponent(seg);
|
|
14
|
-
}
|
|
15
|
-
catch {
|
|
16
|
-
return seg;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function isDotSegment(seg) {
|
|
20
|
-
return seg === "." || seg === "..";
|
|
21
|
-
}
|
|
22
|
-
function hasDotSegment(path) {
|
|
23
|
-
let i = 0;
|
|
24
|
-
const len = path.length;
|
|
25
|
-
while (i < len) {
|
|
26
|
-
while (i < len && path.charCodeAt(i) === 47)
|
|
27
|
-
i++;
|
|
28
|
-
if (i >= len)
|
|
29
|
-
break;
|
|
30
|
-
const endIdx = path.indexOf("/", i);
|
|
31
|
-
const segEnd = endIdx === -1 ? len : endIdx;
|
|
32
|
-
const segmentLength = segEnd - i;
|
|
33
|
-
if ((segmentLength === 1 && path.charCodeAt(i) === 46) ||
|
|
34
|
-
(segmentLength === 2 &&
|
|
35
|
-
path.charCodeAt(i) === 46 &&
|
|
36
|
-
path.charCodeAt(i + 1) === 46)) {
|
|
37
|
-
return true;
|
|
38
|
-
}
|
|
39
|
-
const percent = path.indexOf("%", i);
|
|
40
|
-
if (percent !== -1 && percent < segEnd) {
|
|
41
|
-
const decoded = decodePercentSegment(path.slice(i, segEnd));
|
|
42
|
-
if (isDotSegment(decoded))
|
|
43
|
-
return true;
|
|
44
|
-
}
|
|
45
|
-
if (endIdx === -1)
|
|
46
|
-
break;
|
|
47
|
-
i = endIdx + 1;
|
|
48
|
-
}
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
export function hasEncodedSlash(path) {
|
|
52
|
-
return path.includes("%2f") || path.includes("%2F");
|
|
53
|
-
}
|
|
54
|
-
function targetStart(url) {
|
|
55
|
-
if (url.charCodeAt(0) === 47)
|
|
56
|
-
return 0;
|
|
57
|
-
if (url.charCodeAt(4) === 58 &&
|
|
58
|
-
url.charCodeAt(5) === 47 &&
|
|
59
|
-
url.charCodeAt(6) === 47)
|
|
60
|
-
return 7;
|
|
61
|
-
if (url.charCodeAt(5) === 58 &&
|
|
62
|
-
url.charCodeAt(6) === 47 &&
|
|
63
|
-
url.charCodeAt(7) === 47)
|
|
64
|
-
return 8;
|
|
65
|
-
const scheme = url.indexOf("://");
|
|
66
|
-
return scheme === -1 ? 0 : scheme + 3;
|
|
67
|
-
}
|
|
68
|
-
export function normalizeDotSegments(path) {
|
|
69
|
-
const len = path.length;
|
|
70
|
-
const segments = [];
|
|
71
|
-
let start = 0;
|
|
72
|
-
while (start < len) {
|
|
73
|
-
while (start < len && path.charCodeAt(start) === 47)
|
|
74
|
-
start++;
|
|
75
|
-
if (start >= len)
|
|
76
|
-
break;
|
|
77
|
-
const end = path.indexOf("/", start);
|
|
78
|
-
const segEnd = end === -1 ? len : end;
|
|
79
|
-
const rawSeg = path.slice(start, segEnd);
|
|
80
|
-
const decodedSeg = decodeSegment(rawSeg);
|
|
81
|
-
if (decodedSeg === ".") {
|
|
82
|
-
}
|
|
83
|
-
else if (decodedSeg === "..") {
|
|
84
|
-
segments.pop();
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
segments.push(rawSeg);
|
|
88
|
-
}
|
|
89
|
-
if (end === -1)
|
|
90
|
-
break;
|
|
91
|
-
start = end + 1;
|
|
92
|
-
}
|
|
93
|
-
const res = `/${segments.join("/")}`;
|
|
94
|
-
const endsWithSlash = path.endsWith("/") || path.endsWith("/.") || path.endsWith("/..");
|
|
95
|
-
return path.length > 1 && endsWithSlash && res !== "/" ? `${res}/` : res;
|
|
96
|
-
}
|
|
97
|
-
export function scanPathname(url) {
|
|
98
|
-
const s = targetStart(url);
|
|
99
|
-
const slash = url.indexOf("/", s);
|
|
100
|
-
if (slash === -1)
|
|
101
|
-
return "/";
|
|
102
|
-
let end = url.indexOf("?", slash);
|
|
103
|
-
if (end === -1) {
|
|
104
|
-
end = url.indexOf("#", slash);
|
|
105
|
-
if (end === -1)
|
|
106
|
-
end = url.length;
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
const hash = url.indexOf("#", slash);
|
|
110
|
-
if (hash !== -1 && hash < end)
|
|
111
|
-
end = hash;
|
|
112
|
-
}
|
|
113
|
-
const raw = url.slice(slash, end);
|
|
114
|
-
if (raw.indexOf(".") === -1 && raw.indexOf("%") === -1)
|
|
115
|
-
return raw;
|
|
116
|
-
if (hasEncodedSlash(raw)) {
|
|
117
|
-
return raw;
|
|
118
|
-
}
|
|
119
|
-
return hasDotSegment(raw) ? normalizeDotSegments(raw) : raw;
|
|
120
|
-
}
|
|
121
|
-
export function parseRequestTarget(url) {
|
|
122
|
-
const s = targetStart(url);
|
|
123
|
-
const slash = url.indexOf("/", s);
|
|
124
|
-
let pathname;
|
|
125
|
-
let query;
|
|
126
|
-
if (slash === -1) {
|
|
127
|
-
pathname = "/";
|
|
128
|
-
const q = url.indexOf("?", s);
|
|
129
|
-
const h = url.indexOf("#", s);
|
|
130
|
-
if (q !== -1 && (h === -1 || q < h)) {
|
|
131
|
-
query = h === -1 ? url.slice(q + 1) : url.slice(q + 1, h);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
let end = url.indexOf("?", slash);
|
|
136
|
-
const hash = url.indexOf("#", slash);
|
|
137
|
-
if (hash !== -1 && (end === -1 || hash < end))
|
|
138
|
-
end = hash;
|
|
139
|
-
if (end === -1) {
|
|
140
|
-
end = url.length;
|
|
141
|
-
}
|
|
142
|
-
else if (url.charCodeAt(end) === 63) {
|
|
143
|
-
query =
|
|
144
|
-
hash !== -1 && hash > end
|
|
145
|
-
? url.slice(end + 1, hash)
|
|
146
|
-
: url.slice(end + 1);
|
|
147
|
-
}
|
|
148
|
-
const raw = url.slice(slash, end);
|
|
149
|
-
if (hasEncodedSlash(raw)) {
|
|
150
|
-
pathname = raw;
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
pathname = hasDotSegment(raw) ? normalizeDotSegments(raw) : raw;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
return { pathname, query };
|
|
157
|
-
}
|
|
158
|
-
//# sourceMappingURL=pathname.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pathname.js","sourceRoot":"","sources":["../../src/internal/pathname.ts"],"names":[],"mappings":"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"}
|