Commit Graph

356 Commits (master)

Author SHA1 Message Date
Tejas Manohar ed19e67055 refactor to use ES6 template strings
replace string interp w/ templates in core

use string templating es6 in benchmarks

template strings in tests dir
2015-10-11 21:22:33 -07:00
Tejas Manohar 9f27c1c414 refactor to use ES6 const
change var to const for static require()'d modules

make constant var references in app use const keyword

refactor context to use es6 constants

refactor request to use es6 constants, let block-scope coming next

use const in response object for static refs

make context tests use es6 constants

experimental unit tests -> const

use const for static references in unit test over req

use const for static refs in res tests

update app tests to use const for static refs

make the context test use es6 constants for static refs

use constants in the README
es6 constants seem to work in --harmony on 0.12 too

use const's for immutable refs in benchmarks

ensure all JS files have blank newline at top

add newline to bottom of file where missing

add a webchat freenode link to irc channel

no need to assign error in catch{}-able test

app.silent option to turn off err logging

keep test env logging for backwards-compat
2015-10-11 21:22:33 -07:00
Tejas Manohar 96c1e0998f don't use 'exports', only 'module.exports'
closes #513
2015-10-11 21:18:32 -07:00
Tejas Manohar 0b1b49cb8a use strict in all .js files
closes #508
2015-10-11 16:08:32 -07:00
fengmk2 f875eb0c30 Merge pull request #486 from tejasmanohar/app_silent
app.silent option to turn off err logging
2015-10-09 11:22:58 +08:00
Tejas Manohar 6c19c41c09 keep test env logging for backwards-compat 2015-10-08 19:02:36 -05:00
Tejas Manohar ea4754e332 ensure all JS files have blank newline at top 2015-10-05 18:18:03 -05:00
Tejas Manohar c369b33b23 app.silent option to turn off err logging 2015-10-05 17:51:26 -05:00
C.T. Lin 85860587cc implement ctx.origin 2015-09-20 23:49:37 +08:00
dead_horse 36a933375b fix comment 2015-08-25 16:49:05 +08:00
gyson 1be333ca31 change respond() to a regular function
remove `yield* next` in lib/application, which caused annoy `A promise
was converted into a generator …` message.

benchmark result:
* when bench with native Promise, it has no impact for both stable and
experimental ones.
* when bench with Bluebird, it’s about 5-10% faster than original for
both stable and experimental ones.

closes #472
2015-08-23 13:55:20 -07:00
AlexeyKhristov 8804b7ba6f add this.req check for querystring() 2015-08-22 14:40:36 -07:00
Sterling Williams 391650518f Do not log on expected http errors 2015-08-22 14:39:38 -07:00
Aaron Heckmann 6392ee0407 return same object from request.query
Before this change, calling request.query when there was no querystring
resulted in a new object created and returned each time. If the resulting
object was ever changed, accessing request.query would not reflect it and
cause weird bugs.
2015-05-21 12:55:58 -07:00
dead_horse c8eb5eefb1 make sure helpers return strict string 2015-04-29 01:44:02 +08:00
dead_horse 1c5cb6f691 feat: alias response.headers to response.header 2015-04-23 17:28:31 +08:00
dead_horse b6aea969f8 non-error thrown, fixed #432 2015-04-14 10:34:55 +08:00
fengmk2 dd3a0fcdfa make sure req.host and req.hostname return strict string
Should return empty string when no host present.
2015-03-30 17:44:32 +08:00
fengmk2 8b14b91bae remove body empty detect 2015-03-29 14:40:09 +08:00
fengmk2 1edd6ec69a test: improve test coverage for application and response 2015-03-29 14:40:09 +08:00
Jonathan Ong c5545cd918 add experimental async function support 2015-02-14 17:33:08 -08:00
Douglas Christopher Wilson 9dd99f5da2 Parse Content-Type with "content-type" instead of "media-typer" 2015-02-07 21:24:04 -05:00
Jonathan Ong 5b7587bb7e use Object.setPrototypeOf() instead of __proto__ 2015-02-01 16:39:44 -08:00
Jesus Rodriguez 68843e0cb3 Remove unused imports and exports 2015-01-29 15:39:06 -08:00
Jesús Rodríguez Rodríguez 6c340455f8 Change request's "ips" regex to match others.
So I am in this silly quest of cloning the repo, deleting all the code on it and rewriting it again step by step to pass the tests. It is a acceptable way to learn how koa works.

