Comparar commits

...

1546 Commits

Autor SHA1 Mensagem Data
TJ Holowaychuk f90401b8c0 Release 3.0.0beta3 2012-06-15 11:40:49 -07:00
TJ Holowaychuk a32e705d49 Merge branch 'master' of github.com:visionmedia/express 2012-06-15 11:39:04 -07:00
TJ Holowaychuk 640cf4ca21 Changed: res.send() always checks freshness 2012-06-15 11:38:51 -07:00
TJ Holowaychuk 442e782692 Merge pull request #1176 from nullfirm/master
add hogan.js template engine for express@3.0
2012-06-15 09:01:01 -07:00
Min-su Ok 0a874ad8b3 add hogan.js template engine for express@3.0 2012-06-14 18:44:53 +09:00
Min-su Ok 18083f0c13 add hogan.js template engine for express@3.0 2012-06-14 18:44:46 +09:00
TJ Holowaychuk f25aaf11e9 Added another example to content-negotiation 2012-06-13 17:32:44 -07:00
TJ Holowaychuk 9b09257b28 upgrade connect 2012-06-11 09:53:15 -07:00
TJ Holowaychuk f895516a2c Added fresh dep 2012-06-10 12:21:03 -07:00
TJ Holowaychuk 76aa718b75 update markdown docs 2012-06-08 14:11:52 -07:00
TJ Holowaychuk 0acee67339 Merge branch 'master' of github.com:visionmedia/express 2012-06-08 09:47:56 -07:00
TJ Holowaychuk 4475e335ef mime export test 2012-06-08 09:47:45 -07:00
TJ Holowaychuk 895673141d Fixed: expose connects mime module. Cloases #1165 2012-06-08 09:47:13 -07:00
TJ Holowaychuk e4cd99ae1c Merge pull request #1164 from danneu/patch-2
Removed extra "of" in `res.set` comment.
2012-06-07 08:52:04 -07:00
Dan Neumann c39a398d83 Removed extra "of" in res.set comment. 2012-06-07 00:17:45 -05:00
TJ Holowaychuk 2787bd5bf0 Release 3.0.0beta2 2012-06-06 14:46:52 -07:00
TJ Holowaychuk 6aaa7dc26d Added + support to the router 2012-06-06 14:38:22 -07:00
TJ Holowaychuk ebf60d2340 coerce res.cookie values to strings 2012-06-06 12:34:51 -07:00
TJ Holowaychuk 02d43846f6 fixing cookies for connect 2.3.1 2012-06-06 12:25:14 -07:00
TJ Holowaychuk 8930cd563c update connect dep 2012-06-06 12:00:35 -07:00
TJ Holowaychuk 2b90cd7d51 Added req.host 2012-06-05 19:24:49 -07:00
TJ Holowaychuk d5fde6a4b9 added test to illustrate req.params as an array 2012-06-05 19:02:28 -07:00
TJ Holowaychuk 99b2e0fa08 refactored req.param() 2012-06-05 18:59:26 -07:00
TJ Holowaychuk ebcb1ca90e Changed req.param() to check route first
body / query-string taking precedence is a little sketchy
but you should use this method sparingly, think of it
as PHPs $_REQUEST
2012-06-05 18:51:42 -07:00
TJ Holowaychuk 1763b073f9 docs 2012-06-04 09:48:19 -07:00
TJ Holowaychuk 908e467548 docs 2012-06-02 20:04:51 -07:00
TJ Holowaychuk 3c6ad5350b Release 3.0.0beta1 2012-06-01 12:27:19 -07:00
TJ Holowaychuk 0ff3aa4b20 update deps 2012-06-01 12:24:17 -07:00
TJ Holowaychuk fd42b5c42c mention res.format() callback 2012-06-01 09:15:35 -07:00
TJ Holowaychuk 1311f2ac25 Fixed res.redirect() 406. Closes #1154 2012-06-01 09:14:27 -07:00
TJ Holowaychuk 82a9817061 Release 3.0.0alpha5 2012-05-30 16:48:22 -07:00
TJ Holowaychuk 685eec0149 assertion for req.get() => undefined. Closes #1152 2012-05-30 14:25:43 -07:00
TJ Holowaychuk 910dae16ab misc refactor 2012-05-29 18:51:08 -07:00
TJ Holowaychuk fd53197b46 Added req.ip tests 2012-05-29 18:46:37 -07:00
TJ Holowaychuk d84d0b69ef Added req.ip 2012-05-29 18:46:07 -07:00
TJ Holowaychuk b694ba27be Changed: dont reverse req.ips
parse them as-is. im impartial about
the ordering but this spares some CPU. if you
prefer the other way let me know
2012-05-29 18:41:00 -07:00
TJ Holowaychuk e3cbac2d77 Fixed setting check for req.ips 2012-05-29 18:36:46 -07:00
TJ Holowaychuk bbaa295ee2 Merge branch 'master' of github.com:visionmedia/express 2012-05-27 11:53:06 -07:00
TJ Holowaychuk 1150a88001 Added { signed: true } option to res.cookie() 2012-05-27 11:51:32 -07:00
TJ Holowaychuk 58cfd60000 moved executable css middleware lower 2012-05-21 20:40:49 -03:00
TJ Holowaychuk fcf268742d update commander 2012-05-16 21:34:29 -03:00
TJ Holowaychuk 30d71c8f8f ocd 2012-05-14 08:49:37 -07:00
TJ Holowaychuk c3f9398b12 Merge pull request #1135 from adrianolaru/jade-default-doctype
Changed jade default doctype to html5
2012-05-12 06:32:38 -07:00
Adrian Olaru f1ac6ab764 changed jade default doctype to html5 2012-05-12 16:19:02 +03:00
TJ Holowaychuk d6ca5f71bc Added test for res.sendfile() express.static() options 2012-05-10 18:00:41 -07:00
TJ Holowaychuk cdca9cf88f Added res.download() body test 2012-05-10 17:15:50 -07:00
TJ Holowaychuk 5840b42f4a Added res.download() tests 2012-05-10 17:11:43 -07:00
TJ Holowaychuk a5be68b5b2 refactored res.get() tests 2012-05-10 13:59:27 -07:00
TJ Holowaychuk 9fda13bc25 Added url rewriting test 2012-05-10 13:13:03 -07:00
TJ Holowaychuk 125dd7a594 Prepared release 3.0.0alpha4 2012-05-09 15:18:21 -07:00
TJ Holowaychuk df2584cc3b Added: allow [] in jsonp callback. Closes #1128 2012-05-09 09:39:52 -07:00
TJ Holowaychuk 4de95c0e7b connect 2.2.2 2012-05-07 13:58:17 -07:00
TJ Holowaychuk 9ed1f2a446 Removed blog example
need a better one
2012-05-07 12:52:56 -07:00
TJ Holowaychuk 833a4873a4 misc refactor of blog example 2012-05-07 12:44:03 -07:00
TJ Holowaychuk 6ca1807372 Merge branch 'master' of github.com:visionmedia/express 2012-05-07 12:01:19 -07:00
TJ Holowaychuk 9da3e9ccc7 Merge pull request #1127 from benatkin/template-port-from-env
get port from env in template (fix for #1118)
2012-05-07 11:59:32 -07:00
Ben Atkin 5f65c36171 use get() with single argument to read setting vars 2012-05-07 12:51:41 -06:00
Ben Atkin d64bb2f886 use process.env.PORT. fix for #1118 2012-05-06 23:49:06 -06:00
TJ Holowaychuk fc179c8fc3 Prepared release 3.0.0alpha3 2012-05-04 17:19:27 -07:00
TJ Holowaychuk 8235af47fe Merge pull request #1124 from pyrotechnick/patch-1
path.existsSync is deprecated. It is now called `fs.existsSync`.
2012-05-04 08:59:10 -07:00
Nicholas Kinsey 908f3da3da path.existsSync is deprecated. It is now called fs.existsSync. 2012-05-05 00:32:53 +10:00
TJ Holowaychuk 64aac199de any engine 2012-05-03 17:33:09 -07:00
TJ Holowaychuk 503c45840f ws 2012-05-03 09:35:27 -07:00
TJ Holowaychuk 6f102ff40f Added view-locals example 2012-05-03 09:35:14 -07:00
TJ Holowaychuk 6e26a8d366 fixed two res.locals.use() tests 2012-05-03 08:45:07 -07:00
TJ Holowaychuk d9aea70ccc removed file heading comments 2012-05-03 08:43:42 -07:00
TJ Holowaychuk dd33ef2eb6 Added res.locals.use(). Closes #1120 2012-05-03 08:42:18 -07:00
TJ Holowaychuk f3a32f2e29 Changed: moved static() in generated apps below router 2012-05-02 19:05:47 -07:00
TJ Holowaychuk 1a3e40d818 Changed: res.send() only set ETag when not previously set 2012-05-02 16:20:35 -07:00
TJ Holowaychuk 18cdb3d845 Added public app.routes. Closes #887
keep things simple for now :)
2012-05-02 16:19:41 -07:00
TJ Holowaychuk 0fca62c037 misc refactoring 2012-05-02 15:59:48 -07:00
TJ Holowaychuk e9cd82b72d more * tests 2012-05-02 15:52:26 -07:00
TJ Holowaychuk 4d9ad21047 refactored * routing test 2012-05-02 15:49:38 -07:00
TJ Holowaychuk 1cc2dc7150 debug() originalUrl in router 2012-05-01 16:25:10 -07:00
TJ Holowaychuk 3dc88b2c0c refine express(1) generated stylus middleware 2012-04-30 17:54:16 -07:00
TJ Holowaychuk 53f1ffb4e7 ocd 2012-04-30 14:51:04 -07:00
TJ Holowaychuk 579a1be7c8 Added res.send() If-None-Match test 2012-04-28 20:02:38 -07:00
TJ Holowaychuk c0a68fcd0d Added Buffer ETag support to res.send() 2012-04-28 20:00:30 -07:00
TJ Holowaychuk b79853e9bd updated crc with buffer patch 2012-04-28 19:50:36 -07:00
TJ Holowaychuk f86838ceab connect 2.2.1 dep 2012-04-28 10:20:00 -07:00
TJ Holowaychuk 809e0b8c92 merged 2012-04-27 10:46:27 -07:00
TJ Holowaychuk a58e3deac2 Added conditional-GET support to res.send() 2012-04-27 10:44:39 -07:00
TJ Holowaychuk 430699c082 more benchmarks 2012-04-26 22:11:35 -07:00
TJ Holowaychuk b04233981f more benchmarks 2012-04-26 22:09:14 -07:00
TJ Holowaychuk de10194f33 build status image 2012-04-26 18:46:00 -07:00
TJ Holowaychuk 7c2e1ad0ed .contentType -> .type() in core 2012-04-26 14:32:28 -07:00
TJ Holowaychuk 67ddb429e3 Added: coerce res.set() values to strings
if you use res.get() this can bite you in the ass
if you set an etag to a number for example :)
good times
2012-04-26 13:52:37 -07:00
TJ Holowaychuk a169cc7119 render bench 2012-04-26 12:36:26 -07:00
TJ Holowaychuk 9719b58575 error/index.js 2012-04-26 04:57:28 -07:00
TJ Holowaychuk 13c18fa363 clean up error example 2012-04-26 04:56:23 -07:00
TJ Holowaychuk c17ad6ef65 error-pages/index.js 2012-04-26 04:55:24 -07:00
TJ Holowaychuk 2c14d0c966 clean up weird whitespace in error-pages acceptance tests 2012-04-26 04:55:06 -07:00
TJ Holowaychuk 2cd1783613 fixed hello-world 2012-04-26 04:53:56 -07:00
TJ Holowaychuk 06db11cd61 removed old form example 2012-04-26 04:51:48 -07:00
TJ Holowaychuk 125421ec45 removed old github example 2012-04-26 04:51:25 -07:00
TJ Holowaychuk cc84f40d61 misc 2012-04-26 04:46:37 -07:00
TJ Holowaychuk c130918135 more mvc acceptance tests 2012-04-26 04:42:22 -07:00
TJ Holowaychuk babeb4633e make test now runs unit / acceptance tests 2012-04-26 04:41:06 -07:00
TJ Holowaychuk 30167356f2 less verbose example apps when testing 2012-04-26 04:40:04 -07:00
TJ Holowaychuk 441b309959 Fixed req/res proto inheritance 2012-04-26 04:38:33 -07:00
TJ Holowaychuk b7b032f8e0 test for updating mvc user 2012-04-26 04:34:37 -07:00
TJ Holowaychuk 50f43462ae logger for mvc 2012-04-26 04:32:25 -07:00
TJ Holowaychuk bd2a972dba fixed mvc example 404 2012-04-26 04:28:29 -07:00
TJ Holowaychuk 3c162ae030 implement "before" middleware for mvc example 2012-04-26 04:23:21 -07:00
TJ Holowaychuk 3c12757d9e more tests 2012-04-26 04:10:57 -07:00
TJ Holowaychuk fa746cc027 added 404 and 5xx pages to mvc example 2012-04-26 04:08:58 -07:00
TJ Holowaychuk 1e85178c73 started mvc acceptance tests 2012-04-26 04:02:14 -07:00
TJ Holowaychuk d0bc0ad2ca Added new mvc example 2012-04-26 03:53:49 -07:00
TJ Holowaychuk c33f1bac08 mounted hw bench 2012-04-26 03:24:42 -07:00
TJ Holowaychuk 58d522d824 restore req/res proto 2012-04-26 03:22:44 -07:00
TJ Holowaychuk 858e4dccdc ws 2012-04-26 03:12:17 -07:00
TJ Holowaychuk c2054077f4 Release 3.0.0alpha2 2012-04-26 03:10:07 -07:00
TJ Holowaychuk 754dd320ff .npmignore lib-cov 2012-04-26 02:58:29 -07:00
TJ Holowaychuk a376980a69 update headers 2012-04-25 21:49:43 -07:00
TJ Holowaychuk cf7d710bc1 refactored res.sendfile() 2012-04-25 21:48:19 -07:00
TJ Holowaychuk 8f8740028c Fixed: use app.get() for all core settings 2012-04-25 21:40:53 -07:00
TJ Holowaychuk b0e03eb8a8 make expressInit() middleware self-aware 2012-04-25 21:37:10 -07:00
TJ Holowaychuk 929dc703ca unused var 2012-04-25 21:36:30 -07:00
TJ Holowaychuk 18a6bbfd80 docs 2012-04-25 17:59:02 -07:00
TJ Holowaychuk 73092c9898 Perf: memoize parsed urls 2012-04-25 16:12:40 -07:00
TJ Holowaychuk b739126707 Merge branch 'master' of github.com:visionmedia/express 2012-04-25 16:08:52 -07:00
TJ Holowaychuk c39cf1ef84 connect 2.2.0 dep 2012-04-25 16:07:43 -07:00
TJ Holowaychuk 861f6baa66 added some middleware to support/app.js 2012-04-25 15:00:49 -07:00
TJ Holowaychuk 25fe426266 more benchmarks 2012-04-25 14:54:21 -07:00
TJ Holowaychuk 85fc586ee5 added make benchmark back 2012-04-25 14:51:45 -07:00
TJ Holowaychuk 2a951e961b Merge pull request #1106 from benedmunds/master
Fixed reference to this.body.length in Post validation error when the body length is less than 10 characters
2012-04-25 10:49:58 -07:00
TJ Holowaychuk 42aeab500b Fixed redis session example 2012-04-25 10:30:56 -07:00
TJ Holowaychuk 808a8a314a Fixed session example. Closes #1105 2012-04-25 10:29:15 -07:00
TJ Holowaychuk b809041894 refactored res.send() 2012-04-25 09:38:59 -07:00
TJ Holowaychuk 1ddf0c8a42 Merge pull request #1100 from coolony/master
Make string object behave like string literals with res.send
2012-04-25 09:38:19 -07:00
Ben Edmunds d8caf209e3 Fixed reference to this.body.length in Post validation error when the body length is less than 10 characters. 2012-04-24 15:05:17 -04:00
Pierre Matri 22668555ad Fixed req.send tests for string objects 2012-04-22 14:06:13 +02:00
Pierre Matri 0f585931a4 Make string object behave like string literals with res.send 2012-04-22 13:49:50 +02:00
TJ Holowaychuk d03386571d alpha install docs 2012-04-19 19:03:25 -07:00
TJ Holowaychuk 72948068e2 try npm publishConfig 2012-04-19 18:51:46 -07:00
TJ Holowaychuk 97808383ed Added client-side data exposing example 2012-04-19 16:03:22 -07:00
TJ Holowaychuk de6f30042f re-generate docs 2012-04-18 17:42:17 -07:00
TJ Holowaychuk b5cee82604 doc typo 2012-04-18 17:42:13 -07:00
TJ Holowaychuk fab3e91973 app.engine() docs 2012-04-18 17:23:54 -07:00
TJ Holowaychuk c937c797c2 Added docs/express.md makefile target 2012-04-18 17:18:22 -07:00
TJ Holowaychuk 0ddc40ad7f Merge branch 'master' of github.com:visionmedia/express 2012-04-17 20:39:06 -07:00
TJ Holowaychuk e3f6faa350 removed layout-control example
no longer applies
2012-04-17 20:38:52 -07:00
TJ Holowaychuk cc69d50c60 remove mvc example
too large to actually be helpful... and annoying
to maintain :)
2012-04-17 20:37:55 -07:00
TJ Holowaychuk b55eb5acf5 removed format acceptance tests 2012-04-17 20:26:28 -07:00
TJ Holowaychuk ebabce9982 Fixed route-loading example 2012-04-17 20:26:09 -07:00
TJ Holowaychuk 037d3490ca removed format example 2012-04-17 20:21:05 -07:00
TJ Holowaychuk ba7bcbb0d6 Fixed cookie-sessions example 2012-04-17 20:20:39 -07:00
TJ Holowaychuk 79ce6eda6f Fixed multipart acceptance test 2012-04-17 20:18:33 -07:00
TJ Holowaychuk 9f7c9cfc4c added grey.png test fixture 2012-04-17 20:16:58 -07:00
TJ Holowaychuk 5dcc4f46db Fixed jade example 2012-04-17 20:15:17 -07:00
TJ Holowaychuk 2f54201774 Merge pull request #1081 from brianloveswords/fix-readme
Add protocol to fix link being interpreted as relative in README.md.
2012-04-16 10:07:13 -07:00
Brian J Brennan e8eef64601 Add protocol to fix link being interpreted as relative in README.md. 2012-04-16 12:43:51 -04:00
TJ Holowaychuk 27b1b5e3b3 docs 2012-04-16 08:53:16 -07:00
TJ Holowaychuk 5fa2f89542 Added res.header() and req.header() aliases for BC 2012-04-16 08:31:30 -07:00
TJ Holowaychuk c998b91c09 refactoring 2012-04-15 22:14:52 -07:00
TJ Holowaychuk 5be2395170 Fixed generated express dep. Closes #1078 2012-04-15 22:13:51 -07:00
TJ Holowaychuk b4cd6bb8f0 removed old route reflection methods 2012-04-15 21:01:33 -07:00
TJ Holowaychuk 7e81cad0bf Added new dox API docs 2012-04-15 21:01:17 -07:00
TJ Holowaychuk 856f3b3be6 removed old docs 2012-04-15 19:42:55 -07:00
TJ Holowaychuk 785ac87846 Added express.createServer() for BC 2012-04-15 19:02:57 -07:00
TJ Holowaychuk 75c29bd42a removed createServer() in readme 2012-04-15 13:25:58 -07:00
TJ Holowaychuk 221a46a396 require express in readme...
some people come to express before anything
else i guess
2012-04-15 11:57:38 -07:00
TJ Holowaychuk abe5cc7184 populate changelog 2012-04-15 11:40:31 -07:00
TJ Holowaychuk 12ada75cad updated history.md from 2x branch 2012-04-15 11:24:08 -07:00
TJ Holowaychuk 5a74d94558 require package.json for .version in express(1) 2012-04-15 11:23:16 -07:00
TJ Holowaychuk d1d3f310e9 Release 3.0.0alpha1 2012-04-15 11:21:40 -07:00
TJ Holowaychuk 089a83363f Changed: enable "jsonp callback" as a default 2012-04-15 11:20:25 -07:00
TJ Holowaychuk c28e6db428 update mkdirp dep 2012-04-15 11:18:38 -07:00
TJ Holowaychuk 05253272cb clarify ejs example 2012-04-13 09:16:16 -07:00
TJ Holowaychuk 12e087820c Added: res.format() sets Vary: Accept 2012-04-12 20:11:15 -07:00
TJ Holowaychuk 8dc001567b removed res.cache()
too specific
2012-04-12 19:46:53 -07:00
TJ Holowaychuk 9af3256f72 added jsonp test 2012-04-11 20:27:21 -07:00
TJ Holowaychuk cdd333a2e0 connect 2.1.2 dep 2012-04-11 14:35:28 -07:00
TJ Holowaychuk aa4ec8f3e2 fixed glob example 2012-04-11 13:56:08 -07:00
TJ Holowaychuk 5ea78cf259 ocd 2012-04-11 13:50:41 -07:00
TJ Holowaychuk 600eaea2d1 fixed acceptance tests 2012-04-11 12:49:18 -07:00
TJ Holowaychuk 81b15833f7 connect 2.1.1 dep 2012-04-11 12:03:00 -07:00
TJ Holowaychuk 9abc221559 connect 2.1.0 dep 2012-04-11 11:17:29 -07:00
TJ Holowaychuk 7048be2830 refactoring auth example 2012-04-11 11:17:12 -07:00
TJ Holowaychuk 91eb27513a docs 2012-04-11 10:08:12 -07:00
TJ Holowaychuk 04f0682439 removed old benchmark target from Makefile 2012-04-11 09:57:43 -07:00
TJ Holowaychuk 36bab5408d removed old doc gen stuff from Makefile 2012-04-11 09:57:12 -07:00
TJ Holowaychuk c483dab4b8 ocd 2012-04-11 09:44:49 -07:00
TJ Holowaychuk f1d759f279 Merge pull request #1073 from Zoramite/lessMiddleware
Adding support back in for less CSS.
2012-04-11 08:32:45 -07:00
Randy Merrill 4c1afb2984 Making the default case for the dependencies be more dynamic. 2012-04-11 06:54:14 -07:00
Randy Merrill db9b2bfbe1 Adding support back in for less CSS. 2012-04-11 06:50:45 -07:00
TJ Holowaychuk 377677cf30 Merge branch 'master' of github.com:visionmedia/express 2012-04-10 12:19:51 -07:00
TJ Holowaychuk 24a4e95ffe Changed to allow extname or type/subtype only. Closes #1072 2012-04-10 12:19:34 -07:00
TJ Holowaychuk 8fdd9e967a Merge pull request #1069 from Benjen/patch-1
Updated example usage of res.locals() as it contained an error.
2012-04-05 08:54:16 -07:00
Benjen acfa6a692e Updated example usage of res.locals() as it contained an error. 2012-04-05 23:37:56 +08:00
TJ Holowaychuk 67ca22b6e4 throw when callback is not given to app.engine() 2012-04-04 12:30:25 -07:00
TJ Holowaychuk ba413ee98d added another res.redirect() example 2012-04-04 08:43:12 -07:00
TJ Holowaychuk acc0e934cb ocd 2012-04-02 20:13:50 -07:00
TJ Holowaychuk 1d485840fd ocd 2012-04-02 20:13:31 -07:00
TJ Holowaychuk dcb147608a ocd 2012-04-02 20:01:13 -07:00
TJ Holowaychuk ddf24d1fd6 fixed markdown example 2012-04-02 20:00:53 -07:00
TJ Holowaychuk 886d7e6903 Merge pull request #1066 from cpedros/patch-1
Unused require of fs module
2012-04-02 16:00:38 -07:00
TJ Holowaychuk 2079ccbf42 updated signed cookie tests 2012-04-02 16:00:23 -07:00
TJ Holowaychuk 5ec88b0f6c typo 2012-04-02 15:56:58 -07:00
TJ Holowaychuk b0bcd27124 removed req.signedCookie tests, this is connect 2012-04-02 15:56:40 -07:00
TJ Holowaychuk 4dfee21e91 removed req.cookies tests, this is connect 2012-04-02 15:56:21 -07:00
TJ Holowaychuk 18fa2c9c7d removed debug() for .use()
connect does this now
2012-04-02 15:54:19 -07:00
TJ Holowaychuk 04d43d60b7 added nicer error messages for failed view lookup. Closes #1065 2012-04-02 15:47:10 -07:00
Pero Pejovic 419731ec41 Unused require of fs module 2012-04-02 15:44:06 -07:00
TJ Holowaychuk 082ba88084 tabs -> spaces 2012-04-02 15:41:04 -07:00
TJ Holowaychuk 09a8474521 router: moved params logic to Router#match() 2012-04-02 15:39:20 -07:00
TJ Holowaychuk 6d323d3ff7 added param decoding test 2012-04-02 15:15:05 -07:00
TJ Holowaychuk c4e003518a Merge branch 'master' of github.com:visionmedia/express 2012-04-02 15:09:51 -07:00
TJ Holowaychuk 9e251d14af Removed Collection 2012-04-02 15:09:39 -07:00
TJ Holowaychuk 9abba7d69a ocd 2012-04-02 15:07:41 -07:00
TJ Holowaychuk 0377540e2d utils: added pathRegexp() 2012-04-02 15:07:25 -07:00
TJ Holowaychuk e6a15f66fc Merge pull request #1064 from ahizzle/master
(trivial) Give express init middleware function an explicit name
2012-03-30 15:19:14 -07:00
Andy Hiew 1787fd1b52 Trivial: Give the middleware init function an explicit name.
Middleware stack printout before:
    NODE> app.stack
    [ { route: '', handle: [Function: query] },
      { route: '', handle: [Function] },
      { route: '', handle: [Function: favicon] },
      { route: '', handle: [Function: logger] },

    Middleware stack printout after:
    NODE> app.stack
    [ { route: '', handle: [Function: query] },
      { route: '', handle: [Function: expressInit] },
      { route: '', handle: [Function: favicon] },
      { route: '', handle: [Function: logger] },
2012-03-30 16:05:11 -06:00
TJ Holowaychuk 54c3d5c113 reverse req.ips array 2012-03-29 16:39:32 -07:00
TJ Holowaychuk 6d0f9a37a2 req.ipds doesnt need "trust proxy"
not really anyway, if you use this
you better trust it :)
2012-03-29 16:36:36 -07:00
TJ Holowaychuk 60dac4d2ff Merge branch 'master' of github.com:visionmedia/express 2012-03-29 16:27:16 -07:00
TJ Holowaychuk dd468fbe9a Added req.ips 2012-03-29 16:26:59 -07:00
TJ Holowaychuk 04ecf04832 Added X-Forwarded-Proto support to req.secure 2012-03-29 16:17:44 -07:00
TJ Holowaychuk 6d45616a7a Merge pull request #1062 from shtylman/06d2016ee
remove unused variable
2012-03-29 08:58:48 -07:00
Roman Shtylman 06d2016ee7 remove unused variable from Router.route 2012-03-28 22:43:49 -04:00
TJ Holowaychuk 984bfadcdd Merge pull request #1057 from Skookum/master
Update Connect Version
2012-03-27 08:34:29 -07:00
Jim Snodgrass f79f3f8b22 update connect version 2012-03-27 12:11:48 -03:00
TJ Holowaychuk ba570a9842 typo 2012-03-24 11:42:26 -07:00
TJ Holowaychuk 365a98d00f docs 2012-03-24 11:39:47 -07:00
TJ Holowaychuk 4e2677fe2c docs 2012-03-24 11:37:26 -07:00
TJ Holowaychuk d6d16b7899 Added req.accepts() comma-delimited string support 2012-03-24 11:36:52 -07:00
TJ Holowaychuk 86a9e0803a refactored utils.accepts() 2012-03-24 11:32:28 -07:00
TJ Holowaychuk fdf96922b5 added res.json() array test to illustrate that it works 2012-03-24 11:13:53 -07:00
TJ Holowaychuk d396761f76 refactored cookie-sessions example 2012-03-23 18:22:30 -07:00
TJ Holowaychuk 711519361c fixed content-negotiation example 2012-03-23 18:11:12 -07:00
TJ Holowaychuk e4827b8d89 more docs for req.accepts(arr) 2012-03-23 18:03:19 -07:00
TJ Holowaychuk 7ec7cb94f9 Merge branch 'master' of github.com:visionmedia/express 2012-03-23 17:59:08 -07:00
TJ Holowaychuk 298899d02c Added array support. Closes #1053 2012-03-23 17:58:41 -07:00
TJ Holowaychuk 43b35a4ae0 Added array support. Closes #1053 2012-03-23 17:58:15 -07:00
TJ Holowaychuk a7a8dcd617 Added note to express(1) for running the app 2012-02-29 16:11:39 -08:00
TJ Holowaychuk bdf0b26a12 Added node app for npm scripts.start Closes #1032 2012-02-29 16:10:35 -08:00
TJ Holowaychuk 73e87b6a2e connect 2.0 dep 2012-02-27 19:31:27 -08:00
TJ Holowaychuk ac3d002cb2 added "view cache" in production test 2012-02-26 11:56:49 -08:00
TJ Holowaychuk ada2d0c627 added app.param() array test 2012-02-26 11:52:23 -08:00
TJ Holowaychuk 286d3a1ff8 added another app.param() test 2012-02-26 11:50:32 -08:00
TJ Holowaychuk 937f01a225 added app.param() tests 2012-02-26 11:46:44 -08:00
TJ Holowaychuk c9559e03da ignore coverage.html 2012-02-23 21:35:17 -08:00
TJ Holowaychuk d115798d5b ocd 2012-02-23 21:34:48 -08:00
TJ Holowaychuk b6ee5fafd0 Added mocha test coverage support 2012-02-23 20:49:50 -08:00
TJ Holowaychuk 533b31237c optimize res.format() 2012-02-23 10:59:54 -08:00
TJ Holowaychuk 812a470122 docs 2012-02-23 10:58:57 -08:00
TJ Holowaychuk eb3105ef25 Added extname support to res.format(). Closes #1024 2012-02-23 10:58:06 -08:00
TJ Holowaychuk ffcaa04d2c renamed res.respondTo() to res.format()
since you are not really responding with it,
its basically as switch
2012-02-22 19:59:52 -08:00
TJ Holowaychuk a47660ba67 refactored res.redirect() with respondTo() 2012-02-22 19:58:36 -08:00
TJ Holowaychuk e2291184dc changed DEBUG express:routes to express:router 2012-02-22 19:29:24 -08:00
TJ Holowaychuk 4e332452b7 Added req.subdomains 2012-02-22 16:36:13 -08:00
TJ Holowaychuk e2f43df5e9 refactored app.render() 2012-02-22 09:04:59 -08:00
TJ Holowaychuk 141929cd6e typo 2012-02-21 10:23:20 -08:00
TJ Holowaychuk ec03968bd4 added test for respondTo() callback args 2012-02-21 09:30:05 -08:00
TJ Holowaychuk a21435cb05 updated content-negotiation example 2012-02-18 17:37:47 -08:00
TJ Holowaychuk bdfa6d1fe7 Added: res.respondTo() defaults the content-type 2012-02-18 17:23:02 -08:00
TJ Holowaychuk b565e258cb Added res.respondTo(obj) 2012-02-18 17:13:40 -08:00
TJ Holowaychuk 892b605ab5 shorten --force desc 2012-02-18 15:35:07 -08:00
TJ Holowaychuk 4d99352526 Merge pull request #1016 from tstrimple/master
Added the ability to force the install of express scaffolding to a non-empty directory.
2012-02-18 15:34:34 -08:00
tstrimple cbf0eaa429 "Add the ability to force install express to non-empty directory." 2012-02-18 23:00:56 +00:00
TJ Holowaychuk 80e16c8ca3 tweak multipart example 2012-02-18 14:14:09 -08:00
TJ Holowaychuk 0ae024afa8 Merge branch 'integration' 2012-02-18 14:06:45 -08:00
TJ Holowaychuk 73caacbd42 mounting sucks, removing this example 2012-02-18 14:06:41 -08:00
TJ Holowaychuk b667bda8f2 y u no space? 2012-02-18 14:06:22 -08:00
TJ Holowaychuk 463e38cf67 y u no space? 2012-02-18 14:05:57 -08:00
TJ Holowaychuk 83c8d65e3d styling 2012-02-18 14:05:05 -08:00
TJ Holowaychuk 9548e7d1e2 removed hello world acceptance tests 2012-02-18 14:04:25 -08:00
TJ Holowaychuk ee290d82d1 fixing acceptance tests 2012-02-18 14:04:11 -08:00
TJ Holowaychuk b75bb003bd fixed markdown example 2012-02-18 13:54:36 -08:00
TJ Holowaychuk 6c2194fdb4 smaller hello world 2012-02-18 13:52:31 -08:00
TJ Holowaychuk da61d8b639 fixed github example 2012-02-18 13:52:02 -08:00
TJ Holowaychuk 863ba199f6 stack is always shown 2012-02-18 13:49:08 -08:00
TJ Holowaychuk 161ebb354f removed old flash example 2012-02-18 13:48:32 -08:00
TJ Holowaychuk 1516ebf7f9 misc 2012-02-18 13:46:22 -08:00
TJ Holowaychuk 2820f2227d fixing downloads example 2012-02-18 13:45:44 -08:00
TJ Holowaychuk a078f5f5c1 docs 2012-02-18 13:41:44 -08:00
TJ Holowaychuk d0a83053d3 fixed up blog example messages 2012-02-18 13:41:10 -08:00
TJ Holowaychuk b6bc01abde fixing blog example 2012-02-18 13:28:56 -08:00
TJ Holowaychuk 196a1eb6ad set view engine for auth app 2012-02-18 13:20:23 -08:00
TJ Holowaychuk 593271f536 removed accessLogger from auth example 2012-02-18 13:18:00 -08:00
TJ Holowaychuk 0f24f715ba tweak auth example 2012-02-18 13:16:17 -08:00
Robert Sköld bb9bfa5618 Cleaned out comments from resource acceptance test. 2012-02-18 13:08:26 -08:00
Robert Sköld 8120a06cd6 Updated resource example with acceptnce test. 2012-02-18 13:08:26 -08:00
Robert Sköld a153082120 Updated params example with acceptance test. 2012-02-18 13:08:26 -08:00
Robert Sköld 970031e267 Updated multipart example with acceptance test. 2012-02-18 13:08:26 -08:00
Robert Sköld a819856f3f Updated mounting example with acceptance test. 2012-02-18 13:08:26 -08:00
Robert Sköld 4dbaaa2855 Updated markdown example with acceptance test. 2012-02-18 13:08:26 -08:00
Robert Sköld 0593cf4379 Updated helloworld example with acceptance test. 2012-02-18 13:08:26 -08:00
Robert Sköld cd0e5dbb4c Updated format example with acceptance test. 2012-02-18 13:08:26 -08:00
Robert Sköld 7cb1c3cabb Updated form example for 3.x (not working as it relies on req.flash()) 2012-02-18 13:08:26 -08:00
Robert Sköld 550b9101b8 Updated error-pages example with acceptance test. 2012-02-18 13:08:26 -08:00
Robert Sköld 9d9564568b Updated error example with acceptance tests. 2012-02-18 13:08:26 -08:00
Robert Sköld 7ea7a53e7c Updated downloads example with acceptance tests. 2012-02-18 13:08:25 -08:00
Robert Sköld ac387caf21 Added acceptance test for cookies. 2012-02-18 13:08:25 -08:00
Robert Sköld ad3f1e84aa Updated blog example for Jade inheritence. Passes tests. 2012-02-18 13:08:25 -08:00
Robert Sköld 2432a0dda5 Added acceptance test for blog example. 2012-02-18 13:08:25 -08:00
Robert Sköld 03e5919910 Refactored acceptence/auth. 2012-02-18 13:08:25 -08:00
Robert Sköld 277e35f8c8 Added RegExp support to support/http for asserting the body. 2012-02-18 13:08:25 -08:00
Robert Sköld 0dd5836f3f Updated auth acceptance test style. 2012-02-18 13:08:25 -08:00
Robert Sköld 9290f0d407 Cookie secret is a cookieParser() thing. 2012-02-18 13:08:25 -08:00
Robert Sköld 9bd3ad846e Silence while NODE_ENV=test 2012-02-18 13:08:25 -08:00
Robert Sköld a8c73649ce Updated auth example for express 3.x. With a test. 2012-02-18 13:08:25 -08:00
TJ Holowaychuk 6368ab49b4 ocd 2012-02-18 12:59:22 -08:00
TJ Holowaychuk 16b6a64ef9 refactored express(1) package.json generation 2012-02-18 12:50:16 -08:00
TJ Holowaychuk e46431ee0e ws 2012-02-18 12:47:31 -08:00
TJ Holowaychuk 2e4cf0aa5c update mime dep 2012-02-18 12:46:36 -08:00
TJ Holowaychuk 3f8a7f05e8 update commander dep 2012-02-18 12:46:26 -08:00
TJ Holowaychuk 3360613bcd Merge branch 'master' of github.com:visionmedia/express 2012-02-18 12:41:55 -08:00
TJ Holowaychuk f8a9cbe074 Added req.fresh and req.stale tests. Closes #998 2012-02-18 12:41:24 -08:00
TJ Holowaychuk 15f2e0c899 Merge pull request #1006 from eivindfjeldstad/router
Added support for arrays of paths
2012-02-17 08:42:39 -08:00
Tj Holowaychuk 6518e746c1 removed require "qs" as its no longer used. Closes #1014 2012-02-16 08:17:59 -08:00
Eivind Fjeldstad 38b046d6ad Added test for an array of paths 2012-02-12 16:26:32 +01:00
Eivind Fjeldstad 28d7750eda Added support for arrays of paths 2012-02-12 16:23:21 +01:00
Tj Holowaychuk e5fc85bddc moved a debug() down 2012-02-09 13:40:33 -08:00
Tj Holowaychuk 2a40571118 Added DEBUG=express:application support 2012-02-09 13:29:21 -08:00
Tj Holowaychuk f1aa57c57e more debug() 2012-02-09 13:15:45 -08:00
Tj Holowaychuk 0b876ece41 Added DEBUG=express:routes support 2012-02-09 13:12:13 -08:00
Tj Holowaychuk ca0bd1a0b5 Added "debug" dependency 2012-02-09 12:14:31 -08:00
Tj Holowaychuk 2d31b5df34 Removed "qs" dep, only connect has this now 2012-02-08 12:50:30 -08:00
Tj Holowaychuk 10f7ca0ebf upgrade deps 2012-02-08 12:03:25 -08:00
TJ Holowaychuk 85d6964874 Removed req.header(field) 2012-02-07 08:32:08 -08:00
TJ Holowaychuk 76fd462bcc Removed res.header(field, value) 2012-02-07 08:30:27 -08:00
TJ Holowaychuk c44f01879f utilize res.set() internally 2012-02-07 08:28:40 -08:00
TJ Holowaychuk fe27989a69 doc typo 2012-02-07 08:25:40 -08:00
TJ Holowaychuk b04f3eeede refactored req.xhr 2012-02-07 08:24:58 -08:00
TJ Holowaychuk 6ab61d023f docs 2012-02-07 08:21:32 -08:00
TJ Holowaychuk 4d87efc771 Added "trust proxy" setting 2012-02-07 08:19:30 -08:00
TJ Holowaychuk e47d368239 update node support docs 2012-02-07 04:55:38 -08:00
TJ Holowaychuk 5b1235addc replaced short contrib list with git-summary(1) output 2012-02-07 04:55:07 -08:00
TJ Holowaychuk 8c2c1240e1 removed old req.get() for now 2012-02-07 04:50:00 -08:00
TJ Holowaychuk 27e696b7b1 Added req.get() alias of req.header() 2012-02-07 04:49:12 -08:00
TJ Holowaychuk bfba98f532 Removed req.header() defaultValue support 2012-02-07 04:47:51 -08:00
TJ Holowaychuk 8de3ad50b2 refactored res.redirect() with req.protocol() 2012-02-07 04:43:35 -08:00
TJ Holowaychuk 2ba343d2b5 Added req.protocol() 2012-02-07 04:39:10 -08:00
TJ Holowaychuk ff92afa557 Added "json replacer" and "json spaces" settings. Closes #996 [credit to jed] 2012-02-07 03:30:34 -08:00
Tj Holowaychuk c3c0fb95a8 backported fix from 2.x for app.all() del method 2012-02-06 10:12:59 -08:00
Tj Holowaychuk bb56a094bb Added app.all() test 2012-02-06 10:07:49 -08:00
Tj Holowaychuk 2211943170 make express(1) generated deps * 2012-01-31 19:48:38 -08:00
TJ Holowaychuk 4eb8bc0857 Merge pull request #968 from peters/patch-1
Typo
2012-01-18 17:17:40 -08:00
Peter Rekdal Sunde fa51cb8d63 Typo 2012-01-19 02:14:30 +01:00
Tj Holowaychuk 706dec93a4 keywords 2012-01-17 09:51:49 -08:00
Tj Holowaychuk 7a32920448 Merge branch 'master' of github.com:visionmedia/express 2012-01-17 09:51:39 -08:00
Tj Holowaychuk 57a3899c1d removed connect-form dev dep 2012-01-17 09:51:27 -08:00
Tj Holowaychuk 374d159e0e update dependencies 2012-01-17 09:49:02 -08:00
TJ Holowaychuk 4f5a41b84f removed connect-form dep 2012-01-16 20:16:08 -08:00
TJ Holowaychuk a2f380fdd6 Merge pull request #955 from mmalecki/npm-test
Add `test` script
2012-01-08 17:08:10 -08:00
Maciej Małecki 301085e510 Add test script 2012-01-09 02:03:23 +01:00
TJ Holowaychuk af5b64a434 Merge pull request #951 from Raynos/patch-1
Gave the router a name.
2012-01-06 07:32:23 -08:00
Raynos fa088e37bc Gave the router a name. All the other connect middlewares are named functions. 2012-01-06 14:39:37 +00:00
Tj Holowaychuk 613bdc91e5 Merge branch 'master' of github.com:visionmedia/express 2012-01-02 08:28:40 -08:00
TJ Holowaychuk edfe50e713 Removed app.is() support 2011-12-30 15:10:51 -08:00
TJ Holowaychuk 26fb403ced Fixed req.is() with charsets 2011-12-30 15:04:41 -08:00
TJ Holowaychuk 014fb46449 Added req.is() tests 2011-12-30 15:01:34 -08:00
TJ Holowaychuk 144a88b109 Removed app.match() 2011-12-28 12:09:58 -07:00
TJ Holowaychuk 34c0d2509a test for route index state 2011-12-28 12:07:46 -07:00
TJ Holowaychuk a12a9e3fd9 tests for Router#match() 2011-12-28 12:03:50 -07:00
TJ Holowaychuk 8df73f3d83 renamed Router#_match() -> match() 2011-12-28 11:57:45 -07:00
TJ Holowaychuk 6dac874ff4 renamed Router#_route() -> route() 2011-12-28 11:55:11 -07:00
TJ Holowaychuk 81d25f6861 Merge branch 'feature/decouple-router' 2011-12-28 11:15:10 -07:00
TJ Holowaychuk c0c1975da6 decouple Router options. Closes #941 2011-12-28 11:14:57 -07:00
Tj Holowaychuk dd7af29103 mocha.opts 2011-12-20 17:37:06 -08:00
Tj Holowaychuk 85ea5f67f4 Merge branch 'master' of github.com:visionmedia/express 2011-12-20 13:33:14 -08:00
Tj Holowaychuk 8e3cb6174d added test for res.sendfile() content-type override 2011-12-20 13:32:39 -08:00
TJ Holowaychuk 6c01e9a43a Update bin/express 2011-12-20 08:33:54 -08:00
TJ Holowaychuk 6061670161 Merge pull request #939 from ksato9700/master
EOL style per platform
2011-12-20 08:33:12 -08:00
Ken Sato 7c66db2c45 Change the eol character based on platform type 2011-12-19 22:55:50 -08:00
TJ Holowaychuk 05e95ae55a misc 2011-12-18 07:41:08 -08:00
TJ Holowaychuk 416ad564d0 Added cookie-sessions example 2011-12-17 15:11:52 -08:00
TJ Holowaychuk 55f8f9bc42 added regression test for #847 2011-12-17 13:53:28 -08:00
TJ Holowaychuk 386a9e88b4 removed old tests 2011-12-17 13:43:51 -08:00
TJ Holowaychuk f6ca25edbe web-service acceptance tests 2011-12-17 12:44:55 -08:00
TJ Holowaychuk 1ea221aa4e fixed an acceptance test 2011-12-17 12:21:42 -08:00
TJ Holowaychuk d72a6666a1 removed ejs layout.ejs from express(1) 2011-12-17 12:16:52 -08:00
TJ Holowaychuk b69199f884 fixed express(1) jade tmpl inheritance 2011-12-17 12:15:12 -08:00
TJ Holowaychuk 65042c86a6 removed the use of .include.string() 2011-12-17 12:02:34 -08:00
TJ Holowaychuk d7dccfd56d removed the use of should.contain() 2011-12-17 12:02:11 -08:00
Tj Holowaychuk e60f4a5e1e Merge branch 'master' of github.com:visionmedia/express 2011-12-16 14:44:35 -08:00
Tj Holowaychuk fa3d4cbb23 move express(1) static() up
so people dont get confused when it receives sessions
2011-12-16 14:44:12 -08:00
TJ Holowaychuk 56d303ec09 Merge pull request #934 from siong1987/keywords
update keywords for search.npmjs.org
2011-12-15 09:10:09 -08:00
Teng Siong Ong 4600548b4d update keywords for search.npmjs.org 2011-12-15 11:06:08 -06:00
Tj Holowaychuk 7d24c2ba40 Fixed app.set() with undefined 2011-12-15 09:00:39 -08:00
Tj Holowaychuk b4ce57caec spec 2011-12-09 16:14:23 -08:00
Tj Holowaychuk 43c09b2eaa ejs test 2011-12-09 16:07:15 -08:00
Tj Holowaychuk b32fd0bee4 * dev deps 2011-12-09 15:55:41 -08:00
Tj Holowaychuk 3b6e96efa9 ejs tests 2011-12-09 15:29:09 -08:00
Tj Holowaychuk 29ef828b9c added first batch of acceptance tests for examples 2011-12-09 15:21:10 -08:00
Tj Holowaychuk 39ae443433 semi 2011-12-09 15:09:14 -08:00
Tj Holowaychuk c30c2f8d38 typo 2011-12-09 14:32:35 -08:00
Tj Holowaychuk 5757f875f2 Added X-Forwarded-Proto support to res.redirect(). Closes #927 2011-12-08 12:45:46 -08:00
Tj Holowaychuk e49c482a3f req.body takes precedence 2011-12-07 08:41:22 -08:00
Tj Holowaychuk a592d6c1aa misc 2011-12-06 16:53:05 -08:00
Tj Holowaychuk 88f154fecd Added support for .. in redirects as well 2011-12-06 16:44:15 -08:00
Tj Holowaychuk d7dfe3e812 expose router 2011-12-06 16:36:52 -08:00
Tj Holowaychuk 489265e3ca Added support for ./ in redirects 2011-12-06 16:32:48 -08:00
Tj Holowaychuk 3212a70a0c misc 2011-12-06 16:21:04 -08:00
Tj Holowaychuk 1cda0a96ca Removed redirect "home" 2011-12-06 16:13:42 -08:00
Tj Holowaychuk 83fb9f7548 removed a test 2011-12-06 16:12:42 -08:00
Tj Holowaychuk 43295289bf Removed app.redirect() 2011-12-06 16:04:06 -08:00
Tj Holowaychuk 0f72ca823b docs 2011-12-06 15:58:56 -08:00
Tj Holowaychuk 41786bc776 misc 2011-12-06 15:54:25 -08:00
Tj Holowaychuk cca5d7ebbf more tests 2011-12-06 15:53:17 -08:00
Tj Holowaychuk 43c8764465 Added relative redirect support. Closes #920 2011-12-06 15:50:08 -08:00
Tj Holowaychuk a1e325a2d9 use app.path() in res.redirect() 2011-12-06 15:40:17 -08:00
Tj Holowaychuk 17a831e32f app.path() 2011-12-06 15:36:44 -08:00
Tj Holowaychuk 2a13db3bb8 Added favicon() to express(1) generated app 2011-12-05 20:01:25 -08:00
Tj Holowaychuk eb5a73538a express(1) errorHandler() only in development
no longer acts as production error handling,
just implement that with custom middleware
2011-12-05 19:41:05 -08:00
Tj Holowaychuk 006a6c787b Added exports.{request,response} 2011-11-28 11:48:27 -08:00
Tj Holowaychuk c3d96df0f0 Added req.route test 2011-11-24 17:59:00 -08:00
Tj Holowaychuk 15e7218bc4 tests for app.get() inheritance. Closes #904 2011-11-24 15:27:09 -08:00
Tj Holowaychuk 28f32b9b8e Removed req.notify() 2011-11-24 15:12:25 -08:00
Tj Holowaychuk 1d0a56b673 removed uses of "root" 2011-11-24 14:33:23 -08:00
Tj Holowaychuk ad1424681b comment some tests 2011-11-24 14:31:42 -08:00
Tj Holowaychuk 87b991c076 removed "root" setting
screw it, no one will understand anyway
2011-11-24 14:27:28 -08:00
Tj Holowaychuk 5d593f26af .parent tests 2011-11-24 14:04:37 -08:00
Tj Holowaychuk 853c270fce more mounting tests 2011-11-24 13:51:04 -08:00
Tj Holowaychuk fcf34e0587 adding some mounting tests 2011-11-24 13:49:27 -08:00
Tj Holowaychuk b6611c8a3b Added: emit "mount" event on the app being mounted 2011-11-24 13:24:34 -08:00
Tj Holowaychuk aab08d774b Removed implementation of app.mounted(callback) 2011-11-24 13:20:10 -08:00
Tj Holowaychuk 321aa52384 Removed app.mounted(callback) 2011-11-24 13:19:53 -08:00
Tj Holowaychuk 1334a74ef1 misc refactoring 2011-11-24 12:50:19 -08:00
Tj Holowaychuk 19e3384bb1 Added test for res.sendfile() with non-GET. Closes #723 2011-11-24 12:34:47 -08:00
Tj Holowaychuk 6ae32fd596 docs 2011-11-24 12:22:59 -08:00
Tj Holowaychuk 4c316ba4ce refactored init middleware into its own file 2011-11-24 12:14:12 -08:00
Tj Holowaychuk f2719411b7 Added event emitter inheritance test 2011-11-24 12:10:08 -08:00
Tj Holowaychuk 11faf6684e Added travis.yml. Closes #903 2011-11-24 11:58:34 -08:00
Tj Holowaychuk 547d18ce46 merged 2011-11-23 10:39:02 -08:00
Tj Holowaychuk f183a81289 update mocha 2011-11-22 17:42:21 -08:00
TJ Holowaychuk e44c874cab Fixed parseQuality(), exclude q=0 2011-11-20 12:54:48 -08:00
TJ Holowaychuk 9c7380efe4 Added req.acceptsLanguage() 2011-11-20 12:53:01 -08:00
TJ Holowaychuk 5e071a2e4b Added req.acceptsCharset() 2011-11-20 12:51:27 -08:00
TJ Holowaychuk ff9b82c4f6 todo 2011-11-20 12:44:25 -08:00
TJ Holowaychuk a0d0ac6cff docs 2011-11-20 12:43:06 -08:00
TJ Holowaychuk b605a5de87 Changed: req.accepts() utilizing utils.accepts() 2011-11-20 12:42:06 -08:00
TJ Holowaychuk 36be2b0688 Added utils.accepts(type, str) 2011-11-20 12:41:12 -08:00
TJ Holowaychuk 376a5da705 Added req.accepts() tests 2011-11-20 12:24:05 -08:00
TJ Holowaychuk c25258b75c removed irrelevant extending-templates example 2011-11-20 12:17:29 -08:00
TJ Holowaychuk c685f3a294 docs 2011-11-20 12:16:04 -08:00
TJ Holowaychuk f63767af0e example error layout 2011-11-20 12:15:47 -08:00
TJ Holowaychuk 4fa9a2e54b fixed error-pages example 2011-11-20 12:13:24 -08:00
TJ Holowaychuk 68bc592a05 fixed error example 2011-11-20 12:03:45 -08:00
TJ Holowaychuk 543fe2f2a4 fixed ejs example 2011-11-20 11:59:10 -08:00
TJ Holowaychuk be52f38d8f fixed downloads example 2011-11-20 11:43:40 -08:00
TJ Holowaychuk 722a92f374 fixed cookies example 2011-11-20 11:33:06 -08:00
TJ Holowaychuk d771d06e19 docs 2011-11-20 11:29:08 -08:00
TJ Holowaychuk a5227191b5 fixed content-negotiation example 2011-11-20 11:28:12 -08:00
TJ Holowaychuk 499d3d6d78 Added req.acceptedCharsets 2011-11-19 22:16:16 -08:00
TJ Holowaychuk 2adf020753 tests 2011-11-19 22:13:07 -08:00
TJ Holowaychuk e8c373694c Added req.acceptedLanguages 2011-11-19 22:12:09 -08:00
TJ Holowaychuk a8fd8cb645 Added req.accepted 2011-11-19 22:08:26 -08:00
TJ Holowaychuk fd06084106 more tests 2011-11-19 21:49:20 -08:00
TJ Holowaychuk 285500488d Added parseAccepts() util 2011-11-19 21:47:22 -08:00
TJ Holowaychuk 29d4ffd089 renamed prev util to parseQuality() 2011-11-19 21:43:48 -08:00
TJ Holowaychuk fe5efa597b Added utils.parseAccepts(str) 2011-11-19 21:40:12 -08:00
TJ Holowaychuk b93629a903 updated mocha 2011-11-19 16:02:42 -08:00
Tj Holowaychuk 0c72940933 updated mocha 2011-11-17 07:52:32 -08:00
Tj Holowaychuk 96f5279e3e consider 20ms slow 2011-11-16 14:38:09 -08:00
Tj Holowaychuk 821fa10203 update mocha 2011-11-16 14:35:38 -08:00
Tj Holowaychuk 9082e74971 Added app.listen() as a shortcut for http.createServer(app).listen() 2011-11-11 17:22:25 -08:00
Tj Holowaychuk 7a7d77e7bd Removed toArray() util 2011-11-11 14:30:27 -08:00
Tj Holowaychuk ce2ec94e96 Added utils.escape(html) test 2011-11-11 14:29:23 -08:00
Tj Holowaychuk d56e5d6923 Added utils.flatten(arr) tests 2011-11-11 14:27:36 -08:00
Tj Holowaychuk 5221ecc055 utils.isAbsolute() tests 2011-11-11 14:26:43 -08:00
Tj Holowaychuk 6ac2c6f578 Added router next(err) test 2011-11-11 14:02:43 -08:00
Tj Holowaychuk 772b752fa5 Added more route matching tests 2011-11-11 14:01:10 -08:00
Tj Holowaychuk 3c002d08c2 fixed test due to HEAD change 2011-11-11 13:54:12 -08:00
Tj Holowaychuk 2876424240 Added optional app.head() support 2011-11-11 13:53:20 -08:00
Tj Holowaychuk 74a0177ec9 Added app.head() override test 2011-11-11 13:49:35 -08:00
Tj Holowaychuk da96844e9a Added app.head() test 2011-11-11 13:47:58 -08:00
Tj Holowaychuk 81652c8244 Added app.del() test 2011-11-11 13:46:44 -08:00
Tj Holowaychuk f17434c95b misc 2011-11-11 13:45:11 -08:00
Tj Holowaychuk 01e854b5d2 Added app.options() test 2011-11-11 13:44:42 -08:00
Tj Holowaychuk 42953c7c44 Fixed default OPTIONS behavior 2011-11-11 13:31:44 -08:00
Tj Holowaychuk 5e56446d26 Changed express.methods to include only those supported by node 2011-11-11 13:25:16 -08:00
Tj Holowaychuk 61652f4ad9 upper-case the name 2011-11-11 13:20:33 -08:00
Tj Holowaychuk fc1e84941d fixed head 2011-11-11 13:20:06 -08:00
Tj Holowaychuk 953eba0376 Added meta-generated tests for all HTTP methods supported 2011-11-11 13:18:50 -08:00
Tj Holowaychuk 5c032269e3 more tests 2011-11-11 13:04:08 -08:00
Tj Holowaychuk 1322d5a2c1 literal . test 2011-11-11 12:42:52 -08:00
Tj Holowaychuk 114f272906 escaped regexp test 2011-11-11 12:41:13 -08:00
Tj Holowaychuk 1286bbb982 naming capture groups 2011-11-11 12:36:16 -08:00
Tj Holowaychuk 9141c649e7 more tests 2011-11-11 12:34:09 -08:00
Tj Holowaychuk ff2242da31 tests for * 2011-11-11 12:32:14 -08:00
Tj Holowaychuk 730a419984 param single-segment test 2011-11-11 12:22:21 -08:00
Tj Holowaychuk 25bd7d7997 Added route regexp tests 2011-11-11 12:19:49 -08:00
Tj Holowaychuk 77c9d9207d Renamed "case sensitive routes" to "case sensitive routing"
to match "strict routing"
2011-11-11 12:14:35 -08:00
Tj Holowaychuk 1e77629f1f Added "strict routing" setting tests 2011-11-11 12:13:24 -08:00
Tj Holowaychuk 76f65456ab Added "case sensitive routes" tests 2011-11-11 12:10:38 -08:00
Tj Holowaychuk 26e20e7ae5 more routing tests 2011-11-11 12:06:30 -08:00
Tj Holowaychuk 96217cf3fe optional trailing slash 2011-11-11 12:05:18 -08:00
Tj Holowaychuk e9c96d8ccd tests for optional capture groups 2011-11-11 12:04:17 -08:00
Tj Holowaychuk 7ae2b968bb more routing tests 2011-11-11 11:54:56 -08:00
Tj Holowaychuk 83ea42afe5 started routing tests 2011-11-11 11:51:09 -08:00
Tj Holowaychuk 16587fcce1 Added req.param() default value test 2011-11-10 16:13:31 -08:00
Tj Holowaychuk ffded44f32 Added req.param() tests. Closes #885 2011-11-10 16:11:50 -08:00
Tj Holowaychuk 92c5284b80 fixed auto use(app.router) 2011-11-10 16:11:35 -08:00
Tj Holowaychuk f96102224c refactoring 2011-11-10 15:04:44 -08:00
Tj Holowaychuk bf87d626eb docs 2011-11-10 15:01:22 -08:00
Tj Holowaychuk e21a79dc61 Added res.cache() method 2011-11-10 15:00:50 -08:00
Tj Holowaychuk caec590fe1 Added res.cache(str) 2011-11-10 14:54:23 -08:00
Tj Holowaychuk 61ce6c59c2 misc 2011-11-10 14:48:00 -08:00
Tj Holowaychuk 205a1a14c7 Aded app.locals.use() precedence tests 2011-11-10 14:14:09 -08:00
Tj Holowaychuk 6709ab5f27 jade 0.17.x 2011-11-10 13:55:21 -08:00
Tj Holowaychuk 2d77279c94 Merge branch 'view-signature' 2011-11-10 13:42:14 -08:00
Tj Holowaychuk e9d7b6fbad Changed template engine signature to engine.__express(path, options, fn). Closes #878 2011-11-10 13:42:08 -08:00
Tj Holowaychuk 3e6171c7ff Fixed express(1) LF -> CRLF for windows. Closes #875 2011-11-10 12:29:49 -08:00
Tj Holowaychuk 04389fd6ff test for invalid cookie signature 2011-11-10 12:20:13 -08:00
Tj Holowaychuk a47b599048 Added req.signedCookies tests 2011-11-10 12:18:16 -08:00
Tj Holowaychuk 58eddd5ab4 Added res.signedCookie() and tests. Closes #880 2011-11-10 12:14:33 -08:00
Tj Holowaychuk 7ac857acef Added JSON cookie support & tests. Closes #879 2011-11-10 12:04:21 -08:00
Tj Holowaychuk e27b224933 make sure req/res protos are app-specific 2011-11-10 11:31:38 -08:00
Tj Holowaychuk 4f087df286 Added res proto mutation test 2011-11-10 11:29:35 -08:00
Tj Holowaychuk 87f6f6a3e3 Added app.request test 2011-11-10 11:25:54 -08:00
Tj Holowaychuk 94d1e94cf2 Added app.{request,response} 2011-11-10 11:21:24 -08:00
Tj Holowaychuk d249868e07 no longer manipulate the req/res protos directly 2011-11-10 11:18:43 -08:00
Tj Holowaychuk 429e48d873 Added app.locals.settings test 2011-11-10 08:36:18 -08:00
Tj Holowaychuk abb414c702 Added app.locals.use() arity < 3 test 2011-11-10 08:26:36 -08:00
Tj Holowaychuk 8f45dd4190 Added res.render() absolute path tests 2011-11-10 08:24:10 -08:00
Tj Holowaychuk d9098c5fcd more tests 2011-11-10 08:23:12 -08:00
Tj Holowaychuk b9dee730a8 Fixed app.render() absolute path support 2011-11-10 08:22:42 -08:00
Tj Holowaychuk 26c62a667f Added app.locals.use() test 2011-11-10 08:19:57 -08:00
Tj Holowaychuk 7d42ad00ff Removed "status" and "charset" options 2011-11-10 07:47:04 -08:00
Tj Holowaychuk 4a5776b513 more res.locals tests 2011-11-09 17:02:55 -08:00
Tj Holowaychuk f68ba2ef35 refactoring 2011-11-09 16:56:57 -08:00
Tj Holowaychuk a95a0ab5f9 using connects error code util 2011-11-09 16:27:48 -08:00
Tj Holowaychuk 30911f4a75 Added failing res.sendfile() test for 403 + callback 2011-11-09 16:14:38 -08:00
Tj Holowaychuk c9f184c8d5 Added res.sendfile() ENOENT test 2011-11-09 16:11:46 -08:00
Tj Holowaychuk 545f1fd07d Added first res.sendfile() callback test 2011-11-09 16:06:12 -08:00
Tj Holowaychuk 2f762265a8 Added forbidden tests 2011-11-09 16:03:42 -08:00
Tj Holowaychuk 7e6d8f39b4 Added res.sendfile() "root" setting test 2011-11-09 15:56:24 -08:00
Tj Holowaychuk bea74b7711 Fixed res.sendfile() 404s 2011-11-09 15:54:51 -08:00
Tj Holowaychuk 10e8dc57eb added failing res.sendfile() test on 404 2011-11-09 15:51:11 -08:00
Tj Holowaychuk f7b6dde086 refactored previous commit 2011-11-09 15:41:51 -08:00
Tj Holowaychuk 2fa36fa721 res.sendfile() tests 2011-11-09 15:39:53 -08:00
Tj Holowaychuk 40f8202402 utilize res.headerSent from connect 2011-11-09 15:38:48 -08:00
Tj Holowaychuk 4b0b55c1b7 misc refactoring 2011-11-09 15:33:54 -08:00
Tj Holowaychuk 0e395973c9 Added res.attachment() tests 2011-11-09 15:31:31 -08:00
Tj Holowaychuk 1f53cdb62d Added error in res.render() callback test 2011-11-09 15:21:38 -08:00
Tj Holowaychuk c32023d8ed Added "charset" option test 2011-11-09 15:17:44 -08:00
Tj Holowaychuk d2f98940d8 Added status option test 2011-11-09 15:15:55 -08:00
Tj Holowaychuk 536b16c7a9 Added res.render() callback with locals test 2011-11-09 15:11:07 -08:00
Tj Holowaychuk 9bfeae2df1 Added res.render() callback tests 2011-11-09 15:09:47 -08:00
Tj Holowaychuk 4d450ea25e local precedence tests 2011-11-09 15:04:52 -08:00
Tj Holowaychuk 84f01d1e30 Added res.render() tests 2011-11-09 15:00:40 -08:00
Tj Holowaychuk 1a5636b199 case sensitivity test 2011-11-08 20:29:48 -08:00
Tj Holowaychuk af46df7eae Removed req.isXMLHttpRequest
let me know if you actually use this :)
2011-11-08 20:28:55 -08:00
Tj Holowaychuk 801a1791d6 Added req.xhr tests 2011-11-08 20:28:06 -08:00
Tj Holowaychuk 333cf0b280 Added req.path test 2011-11-08 20:25:34 -08:00
Tj Holowaychuk 52e26697a9 Added index.<engine> render test 2011-11-08 20:22:27 -08:00
Tj Holowaychuk fdf620b688 more tests 2011-11-08 20:18:07 -08:00
Tj Holowaychuk 66f8ca52d6 Added app.engine() tests 2011-11-08 20:14:53 -08:00
Tj Holowaychuk f98c1127a6 Added app.render() local precedence test 2011-11-08 20:09:13 -08:00
Tj Holowaychuk 7e352fe28d Added app.render() app.locals test 2011-11-08 20:07:49 -08:00
Tj Holowaychuk d3b48e2fd5 Added more app.render() tests 2011-11-08 20:06:15 -08:00
Tj Holowaychuk 23159c094d Added app.render() tests 2011-11-08 20:00:03 -08:00
Tj Holowaychuk 2e22887f71 docs 2011-11-08 19:55:41 -08:00
Tj Holowaychuk c9b04b8be7 Added app.locals(obj) test 2011-11-08 19:54:46 -08:00
Tj Holowaychuk 2c0e13b513 Added res.locals(obj) test 2011-11-08 19:53:22 -08:00
Tj Holowaychuk 2937309f00 Added res.charset tests 2011-11-08 19:46:38 -08:00
Tj Holowaychuk 377056a33c Removed "charset" option 2011-11-08 19:44:16 -08:00
Tj Holowaychuk f42ce5be2b qs 0.3.2 to fix global var leak 2011-11-08 19:43:12 -08:00
Tj Holowaychuk ddeee9b6db Added req.query tests 2011-11-08 19:27:09 -08:00
Tj Holowaychuk 6bee32c174 removed a file i didnt mean to add :) 2011-11-08 19:18:25 -08:00
Tj Holowaychuk 11f55a06dd Added app.redirect() tests 2011-11-08 19:17:03 -08:00
Tj Holowaychuk 6a2d6b872b pending 2011-11-08 19:10:09 -08:00
Tj Holowaychuk d8787867c4 tweak test 2011-11-08 19:01:20 -08:00
Tj Holowaychuk 43d9f6ea17 tweak res.redirect() mount route logic 2011-11-08 18:59:40 -08:00
Tj Holowaychuk 1faba1302f tmp fix 2011-11-08 18:51:15 -08:00
Tj Holowaychuk 55ee0a0934 Added relative redirect test 2011-11-08 18:46:23 -08:00
Tj Holowaychuk 0653f73779 Added res.redirect() content-negotiation tests 2011-11-08 18:41:26 -08:00
Tj Holowaychuk 7a24021dc9 more res.redirect() tests 2011-11-08 18:40:01 -08:00
Tj Holowaychuk 9f2fe94484 Added res.redirect() test 2011-11-08 18:36:27 -08:00
Tj Holowaychuk a3950b5638 Added maxAge test 2011-11-08 18:33:00 -08:00
Tj Holowaychuk 8c03428279 Added res.cookie() options test 2011-11-08 18:30:48 -08:00
Tj Holowaychuk f4d7ea386d Added res.cookie() "root" setting test 2011-11-08 18:28:59 -08:00
Tj Holowaychuk bee0496cb1 Fixed res.cookie() path default 2011-11-08 18:28:22 -08:00
Tj Holowaychuk 5960b90efe Added res.cookie() tests 2011-11-08 18:27:18 -08:00
Tj Holowaychuk 0f2f3d4e29 Fixed res.clearCookie(), default path to "root" setting 2011-11-08 18:25:21 -08:00
Tj Holowaychuk bc673bef79 Added res.clearCookie() tests 2011-11-08 18:21:08 -08:00
Tj Holowaychuk 3fb7391b97 Added res.set(object) and res.set(field, value) tests 2011-11-08 18:15:31 -08:00
Tj Holowaychuk 442cd7515d Added res.type() test 2011-11-08 18:13:10 -08:00
Tj Holowaychuk a013ffe547 Added res.json(status, object) test 2011-11-08 17:57:25 -08:00
Tj Holowaychuk 835558229f refactored tests 2011-11-08 17:55:41 -08:00
Tj Holowaychuk dce23c79a1 Added res.json() tests 2011-11-08 17:54:36 -08:00
Tj Holowaychuk 4106bae79e generated helper test methods from express.methods 2011-11-08 17:47:47 -08:00
Tj Holowaychuk b756474d9d Added res.send() HEAD tests 2011-11-08 17:46:08 -08:00
Tj Holowaychuk b0c9209726 Added res.send() 304 / 204 tests 2011-11-08 17:44:05 -08:00
Tj Holowaychuk c96b778771 dot reporter 2011-11-08 17:40:41 -08:00
Tj Holowaychuk d0d721d80b Added res.send(Object) test 2011-11-08 17:40:20 -08:00
Tj Holowaychuk 7b50a78662 Added res.send(null || undefined) tests 2011-11-08 17:38:18 -08:00
Tj Holowaychuk aa869c637a Added res.send() content-type tests 2011-11-08 17:36:24 -08:00
Tj Holowaychuk f467fe1cbf Added res.send(Buffer) test 2011-11-08 17:34:04 -08:00
Tj Holowaychuk 15fd639cd9 Added res.send(String) test 2011-11-08 17:32:58 -08:00
Tj Holowaychuk f96f2cf56e Added res.send(code, body) test 2011-11-08 17:31:51 -08:00
Tj Holowaychuk b0f6278cea Added res.send(code) test 2011-11-08 17:30:29 -08:00
Tj Holowaychuk ae7bac9a6b Added res.header() chaining test 2011-11-08 17:29:01 -08:00
Tj Holowaychuk c8997204d4 Added res.header() tests 2011-11-08 17:27:05 -08:00
Tj Holowaychuk a2c51984a8 Added res.get(field) test 2011-11-08 17:25:05 -08:00
Tj Holowaychuk ed93e33d59 another test 2011-11-08 17:23:53 -08:00
Tj Holowaychuk 6e15b1cd20 Removed mock from res.status() test, mocks are lame 2011-11-08 17:23:14 -08:00
Tj Holowaychuk cc2513facf res.status(code) test 2011-11-08 17:18:44 -08:00
Tj Holowaychuk e303dcc915 multi-env configure() callbacks 2011-11-08 17:15:09 -08:00
Tj Holowaychuk 8ad17abb7b app.configure() tests 2011-11-08 17:13:16 -08:00
Tj Holowaychuk 5b296b5257 middleware tests
that dont quite work yet because node is being a PITA
2011-11-08 17:02:15 -08:00
Tj Holowaychuk 1a5c32f3ef setting up middleware tests 2011-11-08 16:00:44 -08:00
Tj Holowaychuk a15e745d42 test for application prototype 2011-11-08 15:45:30 -08:00
Tj Holowaychuk d17dd3e3d8 more config tests 2011-11-08 15:42:22 -08:00
Tj Holowaychuk 51a5c829bb config test 2011-11-08 15:40:34 -08:00
Tj Holowaychuk 8a91749e12 merged 2011-11-08 15:25:56 -08:00
Tj Holowaychuk 42fc0f9ee8 more tests 2011-11-08 15:23:02 -08:00
Tj Holowaychuk 17ccd55d11 upgrade should 2011-11-08 15:19:53 -08:00
Tj Holowaychuk b8a589d76f first new test 2011-11-08 15:19:19 -08:00
Tj Holowaychuk becf6d9413 Added mocha dev-dep 2011-11-08 15:07:31 -08:00
Tj Holowaychuk 9efc4b23dc Remove old tests 2011-11-08 15:05:47 -08:00
Tj Holowaychuk 6b1dc31759 version -pre so people are less confused 2011-11-04 09:06:45 -07:00
Tj Holowaychuk 9205d632cc Fixing express(1) for upcomming express 2011-11-04 09:06:23 -07:00
Tj Holowaychuk a751346b20 port some express(1) stuff from 2.x 2011-11-04 09:01:43 -07:00
Tj Holowaychuk 8111a19307 Removed sass.js support from express(1) 2011-11-04 08:36:09 -07:00
TJ Holowaychuk 860b4f1a3b Merge pull request #873 from gugu/master
Express depends on commander@0.0.4, which does not support node.js 5
2011-10-30 12:25:11 -07:00
Andrii Kostenko a5b1aa9ca7 Update package.json 2011-10-30 23:20:05 +04:00
Tj Holowaychuk 62257bce18 Added app.routes, replacing app.routes.all(). Closes #811 2011-10-14 17:51:23 -07:00
Tj Holowaychuk 0ed74aa68b added an array of routes 2011-10-14 17:48:57 -07:00
Tj Holowaychuk e0bd0d6470 Added app.get(setting). Closes #842 2011-10-14 17:37:23 -07:00
Tj Holowaychuk b433550556 refactored res.render() 2011-10-14 08:46:02 -07:00
Tj Holowaychuk 04ebd8875b Fixed express(1) public dir for windows. Closes #866 2011-10-14 08:38:33 -07:00
Tj Holowaychuk 1a1ed0ae45 semicolons 2011-10-13 09:46:48 -07:00
Tj Holowaychuk d6fabb6f8e move getters down 2011-10-13 09:46:26 -07:00
Tj Holowaychuk 08e8194db1 Merge branch 'master' of github.com:visionmedia/express 2011-10-13 09:45:59 -07:00
Tj Holowaychuk 0e4e050b21 Added req.fresh and req.stale
lame usage example:

app.get('/user/:id', function(req, res){
  var id = req.params.id;

  res.set('ETag', 'user-' + id);

  if (req.fresh) return res.send(304);
  setTimeout(function(){
    res.send('large expensive user response ' + id);
  }, 2000);
});
2011-10-13 09:43:31 -07:00
Tj Holowaychuk de17b285b1 Added req.secure 2011-10-11 09:45:01 -07:00
TJ Holowaychuk f640d0973d Merge pull request #863 from JonDum/master
Added JSHTML template engine for cli helper :)
2011-10-10 21:52:31 -07:00
Jonathan Dumaine 47ff0dc0cc Add JSHTML template engine for cli helper
JSHTML is a express compatible template engine 
with very nice syntax.

https://github.com/LuvDaSun/jshtml
2011-10-10 21:49:44 -07:00
Tj Holowaychuk 965e1d63dc added sync signature for app.locals.use() 2011-10-09 13:08:20 -07:00
Tj Holowaychuk 73f1da2ff7 Added replacement for dynamic locals. Closes #788 2011-10-09 13:01:32 -07:00
Tj Holowaychuk 0f6ad43e91 app.locals.use(fn) 2011-10-09 12:54:15 -07:00
Tj Holowaychuk 8d804a6c4a removed old app.locals() 2011-10-09 12:51:27 -07:00
Tj Holowaychuk 02f48aabbf map register function 2011-10-07 15:25:16 -07:00
Tj Holowaychuk d4b08e9566 misc 2011-10-07 15:18:00 -07:00
Tj Holowaychuk 9f1f58fd4b non-enumerable .router for Collection 2011-10-07 15:13:13 -07:00
Tj Holowaychuk 4ed92d50e0 misc refactoring 2011-10-07 15:12:24 -07:00
Tj Holowaychuk 8848004cb7 refactoring boot logic 2011-10-07 15:10:30 -07:00
Tj Holowaychuk 371b381074 more refactoring 2011-10-07 15:04:08 -07:00
Tj Holowaychuk 6d47011dcf View#contents() 2011-10-07 15:01:36 -07:00
Tj Holowaychuk 705cdb6368 misc refactoring 2011-10-07 15:00:20 -07:00
Tj Holowaychuk 90fc80fd87 docs 2011-10-07 14:59:42 -07:00
Tj Holowaychuk 041974ee01 added index lookup support back 2011-10-07 14:58:58 -07:00
Tj Holowaychuk 7369d861ca docs 2011-10-07 14:52:26 -07:00
Tj Holowaychuk e1da383aed new View 2011-10-07 14:51:06 -07:00
Tj Holowaychuk 6bcf29152f misc refactoring 2011-10-07 14:25:09 -07:00
Tj Holowaychuk 8a38211bd9 re-implemented "view cache" 2011-10-07 14:16:05 -07:00
Tj Holowaychuk cb2b9feb5f docs 2011-10-07 14:13:13 -07:00
Tj Holowaychuk c2d5d5619b lookup callback 2011-10-07 14:12:37 -07:00
Tj Holowaychuk 76b7d6975f app.lookup() 2011-10-07 14:11:08 -07:00
Tj Holowaychuk 7e9186d1ae removed hints setting 2011-10-07 14:08:06 -07:00
Tj Holowaychuk d1ce4c9923 req.query is always present 2011-10-07 14:04:59 -07:00
Tj Holowaychuk fed7fa4cd2 removed old parseRange util 2011-10-07 13:56:14 -07:00
Tj Holowaychuk 0d0125fc29 removed union util 2011-10-07 13:50:59 -07:00
Tj Holowaychuk 98e2c0522f merging res.locals 2011-10-07 13:50:31 -07:00
Tj Holowaychuk 294bc8c1d7 misc refactoring 2011-10-07 13:34:03 -07:00
Tj Holowaychuk ae11d83684 typo 2011-10-07 13:31:12 -07:00
Tj Holowaychuk aab9b08ec2 added charset option back 2011-10-07 13:30:33 -07:00
Tj Holowaychuk 31ff7db019 added status support back 2011-10-07 13:29:25 -07:00
Tj Holowaychuk c40c54fbee request-level render() 2011-10-07 13:27:43 -07:00
Tj Holowaychuk cecbaf2efe removed old view.js 2011-10-07 13:22:55 -07:00
Tj Holowaychuk e90413243e use app.engines instead of app.cache 2011-10-07 13:21:01 -07:00
Tj Holowaychuk a9396efeaf added app.register() 2011-10-07 13:19:29 -07:00
Tj Holowaychuk 60353c6d05 misc refactoring 2011-10-07 13:13:57 -07:00
Tj Holowaychuk 7b5ed50786 expose prototype 2011-10-07 13:13:32 -07:00
Tj Holowaychuk 02baa2b17c removed old http.js 2011-10-07 13:12:53 -07:00
Tj Holowaychuk d0585bd910 application.js 2011-10-07 13:10:15 -07:00
Tj Holowaychuk adf7124446 removed extra require() 2011-10-07 13:07:55 -07:00
Tj Holowaychuk 7710db4591 re-working view system 2011-10-07 13:07:19 -07:00
Tj Holowaychuk ce03cf49d8 uncommented old code 2011-10-07 10:01:30 -07:00
Tj Holowaychuk 65c0d14a4e expose connect middleware as express.* again 2011-10-07 10:00:10 -07:00
Tj Holowaychuk 667ed6fcf5 using connect.proto.use 2011-10-07 09:29:36 -07:00
Tj Holowaychuk d7da40642d removed old https inheritance logic 2011-10-07 09:24:17 -07:00
Tj Holowaychuk d6b5047511 setting up proto 2011-10-07 09:23:54 -07:00
Tj Holowaychuk 3b5a751b25 add connect repo as dep for now, since 2.0.0alpha blew everything up 2011-10-07 09:18:04 -07:00
Tj Holowaychuk 8a7491c97a "node":">= 0.5.0 < 0.7.0" 2011-10-05 15:08:50 -07:00
Tj Holowaychuk b3cab31cf7 connect 2.x dep 2011-10-05 15:04:43 -07:00
Tj Holowaychuk 021655a10a Added support for res.set(obj). Closes #834 2011-10-05 14:34:00 -07:00
Tj Holowaychuk e301d43704 Changed res.redirect() signature to accept status first. Closes #832
to match the others
2011-10-05 14:24:57 -07:00
Tj Holowaychuk 54c1a208c3 Added res.type() alias of res.contentType() 2011-09-28 10:27:13 -07:00
Tj Holowaychuk ad9bbda708 bench against loopback 2011-09-27 16:55:49 -07:00
Tj Holowaychuk 341e167eab comma last! 2011-09-21 15:35:30 -07:00
Tj Holowaychuk fb031d1ad5 Added mkdirp to express(1). Closes #795 2011-09-21 08:25:47 -07:00
Tj Holowaychuk d3937b9a61 Fixed res.redirect() HEAD support 2011-09-07 10:03:17 -07:00
Tj Holowaychuk 2c734e2e4c refactored res.send() 2011-09-07 10:02:27 -07:00
Tj Holowaychuk 77d8823261 misc refactoring 2011-09-06 15:19:05 -07:00
Tj Holowaychuk 6f85c14738 docs 2011-09-06 15:18:15 -07:00
Tj Holowaychuk edb1dc067a Fixed req.notify(), only escape args 2011-09-06 15:15:52 -07:00
Tj Holowaychuk 6b161d5389 Removed npm test script 2011-08-31 09:32:37 -07:00
Tj Holowaychuk c21e3feaa6 Fixed absolute path checking on windows. Closes #829 [reported by andrewpmckenzie] 2011-08-29 08:40:42 -07:00
Tj Holowaychuk a25ef01da3 Fixed multiple param callback regression. Closes #824 [reported by TroyGoode] 2011-08-22 10:05:16 -07:00
Tj Holowaychuk 0534266490 Merge branch 'master' of github.com:visionmedia/express 2011-08-22 10:05:13 -07:00
Tj Holowaychuk 71aca3c199 fixed some tests 2011-08-22 09:51:22 -07:00
TJ Holowaychuk 72fab80a74 Merge pull request #821 from pikeas/patch-1
Fixing typo: interacte -> interact
2011-08-21 10:40:42 -07:00
pikeas c8ab058842 Fixing typo: interacte -> interact 2011-08-22 16:11:15 +09:00
Tj Holowaychuk b166fd7d6e local -> localhost
most people wont have things set up the same as me
so this is probably not a good idea :D
2011-08-20 15:53:16 -07:00
Tj Holowaychuk 9545face97 mime 1.2.2 dep 2011-08-20 04:29:19 -07:00
Tj Holowaychuk 6dacd51b81 connect 1.6.2 dep 2011-08-20 04:28:48 -07:00
Tj Holowaychuk 571a182712 Added logger() to generated express(1) app 2011-08-20 04:02:33 -07:00
Tj Holowaychuk e3aabdc2bc Added make benchmark for experimental continuous-benchmarking tool 2011-08-20 03:19:59 -07:00
Tj Holowaychuk 4d8d5b12f2 Release 2.4.5 2011-08-19 10:18:57 -07:00
Tj Holowaychuk 5785e7e2e5 removed dynamicHelpers 2011-08-19 10:07:19 -07:00
Tj Holowaychuk 81f311105c removed app.helpers() use app.locals() 2011-08-19 10:05:47 -07:00
Tj Holowaychuk ad3679fcb8 haha... 2011-08-19 10:05:25 -07:00
Tj Holowaychuk 29508f1cc7 changed -css, --template to --stylus, --ejs
we can add more as we go
2011-08-18 17:25:32 -07:00
Tj Holowaychuk 426ba62348 rewrote express(1) to use commander.js 2011-08-18 17:21:39 -07:00
Tj Holowaychuk d2df055abe fixed res.sendfile() 404 support 2011-08-18 15:59:35 -07:00
Tj Holowaychuk d3ccdbcf72 build res.download() on top of res.sendfile()
like it should have always been
2011-08-18 15:43:19 -07:00
Tj Holowaychuk 7a476fc964 make res.sendfile() more like res.download(). Closes #774 2011-08-18 15:38:22 -07:00
Tj Holowaychuk 5da28be2b2 refactored res.sendfile() 2011-08-18 15:28:19 -07:00
Tj Holowaychuk 0932bdea30 OCD 2011-08-18 14:35:56 -07:00
Tj Holowaychuk 75054e17cf Refactored Route to use a single array of callbacks 2011-08-17 15:50:15 -07:00
Tj Holowaychuk 664907f02e fixed route error handlers when errors are thrown 2011-08-17 14:39:32 -07:00
Tj Holowaychuk f977272732 Added support for routes to handle errors. Closes #809
currently only the route end-point callbacks
support this, however this will change in the near future
to support route middleware etc
2011-08-17 14:33:23 -07:00
Tj Holowaychuk d10b7b43ea Added shorthand for the parsed request's pathname 2011-08-17 14:20:10 -07:00
Tj Holowaychuk e9abe1b846 Merged basepath setting. Closes #813 2011-08-17 10:13:25 -07:00
Tj Holowaychuk cc21f38664 qs >= 0.3.1 2011-08-17 07:53:45 -07:00
Tj Holowaychuk 34606c26f0 use nextRoute() internally 2011-08-16 18:30:01 -07:00
Tj Holowaychuk be9d66a574 Changed: removed .call(self) for route callbacks
not sure why we had this, ive never even used it
and the tests dont cover it, and its slower
2011-08-16 18:28:48 -07:00
Tj Holowaychuk ed9fcde499 Added app.routes.all(). Closes #803
not a huge fan of this API-wise, but at least it is something for now
2011-08-16 17:52:39 -07:00
Tj Holowaychuk 3c2139b0c3 Fixed res.redirect() on windows due to join() usage. Closes #808 2011-08-15 13:47:07 -07:00
Tj Holowaychuk 7eeec91ab5 russian docs 2011-08-14 09:36:07 -07:00
Tj Holowaychuk fdd43ee448 link to russian docs booyah! 2011-08-14 09:35:03 -07:00
Tj Holowaychuk ca75492512 Added support for multiple callbacks for app.param(). Closes #801
you can also make several calls to `app.param()` for the same
param name, which is equivalent to passing multiple in
a single call
2011-08-11 11:09:36 -07:00
Tj Holowaychuk a2a7644794 added another test 2011-08-11 10:12:22 -07:00
Tj Holowaychuk 91aebc758c Added test for app.param(fn) 2011-08-11 10:11:09 -07:00
Tj Holowaychuk ca0d29d811 expose list of http methods supported 2011-08-10 16:12:21 -07:00
Tj Holowaychuk c8c6aa2a1f Added res.get(field) as an alternative to res.header(field) 2011-08-10 14:15:37 -07:00
Tj Holowaychuk 19a1a22e63 Added res.set(field, val) as an alternative to res.header() 2011-08-10 14:13:36 -07:00
Tj Holowaychuk c729d62f89 another sidebar 2011-08-08 17:33:50 -07:00
Tj Holowaychuk 1793b50e6b sidebar example 2011-08-08 17:25:54 -07:00
Tj Holowaychuk 23dbe6a5f0 better layout control example 2011-08-08 17:15:13 -07:00
Tj Holowaychuk 509601e617 fixed app.locals precedence 2011-08-08 17:01:07 -07:00
Tj Holowaychuk d58beed752 Removed default local "app" 2011-08-08 16:51:41 -07:00
Tj Holowaychuk fd5d1076dc make req.notify() arity based 2011-08-08 16:45:22 -07:00
Tj Holowaychuk 05b76a1f93 prepping blog example for new express 2011-08-08 16:40:09 -07:00
Tj Holowaychuk f84ec803a4 use "dev" logger in blog example 2011-08-08 16:27:20 -07:00
Tj Holowaychuk c35cd7fcb7 Changed res.{send,json}() status code to the first arg at all times 2011-08-04 13:30:12 -07:00
Tj Holowaychuk bb9d50579b docs 2011-08-04 12:01:11 -07:00
Tj Holowaychuk 54d37512f5 Refactored res.header() 2011-08-03 20:00:39 -07:00
Tj Holowaychuk c516be8c4b added header.jade to jade example 2011-08-02 09:01:42 -07:00
Tj Holowaychuk 82c78ec8f9 semi 2011-07-29 11:02:50 -07:00
Tj Holowaychuk b1d4b71609 Refactored req.accepts() 2011-07-29 11:02:20 -07:00
Tj Holowaychuk 7440c7ddc7 more tests 2011-07-29 09:55:52 -07:00
Tj Holowaychuk 624dad5a78 Merge branch 'integration' 2011-07-29 09:40:18 -07:00
Arpad Borsos f4080210bd specialcase .:format routing to not include a dot in the capture group 2011-07-29 09:37:51 -07:00
Tj Holowaychuk c631eb43e3 Fixed 204 / 304 responses 2011-07-29 09:31:45 -07:00
Tj Holowaychuk 376bedf624 Changed res.send(null) responds with empty string
previously you would just get "null",
which is fine for res.json() but probably
not the best result for res.send()
2011-07-29 09:30:35 -07:00
Tj Holowaychuk 36e9c02f6f fixed a response test 2011-07-29 09:26:58 -07:00
Tj Holowaychuk 8f798569a8 fixed a jade test 2011-07-29 09:22:05 -07:00
Tj Holowaychuk 8c0e47baf9 more tests for routing 2011-07-27 09:02:31 -07:00
Tj Holowaychuk 461473e48e more tests 2011-07-27 09:00:53 -07:00
Tj Holowaychuk 8b1f109c1d renamed a test 2011-07-27 09:00:07 -07:00
Tj Holowaychuk e005cb31d8 Merge branch 'master' of github.com:visionmedia/express 2011-07-27 08:59:27 -07:00
Tj Holowaychuk 579836e221 docs 2011-07-27 08:58:58 -07:00
ctide b977ee6160 Fix the behavior for setting up routes with * in them. 2011-07-27 08:58:23 -07:00
TJ Holowaychuk ddce65b9dd Merge pull request #777 from purohit/master
Simple misspelling fix.
2011-07-25 17:59:57 -07:00
Ashwin Purohit e0e1105965 Fixing the misspelling of "manor" with "manner" in the 4 places it occurs. 2011-07-25 17:02:23 -07:00
Tj Holowaychuk 1f520f9f99 added express-resource to readme 2011-07-25 11:20:32 -07:00
Tj Holowaychuk 05a929deb6 tweak generated stylus 2011-07-25 11:15:15 -07:00
Tj Holowaychuk 5ac5352e33 Fixed [23]04 support 2011-07-22 08:35:33 -07:00
Tj Holowaychuk 787a555253 Added route-loading example for another route loading technique
using the vm module you can expose the route files at the root
level which IMO is nicer than module.exports = function(app){ etc
2011-07-20 12:33:53 -07:00
Tj Holowaychuk 388b84e858 node >= 0.4.9 < 0.7.0 for now 2011-07-19 16:14:48 -07:00
Tj Holowaychuk 7ffd17254a 3.0.0alpha1 soon
mainly so windows users can start playing
around with express, i will have a ton
of these alphas
2011-07-19 16:13:29 -07:00
Tj Holowaychuk 00affe187c update jade dev dep 2011-07-19 14:43:53 -07:00
Tj Holowaychuk 05844efbd6 qs >= 0.3.0 2011-07-19 12:08:39 -07:00
Tj Holowaychuk 3ab37028fc Removed req.flash() references
it will be req.notify(), req.session.notifications etc
2011-07-15 13:09:38 -07:00
Tj Holowaychuk 3a04888c5f docs 2011-07-15 12:12:46 -07:00
Tj Holowaychuk 6bd518241a refactored res.redirect() slightly 2011-07-15 11:56:39 -07:00
Tj Holowaychuk a3cddb856f Changed res.{cookie,clearCookie}() return res 2011-07-15 11:55:03 -07:00
Tj Holowaychuk 4b8e08d202 another req.is() example 2011-07-15 11:52:43 -07:00
Tj Holowaychuk 9413d30396 Added req.notify() alias of req.flash() 2011-07-15 11:36:52 -07:00
Tj Holowaychuk 5982fa63c6 refactored req.flash() 2011-07-15 11:36:02 -07:00
Tj Holowaychuk a4621a6418 refactored req.param() 2011-07-15 11:33:57 -07:00
Tj Holowaychuk 7eec21a5e6 examples 2011-07-15 11:31:47 -07:00
Tj Holowaychuk 96b72fe2f7 Renamed app.flashFormatters to app.formatters 2011-07-15 11:04:25 -07:00
Tj Holowaychuk c7c9606e87 Added %d flash formatter 2011-07-15 10:57:15 -07:00
Tj Holowaychuk 772c135d98 Merge branch 'remove-header-fields' 2011-07-15 10:52:17 -07:00
Tj Holowaychuk 365b3a76ba fixed tests 2011-07-15 10:52:11 -07:00
Tj Holowaychuk 41568b7f2a chainable res.header() 2011-07-15 10:47:38 -07:00
Tj Holowaychuk d853f6cf0e fixed some tests 2011-07-15 10:38:19 -07:00
Tj Holowaychuk bcfcce32d3 Removed header field support 2011-07-15 10:38:19 -07:00
Tj Holowaychuk 986916cf3e removed old dynamic helper logic from the view system 2011-07-15 10:31:52 -07:00
Tj Holowaychuk d689656775 precedence test 2011-07-15 10:30:51 -07:00
Tj Holowaychuk 8c56df7322 view system utilizing app.locals 2011-07-15 10:27:53 -07:00
Tj Holowaychuk 1dc87761a0 Changed app.locals to match res.locals 2011-07-15 10:13:21 -07:00
Tj Holowaychuk cd88b92587 Removed app.dynamicLocals(). Closes #756 2011-07-15 10:06:49 -07:00
Tj Holowaychuk eab03fdfc4 utilize connects new query() middleware 2011-07-15 10:03:46 -07:00
Tj Holowaychuk 9a8b86872d Replaced res.local[s]() with res.locals function. Closes #757 2011-07-15 10:01:31 -07:00
Tj Holowaychuk 04ce039ba4 Merge branch 'master' of github.com:visionmedia/express 2011-07-14 13:19:48 -07:00
Tj Holowaychuk 9605cbda45 misc 2011-07-14 12:59:14 -07:00
Tj Holowaychuk 3ec2739925 Removed "view options" setting. Closes #748 2011-07-14 12:59:14 -07:00
Tj Holowaychuk d250bf9b56 docs for previous commit 2011-07-14 12:59:14 -07:00
Tj Holowaychuk 6ebccb0518 Added "charset" option 2011-07-14 12:59:14 -07:00
Tj Holowaychuk b30efe4e2f misc refactoring 2011-07-14 12:59:14 -07:00
Tj Holowaychuk c275d279fc Added app.dynamicLocal(name, fn) 2011-07-14 12:59:14 -07:00
Tj Holowaychuk 7237a3c3b6 app.local() and res.local() return for chaining 2011-07-14 12:59:14 -07:00
Tj Holowaychuk f98896f6d7 Added app.local(name, val) 2011-07-14 12:59:14 -07:00
Tj Holowaychuk bcb2cdae4c app.helpers -> app.locals 2011-07-14 12:59:13 -07:00
Tj Holowaychuk 08159211a3 app.dynamicHelpers -> app.dynamicLocals 2011-07-14 12:59:13 -07:00
Tj Holowaychuk 232b6ab7ef Removed res.send() with no args support for 204
just use:

   res.send(204)
2011-07-14 12:59:13 -07:00
Tj Holowaychuk 3d2676d013 Removed res.helpers() alias of res.locals() 2011-07-14 12:59:13 -07:00
Tj Holowaychuk 477d06f990 removed old app.error() docs 2011-07-14 12:59:13 -07:00
Tj Holowaychuk ed19885ba1 removed old error handling docs 2011-07-14 12:59:13 -07:00
Tj Holowaychuk 297ae6fdb4 removed use of app.error() in examples 2011-07-14 12:59:13 -07:00
Tj Holowaychuk 456a985666 Removed app.error(). Closes #733
use trailing middleware with arity of 4 as
shown in this issue. They are functionally
equivalent
2011-07-14 12:59:13 -07:00
Tj Holowaychuk 261203d6c1 expresso 0.8.1 2011-07-14 12:59:13 -07:00
Dave Hoover 31262d2ea9 its is possessive, it's is shorthand for: it is 2011-07-14 12:59:13 -07:00
Tj Holowaychuk c72abc5293 Release 2.4.3 2011-07-14 12:58:24 -07:00
Tj Holowaychuk 93189ad0b6 Fixed options.filename, exposing to template engines
this is useful for performing relative
lookups within the template engine itself,
without manually specifyin the path
2011-07-14 12:53:49 -07:00
Tj Holowaychuk a8930b161e Fixed options.filename, exposing to template engines
this is useful for performing relative
lookups within the template engine itself,
without manually specifyin the path
2011-07-14 12:50:50 -07:00
Tj Holowaychuk fa31d45285 misc 2011-07-11 14:58:40 -07:00
Tj Holowaychuk 914e4a4cf7 Removed "view options" setting. Closes #748 2011-07-11 13:19:00 -07:00
Tj Holowaychuk f36d079f28 docs for previous commit 2011-07-11 13:12:55 -07:00
Tj Holowaychuk 17ddeef3ba Added "charset" option 2011-07-11 13:12:11 -07:00
Tj Holowaychuk f0c90ce668 misc refactoring 2011-07-11 12:53:52 -07:00
Tj Holowaychuk f19b312c48 Added app.dynamicLocal(name, fn) 2011-07-11 12:50:20 -07:00
Tj Holowaychuk e899a54ba7 app.local() and res.local() return for chaining 2011-07-11 12:46:10 -07:00
Tj Holowaychuk a4db994c2f Added app.local(name, val) 2011-07-11 12:43:31 -07:00
Tj Holowaychuk f98f46c836 app.helpers -> app.locals 2011-07-11 12:37:35 -07:00
Tj Holowaychuk 336aaaec9a app.dynamicHelpers -> app.dynamicLocals 2011-07-11 12:36:33 -07:00
Tj Holowaychuk b13ec8526e Removed res.send() with no args support for 204
just use:

   res.send(204)
2011-07-11 11:43:16 -07:00
Tj Holowaychuk 541020ff1b Removed res.helpers() alias of res.locals() 2011-07-11 11:22:25 -07:00
Tj Holowaychuk 9c153737b4 removed old app.error() docs 2011-07-11 11:18:29 -07:00
Tj Holowaychuk 7d53bb4064 removed old error handling docs 2011-07-11 11:18:15 -07:00
Tj Holowaychuk 4670751479 removed use of app.error() in examples 2011-07-11 11:13:07 -07:00
Tj Holowaychuk 8e058f16e4 Removed app.error(). Closes #733
use trailing middleware with arity of 4 as
shown in this issue. They are functionally
equivalent
2011-07-11 11:06:58 -07:00
Tj Holowaychuk f519f0a5b3 Merge branch 'master' of github.com:visionmedia/express 2011-07-11 11:02:10 -07:00
Tj Holowaychuk bb61304a49 expresso 0.8.1 2011-07-11 11:01:06 -07:00
TJ Holowaychuk 781d991eac Merge pull request #746 from redsquirrel/patch-1
typo
2011-07-09 13:24:17 -07:00
Dave Hoover d04c1f93a3 its is possessive, it's is shorthand for: it is 2011-07-09 13:19:15 -07:00
Tj Holowaychuk c0aab36187 Added docs for status option special-case. Closes #739 2011-07-07 09:09:34 -07:00
Tj Holowaychuk 5ae994ee8f Release 2.4.2 2011-07-06 20:15:44 -07:00
Tj Holowaychuk 60d16eab77 Revert "removed jsonp stripping"
This reverts commit 0ae18bca60.
2011-07-06 20:14:42 -07:00
Tj Holowaychuk fc60dfc1a6 docs 2011-07-06 09:59:09 -07:00
Tj Holowaychuk 45d149c146 docs for multiple envs in app.configure() calls 2011-07-06 09:58:32 -07:00
Tj Holowaychuk 4dfc1a69c3 Release 2.4.1 2011-07-06 09:57:06 -07:00
Tj Holowaychuk 0ae18bca60 removed jsonp stripping
I cannot recall why I added this, doesnt make
sense to me now haha.
2011-07-06 09:45:21 -07:00
Tj Holowaychuk 2aaf0defe7 res.send() using res.json() 2011-07-06 09:32:16 -07:00
Tj Holowaychuk 73ea5cd7ee Added res.json() JSONP support. Closes #737 2011-07-06 09:31:37 -07:00
Tj Holowaychuk e7f2d229ec added failing jsonp tests for res.json() 2011-07-06 09:25:10 -07:00
Tj Holowaychuk 87bc265817 moved jsonp tests 2011-07-06 09:24:08 -07:00
Tj Holowaychuk 796aaff295 connect 1.5.2 2011-07-06 09:07:09 -07:00
Tj Holowaychuk 8f87c50320 fixed connect-redis example 2011-07-05 09:55:04 -07:00
Tj Holowaychuk ee4471b345 when cookie path === null dont default it 2011-07-04 13:51:08 -07:00
Tj Holowaychuk 6815feb8cf docs 2011-07-04 13:45:08 -07:00
Tj Holowaychuk dbbe7be891 Added extending-templates example. Closes #730 2011-07-04 13:34:41 -07:00
Tj Holowaychuk 09c9452e5c Changed; default cookie path to "home" setting. Closes #731 2011-07-04 13:18:50 -07:00
Tj Holowaychuk b0e669ba00 remove pids/logs creation from express(1)
just confused people
2011-07-04 13:05:13 -07:00
Tj Holowaychuk f46ae9f3b2 docs 2011-07-04 09:20:35 -07:00
Tj Holowaychuk 9f2b344be8 Added support for multiple env app.configure() calls. Closes #735 2011-07-04 09:16:12 -07:00
Tj Holowaychuk 6b47271679 updated error-pages example 2011-07-01 14:14:46 -07:00
Tj Holowaychuk 6f7075be74 Added "strict routing" setting for trailing slashes
for people who are:

  a) over-optimizing seo
  b) working on fs-like APIs
2011-06-29 16:35:49 -07:00
Tj Holowaychuk 4b9cc3d698 docs 2011-06-28 11:27:51 -07:00
Tj Holowaychuk 3faa790b53 Release 2.4.0 2011-06-28 09:41:21 -07:00
Tj Holowaychuk 9477c9b516 docs for res.status() 2011-06-28 09:32:28 -07:00
Tj Holowaychuk b04be51848 Added chainable res.status(code)
ex:

  res.status(500).send("lame")
2011-06-28 09:32:03 -07:00
Tj Holowaychuk 9e4020efd3 Merge branch 'feature/res-json' 2011-06-28 09:14:09 -07:00
Tj Holowaychuk 6db19db665 docs for res.json 2011-06-28 09:14:04 -07:00
Tj Holowaychuk 1386f80ae5 Added res.json() and tests 2011-06-28 09:11:54 -07:00
Tj Holowaychuk e4342a7097 Added error handling to web-service example 2011-06-28 08:49:43 -07:00
Tj Holowaychuk fda31b75f9 Added simple web-service example 2011-06-23 09:45:19 -07:00
Tj Holowaychuk 8ca0a45b33 hmac for auth example 2011-06-23 08:50:20 -07:00
Tj Holowaychuk ce2bcaef68 Release 2.3.12 2011-06-22 13:56:13 -07:00
Tj Holowaychuk 0db7f26ad3 Fixed view layout bug. Closes #720
preventing custom relative layouts such as:

  views/
   users/
     user-layout.jade
2011-06-22 13:53:58 -07:00
Tj Holowaychuk 35370da458 screencasts have their own page 2011-06-21 15:16:46 -07:00
Tj Holowaychuk fe6c5832c2 fixed docs charset 2011-06-21 15:15:38 -07:00
Tj Holowaychuk e8c32df79c fixed some docs 2011-06-21 15:13:51 -07:00
Tj Holowaychuk 652e166462 updated docs 2011-06-21 15:08:17 -07:00
Tj Holowaychuk af6385f8e4 docs 2011-06-21 15:06:49 -07:00
Tj Holowaychuk f0277d3777 #express on freenode 2011-06-21 14:59:06 -07:00
Tj Holowaychuk 6bb100d7fa docs for req.get() 2011-06-21 10:48:34 -07:00
Tj Holowaychuk f13ea34de3 typo 2011-06-21 10:46:07 -07:00
Tj Holowaychuk 48a14a443a Merge branch 'master' of github.com:visionmedia/express 2011-06-21 10:30:07 -07:00
Tj Holowaychuk 1820ea6f59 Merge branch 'param' 2011-06-21 10:29:08 -07:00
Tj Holowaychuk 4d9647923e Added req.get(field, param) 2011-06-21 10:29:04 -07:00
Tj Holowaychuk 943e9b3a28 connect >= 1.5.1 < 2.0.0 2011-06-20 23:20:33 -07:00
TJ Holowaychuk 6b2ec50a0b Merge pull request #709 from jzacsh/master
documentation: typo fix for view-lookup
2011-06-12 18:43:12 -07:00
Jonathan Zacsh 7b813b95b6 documentation spelling typo and URL fix. 2011-06-12 20:05:52 -04:00
TJ Holowaychuk cdaa2e78d7 Merge pull request #707 from jakeg/patch-2
Updated connect-redis markdown docs
2011-06-12 11:07:09 -07:00
Jake Gordon add53d3222 trying the .md file this time 2011-06-12 10:59:52 -07:00
TJ Holowaychuk f4f79d2217 Merge pull request #706 from jakeg/patch-1
docs to show require('connect-redis')(express) re npm 1.x changes
2011-06-12 09:32:22 -07:00
Jake Gordon aa36bc4516 Due to npm 1.x changes need to pass connect/express to the function connect-redis exports (see https://github.com/visionmedia/connect-redis) 2011-06-12 05:05:25 -07:00
Tj Holowaychuk 9028cacfd1 Fixed; ignore body on 304. Closes #701
should do the trick
2011-06-08 12:40:07 -07:00
Tj Holowaychuk 40ccb595cd "Japanese Documentation" in Japanese 日本語ドキュメンテーション :) 2011-06-07 09:46:28 -07:00
Tj Holowaychuk 5606d08ecb Links to Japanese documentation, thanks @hideyukisaito! 2011-06-07 09:41:16 -07:00
Tj Holowaychuk 1888d6fca1 Added; the express(1) generated app outputs the env
thanks nathan! totally thoguht I had this :D
2011-06-06 15:38:20 -07:00
Tj Holowaychuk 5d16e6b302 added content-negotiation example 2011-06-06 11:58:33 -07:00
Tj Holowaychuk 96f7574bc1 connect >= 1.4.3 < 2.0.0 2011-06-06 10:21:53 -07:00
Tj Holowaychuk 490584c8bc misc refactor 2011-06-06 09:20:29 -07:00
Tj Holowaychuk 0cbb1f661c typo 2011-06-06 08:55:30 -07:00
Tj Holowaychuk 3dc53e105a misc refactoring 2011-06-06 08:22:35 -07:00
Tj Holowaychuk e2cdd760d8 Release 2.3.11 2011-06-04 10:50:10 -07:00
Tj Holowaychuk 4169202a41 removed generation of dummy test file from express(1) 2011-06-04 10:47:48 -07:00
Tj Holowaychuk 835982c561 added devDependencies to generated package.json 2011-06-04 10:45:21 -07:00
Tj Holowaychuk b67bacea18 more refactoring of cookie example 2011-06-02 13:58:46 -07:00
Tj Holowaychuk 3205ee7d75 refactored cookie example 2011-06-02 13:57:54 -07:00
Tj Holowaychuk ff7d5ff4e5 generate docs 2011-06-01 17:35:27 -07:00
Tj Holowaychuk 723774af27 added quick start to guide 2011-06-01 17:35:14 -07:00
Tj Holowaychuk c3fbd3fe10 express(1) usage docs 2011-06-01 17:34:07 -07:00
Tj Holowaychuk d1d3871550 Fixed; express(1) adds express as a dep
duh...
2011-06-01 17:29:48 -07:00
Tj Holowaychuk 5462c8c7ec prune on prepublish 2011-06-01 16:59:29 -07:00
Tj Holowaychuk 9536341e30 added npm test 2011-05-30 14:19:26 -07:00
Tj Holowaychuk 1bb798d963 Release 2.3.10 2011-05-27 09:20:03 -07:00
Tj Holowaychuk 91997e9c53 Added req.route, exposing the current route. Closes #11
this can be used with a dynamicHelper to expose the _last_
route that was matched, aka the end-point when rendering a template.

this is a `Route` instance, so it has .path, .regexp, etc.
2011-05-27 09:12:49 -07:00
Tj Holowaychuk 1393187040 Merge branch 'refactor/executable' 2011-05-26 10:31:29 -07:00
Tj Holowaychuk 6e69c880d9 Added package.json generation support to express(1) 2011-05-26 10:31:21 -07:00
Tj Holowaychuk 59dcd03972 removed suggestions 2011-05-26 10:18:56 -07:00
Tj Holowaychuk 11482546a2 Fixed call to app.param() function for optional params. Closes #682 2011-05-26 09:56:04 -07:00
Tj Holowaychuk 1ce43dd347 added failing test for #682 2011-05-26 09:48:07 -07:00
Tj Holowaychuk d1bfe137d4 test to ensure catch of invalid uri 2011-05-25 15:50:32 -07:00
Tj Holowaychuk 9d7452cdc2 more tests 2011-05-25 10:56:56 -07:00
Tj Holowaychuk d9cee90efc Release 2.3.9 2011-05-25 10:18:26 -07:00
Tj Holowaychuk 175aa08500 more tests 2011-05-25 10:16:11 -07:00
Tj Holowaychuk c9ff6198d3 more tests 2011-05-25 10:15:21 -07:00
Tj Holowaychuk f026218c82 misc view refactoring 2011-05-25 10:10:23 -07:00
Tj Holowaychuk 5bc86b9e29 more tests 2011-05-25 09:54:55 -07:00
Tj Holowaychuk 5830ac9936 more tests 2011-05-25 09:54:06 -07:00
Tj Holowaychuk d7c6c9a9f9 Release 2.3.8 2011-05-24 21:53:08 -07:00
Tj Holowaychuk 9c87eed60e Fixed OPTIONS regression preventing custom routing for this method 2011-05-24 21:52:52 -07:00
Tj Holowaychuk f15eb6d5ef added options test 2011-05-24 21:41:37 -07:00
Tj Holowaychuk 5b33788359 express-mongoose link 2011-05-24 08:45:44 -07:00
Tj Holowaychuk 11ec3ccd48 removed some old invalid docs
new stuff to come
2011-05-23 17:16:02 -07:00
Tj Holowaychuk 9d498ba3f1 misc 2011-05-23 16:59:16 -07:00
Tj Holowaychuk 15d4047180 link 2011-05-23 16:57:36 -07:00
Tj Holowaychuk 44eae73843 Release 2.3.7 2011-05-23 15:54:17 -07:00
Tj Holowaychuk d5b1c70731 removed invalidParamReturnValue() 2011-05-23 15:48:58 -07:00
Tj Holowaychuk e78dc18cfd Removed app.param() callback with retval support
this is now abstract and will be going into express-params
along with some other cases
2011-05-23 15:40:41 -07:00
Tj Holowaychuk 4d122923e9 docs 2011-05-23 15:33:40 -07:00
Tj Holowaychuk b1a7310263 Added support for app.param(fn) to define param logic 2011-05-23 15:30:34 -07:00
Tj Holowaychuk d6ef90d98d Moved param() retval logic to Router#param() 2011-05-23 15:06:59 -07:00
Tj Holowaychuk 85df59ac31 comma first 2011-05-23 14:56:35 -07:00
Tj Holowaychuk b789a28581 refactored with nextRoute() 2011-05-23 14:52:43 -07:00
Tj Holowaychuk 4068e7f444 added route Collection tests 2011-05-23 14:13:31 -07:00
Tj Holowaychuk 80e9ffbf5d Refactored router. Closes #639 2011-05-23 13:48:31 -07:00
Tj Holowaychuk 610fc92ca3 arity < 3 considered return-style param 2011-05-23 09:52:11 -07:00
Tj Holowaychuk 0f5dc9bdb2 Added checking of app.param() fn retval
functions returning NaN, == null, or === false are considered
a failure and the next route is executed
2011-05-23 09:38:01 -07:00
TJ Holowaychuk c24b2faec5 Merge pull request #671 from jpalardy/patch-1
Documentation typo :uri -> :url for logger()
2011-05-22 10:18:01 -07:00
Jonathan Palardy c407f58dc2 :uri -> :url
Example won't work otherwise. I checked the code :-)
2011-05-21 23:17:57 -07:00
Tj Holowaychuk 380da0e202 Removed module.parent check from express(1) generated app. Closes #670 2011-05-21 14:17:24 -07:00
Tj Holowaychuk 9e5e7a1526 added more route tests 2011-05-20 15:46:36 -07:00
Tj Holowaychuk 9016b5aaae added more route tests 2011-05-20 15:46:05 -07:00
Tj Holowaychuk 45f168e873 Release 2.3.6 2011-05-20 09:42:01 -07:00
Tj Holowaychuk 799938683d Merge branch 'refactor/dev-deps' 2011-05-20 09:39:34 -07:00
Tj Holowaychuk 7128f2d11f fixed last examples 2011-05-20 09:39:29 -07:00
Tj Holowaychuk 0634bf0b0d fixed redis example 2011-05-20 09:38:52 -07:00
Tj Holowaychuk f9e48c2972 fixed markdown example 2011-05-20 09:29:22 -07:00
Tj Holowaychuk 909960c0b3 refactoring examples more 2011-05-20 09:26:47 -07:00
Tj Holowaychuk 8a7876f4d1 cleaning up examples 2011-05-20 09:16:35 -07:00
Tj Holowaychuk 286c92b13b docs 2011-05-20 09:15:39 -07:00
Tj Holowaychuk b9872a278f docs 2011-05-20 09:15:35 -07:00
Tj Holowaychuk 1b34fd7efa misc 2011-05-20 09:11:15 -07:00
Tj Holowaychuk f05c351762 Fixed view caching, should not be enabled in development 2011-05-20 09:01:05 -07:00
Tj Holowaychuk 8323f19e96 fixing examples 2011-05-20 08:56:25 -07:00
Tj Holowaychuk 565eda9ee5 docs 2011-05-20 08:40:26 -07:00
Tj Holowaychuk 7aea7194d1 example docs 2011-05-20 08:39:43 -07:00
Tj Holowaychuk 2f68957c8c fixed tests 2011-05-20 08:37:23 -07:00
Tj Holowaychuk 4ca848e526 ignore node_modules 2011-05-20 08:35:20 -07:00
Tj Holowaychuk 31a8c7c19c test docs 2011-05-20 08:35:11 -07:00
Tj Holowaychuk f1c435e050 removed support submods 2011-05-20 08:31:13 -07:00
Tj Holowaychuk fac75a9bff connect 1.4.1 2011-05-20 08:29:02 -07:00
Tj Holowaychuk 4fe03ab223 dev deps 2011-05-20 08:28:02 -07:00
TJ Holowaychuk c6122da59b Merge pull request #668 from joemccann/master
Simple Update to Markdown example
2011-05-20 08:07:21 -07:00
Tj Holowaychuk 131f658779 Release 2.3.5 2011-05-20 07:32:16 -07:00
Joe McCann 127f77964e Updated markdown example to latest version of node-markdown and modified the compile method. 2011-05-20 09:16:53 -05:00
Tj Holowaychuk 9f2bd30dc7 router.routes 2011-05-19 18:36:41 -07:00
Tj Holowaychuk 6e633b31b4 return bool from req.is() 2011-05-19 09:48:19 -07:00
Tj Holowaychuk 1c65643488 more tests 2011-05-18 17:41:15 -07:00
Tj Holowaychuk 388ad9067a tweak tests 2011-05-17 13:59:24 -07:00
Tj Holowaychuk f470f0bdc5 export .view as alias for .View
reads better:

   express.view.lookup(...)
2011-05-16 16:27:17 -07:00
Tj Holowaychuk 72384b0523 misc refactor of res.partial() 2011-05-16 15:29:20 -07:00
Tj Holowaychuk 1b199b7d98 lookup docs 2011-05-16 15:26:12 -07:00
Tj Holowaychuk 09b384ea44 Merge branch 'refactor/views' 2011-05-16 15:20:26 -07:00
Tj Holowaychuk 56ae55f987 keep duplicates out of view resolution hint 2011-05-16 15:20:08 -07:00
Tj Holowaychuk 1c360a89ba added views.compile(view, cache, cid, options)
private for now
2011-05-16 15:17:06 -07:00
Tj Holowaychuk 8636dee13e docs 2011-05-16 14:28:11 -07:00
Tj Holowaychuk 70e6baf6fc misc refactoring 2011-05-16 09:32:53 -07:00
Tj Holowaychuk 3588c1eedc docs 2011-05-16 09:27:16 -07:00
Tj Holowaychuk 8d6f167a81 added better middleware docs and use-cases 2011-05-16 09:24:53 -07:00
Tj Holowaychuk 6106188347 docs 2011-05-15 18:01:47 -07:00
Tj Holowaychuk eeb77541cd Updated jade submodule 2011-05-14 11:53:26 -07:00
Tj Holowaychuk 99b244b47c export View 2011-05-13 19:38:23 -07:00
Tj Holowaychuk 3043672448 added exports.lookup(view, options) to view.js
private for now
2011-05-13 19:37:11 -07:00
Tj Holowaychuk 0477a53c9f misc refactor 2011-05-13 15:47:48 -07:00
Tj Holowaychuk d9aa7c3bc9 Release 2.3.4 2011-05-08 10:53:57 -07:00
Tj Holowaychuk 986fac583b Merge branch 'master' of github.com:visionmedia/express 2011-05-08 10:52:59 -07:00
Tj Holowaychuk c6d76086e2 Fixed res.sendfile() bug preventing the transfer of files with spaces
params are decoded so we need to encode before passing to send() which then
in turn decodes it again, however nodes url module chokes on the spaces.
2011-05-08 10:52:16 -07:00
Tj Holowaychuk e2771364eb Updated connect submodule 2011-05-08 10:45:42 -07:00
Tj Holowaychuk 0d5a63798b added failing test with spaces in filename 2011-05-08 10:40:37 -07:00
TJ Holowaychuk 7d15e2bf52 Merge pull request #653 from darrentorpey/patch-1.
Fixed a typo: "A route is simple a string" => "A route is simply a string
2011-05-04 09:35:49 -07:00
Darren Torpey 31fef407b6 Fixed a typo: "A route is simple a string" => "A route is simply a string" 2011-05-04 04:14:40 -07:00
Tj Holowaychuk 6bef3ef891 misc 2011-05-03 16:48:17 -07:00
Tj Holowaychuk b806846049 misc 2011-05-03 16:44:17 -07:00
Tj Holowaychuk bc16020976 added stupid say example 2011-05-03 16:40:20 -07:00
Tj Holowaychuk 8afb905a43 Release 2.3.3 2011-05-03 11:31:16 -07:00
Tj Holowaychuk 53667728a8 Fixed route-specific middleware when using the same callback function several times 2011-05-03 11:28:33 -07:00
Tj Holowaychuk 5f0a854e29 added test for route specific middleware regression 2011-05-03 11:25:54 -07:00
Tj Holowaychuk e9ef3dd9cd ws 2011-05-03 09:41:59 -07:00
Tj Holowaychuk f702884704 split methods supported by rfc [slaskis] 2011-05-03 09:24:51 -07:00
Tj Holowaychuk 0cb866845d npm 1.x docs 2011-05-02 12:48:45 -07:00
Tj Holowaychuk 26483029db docs for next("route"). Closes #650 2011-05-01 11:06:37 -07:00
Tj Holowaychuk d2adcbdf67 Added "case sensitive routes" option. 2011-04-29 16:41:20 -07:00
Tj Holowaychuk d2f963db2a fixed tests 2011-04-29 16:34:22 -07:00
TJ Holowaychuk fc2bc1362f Merged pull request #645 from 8bitDesigner/patch-1.
Incorrect reference to template in a comment
2011-04-27 18:56:00 -07:00
8bitDesigner 6ae45d0fd3 The comment here refers to using "jade" for layouts, but you're using "ejs" instead. 2011-04-27 16:11:39 -07:00
Tj Holowaychuk cc185a8c0e Release 2.3.2 2011-04-27 09:12:54 -07:00
Tj Holowaychuk ae1078944c Fixed view hints
populate attempts on new View
2011-04-27 09:07:56 -07:00
Tj Holowaychuk 385a05dd10 bump 2011-04-26 15:26:24 -07:00
Tj Holowaychuk 2572a78648 Release 2.3.1 2011-04-26 15:26:04 -07:00
Tj Holowaychuk 470774cfba Fixed template caching collision issue. Closes #644
the parent view is resolved first so we always have the absolute path
available, so this should prevent collisions.
2011-04-26 15:24:31 -07:00
Tj Holowaychuk 351f6abe4c Merge branch 'refactor/router' 2011-04-26 14:36:51 -07:00
Tj Holowaychuk 53a16e1795 Added app.match() as app.match.all() 2011-04-26 13:59:59 -07:00
Tj Holowaychuk ff77c8b205 Added app.lookup() as app.lookup.all() 2011-04-26 13:59:37 -07:00
Tj Holowaychuk b33f38b109 Added app.remove() for app.remove.all() 2011-04-26 13:58:43 -07:00
Tj Holowaychuk b9596d7ce8 Added app.remove.VERB() 2011-04-26 13:57:05 -07:00
Tj Holowaychuk 251175c025 test for previous commit 2011-04-26 13:30:47 -07:00
Tj Holowaychuk fda1bc4630 moved fn.params to route.params 2011-04-26 13:30:21 -07:00
Tj Holowaychuk 83c2c176a9 misc 2011-04-26 13:28:20 -07:00
Tj Holowaychuk 9be5992f22 misc refactoring 2011-04-26 13:26:49 -07:00
Tj Holowaychuk d8d23c0bf8 misc 2011-04-26 13:21:19 -07:00
Tj Holowaychuk b2689fc40e docs 2011-04-26 13:16:19 -07:00
Tj Holowaychuk a4cfde350f moved more tests 2011-04-26 13:14:21 -07:00
Tj Holowaychuk 7374027457 added router.test.js 2011-04-26 13:13:07 -07:00
Tj Holowaychuk 63328c2177 added .index to match() retvals 2011-04-26 13:01:53 -07:00
Tj Holowaychuk c4e2ce23e5 more Route tests 2011-04-26 12:59:25 -07:00
Tj Holowaychuk dacad53b2e Added instancoef Route test 2011-04-26 12:57:14 -07:00
Tj Holowaychuk 4ffd5280a7 expose Route 2011-04-26 12:55:31 -07:00
Tj Holowaychuk 74310fb464 misc refactoring 2011-04-26 12:53:57 -07:00
Tj Holowaychuk 8b2268cf38 Started Route implementation 2011-04-26 12:41:05 -07:00
Tj Holowaychuk fb655f4981 added lib/router/methods.js 2011-04-26 11:49:51 -07:00
Tj Holowaychuk 7208c33d72 refactored view.js 2011-04-26 11:40:44 -07:00
Tj Holowaychuk 4efb25d048 refactored https.js 2011-04-26 11:39:09 -07:00
Tj Holowaychuk a3678cd7f6 refactored http.js 2011-04-26 11:34:41 -07:00
Tj Holowaychuk 393d38f1ab stubbed Route 2011-04-26 11:31:31 -07:00
Tj Holowaychuk 805b9ac3a9 docs for "view cache" setting 2011-04-25 12:06:20 -07:00
Tj Holowaychuk 379b9812be refactored options() helper 2011-04-25 10:26:08 -07:00
Tj Holowaychuk a9992b5647 docs 2011-04-25 10:19:13 -07:00
Tj Holowaychuk b6c0a9b1b5 moved router to router/index 2011-04-25 10:17:13 -07:00
Tj Holowaychuk 1d2dd2a375 Merge branch 'feature/router' 2011-04-25 10:13:46 -07:00
Tj Holowaychuk 63db694aa2 utilizing local router 2011-04-25 10:13:30 -07:00
Tj Holowaychuk b6aca36ad9 htmlEscape -> escape 2011-04-25 10:11:38 -07:00
Tj Holowaychuk 8420ae93fd removed old path utils 2011-04-25 10:10:43 -07:00
Tj Holowaychuk 6722716fa7 Moved router over from connect 2011-04-25 10:08:54 -07:00
Tj Holowaychuk 658e064220 Release 2.3.0 2011-04-25 09:49:54 -07:00
Tj Holowaychuk 66b472e567 connect >= 1.4.0 2011-04-25 09:32:57 -07:00
Tj Holowaychuk 3d242a607e Fixed caching of views when using several apps. Closes #637
simple fix :)
2011-04-25 09:25:23 -07:00
Tj Holowaychuk bc68e5e7a3 misc 2011-04-25 09:20:31 -07:00
Tj Holowaychuk aa6858189c misc refactor 2011-04-23 18:54:49 -07:00
Tj Holowaychuk 06fda62c9e Merge branch 'refactor/route-middleware' 2011-04-22 16:49:04 -07:00
Tj Holowaychuk 5688ea650d Fixed gotcha invoking app.param() callbacks once per route middleware. Closes #638 2011-04-22 16:48:54 -07:00
Tj Holowaychuk f5c4e9d612 Updated connect submodule 2011-04-22 16:34:42 -07:00
Tj Holowaychuk b9eda2a59d Updated connect submodule 2011-04-22 16:11:13 -07:00
Tj Holowaychuk 8c168b0971 connect >= 1.3.1 < 2.0.0 2011-04-22 16:11:07 -07:00
Tj Holowaychuk 9c20a50ee2 Added failing test for gotcha 2011-04-22 14:44:08 -07:00
Tj Holowaychuk eac666574e viewHelpers -> _locals 2011-04-21 08:26:30 -07:00
Tj Holowaychuk e4c840f6b8 Added res.helpers() as alias of res.locals()
to match app.locals() / app.helpers()
2011-04-20 15:26:22 -07:00
Daniel Shaw 3afbcd0acf JSON and JSONP default to UTF-8 in the same way as HTML. Closes #632.
Signed-off-by: Tj Holowaychuk <tj@vision-media.ca>
2011-04-20 09:00:02 -07:00
Daniel Shaw 8f054dbcaf JSON and JSONP default to UTF-8 in the same way as HTML. Introduces app.set('charset') to set charset default at the application level. Closes #632.
Signed-off-by: Tj Holowaychuk <tj@vision-media.ca>
2011-04-20 09:00:02 -07:00
Tj Holowaychuk ccc39e5aa2 Fixed partial lookup precedence. Closes #631 2011-04-19 10:23:16 -07:00
Tj Holowaychuk 53d4da2a9c Added failing partial precedence test 2011-04-19 10:19:45 -07:00
Tj Holowaychuk d9e7153fc9 Renamed "cache views" to "view cache". Closes #628 2011-04-17 16:42:03 -07:00
Tj Holowaychuk dc02b0d5ae Added options support to res.clearCookie() 2011-04-17 16:37:16 -07:00
Aaron Heckmann e0bc5711b8 auto set Content-Type in res.attachement
Signed-off-by: Tj Holowaychuk <tj@vision-media.ca>
2011-04-14 13:48:22 -07:00
Tj Holowaychuk 957cf45fa1 Release 2.2.2 2011-04-12 02:44:47 -07:00
Tj Holowaychuk f4487343df Fixed filename option passing to template engine 2011-04-12 02:43:03 -07:00
Tj Holowaychuk ca1bdb31e3 Updated jade submodule 2011-04-12 02:41:30 -07:00
Tj Holowaychuk 236a412459 docs 2011-04-11 09:46:28 -07:00
Tj Holowaychuk 759a57bdb6 Added second callback support for res.download() connection errors
since you can no longer respond, it will be helpful to have separate callbacks
2011-04-11 09:44:19 -07:00
Tj Holowaychuk 1abb674a07 temp fix for nodes res.removeHeader() after sent "bug" 2011-04-11 09:14:11 -07:00
Tj Holowaychuk 961146a287 link to express-expose 2011-04-08 17:51:41 -07:00
Tj Holowaychuk 573f940985 fixed example hasMessages
sessions are not always available
2011-04-08 12:44:03 -07:00
Tj Holowaychuk 882916bb2e Updated jade submodule 2011-04-08 12:36:41 -07:00
Tj Holowaychuk 47d1c62732 Updated connect submodule 2011-04-08 12:36:35 -07:00
Tj Holowaychuk d39293c025 refactor 2011-04-08 12:36:26 -07:00
Tj Holowaychuk 2942dafdfd >= connect 1.2.3 2011-04-05 11:25:16 -07:00
Tj Holowaychuk 4e1aefa5b5 Release 2.2.1 2011-04-04 12:23:37 -07:00
Tj Holowaychuk 89383ecc57 misc refactoring 2011-04-03 14:27:40 -07:00
Tj Holowaychuk 08046f7692 Added better partial() object collection support
only respecting .length is fine in some cases, but
if the object has a length and has holes, it will likely
produce an unexpected result, or an undefined local in the
render call, which may some times be ideal, but most likely not.

this change allows arbitrary objects to be passed to "collection: ",
however unfortunately there is no way to arbitrarily assume the object
is a collection without passing it as the option
2011-04-03 14:27:05 -07:00
Tj Holowaychuk 885fb1fa92 docs 2011-04-01 17:55:26 -07:00
Tj Holowaychuk 6a58c71528 Merge branch 'feature/view-layout-control' 2011-04-01 17:47:11 -07:00
Tj Holowaychuk 371d66ba2a Added layout(path) helper to change the layout within a view. Closes #610 2011-04-01 17:47:03 -07:00
Tj Holowaychuk 25bddf3fb5 added layout control example 2011-04-01 17:39:18 -07:00
Tj Holowaychuk f6e9fb13f8 Removed "request" and "response" locals
sorry, changed my mind. easy enough to expose these if you want to,
but they are to large by default
2011-04-01 17:25:05 -07:00
Tj Holowaychuk f0df8434e7 markdown escaping 2011-03-31 08:24:43 -07:00
Tj Holowaychuk e4d3f239e5 Updated connect submodule 2011-03-30 22:01:16 -07:00
Tj Holowaychuk bcc22dfa6f Updated connect submodule 2011-03-30 21:59:17 -07:00
Tj Holowaychuk f614709a01 errorHandler title 2011-03-30 21:59:15 -07:00
Tj Holowaychuk 11250d22c9 misc refactoring 2011-03-30 21:44:21 -07:00
Tj Holowaychuk 4b4de29725 Performance improved with better view caching
the entire View object is now cached in-memory, along with the lookup
logic as well. This increases rendering (with jade at least) by about 260 rps
2011-03-30 21:40:05 -07:00
Tj Holowaychuk 99b49d2718 updated docs 2011-03-30 12:11:22 -07:00
Tj Holowaychuk 6230ec55be more docs 2011-03-30 12:02:14 -07:00
Tj Holowaychuk 0733d3c585 connect 1.2.0 2011-03-30 11:58:26 -07:00
Tj Holowaychuk 6f8370ff0e Updated connect submodule 2011-03-30 11:58:09 -07:00
Tj Holowaychuk bc244ed07e docs for app.match.VERB() 2011-03-30 11:56:14 -07:00
Tj Holowaychuk 41266aa8e4 docs for app.lookup.VERB() 2011-03-30 11:49:21 -07:00
Tj Holowaychuk 45faee3e5b Release 2.2.0 2011-03-30 11:40:47 -07:00
Tj Holowaychuk 74ff735e10 Updated haml submodule 2011-03-30 11:00:47 -07:00
Tj Holowaychuk 97879f2b16 Updated formidable submodule 2011-03-30 11:00:43 -07:00
Tj Holowaychuk 1a338251ad Updated connect-form submodule 2011-03-30 11:00:34 -07:00
Tj Holowaychuk 354dc768c1 Updated jade submodule 2011-03-30 11:00:25 -07:00
Tj Holowaychuk 8a0796cd94 Updated ejs submodule 2011-03-30 11:00:21 -07:00
Tj Holowaychuk cbc3b26584 changed express(1) --help 2011-03-30 10:58:01 -07:00
Tj Holowaychuk d628583db8 removed colors from express(1) 2011-03-30 10:56:11 -07:00
Tj Holowaychuk 058777be1e connect >= 1.1.6 2011-03-29 18:11:00 -07:00
Tj Holowaychuk 260d03a0c4 Merge branch 'feature/route-lookup' 2011-03-29 18:04:49 -07:00
Tj Holowaychuk 6dcf6f41cc Added app.VERB() -> [Function...], app.lookup.VERB(), and app.match.VERB(). Closes #606 2011-03-29 18:04:43 -07:00
Tj Holowaychuk 799f790886 Updated connect submodule 2011-03-29 17:40:14 -07:00
Tj Holowaychuk cb3c4b0ea9 Updated connect submodule 2011-03-29 17:38:39 -07:00
Tj Holowaychuk 798d255ba6 Release 2.1.1 2011-03-29 10:40:26 -07:00
Tj Holowaychuk 28ba9e8ac5 Fixed res.partial(); next(err) when no callback is given [reported by aheckmann] 2011-03-29 09:56:58 -07:00
Tj Holowaychuk 7888cb0506 docs 2011-03-29 09:51:38 -07:00
Tj Holowaychuk 5e284a20cc Updated connect submodule 2011-03-29 09:49:45 -07:00
Tj Holowaychuk 770357e727 Updated expresso submodule 2011-03-29 09:49:18 -07:00
Aaron Heckmann 673ba22555 res.send(undefined) returns a 204
closes #600

Signed-off-by: Tj Holowaychuk <tj@vision-media.ca>
2011-03-29 08:52:36 -07:00
Aaron Heckmann fb38d9cfb7 add test for res.send(undefined)
Signed-off-by: Tj Holowaychuk <tj@vision-media.ca>
2011-03-29 08:52:34 -07:00
Aaron Heckmann dda89a57ec ignore .swo .swp
Signed-off-by: Tj Holowaychuk <tj@vision-media.ca>
2011-03-29 08:52:34 -07:00
Tj Holowaychuk 62df63d3a0 doc typo 2011-03-29 08:39:35 -07:00
Tj Holowaychuk e71696cf34 expose err.view when failing to locate a view
allows for:

   err.view.path

etc
2011-03-28 14:44:12 -07:00
Tj Holowaychuk b5d8d58670 repo 2011-03-27 14:23:43 -07:00
Tj Holowaychuk 14e6a667f5 Release 2.1.0 2011-03-24 13:47:38 -07:00
Tj Holowaychuk 0c324783ae Merge branch 'feature/root-partial-lookup' 2011-03-24 13:34:02 -07:00
Tj Holowaychuk 5d6ce251ca Added <root>/_<name> partial lookup support 2011-03-24 13:33:52 -07:00
Tj Holowaychuk 92c04cee1d Added; partial lookup relative to view root. Closes #447
for example when nested deep, if you have a
partial located at ./views/messages.jade

partial("messages");

will still work
2011-03-24 13:26:32 -07:00
Tj Holowaychuk 7fdf587a7b added test for root partial lookup 2011-03-24 13:21:23 -07:00
Tj Holowaychuk 1e46218b09 doc typo 2011-03-24 11:46:40 -07:00
Tj Holowaychuk c56fcd8fb9 better --help output 2011-03-22 13:00:36 -07:00
Tj Holowaychuk 319fbf7f64 Added "request", "response", and "app" locals 2011-03-22 12:16:58 -07:00
Tj Holowaychuk bf06d9077c docs for "filename" local 2011-03-22 12:14:08 -07:00
Tj Holowaychuk 9d2bd29ee1 Added 'settings' local variable, containing the app's settings 2011-03-22 12:06:19 -07:00
Tj Holowaychuk d11fa1f74e added .settings test 2011-03-22 12:02:57 -07:00
Tj Holowaychuk c824da0dab test indentation 2011-03-22 11:59:29 -07:00
Tj Holowaychuk 9362c83a33 removed dead test 2011-03-22 11:59:05 -07:00
Tj Holowaychuk 0c38098f02 tweak req.flash() failure message 2011-03-21 16:13:40 -07:00
Pau Ramon be7068f569 Better error output when using flash without session middleware. 2011-03-21 16:12:55 -07:00
Tj Holowaychuk b122bf22e3 link typo 2011-03-21 12:06:36 -07:00
Tj Holowaychuk b7232f38f3 Added res.send(bool) support
application/json
2011-03-21 10:34:04 -07:00
Tj Holowaychuk c1b72ac1b7 Fixed stylus example for latest version 2011-03-21 08:45:43 -07:00
Roman Shtylman b9e0d15878 check that this.params is valid before calling hasOwnProperty 2011-03-21 08:13:05 -07:00
Tj Holowaychuk cf26cf7afc wrap try/catch around render() 2011-03-18 11:44:48 -07:00
Tj Holowaychuk a75e60ae47 fixed docs due to markdown-js not supporting html 2011-03-18 09:18:29 -07:00
Tj Holowaychuk 187dc5dd03 connect 1.1.1 2011-03-18 08:49:59 -07:00
Tj Holowaychuk 9c9e2afade refactored res.redirect() 2011-03-18 08:49:46 -07:00
Tj Holowaychuk fae1ba98c1 doc typo 2011-03-17 19:05:59 -07:00
Tj Holowaychuk c3e632620a doc typo 2011-03-17 19:05:28 -07:00
Tj Holowaychuk dd7158ac46 regenerated docs 2011-03-17 18:56:44 -07:00
Tj Holowaychuk eefe51c7a7 removed manpages from make 2011-03-17 18:55:13 -07:00
Tj Holowaychuk bf596dc023 Release 2.0.0 2011-03-17 18:06:30 -07:00
Tj Holowaychuk 220d88d654 Fixed up index view path alternative
previously was doing ../index, which was not intended
now doing ../VIEW/index
2011-03-17 15:36:44 -07:00
Tj Holowaychuk a254e64bdb Changed; res.locals() without object returns the locals 2011-03-17 14:50:35 -07:00
Tj Holowaychuk 1555b92fb8 Release 2.0.0rc3 2011-03-17 13:01:59 -07:00
Tj Holowaychuk d5b7a40b39 Fixed partials example 2011-03-17 13:00:43 -07:00
Tj Holowaychuk bd1ab7ab96 pass the function 2011-03-17 12:48:06 -07:00
Tj Holowaychuk 2ff991bfcf refactored res.render() 2011-03-17 12:45:11 -07:00
Tj Holowaychuk 0b1378a539 Added res.locals(obj) 2011-03-17 12:13:59 -07:00
Tj Holowaychuk 723c908bd7 Added res.partial() callback support 2011-03-17 12:10:32 -07:00
Tj Holowaychuk 4874404701 typo 2011-03-17 11:33:35 -07:00
Tj Holowaychuk 4c1374840a Release 2.0.0rc2 2011-03-17 11:01:20 -07:00
Tj Holowaychuk 5da01633fd Fixed SlowBuffer support. Closes #584 2011-03-17 10:37:34 -07:00
Tj Holowaychuk cdbd8af527 migration docs for partials 2011-03-17 09:31:32 -07:00
Tj Holowaychuk a6fdc1bfd2 Fixed .filename view engine option [reported by drudge] 2011-03-16 16:58:02 -07:00
Tj Holowaychuk 20b8facb05 docs for partial changes 2011-03-16 15:53:27 -07:00
Tj Holowaychuk 909914f7af Changed; partial() "locals" are now optional
this means that:

   partial("user", { name: "tj" })

with the intent of receiving "user" instead of "name" in this
case is invalid, "name" here is a local, however passing a non-plain
object such as a User object is fine:

    partial("user", new User("tj"));
2011-03-16 15:37:05 -07:00
Tj Holowaychuk 3f31ebc676 fixed express-contrib example reference 2011-03-15 15:23:28 -07:00
Tj Holowaychuk f3c068a90c Merge branch 'integration' 2011-03-15 10:52:58 -07:00
Tj Holowaychuk 90d7e193d1 Refactored Server#use()
eventually we should just emit some events from connect
2011-03-15 10:52:53 -07:00
Tj Holowaychuk c9f5bb6f17 added .app test for the mounted server as well 2011-03-15 10:39:59 -07:00
Ben Weaver 9865a4c4f2 Clean up patch to Server#use(), add test case for restoring res#app property. 2011-03-15 10:37:18 -07:00
Ben Weaver f12baf32d4 Restore original res.app when out() is called. 2011-03-15 10:37:18 -07:00
Tj Holowaychuk 80f4d08e8b Release 2.0.0rc 2011-03-14 15:01:37 -07:00
Tj Holowaychuk 07c9cae923 Fixed; expose HTTPSServer constructor 2011-03-14 14:36:22 -07:00
Tj Holowaychuk d867cc9271 Fixed express(1) default test charset. Cloeses #579 [reported by secoif] 2011-03-13 10:15:53 -07:00
Tj Holowaychuk 3a1fe1e295 Fixed; default charset to utf-8 instead of utf8 for lame IE [reported by NickP] 2011-03-11 16:34:41 -08:00
Tj Holowaychuk 3cacf050df Docs for staticProvider() changes 2011-03-11 14:11:45 -08:00
Tj Holowaychuk 1536d73d1b Release 2.0.0beta3 2011-03-09 15:45:55 -08:00
Tj Holowaychuk 55143a9d44 Updated connect submodule 2011-03-09 15:39:10 -08:00
Tj Holowaychuk c92e193916 Fixed res.redirect(). RFC states absolute 2011-03-09 15:18:22 -08:00
Tj Holowaychuk d12452fc49 docs for charset 2011-03-09 10:59:47 -08:00
Tj Holowaychuk 3d8400a40c docs for res.contentType() literal 2011-03-09 10:54:35 -08:00
Tj Holowaychuk 1fe0aea0b0 Added test for res.contentType() literal 2011-03-09 10:53:50 -08:00
Tj Holowaychuk 5df2544883 fixed a test 2011-03-09 10:46:59 -08:00
Tj Holowaychuk acbf224277 default res.send() string charset to utf8 2011-03-09 10:42:14 -08:00
Tj Holowaychuk d0d17a0d35 charset tests using ISO-8859-1 2011-03-09 10:33:28 -08:00
Tj Holowaychuk f7b53d33bc more tests 2011-03-09 10:33:06 -08:00
Tj Holowaychuk 92be06874b more tests 2011-03-09 10:31:45 -08:00
Tj Holowaychuk f327455d9d Added charset option for render() 2011-03-09 10:31:10 -08:00
Tj Holowaychuk 54415bf2af moved a test 2011-03-09 10:29:03 -08:00
Tj Holowaychuk bac62dfcd9 added charset test with res.render() 2011-03-09 10:26:37 -08:00
Tj Holowaychuk 820b43c1f3 Added .charset + res.send() test 2011-03-09 10:23:05 -08:00
Tj Holowaychuk a5b69290d5 fixed a test 2011-03-09 10:20:44 -08:00
Tj Holowaychuk 5c7a9c86f6 Updated connect submodule 2011-03-09 10:20:03 -08:00
Tj Holowaychuk 7f83f916f6 Updated jade submodule 2011-03-09 09:46:47 -08:00
Masahiro Hayashi c15a949cc3 Updated express command
- Fixed a genereated test's bug
- Added a forgotten semicolon
2011-03-08 13:42:06 -08:00
Tj Holowaychuk ce47f96570 dont change NODE_ENV in tests 2011-03-08 13:39:30 -08:00
Tj Holowaychuk 57b035cd94 hinting at fully resolved paths 2011-03-08 12:58:16 -08:00
Tj Holowaychuk f1f126171c Added view resolution hints when in development 2011-03-08 12:51:40 -08:00
Tj Holowaychuk 71e1bcd855 fixed a test 2011-03-08 12:02:35 -08:00
Tj Holowaychuk b5579b6307 Added layout lookup support relative to the page view
for example if you render ./views/forum/thread and
./views/forum/thread/layout.jade exists, it will be used,
falling back on ./views/layout.jade.
2011-03-08 12:01:45 -08:00
Tj Holowaychuk 110b0fe14a misc refactor 2011-03-08 11:47:03 -08:00
Tj Holowaychuk d7488bbb62 Removed Partial constructor (not used) 2011-03-08 11:42:03 -08:00
Tj Holowaychuk 2007407e7b docs 2011-03-08 09:56:24 -08:00
Tj Holowaychuk d152e7e780 Added res.render() status support back
useful for error templates that display the status _and_
set the status code
2011-03-08 09:56:05 -08:00
Tj Holowaychuk d4f4b6682d Release 2.0.0beta2 2011-03-07 09:40:39 -08:00
Tj Holowaychuk 7f4a12f4cd Added regular css file to stylus example 2011-03-07 09:34:41 -08:00
Tj Holowaychuk 07d06adf86 Added res.render() .locals support back to aid in migration process 2011-03-07 09:15:36 -08:00
Tj Holowaychuk 47dc188d57 Updated jade submodule 2011-03-04 18:33:29 -08:00
Tj Holowaychuk 85d22541d2 Fixed flash example 2011-03-04 11:18:19 -08:00
Tj Holowaychuk 90ec1031f9 typo in flash example 2011-03-04 11:03:47 -08:00
Tj Holowaychuk 9bc9ad13a4 < connect 2.0.0 2011-03-04 08:52:15 -08:00
Tj Holowaychuk 1782c7d778 regenerated docs 2011-03-04 08:46:55 -08:00
Tj Holowaychuk e85752c527 Add haml back in docs 2011-03-04 08:44:35 -08:00
Tj Holowaychuk dfdbbb514f haml working fine 2011-03-04 08:43:52 -08:00
Tj Holowaychuk 976f5ca93e Updated haml submodule 2011-03-04 08:43:07 -08:00
Tj Holowaychuk 2086f8d34c beta in express --version 2011-03-03 17:16:25 -08:00
Tj Holowaychuk 6873a68216 changelog typo 2011-03-03 16:34:05 -08:00
Tj Holowaychuk 9eb2c61760 docs 2011-03-03 16:15:17 -08:00
Tj Holowaychuk 543e791206 docs 2011-03-03 16:13:20 -08:00
Tj Holowaychuk b6e8b3fa84 added express-namespace link 2011-03-03 16:10:38 -08:00
Tj Holowaychuk 6f8e406b7b added express-messages link 2011-03-03 16:08:52 -08:00
Tj Holowaychuk 93bc54b65c added express-configure link 2011-03-03 16:07:22 -08:00
Tj Holowaychuk 3bf0ac4a36 added express-resource link 2011-03-03 16:05:49 -08:00
Tj Holowaychuk bc01bfff21 connect docs 2011-03-03 16:02:27 -08:00
Tj Holowaychuk 0d4eaf03fc Added make site 2011-03-03 15:59:47 -08:00
Tj Holowaychuk 2bb0412473 docs 2011-03-03 15:49:34 -08:00
Tj Holowaychuk 07ce5d3158 docs for res.render() and res.partial() 2011-03-03 15:49:30 -08:00
Tj Holowaychuk 131970b3e5 docs 2011-03-03 15:39:44 -08:00
Tj Holowaychuk 00e1dbfbd9 docs for res.cookie() 2011-03-03 15:30:43 -08:00
Tj Holowaychuk 4c274c524d Added res.cookie() maxAge support 2011-03-03 15:27:03 -08:00
Tj Holowaychuk 5581ca2751 docs 2011-03-03 15:07:35 -08:00
Tj Holowaychuk 5cd9a9540f docs 2011-03-03 14:40:47 -08:00
Tj Holowaychuk 1db2efa75a docs 2011-03-03 14:39:10 -08:00
Tj Holowaychuk c1a82bf3ea docs 2011-03-03 14:18:42 -08:00
Tj Holowaychuk 7705042cac docs 2011-03-03 13:31:09 -08:00
Tj Holowaychuk b9e311e893 version docs 2011-03-03 13:26:31 -08:00
Tj Holowaychuk 460998497d docs 2011-03-03 13:25:31 -08:00
Tj Holowaychuk 022c5e1411 note on locals 2011-03-03 13:10:50 -08:00
Tj Holowaychuk 60daf0d6c7 Ignore .DS_Store 2011-03-03 12:53:34 -08:00
Tj Holowaychuk 0b6a941624 more docs 2011-03-03 12:47:01 -08:00
Tj Holowaychuk 1fc520b45a Fixed partial() issue where the parent locals clobber those given directly 2011-03-03 12:44:37 -08:00
Tj Holowaychuk cbbee38be8 Added more view examples 2011-03-03 11:54:16 -08:00
Tj Holowaychuk 2dae6d8285 Fixed mounting of non-express servers 2011-03-03 11:33:53 -08:00
Tj Holowaychuk 65c8a956f1 do not try ../index when rendering a layout 2011-03-03 11:23:16 -08:00
Tj Holowaychuk 2b907e9a8c fixing tests 2011-03-03 11:21:57 -08:00
Tj Holowaychuk 25e520c243 misc 2011-03-03 11:11:08 -08:00
Tj Holowaychuk 2124c8465a removed scope tests 2011-03-03 11:05:16 -08:00
Tj Holowaychuk a49e1f4f3d Changed default view scope to a plain object
easier to debug, and kinda useless to use "this" anyway
2011-03-03 10:59:00 -08:00
Tj Holowaychuk 32be4a7812 Added View#upIndexPath 2011-03-03 10:54:54 -08:00
Tj Holowaychuk 92967d3457 Added failing test for partial("foo") loading the index 2011-03-03 10:28:51 -08:00
Tj Holowaychuk d70fee7432 Added partial() index test 2011-03-03 10:24:50 -08:00
Tj Holowaychuk 97b8e75932 Added index view test 2011-03-03 10:18:19 -08:00
Tj Holowaychuk 8a62f8cef0 view lookup docs 2011-03-03 10:10:18 -08:00
Tj Holowaychuk 10f4f523fa populate changelog for 2.0.0beta 2011-03-03 10:00:56 -08:00
Tj Holowaychuk 1e392d2628 populate changelog from 1.x 2011-03-03 09:36:38 -08:00
Tj Holowaychuk eb6ff62113 Fixed req.param() bug returning Array.prototype methods. Closes #552 2011-03-03 09:20:28 -08:00
Tj Holowaychuk 64da2621da Merge branch 'docs' 2011-03-02 18:37:43 -08:00
Tj Holowaychuk 61aec6e961 Added markdown template engine example 2011-03-02 18:37:36 -08:00
Tj Holowaychuk 42f3ad436d docs 2011-03-02 18:37:29 -08:00
Tj Holowaychuk 2f7b78c03a ejs example using app.register() 2011-03-02 18:27:12 -08:00
Tj Holowaychuk 402d37d613 docs 2011-03-02 18:25:21 -08:00
Tj Holowaychuk 96327c979c docs 2011-03-02 18:10:51 -08:00
Tj Holowaychuk 9d1b3f59d5 docs 2011-03-02 17:20:39 -08:00
Tj Holowaychuk 14bd50efe4 docs 2011-03-02 16:59:48 -08:00
Tj Holowaychuk 631c1f95e7 node ">= 0.4.1 < 0.5.0" 2011-03-02 16:36:05 -08:00
Tj Holowaychuk 50006f7e43 docs 2011-03-02 16:22:53 -08:00
Tj Holowaychuk 4c9503158b connect >= 1.0.1 2011-03-02 16:16:03 -08:00
Tj Holowaychuk 6c8e461db5 beta 2011-03-02 16:15:37 -08:00
Tj Holowaychuk aaa8415169 Removed partial() / render() status and header options 2011-03-02 16:11:02 -08:00
Tj Holowaychuk 51e964498c docs 2011-03-02 16:08:39 -08:00
Tj Holowaychuk 0cddc70ff5 node 0.4.x only 2011-03-02 15:57:33 -08:00
Tj Holowaychuk 99dcf7508f Added res.redirect() mount test 2011-03-02 15:52:41 -08:00
Tj Holowaychuk 7822d1f148 docs 2011-03-02 15:45:24 -08:00
Tj Holowaychuk a572a7126c Merge branch 'mounting' 2011-03-02 15:42:34 -08:00
Tj Holowaychuk a1609faba0 stylesheet respecting base 2011-03-02 15:42:29 -08:00
Tj Holowaychuk 9bf823d893 Added mount support for res.redirect(), now respects the mount-point 2011-03-02 15:37:12 -08:00
Tj Holowaychuk ca184e7725 Updated connect submodule 2011-03-02 15:26:21 -08:00
Tj Holowaychuk 5054507487 added "base" local to blog example for mounting 2011-03-02 15:17:19 -08:00
Tj Holowaychuk ab93be0178 refactored blog example 2011-03-02 15:06:23 -08:00
Tj Holowaychuk 8b0993bb10 misc 2011-03-02 15:02:57 -08:00
Tj Holowaychuk 0a034bb3ea started mounting example 2011-03-02 15:01:46 -08:00
Tj Holowaychuk 4ce815a3ed Removed annotated docs 2011-03-02 14:49:39 -08:00
Tj Holowaychuk 4da860eae1 removed api.html 2011-03-02 14:49:26 -08:00
Tj Holowaychuk 27e4bdb814 more res.partial() examples 2011-03-02 14:39:24 -08:00
Tj Holowaychuk dd9406cd52 Added res.partial(), using the same interface as partial() within a view. Closes #539 2011-03-02 14:27:07 -08:00
Tj Holowaychuk 509312773d partials example utilizing index 2011-03-02 13:56:47 -08:00
Tj Holowaychuk 42d2758c36 Added union() util, taking place of merge(clone()) combo 2011-03-02 13:41:36 -08:00
Tj Holowaychuk ef1c858ffc more test refactoring 2011-03-02 13:31:11 -08:00
Tj Holowaychuk 7fd47c0ac6 more test refactoring 2011-03-02 13:21:54 -08:00
Tj Holowaychuk a63b232ef1 more test refactoring 2011-03-02 13:20:27 -08:00
Tj Holowaychuk acb502e5e3 refactoring tsts 2011-03-02 13:18:39 -08:00
Tj Holowaychuk 3661922bb0 refactored res.send() 2011-03-02 12:39:39 -08:00
Tj Holowaychuk 0704f149be misc 2011-03-02 12:28:24 -08:00
Tj Holowaychuk 334604de5d utilizing app.set() 2011-03-02 12:03:05 -08:00
Tj Holowaychuk 530328ac15 misc refactoring 2011-03-02 11:43:40 -08:00
Tj Holowaychuk 9914a1eb3f copyright 2011-03-02 11:37:19 -08:00
Tj Holowaychuk 5db5710d3f Merge branch 'bugs/local-precedence' 2011-03-02 11:31:21 -08:00
Tj Holowaychuk 9e9f55a8e3 fixed local precedence 2011-03-02 11:31:14 -08:00
Tj Holowaychuk 0800141a9d semi-colons 2011-03-02 11:13:39 -08:00
Tj Holowaychuk dc6d469f0c added more local tests 2011-03-02 11:11:18 -08:00
Tj Holowaychuk 89299d77e4 bodyParser not bodyDecoder 2011-03-02 10:52:37 -08:00
Tj Holowaychuk 27d8bf6311 refactored express(1) stdin usage 2011-03-02 10:50:13 -08:00
Tj Holowaychuk 8c229a8560 fixed express(1) confirmation for 0.4.x 2011-03-02 10:47:14 -08:00
Tj Holowaychuk 29eed65a67 removed constants from express(1) 2011-03-02 10:43:55 -08:00
Tj Holowaychuk f0e0073a09 more partial examples 2011-03-02 10:39:32 -08:00
Tj Holowaychuk b70bde58be fixing more examples 2011-03-02 10:30:33 -08:00
Tj Holowaychuk 635fac776d renamed example to params 2011-03-02 10:26:43 -08:00
Tj Holowaychuk 7753d4e91d refactored partials example 2011-03-02 10:24:57 -08:00
Tj Holowaychuk 66a6214216 fixing more examples 2011-03-02 10:15:10 -08:00
Tj Holowaychuk 6cae1f09f1 docs 2011-03-02 10:09:07 -08:00
Tj Holowaychuk c4432ee827 download example 2011-03-02 10:06:14 -08:00
Tj Holowaychuk 80a5bf2063 fixing examples 2011-03-02 10:02:42 -08:00
Tj Holowaychuk 5b3d5fc431 removed cache example 2011-03-02 09:57:11 -08:00
Tj Holowaychuk cd38fb4177 refactored auth example 2011-03-02 09:56:09 -08:00
Tj Holowaychuk 9b1cc75b36 res.download() and res.sendfile() using connect now 2011-03-02 09:41:21 -08:00
Tj Holowaychuk db8b2883e2 Updated connect submodule 2011-03-01 15:53:56 -08:00
Tj Holowaychuk 59a74ecce4 refactoring to use connects static server 2011-03-01 15:42:42 -08:00
Tj Holowaychuk 9099c61df9 Merge branch 'progressive-headers' 2011-03-01 14:41:01 -08:00
Tj Holowaychuk 50521281ce utilizing nodes progressive response header api 2011-03-01 14:40:46 -08:00
Tj Holowaychuk 0cc6abf741 refactored req.is() 2011-03-01 14:34:36 -08:00
Tj Holowaychuk fe266ae4fe misc refactoring 2011-03-01 14:32:59 -08:00
Tj Holowaychuk 7c15cdeb69 misc refactoring 2011-03-01 14:30:48 -08:00
Tj Holowaychuk 848086947c refactor errorHandler registration 2011-03-01 14:20:25 -08:00
Tj Holowaychuk 5ec4ea754c misc refactoring 2011-03-01 14:18:14 -08:00
Tj Holowaychuk 41467d54df docs 2011-03-01 14:16:16 -08:00
Tj Holowaychuk 8261437764 Merge branch 'features/https' 2011-03-01 14:08:40 -08:00
Tj Holowaychuk 54eac368d0 Finished https support 2011-03-01 14:06:53 -08:00
Tj Holowaychuk 72511ea1e9 Started https.js 2011-03-01 13:53:22 -08:00
Tj Holowaychuk da7921f2c6 Moved server.js into http.js 2011-03-01 13:34:50 -08:00
Tj Holowaychuk cd519e97e7 tests running again 2011-03-01 11:00:50 -08:00
Tj Holowaychuk 2a7a5aeefe Renaming usage of old connect middleware 2011-03-01 10:59:09 -08:00
Tj Holowaychuk bdbacb41da prepping for connect 1.0 2011-03-01 10:54:04 -08:00
Tj Holowaychuk 2dd736a201 Updated expresso submodule 2011-03-01 10:45:07 -08:00
Tj Holowaychuk ec3c797105 Updated connect submodule 2011-03-01 10:39:50 -08:00
Tj Holowaychuk 770f05c060 styling 2011-02-23 15:41:59 -08:00
Tj Holowaychuk 6993a27d8e refactored res.redirect() with res.req.header() for referrer 2011-02-23 15:39:06 -08:00
Tj Holowaychuk 68fd658536 more tests 2011-02-23 15:37:27 -08:00
Tj Holowaychuk 9fc349965d Changed; charsets are no longer implied 2011-02-23 15:24:56 -08:00
Tj Holowaychuk 0a667ff741 Added mime support submod 2011-02-23 15:23:48 -08:00
Tj Holowaychuk d37ad85f72 replaced connect.utils.mime() with mime module 2011-02-23 15:23:08 -08:00
Tj Holowaychuk 2b63568611 node >= 0.4.0 2011-02-21 13:46:40 -08:00
Tj Holowaychuk fcf9f93825 2.0.0-pre 2011-02-21 13:46:26 -08:00
Tj Holowaychuk 07efc0b73b clean up generated app 2011-02-21 13:43:00 -08:00
Tj Holowaychuk 6813b48c7e replaced link to express-contrib with new solo repos 2011-02-21 11:37:19 -08:00
Tj Holowaychuk d58444c6d2 Updated ejs submodule 2011-02-17 23:41:28 -08:00
Tj Holowaychuk dd8a0bd30f removed .config (unused prop) 2011-02-15 14:09:01 -08:00
Tj Holowaychuk b65b0636aa Added req.header() Referrer / Referer special-case 2011-02-14 19:38:01 -08:00
Tj Holowaychuk 9ec6321261 qs >= 0.0.6 2011-02-14 15:26:00 -08:00
Tj Holowaychuk 07eb66c205 Fixed res.download() callback, passing stream. Closes #528
should be able to figure something out with this.
at very least use redis or something with INCR/DECR to
keep a count on active downloads
2011-02-10 08:57:53 -08:00
Tj Holowaychuk 0e790e6fb5 using Stream#pipe() instead of sys.pump() 2011-02-10 08:50:11 -08:00
Tj Holowaychuk 08186924a4 qs >= 0.0.3 2011-02-08 16:57:09 -08:00
Tj Holowaychuk e9faf5cf94 Updated qs submodule 2011-02-08 16:56:33 -08:00
Tj Holowaychuk 8c0efe09e5 comment typo 2011-02-08 12:34:00 -08:00
Tj Holowaychuk 32d2c96d22 docs 2011-02-08 11:07:06 -08:00
Tj Holowaychuk e958988989 styling for stylus example 2011-02-08 11:01:53 -08:00
Tj Holowaychuk 131f10bd80 more work on stylus example 2011-02-08 10:55:22 -08:00
Tj Holowaychuk a61615a196 Setting up Stylus example 2011-02-08 10:42:39 -08:00
Tj Holowaychuk 4fdb6910a5 Allow req.query to be pre-defined (via middleware or other parent app) 2011-02-07 16:30:38 -08:00
Tj Holowaychuk 67c4c90351 Updated qs submodule 2011-02-07 15:35:46 -08:00
Tj Holowaychuk 16f7288b19 Updated connect submodule 2011-02-07 15:35:43 -08:00
Tj Holowaychuk 36a7e87ae4 querystring -> qs 2011-02-07 14:36:28 -08:00
Tj Holowaychuk 16badda118 Added test for periods in dirname when using "view engine" 2011-02-07 13:59:14 -08:00
Tj Holowaychuk 99820e7edc Refactored req/res proto assignments
since the names may change in the near future (is suspect at least)
due to inconsistancies
2011-02-03 21:05:04 -08:00
Tj Holowaychuk 6a03a92f5f Refactored res.header() 2011-02-03 21:03:27 -08:00
Tj Holowaychuk 80c3b98a84 Added multiple Set-Cookie header tests 2011-02-03 21:01:28 -08:00
Tj Holowaychuk afd2b4b387 Removed alternate installation methods (use git, tarball, or npm) 2011-02-03 21:00:33 -08:00
Tj Holowaychuk df49769f3d Fixed two tests 2011-02-03 20:49:53 -08:00
Tj Holowaychuk 05c2946322 Added qs submod 2011-02-03 20:47:54 -08:00
Tj Holowaychuk 2ed392edbf Updated connect submodule 2011-02-03 20:44:19 -08:00
Tj Holowaychuk 3d597a554d moved files from lib/express/* to lib/ 2011-02-03 20:20:42 -08:00
Tj Holowaychuk 42af4e40ae Updated connect submodule 2011-02-03 20:19:32 -08:00
Tj Holowaychuk 242efc7219 Updated jade submodule 2011-02-02 09:42:09 -08:00
Tj Holowaychuk a6bacb857d Added redis session example 2011-02-01 10:02:15 -08:00
Tj Holowaychuk eab54724a1 connect >= 0.5.7 2011-02-01 08:32:50 -08:00
Tj Holowaychuk 49885cfeff Updated connect submodule 2011-02-01 08:31:14 -08:00
Tj Holowaychuk 4330f49011 Added stylus support to express(1) generated app 2011-01-31 14:40:19 -08:00
Tj Holowaychuk 7687299275 Added secret to session middleware used in examples and generated app 2011-01-29 12:36:48 -08:00
Tj Holowaychuk 79ba787b03 Re-added jade submodule to hopefully fix #514 2011-01-28 12:04:12 -08:00
Tj Holowaychuk 5a184a205f Removed jade submodule 2011-01-28 12:03:39 -08:00
Tj Holowaychuk 4b5a6b597a Added formidable submod for multipart example 2011-01-25 10:04:06 -08:00
Tj Holowaychuk 9e9c3eeb79 Added vhost example 2011-01-25 09:38:02 -08:00
Tj Holowaychuk cd996f9dbf Updated connect submodule 2011-01-25 09:12:24 -08:00
Tj Holowaychuk ab4c91158a Added another partial locals test 2011-01-25 07:56:20 -08:00
Tj Holowaychuk 1130a23e5b Added test for partial locals on subsequent calls 2011-01-25 07:39:14 -08:00
Tj Holowaychuk 9ac6943220 Updated jade submodule 2011-01-24 11:45:58 -08:00
Tj Holowaychuk 0f55284b77 Updated changelog 2011-01-20 08:39:29 -08:00
Tj Holowaychuk c75046de3f docs 2011-01-19 11:01:59 -08:00
Tj Holowaychuk e7df82f110 Added 416 support to res.sendfile() 2011-01-19 09:28:48 -08:00
Tj Holowaychuk ee4c7d3007 Removed "stream threshold" setting 2011-01-19 09:17:27 -08:00
Tj Holowaychuk 2895303421 Added Content-Length to res.sendfile(). Closes #507 2011-01-19 09:07:05 -08:00
Tj Holowaychuk 3f16f05525 Added HEAD support to res.sendfile() 2011-01-19 08:47:42 -08:00
Tj Holowaychuk fb33671923 Ignore testing.js 2011-01-19 08:43:51 -08:00
Tj Holowaychuk 482fb5b6e2 Strip unsafe chars from jsonp callbacks 2011-01-13 14:13:16 -08:00
Tj Holowaychuk b1004b61f9 fixed session example/tests due to connect changes 2011-01-13 12:11:18 -08:00
Tj Holowaychuk 27af9b2605 Updated connect submodule 2011-01-13 12:09:49 -08:00
Tj Holowaychuk e28ac866f8 fixed width for github example css 2011-01-12 10:17:31 -08:00
Tj Holowaychuk 5e0a80f227 Updated connect submodule 2011-01-09 23:42:42 -08:00
Tj Holowaychuk ec0982ca1f Added flash messages to blog example 2011-01-05 19:09:56 -08:00
Tj Holowaychuk e7c442d21c Updated connect submodule 2011-01-03 13:34:36 -08:00
Tj Holowaychuk a9db47fdd3 Updated connect submodule 2011-01-03 13:30:54 -08:00
Tj Holowaychuk b856a72886 more examples 2010-12-31 16:13:19 -08:00
Tj Holowaychuk 03da0d31f9 Styling 2010-12-31 15:46:50 -08:00
Tj Holowaychuk 1c40e4374b More example 2010-12-31 15:37:27 -08:00
Tj Holowaychuk d7df1426f2 Updated connect submodule 2010-12-31 15:07:00 -08:00
Tj Holowaychuk 5035e86f59 more example 2010-12-31 15:03:00 -08:00
Tj Holowaychuk 0af91265ab Added default param support to req.param(name, default) 2010-12-31 09:21:51 -08:00
Tj Holowaychuk 8e63d04e66 Re-built docs 2010-12-31 09:04:44 -08:00
Tj Holowaychuk 5ac0c6deb0 Added res.local(name[, val]) docs 2010-12-31 09:04:30 -08:00
Tj Holowaychuk 6b0d82fb0c Added res.local() for progressive view locals
for middleware etc.
res.local("foo", "bar") => "bar"
res.local("foo") => "bar"
2010-12-31 08:59:35 -08:00
Tj Holowaychuk 2bfdfe366c Fixed for middleware stacked via createServer() 2010-12-29 11:21:24 -08:00
Tj Holowaychuk 898fb0f320 Added failing middleware precedence tests 2010-12-29 11:15:40 -08:00
Tj Holowaychuk f53686a2f3 Fixed index view resolution bug introduced by 1c2e9a476c 2010-12-29 08:57:56 -08:00
mgutz eae1670f54 madestr local 2010-12-29 08:45:22 -08:00
Tj Holowaychuk 544d68833c Fixed express(1) support for < 0.3.x 2010-12-28 12:00:04 -08:00
Tj Holowaychuk c24a6b2359 Fixed express(1) mode 2010-12-28 11:56:44 -08:00
Tj Holowaychuk b720b57d1d Updated jade submodule 2010-12-28 04:59:28 -08:00
Tj Holowaychuk 365b7fe90a Merge branch 'OPTIONS' 2010-12-28 04:05:44 -08:00
Tj Holowaychuk c7ab833e66 Added OPTIONS test 2010-12-28 04:05:39 -08:00
Tj Holowaychuk 9536f288e9 Updated connect submodule 2010-12-28 04:03:43 -08:00
Tj Holowaychuk e64d4039d0 Generating methods based on connect.router.methods 2010-12-28 03:12:11 -08:00
Tj Holowaychuk 5f077e56f0 Updated connect submodule 2010-12-28 03:09:07 -08:00
Tj Holowaychuk a9253a24e0 Added docs for app.{disabled,enabled}() 2010-12-23 09:29:43 -08:00
Tj Holowaychuk 749136b526 Added app.disabled() and app.enabled() 2010-12-23 09:28:15 -08:00
Tj Holowaychuk 36a8b7b7f3 Docs 2010-12-22 15:49:37 -08:00
Tj Holowaychuk a29908c865 Few jade changes to partials example 2010-12-22 15:48:41 -08:00
Hunter Loftis 57d87c27cd Created examples/partials to demonstrate view name, file, object resolution 2010-12-22 15:44:26 -08:00
Hunter Loftis 1c2e9a476c Fixed _ prefix object resolution on partials (resolveObjectName), added _ prefix fallback to view file resolution (prefixPath) 2010-12-22 15:44:26 -08:00
shuwatto 5d87133df0 Constants don't exist in process. The same problem is reported following link https://github.com/senchalabs/connect/issues/closed#issue/119 2010-12-21 09:04:23 -08:00
Tj Holowaychuk fd2f67b73f Route precondition docs 2010-12-20 05:53:50 -08:00
Tj Holowaychuk d3abcaf67b Regenerated docs 2010-12-20 05:41:05 -08:00
Tj Holowaychuk 14dce5ac2b Docs 2010-12-20 05:40:51 -08:00
Tj Holowaychuk abd002071a Test for named capture groups 2010-12-20 05:29:01 -08:00
Tj Holowaychuk 77add42eeb Updated connect submodule 2010-12-20 05:27:21 -08:00
Tj Holowaychuk bba049b4bf Docs 2010-12-20 05:27:07 -08:00
Tj Holowaychuk 4e41c3520c Contrib guide link 2010-12-20 05:18:32 -08:00
Tj Holowaychuk 4144af3351 Added screencasts page 2010-12-20 05:17:25 -08:00
Tj Holowaychuk 30f749a2a2 Docs 2010-12-20 05:05:47 -08:00
Tj Holowaychuk 6e9f282af7 added .npmignore 2010-12-18 13:42:43 -08:00
Tj Holowaychuk 4491be01dd Using named capture group for downloads example 2010-12-16 09:21:31 -08:00
Tj Holowaychuk 8c163fd980 Updated connect-form submodule 2010-12-15 09:45:45 -08:00
Tj Holowaychuk 9f6a158fc2 Fixed SyntaxError in express(1) app tests 2010-12-14 08:20:00 -08:00
Tj Holowaychuk 19965fa3c8 Aliased app.helpers() as app.locals(). Closes #481 2010-12-12 16:10:59 -08:00
Tj Holowaychuk 6bb42ffafc should 2010-12-12 16:10:01 -08:00
Tj Holowaychuk 4a1edc0720 indentation fix 2010-12-12 16:08:27 -08:00
Tj Holowaychuk a5a016bf33 Updated connect submodule 2010-12-10 12:42:55 -08:00
Tj Holowaychuk 4be4f597a3 Updated connect submodule 2010-12-10 12:42:36 -08:00
Tj Holowaychuk dfbbd4f784 Merge branch 'partials' 2010-12-10 10:18:44 -08:00
Tj Holowaychuk 2662dae560 Removed "_" prefix from partials 2010-12-10 10:18:38 -08:00
Tj Holowaychuk 6f6f9f08f8 Added app.register() support for omitting leading "." 2010-12-10 08:15:27 -08:00
Tj Holowaychuk a76fba57c4 Added extname with no leading "." support to res.contentType)
For example now you may:

    res.contentType("png");

or

    res.contentType(".png");

both are fine now
2010-12-10 08:14:15 -08:00
Tj Holowaychuk 680766f29b Updated jade submodule 2010-12-08 10:29:07 -08:00
Tj Holowaychuk adcfd4ca4d Added more screencast links 2010-12-06 19:25:17 -08:00
Tj Holowaychuk e276a49a91 Updated connect submodule 2010-12-06 18:13:07 -08:00
Tj Holowaychuk 5995f763b1 connect >= 0.5.0 2010-12-06 18:11:34 -08:00
Tj Holowaychuk a123639b5c Fixed placeholder example 2010-12-06 17:45:01 -08:00
Tj Holowaychuk 8a118d53c8 Fixed some namespaced connect requires 2010-12-06 17:41:56 -08:00
Tj Holowaychuk d572391532 Updated connect submodule 2010-12-06 17:39:27 -08:00
Tj Holowaychuk 58ae7a0402 Added param placeholder precondition example 2010-12-06 17:38:51 -08:00
Tj Holowaychuk f843093a8c Added Array support to Server#param() 2010-12-06 17:28:17 -08:00
Tj Holowaychuk 3e06586f81 Added Server#param() 2010-12-06 17:18:44 -08:00
Tj Holowaychuk 60f148326a Updated expresso submodule 2010-12-06 17:05:30 -08:00
Tj Holowaychuk 02e1413ca5 Updated connect submodule 2010-12-06 17:04:50 -08:00
Tj Holowaychuk 7b4b85ee54 Updated connect submodule 2010-12-06 14:53:14 -08:00
Tj Holowaychuk 6c0a416f16 Added view partials screencast link 2010-12-05 11:06:26 -08:00
Tj Holowaychuk 23cc88bf92 Added introduction screencast link 2010-12-05 10:44:13 -08:00
Tj Holowaychuk 5528f0ddf2 Misc refactoring 2010-12-05 10:13:06 -08:00
Tj Holowaychuk 8d3296fb1b Fixed mvc example due to view lookup changes 2010-12-05 10:02:38 -08:00
Tj Holowaychuk 136f9209a3 route-separation example using new view resolution 2010-12-05 10:00:07 -08:00
Tj Holowaychuk a290134fd2 Merge branch 'view-index' 2010-12-05 09:56:20 -08:00
Tj Holowaychuk a54e59666a Added view index resolution support 2010-12-05 09:55:11 -08:00
Tj Holowaychuk 42ea6af1eb Added view index template support 2010-12-05 09:49:11 -08:00
Tj Holowaychuk f9b741766b Started view index support 2010-12-05 09:46:59 -08:00
Tj Holowaychuk 09359329a0 ejs example using new partial lookup 2010-12-05 09:37:50 -08:00
Tj Holowaychuk 647bb41ddf Merge branch 'partial-lookup' 2010-12-05 09:33:26 -08:00
Tj Holowaychuk f25c14d48d Fixed partial parent view ref 2010-12-05 09:33:20 -08:00
Tj Holowaychuk 81a3d559f5 Removed a require 2010-12-05 09:22:19 -08:00
Tj Holowaychuk 4e0ee7a5da Added more partial view path tests 2010-12-05 09:20:58 -08:00
Tj Holowaychuk 1c80a258d2 Passing dir 2010-12-05 09:17:20 -08:00
Tj Holowaychuk 129ed6a07b Added Partial#resolvePartialPath() 2010-12-05 09:16:12 -08:00
Tj Holowaychuk df09a0c73b Partial tests using real fixtures 2010-12-05 09:13:41 -08:00
Tj Holowaychuk ff5c958354 express(1) no longer passing assert in tests 2010-12-02 15:51:52 -08:00
Tj Holowaychuk 4f90c89db6 refactored req.accepts() 2010-12-02 10:07:28 -08:00
Tj Holowaychuk 524b515fdb docs 2010-12-02 10:06:40 -08:00
Tj Holowaychuk 163256b001 Added req.accepts() support for extensions 2010-12-02 10:05:29 -08:00
Tj Holowaychuk 05bbc65dcc Added failing req.accepts() test 2010-12-02 10:03:59 -08:00
Tj Holowaychuk 6624f6b7f9 Added more req.accepts() tests 2010-12-02 10:03:25 -08:00
Tj Holowaychuk f32279dec5 more partial docs 2010-11-29 17:20:13 -08:00
Tj Holowaychuk a90fd85907 Added strategic cache example (with redis) 2010-11-29 17:01:28 -08:00
Tj Holowaychuk 9815b27e94 Updated connect submodule 2010-11-29 09:57:53 -08:00
Tj Holowaychuk ebbe481fe7 Added default link color for express(1) generated apps 2010-11-28 13:19:23 -08:00
Tj Holowaychuk 9e337faa33 Removed ./views/partials generation in express(1) 2010-11-28 10:45:48 -08:00
Tj Holowaychuk 37826e0261 Fixed locals in express(1) generated app 2010-11-28 10:29:10 -08:00
Tj Holowaychuk 20e4342796 Fixed uncached templates in development 2010-11-25 15:46:57 -08:00
Tj Holowaychuk 51be16950d Added isLayout back 2010-11-25 14:54:42 -08:00
Tj Holowaychuk be866a78ff fixed session example 2010-11-25 14:14:31 -08:00
Tj Holowaychuk f9d2432c69 fixed route-separation example 2010-11-25 14:14:13 -08:00
Tj Holowaychuk 6543a3d75a added format support to resource example 2010-11-25 14:11:52 -08:00
Tj Holowaychuk a77936981e Fixed resource example 2010-11-25 14:08:27 -08:00
Tj Holowaychuk 6f2120bb59 Fixed mvc example 2010-11-25 14:05:28 -08:00
Tj Holowaychuk 98e18239fd refactored multipart example 2010-11-25 13:59:10 -08:00
Tj Holowaychuk 3d159015be misc 2010-11-25 13:56:12 -08:00
Tj Holowaychuk f5af66a1ab fixed github example 2010-11-25 13:53:51 -08:00
Tj Holowaychuk 540192ff96 refactored format example 2010-11-25 13:50:32 -08:00
Tj Holowaychuk c1cfd4a8c6 refactored form example 2010-11-25 13:47:49 -08:00
Tj Holowaychuk 322300c329 fixed flash example 2010-11-25 13:46:40 -08:00
Tj Holowaychuk 1ac18f7903 refactored error-pages example 2010-11-25 13:44:52 -08:00
Tj Holowaychuk 4f4987e9ea misc 2010-11-25 13:41:50 -08:00
Tj Holowaychuk 65bf562ff4 refactored downloads example 2010-11-25 13:41:15 -08:00
Tj Holowaychuk f47032e7e9 refactored cookies example 2010-11-25 13:40:50 -08:00
Tj Holowaychuk 379f3ec8dd removed blog example 2010-11-25 13:40:02 -08:00
Tj Holowaychuk 8d7e35b723 refactored auth example 2010-11-25 13:39:07 -08:00
Tj Holowaychuk 1349eea0d0 misc refactoring 2010-11-24 14:44:00 -08:00
Tj Holowaychuk bed5157f32 Make note in docs that res.send() is a convenience method, and should only be called once (ATM) 2010-11-24 10:07:25 -08:00
Tj Holowaychuk 12c7f51a1e Updated jade submodule 2010-11-24 08:14:36 -08:00
Tj Holowaychuk 7e32c8de4d unroll partial rendering for performance 2010-11-23 10:27:26 -08:00
Tj Holowaychuk 3a42350c21 cache resolveObjectName() 2010-11-23 10:14:30 -08:00
Tj Holowaychuk 1a54597202 todo 2010-11-23 10:07:24 -08:00
Tj Holowaychuk 39f4eb9940 Added "cache views" setting, defaulting to enabled in "production" env 2010-11-23 09:49:43 -08:00
Tj Holowaychuk 4b996651af fixed template caching 2010-11-23 09:45:50 -08:00
Tj Holowaychuk 884d40f321 caching compiled view functions 2010-11-23 09:42:19 -08:00
Tj Holowaychuk 3d2b41da08 todo 2010-11-23 09:07:36 -08:00
Tj Holowaychuk 1bf2dbb7df Added memoized path utils 2010-11-23 08:58:36 -08:00
Tj Holowaychuk e0dfb77dd1 misc refactoring 2010-11-22 21:08:24 -08:00
Tj Holowaychuk 578fddc1b7 cache view contents again 2010-11-22 18:28:19 -08:00
Tj Holowaychuk 089355d706 Merge branch 'views' 2010-11-22 17:55:17 -08:00
Tj Holowaychuk 6b2c3caf03 fixed register 2010-11-22 17:55:14 -08:00
Tj Holowaychuk 065c37cb28 moved View and Partial into their own files 2010-11-22 17:52:45 -08:00
Tj Holowaychuk 3a40025fd3 Merge branch 'views' 2010-11-22 17:36:59 -08:00
Tj Holowaychuk 8dc341d868 removed old code 2010-11-22 17:36:50 -08:00
Tj Holowaychuk 0ed121ddbd Merge branch 'views' 2010-11-22 17:24:50 -08:00
Tj Holowaychuk 969f4229dc added Partial.resolveObjectName() 2010-11-22 17:24:44 -08:00
Tj Holowaychuk 27a940184e removed old cacheViewSync() 2010-11-22 17:02:50 -08:00
Tj Holowaychuk 77fa09a506 relative view option 2010-11-22 16:58:39 -08:00
Tj Holowaychuk 8836104ab2 absolute layouts 2010-11-22 16:56:55 -08:00
Tj Holowaychuk 396837517d fixed ejs example for new locals 2010-11-22 16:43:47 -08:00
Tj Holowaychuk 38b3f1bde2 fixed "view options" support 2010-11-22 16:41:56 -08:00
Tj Holowaychuk 4780168ba8 implementing new locals 2010-11-22 16:39:55 -08:00
Tj Holowaychuk d1a790d103 fixed jade example for new locals 2010-11-22 16:32:51 -08:00
Tj Holowaychuk 3ad6ab8c6a removed locals: from view tests 2010-11-22 16:24:05 -08:00
Tj Holowaychuk 1e189da85e refactored dynamicHelper support 2010-11-22 16:19:53 -08:00
Tj Holowaychuk a094c50873 indentation 2010-11-22 16:16:29 -08:00
Tj Holowaychuk ad324410c6 Utilizing the new View / Partial constructors 2010-11-22 16:12:30 -08:00
Tj Holowaychuk 9f4b7368a0 Started View implementation 2010-11-22 11:33:20 -08:00
Tj Holowaychuk c8ddedb8d0 jade example fixes 2010-11-19 17:12:34 -08:00
Tj Holowaychuk 7deab2826b Updated jade submodule 2010-11-19 17:08:35 -08:00
Tj Holowaychuk 643879f779 using should / refactored tests 2010-11-19 16:00:21 -08:00
Tj Holowaychuk ce2a18f483 master is 2.0.0-pre 2010-11-18 07:48:31 -08:00
327 arquivos alterados com 12309 adições e 13839 exclusões
+10 -1
Ver Arquivo
@@ -1,3 +1,4 @@
coverage.html
.DS_Store
lib-cov
*.seed
@@ -6,4 +7,12 @@ lib-cov
*.dat
*.out
*.pid
benchmarks/graphs
*.swp
*.swo
benchmarks/graphs
testing
node_modules/
testing
.coverage_data
cover_html
test.js
-18
Ver Arquivo
@@ -1,18 +0,0 @@
[submodule "support/expresso"]
path = support/expresso
url = git://github.com/visionmedia/expresso.git
[submodule "support/haml"]
path = support/haml
url = git://github.com/visionmedia/haml.js.git
[submodule "support/ejs"]
path = support/ejs
url = git://github.com/visionmedia/ejs.git
[submodule "support/connect-form"]
path = support/connect-form
url = git://github.com/visionmedia/connect-form.git
[submodule "support/connect"]
path = support/connect
url = git://github.com/senchalabs/connect.git
[submodule "support/jade"]
path = support/jade
url = git://github.com/visionmedia/jade.git
+9
Ver Arquivo
@@ -0,0 +1,9 @@
.git*
docs/
examples/
support/
test/
testing.js
.DS_Store
coverage.html
lib-cov
+3
Ver Arquivo
@@ -0,0 +1,3 @@
language: node_js
node_js:
- 0.6
+527
Ver Arquivo
@@ -1,4 +1,531 @@
3.0.0beta3 / 2012-06-15
==================
* Added hogan `--hjs` to express(1) [nullfirm]
* Added another example to content-negotiation
* Added `fresh` dep
* Changed: `res.send()` always checks freshness
* Fixed: expose connects mime module. Cloases #1165
3.0.0beta2 / 2012-06-06
==================
* Added `+` support to the router
* Added `req.host`
* Changed `req.param()` to check route first
* Update connect dep
3.0.0beta1 / 2012-06-01
==================
* Added `res.format()` callback to override default 406 behaviour
* Fixed `res.redirect()` 406. Closes #1154
3.0.0alpha5 / 2012-05-30
==================
* Added `req.ip`
* Added `{ signed: true }` option to `res.cookie()`
* Removed `res.signedCookie()`
* Changed: dont reverse `req.ips`
* Fixed "trust proxy" setting check for `req.ips`
3.0.0alpha4 / 2012-05-09
==================
* Added: allow `[]` in jsonp callback. Closes #1128
* Added `PORT` env var support in generated template. Closes #1118 [benatkin]
* Updated: connect 2.2.2
3.0.0alpha3 / 2012-05-04
==================
* Added public `app.routes`. Closes #887
* Added _view-locals_ example
* Added _mvc_ example
* Added `res.locals.use()`. Closes #1120
* Added conditional-GET support to `res.send()`
* Added: coerce `res.set()` values to strings
* Changed: moved `static()` in generated apps below router
* Changed: `res.send()` only set ETag when not previously set
* Changed connect 2.2.1 dep
* Changed: `make test` now runs unit / acceptance tests
* Fixed req/res proto inheritance
3.0.0alpha2 / 2012-04-26
==================
* Added `make benchmark` back
* Added `res.send()` support for `String` objects
* Added client-side data exposing example
* Added `res.header()` and `req.header()` aliases for BC
* Added `express.createServer()` for BC
* Perf: memoize parsed urls
* Perf: connect 2.2.0 dep
* Changed: make `expressInit()` middleware self-aware
* Fixed: use app.get() for all core settings
* Fixed redis session example
* Fixed session example. Closes #1105
* Fixed generated express dep. Closes #1078
3.0.0alpha1 / 2012-04-15
==================
* Added `app.locals.use(callback)`
* Added `app.locals` object
* Added `app.locals(obj)`
* Added `res.locals` object
* Added `res.locals(obj)`
* Added `res.format()` for content-negotiation
* Added `app.engine()`
* Added `res.cookie()` JSON cookie support
* Added "trust proxy" setting
* Added `req.subdomains`
* Added `req.protocol`
* Added `req.secure`
* Added `req.path`
* Added `req.ips`
* Added `req.fresh`
* Added `req.stale`
* Added comma-delmited / array support for `req.accepts()`
* Added debug instrumentation
* Added `res.set(obj)`
* Added `res.set(field, value)`
* Added `res.get(field)`
* Added `app.get(setting)`. Closes #842
* Added `req.acceptsLanguage()`
* Added `req.acceptsCharset()`
* Added `req.accepted`
* Added `req.acceptedLanguages`
* Added `req.acceptedCharsets`
* Added "json replacer" setting
* Added "json spaces" setting
* Added X-Forwarded-Proto support to `res.redirect()`. Closes #92
* Added `--less` support to express(1)
* Added `express.response` prototype
* Added `express.request` prototype
* Added `express.application` prototype
* Added `app.path()`
* Added `app.render()`
* Added `res.type()` to replace `res.contentType()`
* Changed: `res.redirect()` to add relative support
* Changed: enable "jsonp callback" by default
* Changed: renamed "case sensitive routes" to "case sensitive routing"
* Rewrite of all tests with mocha
* Removed "root" setting
* Removed `res.redirect('home')` support
* Removed `req.notify()`
* Removed `app.register()`
* Removed `app.redirect()`
* Removed `app.is()`
* Removed `app.helpers()`
* Removed `app.dynamicHelpers()`
* Fixed `res.sendfile()` with non-GET. Closes #723
* Fixed express(1) public dir for windows. Closes #866
2.5.9/ 2012-04-02
==================
* Added support for PURGE request method [pbuyle]
* Fixed `express(1)` generated app `app.address()` before `listening` [mmalecki]
2.5.8 / 2012-02-08
==================
* Update mkdirp dep. Closes #991
2.5.7 / 2012-02-06
==================
* Fixed `app.all` duplicate DELETE requests [mscdex]
2.5.6 / 2012-01-13
==================
* Updated hamljs dev dep. Closes #953
2.5.5 / 2012-01-08
==================
* Fixed: set `filename` on cached templates [matthewleon]
2.5.4 / 2012-01-02
==================
* Fixed `express(1)` eol on 0.4.x. Closes #947
2.5.3 / 2011-12-30
==================
* Fixed `req.is()` when a charset is present
2.5.2 / 2011-12-10
==================
* Fixed: express(1) LF -> CRLF for windows
2.5.1 / 2011-11-17
==================
* Changed: updated connect to 1.8.x
* Removed sass.js support from express(1)
2.5.0 / 2011-10-24
==================
* Added ./routes dir for generated app by default
* Added npm install reminder to express(1) app gen
* Added 0.5.x support
* Removed `make test-cov` since it wont work with node 0.5.x
* Fixed express(1) public dir for windows. Closes #866
2.4.7 / 2011-10-05
==================
* Added mkdirp to express(1). Closes #795
* Added simple _json-config_ example
* Added shorthand for the parsed request's pathname via `req.path`
* Changed connect dep to 1.7.x to fix npm issue...
* Fixed `res.redirect()` __HEAD__ support. [reported by xerox]
* Fixed `req.flash()`, only escape args
* Fixed absolute path checking on windows. Closes #829 [reported by andrewpmckenzie]
2.4.6 / 2011-08-22
==================
* Fixed multiple param callback regression. Closes #824 [reported by TroyGoode]
2.4.5 / 2011-08-19
==================
* Added support for routes to handle errors. Closes #809
* Added `app.routes.all()`. Closes #803
* Added "basepath" setting to work in conjunction with reverse proxies etc.
* Refactored `Route` to use a single array of callbacks
* Added support for multiple callbacks for `app.param()`. Closes #801
Closes #805
* Changed: removed .call(self) for route callbacks
* Dependency: `qs >= 0.3.1`
* Fixed `res.redirect()` on windows due to `join()` usage. Closes #808
2.4.4 / 2011-08-05
==================
* Fixed `res.header()` intention of a set, even when `undefined`
* Fixed `*`, value no longer required
* Fixed `res.send(204)` support. Closes #771
2.4.3 / 2011-07-14
==================
* Added docs for `status` option special-case. Closes #739
* Fixed `options.filename`, exposing the view path to template engines
2.4.2. / 2011-07-06
==================
* Revert "removed jsonp stripping" for XSS
2.4.1 / 2011-07-06
==================
* Added `res.json()` JSONP support. Closes #737
* Added _extending-templates_ example. Closes #730
* Added "strict routing" setting for trailing slashes
* Added support for multiple envs in `app.configure()` calls. Closes #735
* Changed: `res.send()` using `res.json()`
* Changed: when cookie `path === null` don't default it
* Changed; default cookie path to "home" setting. Closes #731
* Removed _pids/logs_ creation from express(1)
2.4.0 / 2011-06-28
==================
* Added chainable `res.status(code)`
* Added `res.json()`, an explicit version of `res.send(obj)`
* Added simple web-service example
2.3.12 / 2011-06-22
==================
* \#express is now on freenode! come join!
* Added `req.get(field, param)`
* Added links to Japanese documentation, thanks @hideyukisaito!
* Added; the `express(1)` generated app outputs the env
* Added `content-negotiation` example
* Dependency: connect >= 1.5.1 < 2.0.0
* Fixed view layout bug. Closes #720
* Fixed; ignore body on 304. Closes #701
2.3.11 / 2011-06-04
==================
* Added `npm test`
* Removed generation of dummy test file from `express(1)`
* Fixed; `express(1)` adds express as a dep
* Fixed; prune on `prepublish`
2.3.10 / 2011-05-27
==================
* Added `req.route`, exposing the current route
* Added _package.json_ generation support to `express(1)`
* Fixed call to `app.param()` function for optional params. Closes #682
2.3.9 / 2011-05-25
==================
* Fixed bug-ish with `../' in `res.partial()` calls
2.3.8 / 2011-05-24
==================
* Fixed `app.options()`
2.3.7 / 2011-05-23
==================
* Added route `Collection`, ex: `app.get('/user/:id').remove();`
* Added support for `app.param(fn)` to define param logic
* Removed `app.param()` support for callback with return value
* Removed module.parent check from express(1) generated app. Closes #670
* Refactored router. Closes #639
2.3.6 / 2011-05-20
==================
* Changed; using devDependencies instead of git submodules
* Fixed redis session example
* Fixed markdown example
* Fixed view caching, should not be enabled in development
2.3.5 / 2011-05-20
==================
* Added export `.view` as alias for `.View`
2.3.4 / 2011-05-08
==================
* Added `./examples/say`
* Fixed `res.sendfile()` bug preventing the transfer of files with spaces
2.3.3 / 2011-05-03
==================
* Added "case sensitive routes" option.
* Changed; split methods supported per rfc [slaskis]
* Fixed route-specific middleware when using the same callback function several times
2.3.2 / 2011-04-27
==================
* Fixed view hints
2.3.1 / 2011-04-26
==================
* Added `app.match()` as `app.match.all()`
* Added `app.lookup()` as `app.lookup.all()`
* Added `app.remove()` for `app.remove.all()`
* Added `app.remove.VERB()`
* Fixed template caching collision issue. Closes #644
* Moved router over from connect and started refactor
2.3.0 / 2011-04-25
==================
* Added options support to `res.clearCookie()`
* Added `res.helpers()` as alias of `res.locals()`
* Added; json defaults to UTF-8 with `res.send()`. Closes #632. [Daniel * Dependency `connect >= 1.4.0`
* Changed; auto set Content-Type in res.attachement [Aaron Heckmann]
* Renamed "cache views" to "view cache". Closes #628
* Fixed caching of views when using several apps. Closes #637
* Fixed gotcha invoking `app.param()` callbacks once per route middleware.
Closes #638
* Fixed partial lookup precedence. Closes #631
Shaw]
2.2.2 / 2011-04-12
==================
* Added second callback support for `res.download()` connection errors
* Fixed `filename` option passing to template engine
2.2.1 / 2011-04-04
==================
* Added `layout(path)` helper to change the layout within a view. Closes #610
* Fixed `partial()` collection object support.
Previously only anything with `.length` would work.
When `.length` is present one must still be aware of holes,
however now `{ collection: {foo: 'bar'}}` is valid, exposes
`keyInCollection` and `keysInCollection`.
* Performance improved with better view caching
* Removed `request` and `response` locals
* Changed; errorHandler page title is now `Express` instead of `Connect`
2.2.0 / 2011-03-30
==================
* Added `app.lookup.VERB()`, ex `app.lookup.put('/user/:id')`. Closes #606
* Added `app.match.VERB()`, ex `app.match.put('/user/12')`. Closes #606
* Added `app.VERB(path)` as alias of `app.lookup.VERB()`.
* Dependency `connect >= 1.2.0`
2.1.1 / 2011-03-29
==================
* Added; expose `err.view` object when failing to locate a view
* Fixed `res.partial()` call `next(err)` when no callback is given [reported by aheckmann]
* Fixed; `res.send(undefined)` responds with 204 [aheckmann]
2.1.0 / 2011-03-24
==================
* Added `<root>/_?<name>` partial lookup support. Closes #447
* Added `request`, `response`, and `app` local variables
* Added `settings` local variable, containing the app's settings
* Added `req.flash()` exception if `req.session` is not available
* Added `res.send(bool)` support (json response)
* Fixed stylus example for latest version
* Fixed; wrap try/catch around `res.render()`
2.0.0 / 2011-03-17
==================
* Fixed up index view path alternative.
* Changed; `res.locals()` without object returns the locals
2.0.0rc3 / 2011-03-17
==================
* Added `res.locals(obj)` to compliment `res.local(key, val)`
* Added `res.partial()` callback support
* Fixed recursive error reporting issue in `res.render()`
2.0.0rc2 / 2011-03-17
==================
* Changed; `partial()` "locals" are now optional
* Fixed `SlowBuffer` support. Closes #584 [reported by tyrda01]
* Fixed .filename view engine option [reported by drudge]
* Fixed blog example
* Fixed `{req,res}.app` reference when mounting [Ben Weaver]
2.0.0rc / 2011-03-14
==================
* Fixed; expose `HTTPSServer` constructor
* Fixed express(1) default test charset. Closes #579 [reported by secoif]
* Fixed; default charset to utf-8 instead of utf8 for lame IE [reported by NickP]
2.0.0beta3 / 2011-03-09
==================
* Added support for `res.contentType()` literal
The original `res.contentType('.json')`,
`res.contentType('application/json')`, and `res.contentType('json')`
will work now.
* Added `res.render()` status option support back
* Added charset option for `res.render()`
* Added `.charset` support (via connect 1.0.4)
* Added view resolution hints when in development and a lookup fails
* Added layout lookup support relative to the page view.
For example while rendering `./views/user/index.jade` if you create
`./views/user/layout.jade` it will be used in favour of the root layout.
* Fixed `res.redirect()`. RFC states absolute url [reported by unlink]
* Fixed; default `res.send()` string charset to utf8
* Removed `Partial` constructor (not currently used)
2.0.0beta2 / 2011-03-07
==================
* Added res.render() `.locals` support back to aid in migration process
* Fixed flash example
2.0.0beta / 2011-03-03
==================
* Added HTTPS support
* Added `res.cookie()` maxAge support
* Added `req.header()` _Referrer_ / _Referer_ special-case, either works
* Added mount support for `res.redirect()`, now respects the mount-point
* Added `union()` util, taking place of `merge(clone())` combo
* Added stylus support to express(1) generated app
* Added secret to session middleware used in examples and generated app
* Added `res.local(name, val)` for progressive view locals
* Added default param support to `req.param(name, default)`
* Added `app.disabled()` and `app.enabled()`
* Added `app.register()` support for omitting leading ".", either works
* Added `res.partial()`, using the same interface as `partial()` within a view. Closes #539
* Added `app.param()` to map route params to async/sync logic
* Added; aliased `app.helpers()` as `app.locals()`. Closes #481
* Added extname with no leading "." support to `res.contentType()`
* Added `cache views` setting, defaulting to enabled in "production" env
* Added index file partial resolution, eg: partial('user') may try _views/user/index.jade_.
* Added `req.accepts()` support for extensions
* Changed; `res.download()` and `res.sendfile()` now utilize Connect's
static file server `connect.static.send()`.
* Changed; replaced `connect.utils.mime()` with npm _mime_ module
* Changed; allow `req.query` to be pre-defined (via middleware or other parent
* Changed view partial resolution, now relative to parent view
* Changed view engine signature. no longer `engine.render(str, options, callback)`, now `engine.compile(str, options) -> Function`, the returned function accepts `fn(locals)`.
* Fixed `req.param()` bug returning Array.prototype methods. Closes #552
* Fixed; using `Stream#pipe()` instead of `sys.pump()` in `res.sendfile()`
* Fixed; using _qs_ module instead of _querystring_
* Fixed; strip unsafe chars from jsonp callbacks
* Removed "stream threshold" setting
1.0.8 / 2011-03-01
==================
* Allow `req.query` to be pre-defined (via middleware or other parent app)
* "connect": ">= 0.5.0 < 1.0.0". Closes #547
* Removed the long deprecated __EXPRESS_ENV__ support
1.0.7 / 2011-02-07
==================
* Fixed `render()` setting inheritance.
Mounted apps would not inherit "view engine"
1.0.6 / 2011-02-07
==================
* Fixed `view engine` setting bug when period is in dirname
1.0.5 / 2011-02-05
==================
* Added secret to generated app `session()` call
1.0.4 / 2011-02-05
==================
* Added `qs` dependency to _package.json_
* Fixed namespaced `require()`s for latest connect support
1.0.3 / 2011-01-13
==================
* Remove unsafe characters from JSONP callback names [Ryan Grove]
1.0.2 / 2011-01-10
==================
* Removed nested require, using `connect.router`
1.0.1 / 2010-12-29
==================
* Fixed for middleware stacked via `createServer()`
previously the `foo` middleware passed to `createServer(foo)`
would not have access to Express methods such as `res.send()`
or props like `req.query` etc.
1.0.0 / 2010-11-16
==================
+1 -1
Ver Arquivo
@@ -1,6 +1,6 @@
(The MIT License)
Copyright (c) 2009-2010 TJ Holowaychuk <tj@vision-media.ca>
Copyright (c) 2009-2011 TJ Holowaychuk <tj@vision-media.ca>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
+24 -64
Ver Arquivo
@@ -1,76 +1,36 @@
PREFIX ?= /usr/local
LIB_PREFIX = ~/.node_libraries
REPORTER = dot
DOCS = docs/index.md \
docs/executable.md \
docs/contrib.md \
docs/guide.md \
docs/migrate.md \
docs/applications.md
docs: docs/express.md
MANPAGES =$(DOCS:.md=.1)
HTMLDOCS =$(DOCS:.md=.html)
docs/express.md: docs/application.md docs/request.md docs/response.md
cat $^ > $@
install: install-docs
@mkdir -p $(PREFIX)/bin
@mkdir -p $(LIB_PREFIX)
cp -f bin/express $(PREFIX)/bin/express
cp -fr lib/express $(LIB_PREFIX)/express
docs/%.md: lib/%.js
@mkdir -p docs
dox --raw < $< | ./support/docs > $@
uninstall: uninstall-docs
rm -f $(PREFIX)/bin/express
rm -fr $(LIB_PREFIX)/express
test: test-unit test-acceptance
install-support:
cd support/connect && $(MAKE) install
test-unit:
@NODE_ENV=test ./node_modules/.bin/mocha \
--reporter $(REPORTER)
uninstall-support:
cd support/connect && $(MAKE) uninstall
test-acceptance:
@NODE_ENV=test ./node_modules/.bin/mocha \
--reporter $(REPORTER) \
test/acceptance/*.js
install-docs:
@mkdir -p $(PREFIX)/share/man/man1
cp -f docs/executable.1 $(PREFIX)/share/man/man1/express.1
test-cov: lib-cov
@EXPRESS_COV=1 $(MAKE) test REPORTER=html-cov > coverage.html
uninstall-docs:
rm -f $(PREFIX)/share/man/man1/express.1
test:
@NODE_ENV=test ./support/expresso/bin/expresso \
-I lib \
-I support/connect/lib \
-I support/haml/lib \
-I support/jade/lib \
-I support/ejs/lib \
$(TESTFLAGS) \
test/*.test.js
test-cov:
@TESTFLAGS=--cov $(MAKE) test
docs: docs/api.html $(MANPAGES) $(HTMLDOCS)
@ echo "... generating TOC"
@./support/toc.js docs/guide.html
docs/api.html: lib/express/*.js
dox \
--private \
--title Express \
--desc "High performance web framework for [node](http://nodejs.org)." \
$(shell find lib/express/* -type f) > $@
%.1: %.md
@echo "... $< -> $@"
@ronn -r --pipe $< > $@
%.html: %.md
@echo "... $< -> $@"
@ronn -5 --pipe --fragment $< \
| cat docs/layout/head.html - docs/layout/foot.html \
| sed 's/NAME/Express/g' \
> $@
lib-cov:
@jscoverage lib lib-cov
docclean:
rm -f docs/*.{1,html}
rm -fr docs
.PHONY: install uninstall install-docs install-support uninstall-support install-docs uninstall-docs test test-cov docs docclean
benchmark:
@./support/bench
.PHONY: docs docclean test test-unit test-acceptance benchmark
+131 -51
Ver Arquivo
@@ -1,87 +1,167 @@
# Express
Insanely fast (and small) server-side JavaScript web development framework
built on [node](http://nodejs.org) and [Connect](http://github.com/senchalabs/connect).
var app = express.createServer();
app.get('/', function(req, res){
res.send('Hello World');
});
![express logo](http://f.cl.ly/items/0V2S1n0K1i3y1c122g04/Screen%20Shot%202012-04-11%20at%209.59.42%20AM.png)
app.listen(3000);
Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). [![Build Status](https://secure.travis-ci.org/visionmedia/express.png)](http://travis-ci.org/visionmedia/express)
```js
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send('Hello World');
});
app.listen(3000);
```
## Installation
npm:
$ npm install -g express
$ npm install express
To install the 3.0 alpha:
$ npm install -g express@3.0
curl:
## Quick Start
$ curl -# http://expressjs.com/install.sh | sh
The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below:
Create the app:
$ npm install -g express
$ express /tmp/foo && cd /tmp/foo
Install dependencies:
$ npm install
Start the server:
$ node app
## Features
* Built on [Connect](http://github.com/senchalabs/connect)
* Robust routing
* Redirection helpers
* Dynamic view helpers
* HTTP helpers (redirection, caching, etc)
* View system supporting 14+ template engines
* Content negotiation
* Focus on high performance
* View rendering and partials support
* Environment based configuration
* Session based flash notifications
* Built on [Connect](http://github.com/senchalabs/connect)
* High test coverage
* Executable for generating applications quickly
* Application level view options
* High test coverage
Via Connect:
## Philosophy
* Session support
* Cache API
* Mime helpers
* ETag support
* Persistent flash notifications
* Cookie support
* JSON-RPC
* Logging
* and _much_ more!
## Contributors
The following are the major contributors of Express (in no specific order).
* TJ Holowaychuk ([visionmedia](http://github.com/visionmedia))
* Ciaran Jessup ([ciaranj](http://github.com/ciaranj))
* Aaron Heckmann ([aheckmann](http://github.com/aheckmann))
* Guillermo Rauch ([guille](http://github.com/guille))
The Express philosophy is to provide small, robust tooling for HTTP servers. Making
it a great solution for single page applications, web sites, hybrids, or public
HTTP APIs.
Built on Connect you can use _only_ what you need, and nothing more, applications
can be as big or as small as you like, even a single file. Express does
not force you to use any specific ORM or template engine. With support for over
14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js)
you can quickly craft your perfect framework.
## More Information
* Express [Contrib](http://github.com/visionmedia/express-contrib) repo for additional functionality
* Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates
* Join #express on freenode
* [Google Group](http://groups.google.com/group/express-js) for discussion
* Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates
* Visit the [Wiki](http://github.com/visionmedia/express/wiki)
* [日本語ドキュメンテーション](http://hideyukisaito.com/doc/expressjs/) by [hideyukisaito](https://github.com/hideyukisaito)
* [Русскоязычная документация](http://express-js.ru/)
## Node Compatibility
The latest release of Express is compatible with node --version:
## Viewing Examples
v0.2.4
First install the dev dependencies to install all the example / test suite deps:
and connect --version:
$ cd express
$ npm install
0.3.0
then run whichever tests you want:
Express 1.x is maintained in the _1.x_ branch.
$ node examples/content-negotiation
## Running Tests
To run the test suite first invoke the following command within the repo, installing the development dependencies:
$ npm install
then run the tests:
$ make test
## Contributors
```
project: express
commits: 3559
active : 468 days
files : 237
authors:
1891 Tj Holowaychuk 53.1%
1285 visionmedia 36.1%
182 TJ Holowaychuk 5.1%
54 Aaron Heckmann 1.5%
34 csausdev 1.0%
26 ciaranj 0.7%
21 Robert Sköld 0.6%
6 Guillermo Rauch 0.2%
3 Dav Glass 0.1%
3 Nick Poulden 0.1%
2 Randy Merrill 0.1%
2 Benny Wong 0.1%
2 Hunter Loftis 0.1%
2 Jake Gordon 0.1%
2 Brian McKinney 0.1%
2 Roman Shtylman 0.1%
2 Ben Weaver 0.1%
2 Dave Hoover 0.1%
2 Eivind Fjeldstad 0.1%
2 Daniel Shaw 0.1%
1 Matt Colyer 0.0%
1 Pau Ramon 0.0%
1 Pero Pejovic 0.0%
1 Peter Rekdal Sunde 0.0%
1 Raynos 0.0%
1 Teng Siong Ong 0.0%
1 Viktor Kelemen 0.0%
1 ctide 0.0%
1 8bitDesigner 0.0%
1 isaacs 0.0%
1 mgutz 0.0%
1 pikeas 0.0%
1 shuwatto 0.0%
1 tstrimple 0.0%
1 ewoudj 0.0%
1 Adam Sanderson 0.0%
1 Andrii Kostenko 0.0%
1 Andy Hiew 0.0%
1 Arpad Borsos 0.0%
1 Ashwin Purohit 0.0%
1 Benjen 0.0%
1 Darren Torpey 0.0%
1 Greg Ritter 0.0%
1 Gregory Ritter 0.0%
1 James Herdman 0.0%
1 Jim Snodgrass 0.0%
1 Joe McCann 0.0%
1 Jonathan Dumaine 0.0%
1 Jonathan Palardy 0.0%
1 Jonathan Zacsh 0.0%
1 Justin Lilly 0.0%
1 Ken Sato 0.0%
1 Maciej Małecki 0.0%
1 Masahiro Hayashi 0.0%
```
## License
(The MIT License)
Copyright (c) 2009-2010 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
Copyright (c) 2009-2012 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
+204 -226
Ver Arquivo
@@ -4,82 +4,87 @@
* Module dependencies.
*/
var fs = require('fs')
, sys = require('sys')
, exec = require('child_process').exec;
var exec = require('child_process').exec
, program = require('commander')
, mkdirp = require('mkdirp')
, pkg = require('../package.json')
, version = pkg.version
, os = require('os')
, fs = require('fs');
// CLI
program
.version(version)
.option('-s, --sessions', 'add session support')
.option('-e, --ejs', 'add ejs engine support (defaults to jade)')
.option('-J, --jshtml', 'add jshtml engine support (defaults to jade)')
.option('-h, --hjs', 'add hogan.js engine support')
.option('-c, --css <engine>', 'add stylesheet <engine> support (less|stylus) (defaults to plain css)')
.option('-f, --force', 'force on non-empty directory')
.parse(process.argv);
// Path
var path = program.args.shift() || '.';
// end-of-line code
var eol = 'win32' == os.platform() ? '\r\n' : '\n'
// Template engine
program.template = 'jade';
if (program.ejs) program.template = 'ejs';
if (program.jshtml) program.template = 'jshtml';
if (program.hjs) program.template = 'hjs';
/**
* Framework version.
* Routes index template.
*/
var version = '1.0.0';
/**
* stdin stream.
*/
var stdin;
/**
* Add session support.
*/
var sessions = false;
/**
* CSS engine to utilize.
*/
var cssEngine;
/**
* Template engine to utilize.
*/
var templateEngine = 'jade';
/**
* Usage documentation.
*/
var usage = ''
+ '\x1b[1mUsage\x1b[0m: express [options] [PATH]\n'
+ '\n'
+ '\x1b[1mOptions\x1b[0m:\n'
+ ' -s, --sessions Add session support\n'
+ ' -t, --template ENGINE Add template ENGINE support (jade|ejs). Defaults to jade\n'
+ ' -c, --css ENGINE Add stylesheet ENGINE support (less|sass). Defaults to plain css\n'
+ ' -v, --version Output framework version\n'
+ ' -h, --help Output help information\n'
;
var index = [
''
, '/*'
, ' * GET home page.'
, ' */'
, ''
, 'exports.index = function(req, res){'
, ' res.render(\'index\', { title: \'Express\' });'
, '};'
].join(eol);
/**
* Jade layout template.
*/
var jadeLayout = [
'!!!'
'doctype 5'
, 'html'
, ' head'
, ' title= title'
, ' link(rel=\'stylesheet\', href=\'/stylesheets/style.css\')'
, ' body!= body'
].join('\n');
, ' body'
, ' block content'
].join(eol);
/**
* Jade index template.
*/
var jadeIndex = [
'h1= title'
, 'p Welcome to #{title}'
].join('\n');
'extends layout'
, ''
, 'block content'
, ' h1= title'
, ' p Welcome to #{title}'
].join(eol);
/**
* EJS layout template.
* EJS index template.
*/
var ejsLayout = [
var ejsIndex = [
'<!DOCTYPE html>'
, '<html>'
, ' <head>'
@@ -87,19 +92,54 @@ var ejsLayout = [
, ' <link rel=\'stylesheet\' href=\'/stylesheets/style.css\' />'
, ' </head>'
, ' <body>'
, ' <%- body %>'
, ' <h1><%= title %></h1>'
, ' <p>Welcome to <%= title %></p>'
, ' </body>'
, '</html>'
].join('\n');
].join(eol);
/**
* EJS index template.
* JSHTML layout template.
*/
var ejsIndex = [
'<h1><%= title %></h1>'
, '<p>Welcome to <%= title %></p>'
].join('\n');
var jshtmlLayout = [
'<!DOCTYPE html>'
, '<html>'
, ' <head>'
, ' <title> @write(title) </title>'
, ' <link rel=\'stylesheet\' href=\'/stylesheets/style.css\' />'
, ' </head>'
, ' <body>'
, ' @write(body)'
, ' </body>'
, '</html>'
].join(eol);
/**
* JSHTML index template.
*/
var jshtmlIndex = [
'<h1>@write(title)</h1>'
, '<p>Welcome to @write(title)</p>'
].join(eol);
/**
* Hogan.js index template.
*/
var hjsIndex = [
'<!DOCTYPE html>'
, '<html>'
, ' <head>'
, ' <title>{{ title }}</title>'
, ' <link rel=\'stylesheet\' href=\'/stylesheets/style.css\' />'
, ' </head>'
, ' <body>'
, ' <h1>{{ title }}</h1>'
, ' <p>Welcome to {{ title }}</p>'
, ' </body>'
, '</html>'
].join(eol);
/**
* Default css template.
@@ -110,7 +150,11 @@ var css = [
, ' padding: 50px;'
, ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;'
, '}'
].join('\n');
, ''
, 'a {'
, ' color: #00B7FF;'
, '}'
].join(eol);
/**
* Default less template.
@@ -121,43 +165,23 @@ var less = [
, ' padding: 50px;'
, ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;'
, '}'
].join('\n');
, ''
, 'a {'
, ' color: #00B7FF;'
, '}'
].join(eol);
/**
* Default sass template.
* Default stylus template.
*/
var sass = [
var stylus = [
'body'
, ' :padding 50px'
, ' :font 14px "Lucida Grande", Helvetica, Arial, sans-serif'
].join('\n');
/**
* App test template.
*/
var appTest = [
""
, "// Run $ expresso"
, ""
, "/**"
, " * Module dependencies."
, " */"
, ""
, "var app = require('../app');"
, "",
, "module.exports = {"
, " 'GET /': function(assert){"
, " assert.response(app,"
, " { url: '/' },"
, " { status: 200, headers: { 'Content-Type': 'text/html; charset=utf-8' }},"
, " function(res){"
, " assert.includes(res.body, '<title>Express</title>');"
, " });"
, " }"
, "};"
].join('\n');
, ' padding: 50px'
, ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif'
, 'a'
, ' color: #00B7FF'
].join(eol);
/**
* App template.
@@ -169,96 +193,46 @@ var app = [
, ' * Module dependencies.'
, ' */'
, ''
, 'var express = require(\'express\');'
, 'var express = require(\'express\')'
, ' , routes = require(\'./routes\')'
, ' , http = require(\'http\');'
, ''
, 'var app = module.exports = express.createServer();'
, ''
, '// Configuration'
, 'var app = express();'
, ''
, 'app.configure(function(){'
, ' app.set(\'port\', process.env.PORT || 3000);'
, ' app.set(\'views\', __dirname + \'/views\');'
, ' app.set(\'view engine\', \':TEMPLATE\');'
, ' app.use(express.bodyDecoder());'
, ' app.use(express.methodOverride());:SESS:CSS'
, ' app.use(app.router);'
, ' app.use(express.staticProvider(__dirname + \'/public\'));'
, ' app.use(express.favicon());'
, ' app.use(express.logger(\'dev\'));'
, ' app.use(express.bodyParser());'
, ' app.use(express.methodOverride());{sess}'
, ' app.use(app.router);{css}'
, ' app.use(express.static(__dirname + \'/public\'));'
, '});'
, ''
, 'app.configure(\'development\', function(){'
, ' app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); '
, ' app.use(express.errorHandler());'
, '});'
, ''
, 'app.configure(\'production\', function(){'
, ' app.use(express.errorHandler()); '
, 'app.get(\'/\', routes.index);'
, ''
, 'http.createServer(app).listen(app.get(\'port\'), function(){'
, ' console.log("Express server listening on port " + app.get(\'port\'));'
, '});'
, ''
, '// Routes'
, ''
, 'app.get(\'/\', function(req, res){'
, ' res.render(\'index\', {'
, ' locals: {'
, ' title: \'Express\''
, ' }'
, ' });'
, '});'
, ''
, '// Only listen on $ node app.js'
, ''
, 'if (!module.parent) {'
, ' app.listen(3000);'
, ' console.log("Express server listening on port %d", app.address().port)'
, '}'
, ''
].join('\n');
// Parse arguments
var args = process.argv.slice(2)
, path = '.';
while (args.length) {
var arg = args.shift();
switch (arg) {
case '-h':
case '--help':
abort(usage);
break;
case '-v':
case '--version':
abort(version);
break;
case '-s':
case '--session':
case '--sessions':
sessions = true;
break;
case '-c':
case '--css':
args.length
? (cssEngine = args.shift())
: abort('--css requires an argument');
break;
case '-t':
case '--template':
args.length
? (templateEngine = args.shift())
: abort('--template requires an argument');
break;
default:
path = arg;
}
}
].join(eol);
// Generate application
(function createApplication(path) {
emptyDirectory(path, function(empty){
if (empty) {
if (empty || program.force) {
createApplicationAt(path);
} else {
confirm('destination is not empty, continue? ', function(ok){
program.confirm('destination is not empty, continue? ', function(ok){
if (ok) {
stdin.destroy();
process.stdin.destroy();
createApplicationAt(path);
} else {
abort('aborting');
@@ -275,70 +249,104 @@ while (args.length) {
*/
function createApplicationAt(path) {
console.log();
process.on('exit', function(){
console.log();
console.log(' install dependencies:');
console.log(' $ cd %s && npm install', path);
console.log();
console.log(' run the app:');
console.log(' $ node app');
console.log();
});
mkdir(path, function(){
mkdir(path + '/pids');
mkdir(path + '/logs');
mkdir(path + '/public');
mkdir(path + '/public/javascripts');
mkdir(path + '/public/images');
mkdir(path + '/public/stylesheets', function(){
switch (cssEngine) {
switch (program.css) {
case 'less':
write(path + '/public/stylesheets/style.less', less);
break;
case 'sass':
write(path + '/public/stylesheets/style.sass', sass);
case 'stylus':
write(path + '/public/stylesheets/style.styl', stylus);
break;
default:
write(path + '/public/stylesheets/style.css', css);
}
});
mkdir(path + '/views/partials', function(){
switch (templateEngine) {
mkdir(path + '/routes', function(){
write(path + '/routes/index.js', index);
});
mkdir(path + '/views', function(){
switch (program.template) {
case 'ejs':
write(path + '/views/layout.ejs', ejsLayout);
write(path + '/views/index.ejs', ejsIndex);
break;
case 'jade':
write(path + '/views/layout.jade', jadeLayout);
write(path + '/views/index.jade', jadeIndex);
break;
case 'jshtml':
write(path + '/views/layout.jshtml', jshtmlLayout);
write(path + '/views/index.jshtml', jshtmlIndex);
break;
case 'hjs':
write(path + '/views/index.hjs', hjsIndex);
break;
}
});
mkdir(path + '/test', function(){
write(path + '/test/app.test.js', appTest);
});
// CSS Engine support
switch (cssEngine) {
case 'sass':
switch (program.css) {
case 'less':
app = app.replace(':CSS', '\n app.use(express.compiler({ src: __dirname + \'/public\', enable: [\'' + cssEngine + '\'] }));');
app = app.replace('{css}', eol + ' app.use(require(\'less-middleware\')({ src: __dirname + \'/public\' }));');
break;
case 'stylus':
app = app.replace('{css}', eol + ' app.use(require(\'stylus\').middleware(__dirname + \'/public\'));');
break;
default:
app = app.replace(':CSS', '');
app = app.replace('{css}', '');
}
// Session support
app = app.replace(':SESS', sessions
? '\n app.use(express.cookieDecoder());\n app.use(express.session());'
app = app.replace('{sess}', program.sessions
? eol + ' app.use(express.cookieParser(\'your secret here\'));' + eol + ' app.use(express.session());'
: '');
// Template support
app = app.replace(':TEMPLATE', templateEngine);
app = app.replace(':TEMPLATE', program.template);
write(path + '/app.js', app);
// Suggestions
process.on('exit', function(){
if (cssEngine) {
console.log(' - make sure you have installed %s: \x1b[33m$ npm install %s\x1b[0m'
, cssEngine
, cssEngine);
// package.json
var pkg = {
name: 'application-name'
, version: '0.0.1'
, private: true
, scripts: { start: 'node app' }
, dependencies: {
express: version
}
console.log(' - make sure you have installed %s: \x1b[33m$ npm install %s\x1b[0m'
, templateEngine
, templateEngine);
});
}
if (program.template) pkg.dependencies[program.template] = '*';
// CSS Engine support
switch (program.css) {
case 'less':
pkg.dependencies['less-middleware'] = '*';
break;
default:
if (program.css) {
pkg.dependencies[program.css] = '*';
}
}
write(path + '/package.json', JSON.stringify(pkg, null, 2));
write(path + '/app.js', app);
});
}
@@ -351,7 +359,7 @@ function createApplicationAt(path) {
function emptyDirectory(path, fn) {
fs.readdir(path, function(err, files){
if (err && err.errno !== process.ENOENT) throw err;
if (err && 'ENOENT' != err.code) throw err;
fn(!files || !files.length);
});
}
@@ -365,37 +373,7 @@ function emptyDirectory(path, fn) {
function write(path, str) {
fs.writeFile(path, str);
console.log(' \x1b[33mcreate\x1b[0m : ' + path);
}
/**
* Prompt confirmation with the given `msg`.
*
* @param {String} msg
* @param {Function} fn
*/
function confirm(msg, fn) {
prompt(msg, function(val){
fn(/^ *y(es)?/i.test(val));
});
}
/**
* Prompt input with the given `msg` and callback `fn`.
*
* @param {String} msg
* @param {Function} fn
*/
function prompt(msg, fn) {
stdin = stdin || process.openStdin();
sys[msg[msg.length - 1] == ' ' ? 'print' : 'puts'](msg);
stdin.setEncoding('ascii');
stdin.addListener('data', function(data){
fn(data);
stdin.removeListener('data', arguments.callee);
});
console.log(' \x1b[36mcreate\x1b[0m : ' + path);
}
/**
@@ -406,9 +384,9 @@ function prompt(msg, fn) {
*/
function mkdir(path, fn) {
exec('mkdir -p ' + path, function(err){
mkdirp(path, 0755, function(err){
if (err) throw err;
console.log(' \x1b[33mcreate\x1b[0m : ' + path);
console.log(' \033[36mcreate\033[0m : ' + path);
fn && fn();
});
}
+25
Ver Arquivo
@@ -0,0 +1,25 @@
var http = require('http');
var times = 50;
while (times--) {
var req = http.request({
port: 3000
, method: 'POST'
, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
});
req.on('response', function(res){
console.log(res.statusCode);
});
var n = 500000;
while (n--) {
req.write('foo=bar&bar=baz&');
}
req.write('foo=bar&bar=baz');
req.end();
}
-1676
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+181
Ver Arquivo
@@ -0,0 +1,181 @@
# app
Application prototype.
# app.use()
Proxy `connect#use()` to apply settings to
mounted applications.
# app.engine()
Register the given template engine callback `fn`
as `ext`.
By default will `require()` the engine based on the
file extension. For example if you try to render
a "foo.jade" file Express will invoke the following internally:
app.engine('jade', require('jade').__express);
For engines that do not provide `.__express` out of the box,
or if you wish to "map" a different extension to the template engine
you may use this method. For example mapping the EJS template engine to
".html" files
app.engine('html', require('ejs').renderFile);
In this case EJS provides a `.renderFile()` method with
the same signature that Express expects: `(path, options, callback)`,
though note that it aliases this method as `ejs.__express` internally
so if you're using ".ejs" extensions you dont need to do anything.
Some template engines do not follow this convention, the
[Consolidate.js](https://github.com/visionmedia/consolidate.js)
library was created to map all of node's popular template
engines to follow this convention, thus allowing them to
work seemlessly within Express.
# app.param()
Map the given param placeholder `name`(s) to the given callback(s).
Parameter mapping is used to provide pre-conditions to routes
which use normalized placeholders. For example a _:user_id_ parameter
could automatically load a user's information from the database without
any additional code,
The callback uses the samesignature as middleware, the only differencing
being that the value of the placeholder is passed, in this case the _id_
of the user. Once the `next()` function is invoked, just like middleware
it will continue on to execute the route, or subsequent parameter functions.
app.param('user_id', function(req, res, next, id){
User.find(id, function(err, user){
if (err) {
next(err);
} else if (user) {
req.user = user;
next();
} else {
next(new Error('failed to load user'));
}
});
});
# app.set()
Assign `setting` to `val`, or return `setting`'s value.
app.set('foo', 'bar');
app.get('foo');
// => "bar"
Mounted servers inherit their parent server's settings.
# app.enabled()
Check if `setting` is enabled (truthy).
app.enabled('foo')
// => false
app.enable('foo')
app.enabled('foo')
// => true
# app.disabled()
Check if `setting` is disabled.
app.disabled('foo')
// => true
app.enable('foo')
app.disabled('foo')
// => false
# app.enable()
Enable `setting`.
# app.disable()
Disable `setting`.
# app.configure()
Configure callback for zero or more envs,
when no `env` is specified that callback will
be invoked for all environments. Any combination
can be used multiple times, in any order desired.
## Examples
app.configure(function(){
// executed for all envs
});
app.configure('stage', function(){
// executed staging env
});
app.configure('stage', 'production', function(){
// executed for stage and production
});
## Note
These callbacks are invoked immediately, and
are effectively sugar for the following.
var env = process.env.NODE_ENV || 'development';
switch (env) {
case 'development':
...
break;
case 'stage':
...
break;
case 'production':
...
break;
}
# app.all()
Special-cased "all" method, applying the given route `path`,
middleware, and callback to _every_ HTTP method.
# app.render()
Render the given view `name` name with `options`
and a callback accepting an error and the
rendered template string.
## Example
app.render('email', { name: 'Tobi' }, function(err, html){
// ...
})
# app.listen()
Listen for connections.
A node `http.Server` is returned, with this
application (which is a `Function`) as its
callback. If you wish to create both an HTTP
and HTTPS server you may do so with the "http"
and "https" modules as shown here.
var http = require('http')
, https = require('https')
, express = require('express')
, app = express();
http.createServer(app).listen(80);
http.createServer({ ... }, app).listen(443);
-70
Ver Arquivo
@@ -1,70 +0,0 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "APPLICATIONS" "" "October 2010" "" ""
.
.SH "NAME"
\fBapplications\fR
.
.P
Learnboost \fIhttp://learnboost\.com\fR is a free online gradebook application, aimed to crush the competition with innovative, realtime, enjoyable features\.
.
.P
\fIhttp://learnboost\.com\fR
.
.P
Storify \fIhttp://storify\.com\fR lets you turn what people post on social media websites into compelling stories\.
.
.P
\fIhttp://storify\.com\fR
.
.P
Pakistan Survey \fIhttp://pakistansurvey\.org/\fR by Development Seed \fIhttp://developmentseed\.org\fR, provides in\-depth agency\-specific analysis from regional experts with data from 1,000 interviews across 120 villages in all seven tribal agencies and mapping of 142 reported drone strikes in FATA through July 2010\.
.
.P
\fIhttp://pakistansurvey\.org\fR
.
.P
Markup\.IO \fIhttp://markup\.io\fR allows you to draw directly on \fIany\fR website, then share with others to share your thoughts\.
.
.P
\fIhttp://markup\.io\fR
.
.P
Scrabb\.ly \fIhttp://scrabb\.ly\fR is a massively multiplayer scrabble game initially created for the Node Knockout \fIhttp://nodeknockout\.com/\fR competition\.
.
.P
\fIhttp://scrabb\.ly\fR
.
.P
ClickDummy \fIhttp://clickdummy\.net/\fR is a rapid mockup prototyping application for designers and dummies\.
.
.P
\fIhttp://clickdummy\.net\fR
.
.P
Node Knockout \fIhttp://nodeknockout\.com\fR organized the first ever node\-specific competition with hundreds of contestants\.
.
.P
\fIhttp://nodeknockout\.com\fR
.
.P
Widescript \fIhttp://widescript\.com\fR is an innovative app that helps you focus and interact with your texts \- on your desktop, your couch or on the go\.
.
.P
\fIhttp://widescript\.com\fR
.
.P
e\-resistable \fIhttp://www\.e\-resistible\.co\.uk/\fR is an online order takeaway system providing an intuitive way to fill your belly from your computer!
.
.P
\fIhttp://www\.e\-resistible\.co\.uk\fR
.
.P
Top Twitter Trends \fIhttp://toptwittertrends\.com\fR utilizes MongoDB, Socket\.IO, jQuery and many other exciting libraries to bring you trending tweets in realtime\.
.
.P
\fIhttp://toptwittertrends\.com\fR
.
.P
The applications shown above are not listed in any specific order\. To have an application added or removed please contact TJ Holowaychuk \fIhttp://github\.com/visionmedia\fR\.
-252
Ver Arquivo
@@ -1,252 +0,0 @@
<html>
<head>
<title>Express - node web framework</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<style>
#tagline {
margin-left: 75px;
margin-bottom: 30px;
color: rgba(255,255,255,0.7); }
html {
background: #1c1c1c url(images/bg.tile.jpg); }
body {
margin: 0;
padding-bottom: 30px;
font: 14px/1.4 "Helvetica Neue", "Lucida Grande", "Arial";
font-size: 14px;
line-height: 1.5;
-webkit-font-smoothing: antialiased;
background: url(images/bg.jpg) 50% 0 no-repeat;
color: #8b8b8b; }
* {
outline: none; }
em {
color: white; }
a img {
border: none !important; }
a {
font-weight: bold;
text-decoration: none;
color: white;
-webkit-transition-property: opacity, -webkit-transform, color, background-color, padding, -webkit-box-shadow;
-webkit-transition-duration: 0.15s;
-webkit-transition-timing-function: ease-out; }
a:hover {
opacity: 0.8; }
h1, h2, h3, h4 {
margin: 45px 0 0 0;
color: white;
text-shadow: 1px 2px 2px rgba(0,0,0,0.6); }
h3 {
font-size: 18px; }
h4 {
margin-left: 10px;
font-size: 14px;
}
pre {
margin: 20px 10px;
padding: 25px 20px;
background: rgba(0,0,0,0.5);
border: 1px solid #323232;
-webkit-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-moz-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-webkit-border-radius: 5px;
-moz-border-radius: 5px; }
code {
font-family: "Helvetica Neue", "Lucida Grande", "Arial"; }
ul {
margin: 15px 0;
padding: 0 0 0 35px; }
ul li {
margin: 0;
padding: 2px 0;
list-style: square; }
ul li ul {
margin: 0;
padding-left: 12px;
}
.man-name, #Express { display:none; }
.sect {
margin-left: 40px; }
img {
margin-left: 20px;
margin-bottom: 15px;
}
#logo {
display: block;
margin-left: 30%;
margin-bottom: 30px;
width: 194px;
height: 51px;
background: url(images/logo.png) 0 0 no-repeat;
text-indent: -99999px; }
#logo:hover {
opacity: 0.7; }
#logo:active {
opacity: 0.3; }
#ribbon {
position: fixed;
top: 0;
right: 0;
z-index: 2; }
#wrapper {
width: 100%;
min-height: 800px;
background: url(images/top.png) 0 0 repeat-x; }
#container {
margin: 0 auto;
padding-top: 80px;
width: 550px; }
#toc {
position: fixed;
top: 0;
left: 0;
margin: 0 0 0 15px;
padding: 15px;
height: 100%;
background: rgba(0,0,0,0.2);
overflow: auto;
border-right: 1px solid rgba(255,255,255,0.05);
}
#toc li {
padding: 0;
list-style: none;
}
#toc li a {
font-size: 11px;
}
#menu {
margin-left: 65px;
padding: 0;
padding-bottom: 30px; }
#menu li {
display: inline;
list-style: none; }
#menu li a {
display: block;
float: left;
margin: 0 2px;
padding: 3px 15px;
background: rgba(0,0,0,0.2);
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
-webkit-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-moz-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-webkit-transition-property: opacity, -webkit-transform, color, background-color, -webkit-box-shadow;
-webkit-transition-duration: 0.15s;
-webkit-transition-timing-function: ease-out; }
#menu li a:hover,
#menu li a.active {
background: rgba(0,0,0,0.5); }
#menu li a:active {
background: rgba(0,0,0,0.1);
-webkit-box-shadow: 1px 1px 1px rgba(0,0,0,0.4);
-moz-box-shadow: 1px 1px 1px rgba(0,0,0,0.4); }
</style>
<script>
$(function(){
$('.section').hide();
$('.toggle, a.section-title').toggle(function(){
$(this).siblings('ul').fadeIn(300);
return false;
}, function(){
$(this).siblings('ul').fadeOut(300);
return false;
});
});
</script>
</head>
<body>
<a href='http://github.com/visionmedia/express'>
<img alt='Fork me on GitHub' id='ribbon' src='http://s3.amazonaws.com/github/ribbons/forkme_right_white_ffffff.png' />
</a>
<div id="wrapper">
<div id="container">
<a href='http://github.com/visionmedia/express' id='logo'>Express</a>
<p id="tagline">
High performance, high class web development for
<a href="http://nodejs.org">Node.js</a>
</p>
<ul id="menu">
<li><a href="index.html">Home</a></li>
<li><a href="guide.html">Guide</a></li>
<li><a href="contrib.html">Contributing</a></li>
<li><a href="applications.html">Applications</a></li>
</ul>
<div class='mp'>
<h2 id="Express">Express</h2>
<p class="man-name">
<code>applications</code>
</p>
<br />
<p><a href="http://learnboost.com">Learnboost</a> is a free online gradebook application, aimed to crush the competition with innovative, realtime, enjoyable features.</p>
<p><a href="http://learnboost.com"><img src="images/apps/learnboost.png" alt="LearnBoost" /></a></p>
<p><a href="http://storify.com">Storify</a> lets you turn what people post on social media websites into compelling stories.</p>
<p><a href="http://storify.com"><img src="images/apps/storify.png" alt="Storify" /></a></p>
<p><a href="http://pakistansurvey.org/">Pakistan Survey</a> by <a href="http://developmentseed.org">Development Seed</a>, provides in-depth agency-specific analysis from regional experts with data from 1,000 interviews across 120 villages in all seven tribal agencies and mapping of 142 reported drone strikes in FATA through July 2010.</p>
<p><a href="http://pakistansurvey.org"><img src="images/apps/developmentseed.png" alt="Pakistan Survey" /></a></p>
<p><a href="http://markup.io">Markup.IO</a> allows you to draw directly on <em>any</em> website, then share with others to share your thoughts.</p>
<p><a href="http://markup.io"><img src="images/apps/markupio.png" alt="Markup.IO" /></a></p>
<p><a href="http://scrabb.ly">Scrabb.ly</a> is a massively multiplayer scrabble game initially created for the <a href="http://nodeknockout.com/">Node Knockout</a> competition.</p>
<p><a href="http://scrabb.ly"><img src="images/apps/scrabbly.png" alt="Online Realtime Scrabble" /></a></p>
<p><a href="http://clickdummy.net/">ClickDummy</a> is a rapid mockup prototyping application for designers and dummies.</p>
<p><a href="http://clickdummy.net"><img src="images/apps/clickdummy.png" alt="Mockup Prototying" /></a></p>
<p><a href="http://nodeknockout.com">Node Knockout</a> organized the first ever node-specific competition with hundreds of contestants.</p>
<p><a href="http://nodeknockout.com"><img src="images/apps/nodeko.png" alt="Node Knockout Competition Express" /></a></p>
<p><a href="http://widescript.com">Widescript</a> is an innovative app that helps you focus and interact with your texts - on your desktop, your couch or on the go.</p>
<p><a href="http://widescript.com"><img src="images/apps/widescript.png" alt="Widescript" /></a></p>
<p><a href="http://www.e-resistible.co.uk/">e-resistable</a> is an online order takeaway system providing an intuitive way to fill your belly from your computer!</p>
<p><a href="http://www.e-resistible.co.uk"><img src="images/apps/e-resistable.png" alt="Online Takeaway" /></a></p>
<p><a href="http://toptwittertrends.com">Top Twitter Trends</a> utilizes MongoDB, Socket.IO, jQuery and many other exciting libraries to bring you trending tweets in realtime.</p>
<p><a href="http://toptwittertrends.com"><img src="images/apps/toptwittertrends.png" alt="Twitter Trends" /></a></p>
<br />
<p>The applications shown above are not listed in any specific order. To have an application added or removed please contact <a href="http://github.com/visionmedia">TJ Holowaychuk</a>.</p>
</div>
</div>
</div>
</body>
</html>
-47
Ver Arquivo
@@ -1,47 +0,0 @@
<br />
[Learnboost](http://learnboost.com) is a free online gradebook application, aimed to crush the competition with innovative, realtime, enjoyable features.
[![LearnBoost](images/apps/learnboost.png)](http://learnboost.com)
[Storify](http://storify.com) lets you turn what people post on social media websites into compelling stories.
[![Storify](images/apps/storify.png)](http://storify.com)
[Pakistan Survey](http://pakistansurvey.org/) by [Development Seed](http://developmentseed.org), provides in-depth agency-specific analysis from regional experts with data from 1,000 interviews across 120 villages in all seven tribal agencies and mapping of 142 reported drone strikes in FATA through July 2010.
[![Pakistan Survey](images/apps/developmentseed.png)](http://pakistansurvey.org)
[Markup.IO](http://markup.io) allows you to draw directly on _any_ website, then share with others to share your thoughts.
[![Markup.IO](images/apps/markupio.png)](http://markup.io)
[Scrabb.ly](http://scrabb.ly) is a massively multiplayer scrabble game initially created for the [Node Knockout](http://nodeknockout.com/) competition.
[![Online Realtime Scrabble](images/apps/scrabbly.png)](http://scrabb.ly)
[ClickDummy](http://clickdummy.net/) is a rapid mockup prototyping application for designers and dummies.
[![Mockup Prototying](images/apps/clickdummy.png)](http://clickdummy.net)
[Node Knockout](http://nodeknockout.com) organized the first ever node-specific competition with hundreds of contestants.
[![Node Knockout Competition Express](images/apps/nodeko.png)](http://nodeknockout.com)
[Widescript](http://widescript.com) is an innovative app that helps you focus and interact with your texts - on your desktop, your couch or on the go.
[![Widescript](images/apps/widescript.png)](http://widescript.com)
[e-resistable](http://www.e-resistible.co.uk/) is an online order takeaway system providing an intuitive way to fill your belly from your computer!
[![Online Takeaway](images/apps/e-resistable.png)](http://www.e-resistible.co.uk)
[Top Twitter Trends](http://toptwittertrends.com) utilizes MongoDB, Socket.IO, jQuery and many other exciting libraries to bring you trending tweets in realtime.
[![Twitter Trends](images/apps/toptwittertrends.png)](http://toptwittertrends.com)
<br />
The applications shown above are not listed in any specific order. To have an application added or removed please contact [TJ Holowaychuk](http://github.com/visionmedia).
-82
Ver Arquivo
@@ -1,82 +0,0 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "CONTRIB" "" "October 2010" "" ""
.
.SH "NAME"
\fBcontrib\fR
.
.SS "Development Dependencies"
Express development dependencies are stored within the \fI\./support\fR directory\. To update them execute:
.
.IP "" 4
.
.nf
$ git submodule update \-\-init
.
.fi
.
.IP "" 0
.
.SS "Running Tests"
Express uses the Expresso \fIhttp://github\.com/visionmedia/expresso\fR TDD framework to write and run elegant test suites extremely fast\. To run all test suites simply execute:
.
.IP "" 4
.
.nf
$ make test
.
.fi
.
.IP "" 0
.
.P
To target specific suites we may specify the files via:
.
.IP "" 4
.
.nf
$ make test TESTS=test/view\.test\.js
.
.fi
.
.IP "" 0
.
.P
To check test coverage run:
.
.IP "" 4
.
.nf
$ make test\-cov
.
.fi
.
.IP "" 0
.
.SS "Contributions"
To accept a contribution, you should follow these guidelines:
.
.IP "\(bu" 4
All tests \fImust\fR pass
.
.IP "\(bu" 4
Your alterations or additions \fImust\fR include tests
.
.IP "\(bu" 4
Your commit(s) should be \fIfocused\fR, do not commit once for several changes
.
.IP "\(bu" 4
Do \fInot\fR alter release information such as the \fIversion\fR, or \fIHistory\.md\fR
.
.IP "\(bu" 4
Indents are \fI2\fR spaces\.
.
.IP "" 0
.
.SS "Documentation"
To contribute documentation edit the markdown files in \fI\./docs\fR, however do \fInot\fR run \fImake docs\fR, as they will be re\-built and published with each release\.
-247
Ver Arquivo
@@ -1,247 +0,0 @@
<html>
<head>
<title>Express - node web framework</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<style>
#tagline {
margin-left: 75px;
margin-bottom: 30px;
color: rgba(255,255,255,0.7); }
html {
background: #1c1c1c url(images/bg.tile.jpg); }
body {
margin: 0;
padding-bottom: 30px;
font: 14px/1.4 "Helvetica Neue", "Lucida Grande", "Arial";
font-size: 14px;
line-height: 1.5;
-webkit-font-smoothing: antialiased;
background: url(images/bg.jpg) 50% 0 no-repeat;
color: #8b8b8b; }
* {
outline: none; }
em {
color: white; }
a img {
border: none !important; }
a {
font-weight: bold;
text-decoration: none;
color: white;
-webkit-transition-property: opacity, -webkit-transform, color, background-color, padding, -webkit-box-shadow;
-webkit-transition-duration: 0.15s;
-webkit-transition-timing-function: ease-out; }
a:hover {
opacity: 0.8; }
h1, h2, h3, h4 {
margin: 45px 0 0 0;
color: white;
text-shadow: 1px 2px 2px rgba(0,0,0,0.6); }
h3 {
font-size: 18px; }
h4 {
margin-left: 10px;
font-size: 14px;
}
pre {
margin: 20px 10px;
padding: 25px 20px;
background: rgba(0,0,0,0.5);
border: 1px solid #323232;
-webkit-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-moz-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-webkit-border-radius: 5px;
-moz-border-radius: 5px; }
code {
font-family: "Helvetica Neue", "Lucida Grande", "Arial"; }
ul {
margin: 15px 0;
padding: 0 0 0 35px; }
ul li {
margin: 0;
padding: 2px 0;
list-style: square; }
ul li ul {
margin: 0;
padding-left: 12px;
}
.man-name, #Express { display:none; }
.sect {
margin-left: 40px; }
img {
margin-left: 20px;
margin-bottom: 15px;
}
#logo {
display: block;
margin-left: 30%;
margin-bottom: 30px;
width: 194px;
height: 51px;
background: url(images/logo.png) 0 0 no-repeat;
text-indent: -99999px; }
#logo:hover {
opacity: 0.7; }
#logo:active {
opacity: 0.3; }
#ribbon {
position: fixed;
top: 0;
right: 0;
z-index: 2; }
#wrapper {
width: 100%;
min-height: 800px;
background: url(images/top.png) 0 0 repeat-x; }
#container {
margin: 0 auto;
padding-top: 80px;
width: 550px; }
#toc {
position: fixed;
top: 0;
left: 0;
margin: 0 0 0 15px;
padding: 15px;
height: 100%;
background: rgba(0,0,0,0.2);
overflow: auto;
border-right: 1px solid rgba(255,255,255,0.05);
}
#toc li {
padding: 0;
list-style: none;
}
#toc li a {
font-size: 11px;
}
#menu {
margin-left: 65px;
padding: 0;
padding-bottom: 30px; }
#menu li {
display: inline;
list-style: none; }
#menu li a {
display: block;
float: left;
margin: 0 2px;
padding: 3px 15px;
background: rgba(0,0,0,0.2);
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
-webkit-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-moz-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-webkit-transition-property: opacity, -webkit-transform, color, background-color, -webkit-box-shadow;
-webkit-transition-duration: 0.15s;
-webkit-transition-timing-function: ease-out; }
#menu li a:hover,
#menu li a.active {
background: rgba(0,0,0,0.5); }
#menu li a:active {
background: rgba(0,0,0,0.1);
-webkit-box-shadow: 1px 1px 1px rgba(0,0,0,0.4);
-moz-box-shadow: 1px 1px 1px rgba(0,0,0,0.4); }
</style>
<script>
$(function(){
$('.section').hide();
$('.toggle, a.section-title').toggle(function(){
$(this).siblings('ul').fadeIn(300);
return false;
}, function(){
$(this).siblings('ul').fadeOut(300);
return false;
});
});
</script>
</head>
<body>
<a href='http://github.com/visionmedia/express'>
<img alt='Fork me on GitHub' id='ribbon' src='http://s3.amazonaws.com/github/ribbons/forkme_right_white_ffffff.png' />
</a>
<div id="wrapper">
<div id="container">
<a href='http://github.com/visionmedia/express' id='logo'>Express</a>
<p id="tagline">
High performance, high class web development for
<a href="http://nodejs.org">Node.js</a>
</p>
<ul id="menu">
<li><a href="index.html">Home</a></li>
<li><a href="guide.html">Guide</a></li>
<li><a href="contrib.html">Contributing</a></li>
<li><a href="applications.html">Applications</a></li>
</ul>
<div class='mp'>
<h2 id="Express">Express</h2>
<p class="man-name">
<code>contrib</code>
</p>
<h3 id="Development-Dependencies">Development Dependencies</h3>
<p>Express development dependencies are stored within the <em>./support</em> directory. To
update them execute:</p>
<pre><code>$ git submodule update --init
</code></pre>
<h3 id="Running-Tests">Running Tests</h3>
<p>Express uses the <a href="http://github.com/visionmedia/expresso">Expresso</a> TDD
framework to write and run elegant test suites extremely fast. To run all test suites
simply execute:</p>
<pre><code>$ make test
</code></pre>
<p>To target specific suites we may specify the files via:</p>
<pre><code>$ make test TESTS=test/view.test.js
</code></pre>
<p>To check test coverage run:</p>
<pre><code>$ make test-cov
</code></pre>
<h3 id="Contributions">Contributions</h3>
<p>To accept a contribution, you should follow these guidelines:</p>
<ul>
<li>All tests <em>must</em> pass</li>
<li>Your alterations or additions <em>must</em> include tests</li>
<li>Your commit(s) should be <em>focused</em>, do not commit once for several changes</li>
<li>Do <em>not</em> alter release information such as the <em>version</em>, or <em>History.md</em></li>
<li>Indents are <em>2</em> spaces.</li>
</ul>
<h3 id="Documentation">Documentation</h3>
<p>To contribute documentation edit the markdown files in <em>./docs</em>, however
do <em>not</em> run <em>make docs</em>, as they will be re-built and published with each release.</p>
</div>
</div>
</div>
</body>
</html>
-38
Ver Arquivo
@@ -1,38 +0,0 @@
### Development Dependencies
Express development dependencies are stored within the _./support_ directory. To
update them execute:
$ git submodule update --init
### Running Tests
Express uses the [Expresso](http://github.com/visionmedia/expresso) TDD
framework to write and run elegant test suites extremely fast. To run all test suites
simply execute:
$ make test
To target specific suites we may specify the files via:
$ make test TESTS=test/view.test.js
To check test coverage run:
$ make test-cov
### Contributions
To accept a contribution, you should follow these guidelines:
* All tests _must_ pass
* Your alterations or additions _must_ include tests
* Your commit(s) should be _focused_, do not commit once for several changes
* Do _not_ alter release information such as the _version_, or _History.md_
* Indents are _2_ spaces.
### Documentation
To contribute documentation edit the markdown files in _./docs_, however
do _not_ run _make docs_, as they will be re-built and published with each release.
-30
Ver Arquivo
@@ -1,30 +0,0 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "EXECUTABLE" "" "October 2010" "" ""
.
.SH "NAME"
\fBexecutable\fR
.
.SH "Synopsis"
.
.nf
express [\-h|\-\-help] [\-v|\-\-version] [\-c|\-css ENGINE] [PATH]
.
.fi
.
.SH "Description"
The \fBexpress\fR executable generates apps at the given \fBPATH\fR or the current working directory\. Although Express is not bound to a specific application structure, this executable creates a maintainable base app\.
.
.SH "Options"
.
.nf
\-s, \-\-sessions Add session support
\-c, \-\-css ENGINE Add css ENGINE support (less|sass)\. Defaults to plain css
\-v, \-\-version Output framework version
\-h, \-\-help Display help information
.
.fi
-221
Ver Arquivo
@@ -1,221 +0,0 @@
<html>
<head>
<title>Express - node web framework</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<style>
#tagline {
margin-left: 75px;
margin-bottom: 30px;
color: rgba(255,255,255,0.7); }
html {
background: #1c1c1c url(images/bg.tile.jpg); }
body {
margin: 0;
padding-bottom: 30px;
font: 14px/1.4 "Helvetica Neue", "Lucida Grande", "Arial";
font-size: 14px;
line-height: 1.5;
-webkit-font-smoothing: antialiased;
background: url(images/bg.jpg) 50% 0 no-repeat;
color: #8b8b8b; }
* {
outline: none; }
em {
color: white; }
a img {
border: none !important; }
a {
font-weight: bold;
text-decoration: none;
color: white;
-webkit-transition-property: opacity, -webkit-transform, color, background-color, padding, -webkit-box-shadow;
-webkit-transition-duration: 0.15s;
-webkit-transition-timing-function: ease-out; }
a:hover {
opacity: 0.8; }
h1, h2, h3, h4 {
margin: 45px 0 0 0;
color: white;
text-shadow: 1px 2px 2px rgba(0,0,0,0.6); }
h3 {
font-size: 18px; }
h4 {
margin-left: 10px;
font-size: 14px;
}
pre {
margin: 20px 10px;
padding: 25px 20px;
background: rgba(0,0,0,0.5);
border: 1px solid #323232;
-webkit-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-moz-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-webkit-border-radius: 5px;
-moz-border-radius: 5px; }
code {
font-family: "Helvetica Neue", "Lucida Grande", "Arial"; }
ul {
margin: 15px 0;
padding: 0 0 0 35px; }
ul li {
margin: 0;
padding: 2px 0;
list-style: square; }
ul li ul {
margin: 0;
padding-left: 12px;
}
.man-name, #Express { display:none; }
.sect {
margin-left: 40px; }
img {
margin-left: 20px;
margin-bottom: 15px;
}
#logo {
display: block;
margin-left: 30%;
margin-bottom: 30px;
width: 194px;
height: 51px;
background: url(images/logo.png) 0 0 no-repeat;
text-indent: -99999px; }
#logo:hover {
opacity: 0.7; }
#logo:active {
opacity: 0.3; }
#ribbon {
position: fixed;
top: 0;
right: 0;
z-index: 2; }
#wrapper {
width: 100%;
min-height: 800px;
background: url(images/top.png) 0 0 repeat-x; }
#container {
margin: 0 auto;
padding-top: 80px;
width: 550px; }
#toc {
position: fixed;
top: 0;
left: 0;
margin: 0 0 0 15px;
padding: 15px;
height: 100%;
background: rgba(0,0,0,0.2);
overflow: auto;
border-right: 1px solid rgba(255,255,255,0.05);
}
#toc li {
padding: 0;
list-style: none;
}
#toc li a {
font-size: 11px;
}
#menu {
margin-left: 65px;
padding: 0;
padding-bottom: 30px; }
#menu li {
display: inline;
list-style: none; }
#menu li a {
display: block;
float: left;
margin: 0 2px;
padding: 3px 15px;
background: rgba(0,0,0,0.2);
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
-webkit-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-moz-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-webkit-transition-property: opacity, -webkit-transform, color, background-color, -webkit-box-shadow;
-webkit-transition-duration: 0.15s;
-webkit-transition-timing-function: ease-out; }
#menu li a:hover,
#menu li a.active {
background: rgba(0,0,0,0.5); }
#menu li a:active {
background: rgba(0,0,0,0.1);
-webkit-box-shadow: 1px 1px 1px rgba(0,0,0,0.4);
-moz-box-shadow: 1px 1px 1px rgba(0,0,0,0.4); }
</style>
<script>
$(function(){
$('.section').hide();
$('.toggle, a.section-title').toggle(function(){
$(this).siblings('ul').fadeIn(300);
return false;
}, function(){
$(this).siblings('ul').fadeOut(300);
return false;
});
});
</script>
</head>
<body>
<a href='http://github.com/visionmedia/express'>
<img alt='Fork me on GitHub' id='ribbon' src='http://s3.amazonaws.com/github/ribbons/forkme_right_white_ffffff.png' />
</a>
<div id="wrapper">
<div id="container">
<a href='http://github.com/visionmedia/express' id='logo'>Express</a>
<p id="tagline">
High performance, high class web development for
<a href="http://nodejs.org">Node.js</a>
</p>
<ul id="menu">
<li><a href="index.html">Home</a></li>
<li><a href="guide.html">Guide</a></li>
<li><a href="contrib.html">Contributing</a></li>
<li><a href="applications.html">Applications</a></li>
</ul>
<div class='mp'>
<h2 id="Express">Express</h2>
<p class="man-name">
<code>executable</code>
</p>
<h2 id="Synopsis">Synopsis</h2>
<pre><code>express [-h|--help] [-v|--version] [-c|-css ENGINE] [PATH]
</code></pre>
<h2 id="Description">Description</h2>
<p>The <code>express</code> executable generates apps at the given <strong>PATH</strong> or the
current working directory. Although Express is not bound to a specific
application structure, this executable creates a maintainable base app.</p>
<h2 id="Options">Options</h2>
<pre><code>-s, --sessions Add session support
-c, --css ENGINE Add css ENGINE support (less|sass). Defaults to plain css
-v, --version Output framework version
-h, --help Display help information
</code></pre>
</div>
</div>
</div>
</body>
</html>
-18
Ver Arquivo
@@ -1,18 +0,0 @@
## Synopsis
express [-h|--help] [-v|--version] [-c|-css ENGINE] [PATH]
## Description
The `express` executable generates apps at the given **PATH** or the
current working directory. Although Express is not bound to a specific
application structure, this executable creates a maintainable base app.
## Options
-s, --sessions Add session support
-c, --css ENGINE Add css ENGINE support (less|sass). Defaults to plain css
-v, --version Output framework version
-h, --help Display help information
+506
Ver Arquivo
@@ -0,0 +1,506 @@
# app
Application prototype.
# app.use()
Proxy `connect#use()` to apply settings to
mounted applications.
# app.engine()
Register the given template engine callback `fn`
as `ext`.
By default will `require()` the engine based on the
file extension. For example if you try to render
a "foo.jade" file Express will invoke the following internally:
app.engine('jade', require('jade').__express);
For engines that do not provide `.__express` out of the box,
or if you wish to "map" a different extension to the template engine
you may use this method. For example mapping the EJS template engine to
".html" files
app.engine('html', require('ejs').renderFile);
In this case EJS provides a `.renderFile()` method with
the same signature that Express expects: `(path, options, callback)`,
though note that it aliases this method as `ejs.__express` internally
so if you're using ".ejs" extensions you dont need to do anything.
Some template engines do not follow this convention, the
[Consolidate.js](https://github.com/visionmedia/consolidate.js)
library was created to map all of node's popular template
engines to follow this convention, thus allowing them to
work seemlessly within Express.
# app.param()
Map the given param placeholder `name`(s) to the given callback(s).
Parameter mapping is used to provide pre-conditions to routes
which use normalized placeholders. For example a _:user_id_ parameter
could automatically load a user's information from the database without
any additional code,
The callback uses the samesignature as middleware, the only differencing
being that the value of the placeholder is passed, in this case the _id_
of the user. Once the `next()` function is invoked, just like middleware
it will continue on to execute the route, or subsequent parameter functions.
app.param('user_id', function(req, res, next, id){
User.find(id, function(err, user){
if (err) {
next(err);
} else if (user) {
req.user = user;
next();
} else {
next(new Error('failed to load user'));
}
});
});
# app.set()
Assign `setting` to `val`, or return `setting`'s value.
app.set('foo', 'bar');
app.get('foo');
// => "bar"
Mounted servers inherit their parent server's settings.
# app.enabled()
Check if `setting` is enabled (truthy).
app.enabled('foo')
// => false
app.enable('foo')
app.enabled('foo')
// => true
# app.disabled()
Check if `setting` is disabled.
app.disabled('foo')
// => true
app.enable('foo')
app.disabled('foo')
// => false
# app.enable()
Enable `setting`.
# app.disable()
Disable `setting`.
# app.configure()
Configure callback for zero or more envs,
when no `env` is specified that callback will
be invoked for all environments. Any combination
can be used multiple times, in any order desired.
## Examples
app.configure(function(){
// executed for all envs
});
app.configure('stage', function(){
// executed staging env
});
app.configure('stage', 'production', function(){
// executed for stage and production
});
## Note
These callbacks are invoked immediately, and
are effectively sugar for the following.
var env = process.env.NODE_ENV || 'development';
switch (env) {
case 'development':
...
break;
case 'stage':
...
break;
case 'production':
...
break;
}
# app.all()
Special-cased "all" method, applying the given route `path`,
middleware, and callback to _every_ HTTP method.
# app.render()
Render the given view `name` name with `options`
and a callback accepting an error and the
rendered template string.
## Example
app.render('email', { name: 'Tobi' }, function(err, html){
// ...
})
# app.listen()
Listen for connections.
A node `http.Server` is returned, with this
application (which is a `Function`) as its
callback. If you wish to create both an HTTP
and HTTPS server you may do so with the "http"
and "https" modules as shown here.
var http = require('http')
, https = require('https')
, express = require('express')
, app = express();
http.createServer(app).listen(80);
http.createServer({ ... }, app).listen(443);
# req
Request prototype.
# req.get
Return request header.
The `Referrer` header field is special-cased,
both `Referrer` and `Referer` are interchangeable.
## Examples
req.get('Content-Type');
// => "text/plain"
req.get('content-type');
// => "text/plain"
req.get('Something');
// => undefined
Aliased as `req.header()`.
# req.accepts()
Check if the given `type(s)` is acceptable, returning
the best match when true, otherwise `undefined`, in which
case you should respond with 406 "Not Acceptable".
The `type` value may be a single mime type string
such as "application/json", the extension name
such as "json", a comma-delimted list such as "json, html, text/plain",
or an array `["json", "html", "text/plain"]`. When a list
or array is given the _best_ match, if any is returned.
## Examples
// Accept: text/html
req.accepts('html');
// => "html"
// Accept: text/*, application/json
req.accepts('html');
// => "html"
req.accepts('text/html');
// => "text/html"
req.accepts('json, text');
// => "json"
req.accepts('application/json');
// => "application/json"
// Accept: text/*, application/json
req.accepts('image/png');
req.accepts('png');
// => undefined
// Accept: text/*;q=.5, application/json
req.accepts(['html', 'json']);
req.accepts('html, json');
// => "json"
# req.acceptsCharset()
Check if the given `charset` is acceptable,
otherwise you should respond with 406 "Not Acceptable".
# req.acceptsLanguage()
Check if the given `lang` is acceptable,
otherwise you should respond with 406 "Not Acceptable".
# req.param()
Return the value of param `name` when present or `defaultValue`.
- Checks route placeholders, ex: _/user/:id_
- Checks body params, ex: id=12, {"id":12}
- Checks query string params, ex: ?id=12
To utilize request bodies, `req.body`
should be an object. This can be done by using
the `connect.bodyParser()` middleware.
# req.is()
Check if the incoming request contains the "Content-Type"
header field, and it contains the give mime `type`.
## Examples
// With Content-Type: text/html; charset=utf-8
req.is('html');
req.is('text/html');
req.is('text/*');
// => true
// When Content-Type is application/json
req.is('json');
req.is('application/json');
req.is('application/*');
// => true
req.is('html');
// => false
# res
Response prototype.
# res.status()
Set status `code`.
# res.send()
Send a response.
## Examples
res.send(new Buffer('wahoo'));
res.send({ some: 'json' });
res.send('<p>some html</p>');
res.send(404, 'Sorry, cant find that');
res.send(404);
# res.json()
Send JSON response.
## Examples
res.json(null);
res.json({ user: 'tj' });
res.json(500, 'oh noes!');
res.json(404, 'I dont have that');
# res.sendfile()
Transfer the file at the given `path`.
Automatically sets the _Content-Type_ response header field.
The callback `fn(err)` is invoked when the transfer is complete
or when an error occurs. Be sure to check `res.sentHeader`
if you wish to attempt responding, as the header and some data
may have already been transferred.
## Options
- `maxAge` defaulting to 0
- `root` root directory for relative filenames
## Examples
The following example illustrates how `res.sendfile()` may
be used as an alternative for the `static()` middleware for
dynamic situations. The code backing `res.sendfile()` is actually
the same code, so HTTP cache support etc is identical.
app.get('/user/:uid/photos/:file', function(req, res){
var uid = req.params.uid
, file = req.params.file;
req.user.mayViewFilesFrom(uid, function(yes){
if (yes) {
res.sendfile('/uploads/' + uid + '/' + file);
} else {
res.send(403, 'Sorry! you cant see that.');
}
});
});
# res.download()
Transfer the file at the given `path` as an attachment.
Optionally providing an alternate attachment `filename`,
and optional callback `fn(err)`. The callback is invoked
when the data transfer is complete, or when an error has
ocurred. Be sure to check `res.headerSent` if you plan to respond.
This method uses `res.sendfile()`.
# res.format()
Respond to the Acceptable formats using an `obj`
of mime-type callbacks.
This method uses `req.accepted`, an array of
acceptable types ordered by their quality values.
When "Accept" is not present the _first_ callback
is invoked, otherwise the first match is used. When
no match is performed the server responds with
406 "Not Acceptable".
Content-Type is set for you, however if you choose
you may alter this within the callback using `res.type()`
or `res.set('Content-Type', ...)`.
res.format({
'text/plain': function(){
res.send('hey');
},
'text/html': function(){
res.send('<p>hey</p>');
},
'appliation/json': function(){
res.send({ message: 'hey' });
}
});
In addition to canonicalized MIME types you may
also use extnames mapped to these types:
res.format({
text: function(){
res.send('hey');
},
html: function(){
res.send('<p>hey</p>');
},
json: function(){
res.send({ message: 'hey' });
}
});
By default Express passes an `Error`
with a `.status` of 406 to `next(err)`
if a match is not made, however you may
provide an optional callback `fn` to
be invoked instead.
# res.attachment()
Set _Content-Disposition_ header to _attachment_ with optional `filename`.
# res.set
Set header `field` to `val`, or pass
an object of header fields.
## Examples
res.set('Accept', 'application/json');
res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });
Aliased as `res.header()`.
# res.get()
Get value for header `field`.
# res.clearCookie()
Clear cookie `name`.
# res.cookie()
Set cookie `name` to `val`, with the given `options`.
## Options
- `maxAge` max-age in milliseconds, converted to `expires`
- `signed` sign the cookie
- `path` defaults to "/"
## Examples
// "Remember Me" for 15 minutes
res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true });
// save as above
res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true })
# res.redirect()
Redirect to the given `url` with optional response `status`
defaulting to 302.
The given `url` can also be the name of a mapped url, for
example by default express supports "back" which redirects
to the _Referrer_ or _Referer_ headers or "/".
## Examples
res.redirect('/foo/bar');
res.redirect('http://example.com');
res.redirect(301, 'http://example.com');
res.redirect('../login'); // /blog/post/1 -> /blog/login
## Mounting
When an application is mounted, and `res.redirect()`
is given a path that does _not_ lead with "/". For
example suppose a "blog" app is mounted at "/blog",
the following redirect would result in "/blog/login":
res.redirect('login');
While the leading slash would result in a redirect to "/login":
res.redirect('/login');
# res.render()
Render `view` with the given `options` and optional callback `fn`.
When a callback function is given a response will _not_ be made
automatically, otherwise a response of _200_ and _text/html_ is given.
## Options
- `status` Response status code (`res.statusCode`)
- `charset` Set the charset (`res.charset`)
## Reserved locals
- `cache` boolean hinting to the engine it should cache
- `filename` filename of the view being rendered
-1871
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
-1419
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
-1041
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 108 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 159 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 145 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 145 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 154 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 181 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 200 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 236 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 112 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 88 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 127 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 108 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 7.0 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 7.2 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 143 B

-106
Ver Arquivo
@@ -1,106 +0,0 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "INDEX" "" "October 2010" "" ""
.
.SH "NAME"
\fBindex\fR
.
.IP "" 4
.
.nf
var app = express\.createServer();
app\.get(\'/\', function(req, res){
res\.send(\'Hello World\');
});
app\.listen(3000);
.
.fi
.
.IP "" 0
.
.SH "Features"
.
.IP "\(bu" 4
Robust routing
.
.IP "\(bu" 4
Redirection helpers
.
.IP "\(bu" 4
Dynamic view helpers
.
.IP "\(bu" 4
Application level view options
.
.IP "\(bu" 4
Content negotiation
.
.IP "\(bu" 4
Focus on high performance
.
.IP "\(bu" 4
View rendering and partials support
.
.IP "\(bu" 4
Environment based configuration
.
.IP "\(bu" 4
Session based flash notifications
.
.IP "\(bu" 4
Built on Connect \fIhttp://github\.com/senchalabs/connect\fR
.
.IP "\(bu" 4
Executable \fIexecutable\.html\fR for generating applications quickly
.
.IP "\(bu" 4
High test coverage
.
.IP "" 0
.
.SH "Contributors"
The following are the major contributors of Express (in no specific order)\.
.
.IP "\(bu" 4
TJ Holowaychuk (visionmedia \fIhttp://github\.com/visionmedia\fR)
.
.IP "\(bu" 4
Ciaran Jessup (ciaranj \fIhttp://github\.com/ciaranj\fR)
.
.IP "\(bu" 4
Aaron Heckmann (aheckmann \fIhttp://github\.com/aheckmann\fR)
.
.IP "\(bu" 4
Guillermo Rauch (guille \fIhttp://github\.com/guille\fR)
.
.IP "" 0
.
.SH "More Information"
.
.IP "\(bu" 4
Google Group \fIhttp://groups\.google\.com/group/express\-js\fR for discussion
.
.IP "\(bu" 4
Follow tjholowaychuk \fIhttp://twitter\.com/tjholowaychuk\fR on twitter for updates
.
.IP "\(bu" 4
Annotated source documentation \fIapi\.html\fR
.
.IP "\(bu" 4
View the Connect \fIhttp://github\.com/senchalabs/connect\fR repo for middleware usage
.
.IP "\(bu" 4
View the Connect Wiki \fIhttp://wiki\.github\.com/senchalabs/connect/\fR for contrib middleware
.
.IP "\(bu" 4
View the examples \fIhttp://github\.com/visionmedia/express/tree/master/examples/\fR
.
.IP "\(bu" 4
View the source \fIhttp://github\.com/visionmedia/express\fR
.
.IP "" 0
-254
Ver Arquivo
@@ -1,254 +0,0 @@
<html>
<head>
<title>Express - node web framework</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<style>
#tagline {
margin-left: 75px;
margin-bottom: 30px;
color: rgba(255,255,255,0.7); }
html {
background: #1c1c1c url(images/bg.tile.jpg); }
body {
margin: 0;
padding-bottom: 30px;
font: 14px/1.4 "Helvetica Neue", "Lucida Grande", "Arial";
font-size: 14px;
line-height: 1.5;
-webkit-font-smoothing: antialiased;
background: url(images/bg.jpg) 50% 0 no-repeat;
color: #8b8b8b; }
* {
outline: none; }
em {
color: white; }
a img {
border: none !important; }
a {
font-weight: bold;
text-decoration: none;
color: white;
-webkit-transition-property: opacity, -webkit-transform, color, background-color, padding, -webkit-box-shadow;
-webkit-transition-duration: 0.15s;
-webkit-transition-timing-function: ease-out; }
a:hover {
opacity: 0.8; }
h1, h2, h3, h4 {
margin: 45px 0 0 0;
color: white;
text-shadow: 1px 2px 2px rgba(0,0,0,0.6); }
h3 {
font-size: 18px; }
h4 {
margin-left: 10px;
font-size: 14px;
}
pre {
margin: 20px 10px;
padding: 25px 20px;
background: rgba(0,0,0,0.5);
border: 1px solid #323232;
-webkit-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-moz-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-webkit-border-radius: 5px;
-moz-border-radius: 5px; }
code {
font-family: "Helvetica Neue", "Lucida Grande", "Arial"; }
ul {
margin: 15px 0;
padding: 0 0 0 35px; }
ul li {
margin: 0;
padding: 2px 0;
list-style: square; }
ul li ul {
margin: 0;
padding-left: 12px;
}
.man-name, #Express { display:none; }
.sect {
margin-left: 40px; }
img {
margin-left: 20px;
margin-bottom: 15px;
}
#logo {
display: block;
margin-left: 30%;
margin-bottom: 30px;
width: 194px;
height: 51px;
background: url(images/logo.png) 0 0 no-repeat;
text-indent: -99999px; }
#logo:hover {
opacity: 0.7; }
#logo:active {
opacity: 0.3; }
#ribbon {
position: fixed;
top: 0;
right: 0;
z-index: 2; }
#wrapper {
width: 100%;
min-height: 800px;
background: url(images/top.png) 0 0 repeat-x; }
#container {
margin: 0 auto;
padding-top: 80px;
width: 550px; }
#toc {
position: fixed;
top: 0;
left: 0;
margin: 0 0 0 15px;
padding: 15px;
height: 100%;
background: rgba(0,0,0,0.2);
overflow: auto;
border-right: 1px solid rgba(255,255,255,0.05);
}
#toc li {
padding: 0;
list-style: none;
}
#toc li a {
font-size: 11px;
}
#menu {
margin-left: 65px;
padding: 0;
padding-bottom: 30px; }
#menu li {
display: inline;
list-style: none; }
#menu li a {
display: block;
float: left;
margin: 0 2px;
padding: 3px 15px;
background: rgba(0,0,0,0.2);
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
-webkit-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-moz-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-webkit-transition-property: opacity, -webkit-transform, color, background-color, -webkit-box-shadow;
-webkit-transition-duration: 0.15s;
-webkit-transition-timing-function: ease-out; }
#menu li a:hover,
#menu li a.active {
background: rgba(0,0,0,0.5); }
#menu li a:active {
background: rgba(0,0,0,0.1);
-webkit-box-shadow: 1px 1px 1px rgba(0,0,0,0.4);
-moz-box-shadow: 1px 1px 1px rgba(0,0,0,0.4); }
</style>
<script>
$(function(){
$('.section').hide();
$('.toggle, a.section-title').toggle(function(){
$(this).siblings('ul').fadeIn(300);
return false;
}, function(){
$(this).siblings('ul').fadeOut(300);
return false;
});
});
</script>
</head>
<body>
<a href='http://github.com/visionmedia/express'>
<img alt='Fork me on GitHub' id='ribbon' src='http://s3.amazonaws.com/github/ribbons/forkme_right_white_ffffff.png' />
</a>
<div id="wrapper">
<div id="container">
<a href='http://github.com/visionmedia/express' id='logo'>Express</a>
<p id="tagline">
High performance, high class web development for
<a href="http://nodejs.org">Node.js</a>
</p>
<ul id="menu">
<li><a href="index.html">Home</a></li>
<li><a href="guide.html">Guide</a></li>
<li><a href="contrib.html">Contributing</a></li>
<li><a href="applications.html">Applications</a></li>
</ul>
<div class='mp'>
<h2 id="Express">Express</h2>
<p class="man-name">
<code>index</code>
</p>
<pre><code>var app = express.createServer();
app.get('/', function(req, res){
res.send('Hello World');
});
app.listen(3000);
</code></pre>
<h2 id="Features">Features</h2>
<ul>
<li>Robust routing</li>
<li>Redirection helpers</li>
<li>Dynamic view helpers</li>
<li>Application level view options</li>
<li>Content negotiation</li>
<li>Focus on high performance</li>
<li>View rendering and partials support</li>
<li>Environment based configuration</li>
<li>Session based flash notifications</li>
<li>Built on <a href="http://github.com/senchalabs/connect">Connect</a></li>
<li><a href="executable.html">Executable</a> for generating applications quickly</li>
<li>High test coverage</li>
</ul>
<h2 id="Contributors">Contributors</h2>
<p>The following are the major contributors of Express (in no specific order).</p>
<ul>
<li>TJ Holowaychuk (<a href="http://github.com/visionmedia">visionmedia</a>)</li>
<li>Ciaran Jessup (<a href="http://github.com/ciaranj">ciaranj</a>)</li>
<li>Aaron Heckmann (<a href="http://github.com/aheckmann">aheckmann</a>)</li>
<li>Guillermo Rauch (<a href="http://github.com/guille">guille</a>)</li>
</ul>
<h2 id="More-Information">More Information</h2>
<ul>
<li><a href="http://groups.google.com/group/express-js">Google Group</a> for discussion</li>
<li>Follow <a href="http://twitter.com/tjholowaychuk">tjholowaychuk</a> on twitter for updates</li>
<li>Annotated source <a href="api.html">documentation</a></li>
<li>View the <a href="http://github.com/senchalabs/connect">Connect</a> repo for middleware usage</li>
<li>View the <a href="http://wiki.github.com/senchalabs/connect/">Connect Wiki</a> for contrib middleware</li>
<li>View the <a href="http://github.com/visionmedia/express/tree/master/examples/">examples</a></li>
<li>View the <a href="http://github.com/visionmedia/express">source</a></li>
</ul>
</div>
</div>
</div>
</body>
</html>
-42
Ver Arquivo
@@ -1,42 +0,0 @@
var app = express.createServer();
app.get('/', function(req, res){
res.send('Hello World');
});
app.listen(3000);
## Features
* Robust routing
* Redirection helpers
* Dynamic view helpers
* Application level view options
* Content negotiation
* Focus on high performance
* View rendering and partials support
* Environment based configuration
* Session based flash notifications
* Built on [Connect](http://github.com/senchalabs/connect)
* [Executable](executable.html) for generating applications quickly
* High test coverage
## Contributors
The following are the major contributors of Express (in no specific order).
* TJ Holowaychuk ([visionmedia](http://github.com/visionmedia))
* Ciaran Jessup ([ciaranj](http://github.com/ciaranj))
* Aaron Heckmann ([aheckmann](http://github.com/aheckmann))
* Guillermo Rauch ([guille](http://github.com/guille))
## More Information
* [Google Group](http://groups.google.com/group/express-js) for discussion
* Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates
* Annotated source [documentation](api.html)
* View the [Connect](http://github.com/senchalabs/connect) repo for middleware usage
* View the [Connect Wiki](http://wiki.github.com/senchalabs/connect/) for contrib middleware
* View the [examples](http://github.com/visionmedia/express/tree/master/examples/)
* View the [source](http://github.com/visionmedia/express)
-4
Ver Arquivo
@@ -1,4 +0,0 @@
</div>
</div>
</body>
</html>
-192
Ver Arquivo
@@ -1,192 +0,0 @@
<html>
<head>
<title>Express - node web framework</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<style>
#tagline {
margin-left: 75px;
margin-bottom: 30px;
color: rgba(255,255,255,0.7); }
html {
background: #1c1c1c url(images/bg.tile.jpg); }
body {
margin: 0;
padding-bottom: 30px;
font: 14px/1.4 "Helvetica Neue", "Lucida Grande", "Arial";
font-size: 14px;
line-height: 1.5;
-webkit-font-smoothing: antialiased;
background: url(images/bg.jpg) 50% 0 no-repeat;
color: #8b8b8b; }
* {
outline: none; }
em {
color: white; }
a img {
border: none !important; }
a {
font-weight: bold;
text-decoration: none;
color: white;
-webkit-transition-property: opacity, -webkit-transform, color, background-color, padding, -webkit-box-shadow;
-webkit-transition-duration: 0.15s;
-webkit-transition-timing-function: ease-out; }
a:hover {
opacity: 0.8; }
h1, h2, h3, h4 {
margin: 45px 0 0 0;
color: white;
text-shadow: 1px 2px 2px rgba(0,0,0,0.6); }
h3 {
font-size: 18px; }
h4 {
margin-left: 10px;
font-size: 14px;
}
pre {
margin: 20px 10px;
padding: 25px 20px;
background: rgba(0,0,0,0.5);
border: 1px solid #323232;
-webkit-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-moz-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-webkit-border-radius: 5px;
-moz-border-radius: 5px; }
code {
font-family: "Helvetica Neue", "Lucida Grande", "Arial"; }
ul {
margin: 15px 0;
padding: 0 0 0 35px; }
ul li {
margin: 0;
padding: 2px 0;
list-style: square; }
ul li ul {
margin: 0;
padding-left: 12px;
}
.man-name, #Express { display:none; }
.sect {
margin-left: 40px; }
img {
margin-left: 20px;
margin-bottom: 15px;
}
#logo {
display: block;
margin-left: 30%;
margin-bottom: 30px;
width: 194px;
height: 51px;
background: url(images/logo.png) 0 0 no-repeat;
text-indent: -99999px; }
#logo:hover {
opacity: 0.7; }
#logo:active {
opacity: 0.3; }
#ribbon {
position: fixed;
top: 0;
right: 0;
z-index: 2; }
#wrapper {
width: 100%;
min-height: 800px;
background: url(images/top.png) 0 0 repeat-x; }
#container {
margin: 0 auto;
padding-top: 80px;
width: 550px; }
#toc {
position: fixed;
top: 0;
left: 0;
margin: 0 0 0 15px;
padding: 15px;
height: 100%;
background: rgba(0,0,0,0.2);
overflow: auto;
border-right: 1px solid rgba(255,255,255,0.05);
}
#toc li {
padding: 0;
list-style: none;
}
#toc li a {
font-size: 11px;
}
#menu {
margin-left: 65px;
padding: 0;
padding-bottom: 30px; }
#menu li {
display: inline;
list-style: none; }
#menu li a {
display: block;
float: left;
margin: 0 2px;
padding: 3px 15px;
background: rgba(0,0,0,0.2);
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
-webkit-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-moz-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-webkit-transition-property: opacity, -webkit-transform, color, background-color, -webkit-box-shadow;
-webkit-transition-duration: 0.15s;
-webkit-transition-timing-function: ease-out; }
#menu li a:hover,
#menu li a.active {
background: rgba(0,0,0,0.5); }
#menu li a:active {
background: rgba(0,0,0,0.1);
-webkit-box-shadow: 1px 1px 1px rgba(0,0,0,0.4);
-moz-box-shadow: 1px 1px 1px rgba(0,0,0,0.4); }
</style>
<script>
$(function(){
$('.section').hide();
$('.toggle, a.section-title').toggle(function(){
$(this).siblings('ul').fadeIn(300);
return false;
}, function(){
$(this).siblings('ul').fadeOut(300);
return false;
});
});
</script>
</head>
<body>
<a href='http://github.com/visionmedia/express'>
<img alt='Fork me on GitHub' id='ribbon' src='http://s3.amazonaws.com/github/ribbons/forkme_right_white_ffffff.png' />
</a>
<div id="wrapper">
<div id="container">
<a href='http://github.com/visionmedia/express' id='logo'>Express</a>
<p id="tagline">
High performance, high class web development for
<a href="http://nodejs.org">Node.js</a>
</p>
<ul id="menu">
<li><a href="index.html">Home</a></li>
<li><a href="guide.html">Guide</a></li>
<li><a href="contrib.html">Contributing</a></li>
<li><a href="applications.html">Applications</a></li>
</ul>
-347
Ver Arquivo
@@ -1,347 +0,0 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "MIGRATE" "" "October 2010" "" ""
.
.SH "NAME"
\fBmigrate\fR
.
.SS "Built On Connect"
Express 1\.x is written to run on\-top of the Connect \fIhttp://extjs\.github\.com/Connect\fR middlware framework, thus the \fIPlugin\fR has been replaced by Connect\'s middleware\. By abstracting our middleware to Connect we allow additional community frameworks to develop robust, high\-level frameworks using the same technologies as Express\.
.
.SS "Creating Applications"
Previously due to legacy code implemented in the early days of node, Express unfortunately had some globals\. The DSL would previously be accessed as shown below:
.
.IP "" 4
.
.nf
require(\'express\');
configure(function(){
// app configuration
});
get(\'/\', function(){
return \'hello world\';
});
.
.fi
.
.IP "" 0
.
.P
Now we utilize the CommonJS module system appropriately, and introduce \fIexpress\.createServer()\fR which accepts the same arguments as \fIhttp\.createServer()\fR:
.
.IP "" 4
.
.nf
var express = require(\'express\'),
app = express\.createServer();
app\.configure(function(){
// app configuration
});
app\.get(\'/\', function(req, res){
res\.send(\'hello world\');
});
.
.fi
.
.IP "" 0
.
.P
Express 1\.x does \fInot\fR currently allow returning of a string\.
.
.SS "Plugins vs Middleware"
Previously Express was bundled with plugins, which were essentially what are now Connect middleware\. Previously plugins would be utilized in a manor similar to below:
.
.IP "" 4
.
.nf
use(Logger);
use(MethodOverride);
use(Cookie);
.
.fi
.
.IP "" 0
.
.P
Which we can now \fIuse()\fR within our app, or pass to the \fIexpress\.createServer()\fR method:
.
.IP "" 4
.
.nf
var app = express\.createServer(
express\.logger(),
express\.methodOverride(),
express\.cookieDecoder()
);
.
.fi
.
.IP "" 0
.
.P
or:
.
.IP "" 4
.
.nf
var app = express\.createServer();
app\.use(express\.logger());
app\.use(express\.methodOverride());
app\.use(express\.cookieDecoder());
.
.fi
.
.IP "" 0
.
.P
For documentation on creating Connect middleware visit Middleware Authoring \fIhttp://extjs\.github\.com/Connect/#Middleware\-Authoring\fR\.
.
.SS "Running Applications"
Previously a global function \fIrun()\fR, was available:
.
.IP "" 4
.
.nf
run();
.
.fi
.
.IP "" 0
.
.P
The new \fIexpress\.Server\fR has the same API as \fIhttp\.Server\fR, so we can do things like:
.
.IP "" 4
.
.nf
app\.listen();
app\.listen(3000);
.
.fi
.
.IP "" 0
.
.SS "Route Parameters"
Previously we could use \fIthis\.param()\fR to attempt fetching a route, query string, or request body parameter:
.
.IP "" 4
.
.nf
get(\'/user/:id\', function(){
this\.param(\'id\');
});
.
.fi
.
.IP "" 0
.
.P
Polymorphic parameter access can be done using \fBreq\.param()\fR:
.
.IP "" 4
.
.nf
app\.get(\'/user/:id\', function(req, res){
req\.param(\'id\');
});
.
.fi
.
.IP "" 0
.
.P
Route parameters are available via \fBreq\.params\fR:
.
.IP "" 4
.
.nf
app\.get(\'/user/:id\', function(req, res){
req\.params\.id;
});
.
.fi
.
.IP "" 0
.
.SS "Passing Route Control"
Old express had a weak notion of route passing, which did not support async, and was never properly implemented for practical use:
.
.IP "" 4
.
.nf
get(\'/\', function(){
this\.pass(\'/foobar\');
});
.
.fi
.
.IP "" 0
.
.P
Now Express has access to Connect\'s \fInext()\fR function, which is passed as the third and final argument\. Calling \fInext()\fR will pass control to the next \fImatching route\fR, or continue down the stack of Connect middleware\.
.
.IP "" 4
.
.nf
app\.get(\'/user/:id?\', function(req, res, next){
next();
});
app\.get(\'/user\', function(){
// \.\.\. respond
});
.
.fi
.
.IP "" 0
.
.SS "View Rendering"
View filenames no longer take the form \fINAME\fR\.\fITYPE\fR\.\fIENGINE\fR, the \fIContent\-Type\fR can be set via \fIres\.contentType()\fR or \fIres\.header()\fR\. For example what was previously \fIlayout\.html\.haml\fR, should now be \fIlayout\.haml\fR\.
.
.P
Previously a view render looked something like this:
.
.IP "" 4
.
.nf
get(\'/\', function(){
this\.render(\'index\.html\.haml\', {
locals: { title: \'My Site\' }
});
});
.
.fi
.
.IP "" 0
.
.P
We now have \fIres\.render()\fR, however the options passed to haml \fIhttp://github\.com/visionmedia/haml\.js\fR, jade \fIhttp://github\.com/visionmedia/jade\fR, and others remain the same\.
.
.IP "" 4
.
.nf
app\.get(\'/\', function(req, res){
res\.render(\'index\.haml\', {
locals: { title: \'My Site\' }
});
});
.
.fi
.
.IP "" 0
.
.P
Previously rendering of a collection via \fIpartial()\fR would look something like this:
.
.IP "" 4
.
.nf
this\.partial(\'comment\.html\.haml\', { collection: comments });
.
.fi
.
.IP "" 0
.
.P
Although this worked just fine, it was generally to verbose, the similar but new API looks like this, as \fIpartial()\fR is \fIalways\fR passed as a local variable:
.
.IP "" 4
.
.nf
partial(\'comment\.haml\', { collection: comments });
.
.fi
.
.IP "" 0
.
.P
To make things even less verbose we can assume the extension when omitted:
.
.IP "" 4
.
.nf
partial(\'comment\', { collection: comments });
.
.fi
.
.IP "" 0
.
.P
And once again even further, when rendering a collection we can simply pass an array, if no other options are desired:
.
.IP "" 4
.
.nf
partial(\'comments\', comments);
.
.fi
.
.IP "" 0
.
.SS "Redirecting"
Previously you would
.
.IP "" 4
.
.nf
this\.redirect(\'/somewhere\');
.
.fi
.
.IP "" 0
.
.P
However you would now:
.
.IP "" 4
.
.nf
res\.redirect(\'/somewhere\');
res\.redirect(\'/somewhere\', 301);
.
.fi
.
.IP "" 0
.
.SS "HTTP Client"
Previously Express provided a high level http client, this library is no more as it does not belong in Express, however it may be resurrected as a separate module\.
.
.SS "Core Extensions"
Express is no longer dependent on the JavaScript Extensions \fIhttp://github\.com/visionmedia/ext\.js\fR library, so those of you using the methods provided by it such as \fBObject\.merge(a, b)\fR will need to roll your own, or install the module via:
.
.IP "" 4
.
.nf
$ npm install ext
.
.fi
.
.IP "" 0
-412
Ver Arquivo
@@ -1,412 +0,0 @@
<html>
<head>
<title>Express - node web framework</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<style>
#tagline {
margin-left: 75px;
margin-bottom: 30px;
color: rgba(255,255,255,0.7); }
html {
background: #1c1c1c url(images/bg.tile.jpg); }
body {
margin: 0;
padding-bottom: 30px;
font: 14px/1.4 "Helvetica Neue", "Lucida Grande", "Arial";
font-size: 14px;
line-height: 1.5;
-webkit-font-smoothing: antialiased;
background: url(images/bg.jpg) 50% 0 no-repeat;
color: #8b8b8b; }
* {
outline: none; }
em {
color: white; }
a img {
border: none !important; }
a {
font-weight: bold;
text-decoration: none;
color: white;
-webkit-transition-property: opacity, -webkit-transform, color, background-color, padding, -webkit-box-shadow;
-webkit-transition-duration: 0.15s;
-webkit-transition-timing-function: ease-out; }
a:hover {
opacity: 0.8; }
h1, h2, h3, h4 {
margin: 45px 0 0 0;
color: white;
text-shadow: 1px 2px 2px rgba(0,0,0,0.6); }
h3 {
font-size: 18px; }
h4 {
margin-left: 10px;
font-size: 14px;
}
pre {
margin: 20px 10px;
padding: 25px 20px;
background: rgba(0,0,0,0.5);
border: 1px solid #323232;
-webkit-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-moz-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-webkit-border-radius: 5px;
-moz-border-radius: 5px; }
code {
font-family: "Helvetica Neue", "Lucida Grande", "Arial"; }
ul {
margin: 15px 0;
padding: 0 0 0 35px; }
ul li {
margin: 0;
padding: 2px 0;
list-style: square; }
ul li ul {
margin: 0;
padding-left: 12px;
}
.man-name, #Express { display:none; }
.sect {
margin-left: 40px; }
img {
margin-left: 20px;
margin-bottom: 15px;
}
#logo {
display: block;
margin-left: 30%;
margin-bottom: 30px;
width: 194px;
height: 51px;
background: url(images/logo.png) 0 0 no-repeat;
text-indent: -99999px; }
#logo:hover {
opacity: 0.7; }
#logo:active {
opacity: 0.3; }
#ribbon {
position: fixed;
top: 0;
right: 0;
z-index: 2; }
#wrapper {
width: 100%;
min-height: 800px;
background: url(images/top.png) 0 0 repeat-x; }
#container {
margin: 0 auto;
padding-top: 80px;
width: 550px; }
#toc {
position: fixed;
top: 0;
left: 0;
margin: 0 0 0 15px;
padding: 15px;
height: 100%;
background: rgba(0,0,0,0.2);
overflow: auto;
border-right: 1px solid rgba(255,255,255,0.05);
}
#toc li {
padding: 0;
list-style: none;
}
#toc li a {
font-size: 11px;
}
#menu {
margin-left: 65px;
padding: 0;
padding-bottom: 30px; }
#menu li {
display: inline;
list-style: none; }
#menu li a {
display: block;
float: left;
margin: 0 2px;
padding: 3px 15px;
background: rgba(0,0,0,0.2);
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
-webkit-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-moz-box-shadow: 1px 2px 2px rgba(0,0,0,0.6);
-webkit-transition-property: opacity, -webkit-transform, color, background-color, -webkit-box-shadow;
-webkit-transition-duration: 0.15s;
-webkit-transition-timing-function: ease-out; }
#menu li a:hover,
#menu li a.active {
background: rgba(0,0,0,0.5); }
#menu li a:active {
background: rgba(0,0,0,0.1);
-webkit-box-shadow: 1px 1px 1px rgba(0,0,0,0.4);
-moz-box-shadow: 1px 1px 1px rgba(0,0,0,0.4); }
</style>
<script>
$(function(){
$('.section').hide();
$('.toggle, a.section-title').toggle(function(){
$(this).siblings('ul').fadeIn(300);
return false;
}, function(){
$(this).siblings('ul').fadeOut(300);
return false;
});
});
</script>
</head>
<body>
<a href='http://github.com/visionmedia/express'>
<img alt='Fork me on GitHub' id='ribbon' src='http://s3.amazonaws.com/github/ribbons/forkme_right_white_ffffff.png' />
</a>
<div id="wrapper">
<div id="container">
<a href='http://github.com/visionmedia/express' id='logo'>Express</a>
<p id="tagline">
High performance, high class web development for
<a href="http://nodejs.org">Node.js</a>
</p>
<ul id="menu">
<li><a href="index.html">Home</a></li>
<li><a href="guide.html">Guide</a></li>
<li><a href="contrib.html">Contributing</a></li>
<li><a href="applications.html">Applications</a></li>
</ul>
<div class='mp'>
<h2 id="Express">Express</h2>
<p class="man-name">
<code>migrate</code>
</p>
<h3 id="Built-On-Connect">Built On Connect</h3>
<p>Express 1.x is written to run on-top of the <a href="http://extjs.github.com/Connect">Connect</a> middlware
framework, thus the <em>Plugin</em> has been replaced by Connect's middleware. By abstracting our middleware
to Connect we allow additional community frameworks to develop robust, high-level frameworks using
the same technologies as Express.</p>
<h3 id="Creating-Applications">Creating Applications</h3>
<p>Previously due to legacy code implemented in the early days of node,
Express unfortunately had some globals. The DSL would previously be
accessed as shown below:</p>
<pre><code>require('express');
configure(function(){
// app configuration
});
get('/', function(){
return 'hello world';
});
</code></pre>
<p>Now we utilize the CommonJS module system appropriately, and
introduce <em>express.createServer()</em> which accepts the same arguments
as <em>http.createServer()</em>:</p>
<pre><code>var express = require('express'),
app = express.createServer();
app.configure(function(){
// app configuration
});
app.get('/', function(req, res){
res.send('hello world');
});
</code></pre>
<p>Express 1.x does <em>not</em> currently allow returning of a string.</p>
<h3 id="Plugins-vs-Middleware">Plugins vs Middleware</h3>
<p>Previously Express was bundled with plugins, which were essentially what
are now Connect middleware. Previously plugins would be utilized in a manor
similar to below:</p>
<pre><code>use(Logger);
use(MethodOverride);
use(Cookie);
</code></pre>
<p>Which we can now <em>use()</em> within our app, or pass to the <em>express.createServer()</em> method:</p>
<pre><code>var app = express.createServer(
express.logger(),
express.methodOverride(),
express.cookieDecoder()
);
</code></pre>
<p>or:</p>
<pre><code>var app = express.createServer();
app.use(express.logger());
app.use(express.methodOverride());
app.use(express.cookieDecoder());
</code></pre>
<p>For documentation on creating Connect middleware visit <a href="http://extjs.github.com/Connect/#Middleware-Authoring">Middleware Authoring</a>.</p>
<h3 id="Running-Applications">Running Applications</h3>
<p>Previously a global function <em>run()</em>, was available:</p>
<pre><code>run();
</code></pre>
<p>The new <em>express.Server</em> has the same API as <em>http.Server</em>,
so we can do things like:</p>
<pre><code>app.listen();
app.listen(3000);
</code></pre>
<h3 id="Route-Parameters">Route Parameters</h3>
<p>Previously we could use <em>this.param()</em> to attempt
fetching a route, query string, or request body parameter:</p>
<pre><code>get('/user/:id', function(){
this.param('id');
});
</code></pre>
<p>Polymorphic parameter access can be done using <code>req.param()</code>:</p>
<pre><code>app.get('/user/:id', function(req, res){
req.param('id');
});
</code></pre>
<p>Route parameters are available via <code>req.params</code>:</p>
<pre><code>app.get('/user/:id', function(req, res){
req.params.id;
});
</code></pre>
<h3 id="Passing-Route-Control">Passing Route Control</h3>
<p>Old express had a weak notion of route passing,
which did not support async, and was never properly
implemented for practical use:</p>
<pre><code>get('/', function(){
this.pass('/foobar');
});
</code></pre>
<p>Now Express has access to Connect's <em>next()</em> function,
which is passed as the third and final argument. Calling <em>next()</em> will
pass control to the next <em>matching route</em>, or continue down the stack
of Connect middleware.</p>
<pre><code>app.get('/user/:id?', function(req, res, next){
next();
});
app.get('/user', function(){
// ... respond
});
</code></pre>
<h3 id="View-Rendering">View Rendering</h3>
<p>View filenames no longer take the form <em>Express</em>.<em>TYPE</em>.<em>ENGINE</em>,
the <em>Content-Type</em> can be set via <em>res.contentType()</em> or
<em>res.header()</em>. For example what was previously <em>layout.html.haml</em>,
should now be <em>layout.haml</em>.</p>
<p>Previously a view render looked something like this:</p>
<pre><code>get('/', function(){
this.render('index.html.haml', {
locals: { title: 'My Site' }
});
});
</code></pre>
<p>We now have <em>res.render()</em>, however the options passed to <a href="http://github.com/visionmedia/haml.js">haml</a>, <a href="http://github.com/visionmedia/jade">jade</a>, and others
remain the same.</p>
<pre><code>app.get('/', function(req, res){
res.render('index.haml', {
locals: { title: 'My Site' }
});
});
</code></pre>
<p>Previously rendering of a collection via <em>partial()</em> would look something like this:</p>
<pre><code>this.partial('comment.html.haml', { collection: comments });
</code></pre>
<p>Although this worked just fine, it was generally to verbose, the similar but new API
looks like this, as <em>partial()</em> is <em>always</em> passed as a local variable:</p>
<pre><code>partial('comment.haml', { collection: comments });
</code></pre>
<p>To make things even less verbose we can assume the extension when omitted:</p>
<pre><code>partial('comment', { collection: comments });
</code></pre>
<p>And once again even further, when rendering a collection we can simply pass
an array, if no other options are desired:</p>
<pre><code>partial('comments', comments);
</code></pre>
<h3 id="Redirecting">Redirecting</h3>
<p>Previously you would</p>
<pre><code>this.redirect('/somewhere');
</code></pre>
<p>However you would now:</p>
<pre><code>res.redirect('/somewhere');
res.redirect('/somewhere', 301);
</code></pre>
<h3 id="HTTP-Client">HTTP Client</h3>
<p>Previously Express provided a high level http client, this library is no more
as it does not belong in Express, however it may be resurrected as a separate module.</p>
<h3 id="Core-Extensions">Core Extensions</h3>
<p>Express is no longer dependent on the <a href="http://github.com/visionmedia/ext.js">JavaScript Extensions</a> library, so those of you using the methods provided by it such as <code>Object.merge(a, b)</code> will need to
roll your own, or install the module via:</p>
<pre><code>$ npm install ext
</code></pre>
</div>
</div>
</div>
</body>
</html>
-189
Ver Arquivo
@@ -1,189 +0,0 @@
### Built On Connect
Express 1.x is written to run on-top of the [Connect](http://extjs.github.com/Connect) middlware
framework, thus the _Plugin_ has been replaced by Connect's middleware. By abstracting our middleware
to Connect we allow additional community frameworks to develop robust, high-level frameworks using
the same technologies as Express.
### Creating Applications
Previously due to legacy code implemented in the early days of node,
Express unfortunately had some globals. The DSL would previously be
accessed as shown below:
require('express');
configure(function(){
// app configuration
});
get('/', function(){
return 'hello world';
});
Now we utilize the CommonJS module system appropriately, and
introduce _express.createServer()_ which accepts the same arguments
as _http.createServer()_:
var express = require('express'),
app = express.createServer();
app.configure(function(){
// app configuration
});
app.get('/', function(req, res){
res.send('hello world');
});
Express 1.x does _not_ currently allow returning of a string.
### Plugins vs Middleware
Previously Express was bundled with plugins, which were essentially what
are now Connect middleware. Previously plugins would be utilized in a manor
similar to below:
use(Logger);
use(MethodOverride);
use(Cookie);
Which we can now _use()_ within our app, or pass to the _express.createServer()_ method:
var app = express.createServer(
express.logger(),
express.methodOverride(),
express.cookieDecoder()
);
or:
var app = express.createServer();
app.use(express.logger());
app.use(express.methodOverride());
app.use(express.cookieDecoder());
For documentation on creating Connect middleware visit [Middleware Authoring](http://extjs.github.com/Connect/#Middleware-Authoring).
### Running Applications
Previously a global function _run()_, was available:
run();
The new _express.Server_ has the same API as _http.Server_,
so we can do things like:
app.listen();
app.listen(3000);
### Route Parameters
Previously we could use _this.param()_ to attempt
fetching a route, query string, or request body parameter:
get('/user/:id', function(){
this.param('id');
});
Polymorphic parameter access can be done using `req.param()`:
app.get('/user/:id', function(req, res){
req.param('id');
});
Route parameters are available via `req.params`:
app.get('/user/:id', function(req, res){
req.params.id;
});
### Passing Route Control
Old express had a weak notion of route passing,
which did not support async, and was never properly
implemented for practical use:
get('/', function(){
this.pass('/foobar');
});
Now Express has access to Connect's _next()_ function,
which is passed as the third and final argument. Calling _next()_ will
pass control to the next _matching route_, or continue down the stack
of Connect middleware.
app.get('/user/:id?', function(req, res, next){
next();
});
app.get('/user', function(){
// ... respond
});
### View Rendering
View filenames no longer take the form _NAME_._TYPE_._ENGINE_,
the _Content-Type_ can be set via _res.contentType()_ or
_res.header()_. For example what was previously _layout.html.haml_,
should now be _layout.haml_.
Previously a view render looked something like this:
get('/', function(){
this.render('index.html.haml', {
locals: { title: 'My Site' }
});
});
We now have _res.render()_, however the options passed to [haml](http://github.com/visionmedia/haml.js), [jade](http://github.com/visionmedia/jade), and others
remain the same.
app.get('/', function(req, res){
res.render('index.haml', {
locals: { title: 'My Site' }
});
});
Previously rendering of a collection via _partial()_ would look something like this:
this.partial('comment.html.haml', { collection: comments });
Although this worked just fine, it was generally to verbose, the similar but new API
looks like this, as _partial()_ is _always_ passed as a local variable:
partial('comment.haml', { collection: comments });
To make things even less verbose we can assume the extension when omitted:
partial('comment', { collection: comments });
And once again even further, when rendering a collection we can simply pass
an array, if no other options are desired:
partial('comments', comments);
### Redirecting
Previously you would
this.redirect('/somewhere');
However you would now:
res.redirect('/somewhere');
res.redirect('/somewhere', 301);
### HTTP Client
Previously Express provided a high level http client, this library is no more
as it does not belong in Express, however it may be resurrected as a separate module.
### Core Extensions
Express is no longer dependent on the [JavaScript Extensions](http://github.com/visionmedia/ext.js) library, so those of you using the methods provided by it such as `Object.merge(a, b)` will need to
roll your own, or install the module via:
$ npm install ext
+107
Ver Arquivo
@@ -0,0 +1,107 @@
# req
Request prototype.
# req.get
Return request header.
The `Referrer` header field is special-cased,
both `Referrer` and `Referer` are interchangeable.
## Examples
req.get('Content-Type');
// => "text/plain"
req.get('content-type');
// => "text/plain"
req.get('Something');
// => undefined
Aliased as `req.header()`.
# req.accepts()
Check if the given `type(s)` is acceptable, returning
the best match when true, otherwise `undefined`, in which
case you should respond with 406 "Not Acceptable".
The `type` value may be a single mime type string
such as "application/json", the extension name
such as "json", a comma-delimted list such as "json, html, text/plain",
or an array `["json", "html", "text/plain"]`. When a list
or array is given the _best_ match, if any is returned.
## Examples
// Accept: text/html
req.accepts('html');
// => "html"
// Accept: text/*, application/json
req.accepts('html');
// => "html"
req.accepts('text/html');
// => "text/html"
req.accepts('json, text');
// => "json"
req.accepts('application/json');
// => "application/json"
// Accept: text/*, application/json
req.accepts('image/png');
req.accepts('png');
// => undefined
// Accept: text/*;q=.5, application/json
req.accepts(['html', 'json']);
req.accepts('html, json');
// => "json"
# req.acceptsCharset()
Check if the given `charset` is acceptable,
otherwise you should respond with 406 "Not Acceptable".
# req.acceptsLanguage()
Check if the given `lang` is acceptable,
otherwise you should respond with 406 "Not Acceptable".
# req.param()
Return the value of param `name` when present or `defaultValue`.
- Checks route placeholders, ex: _/user/:id_
- Checks body params, ex: id=12, {"id":12}
- Checks query string params, ex: ?id=12
To utilize request bodies, `req.body`
should be an object. This can be done by using
the `connect.bodyParser()` middleware.
# req.is()
Check if the incoming request contains the "Content-Type"
header field, and it contains the give mime `type`.
## Examples
// With Content-Type: text/html; charset=utf-8
req.is('html');
req.is('text/html');
req.is('text/*');
// => true
// When Content-Type is application/json
req.is('json');
req.is('application/json');
req.is('application/*');
// => true
req.is('html');
// => false
+218
Ver Arquivo
@@ -0,0 +1,218 @@
# res
Response prototype.
# res.status()
Set status `code`.
# res.send()
Send a response.
## Examples
res.send(new Buffer('wahoo'));
res.send({ some: 'json' });
res.send('<p>some html</p>');
res.send(404, 'Sorry, cant find that');
res.send(404);
# res.json()
Send JSON response.
## Examples
res.json(null);
res.json({ user: 'tj' });
res.json(500, 'oh noes!');
res.json(404, 'I dont have that');
# res.sendfile()
Transfer the file at the given `path`.
Automatically sets the _Content-Type_ response header field.
The callback `fn(err)` is invoked when the transfer is complete
or when an error occurs. Be sure to check `res.sentHeader`
if you wish to attempt responding, as the header and some data
may have already been transferred.
## Options
- `maxAge` defaulting to 0
- `root` root directory for relative filenames
## Examples
The following example illustrates how `res.sendfile()` may
be used as an alternative for the `static()` middleware for
dynamic situations. The code backing `res.sendfile()` is actually
the same code, so HTTP cache support etc is identical.
app.get('/user/:uid/photos/:file', function(req, res){
var uid = req.params.uid
, file = req.params.file;
req.user.mayViewFilesFrom(uid, function(yes){
if (yes) {
res.sendfile('/uploads/' + uid + '/' + file);
} else {
res.send(403, 'Sorry! you cant see that.');
}
});
});
# res.download()
Transfer the file at the given `path` as an attachment.
Optionally providing an alternate attachment `filename`,
and optional callback `fn(err)`. The callback is invoked
when the data transfer is complete, or when an error has
ocurred. Be sure to check `res.headerSent` if you plan to respond.
This method uses `res.sendfile()`.
# res.format()
Respond to the Acceptable formats using an `obj`
of mime-type callbacks.
This method uses `req.accepted`, an array of
acceptable types ordered by their quality values.
When "Accept" is not present the _first_ callback
is invoked, otherwise the first match is used. When
no match is performed the server responds with
406 "Not Acceptable".
Content-Type is set for you, however if you choose
you may alter this within the callback using `res.type()`
or `res.set('Content-Type', ...)`.
res.format({
'text/plain': function(){
res.send('hey');
},
'text/html': function(){
res.send('<p>hey</p>');
},
'appliation/json': function(){
res.send({ message: 'hey' });
}
});
In addition to canonicalized MIME types you may
also use extnames mapped to these types:
res.format({
text: function(){
res.send('hey');
},
html: function(){
res.send('<p>hey</p>');
},
json: function(){
res.send({ message: 'hey' });
}
});
By default Express passes an `Error`
with a `.status` of 406 to `next(err)`
if a match is not made, however you may
provide an optional callback `fn` to
be invoked instead.
# res.attachment()
Set _Content-Disposition_ header to _attachment_ with optional `filename`.
# res.set
Set header `field` to `val`, or pass
an object of header fields.
## Examples
res.set('Accept', 'application/json');
res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });
Aliased as `res.header()`.
# res.get()
Get value for header `field`.
# res.clearCookie()
Clear cookie `name`.
# res.cookie()
Set cookie `name` to `val`, with the given `options`.
## Options
- `maxAge` max-age in milliseconds, converted to `expires`
- `signed` sign the cookie
- `path` defaults to "/"
## Examples
// "Remember Me" for 15 minutes
res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true });
// save as above
res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true })
# res.redirect()
Redirect to the given `url` with optional response `status`
defaulting to 302.
The given `url` can also be the name of a mapped url, for
example by default express supports "back" which redirects
to the _Referrer_ or _Referer_ headers or "/".
## Examples
res.redirect('/foo/bar');
res.redirect('http://example.com');
res.redirect(301, 'http://example.com');
res.redirect('../login'); // /blog/post/1 -> /blog/login
## Mounting
When an application is mounted, and `res.redirect()`
is given a path that does _not_ lead with "/". For
example suppose a "blog" app is mounted at "/blog",
the following redirect would result in "/blog/login":
res.redirect('login');
While the leading slash would result in a redirect to "/login":
res.redirect('/login');
# res.render()
Render `view` with the given `options` and optional callback `fn`.
When a callback function is given a response will _not_ be made
automatically, otherwise a response of _200_ and _text/html_ is given.
## Options
- `status` Response status code (`res.statusCode`)
- `charset` Set the charset (`res.charset`)
## Reserved locals
- `cache` boolean hinting to the engine it should cache
- `filename` filename of the view being rendered
+76 -81
Ver Arquivo
@@ -1,65 +1,63 @@
// Expose modules in ./support for demo purposes
require.paths.unshift(__dirname + '/../../support');
/**
* Module dependencies.
*/
var express = require('../../lib/express'),
crypto = require('crypto');
var express = require('../../lib/express')
, crypto = require('crypto');
var app = express.createServer();
var app = module.exports = express();
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.bodyDecoder());
app.use(express.cookieDecoder());
app.use(express.bodyParser());
app.use(express.cookieParser('shhhh, very secret'));
app.use(express.session());
// Message helper, ideally we would use req.flash()
// however this is more light-weight for an example
app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');
app.dynamicHelpers({
message: function(req){
var err = req.session.error,
msg = req.session.success;
delete req.session.error;
delete req.session.success;
if (err) return '<p class="msg error">' + err + '</p>';
if (msg) return '<p class="msg success">' + msg + '</p>';
}
});
// Session-persisted message middleware
app.locals.use(function(req,res){
var err = req.session.error
, msg = req.session.success;
delete req.session.error;
delete req.session.success;
res.locals.message = '';
if (err) res.locals.message = '<p class="msg error">' + err + '</p>';
if (msg) res.locals.message = '<p class="msg success">' + msg + '</p>';
})
// Generate a salt for the user to prevent rainbow table attacks
// for better security take a look at the bcrypt c++ addon:
// https://github.com/ncb000gt/node.bcrypt.js
var users = {
tj: {
name: 'tj',
salt: 'randomly-generated-salt',
pass: md5('foobar' + 'randomly-generated-salt')
}
tj: {
name: 'tj'
, salt: 'randomly-generated-salt'
, pass: hash('foobar', 'randomly-generated-salt')
}
};
// Used to generate a hash of the plain-text password + salt
function md5(str) {
return crypto.createHash('md5').update(str).digest('hex');
function hash(msg, key) {
return crypto
.createHmac('sha256', key)
.update(msg)
.digest('hex');
}
// Authenticate using our plain-object database of doom!
function authenticate(name, pass, fn) {
var user = users[name];
// query the db for the given username
if (!user) return fn(new Error('cannot find user'));
// apply the same algorithm to the POSTed password, applying
// the md5 against the pass / salt, if there is a match we
// found the user
if (user.pass == md5(pass + user.salt)) return fn(null, user);
// Otherwise password is invalid
fn(new Error('invalid password'));
if (!module.parent) console.log('authenticating %s:%s', name, pass);
var user = users[name];
// query the db for the given username
if (!user) return fn(new Error('cannot find user'));
// apply the same algorithm to the POSTed password, applying
// the hash against the pass / salt, if there is a match we
// found the user
if (user.pass == hash(pass, user.salt)) return fn(null, user);
// Otherwise password is invalid
fn(new Error('invalid password'));
}
function restrict(req, res, next) {
@@ -71,56 +69,53 @@ function restrict(req, res, next) {
}
}
function accessLogger(req, res, next) {
console.log('/restricted accessed by %s', req.session.user.name);
next();
}
app.get('/', function(req, res){
res.redirect('/login');
res.redirect('login');
});
app.get('/restricted', restrict, accessLogger, function(req, res){
res.send('Wahoo! restricted area');
app.get('/restricted', restrict, function(req, res){
res.send('Wahoo! restricted area');
});
app.get('/logout', function(req, res){
// destroy the user's session to log them out
// will be re-created next request
req.session.destroy(function(){
res.redirect('home');
});
// destroy the user's session to log them out
// will be re-created next request
req.session.destroy(function(){
res.redirect('/');
});
});
app.get('/login', function(req, res){
if (req.session.user) {
req.session.success = 'Authenticated as ' + req.session.user.name
+ ' click to <a href="/logout">logout</a>. '
+ ' You may now access <a href="/restricted">/restricted</a>.';
}
res.render('login');
if (req.session.user) {
req.session.success = 'Authenticated as ' + req.session.user.name
+ ' click to <a href="/logout">logout</a>. '
+ ' You may now access <a href="/restricted">/restricted</a>.';
}
res.render('login');
});
app.post('/login', function(req, res){
authenticate(req.body.username, req.body.password, function(err, user){
if (user) {
// Regenerate session when signing in
// to prevent fixation
req.session.regenerate(function(){
// Store the user's primary key
// in the session store to be retrieved,
// or in this case the entire user object
req.session.user = user;
res.redirect('back');
});
} else {
req.session.error = 'Authentication failed, please check your '
+ ' username and password.'
+ ' (use "tj" and "foobar")';
res.redirect('back');
}
});
authenticate(req.body.username, req.body.password, function(err, user){
if (user) {
// Regenerate session when signing in
// to prevent fixation
req.session.regenerate(function(){
// Store the user's primary key
// in the session store to be retrieved,
// or in this case the entire user object
req.session.user = user;
res.redirect('back');
});
} else {
req.session.error = 'Authentication failed, please check your '
+ ' username and password.'
+ ' (use "tj" and "foobar")';
res.redirect('login');
}
});
});
app.listen(3000);
console.log('Express started on port 3000');
if (!module.parent) {
app.listen(3000);
console.log('Express started on port 3000');
}
+1 -1
Ver Arquivo
@@ -1,6 +1,6 @@
<h1>Login</h1>
<%- message %>
Try accessing <a href="/restricted">/restricted</a>.
Try accessing <a href="/restricted">/restricted</a>, then authenticate with "tj" and "foobar".
<form method="post" action="/login">
<p>
<label>Username:</label>
+24
Ver Arquivo
@@ -0,0 +1,24 @@
var express = require('../..')
, app = express();
app.set('views', __dirname);
app.set('view engine', 'jade');
var pets = [];
var n = 1000;
while (n--) {
pets.push({ name: 'Tobi', age: 2, species: 'ferret' });
pets.push({ name: 'Loki', age: 1, species: 'ferret' });
pets.push({ name: 'Jane', age: 6, species: 'ferret' });
}
app.use(express.logger('dev'));
app.get('/', function(req, res){
res.render('pets', { pets: pets });
});
app.listen(3000);
console.log('Express listening on port 3000');
+12
Ver Arquivo
@@ -0,0 +1,12 @@
style
body {
padding: 50px;
font: 16px "Helvetica Neue", Helvetica;
}
table
for pet in pets
tr
td= pet.name
td= pet.age
td= pet.species
-25
Ver Arquivo
@@ -1,25 +0,0 @@
// Expose modules in ./support for demo purposes
require.paths.unshift(__dirname + '/../../support');
/**
* Module dependencies.
*/
var express = require('./../../lib/express');
// Our app IS the exports, this prevents require('./app').app,
// instead it is require('./app');
var app = module.exports = express.createServer();
// Illustrates that an app can be broken into
// several files, but yet extend the same app
require('./main');
require('./contact');
// Illustrates that one app (Server instance) can
// be "mounted" to another at the given route.
app.use('/blog', require('./blog'));
app.listen(3000);
console.log('Express started on port 3000');
-45
Ver Arquivo
@@ -1,45 +0,0 @@
/**
* Module dependencies.
*/
var express = require('./../../../lib/express'),
fs = require('fs');
// Export our app as the module
var app = module.exports = express.createServer();
// Set views directory
app.set('views', __dirname + '/views');
// Load our posts
var posts = JSON.parse(fs.readFileSync(__dirname + '/posts.json', 'utf8'));
// Set our default view engine to "ejs"
app.set('view engine', 'ejs');
app.dynamicHelpers({
basepath: function(){
// "this" is the app, we can
// dynamically provide the "home"
// setting to all views
return this.set('home');
}
});
app.get('/', function(req, res){
res.render('index', {
locals: {
posts: posts
}
});
});
app.get('/post/:id', function(req, res){
var id = req.params.id;
res.render('post', {
locals: {
post: posts[id]
}
});
});
-4
Ver Arquivo
@@ -1,4 +0,0 @@
[
{ "id": 0, "title": "Post one", "body": "Just some lame post" },
{ "id": 1, "title": "Post two", "body": "Just another lame post" }
]
-2
Ver Arquivo
@@ -1,2 +0,0 @@
<h2>Posts</h2>
<%- partial('post', { collection: posts, as: global }) %>
-9
Ver Arquivo
@@ -1,9 +0,0 @@
<html>
<head>
<title>Blog Example</title>
</head>
<body>
<h1>Best Blog Ever</h1>
<%- body %>
</body>
</html>
-2
Ver Arquivo
@@ -1,2 +0,0 @@
<h3><a href="<%= basepath %>/post/<%= id %>"><%= title %></a></h3>
<p><%= body %></p>
-1
Ver Arquivo
@@ -1 +0,0 @@
<%- partial('post', { object: post, as: global }) %>
-9
Ver Arquivo
@@ -1,9 +0,0 @@
// in ./app.js we did "module.exports", allowing
// us to grab the app from the parent module (the one
// which required it)
var app = module.parent.exports;
app.get('/contact', function(req, res){
res.send('<p>Wahoo contact page</p>');
});
-10
Ver Arquivo
@@ -1,10 +0,0 @@
// in ./app.js we did "module.exports", allowing
// us to grab the app from the parent module (the one
// which required it)
var app = module.parent.exports;
app.get('/', function(req, res){
res.send('<p>Visit <a href="/blog">/blog</a>'
+ ' or <a href="/contact">/contact</a></p>');
});
+8
Ver Arquivo
@@ -0,0 +1,8 @@
var users = [];
users.push({ name: 'Tobi' });
users.push({ name: 'Loki' });
users.push({ name: 'Jane' });
module.exports = users;
+41
Ver Arquivo
@@ -0,0 +1,41 @@
var express = require('../../')
, app = module.exports = express()
, users = require('./db');
app.get('/', function(req, res){
res.format({
html: function(){
res.send('<ul>' + users.map(function(user){
return '<li>' + user.name + '</li>';
}).join('') + '</ul>');
},
text: function(){
res.send(users.map(function(user){
return ' - ' + user.name + '\n';
}).join(''));
},
json: function(){
res.json(users);
}
})
});
// or you could write a tiny middleware like
// this to abstract make things a bit more declarative:
function format(mod) {
var obj = require(mod);
return function(req, res){
res.format(obj);
}
}
app.get('/users', format('./users'));
if (!module.parent) {
app.listen(3000);
console.log('listening on port 3000');
}
+18
Ver Arquivo
@@ -0,0 +1,18 @@
var users = require('./db');
exports.html = function(req, res){
res.send('<ul>' + users.map(function(user){
return '<li>' + user.name + '</li>';
}).join('') + '</ul>');
};
exports.text = function(req, res){
res.send(users.map(function(user){
return ' - ' + user.name + '\n';
}).join(''));
};
exports.json = function(req, res){
res.json(users);
};
+32
Ver Arquivo
@@ -0,0 +1,32 @@
/**
* Module dependencies.
*/
var express = require('../../');
var app = module.exports = express();
// ignore GET /favicon.ico
app.use(express.favicon());
// pass a secret to cookieParser() for signed cookies
app.use(express.cookieParser('manny is cool'));
// add req.session cookie support
app.use(express.cookieSession());
// do something with the session
app.use(count);
// custom middleware
function count(req, res) {
req.session.count = req.session.count || 0;
var n = req.session.count++;
res.send('viewed ' + n + ' times\n');
}
if (!module.parent) {
app.listen(3000);
console.log('Express server listening on port 3000');
}
+35 -27
Ver Arquivo
@@ -3,44 +3,52 @@
* Module dependencies.
*/
var express = require('./../../lib/express');
var express = require('../../')
, app = module.exports = express();
var app = express.createServer(
// Place default Connect favicon above logger so it is not in
// the logging output
express.favicon(),
// Custom logger format
express.logger({ format: '\x1b[1m:method\x1b[0m \x1b[33m:url\x1b[0m :response-time' }),
// add favicon() before logger() so
// GET /favicon.ico requests are not
// logged, because this middleware
// reponds to /favicon.ico and does not
// call next()
app.use(express.favicon());
// Provides req.cookies
express.cookieDecoder(),
// custom log format
if ('test' != process.env.NODE_ENV)
app.use(express.logger(':method :url'));
// Parses x-www-form-urlencoded request bodies (and json)
express.bodyDecoder()
);
// parses request cookies, populating
// req.cookies and req.signedCookies
// when the secret is passed, used
// for signing the cookies.
app.use(express.cookieParser('my secret here'));
// parses json, x-www-form-urlencoded, and multipart/form-data
app.use(express.bodyParser());
app.get('/', function(req, res){
if (req.cookies.remember) {
res.send('Remembered :). Click to <a href="/forget">forget</a>!.');
} else {
res.send('<form method="post"><p>Check to <label>'
+ '<input type="checkbox" name="remember"/> remember me</label> '
+ '<input type="submit" value="Submit"/>.</p></form>');
}
if (req.cookies.remember) {
res.send('Remembered :). Click to <a href="/forget">forget</a>!.');
} else {
res.send('<form method="post"><p>Check to <label>'
+ '<input type="checkbox" name="remember"/> remember me</label> '
+ '<input type="submit" value="Submit"/>.</p></form>');
}
});
app.get('/forget', function(req, res){
res.clearCookie('remember');
res.redirect('back');
res.clearCookie('remember');
res.redirect('back');
});
app.post('/', function(req, res){
if (req.body.remember) {
res.cookie('remember', '1', { path: '/', expires: new Date(Date.now() + 900000), httpOnly: true });
}
res.redirect('back');
var minute = 60000;
if (req.body.remember) res.cookie('remember', 1, { maxAge: minute });
res.redirect('back');
});
app.listen(3000);
console.log('Express started on port 3000');
if (!module.parent){
app.listen(3000);
console.log('Express started on port 3000');
}
+31 -19
Ver Arquivo
@@ -3,30 +3,42 @@
* Module dependencies.
*/
var express = require('./../../lib/express');
var app = express.createServer();
var express = require('../../')
, app = module.exports = express();
app.get('/', function(req, res){
res.send('<ul>'
+ '<li>Download <a href="/files/amazing.txt">amazing.txt</a>.</li>'
+ '<li>Download <a href="/files/missing.txt">missing.txt</a>.</li>'
+ '</ul>');
res.send('<ul>'
+ '<li>Download <a href="/files/amazing.txt">amazing.txt</a>.</li>'
+ '<li>Download <a href="/files/missing.txt">missing.txt</a>.</li>'
+ '</ul>');
});
app.get('/files/*', function(req, res){
var file = req.params[0];
res.download(__dirname + '/files/' + file);
// /files/* is accessed via req.params[0]
// but here we name it :file
app.get('/files/:file(*)', function(req, res, next){
var file = req.params.file
, path = __dirname + '/files/' + file;
res.download(path);
});
app.error(function(err, req, res, next){
if (process.ENOENT == err.errno) {
res.send('Cant find that file, sorry!');
} else {
// Not a 404
next(err);
}
// error handling middleware. Because it's
// below our routes, you will be able to
// "intercept" errors, otherwise Connect
// will respond with 500 "Internal Server Error".
app.use(function(err, req, res, next){
// special-case 404s,
// remember you could
// render a 404 template here
if (404 == err.status) {
res.statusCode = 404;
res.send('Cant find that file, sorry!');
} else {
next(err);
}
});
app.listen(3000);
console.log('Express started on port 3000');
if (!module.parent) {
app.listen(3000);
console.log('Express started on port 3000');
}
+1 -1
Ver Arquivo
@@ -1 +1 @@
wow supes cool are you glad you downloaded this?
what an amazing download
-32
Ver Arquivo
@@ -1,32 +0,0 @@
// Expose modules in ./support for demo purposes
require.paths.unshift(__dirname + '/../../support');
/**
* Module dependencies.
*/
var express = require('./../../lib/express');
var app = express.createServer();
// Optional since express defaults to CWD/views
app.set('views', __dirname + '/views');
// Dummy users
var users = [
{ name: 'tj', email: 'tj@sencha.com' },
{ name: 'ciaran', email: 'ciaranj@gmail.com' },
{ name: 'aaron', email: 'aaron.heckmann+github@gmail.com' }
];
app.get('/', function(req, res){
res.render('users.ejs', {
locals: {
users: users
}
});
});
app.listen(3000);
+46
Ver Arquivo
@@ -0,0 +1,46 @@
/**
* Module dependencies.
*/
var express = require('../../');
var app = module.exports = express();
// Register ejs as .html. If we did
// not call this, we would need to
// name our views foo.ejs instead
// of foo.html. The __express method
// is simply a function that engines
// use to hook into the Express view
// system by default, so if we want
// to change "foo.ejs" to "foo.html"
// we simply pass _any_ function, in this
// case `ejs.__express`.
app.engine('.html', require('ejs').__express);
// Optional since express defaults to CWD/views
app.set('views', __dirname + '/views');
// Without this you would need to
// supply the extension to res.render()
// ex: res.render('users.html').
app.set('view engine', 'html');
// Dummy users
var users = [
{ name: 'tobi', email: 'tobi@learnboost.com' }
, { name: 'loki', email: 'loki@learnboost.com' }
, { name: 'jane', email: 'jane@learnboost.com' }
];
app.get('/', function(req, res){
res.render('users', { users: users });
});
if (!module.parent) {
app.listen(3000);
console.log('Express app started on port 3000');
}
-6
Ver Arquivo
@@ -1,6 +0,0 @@
<html>
<body>
<h1>Users</h1>
<%- body %>
</body>
</html>
-1
Ver Arquivo
@@ -1 +0,0 @@
<li><%= user.name %> &lt;<%= user.email %>&gt;</li>
-3
Ver Arquivo
@@ -1,3 +0,0 @@
<ul id="users">
<%- partial('user', users) %>
</ul>
+6
Ver Arquivo
@@ -0,0 +1,6 @@
<h1>Users</h1>
<ul id="users">
<% users.forEach(function(user){ %>
<li><%= user.name %> <%= user.email %></li>
<% }) %>
</ul>
-103
Ver Arquivo
@@ -1,103 +0,0 @@
// Expose modules in ./support for demo purposes
require.paths.unshift(__dirname + '/../../support');
/**
* Module dependencies.
*/
var express = require('./../../lib/express');
var app = express.createServer(),
sys = require('sys');
// Serve default connect favicon
app.use(express.favicon());
// Logger is placed below favicon, so favicon.ico
// requests will not be logged
app.use(express.logger({ format: '":method :url" :status' }));
// "app.router" positions our routes
// specifically above the middleware
// assigned below
app.use(app.router);
// When no more middleware require execution, aka
// our router is finished and did not respond, we
// can assume that it is "not found". Instead of
// letting Connect deal with this, we define our
// custom middleware here to simply pass a NotFound
// exception
app.use(function(req, res, next){
next(new NotFound(req.url));
});
app.set('views', __dirname + '/views');
// Provide our app with the notion of NotFound exceptions
function NotFound(path){
this.name = 'NotFound';
if (path) {
Error.call(this, 'Cannot find ' + path);
this.path = path;
} else {
Error.call(this, 'Not Found');
}
Error.captureStackTrace(this, arguments.callee);
}
sys.inherits(NotFound, Error);
// We can call app.error() several times as shown below.
// Here we check for an instanceof NotFound and show the
// 404 page, or we pass on to the next error handler.
// These handlers could potentially be defined within
// configure() blocks to provide introspection when
// in the development environment.
app.error(function(err, req, res, next){
if (err instanceof NotFound) {
res.render('404.jade', {
status: 404,
locals: {
error: err
}
});
} else {
next(err);
}
});
// Here we assume all errors as 500 for the simplicity of
// this demo, however you can choose whatever you like
app.error(function(err, req, res){
res.render('500.jade', {
status: 500,
locals: {
error: err
}
});
});
// Routes
app.get('/', function(req, res){
res.render('index.jade');
});
app.get('/404', function(req, res){
throw new NotFound;
});
app.get('/500', function(req, res, next){
next(new Error('keyboard cat!'));
});
app.listen(3000);
console.log('Express app started on port 3000');
+95
Ver Arquivo
@@ -0,0 +1,95 @@
/**
* Module dependencies.
*/
var express = require('../../')
, app = module.exports = express()
, silent = 'test' == process.env.NODE_ENV;
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
silent || app.use(express.logger('dev'));
// "app.router" positions our routes
// above the middleware defined below,
// this means that Express will attempt
// to match & call routes _before_ continuing
// on, at which point we assume it's a 404 because
// no route has handled the request.
app.use(app.router);
// Since this is the last non-error-handling
// middleware use()d, we assume 404, as nothing else
// responded.
// $ curl http://localhost:3000/notfound
// $ curl http://localhost:3000/notfound -H "Accept: application/json"
// $ curl http://localhost:3000/notfound -H "Accept: text/plain"
app.use(function(req, res, next){
// respond with html page
if (req.accepts('html')) {
res.status(404);
res.render('404', { url: req.url });
return;
}
// respond with json
if (req.accepts('json')) {
res.send({ error: 'Not found' });
return;
}
// default to plain-text. send()
res.type('txt').send('Not found');
});
// error-handling middleware, take the same form
// as regular middleware, however they require an
// arity of 4, aka the signature (err, req, res, next).
// when connect has an error, it will invoke ONLY error-handling
// middleware.
// If we were to next() here any remaining non-error-handling
// middleware would then be executed, or if we next(err) to
// continue passing the error, only error-handling middleware
// would remain being executed, however here
// we simply respond with an error page.
app.use(function(err, req, res, next){
// we may use properties of the error object
// here and next(err) appropriately, or if
// we possibly recovered from the error, simply next().
res.status(err.status || 500);
res.render('500', { error: err });
});
// Routes
app.get('/', function(req, res){
res.render('index.jade');
});
app.get('/404', function(req, res, next){
next();
});
app.get('/403', function(req, res, next){
var err = new Error('not allowed!');
err.status = 403;
next(err);
});
app.get('/500', function(req, res, next){
next(new Error('keyboard cat!'));
});
if (!module.parent) {
app.listen(3000);
silent || console.log('Express started on port 3000');
}
+5 -4
Ver Arquivo
@@ -1,4 +1,5 @@
- if (error.path)
h2 Cannot find #{error.path}
- else
h2 Page Not Found
extends error
block content
h2 Cannot find #{url}
+10 -2
Ver Arquivo
@@ -1,2 +1,10 @@
h1 Error: #{error.message}
pre= error.stack
// note that we extend a different
// layout with jade for 4xx & 5xx
// responses
extends error
block content
h1 Error: #{error.message}
pre= error.stack
+6
Ver Arquivo
@@ -0,0 +1,6 @@
html
head
title Error
body
h1 An error occurred!
block content
+15 -8
Ver Arquivo
@@ -1,8 +1,15 @@
h2 Pages Example
ul
li
| visit
a(href="/500") 500
li
| visit
a(href="/404") 404
extends layout
block content
h2 Pages Example
ul
li
| visit
a(href="/500") 500
li
| visit
a(href="/404") 404
li
| visit
a(href='/403') 403
+1 -1
Ver Arquivo
@@ -3,4 +3,4 @@ html
title Custom Pages Example
body
h1 My Site
!= body
block content
-25
Ver Arquivo
@@ -1,25 +0,0 @@
/**
* Module dependencies.
*/
var express = require('./../../lib/express');
var app = express.createServer();
app.get('/', function(req, res){
// Caught and passed down to the errorHandler middleware
throw new Error('something broke!');
});
app.get('/next', function(req, res, next){
// We can also pass exceptions to next()
next(new Error('oh no!'))
});
// The errorHandler middleware in this case will dump exceptions to stderr
// as well as show the stack trace in responses, currently handles text/plain,
// text/html, and application/json responses to aid in development
app.use('/', express.errorHandler({ dumpExceptions: true, showStack: true }));
app.listen(3000);
+48
Ver Arquivo
@@ -0,0 +1,48 @@
/**
* Module dependencies.
*/
var express = require('../../')
, app = module.exports = express()
, test = app.get('env') == 'test';
if (!test) app.use(express.logger('dev'));
app.use(app.router);
// the error handler is strategically
// placed *below* the app.router; if it
// were above it would not receive errors
// from app.get() etc
app.use(error);
// error handling middleware have an arity of 4
// instead of the typical (req, res, next),
// otherwise they behave exactly like regular
// middleware, you may have several of them,
// in different orders etc.
function error(err, req, res, next) {
// log it
if (!test) console.error(err.stack);
// respond with 500 "Internal Server Error".
res.send(500);
}
app.get('/', function(req, res){
// Caught and passed down to the errorHandler middleware
throw new Error('something broke!');
});
app.get('/next', function(req, res, next){
// We can also pass exceptions to next()
process.nextTick(function(){
next(new Error('oh no!'));
});
});
if (!module.parent) {
app.listen(3000);
console.log('Express started on port 3000');
}
+68
Ver Arquivo
@@ -0,0 +1,68 @@
var express = require('../..')
, app = express();
app.set('view engine', 'jade');
app.set('views', __dirname + '/views');
function User(name) {
this.private = 'heyyyy';
this.secret = 'something';
this.name = name;
this.id = 123;
}
// You'll probably want to do
// something like this so you
// dont expose "secret" data.
User.prototype.toJSON = function(){
return {
id: this.id,
name: this.name
}
};
app.use(express.logger('dev'));
// earlier on expose an object
// that we can tack properties on.
// all res.locals props are exposed
// to the templates, so "expose" will
// be present.
app.use(function(req, res, next){
res.locals.expose = {};
// you could alias this as req or res.expose
// to make it shorter and less annoying
next();
});
// pretend we loaded a user
app.use(function(req, res, next){
req.user = new User('Tobi');
next();
});
// if you wanted to _always_ expose
// the user you might do something like this:
/*
app.locals.use(function(req, res){
if (req.user) res.locals.expose.user = req.user;
})
*/
app.get('/', function(req, res){
res.redirect('/user');
});
app.get('/user', function(req, res){
// we only want to expose the user
// to the client for this route:
res.locals.expose.user = req.user;
res.render('page');
});
app.listen(3000);
console.log('app listening on port 3000');
@@ -0,0 +1,14 @@
html
head
title Express
script
// call this whatever you like,
// or dump them into individual
// props like "var user ="
var data = !{JSON.stringify(expose)}
body
h1 Expose client data
p The following was exposed to the client:
pre
script
document.write(JSON.stringify(data, null, 2))
-78
Ver Arquivo
@@ -1,78 +0,0 @@
// Expose modules in ./support for demo purposes
require.paths.unshift(__dirname + '/../../support');
/**
* Module dependencies.
*/
var express = require('../../lib/express');
// App with session support
var app = express.createServer(
express.cookieDecoder(),
express.session()
);
// View settings
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
// Dynamic helpers are functions which are executed
// on each view render, unless dynamicHelpers is false.
// So for example we do not need to call messages() in our
// template, "messages" will be populated with the return
// value of this function.
app.dynamicHelpers({
messages: function(req, res){
// In the case of flash messages
// we return a function, allowing
// flash messages to only be flushed
// when called, otherwise every request
// will flush flash messages regardless.
return function(){
// Grab the flash messages
var messages = req.flash();
// We will render the "messages.ejs" partial
return res.partial('messages', {
// Our target object is our messages
object: messages,
// We want it to be named "types" in the partial
// since they are keyed like this:
// { info: ['foo'], error: ['bar']}
as: 'types',
// Pass a local named "hasMessages" so we can easily
// check if we have any messages at all
locals: { hasMessages: Object.keys(messages).length },
// We dont want dynamicHelpers in this partial, as
// it would cause infinite recursion
dynamicHelpers: false
});
}
}
});
app.dynamicHelpers({
// Another dynamic helper example. Since dynamic
// helpers resolve at view rendering time, we can
// "inject" the "page" local variable per request
// providing us with the request url.
page: function(req, res){
return req.url;
}
});
app.get('/', function(req, res){
// Not very realistic notifications but illustrates usage
req.flash('info', 'email queued');
req.flash('info', 'email sent');
req.flash('error', 'delivery failed');
res.render('index');
});
app.listen(3000);
console.log('Express app started on port 3000');
-3
Ver Arquivo
@@ -1,3 +0,0 @@
<h1>Flash Message Example</h1>
<p>on page <%- page %></p>
<%- messages() %>
-5
Ver Arquivo
@@ -1,5 +0,0 @@
<html>
<body>
<%- body %>
</body>
</html>
-12
Ver Arquivo
@@ -1,12 +0,0 @@
<% if (hasMessages) { %>
<div id="messages">
<% for (var type in types) { %>
<h2><%= type %> messages</h2>
<ul id="<%= type %>">
<% types[type].forEach(function(msg){ %>
<li><%= msg %></li>
<% }) %>
</ul>
<% } %>
</div>
<% } %>
-79
Ver Arquivo
@@ -1,79 +0,0 @@
/**
* Module dependencies.
*/
var express = require('./../../lib/express'),
sys = require('sys');
var app = express.createServer();
// Here we use the bodyDecoder middleware
// to parse urlencoded request bodies
// which populates req.body
app.use(express.bodyDecoder());
// The methodOverride middleware allows us
// to set a hidden input of _method to an arbitrary
// HTTP method to support app.put(), app.del() etc
app.use(express.methodOverride());
// Required by session
app.use(express.cookieDecoder());
// Required by req.flash() for persistent
// notifications
app.use(express.session());
app.get('/', function(req, res){
// get ?name=foo
var name = req.param('name') || '';
// Switch the button label based if we have a name
var label = name ? 'Update' : 'Save';
// Buffer all flash messages.
// Typically this would all be done in a template
// however for illustration purposes we iterate
// here.
// The messages in req.flash() persist until called,
// at which time they are flushed from the session
var msgs = '<ul>',
flash = req.flash();
Object.keys(flash).forEach(function(type){
flash[type].forEach(function(msg){
msgs += '<li class="' + type + '">' + msg + '</li>';
});
});
msgs += '</ul>';
// If we have a name, we are updating,
// so add the hidden _method input
res.send(msgs
+ '<form method="post">'
+ (name ? '<input type="hidden" value="put" name="_method" />' : '')
+ 'Name: <input type="text" name="name" value="' + name + '" />'
+ '<input type="submit" value="' + label + '" />'
+ '</form>');
});
app.post('/', function(req, res){
if (req.body.name) {
// Typically here we would create a resource
req.flash('info', 'Saved ' + req.body.name);
res.redirect('/?name=' + req.body.name);
} else {
req.flash('error', 'Error: name required');
res.redirect('/');
}
});
app.put('/', function(req, res){
// Typically here we would update a resource
req.flash('info', 'Updated ' + req.body.name);
res.redirect('/?name=' + req.body.name);
});
app.listen(3000);
console.log('Express app started on port 3000');
-63
Ver Arquivo
@@ -1,63 +0,0 @@
/**
* Module dependencies.
*/
var express = require('../../lib/express');
var app = express.createServer();
// Fake items
var items = [
{ name: 'foo' },
{ name: 'bar' },
{ name: 'baz' }
];
// Routes
app.get('/', function(req, res, next){
res.send('Visit /item/2');
});
app.get('/item/:id.:format?', function(req, res, next){
var id = req.params.id,
format = req.params.format,
item = items[id];
// Ensure item exists
if (item) {
// Serve the format
switch (format) {
case 'json':
// Detects json
res.send(item);
break;
case 'xml':
// Set contentType as xml then sends
// the string
var xml = ''
+ '<items>'
+ '<item>' + item.name + '</item>'
+ '</items>';
res.contentType('.xml');
res.send(xml);
break;
case 'html':
default:
// By default send some hmtl
res.send('<h1>' + item.name + '</h1>');
}
} else {
// We could simply pass route control and potentially 404
// by calling next(), or pass an exception like below.
next(new Error('Item ' + id + ' does not exist'));
}
});
// Middleware
app.use(express.errorHandler({ showStack: true }));
app.listen(3000);
console.log('Express app started on port 3000');
-119
Ver Arquivo
@@ -1,119 +0,0 @@
// Expose modules in ./support for demo purposes
require.paths.unshift(__dirname + '/../../support');
/**
* Module dependencies.
*/
var express = require('./../../lib/express'),
http = require('http');
var app = express.createServer();
// Expose our views
app.set('views', __dirname + '/views');
/**
* Request github json api `path`.
*
* @param {String} path
* @param {Function} fn
* @api public
*/
function request(path, fn){
var client = http.createClient(80, 'github.com'),
req = client.request('GET', '/api/v2/json' + path, { Host: 'github.com' });
req.addListener('response', function(res){
res.body = '';
res.addListener('data', function(chunk){ res.body += chunk; });
res.addListener('end', function(){
try {
fn(null, JSON.parse(res.body));
} catch (err) {
fn(err);
}
});
});
req.end();
}
/**
* Sort repositories by watchers desc.
*
* @param {Array} repos
* @api public
*/
function sort(repos){
return repos.sort(function(a, b){
if (a.watchers == b.watchers) return 0;
if (a.watchers > b.watchers) return -1;
if (a.watchers < b.watchers) return 1;
});
}
/**
* Tally up total watchers.
*
* @param {Array} repos
* @return {Number}
* @api public
*/
function totalWatchers(repos) {
return repos.reduce(function(sum, repo){
return sum + repo.watchers;
}, 0);
}
/**
* Default to my user name :)
*/
app.get('/', function(req, res){
res.redirect('/repos/visionmedia');
});
/**
* Display repos.
*/
app.get('/repos/*', function(req, res, next){
var names = req.params[0].split('/'),
users = [];
(function fetchData(name){
// We have a user name
if (name) {
console.log('... fetching \x1b[33m%s\x1b[0m', name);
request('/repos/show/' + name, function(err, user){
if (err) {
next(err)
} else {
user.totalWatchers = totalWatchers(user.repositories);
user.repos = sort(user.repositories);
user.name = name;
users.push(user);
fetchData(names.shift());
}
});
// No more users
} else {
console.log('... done');
res.render('index.jade', {
locals: {
users: users
}
});
}
})(names.shift());
});
// Serve statics from ./public
app.use(express.staticProvider(__dirname + '/public'));
// Listen on port 3000
app.listen(3000);
console.log('Express app started on port 3000');
-19
Ver Arquivo
@@ -1,19 +0,0 @@
body {
padding: 30px 50px;
font: 12px/1.4 "Helvetica Neue", Arial, sans-serif;
}
a {
color: #00AAFF;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
.user {
margin: 0 10px;
float: left;
width: 25%;
}
table td:nth-child(2) {
padding: 0 5px;
}
-8
Ver Arquivo
@@ -1,8 +0,0 @@
- each user in users
.user
h2= user.name
p.summary
| <a href="http://github.com/#{user.name}">#{user.name}</a> has
| <strong>#{user.repos.length}</strong> repositories
| with a total of <strong>#{user.totalWatchers}</strong> watchers.
table#repos!= partial('repo', user.repos)
-7
Ver Arquivo
@@ -1,7 +0,0 @@
!!!
html
head
title Github Example
link(rel="stylesheet", href="/style.css")
body
#container!= body
-5
Ver Arquivo
@@ -1,5 +0,0 @@
tr.repo
td.name
a(href: repo.homepage || repo.url)= repo.name
td.watchers
= repo.watchers
+11
Ver Arquivo
@@ -0,0 +1,11 @@
var express = require('../../');
var app = express();
app.get('/', function(req, res){
res.send('Hello World');
});
app.listen(3000);
console.log('Express started on port 3000');
-14
Ver Arquivo
@@ -1,14 +0,0 @@
/**
* Module dependencies.
*/
var express = require('./../../lib/express');
var app = express.createServer();
app.get('/', function(req, res){
res.send('Hello World');
});
app.listen(3000);

Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais