@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
package/LICENSE CHANGED
@@ -1,7 +1,7 @@
1
1
  (The MIT License)
2
2
 
3
3
  Copyright (c) 2019 Koa contributors
4
- Copyright (c) 2023 EggJS contributors
4
+ Copyright (c) 2023-present EggJS contributors
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person obtaining
7
7
  a copy of this software and associated documentation files (the
package/Readme.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @eggjs/koa
2
2
 
3
- @eggjs/koa is forked from [Koa v2.x](https://github.com/koajs/koa/tree/v2.x) for LTS and drop Node.js < 18.19.0 support.
3
+ @eggjs/koa is forked from [Koa v2.x](https://github.com/koajs/koa/tree/v2.x) for LTS and drop Node.js < 22.17.1 support.
4
4
 
5
5
  <img height="240px" src="/docs/logo.png" alt="Koa middleware framework for nodejs"/>
6
6
 
@@ -19,7 +19,7 @@ Koa is not bundled with any middleware.
19
19
 
20
20
  ## Installation
21
21
 
22
- @eggjs/koa requires **node v18.19.0** or higher for Node.js LTS support.
22
+ @eggjs/koa@3 requires **node v22.17.1** or higher for Node.js LTS support.
23
23
 
24
24
  ```bash
25
25
  npm install @eggjs/koa
@@ -2,10 +2,10 @@ import util from 'node:util';
2
2
  import Emitter from 'node:events';
3
3
  import type { AsyncLocalStorage } from 'node:async_hooks';
4
4
  import http, { type IncomingMessage, type ServerResponse } from 'node:http';
5
- import { Context } from './context.js';
6
- import { Request } from './request.js';
7
- import { Response } from './response.js';
8
- import type { CustomError, AnyProto } from './types.js';
5
+ import { Context } from './context.ts';
6
+ import { Request } from './request.ts';
7
+ import { Response } from './response.ts';
8
+ import type { CustomError, AnyProto } from './types.ts';
9
9
  export type ProtoImplClass<T = object> = new (...args: any[]) => T;
10
10
  export type Next = () => Promise<void>;
11
11
  type _MiddlewareFunc<T> = (ctx: T, next: Next) => Promise<void> | void;
@@ -0,0 +1,278 @@
1
+ import util, { debuglog } from 'node:util';
2
+ import Emitter from 'node:events';
3
+ import Stream from 'node:stream';
4
+ import http, {} from 'node:http';
5
+ import { getAsyncLocalStorage } from 'gals';
6
+ import { isGeneratorFunction } from 'is-type-of';
7
+ import onFinished from 'on-finished';
8
+ import statuses from 'statuses';
9
+ import compose from 'koa-compose';
10
+ import { HttpError } from 'http-errors';
11
+ import { Context } from "./context.js";
12
+ import { Request } from "./request.js";
13
+ import { Response } from "./response.js";
14
+ const debug = debuglog('@eggjs/koa/application');
15
+ /**
16
+ * Expose `Application` class.
17
+ * Inherits from `Emitter.prototype`.
18
+ */
19
+ export class Application extends Emitter {
20
+ /**
21
+ * Make HttpError available to consumers of the library so that consumers don't
22
+ * have a direct dependency upon `http-errors`
23
+ */
24
+ static HttpError = HttpError;
25
+ _proxy;
26
+ _env;
27
+ subdomainOffset;
28
+ proxyIpHeader;
29
+ maxIpsCount;
30
+ _keys;
31
+ middleware;
32
+ ctxStorage;
33
+ silent;
34
+ ContextClass;
35
+ context;
36
+ RequestClass;
37
+ request;
38
+ ResponseClass;
39
+ response;
40
+ /**
41
+ * Initialize a new `Application`.
42
+ *
43
+ * @param {object} [options] Application options
44
+ * @param {string} [options.env] Environment, default is `development`
45
+ * @param {string[]} [options.keys] Signed cookie keys
46
+ * @param {boolean} [options.proxy] Trust proxy headers
47
+ * @param {number} [options.subdomainOffset] Subdomain offset
48
+ * @param {string} [options.proxyIpHeader] Proxy IP header, defaults to X-Forwarded-For
49
+ * @param {number} [options.maxIpsCount] Max IPs read from proxy IP header, default to 0 (means infinity)
50
+ */
51
+ constructor(options) {
52
+ super();
53
+ options = options || {};
54
+ this._proxy = options.proxy || false;
55
+ this.subdomainOffset = options.subdomainOffset || 2;
56
+ this.proxyIpHeader = options.proxyIpHeader || 'X-Forwarded-For';
57
+ this.maxIpsCount = options.maxIpsCount || 0;
58
+ this._env = options.env || process.env.NODE_ENV || 'development';
59
+ if (options.keys) {
60
+ this._keys = options.keys;
61
+ }
62
+ this.middleware = [];
63
+ this.ctxStorage = getAsyncLocalStorage();
64
+ this.silent = false;
65
+ this.ContextClass =
66
+ class ApplicationContext extends Context {
67
+ };
68
+ this.context = this.ContextClass.prototype;
69
+ this.RequestClass =
70
+ class ApplicationRequest extends Request {
71
+ };
72
+ this.request = this.RequestClass.prototype;
73
+ this.ResponseClass =
74
+ class ApplicationResponse extends Response {
75
+ };
76
+ this.response = this.ResponseClass.prototype;
77
+ }
78
+ get keys() {
79
+ return this._keys;
80
+ }
81
+ set keys(value) {
82
+ this._keys = value;
83
+ }
84
+ get env() {
85
+ return this._env;
86
+ }
87
+ set env(value) {
88
+ this._env = value;
89
+ }
90
+ get proxy() {
91
+ return this._proxy;
92
+ }
93
+ set proxy(value) {
94
+ this._proxy = value;
95
+ }
96
+ /**
97
+ * Shorthand for:
98
+ *
99
+ * http.createServer(app.callback()).listen(...)
100
+ */
101
+ // oxlint-disable-next-line typescript/no-explicit-any
102
+ listen(...args) {
103
+ debug('listen with args: %o', args);
104
+ const server = http.createServer(this.callback());
105
+ return server.listen(...args);
106
+ }
107
+ /**
108
+ * Return JSON representation.
109
+ * We only bother showing settings.
110
+ */
111
+ toJSON() {
112
+ return {
113
+ subdomainOffset: this.subdomainOffset,
114
+ proxy: this.proxy,
115
+ env: this.env,
116
+ };
117
+ }
118
+ /**
119
+ * Inspect implementation.
120
+ */
121
+ inspect() {
122
+ return this.toJSON();
123
+ }
124
+ [util.inspect.custom]() {
125
+ return this.inspect();
126
+ }
127
+ /**
128
+ * Use the given middleware `fn`.
129
+ */
130
+ use(fn) {
131
+ if (typeof fn !== 'function')
132
+ throw new TypeError('middleware must be a function!');
133
+ const name = fn._name || fn.name || '-';
134
+ if (isGeneratorFunction(fn)) {
135
+ throw new TypeError(`Support for generators was removed, middleware: ${name}. ` +
136
+ 'See the documentation for examples of how to convert old middleware ' +
137
+ 'https://github.com/koajs/koa/blob/master/docs/migration.md');
138
+ }
139
+ debug('use %o #%d', name, this.middleware.length);
140
+ this.middleware.push(fn);
141
+ return this;
142
+ }
143
+ /**
144
+ * Return a request handler callback
145
+ * for node's native http server.
146
+ */
147
+ callback() {
148
+ const fn = compose(this.middleware);
149
+ if (!this.listenerCount('error')) {
150
+ this.on('error', this.onerror.bind(this));
151
+ }
152
+ const handleRequest = (req, res) => {
153
+ const ctx = this.createContext(req, res);
154
+ return this.ctxStorage.run(ctx, async () => {
155
+ return await this.handleRequest(ctx, fn);
156
+ });
157
+ };
158
+ return handleRequest;
159
+ }
160
+ /**
161
+ * return current context from async local storage
162
+ */
163
+ get currentContext() {
164
+ return this.ctxStorage.getStore();
165
+ }
166
+ /**
167
+ * Handle request in callback.
168
+ * @private
169
+ */
170
+ async handleRequest(ctx, fnMiddleware) {
171
+ this.emit('request', ctx);
172
+ const res = ctx.res;
173
+ res.statusCode = 404;
174
+ const onerror = (err) => ctx.onerror(err);
175
+ // oxlint-disable-next-line promise/prefer-await-to-callbacks
176
+ onFinished(res, (err) => {
177
+ if (err) {
178
+ onerror(err);
179
+ }
180
+ this.emit('response', ctx);
181
+ });
182
+ try {
183
+ await fnMiddleware(ctx);
184
+ return this._respond(ctx);
185
+ }
186
+ catch (err) {
187
+ return onerror(err);
188
+ }
189
+ }
190
+ /**
191
+ * Initialize a new context.
192
+ * @private
193
+ */
194
+ createContext(req, res) {
195
+ const context = new this.ContextClass(this, req, res);
196
+ return context;
197
+ }
198
+ /**
199
+ * Default error handler.
200
+ * @private
201
+ */
202
+ onerror(err) {
203
+ // When dealing with cross-globals a normal `instanceof` check doesn't work properly.
204
+ // See https://github.com/koajs/koa/issues/1466
205
+ // We can probably remove it once jest fixes https://github.com/facebook/jest/issues/2549.
206
+ const isNativeError = err instanceof Error ||
207
+ Object.prototype.toString.call(err) === '[object Error]';
208
+ if (!isNativeError)
209
+ throw new TypeError(util.format('non-error thrown: %j', err));
210
+ if (err.status === 404 || err.expose)
211
+ return;
212
+ if (this.silent)
213
+ return;
214
+ const msg = err.stack || err.toString();
215
+ // oxlint-disable-next-line no-console
216
+ console.error(`\n${msg.replaceAll(/^/gm, ' ')}\n`);
217
+ }
218
+ /**
219
+ * Response helper.
220
+ */
221
+ _respond(ctx) {
222
+ // allow bypassing koa
223
+ if (ctx.respond === false)
224
+ return;
225
+ if (!ctx.writable)
226
+ return;
227
+ const res = ctx.res;
228
+ let body = ctx.body;
229
+ const code = ctx.status;
230
+ // ignore body
231
+ if (statuses.empty[code]) {
232
+ // strip headers
233
+ ctx.body = null;
234
+ return res.end();
235
+ }
236
+ if (ctx.method === 'HEAD') {
237
+ if (!res.headersSent && !ctx.response.has('Content-Length')) {
238
+ const { length } = ctx.response;
239
+ if (Number.isInteger(length))
240
+ ctx.length = length;
241
+ }
242
+ return res.end();
243
+ }
244
+ // status body
245
+ if (body === null || body === undefined) {
246
+ if (ctx.response._explicitNullBody) {
247
+ ctx.response.remove('Content-Type');
248
+ ctx.response.remove('Transfer-Encoding');
249
+ return res.end();
250
+ }
251
+ if (ctx.req.httpVersionMajor >= 2) {
252
+ body = String(code);
253
+ }
254
+ else {
255
+ body = ctx.message || String(code);
256
+ }
257
+ if (!res.headersSent) {
258
+ ctx.type = 'text';
259
+ ctx.length = Buffer.byteLength(body);
260
+ }
261
+ return res.end(body);
262
+ }
263
+ // responses
264
+ if (Buffer.isBuffer(body))
265
+ return res.end(body);
266
+ if (typeof body === 'string')
267
+ return res.end(body);
268
+ if (body instanceof Stream)
269
+ return body.pipe(res);
270
+ // body: json
271
+ body = JSON.stringify(body);
272
+ if (!res.headersSent) {
273
+ ctx.length = Buffer.byteLength(body);
274
+ }
275
+ res.end(body);
276
+ }
277
+ }
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXBwbGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxPQUFPLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUVqQyxPQUFPLElBQUksRUFBRSxFQUE2QyxNQUFNLFdBQVcsQ0FBQztBQUU1RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxPQUFPLE1BQU0sYUFBYSxDQUFDO0FBRWxDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFVakQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFdBQVksU0FBUSxPQUFPO0lBRXRDOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBRW5CLE1BQU0sQ0FBVTtJQUNoQixJQUFJLENBQVM7SUFDdkIsZUFBZSxDQUFTO0lBQ3hCLGFBQWEsQ0FBUztJQUN0QixXQUFXLENBQVM7SUFDVixLQUFLLENBQVk7SUFDM0IsVUFBVSxDQUE0QjtJQUN0QyxVQUFVLENBQTZCO0lBQ3ZDLE1BQU0sQ0FBVTtJQUNoQixZ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
@@ -3,10 +3,10 @@ import type { IncomingMessage, ServerResponse } from 'node:http';
3
3
  import type { ParsedUrlQuery } from 'node:querystring';
4
4
  import Cookies from 'cookies';
5
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';
6
+ import type { Application } from './application.ts';
7
+ import type { Request } from './request.ts';
8
+ import type { Response } from './response.ts';
9
+ import type { CustomError, AnyProto } from './types.ts';
10
10
  export declare class Context {
11
11
  #private;
12
12
  [key: symbol | string]: unknown;
@@ -168,7 +168,7 @@ export declare class Context {
168
168
  get querystring(): string;
169
169
  set querystring(str: string);
170
170
  get idempotent(): boolean;
171
- get socket(): import("./request.js").RequestSocket;
171
+ get socket(): import("./request.ts").RequestSocket;
172
172
  get search(): string;
173
173
  set search(str: string);
174
174
  get method(): string;