Anyway, I saw that the regex used in `ips` doesn't match the others on the file, so I thought it would be good to change it.
2015-01-29 17:51:09 +01:00
TJ Holowaychuk 255a39b876 refactor res.append()
OCDOCDOCD
2015-01-27 10:14:57 -08:00
dead_horse 5a3f32dfdd Add res.append(field, val) to append headers 2015-01-26 02:20:08 +08:00
Rui Marinho d108926f46 Fix url.format usage of path on node@0.11.15
node@0.11.15 was released with a patch that adds support for `path` to
url.format
(d312b6d15c).

However, this broke `npm install` for git+ssh urls and as such has been
reverted on io.js, making it work like on node@0.11.14 again.

913addbff5
2015-01-23 02:09:21 +00:00
fengmk2 3e66157472 ctx.request.href: get full request url, include `protocol`, `host` and `originalUrl`
Useful on those scenes need current full request url, like `OAuth`.
2014-12-27 14:17:00 -08:00
TJ Holowaychuk e4076ce930 remove x-powered-by. Closes #372 2014-12-04 01:01:57 -08:00
zensh 28ec7892a8 remove unnecessary "require('http')" 2014-11-29 09:42:01 +08:00
dead_horse 57eb6a10df set content-type for redirect when accpect plain 2014-11-27 09:25:44 -08:00
TJ Holowaychuk b854d00363 Merge pull request #366 from MatthewMueller/master
add: ctx.locals as a recommended namespace for passing information to the frontend
2014-11-18 08:19:19 -08:00
Matthew Mueller 6847fe68bd added: ctx.state as the recommended namespace for passing information through middleware and routes. 2014-11-18 00:54:14 -08:00
dead_horse 3f183a196b upgrade co@4 2014-11-17 21:21:00 +08:00
dead_horse eff4886cd8 ocd 2014-11-16 21:52:14 +08:00
dead_horse efdd7d3716 less strict for status, close #350
add res.message[=]
2014-10-09 23:20:53 +08:00
Jonathan Ong 2f0fe55ae3 .throw() -> http-errors, .assert() -> http-assert 2014-09-20 10:46:28 -07:00
fengmk2 cca2438f64 ctx.attachment support no-ascii filename 2014-09-19 13:46:08 +08:00
TJ Holowaychuk 7b3e3cbad5 add fn assertion to app.use(). Closes #337 2014-08-20 13:28:34 -07:00
Jonathan Ong 9455726c00 finished -> on-finished
removes the writable test because it’s fake and there are tests for
on-finished for this case
2014-08-16 02:58:06 -07:00
Jonathan Ong 920909c546 dethroy -> destroy 2014-08-14 23:34:25 -07:00
Ian Storm Taylor 5931714bd8 make the second argument to throw properly optional 2014-08-12 13:19:14 -07:00
dead_horse f6626967b2 ignore props.status in ctx.throw 2014-08-09 13:38:54 +08:00
Ian Storm Taylor bcac468f7c add the ability to pass `props` to `context.throw` 2014-08-08 12:37:04 -07:00
TJ Holowaychuk f9eb219ecf Merge pull request #330 from dead-horse/onerror-status
Onerror status
2014-08-07 19:04:10 -07:00
dead_horse fa5948cca3 do not expose when err.status not valid 2014-08-08 10:02:24 +08:00
dead_horse 5ca9f451a7 alias request.headers as request.header 2014-08-07 00:04:21 +08:00
dead_horse e2f61595b8 fix err.status invalid lead to uncaughtException 2014-08-06 21:32:35 +08:00
Jonathan Ong 1605f33760 add context.inspect(), cleanup app.inspect()
closes #323 closes #250
2014-08-02 18:24:53 -07:00
dead_horse fd019688ec use parseurl 2014-07-14 17:57:03 +08:00
dead_horse 5b18f8bab0 parse req.type by media-typer 2014-07-09 23:52:56 +08:00
Jonathan Ong 690604b6d2 remove this.error()
it’s been deprecated for long enough
2014-07-06 02:36:12 -07:00
dead_horse e791100993 add more test case, fix req.idempotent 2014-07-06 16:52:02 +08:00
Jonathan Ong 31ba115231 res: add .is() 2014-06-13 00:30:59 -07:00
TJ Holowaychuk 696d55d73b refactor res.status= 2014-06-10 14:33:13 -07:00
TJ Holowaychuk ed8beb7d79 Merge pull request #299 from tmilewski/remove-status-as-string
remove .status=string
2014-06-10 14:32:13 -07:00
TJ Holowaychuk 71536b35be remove res.statusString 2014-06-10 14:31:41 -07:00
tmilewski c2322f2b3d remove .status=string #298 2014-06-10 16:38:25 -04:00
Jonathan Ong 4a6b49cd30 delegate: remove this.append() 2014-06-07 03:48:03 -07:00
Jonathan Ong dc59a604e5 Merge pull request #292 from koajs/context-delegate
context: delegate etag/last-modified
2014-06-07 03:39:19 -07:00
TJ Holowaychuk 63a4297084 Merge pull request #291 from koajs/vary
remove response.append(), use vary module
2014-06-06 23:00:39 -07:00
Jonathan Ong 1a32ecac31 fix res.type= for unknown types
because we changed from mime to mime-types. ideally, we should just not
set the content-type, but this way it’s backwards compatible. we can
change it later.
2014-06-06 16:26:03 -07:00
TJ Holowaychuk 90c528c5e8 remove if (!err) from app.onerror
we assert instanceof Error right below
2014-06-05 16:37:28 -07:00
Jonathan Ong 01dd6a33c5 context: delegate etag/last-modified 2014-06-05 16:19:29 -07:00
Jonathan Ong fdbd16acc3 remove response.append(), use vary module 2014-06-05 16:06:15 -07:00
dead_horse 4979077562 assert non-error obj pass to app.onerror, fixed #287 2014-06-04 14:16:25 +08:00
Jonathan Ong 008f0554c6 set-type -> mime-types
removes mime dependencies from the dep tree.
liberally sets charset because some express users complained about bad
browsers using the default charset.
2014-06-03 21:44:25 -07:00
dead_horse f76268ba58 remove req.host=, fix docs 2014-05-05 12:45:33 +08:00
TJ Holowaychuk 1d9a0e1d31 ocd 2014-05-02 12:21:55 -07:00
Yazhong Liu b969ecf223 request: complete idempotent methods
see rfc2616: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.

