@mojojs/core 0.13.0 → 0.15.2
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 +2 -1
- package/lib/app.js +2 -2
- package/lib/app.js.map +1 -1
- package/lib/cli/create-full-app.js +10 -10
- package/lib/cli/create-full-app.js.map +1 -1
- package/lib/cli/create-lite-app.js +4 -4
- package/lib/context.d.ts +2 -2
- package/lib/context.js.map +1 -1
- package/lib/core.d.ts +1 -1
- package/lib/plugins/exception-helpers.js +1 -0
- package/lib/plugins/exception-helpers.js.map +1 -1
- package/lib/plugins/mt-engine.d.ts +2 -0
- package/lib/plugins/{ejs-engine.js → mt-engine.js} +9 -8
- package/lib/plugins/mt-engine.js.map +1 -0
- package/lib/plugins/view-helpers.js +10 -0
- package/lib/plugins/view-helpers.js.map +1 -1
- package/lib/renderer.js +1 -1
- package/lib/renderer.js.map +1 -1
- package/lib/session.d.ts +3 -2
- package/lib/session.js +7 -3
- package/lib/session.js.map +1 -1
- package/lib/types.d.ts +12 -1
- package/lib/user-agent/cookie-jar.d.ts +9 -0
- package/lib/user-agent/cookie-jar.js +27 -0
- package/lib/user-agent/cookie-jar.js.map +1 -0
- package/lib/user-agent/mock.js +1 -0
- package/lib/user-agent/mock.js.map +1 -1
- package/lib/user-agent/transport/http.d.ts +12 -0
- package/lib/user-agent/transport/http.js +42 -0
- package/lib/user-agent/transport/http.js.map +1 -0
- package/lib/user-agent/transport/https.d.ts +11 -0
- package/lib/user-agent/transport/https.js +22 -0
- package/lib/user-agent/transport/https.js.map +1 -0
- package/lib/user-agent/transport/ws.d.ts +5 -0
- package/lib/user-agent/transport/ws.js +21 -0
- package/lib/user-agent/transport/ws.js.map +1 -0
- package/lib/user-agent.d.ts +67 -11
- package/lib/user-agent.js +78 -85
- package/lib/user-agent.js.map +1 -1
- package/lib/util.js +2 -2
- package/lib/util.js.map +1 -1
- package/package.json +3 -4
- package/vendor/README.md +1 -1
- package/vendor/views/mojo/{debug.html.ejs → debug.html.mt} +26 -26
- package/vendor/views/mojo/{exception.html.ejs → exception.html.mt} +1 -1
- package/vendor/views/mojo/{not-found.html.ejs → not-found.html.mt} +1 -1
- package/lib/plugins/ejs-engine.d.ts +0 -2
- package/lib/plugins/ejs-engine.js.map +0 -1
- package/lib/validator/schema.d.ts +0 -8
- package/lib/validator/schema.js +0 -19
- package/lib/validator/schema.js.map +0 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import https from 'https';
|
|
2
|
+
import { HTTPTransport } from './http.js';
|
|
3
|
+
export class HTTPSTransport extends HTTPTransport {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(...arguments);
|
|
6
|
+
this.agent = new https.Agent();
|
|
7
|
+
}
|
|
8
|
+
_prepareOptions(config) {
|
|
9
|
+
const options = super._prepareOptions(config);
|
|
10
|
+
if (config.ca !== undefined)
|
|
11
|
+
options.ca = config.ca;
|
|
12
|
+
if (config.insecure !== undefined)
|
|
13
|
+
options.rejectUnauthorized = config.insecure !== true;
|
|
14
|
+
if (config.servername !== undefined)
|
|
15
|
+
options.servername = config.servername;
|
|
16
|
+
return options;
|
|
17
|
+
}
|
|
18
|
+
_sendRequest(url, options, cb) {
|
|
19
|
+
return https.request(url, options, cb);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=https.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"https.js","sourceRoot":"","sources":["../../../src/user-agent/transport/https.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAExC,MAAM,OAAO,cAAe,SAAQ,aAAa;IAAjD;;QACE,UAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;IAa5B,CAAC;IAXC,eAAe,CAAC,MAA+B;QAC7C,MAAM,OAAO,GAAyB,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACpE,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS;YAAE,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACpD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,CAAC,kBAAkB,GAAG,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC;QACzF,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;YAAE,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAC5E,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY,CAAC,GAAQ,EAAE,OAA6B,EAAE,EAAuC;QAC3F,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { WebSocket } from '../../websocket.js';
|
|
2
|
+
import { UserAgentResponse } from '../response.js';
|
|
3
|
+
import WS from 'ws';
|
|
4
|
+
export class WSTransport {
|
|
5
|
+
async connect(config) {
|
|
6
|
+
const ws = new WS(config.url ?? '', config.protocols, { headers: config.headers });
|
|
7
|
+
return await new Promise((resolve, reject) => {
|
|
8
|
+
let handshake;
|
|
9
|
+
ws.on('upgrade', res => (handshake = new UserAgentResponse(res)));
|
|
10
|
+
ws.on('error', reject);
|
|
11
|
+
ws.on('open', () => {
|
|
12
|
+
// Workaround for a race condition where the first message arrives before the promise resolves
|
|
13
|
+
const socket = handshake.raw.socket;
|
|
14
|
+
socket.pause();
|
|
15
|
+
queueMicrotask(() => socket.resume());
|
|
16
|
+
resolve(new WebSocket(ws, handshake, { jsonMode: config.json ?? false }));
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=ws.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../../../src/user-agent/transport/ws.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAC,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,OAAO,WAAW;IACtB,KAAK,CAAC,OAAO,CAAC,MAAiC;QAC7C,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,EAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAC,CAAC,CAAC;QACjF,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,SAA4B,CAAC;YACjC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAEvB,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBACjB,8FAA8F;gBAC9F,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;gBACpC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,cAAc,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtC,OAAO,CAAC,IAAI,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,EAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK,EAAC,CAAC,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/lib/user-agent.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import type { UserAgentOptions, UserAgentRequestOptions, UserAgentWebSocketOptions } from './types.js';
|
|
3
|
+
import type { UserAgentResponse } from './user-agent/response.js';
|
|
4
|
+
import type { WebSocket } from './websocket.js';
|
|
3
5
|
import EventEmitter from 'events';
|
|
4
|
-
import http from 'http';
|
|
5
6
|
import { URL } from 'url';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
7
|
+
import { CookieJar } from './user-agent/cookie-jar.js';
|
|
8
|
+
import { HTTPTransport } from './user-agent/transport/http.js';
|
|
9
|
+
import { HTTPSTransport } from './user-agent/transport/https.js';
|
|
10
|
+
import { WSTransport } from './user-agent/transport/ws.js';
|
|
8
11
|
import FormData from 'form-data';
|
|
9
|
-
import tough from 'tough-cookie';
|
|
10
12
|
interface Upload {
|
|
11
13
|
content: string;
|
|
12
14
|
filename: string;
|
|
@@ -20,29 +22,83 @@ declare interface UserAgent {
|
|
|
20
22
|
on: <T extends keyof UserAgentEvents>(event: T, listener: UserAgentEvents[T]) => this;
|
|
21
23
|
emit: <T extends keyof UserAgentEvents>(event: T, ...args: Parameters<UserAgentEvents[T]>) => boolean;
|
|
22
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* HTTP and WebSocket user agent.
|
|
27
|
+
*/
|
|
23
28
|
declare class UserAgent extends EventEmitter {
|
|
29
|
+
/**
|
|
30
|
+
* Base URL to be used to resolve all relative request URLs with.
|
|
31
|
+
*/
|
|
24
32
|
baseUrl: string | URL | undefined;
|
|
25
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Cookie jar to use.
|
|
35
|
+
*/
|
|
36
|
+
cookieJar: CookieJar | null;
|
|
37
|
+
/**
|
|
38
|
+
* Transport backend to perform HTTP requests with.
|
|
39
|
+
*/
|
|
40
|
+
httpTransport: HTTPTransport;
|
|
41
|
+
/**
|
|
42
|
+
* Transport backend to perform HTTPS requests with.
|
|
43
|
+
*/
|
|
44
|
+
httpsTransport: HTTPSTransport;
|
|
45
|
+
/**
|
|
46
|
+
* Maximum number of redirects to follow, default to `0`.
|
|
47
|
+
*/
|
|
26
48
|
maxRedirects: number;
|
|
49
|
+
/**
|
|
50
|
+
* Name of user agent to send with `User-Agent` header.
|
|
51
|
+
*/
|
|
27
52
|
name: string | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Transport backend to use for WebSocket connections.
|
|
55
|
+
*/
|
|
56
|
+
wsTransport: WSTransport;
|
|
28
57
|
constructor(options?: UserAgentOptions);
|
|
58
|
+
/**
|
|
59
|
+
* Destroy all active keep-alive connections.
|
|
60
|
+
*/
|
|
61
|
+
destroy(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Perform `DELETE` request.
|
|
64
|
+
*/
|
|
29
65
|
delete(url: string | URL, options: UserAgentRequestOptions): Promise<UserAgentResponse>;
|
|
66
|
+
/**
|
|
67
|
+
* Perform `GET` request.
|
|
68
|
+
*/
|
|
30
69
|
get(url: string | URL, options: UserAgentRequestOptions): Promise<UserAgentResponse>;
|
|
70
|
+
/**
|
|
71
|
+
* Perform `HEAD` request.
|
|
72
|
+
*/
|
|
31
73
|
head(url: string | URL, options: UserAgentRequestOptions): Promise<UserAgentResponse>;
|
|
74
|
+
/**
|
|
75
|
+
* Perform `OPTIONS` request.
|
|
76
|
+
*/
|
|
32
77
|
options(url: string | URL, options: UserAgentRequestOptions): Promise<UserAgentResponse>;
|
|
78
|
+
/**
|
|
79
|
+
* Perform `PATCH` request.
|
|
80
|
+
*/
|
|
33
81
|
patch(url: string | URL, options: UserAgentRequestOptions): Promise<UserAgentResponse>;
|
|
82
|
+
/**
|
|
83
|
+
* Perform `POST` request.
|
|
84
|
+
*/
|
|
34
85
|
post(url: string | URL, options: UserAgentRequestOptions): Promise<UserAgentResponse>;
|
|
86
|
+
/**
|
|
87
|
+
* Perform `PUT` request.
|
|
88
|
+
*/
|
|
35
89
|
put(url: string | URL, options: UserAgentRequestOptions): Promise<UserAgentResponse>;
|
|
90
|
+
/**
|
|
91
|
+
* Perform HTTP request.
|
|
92
|
+
*/
|
|
36
93
|
request(config: UserAgentRequestOptions): Promise<UserAgentResponse>;
|
|
94
|
+
/**
|
|
95
|
+
* Open WebSocket connection.
|
|
96
|
+
*/
|
|
37
97
|
websocket(url: string | URL, options?: UserAgentWebSocketOptions): Promise<WebSocket>;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
_filterSharedConfig(config: Record<string, any>): Record<string, any>;
|
|
98
|
+
_filterConfig(config: UserAgentRequestOptions): Promise<Record<string, any>>;
|
|
99
|
+
_filterSharedConfig(config: UserAgentRequestOptions | UserAgentWebSocketOptions): Promise<Record<string, any>>;
|
|
41
100
|
_formData(values?: Record<string, string | Upload>): FormData;
|
|
42
101
|
_handleRedirect(config: Record<string, any>, res: UserAgentResponse): Promise<UserAgentResponse>;
|
|
43
|
-
_handleResponse(config: Record<string, any>, raw: http.IncomingMessage): Promise<UserAgentResponse>;
|
|
44
|
-
_loadCookies(url: URL, config: Record<string, any>): Promise<void>;
|
|
45
102
|
_requestConfig(method: string, url?: string | URL, options?: UserAgentRequestOptions): Promise<UserAgentResponse>;
|
|
46
|
-
_storeCookies(url: URL, res: UserAgentResponse): Promise<void>;
|
|
47
103
|
}
|
|
48
104
|
export { UserAgent };
|
package/lib/user-agent.js
CHANGED
|
@@ -1,103 +1,116 @@
|
|
|
1
1
|
import EventEmitter from 'events';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { WebSocket } from './websocket.js';
|
|
2
|
+
import { URL } from 'url';
|
|
3
|
+
import { CookieJar } from './user-agent/cookie-jar.js';
|
|
4
|
+
import { HTTPTransport } from './user-agent/transport/http.js';
|
|
5
|
+
import { HTTPSTransport } from './user-agent/transport/https.js';
|
|
6
|
+
import { WSTransport } from './user-agent/transport/ws.js';
|
|
8
7
|
import FormData from 'form-data';
|
|
9
8
|
import yaml from 'js-yaml';
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
/**
|
|
10
|
+
* HTTP and WebSocket user agent.
|
|
11
|
+
*/
|
|
12
12
|
class UserAgent extends EventEmitter {
|
|
13
13
|
constructor(options = {}) {
|
|
14
14
|
super();
|
|
15
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Cookie jar to use.
|
|
17
|
+
*/
|
|
18
|
+
this.cookieJar = new CookieJar();
|
|
19
|
+
/**
|
|
20
|
+
* Transport backend to perform HTTP requests with.
|
|
21
|
+
*/
|
|
22
|
+
this.httpTransport = new HTTPTransport();
|
|
23
|
+
/**
|
|
24
|
+
* Transport backend to perform HTTPS requests with.
|
|
25
|
+
*/
|
|
26
|
+
this.httpsTransport = new HTTPSTransport();
|
|
27
|
+
/**
|
|
28
|
+
* Transport backend to use for WebSocket connections.
|
|
29
|
+
*/
|
|
30
|
+
this.wsTransport = new WSTransport();
|
|
16
31
|
this.baseUrl = options.baseUrl;
|
|
17
32
|
this.maxRedirects = options.maxRedirects ?? 0;
|
|
18
33
|
this.name = options.name;
|
|
19
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Destroy all active keep-alive connections.
|
|
37
|
+
*/
|
|
38
|
+
destroy() {
|
|
39
|
+
this.httpTransport.destroy();
|
|
40
|
+
this.httpsTransport.destroy();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Perform `DELETE` request.
|
|
44
|
+
*/
|
|
20
45
|
async delete(url, options) {
|
|
21
46
|
return await this._requestConfig('DELETE', url, options);
|
|
22
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Perform `GET` request.
|
|
50
|
+
*/
|
|
23
51
|
async get(url, options) {
|
|
24
52
|
return await this._requestConfig('GET', url, options);
|
|
25
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Perform `HEAD` request.
|
|
56
|
+
*/
|
|
26
57
|
async head(url, options) {
|
|
27
58
|
return await this._requestConfig('HEAD', url, options);
|
|
28
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Perform `OPTIONS` request.
|
|
62
|
+
*/
|
|
29
63
|
async options(url, options) {
|
|
30
64
|
return await this._requestConfig('OPTIONS', url, options);
|
|
31
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Perform `PATCH` request.
|
|
68
|
+
*/
|
|
32
69
|
async patch(url, options) {
|
|
33
70
|
return await this._requestConfig('PATCH', url, options);
|
|
34
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Perform `POST` request.
|
|
74
|
+
*/
|
|
35
75
|
async post(url, options) {
|
|
36
76
|
return await this._requestConfig('POST', url, options);
|
|
37
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Perform `PUT` request.
|
|
80
|
+
*/
|
|
38
81
|
async put(url, options) {
|
|
39
82
|
return await this._requestConfig('PUT', url, options);
|
|
40
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Perform HTTP request.
|
|
86
|
+
*/
|
|
41
87
|
async request(config) {
|
|
42
|
-
const filtered = this._filterConfig(config);
|
|
43
|
-
await this._loadCookies(filtered.url, filtered);
|
|
88
|
+
const filtered = await this._filterConfig(config);
|
|
44
89
|
this.emit('request', filtered);
|
|
45
90
|
if (typeof filtered.body === 'string')
|
|
46
91
|
filtered.body = Buffer.from(filtered.body);
|
|
47
92
|
if (filtered.body instanceof Buffer)
|
|
48
93
|
filtered.headers['Content-Length'] = Buffer.byteLength(filtered.body);
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (filtered.insecure !== undefined)
|
|
57
|
-
options.rejectUnauthorized = filtered.insecure !== true;
|
|
58
|
-
if (filtered.servername !== undefined)
|
|
59
|
-
options.servername = filtered.servername;
|
|
60
|
-
const proto = filtered.url.protocol === 'https:' ? https : http;
|
|
61
|
-
return await new Promise((resolve, reject) => {
|
|
62
|
-
const req = proto.request(filtered.url, options, res => resolve(this._handleResponse(filtered, res)));
|
|
63
|
-
req.once('error', reject);
|
|
64
|
-
req.once('abort', reject);
|
|
65
|
-
if (filtered.body instanceof Buffer) {
|
|
66
|
-
req.end(filtered.body);
|
|
67
|
-
}
|
|
68
|
-
else if (filtered.body instanceof Stream) {
|
|
69
|
-
filtered.body.pipe(req);
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
req.end();
|
|
73
|
-
}
|
|
74
|
-
});
|
|
94
|
+
const transport = filtered.url.protocol === 'https:' ? this.httpsTransport : this.httpTransport;
|
|
95
|
+
let res = await transport.request(filtered);
|
|
96
|
+
if (this.cookieJar !== null)
|
|
97
|
+
await this.cookieJar.storeCookies(filtered.url, res.headers['set-cookie']);
|
|
98
|
+
if (this.maxRedirects > 0)
|
|
99
|
+
res = await this._handleRedirect(config, res);
|
|
100
|
+
return res;
|
|
75
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Open WebSocket connection.
|
|
104
|
+
*/
|
|
76
105
|
async websocket(url, options = {}) {
|
|
77
106
|
options.url = url;
|
|
78
|
-
const filtered = this._filterSharedConfig(options);
|
|
79
|
-
await this._loadCookies(filtered.url, filtered);
|
|
107
|
+
const filtered = await this._filterSharedConfig(options);
|
|
80
108
|
this.emit('websocket', filtered);
|
|
81
109
|
filtered.url.protocol = filtered.url.protocol === 'https:' ? 'wss:' : 'ws:';
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
ws.on('error', reject);
|
|
87
|
-
ws.on('open', () => {
|
|
88
|
-
// Workaround for a race condition where the first message arrives before the promise resolves
|
|
89
|
-
const socket = handshake.raw.socket;
|
|
90
|
-
socket.pause();
|
|
91
|
-
queueMicrotask(() => socket.resume());
|
|
92
|
-
resolve(new WebSocket(ws, handshake, { jsonMode: filtered.json }));
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
_cookieURL(currentURL) {
|
|
97
|
-
return format(currentURL, { auth: false, fragment: false, search: false });
|
|
98
|
-
}
|
|
99
|
-
_filterConfig(config) {
|
|
100
|
-
const filtered = this._filterSharedConfig(config);
|
|
110
|
+
return await this.wsTransport.connect(filtered);
|
|
111
|
+
}
|
|
112
|
+
async _filterConfig(config) {
|
|
113
|
+
const filtered = await this._filterSharedConfig(config);
|
|
101
114
|
if (filtered.method === undefined)
|
|
102
115
|
filtered.method = 'GET';
|
|
103
116
|
// Body
|
|
@@ -124,9 +137,9 @@ class UserAgent extends EventEmitter {
|
|
|
124
137
|
}
|
|
125
138
|
return filtered;
|
|
126
139
|
}
|
|
127
|
-
_filterSharedConfig(config) {
|
|
140
|
+
async _filterSharedConfig(config) {
|
|
128
141
|
if (!(config.url instanceof URL))
|
|
129
|
-
config.url = new URL(config.url, this.baseUrl);
|
|
142
|
+
config.url = new URL(config.url ?? '', this.baseUrl);
|
|
130
143
|
// Auth
|
|
131
144
|
const url = config.url;
|
|
132
145
|
if ((url.username !== '' || url.password !== '') && config.auth === undefined) {
|
|
@@ -146,6 +159,11 @@ class UserAgent extends EventEmitter {
|
|
|
146
159
|
config.headers['User-Agent'] = this.name;
|
|
147
160
|
if (config.headers['Accept-Encoding'] === undefined)
|
|
148
161
|
config.headers['Accept-Encoding'] = 'gzip';
|
|
162
|
+
if (this.cookieJar !== null) {
|
|
163
|
+
const cookies = await this.cookieJar.loadCookies(config.url);
|
|
164
|
+
if (cookies !== null)
|
|
165
|
+
config.headers.Cookie = cookies;
|
|
166
|
+
}
|
|
149
167
|
return config;
|
|
150
168
|
}
|
|
151
169
|
_formData(values = {}) {
|
|
@@ -191,34 +209,9 @@ class UserAgent extends EventEmitter {
|
|
|
191
209
|
}
|
|
192
210
|
return res;
|
|
193
211
|
}
|
|
194
|
-
async _handleResponse(config, raw) {
|
|
195
|
-
const res = new UserAgentResponse(raw);
|
|
196
|
-
await this._storeCookies(config.url, res);
|
|
197
|
-
return this.maxRedirects > 0 ? await this._handleRedirect(config, res) : res;
|
|
198
|
-
}
|
|
199
|
-
async _loadCookies(url, config) {
|
|
200
|
-
if (this.cookieJar === null)
|
|
201
|
-
return;
|
|
202
|
-
const cookies = await this.cookieJar.getCookies(this._cookieURL(url));
|
|
203
|
-
if (cookies.length > 0)
|
|
204
|
-
config.headers.Cookie = cookies.map(cookie => cookie.cookieString()).join('; ');
|
|
205
|
-
}
|
|
206
212
|
async _requestConfig(method, url = '/', options) {
|
|
207
213
|
return await this.request({ url, method, ...options });
|
|
208
214
|
}
|
|
209
|
-
async _storeCookies(url, res) {
|
|
210
|
-
if (this.cookieJar === null)
|
|
211
|
-
return;
|
|
212
|
-
const header = res.headers['set-cookie'];
|
|
213
|
-
if (header === undefined)
|
|
214
|
-
return;
|
|
215
|
-
const cookieURL = this._cookieURL(url);
|
|
216
|
-
for (const cookie of header.map(value => tough.Cookie.parse(value ?? ''))) {
|
|
217
|
-
if (cookie === undefined)
|
|
218
|
-
continue;
|
|
219
|
-
await this.cookieJar.setCookie(cookie, cookieURL);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
215
|
}
|
|
223
216
|
export { UserAgent };
|
|
224
217
|
//# sourceMappingURL=user-agent.js.map
|
package/lib/user-agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-agent.js","sourceRoot":"","sources":["../src/user-agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"user-agent.js","sourceRoot":"","sources":["../src/user-agent.ts"],"names":[],"mappings":"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"}
|
package/lib/util.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { setTimeout } from 'timers/promises';
|
|
2
2
|
import url from 'url';
|
|
3
3
|
import Path from '@mojojs/path';
|
|
4
|
+
import Template from '@mojojs/template';
|
|
4
5
|
import chalk from 'chalk';
|
|
5
|
-
import ejs from 'ejs';
|
|
6
6
|
export async function captureOutput(fn, options = {}) {
|
|
7
7
|
if (options.stdout === undefined)
|
|
8
8
|
options.stdout = true;
|
|
@@ -50,7 +50,7 @@ export async function cliCreateFile(path, template, values = {}, options = {}) {
|
|
|
50
50
|
return;
|
|
51
51
|
}
|
|
52
52
|
stdout.write(chalk.green(' [write]') + ` ${file.toString()}\n`);
|
|
53
|
-
await file.writeFile(
|
|
53
|
+
await file.writeFile(await Template.render(template, values));
|
|
54
54
|
if (options.chmod !== undefined) {
|
|
55
55
|
stdout.write(chalk.green(' [chmod]') + ` ${file.toString()} (${options.chmod.toString(8)})\n`);
|
|
56
56
|
await file.chmod(options.chmod);
|
package/lib/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,IAAI,MAAM,cAAc,CAAC;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mojojs/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.2",
|
|
4
4
|
"description": "Real-time web framework",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"web",
|
|
@@ -51,7 +51,6 @@
|
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@istanbuljs/esm-loader-hook": "^0.1.2",
|
|
53
53
|
"@types/busboy": "^0.3.1",
|
|
54
|
-
"@types/ejs": "^3.0.6",
|
|
55
54
|
"@types/js-yaml": "^4.0.3",
|
|
56
55
|
"@types/lru-cache": "^5.1.0",
|
|
57
56
|
"@types/mime-types": "^2.1.0",
|
|
@@ -77,12 +76,12 @@
|
|
|
77
76
|
"node": ">= 16"
|
|
78
77
|
},
|
|
79
78
|
"dependencies": {
|
|
80
|
-
"@mojojs/dom": "^1.
|
|
79
|
+
"@mojojs/dom": "^1.1.2",
|
|
81
80
|
"@mojojs/path": "^1.1.2",
|
|
81
|
+
"@mojojs/template": "^1.2.0",
|
|
82
82
|
"ajv": "^8.5.0",
|
|
83
83
|
"busboy": "^1.0.0",
|
|
84
84
|
"chalk": "^5.0.0",
|
|
85
|
-
"ejs": "^3.1.6",
|
|
86
85
|
"form-data": "^4.0.0",
|
|
87
86
|
"js-yaml": "^4.1.0",
|
|
88
87
|
"lru-cache": "^6.0.0",
|
package/vendor/README.md
CHANGED
|
@@ -4,7 +4,7 @@ This distribution includes a few files with different licenses that have been bu
|
|
|
4
4
|
|
|
5
5
|
* Mojolicious Artwork
|
|
6
6
|
|
|
7
|
-
Copyright (C) 2010-
|
|
7
|
+
Copyright (C) 2010-2022, Sebastian Riedel.
|
|
8
8
|
|
|
9
9
|
Licensed under the [CC-SA License, Version 4.0](http://creativecommons.org/licenses/by-sa/4.0).
|
|
10
10
|
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
<html>
|
|
4
4
|
<head>
|
|
5
5
|
<title>Debug</title>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
<%= ctx.mojoFaviconTag() %>
|
|
7
|
+
<%= ctx.scriptTag('/mojo/bootstrap/bootstrap.bundle.min.js') %>
|
|
8
|
+
<%= ctx.scriptTag('/mojo/highlight.js/highlight.pack.js') %>
|
|
9
|
+
<%= ctx.styleTag('/mojo/bootstrap/bootstrap.min.css') %>
|
|
10
|
+
<%= ctx.styleTag('/mojo/highlight.js/highlight-mojo-dark.css') %>
|
|
11
|
+
<%= ctx.styleTag('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css') %>
|
|
12
|
+
<%= ctx.styleTag('/mojo/mojo.css') %>
|
|
13
13
|
<script>
|
|
14
14
|
hljs.initHighlightingOnLoad();
|
|
15
15
|
window.onload = function() {
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
<div class="row flex-wrap">
|
|
62
62
|
<main class="col-sm-12 col-md-8 col-lg-10 py-md-3 pl-md-5">
|
|
63
63
|
<div class="row mojo-divider">
|
|
64
|
-
<% if (
|
|
64
|
+
<% if (exception !== null) { %>
|
|
65
65
|
<div class="alert alert-danger mojo-wide" role="alert">
|
|
66
66
|
<h2>Server Error</h2>
|
|
67
67
|
This application is in <b>development</b> mode and will show internal information to help you with
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
</div>
|
|
70
70
|
<div id="showcase" class="mojo-box mojo-code mojo-no-bottom-border mojo-no-top-border mojo-border-radius-top">
|
|
71
71
|
<pre id="error" class="mojo-error"><%= exception %></pre>
|
|
72
|
-
<% const context = await view.exceptionContext(exception) %>
|
|
72
|
+
<% const context = await view.exceptionContext(exception); %>
|
|
73
73
|
<% if (context !== null) { %>
|
|
74
74
|
<div>
|
|
75
75
|
<table class="mojo-wide">
|
|
@@ -130,9 +130,9 @@
|
|
|
130
130
|
<% } %>
|
|
131
131
|
</td>
|
|
132
132
|
</tr>
|
|
133
|
-
<% depth
|
|
133
|
+
<% depth++; %>
|
|
134
134
|
<%= route.children.map(child => walk(child, depth)).join('') %>
|
|
135
|
-
<% depth
|
|
135
|
+
<% depth--; %>
|
|
136
136
|
<% } %>
|
|
137
137
|
<table class="mojo-striped-light mojo-wide">
|
|
138
138
|
<thead>
|
|
@@ -149,29 +149,29 @@
|
|
|
149
149
|
</div>
|
|
150
150
|
<div class="row mojo-divider">
|
|
151
151
|
<div id="request" class="mojo-box mojo-no-padding mojo-border-radius-both">
|
|
152
|
-
<%
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
<% } %>
|
|
152
|
+
<% const keyValue = function (key, value) { %>
|
|
153
|
+
<tr>
|
|
154
|
+
<td class="mojo-key text-right"><%= key %>:</td>
|
|
155
|
+
<td class="mojo-value"><pre><%= value %></pre></td>
|
|
156
|
+
</tr>
|
|
157
|
+
<% }; %>
|
|
158
158
|
<table class="mojo-striped mojo-fixed-table mojo-wide">
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
<% const rawHeaders = ctx.req.raw.rawHeaders %>
|
|
159
|
+
<% keyValue('Request ID', ctx.req.requestId); %>
|
|
160
|
+
<% keyValue('Method', ctx.req.method); %>
|
|
161
|
+
<% keyValue('Path', ctx.req.path); %>
|
|
162
|
+
<% keyValue('Base URL', ctx.req.baseUrl); %>
|
|
163
|
+
<% keyValue('Parameters', ctx.inspect((await ctx.params()).toObject())); %>
|
|
164
|
+
<% keyValue('Stash', ctx.inspect(ctx.stash)); %>
|
|
165
|
+
<% const rawHeaders = ctx.req.raw.rawHeaders; %>
|
|
166
166
|
<% for (let i = 0; i < rawHeaders.length; i += 2) { %>
|
|
167
|
-
|
|
167
|
+
<% keyValue(rawHeaders[i], rawHeaders[i + 1]); %>
|
|
168
168
|
<% } %>
|
|
169
169
|
</table>
|
|
170
170
|
</div>
|
|
171
171
|
</div>
|
|
172
172
|
<div class="row">
|
|
173
173
|
<% if (ctx.app.log.history.length > 0) { %>
|
|
174
|
-
<% const log = ctx.app.log.history.map(view.stringFormatter).join('') %>
|
|
174
|
+
<% const log = ctx.app.log.history.map(view.stringFormatter).join(''); %>
|
|
175
175
|
<pre class="mojo-terminal"><code class="nohighlight"><%= log %></code></pre>
|
|
176
176
|
<% } else { %>
|
|
177
177
|
<div class="alert alert-warning mojo-wide" role="alert">
|