@mojojs/core 0.18.0 → 0.19.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 CHANGED
@@ -1,6 +1,5 @@
1
1
  /// <reference types="node" />
2
2
  import type { Route } from './router/route.js';
3
- import type { Server } from './server.js';
4
3
  import type { AnyArguments, AppOptions, UserAgentOptions, MockRequestOptions, MojoAction, MojoContext, RouteArguments, ServerRequestOptions, TestUserAgentOptions } from './types.js';
5
4
  import type { IncomingMessage, ServerResponse } from 'http';
6
5
  import { CLI } from './cli.js';
@@ -23,50 +22,161 @@ export declare type Decoration = ((...args: any[]) => any) | {
23
22
  set?: (value: any) => any;
24
23
  };
25
24
  export declare type Plugin = (app: App, options: Record<string, any>) => any;
25
+ /**
26
+ * Application class.
27
+ */
26
28
  export declare class App {
29
+ /**
30
+ * Command line interface.
31
+ */
27
32
  cli: CLI;
33
+ /**
34
+ * Application config.
35
+ */
28
36
  config: Record<string, any>;
37
+ /**
38
+ * Detect if the application has been imported and disable the command line interface if it has.
39
+ */
29
40
  detectImport: boolean;
41
+ /**
42
+ * Format for HTTP exceptions.
43
+ */
30
44
  exceptionFormat: string;
45
+ /**
46
+ * Application hooks.
47
+ */
31
48
  hooks: Hooks;
49
+ /**
50
+ * Application home directory.
51
+ */
32
52
  home: Path;
53
+ /**
54
+ * Application logger.
55
+ */
33
56
  log: Logger;
57
+ /**
58
+ * MIME types.
59
+ */
34
60
  mime: Mime;
61
+ /**
62
+ * Storage for user defined models.
63
+ */
35
64
  models: Record<string, any>;
65
+ /**
66
+ * Application renderer.
67
+ */
36
68
  renderer: Renderer;
69
+ /**
70
+ * Application router.
71
+ */
37
72
  router: Router;
73
+ /**
74
+ * Secret passphrases used for signed cookies and the like.
75
+ */
38
76
  secrets: string[];
77
+ /**
78
+ * Encrypted cookie based session manager.
79
+ */
39
80
  session: Session;
81
+ /**
82
+ * Static file server.
83
+ */
40
84
  static: Static;
85
+ /**
86
+ * HTTP/WebSocket user agent.
87
+ */
41
88
  ua: UserAgent;
89
+ /**
90
+ * JSON schema validator.
91
+ */
42
92
  validator: Validator;
43
93
  _contextClass: any;
44
94
  _mode: string;
45
- _server: WeakRef<Server> | null;
46
95
  constructor(options?: AppOptions);
96
+ /**
97
+ * Add an application hook.
98
+ */
47
99
  addAppHook(name: string, fn: AppHook): this;
100
+ /**
101
+ * Add a context hook.
102
+ */
48
103
  addContextHook(name: string, fn: ContextHook): this;
104
+ /**
105
+ * Add a helper.
106
+ */
49
107
  addHelper(name: string, fn: MojoAction): this;
108
+ /**
109
+ * Generate route matching any of the listed HTTP request methods or all.
110
+ */
50
111
  any(...args: AnyArguments): Route;
112
+ /**
113
+ * Decorate context class with a method or getter/setter.
114
+ */
51
115
  decorateContext(name: string, fn: Decoration): this;
116
+ /**
117
+ * Generate route matching only `DELETE` requests.
118
+ */
52
119
  delete(...args: RouteArguments): Route;
120
+ /**
121
+ * Generate route matching only `GET` requests.
122
+ */
53
123
  get(...args: RouteArguments): Route;
124
+ /**
125
+ * Handle a new incoming request, used by servers.
126
+ */
54
127
  handleRequest(ctx: MojoContext): Promise<void>;
128
+ /**
129
+ * Operating mode for application. Defaults to the value of the `NODE_ENV` environment variable.
130
+ */
55
131
  get mode(): string;
132
+ /**
133
+ * Create a context for application.
134
+ */
56
135
  newContext(req: IncomingMessage, res: ServerResponse, options: ServerRequestOptions): MojoContext;
136
+ /**
137
+ * Create a mock context for application. Very useful for testing helpers.
138
+ */
57
139
  newMockContext(options?: MockRequestOptions): MojoContext;
140
+ /**
141
+ * Create a new mock user agent for application.
142
+ */
58
143
  newMockUserAgent(options?: UserAgentOptions): Promise<MockUserAgent>;
144
+ /**
145
+ * Create a new test user agent for application.
146
+ */
59
147
  newTestUserAgent(options?: TestUserAgentOptions): Promise<TestUserAgent>;
148
+ /**
149
+ * Generate route matching only `OPTIONS` requests.
150
+ */
60
151
  options(...args: RouteArguments): Route;
152
+ /**
153
+ * Generate route matching only `PATCH` requests.
154
+ */
61
155
  patch(...args: RouteArguments): Route;
62
156
  plugin(plugin: Plugin, options?: Record<string, any>): any;
157
+ /**
158
+ * Generate route matching only `POST` requests.
159
+ */
63
160
  post(...args: RouteArguments): Route;
161
+ /**
162
+ * Generate route matching only `PUT` requests.
163
+ */
64
164
  put(...args: RouteArguments): Route;
65
- get server(): Server | null;
66
- set server(server: Server | null);
165
+ /**
166
+ * Start the command line interface.
167
+ */
67
168
  start(command?: string, ...args: string[]): void;
169
+ /**
170
+ * Generate route for a nested route with its own intermediate destination.
171
+ */
68
172
  under(...args: AnyArguments): Route;
173
+ /**
174
+ * Warmup the cache, usually called automatically.
175
+ */
69
176
  warmup(): Promise<void>;
177
+ /**
178
+ * Generate route matching only WebSocket handshake requests.
179
+ */
70
180
  websocket(...args: RouteArguments): Route;
71
181
  }