Intact idempotent HTTP methods should be:
GET, HEAD, PUT, DELETE, OPTIONS and TRACE
2014-05-03 02:56:08 +08:00
TJ Holowaychuk c16211c5d6 refactor 2014-05-01 17:46:09 -07:00
TJ Holowaychuk f17629d19f remove .outputErrors, suppress output when handled by the dev. Closes #272 2014-05-01 16:29:37 -07:00
TJ Holowaychuk 4ff54e5c13 ocd 2014-05-01 16:25:08 -07:00
TJ Holowaychuk 80ace2c0bb add nicer error formatting 2014-05-01 16:18:40 -07:00
TJ Holowaychuk 15ab936001 change .status default to 404. Closes #263 2014-04-28 21:17:46 -07:00
dead_horse 48ac0669c5 fix content-length when body is re-assigned. Closes #267 2014-04-28 20:34:26 -07:00
TJ Holowaychuk 952dca336d rename setType -> getType
sounds weird
2014-04-28 20:12:53 -07:00
Jonathan Ong 163e59c0d5 refactor to use set-type 2014-04-27 01:53:07 -07:00
Jonathan Ong 0cacc5706a use koa-is-json 2014-04-25 00:15:33 -07:00
TJ Holowaychuk 94dd87741e ocd 2014-04-24 17:58:37 -07:00
dead_horse 6a2ed3e6eb assert object type in ctx.onerror 2014-04-25 08:34:11 +08:00
dead_horse 5de9d962a0 remove unused debug 2014-04-25 00:07:37 +08:00
Jonathan Ong e472a18010 refactor: use mime-extended 2014-04-19 07:45:57 -07:00
TJ Holowaychuk 74cb04e7c1 refactor 2014-04-15 08:39:40 -07:00
TJ Holowaychuk 0a954c8d99 ocd 2014-04-15 08:35:10 -07:00
dead_horse b06bb3cb85 simplify respond 2014-04-15 23:31:11 +08:00
TJ Holowaychuk 990caf4e71 refactor 2014-04-14 15:36:39 -07:00
TJ Holowaychuk 95a78c3a44 Merge pull request #255 from dead-horse/stream-body
make sure all intermediate stream bodies will be destroy
2014-04-14 15:34:13 -07:00
dead_horse 69c82f63b5 fix length when .body is missing 2014-04-13 11:35:28 +08:00
TJ Holowaychuk bb0a0b3659 ocd 2014-04-12 10:59:04 -07:00
dead_horse 64aad129d3 fix this.status= in this.body
fix default status set bug in this.body=null.
do not call this.status= if this.status exist.
make sure empty content status remove content headers
2014-04-10 11:47:30 +08:00
TJ Holowaychuk 3d8ab61fa1 change res.type= to always default charset. Closes #252 2014-04-09 09:34:50 -07:00
dead_horse 329d2b94db make sure all intermediate stream bodies will be destroy and have error handle 2014-04-10 00:02:13 +08:00
TJ Holowaychuk dfe8e95be4 remove ctx.inspect() implementation. Closes #164
obscures user-defned properties. ideally we fix it so .req / .res are not so verbose but meh for now
2014-04-05 19:15:14 -07:00
Dmitry Mazuro 9e8d6a3aa0 ocd 2014-03-24 21:21:15 +03:00
Jonathan Ong 52cb57cc7e fix overwriting of content-type w/ HEAD requests 2014-03-23 04:01:14 -07:00
Jonathan Ong c382305d4f refactor: use escape-html
dat SLOC
2014-03-12 18:30:16 -07:00
Jonathan Ong 182f9d6fa4 refactor: use statuses 2014-03-12 18:29:14 -07:00
TJ Holowaychuk 9b1651a8e6 fix inspection of app. Closes #108 2014-03-11 11:06:57 -07:00
TJ Holowaychuk 895cf4040c add app.toJSON() 2014-03-11 11:01:33 -07:00
New Now Nohow 0a223f2bb7 Let errors provide their own status.
When calling `ctx.throw`, you're allowed to provide an error object and a
status code. The status code is later set as the `status` property of the error
object. If no status code is provided, it defaults to 500. However, this
happens even if the error object already had a `status` property.

