@mojojs/core 0.19.1 → 0.21.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 +7 -0
- package/lib/app.js +13 -2
- package/lib/app.js.map +1 -1
- package/lib/cache.d.ts +23 -0
- package/lib/cache.js +45 -0
- package/lib/cache.js.map +1 -0
- package/lib/cli/create-full-app.js +2 -2
- package/lib/logger.d.ts +69 -0
- package/lib/logger.js +63 -0
- package/lib/logger.js.map +1 -1
- package/lib/plugins/mt-engine.js +4 -5
- package/lib/plugins/mt-engine.js.map +1 -1
- package/lib/plugins/view-helpers.js +2 -1
- package/lib/plugins/view-helpers.js.map +1 -1
- package/lib/renderer.d.ts +38 -0
- package/lib/renderer.js +38 -0
- package/lib/renderer.js.map +1 -1
- package/lib/router/pattern.d.ts +33 -0
- package/lib/router/pattern.js +24 -0
- package/lib/router/pattern.js.map +1 -1
- package/lib/router/route.d.ts +83 -0
- package/lib/router/route.js +83 -0
- package/lib/router/route.js.map +1 -1
- package/lib/router.d.ts +38 -2
- package/lib/router.js +38 -2
- package/lib/router.js.map +1 -1
- package/lib/session.d.ts +35 -0
- package/lib/session.js +35 -0
- package/lib/session.js.map +1 -1
- package/lib/static.d.ts +22 -0
- package/lib/static.js +22 -0
- package/lib/static.js.map +1 -1
- package/lib/user-agent/test.d.ts +115 -2
- package/lib/user-agent/test.js +123 -10
- package/lib/user-agent/test.js.map +1 -1
- package/package.json +3 -5
package/lib/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
package/lib/session.d.ts
CHANGED
|
@@ -1,17 +1,52 @@
|
|
|
1
1
|
import type { App } from './app.js';
|
|
2
2
|
import type { Context } from './context.js';
|
|
3
3
|
import type { SessionData } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Session manager class.
|
|
6
|
+
*/
|
|
4
7
|
export declare class Session {
|
|
8
|
+
/**
|
|
9
|
+
* Name for session cookies, defaults to `mojo`.
|
|
10
|
+
*/
|
|
5
11
|
cookieName: string;
|
|
12
|
+
/**
|
|
13
|
+
* Path for session cookies, defaults to `/`.
|
|
14
|
+
*/
|
|
6
15
|
cookiePath: string;
|
|
16
|
+
/**
|
|
17
|
+
* Default time for sessions to expire in seconds from now, defaults to `3600`. The expiration timeout gets refreshed
|
|
18
|
+
* for every request. Setting the value to `0` will allow sessions to persist until the browser window is closed,
|
|
19
|
+
* this can have security implications though.
|
|
20
|
+
*/
|
|
7
21
|
expiration: number;
|
|
22
|
+
/**
|
|
23
|
+
* Set the `HttpOnly` value on all session cookies.
|
|
24
|
+
*/
|
|
8
25
|
httpOnly: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Set the `SameSite` value on all session cookies, defaults to `lax`.
|
|
28
|
+
*/
|
|
9
29
|
sameSite: 'lax' | 'strict' | 'none';
|
|
30
|
+
/**
|
|
31
|
+
* Set the secure flag on all session cookies, so that browsers send them only over HTTPS connections.
|
|
32
|
+
*/
|
|
10
33
|
secure: boolean;
|
|
11
34
|
_app: WeakRef<App>;
|
|
12
35
|
constructor(app: App);
|
|
36
|
+
/**
|
|
37
|
+
* Decrypt cookie.
|
|
38
|
+
*/
|
|
13
39
|
static decrypt(secrets: string[], encrypted: string): Promise<string | null>;
|
|
40
|
+
/**
|
|
41
|
+
* Encrypt cookie.
|
|
42
|
+
*/
|
|
14
43
|
static encrypt(secret: string, value: string): Promise<string>;
|
|
44
|
+
/**
|
|
45
|
+
* Load session data from encrypted cookie.
|
|
46
|
+
*/
|
|
15
47
|
load(ctx: Context): Promise<SessionData | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Store session data in encrypted cookie.
|
|
50
|
+
*/
|
|
16
51
|
store(ctx: Context, data: SessionData): Promise<void>;
|
|
17
52
|
}
|
package/lib/session.js
CHANGED
|
@@ -2,16 +2,42 @@ import crypto from 'crypto';
|
|
|
2
2
|
import { promisify } from 'util';
|
|
3
3
|
const scrypt = promisify(crypto.scrypt);
|
|
4
4
|
const randomBytes = promisify(crypto.randomBytes);
|
|
5
|
+
/**
|
|
6
|
+
* Session manager class.
|
|
7
|
+
*/
|
|
5
8
|
export class Session {
|
|
6
9
|
constructor(app) {
|
|
10
|
+
/**
|
|
11
|
+
* Name for session cookies, defaults to `mojo`.
|
|
12
|
+
*/
|
|
7
13
|
this.cookieName = 'mojo';
|
|
14
|
+
/**
|
|
15
|
+
* Path for session cookies, defaults to `/`.
|
|
16
|
+
*/
|
|
8
17
|
this.cookiePath = '/';
|
|
18
|
+
/**
|
|
19
|
+
* Default time for sessions to expire in seconds from now, defaults to `3600`. The expiration timeout gets refreshed
|
|
20
|
+
* for every request. Setting the value to `0` will allow sessions to persist until the browser window is closed,
|
|
21
|
+
* this can have security implications though.
|
|
22
|
+
*/
|
|
9
23
|
this.expiration = 3600;
|
|
24
|
+
/**
|
|
25
|
+
* Set the `HttpOnly` value on all session cookies.
|
|
26
|
+
*/
|
|
10
27
|
this.httpOnly = true;
|
|
28
|
+
/**
|
|
29
|
+
* Set the `SameSite` value on all session cookies, defaults to `lax`.
|
|
30
|
+
*/
|
|
11
31
|
this.sameSite = 'lax';
|
|
32
|
+
/**
|
|
33
|
+
* Set the secure flag on all session cookies, so that browsers send them only over HTTPS connections.
|
|
34
|
+
*/
|
|
12
35
|
this.secure = false;
|
|
13
36
|
this._app = new WeakRef(app);
|
|
14
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Decrypt cookie.
|
|
40
|
+
*/
|
|
15
41
|
static async decrypt(secrets, encrypted) {
|
|
16
42
|
const match = encrypted.match(/^([^-]+)--([^-]+)--([^-]+)$/);
|
|
17
43
|
if (match === null)
|
|
@@ -33,6 +59,9 @@ export class Session {
|
|
|
33
59
|
}
|
|
34
60
|
return null;
|
|
35
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Encrypt cookie.
|
|
64
|
+
*/
|
|
36
65
|
static async encrypt(secret, value) {
|
|
37
66
|
const key = await scrypt(secret, 'salt', 32);
|
|
38
67
|
const iv = await randomBytes(12);
|
|
@@ -40,6 +69,9 @@ export class Session {
|
|
|
40
69
|
const encrypted = cipher.update(value, 'utf8', 'base64') + cipher.final('base64');
|
|
41
70
|
return encrypted + '--' + iv.toString('base64') + '--' + cipher.getAuthTag().toString('base64');
|
|
42
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Load session data from encrypted cookie.
|
|
74
|
+
*/
|
|
43
75
|
async load(ctx) {
|
|
44
76
|
const cookie = ctx.req.getCookie(this.cookieName);
|
|
45
77
|
if (cookie === null)
|
|
@@ -61,6 +93,9 @@ export class Session {
|
|
|
61
93
|
}
|
|
62
94
|
return data;
|
|
63
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Store session data in encrypted cookie.
|
|
98
|
+
*/
|
|
64
99
|
async store(ctx, data) {
|
|
65
100
|
if (typeof data.expires !== 'number') {
|
|
66
101
|
const expiration = data.expiration ?? this.expiration;
|
package/lib/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,SAAS,EAAC,MAAM,MAAM,CAAC;AAE/B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxC,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAElD,MAAM,OAAO,OAAO;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/lib/static.d.ts
CHANGED
|
@@ -1,14 +1,36 @@
|
|
|
1
1
|
import type { MojoContext } from './types.js';
|
|
2
2
|
import Path from '@mojojs/path';
|
|
3
|
+
/**
|
|
4
|
+
* Static file server class.
|
|
5
|
+
*/
|
|
3
6
|
export declare class Static {
|
|
7
|
+
/**
|
|
8
|
+
* Prefix to use for all static files.
|
|
9
|
+
*/
|
|
4
10
|
prefix: string;
|
|
11
|
+
/**
|
|
12
|
+
* Directories to serve static files from, first one has the highest precedence.
|
|
13
|
+
*/
|
|
5
14
|
publicPaths: string[];
|
|
15
|
+
/**
|
|
16
|
+
* Serve static files.
|
|
17
|
+
*/
|
|
6
18
|
dispatch(ctx: MojoContext): Promise<boolean>;
|
|
19
|
+
/**
|
|
20
|
+
* Get static file path with prefix.
|
|
21
|
+
*/
|
|
7
22
|
filePath(path: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Check freshness of request by comparing the `If-None-Match` and `If-Modified-Since` request headers to the `ETag`
|
|
25
|
+
* and `Last-Modified` response headers.
|
|
26
|
+
*/
|
|
8
27
|
isFresh(ctx: MojoContext, options?: {
|
|
9
28
|
etag?: string;
|
|
10
29
|
lastModified?: Date;
|
|
11
30
|
}): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Serve a specific file.
|
|
33
|
+
*/
|
|
12
34
|
serveFile(ctx: MojoContext, file: Path): Promise<void>;
|
|
13
35
|
_rangeNotSatisfiable(ctx: MojoContext): Promise<void>;
|
|
14
36
|
}
|
package/lib/static.js
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
import crypto from 'crypto';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import Path from '@mojojs/path';
|
|
4
|
+
/**
|
|
5
|
+
* Static file server class.
|
|
6
|
+
*/
|
|
4
7
|
export class Static {
|
|
5
8
|
constructor() {
|
|
9
|
+
/**
|
|
10
|
+
* Prefix to use for all static files.
|
|
11
|
+
*/
|
|
6
12
|
this.prefix = '/public';
|
|
13
|
+
/**
|
|
14
|
+
* Directories to serve static files from, first one has the highest precedence.
|
|
15
|
+
*/
|
|
7
16
|
this.publicPaths = [Path.currentFile().sibling('..', 'vendor', 'public').toString()];
|
|
8
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Serve static files.
|
|
20
|
+
*/
|
|
9
21
|
async dispatch(ctx) {
|
|
10
22
|
const req = ctx.req;
|
|
11
23
|
const unsafePath = req.path;
|
|
@@ -26,11 +38,18 @@ export class Static {
|
|
|
26
38
|
}
|
|
27
39
|
return false;
|
|
28
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Get static file path with prefix.
|
|
43
|
+
*/
|
|
29
44
|
filePath(path) {
|
|
30
45
|
if (path.startsWith('/') === false)
|
|
31
46
|
path = '/' + path;
|
|
32
47
|
return this.prefix + path;
|
|
33
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Check freshness of request by comparing the `If-None-Match` and `If-Modified-Since` request headers to the `ETag`
|
|
51
|
+
* and `Last-Modified` response headers.
|
|
52
|
+
*/
|
|
34
53
|
isFresh(ctx, options = {}) {
|
|
35
54
|
const etag = options.etag;
|
|
36
55
|
const lastModified = options.lastModified;
|
|
@@ -60,6 +79,9 @@ export class Static {
|
|
|
60
79
|
}
|
|
61
80
|
return false;
|
|
62
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Serve a specific file.
|
|
84
|
+
*/
|
|
63
85
|
async serveFile(ctx, file) {
|
|
64
86
|
const app = ctx.app;
|
|
65
87
|
if ((await app.hooks.runHook('static:before', ctx, file)) === true)
|
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,MAAM,OAAO,MAAM;IAAnB;QACE,WAAM,GAAG,SAAS,CAAC;QACnB,gBAAW,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"static.js","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"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"}
|
package/lib/user-agent/test.d.ts
CHANGED
|
@@ -10,7 +10,13 @@ import { MockUserAgent } from './mock.js';
|
|
|
10
10
|
import DOM from '@mojojs/dom';
|
|
11
11
|
import StackUtils from 'stack-utils';
|
|
12
12
|
declare type SkipFunction = (...args: any[]) => any;
|
|
13
|
+
/**
|
|
14
|
+
* Test user agent class.
|
|
15
|
+
*/
|
|
13
16
|
export declare class TestUserAgent extends MockUserAgent {
|
|
17
|
+
/**
|
|
18
|
+
* Current HTTP response content.
|
|
19
|
+
*/
|
|
14
20
|
body: Buffer;
|
|
15
21
|
_assert: typeof assert | Tap.Tap | undefined;
|
|
16
22
|
_dom: DOM | undefined;
|
|
@@ -20,41 +26,148 @@ export declare class TestUserAgent extends MockUserAgent {
|
|
|
20
26
|
_stack: StackUtils;
|
|
21
27
|
_ws: WebSocket | undefined;
|
|
22
28
|
constructor(options?: TestUserAgentOptions);
|
|
29
|
+
/**
|
|
30
|
+
* Delegate assertion to test framework currently in use.
|
|
31
|
+
*/
|
|
23
32
|
assert(name: string, args: any[], msg: string, skip: SkipFunction): void;
|
|
33
|
+
/**
|
|
34
|
+
* Check response content for exact match.
|
|
35
|
+
*/
|
|
24
36
|
bodyIs(body: string): this;
|
|
37
|
+
/**
|
|
38
|
+
* Opposite of `bodyIs`.
|
|
39
|
+
*/
|
|
25
40
|
bodyIsnt(body: string): this;
|
|
41
|
+
/**
|
|
42
|
+
* Check response content for similar match.
|
|
43
|
+
*/
|
|
26
44
|
bodyLike(regex: RegExp): this;
|
|
45
|
+
/**
|
|
46
|
+
* Opposite of `bodyLike`.
|
|
47
|
+
*/
|
|
27
48
|
bodyUnlike(regex: RegExp): this;
|
|
49
|
+
/**
|
|
50
|
+
* Close WebSocket connection gracefully.
|
|
51
|
+
*/
|
|
28
52
|
closeOk(code: number, reason: string): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Wait for WebSocket connection to be closed gracefully and check status.
|
|
55
|
+
*/
|
|
29
56
|
closedOk(code: number): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Perform a `DELETE` request and check for transport errors.
|
|
59
|
+
*/
|
|
30
60
|
deleteOk(url: string | URL, options?: UserAgentRequestOptions): Promise<this>;
|
|
61
|
+
/**
|
|
62
|
+
* Checks for existence of the CSS selectors first matching HTML/XML element.
|
|
63
|
+
*/
|
|
31
64
|
elementExists(selector: string): this;
|
|
65
|
+
/**
|
|
66
|
+
* Opposite of `elementExists`.
|
|
67
|
+
*/
|
|
32
68
|
elementExistsNot(selector: string): this;
|
|
69
|
+
/**
|
|
70
|
+
* Perform a `GET` request and check for transport errors.
|
|
71
|
+
*/
|
|
33
72
|
getOk(url: string | URL, options?: UserAgentRequestOptions): Promise<this>;
|
|
73
|
+
/**
|
|
74
|
+
* Perform a `HEAD` request and check for transport errors.
|
|
75
|
+
*/
|
|
34
76
|
headOk(url: string | URL, options?: UserAgentRequestOptions): Promise<this>;
|
|
77
|
+
/**
|
|
78
|
+
* Check if response header exists.
|
|
79
|
+
*/
|
|
35
80
|
headerExists(name: string): this;
|
|
81
|
+
/**
|
|
82
|
+
* Opposite of `headerExists`.
|
|
83
|
+
*/
|
|
36
84
|
headerExistsNot(name: string): this;
|
|
85
|
+
/**
|
|
86
|
+
* Check response header for exact match.
|
|
87
|
+
*/
|
|
37
88
|
headerIs(name: string, value: string): this;
|
|
89
|
+
/**
|
|
90
|
+
* Opposite of `headerIs`.
|
|
91
|
+
*/
|
|
38
92
|
headerIsnt(name: string, value: string): this;
|
|
93
|
+
/**
|
|
94
|
+
* Check response header for similar match.
|
|
95
|
+
*/
|
|
39
96
|
headerLike(name: string, regex: RegExp): this;
|
|
40
|
-
|
|
97
|
+
/**
|
|
98
|
+
* Check if JSON response contains a value that can be identified using the given JSON Pointer.
|
|
99
|
+
*/
|
|
41
100
|
jsonHas(pointer: string): this;
|
|
101
|
+
/**
|
|
102
|
+
* Check the value extracted from JSON response using the given JSON Pointerr, which defaults to the root value if it
|
|
103
|
+
* is omitted.
|
|
104
|
+
*/
|
|
105
|
+
jsonIs(value: JSONValue, pointer?: string): this;
|
|
106
|
+
/**
|
|
107
|
+
* Wait for next WebSocket message to arrive.
|
|
108
|
+
*/
|
|
42
109
|
messageOk(): Promise<JSONValue>;
|
|
110
|
+
/**
|
|
111
|
+
* Create a new test user agent.
|
|
112
|
+
*/
|
|
43
113
|
static newTestUserAgent(app: App, options?: TestUserAgentOptions): Promise<TestUserAgent>;
|
|
114
|
+
/**
|
|
115
|
+
* Perform a `OPTIONS` request and check for transport errors.
|
|
116
|
+
*/
|
|
44
117
|
optionsOk(url: string | URL, options?: UserAgentRequestOptions): Promise<this>;
|
|
118
|
+
/**
|
|
119
|
+
* Perform a `PATCH` request and check for transport errors.
|
|
120
|
+
*/
|
|
45
121
|
patchOk(url: string | URL, options?: UserAgentRequestOptions): Promise<this>;
|
|
122
|
+
/**
|
|
123
|
+
* Perform a `POST` request and check for transport errors.
|
|
124
|
+
*/
|
|
46
125
|
postOk(url: string | URL, options?: UserAgentRequestOptions): Promise<this>;
|
|
126
|
+
/**
|
|
127
|
+
* Perform a `PUT` request and check for transport errors.
|
|
128
|
+
*/
|
|
47
129
|
putOk(url: string | URL, options?: UserAgentRequestOptions): Promise<this>;
|
|
130
|
+
/**
|
|
131
|
+
* Current HTTP response.
|
|
132
|
+
*/
|
|
48
133
|
get res(): UserAgentResponse;
|
|
134
|
+
/**
|
|
135
|
+
* Send message or frame via WebSocket.
|
|
136
|
+
*/
|
|
49
137
|
sendOk(message: JSONValue | Buffer): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Check response status for exact match.
|
|
140
|
+
*/
|
|
50
141
|
statusIs(status: number): this;
|
|
142
|
+
/**
|
|
143
|
+
* Checks text content of the CSS selectors first matching HTML/XML element for similar match.
|
|
144
|
+
*/
|
|
51
145
|
textLike(selector: string, regex: RegExp): this;
|
|
146
|
+
/**
|
|
147
|
+
* Check response `Content-Type` header for exact match.
|
|
148
|
+
*/
|
|
52
149
|
typeIs(value: string): this;
|
|
150
|
+
/**
|
|
151
|
+
* Check response `Content-Type` header for similar match.
|
|
152
|
+
*/
|
|
53
153
|
typeLike(regex: RegExp): this;
|
|
154
|
+
/**
|
|
155
|
+
* Open a WebSocket connection with transparent handshake.
|
|
156
|
+
*/
|
|
54
157
|
websocketOk(url: string | URL, options?: UserAgentWebSocketOptions): Promise<void>;
|
|
158
|
+
/**
|
|
159
|
+
* Active WebSocket connection.
|
|
160
|
+
*/
|
|
55
161
|
get ws(): WebSocket;
|
|
56
|
-
|
|
162
|
+
/**
|
|
163
|
+
* Check if YAML response contains a value that can be identified using the given JSON Pointer.
|
|
164
|
+
*/
|
|
57
165
|
yamlHas(pointer: string): this;
|
|
166
|
+
/**
|
|
167
|
+
* Check the value extracted from YAML response using the given JSON Pointerr, which defaults to the root value if it
|
|
168
|
+
* is omitted.
|
|
169
|
+
*/
|
|
170
|
+
yamlIs(value: JSONValue, pointer?: string): this;
|
|
58
171
|
get _html(): DOM;
|
|
59
172
|
_prepareTap(tap: Tap.Tap): void;
|
|
60
173
|
_requestOk(skip: SkipFunction, method: string, url: string | URL, options?: UserAgentRequestOptions): Promise<this>;
|