72
182
  export {};
package/lib/app.js CHANGED
@@ -5,6 +5,7 @@ import { Logger } from './logger.js';
5
5
  import { Mime } from './mime.js';
6
6
  import { MockRequest } from './mock/request.js';
7
7
  import { MockResponse } from './mock/response.js';
8
+ import defaultHelpersPlugin from './plugins/default-helpers.js';
8
9
  import exceptionHelpersPlugin from './plugins/exception-helpers.js';
9
10
  import headerConditionsPlugin from './plugins/header-conditions.js';
10
11
  import mtEnginePlugin from './plugins/mt-engine.js';
@@ -20,22 +21,57 @@ import { Validator } from './validator.js';
20
21
  import Path from '@mojojs/path';
21
22
  const ContextWrapper = class extends Context {
22
23
  };
24
+ /**
25
+ * Application class.
26
+ */
23
27
  export class App {
24
28
  constructor(options = {}) {
29
+ /**
30
+ * Command line interface.
31
+ */
25
32
  this.cli = new CLI(this);
33
+ /**
34
+ * Application hooks.
35
+ */
26
36
  this.hooks = new Hooks();
37
+ /**
38
+ * Application home directory.
39
+ */
27
40
  this.home = new Path();
41
+ /**
42
+ * MIME types.
43
+ */
28
44
  this.mime = new Mime();
45
+ /**
46
+ * Storage for user defined models.
47
+ */
29
48
  this.models = {};
49
+ /**
50
+ * Application renderer.
51
+ */
30
52
  this.renderer = new Renderer();
53
+ /**
54
+ * Application router.
55
+ */
31
56
  this.router = new Router();
57
+ /**
58
+ * Encrypted cookie based session manager.
59
+ */
32
60
  this.session = new Session(this);
61
+ /**
62
+ * Static file server.
63
+ */
33
64
  this.static = new Static();
65
+ /**
66
+ * HTTP/WebSocket user agent.
67
+ */
34
68
  this.ua = new UserAgent();
69
+ /**
70
+ * JSON schema validator.
71
+ */
35
72
  this.validator = new Validator();
36
73
  this._contextClass = class extends ContextWrapper {
37
74
  };
38
- this._server = null;
39
75
  this.config = options.config ?? {};
40
76
  this.detectImport = options.detectImport ?? true;
41
77
  this.exceptionFormat = options.exceptionFormat ?? 'html';
@@ -43,27 +79,43 @@ export class App {
43
79
  this._mode = options.mode ?? process.env.NODE_ENV ?? 'development';
44
80
  const isDev = this._mode === 'development';
45
81
  this.log = new Logger({ historySize: isDev ? 10 : 0, level: isDev ? 'trace' : 'info' });
46
- this.plugin(mtEnginePlugin);
82
+ this.plugin(defaultHelpersPlugin);
47
83
  this.plugin(exceptionHelpersPlugin);
48
84
  this.plugin(headerConditionsPlugin);
85
+ this.plugin(mtEnginePlugin);
49
86
  this.plugin(viewHelpersPlugin);
50
87
  }
88
+ /**
89
+ * Add an application hook.
90
+ */
51
91
  addAppHook(name, fn) {
52
92
  this.hooks.addHook(name, fn);
53
93
  return this;
54
94
  }
95
+ /**
96
+ * Add a context hook.
97
+ */
55
98
  addContextHook(name, fn) {
56
99
  this.hooks.addHook(name, fn);
57
100
  return this;
58
101
  }
102
+ /**
103
+ * Add a helper.
104
+ */
59
105
  addHelper(name, fn) {
60
106
  return this.decorateContext(name, function (...args) {
61
107
  return fn(this, ...args);
62
108
  });
63
109
  }
110
+ /**
111
+ * Generate route matching any of the listed HTTP request methods or all.
112
+ */
64
113
  any(...args) {
65
114
  return this.router.any(...args);
66
115
  }
116
+ /**
117
+ * Decorate context class with a method or getter/setter.
118
+ */
67
119
  decorateContext(name, fn) {
68
120
  const proto = Context.prototype;
69
121
  if (Object.getOwnPropertyDescriptor(proto, name) != null) {
@@ -77,12 +129,21 @@ export class App {
77
129
  }
78
130
  return this;
79
131
  }
132
+ /**
133
+ * Generate route matching only `DELETE` requests.
134
+ */
80
135
  delete(...args) {
81
136
  return this.router.delete(...args);
82
137
  }
138
+ /**
139
+ * Generate route matching only `GET` requests.
140
+ */
83
141
  get(...args) {
84
142
  return this.router.get(...args);
85
143
  }
144
+ /**
145
+ * Handle a new incoming request, used by servers.
146
+ */
86
147
  async handleRequest(ctx) {
87
148
  if ((await this.hooks.runHook('dispatch:before', ctx)) === true)
88
149
  return;
@@ -95,55 +156,88 @@ export class App {
95
156
  if (ctx.isWebSocket !== true)
96
157
  await ctx.notFound();
97
158
  }
159
+ /**
160
+ * Operating mode for application. Defaults to the value of the `NODE_ENV` environment variable.
161
+ */
98
162
  get mode() {
99
163
  return this._mode;
100
164
  }
165
+ /**
166
+ * Create a context for application.
167
+ */
101
168
  newContext(req, res, options) {
102
169
  return new this._contextClass(this, req, res, options);
103
170
  }
171
+ /**
172
+ * Create a mock context for application. Very useful for testing helpers.
173
+ */
104
174
  newMockContext(options) {
105
175
  const req = new MockRequest(options);
106
176
  return new this._contextClass(this, req, new MockResponse(req), { isReverseProxy: false, isWebSocket: false });
107
177
  }
178
+ /**
179
+ * Create a new mock user agent for application.
180
+ */
108
181
  async newMockUserAgent(options) {
109
182
  return await MockUserAgent.newMockUserAgent(this, options);
110
183
  }
184
+ /**
185
+ * Create a new test user agent for application.
186
+ */
111
187
  async newTestUserAgent(options) {
112
188
  return await TestUserAgent.newTestUserAgent(this, options);
113
189
  }
190
+ /**
191
+ * Generate route matching only `OPTIONS` requests.
192
+ */
114
193
  options(...args) {
115
194
  return this.router.options(...args);
116
195
  }
196
+ /**
197
+ * Generate route matching only `PATCH` requests.
198
+ */
117
199
  patch(...args) {
118
200
  return this.router.patch(...args);
119
201
  }
120
202
  plugin(plugin, options = {}) {
121
203
  return plugin(this, options);
122
204
  }
205
+ /**
206
+ * Generate route matching only `POST` requests.
207
+ */
123
208
  post(...args) {
124
209
  return this.router.post(...args);
125
210
  }
211
+ /**
212
+ * Generate route matching only `PUT` requests.
213
+ */
126
214
  put(...args) {
127
215
  return this.router.put(...args);
128
216
  }
129
- get server() {
130
- return this._server?.deref() ?? null;
131
- }
132
- set server(server) {
133
- this._server = server === null ? null : new WeakRef(server);
134
- }
217
+ /**
218
+ * Start the command line interface.
219
+ */
135
220
  start(command, ...args) {
136
221
  if (this.detectImport && process.argv[1] !== Path.callerFile().toString())
137
222
  return;
138
223
  this.cli.start(command, ...args).catch(error => this.log.error(error.message));
139
224
  }
225
+ /**
226
+ * Generate route for a nested route with its own intermediate destination.
227
+ */
140
228
  under(...args) {
141
229
  return this.router.under(...args);
142
230
  }
231
+ /**
232
+ * Warmup the cache, usually called automatically.
233
+ */
143
234
  async warmup() {
144
235
  await this.renderer.warmup();
145
236
  await this.router.warmup();
146
237
  }
238
+ /**
239
+ * Generate route matching only WebSocket handshake requests.
240
+ */
147
241
  websocket(...args) {
148
242
  return this.router.websocket(...args);
149
243
  }
package/lib/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
package/lib/body.d.ts CHANGED
@@ -22,24 +22,72 @@ interface FileUpload {
22
22
  encoding: string;
23
23
  mimetype: string;
24
24
  }
25
+ /**
26
+ * HTTP message body base class.
27
+ */
25
28
  export declare class Body {
29
+ /**
30
+ * Automatically decompress message body if necessary.
31
+ */
26
32
  autoDecompress: boolean;
33
+ /**
34
+ * Low-level HTTP message.
35
+ */
27
36
  raw: IncomingMessage;
28
37
  _form: Params | undefined;
29
38
  constructor(stream: IncomingMessage);
30
39
  [Symbol.asyncIterator](): AsyncIterable<Buffer>;
40
+ /**
41
+ * Get message body as `Buffer` object.
42
+ */
31
43
  buffer(): Promise<Buffer>;
44
+ /**
45
+ * Get message body as a readable stream.
46
+ */
32
47
  createReadStream(): Readable;
48
+ /**
49
+ * Get async iterator for uploaded files from message body.
50
+ */
33
51
  files(options?: UploadOptions): AsyncIterableIterator<FileUpload>;
52
+ /**
53
+ * Get form parameters from message body.
54
+ */
34
55
  form(options?: UploadOptions): Promise<Params>;
56
+ /**
57
+ * Get HTTP header from message.
58
+ */
35
59
  get(name: string): string | undefined;
60
+ /**
61
+ * Get HTTP headers from message.
62
+ */
36
63
  get headers(): IncomingHttpHeaders;
64
+ /**
65
+ * Get HTML message body as `@mojojs/dom` object.
66
+ */
37
67
  html(): Promise<DOM>;
68
+ /**
69
+ * Check if underlying socket was encrypted with TLS.
70
+ */
38
71
  get isSecure(): boolean;
72
+ /**
73
+ * Get JSON message body as parsed data structure.
74
+ */
39
75
  json(): Promise<JSONValue>;
76
+ /**
77
+ * Pipe message body to writable stream.
78
+ */
40
79
  pipe(writer: Writable): Promise<void>;
80
+ /**
81
+ * Get message body as string.
82
+ */
41
83
  text(charset?: BufferEncoding): Promise<string>;
84
+ /**
85
+ * Get XML message body as `@mojojs/dom` object.
86
+ */
42
87
  xml(): Promise<DOM>;
88
+ /**
89
+ * Get YAML message body as parsed data structure.
90
+ */
43
91
  yaml(): Promise<unknown>;
44
92
  _consumeBody(): Promise<Uint8Array[]>;
45
93
  _formIterator(options?: UploadOptions): AsyncIterableIterator<[string, Readable, string, string, string]>;
package/lib/body.js CHANGED
@@ -4,8 +4,14 @@ import { Params } from './body/params.js';
4
4
  import DOM from '@mojojs/dom';
5
5
  import busboy from 'busboy';
6
6
  import yaml from 'js-yaml';
7
+ /**
8
+ * HTTP message body base class.
9
+ */
7
10
  export class Body {
8
11
  constructor(stream) {
12
+ /**
13
+ * Automatically decompress message body if necessary.
14
+ */
9
15
  this.autoDecompress = true;
10
16
  this._form = undefined;
11
17
  this.raw = stream;
@@ -13,9 +19,15 @@ export class Body {
13
19
  async *[Symbol.asyncIterator]() {
14
20
  yield* this.createReadStream();
15
21
  }
22
+ /**
23
+ * Get message body as `Buffer` object.
24
+ */
16
25
  async buffer() {
17
26
  return Buffer.concat(await this._consumeBody());
18
27
  }
28
+ /**
29
+ * Get message body as a readable stream.
30
+ */
19
31
  createReadStream() {
20
32
  if (this.autoDecompress !== true || this.get('content-encoding') !== 'gzip')
21
33
  return this.raw;
@@ -23,6 +35,9 @@ export class Body {
23
35
  this.raw.pipe(gunzip);
24
36
  return gunzip;
25
37
  }
38
+ /**
39
+ * Get async iterator for uploaded files from message body.
40
+ */
26
41
  async *files(options) {
27
42
  if (this._isForm() === false)
28
43
  return;
@@ -37,6 +52,9 @@ export class Body {
37
52
  throw error;
38
53
  }
39
54
  }
55
+ /**
56
+ * Get form parameters from message body.
57
+ */
40
58
  async form(options) {
41
59
  if (this._form === undefined) {
42
60
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -46,34 +64,61 @@ export class Body {
46
64
  }
47
65
  return this._params;
48
66
  }
67
+ /**
68
+ * Get HTTP header from message.
69
+ */
49
70
  get(name) {
50
71
  const header = this.raw.headers[name.toLowerCase()];
51
72
  return Array.isArray(header) ? header.join(',') : header;
52
73
  }
74
+ /**
75
+ * Get HTTP headers from message.
76
+ */
53
77
  get headers() {
54
78
  return this.raw.headers;
55
79
  }
80
+ /**
81
+ * Get HTML message body as `@mojojs/dom` object.
82
+ */
56
83
  async html() {
57
84
  return new DOM(await this.text());
58
85
  }
86
+ /**
87
+ * Check if underlying socket was encrypted with TLS.
88
+ */
59
89
  get isSecure() {
60
90
  const socket = this.raw.socket;
61
91
  return socket.encrypted ?? false;
62
92
  }
93
+ /**
94
+ * Get JSON message body as parsed data structure.
95
+ */
63
96
  async json() {
64
97
  return JSON.parse((await this.buffer()).toString());
65
98
  }
99
+ /**
100
+ * Pipe message body to writable stream.
101
+ */
66
102
  async pipe(writer) {
67
103
  return await new Promise((resolve, reject) => {
68
104
  this.createReadStream().on('error', reject).pipe(writer).on('unpipe', resolve);
69
105
  });
70
106
  }
107
+ /**
108
+ * Get message body as string.
109
+ */
71
110
  async text(charset = 'utf8') {
72
111
  return (await this.buffer()).toString(charset);
73
112
  }
113
+ /**
114
+ * Get XML message body as `@mojojs/dom` object.
115
+ */
74
116
  async xml() {
75
117
  return new DOM(await this.text(), { xml: true });
76
118
  }
119
+ /**
120
+ * Get YAML message body as parsed data structure.
121
+ */
77
122
  async yaml() {
78
123
  return yaml.load((await this.buffer()).toString());
79
124
  }
package/lib/body.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"body.js","sourceRoot":"","sources":["../src/body.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"body.js","sourceRoot":"","sources":["../src/body.ts"],"names":[],"mappings":"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"}
package/lib/cli.d.ts CHANGED
@@ -4,13 +4,28 @@ interface Command {
4
4
  description: string;
5
5
  usage: string;
6
6
  }
7
+ /**
8
+ * Command line interface class.
9
+ */
7
10
  export declare class CLI {
11
+ /**
12
+ * Paths to search for commands.
13
+ */
8
14
  commandPaths: string[];
15
+ /**
16
+ * Registered commands.
17
+ */
9
18
  commands: Record<string, Command>;
10
19
  _app: WeakRef<App>;
11
20
  _loaded: boolean | undefined;
12
21
  constructor(app: App);
22
+ /**
23
+ * Add a command.
24
+ */
13
25
  addCommand(name: string, command: Command): void;
26
+ /**
27
+ * Start command line interface.
28
+ */
14
29
  start(command?: string, ...args: string[]): Promise<void>;
15
30
  _listCommands(): Promise<void>;
16
31
  _loadCommands(): Promise<void>;