History.md
[!IMPORTANT] Moving forwards we are using the GitHub releases page at https://github.com/koajs/koa/releases in combination with np for publishing releases and their changelogs.
fixes
breaking changes
http-errors to v2.0.0 #1486
ctx.throw now requires a format of ctx.throw(status, error, properties). See: https://www.npmjs.com/package/http-errorsres.redirect('back'), add back() method to ctx #1115URLSearchParams #1828createAsyncCtxStorageMiddleware #1817features
updates
fixes
exports.defaults in package.json #1630ctx in error handler #1758migrations
jest to the native node test runner #1845fixes
e98b8d1] - fix: can not get currentContext in error handler (#1758) (Gxkl <[email protected]>)content-length: 0 if body is explicitly set to null @ognjenjevremovic #1528const ctx = app.currentContext.null if ctx.type = json and ctx.body = null #1059 @likegunfixes
b5472f4] - fix: make ESM transpiled CommonJS play nice for TS folks, fix #1513 (#1518) (miwnwski <[email protected]>)68d97d6] - fix: fixed order of vulnerability disclosure addresses (niftylettuce <[email protected]>)others
b4398f5] - correct verb tense in doc (#1512) (Matan Shavit <[email protected]>)39e1a5a] - fixed multiple grammatical errors in docs. (#1497) (Hridayesh Sharma <[email protected]>)aeb5d19] - docs: added [email protected] to vulnerability disclosure (niftylettuce <[email protected]>)6e1093b] - docs: remove babel from readme (#1494) (miwnwski <[email protected]>)38cb591] - docs: update specific for auto response status (AlbertAZ1992 <[email protected]>)2224cd9] - docs: remove babel ref. (#1488) (Imed Jaberi <[email protected]>)d51f983] - docs: fix assert example for response (#1489) (Imed Jaberi <[email protected]>)f8b49b8] - chore: fix grammatical and spelling errors in comments and tests (#1490) (Matt Kubej <[email protected]>)d1c9263] - deps: update depd >> v2.0.0 (#1482) (imed jaberi <[email protected]>)features
bbcde76] - feat: support esm (#1474) (ZYSzys <[email protected]>)others
20e58cf] - test: imporve coverage to 100% (dead-horse <[email protected]>)4a40d63] - build: use prepare instead of prepublish (dead-horse <[email protected]>)226ba8c] - build: use prepublish instead of prepack (dead-horse <[email protected]>)fixes
e2030c7] - fix: Improve checks for Error in onerror handlers (#1468) (Julien Wajsberg <[email protected]>)others
5208c5e] - chore: Use single console.error() statement in error handler (#1471) (Mike Vosseller <[email protected]>)features
0d2f421] - feat: error handler treat err.statusCode as the same as err.status (#1460) (Vijay Krishnavanshi <[email protected]>)8d52105] - feat: allow bodyless responses for non empty status codes (#1447) (ejose19 <[email protected]>)others
faeaff5] - fox: remove error-inject and fix error handling (#1409) (Konstantin Vyatkin <[email protected]>)f7c732f] - docs: fixed incorrect onerror example (#1459) (Paul Annekov <[email protected]>)143d8f7] - Always use strict equality. (#1225) (Yazan Medanat <[email protected]>)6b6b0dd] - docs(api): add app.use chainability note (#1449) (Zac Anger <[email protected]>)8ddab48] - docs: Document response status with empty body (#1445) (Marc-Aurèle DARCHE <[email protected]>)7deedb2] - docs: Updating context.md with the latest cookies opts (#1433) (Brad Ito <[email protected]>)3e97a10] - docs(links): remove Google+ link (#1439) (laffachan <[email protected]>)eda2760] - build: Drop unused Travis sudo: false directive (#1416) (Olle Jonsson <[email protected]>)features
422e539] - feat: support app.proxyIPHeader and app.maxIpsCount to make ctx.ips more security (Yiyu He <[email protected]>)d48d88e] - feat: implement response.has (#1397) (Konstantin Vyatkin <[email protected]>)others
4dc56f6] - chore: update ESLint and plugins/configs (#1407) (Konstantin Vyatkin <[email protected]>)be7d334] - chore: removes code duplication at handling HEAD method (#1400) (Konstantin Vyatkin <[email protected]>)f155785] - chore: support writableEnded (#1402) (Konstantin Vyatkin <[email protected]>)b968688] - chore: add FUNDING.yml (#1403) (Konstantin Vyatkin <[email protected]>)4f96829] - chore: remove isJSON in res.length (#1399) (Konstantin Vyatkin <[email protected]>)8be5626] - build: enable codecov partial coverage and use bash uploader (#1396) (Konstantin Vyatkin <[email protected]>)ef5c43b] - chore: use rest params (#1393) (Konstantin Vyatkin <[email protected]>)features
d7f7f77] - feat: support sameSite=none cookies (bump cookies dependency) (#1390) (Filip Skokan <[email protected]>)features
2d1c598] - feat: export HttpError from http-errors library (Micheal Hill <[email protected]>)others
cf70dbc] - Chore: Use https in readme (#1389) (谭九鼎 <[email protected]>)fixes
54e8fab] - fix: encode redirect url if not already encoded (#1384) (fengmk2 <[email protected]>)others
817b498] - test: fix body test (#1375) (Robert Nagy <[email protected]>)f75d445] - test: fix end after end (#1374) (Robert Nagy <[email protected]>)fixes
287e589] - fix: make options more compatibility (dead-horse <[email protected]>)features
5afff89] - feat: accept options in the Application constructor (#1372) (Jake <[email protected]>)fixes
ff70bdc] - fix: typo on document (#1355) (Jeff <[email protected]>)others
3b23865] - docs: parameter of request.get is case-insensitive (#1373) (Gunnlaugur Thor Briem <[email protected]>)a245d18] - docs: Update response.socket (#1357) (Jeff <[email protected]>)d1d65dd] - chore(deps): install egg-bin, mm as devDeps not deps (#1366) (Edvard Chen <[email protected]>)2c86b10] - test: remove jest and use egg-bin(mocha) (#1363) (Yiyu He <[email protected]>)219bf22] - docs(context): update link (#1354) (Peng Jie <[email protected]>)52a6737] - chore: ignore Intellij IDEA project files (#1361) (Imon-Haque <[email protected]>)b9e3546] - docs(api): fix keygrip link (#1350) (Peng Jie <[email protected]>)d4bdb5e] - chore: update eslint and fix lint errors (dead-horse <[email protected]>)12960c4] - build: test on 8/10/12 (dead-horse <[email protected]>)00e8f7a] - docs: ctx.type aliases ctx.response, not ctx.request (#1343) (Alex Berk <[email protected]>)62f29eb] - docs(context): update cookies link (#1348) (Peng Jie <[email protected]>)b7fc526] - docs: fix typo in cookie path default value docs (#1340) (Igor Adamenko <[email protected]>)23f7f54] - chore: simplify variable (#1332) (kzhang <[email protected]>)132c9ee] - docs: Clarify the format of request.headers (#1325) (Dobes Vandermeer <[email protected]>)5810f27] - docs: Removed Document in Progress note in Koa vs Express (#1336) (Andrew Peterson <[email protected]>)75233d9] - chore: Consider removing this return statement; it will be ignored. (#1322) (Vern Brandl <[email protected]>)04e07fd] - test: Buffer() is deprecated due to security and usability issues. so use the Buffer.alloc() instead (#1321) (Vern Brandl <[email protected]>)130e363] - docs: use 'fs-extra' instead of 'fs-promise' (#1309) (rosald <[email protected]>)2f2078b] - chore: Update PR-welcome badge url (#1299) (James George <[email protected]>)features
b7bfa71] - feat: change set status assert, allowing valid custom statuses (#1308) (Martin Iwanowski <[email protected]>)others
72f325b] - chore: add pr welcoming badge (#1291) (James George <[email protected]>)b15115b] - chore: Reduce unnecessary variable declarations (#1298) (call me saisai <[email protected]>)ad91ce2] - chore: license 2019 (dead-horse <[email protected]>)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 <[email protected]>)d9ef603] - chore: Optimize array split (#1295) (Mikhail Bodrov <[email protected]>)9be8583] - chore: replace ~~ with Math.trunc in res.length (option) (#1288) (jeremiG <[email protected]>)7e46c20] - docs: add link to the license file (#1290) (James George <[email protected]>)48993ad] - docs: Document other body types (#1285) (Douglas Wade <[email protected]>)acb388b] - docs: Add security vulnerability disclosure instructions to the Readme (#1283) (Douglas Wade <[email protected]>)a007198] - docs: Document ctx.app.emit (#1284) (Douglas Wade <[email protected]>)f90e825] - docs: response.set(fields) won't overwrites previous header fields(#1282) (Douglas Wade <[email protected]>)fc93c05] - docs: update readme to add babel 7 instructions (#1274) (Vikram Rangaraj <[email protected]>)5560f72] - chore: use the ability of content-type lib directly (#1276) (Jordan <[email protected]>)fixes
9905199] - fix: Status message is not supported on HTTP/2 (#1264) (André Cruz <[email protected]>)others
325792a] - docs: add table of contents for guide.md (#1267) (ZYSzys <[email protected]>)71aaa29] - docs: fix spelling in throw docs (#1269) (Martin Iwanowski <[email protected]>)bc81ca9] - chore: use res instead of this.res (#1271) (Jordan <[email protected]>)0251b38] - test: node v11 on travis (#1265) (Martin Iwanowski <[email protected]>)88b92b4] - doc: updated docs for throw() to pass status as first param. (#1268) (Waleed Ashraf <[email protected]>)fixes
4964242] - fix: use X-Forwarded-Host first on app.proxy present (#1263) (fengmk2 <[email protected]>)features
9c5c58b] - feat: use :authority header of http2 requests as host (#1262) (Martin Michaelis <[email protected]>)9146024] - feat: response.attachment append a parameter: options from contentDisposition (#1240) (小雷 <[email protected]>)others
d32623b] - docs: Update error-handling.md (#1239) (urugator <[email protected]>)fixes
2ee32f5] - fix: pin debug@~3.1.0 avoid deprecated warnning (#1245) (fengmk2 <[email protected]>)others
2180839] - docs: Update koa-vs-express.md (#1230) (Clayton Ray <[email protected]>)request.accept and delegate context.accept (#1209)request.protocol (#1203)UNPUBLISHED
package.engines.node to be more strictfresh@^0.5.2inspect() no longer crashes contextres.statusMessage for HTTP/2app.handleRequest() is exposedBuffer.from()package-lock.json to .gitignorelint --fixrequest.header in addition to request.headerspackage.engines.node requirement to >= 6.0.0
yarn, which errors when this semver range is not satisfiedcookies@~0.7.0fresh@^0.5.0callback() #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.exposekoa now follows semver!request.query objects are now always the same instance[email protected]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)devDependenciesapp.experimental = truecontent-type instead of media-typerBreaking change if you're using an old version of node v0.11! Otherwise, you should have no trouble upgrading.
>= 0.11.0 < 0.11.16Object.setPrototypeOf() instead of __proto__res.append()this.hrefx-powered-by response headerco@4statusesctx.throw(err, object) supportctx.throw(err, status, object) supporterr.expose to true when err.status not a valid http status coderequest.headers as request.headererr.status invalid lead to uncaughtException.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.thrown errors provide their own statuscontent-type w/ HEAD requests.is() to type-isnext in callback for nownext is app.callback()