@mojojs/core 1.27.0 → 2.0.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.
Files changed (157) hide show
  1. package/README.md +1 -1
  2. package/lib/app.d.ts +24 -16
  3. package/lib/app.js +172 -126
  4. package/lib/body/params.js +0 -1
  5. package/lib/body.d.ts +13 -5
  6. package/lib/body.js +47 -17
  7. package/lib/cache.d.ts +1 -2
  8. package/lib/cache.js +12 -21
  9. package/lib/cgi.d.ts +3 -3
  10. package/lib/cgi.js +6 -5
  11. package/lib/cli/cgi.d.ts +1 -1
  12. package/lib/cli/cgi.js +1 -2
  13. package/lib/cli/create-full-app.d.ts +1 -1
  14. package/lib/cli/create-full-app.js +27 -27
  15. package/lib/cli/create-lite-app.d.ts +1 -1
  16. package/lib/cli/create-lite-app.js +2 -3
  17. package/lib/cli/create-plugin.d.ts +1 -1
  18. package/lib/cli/create-plugin.js +25 -23
  19. package/lib/cli/eval.d.ts +1 -1
  20. package/lib/cli/eval.js +12 -5
  21. package/lib/cli/get.d.ts +1 -1
  22. package/lib/cli/get.js +30 -26
  23. package/lib/cli/repl.d.ts +1 -1
  24. package/lib/cli/repl.js +0 -1
  25. package/lib/cli/routes.d.ts +1 -1
  26. package/lib/cli/routes.js +10 -7
  27. package/lib/cli/server.d.ts +1 -1
  28. package/lib/cli/server.js +41 -24
  29. package/lib/cli/version.js +1 -2
  30. package/lib/cli.d.ts +1 -1
  31. package/lib/cli.js +25 -19
  32. package/lib/context.d.ts +10 -10
  33. package/lib/context.js +94 -34
  34. package/lib/core.d.ts +14 -14
  35. package/lib/core.js +12 -13
  36. package/lib/headers.js +5 -4
  37. package/lib/hooks.d.ts +1 -1
  38. package/lib/hooks.js +1 -5
  39. package/lib/logger.d.ts +2 -2
  40. package/lib/logger.js +28 -16
  41. package/lib/mime.js +10 -13
  42. package/lib/plugins/default-conditions.d.ts +1 -1
  43. package/lib/plugins/default-conditions.js +0 -1
  44. package/lib/plugins/default-helpers.d.ts +1 -1
  45. package/lib/plugins/default-helpers.js +28 -11
  46. package/lib/plugins/json-config.d.ts +1 -1
  47. package/lib/plugins/json-config.js +0 -1
  48. package/lib/plugins/mount.d.ts +1 -1
  49. package/lib/plugins/mount.js +0 -1
  50. package/lib/plugins/tmpl-engine.d.ts +1 -1
  51. package/lib/plugins/tmpl-engine.js +2 -5
  52. package/lib/plugins/yaml-config.d.ts +1 -1
  53. package/lib/plugins/yaml-config.js +1 -2
  54. package/lib/renderer.d.ts +1 -1
  55. package/lib/renderer.js +27 -30
  56. package/lib/router/pattern.d.ts +1 -1
  57. package/lib/router/pattern.js +25 -14
  58. package/lib/router/plan.d.ts +1 -1
  59. package/lib/router/plan.js +12 -15
  60. package/lib/router/route.d.ts +3 -3
  61. package/lib/router/route.js +35 -38
  62. package/lib/router.d.ts +4 -4
  63. package/lib/router.js +25 -26
  64. package/lib/server/cookie.d.ts +1 -1
  65. package/lib/server/cookie.js +1 -2
  66. package/lib/server/request.d.ts +3 -3
  67. package/lib/server/request.js +44 -17
  68. package/lib/server/response.d.ts +3 -3
  69. package/lib/server/response.js +20 -20
  70. package/lib/server.d.ts +7 -2
  71. package/lib/server.js +69 -19
  72. package/lib/session.d.ts +3 -3
  73. package/lib/session.js +46 -34
  74. package/lib/sse.d.ts +1 -1
  75. package/lib/sse.js +0 -1
  76. package/lib/static.d.ts +1 -1
  77. package/lib/static.js +27 -22
  78. package/lib/types.d.ts +6 -5
  79. package/lib/types.js +0 -1
  80. package/lib/user-agent/cookie-jar.d.ts +2 -2
  81. package/lib/user-agent/cookie-jar.js +6 -9
  82. package/lib/user-agent/mock.d.ts +4 -4
  83. package/lib/user-agent/mock.js +6 -7
  84. package/lib/user-agent/response.d.ts +2 -2
  85. package/lib/user-agent/response.js +14 -3
  86. package/lib/user-agent/test.d.ts +5 -5
  87. package/lib/user-agent/test.js +14 -15
  88. package/lib/user-agent/transport/http.d.ts +2 -2
  89. package/lib/user-agent/transport/http.js +7 -10
  90. package/lib/user-agent/transport/https.d.ts +2 -2
  91. package/lib/user-agent/transport/https.js +2 -6
  92. package/lib/user-agent/transport/ws.d.ts +2 -2
  93. package/lib/user-agent/transport/ws.js +2 -3
  94. package/lib/user-agent.d.ts +18 -19
  95. package/lib/user-agent.js +64 -49
  96. package/lib/util.d.ts +13 -0
  97. package/lib/util.js +35 -11
  98. package/lib/validator/result.d.ts +1 -1
  99. package/lib/validator/result.js +8 -1
  100. package/lib/validator.d.ts +2 -2
  101. package/lib/validator.js +3 -6
  102. package/lib/websocket.d.ts +2 -2
  103. package/lib/websocket.js +9 -1
  104. package/package.json +22 -29
  105. package/lib/app.js.map +0 -1
  106. package/lib/body/params.js.map +0 -1
  107. package/lib/body.js.map +0 -1
  108. package/lib/cache.js.map +0 -1
  109. package/lib/cgi.js.map +0 -1
  110. package/lib/cli/cgi.js.map +0 -1
  111. package/lib/cli/create-full-app.js.map +0 -1
  112. package/lib/cli/create-lite-app.js.map +0 -1
  113. package/lib/cli/create-plugin.js.map +0 -1
  114. package/lib/cli/eval.js.map +0 -1
  115. package/lib/cli/get.js.map +0 -1
  116. package/lib/cli/repl.js.map +0 -1
  117. package/lib/cli/routes.js.map +0 -1
  118. package/lib/cli/server.js.map +0 -1
  119. package/lib/cli/version.js.map +0 -1
  120. package/lib/cli.js.map +0 -1
  121. package/lib/context.js.map +0 -1
  122. package/lib/core.js.map +0 -1
  123. package/lib/headers.js.map +0 -1
  124. package/lib/hooks.js.map +0 -1
  125. package/lib/logger.js.map +0 -1
  126. package/lib/mime.js.map +0 -1
  127. package/lib/plugins/default-conditions.js.map +0 -1
  128. package/lib/plugins/default-helpers.js.map +0 -1
  129. package/lib/plugins/json-config.js.map +0 -1
  130. package/lib/plugins/mount.js.map +0 -1
  131. package/lib/plugins/tmpl-engine.js.map +0 -1
  132. package/lib/plugins/yaml-config.js.map +0 -1
  133. package/lib/renderer.js.map +0 -1
  134. package/lib/router/pattern.js.map +0 -1
  135. package/lib/router/plan.js.map +0 -1
  136. package/lib/router/route.js.map +0 -1
  137. package/lib/router.js.map +0 -1
  138. package/lib/server/cookie.js.map +0 -1
  139. package/lib/server/request.js.map +0 -1
  140. package/lib/server/response.js.map +0 -1
  141. package/lib/server.js.map +0 -1
  142. package/lib/session.js.map +0 -1
  143. package/lib/sse.js.map +0 -1
  144. package/lib/static.js.map +0 -1
  145. package/lib/types.js.map +0 -1
  146. package/lib/user-agent/cookie-jar.js.map +0 -1
  147. package/lib/user-agent/mock.js.map +0 -1
  148. package/lib/user-agent/response.js.map +0 -1
  149. package/lib/user-agent/test.js.map +0 -1
  150. package/lib/user-agent/transport/http.js.map +0 -1
  151. package/lib/user-agent/transport/https.js.map +0 -1
  152. package/lib/user-agent/transport/ws.js.map +0 -1
  153. package/lib/user-agent.js.map +0 -1
  154. package/lib/util.js.map +0 -1
  155. package/lib/validator/result.js.map +0 -1
  156. package/lib/validator.js.map +0 -1
  157. package/lib/websocket.js.map +0 -1
