@based/server 9.1.2 → 9.2.0
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/dist/functions/index.d.ts +2 -2
- package/dist/functions/index.js +47 -16
- package/dist/functions/index.js.map +1 -1
- package/dist/functions/types.d.ts +0 -1
- package/dist/incoming/http/basicFunction copy.d.ts +3 -0
- package/dist/incoming/http/basicFunction copy.js +75 -0
- package/dist/incoming/http/basicFunction copy.js.map +1 -0
- package/dist/incoming/http/basicFunction.d.ts +3 -0
- package/dist/incoming/http/basicFunction.js +64 -0
- package/dist/incoming/http/basicFunction.js.map +1 -0
- package/dist/incoming/http/handleRequest.d.ts +2 -2
- package/dist/incoming/http/handleRequest.js +2 -2
- package/dist/incoming/http/handleRequest.js.map +1 -1
- package/dist/incoming/http/httpFunction.d.ts +3 -0
- package/dist/incoming/http/httpFunction.js +64 -0
- package/dist/incoming/http/httpFunction.js.map +1 -0
- package/dist/incoming/http/index.js +16 -6
- package/dist/incoming/http/index.js.map +1 -1
- package/dist/incoming/http/parsePath.d.ts +22 -0
- package/dist/incoming/http/parsePath.js +126 -0
- package/dist/incoming/http/parsePath.js.map +1 -0
- package/dist/incoming/http/pathMatcher.d.ts +22 -0
- package/dist/incoming/http/pathMatcher.js +285 -0
- package/dist/incoming/http/pathMatcher.js.map +1 -0
- package/dist/incoming/http/payloadParser.d.ts +3 -0
- package/dist/incoming/http/payloadParser.js +19 -0
- package/dist/incoming/http/payloadParser.js.map +1 -0
- package/dist/incoming/http/types.d.ts +20 -0
- package/dist/incoming/http/types.js +21 -0
- package/dist/incoming/http/types.js.map +1 -0
- package/dist/sendHttpResponse.js +1 -1
- package/dist/sendHttpResponse.js.map +1 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.js +16 -0
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
function escapeRegExp(str) {
|
|
2
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Compiles the route into a regex and extracts the parameter keys.
|
|
6
|
+
*
|
|
7
|
+
* @param route The route string, e.g., '/users/:userId(\\d+)?'
|
|
8
|
+
* @param strict If true, matching strictly respects slashes (trailing slash matters).
|
|
9
|
+
* @param sensitive If true, matching is case-sensitive.
|
|
10
|
+
* @returns An object containing the compiled regex and the array of keys.
|
|
11
|
+
*/
|
|
12
|
+
function compileRoute(route, strict, sensitive) {
|
|
13
|
+
const keys = [];
|
|
14
|
+
let regexStr = '^';
|
|
15
|
+
let lastIndex = 0;
|
|
16
|
+
const paramRegex = /:([a-zA-Z0-9_]+)(?:\(([^)]+)\))?([+*?])?/g;
|
|
17
|
+
let match;
|
|
18
|
+
while ((match = paramRegex.exec(route)) !== null) {
|
|
19
|
+
const [full, name, customPattern, modifier] = match;
|
|
20
|
+
let staticPart = route.slice(lastIndex, match.index);
|
|
21
|
+
if ((modifier === '?' || modifier === '*') && match.index + full.length === route.length && staticPart.endsWith('/')) {
|
|
22
|
+
staticPart = staticPart.slice(0, -1);
|
|
23
|
+
}
|
|
24
|
+
regexStr += escapeRegExp(staticPart);
|
|
25
|
+
lastIndex = match.index + full.length;
|
|
26
|
+
const pattern = '[^/]+';
|
|
27
|
+
keys.push({
|
|
28
|
+
name,
|
|
29
|
+
modifier: modifier || '',
|
|
30
|
+
repeat: modifier === '*' || modifier === '+',
|
|
31
|
+
customPattern,
|
|
32
|
+
});
|
|
33
|
+
let prefix = staticPart.endsWith('/') ? '' : '/';
|
|
34
|
+
if ((modifier === '?' || modifier === '*') && match.index + full.length === route.length) {
|
|
35
|
+
prefix = '/?';
|
|
36
|
+
}
|
|
37
|
+
if (modifier === '?') {
|
|
38
|
+
regexStr += `(?:${prefix}(${pattern}))?`;
|
|
39
|
+
}
|
|
40
|
+
else if (modifier === '*') {
|
|
41
|
+
regexStr += `(?:${prefix}(${pattern}(?:/${pattern})*))?`;
|
|
42
|
+
}
|
|
43
|
+
else if (modifier === '+') {
|
|
44
|
+
regexStr += `${prefix}(${pattern}(?:/${pattern})*)`;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
regexStr += `${prefix}(${pattern})`;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
regexStr += escapeRegExp(route.slice(lastIndex));
|
|
51
|
+
if (!strict) {
|
|
52
|
+
if (!regexStr.endsWith('/')) {
|
|
53
|
+
regexStr += '/?';
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
regexStr += '?';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
regexStr += '$';
|
|
60
|
+
const flags = sensitive ? '' : 'i';
|
|
61
|
+
const regex = new RegExp(regexStr, flags);
|
|
62
|
+
return { regex, keys };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Matches a route with a path, always returning an object with the keys defined in the route.
|
|
66
|
+
* If a value isn't found or doesn't pass validation (custom regex), it'll be null.
|
|
67
|
+
* For repeatable params with '*', the default value is an empty array.
|
|
68
|
+
*
|
|
69
|
+
* Rules:
|
|
70
|
+
* - Required params: if missing, returns null.
|
|
71
|
+
* - Custom regex params: if it doesn't match, returns null.
|
|
72
|
+
* - Repeatable params with '+': if missing, returns null; otherwise, returns an array.
|
|
73
|
+
* - Repeatable params with '*': if missing, returns an empty array; otherwise, returns an array.
|
|
74
|
+
* - Optional params ('?'): if missing, returns null.
|
|
75
|
+
* - Malformed parameters: '+' or '*' cannot be combined with '?' in the same parameter, will returns null.
|
|
76
|
+
*
|
|
77
|
+
* @param route E.g., '/users/:userId(\\d+)?'
|
|
78
|
+
* @param path E.g., '/users/123'
|
|
79
|
+
* @param sensitive If true, matching is case-sensitive.
|
|
80
|
+
* @param strict If true, trailing slashes (and other details) are considered.
|
|
81
|
+
* @returns An object with the route keys and their values (never returns null).
|
|
82
|
+
*/
|
|
83
|
+
export function parsePath(route, path, sensitive, strict) {
|
|
84
|
+
const { regex, keys } = compileRoute(route, strict, sensitive);
|
|
85
|
+
const m = regex.exec(path);
|
|
86
|
+
const params = {};
|
|
87
|
+
for (const key of keys) {
|
|
88
|
+
if (key.repeat) {
|
|
89
|
+
params[key.name] = key.modifier === '*' ? [] : null;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
params[key.name] = null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (!m) {
|
|
96
|
+
return params;
|
|
97
|
+
}
|
|
98
|
+
for (let i = 0; i < keys.length; i++) {
|
|
99
|
+
const key = keys[i];
|
|
100
|
+
let value = m[i + 1];
|
|
101
|
+
if (value === undefined) {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (key.repeat) {
|
|
105
|
+
const parts = value.split('/');
|
|
106
|
+
if (key.customPattern) {
|
|
107
|
+
const customRegex = new RegExp('^' + key.customPattern + '$');
|
|
108
|
+
params[key.name] = parts.every(p => customRegex.test(p)) ? parts : null;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
params[key.name] = parts;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
if (key.customPattern) {
|
|
116
|
+
const customRegex = new RegExp('^' + key.customPattern + '$');
|
|
117
|
+
params[key.name] = customRegex.test(value) ? value : null;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
params[key.name] = value;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return params;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=parsePath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsePath.js","sourceRoot":"","sources":["../../../src/incoming/http/parsePath.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { PathToken } from "@based/functions";
|
|
2
|
+
/**
|
|
3
|
+
* Splits the Buffer using "/" (47) in an array of tokens, empty's as ignored.
|
|
4
|
+
*
|
|
5
|
+
* @param pattern - The pattern as a Buffer.
|
|
6
|
+
* @returns An array of tokens.
|
|
7
|
+
*/
|
|
8
|
+
export declare function tokenizePattern(pattern: Buffer): PathToken[];
|
|
9
|
+
/**
|
|
10
|
+
* Checks if the path as a Buffer matches the specified pattern also as Buffer.
|
|
11
|
+
*
|
|
12
|
+
* @param pattern - The pattern ("/users/:userId?")
|
|
13
|
+
* @param path - The path to test ("/users/123")
|
|
14
|
+
*/
|
|
15
|
+
export declare function pathMatcher(tokens: PathToken[], path: Buffer): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Extract the path values matching the specified pattern as a Buffer.
|
|
18
|
+
*
|
|
19
|
+
* @param pattern - The pattern ("/users/:userId?")
|
|
20
|
+
* @param path - The path to test ("/users/123")
|
|
21
|
+
*/
|
|
22
|
+
export declare function pathExtractor(tokens: PathToken[], path: Buffer): Record<string, string | string[] | boolean>;
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import { NUMBER_ZERO, NUMBER_NINE, LETTER_UPPER_A, LETTER_UPPER_Z, LETTER_LOWER_A, LETTER_LOWER_Z, UNDERSCORE, HYPHEN, DOT, PLUS, ASTERISK, QUESTION_MARK, REQUIRED_MODIFIER, STATIC, COLON, PARAM, INVALID, SLASH, EQUALS_SIGN, AMPERSAND } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Checks if the byte represents a character for a parameter name.
|
|
4
|
+
* Valid characters are 0-9 / A-Z / a-z / _ / - / .
|
|
5
|
+
*
|
|
6
|
+
* @param code - The ASCII code of the character.
|
|
7
|
+
*/
|
|
8
|
+
function isValidParamChar(code) {
|
|
9
|
+
return ((code >= NUMBER_ZERO && code <= NUMBER_NINE) ||
|
|
10
|
+
(code >= LETTER_UPPER_A && code <= LETTER_UPPER_Z) ||
|
|
11
|
+
(code >= LETTER_LOWER_A && code <= LETTER_LOWER_Z) ||
|
|
12
|
+
code === UNDERSCORE ||
|
|
13
|
+
code === HYPHEN ||
|
|
14
|
+
code === DOT);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Checks if the byte represents a modifier for a parameter name.
|
|
18
|
+
* Valid modifiers are + / * / ?
|
|
19
|
+
*
|
|
20
|
+
* @param code - The ASCII code of the character.
|
|
21
|
+
*/
|
|
22
|
+
function isValidParamModifier(code) {
|
|
23
|
+
return (code === PLUS ||
|
|
24
|
+
code === ASTERISK ||
|
|
25
|
+
code === QUESTION_MARK);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Splits a Buffer using a delimiter (byte) and returns the pieces.
|
|
29
|
+
*
|
|
30
|
+
* @param buffer - The Buffer to split.
|
|
31
|
+
* @param delimiter - The ASCII code of the delimiter.
|
|
32
|
+
*/
|
|
33
|
+
function splitBuffer(buffer, delimiter) {
|
|
34
|
+
const parts = [];
|
|
35
|
+
let start = 0;
|
|
36
|
+
for (let i = 0; i < buffer.length; i++) {
|
|
37
|
+
if (buffer[i] === delimiter) {
|
|
38
|
+
if (i - start > 0) {
|
|
39
|
+
parts.push(buffer.slice(start, i));
|
|
40
|
+
}
|
|
41
|
+
start = i + 1;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (buffer.length - start > 0) {
|
|
45
|
+
parts.push(buffer.slice(start));
|
|
46
|
+
}
|
|
47
|
+
return parts;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Parses a segment.
|
|
51
|
+
* If the segment starts with ":", it is treated as a parameter token.
|
|
52
|
+
* Only parameters can have modifiers, otherwise they'll be marked as INVALID.
|
|
53
|
+
* All invalid characters are removed from the final buffer.
|
|
54
|
+
*
|
|
55
|
+
* @param segment - The pattern segment as a Buffer.
|
|
56
|
+
*/
|
|
57
|
+
function parseToken(segment) {
|
|
58
|
+
let modifier = REQUIRED_MODIFIER;
|
|
59
|
+
let value = Buffer.allocUnsafe(segment.length);
|
|
60
|
+
let type = STATIC;
|
|
61
|
+
let i = 0;
|
|
62
|
+
let j = 0;
|
|
63
|
+
const len = segment.byteLength;
|
|
64
|
+
if (segment[i] !== COLON) {
|
|
65
|
+
type = STATIC;
|
|
66
|
+
value[j++] = segment[i];
|
|
67
|
+
i++;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
type = PARAM;
|
|
71
|
+
i++;
|
|
72
|
+
}
|
|
73
|
+
while (i < len) {
|
|
74
|
+
if (isValidParamChar(segment[i]) ||
|
|
75
|
+
(segment[i] === COLON &&
|
|
76
|
+
value[0] === 0x64 &&
|
|
77
|
+
value[1] === 0x62)) {
|
|
78
|
+
value[j++] = segment[i];
|
|
79
|
+
}
|
|
80
|
+
else if (isValidParamModifier(segment[i]) && type === PARAM && i === len - 1) {
|
|
81
|
+
modifier = segment[i];
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
type = INVALID;
|
|
85
|
+
value.fill(0);
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
i++;
|
|
89
|
+
}
|
|
90
|
+
value = value.slice(0, j);
|
|
91
|
+
return { type, value, modifier };
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Splits the Buffer using "/" (47) in an array of tokens, empty's as ignored.
|
|
95
|
+
*
|
|
96
|
+
* @param pattern - The pattern as a Buffer.
|
|
97
|
+
* @returns An array of tokens.
|
|
98
|
+
*/
|
|
99
|
+
export function tokenizePattern(pattern) {
|
|
100
|
+
const parts = splitBuffer(pattern, SLASH);
|
|
101
|
+
const tokens = [];
|
|
102
|
+
for (const part of parts) {
|
|
103
|
+
tokens.push(parseToken(part));
|
|
104
|
+
}
|
|
105
|
+
return tokens;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Checks if the path as a Buffer matches the specified pattern also as Buffer.
|
|
109
|
+
*
|
|
110
|
+
* @param pattern - The pattern ("/users/:userId?")
|
|
111
|
+
* @param path - The path to test ("/users/123")
|
|
112
|
+
*/
|
|
113
|
+
export function pathMatcher(tokens, path) {
|
|
114
|
+
if (!tokens?.length || path.byteLength === 0 || path[0] !== SLASH) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
let tokenIndex = 0;
|
|
118
|
+
let i = 1;
|
|
119
|
+
const len = path.byteLength;
|
|
120
|
+
let token = tokens[i - 1];
|
|
121
|
+
let lastIndex = 1;
|
|
122
|
+
let tokenSize = token.value.length;
|
|
123
|
+
let tokenValueIndex = 0;
|
|
124
|
+
while (i < len) {
|
|
125
|
+
if (path[i] === SLASH) {
|
|
126
|
+
tokenIndex++;
|
|
127
|
+
i++;
|
|
128
|
+
lastIndex = i;
|
|
129
|
+
token = tokens[tokenIndex];
|
|
130
|
+
if (token?.type === STATIC) {
|
|
131
|
+
if (tokenSize) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
tokenSize = token.value.length;
|
|
135
|
+
tokenValueIndex = 0;
|
|
136
|
+
}
|
|
137
|
+
if (i === len && !token) {
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
if (!token) {
|
|
141
|
+
const previousModifier = tokens[tokenIndex - 1].modifier;
|
|
142
|
+
if (previousModifier === ASTERISK ||
|
|
143
|
+
previousModifier === PLUS) {
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
if (path[i] === QUESTION_MARK) {
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (token.type === INVALID) {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
else if (token.type === STATIC) {
|
|
156
|
+
if (path[i] !== token.value[i - lastIndex]) {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
else if (path[i] === token.value[tokenValueIndex] && tokenSize) {
|
|
160
|
+
tokenSize--;
|
|
161
|
+
tokenValueIndex++;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else if (i === len && token.type === PARAM) {
|
|
168
|
+
if (token.modifier === QUESTION_MARK || token.modifier === ASTERISK) {
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
else if (token.modifier === PLUS) {
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
i++;
|
|
176
|
+
if (i === len - 1 && tokens.length - 1 > tokenIndex) {
|
|
177
|
+
const nextModifier = tokens[tokenIndex + 1]?.modifier;
|
|
178
|
+
if (nextModifier === undefined ||
|
|
179
|
+
nextModifier === REQUIRED_MODIFIER ||
|
|
180
|
+
nextModifier === PLUS) {
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (tokenSize && token.type === STATIC) {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Extract the path values matching the specified pattern as a Buffer.
|
|
192
|
+
*
|
|
193
|
+
* @param pattern - The pattern ("/users/:userId?")
|
|
194
|
+
* @param path - The path to test ("/users/123")
|
|
195
|
+
*/
|
|
196
|
+
export function pathExtractor(tokens, path) {
|
|
197
|
+
if (!tokens.length || path.byteLength === 0 || path[0] !== SLASH) {
|
|
198
|
+
return {};
|
|
199
|
+
}
|
|
200
|
+
let tokenIndex = 0;
|
|
201
|
+
let i = 1;
|
|
202
|
+
const len = path.byteLength;
|
|
203
|
+
let token = tokens[i - 1];
|
|
204
|
+
let tokenValue = token.value.toString();
|
|
205
|
+
const extractions = {};
|
|
206
|
+
let collected = '';
|
|
207
|
+
let isToCollect = false;
|
|
208
|
+
let query = false;
|
|
209
|
+
let queryValue = '';
|
|
210
|
+
if (i === len) {
|
|
211
|
+
extractions[tokenValue] = '';
|
|
212
|
+
return extractions;
|
|
213
|
+
}
|
|
214
|
+
while (i < len) {
|
|
215
|
+
if (i === 1 && path[i] === QUESTION_MARK) {
|
|
216
|
+
extractions[tokenValue] = '';
|
|
217
|
+
}
|
|
218
|
+
collected += String.fromCharCode(path[i]) || '';
|
|
219
|
+
if (query) {
|
|
220
|
+
if (i === len - 1 && collected && !queryValue) {
|
|
221
|
+
extractions[collected] = true;
|
|
222
|
+
collected = '';
|
|
223
|
+
}
|
|
224
|
+
if (path[i] === QUESTION_MARK) {
|
|
225
|
+
collected = '';
|
|
226
|
+
}
|
|
227
|
+
if (path[i + 1] === EQUALS_SIGN) {
|
|
228
|
+
i++;
|
|
229
|
+
extractions[collected] = '';
|
|
230
|
+
queryValue = collected;
|
|
231
|
+
collected = '';
|
|
232
|
+
}
|
|
233
|
+
if (path[i + 1] === AMPERSAND || i === len - 1 && collected) {
|
|
234
|
+
i++;
|
|
235
|
+
extractions[queryValue] = collected;
|
|
236
|
+
collected = '';
|
|
237
|
+
}
|
|
238
|
+
i++;
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
if (path[i] === QUESTION_MARK && !query) {
|
|
242
|
+
query = true;
|
|
243
|
+
collected = '';
|
|
244
|
+
i++;
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
i++;
|
|
248
|
+
if (path[i] === SLASH) {
|
|
249
|
+
isToCollect = true;
|
|
250
|
+
i++;
|
|
251
|
+
}
|
|
252
|
+
if (i === len) {
|
|
253
|
+
isToCollect = true;
|
|
254
|
+
}
|
|
255
|
+
if (isToCollect) {
|
|
256
|
+
isToCollect = false;
|
|
257
|
+
if (token.type === PARAM) {
|
|
258
|
+
if (token.modifier === PLUS || token.modifier === ASTERISK) {
|
|
259
|
+
extractions[tokenValue].push(collected);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
extractions[tokenValue] = collected;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
collected = '';
|
|
266
|
+
}
|
|
267
|
+
if (!collected && tokenIndex + 1 < tokens.length) {
|
|
268
|
+
tokenIndex++;
|
|
269
|
+
token = tokens[tokenIndex];
|
|
270
|
+
if (token) {
|
|
271
|
+
tokenValue = token.value.toString();
|
|
272
|
+
if (token.type === PARAM && extractions[tokenValue] === undefined) {
|
|
273
|
+
if (token.modifier === PLUS || token.modifier === ASTERISK) {
|
|
274
|
+
extractions[tokenValue] = [];
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
extractions[tokenValue] = '';
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return extractions;
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=pathMatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathMatcher.js","sourceRoot":"","sources":["../../../src/incoming/http/pathMatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { parseAuthState } from '../../auth/index.js';
|
|
2
|
+
import { pathExtractor } from './pathMatcher.js';
|
|
3
|
+
export default (ctx, route) => {
|
|
4
|
+
let url = ctx.session.url;
|
|
5
|
+
const query = ctx.session.query ? '?' + ctx.session.query : '';
|
|
6
|
+
if (url.charCodeAt(url.length - 1) !== 47 && query) {
|
|
7
|
+
url += '/';
|
|
8
|
+
}
|
|
9
|
+
url += query;
|
|
10
|
+
const payload = pathExtractor(route.tokens, Buffer.from(url));
|
|
11
|
+
if ('token' in payload) {
|
|
12
|
+
ctx.session.authState = parseAuthState(payload.token);
|
|
13
|
+
if (route.type === 'query') {
|
|
14
|
+
delete payload.token;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return payload;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=payloadParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payloadParser.js","sourceRoot":"","sources":["../../../src/incoming/http/payloadParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,eAAe,CACb,GAAyB,EACzB,KAAyB,EACzB,EAAE;IACF,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAA;IACzB,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAE9D,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;QACnD,GAAG,IAAI,GAAG,CAAA;IACZ,CAAC;IAED,GAAG,IAAI,KAAK,CAAA;IACZ,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAE7D,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;QACvB,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAErD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,KAAK,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const REQUIRED_MODIFIER = 0;
|
|
2
|
+
export declare const NUMBER_ZERO = 48;
|
|
3
|
+
export declare const NUMBER_NINE = 57;
|
|
4
|
+
export declare const LETTER_UPPER_A = 65;
|
|
5
|
+
export declare const LETTER_UPPER_Z = 90;
|
|
6
|
+
export declare const LETTER_LOWER_A = 97;
|
|
7
|
+
export declare const LETTER_LOWER_Z = 122;
|
|
8
|
+
export declare const UNDERSCORE = 95;
|
|
9
|
+
export declare const HYPHEN = 45;
|
|
10
|
+
export declare const DOT = 46;
|
|
11
|
+
export declare const SLASH = 47;
|
|
12
|
+
export declare const QUESTION_MARK = 63;
|
|
13
|
+
export declare const COLON = 58;
|
|
14
|
+
export declare const PLUS = 43;
|
|
15
|
+
export declare const ASTERISK = 42;
|
|
16
|
+
export declare const INVALID = 0;
|
|
17
|
+
export declare const STATIC = 1;
|
|
18
|
+
export declare const PARAM = 2;
|
|
19
|
+
export declare const EQUALS_SIGN = 61;
|
|
20
|
+
export declare const AMPERSAND = 38;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const REQUIRED_MODIFIER = 0;
|
|
2
|
+
export const NUMBER_ZERO = 48;
|
|
3
|
+
export const NUMBER_NINE = 57;
|
|
4
|
+
export const LETTER_UPPER_A = 65;
|
|
5
|
+
export const LETTER_UPPER_Z = 90;
|
|
6
|
+
export const LETTER_LOWER_A = 97;
|
|
7
|
+
export const LETTER_LOWER_Z = 122;
|
|
8
|
+
export const UNDERSCORE = 95;
|
|
9
|
+
export const HYPHEN = 45;
|
|
10
|
+
export const DOT = 46;
|
|
11
|
+
export const SLASH = 47;
|
|
12
|
+
export const QUESTION_MARK = 63;
|
|
13
|
+
export const COLON = 58;
|
|
14
|
+
export const PLUS = 43;
|
|
15
|
+
export const ASTERISK = 42;
|
|
16
|
+
export const INVALID = 0;
|
|
17
|
+
export const STATIC = 1;
|
|
18
|
+
export const PARAM = 2;
|
|
19
|
+
export const EQUALS_SIGN = 61;
|
|
20
|
+
export const AMPERSAND = 38;
|
|
21
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/incoming/http/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAClC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAA;AAC7B,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAA;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAA;AAChC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAA;AAChC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAA;AAChC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;AACjC,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAA;AAC5B,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,CAAA;AACxB,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAA;AACrB,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAA;AACvB,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAA;AAC/B,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAA;AACvB,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAA;AACtB,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAA;AAC1B,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAA;AACxB,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAA;AACvB,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAA;AACtB,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAA;AAC7B,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAA"}
|
package/dist/sendHttpResponse.js
CHANGED
|
@@ -46,7 +46,7 @@ export const sendHttpResponse = (ctx, result, headers, statusCode = '200 OK') =>
|
|
|
46
46
|
});
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
|
-
else if (typeof result === 'string') {
|
|
49
|
+
else if (typeof result === 'string' || (result instanceof Buffer)) {
|
|
50
50
|
cType = 'text/plain';
|
|
51
51
|
parsed = result;
|
|
52
52
|
// TODO: more check here
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendHttpResponse.js","sourceRoot":"","sources":["../src/sendHttpResponse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,GAAyB,EACzB,OAAsC,EACtC,EAAE;IACF,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,OAAM;IACR,CAAC;IACD,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACrC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAA;QAChE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAA;QACjE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAA;IACjE,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9D,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;IACvB,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;IACD,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAA;IACtB,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAA;IACtB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;AACpB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,GAAyB,EACzB,OAAoB,EACpB,EAAE;IACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;QAC7B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CACzB,MAAM,EACN,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAClB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YACjB,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;gBAC3B,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAClB,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,GAAyB,EACzB,MAAW,EACX,OAAqB,EACrB,aAAqB,QAAQ,EAC7B,EAAE;IACF,sCAAsC;IACtC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,OAAM;IACR,CAAC;IAED,IAAI,KAAa,CAAA;IAEjB,IAAI,
|
|
1
|
+
{"version":3,"file":"sendHttpResponse.js","sourceRoot":"","sources":["../src/sendHttpResponse.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -134,6 +134,7 @@ export declare class BasedServer {
|
|
|
134
134
|
[E in Event]?: Listener<EventMap[E]>[];
|
|
135
135
|
};
|
|
136
136
|
workerRequest: (type: string, payload?: any) => void | Promise<any>;
|
|
137
|
+
private http;
|
|
137
138
|
[util.inspect.custom](): string;
|
|
138
139
|
constructor(opts: ServerOptions);
|
|
139
140
|
emit(type: Event, client: Context, val: EventMap[Event], err?: Error | string): void;
|
package/dist/server.js
CHANGED
|
@@ -122,6 +122,7 @@ export class BasedServer {
|
|
|
122
122
|
activeChannelsById = new Map();
|
|
123
123
|
listeners = {};
|
|
124
124
|
workerRequest;
|
|
125
|
+
http = {};
|
|
125
126
|
[util.inspect.custom]() {
|
|
126
127
|
return `BasedServer [${this.port}]`;
|
|
127
128
|
}
|
|
@@ -165,6 +166,12 @@ export class BasedServer {
|
|
|
165
166
|
if (opts.getIp) {
|
|
166
167
|
this.getIp = opts.getIp;
|
|
167
168
|
}
|
|
169
|
+
if (opts.http?.open) {
|
|
170
|
+
this.http.open = opts.http.open;
|
|
171
|
+
}
|
|
172
|
+
if (opts.http?.close) {
|
|
173
|
+
this.http.close = opts.http.close;
|
|
174
|
+
}
|
|
168
175
|
initNetwork(this, opts);
|
|
169
176
|
}
|
|
170
177
|
emit(type, client, val, err) {
|
|
@@ -220,10 +227,16 @@ export class BasedServer {
|
|
|
220
227
|
if (!this.silent)
|
|
221
228
|
console.info(' Based-server listening on port:', this.port);
|
|
222
229
|
this.listenSocket = listenSocket;
|
|
230
|
+
if (this.http?.open) {
|
|
231
|
+
this.http.open({});
|
|
232
|
+
}
|
|
223
233
|
resolve(this);
|
|
224
234
|
}
|
|
225
235
|
else {
|
|
226
236
|
console.info(picocolors.red('🤮 Based-server error on port:'), this.port);
|
|
237
|
+
if (this.http?.close) {
|
|
238
|
+
this.http.close({});
|
|
239
|
+
}
|
|
227
240
|
reject(new Error('Cannot start based-server on port: ' + this.port));
|
|
228
241
|
}
|
|
229
242
|
});
|
|
@@ -239,6 +252,9 @@ export class BasedServer {
|
|
|
239
252
|
}
|
|
240
253
|
this.listenSocket = null;
|
|
241
254
|
this.uwsApp = null;
|
|
255
|
+
if (this.http?.close) {
|
|
256
|
+
this.http.close({});
|
|
257
|
+
}
|
|
242
258
|
}
|
|
243
259
|
}
|
|
244
260
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|