@eggjs/koa 2.22.2 → 3.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 (40) hide show
  1. package/LICENSE +1 -1
  2. package/Readme.md +2 -2
  3. package/dist/{commonjs/application.d.ts → application.d.ts} +4 -4
  4. package/dist/application.js +278 -0
  5. package/dist/{esm/context.d.ts → context.d.ts} +5 -5
  6. package/dist/context.js +350 -0
  7. package/dist/index.d.ts +7 -0
  8. package/dist/index.js +7 -0
  9. package/dist/{commonjs/request.d.ts → request.d.ts} +3 -3
  10. package/dist/{esm/request.js → request.js} +4 -4
  11. package/dist/{esm/response.d.ts → response.d.ts} +3 -3
  12. package/dist/response.js +472 -0
  13. package/dist/{esm/types.js → types.js} +1 -1
  14. package/package.json +17 -40
  15. package/src/application.ts +4 -4
  16. package/src/context.ts +4 -4
  17. package/src/index.ts +6 -6
  18. package/src/request.ts +3 -3
  19. package/src/response.ts +3 -3
  20. package/dist/commonjs/application.js +0 -318
  21. package/dist/commonjs/context.d.ts +0 -225
  22. package/dist/commonjs/context.js +0 -357
  23. package/dist/commonjs/index.d.ts +0 -7
  24. package/dist/commonjs/index.js +0 -23
  25. package/dist/commonjs/package.json +0 -3
  26. package/dist/commonjs/request.js +0 -528
  27. package/dist/commonjs/response.d.ts +0 -225
  28. package/dist/commonjs/response.js +0 -479
  29. package/dist/commonjs/types.js +0 -3
  30. package/dist/esm/application.d.ts +0 -127
  31. package/dist/esm/application.js +0 -278
  32. package/dist/esm/context.js +0 -350
  33. package/dist/esm/index.d.ts +0 -7
  34. package/dist/esm/index.js +0 -7
  35. package/dist/esm/package.json +0 -3
  36. package/dist/esm/request.d.ts +0 -338
  37. package/dist/esm/response.js +0 -472
  38. package/dist/esm/types.d.ts +0 -11
  39. package/dist/package.json +0 -4
  40. /package/dist/{commonjs/types.d.ts → types.d.ts} +0 -0
