fixes
dbc9c5a
] - fix: Do not response Content-Length if Transfer-Encoding is defined (#1602) (Yiyu He <>)
fixes
a37a2e5
] - fix: compatible with node-v12.19.0 & earlier (#1590) (hyj1991 <yeekwanvong@gmail.com>)fixes
04acf02
] - fix: nodejs deprecated api (#1585) (#1588) (hyj1991 <yeekwanvong@gmail.com>)
others
3435e78
] - lint++ (jongleberry <jonathanrichardong@gmail.com>)2cd6618
] - Fix grammar mistake (#1527) (Matheus Souza <37983247+souzasmatheus@users.noreply.github.com>)16ab46e
] - chore: upgrade koa-convert dependency to ^2.0.0 (#1535) (Christian Rodemeyer <atombrenner@users.noreply.github.com>)65113ca
] - Fix jsdoc types for constructor (#1541) (Piotr Kuczynski <piotr.kuczynski@gmail.com>)03e6317
] - :arrow_up: debug (jongleberry <jonathanrichardong@gmail.com>)b37a2d0
] - :arrow_up: eslint dependencies (jongleberry <jonathanrichardong@gmail.com>)4a410cc
] - migrate assert.deepEqual => .deepStrictEqual (jongleberry <jonathanrichardong@gmail.com>)4545b59
] - test: switch tests to jest (jongleberry <jonathanrichardong@gmail.com>)596cfd5
] - migrate assert.strict => .strictEqual (jongleberry <jonathanrichardong@gmail.com>)be3e8b6
] - test: switch to github actions (jongleberry <jonathanrichardong@gmail.com>)a2570e3
] - package: update bench scripts (jongleberry <jonathanrichardong@gmail.com>)000acf0
] - npm: enable package-lock (jongleberry <jonathanrichardong@gmail.com>)47fdbca
] - delete benchmarks (jongleberry <jonathanrichardong@gmail.com>)0056f90
] - Create dependabot.yml (jongleberry <jonathanrichardong@gmail.com>)698ce0a
] - test: fix typo in status.js (Ikko Ashimine <eltociear@gmail.com>)eb51cf5
] - doc: app.keys needs to be long enought and random (#1520) (Yiyu He <>)
fixes
b5472f4
] - fix: make ESM transpiled CommonJS play nice for TS folks, fix #1513 (#1518) (miwnwski <m@iwnw.ski>)68d97d6
] - fix: fixed order of vulnerability disclosure addresses (niftylettuce <niftylettuce@gmail.com>)others
b4398f5
] - correct verb tense in doc (#1512) (Matan Shavit <71092861+matanshavit@users.noreply.github.com>)39e1a5a
] - fixed multiple grammatical errors in docs. (#1497) (Hridayesh Sharma <vyasriday7@gmail.com>)aeb5d19
] - docs: added niftylettuce@gmail.com to vulnerability disclosure (niftylettuce <niftylettuce@gmail.com>)6e1093b
] - docs: remove babel from readme (#1494) (miwnwski <m@iwnw.ski>)38cb591
] - docs: update specific for auto response status (AlbertAZ1992 <ziyuximing@163.com>)2224cd9
] - docs: remove babel ref. (#1488) (Imed Jaberi <>)
d51f983
] - docs: fix assert example for response (#1489) (Imed Jaberi <>)
f8b49b8
] - chore: fix grammatical and spelling errors in comments and tests (#1490) (Matt Kubej <mkubej@gmail.com>)d1c9263
] - deps: update depd >> v2.0.0 (#1482) (imed jaberi <>)
features
bbcde76
] - feat: support esm (#1474) (ZYSzys <zhangyongsheng@youzan.com>)others
20e58cf
] - test: imporve coverage to 100% (dead-horse <>)
4a40d63
] - build: use prepare instead of prepublish (dead-horse <>)
226ba8c
] - build: use prepublish instead of prepack (dead-horse <>)
fixes
e2030c7
] - fix: Improve checks for Error in onerror handlers (#1468) (Julien Wajsberg <felash@gmail.com>)others
5208c5e
] - chore: Use single console.error() statement in error handler (#1471) (Mike Vosseller <michael.vosseller@gmail.com>)features
0d2f421
] - feat: error handler treat err.statusCode as the same as err.status (#1460) (Vijay Krishnavanshi <vijaykrishnavanshi@gmail.com>)8d52105
] - feat: allow bodyless responses for non empty status codes (#1447) (ejose19 <8742215+ejose19@users.noreply.github.com>)others
faeaff5
] - fox: remove error-inject
and fix error handling (#1409) (Konstantin Vyatkin <tino@vtkn.io>)f7c732f
] - docs: fixed incorrect onerror example (#1459) (Paul Annekov <paul.annekov@gmail.com>)143d8f7
] - Always use strict equality. (#1225) (Yazan Medanat <medanat@gmail.com>)6b6b0dd
] - docs(api): add app.use chainability note (#1449) (Zac Anger <zac@zacanger.com>)8ddab48
] - docs: Document response status with empty body (#1445) (Marc-Aurèle DARCHE <152407+madarche@users.noreply.github.com>)7deedb2
] - docs: Updating context.md with the latest cookies opts (#1433) (Brad Ito <phlogisticfugu@users.noreply.github.com>)3e97a10
] - docs(links): remove Google+ link (#1439) (laffachan <45162759+laffachan@users.noreply.github.com>)eda2760
] - build: Drop unused Travis sudo: false directive (#1416) (Olle Jonsson <olle.jonsson@gmail.com>)features
422e539
] - feat: support app.proxyIPHeader and app.maxIpsCount to make ctx.ips more security (Yiyu He <>)
d48d88e
] - feat: implement response.has (#1397) (Konstantin Vyatkin <tino@vtkn.io>)others
4dc56f6
] - chore: update ESLint and plugins/configs (#1407) (Konstantin Vyatkin <tino@vtkn.io>)be7d334
] - chore: removes code duplication at handling HEAD method (#1400) (Konstantin Vyatkin <tino@vtkn.io>)f155785
] - chore: support writableEnded
(#1402) (Konstantin Vyatkin <tino@vtkn.io>)b968688
] - chore: add FUNDING.yml (#1403) (Konstantin Vyatkin <tino@vtkn.io>)4f96829
] - chore: remove isJSON in res.length (#1399) (Konstantin Vyatkin <tino@vtkn.io>)8be5626
] - build: enable codecov partial coverage and use bash uploader (#1396) (Konstantin Vyatkin <tino@vtkn.io>)ef5c43b
] - chore: use rest params (#1393) (Konstantin Vyatkin <tino@vtkn.io>)features
d7f7f77
] - feat: support sameSite=none cookies (bump cookies dependency) (#1390) (Filip Skokan <panva.ip@gmail.com>)features
2d1c598
] - feat: export HttpError from http-errors library (Micheal Hill <micheal.hill@trunkplatform.com>)others
cf70dbc
] - Chore: Use https in readme (#1389) (谭九鼎 <109224573@qq.com>)fixes
54e8fab
] - fix: encode redirect url if not already encoded (#1384) (fengmk2 <fengmk2@gmail.com>)others
817b498
] - test: fix body test (#1375) (Robert Nagy <ronagy@icloud.com>)f75d445
] - test: fix end after end (#1374) (Robert Nagy <ronagy@icloud.com>)fixes
287e589
] - fix: make options more compatibility (dead-horse <>)
features
5afff89
] - feat: accept options in the Application constructor (#1372) (Jake <djakelambert@gmail.com>)fixes
ff70bdc
] - fix: typo on document (#1355) (Jeff <jeff.tian@outlook.com>)others
3b23865
] - docs: parameter of request.get is case-insensitive (#1373) (Gunnlaugur Thor Briem <gunnlaugur@gmail.com>)a245d18
] - docs: Update response.socket (#1357) (Jeff <jeff.tian@outlook.com>)d1d65dd
] - chore(deps): install egg-bin, mm as devDeps not deps (#1366) (Edvard Chen <pigeon73101@gmail.com>)2c86b10
] - test: remove jest and use egg-bin(mocha) (#1363) (Yiyu He <>)
219bf22
] - docs(context): update link (#1354) (Peng Jie <bivinity.pengzjie@gmail.com>)52a6737
] - chore: ignore Intellij IDEA project files (#1361) (Imon-Haque <38266345+Imon-Haque@users.noreply.github.com>)b9e3546
] - docs(api): fix keygrip link (#1350) (Peng Jie <bivinity.pengzjie@gmail.com>)d4bdb5e
] - chore: update eslint and fix lint errors (dead-horse <>)
12960c4
] - build: test on 8/10/12 (dead-horse <>)
00e8f7a
] - docs: ctx.type aliases ctx.response, not ctx.request (#1343) (Alex Berk <berkalexanderc@gmail.com>)62f29eb
] - docs(context): update cookies link (#1348) (Peng Jie <dean.leehom@gmail.com>)b7fc526
] - docs: fix typo in cookie path default value docs (#1340) (Igor Adamenko <igoradamenko@users.noreply.github.com>)23f7f54
] - chore: simplify variable (#1332) (kzhang <godky@users.noreply.github.com>)132c9ee
] - docs: Clarify the format of request.headers (#1325) (Dobes Vandermeer <dobesv@gmail.com>)5810f27
] - docs: Removed Document in Progress note in Koa vs Express (#1336) (Andrew Peterson <andrew@andpeterson.com>)75233d9
] - chore: Consider removing this return statement; it will be ignored. (#1322) (Vern Brandl <tkvern@users.noreply.github.com>)04e07fd
] - test: Buffer() is deprecated due to security and usability issues. so use the Buffer.alloc() instead (#1321) (Vern Brandl <tkvern@users.noreply.github.com>)130e363
] - docs: use 'fs-extra' instead of 'fs-promise' (#1309) (rosald <35028438+rosald@users.noreply.github.com>)2f2078b
] - chore: Update PR-welcome badge url (#1299) (James George <jamesgeorge998001@gmail.com>)features
b7bfa71
] - feat: change set status assert, allowing valid custom statuses (#1308) (Martin Iwanowski <martin@iwanowski.se>)others
72f325b
] - chore: add pr welcoming badge (#1291) (James George <jamesgeorge998001@gmail.com>)b15115b
] - chore: Reduce unnecessary variable declarations (#1298) (call me saisai <1457358080@qq.com>)ad91ce2
] - chore: license 2019 (dead-horse <>)
b25e79d
] - 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>)d9ef603
] - chore: Optimize array split (#1295) (Mikhail Bodrov <connormiha1@gmail.com>)9be8583
] - chore: replace ~~ with Math.trunc in res.length (option) (#1288) (jeremiG <gendronjeremi@gmail.com>)7e46c20
] - docs: add link to the license file (#1290) (James George <jamesgeorge998001@gmail.com>)48993ad
] - docs: Document other body types (#1285) (Douglas Wade <douglas.b.wade@gmail.com>)acb388b
] - docs: Add security vulnerability disclosure instructions to the Readme (#1283) (Douglas Wade <douglas.b.wade@gmail.com>)a007198
] - docs: Document ctx.app.emit (#1284) (Douglas Wade <douglas.b.wade@gmail.com>)f90e825
] - docs: response.set(fields) won't overwrites previous header fields(#1282) (Douglas Wade <douglas.b.wade@gmail.com>)fc93c05
] - docs: update readme to add babel 7 instructions (#1274) (Vikram Rangaraj <vik120@icloud.com>)5560f72
] - chore: use the ability of content-type
lib directly (#1276) (Jordan <mingmingwon@gmail.com>)fixes
9905199
] - fix: Status message is not supported on HTTP/2 (#1264) (André Cruz <andre@cabine.org>)others
325792a
] - docs: add table of contents for guide.md (#1267) (ZYSzys <zyszys98@gmail.com>)71aaa29
] - docs: fix spelling in throw docs (#1269) (Martin Iwanowski <martin@iwanowski.se>)bc81ca9
] - chore: use res instead of this.res (#1271) (Jordan <mingmingwon@gmail.com>)0251b38
] - test: node v11 on travis (#1265) (Martin Iwanowski <martin@iwanowski.se>)88b92b4
] - doc: updated docs for throw() to pass status as first param. (#1268) (Waleed Ashraf <waleedashraf@outlook.com>)fixes
4964242
] - fix: use X-Forwarded-Host first on app.proxy present (#1263) (fengmk2 <fengmk2@gmail.com>)features
9c5c58b
] - feat: use :authority header of http2 requests as host (#1262) (Martin Michaelis <code@mgjm.de>)9146024
] - feat: response.attachment append a parameter: options from contentDisposition (#1240) (小雷 <863837949@qq.com>)others
d32623b
] - docs: Update error-handling.md (#1239) (urugator <j.placek@centrum.cz>)fixes
2ee32f5
] - fix: pin debug@~3.1.0 avoid deprecated warnning (#1245) (fengmk2 <fengmk2@gmail.com>)others
2180839
] - docs: Update koa-vs-express.md (#1230) (Clayton Ray <iamclaytonray@gmail.com>)request.accept
and delegate context.accept
(#1209)request.protocol
(#1203)UNPUBLISHED
package.engines.node
to be more strictfresh@^0.5.2
inspect()
no longer crashes context
res.statusMessage
for HTTP/2app.handleRequest()
is exposedBuffer.from()
package-lock.json
to .gitignore
lint --fix
request.header
in addition to request.headers
package.engines.node
requirement to >= 6.0.0
yarn
, which errors when this semver range is not satisfiedcookies@~0.7.0
fresh@^0.5.0
callback()
#848res.getHeaderNames()
support #930err.headerSent
in error handling #919NOTE: we hit a versioning snafu. v2.0.0
was previously released,
so v2.0.1
is released as the first v2.x
with a latest
tag.
application
's request and response handlers #805app.name
#899ctx.flushHeaders()
to use res.flushHeaders()
instead of res.writeHead()
(#795)koa-convert
so that generator functions still work
ctx.flushHeaders()
to use res.flushHeaders()
instead of res.writeHead()
response.writeable
during pipelined requestserr.headers
in ctx.onerror()
cookies
' detection of http/https
app.experimental = true
. Koa v2 does not use this signature.co
and generator support completelyasync (ctx, next) => await next()
app.silent=<Boolean>
to toggle error logging @tejasmanohar #486ctx.origin
@chentsulin #480use strict
everywherethis.req
check for querystring()
err.expose
koa
now follows semver!request.query
objects are now always the same instancefresh@0.3.0
Breaking change if you're using this.get('ua') === undefined
etc.
For more details please checkout #438.
req.host
and req.hostname
now always return a string (semi-breaking change)devDependencies
app.experimental = true
content-type
instead of media-typer
Breaking change if you're using an old version of node v0.11! Otherwise, you should have no trouble upgrading.
>= 0.11.0 < 0.11.16
Object.setPrototypeOf()
instead of __proto__
res.append()
this.href
x-powered-by
response headerco@4
statuses
ctx.throw(err, object)
supportctx.throw(err, status, object)
supporterr.expose
to true when err.status not a valid http status coderequest.headers
as request.header
err.status
invalid lead to uncaughtExceptionthis.response.is()
`.status=string
and res.statusString
#298this.lastModified
and this.etag
as both getters and setters for ubiquity #292.
See koajs/koa@4065bf7
for an explanation.this.response.vary()
to use vary #291this.response.append()
#291app
and app.toJSON()
this.throw
n errors provide their own statuscontent-type
w/ HEAD
requests.is()
to type-is
next
in callback for nownext
is app.callback()