@mojojs/core 0.26.0 → 0.27.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/lib/app.d.ts +9 -5
- package/lib/app.js +18 -7
- package/lib/app.js.map +1 -1
- package/lib/body.d.ts +9 -5
- package/lib/body.js +14 -15
- package/lib/body.js.map +1 -1
- package/lib/cli/get.js +1 -23
- package/lib/cli/get.js.map +1 -1
- package/lib/context.d.ts +5 -5
- package/lib/context.js +4 -5
- package/lib/context.js.map +1 -1
- package/lib/headers.d.ts +34 -0
- package/lib/headers.js +97 -0
- package/lib/headers.js.map +1 -0
- package/lib/renderer.js +1 -1
- package/lib/renderer.js.map +1 -1
- package/lib/server/request.d.ts +14 -11
- package/lib/server/request.js +14 -23
- package/lib/server/request.js.map +1 -1
- package/lib/server/response.d.ts +17 -7
- package/lib/server/response.js +27 -46
- package/lib/server/response.js.map +1 -1
- package/lib/server.d.ts +3 -1
- package/lib/server.js +39 -3
- package/lib/server.js.map +1 -1
- package/lib/static.js +3 -3
- package/lib/static.js.map +1 -1
- package/lib/types.d.ts +7 -5
- package/lib/user-agent/response.d.ts +21 -11
- package/lib/user-agent/response.js +5 -17
- package/lib/user-agent/response.js.map +1 -1
- package/lib/user-agent/test.js +2 -2
- package/lib/user-agent/test.js.map +1 -1
- package/lib/user-agent/transport/http.js +8 -1
- package/lib/user-agent/transport/http.js.map +1 -1
- package/lib/user-agent/transport/ws.js +10 -2
- package/lib/user-agent/transport/ws.js.map +1 -1
- package/lib/user-agent.js +2 -2
- package/lib/user-agent.js.map +1 -1
- package/lib/websocket.d.ts +1 -1
- package/lib/websocket.js +6 -6
- package/lib/websocket.js.map +1 -1
- package/package.json +1 -1
- package/vendor/views/mojo/debug.html.mt +3 -3
- package/lib/plugins/exception-helpers.d.ts +0 -5
- package/lib/plugins/exception-helpers.js +0 -101
- package/lib/plugins/exception-helpers.js.map +0 -1
- package/lib/plugins/header-conditions.d.ts +0 -5
- package/lib/plugins/header-conditions.js +0 -22
- package/lib/plugins/header-conditions.js.map +0 -1
- package/lib/plugins/view-helpers.d.ts +0 -5
- package/lib/plugins/view-helpers.js +0 -28
- package/lib/plugins/view-helpers.js.map +0 -1
package/lib/server/request.d.ts
CHANGED
|
@@ -1,28 +1,39 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import type { ServerRequestOptions } from '../types.js';
|
|
3
|
-
import type { IncomingMessage } from 'http';
|
|
4
2
|
import { Body } from '../body.js';
|
|
5
3
|
import { Params } from '../body/params.js';
|
|
6
4
|
/**
|
|
7
5
|
* Server request class.
|
|
8
6
|
*/
|
|
9
7
|
export declare class ServerRequest extends Body {
|
|
8
|
+
/**
|
|
9
|
+
* Check if underlying socket was encrypted with TLS.
|
|
10
|
+
*/
|
|
11
|
+
isSecure: boolean;
|
|
10
12
|
/**
|
|
11
13
|
* Request is a WebSocket handshake.
|
|
12
14
|
*/
|
|
13
15
|
isWebSocket: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Request method.
|
|
18
|
+
*/
|
|
19
|
+
method: string | null;
|
|
14
20
|
/**
|
|
15
21
|
* Request ID.
|
|
16
22
|
*/
|
|
17
23
|
requestId: string;
|
|
24
|
+
/**
|
|
25
|
+
* Request URL.
|
|
26
|
+
*/
|
|
27
|
+
url: string | null;
|
|
18
28
|
_cookies: Record<string, string> | undefined;
|
|
19
29
|
_ip: string | undefined;
|
|
20
30
|
_path: string | null | undefined;
|
|
21
31
|
_protocol: string | undefined;
|
|
22
32
|
_query: Params | undefined;
|
|
33
|
+
_remoteAddress: string | undefined;
|
|
23
34
|
_reverseProxy: boolean;
|
|
24
35
|
_userinfo: string | null | undefined;
|
|
25
|
-
constructor(
|
|
36
|
+
constructor(options: ServerRequestOptions);
|
|
26
37
|
/**
|
|
27
38
|
* Server base URL.
|
|
28
39
|
*/
|
|
@@ -35,14 +46,6 @@ export declare class ServerRequest extends Body {
|
|
|
35
46
|
* Remote IP address.
|
|
36
47
|
*/
|
|
37
48
|
get ip(): string | null;
|
|
38
|
-
/**
|
|
39
|
-
* Check if underlying socket was encrypted with TLS.
|
|
40
|
-
*/
|
|
41
|
-
get isSecure(): boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Request method.
|
|
44
|
-
*/
|
|
45
|
-
get method(): string | null;
|
|
46
49
|
/**
|
|
47
50
|
* Request path.
|
|
48
51
|
*/
|
package/lib/server/request.js
CHANGED
|
@@ -9,24 +9,28 @@ let requestId = 0;
|
|
|
9
9
|
* Server request class.
|
|
10
10
|
*/
|
|
11
11
|
export class ServerRequest extends Body {
|
|
12
|
-
constructor(
|
|
13
|
-
super(
|
|
12
|
+
constructor(options) {
|
|
13
|
+
super(options.headers, options.body);
|
|
14
14
|
this._cookies = undefined;
|
|
15
15
|
this._ip = undefined;
|
|
16
16
|
this._path = undefined;
|
|
17
17
|
this._protocol = undefined;
|
|
18
18
|
this._query = undefined;
|
|
19
19
|
this._userinfo = undefined;
|
|
20
|
+
this.method = options.method ?? null;
|
|
21
|
+
this.url = options.url ?? null;
|
|
20
22
|
this.isWebSocket = options.isWebSocket;
|
|
23
|
+
this.isSecure = options.isSecure;
|
|
21
24
|
requestId = (requestId + 1) & 2147483647;
|
|
22
25
|
this.requestId = `${process.pid}-${requestId.toString(36).padStart(6, '0')}`;
|
|
26
|
+
this._remoteAddress = options.remoteAddress;
|
|
23
27
|
this._reverseProxy = options.reverseProxy;
|
|
24
28
|
}
|
|
25
29
|
/**
|
|
26
30
|
* Server base URL.
|
|
27
31
|
*/
|
|
28
32
|
get baseURL() {
|
|
29
|
-
return `${this.protocol}://${this.
|
|
33
|
+
return `${this.protocol}://${this.get('Host') ?? ''}`;
|
|
30
34
|
}
|
|
31
35
|
/**
|
|
32
36
|
* Get cookie value.
|
|
@@ -34,7 +38,7 @@ export class ServerRequest extends Body {
|
|
|
34
38
|
getCookie(name) {
|
|
35
39
|
if (this._cookies === undefined) {
|
|
36
40
|
const header = this.get('Cookie');
|
|
37
|
-
this._cookies = header ===
|
|
41
|
+
this._cookies = header === null ? {} : parseCookie(header);
|
|
38
42
|
}
|
|
39
43
|
return this._cookies[name] ?? null;
|
|
40
44
|
}
|
|
@@ -43,10 +47,10 @@ export class ServerRequest extends Body {
|
|
|
43
47
|
*/
|
|
44
48
|
get ip() {
|
|
45
49
|
if (this._ip === undefined) {
|
|
46
|
-
this._ip = this.
|
|
50
|
+
this._ip = this._remoteAddress;
|
|
47
51
|
if (this._reverseProxy) {
|
|
48
52
|
const forwarded = this.get('X-Forwarded-For');
|
|
49
|
-
if (forwarded !==
|
|
53
|
+
if (forwarded !== null) {
|
|
50
54
|
const match = forwarded.match(/([^,\s]+)$/);
|
|
51
55
|
if (match !== null)
|
|
52
56
|
this._ip = match[1];
|
|
@@ -55,25 +59,12 @@ export class ServerRequest extends Body {
|
|
|
55
59
|
}
|
|
56
60
|
return this._ip ?? null;
|
|
57
61
|
}
|
|
58
|
-
/**
|
|
59
|
-
* Check if underlying socket was encrypted with TLS.
|
|
60
|
-
*/
|
|
61
|
-
get isSecure() {
|
|
62
|
-
const socket = this._raw.socket;
|
|
63
|
-
return socket.encrypted ?? false;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Request method.
|
|
67
|
-
*/
|
|
68
|
-
get method() {
|
|
69
|
-
return this._raw.method ?? null;
|
|
70
|
-
}
|
|
71
62
|
/**
|
|
72
63
|
* Request path.
|
|
73
64
|
*/
|
|
74
65
|
get path() {
|
|
75
66
|
if (this._path === undefined) {
|
|
76
|
-
const match = this.
|
|
67
|
+
const match = (this.url ?? '').match(URL_RE);
|
|
77
68
|
this._path = match === null ? null : decodeURIComponentSafe(match[5]);
|
|
78
69
|
}
|
|
79
70
|
return this._path;
|
|
@@ -86,7 +77,7 @@ export class ServerRequest extends Body {
|
|
|
86
77
|
this._protocol = this.isSecure ? 'https' : 'http';
|
|
87
78
|
if (this._reverseProxy === true) {
|
|
88
79
|
const forwarded = this.get('X-Forwarded-Proto');
|
|
89
|
-
if (forwarded !==
|
|
80
|
+
if (forwarded !== null)
|
|
90
81
|
this._protocol = forwarded;
|
|
91
82
|
}
|
|
92
83
|
}
|
|
@@ -97,7 +88,7 @@ export class ServerRequest extends Body {
|
|
|
97
88
|
*/
|
|
98
89
|
get query() {
|
|
99
90
|
if (this._query === undefined) {
|
|
100
|
-
const url = this.
|
|
91
|
+
const url = this.url ?? '';
|
|
101
92
|
if (url.includes('?') === true) {
|
|
102
93
|
const match = url.match(URL_RE);
|
|
103
94
|
this._query = match !== null ? new Params(match[7]) : new Params();
|
|
@@ -115,7 +106,7 @@ export class ServerRequest extends Body {
|
|
|
115
106
|
if (this._userinfo === undefined) {
|
|
116
107
|
this._userinfo = null;
|
|
117
108
|
const auth = this.get('Authorization');
|
|
118
|
-
if (auth !==
|
|
109
|
+
if (auth !== null) {
|
|
119
110
|
const match = auth.match(/Basic (.+)$/);
|
|
120
111
|
if (match !== null)
|
|
121
112
|
this._userinfo = Buffer.from(match[1], 'base64').toString();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/server/request.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/server/request.ts"],"names":[],"mappings":"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"}
|
package/lib/server/response.d.ts
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import type { Context } from '../context.js';
|
|
3
3
|
import type { CookieOptions } from '../types.js';
|
|
4
|
-
import type
|
|
5
|
-
import
|
|
4
|
+
import type { Stream } from 'stream';
|
|
5
|
+
import EventEmitter from 'events';
|
|
6
|
+
import { Headers } from '../headers.js';
|
|
7
|
+
declare type SendResponse = (res: ServerResponse, body?: string | Buffer | Stream) => void;
|
|
6
8
|
/**
|
|
7
9
|
* Server response class.
|
|
8
10
|
*/
|
|
9
|
-
export declare class ServerResponse {
|
|
11
|
+
export declare class ServerResponse extends EventEmitter {
|
|
12
|
+
/**
|
|
13
|
+
* Response headers.
|
|
14
|
+
*/
|
|
15
|
+
headers: Headers;
|
|
10
16
|
/**
|
|
11
17
|
* Response has already been sent.
|
|
12
18
|
*/
|
|
@@ -15,14 +21,17 @@ export declare class ServerResponse {
|
|
|
15
21
|
* Response status.
|
|
16
22
|
*/
|
|
17
23
|
statusCode: number;
|
|
18
|
-
_ctx: WeakRef<Context
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
constructor(res: http.ServerResponse, ctx: Context);
|
|
24
|
+
_ctx: WeakRef<Context> | undefined;
|
|
25
|
+
_sendResponse: SendResponse;
|
|
26
|
+
constructor(sendResponse: SendResponse);
|
|
22
27
|
/**
|
|
23
28
|
* Append header value.
|
|
24
29
|
*/
|
|
25
30
|
append(name: string, value: string): this;
|
|
31
|
+
/**
|
|
32
|
+
* Bind context to response.
|
|
33
|
+
*/
|
|
34
|
+
bindContext(ctx: Context): void;
|
|
26
35
|
/**
|
|
27
36
|
* Set response content length.
|
|
28
37
|
*/
|
|
@@ -48,3 +57,4 @@ export declare class ServerResponse {
|
|
|
48
57
|
*/
|
|
49
58
|
type(type: string): this;
|
|
50
59
|
}
|
|
60
|
+
export {};
|
package/lib/server/response.js
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import EventEmitter from 'events';
|
|
2
|
+
import { Headers } from '../headers.js';
|
|
2
3
|
import { stringifyCookie } from './cookie.js';
|
|
3
4
|
/**
|
|
4
5
|
* Server response class.
|
|
5
6
|
*/
|
|
6
|
-
export class ServerResponse {
|
|
7
|
-
constructor(
|
|
7
|
+
export class ServerResponse extends EventEmitter {
|
|
8
|
+
constructor(sendResponse) {
|
|
9
|
+
super();
|
|
10
|
+
/**
|
|
11
|
+
* Response headers.
|
|
12
|
+
*/
|
|
13
|
+
this.headers = new Headers();
|
|
8
14
|
/**
|
|
9
15
|
* Response has already been sent.
|
|
10
16
|
*/
|
|
@@ -13,40 +19,37 @@ export class ServerResponse {
|
|
|
13
19
|
* Response status.
|
|
14
20
|
*/
|
|
15
21
|
this.statusCode = 200;
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
18
|
-
this._raw = res;
|
|
22
|
+
this._ctx = undefined;
|
|
23
|
+
this._sendResponse = sendResponse;
|
|
19
24
|
}
|
|
20
25
|
/**
|
|
21
26
|
* Append header value.
|
|
22
27
|
*/
|
|
23
28
|
append(name, value) {
|
|
24
|
-
|
|
25
|
-
const old = headers[name];
|
|
26
|
-
if (old === undefined) {
|
|
27
|
-
headers[name] = value;
|
|
28
|
-
}
|
|
29
|
-
else if (Array.isArray(old)) {
|
|
30
|
-
old.push(value);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
headers[name] = [old, value];
|
|
34
|
-
}
|
|
29
|
+
this.headers.append(name, value);
|
|
35
30
|
return this;
|
|
36
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Bind context to response.
|
|
34
|
+
*/
|
|
35
|
+
bindContext(ctx) {
|
|
36
|
+
this._ctx = new WeakRef(ctx);
|
|
37
|
+
}
|
|
37
38
|
/**
|
|
38
39
|
* Set response content length.
|
|
39
40
|
*/
|
|
40
41
|
length(len) {
|
|
41
|
-
this.
|
|
42
|
-
return this;
|
|
42
|
+
return this.set('Content-Length', len.toString());
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
45
45
|
* Send response.
|
|
46
46
|
*/
|
|
47
47
|
async send(body) {
|
|
48
48
|
this.isSent = true;
|
|
49
|
-
const
|
|
49
|
+
const ctxRef = this._ctx;
|
|
50
|
+
if (ctxRef === undefined)
|
|
51
|
+
return;
|
|
52
|
+
const ctx = ctxRef.deref();
|
|
50
53
|
if (ctx === undefined)
|
|
51
54
|
return;
|
|
52
55
|
const app = ctx.app;
|
|
@@ -55,41 +58,20 @@ export class ServerResponse {
|
|
|
55
58
|
body = newBody;
|
|
56
59
|
if (ctx.isSessionActive === true)
|
|
57
60
|
await app.session.store(ctx, await ctx.session());
|
|
58
|
-
|
|
59
|
-
if (typeof body === 'string' || Buffer.isBuffer(body)) {
|
|
60
|
-
this.length(Buffer.byteLength(body));
|
|
61
|
-
raw.writeHead(this.statusCode, this._headers);
|
|
62
|
-
raw.end(body);
|
|
63
|
-
}
|
|
64
|
-
else if (body instanceof Stream) {
|
|
65
|
-
raw.writeHead(this.statusCode, this._headers);
|
|
66
|
-
body.pipe(this._raw);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
raw.writeHead(this.statusCode, this._headers);
|
|
70
|
-
raw.end();
|
|
71
|
-
}
|
|
61
|
+
this._sendResponse(this, body);
|
|
72
62
|
}
|
|
73
63
|
/**
|
|
74
64
|
* Set HTTP header for response.
|
|
75
65
|
*/
|
|
76
66
|
set(name, value) {
|
|
77
|
-
|
|
78
|
-
let header = this._headers[name];
|
|
79
|
-
if (typeof header === 'string')
|
|
80
|
-
header = this._headers[name] = [header];
|
|
81
|
-
header.push(value);
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
this._headers[name] = value;
|
|
85
|
-
}
|
|
67
|
+
this.headers.set(name, value);
|
|
86
68
|
return this;
|
|
87
69
|
}
|
|
88
70
|
/**
|
|
89
71
|
* Set cookie value.
|
|
90
72
|
*/
|
|
91
73
|
setCookie(name, value, options) {
|
|
92
|
-
return this.
|
|
74
|
+
return this.append('Set-Cookie', stringifyCookie(name, value, options));
|
|
93
75
|
}
|
|
94
76
|
/**
|
|
95
77
|
* Set response status.
|
|
@@ -102,8 +84,7 @@ export class ServerResponse {
|
|
|
102
84
|
* Set response content type.
|
|
103
85
|
*/
|
|
104
86
|
type(type) {
|
|
105
|
-
this.
|
|
106
|
-
return this;
|
|
87
|
+
return this.set('Content-Type', type);
|
|
107
88
|
}
|
|
108
89
|
}
|
|
109
90
|
//# sourceMappingURL=response.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/server/response.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/server/response.ts"],"names":[],"mappings":"AAGA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAI5C;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,YAAY;IAiB9C,YAAY,YAA0B;QACpC,KAAK,EAAE,CAAC;QAjBV;;WAEG;QACH,YAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QACxB;;WAEG;QACH,WAAM,GAAG,KAAK,CAAC;QACf;;WAEG;QACH,eAAU,GAAG,GAAG,CAAC;QAEjB,SAAI,GAAiC,SAAS,CAAC;QAK7C,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAY,EAAE,KAAa;QAChC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,GAAY;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,IAA+B;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QAE9B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAClE,IAAI,OAAO,KAAK,SAAS;YAAE,IAAI,GAAG,OAAO,CAAC;QAE1C,IAAI,GAAG,CAAC,eAAe,KAAK,IAAI;YAAE,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAEpF,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY,EAAE,KAAa;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAAY,EAAE,KAAa,EAAE,OAAsB;QAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;CACF"}
|
package/lib/server.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { Socket } from 'net';
|
|
|
4
4
|
import http from 'http';
|
|
5
5
|
import https from 'https';
|
|
6
6
|
import { URL } from 'url';
|
|
7
|
+
import { ServerRequest } from './server/request.js';
|
|
7
8
|
import { WebSocketServer } from 'ws';
|
|
8
9
|
declare type ListenArgs = any[];
|
|
9
10
|
interface ServerOptions {
|
|
@@ -48,7 +49,8 @@ export declare class Server {
|
|
|
48
49
|
*/
|
|
49
50
|
stop(): Promise<void>;
|
|
50
51
|
_createServer(location: string): Promise<void>;
|
|
51
|
-
_handleRequest(req: http.IncomingMessage,
|
|
52
|
+
_handleRequest(req: http.IncomingMessage, raw: http.ServerResponse): void;
|
|
52
53
|
_handleUpgrade(wss: WebSocketServer, req: http.IncomingMessage, socket: Socket, head: Buffer): void;
|
|
54
|
+
_prepareRequest(req: http.IncomingMessage, socket: Socket, isWebSocket: boolean): ServerRequest;
|
|
53
55
|
}
|
|
54
56
|
export {};
|
package/lib/server.js
CHANGED
|
@@ -2,7 +2,10 @@ import cluster from 'cluster';
|
|
|
2
2
|
import http from 'http';
|
|
3
3
|
import https from 'https';
|
|
4
4
|
import os from 'os';
|
|
5
|
+
import { Stream } from 'stream';
|
|
5
6
|
import { URL } from 'url';
|
|
7
|
+
import { ServerRequest } from './server/request.js';
|
|
8
|
+
import { ServerResponse } from './server/response.js';
|
|
6
9
|
import { WebSocket } from './websocket.js';
|
|
7
10
|
import Path from '@mojojs/path';
|
|
8
11
|
import { WebSocketServer } from 'ws';
|
|
@@ -113,14 +116,20 @@ export class Server {
|
|
|
113
116
|
});
|
|
114
117
|
});
|
|
115
118
|
}
|
|
116
|
-
_handleRequest(req,
|
|
119
|
+
_handleRequest(req, raw) {
|
|
117
120
|
const app = this.app;
|
|
118
|
-
const
|
|
121
|
+
const socket = req.socket;
|
|
122
|
+
const ctx = app.newContext(this._prepareRequest(req, socket, false), new ServerResponse(function (res, body) {
|
|
123
|
+
_sendResponse(res, body, raw);
|
|
124
|
+
}));
|
|
125
|
+
raw.on('finish', () => ctx.emit('finish'));
|
|
119
126
|
app.handleRequest(ctx).catch(error => ctx.exception(error));
|
|
120
127
|
}
|
|
121
128
|
_handleUpgrade(wss, req, socket, head) {
|
|
122
129
|
const app = this.app;
|
|
123
|
-
const ctx = app.newContext(req,
|
|
130
|
+
const ctx = app.newContext(this._prepareRequest(req, socket, true), new ServerResponse(function (res, body) {
|
|
131
|
+
_sendResponse(res, body, new http.ServerResponse(req));
|
|
132
|
+
}));
|
|
124
133
|
app
|
|
125
134
|
.handleRequest(ctx)
|
|
126
135
|
.then(() => {
|
|
@@ -139,5 +148,32 @@ export class Server {
|
|
|
139
148
|
return ctx.exception(error);
|
|
140
149
|
});
|
|
141
150
|
}
|
|
151
|
+
_prepareRequest(req, socket, isWebSocket) {
|
|
152
|
+
return new ServerRequest({
|
|
153
|
+
body: req,
|
|
154
|
+
headers: req.rawHeaders,
|
|
155
|
+
isSecure: socket.encrypted ?? false,
|
|
156
|
+
isWebSocket: isWebSocket,
|
|
157
|
+
method: req.method,
|
|
158
|
+
remoteAddress: socket.remoteAddress,
|
|
159
|
+
reverseProxy: this.reverseProxy,
|
|
160
|
+
url: req.url
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function _sendResponse(res, body, raw) {
|
|
165
|
+
if (typeof body === 'string' || Buffer.isBuffer(body)) {
|
|
166
|
+
res.length(Buffer.byteLength(body));
|
|
167
|
+
raw.writeHead(res.statusCode, res.headers.toArray());
|
|
168
|
+
raw.end(body);
|
|
169
|
+
}
|
|
170
|
+
else if (body instanceof Stream) {
|
|
171
|
+
raw.writeHead(res.statusCode, res.headers.toArray());
|
|
172
|
+
body.pipe(raw);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
raw.writeHead(res.statusCode, res.headers.toArray());
|
|
176
|
+
raw.end();
|
|
177
|
+
}
|
|
142
178
|
}
|
|
143
179
|
//# sourceMappingURL=server.js.map
|
package/lib/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AACxB,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,IAAI,MAAM,cAAc,CAAC;AAChC,OAAO,EAAC,eAAe,EAAC,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/lib/static.js
CHANGED
|
@@ -61,7 +61,7 @@ export class Static {
|
|
|
61
61
|
// If-None-Match
|
|
62
62
|
const req = ctx.req;
|
|
63
63
|
const ifNoneMatch = req.get('If-None-Match');
|
|
64
|
-
if (etag !== undefined && ifNoneMatch !==
|
|
64
|
+
if (etag !== undefined && ifNoneMatch !== null) {
|
|
65
65
|
const etags = ifNoneMatch.split(/,\s+/).map(value => value.replaceAll('"', ''));
|
|
66
66
|
for (const match of etags) {
|
|
67
67
|
if (match === etag)
|
|
@@ -70,7 +70,7 @@ export class Static {
|
|
|
70
70
|
}
|
|
71
71
|
// If-Modified-Since
|
|
72
72
|
const ifModifiedSince = req.get('If-Modified-Since');
|
|
73
|
-
if (options.lastModified !== undefined && ifModifiedSince !==
|
|
73
|
+
if (options.lastModified !== undefined && ifModifiedSince !== null) {
|
|
74
74
|
const epoch = Date.parse(ifModifiedSince);
|
|
75
75
|
if (isNaN(epoch))
|
|
76
76
|
return false;
|
|
@@ -102,7 +102,7 @@ export class Static {
|
|
|
102
102
|
return;
|
|
103
103
|
}
|
|
104
104
|
// Entire file
|
|
105
|
-
if (range ===
|
|
105
|
+
if (range === null) {
|
|
106
106
|
await res.status(200).length(length).type(type).send(file.createReadStream());
|
|
107
107
|
return;
|
|
108
108
|
}
|
package/lib/static.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static.js","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,cAAc,CAAC;AAEhC;;GAEG;AACH,MAAM,OAAO,MAAM;IAAnB;QACE;;WAEG;QACH,WAAM,GAAG,SAAS,CAAC;QACnB;;WAEG;QACH,gBAAW,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAwHlF,CAAC;IAtHC;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,GAAgB;QAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QACpB,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;QAC5B,IAAI,UAAU,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QAE7E,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QAExD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/E,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAErF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;YAClC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI;gBAAE,SAAS;YAC/F,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAY;QACnB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,KAAK;YAAE,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;QACtD,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,GAAgB,EAAE,UAAgD,EAAE;QAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAE1C,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QACpB,IAAI,IAAI,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;QACrD,IAAI,YAAY,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;QAErF,gBAAgB;QAChB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QACpB,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7C,IAAI,IAAI,KAAK,SAAS,IAAI,WAAW,KAAK,
|
|
1
|
+
{"version":3,"file":"static.js","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { App } from './app.js';
|
|
|
4
4
|
import type { Context } from './context.js';
|
|
5
5
|
import type { ValidatorResult } from './validator/result.js';
|
|
6
6
|
import type { Agent } from 'http';
|
|
7
|
+
import type { Readable } from 'stream';
|
|
7
8
|
import type { CookieJar } from 'tough-cookie';
|
|
8
9
|
import type { URL } from 'url';
|
|
9
10
|
export declare type Expand<T> = T extends infer O ? {
|
|
@@ -57,11 +58,6 @@ export interface CookieOptions {
|
|
|
57
58
|
sameSite?: 'lax' | 'strict' | 'none';
|
|
58
59
|
secure?: boolean;
|
|
59
60
|
}
|
|
60
|
-
export interface MockRequestOptions {
|
|
61
|
-
headers?: Record<string, string>;
|
|
62
|
-
method?: string;
|
|
63
|
-
url?: string;
|
|
64
|
-
}
|
|
65
61
|
export interface RenderOptions {
|
|
66
62
|
engine?: string;
|
|
67
63
|
format?: string;
|
|
@@ -78,8 +74,14 @@ export interface RenderOptions {
|
|
|
78
74
|
[key: string]: any;
|
|
79
75
|
}
|
|
80
76
|
export interface ServerRequestOptions {
|
|
77
|
+
body: Readable;
|
|
78
|
+
headers: string[];
|
|
79
|
+
isSecure: boolean;
|
|
81
80
|
isWebSocket: boolean;
|
|
81
|
+
method?: string;
|
|
82
|
+
remoteAddress?: string;
|
|
82
83
|
reverseProxy: boolean;
|
|
84
|
+
url?: string;
|
|
83
85
|
}
|
|
84
86
|
export interface UserAgentOptions {
|
|
85
87
|
baseURL?: string | URL;
|
|
@@ -1,12 +1,29 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { IncomingMessage } from 'http';
|
|
1
3
|
import { Body } from '../body.js';
|
|
4
|
+
interface UserAgentResponseOptions {
|
|
5
|
+
headers: string[];
|
|
6
|
+
httpVersion: string;
|
|
7
|
+
status: number;
|
|
8
|
+
statusMessage: string;
|
|
9
|
+
}
|
|
2
10
|
/**
|
|
3
11
|
* User agent response class.
|
|
4
12
|
*/
|
|
5
13
|
export declare class UserAgentResponse extends Body {
|
|
6
14
|
/**
|
|
7
|
-
*
|
|
15
|
+
* HTTP version.
|
|
16
|
+
*/
|
|
17
|
+
httpVersion: string;
|
|
18
|
+
/**
|
|
19
|
+
* Response status code.
|
|
20
|
+
*/
|
|
21
|
+
status: number;
|
|
22
|
+
/**
|
|
23
|
+
* Response status message.
|
|
8
24
|
*/
|
|
9
|
-
|
|
25
|
+
statusMessage: string;
|
|
26
|
+
constructor(stream: IncomingMessage, options: UserAgentResponseOptions);
|
|
10
27
|
/**
|
|
11
28
|
* Check if response has a `4xx` response status code.
|
|
12
29
|
*/
|
|
@@ -27,16 +44,9 @@ export declare class UserAgentResponse extends Body {
|
|
|
27
44
|
* Check if response has a `2xx` response status code.
|
|
28
45
|
*/
|
|
29
46
|
get isSuccess(): boolean;
|
|
30
|
-
/**
|
|
31
|
-
* Response status code.
|
|
32
|
-
*/
|
|
33
|
-
get status(): number;
|
|
34
|
-
/**
|
|
35
|
-
* Get response message.
|
|
36
|
-
*/
|
|
37
|
-
get statusMessage(): string | undefined;
|
|
38
47
|
/**
|
|
39
48
|
* Get `Content-Type` header value.
|
|
40
49
|
*/
|
|
41
|
-
get type(): string |
|
|
50
|
+
get type(): string | null;
|
|
42
51
|
}
|
|
52
|
+
export {};
|