@@ -1,318 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.Application = void 0;
40
- const node_util_1 = __importStar(require("node:util"));
41
- const node_events_1 = __importDefault(require("node:events"));
42
- const node_stream_1 = __importDefault(require("node:stream"));
43
- const node_http_1 = __importDefault(require("node:http"));
44
- const gals_1 = require("gals");
45
- const is_type_of_1 = require("is-type-of");
46
- const on_finished_1 = __importDefault(require("on-finished"));
47
- const statuses_1 = __importDefault(require("statuses"));
48
- const koa_compose_1 = __importDefault(require("koa-compose"));
49
- const http_errors_1 = require("http-errors");
50
- const context_js_1 = require("./context.js");
51
- const request_js_1 = require("./request.js");
52
- const response_js_1 = require("./response.js");
53
- const debug = (0, node_util_1.debuglog)('@eggjs/koa/application');
54
- /**
55
- * Expose `Application` class.
56
- * Inherits from `Emitter.prototype`.
57
- */
58
- class Application extends node_events_1.default {
59
- /**
60
- * Make HttpError available to consumers of the library so that consumers don't
61
- * have a direct dependency upon `http-errors`
62
- */
63
- static HttpError = http_errors_1.HttpError;
64
- _proxy;
65
- _env;
66
- subdomainOffset;
67
- proxyIpHeader;
68
- maxIpsCount;
69
- _keys;
70
- middleware;
71
- ctxStorage;
72
- silent;
73
- ContextClass;
74
- context;
75
- RequestClass;
76
- request;
77
- ResponseClass;
78
- response;
79
- /**
80
- * Initialize a new `Application`.
81
- *
82
- * @param {object} [options] Application options
83
- * @param {string} [options.env] Environment, default is `development`
84
- * @param {string[]} [options.keys] Signed cookie keys
85
- * @param {boolean} [options.proxy] Trust proxy headers
86
- * @param {number} [options.subdomainOffset] Subdomain offset
87
- * @param {string} [options.proxyIpHeader] Proxy IP header, defaults to X-Forwarded-For
88
- * @param {number} [options.maxIpsCount] Max IPs read from proxy IP header, default to 0 (means infinity)
89
- */
90
- constructor(options) {
91
- super();
92
- options = options || {};
93
- this._proxy = options.proxy || false;
94
- this.subdomainOffset = options.subdomainOffset || 2;
95
- this.proxyIpHeader = options.proxyIpHeader || 'X-Forwarded-For';
96
- this.maxIpsCount = options.maxIpsCount || 0;
97
- this._env = options.env || process.env.NODE_ENV || 'development';
98
- if (options.keys) {
99
- this._keys = options.keys;
100
- }
101
- this.middleware = [];
102
- this.ctxStorage = (0, gals_1.getAsyncLocalStorage)();
103
- this.silent = false;
104
- this.ContextClass =
105
- class ApplicationContext extends context_js_1.Context {
106
- };
107
- this.context = this.ContextClass.prototype;
108
- this.RequestClass =
109
- class ApplicationRequest extends request_js_1.Request {
110
- };
111
- this.request = this.RequestClass.prototype;
112
- this.ResponseClass =
113
- class ApplicationResponse extends response_js_1.Response {
114
- };
115
- this.response = this.ResponseClass.prototype;
116
- }
117
- get keys() {
118
- return this._keys;
119
- }
120
- set keys(value) {
121
- this._keys = value;
122
- }
123
- get env() {
124
- return this._env;
125
- }
126
- set env(value) {
127
- this._env = value;
128
- }
129
- get proxy() {
130
- return this._proxy;
131
- }
132
- set proxy(value) {
133
- this._proxy = value;
134
- }
135
- /**
136
- * Shorthand for:
137
- *
138
- * http.createServer(app.callback()).listen(...)
139
- */
140
- // oxlint-disable-next-line typescript/no-explicit-any
141
- listen(...args) {
142
- debug('listen with args: %o', args);
143
- const server = node_http_1.default.createServer(this.callback());
144
- return server.listen(...args);
145
- }
146
- /**
147
- * Return JSON representation.
148
- * We only bother showing settings.
149
- */
150
- toJSON() {
151
- return {
152
- subdomainOffset: this.subdomainOffset,
153
- proxy: this.proxy,
154
- env: this.env,
155
- };
156
- }
157
- /**
158
- * Inspect implementation.
159
- */
160
- inspect() {
161
- return this.toJSON();
162
- }
163
- [node_util_1.default.inspect.custom]() {
164
- return this.inspect();
165
- }
166
- /**
167
- * Use the given middleware `fn`.
168
- */
169
- use(fn) {
170
- if (typeof fn !== 'function')
171
- throw new TypeError('middleware must be a function!');
172
- const name = fn._name || fn.name || '-';
173
- if ((0, is_type_of_1.isGeneratorFunction)(fn)) {
174
- throw new TypeError(`Support for generators was removed, middleware: ${name}. ` +
175
- 'See the documentation for examples of how to convert old middleware ' +
176
- 'https://github.com/koajs/koa/blob/master/docs/migration.md');
177
- }
178
- debug('use %o #%d', name, this.middleware.length);
179
- this.middleware.push(fn);
180
- return this;
181
- }
182
- /**
183
- * Return a request handler callback
184
- * for node's native http server.
185
- */
186
- callback() {
187
- const fn = (0, koa_compose_1.default)(this.middleware);
188
- if (!this.listenerCount('error')) {
189
- this.on('error', this.onerror.bind(this));
190
- }
191
- const handleRequest = (req, res) => {
192
- const ctx = this.createContext(req, res);
193
- return this.ctxStorage.run(ctx, async () => {
194
- return await this.handleRequest(ctx, fn);
195
- });
196
- };
197
- return handleRequest;
198
- }
199
- /**
200
- * return current context from async local storage
201
- */
202
- get currentContext() {
203
- return this.ctxStorage.getStore();
204
- }
205
- /**
206
- * Handle request in callback.
207
- * @private
208
- */
209
- async handleRequest(ctx, fnMiddleware) {
210
- this.emit('request', ctx);
211
- const res = ctx.res;
212
- res.statusCode = 404;
213
- const onerror = (err) => ctx.onerror(err);
214
- // oxlint-disable-next-line promise/prefer-await-to-callbacks
215
- (0, on_finished_1.default)(res, (err) => {
216
- if (err) {
217
- onerror(err);
218
- }
219
- this.emit('response', ctx);
220
- });
221
- try {
222
- await fnMiddleware(ctx);
223
- return this._respond(ctx);
224
- }
225
- catch (err) {
226
- return onerror(err);
227
- }
228
- }
229
- /**
230
- * Initialize a new context.
231
- * @private
232
- */
233
- createContext(req, res) {
234
- const context = new this.ContextClass(this, req, res);
235
- return context;
236
- }
237
- /**
238
- * Default error handler.
239
- * @private
240
- */
241
- onerror(err) {
242
- // When dealing with cross-globals a normal `instanceof` check doesn't work properly.
243
- // See https://github.com/koajs/koa/issues/1466
244
- // We can probably remove it once jest fixes https://github.com/facebook/jest/issues/2549.
245
- const isNativeError = err instanceof Error ||
246
- Object.prototype.toString.call(err) === '[object Error]';
247
- if (!isNativeError)
248
- throw new TypeError(node_util_1.default.format('non-error thrown: %j', err));
249
- if (err.status === 404 || err.expose)
250
- return;
251
- if (this.silent)
252
- return;
253
- const msg = err.stack || err.toString();
254
- // oxlint-disable-next-line no-console
255
- console.error(`\n${msg.replaceAll(/^/gm, ' ')}\n`);
256
- }
257
- /**
258
- * Response helper.
259
- */
260
- _respond(ctx) {
261
- // allow bypassing koa
262
- if (ctx.respond === false)
263
- return;
264
- if (!ctx.writable)
265
- return;
266
- const res = ctx.res;
267
- let body = ctx.body;
268
- const code = ctx.status;
269
- // ignore body
270
- if (statuses_1.default.empty[code]) {
271
- // strip headers
272
- ctx.body = null;
273
- return res.end();
274
- }
275
- if (ctx.method === 'HEAD') {
276
- if (!res.headersSent && !ctx.response.has('Content-Length')) {
277
- const { length } = ctx.response;
278
- if (Number.isInteger(length))
279
- ctx.length = length;
280
- }
281
- return res.end();
282
- }
283
- // status body
284
- if (body === null || body === undefined) {
285
- if (ctx.response._explicitNullBody) {
286
- ctx.response.remove('Content-Type');
287
- ctx.response.remove('Transfer-Encoding');
288
- return res.end();
289
- }
290
- if (ctx.req.httpVersionMajor >= 2) {
291
- body = String(code);
292
- }
293
- else {
294
- body = ctx.message || String(code);
295
- }
296
- if (!res.headersSent) {
297
- ctx.type = 'text';
298
- ctx.length = Buffer.byteLength(body);
299
- }
300
- return res.end(body);
301
- }
302
- // responses
303
- if (Buffer.isBuffer(body))
304
- return res.end(body);
305
- if (typeof body === 'string')
306
- return res.end(body);
307
- if (body instanceof node_stream_1.default)
308
- return body.pipe(res);
309
- // body: json
310
- body = JSON.stringify(body);
311
- if (!res.headersSent) {
312
- ctx.length = Buffer.byteLength(body);
313
- }
314
- res.end(body);
315
- }
316
- }
317
- exports.Application = Application;
318
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQTJDO0FBQzNDLDhEQUFrQztBQUNsQyw4REFBaUM7QUFFakMsMERBQTRFO0FBRTVFLCtCQUE0QztBQUM1QywyQ0FBaUQ7QUFDakQsOERBQXFDO0FBQ3JDLHdEQUFnQztBQUNoQyw4REFBa0M7QUFFbEMsNkNBQXdDO0FBQ3hDLDZDQUF1QztBQUN2Qyw2Q0FBdUM7QUFDdkMsK0NBQXlDO0FBR3pDLE1BQU0sS0FBSyxHQUFHLElBQUEsb0JBQVEsRUFBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBVWpEOzs7R0FHRztBQUNILE1BQWEsV0FBWSxTQUFRLHFCQUFPO0lBRXRDOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxTQUFTLEdBQUcsdUJBQVMsQ0FBQztJQUVuQixNQUFNLENBQVU7SUFDaEIsSUFBSSxDQUFTO0lBQ3ZCLGVBQWUsQ0FBUztJQUN4QixhQUFhLENBQVM7SUFDdEIsV0FBVyxDQUFTO0lBQ1YsS0FBSyxDQUFZO0lBQzNCLFVBQVUsQ0FBNEI7SUFDdEMsVUFBVSxDQUE2QjtJQUN2QyxNQUFNLENBQVU7SUFDaEIsWUFBWSxDQUEwQjtJQUN0QyxPQUFPLENBQVc7SUFDbEIsWUFBWSxDQUEwQjtJQUN0QyxPQUFPLENBQVc7SUFDbEIsYUFBYSxDQUEyQjtJQUN4QyxRQUFRLENBQVc7SUFFbkI7Ozs7Ozs7Ozs7T0FVRztJQUVILFlBQVksT0FPWDtRQUNDLEtBQUssRUFBRSxDQUFDO1FBQ1IsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLElBQUks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
@@ -1,225 +0,0 @@
1
- import util from 'node:util';
2
- import type { IncomingMessage, ServerResponse } from 'node:http';
3
- import type { ParsedUrlQuery } from 'node:querystring';
4
- import Cookies from 'cookies';
5
- import type { Accepts } from 'accepts';
6
- import type { Application } from './application.js';
7
- import type { Request } from './request.js';
8
- import type { Response } from './response.js';
9
- import type { CustomError, AnyProto } from './types.js';
10
- export declare class Context {
11
- #private;
12
- [key: symbol | string]: unknown;
13
- app: Application;
14
- req: IncomingMessage;
15
- res: ServerResponse;
16
- request: Request & AnyProto;
17
- response: Response & AnyProto;
18
- originalUrl: string;
19
- respond?: boolean;
20
- constructor(app: Application, req: IncomingMessage, res: ServerResponse);
21
- /**
22
- * util.inspect() implementation, which
23
- * just returns the JSON output.
24
- */
25
- inspect(): {
26
- request: {
27
- method: string;
28
- url: string;
29
- header: import("http").IncomingHttpHeaders;
30
- };
31
- response: {
32
- status: number;
33
- message: string;
34
- header: import("http").OutgoingHttpHeaders;
35
- };
36
- app: {
37
- subdomainOffset: number;
38
- proxy: boolean;
39
- env: string;
40
- };
41
- originalUrl: string;
42
- req: string;
43
- res: string;
44
- socket: string;
45
- };
46
- /**
47
- * Custom inspection implementation for newer Node.js versions.
48
- */
49
- [util.inspect.custom](): {
50
- request: {
51
- method: string;
52
- url: string;
53
- header: import("http").IncomingHttpHeaders;
54
- };
55
- response: {
56
- status: number;
57
- message: string;
58
- header: import("http").OutgoingHttpHeaders;
59
- };
60
- app: {
61
- subdomainOffset: number;
62
- proxy: boolean;
63
- env: string;
64
- };
65
- originalUrl: string;
66
- req: string;
67
- res: string;
68
- socket: string;
69
- };
70
- /**
71
- * Return JSON representation.
72
- *
73
- * Here we explicitly invoke .toJSON() on each
74
- * object, as iteration will otherwise fail due
75
- * to the getters and cause utilities such as
76
- * clone() to fail.
77
- */
78
- toJSON(): {
79
- request: {
80
- method: string;
81
- url: string;
82
- header: import("http").IncomingHttpHeaders;
83
- };
84
- response: {
85
- status: number;
86
- message: string;
87
- header: import("http").OutgoingHttpHeaders;
88
- };
89
- app: {
90
- subdomainOffset: number;
91
- proxy: boolean;
92
- env: string;
93
- };
94
- originalUrl: string;
95
- req: string;
96
- res: string;
97
- socket: string;
98
- };
99
- /**
100
- * Similar to .throw(), adds assertion.
101
- *
102
- * ```ts
103
- * this.assert(this.user, 401, 'Please login!');
104
- * ```
105
- */
106
- assert(value: unknown, status?: number, errorProps?: Record<string, unknown>): void;
107
- assert(value: unknown, status?: number, errorMessage?: string, errorProps?: Record<string, unknown>): void;
108
- /**
109
- * Throw an error with `status` (default 500) and
110
- * `msg`. Note that these are user-level
111
- * errors, and the message may be exposed to the client.
112
- *
113
- * this.throw(403)
114
- * this.throw(400, 'name required')
115
- * this.throw('something exploded')
116
- * this.throw(new Error('invalid'))
117
- * this.throw(400, new Error('invalid'))
118
- * this.throw(400, new Error('invalid'), { foo: 'bar' })
119
- * this.throw(new Error('invalid'), { foo: 'bar' })
120
- *
121
- * See: https://github.com/jshttp/http-errors
122
- *
123
- * Note: `status` should only be passed as the first parameter.
124
- *
125
- * @param {String|Number|Error} status error, msg or status
126
- * @param {String|Number|Error|Object} [error] error, msg, status or errorProps
127
- * @param {Object} [errorProps] error object properties
128
- */
129
- throw(status: number): void;
130
- throw(status: number, errorProps: object): void;
131
- throw(status: number, errorMessage: string): void;
132
- throw(status: number, errorMessage: string, errorProps: object): void;
133
- throw(status: number, error: Error): void;
134
- throw(status: number, error: Error, errorProps: object): void;
135
- throw(errorMessage: string): void;
136
- throw(errorMessage: string, errorProps: object): void;
137
- throw(errorMessage: string, status: number): void;
138
- throw(errorMessage: string, status: number, errorProps: object): void;
139
- throw(error: Error): void;
140
- throw(error: Error, errorProps: object): void;
141
- throw(error: Error, status: number): void;
142
- throw(error: Error, status: number, errorProps: object): void;
143
- /**
144
- * Default error handling.
145
- * @private
146
- */
147
- onerror(err: CustomError): void;
148
- protected _cookies: Cookies | undefined;
149
- get cookies(): Cookies;
150
- set cookies(cookies: Cookies);
151
- get state(): Record<string, any>;
152
- /**
153
- * Request delegation.
154
- */
155
- acceptsLanguages(): string[];
156
- acceptsLanguages(languages: string[]): string | false;
157
- acceptsLanguages(...languages: string[]): string | false;
158
- acceptsEncodings(): string[];
159
- acceptsEncodings(encodings: string[]): string | false;
160
- acceptsEncodings(...encodings: string[]): string | false;
161
- acceptsCharsets(): string[];
162
- acceptsCharsets(charsets: string[]): string | false;
163
- acceptsCharsets(...charsets: string[]): string | false;
164
- accepts(args: string[]): string | string[] | false;
165
- accepts(...args: string[]): string | string[] | false;
166
- get<T = string | string[]>(field: string): T;
167
- is(type?: string | string[], ...types: string[]): string | false | null;
168
- get querystring(): string;
169
- set querystring(str: string);
170
- get idempotent(): boolean;
171
- get socket(): import("./request.js").RequestSocket;
172
- get search(): string;
173
- set search(str: string);
174
- get method(): string;
175
- set method(method: string);
176
- get query(): ParsedUrlQuery;
177
- set query(obj: ParsedUrlQuery);
178
- get path(): string;
179
- set path(path: string);
180
- get url(): string;
181
- set url(url: string);
182
- get accept(): Accepts;
183
- set accept(accept: Accepts);
184
- get origin(): string;
185
- get href(): string;
186
- get subdomains(): string[];
187
- get protocol(): string;
188
- get host(): string;
189
- get hostname(): string;
190
- get URL(): URL;
191
- get header(): import("http").IncomingHttpHeaders;
192
- get headers(): import("http").IncomingHttpHeaders;
193
- get secure(): boolean;
194
- get stale(): boolean;
195
- get fresh(): boolean;
196
- get ips(): string[];
197
- get ip(): string;
198
- /**
199
- * Response delegation.
200
- */
201
- attachment(...args: Parameters<Response['attachment']>): void;
202
- redirect(...args: Parameters<Response['redirect']>): void;
203
- remove(...args: Parameters<Response['remove']>): void;
204
- vary(...args: Parameters<Response['vary']>): void;
205
- has(...args: Parameters<Response['has']>): boolean;
206
- set(...args: Parameters<Response['set']>): void;
207
- append(...args: Parameters<Response['append']>): void;
208
- flushHeaders(...args: Parameters<Response['flushHeaders']>): void;
209
- get status(): number;
210
- set status(status: number);
211
- get message(): string;
212
- set message(msg: string);
213
- get body(): any;
214
- set body(val: any);
215
- get length(): number | undefined;
216
- set length(n: number | string | undefined);
217
- get type(): string;
218
- set type(type: string | null | undefined);
219
- get lastModified(): string | Date | undefined;
220
- set lastModified(val: string | Date | undefined);
221
- get etag(): string;
222
- set etag(val: string);
223
- get headerSent(): boolean;
224
- get writable(): boolean;
225
- }