@mojojs/core 0.17.3 → 0.19.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.
Files changed (142) hide show
  1. package/README.md +1 -1
  2. package/lib/app.d.ts +114 -4
  3. package/lib/app.js +107 -16
  4. package/lib/app.js.map +1 -1
  5. package/lib/body/params.d.ts +6 -0
  6. package/lib/body/params.js +6 -0
  7. package/lib/body/params.js.map +1 -1
  8. package/lib/body.d.ts +48 -0
  9. package/lib/body.js +45 -0
  10. package/lib/body.js.map +1 -1
  11. package/lib/cli/create-full-app.d.ts +3 -0
  12. package/lib/cli/create-full-app.js +3 -0
  13. package/lib/cli/create-full-app.js.map +1 -1
  14. package/lib/cli/create-lite-app.d.ts +3 -0
  15. package/lib/cli/create-lite-app.js +3 -0
  16. package/lib/cli/create-lite-app.js.map +1 -1
  17. package/lib/cli/eval.d.ts +3 -0
  18. package/lib/cli/eval.js +3 -0
  19. package/lib/cli/eval.js.map +1 -1
  20. package/lib/cli/get.d.ts +3 -0
  21. package/lib/cli/get.js +3 -0
  22. package/lib/cli/get.js.map +1 -1
  23. package/lib/cli/repl.d.ts +3 -0
  24. package/lib/cli/repl.js +3 -0
  25. package/lib/cli/repl.js.map +1 -1
  26. package/lib/cli/routes.d.ts +3 -0
  27. package/lib/cli/routes.js +3 -0
  28. package/lib/cli/routes.js.map +1 -1
  29. package/lib/cli/server.d.ts +3 -0
  30. package/lib/cli/server.js +3 -0
  31. package/lib/cli/server.js.map +1 -1
  32. package/lib/cli/version.d.ts +3 -0
  33. package/lib/cli/version.js +3 -0
  34. package/lib/cli/version.js.map +1 -1
  35. package/lib/cli.d.ts +15 -0
  36. package/lib/cli.js +20 -4
  37. package/lib/cli.js.map +1 -1
  38. package/lib/context.d.ts +99 -0
  39. package/lib/context.js +88 -3
  40. package/lib/context.js.map +1 -1
  41. package/lib/core.d.ts +3 -0
  42. package/lib/core.js +3 -0
  43. package/lib/core.js.map +1 -1
  44. package/lib/hooks.d.ts +9 -0
  45. package/lib/hooks.js +9 -0
  46. package/lib/hooks.js.map +1 -1
  47. package/lib/logger.d.ts +69 -0
  48. package/lib/logger.js +63 -0
  49. package/lib/logger.js.map +1 -1
  50. package/lib/mime.d.ts +14 -0
  51. package/lib/mime.js +39 -9
  52. package/lib/mime.js.map +1 -1
  53. package/lib/mock/request.d.ts +3 -0
  54. package/lib/mock/request.js +3 -0
  55. package/lib/mock/request.js.map +1 -1
  56. package/lib/mock/response.d.ts +3 -0
  57. package/lib/mock/response.js +3 -0
  58. package/lib/mock/response.js.map +1 -1
  59. package/lib/plugins/default-helpers.d.ts +5 -0
  60. package/lib/plugins/default-helpers.js +18 -0
  61. package/lib/plugins/default-helpers.js.map +1 -0
  62. package/lib/plugins/exception-helpers.d.ts +3 -0
  63. package/lib/plugins/exception-helpers.js +3 -0
  64. package/lib/plugins/exception-helpers.js.map +1 -1
  65. package/lib/plugins/header-conditions.d.ts +3 -0
  66. package/lib/plugins/header-conditions.js +3 -0
  67. package/lib/plugins/header-conditions.js.map +1 -1
  68. package/lib/plugins/json-config.d.ts +3 -0
  69. package/lib/plugins/json-config.js +3 -0
  70. package/lib/plugins/json-config.js.map +1 -1
  71. package/lib/plugins/mt-engine.d.ts +3 -0
  72. package/lib/plugins/mt-engine.js +3 -0
  73. package/lib/plugins/mt-engine.js.map +1 -1
  74. package/lib/plugins/view-helpers.d.ts +3 -0
  75. package/lib/plugins/view-helpers.js +3 -12
  76. package/lib/plugins/view-helpers.js.map +1 -1
  77. package/lib/plugins/yaml-config.d.ts +3 -0
  78. package/lib/plugins/yaml-config.js +3 -0
  79. package/lib/plugins/yaml-config.js.map +1 -1
  80. package/lib/router/pattern.d.ts +33 -0
  81. package/lib/router/pattern.js +24 -0
  82. package/lib/router/pattern.js.map +1 -1
  83. package/lib/router/plan.d.ts +15 -0
  84. package/lib/router/plan.js +15 -0
  85. package/lib/router/plan.js.map +1 -1
  86. package/lib/router.d.ts +3 -3
  87. package/lib/router.js +11 -10
  88. package/lib/router.js.map +1 -1
  89. package/lib/server/cookie.d.ts +6 -0
  90. package/lib/server/cookie.js +6 -0
  91. package/lib/server/cookie.js.map +1 -1
  92. package/lib/server/request.d.ts +3 -5
  93. package/lib/server/request.js +10 -14
  94. package/lib/server/request.js.map +1 -1
  95. package/lib/server/response.js +1 -1
  96. package/lib/server/response.js.map +1 -1
  97. package/lib/server.d.ts +21 -0
  98. package/lib/server.js +17 -3
  99. package/lib/server.js.map +1 -1
  100. package/lib/session.d.ts +35 -0
  101. package/lib/session.js +35 -0
  102. package/lib/session.js.map +1 -1
  103. package/lib/static.d.ts +19 -0
  104. package/lib/static.js +20 -1
  105. package/lib/static.js.map +1 -1
  106. package/lib/types.d.ts +1 -1
  107. package/lib/user-agent/cookie-jar.d.ts +12 -0
  108. package/lib/user-agent/cookie-jar.js +12 -0
  109. package/lib/user-agent/cookie-jar.js.map +1 -1
  110. package/lib/user-agent/mock.d.ts +15 -0
  111. package/lib/user-agent/mock.js +18 -2
  112. package/lib/user-agent/mock.js.map +1 -1
  113. package/lib/user-agent/response.d.ts +27 -0
  114. package/lib/user-agent/response.js +27 -0
  115. package/lib/user-agent/response.js.map +1 -1
  116. package/lib/user-agent/transport/http.d.ts +12 -0
  117. package/lib/user-agent/transport/http.js +12 -0
  118. package/lib/user-agent/transport/http.js.map +1 -1
  119. package/lib/user-agent/transport/https.d.ts +3 -0
  120. package/lib/user-agent/transport/https.js +3 -0
  121. package/lib/user-agent/transport/https.js.map +1 -1
  122. package/lib/user-agent/transport/ws.d.ts +6 -0
  123. package/lib/user-agent/transport/ws.js +6 -0
  124. package/lib/user-agent/transport/ws.js.map +1 -1
  125. package/lib/user-agent.d.ts +1 -1
  126. package/lib/user-agent.js +10 -2
  127. package/lib/user-agent.js.map +1 -1
  128. package/lib/util.d.ts +31 -1
  129. package/lib/util.js +30 -0
  130. package/lib/util.js.map +1 -1
  131. package/lib/validator/result.d.ts +9 -0
  132. package/lib/validator/result.js +3 -0
  133. package/lib/validator/result.js.map +1 -1
  134. package/lib/validator.d.ts +9 -0
  135. package/lib/validator.js +9 -0
  136. package/lib/validator.js.map +1 -1
  137. package/lib/websocket.d.ts +18 -0
  138. package/lib/websocket.js +12 -0
  139. package/lib/websocket.js.map +1 -1
  140. package/package.json +2 -2
  141. package/vendor/views/mojo/debug.html.mt +1 -1
  142. package/vendor/views/mojo/not-found.html.mt +1 -1