This commit allows an error's pre-existing `status` property to be used in
conjunction with `ctx.throw`.

If the status code is below 500, the error message will be exposed to the user
in the HTTP response. It would be nice to have some Error subclasses that
always have the same status code, because then we could just write
`ctx.throw(new WhateverError())`, and define which 4xx error code we want in
the definition of `WhateverError` itself. If, for example, an
`AuthenticationError` is always meant to go along with a 401, then it would be
nice to just have that knowledge in the class definition.
2014-03-06 22:54:25 -05:00
TJ Holowaychuk b1f0abd16d Revert "add response.charset accessor and ctx.charset alias"
This reverts commit 94413b1bd4.
2014-03-06 18:05:01 -08:00
TJ Holowaychuk c50012a636 Merge pull request #225 from dead-horse/issue224-host-confused
add request.hostname(getter), fixed #224
2014-02-26 10:54:40 -08:00
Robert Sköld e77e5a4bdc Debug name koa:context -> koa:request 2014-02-26 09:51:45 +01:00
dead_horse 72a9b69146 add request.hostname(getter), fixed #224
make request.host and request.hostname work as node url lib
http://nodejs.org/api/url.html#url_url
this commit will change older request.host(getter)
2014-02-26 14:03:05 +08:00
Jonathan Ong cb532b7bef this.writable to check if the socket is writable
because node sucks haha
2014-02-15 02:06:08 -08:00
TJ Holowaychuk 785aba879c add request.charset 2014-02-14 09:38:59 -08:00
TJ Holowaychuk 94413b1bd4 add response.charset accessor and ctx.charset alias 2014-02-14 09:33:10 -08:00
TJ Holowaychuk 08149052fa change ctx.length and ctx.type to always delegate to response object [breaking change] 2014-02-14 09:16:39 -08:00
Jonathan Ong c7ff0e2ac1 response.body: fix html content sniffing for strings
closes #214
2014-02-13 18:35:25 -08:00
TJ Holowaychuk aa08845c70 remove app.jsonSpaces setting. Closes #202 2014-01-31 18:39:47 -08:00
Jonathan Ong ea5757ff57 remove app.keys getter/setter
closes #203
2014-01-31 16:09:29 -08:00
Jonathan Ong c5655e093a bump cookies to 0.4.0
no longer need to do that keygrip stuff, though i’m more inclined to
remove all the error checking.
2014-01-31 13:52:27 -08:00
TJ Holowaychuk 3a50280445 Merge pull request #200 from koajs/fix/ctx.onerror
context.onerror: fix response handling
2014-01-24 15:03:02 -08:00
Jonathan Ong 2bc3bb7327 this.respond=false for bypassing koa's response handling
closes #198
2014-01-24 14:38:40 -08:00
Jonathan Ong 2d1147ed21 context.onerror: fix response handling
closes #199
2014-01-24 14:29:57 -08:00
TJ Holowaychuk 0610a841df change ctx.throw() to no longer .expose 5xx errors. Closes #197 2014-01-20 18:44:07 -08:00
pana 30d200dc09 remove the vary method from request object 2014-01-17 18:19:51 +08:00
Jonathan Ong ea1a631bb1 bump finished and mocha 2014-01-16 22:33:02 -08:00
TJ Holowaychuk 3bb7a63b77 ocd 2014-01-13 06:36:49 -08:00
TJ Holowaychuk 53b1b8133c refactor with delegation utility 2014-01-13 06:36:10 -08:00
TJ Holowaychuk 26fb6a138a add ctx.host= delegate 2014-01-07 17:22:46 -08:00
jeromew 93351bf845 Add req.host= 2014-01-07 21:09:01 +00:00
Veselin Todorov 6cd4c776f8 context.throw supports Error instances 2014-01-04 10:28:24 +02:00
Jonathan Ong 3eb894ee85 res: 205 is a no body response code too!
not sure anyone cares enough about this for a test. plus, it’ll still
“work”
2013-12-30 22:25:44 -08:00
TJ Holowaychuk dc96d9828b refactor Response#status= 2013-12-30 10:04:34 -08:00
TJ Holowaychuk 41502429de Merge pull request #163 from koajs/404
better 404 handling
2013-12-30 10:02:23 -08:00
Jonathan Ong e71937491b refactor: remove unused argument 2013-12-29 22:33:59 -08:00
Jonathan Ong b7b1c0fd44 better 404 handling 2013-12-29 22:26:19 -08:00
Jonathan Ong 51da356a5f debug: check for fn._name as well 2013-12-29 16:04:06 -08:00
TJ Holowaychuk 7c3181e4d7 fix ctx.inspect() after previous commit
otherwise .body will be missing
2013-12-29 11:20:51 -08:00
TJ Holowaychuk 14fe56e632 add explicit .toJSON() calls to ctx.toJSON() 2013-12-29 10:19:21 -08:00
TJ Holowaychuk 88fb4c841d remove trailing comma 2013-12-29 05:46:12 -08:00
Jonathan Ong 20615b808d refactor: move .is to type-is 2013-12-27 18:56:09 -08:00
Jonathan Ong 7fe4133b4a refactor: move content negotiation to accepts 2013-12-27 18:56:02 -08:00
Jonathan Ong 0d9336622c use yield *next internally 2013-12-22 14:48:28 -08:00
mako-taco 9fe483ca76 handle manually written responses 2013-12-22 14:46:36 -08:00
TJ Holowaychuk 87c03aff61 add support for .throw(status, msg). Closes #130 2013-12-20 15:34:16 -08:00
Jonathan Ong 879293f548 use on-socket-error 2013-12-20 14:39:53 -08:00
Jonathan Ong 61d437d746 remove `next` in callback for now
revisit mounting later
2013-12-19 23:13:37 -08:00
Jonathan Ong 38d5bad4d1 bumpity boop co 2013-12-19 22:33:35 -08:00
Jonathan Ong 938a67c94f lint: remove unused requires
duh.
2013-12-19 21:16:19 -08:00
Jonathan Ong 34104c9af3 refactor: allow any streams with .pipe method 2013-12-19 21:14:47 -08:00
TJ Holowaychuk 70971dcb53 add GeneratorFunction assertion for app.use(). Closes #120
breaks old old shit but thats ok, super early in the game
2013-12-19 10:03:08 -08:00
TJ Holowaychuk 171892c669 fix: cleanup socker error handler on response 2013-12-19 08:53:48 -08:00
Eivind Fjeldstad ddde5f96ef add deprecation warning for ctx.error
Didn't notice the change until now. A warning would be useful
2013-12-19 11:48:32 +01:00
TJ Holowaychuk 1769f9c431 add socket error-handling. Closes #114 2013-12-17 17:37:35 -08:00
Jonathan Ong 0c330ffb1a lint: remove unused references, fix global leak 2013-12-09 01:53:18 -08:00
TJ Holowaychuk e78349a73d refactor ctx.toJSON() to recurse. Closes #108 2013-12-02 09:08:01 -08:00