@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.
Files changed (36) hide show
  1. package/dist/functions/index.d.ts +2 -2
  2. package/dist/functions/index.js +47 -16
  3. package/dist/functions/index.js.map +1 -1
  4. package/dist/functions/types.d.ts +0 -1
  5. package/dist/incoming/http/basicFunction copy.d.ts +3 -0
  6. package/dist/incoming/http/basicFunction copy.js +75 -0
  7. package/dist/incoming/http/basicFunction copy.js.map +1 -0
  8. package/dist/incoming/http/basicFunction.d.ts +3 -0
  9. package/dist/incoming/http/basicFunction.js +64 -0
  10. package/dist/incoming/http/basicFunction.js.map +1 -0
  11. package/dist/incoming/http/handleRequest.d.ts +2 -2
  12. package/dist/incoming/http/handleRequest.js +2 -2
  13. package/dist/incoming/http/handleRequest.js.map +1 -1
  14. package/dist/incoming/http/httpFunction.d.ts +3 -0
  15. package/dist/incoming/http/httpFunction.js +64 -0
  16. package/dist/incoming/http/httpFunction.js.map +1 -0
  17. package/dist/incoming/http/index.js +16 -6
  18. package/dist/incoming/http/index.js.map +1 -1
  19. package/dist/incoming/http/parsePath.d.ts +22 -0
  20. package/dist/incoming/http/parsePath.js +126 -0
  21. package/dist/incoming/http/parsePath.js.map +1 -0
  22. package/dist/incoming/http/pathMatcher.d.ts +22 -0
  23. package/dist/incoming/http/pathMatcher.js +285 -0
  24. package/dist/incoming/http/pathMatcher.js.map +1 -0
  25. package/dist/incoming/http/payloadParser.d.ts +3 -0
  26. package/dist/incoming/http/payloadParser.js +19 -0
  27. package/dist/incoming/http/payloadParser.js.map +1 -0
  28. package/dist/incoming/http/types.d.ts +20 -0
  29. package/dist/incoming/http/types.js +21 -0
  30. package/dist/incoming/http/types.js.map +1 -0
  31. package/dist/sendHttpResponse.js +1 -1
  32. package/dist/sendHttpResponse.js.map +1 -1
  33. package/dist/server.d.ts +1 -0
  34. package/dist/server.js +16 -0
  35. package/dist/server.js.map +1 -1
  36. 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,3 @@
1
+ import { Context, HttpSession, BasedRouteComplete } from '@based/functions';
2
+ declare const _default: (ctx: Context<HttpSession>, route: BasedRouteComplete) => Record<string, string | boolean | string[]>;
3
+ export default _default;
@@ -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"}
@@ -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":"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"}
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
@@ -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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"}