koa 3.0.0-alpha.1 → 3.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Readme.md +1 -1
- package/lib/application.js +8 -12
- package/lib/context.js +3 -3
- package/lib/only.js +9 -0
- package/lib/request.js +22 -11
- package/lib/response.js +68 -14
- package/lib/search-params.js +33 -0
- package/package.json +16 -22
- package/History.md +0 -674
package/Readme.md
CHANGED
package/lib/application.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
'use strict'
|
|
3
2
|
|
|
4
3
|
/**
|
|
@@ -17,7 +16,7 @@ const Emitter = require('events')
|
|
|
17
16
|
const util = require('util')
|
|
18
17
|
const Stream = require('stream')
|
|
19
18
|
const http = require('http')
|
|
20
|
-
const only = require('only')
|
|
19
|
+
const only = require('./only.js')
|
|
21
20
|
const { HttpError } = require('http-errors')
|
|
22
21
|
|
|
23
22
|
/** @typedef {typeof import ('./context') & {
|
|
@@ -55,6 +54,8 @@ module.exports = class Application extends Emitter {
|
|
|
55
54
|
* @param {number} [options.subdomainOffset] Subdomain offset
|
|
56
55
|
* @param {string} [options.proxyIpHeader] Proxy IP header, defaults to X-Forwarded-For
|
|
57
56
|
* @param {number} [options.maxIpsCount] Max IPs read from proxy IP header, default to 0 (means infinity)
|
|
57
|
+
* @param {function} [options.compose] Function to handle middleware composition
|
|
58
|
+
* @param {boolean} [options.asyncLocalStorage] Max IPs read from proxy IP header, default to 0 (means infinity)
|
|
58
59
|
*
|
|
59
60
|
*/
|
|
60
61
|
|
|
@@ -247,15 +248,6 @@ module.exports = class Application extends Emitter {
|
|
|
247
248
|
static get default () {
|
|
248
249
|
return Application
|
|
249
250
|
}
|
|
250
|
-
|
|
251
|
-
createAsyncCtxStorageMiddleware () {
|
|
252
|
-
const app = this
|
|
253
|
-
return async function asyncCtxStorage (ctx, next) {
|
|
254
|
-
await app.ctxStorage.run(ctx, async () => {
|
|
255
|
-
return await next()
|
|
256
|
-
})
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
251
|
}
|
|
260
252
|
|
|
261
253
|
/**
|
|
@@ -288,7 +280,7 @@ function respond (ctx) {
|
|
|
288
280
|
}
|
|
289
281
|
|
|
290
282
|
// status body
|
|
291
|
-
if (body
|
|
283
|
+
if (body === null || body === undefined) {
|
|
292
284
|
if (ctx.response._explicitNullBody) {
|
|
293
285
|
ctx.response.remove('Content-Type')
|
|
294
286
|
ctx.response.remove('Transfer-Encoding')
|
|
@@ -308,9 +300,13 @@ function respond (ctx) {
|
|
|
308
300
|
}
|
|
309
301
|
|
|
310
302
|
// responses
|
|
303
|
+
|
|
311
304
|
if (Buffer.isBuffer(body)) return res.end(body)
|
|
312
305
|
if (typeof body === 'string') return res.end(body)
|
|
313
306
|
if (body instanceof Stream) return body.pipe(res)
|
|
307
|
+
if (body instanceof Blob) return Stream.Readable.from(body.stream()).pipe(res)
|
|
308
|
+
if (body instanceof ReadableStream) return Stream.Readable.from(body).pipe(res)
|
|
309
|
+
if (body instanceof Response) return Stream.Readable.from(body?.body || '').pipe(res)
|
|
314
310
|
|
|
315
311
|
// body: json
|
|
316
312
|
body = JSON.stringify(body)
|
package/lib/context.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
'use strict'
|
|
3
2
|
|
|
4
3
|
/**
|
|
@@ -155,10 +154,10 @@ const proto = module.exports = {
|
|
|
155
154
|
if (err.code === 'ENOENT') statusCode = 404
|
|
156
155
|
|
|
157
156
|
// default to 500
|
|
158
|
-
if (typeof statusCode !== 'number' || !statuses[statusCode]) statusCode = 500
|
|
157
|
+
if (typeof statusCode !== 'number' || !statuses.message[statusCode]) statusCode = 500
|
|
159
158
|
|
|
160
159
|
// respond
|
|
161
|
-
const code = statuses[statusCode]
|
|
160
|
+
const code = statuses.message[statusCode]
|
|
162
161
|
const msg = err.expose ? err.message : code
|
|
163
162
|
this.status = err.status = statusCode
|
|
164
163
|
this.length = Buffer.byteLength(msg)
|
|
@@ -205,6 +204,7 @@ delegate(proto, 'response')
|
|
|
205
204
|
.method('set')
|
|
206
205
|
.method('append')
|
|
207
206
|
.method('flushHeaders')
|
|
207
|
+
.method('back')
|
|
208
208
|
.access('status')
|
|
209
209
|
.access('message')
|
|
210
210
|
.access('body')
|
package/lib/only.js
ADDED
package/lib/request.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
'use strict'
|
|
3
2
|
|
|
4
3
|
/**
|
|
@@ -11,10 +10,11 @@ const accepts = require('accepts')
|
|
|
11
10
|
const contentType = require('content-type')
|
|
12
11
|
const stringify = require('url').format
|
|
13
12
|
const parse = require('parseurl')
|
|
14
|
-
const
|
|
13
|
+
const sp = require('./search-params.js')
|
|
14
|
+
|
|
15
15
|
const typeis = require('type-is')
|
|
16
16
|
const fresh = require('fresh')
|
|
17
|
-
const only = require('only')
|
|
17
|
+
const only = require('./only.js')
|
|
18
18
|
const util = require('util')
|
|
19
19
|
|
|
20
20
|
const IP = Symbol('context#ip')
|
|
@@ -172,7 +172,7 @@ module.exports = {
|
|
|
172
172
|
get query () {
|
|
173
173
|
const str = this.querystring
|
|
174
174
|
const c = this._querycache = this._querycache || {}
|
|
175
|
-
return c[str] || (c[str] =
|
|
175
|
+
return c[str] || (c[str] = sp.parse(str))
|
|
176
176
|
},
|
|
177
177
|
|
|
178
178
|
/**
|
|
@@ -183,7 +183,7 @@ module.exports = {
|
|
|
183
183
|
*/
|
|
184
184
|
|
|
185
185
|
set query (obj) {
|
|
186
|
-
this.querystring =
|
|
186
|
+
this.querystring = sp.stringify(obj)
|
|
187
187
|
},
|
|
188
188
|
|
|
189
189
|
/**
|
|
@@ -211,7 +211,6 @@ module.exports = {
|
|
|
211
211
|
|
|
212
212
|
url.search = str
|
|
213
213
|
url.path = null
|
|
214
|
-
|
|
215
214
|
this.url = stringify(url)
|
|
216
215
|
},
|
|
217
216
|
|
|
@@ -257,7 +256,7 @@ module.exports = {
|
|
|
257
256
|
if (!host) host = this.get('Host')
|
|
258
257
|
}
|
|
259
258
|
if (!host) return ''
|
|
260
|
-
return host
|
|
259
|
+
return splitCommaSeparatedValues(host, 1)[0]
|
|
261
260
|
},
|
|
262
261
|
|
|
263
262
|
/**
|
|
@@ -376,7 +375,7 @@ module.exports = {
|
|
|
376
375
|
/**
|
|
377
376
|
* Return parsed Content-Length when present.
|
|
378
377
|
*
|
|
379
|
-
* @return {Number}
|
|
378
|
+
* @return {Number|void}
|
|
380
379
|
* @api public
|
|
381
380
|
*/
|
|
382
381
|
|
|
@@ -402,7 +401,7 @@ module.exports = {
|
|
|
402
401
|
if (this.socket.encrypted) return 'https'
|
|
403
402
|
if (!this.app.proxy) return 'http'
|
|
404
403
|
const proto = this.get('X-Forwarded-Proto')
|
|
405
|
-
return proto ? proto
|
|
404
|
+
return proto ? splitCommaSeparatedValues(proto, 1)[0] : 'http'
|
|
406
405
|
},
|
|
407
406
|
|
|
408
407
|
/**
|
|
@@ -434,7 +433,7 @@ module.exports = {
|
|
|
434
433
|
const proxy = this.app.proxy
|
|
435
434
|
const val = this.get(this.app.proxyIpHeader)
|
|
436
435
|
let ips = proxy && val
|
|
437
|
-
? val
|
|
436
|
+
? splitCommaSeparatedValues(val)
|
|
438
437
|
: []
|
|
439
438
|
if (this.app.maxIpsCount > 0) {
|
|
440
439
|
ips = ips.slice(-this.app.maxIpsCount)
|
|
@@ -503,7 +502,7 @@ module.exports = {
|
|
|
503
502
|
/**
|
|
504
503
|
* Set accept object.
|
|
505
504
|
*
|
|
506
|
-
* @param {Object}
|
|
505
|
+
* @param {Object} obj
|
|
507
506
|
* @api private
|
|
508
507
|
*/
|
|
509
508
|
|
|
@@ -724,3 +723,15 @@ module.exports = {
|
|
|
724
723
|
if (util.inspect.custom) {
|
|
725
724
|
module.exports[util.inspect.custom] = module.exports.inspect
|
|
726
725
|
}
|
|
726
|
+
|
|
727
|
+
/**
|
|
728
|
+
* Split a comma-separated value string into an array of values, with an optional limit.
|
|
729
|
+
* All the values are trimmed of whitespace.
|
|
730
|
+
*
|
|
731
|
+
* @param {string} value - The comma-separated value string to split.
|
|
732
|
+
* @param {number} [limit] - The maximum number of values to return.
|
|
733
|
+
* @returns {string[]} An array of values from the comma-separated string.
|
|
734
|
+
*/
|
|
735
|
+
function splitCommaSeparatedValues(value, limit) {
|
|
736
|
+
return value.split(',', limit).map(v => v.trim());
|
|
737
|
+
}
|
package/lib/response.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
'use strict'
|
|
3
2
|
|
|
4
3
|
/**
|
|
@@ -15,10 +14,11 @@ const destroy = require('destroy')
|
|
|
15
14
|
const assert = require('assert')
|
|
16
15
|
const extname = require('path').extname
|
|
17
16
|
const vary = require('vary')
|
|
18
|
-
const only = require('only')
|
|
17
|
+
const only = require('./only.js')
|
|
19
18
|
const util = require('util')
|
|
20
19
|
const encodeUrl = require('encodeurl')
|
|
21
20
|
const Stream = require('stream')
|
|
21
|
+
const deprecate = require('depd')('koa')
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* Prototype.
|
|
@@ -87,7 +87,7 @@ module.exports = {
|
|
|
87
87
|
assert(code >= 100 && code <= 999, `invalid status code: ${code}`)
|
|
88
88
|
this._explicitStatus = true
|
|
89
89
|
this.res.statusCode = code
|
|
90
|
-
if (this.req.httpVersionMajor < 2) this.res.statusMessage = statuses[code]
|
|
90
|
+
if (this.req.httpVersionMajor < 2) this.res.statusMessage = statuses.message[code]
|
|
91
91
|
if (this.body && statuses.empty[code]) this.body = null
|
|
92
92
|
},
|
|
93
93
|
|
|
@@ -99,7 +99,7 @@ module.exports = {
|
|
|
99
99
|
*/
|
|
100
100
|
|
|
101
101
|
get message () {
|
|
102
|
-
return this.res.statusMessage || statuses[this.status]
|
|
102
|
+
return this.res.statusMessage || statuses.message[this.status]
|
|
103
103
|
},
|
|
104
104
|
|
|
105
105
|
/**
|
|
@@ -127,15 +127,15 @@ module.exports = {
|
|
|
127
127
|
/**
|
|
128
128
|
* Set response body.
|
|
129
129
|
*
|
|
130
|
-
* @param {String|Buffer|Object|Stream} val
|
|
130
|
+
* @param {String|Buffer|Object|Stream|ReadableStream|Blob|Response} val
|
|
131
131
|
* @api public
|
|
132
132
|
*/
|
|
133
133
|
|
|
134
134
|
set body (val) {
|
|
135
135
|
const original = this._body
|
|
136
136
|
this._body = val
|
|
137
|
-
|
|
138
137
|
// no content
|
|
138
|
+
|
|
139
139
|
if (val == null) {
|
|
140
140
|
if (!statuses.empty[this.status]) {
|
|
141
141
|
if (this.type === 'application/json') {
|
|
@@ -184,6 +184,31 @@ module.exports = {
|
|
|
184
184
|
return
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
+
// ReadableStream
|
|
188
|
+
if (val instanceof ReadableStream) {
|
|
189
|
+
if (setType) this.type = 'bin'
|
|
190
|
+
return
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// blob
|
|
194
|
+
if (val instanceof Blob) {
|
|
195
|
+
if (setType) this.type = 'bin'
|
|
196
|
+
this.length = val.size
|
|
197
|
+
return
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// Response
|
|
201
|
+
if (val instanceof Response) {
|
|
202
|
+
this.status = val.status
|
|
203
|
+
if (setType) this.type = 'bin'
|
|
204
|
+
const headers = val.headers
|
|
205
|
+
for (const key of headers.keys()) {
|
|
206
|
+
this.set(key, headers.get(key))
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return
|
|
210
|
+
}
|
|
211
|
+
|
|
187
212
|
// json
|
|
188
213
|
this.remove('Content-Length')
|
|
189
214
|
this.type = 'json'
|
|
@@ -235,7 +260,7 @@ module.exports = {
|
|
|
235
260
|
/**
|
|
236
261
|
* Vary on `field`.
|
|
237
262
|
*
|
|
238
|
-
* @param {String} field
|
|
263
|
+
* @param {String|String[]} field
|
|
239
264
|
* @api public
|
|
240
265
|
*/
|
|
241
266
|
|
|
@@ -266,7 +291,15 @@ module.exports = {
|
|
|
266
291
|
|
|
267
292
|
redirect (url, alt) {
|
|
268
293
|
// location
|
|
269
|
-
if (url === 'back')
|
|
294
|
+
if (url === 'back') {
|
|
295
|
+
deprecate('Special-cased string "back" through redirect will be removed in v3, ' +
|
|
296
|
+
'consider migrating usage to ctx.back() instead.')
|
|
297
|
+
url = this.ctx.get('Referrer') || alt || '/'
|
|
298
|
+
}
|
|
299
|
+
if (/^https?:\/\//i.test(url)) {
|
|
300
|
+
// formatting url again avoid security escapes
|
|
301
|
+
url = new URL(url).toString()
|
|
302
|
+
}
|
|
270
303
|
this.set('Location', encodeUrl(url))
|
|
271
304
|
|
|
272
305
|
// status
|
|
@@ -285,10 +318,31 @@ module.exports = {
|
|
|
285
318
|
this.body = `Redirecting to ${url}.`
|
|
286
319
|
},
|
|
287
320
|
|
|
321
|
+
/**
|
|
322
|
+
* Perform a special-cased "back" to provide Referrer support.
|
|
323
|
+
* When Referrer is not present, `alt` or "/" is used.
|
|
324
|
+
*
|
|
325
|
+
* Examples:
|
|
326
|
+
*
|
|
327
|
+
* ctx.back()
|
|
328
|
+
* ctx.back('/index.html')
|
|
329
|
+
*
|
|
330
|
+
* @param {String} [alt]
|
|
331
|
+
* @api public
|
|
332
|
+
*/
|
|
333
|
+
|
|
334
|
+
back (alt) {
|
|
335
|
+
const url = this.ctx.get('Referrer') || alt || '/'
|
|
336
|
+
this.redirect(url)
|
|
337
|
+
},
|
|
338
|
+
|
|
288
339
|
/**
|
|
289
340
|
* Set Content-Disposition header to "attachment" with optional `filename`.
|
|
290
341
|
*
|
|
291
|
-
* @param {String} filename
|
|
342
|
+
* @param {String} [filename]
|
|
343
|
+
* @param {object} [options]
|
|
344
|
+
* @param {string} [options.type=attachment]
|
|
345
|
+
* @param {string|boolean} [options.fallback=true]
|
|
292
346
|
* @api public
|
|
293
347
|
*/
|
|
294
348
|
|
|
@@ -328,7 +382,7 @@ module.exports = {
|
|
|
328
382
|
* this.response.lastModified = new Date();
|
|
329
383
|
* this.response.lastModified = '2013-09-13';
|
|
330
384
|
*
|
|
331
|
-
* @param {String|Date}
|
|
385
|
+
* @param {String|Date} val
|
|
332
386
|
* @api public
|
|
333
387
|
*/
|
|
334
388
|
|
|
@@ -357,7 +411,7 @@ module.exports = {
|
|
|
357
411
|
* this.response.etag = '"md5hashsum"';
|
|
358
412
|
* this.response.etag = 'W/"123456789"';
|
|
359
413
|
*
|
|
360
|
-
* @param {String}
|
|
414
|
+
* @param {String} val
|
|
361
415
|
* @api public
|
|
362
416
|
*/
|
|
363
417
|
|
|
@@ -460,7 +514,7 @@ module.exports = {
|
|
|
460
514
|
* this.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });
|
|
461
515
|
*
|
|
462
516
|
* @param {String|Object|Array} field
|
|
463
|
-
* @param {
|
|
517
|
+
* @param {*} val
|
|
464
518
|
* @api public
|
|
465
519
|
*/
|
|
466
520
|
|
|
@@ -490,7 +544,7 @@ module.exports = {
|
|
|
490
544
|
* ```
|
|
491
545
|
*
|
|
492
546
|
* @param {String} field
|
|
493
|
-
* @param {
|
|
547
|
+
* @param {*} val
|
|
494
548
|
* @api public
|
|
495
549
|
*/
|
|
496
550
|
|
|
@@ -509,7 +563,7 @@ module.exports = {
|
|
|
509
563
|
/**
|
|
510
564
|
* Remove header `field`.
|
|
511
565
|
*
|
|
512
|
-
* @param {String}
|
|
566
|
+
* @param {String} field
|
|
513
567
|
* @api public
|
|
514
568
|
*/
|
|
515
569
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const URLSearchParams = require('url').URLSearchParams
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
stringify: (obj) => {
|
|
5
|
+
const searchParams = new URLSearchParams()
|
|
6
|
+
const addKey = (k, v, params) => {
|
|
7
|
+
const val = typeof v === 'string' || typeof v === 'number' ? v : ''
|
|
8
|
+
params.append(k, val)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
12
|
+
if (Array.isArray(value)) {
|
|
13
|
+
const lgth = value.length
|
|
14
|
+
for (let i = 0; i < lgth; i++) {
|
|
15
|
+
addKey(key, value[i], searchParams)
|
|
16
|
+
}
|
|
17
|
+
} else {
|
|
18
|
+
addKey(key, value, searchParams)
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return searchParams.toString()
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
parse: (str) => {
|
|
25
|
+
const searchParams = new URLSearchParams(str)
|
|
26
|
+
const obj = {}
|
|
27
|
+
for (const key of searchParams.keys()) {
|
|
28
|
+
const values = searchParams.getAll(key)
|
|
29
|
+
obj[key] = values.length <= 1 ? values[0] : values
|
|
30
|
+
}
|
|
31
|
+
return obj
|
|
32
|
+
}
|
|
33
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "koa",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.3",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"tag": "experimental"
|
|
6
6
|
},
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"exports": {
|
|
10
10
|
".": {
|
|
11
11
|
"require": "./lib/application.js",
|
|
12
|
-
"import": "./dist/koa.mjs"
|
|
12
|
+
"import": "./dist/koa.mjs",
|
|
13
|
+
"default": "./dist/koa.mjs"
|
|
13
14
|
},
|
|
14
15
|
"./*": "./*.js",
|
|
15
16
|
"./*.js": "./*.js",
|
|
@@ -17,8 +18,10 @@
|
|
|
17
18
|
"./package.json": "./package.json"
|
|
18
19
|
},
|
|
19
20
|
"scripts": {
|
|
20
|
-
"test": "
|
|
21
|
-
"
|
|
21
|
+
"test": "node --test",
|
|
22
|
+
"test:coverage": "node --test --experimental-test-coverage",
|
|
23
|
+
"lint": "standard",
|
|
24
|
+
"lint:pretty": "standard | snazzy",
|
|
22
25
|
"authors": "git log --format='%aN <%aE>' | sort -u > AUTHORS",
|
|
23
26
|
"build": "gen-esm-wrapper . ./dist/koa.mjs",
|
|
24
27
|
"prepare": "npm run build"
|
|
@@ -39,42 +42,33 @@
|
|
|
39
42
|
"cache-content-type": "^1.0.0",
|
|
40
43
|
"content-disposition": "~0.5.2",
|
|
41
44
|
"content-type": "^1.0.4",
|
|
42
|
-
"cookies": "~0.
|
|
45
|
+
"cookies": "~0.9.1",
|
|
43
46
|
"debug": "^4.3.2",
|
|
44
47
|
"delegates": "^1.0.0",
|
|
45
48
|
"destroy": "^1.0.4",
|
|
46
|
-
"encodeurl": "^
|
|
49
|
+
"encodeurl": "^2.0.0",
|
|
47
50
|
"escape-html": "^1.0.3",
|
|
48
51
|
"fresh": "~0.5.2",
|
|
49
52
|
"http-assert": "^1.3.0",
|
|
50
|
-
"http-errors": "^
|
|
53
|
+
"http-errors": "^2.0.0",
|
|
51
54
|
"koa-compose": "^4.1.0",
|
|
52
55
|
"on-finished": "^2.3.0",
|
|
53
|
-
"only": "~0.0.2",
|
|
54
56
|
"parseurl": "^1.3.2",
|
|
55
|
-
"statuses": "^
|
|
57
|
+
"statuses": "^2.0.1",
|
|
56
58
|
"type-is": "^1.6.16",
|
|
57
59
|
"vary": "^1.1.2"
|
|
58
60
|
},
|
|
59
61
|
"devDependencies": {
|
|
60
|
-
"eslint": "^7.32.0",
|
|
61
|
-
"eslint-config-standard": "^16.0.3",
|
|
62
|
-
"eslint-plugin-import": "^2.18.2",
|
|
63
|
-
"eslint-plugin-node": "^11.1.0",
|
|
64
|
-
"eslint-plugin-promise": "^5.1.0",
|
|
65
|
-
"eslint-plugin-standard": "^5.0.0",
|
|
66
62
|
"gen-esm-wrapper": "^1.0.6",
|
|
67
|
-
"
|
|
68
|
-
"
|
|
63
|
+
"snazzy": "^9.0.0",
|
|
64
|
+
"standard": "^17.1.0",
|
|
65
|
+
"supertest": "^7.0.0"
|
|
69
66
|
},
|
|
70
67
|
"engines": {
|
|
71
|
-
"node": ">=
|
|
68
|
+
"node": ">= 18"
|
|
72
69
|
},
|
|
73
70
|
"files": [
|
|
74
71
|
"dist",
|
|
75
72
|
"lib"
|
|
76
|
-
]
|
|
77
|
-
"jest": {
|
|
78
|
-
"testEnvironment": "node"
|
|
79
|
-
}
|
|
73
|
+
]
|
|
80
74
|
}
|
package/History.md
DELETED
|
@@ -1,674 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
3.0.0-alpha.1 / 2023-04-12
|
|
3
|
-
==================
|
|
4
|
-
|
|
5
|
-
**fixes**
|
|
6
|
-
* [[`e98b8d1`](http://github.com/koajs/koa/commit/e98b8d1918376dc2957aa62906bf5893bef66c4c)] - fix: can not get currentContext in error handler (#1758) (Gxkl <<gxkl203@gmail.com>>)
|
|
7
|
-
|
|
8
|
-
3.0.0-alpha.0 / 2023-01-02
|
|
9
|
-
==================
|
|
10
|
-
|
|
11
|
-
## Breaking Changes
|
|
12
|
-
|
|
13
|
-
- Supports node@12+ only.
|
|
14
|
-
- Removes generator deprecation messages.
|
|
15
|
-
Generators are no longer supported.
|
|
16
|
-
Koa no longer asserts if generators are used.
|
|
17
|
-
- Set `content-length: 0` if body is explicitly set to `null` @ognjenjevremovic #1528
|
|
18
|
-
|
|
19
|
-
## Features
|
|
20
|
-
|
|
21
|
-
- Use asyncLocalStorage to get current context from app, e.g.: `const ctx = app.currentContext`.
|
|
22
|
-
|
|
23
|
-
## Fixes
|
|
24
|
-
|
|
25
|
-
- fix: Do not response Content-Length if Transfer-Encoding is defined #1562 @charlyzeng
|
|
26
|
-
- fix: Set body to `null` if `ctx.type = json` and `ctx.body = null` #1059 @likegun
|
|
27
|
-
|
|
28
|
-
2.13.1 / 2021-01-04
|
|
29
|
-
==================
|
|
30
|
-
|
|
31
|
-
**fixes**
|
|
32
|
-
* [[`b5472f4`](http://github.com/koajs/koa/commit/b5472f4cbb87349becae36b4a9ad5f76a825abb8)] - fix: make ESM transpiled CommonJS play nice for TS folks, fix #1513 (#1518) (miwnwski <<m@iwnw.ski>>)
|
|
33
|
-
* [[`68d97d6`](http://github.com/koajs/koa/commit/68d97d69e4536065504bf9ef1e348a66b3f35709)] - fix: fixed order of vulnerability disclosure addresses (niftylettuce <<niftylettuce@gmail.com>>)
|
|
34
|
-
|
|
35
|
-
**others**
|
|
36
|
-
* [[`b4398f5`](http://github.com/koajs/koa/commit/b4398f5d68f9546167419f394a686afdcb5e10e2)] - correct verb tense in doc (#1512) (Matan Shavit <<71092861+matanshavit@users.noreply.github.com>>)
|
|
37
|
-
* [[`39e1a5a`](http://github.com/koajs/koa/commit/39e1a5a380aa2bbc4e2d164e8e4bf37cfd512516)] - fixed multiple grammatical errors in docs. (#1497) (Hridayesh Sharma <<vyasriday7@gmail.com>>)
|
|
38
|
-
* [[`aeb5d19`](http://github.com/koajs/koa/commit/aeb5d1984dcc5f8e3386f8f9724807ae6f3aa1c4)] - docs: added niftylettuce@gmail.com to vulnerability disclosure (niftylettuce <<niftylettuce@gmail.com>>)
|
|
39
|
-
* [[`6e1093b`](http://github.com/koajs/koa/commit/6e1093be27b41135c8e67fce108743d54e9cab67)] - docs: remove babel from readme (#1494) (miwnwski <<m@iwnw.ski>>)
|
|
40
|
-
* [[`38cb591`](http://github.com/koajs/koa/commit/38cb591254ff5f65a04e8fb57be293afe697c46e)] - docs: update specific for auto response status (AlbertAZ1992 <<ziyuximing@163.com>>)
|
|
41
|
-
* [[`2224cd9`](http://github.com/koajs/koa/commit/2224cd9b6a648e7ac2eb27eac332e7d6de7db26c)] - docs: remove babel ref. (#1488) (Imed Jaberi <<imed_jebari@hotmail.fr>>)
|
|
42
|
-
* [[`d51f983`](http://github.com/koajs/koa/commit/d51f98328c3b84493cc6bda0732aabb69e20e3a1)] - docs: fix assert example for response (#1489) (Imed Jaberi <<imed_jebari@hotmail.fr>>)
|
|
43
|
-
* [[`f8b49b8`](http://github.com/koajs/koa/commit/f8b49b859363ad6c3d9ea5c11ee62341407ceafd)] - chore: fix grammatical and spelling errors in comments and tests (#1490) (Matt Kubej <<mkubej@gmail.com>>)
|
|
44
|
-
* [[`d1c9263`](http://github.com/koajs/koa/commit/d1c92638c95d799df2fdff5576b96fc43a62813f)] - deps: update depd >> v2.0.0 (#1482) (imed jaberi <<imed_jebari@hotmail.fr>>)
|
|
45
|
-
|
|
46
|
-
2.13.0 / 2020-06-21
|
|
47
|
-
==================
|
|
48
|
-
|
|
49
|
-
**features**
|
|
50
|
-
* [[`bbcde76`](http://github.com/koajs/koa/commit/bbcde76f5cb5b67bbcd3201791cf0ef648fd3a8b)] - feat: support esm (#1474) (ZYSzys <<zhangyongsheng@youzan.com>>)
|
|
51
|
-
|
|
52
|
-
**others**
|
|
53
|
-
* [[`20e58cf`](http://github.com/koajs/koa/commit/20e58cf3e4f20fc5d5886df1d0ac6dd8c33bd202)] - test: imporve coverage to 100% (dead-horse <<dead_horse@qq.com>>)
|
|
54
|
-
* [[`4a40d63`](http://github.com/koajs/koa/commit/4a40d633c4b4a203c6656078f9952ccef65c5875)] - build: use prepare instead of prepublish (dead-horse <<dead_horse@qq.com>>)
|
|
55
|
-
* [[`226ba8c`](http://github.com/koajs/koa/commit/226ba8c8e81e83da48e7bf137be3f146d03f40b8)] - build: use prepublish instead of prepack (dead-horse <<dead_horse@qq.com>>)
|
|
56
|
-
|
|
57
|
-
2.12.1 / 2020-06-13
|
|
58
|
-
==================
|
|
59
|
-
|
|
60
|
-
**fixes**
|
|
61
|
-
* [[`e2030c7`](http://github.com/koajs/koa/commit/e2030c7249c7ae24e28158d8eae405a02fefc9f8)] - fix: Improve checks for Error in onerror handlers (#1468) (Julien Wajsberg <<felash@gmail.com>>)
|
|
62
|
-
|
|
63
|
-
**others**
|
|
64
|
-
* [[`5208c5e`](http://github.com/koajs/koa/commit/5208c5e15d35b3653fce6b8ed68d09865abea843)] - chore: Use single console.error() statement in error handler (#1471) (Mike Vosseller <<michael.vosseller@gmail.com>>)
|
|
65
|
-
|
|
66
|
-
2.12.0 / 2020-05-18
|
|
67
|
-
==================
|
|
68
|
-
|
|
69
|
-
**features**
|
|
70
|
-
* [[`0d2f421`](http://github.com/koajs/koa/commit/0d2f421c265350d3d84e1bc261572954479f27d3)] - feat: error handler treat err.statusCode as the same as err.status (#1460) (Vijay Krishnavanshi <<vijaykrishnavanshi@gmail.com>>)
|
|
71
|
-
* [[`8d52105`](http://github.com/koajs/koa/commit/8d52105a34234be9e771ff3b76b43e4e30328943)] - feat: allow bodyless responses for non empty status codes (#1447) (ejose19 <<8742215+ejose19@users.noreply.github.com>>)
|
|
72
|
-
|
|
73
|
-
**others**
|
|
74
|
-
* [[`faeaff5`](http://github.com/koajs/koa/commit/faeaff5c149a81a188ab8e5af0b994029e45acbb)] - fox: remove `error-inject` and fix error handling (#1409) (Konstantin Vyatkin <<tino@vtkn.io>>)
|
|
75
|
-
* [[`f7c732f`](http://github.com/koajs/koa/commit/f7c732fd06f724505e9090add4d977e667da55a8)] - docs: fixed incorrect onerror example (#1459) (Paul Annekov <<paul.annekov@gmail.com>>)
|
|
76
|
-
* [[`143d8f7`](http://github.com/koajs/koa/commit/143d8f72f2a232b4c97eac00e7811015911e4f7c)] - Always use strict equality. (#1225) (Yazan Medanat <<medanat@gmail.com>>)
|
|
77
|
-
* [[`6b6b0dd`](http://github.com/koajs/koa/commit/6b6b0ddf7aff073e65493c6efaffab8331c0331c)] - docs(api): add app.use chainability note (#1449) (Zac Anger <<zac@zacanger.com>>)
|
|
78
|
-
* [[`8ddab48`](http://github.com/koajs/koa/commit/8ddab48cbdbca1e6d1cc8c3ddae45491db524d51)] - docs: Document response status with empty body (#1445) (Marc-Aurèle DARCHE <<152407+madarche@users.noreply.github.com>>)
|
|
79
|
-
* [[`7deedb2`](http://github.com/koajs/koa/commit/7deedb235274223f1b9da46dee296545b23598de)] - docs: Updating context.md with the latest cookies opts (#1433) (Brad Ito <<phlogisticfugu@users.noreply.github.com>>)
|
|
80
|
-
* [[`3e97a10`](http://github.com/koajs/koa/commit/3e97a106bb846d9337737011bb85149ddd797229)] - docs(links): remove Google+ link (#1439) (laffachan <<45162759+laffachan@users.noreply.github.com>>)
|
|
81
|
-
* [[`eda2760`](http://github.com/koajs/koa/commit/eda27608f7d39ede86d7b402aae64b1867ce31c6)] - build: Drop unused Travis sudo: false directive (#1416) (Olle Jonsson <<olle.jonsson@gmail.com>>)
|
|
82
|
-
|
|
83
|
-
2.11.0 / 2019-10-28
|
|
84
|
-
==================
|
|
85
|
-
|
|
86
|
-
**features**
|
|
87
|
-
* [[`422e539`](http://github.com/koajs/koa/commit/422e539e8989e65ba43ecc39ddbaa3c4f755d465)] - feat: support app.proxyIPHeader and app.maxIpsCount to make ctx.ips more security (Yiyu He <<dead_horse@qq.com>>)
|
|
88
|
-
* [[`d48d88e`](http://github.com/koajs/koa/commit/d48d88ee17b780c02123e6d657274cab456e943e)] - feat: implement response.has (#1397) (Konstantin Vyatkin <<tino@vtkn.io>>)
|
|
89
|
-
|
|
90
|
-
**others**
|
|
91
|
-
* [[`4dc56f6`](http://github.com/koajs/koa/commit/4dc56f6d04e8f5fe12ba53a8a776653b3d7b60ed)] - chore: update ESLint and plugins/configs (#1407) (Konstantin Vyatkin <<tino@vtkn.io>>)
|
|
92
|
-
* [[`be7d334`](http://github.com/koajs/koa/commit/be7d334778481639294cdf87f5c359a230aeb65b)] - chore: removes code duplication at handling HEAD method (#1400) (Konstantin Vyatkin <<tino@vtkn.io>>)
|
|
93
|
-
* [[`f155785`](http://github.com/koajs/koa/commit/f155785e2bb42b5ddf0a8156401c6dafdf57ba8b)] - chore: support `writableEnded` (#1402) (Konstantin Vyatkin <<tino@vtkn.io>>)
|
|
94
|
-
* [[`b968688`](http://github.com/koajs/koa/commit/b968688afe2c727ae141f50aa983d481dbc1dbbf)] - chore: add FUNDING.yml (#1403) (Konstantin Vyatkin <<tino@vtkn.io>>)
|
|
95
|
-
* [[`4f96829`](http://github.com/koajs/koa/commit/4f968298f97394e488297ec32c8e927a3a322076)] - chore: remove isJSON in res.length (#1399) (Konstantin Vyatkin <<tino@vtkn.io>>)
|
|
96
|
-
* [[`8be5626`](http://github.com/koajs/koa/commit/8be5626bbb54e6c899a1b71d22411709126d9fea)] - build: enable codecov partial coverage and use bash uploader (#1396) (Konstantin Vyatkin <<tino@vtkn.io>>)
|
|
97
|
-
* [[`ef5c43b`](http://github.com/koajs/koa/commit/ef5c43bcbcf31819e032c3b7ae7654b7f8e9358b)] - chore: use rest params (#1393) (Konstantin Vyatkin <<tino@vtkn.io>>)
|
|
98
|
-
|
|
99
|
-
2.10.0 / 2019-10-12
|
|
100
|
-
==================
|
|
101
|
-
|
|
102
|
-
**features**
|
|
103
|
-
* [[`d7f7f77`](http://github.com/koajs/koa/commit/d7f7f77689e2eaef050686be2bdf3e72881a79ac)] - feat: support sameSite=none cookies (bump cookies dependency) (#1390) (Filip Skokan <<panva.ip@gmail.com>>)
|
|
104
|
-
|
|
105
|
-
2.9.0 / 2019-10-12
|
|
106
|
-
==================
|
|
107
|
-
|
|
108
|
-
**features**
|
|
109
|
-
* [[`2d1c598`](http://github.com/koajs/koa/commit/2d1c5981869e0fe6f5bc71b5c5582accfd125cc6)] - feat: export HttpError from http-errors library (Micheal Hill <<micheal.hill@trunkplatform.com>>)
|
|
110
|
-
|
|
111
|
-
**others**
|
|
112
|
-
* [[`cf70dbc`](http://github.com/koajs/koa/commit/cf70dbc6d2ba62bf1eb12b563dd5ecd27af6e2be)] - Chore: Use https in readme (#1389) (谭九鼎 <<109224573@qq.com>>)
|
|
113
|
-
|
|
114
|
-
2.8.2 / 2019-09-28
|
|
115
|
-
==================
|
|
116
|
-
|
|
117
|
-
**fixes**
|
|
118
|
-
* [[`54e8fab`](http://github.com/koajs/koa/commit/54e8fab3e3d907bbb264caf3e28a24773d0d6fdb)] - fix: encode redirect url if not already encoded (#1384) (fengmk2 <<fengmk2@gmail.com>>)
|
|
119
|
-
|
|
120
|
-
**others**
|
|
121
|
-
* [[`817b498`](http://github.com/koajs/koa/commit/817b49830571b45a8aec6b1fc1525434f5798c58)] - test: fix body test (#1375) (Robert Nagy <<ronagy@icloud.com>>)
|
|
122
|
-
* [[`f75d445`](http://github.com/koajs/koa/commit/f75d4455359ecdf30eeb676e2c7f31d4cf7b42ed)] - test: fix end after end (#1374) (Robert Nagy <<ronagy@icloud.com>>)
|
|
123
|
-
|
|
124
|
-
2.8.1 / 2019-08-19
|
|
125
|
-
==================
|
|
126
|
-
|
|
127
|
-
**fixes**
|
|
128
|
-
* [[`287e589`](http://github.com/koajs/koa/commit/287e589ac773d3738b2aa7d40e0b6d43dde5261b)] - fix: make options more compatibility (dead-horse <<dead_horse@qq.com>>)
|
|
129
|
-
|
|
130
|
-
2.8.0 / 2019-08-19
|
|
131
|
-
==================
|
|
132
|
-
|
|
133
|
-
**features**
|
|
134
|
-
* [[`5afff89`](http://github.com/koajs/koa/commit/5afff89eca0efe7081309dc2d123309e825df221)] - feat: accept options in the Application constructor (#1372) (Jake <<djakelambert@gmail.com>>)
|
|
135
|
-
|
|
136
|
-
**fixes**
|
|
137
|
-
* [[`ff70bdc`](http://github.com/koajs/koa/commit/ff70bdc75a30a37f63fc1f7d8cbae3204df3d982)] - fix: typo on document (#1355) (Jeff <<jeff.tian@outlook.com>>)
|
|
138
|
-
|
|
139
|
-
**others**
|
|
140
|
-
* [[`3b23865`](http://github.com/koajs/koa/commit/3b23865340cfba075f61f7dba0ea31fcc27260ec)] - docs: parameter of request.get is case-insensitive (#1373) (Gunnlaugur Thor Briem <<gunnlaugur@gmail.com>>)
|
|
141
|
-
* [[`a245d18`](http://github.com/koajs/koa/commit/a245d18a131341feec4f87659746954e78cae780)] - docs: Update response.socket (#1357) (Jeff <<jeff.tian@outlook.com>>)
|
|
142
|
-
* [[`d1d65dd`](http://github.com/koajs/koa/commit/d1d65dd29d7bbaf9ea42eaa5fcb0da3fb4df98e9)] - chore(deps): install egg-bin, mm as devDeps not deps (#1366) (Edvard Chen <<pigeon73101@gmail.com>>)
|
|
143
|
-
* [[`2c86b10`](http://github.com/koajs/koa/commit/2c86b10feafd868ebd071dda3a222e6f51972b5d)] - test: remove jest and use egg-bin(mocha) (#1363) (Yiyu He <<dead_horse@qq.com>>)
|
|
144
|
-
* [[`219bf22`](http://github.com/koajs/koa/commit/219bf22237b11bc375e2e110b93db512f1acfdd4)] - docs(context): update link (#1354) (Peng Jie <<bivinity.pengzjie@gmail.com>>)
|
|
145
|
-
* [[`52a6737`](http://github.com/koajs/koa/commit/52a673703a87a93c0f6a8552e6bd73caba66d2eb)] - chore: ignore Intellij IDEA project files (#1361) (Imon-Haque <<38266345+Imon-Haque@users.noreply.github.com>>)
|
|
146
|
-
* [[`b9e3546`](http://github.com/koajs/koa/commit/b9e35469d3bbd0a1ee92e0a815ce2512904d4a18)] - docs(api): fix keygrip link (#1350) (Peng Jie <<bivinity.pengzjie@gmail.com>>)
|
|
147
|
-
* [[`d4bdb5e`](http://github.com/koajs/koa/commit/d4bdb5ed9e2fe06ec44698b66c029f624135a0ab)] - chore: update eslint and fix lint errors (dead-horse <<dead_horse@qq.com>>)
|
|
148
|
-
* [[`12960c4`](http://github.com/koajs/koa/commit/12960c437cc25c53e682cfe5bff06d74a5bb1eb9)] - build: test on 8/10/12 (dead-horse <<dead_horse@qq.com>>)
|
|
149
|
-
* [[`00e8f7a`](http://github.com/koajs/koa/commit/00e8f7a1b7603aabdb7fb3567f485cb1c2076702)] - docs: ctx.type aliases ctx.response, not ctx.request (#1343) (Alex Berk <<berkalexanderc@gmail.com>>)
|
|
150
|
-
* [[`62f29eb`](http://github.com/koajs/koa/commit/62f29eb0c4dee01170a5511615e5bcc9faca26ca)] - docs(context): update cookies link (#1348) (Peng Jie <<dean.leehom@gmail.com>>)
|
|
151
|
-
* [[`b7fc526`](http://github.com/koajs/koa/commit/b7fc526ea49894f366153bd32997e02568c0b8a6)] - docs: fix typo in cookie path default value docs (#1340) (Igor Adamenko <<igoradamenko@users.noreply.github.com>>)
|
|
152
|
-
* [[`23f7f54`](http://github.com/koajs/koa/commit/23f7f545abfe1fb6499cd61cc8ff41fd86cef4a0)] - chore: simplify variable (#1332) (kzhang <<godky@users.noreply.github.com>>)
|
|
153
|
-
* [[`132c9ee`](http://github.com/koajs/koa/commit/132c9ee63f92a586a120ed3bd6b7ef023badb8bb)] - docs: Clarify the format of request.headers (#1325) (Dobes Vandermeer <<dobesv@gmail.com>>)
|
|
154
|
-
* [[`5810f27`](http://github.com/koajs/koa/commit/5810f279a4caeda115f39e429c9671795613abf8)] - docs: Removed Document in Progress note in Koa vs Express (#1336) (Andrew Peterson <<andrew@andpeterson.com>>)
|
|
155
|
-
* [[`75233d9`](http://github.com/koajs/koa/commit/75233d974a30af6e3b8ab38a73e5ede67172fc1c)] - chore: Consider removing this return statement; it will be ignored. (#1322) (Vern Brandl <<tkvern@users.noreply.github.com>>)
|
|
156
|
-
* [[`04e07fd`](http://github.com/koajs/koa/commit/04e07fdc620841068f12b8edf36f27e6592a0a18)] - test: Buffer() is deprecated due to security and usability issues. so use the Buffer.alloc() instead (#1321) (Vern Brandl <<tkvern@users.noreply.github.com>>)
|
|
157
|
-
* [[`130e363`](http://github.com/koajs/koa/commit/130e363856747b487652f04b5550056d7778e43a)] - docs: use 'fs-extra' instead of 'fs-promise' (#1309) (rosald <<35028438+rosald@users.noreply.github.com>>)
|
|
158
|
-
* [[`2f2078b`](http://github.com/koajs/koa/commit/2f2078bf998bd3f44289ebd17eeccf5e12e4c134)] - chore: Update PR-welcome badge url (#1299) (James George <<jamesgeorge998001@gmail.com>>)
|
|
159
|
-
|
|
160
|
-
2.7.0 / 2019-01-28
|
|
161
|
-
==================
|
|
162
|
-
|
|
163
|
-
**features**
|
|
164
|
-
* [[`b7bfa71`](http://github.com/koajs/koa/commit/b7bfa7113b8d1af49a57ab767f24a599ed92044f)] - feat: change set status assert, allowing valid custom statuses (#1308) (Martin Iwanowski <<martin@iwanowski.se>>)
|
|
165
|
-
|
|
166
|
-
**others**
|
|
167
|
-
* [[`72f325b`](http://github.com/koajs/koa/commit/72f325b78edd0dc2aac940a76ce5f644005ce4c3)] - chore: add pr welcoming badge (#1291) (James George <<jamesgeorge998001@gmail.com>>)
|
|
168
|
-
* [[`b15115b`](http://github.com/koajs/koa/commit/b15115b2cbfffe15827cd5e4368267d417b72f08)] - chore: Reduce unnecessary variable declarations (#1298) (call me saisai <<1457358080@qq.com>>)
|
|
169
|
-
* [[`ad91ce2`](http://github.com/koajs/koa/commit/ad91ce2346cb34e5d5a49d07dd952d15f6c832a3)] - chore: license 2019 (dead-horse <<dead_horse@qq.com>>)
|
|
170
|
-
* [[`b25e79d`](http://github.com/koajs/koa/commit/b25e79dfb599777a38157bd419395bd28369ee86)] - Mark two examples as live for the corresponding documentation change in https://github.com/koajs/koajs.com/pull/38. (#1031) (Francisco Ryan Tolmasky I <<tolmasky@gmail.com>>)
|
|
171
|
-
* [[`d9ef603`](http://github.com/koajs/koa/commit/d9ef60398e88f2c2f958ab2b159d38052ffe7f8a)] - chore: Optimize array split (#1295) (Mikhail Bodrov <<connormiha1@gmail.com>>)
|
|
172
|
-
* [[`9be8583`](http://github.com/koajs/koa/commit/9be858312553002841725b617050aaff3c48951d)] - chore: replace ~~ with Math.trunc in res.length (option) (#1288) (jeremiG <<gendronjeremi@gmail.com>>)
|
|
173
|
-
* [[`7e46c20`](http://github.com/koajs/koa/commit/7e46c2058cb5994809eab5f4dbb12f21e937c72b)] - docs: add link to the license file (#1290) (James George <<jamesgeorge998001@gmail.com>>)
|
|
174
|
-
* [[`48993ad`](http://github.com/koajs/koa/commit/48993ade9b0831fbce28d94b3b0963a4b0dccbdd)] - docs: Document other body types (#1285) (Douglas Wade <<douglas.b.wade@gmail.com>>)
|
|
175
|
-
* [[`acb388b`](http://github.com/koajs/koa/commit/acb388bc0546b48fca11dce8aa7a595af2cda5e2)] - docs: Add security vulnerability disclosure instructions to the Readme (#1283) (Douglas Wade <<douglas.b.wade@gmail.com>>)
|
|
176
|
-
* [[`a007198`](http://github.com/koajs/koa/commit/a007198fa23c19902b1f3ffb81498629e0e9c875)] - docs: Document ctx.app.emit (#1284) (Douglas Wade <<douglas.b.wade@gmail.com>>)
|
|
177
|
-
* [[`f90e825`](http://github.com/koajs/koa/commit/f90e825da9d505c11b4262c50cd54553f979c300)] - docs: response.set(fields) won't overwrites previous header fields(#1282) (Douglas Wade <<douglas.b.wade@gmail.com>>)
|
|
178
|
-
* [[`fc93c05`](http://github.com/koajs/koa/commit/fc93c05f68398f30abc46fd16ae6c673a1eee099)] - docs: update readme to add babel 7 instructions (#1274) (Vikram Rangaraj <<vik120@icloud.com>>)
|
|
179
|
-
* [[`5560f72`](http://github.com/koajs/koa/commit/5560f729124f022ffed00085aafea43dded7fb03)] - chore: use the ability of `content-type` lib directly (#1276) (Jordan <<mingmingwon@gmail.com>>)
|
|
180
|
-
|
|
181
|
-
2.6.2 / 2018-11-10
|
|
182
|
-
==================
|
|
183
|
-
|
|
184
|
-
**fixes**
|
|
185
|
-
* [[`9905199`](http://github.com/koajs/koa/commit/99051992a9f45eb0dd79e062681d6f5d366deb41)] - fix: Status message is not supported on HTTP/2 (#1264) (André Cruz <<andre@cabine.org>>)
|
|
186
|
-
|
|
187
|
-
**others**
|
|
188
|
-
* [[`325792a`](http://github.com/koajs/koa/commit/325792aee92de0ba6fea306657933fc63dc00474)] - docs: add table of contents for guide.md (#1267) (ZYSzys <<zyszys98@gmail.com>>)
|
|
189
|
-
* [[`71aaa29`](http://github.com/koajs/koa/commit/71aaa29591d6681f8579486f18d32ba1ee651a5b)] - docs: fix spelling in throw docs (#1269) (Martin Iwanowski <<martin@iwanowski.se>>)
|
|
190
|
-
* [[`bc81ca9`](http://github.com/koajs/koa/commit/bc81ca9414296234c764b7306a19ba72b2e59b52)] - chore: use res instead of this.res (#1271) (Jordan <<mingmingwon@gmail.com>>)
|
|
191
|
-
* [[`0251b38`](http://github.com/koajs/koa/commit/0251b38a8405471892c5eeaba7c8d54bd7028214)] - test: node v11 on travis (#1265) (Martin Iwanowski <<martin@iwanowski.se>>)
|
|
192
|
-
* [[`88b92b4`](http://github.com/koajs/koa/commit/88b92b43153f21609aee71d47abcd4dc27a6586d)] - doc: updated docs for throw() to pass status as first param. (#1268) (Waleed Ashraf <<waleedashraf@outlook.com>>)
|
|
193
|
-
|
|
194
|
-
2.6.1 / 2018-10-23
|
|
195
|
-
==================
|
|
196
|
-
|
|
197
|
-
**fixes**
|
|
198
|
-
* [[`4964242`](http://github.com/koajs/koa/commit/49642428342e5f291eb9d690802e83ed830623b5)] - fix: use X-Forwarded-Host first on app.proxy present (#1263) (fengmk2 <<fengmk2@gmail.com>>)
|
|
199
|
-
|
|
200
|
-
2.6.0 / 2018-10-23
|
|
201
|
-
==================
|
|
202
|
-
|
|
203
|
-
**features**
|
|
204
|
-
* [[`9c5c58b`](http://github.com/koajs/koa/commit/9c5c58b18363494976185e7ddc790ac63de840ed)] - feat: use :authority header of http2 requests as host (#1262) (Martin Michaelis <<code@mgjm.de>>)
|
|
205
|
-
* [[`9146024`](http://github.com/koajs/koa/commit/9146024e1094e8bb871ab15d1b7fc556a710732f)] - feat: response.attachment append a parameter: options from contentDisposition (#1240) (小雷 <<863837949@qq.com>>)
|
|
206
|
-
|
|
207
|
-
**others**
|
|
208
|
-
* [[`d32623b`](http://github.com/koajs/koa/commit/d32623baa7a6273d47be67d587ad4ea0ecffc5de)] - docs: Update error-handling.md (#1239) (urugator <<j.placek@centrum.cz>>)
|
|
209
|
-
|
|
210
|
-
2.5.3 / 2018-09-11
|
|
211
|
-
==================
|
|
212
|
-
|
|
213
|
-
**fixes**
|
|
214
|
-
* [[`2ee32f5`](http://github.com/koajs/koa/commit/2ee32f50b88b383317e33cc0a4bfaa5f2eadead7)] - fix: pin debug@~3.1.0 avoid deprecated warnning (#1245) (fengmk2 <<fengmk2@gmail.com>>)
|
|
215
|
-
|
|
216
|
-
**others**
|
|
217
|
-
* [[`2180839`](http://github.com/koajs/koa/commit/2180839eda2cb16edcfda46ccfe24711680af850)] - docs: Update koa-vs-express.md (#1230) (Clayton Ray <<iamclaytonray@gmail.com>>)
|
|
218
|
-
|
|
219
|
-
2.5.2 / 2018-07-12
|
|
220
|
-
==================
|
|
221
|
-
|
|
222
|
-
* deps: upgrade all dependencies
|
|
223
|
-
* perf: avoid stringify when set header (#1220)
|
|
224
|
-
* perf: cache content type's result (#1218)
|
|
225
|
-
* perf: lazy init cookies and ip when first time use it (#1216)
|
|
226
|
-
* chore: fix comment & approve cov (#1214)
|
|
227
|
-
* docs: fix grammar
|
|
228
|
-
* test&cov: add test case (#1211)
|
|
229
|
-
* Lazily initialize `request.accept` and delegate `context.accept` (#1209)
|
|
230
|
-
* fix: use non deprecated custom inspect (#1198)
|
|
231
|
-
* Simplify processes in the getter `request.protocol` (#1203)
|
|
232
|
-
* docs: better demonstrate middleware flow (#1195)
|
|
233
|
-
* fix: Throw a TypeError instead of a AssertionError (#1199)
|
|
234
|
-
* chore: mistake in a comment (#1201)
|
|
235
|
-
* chore: use this.res.socket insteadof this.ctx.req.socket (#1177)
|
|
236
|
-
* chore: Using "listenerCount" instead of "listeners" (#1184)
|
|
237
|
-
|
|
238
|
-
2.5.1 / 2018-04-27
|
|
239
|
-
==================
|
|
240
|
-
|
|
241
|
-
* test: node v10 on travis (#1182)
|
|
242
|
-
* fix tests: remove unnecessary assert doesNotThrow and api calls (#1170)
|
|
243
|
-
* use this.response insteadof this.ctx.response (#1163)
|
|
244
|
-
* deps: remove istanbul (#1151)
|
|
245
|
-
* Update guide.md (#1150)
|
|
246
|
-
|
|
247
|
-
2.5.0 / 2018-02-11
|
|
248
|
-
==================
|
|
249
|
-
|
|
250
|
-
* feat: ignore set header/status when header sent (#1137)
|
|
251
|
-
* run coverage using --runInBand (#1141)
|
|
252
|
-
* [Update] license year to 2018 (#1130)
|
|
253
|
-
* docs: small grammatical fix in api docs index (#1111)
|
|
254
|
-
* docs: fixed typo (#1112)
|
|
255
|
-
* docs: capitalize K in word koa (#1126)
|
|
256
|
-
* Error handling: on non-error throw try to stringify if error is an object (#1113)
|
|
257
|
-
* Use eslint-config-koa (#1105)
|
|
258
|
-
* Update mgol's name in AUTHORS, add .mailmap (#1100)
|
|
259
|
-
* Avoid generating package locks instead of ignoring them (#1108)
|
|
260
|
-
* chore: update copyright year to 2017 (#1095)
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
2.4.1 / 2017-11-06
|
|
264
|
-
==================
|
|
265
|
-
|
|
266
|
-
* fix bad merge w/ 2.4.0
|
|
267
|
-
|
|
268
|
-
2.4.0 / 2017-11-06
|
|
269
|
-
==================
|
|
270
|
-
|
|
271
|
-
UNPUBLISHED
|
|
272
|
-
|
|
273
|
-
* update `package.engines.node` to be more strict
|
|
274
|
-
* update `fresh@^0.5.2`
|
|
275
|
-
* fix: `inspect()` no longer crashes `context`
|
|
276
|
-
* fix: gated `res.statusMessage` for HTTP/2
|
|
277
|
-
* added: `app.handleRequest()` is exposed
|
|
278
|
-
|
|
279
|
-
2.3.0 / 2017-06-20
|
|
280
|
-
==================
|
|
281
|
-
|
|
282
|
-
* fix: use `Buffer.from()`
|
|
283
|
-
* test on node 7 & 8
|
|
284
|
-
* add `package-lock.json` to `.gitignore`
|
|
285
|
-
* run `lint --fix`
|
|
286
|
-
* add `request.header` in addition to `request.headers`
|
|
287
|
-
* add IPv6 hostname support
|
|
288
|
-
|
|
289
|
-
2.2.0 / 2017-03-14
|
|
290
|
-
==================
|
|
291
|
-
|
|
292
|
-
* fix: drop `package.engines.node` requirement to >= 6.0.0
|
|
293
|
-
* this fixes `yarn`, which errors when this semver range is not satisfied
|
|
294
|
-
* bump `cookies@~0.7.0`
|
|
295
|
-
* bump `fresh@^0.5.0`
|
|
296
|
-
|
|
297
|
-
2.1.0 / 2017-03-07
|
|
298
|
-
==================
|
|
299
|
-
|
|
300
|
-
* added: return middleware chain promise from `callback()` #848
|
|
301
|
-
* added: node v7.7+ `res.getHeaderNames()` support #930
|
|
302
|
-
* added: `err.headerSent` in error handling #919
|
|
303
|
-
* added: lots of docs!
|
|
304
|
-
|
|
305
|
-
2.0.1 / 2017-02-25
|
|
306
|
-
==================
|
|
307
|
-
|
|
308
|
-
NOTE: we hit a versioning snafu. `v2.0.0` was previously released,
|
|
309
|
-
so `v2.0.1` is released as the first `v2.x` with a `latest` tag.
|
|
310
|
-
|
|
311
|
-
* upgrade mocha #900
|
|
312
|
-
* add names to `application`'s request and response handlers #805
|
|
313
|
-
* breaking: remove unused `app.name` #899
|
|
314
|
-
* breaking: drop official support for node < 7.6
|
|
315
|
-
|
|
316
|
-
2.0.0 / ??????????
|
|
317
|
-
==================
|
|
318
|
-
|
|
319
|
-
* Fix malformed content-type header causing exception on charset get (#898)
|
|
320
|
-
* fix: subdomains should be [] if the host is an ip (#808)
|
|
321
|
-
* don't pre-bound onerror [breaking change] (#800)
|
|
322
|
-
* fix `ctx.flushHeaders()` to use `res.flushHeaders()` instead of `res.writeHead()` (#795)
|
|
323
|
-
* fix(response): correct response.writable logic (#782)
|
|
324
|
-
* merge v1.1.2 and v1.2.0 changes
|
|
325
|
-
* include `koa-convert` so that generator functions still work
|
|
326
|
-
* NOTE: generator functions are deprecated in v2 and will be removed in v3
|
|
327
|
-
* improve linting
|
|
328
|
-
* improve docs
|
|
329
|
-
|
|
330
|
-
2.0.0-alpha.8 / 2017-02-13
|
|
331
|
-
==================
|
|
332
|
-
|
|
333
|
-
* Fix malformed content-type header causing exception on charset get (#898)
|
|
334
|
-
|
|
335
|
-
2.0.0-alpha.7 / 2016-09-07
|
|
336
|
-
==================
|
|
337
|
-
|
|
338
|
-
* fix: subdomains should be [] if the host is an ip (#808)
|
|
339
|
-
|
|
340
|
-
2.0.0-alpha.6 / 2016-08-29
|
|
341
|
-
==================
|
|
342
|
-
|
|
343
|
-
* don't pre-bound onerror [breaking change]
|
|
344
|
-
|
|
345
|
-
2.0.0-alpha.5 / 2016-08-10
|
|
346
|
-
==================
|
|
347
|
-
|
|
348
|
-
* fix `ctx.flushHeaders()` to use `res.flushHeaders()` instead of `res.writeHead()`
|
|
349
|
-
|
|
350
|
-
2.0.0-alpha.4 / 2016-07-23
|
|
351
|
-
==================
|
|
352
|
-
|
|
353
|
-
* fix `response.writeable` during pipelined requests
|
|
354
|
-
|
|
355
|
-
1.2.0 / 2016-03-03
|
|
356
|
-
==================
|
|
357
|
-
|
|
358
|
-
* add support for `err.headers` in `ctx.onerror()`
|
|
359
|
-
- see: https://github.com/koajs/koa/pull/668
|
|
360
|
-
- note: you should set these headers in your custom error handlers as well
|
|
361
|
-
- docs: https://github.com/koajs/koa/blob/master/docs/error-handling.md
|
|
362
|
-
* fix `cookies`' detection of http/https
|
|
363
|
-
- see: https://github.com/koajs/koa/pull/614
|
|
364
|
-
* deprecate `app.experimental = true`. Koa v2 does not use this signature.
|
|
365
|
-
* add a code of conduct
|
|
366
|
-
* test against the latest version of node
|
|
367
|
-
* add a lot of docs
|
|
368
|
-
|
|
369
|
-
1.1.2 / 2015-11-05
|
|
370
|
-
==================
|
|
371
|
-
|
|
372
|
-
* ensure parseurl always working as expected
|
|
373
|
-
* fix Application.inspect() – missing .proxy value.
|
|
374
|
-
|
|
375
|
-
2.0.0-alpha.3 / 2015-11-05
|
|
376
|
-
==================
|
|
377
|
-
|
|
378
|
-
* ensure parseurl always working as expected. #586
|
|
379
|
-
* fix Application.inspect() – missing .proxy value. Closes #563
|
|
380
|
-
|
|
381
|
-
2.0.0-alpha.2 / 2015-10-27
|
|
382
|
-
==================
|
|
383
|
-
|
|
384
|
-
* remove `co` and generator support completely
|
|
385
|
-
* improved documentation
|
|
386
|
-
* more refactoring into ES6
|
|
387
|
-
|
|
388
|
-
2.0.0-alpha.1 / 2015-10-22
|
|
389
|
-
==================
|
|
390
|
-
|
|
391
|
-
* change the middleware signature to `async (ctx, next) => await next()`
|
|
392
|
-
* drop node < 4 support and rewrite the codebase in ES6
|
|
393
|
-
|
|
394
|
-
1.1.1 / 2015-10-22
|
|
395
|
-
==================
|
|
396
|
-
|
|
397
|
-
* do not send a content-type when the type is unknown #536
|
|
398
|
-
|
|
399
|
-
1.1.0 / 2015-10-11
|
|
400
|
-
==================
|
|
401
|
-
|
|
402
|
-
* add `app.silent=<Boolean>` to toggle error logging @tejasmanohar #486
|
|
403
|
-
* add `ctx.origin` @chentsulin #480
|
|
404
|
-
* various refactoring
|
|
405
|
-
- add `use strict` everywhere
|
|
406
|
-
|
|
407
|
-
1.0.0 / 2015-08-22
|
|
408
|
-
==================
|
|
409
|
-
|
|
410
|
-
* add `this.req` check for `querystring()`
|
|
411
|
-
* don't log errors with `err.expose`
|
|
412
|
-
* `koa` now follows semver!
|
|
413
|
-
|
|
414
|
-
0.21.0 / 2015-05-23
|
|
415
|
-
==================
|
|
416
|
-
|
|
417
|
-
* empty `request.query` objects are now always the same instance
|
|
418
|
-
* bump `fresh@0.3.0`
|
|
419
|
-
|
|
420
|
-
0.20.0 / 2015-04-30
|
|
421
|
-
==================
|
|
422
|
-
|
|
423
|
-
Breaking change if you're using `this.get('ua') === undefined` etc.
|
|
424
|
-
For more details please checkout [#438](https://github.com/koajs/koa/pull/438).
|
|
425
|
-
|
|
426
|
-
* make sure helpers return strict string
|
|
427
|
-
* feat: alias response.headers to response.header
|
|
428
|
-
|
|
429
|
-
0.19.1 / 2015-04-14
|
|
430
|
-
==================
|
|
431
|
-
|
|
432
|
-
* non-error thrown, fixed #432
|
|
433
|
-
|
|
434
|
-
0.19.0 / 2015-04-05
|
|
435
|
-
==================
|
|
436
|
-
|
|
437
|
-
* `req.host` and `req.hostname` now always return a string (semi-breaking change)
|
|
438
|
-
* improved test coverage
|
|
439
|
-
|
|
440
|
-
0.18.1 / 2015-03-01
|
|
441
|
-
==================
|
|
442
|
-
|
|
443
|
-
* move babel to `devDependencies`
|
|
444
|
-
|
|
445
|
-
0.18.0 / 2015-02-14
|
|
446
|
-
==================
|
|
447
|
-
|
|
448
|
-
* experimental es7 async function support via `app.experimental = true`
|
|
449
|
-
* use `content-type` instead of `media-typer`
|
|
450
|
-
|
|
451
|
-
0.17.0 / 2015-02-05
|
|
452
|
-
==================
|
|
453
|
-
|
|
454
|
-
Breaking change if you're using an old version of node v0.11!
|
|
455
|
-
Otherwise, you should have no trouble upgrading.
|
|
456
|
-
|
|
457
|
-
* official iojs support
|
|
458
|
-
* drop support for node.js `>= 0.11.0 < 0.11.16`
|
|
459
|
-
* use `Object.setPrototypeOf()` instead of `__proto__`
|
|
460
|
-
* update dependencies
|
|
461
|
-
|
|
462
|
-
0.16.0 / 2015-01-27
|
|
463
|
-
==================
|
|
464
|
-
|
|
465
|
-
* add `res.append()`
|
|
466
|
-
* fix path usage for node@0.11.15
|
|
467
|
-
|
|
468
|
-
0.15.0 / 2015-01-18
|
|
469
|
-
==================
|
|
470
|
-
|
|
471
|
-
* add `this.href`
|
|
472
|
-
|
|
473
|
-
0.14.0 / 2014-12-15
|
|
474
|
-
==================
|
|
475
|
-
|
|
476
|
-
* remove `x-powered-by` response header
|
|
477
|
-
* fix the content type on plain-text redirects
|
|
478
|
-
* add ctx.state
|
|
479
|
-
* bump `co@4`
|
|
480
|
-
* bump dependencies
|
|
481
|
-
|
|
482
|
-
0.13.0 / 2014-10-17
|
|
483
|
-
==================
|
|
484
|
-
|
|
485
|
-
* add this.message
|
|
486
|
-
* custom status support via `statuses`
|
|
487
|
-
|
|
488
|
-
0.12.2 / 2014-09-28
|
|
489
|
-
==================
|
|
490
|
-
|
|
491
|
-
* use wider semver ranges for dependencies koa maintainers also maintain
|
|
492
|
-
|
|
493
|
-
0.12.1 / 2014-09-21
|
|
494
|
-
==================
|
|
495
|
-
|
|
496
|
-
* bump content-disposition
|
|
497
|
-
* bump statuses
|
|
498
|
-
|
|
499
|
-
0.12.0 / 2014-09-20
|
|
500
|
-
==================
|
|
501
|
-
|
|
502
|
-
* add this.assert()
|
|
503
|
-
* use content-disposition
|
|
504
|
-
|
|
505
|
-
0.11.0 / 2014-09-08
|
|
506
|
-
==================
|
|
507
|
-
|
|
508
|
-
* fix app.use() assertion #337
|
|
509
|
-
* bump a lot of dependencies
|
|
510
|
-
|
|
511
|
-
0.10.0 / 2014-08-12
|
|
512
|
-
==================
|
|
513
|
-
|
|
514
|
-
* add `ctx.throw(err, object)` support
|
|
515
|
-
* add `ctx.throw(err, status, object)` support
|
|
516
|
-
|
|
517
|
-
0.9.0 / 2014-08-07
|
|
518
|
-
==================
|
|
519
|
-
|
|
520
|
-
* add: do not set `err.expose` to true when err.status not a valid http status code
|
|
521
|
-
* add: alias `request.headers` as `request.header`
|
|
522
|
-
* add context.inspect(), cleanup app.inspect()
|
|
523
|
-
* update cookies
|
|
524
|
-
* fix `err.status` invalid lead to uncaughtException
|
|
525
|
-
* fix middleware gif, close #322
|
|
526
|
-
|
|
527
|
-
0.8.2 / 2014-07-27
|
|
528
|
-
==================
|
|
529
|
-
|
|
530
|
-
* bump co
|
|
531
|
-
* bump parseurl
|
|
532
|
-
|
|
533
|
-
0.8.1 / 2014-06-24
|
|
534
|
-
==================
|
|
535
|
-
|
|
536
|
-
* bump type-is
|
|
537
|
-
|
|
538
|
-
0.8.0 / 2014-06-13
|
|
539
|
-
==================
|
|
540
|
-
|
|
541
|
-
* add `this.response.is()``
|
|
542
|
-
* remove `.status=string` and `res.statusString` #298
|
|
543
|
-
|
|
544
|
-
0.7.0 / 2014-06-07
|
|
545
|
-
==================
|
|
546
|
-
|
|
547
|
-
* add `this.lastModified` and `this.etag` as both getters and setters for ubiquity #292.
|
|
548
|
-
See koajs/koa@4065bf7 for an explanation.
|
|
549
|
-
* refactor `this.response.vary()` to use [vary](https://github.com/expressjs/vary) #291
|
|
550
|
-
* remove `this.response.append()` #291
|
|
551
|
-
|
|
552
|
-
0.6.3 / 2014-06-06
|
|
553
|
-
==================
|
|
554
|
-
|
|
555
|
-
* fix res.type= when the extension is unknown
|
|
556
|
-
* assert when non-error is passed to app.onerror #287
|
|
557
|
-
* bump finished
|
|
558
|
-
|
|
559
|
-
0.6.2 / 2014-06-03
|
|
560
|
-
==================
|
|
561
|
-
|
|
562
|
-
* switch from set-type to mime-types
|
|
563
|
-
|
|
564
|
-
0.6.1 / 2014-05-11
|
|
565
|
-
==================
|
|
566
|
-
|
|
567
|
-
* bump type-is
|
|
568
|
-
* bump koa-compose
|
|
569
|
-
|
|
570
|
-
0.6.0 / 2014-05-01
|
|
571
|
-
==================
|
|
572
|
-
|
|
573
|
-
* add nicer error formatting
|
|
574
|
-
* add: assert object type in ctx.onerror
|
|
575
|
-
* change .status default to 404. Closes #263
|
|
576
|
-
* remove .outputErrors, suppress output when handled by the dev. Closes #272
|
|
577
|
-
* fix content-length when body is re-assigned. Closes #267
|
|
578
|
-
|
|
579
|
-
0.5.5 / 2014-04-14
|
|
580
|
-
==================
|
|
581
|
-
|
|
582
|
-
* fix length when .body is missing
|
|
583
|
-
* fix: make sure all intermediate stream bodies will be destroyed
|
|
584
|
-
|
|
585
|
-
0.5.4 / 2014-04-12
|
|
586
|
-
==================
|
|
587
|
-
|
|
588
|
-
* fix header stripping in a few cases
|
|
589
|
-
|
|
590
|
-
0.5.3 / 2014-04-09
|
|
591
|
-
==================
|
|
592
|
-
|
|
593
|
-
* change res.type= to always default charset. Closes #252
|
|
594
|
-
* remove ctx.inspect() implementation. Closes #164
|
|
595
|
-
|
|
596
|
-
0.5.2 / 2014-03-23
|
|
597
|
-
==================
|
|
598
|
-
|
|
599
|
-
* fix: inspection of `app` and `app.toJSON()`
|
|
600
|
-
* fix: let `this.throw`n errors provide their own status
|
|
601
|
-
* fix: overwriting of `content-type` w/ `HEAD` requests
|
|
602
|
-
* refactor: use statuses
|
|
603
|
-
* refactor: use escape-html
|
|
604
|
-
* bump dev deps
|
|
605
|
-
|
|
606
|
-
0.5.1 / 2014-03-06
|
|
607
|
-
==================
|
|
608
|
-
|
|
609
|
-
* add request.hostname(getter). Closes #224
|
|
610
|
-
* remove response.charset and ctx.charset (too confusing in relation to ctx.type) [breaking change]
|
|
611
|
-
* fix a debug() name
|
|
612
|
-
|
|
613
|
-
0.5.0 / 2014-02-19
|
|
614
|
-
==================
|
|
615
|
-
|
|
616
|
-
* add context.charset
|
|
617
|
-
* add context.charset=
|
|
618
|
-
* add request.charset
|
|
619
|
-
* add response.charset
|
|
620
|
-
* add response.charset=
|
|
621
|
-
* fix response.body= html content sniffing
|
|
622
|
-
* change ctx.length and ctx.type to always delegate to response object [breaking change]
|
|
623
|
-
|
|
624
|
-
0.4.0 / 2014-02-11
|
|
625
|
-
==================
|
|
626
|
-
|
|
627
|
-
* remove app.jsonSpaces settings - moved to [koa-json](https://github.com/koajs/json)
|
|
628
|
-
* add this.response=false to bypass koa's response handling
|
|
629
|
-
* fix response handling after body has been sent
|
|
630
|
-
* changed ctx.throw() to no longer .expose 5xx errors
|
|
631
|
-
* remove app.keys getter/setter, update cookies, and remove keygrip deps
|
|
632
|
-
* update fresh
|
|
633
|
-
* update koa-compose
|
|
634
|
-
|
|
635
|
-
0.3.0 / 2014-01-17
|
|
636
|
-
==================
|
|
637
|
-
|
|
638
|
-
* add ctx.host= delegate
|
|
639
|
-
* add req.host=
|
|
640
|
-
* add: context.throw supports Error instances
|
|
641
|
-
* update co
|
|
642
|
-
* update cookies
|
|
643
|
-
|
|
644
|
-
0.2.1 / 2013-12-30
|
|
645
|
-
==================
|
|
646
|
-
|
|
647
|
-
* add better 404 handling
|
|
648
|
-
* add check for fn._name in debug() output
|
|
649
|
-
* add explicit .toJSON() calls to ctx.toJSON()
|
|
650
|
-
|
|
651
|
-
0.2.0 / 2013-12-28
|
|
652
|
-
==================
|
|
653
|
-
|
|
654
|
-
* add support for .throw(status, msg). Closes #130
|
|
655
|
-
* add GeneratorFunction assertion for app.use(). Closes #120
|
|
656
|
-
* refactor: move `.is()` to `type-is`
|
|
657
|
-
* refactor: move content negotiation to "accepts"
|
|
658
|
-
* refactor: allow any streams with .pipe method
|
|
659
|
-
* remove `next` in callback for now
|
|
660
|
-
|
|
661
|
-
0.1.2 / 2013-12-21
|
|
662
|
-
==================
|
|
663
|
-
|
|
664
|
-
* update co, koa-compose, keygrip
|
|
665
|
-
* use on-socket-error
|
|
666
|
-
* add throw(status, msg) support
|
|
667
|
-
* assert middleware is GeneratorFunction
|
|
668
|
-
* ducktype stream checks
|
|
669
|
-
* remove `next` is `app.callback()`
|
|
670
|
-
|
|
671
|
-
0.1.1 / 2013-12-19
|
|
672
|
-
==================
|
|
673
|
-
|
|
674
|
-
* fix: cleanup socker error handler on response
|