@@ -1,13 +1,10 @@
1
1
  import https from 'node:https';
2
- import { HTTPTransport } from './http.js';
2
+ import { HTTPTransport } from "./http.js";
3
3
  /**
4
4
  * HTTPS transport class.
5
5
  */
6
6
  export class HTTPSTransport extends HTTPTransport {
7
- constructor() {
8
- super(...arguments);
9
- this.agent = new https.Agent();
10
- }
7
+ agent = new https.Agent();
11
8
  _prepareOptions(config) {
12
9
  const options = super._prepareOptions(config);
13
10
  if (config.ca !== undefined)
@@ -22,4 +19,3 @@ export class HTTPSTransport extends HTTPTransport {
22
19
  return https.request(url, options, cb);
23
20
  }
24
21
  }
25
- //# sourceMappingURL=https.js.map
@@ -1,5 +1,5 @@
1
- import type { UserAgentWebSocketOptions } from '../../types.js';
2
- import { WebSocket } from '../../websocket.js';
1
+ import type { UserAgentWebSocketOptions } from '../../types.ts';
2
+ import { WebSocket } from '../../websocket.ts';
3
3
  /**
4
4
  * WebSocket transport class.
5
5
  */
@@ -1,5 +1,5 @@
1
- import { WebSocket } from '../../websocket.js';
2
- import { UserAgentResponse } from '../response.js';
1
+ import { WebSocket } from "../../websocket.js";
2
+ import { UserAgentResponse } from "../response.js";
3
3
  import WS from 'ws';
4
4
  /**
5
5
  * WebSocket transport class.
@@ -37,4 +37,3 @@ export class WSTransport {
37
37
  });
38
38
  }
39
39
  }
40
- //# sourceMappingURL=ws.js.map
@@ -1,17 +1,16 @@
1
- import type { UserAgentOptions, UserAgentRequestOptions, UserAgentWebSocketOptions } from './types.js';
2
- import type { UserAgentResponse } from './user-agent/response.js';
3
- import type { WebSocket } from './websocket.js';
1
+ import type { UserAgentOptions, UserAgentRequestOptions, UserAgentWebSocketOptions } from './types.ts';
2
+ import type { UserAgentResponse } from './user-agent/response.ts';
3
+ import type { WebSocket } from './websocket.ts';
4
4
  import { URL } from 'node:url';
5
- import { CookieJar } from './user-agent/cookie-jar.js';
6
- import { HTTPTransport } from './user-agent/transport/http.js';
7
- import { HTTPSTransport } from './user-agent/transport/https.js';
8
- import { WSTransport } from './user-agent/transport/ws.js';
5
+ import { CookieJar } from './user-agent/cookie-jar.ts';
6
+ import { HTTPTransport } from './user-agent/transport/http.ts';
7
+ import { HTTPSTransport } from './user-agent/transport/https.ts';
8
+ import { WSTransport } from './user-agent/transport/ws.ts';
9
9
  import { AsyncHooks } from '@mojojs/util';
10
- import FormData from 'form-data';
11
10
  interface Upload {
12
11
  content: string;
13
12
  filename: string;
14
- type: string;
13
+ type?: string;
15
14
  }
16
15
  type UserAgentHook = (ua: UserAgent, ...args: any[]) => any;
17
16
  /**
@@ -63,35 +62,35 @@ declare class UserAgent {
63
62
  /**
64
63
  * Perform `DELETE` request.
65
64
  */
66
- delete(url: string | URL, options: UserAgentRequestOptions): Promise<UserAgentResponse>;
65
+ delete(url: string | URL, options?: UserAgentRequestOptions): Promise<UserAgentResponse>;
67
66
  /**
68
67
  * Perform `GET` request.
69
68
  */
70
- get(url: string | URL, options: UserAgentRequestOptions): Promise<UserAgentResponse>;
69
+ get(url: string | URL, options?: UserAgentRequestOptions): Promise<UserAgentResponse>;
71
70
  /**
72
71
  * Perform `HEAD` request.
73
72
  */
74
- head(url: string | URL, options: UserAgentRequestOptions): Promise<UserAgentResponse>;
73
+ head(url: string | URL, options?: UserAgentRequestOptions): Promise<UserAgentResponse>;
75
74
  /**
76
75
  * Perform `OPTIONS` request.
77
76
  */
78
- options(url: string | URL, options: UserAgentRequestOptions): Promise<UserAgentResponse>;
77
+ options(url: string | URL, options?: UserAgentRequestOptions): Promise<UserAgentResponse>;
79
78
  /**
80
79
  * Perform `PATCH` request.
81
80
  */
82
- patch(url: string | URL, options: UserAgentRequestOptions): Promise<UserAgentResponse>;
81
+ patch(url: string | URL, options?: UserAgentRequestOptions): Promise<UserAgentResponse>;
83
82
  /**
84
83
  * Perform `POST` request.
85
84
  */
86
- post(url: string | URL, options: UserAgentRequestOptions): Promise<UserAgentResponse>;
85
+ post(url: string | URL, options?: UserAgentRequestOptions): Promise<UserAgentResponse>;
87
86
  /**
88
87
  * Perform `PUT` request.
89
88
  */
90
- put(url: string | URL, options: UserAgentRequestOptions): Promise<UserAgentResponse>;
89
+ put(url: string | URL, options?: UserAgentRequestOptions): Promise<UserAgentResponse>;
91
90
  /**
92
91
  * Perform `QUERY` request.
93
92
  */
94
- query(url: string | URL, options: UserAgentRequestOptions): Promise<UserAgentResponse>;
93
+ query(url: string | URL, options?: UserAgentRequestOptions): Promise<UserAgentResponse>;
95
94
  /**
96
95
  * Perform HTTP request.
97
96
  */
@@ -101,9 +100,9 @@ declare class UserAgent {
101
100
  */
102
101
  websocket(url: string | URL, options?: UserAgentWebSocketOptions): Promise<WebSocket>;
103
102
  _filterConfig(config: UserAgentRequestOptions): Promise<Record<string, any>>;
104
- _filterSharedConfig(config: UserAgentRequestOptions | UserAgentWebSocketOptions): Promise<Record<string, any>>;
103
+ _filterSharedConfig(options: UserAgentRequestOptions | UserAgentWebSocketOptions): Promise<Record<string, any>>;
105
104
  _formData(values?: Record<string, string | Upload>): FormData;
106
- _handleRedirect(config: Record<string, any>, res: UserAgentResponse): Promise<UserAgentResponse>;
105
+ _handleRedirect(config: Record<string, any>, base: URL, res: UserAgentResponse): Promise<UserAgentResponse>;
107
106
  _requestConfig(method: string, url?: string | URL, options?: UserAgentRequestOptions): Promise<UserAgentResponse>;
108
107
  }
109
108
  export { UserAgent };
package/lib/user-agent.js CHANGED
@@ -1,36 +1,48 @@
1
1
  import { URL } from 'node:url';
2
- import { CookieJar } from './user-agent/cookie-jar.js';
3
- import { HTTPTransport } from './user-agent/transport/http.js';
4
- import { HTTPSTransport } from './user-agent/transport/https.js';
5
- import { WSTransport } from './user-agent/transport/ws.js';
2
+ import { CookieJar } from "./user-agent/cookie-jar.js";
3
+ import { HTTPTransport } from "./user-agent/transport/http.js";
4
+ import { HTTPSTransport } from "./user-agent/transport/https.js";
5
+ import { WSTransport } from "./user-agent/transport/ws.js";
6
6
  import { AsyncHooks } from '@mojojs/util';
7
- import FormData from 'form-data';
8
7
  import * as yaml from 'js-yaml';
8
+ import { lookup } from 'mime-types';
9
9
  /**
10
10
  * HTTP and WebSocket user-agent.
11
11
  */
12
12
  class UserAgent {
13
+ /**
14
+ * Base URL to be used to resolve all relative request URLs with.
15
+ */
16
+ baseURL;
17
+ /**
18
+ * Cookie jar to use.
19
+ */
20
+ cookieJar = new CookieJar();
21
+ /**
22
+ * User-agent hooks.
23
+ */
24
+ hooks = new AsyncHooks();
25
+ /**
26
+ * Transport backend to perform HTTP requests with.
27
+ */
28
+ httpTransport = new HTTPTransport();
29
+ /**
30
+ * Transport backend to perform HTTPS requests with.
31
+ */
32
+ httpsTransport = new HTTPSTransport();
33
+ /**
34
+ * Maximum number of redirects to follow, default to `0`.
35
+ */
36
+ maxRedirects;
37
+ /**
38
+ * Name of user-agent to send with `User-Agent` header.
39
+ */
40
+ name;
41
+ /**
42
+ * Transport backend to use for WebSocket connections.
43
+ */
44
+ wsTransport = new WSTransport();
13
45
  constructor(options = {}) {
14
- /**
15
- * Cookie jar to use.
16
- */
17
- this.cookieJar = new CookieJar();
18
- /**
19
- * User-agent hooks.
20
- */
21
- this.hooks = new AsyncHooks();
22
- /**
23
- * Transport backend to perform HTTP requests with.
24
- */
25
- this.httpTransport = new HTTPTransport();
26
- /**
27
- * Transport backend to perform HTTPS requests with.
28
- */
29
- this.httpsTransport = new HTTPSTransport();
30
- /**
31
- * Transport backend to use for WebSocket connections.
32
- */
33
- this.wsTransport = new WSTransport();
34
46
  this.baseURL = options.baseURL;
35
47
  this.maxRedirects = options.maxRedirects ?? 0;
36
48
  this.name = options.name;
@@ -115,15 +127,14 @@ class UserAgent {
115
127
  if (this.cookieJar !== null)
116
128
  await this.cookieJar.storeCookies(filtered.url, res.headers.getAll('Set-Cookie'));
117
129
  if (this.maxRedirects > 0)
118
- res = await this._handleRedirect(config, res);
130
+ res = await this._handleRedirect(config, filtered.url, res);
119
131
  return res;
120
132
  }
121
133
  /**
122
134
  * Open WebSocket connection.
123
135
  */
124
136
  async websocket(url, options = {}) {
125
- options.url = url;
126
- const filtered = await this._filterSharedConfig(options);
137
+ const filtered = await this._filterSharedConfig({ ...options, url });
127
138
  await this.hooks.runHook('websocket', this, filtered);
128
139
  filtered.url.protocol = filtered.url.protocol === 'https:' ? 'wss:' : 'ws:';
129
140
  return await this.wsTransport.connect(filtered);
@@ -148,17 +159,17 @@ class UserAgent {
148
159
  filtered.body = new URLSearchParams(filtered.form).toString();
149
160
  }
150
161
  else if (filtered.formData !== undefined) {
151
- const form = this._formData(filtered.formData);
152
- Object.assign(filtered.headers, form.getHeaders());
153
- filtered.body = form;
162
+ const multipart = new Response(this._formData(filtered.formData));
163
+ filtered.headers['Content-Type'] = multipart.headers.get('Content-Type');
164
+ filtered.body = Buffer.from(await multipart.arrayBuffer());
154
165
  }
155
166
  return filtered;
156
167
  }
157
- async _filterSharedConfig(config) {
158
- if (!(config.url instanceof URL))
159
- config.url = new URL(config.url ?? '/', this.baseURL);
168
+ async _filterSharedConfig(options) {
169
+ // Copy everything that gets modified, so options can be reused for more requests
170
+ const url = new URL(options.url ?? '/', this.baseURL);
171
+ const config = { ...options, url, headers: { ...options.headers } };
160
172
  // Auth
161
- const url = config.url;
162
173
  if ((url.username !== '' || url.password !== '') && config.auth === undefined) {
163
174
  config.auth = decodeURIComponent(`${url.username}:${url.password}`);
164
175
  }
@@ -170,8 +181,6 @@ class UserAgent {
170
181
  }
171
182
  }
172
183
  // Headers
173
- if (config.headers === undefined)
174
- config.headers = {};
175
184
  if (this.name !== undefined)
176
185
  config.headers['User-Agent'] = this.name;
177
186
  if (config.headers['Accept-Encoding'] === undefined)
@@ -190,39 +199,46 @@ class UserAgent {
190
199
  form.append(name, value);
191
200
  }
192
201
  else if (typeof value === 'object' && value !== null) {
193
- form.append(name, value.content, { filename: value.filename, contentType: value.type });
202
+ form.append(name, new Blob([value.content], { type: value.type ?? (lookup(value.filename) || 'application/octet-stream') }), value.filename);
194
203
  }
195
204
  }
196
205
  return form;
197
206
  }
198
- async _handleRedirect(config, res) {
207
+ async _handleRedirect(config, base, res) {
199
208
  const redirected = config.redirected ?? 0;
200
209
  if (redirected >= this.maxRedirects)
201
210
  return res;
202
211
  const location = res.get('Location');
203
212
  if (location === null)
204
213
  return res;
205
- const url = new URL(location, config.url);
214
+ const url = new URL(location, base);
215
+ // Credentials must not leak to other hosts (header names are case-insensitive)
216
+ const remove = ['authorization', 'cookie', 'host', 'referer'];
217
+ const headers = { ...config.headers };
206
218
  // New followup request
207
- const remove = ['Authorization', 'Cookie', 'Host', 'Referer'];
208
219
  if (res.statusCode === 301 || res.statusCode === 302 || res.statusCode === 303) {
220
+ for (const name of Object.keys(headers)) {
221
+ const lowerCase = name.toLowerCase();
222
+ if (remove.includes(lowerCase) || lowerCase.startsWith('content-'))
223
+ delete headers[name];
224
+ }
209
225
  const newConfig = {
210
- headers: config.headers,
226
+ headers,
211
227
  insecure: config.insecure,
212
228
  method: res.statusCode === 303 || config.method === 'POST' ? 'GET' : config.method,
213
229
  redirected: redirected + 1,
214
230
  url
215
231
  };
216
- remove.push(...Object.keys(newConfig.headers).filter(name => name.toLowerCase().startsWith('content-')));
217
- remove.forEach(name => delete newConfig.headers[name]);
218
232
  return this.request(newConfig);
219
233
  // Same request again
220
234
  }
221
235
  else if (res.statusCode === 307 || res.statusCode === 308) {
222
- config.url = url;
223
- config.redirected = redirected + 1;
224
- remove.forEach(name => delete config.headers[name]);
225
- return this.request(config);
236
+ for (const name of Object.keys(headers)) {
237
+ if (remove.includes(name.toLowerCase()))
238
+ delete headers[name];
239
+ }
240
+ const sameConfig = { ...config, auth: undefined, headers, query: undefined, redirected: redirected + 1, url };
241
+ return this.request(sameConfig);
226
242
  }
227
243
  return res;
228
244
  }
@@ -231,4 +247,3 @@ class UserAgent {
231
247
  }
232
248
  }
233
249
  export { UserAgent };
234
- //# sourceMappingURL=user-agent.js.map
package/lib/util.d.ts CHANGED
@@ -14,6 +14,19 @@ interface FixOptions {
14
14
  version?: string;
15
15
  }
16
16
  export declare const httpStatusMessages: Record<number, string>;
17
+ /**
18
+ * Error with an HTTP status, that `ctx.httpException()` will use for the response instead of `500`.
19
+ * @example
20
+ * // Respond with "418 I'm a Teapot"
21
+ * throw new util.HTTPError(418);
22
+ */
23
+ export declare class HTTPError extends Error {
24
+ /**
25
+ * HTTP status code.
26
+ */
27
+ status: number;
28
+ constructor(status: number, message?: string);
29
+ }
17
30
  /**
18
31
  * Create directory for generator commands.
19
32
  */
package/lib/util.js CHANGED
@@ -1,7 +1,15 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
1
9
  import { setTimeout } from 'node:timers/promises';
10
+ import { styleText } from 'node:util';
2
11
  import Path from '@mojojs/path';
3
12
  import Template from '@mojojs/template';
4
- import chalk from 'chalk';
5
13
  export * from '@mojojs/util';
6
14
  // Unmarked codes are from RFC 7231
7
15
  export const httpStatusMessages = {
@@ -69,6 +77,23 @@ export const httpStatusMessages = {
69
77
  510: 'Not Extended', // RFC 2774
70
78
  511: 'Network Authentication Required' // RFC 6585
71
79
  };
80
+ /**
81
+ * Error with an HTTP status, that `ctx.httpException()` will use for the response instead of `500`.
82
+ * @example
83
+ * // Respond with "418 I'm a Teapot"
84
+ * throw new util.HTTPError(418);
85
+ */
86
+ export class HTTPError extends Error {
87
+ /**
88
+ * HTTP status code.
89
+ */
90
+ status;
91
+ constructor(status, message) {
92
+ super(message ?? httpStatusMessages[status]);
93
+ this.name = 'HTTPError';
94
+ this.status = status;
95
+ }
96
+ }
72
97
  /**
73
98
  * Create directory for generator commands.
74
99
  */
@@ -76,10 +101,10 @@ export async function cliCreateDir(path) {
76
101
  const dir = new Path(process.cwd(), ...path.split('/'));
77
102
  const { stdout } = process;
78
103
  if ((await dir.exists()) === true) {
79
- stdout.write(chalk.green(' [exists]') + ` ${dir.toString()}\n`);
104
+ stdout.write(styleText('green', ' [exists]') + ` ${dir.toString()}\n`);
80
105
  return;
81
106
  }
82
- stdout.write(chalk.green(' [mkdir]') + ` ${dir.toString()}\n`);
107
+ stdout.write(styleText('green', ' [mkdir]') + ` ${dir.toString()}\n`);
83
108
  await dir.mkdir({ recursive: true });
84
109
  }
85
110
  /**
@@ -89,13 +114,13 @@ export async function cliCreateFile(path, template, values = {}, options = {}) {
89
114
  const file = new Path(process.cwd(), ...path.split('/'));
90
115
  const { stdout } = process;
91
116
  if ((await file.exists()) === true) {
92
- stdout.write(chalk.red(' [exists]') + ` ${file.toString()}\n`);
117
+ stdout.write(styleText('red', ' [exists]') + ` ${file.toString()}\n`);
93
118
  return;
94
119
  }
95
- stdout.write(chalk.green(' [write]') + ` ${file.toString()}\n`);
120
+ stdout.write(styleText('green', ' [write]') + ` ${file.toString()}\n`);
96
121
  await file.writeFile(await Template.render(template, values));
97
122
  if (options.chmod !== undefined) {
98
- stdout.write(chalk.green(' [chmod]') + ` ${file.toString()} (${options.chmod.toString(8)})\n`);
123
+ stdout.write(styleText('green', ' [chmod]') + ` ${file.toString()} (${options.chmod.toString(8)})\n`);
99
124
  await file.chmod(options.chmod);
100
125
  }
101
126
  }
@@ -134,7 +159,7 @@ export async function cliFixPackage(options = {}) {
134
159
  }
135
160
  }
136
161
  }
137
- stdout.write(chalk.green(' [fixed]') + ` ${file.toString()}\n`);
162
+ stdout.write(styleText('green', ' [fixed]') + ` ${file.toString()}\n`);
138
163
  await file.writeFile(JSON.stringify(pkg, null, 2));
139
164
  }
140
165
  /**
@@ -185,14 +210,14 @@ export async function loadModules(dirs) {
185
210
  if ((await dir.exists()) === false)
186
211
  continue;
187
212
  for await (const file of dir.list({ recursive: true })) {
188
- if (/\.m?js$/.test(file.toString()) === false)
213
+ if (/(?<!\.d)\.m?[jt]s$/.test(file.toString()) === false)
189
214
  continue;
190
- const imports = await import(file.toFileURL().toString());
215
+ const imports = await import(__rewriteRelativeImportExtension(file.toFileURL().toString()));
191
216
  const name = dir
192
217
  .relative(file)
193
218
  .toArray()
194
219
  .join('/')
195
- .replace(/\.m?js$/, '');
220
+ .replace(/\.m?[jt]s$/, '');
196
221
  modules[name] = imports.default ?? null;
197
222
  }
198
223
  }
@@ -202,4 +227,3 @@ export async function loadModules(dirs) {
202
227
  * Sleep asynchronously.
203
228
  */
204
229
  export const sleep = setTimeout;
205
- //# sourceMappingURL=util.js.map
@@ -1,4 +1,4 @@
1
- import type { ValidationError } from '../types.js';
1
+ import type { ValidationError } from '../types.ts';
2
2
  /**
3
3
  * Validation result class.
4
4
  */
@@ -2,9 +2,16 @@
2
2
  * Validation result class.
3
3
  */
4
4
  export class ValidatorResult {
5
+ /**
6
+ * Validation errors.
7
+ */
8
+ errors;
9
+ /**
10
+ * Validation result.
11
+ */
12
+ isValid;
5
13
  constructor(isValid, errors) {
6
14
  this.isValid = isValid;
7
15
  this.errors = errors;
8
16
  }
9
17
  }
10
- //# sourceMappingURL=result.js.map
@@ -1,5 +1,5 @@
1
- import type { JSONSchema, ValidatorFunction } from './types.js';
2
- import Ajv from 'ajv';
1
+ import type { JSONSchema, ValidatorFunction } from './types.ts';
2
+ import { Ajv } from 'ajv';
3
3
  /**
4
4
  * JSON schema validator class.
5
5
  */
package/lib/validator.js CHANGED
@@ -1,12 +1,10 @@
1
- import { ValidatorResult } from './validator/result.js';
2
- import Ajv from 'ajv';
1
+ import { ValidatorResult } from "./validator/result.js";
2
+ import { Ajv } from 'ajv';
3
3
  /**
4
4
  * JSON schema validator class.
5
5
  */
6
6
  export class Validator {
7
- constructor() {
8
- this._ajv = new Ajv({ coerceTypes: 'array' });
9
- }
7
+ _ajv = new Ajv({ coerceTypes: 'array' });
10
8
  /**
11
9
  * Add JSON schema.
12
10
  */
@@ -44,4 +42,3 @@ export class Validator {
44
42
  };
45
43
  }
46
44
  }
47
- //# sourceMappingURL=validator.js.map
@@ -1,5 +1,5 @@
1
- import type { JSONValue, WebSocketBackend } from './types.js';
2
- import type { UserAgentResponse } from './user-agent/response.js';
1
+ import type { JSONValue, WebSocketBackend } from './types.ts';
2
+ import type { UserAgentResponse } from './user-agent/response.ts';
3
3
  import EventEmitter from 'node:events';
4
4
  interface WebSocketControlEvents {
5
5
  close: (this: WebSocket, ...args: any[]) => void;
package/lib/websocket.js CHANGED
@@ -3,6 +3,15 @@ import EventEmitter, { on } from 'node:events';
3
3
  * WebSocket connection class.
4
4
  */
5
5
  class WebSocket extends EventEmitter {
6
+ /**
7
+ * WebSocket handshake.
8
+ */
9
+ handshake;
10
+ /**
11
+ * JSON mode.
12
+ */
13
+ jsonMode;
14
+ _ws;
6
15
  constructor(ws, handshake, options) {
7
16
  super({ captureRejections: true });
8
17
  this.handshake = handshake;
@@ -74,4 +83,3 @@ class WebSocket extends EventEmitter {
74
83
  }
75
84
  }
76
85
  export { WebSocket };
77
- //# sourceMappingURL=websocket.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mojojs/core",
3
- "version": "1.27.0",
3
+ "version": "2.0.0",
4
4
  "description": "Real-time web framework",
5
5
  "keywords": [
6
6
  "mojojs",
@@ -23,23 +23,18 @@
23
23
  "homepage": "https://mojojs.org",
24
24
  "scripts": {
25
25
  "bench": "npx concurrently -k -s first \"NODE_ENV=production node benchmarks/hello/hello-mojo.js server\" \"npx autocannon -W -c 100 -d 10 -p 15 localhost:3000\"",
26
- "build": "npx tsc --build ./ ./test/support/ts/full-app",
27
- "build:bench": "npm run build && npm run bench",
28
- "build:clean": "npm run clean && npm run build",
29
- "build:coverage": "npm run build && npm run coverage",
30
- "build:lint": "npm run build && npm run lint",
31
- "build:node": "npm run build && node",
32
- "build:test": "npm run build && npm test",
33
- "build:watch": "npm run build -- --watch",
34
- "clean": "rm -rf tsconfig.tsbuildinfo test/support/ts/full-app/tsconfig.tsbuildinfo lib test/support/ts/full-app/lib",
35
- "coverage": "c8 tap --disable-coverage --allow-empty-coverage test/*.js test/*.ts",
36
- "coverage:ci": "c8 --reporter lcovonly tap --disable-coverage --allow-empty-coverage test/*.js test/*.ts",
26
+ "build": "npx tsc -p tsconfig.json",
27
+ "check": "npx tsc --noEmit -p tsconfig.json && npx tsc -p test/support/ts/full-app",
28
+ "clean": "rm -rf lib",
29
+ "coverage": "tap build && c8 tap --disable-coverage --allow-empty-coverage test/*.js test/*.ts",
30
+ "coverage:ci": "tap build && c8 --reporter lcovonly tap --disable-coverage --allow-empty-coverage test/*.js test/*.ts",
37
31
  "lint": "eslint",
38
32
  "lint:fix": "npm run lint -- --fix",
39
- "prepublishOnly": "npm run build",
33
+ "prepublishOnly": "npm run clean && npm run build",
40
34
  "publish:minor": "npm version minor && npm publish",
41
35
  "publish:patch": "npm version patch && npm publish",
42
- "test": "tap --disable-coverage --allow-empty-coverage test/*.js test/*.ts"
36
+ "test": "tap build && tap --disable-coverage --allow-empty-coverage test/*.js test/*.ts",
37
+ "check:package": "sh test/support/package/check.sh"
43
38
  },
44
39
  "exports": "./lib/core.js",
45
40
  "types": "./lib/core.d.ts",
@@ -58,11 +53,6 @@
58
53
  "@types/js-yaml": "^4.0.3",
59
54
  "@types/mime-types": "^3.0.0",
60
55
  "@types/node": "^26.0.1",
61
- "@types/nopt": "^3.0.29",
62
- "@types/react": "^19.0.0",
63
- "@types/stack-utils": "^2.0.1",
64
- "@types/tough-cookie": "^4.0.2",
65
- "@types/ws": "^8.5.3",
66
56
  "autocannon": "^7.3.0",
67
57
  "c8": "^12.0.0",
68
58
  "concurrently": "^10.0.0",
@@ -73,29 +63,32 @@
73
63
  "eslint-plugin-import-x": "^4.16.2",
74
64
  "eslint-plugin-prettier": "^5.5.5",
75
65
  "globals": "^17.6.0",
76
- "nodemon": "^3.0.0",
77
66
  "prettier": "^3.8.3",
78
- "tap": "^21.0.1",
67
+ "tap": "^21.8.0",
79
68
  "typescript": "^6.0.3",
80
69
  "typescript-eslint": "^8.59.2"
81
70
  },
82
71
  "engines": {
83
- "node": ">= 20"
72
+ "node": ">= 22.18"
84
73
  },
85
74
  "dependencies": {
86
- "@mojojs/dom": "^2.1.0",
75
+ "@mojojs/dom": "^3.0.0",
87
76
  "@mojojs/path": "^1.6.0",
88
77
  "@mojojs/template": "^2.2.0",
89
78
  "@mojojs/util": "^1.6.0",
79
+ "@types/stack-utils": "^2.0.1",
80
+ "@types/ws": "^8.5.3",
90
81
  "ajv": "^8.5.0",
91
82
  "busboy": "^1.0.0",
92
- "chalk": "^5.0.0",
93
- "form-data": "^4.0.0",
94
83
  "js-yaml": "^5.2.2",
95
- "mime-types": "^2.1.30",
96
- "nopt": "^10.0.0",
84
+ "mime-types": "^3.0.2",
97
85
  "stack-utils": "^2.0.3",
98
- "tough-cookie": "^5.1.0",
99
- "ws": "^8.3.0"
86
+ "tough-cookie": "^6.0.2",
87
+ "ws": "^8.22.0"
88
+ },
89
+ "tap": {
90
+ "plugin": [
91
+ "!@tapjs/typescript"
92
+ ]
100
93
  }
101
94
  }
package/lib/app.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/body/params.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,UAAU,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,MAAO,SAAQ,eAAe;IACzC;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3C,IAAI,KAAK,KAAK,EAAE;gBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAM,CAAC;IACvC,CAAC;CACF"}
package/lib/body.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"body.js","sourceRoot":"","sources":["../src/body.ts"],"names":[],"mappings":"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"}