breaking changes
- Update
http-errors
tov2.0.0
#1486ctx.throw
now requires a format ofctx.throw(status, error, properties)
. See: https://www.npmjs.com/package/http-errors
- Remove
res.redirect('back')
, addback()
method toctx
#1115 - Replace node querystring with
URLSearchParams
#1828 - Remove obsolete
createAsyncCtxStorageMiddleware
#1817
features
- Add support for web WHATWG #1830
updates
fixes
- Fix
exports.defaults
inpackage.json
#1630 - Fix leaky handles in tests #1838
- Fix body null checks #1814
- Fix reformatting redirect URLs #1805 #1804
- Fix passing
ctx
in error handler #1758
migrations
- Migrate from
jest
to the native node test runner #1845
fixes
- [
e98b8d1
] - fix: can not get currentContext in error handler (#1758) (Gxkl <[email protected]>)
- Supports node@12+ only.
- Removes generator deprecation messages. Generators are no longer supported. Koa no longer asserts if generators are used.
- Set
content-length: 0
if body is explicitly set tonull
@ognjenjevremovic #1528
- Use asyncLocalStorage to get current context from app, e.g.:
const ctx = app.currentContext
.
- fix: Do not response Content-Length if Transfer-Encoding is defined #1562 @charlyzeng
- fix: Set body to
null
ifctx.type = json
andctx.body = null
#1059 @likegun
fixes
- [
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: removeerror-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: supportwritableEnded
(#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 koajs/koajs.com#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 ofcontent-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]>)
- deps: upgrade all dependencies
- perf: avoid stringify when set header (#1220)
- perf: cache content type's result (#1218)
- perf: lazy init cookies and ip when first time use it (#1216)
- chore: fix comment & approve cov (#1214)
- docs: fix grammar
- test&cov: add test case (#1211)
- Lazily initialize
request.accept
and delegatecontext.accept
(#1209) - fix: use non deprecated custom inspect (#1198)
- Simplify processes in the getter
request.protocol
(#1203) - docs: better demonstrate middleware flow (#1195)
- fix: Throw a TypeError instead of a AssertionError (#1199)
- chore: mistake in a comment (#1201)
- chore: use this.res.socket insteadof this.ctx.req.socket (#1177)
- chore: Using "listenerCount" instead of "listeners" (#1184)
- test: node v10 on travis (#1182)
- fix tests: remove unnecessary assert doesNotThrow and api calls (#1170)
- use this.response insteadof this.ctx.response (#1163)
- deps: remove istanbul (#1151)
- Update guide.md (#1150)
- feat: ignore set header/status when header sent (#1137)
- run coverage using --runInBand (#1141)
- [Update] license year to 2018 (#1130)
- docs: small grammatical fix in api docs index (#1111)
- docs: fixed typo (#1112)
- docs: capitalize K in word koa (#1126)
- Error handling: on non-error throw try to stringify if error is an object (#1113)
- Use eslint-config-koa (#1105)
- Update mgol's name in AUTHORS, add .mailmap (#1100)
- Avoid generating package locks instead of ignoring them (#1108)
- chore: update copyright year to 2017 (#1095)
- fix bad merge w/ 2.4.0
UNPUBLISHED
- update
package.engines.node
to be more strict - update
fresh@^0.5.2
- fix:
inspect()
no longer crashescontext
- fix: gated
res.statusMessage
for HTTP/2 - added:
app.handleRequest()
is exposed
- fix: use
Buffer.from()
- test on node 7 & 8
- add
package-lock.json
to.gitignore
- run
lint --fix
- add
request.header
in addition torequest.headers
- add IPv6 hostname support
- fix: drop
package.engines.node
requirement to >= 6.0.0- this fixes
yarn
, which errors when this semver range is not satisfied
- this fixes
- bump
cookies@~0.7.0
- bump
fresh@^0.5.0
- added: return middleware chain promise from
callback()
#848 - added: node v7.7+
res.getHeaderNames()
support #930 - added:
err.headerSent
in error handling #919 - added: lots of docs!
NOTE: 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.
- upgrade mocha #900
- add names to
application
's request and response handlers #805 - breaking: remove unused
app.name
#899 - breaking: drop official support for node < 7.6
- Fix malformed content-type header causing exception on charset get (#898)
- fix: subdomains should be [] if the host is an ip (#808)
- don't pre-bound onerror [breaking change] (#800)
- fix
ctx.flushHeaders()
to useres.flushHeaders()
instead ofres.writeHead()
(#795) - fix(response): correct response.writable logic (#782)
- merge v1.1.2 and v1.2.0 changes
- include
koa-convert
so that generator functions still work- NOTE: generator functions are deprecated in v2 and will be removed in v3
- improve linting
- improve docs
- Fix malformed content-type header causing exception on charset get (#898)
- fix: subdomains should be [] if the host is an ip (#808)
- don't pre-bound onerror [breaking change]
- fix
ctx.flushHeaders()
to useres.flushHeaders()
instead ofres.writeHead()
- fix
response.writeable
during pipelined requests
- add support for
err.headers
inctx.onerror()
- see: #668
- note: you should set these headers in your custom error handlers as well
- docs: https://github.com/koajs/koa/blob/master/docs/error-handling.md
- fix
cookies
' detection of http/https- see: #614
- deprecate
app.experimental = true
. Koa v2 does not use this signature. - add a code of conduct
- test against the latest version of node
- add a lot of docs
- ensure parseurl always working as expected
- fix Application.inspect() – missing .proxy value.
- ensure parseurl always working as expected. #586
- fix Application.inspect() – missing .proxy value. Closes #563
- remove
co
and generator support completely - improved documentation
- more refactoring into ES6
- change the middleware signature to
async (ctx, next) => await next()
- drop node < 4 support and rewrite the codebase in ES6
- do not send a content-type when the type is unknown #536
- add
app.silent=<Boolean>
to toggle error logging @tejasmanohar #486 - add
ctx.origin
@chentsulin #480 - various refactoring
- add
use strict
everywhere
- add
- add
this.req
check forquerystring()
- don't log errors with
err.expose
koa
now follows semver!
- empty
request.query
objects are now always the same instance - bump
[email protected]
Breaking change if you're using this.get('ua') === undefined
etc.
For more details please checkout #438.
- make sure helpers return strict string
- feat: alias response.headers to response.header
- non-error thrown, fixed #432
req.host
andreq.hostname
now always return a string (semi-breaking change)- improved test coverage
- move babel to
devDependencies
- experimental es7 async function support via
app.experimental = true
- use
content-type
instead ofmedia-typer
Breaking change if you're using an old version of node v0.11! Otherwise, you should have no trouble upgrading.
- official iojs support
- drop support for node.js
>= 0.11.0 < 0.11.16
- use
Object.setPrototypeOf()
instead of__proto__
- update dependencies
- add
res.append()
- fix path usage for [email protected]
- add
this.href
- remove
x-powered-by
response header - fix the content type on plain-text redirects
- add ctx.state
- bump
co@4
- bump dependencies
- add this.message
- custom status support via
statuses
- use wider semver ranges for dependencies koa maintainers also maintain
- bump content-disposition
- bump statuses
- add this.assert()
- use content-disposition
- fix app.use() assertion #337
- bump a lot of dependencies
- add
ctx.throw(err, object)
support - add
ctx.throw(err, status, object)
support
- add: do not set
err.expose
to true when err.status not a valid http status code - add: alias
request.headers
asrequest.header
- add context.inspect(), cleanup app.inspect()
- update cookies
- fix
err.status
invalid lead to uncaughtException - fix middleware gif, close #322
- bump co
- bump parseurl
- bump type-is
- add `this.response.is()``
- remove
.status=string
andres.statusString
#298
- add
this.lastModified
andthis.etag
as both getters and setters for ubiquity #292. See koajs/koa@4065bf7 for an explanation. - refactor
this.response.vary()
to use vary #291 - remove
this.response.append()
#291
- fix res.type= when the extension is unknown
- assert when non-error is passed to app.onerror #287
- bump finished
- switch from set-type to mime-types
- bump type-is
- bump koa-compose
- add nicer error formatting
- add: assert object type in ctx.onerror
- change .status default to 404. Closes #263
- remove .outputErrors, suppress output when handled by the dev. Closes #272
- fix content-length when body is re-assigned. Closes #267
- fix length when .body is missing
- fix: make sure all intermediate stream bodies will be destroyed
- fix header stripping in a few cases
- change res.type= to always default charset. Closes #252
- remove ctx.inspect() implementation. Closes #164
- fix: inspection of
app
andapp.toJSON()
- fix: let
this.throw
n errors provide their own status - fix: overwriting of
content-type
w/HEAD
requests - refactor: use statuses
- refactor: use escape-html
- bump dev deps
- add request.hostname(getter). Closes #224
- remove response.charset and ctx.charset (too confusing in relation to ctx.type) [breaking change]
- fix a debug() name
- add context.charset
- add context.charset=
- add request.charset
- add response.charset
- add response.charset=
- fix response.body= html content sniffing
- change ctx.length and ctx.type to always delegate to response object [breaking change]
- remove app.jsonSpaces settings - moved to koa-json
- add this.response=false to bypass koa's response handling
- fix response handling after body has been sent
- changed ctx.throw() to no longer .expose 5xx errors
- remove app.keys getter/setter, update cookies, and remove keygrip deps
- update fresh
- update koa-compose
- add ctx.host= delegate
- add req.host=
- add: context.throw supports Error instances
- update co
- update cookies
- add better 404 handling
- add check for fn._name in debug() output
- add explicit .toJSON() calls to ctx.toJSON()
- add support for .throw(status, msg). Closes #130
- add GeneratorFunction assertion for app.use(). Closes #120
- refactor: move
.is()
totype-is
- refactor: move content negotiation to "accepts"
- refactor: allow any streams with .pipe method
- remove
next
in callback for now
- update co, koa-compose, keygrip
- use on-socket-error
- add throw(status, msg) support
- assert middleware is GeneratorFunction
- ducktype stream checks
- remove
next
isapp.callback()
- fix: cleanup socker error handler on response