package/README.md CHANGED
@@ -32,7 +32,7 @@ If you want to stay up to date on the latest developments join us on [IRC](https
32
32
  dependency hell and allow for "Perl-grade" long term support.
33
33
 
34
34
  * Fresh code based upon decades of experience developing [Mojolicious](https://mojolicious.org) and
35
- [Catalyst](https://en.wikipedia.org/wiki/Catalyst_(software)), free and open source.
35
+ [Catalyst](http://catalyst.perl.org), free and open source.
36
36
 
37
37
  ## Installation
38
38
 
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,76 +129,115 @@ 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
- if (ctx.isWebSocket === true) {
88
- if ((await this.hooks.runHook('websocket', ctx)) === true)
89
- return;
90
- await this.router.dispatch(ctx);
148
+ if ((await this.hooks.runHook('dispatch:before', ctx)) === true)
91
149
  return;
92
- }
93
- if ((await this.hooks.runHook('request', ctx)) === true)
150
+ if (ctx.isWebSocket !== true && (await this.static.dispatch(ctx)) === true)
94
151
  return;
95
- if ((await this.static.dispatch(ctx)) === true)
152
+ if ((await this.hooks.runHook('router:before', ctx)) === true)
96
153
  return;
97
154
  if ((await this.router.dispatch(ctx)) === true)
98
155
  return;
99
- await ctx.notFound();
156
+ if (ctx.isWebSocket !== true)
157
+ await ctx.notFound();
100
158
  }
159
+ /**
160
+ * Operating mode for application. Defaults to the value of the `NODE_ENV` environment variable.
161
+ */
101
162
  get mode() {
102
163
  return this._mode;
103
164
  }
165
+ /**
166
+ * Create a context for application.
167
+ */
104
168
  newContext(req, res, options) {
105
169
  return new this._contextClass(this, req, res, options);
106
170
  }
171
+ /**
172
+ * Create a mock context for application. Very useful for testing helpers.
173
+ */
107
174
  newMockContext(options) {
108
175
  const req = new MockRequest(options);
109
176
  return new this._contextClass(this, req, new MockResponse(req), { isReverseProxy: false, isWebSocket: false });
110
177
  }
178
+ /**
179
+ * Create a new mock user agent for application.
180
+ */
111
181
  async newMockUserAgent(options) {
112
182
  return await MockUserAgent.newMockUserAgent(this, options);
113
183
  }
184
+ /**
185
+ * Create a new test user agent for application.
186
+ */
114
187
  async newTestUserAgent(options) {
115
188
  return await TestUserAgent.newTestUserAgent(this, options);
116
189
  }
190
+ /**
191
+ * Generate route matching only `OPTIONS` requests.
192
+ */
117
193
  options(...args) {
118
194
  return this.router.options(...args);
119
195
  }
196
+ /**
197
+ * Generate route matching only `PATCH` requests.
198
+ */
120
199
  patch(...args) {
121
200
  return this.router.patch(...args);
122
201
  }
123
202
  plugin(plugin, options = {}) {
124
203
  return plugin(this, options);
125
204
  }
205
+ /**
206
+ * Generate route matching only `POST` requests.
207
+ */
126
208
  post(...args) {
127
209
  return this.router.post(...args);
128
210
  }
211
+ /**
212
+ * Generate route matching only `PUT` requests.
213
+ */
129
214
  put(...args) {
130
215
  return this.router.put(...args);
131
216
  }
132
- get server() {
133
- return this._server?.deref() ?? null;
134
- }
135
- set server(server) {
136
- this._server = server === null ? null : new WeakRef(server);
137
- }
217
+ /**
218
+ * Start the command line interface.
219
+ */
138
220
  start(command, ...args) {
139
221
  if (this.detectImport && process.argv[1] !== Path.callerFile().toString())
140
222
  return;
141
223
  this.cli.start(command, ...args).catch(error => this.log.error(error.message));
142
224
  }
225
+ /**
226
+ * Generate route for a nested route with its own intermediate destination.
227
+ */
143
228
  under(...args) {
144
229
  return this.router.under(...args);
145
230
  }
231
+ /**
232
+ * Warmup the cache, usually called automatically.
233
+ */
146
234
  async warmup() {
147
235
  await this.renderer.warmup();
148
236
  await this.router.warmup();
149
237
  }
238
+ /**
239
+ * Generate route matching only WebSocket handshake requests.
240
+ */
150
241
  websocket(...args) {
151
242
  return this.router.websocket(...args);
152
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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"}
@@ -1,5 +1,11 @@
1
1
  /// <reference types="node" />
2
2
  import { URLSearchParams } from 'url';
3
+ /**
4
+ * GET/POST parameter class.
5
+ */
3
6
  export declare class Params extends URLSearchParams {
7
+ /**
8
+ * Convert parameters into a plain object, useful for validation.
9
+ */
4
10
  toObject(): Record<string, string>;
5
11
  }
@@ -1,5 +1,11 @@
1
1
  import { URLSearchParams } from 'url';
2
+ /**
3
+ * GET/POST parameter class.
4
+ */
2
5
  export class Params extends URLSearchParams {
6
+ /**
7
+ * Convert parameters into a plain object, useful for validation.
8
+ */
3
9
  toObject() {
4
10
  return Object.fromEntries(this);
5
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/body/params.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,KAAK,CAAC;AAEpC,MAAM,OAAO,MAAO,SAAQ,eAAe;IACzC,QAAQ;QACN,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACF"}
1
+ {"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/body/params.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,KAAK,CAAC;AAEpC;;GAEG;AACH,MAAM,OAAO,MAAO,SAAQ,eAAe;IACzC;;OAEG;IACH,QAAQ;QACN,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACF"}
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
  }