Comparar commits

...

1380 Commits

Autor SHA1 Mensagem Data
Tj Holowaychuk 82e15cf321 Release 1.0.4 2011-02-05 11:13:08 -08:00
Tj Holowaychuk 4c0825b670 Added qs dep 2011-02-05 11:12:00 -08:00
Tj Holowaychuk f353aa3384 Added qs submod for testing 2011-02-05 11:11:34 -08:00
Tj Holowaychuk a7eacec1f2 Fixed namespaced requires 2011-02-05 11:10:47 -08:00
Tj Holowaychuk 5ecec0a492 Updated connect submodule 2011-02-05 11:09:41 -08:00
Tj Holowaychuk 8c7241db02 connect >= 0.5.x 2011-02-01 08:33:45 -08:00
Tj Holowaychuk 107ebcb0c1 Updated connect submodule 2011-02-01 08:33:14 -08:00
Tj Holowaychuk 7dd93a5d55 generate docs 2011-01-29 12:20:47 -08:00
Tj Holowaychuk c41c99e18a Added eco template engine 2011-01-29 12:20:10 -08:00
Tj Holowaychuk 5b50b48e08 docs for session secret 2011-01-29 12:19:19 -08:00
Tj Holowaychuk 077e09f922 more req.flash() docs 2011-01-29 12:17:20 -08:00
Tj Holowaychuk 059803b5bc updated jade 2011-01-29 12:14:15 -08:00
Tj Holowaychuk 59d18d245f Added tests to confirm that partials in layouts work 2011-01-25 10:13:15 -08:00
Tj Holowaychuk a481ddf9bf Fixed session related tests for updated connect 2011-01-15 19:42:34 -08:00
Tj Holowaychuk b1042abbe3 Updated connect submodule 2011-01-15 19:41:35 -08:00
Tj Holowaychuk cb1f536eb5 Release 1.0.3 2011-01-13 14:09:00 -08:00
Ryan Grove 7791169810 Remove unsafe characters from JSONP callback names.
This prevents JSONP callbacks from being used as an XSS vector. The set
of acceptable characters is intentionally more limited than the full
set of valid characters in JS identifiers in order to avoid complexity,
but this could be expanded in the future if necessary.
2011-01-13 14:06:57 -08:00
Tj Holowaychuk 1b854f4297 Added .gitignore 2011-01-10 18:11:23 -08:00
Tj Holowaychuk 52353da08b Release 1.0.2 2011-01-10 18:09:16 -08:00
Tj Holowaychuk dc56b9b603 Removed nested require, using connect.router 2011-01-10 18:08:33 -08:00
Tj Holowaychuk 1446135545 docs 2011-01-03 13:33:51 -08:00
Tj Holowaychuk cdc46307d7 Release 1.0.1 2010-12-29 11:38:02 -08:00
Tj Holowaychuk dbf02c231a Fixed for middleware stacked via createServer() 2010-12-29 11:34:27 -08:00
Tj Holowaychuk 4732185e6f Fixed express(1) generated tests for express 0.7.0. Closes #484 2010-12-14 08:22:38 -08:00
Tj Holowaychuk 84a95b3101 Updated connect submodule 2010-12-06 14:54:50 -08:00
Tj Holowaychuk 09e8fe280b older expresso 2010-11-24 08:16:59 -08:00
Tj Holowaychuk 0e4ea9c16b Updated jade submodule 2010-11-24 08:14:44 -08:00
Tj Holowaychuk c7542aef95 Merge branch 'master' into 1.x 2010-11-17 11:26:55 -08:00
Tj Holowaychuk 487d067f75 Fixed route-separation example require 2010-11-17 11:26:50 -08:00
Tj Holowaychuk 6873bce6c6 Merge branch 'master' into 1.x 2010-11-16 18:04:57 -08:00
Tj Holowaychuk c4d5e1b4f3 Docs 2010-11-16 18:04:48 -08:00
Tj Holowaychuk 6ddacb6302 Merge branch 'master' into 1.x 2010-11-16 17:58:33 -08:00
Tj Holowaychuk 0e0cc30039 Docs 2010-11-16 17:58:30 -08:00
Tj Holowaychuk a766cc791b Release 1.0.0 2010-11-16 17:54:58 -08:00
Tj Holowaychuk d017c3e248 Rebuilt docs 2010-11-16 17:43:23 -08:00
Tj Holowaychuk cc27ee04a8 PREFIX 2010-11-16 17:36:31 -08:00
Tj Holowaychuk 87459bf24b undoc manual install method 2010-11-16 17:36:05 -08:00
Tj Holowaychuk e1d33992a7 Merge branch 'master' into 1.x 2010-11-13 10:55:19 -08:00
Tj Holowaychuk 5091c9e10f Added posts to the reoute separation example 2010-11-13 10:55:15 -08:00
Tj Holowaychuk 14a22d9033 Updating users 2010-11-13 10:37:23 -08:00
Tj Holowaychuk 7ded5a2de5 Started route separation example 2010-11-13 10:33:41 -08:00
Tj Holowaychuk 6b436a0192 Fixed github example styling 2010-11-13 09:29:42 -08:00
Tj Holowaychuk 52343686f5 Docs 2010-11-12 09:00:03 -08:00
Tj Holowaychuk eec9d05b19 connect >= 0.3.0 2010-11-12 08:46:29 -08:00
Tj Holowaychuk 569c5139a6 Merge branch 'master' into 1.x 2010-11-12 08:46:07 -08:00
Tj Holowaychuk 89703fd430 Added catchall test 2010-11-12 08:45:47 -08:00
Tj Holowaychuk dc246946a7 Added app.all() support 2010-11-12 08:44:10 -08:00
Tj Holowaychuk 944e1120cb Updated connect submodule 2010-11-12 08:39:39 -08:00
Tj Holowaychuk 6f5f5787e2 Merge branch 'master' into 1.x 2010-11-08 07:18:52 -08:00
Tj Holowaychuk cccda60df8 Added link to node-jqtpl template engine 2010-11-08 07:18:45 -08:00
Tj Holowaychuk e338e748eb Removed Content-Length for chunked 2010-11-05 04:31:56 -07:00
Tj Holowaychuk 0526a24cf3 Renamed pages example to error-pages. Closes #459 2010-11-05 02:39:08 -07:00
Tj Holowaychuk c4ba1b025a Updated jade submodule 2010-10-30 13:35:09 -07:00
Tj Holowaychuk 252f330658 Revert "only register error handlers once"
This reverts commit 45590415a6.
2010-10-29 19:59:18 -07:00
Tj Holowaychuk 45590415a6 only register error handlers once 2010-10-29 19:54:17 -07:00
Tj Holowaychuk e562adc752 Settings docs 2010-10-26 14:15:29 -07:00
Tj Holowaychuk 1e2fd44a6b Removed a set() call 2010-10-26 14:14:47 -07:00
Tj Holowaychuk 94cf769dd7 Merge branch 'master' into 1.x 2010-10-26 12:09:17 -07:00
Tj Holowaychuk 1c903320be New partial() docs 2010-10-26 12:08:59 -07:00
Tj Holowaychuk 74eaf3a268 Added objectName() 2010-10-26 12:02:40 -07:00
Tj Holowaychuk 6fcd74c713 Added missing files 2010-10-26 11:59:31 -07:00
Tj Holowaychuk 33136c6553 Fixed partial local inheritance precedence. Closes #454 2010-10-26 11:50:44 -07:00
Tj Holowaychuk cb225db203 Added failing partial local precedence test [reported by Nick Poulden] 2010-10-26 11:47:13 -07:00
Tj Holowaychuk 0dbd5006ea Caching view path derived partial object names 2010-10-26 11:34:11 -07:00
Tj Holowaychuk 08b3677ce8 Merge branch 'partial-object' 2010-10-26 11:31:46 -07:00
Tj Holowaychuk b08549a25b Added partial direct object support
these are now equivalent:

before:

    partial(movie, { object: movieRecord })

after:

    partial(movie, movieRecord)
2010-10-26 11:31:40 -07:00
Tj Holowaychuk 221bc4cb5d Misc refactor of partial() 2010-10-26 11:22:56 -07:00
Tj Holowaychuk b655b8e97b Added partial object test 2010-10-26 11:22:14 -07:00
Tj Holowaychuk 03e7b5dcc6 Fixed a test 2010-10-26 11:10:43 -07:00
Tj Holowaychuk 6d00b45eed Merge branch 'master' into 1.x 2010-10-26 01:18:24 -07:00
Tj Holowaychuk 5f09e829df Updated connect submodule 2010-10-26 01:18:16 -07:00
Tj Holowaychuk e6759919dc fine with --version 0.2.4 2010-10-25 08:22:58 -07:00
Tj Holowaychuk 6c65a3fc74 Removed old app section from docs 2010-10-22 21:11:41 -07:00
Tj Holowaychuk 6a4c6933aa Merge branch 'master' into 1.x 2010-10-22 16:20:47 -07:00
Tj Holowaychuk e0ffd31123 Added development seed's cool project to applications.html 2010-10-22 16:20:15 -07:00
Tj Holowaychuk c35ee2427e Merge branch 'master' into 1.x 2010-10-21 19:53:39 -07:00
Tj Holowaychuk 4c1597113a Added another partial test 2010-10-21 19:52:33 -07:00
Tj Holowaychuk 4006506b64 Added another partial locals test 2010-10-21 19:42:40 -07:00
Tj Holowaychuk 14facdbcd2 Merge branch 'partial-locals' 2010-10-21 19:29:40 -07:00
Tj Holowaychuk 726ace49d8 Added partial locals test with collection 2010-10-21 19:29:29 -07:00
Tj Holowaychuk f45d383367 Fixed a test 2010-10-21 19:24:44 -07:00
Tj Holowaychuk 3a32e2b53a Added failing partial locals test 2010-10-21 19:15:20 -07:00
Tj Holowaychuk dc45e93cea jsonp text/javascript as per mailinglist discussion 2010-10-21 14:11:07 -07:00
Tj Holowaychuk 3d7216935a Merge branch 'master' into 1.x 2010-10-20 10:07:54 -07:00
Tj Holowaychuk c0f9642719 Merge branch 'bin' 2010-10-20 10:07:48 -07:00
Tj Holowaychuk da8d036997 Implemented --template support 2010-10-20 10:07:43 -07:00
Tj Holowaychuk 3c911cc785 connect >= 0.2.7 2010-10-20 09:54:03 -07:00
Tj Holowaychuk 4071f15f27 Updated connect submodule 2010-10-20 09:49:13 -07:00
Tj Holowaychuk 90de7923db Added -t, --template flag 2010-10-19 17:39:02 -07:00
Tj Holowaychuk c28f1535a3 Started ejs template support for express(1) 2010-10-19 17:37:13 -07:00
Tj Holowaychuk fc15c3d02b Merge branch 'master' into 1.x 2010-10-19 17:19:39 -07:00
Tj Holowaychuk 704e9c132e Rebuilt docs 2010-10-19 17:19:36 -07:00
Tj Holowaychuk 713d6f5f76 Installation suggestions when using express(1) 2010-10-19 17:19:22 -07:00
Tj Holowaychuk 1a6d245eae Added -s, --session[s] support to express(1)
This adds cookieDecoder() / session() middleware for you
2010-10-19 17:12:28 -07:00
Tj Holowaychuk 9eaec5b34e Merge branch 'master' into 1.x 2010-10-19 17:03:18 -07:00
Tj Holowaychuk d909dd2a32 Merge branch 'bin' 2010-10-19 17:03:07 -07:00
Tj Holowaychuk 7bb466dd86 Added -c, -css ENGINE option to express(1)
For example $ express
will now just create style.css

where as $ express --css sass
will generate style.sass for you and setup the compiler middleware

etc
2010-10-19 17:02:13 -07:00
Tj Holowaychuk 30712fa9d9 Merge branch 'master' into 1.x 2010-10-19 15:03:02 -07:00
Tj Holowaychuk e09bf5cc40 Updated jade submodule 2010-10-19 15:02:56 -07:00
Tj Holowaychuk 129e21e7c3 Regenerate api docs 2010-10-19 10:55:15 -07:00
Tj Holowaychuk 87dcd2909d Doc typo 2010-10-19 10:54:45 -07:00
Tj Holowaychuk e47ec4f551 Doc typo 2010-10-19 10:53:17 -07:00
Tj Holowaychuk d6cfcbe149 Misc doc changes 2010-10-19 09:41:47 -07:00
Tj Holowaychuk 7a713807e9 Merge branch 'is' 2010-10-19 09:34:34 -07:00
Tj Holowaychuk 6e49b5bc30 More req.is() docs for new feature 2010-10-19 09:34:29 -07:00
Tj Holowaychuk adbc5b86f5 Added req.is() wildcard support 2010-10-19 09:30:56 -07:00
Tj Holowaychuk 071ea955af More is() docs 2010-10-19 09:22:11 -07:00
Tj Holowaychuk b817579d8a Merge branch 'master' into 1.x 2010-10-19 09:20:23 -07:00
Tj Holowaychuk 806aefa966 Added req.is() docs 2010-10-19 09:20:16 -07:00
Tj Holowaychuk 5b7d23186d Merge branch 'is' 2010-10-19 09:15:08 -07:00
Tj Holowaychuk 0cb4677e80 Added app.is() to register req.is() assertions 2010-10-19 09:15:02 -07:00
Tj Holowaychuk bd65ecf17b Implemented req.is() 2010-10-19 08:59:06 -07:00
Tj Holowaychuk 9da2adff4c Added tests for req.is() 2010-10-19 08:50:48 -07:00
Tj Holowaychuk a2a1aad109 Updated jade submodule 2010-10-18 08:51:36 -07:00
Tj Holowaychuk dcc530a389 More apps 2010-10-17 10:19:18 -07:00
Tj Holowaychuk 97037a87f3 Fixed nodeko link 2010-10-16 19:21:24 -07:00
Tj Holowaychuk 4e67efc0d6 Merge branch 'apps' 2010-10-16 19:18:38 -07:00
Tj Holowaychuk 7cbb73719e Finished app page (for now) 2010-10-16 19:18:31 -07:00
Tj Holowaychuk d3f139c31e Started apps section 2010-10-16 19:00:33 -07:00
Tj Holowaychuk 8940b6e5a3 Added X-Powered-By, remove Connects "Server" header field
potentially a security issue... I told Tim not to add this :p,
so for now we just hide it in Express until I have a chance to remove
it from Connect, at least the versions.
2010-10-16 18:24:24 -07:00
Tj Holowaychuk 1c9831a9f4 Regenerated docs 2010-10-15 12:51:14 -07:00
Tj Holowaychuk 7da27435cc Doc typo 2010-10-15 12:51:03 -07:00
Tj Holowaychuk bd18f86517 Updated jade submodule 2010-10-15 12:25:40 -07:00
Tj Holowaychuk 41f66b435b Generated app using "view engine" "jade" 2010-10-15 10:17:25 -07:00
Tj Holowaychuk 48481a7230 Docs 2010-10-15 10:12:42 -07:00
Tj Holowaychuk cbcaba3cec Merge branch 'master' into 1.x 2010-10-15 10:02:29 -07:00
Tj Holowaychuk dde6bc1f80 Faster dynamicHelper "merge" 2010-10-15 10:02:02 -07:00
Tj Holowaychuk e39fd1de0e Merge branch 'partials-inherit-locals' 2010-10-15 10:00:08 -07:00
Tj Holowaychuk 2fc9a81e9e Added partial local inheritance [suggested by masylum]. Closes #102 2010-10-15 09:55:04 -07:00
Tj Holowaychuk f65874d751 Added partial inheritance test 2010-10-15 09:40:11 -07:00
Tj Holowaychuk 3914895784 Added http status code string representation to res.redirect() body 2010-10-15 09:20:11 -07:00
Tj Holowaychuk 0bc7e24d0a res.redirect() supporting text/plain and text/html via Accept 2010-10-15 09:13:07 -07:00
Tj Holowaychuk 4e11fef43b Merge branch 'master' into 1.x 2010-10-15 08:26:04 -07:00
Tj Holowaychuk 2a40ceced7 Regenerated docs 2010-10-15 08:25:37 -07:00
Tj Holowaychuk d4868f2cc2 NODE_ENV=production docs, VERY IMPORTANT do this, or your app will be slow :p 2010-10-15 08:25:25 -07:00
Tj Holowaychuk 067fdd5c4c Merge branch 'master' into 1.x 2010-10-14 09:08:19 -07:00
Tj Holowaychuk e87d63779d More partial() docs 2010-10-14 09:08:13 -07:00
Tj Holowaychuk 6672d65018 Deduce partial object names from the last segment
user/role.ejs will use "role" as the object name by default
user.ejs will use "user"
forum/thread/post.jade will use "post"

etc
2010-10-14 08:56:49 -07:00
Tj Holowaychuk 1f78c520f5 Added test for collection option with an object 2010-10-14 08:39:05 -07:00
Tj Holowaychuk 687e435a38 Added CoffeeKup as a suggested template engine (let me know of others please :) ) 2010-10-14 04:21:20 -07:00
Tj Holowaychuk fff815f666 Merge branch 'master' into 1.x 2010-10-14 04:17:19 -07:00
Tj Holowaychuk b3222dc107 fixed bin/express 2010-10-14 04:17:15 -07:00
Tj Holowaychuk ebba6caa3d 2 spaces in bin/express 2010-10-14 04:15:44 -07:00
Tj Holowaychuk 88bbef9003 Merge branch 'indentation' 2010-10-14 04:07:37 -07:00
Tj Holowaychuk 712771a139 2 spaces in view.js 2010-10-14 04:07:29 -07:00
Tj Holowaychuk 9033b0ded7 2 spaces in utils.js 2010-10-14 04:02:23 -07:00
Tj Holowaychuk 877cfe9393 2 spaces in server.js 2010-10-14 04:01:35 -07:00
Tj Holowaychuk 347aa56acb 2 spaces in response.js 2010-10-14 03:58:44 -07:00
Tj Holowaychuk 0fc410139c 2 spaces in request.js 2010-10-14 03:54:26 -07:00
Tj Holowaychuk 609c18aa5b Merge branch 'master' into 1.x 2010-10-14 03:50:56 -07:00
Tj Holowaychuk 51528235db Regenerated docs 2010-10-14 03:50:33 -07:00
Tj Holowaychuk 003599cbda Release 1.0.0rc4 2010-10-14 03:50:10 -07:00
Tj Holowaychuk bacfad37a9 Updated connect submodule 2010-10-14 03:41:41 -07:00
Tj Holowaychuk 73c108ce90 Merge branch 'master' into 1.x 2010-10-14 03:03:24 -07:00
Tj Holowaychuk 6ef6ba7b8a Fix up app.register() docs. Closes #450
thank ya
2010-10-14 03:03:18 -07:00
Tj Holowaychuk 1e9da205a7 Merge branch 'master' into 1.x 2010-10-12 12:59:14 -07:00
Dav Glass 93c0da0367 Added tests for enable/disable of settings 2010-10-12 12:58:59 -07:00
Dav Glass 268d19e8a3 Added config option app.enable('jsonp callback') support 2010-10-12 12:58:59 -07:00
Dav Glass a383b302c2 Added callback query check on response.send to autowrap JSON objects for simple webservice implementations 2010-10-12 12:58:59 -07:00
Tj Holowaychuk 95ebbf2608 Updated jade submodule 2010-10-12 11:27:41 -07:00
Tj Holowaychuk f880574c78 Example typo 2010-10-12 10:09:20 -07:00
Tj Holowaychuk 350c310906 Fixed test typo 2010-10-12 09:49:15 -07:00
Tj Holowaychuk 5026f7686e Updated connect submodule 2010-10-12 09:48:49 -07:00
Tj Holowaychuk d5539c7beb Merge branch 'master' into 1.x 2010-10-12 08:46:48 -07:00
Tj Holowaychuk ab3337ddf5 Regenerated guide 2010-10-12 08:46:22 -07:00
Tj Holowaychuk c9268f2e3d Doc typo 2010-10-12 08:46:05 -07:00
Tj Holowaychuk fa01388f97 Updated connect-form submodule 2010-10-12 08:30:36 -07:00
Tj Holowaychuk d8dc89ac7b Updated jade submodule 2010-10-12 08:29:59 -07:00
Tj Holowaychuk f87bd8c38f Merge branch 'master' into 1.x 2010-10-11 08:37:49 -07:00
Tj Holowaychuk a659fd1fa9 Added partial() support for array-like collections. Closes #434 2010-10-11 08:37:42 -07:00
Tj Holowaychuk 05515fa09e Merge branch 'master' into 1.x 2010-10-11 08:18:01 -07:00
Tj Holowaychuk 27fa3ba34c Default env to "development" again [thanks aheckmann] 2010-10-11 08:17:52 -07:00
Tj Holowaychuk 35c91ed6f5 Merge branch 'master' into 1.x 2010-10-08 11:39:14 -07:00
Tj Holowaychuk 663f42948e Added support for swappable querystring parsers 2010-10-08 11:38:59 -07:00
Tj Holowaychuk baca8f0cdb Added guillermo to package.json contrib 2010-10-07 06:50:29 -07:00
Tj Holowaychuk c5c3a82b23 Removed another sys require 2010-10-07 06:45:48 -07:00
Tj Holowaychuk c0617864e1 Removed sys require 2010-10-07 06:45:14 -07:00
Tj Holowaychuk 26238c429d Merge branch 'master' into 1.x 2010-10-07 06:35:27 -07:00
Tj Holowaychuk d9ef9ab497 Merge branch 'perf/cache-dynamicHelpers' 2010-10-07 06:34:49 -07:00
Tj Holowaychuk 65d9f783e1 Added test for dynamic helper cache 2010-10-07 06:32:35 -07:00
Tj Holowaychuk f70232d1b0 Implemented dynamic helper cache. Closes #439 2010-10-07 06:29:58 -07:00
Tj Holowaychuk b083aed245 Doc cleanup 2010-10-07 05:57:27 -07:00
Tj Holowaychuk 0faac20d53 Regenerated docs 2010-10-07 05:53:14 -07:00
Tj Holowaychuk cef14ca7cd Fixed docs 2010-10-07 05:53:02 -07:00
Tj Holowaychuk 090debe0df Regenerated docs 2010-10-07 05:49:35 -07:00
Tj Holowaychuk 296f1270ee Ordering docs 2010-10-07 05:49:19 -07:00
Tj Holowaychuk 1b28ad16d4 Merge branch 'master' into 1.x 2010-10-07 05:46:45 -07:00
Tj Holowaychuk 334a18a114 Regenerated docs 2010-10-07 05:46:39 -07:00
Tj Holowaychuk dd4ddae082 Added route middleware docs 2010-10-07 05:46:26 -07:00
Tj Holowaychuk 4983e967bc Added route-middleware example 2010-10-07 05:28:09 -07:00
Tj Holowaychuk 0b5e2f14ed Updated ejs submodule 2010-10-07 04:28:11 -07:00
Tj Holowaychuk 70102aecb5 Fixed mvc example 2010-10-07 04:15:34 -07:00
Tj Holowaychuk e29f3aa5dd Merge branch 'master' into 1.x 2010-10-07 03:50:02 -07:00
Tj Holowaychuk ae75153561 Merge branch 'features/route-middleware' 2010-10-07 03:49:58 -07:00
Tj Holowaychuk dd23d60513 Recursively apply route middleware 2010-10-07 03:49:38 -07:00
Tj Holowaychuk db95481b76 Added another route middleware test 2010-10-07 03:46:20 -07:00
Tj Holowaychuk 3e0da535b9 Implemented route middleware with arrays 2010-10-07 03:45:23 -07:00
Tj Holowaychuk c74602551e Added test for multiple route middleware 2010-10-07 03:40:54 -07:00
Tj Holowaychuk 1722e2c7a5 Implemented route middleware support 2010-10-07 03:30:39 -07:00
Tj Holowaychuk 8a845e2951 Auth example using route middleware 2010-10-07 03:21:07 -07:00
Tj Holowaychuk 72765bada0 Typo in auth example 2010-10-07 03:16:40 -07:00
Tj Holowaychuk 5c94603787 Merge branch 'master' into 1.x 2010-10-07 02:36:41 -07:00
Tj Holowaychuk b380f180cc Links 2010-10-07 02:36:34 -07:00
Tj Holowaychuk 9409107f77 Merge branch 'master' into 1.x 2010-10-06 08:26:29 -07:00
Tj Holowaychuk f1799799a1 Regenerated guide 2010-10-06 08:26:01 -07:00
Tj Holowaychuk 4bc8a8673d More session docs 2010-10-06 08:25:49 -07:00
Tj Holowaychuk 7f11aa25ea Merge branch 'master' into 1.x 2010-10-05 06:32:50 -07:00
Tj Holowaychuk cbdd907393 Added logger to pages example 2010-10-05 06:31:21 -07:00
Tj Holowaychuk aa7ff3ef47 typo 2010-10-05 06:27:17 -07:00
Tj Holowaychuk ebdf6434eb Fixing up examples a bit 2010-10-05 06:14:19 -07:00
Tj Holowaychuk 9b7470d204 Exposing ./support libs to examples 2010-10-05 06:08:53 -07:00
Tj Holowaychuk 9f3ab8683c Added log lines to more examples 2010-10-05 06:01:26 -07:00
Tj Holowaychuk fa464aca90 Updated jade submodule 2010-10-05 05:56:42 -07:00
Tj Holowaychuk 2724ce368a Rebuilt docs 2010-10-04 11:17:29 -07:00
Tj Holowaychuk 1994f24d82 Merge branch 'master' into 1.x 2010-10-04 11:16:56 -07:00
Tj Holowaychuk 89f7cbe877 Added session usage docs. Closes #443 2010-10-04 11:16:46 -07:00
Tj Holowaychuk b5b30a3f20 Merge branch 'master' into 1.x 2010-10-04 11:06:33 -07:00
Tj Holowaychuk fab9af2206 Merge branch 'range' 2010-10-04 11:06:15 -07:00
Tj Holowaychuk 4d01b4fa59 Handling invalid ranges 2010-10-04 08:36:57 -07:00
Tj Holowaychuk c3365aa37e Merge branch 'master' into range 2010-10-04 08:14:30 -07:00
Tj Holowaychuk 4fcbb961eb Merge branch 'master' into 1.x 2010-10-04 08:04:12 -07:00
Tj Holowaychuk 426e80d4c3 Updated jade submodule 2010-10-04 08:04:00 -07:00
Tj Holowaychuk 30a282d126 Updated connect submodule 2010-10-04 08:03:51 -07:00
Tj Holowaychuk 11cfad755a Merge branch 'master' into 1.x 2010-10-04 08:01:30 -07:00
Tj Holowaychuk 0a96621e3e Docs for layout option 2010-10-04 08:01:17 -07:00
Tj Holowaychuk 0b24bd08c9 Merge branch 'master' into 1.x 2010-10-01 16:33:34 -07:00
Tj Holowaychuk d9d30abe7a Updated docs to use NODE_ENV 2010-10-01 16:33:27 -07:00
Tj Holowaychuk b377839538 Merge branch 'master' into 1.x 2010-10-01 16:31:40 -07:00
Tj Holowaychuk 03b56d8140 Implement NODE_ENV, EXPRESS_ENV is now deprecated
spark, connect, and express will from now on utilize NODE_ENV.
EXPRESS_ENV support will remain until 1.0
2010-10-01 16:31:32 -07:00
Tj Holowaychuk 1f79ce4e96 Updated connect submodule 2010-10-01 16:26:09 -07:00
Tj Holowaychuk 8d80f23a0f antialiased text 2010-10-01 07:53:56 -07:00
Tj Holowaychuk d89b951451 HTTP verb docs. Closes #415 2010-10-01 07:51:19 -07:00
Tj Holowaychuk 698d82f799 Merge branch 'master' into 1.x 2010-10-01 07:34:14 -07:00
Tj Holowaychuk 1906a38ec8 express(1) app using 2 spaces instead of 4 2010-09-26 08:24:48 -07:00
Tj Holowaychuk 462a291eb8 Merge branch 'master' into 1.x 2010-09-23 09:37:05 -07:00
Tj Holowaychuk 8d91a3e3b8 Updated jade submodule 2010-09-23 09:24:56 -07:00
Tj Holowaychuk 3324259977 Updated connect submodule 2010-09-23 09:24:52 -07:00
Tj Holowaychuk 79dc2467f7 Merge branch 'master' into 1.x 2010-09-22 16:09:15 -07:00
Tj Holowaychuk ec2db2d541 Fixed mvc example listen() call 2010-09-22 16:08:38 -07:00
Tj Holowaychuk 0a0c86813d Merge branch 'master' into 1.x 2010-09-22 12:03:42 -07:00
Tj Holowaychuk 5cf248c7f3 Merge branch 'auth-example' 2010-09-22 12:03:28 -07:00
Tj Holowaychuk 3876a566ff Added authentication example
very raw and minimal but gives people and idea
2010-09-22 12:03:18 -07:00
Tj Holowaychuk 334e6cc618 Started auth example 2010-09-22 10:36:15 -07:00
Tj Holowaychuk 64033fcfc2 Extended utils.parseRange() 2010-09-22 09:34:05 -07:00
Tj Holowaychuk fbe3af4719 Added utils.parseRange() tests 2010-09-22 09:29:25 -07:00
Tj Holowaychuk 699ed4ee85 Started naive Range support 2010-09-22 09:06:11 -07:00
Tj Holowaychuk 903f67a154 Started utils.parseRange() 2010-09-22 08:48:22 -07:00
Tj Holowaychuk 9a89dab9e0 Added Range test 2010-09-22 08:41:20 -07:00
Tj Holowaychuk 435a2565b8 Added Accept-Ranges: bytes 2010-09-22 08:29:48 -07:00
Tj Holowaychuk 8267b8da57 Added res.sendfile() Accept-Ranges test 2010-09-22 08:29:22 -07:00
Tj Holowaychuk dfdc939816 Multipart typo 2010-09-21 12:39:14 -07:00
Tj Holowaychuk 8b5773c246 Multipart typo 2010-09-21 12:38:42 -07:00
Tj Holowaychuk fd4c88d202 Updated docs 2010-09-21 09:21:11 -07:00
Tj Holowaychuk 9b26623aa5 View scope now defaults to the request
No longer the response, as this is more useful for obtaining urls etc
2010-09-21 09:20:04 -07:00
Tj Holowaychuk b115ec7c14 "context" option is no more, use "scope" 2010-09-21 09:18:22 -07:00
Tj Holowaychuk a2e6e2a06a Pass true for res.sendfile() callback when streamed
This is potentially useful since we can no longer
respond, however with readFile() we can respond with a 500
page or similar
2010-09-21 08:51:07 -07:00
Tj Holowaychuk f0eab06a8b Updated docs 2010-09-20 09:54:01 -07:00
Tj Holowaychuk b6c839d693 Release 1.0.0rc3 2010-09-20 09:50:38 -07:00
Tj Holowaychuk 177a724d58 res.sendfile() responding with 403 on malicious path 2010-09-20 09:16:01 -07:00
Tj Holowaychuk 949803dcf6 Merge branch 'downloads' 2010-09-20 09:06:46 -07:00
Tj Holowaychuk b763a88e60 Docs for "stream threshold" setting 2010-09-20 09:06:43 -07:00
Tj Holowaychuk 18c7f164a8 res.sendfile() using sys.pump() when >= "stream threshold" 2010-09-20 08:41:08 -07:00
Tj Holowaychuk e037ff6bba Added Content-Length assertion for res.sendfile() 2010-09-20 08:23:16 -07:00
Tj Holowaychuk 95bfda1ff0 res.sendfile() using fs.stat() 2010-09-20 08:19:21 -07:00
Tj Holowaychuk b9992e0b45 Refactored res.sendfile() 2010-09-20 08:18:38 -07:00
Tj Holowaychuk f6ba793885 Merge branch 'download-example' 2010-09-18 10:25:05 -07:00
Tj Holowaychuk bbe65a8ea3 Fixed res.download() bug; when an error occurs remove Content-Disposition
Previously if you tried to show a 404 page (or similar)
on a failed res.download(), the browser would still prompt for download
2010-09-18 10:25:00 -07:00
Tj Holowaychuk 20af7371d0 Added download example 2010-09-18 10:21:37 -07:00
Tj Holowaychuk a33fb0c439 Added widescript link 2010-09-14 15:56:21 -07:00
Tj Holowaychuk 87003c8b5b Fixed tests for node --version 0.2.1 2010-09-14 08:18:13 -07:00
Tj Holowaychuk ddd48ee79f Added LICENSE as requested by davglass 2010-09-14 07:59:30 -07:00
Tj Holowaychuk a9819df3ee res.send() HEAD support 2010-09-13 12:05:28 -07:00
Tj Holowaychuk 15dffb22aa Updated connect submodule 2010-09-13 11:58:49 -07:00
Tj Holowaychuk 6ef5f1ff62 Merge branch 'integration' 2010-09-13 11:24:33 -07:00
Tj Holowaychuk acc28c68a4 Refactored app.set() 2010-09-13 11:24:20 -07:00
Aaron Heckmann 6c2da60eb0 add test for inherited mounted app settings 2010-09-13 11:20:49 -07:00
Aaron Heckmann 490081077d mounted apps settings now inherited from parent app 2010-09-13 11:20:49 -07:00
Tj Holowaychuk f4a08092da Merge branch 'guide' 2010-09-13 11:14:55 -07:00
Tj Holowaychuk 0116efd4a3 Removed manpage crap from site 2010-09-13 11:14:41 -07:00
Tj Holowaychuk 9719a24f8a Toggling menus 2010-09-13 11:11:47 -07:00
Tj Holowaychuk 3a7d5a099b TOC sections 2010-09-13 11:03:17 -07:00
Tj Holowaychuk 27dba655fc Uncommented cookie assertions previously failing 2010-09-13 10:11:28 -07:00
Tj Holowaychuk a25dd387bf Refactored res.redirect() 2010-09-13 10:10:03 -07:00
Tj Holowaychuk a89767cc16 Cookie docs 2010-09-13 09:52:33 -07:00
Tj Holowaychuk a13df5b68d Added test for res.clearCookie() 2010-09-13 09:44:42 -07:00
Tj Holowaychuk 6a689504ff Fixed res.cookie() test 2010-09-13 09:44:02 -07:00
Tj Holowaychuk 6521d2bcfb Merge branch 'features/cookie' 2010-09-13 09:43:37 -07:00
Tj Holowaychuk 26d55b15de Added cookies example 2010-09-13 09:43:13 -07:00
Tj Holowaychuk 041b7e8a29 Added res.cookie() and res.clearCookie() 2010-09-13 09:43:07 -07:00
Tj Holowaychuk 6eeb425e7a Updated jade submodule 2010-09-11 13:09:39 -07:00
Tj Holowaychuk d2d0eb829e Updated jade submodule 2010-09-10 13:19:14 -07:00
Tj Holowaychuk 058505b664 Updated connect submodule 2010-09-10 13:19:11 -07:00
Tj Holowaychuk 8adecedb40 Added test to confirm view helper usage w/ ejs 2010-09-08 10:49:29 -07:00
Tj Holowaychuk 838a51db21 Merge branch 'master' of github.com:visionmedia/express 2010-09-06 14:06:50 -07:00
Tj Holowaychuk 4d4dfc27fc Updated connect submodule 2010-09-06 14:06:35 -07:00
Tj Holowaychuk 1444439cf3 Wiki 2010-09-06 11:37:48 -07:00
Tj Holowaychuk e64fc8d5ab node dep 2010-09-06 11:03:33 -07:00
Tj Holowaychuk 9a31f772d9 Added contrib link 2010-09-06 10:59:56 -07:00
Tj Holowaychuk 12876ee4ce Added res.send() as 204 in the guide 2010-09-06 10:15:32 -07:00
Tj Holowaychuk a4a349da45 Stripping Content-Length / Content-Type when 204 2010-09-06 10:10:59 -07:00
Tj Holowaychuk ecbc3cae71 res.send() as 204. Closes #419 2010-09-06 10:05:39 -07:00
Tj Holowaychuk 57609c87fb Merge branch 'features/render-status' 2010-09-06 09:44:46 -07:00
Tj Holowaychuk bb2e24e028 Added docs for render() status / headers 2010-09-06 09:44:32 -07:00
Tj Holowaychuk 5cafb26e93 Fixed pages example w/ render() status 2010-09-06 09:43:17 -07:00
Tj Holowaychuk f74ef7b293 Added render() headers option 2010-09-06 09:42:00 -07:00
Tj Holowaychuk 7ef8f531e7 Added render() status option support. Closes #425 2010-09-06 09:38:23 -07:00
Tj Holowaychuk afb65c7b19 Added render() status test 2010-09-06 09:36:22 -07:00
Tj Holowaychuk 74a0673663 Better app.helper() test 2010-09-06 09:11:27 -07:00
Tj Holowaychuk 20fae6e512 Updated jade submodule 2010-09-02 17:08:08 -07:00
Tj Holowaychuk 509cd242f7 Updated connect submodule 2010-09-02 17:06:50 -07:00
Tj Holowaychuk f01ec516eb Updated connect submodule 2010-09-02 09:50:04 -07:00
Tj Holowaychuk 394b1000d2 Updated ejs submodule 2010-08-30 17:46:16 -07:00
Tj Holowaychuk e0b9fba788 Updated jade submodule 2010-08-30 17:46:13 -07:00
Tj Holowaychuk 378ee29cc2 Updated connect submodule 2010-08-30 16:14:06 -07:00
Tj Holowaychuk 02bcef71dd Updated jade submodule 2010-08-27 13:47:48 -07:00
Tj Holowaychuk 248e7c8003 Updated connect submodule 2010-08-27 13:47:41 -07:00
Tj Holowaychuk a2e93ebd56 Fixed Connect links 2010-08-27 12:40:33 -07:00
Tj Holowaychuk 21a9454de1 Merge branch 'confirmation' 2010-08-27 12:38:23 -07:00
Tj Holowaychuk ec286eed08 Added confirmation for express(1) app generation. Closes #391 2010-08-27 12:38:19 -07:00
Tj Holowaychuk f16978d1fe Added flash formatter docs 2010-08-27 12:17:57 -07:00
Tj Holowaychuk fa3adc7606 Merge branch 'flash-formatting' 2010-08-27 12:15:23 -07:00
Tj Holowaychuk 192144fc5d Added extending of flash formatters via app.flashFormatters 2010-08-27 12:15:18 -07:00
Tj Holowaychuk a4d155c5e4 Added flash formatter support. Closes #411 2010-08-27 12:09:55 -07:00
Tj Holowaychuk 6c56e9d199 Added failing assertion for flash formatters 2010-08-27 11:59:29 -07:00
Tj Holowaychuk bb18f87a98 Merge branch 'fix-toc' 2010-08-27 10:13:13 -07:00
Tj Holowaychuk dda6a31381 Fixed TOC. Closes #404 [thanks weaver] 2010-08-27 10:13:08 -07:00
Tj Holowaychuk 6e25e18e98 express(1) now outputting listening msg, and express.MIDDLEWARE vs connect.MIDDLWARE 2010-08-24 13:52:26 -07:00
Tj Holowaychuk ffd978c24f Updated node --version support 2010-08-24 13:35:40 -07:00
Tj Holowaychuk 4c4af03a5a Doc typos 2010-08-24 13:22:52 -07:00
Tj Holowaychuk c0739bb8b7 Fixed bug messing with error handlers when listenFD() is called instead of listen(). [thanks guillermo]
programs such as "spark" call listenFD() to call listen(1) with
a file descriptor, BUT Express was only proxying listen()
to register these handlers. Thanks for catching this bug guillermo!
2010-08-24 13:21:28 -07:00
Tj Holowaychuk 5add7cb0b1 Merge branch 'mvc' 2010-08-24 13:06:53 -07:00
Tj Holowaychuk 99f49f1061 Fixed MVC 500 error example 2010-08-24 13:06:50 -07:00
Tj Holowaychuk 401eaca9ab Mvc example typo 2010-08-24 12:58:30 -07:00
Tj Holowaychuk da784fe02b Added 500 page to mvc example 2010-08-24 12:56:34 -07:00
Tj Holowaychuk d507b29559 Added .json format support to the mvc example 2010-08-24 12:10:29 -07:00
Tj Holowaychuk 35ca13b38d Merge branch 'form' 2010-08-24 10:49:56 -07:00
Tj Holowaychuk 04b92a31a8 Added keepExtensions: true to multipart example 2010-08-24 10:49:52 -07:00
Tj Holowaychuk dd311d759d Better 404 Not Found example 2010-08-20 21:39:35 -07:00
Tj Holowaychuk b504ca9f0a Merged mvc example. Closes #405 2010-08-20 18:09:56 -07:00
Tj Holowaychuk bd61c5c721 Fixed hasMessages dynamic helper 2010-08-20 18:04:01 -07:00
Tj Holowaychuk 24694b0047 mvc styling 2010-08-20 18:03:12 -07:00
Tj Holowaychuk 5258154285 Added 404 page to mvc example 2010-08-20 17:58:29 -07:00
Tj Holowaychuk 221f993b46 Misc refactoring of mvc example 2010-08-20 17:53:55 -07:00
Tj Holowaychuk ae5ea70b93 Editing of email for mvc example as well 2010-08-20 17:29:01 -07:00
Tj Holowaychuk f59ffbeb63 Implemented simple user editing 2010-08-20 17:27:21 -07:00
Tj Holowaychuk ce55275634 ejs parsing *.html for mvc example 2010-08-20 17:11:30 -07:00
Tj Holowaychuk 20c5892f9a More work on mvc example 2010-08-20 17:08:10 -07:00
Tj Holowaychuk 9231245a3f Started mvc example 2010-08-20 16:50:23 -07:00
Tj Holowaychuk cbfed20e6f Updated ejs submodule 2010-08-20 16:23:49 -07:00
Tj Holowaychuk 640274ed52 Merge branch 'redirect-bodies' 2010-08-20 12:30:06 -07:00
Tj Holowaychuk 1507a39a2b res.redirect() using res.send()
Allows for setting of arbitrary headers via res.header()
2010-08-20 12:21:29 -07:00
Tj Holowaychuk e6405653d8 Added res.redirect() Content-Type of text/plain for now 2010-08-20 12:19:08 -07:00
Tj Holowaychuk be1541a646 Added res.redirect() response bodies 2010-08-20 12:17:52 -07:00
Tj Holowaychuk f37f9bf5e3 Updated connect submodule 2010-08-20 08:42:18 -07:00
Tj Holowaychuk a5c39ca8c8 Merge branch 'set-cookie' 2010-08-20 08:41:10 -07:00
Tj Holowaychuk cb7e7b2a74 Pass res.send() headers through res.header() 2010-08-20 08:41:06 -07:00
Tj Holowaychuk 2e8e705bab Fixed multiple Set-Cookie headers via res.header(). Closes #402 2010-08-20 08:29:21 -07:00
Tj Holowaychuk ab3812432b Updated expresso submodule 2010-08-19 11:44:42 -07:00
Tj Holowaychuk d2acb36e3b Updated connect submodule 2010-08-19 11:44:40 -07:00
Tj Holowaychuk 601743ff7a Added boilerplate example 2010-08-18 17:41:06 -07:00
Tj Holowaychuk 7eca74ac05 Updated node --version in readme 2010-08-17 16:45:42 -07:00
Tj Holowaychuk 02b4ec04bb Doc typos 2010-08-17 16:08:02 -07:00
Tj Holowaychuk 8ead9014d0 Regenerated docs again 2010-08-17 13:15:54 -07:00
Tj Holowaychuk 4920e82dd6 Regenerated docs 2010-08-17 13:12:21 -07:00
Tj Holowaychuk 3150253661 Release 1.0.0rc2 2010-08-17 13:09:17 -07:00
Tj Holowaychuk baa423b45a Updated connect submodule 2010-08-16 13:49:33 -07:00
Tj Holowaychuk 77e5d8ea96 Added app.register() docs 2010-08-15 10:20:33 -07:00
Tj Holowaychuk 9a8166d649 Added app.register() for template engine mapping. Closes #390
This is not exactly what you requested, but
I think this is a better approach. With old Express
I used to have "foo.ejs.html" "foo.haml.html" etc,
but that is super verbose.

This will allow for non-authors to support non-compliant
engines without modifying the original module, as well
as having things like .html render with jade
2010-08-15 10:13:47 -07:00
Tj Holowaychuk da8c0cd2db Removed clearCache()
its useless ATM
2010-08-15 09:54:51 -07:00
Tj Holowaychuk fc2711b543 Fixed bug with undefined path 2010-08-12 14:57:36 -07:00
Tj Holowaychuk b4327bd36c Merge branch 'render-callback' 2010-08-11 16:29:10 -07:00
Tj Holowaychuk f7f75923aa Added res.render() callback support as second argument
This previously was not valid:

    res.render(foo, function(){});
2010-08-11 16:28:24 -07:00
Tj Holowaychuk 0b4388bc5b Added test to confirm res.render() callback with layouts 2010-08-11 16:25:31 -07:00
Tj Holowaychuk f08883071f Updated app list 2010-08-11 10:11:20 -07:00
Tj Holowaychuk bb8a2ee3a6 Updated expresso submodule 2010-08-11 09:32:59 -07:00
Tj Holowaychuk 6bfa7595d8 Added callback support to res.download() 2010-08-09 16:11:00 -07:00
Tj Holowaychuk 8308e501cd Fixed res.sendfile() error handling, defer via next()
No need to be so specific here.
2010-08-09 16:04:41 -07:00
Tj Holowaychuk 25909c0d9d Added callback support for res.sendfile() 2010-08-09 16:00:23 -07:00
Tj Holowaychuk 2844b1ac38 Fixed test labels 2010-08-09 15:57:27 -07:00
Tj Holowaychuk 6fd62b1cee No need to pass params in app.redirect() 2010-08-09 09:19:44 -07:00
Tj Holowaychuk 1579f53a61 Updated connect submodule 2010-08-09 08:50:33 -07:00
Tj Holowaychuk 7af7851952 Fixed res.download() test 2010-08-09 08:06:01 -07:00
Tj Holowaychuk 5dbd1a6dcc Merge branch 'format-example' 2010-08-09 08:03:00 -07:00
Tj Holowaychuk 24881537a1 Fixed format example 2010-08-09 08:02:38 -07:00
Tj Holowaychuk 631c29b26b Updated connect submodule 2010-08-09 07:57:45 -07:00
Tj Holowaychuk ab249d4032 Added format example 2010-08-09 07:46:29 -07:00
Tj Holowaychuk 5bfa3f6274 Merge branch 'helper-precedence' 2010-08-09 07:32:20 -07:00
Tj Holowaychuk 82ee25dfaa Added test helper local precedence test 2010-08-09 07:32:12 -07:00
Tj Holowaychuk fd9a24553f Added another dynamicHelper example to flash example 2010-08-09 07:22:33 -07:00
Tj Holowaychuk ae1c20fad9 Fixed flash example. Closes #392 2010-08-09 07:19:55 -07:00
Tj Holowaychuk 734f777ff9 Added failing test for view helper precedence 2010-08-06 16:13:21 -07:00
Tj Holowaychuk 498115d5d9 Merge branch 'fix-error' 2010-08-06 09:04:08 -07:00
Tj Holowaychuk 033ff06b68 More app.error() docs 2010-08-06 09:04:04 -07:00
Tj Holowaychuk c145a8e1a1 Changed "pages" example to show error() handlers defined above routes 2010-08-06 09:01:09 -07:00
Tj Holowaychuk ae5b0dbc29 Fixed issue preventing error handlers from being defined anywhere. Closes #387
Now we can define them in configure() callbacks etc
2010-08-06 08:59:16 -07:00
Tj Holowaychuk 95aa957c80 Altered app.error() tests to reflect issue #387 2010-08-06 08:48:17 -07:00
Tj Holowaychuk 7dff9ddeeb Merge branch 'flash-example' 2010-08-05 17:12:33 -07:00
Tj Holowaychuk b4e755747f Fixed dynamic helper in flash example 2010-08-05 17:12:18 -07:00
Tj Holowaychuk 348fa402be Started flash example 2010-08-05 16:51:07 -07:00
Tj Holowaychuk 344218ff3d Updated docs 2010-08-05 16:19:06 -07:00
Tj Holowaychuk 90a1a2febf Updated examples to use express.<middleware> 2010-08-05 16:10:22 -07:00
Tj Holowaychuk e234a24894 Re-exporting connect middleware auto-loaders 2010-08-05 15:56:33 -07:00
Tj Holowaychuk d9beb75bd6 Updated connect submodule 2010-08-05 15:51:27 -07:00
Tj Holowaychuk dadea8c83d Merge branch 'fix-layouts' 2010-08-05 13:57:02 -07:00
Tj Holowaychuk 31d40e5509 Updated connect submodule 2010-08-05 13:32:22 -07:00
Tj Holowaychuk a917e84b51 Fixed latest test 2010-08-05 11:59:58 -07:00
Tj Holowaychuk f30b497206 Added failing layout test 2010-08-05 11:47:35 -07:00
Tj Holowaychuk 706e32c20b Merge branch 'app-level-view-options' 2010-08-05 09:46:03 -07:00
Tj Holowaychuk 4d98552c37 Docs for "view options" 2010-08-05 09:45:56 -07:00
Tj Holowaychuk 5311bd3f4e Added app level view options
via the "view options" setting
2010-08-05 09:41:26 -07:00
Tj Holowaychuk 8d716fb7ba Added test for "view options" setting 2010-08-05 09:31:14 -07:00
Tj Holowaychuk 01b3caaf49 Updated ejs submodule 2010-08-05 09:21:47 -07:00
Tj Holowaychuk cd73c0b9ca Updated expresso submodule 2010-08-05 08:48:25 -07:00
Tj Holowaychuk 7ec5230402 make install-docs creating PREFIX/share/man/man1 when not present 2010-08-04 09:45:16 -07:00
Tj Holowaychuk 9dbe026f83 make install creating ~/.node_libraries when not present 2010-08-04 09:43:58 -07:00
Tj Holowaychuk 3fae10da3e Merge branch 'integration' 2010-08-04 09:13:25 -07:00
Tj Holowaychuk d775154b92 Added "partials" setting to docs 2010-08-04 09:13:21 -07:00
Tj Holowaychuk 6c306b3542 Fixed "partials" setting 2010-08-04 09:10:58 -07:00
Nick Poulden 58b46ffeac Optionally set partials directory 2010-08-04 09:04:50 -07:00
Tj Holowaychuk 0bb7b7c60e Updated connect submodule 2010-08-04 08:35:16 -07:00
Tj Holowaychuk 58adf9a385 Updated jade submodule 2010-08-04 08:33:18 -07:00
Tj Holowaychuk d6ba968ace Updated expresso 2010-08-04 07:56:26 -07:00
Tj Holowaychuk 1706721a62 Updated ejs 2010-08-04 07:56:11 -07:00
Tj Holowaychuk 7f88bd2eaf Added isLayout property
Aid introspection for another project I am working on
2010-08-03 15:52:20 -07:00
Tj Holowaychuk b819366265 Updated docs 2010-08-03 14:53:35 -07:00
Tj Holowaychuk 47ff7d9dba Fixed doc typo 2010-08-03 14:53:31 -07:00
Tj Holowaychuk e5f5254877 Added default expresso tests to express(1) generated app. Closes #384 2010-08-03 09:57:24 -07:00
Tj Holowaychuk 4778f728f9 Updated ejs submodule 2010-08-02 10:37:03 -07:00
Tj Holowaychuk e80e4573be Updated jade submodule 2010-08-02 09:04:50 -07:00
Tj Holowaychuk fdf0f3f282 Fixed multipart app example 2010-08-02 07:35:38 -07:00
Tj Holowaychuk a81fce47d0 Updated docs 2010-07-31 07:18:35 -07:00
Tj Holowaychuk 2cd6989b11 Fixed some inline comments 2010-07-31 07:18:29 -07:00
Tj Holowaychuk 21abb0d205 Fixed readme version of node 2010-07-30 18:09:51 -07:00
Tj Holowaychuk 5e1a271ca2 Fixed res.render() callback when a layout is used [thanks guillermo] 2010-07-30 16:52:35 -07:00
Tj Holowaychuk 868e4c41e1 Added storify link 2010-07-30 12:51:50 -07:00
Tj Holowaychuk a6e23bb713 Fixed connect dependency version 2010-07-30 10:50:54 -07:00
Tj Holowaychuk 446406dd62 Removed --growl from make test 2010-07-30 10:47:00 -07:00
Tj Holowaychuk 091f9f7eae Test typo 2010-07-30 10:45:35 -07:00
Tj Holowaychuk 10b1e06263 Updated docs 2010-07-30 10:41:12 -07:00
Tj Holowaychuk a8865a51fd Misc docs 2010-07-30 10:29:58 -07:00
Tj Holowaychuk 32343297fc Updated docs 2010-07-30 10:21:33 -07:00
Tj Holowaychuk aaa5deb0c0 Release 1.0.0rc 2010-07-30 10:16:30 -07:00
Tj Holowaychuk 808c519a1f Added doc contrib .. docs :) 2010-07-28 12:48:41 -07:00
Tj Holowaychuk 262b110f9f Removed "reload views" setting and support code
development env will always bypass cache,
however production will not
2010-07-28 11:22:29 -07:00
Tj Holowaychuk d0fe19f996 Added e-resistible.co.uk link 2010-07-28 09:39:29 -07:00
Tj Holowaychuk 8e6675677f Removed direct CONNECT_ENV support
it is now SPARK_ENV, grr tim
2010-07-28 08:55:13 -07:00
Tj Holowaychuk 82dbae6185 Check CONNECT_ENV before connectEnv.name 2010-07-28 08:52:49 -07:00
Aaron Heckmann 943f1df325 typo 2010-07-28 08:27:51 -07:00
Tj Holowaychuk 018abcfe5f Added jade submodule back. Closes #376
This should work hopefully,
not sure what happened there probably
because I forced a push yesterday
2010-07-28 08:25:33 -07:00
Tj Holowaychuk 6b4f716508 Removed jade 2010-07-28 08:24:46 -07:00
Tj Holowaychuk 82b6ff0c28 Added http://clickdummy.net/ link 2010-07-27 15:33:35 -07:00
Tj Holowaychuk d0c3132a63 Updated jade submodule 2010-07-27 14:23:22 -07:00
Tj Holowaychuk 02f0252dea Added http://codeshelver.com/ link 2010-07-27 12:23:21 -07:00
Tj Holowaychuk 74b3921eee Undocumented cache option
Dont pass this manually,
production mode sets cache to true
2010-07-27 12:14:57 -07:00
Tj Holowaychuk 1695c79021 Added wtfjs.com 2010-07-27 10:06:09 -07:00
Tj Holowaychuk a3b0534b86 Updated docs 2010-07-27 10:03:52 -07:00
Tj Holowaychuk a13f94d40f Updated node news url 2010-07-27 09:42:16 -07:00
Tj Holowaychuk 73288420a8 Added "Apps using express" section, PM me to add to the list 2010-07-27 09:30:27 -07:00
Tj Holowaychuk e224387eb4 Misc refactoring 2010-07-27 09:08:40 -07:00
Tj Holowaychuk 626d322639 < 78 cols in view.js so people stop complaining :D 2010-07-27 09:07:37 -07:00
Tj Holowaychuk 7dce7a84c7 Added connect to package.json 2010-07-27 08:10:33 -07:00
Tj Holowaychuk 6234268f10 Updated docs 2010-07-26 17:02:31 -07:00
Tj Holowaychuk 7a1525c568 Defaulting app.enable("reload views") to 500ms 2010-07-26 17:01:08 -07:00
Tj Holowaychuk fe99eb7147 Fixed a dynamic helper assertion 2010-07-26 13:50:06 -07:00
Tj Holowaychuk d691ecbea3 Updated docs 2010-07-26 13:49:37 -07:00
Tj Holowaychuk f60bcca893 Updated examples 2010-07-26 13:36:21 -07:00
Tj Holowaychuk 75661a2266 Route callback signature changed
it is now like Express used to be: (req, res, next)
instead of: (req, res, params, next)

access via req.params
2010-07-26 13:29:16 -07:00
Tj Holowaychuk 1026f361ef req.params.get is now req.query 2010-07-26 13:27:12 -07:00
Tj Holowaychuk 69fe203006 Fixed param tests 2010-07-26 13:25:04 -07:00
Tj Holowaychuk f8ccaa3a81 Updated configuration docs 2010-07-26 09:57:07 -07:00
Tj Holowaychuk c10a0a0cdf Style fixes 2010-07-26 09:49:04 -07:00
ewoudj aceb6ab666 Fixed issue where options.cache was always ignored in view.js. 2010-07-26 09:48:31 -07:00
Tj Holowaychuk c3a2aff9d3 Blog example using "home" 2010-07-26 08:59:26 -07:00
Tj Holowaychuk c9e41db826 Updated express(1). Closes #365 2010-07-26 08:48:34 -07:00
Tj Holowaychuk 1e7a12fff5 New "home" docs 2010-07-26 08:42:40 -07:00
Tj Holowaychuk ba88e48f6a Rebuilt docs 2010-07-26 08:36:11 -07:00
Tj Holowaychuk 52979662c5 Added docs for Server#mounted() 2010-07-26 08:30:10 -07:00
Tj Holowaychuk 50e6d80065 Added mounted hook. Closes #369 2010-07-26 08:27:36 -07:00
Tj Holowaychuk 16a24cfeac Merge branch 'fix-home' 2010-07-26 08:12:22 -07:00
Tj Holowaychuk bab095e5b5 Fixed "home" setting
Now when you use() an app, both the mounted
route and previous home setting are respected.

For example if you have an app mounted to
/blog, and "home" for blog is /posts, home
will become "/blog/posts"
2010-07-26 08:12:18 -07:00
Tj Holowaychuk b1a3b078e9 Added failing "home" setting test 2010-07-26 08:01:26 -07:00
Tj Holowaychuk baae44610a Merge branch 'fix-config' 2010-07-26 07:49:34 -07:00
Tj Holowaychuk 8d2dffe5b4 Fixed middleware/router precedence issue. Closes #366
You can now "use" your router in configure()
blocks where ever you wish, ex:

  app.use(connect.bodyDecoder())
  app.use(app.router)
  app.use(connect.staticProvider())
2010-07-26 07:49:29 -07:00
Tj Holowaychuk 7b3eb23af8 Fixed; configure() callbacks called immediately. Closes #368 2010-07-26 07:45:26 -07:00
Tj Holowaychuk fb526846fe Added failing test for config precedence 2010-07-26 07:35:38 -07:00
Tj Holowaychuk 6bd1371283 Added app.configure() immediate call test 2010-07-26 07:32:57 -07:00
Tj Holowaychuk 3c8c7af196 Updated docs 2010-07-23 17:14:09 -07:00
Tj Holowaychuk 929b43ed48 Fixed changelog typo 2010-07-23 17:09:57 -07:00
Tj Holowaychuk a947064b7d Release 1.0.0beta2 2010-07-23 17:06:47 -07:00
Tj Holowaychuk 5bc9866f43 Added range example to resource 2010-07-23 16:57:12 -07:00
Tj Holowaychuk 61d82e210a Added / to resource example 2010-07-23 16:50:30 -07:00
Tj Holowaychuk a876ac9386 Updated submodules 2010-07-23 16:42:08 -07:00
Tj Holowaychuk da1502c463 Updated expresso submodule 2010-07-23 16:12:27 -07:00
Tj Holowaychuk 76bb782f64 Added support for absolute view paths 2010-07-23 16:12:07 -07:00
Tj Holowaychuk e6f4b043cb Added test for absolute view path 2010-07-23 16:10:15 -07:00
Tj Holowaychuk d651ffaf2e Added failing test for absolute layouts 2010-07-23 16:09:06 -07:00
Tj Holowaychuk e554378b5e s/foo/relative/ 2010-07-23 16:07:58 -07:00
Tj Holowaychuk b463bd797e Added test for layouts in a directory 2010-07-23 16:07:36 -07:00
Tj Holowaychuk 699e6e16c9 Merge branch 'render-next' 2010-07-22 14:15:05 -07:00
Tj Holowaychuk f8477c41e1 res.render() exceptions passed to next() when no callback is given 2010-07-22 14:14:59 -07:00
Tj Holowaychuk 9a63333aec Added test for async render exceptions without callback 2010-07-22 14:09:53 -07:00
Tj Holowaychuk 6e40914258 No more http git submodules 2010-07-22 14:08:24 -07:00
Tj Holowaychuk 56a1dd931e No "or similar" for curl install
Because you need curl in install.sh anyways :D silly me
2010-07-22 13:14:50 -07:00
Tj Holowaychuk 57fd2e6a52 Fixed typo in install.sh 2010-07-22 13:09:01 -07:00
Tj Holowaychuk 113db06cdd Github example now using splat and splitting on /
try:

  http://dev:3000/repos/visionmedia/creationix/isaacs
2010-07-22 12:07:54 -07:00
Tj Holowaychuk 4ee5c59cfd Misc refactoring of github example 2010-07-22 11:56:23 -07:00
Tj Holowaychuk 15812678a3 Added compare view to github example
example visit:

    /repos/visionmedia..someoneelse

This helps illustrate that a RegExp literal can be used
2010-07-22 11:53:45 -07:00
Tj Holowaychuk ee0379b321 Prepping github example for compare view 2010-07-22 11:23:44 -07:00
Tj Holowaychuk dcf279177d Fixed tests due to params.splat removal 2010-07-22 11:04:54 -07:00
Tj Holowaychuk 01115824f7 Updated docs 2010-07-22 11:02:47 -07:00
Tj Holowaychuk b68473ae11 Multi-file example from blog. Closes #364 2010-07-22 09:28:59 -07:00
Tj Holowaychuk a65c203c9b Split blog example into another file 2010-07-22 09:14:29 -07:00
Tj Holowaychuk 0a848240d4 Fixed typo in docs 2010-07-22 08:46:12 -07:00
Tj Holowaychuk d03821b88a Docs for params.captures. Closes #358 2010-07-22 08:30:15 -07:00
Tj Holowaychuk 4d32762899 Updated docs 2010-07-22 08:17:00 -07:00
Tj Holowaychuk 2cb4b6d16d Added test for "env" setting 2010-07-22 08:14:48 -07:00
Tj Holowaychuk b770e566dd "home" setting defaults to Server#route. Closes #363 2010-07-22 08:13:42 -07:00
Tj Holowaychuk 51ebc88f0c Assert blog.route 2010-07-22 08:07:05 -07:00
Tj Holowaychuk a04a75724d Added app mounting test 2010-07-22 08:06:06 -07:00
Tj Holowaychuk 6e5af3d799 Added mkdir to install.sh Closes #362 2010-07-22 06:21:30 -07:00
Tj Holowaychuk 0283a73a32 Removed instanceof Array check 2010-07-21 14:49:15 -07:00
Tj Holowaychuk 5f593031f0 Added --growl flag to make test 2010-07-21 13:05:48 -07:00
Tj Holowaychuk 0eeef2d4bd Style fixes 2010-07-21 13:04:04 -07:00
Guillermo Rauch bb6164e30b Added helper method create() to view tests to get a server with the correct views directory Make the default scope for rendering the response Added tests for default scope and custom scope 2010-07-21 13:02:11 -07:00
Tj Holowaychuk d3beae4871 Updated connect 2010-07-21 12:57:16 -07:00
Tj Holowaychuk 8df0df32f8 Blog example using the newly exposed app.route when mounted 2010-07-21 12:32:17 -07:00
Tj Holowaychuk b0228dd0fd Refactored blog example 2010-07-21 12:16:58 -07:00
Tj Holowaychuk ffca2dee1d Updated submodules 2010-07-21 12:14:00 -07:00
Tj Holowaychuk cba985bfea res.render() using res.send() 2010-07-21 09:41:51 -07:00
Tj Holowaychuk 6a10a67205 Added resource example 2010-07-21 09:33:18 -07:00
Tj Holowaychuk 880fb5bd89 Revert "Removed make install-support"
This reverts commit bdfd81322b.
2010-07-20 22:11:00 -07:00
Tj Holowaychuk 6a0ade074d Updated docs 2010-07-20 16:34:47 -07:00
Tj Holowaychuk 6cf4629d0f Added Guillermo Rauch to the contributor list 2010-07-20 15:11:05 -07:00
Tj Holowaychuk ce23e5fa9e Move menu up after scrolling. Closes #352 2010-07-20 15:04:27 -07:00
Tj Holowaychuk d16fb838ca Updated connect submodule 2010-07-20 14:40:04 -07:00
Tj Holowaychuk 6b9eb8aae3 View helpers are now app specific. Closes #351 2010-07-20 14:22:54 -07:00
Tj Holowaychuk 78008d1fea Docs for Server#{helpers,dynamicHelpers}() 2010-07-20 14:02:38 -07:00
Tj Holowaychuk 69fb9bb39b Removed old view helpers test 2010-07-20 13:58:17 -07:00
Tj Holowaychuk 92f1557235 Renamed Server#helpers() to Server#dynamicHelpers() 2010-07-20 13:55:21 -07:00
Tj Holowaychuk 8e487ba36d Added assertions for dynamic helper params and scope 2010-07-20 13:48:30 -07:00
Tj Holowaychuk 7eb088b5ed Added app.helpers() docs 2010-07-20 13:45:57 -07:00
Tj Holowaychuk 9ef8ea95b0 Added dynamic view helper support. Closes #349
via app.helpers()
2010-07-20 13:40:29 -07:00
Tj Holowaychuk eedf54b485 Added test for specific layouts with "view engine" set 2010-07-20 13:06:50 -07:00
Tj Holowaychuk a461815957 Added support for passing of layout name without extension
Utilizes the child view ext
2010-07-20 12:56:08 -07:00
Tj Holowaychuk 687c2f08f6 Fixed express(1) expansion of public dirs. Closes #348
Should fix your issue, thanks!
2010-07-20 12:50:06 -07:00
Tj Holowaychuk 2294f23e5f Fixed connect links 2010-07-20 09:29:16 -07:00
Tj Holowaychuk bdfd81322b Removed make install-support 2010-07-20 08:56:23 -07:00
Tj Holowaychuk 3ceb0de8d8 Updated curl install docs 2010-07-19 15:27:53 -07:00
Tj Holowaychuk c4b5208867 Added view helper docs. Closes #344 2010-07-19 09:37:19 -07:00
Tj Holowaychuk 9c3f6b0c10 Merge branch 'fix-middleware' 2010-07-19 09:07:40 -07:00
Tj Holowaychuk 0550755c7d Fixed middleware precedence. Closes #345
The first call to app.{get,del,put,post}() will
stack the router middleware. This means config
can flow naturally BEFORE any routes
have been created, preventing breakage of
bodyDecoder etc
2010-07-19 09:07:35 -07:00
Tj Holowaychuk 47602f267a Added failing test 2010-07-19 08:40:42 -07:00
Tj Holowaychuk 656e67ef90 Cleaning up form example 2010-07-19 08:18:44 -07:00
Tj Holowaychuk c53883b635 Docs for session example 2010-07-19 08:15:15 -07:00
Tj Holowaychuk c4278c81f1 Added req.flash() to form example. Closes #338 2010-07-16 15:59:06 -07:00
Tj Holowaychuk c94dcf5940 Merge branch 'sess' 2010-07-16 15:41:35 -07:00
Tj Holowaychuk 08ca3eff12 Added session example 2010-07-16 15:41:32 -07:00
Tj Holowaychuk b40a241b2e Better blog partials 2010-07-16 13:34:35 -07:00
Tj Holowaychuk f86f1e83ad Added partial tests for collection locals + passed locals 2010-07-16 12:55:05 -07:00
Tj Holowaychuk be85701abe Added partial magic var docs. Closes #342 2010-07-16 12:51:56 -07:00
Tj Holowaychuk 190eb474a6 Refactored res.partial() 2010-07-16 12:48:34 -07:00
Tj Holowaychuk 8db1138081 Added support for "as" for non-collection partials. Closes #341 2010-07-16 12:42:05 -07:00
Tj Holowaychuk afbfd4d3fa Merge branch 'blog' 2010-07-16 11:25:35 -07:00
Tj Holowaychuk 9b8efbfdd5 Added blog mounting example 2010-07-16 11:25:30 -07:00
Tj Holowaychuk cacada87f3 Updated docs 2010-07-16 11:04:34 -07:00
Tj Holowaychuk 8a36c54318 Removed more use("/", ...)s 2010-07-16 11:03:45 -07:00
Tj Holowaychuk 879d411669 Removed app.use("/",...) from bin/express 2010-07-16 11:01:03 -07:00
Tj Holowaychuk b38be2ce7b Updated connect submodule 2010-07-16 10:59:24 -07:00
Tj Holowaychuk 1810c9b61c Docs for "view engine" setting 2010-07-16 08:31:23 -07:00
Tj Holowaychuk 98737f14f1 Added "view engine" setting to jade example 2010-07-16 08:21:26 -07:00
Tj Holowaychuk b311118a04 Removed testing docs from readme
View contrib guide on expressjs.com
2010-07-16 08:13:43 -07:00
Tj Holowaychuk 8a337f1faf Better docs for res.sendfile() 2010-07-16 08:03:20 -07:00
Tj Holowaychuk dbc5bd4104 Added link to examples 2010-07-16 07:51:23 -07:00
Tj Holowaychuk a9c3f566da Fixed migration typo 2010-07-16 07:45:22 -07:00
Tj Holowaychuk 6d9c9cd964 Removed pomo tasks 2010-07-16 07:44:42 -07:00
Tj Holowaychuk 25c8883e49 Cleaning up view docs 2010-07-16 07:44:05 -07:00
Tj Holowaychuk 793943fc2f In depth partial docs 2010-07-16 07:43:31 -07:00
Tj Holowaychuk e98f86c540 Normalizing view context option to scope 2010-07-16 07:34:30 -07:00
Tj Holowaychuk 1c8ff48f92 More view docs 2010-07-16 07:33:33 -07:00
Tj Holowaychuk 1fb73e2211 Added test-cov docs to contrib guide 2010-07-16 07:23:56 -07:00
Tj Holowaychuk 5279ade0e7 Added more req.flash() tests 2010-07-16 07:21:10 -07:00
Tj Holowaychuk 984134fb9d Missing semicolon
OMggGG :)
2010-07-16 07:17:43 -07:00
Tj Holowaychuk eb8f1f24b7 Merge remote branch 'aheckmann/beta-cacheView' into integration 2010-07-16 07:16:41 -07:00
Tj Holowaychuk e49dc8bcfa Merge remote branch 'aheckmann/beta-exposeServer' into integration 2010-07-16 07:15:42 -07:00
Tj Holowaychuk e742da24a7 Fixed doc typo 2010-07-16 07:11:08 -07:00
Aaron Heckmann 203b65475c watcher should read files async 2010-07-15 23:45:27 -04:00
Aaron Heckmann 576c5f4c9e expose Server 2010-07-15 23:17:48 -04:00
Tj Holowaychuk d2434b5591 CNAME in wrong branch :) 2010-07-15 16:57:11 -07:00
Tj Holowaychuk 634c008fcd Added CNAME 2010-07-15 16:53:50 -07:00
Tj Holowaychuk 83f1ccb8ad Updated history some more 2010-07-15 16:45:11 -07:00
Tj Holowaychuk cea401c513 More error handling docs 2010-07-15 16:41:37 -07:00
Tj Holowaychuk 6b54c1b6d4 listen in generated app 2010-07-15 16:25:25 -07:00
Tj Holowaychuk 193c4a953e Updated install docs 2010-07-15 16:20:32 -07:00
Tj Holowaychuk d389134036 install.sh now installs connect as well 2010-07-15 16:19:31 -07:00
Tj Holowaychuk d8b140e341 More install docs 2010-07-15 16:04:25 -07:00
Tj Holowaychuk 5931e1143b Updating install docs 2010-07-15 16:01:49 -07:00
Tj Holowaychuk e6d0c4b79f Updated connect submodule 2010-07-15 15:56:22 -07:00
Tj Holowaychuk 44a4a18320 Removed version format test 2010-07-15 15:52:47 -07:00
Tj Holowaychuk 2f96506a6e Added more view docs 2010-07-15 15:49:25 -07:00
Tj Holowaychuk f904606b32 Merge branch 'ejs' into connect 2010-07-15 15:38:12 -07:00
Tj Holowaychuk 99bb14680a Added ejs example 2010-07-15 15:38:08 -07:00
Tj Holowaychuk 83df3dda95 Started ejs example 2010-07-15 14:59:02 -07:00
Tj Holowaychuk 5e4d67209c Executable docs 2010-07-15 14:50:26 -07:00
Tj Holowaychuk 2798af1668 Updated history 2010-07-15 14:48:55 -07:00
Tj Holowaychuk f0e41ce4c7 Bump to 1.0.0beta 2010-07-15 14:44:37 -07:00
Tj Holowaychuk 300602dd32 Contrib middleware link 2010-07-15 14:38:44 -07:00
Tj Holowaychuk 136f6778e2 Tasks 2010-07-15 14:36:24 -07:00
Tj Holowaychuk 2fa7907054 Unix domain socket docs 2010-07-15 13:49:11 -07:00
Tj Holowaychuk f3803c4c22 Server#listen() docs 2010-07-15 13:46:42 -07:00
Tj Holowaychuk 5d37927b0a More docs 2010-07-15 13:39:57 -07:00
Tj Holowaychuk 6227f5cfa2 More error docs 2010-07-15 13:30:43 -07:00
Tj Holowaychuk 9fbb9fa5e1 Error handling docs 2010-07-15 13:29:50 -07:00
Tj Holowaychuk de81ee7ee6 More docs 2010-07-15 13:24:43 -07:00
Tj Holowaychuk 5fcf971e28 Fixed reload views example 2010-07-15 13:10:00 -07:00
Tj Holowaychuk 492f70fc4b Merge branch 'docs' into connect 2010-07-15 13:09:00 -07:00
Tj Holowaychuk 3ced7b7212 No underlines for FF 2010-07-15 13:08:34 -07:00
Tj Holowaychuk 7b55867ea7 Misc styling 2010-07-15 13:06:56 -07:00
Tj Holowaychuk 3e15ef1c86 Setting up TOC 2010-07-15 12:49:57 -07:00
Tj Holowaychuk 0cdc836054 Generating TOC 2010-07-15 12:06:54 -07:00
Tj Holowaychuk 1aad62b95d Docs 2010-07-15 11:11:05 -07:00
Tj Holowaychuk ed1c88920e Tasks 2010-07-15 11:08:17 -07:00
Tj Holowaychuk e6ca20c4a2 Added views / reload views settings to bin/express app 2010-07-15 11:07:56 -07:00
Tj Holowaychuk cfa3470df6 Tasks 2010-07-15 11:02:03 -07:00
Tj Holowaychuk 479f297cf6 Improved pages demo 2010-07-15 10:55:45 -07:00
Tj Holowaychuk 7e1b222f90 Fixed pages app example 2010-07-15 10:52:38 -07:00
Tj Holowaychuk 69baa6ea1a Regenerated api docs 2010-07-15 10:44:47 -07:00
Tj Holowaychuk 0fce93be37 Removed connect.redirect() 2010-07-15 08:56:51 -07:00
Tj Holowaychuk 51611ec2bb Added test for multiple app.error() calls 2010-07-14 17:36:16 -07:00
Tj Holowaychuk 228a78136d Server#error() no longer requires arity of 4 2010-07-14 17:25:25 -07:00
Tj Holowaychuk 34d10ace7a Added test to confirm app.error() works with thrown exceptions 2010-07-14 17:19:40 -07:00
Tj Holowaychuk 57bd0a5628 Tasks 2010-07-14 17:16:18 -07:00
Tj Holowaychuk 42e4860855 Tasks 2010-07-14 17:12:14 -07:00
Tj Holowaychuk ea1c9f70d7 Merge branch 'pages' into connect 2010-07-14 17:09:21 -07:00
Tj Holowaychuk d3085b0450 Added custom pages example 2010-07-14 17:09:17 -07:00
Tj Holowaychuk 63d02f1d5f Install docs 2010-07-14 16:27:50 -07:00
Tj Holowaychuk dfecbe5bfa More docs 2010-07-14 16:15:00 -07:00
Tj Holowaychuk bcf9f00de5 Added install.sh 2010-07-14 16:06:07 -07:00
Tj Holowaychuk a8e8e35678 Removed seed.yml 2010-07-14 15:59:26 -07:00
Tj Holowaychuk 2ec4a8b4ce Test prefixes 2010-07-14 15:50:40 -07:00
Tj Holowaychuk 6c3d3dee81 Tasks 2010-07-14 15:49:36 -07:00
Tj Holowaychuk 40b3116ed7 Tasks 2010-07-14 15:44:13 -07:00
Tj Holowaychuk df7582b138 Tasks 2010-07-14 15:30:46 -07:00
Tj Holowaychuk b08dab9aa1 Docs for new res methods 2010-07-14 15:29:18 -07:00
Tj Holowaychuk da5a4804df Added res.download() 2010-07-14 15:15:25 -07:00
Tj Holowaychuk d12f43498e Merge branch 'sendfile' into connect 2010-07-14 15:06:45 -07:00
Tj Holowaychuk f9f2facd76 Added res.sendfile() 2010-07-14 15:06:41 -07:00
Tj Holowaychuk eaee3954c1 Tasks 2010-07-14 14:48:43 -07:00
Tj Holowaychuk eb235e11b6 Docs for res.attachment() 2010-07-14 14:45:30 -07:00
Tj Holowaychuk 0c5fe61ed3 More docs :) 2010-07-14 14:42:44 -07:00
Tj Holowaychuk 76052b443a By default a Buffer passed through res.send() is application/octet-stream 2010-07-14 14:38:29 -07:00
Tj Holowaychuk 5a48248e1e Docs for res.send() 2010-07-14 14:36:29 -07:00
Tj Holowaychuk bedff3278f More docs 2010-07-14 14:30:51 -07:00
Tj Holowaychuk 0bb48153a5 Added dynamic redirect mapping 2010-07-14 14:17:48 -07:00
Tj Holowaychuk b75246e3ca Added app.redirect(key, url) 2010-07-14 14:03:30 -07:00
Tj Holowaychuk 2d31f0d7fe res.redirect() docs 2010-07-14 13:59:26 -07:00
Tj Holowaychuk 87cfca721e Merge branch 'redirect' into connect 2010-07-14 13:49:59 -07:00
Tj Holowaychuk 54d36f3337 Removed traces of connect.redirect() 2010-07-14 13:49:51 -07:00
Tj Holowaychuk a4a17d171a Added custom redirect map support 2010-07-14 13:37:30 -07:00
Tj Holowaychuk 7c2673fc66 Added tests for res.redirect() 2010-07-14 13:29:39 -07:00
Tj Holowaychuk c77ecbb10f Started ServerResponse#redirect() 2010-07-14 13:17:39 -07:00
Tj Holowaychuk f0ba57ba23 Added contrib docs 2010-07-14 12:06:56 -07:00
Tj Holowaychuk 893aa80361 Added link to user account for github example 2010-07-14 11:40:58 -07:00
Tj Holowaychuk 59ac3d1d45 Merge branch 'github' into connect 2010-07-14 11:36:38 -07:00
Tj Holowaychuk 247a9478c8 Finished github example 2010-07-14 11:36:32 -07:00
Tj Holowaychuk 1c64d858c2 Added total watchers 2010-07-14 11:23:39 -07:00
Tj Holowaychuk 91a1d7faaf Sorting github repos 2010-07-14 11:19:57 -07:00
Tj Holowaychuk 214bbfa7b6 Simplified github example 2010-07-14 11:15:18 -07:00
Tj Holowaychuk 3ee4492b3c Started github example 2010-07-14 11:11:14 -07:00
Tj Holowaychuk 38c453b3c6 More migration docs 2010-07-14 10:49:23 -07:00
Tj Holowaychuk 3d41c61991 Updated docs 2010-07-14 10:23:43 -07:00
Tj Holowaychuk 1f9f47f97e Readme 2010-07-14 10:18:12 -07:00
Tj Holowaychuk 41cc2923b1 Updated multipart example 2010-07-14 09:34:38 -07:00
Tj Holowaychuk 4c180f3eed Added connect-form submodule 2010-07-14 08:59:34 -07:00
Tj Holowaychuk 5f9a64dbea Redirecting in multipart example 2010-07-14 08:49:20 -07:00
Tj Holowaychuk 9d37bfdcf1 listen() in examples 2010-07-14 08:43:23 -07:00
Tj Holowaychuk d738c3aca6 Added methodOverride to generated app 2010-07-13 11:32:37 -07:00
Tj Holowaychuk 836c4313ab Tasks 2010-07-13 11:31:21 -07:00
Tj Holowaychuk 91c6478add Updated submodules 2010-07-13 11:29:19 -07:00
Tj Holowaychuk fce527a55b Added progress to multipart example 2010-07-13 10:07:41 -07:00
Tj Holowaychuk 9a1f62fc1f Added multipart example 2010-07-13 09:48:33 -07:00
Tj Holowaychuk 018d8656d3 Added form example 2010-07-13 09:37:39 -07:00
Tj Holowaychuk 2636e1ba45 Added app.error() support 2010-07-13 09:09:10 -07:00
Tj Holowaychuk caed07dfc1 Added exception example 2010-07-13 08:48:44 -07:00
Tj Holowaychuk 373cf3328d Added test to confirm set() is chainable 2010-07-13 08:36:56 -07:00
Tj Holowaychuk 0370c3fa01 configure() is chainable 2010-07-13 08:36:22 -07:00
Tj Holowaychuk f5143a7d63 Added test to confirm that configure() callbacks execute in context to the server 2010-07-13 08:35:22 -07:00
Tj Holowaychuk 346b2a27cb Removed annoying padding transition 2010-07-12 17:46:26 -07:00
Tj Holowaychuk 38281e6361 Added more setting docs 2010-07-12 17:43:01 -07:00
Tj Holowaychuk 6e8413f568 Moved config docs up 2010-07-12 17:39:14 -07:00
Tj Holowaychuk cb04364381 Configuration docs 2010-07-12 17:37:26 -07:00
Tj Holowaychuk 83d2555123 Added configuration section 2010-07-12 17:32:07 -07:00
Tj Holowaychuk 0ace97c8d4 Route passing docs 2010-07-12 17:09:52 -07:00
Tj Holowaychuk 9e3a0c61b8 Started guide 2010-07-12 17:06:35 -07:00
Tj Holowaychuk 2fda5c7873 Fixed banner 2010-07-12 16:47:30 -07:00
Tj Holowaychuk e29868c8ce Added some links 2010-07-12 16:44:53 -07:00
Tj Holowaychuk ac560be870 Added menu to docs 2010-07-12 16:42:11 -07:00
Tj Holowaychuk 5a29cbf4a7 Better hello world example 2010-07-12 16:36:01 -07:00
Tj Holowaychuk dc77894f68 Migration docs for req.param() 2010-07-12 16:32:43 -07:00
Tj Holowaychuk 74432a6b9d Added redirect migration docs 2010-07-12 16:29:53 -07:00
Tj Holowaychuk 2b2fa7e77c Absolute labs banner 2010-07-12 16:23:16 -07:00
Tj Holowaychuk c3f71b33aa Removed backticks from docs 2010-07-12 16:17:40 -07:00
Tj Holowaychuk 927aae72d1 Docs for plugins vs middleware 2010-07-12 16:15:53 -07:00
Tj Holowaychuk 2a674f4e8d Added partial migration docs 2010-07-12 16:07:03 -07:00
Tj Holowaychuk 0b86ce2bda Added view rendering migration section 2010-07-12 15:58:54 -07:00
Tj Holowaychuk 548a0709f4 Control passing docs 2010-07-12 15:47:09 -07:00
Tj Holowaychuk da84c0bb4d Migration docs for params 2010-07-12 15:42:38 -07:00
Tj Holowaychuk 9e68a5b9ab Started migration docs 2010-07-12 15:28:46 -07:00
Tj Holowaychuk 6982bdaa28 Updated expresso submodule 2010-07-12 14:55:32 -07:00
Tj Holowaychuk c1809232fe Merge branch 'flash' into connect 2010-07-12 14:55:19 -07:00
Tj Holowaychuk 3c06c82eb7 Added tests for req.flash() 2010-07-12 14:55:14 -07:00
Tj Holowaychuk 1bcccb3134 Added req.flash() 2010-07-12 14:14:50 -07:00
Tj Holowaychuk cdf49dc87e Removed a utils.merge() call 2010-07-12 11:35:07 -07:00
Tj Holowaychuk 0a0fb8f803 Updated expresso submodule 2010-07-09 16:41:38 -07:00
Tj Holowaychuk 60cfd56369 Regenerated docs 2010-07-09 15:32:13 -07:00
Tj Holowaychuk 73050d38c5 Added make install-docs 2010-07-09 15:31:05 -07:00
Tj Holowaychuk c50e941972 Tasks 2010-07-09 15:28:51 -07:00
Tj Holowaychuk 7c59fd21e2 Fixed package.json 2010-07-09 13:56:07 -07:00
Tj Holowaychuk b095a4221c Added ejs submodule 2010-07-09 13:19:37 -07:00
Tj Holowaychuk 1ef39fa3b8 Updated Connect submodule 2010-07-09 10:53:57 -07:00
Tj Holowaychuk fcf4530d83 Tasks 2010-07-08 14:59:57 -07:00
Tj Holowaychuk 0515e14d27 Added make test-cov 2010-07-08 14:49:13 -07:00
Tj Holowaychuk ddbef0bd79 Merge branch 'view-helpers' into connect 2010-07-08 14:47:21 -07:00
Tj Holowaychuk bc5d31f86a Added view helper support 2010-07-08 14:47:13 -07:00
Tj Holowaychuk 09147a2aab Regenerated docs 2010-07-08 14:33:54 -07:00
Tj Holowaychuk a75a119e2f Added default view engine support
Now app.set("view engine", "jade") allows you to
res.render("jade")
2010-07-08 14:31:27 -07:00
Tj Holowaychuk c1b3546161 More example docs 2010-07-08 14:07:05 -07:00
Tj Holowaychuk 8338432c7b Added app generation to bin/express 2010-07-08 14:01:56 -07:00
Tj Holowaychuk 8beae065cf Added view callback error test 2010-07-08 13:17:30 -07:00
Tj Holowaychuk 0e7d39aa13 Added invalid view test 2010-07-08 13:16:36 -07:00
Tj Holowaychuk 74063ad735 Tasks 2010-07-08 13:10:53 -07:00
Tj Holowaychuk 55a29808c9 Added view callback test 2010-07-08 13:09:15 -07:00
Tj Holowaychuk 40f3de3939 Merge branch 'view-reloading' into connect 2010-07-08 13:04:50 -07:00
Tj Holowaychuk 5d94ab09e3 Updated jade submodule 2010-07-08 13:04:21 -07:00
Tj Holowaychuk b34ff6853d Renamed setting to "reload views" 2010-07-08 12:45:03 -07:00
Tj Holowaychuk e2570be957 Added view reloading 2010-07-08 12:38:16 -07:00
Tj Holowaychuk 95e6fff3da Added another example 2010-07-08 11:49:12 -07:00
Tj Holowaychuk 9de12b7385 Tasks 2010-07-08 11:33:39 -07:00
Tj Holowaychuk beffe906e4 ws 2010-07-08 11:12:42 -07:00
Tj Holowaychuk e850d1073d Partials without extensions use the same extension as the parent view 2010-07-08 11:01:20 -07:00
Tj Holowaychuk c02a2ba5ba Exposing __filename as a local for views 2010-07-08 10:49:46 -07:00
Tj Holowaychuk f92bb6690b Todo 2010-07-08 10:40:46 -07:00
Tj Holowaychuk 5842a3bba6 Added test for non-collection partial support 2010-07-08 10:38:30 -07:00
Tj Holowaychuk fcf691d97c Added view test for magic locals 2010-07-08 10:27:23 -07:00
Tj Holowaychuk a32c7d5f07 Added as: global support 2010-07-08 10:24:12 -07:00
Tj Holowaychuk edfb18b75a Added as: this support 2010-07-08 10:17:11 -07:00
Tj Holowaychuk 5544c5d5d4 Added collection "as" option test 2010-07-08 10:13:24 -07:00
Tj Holowaychuk 22100f7c3a Added support for partial(view, array) as collection 2010-07-08 10:09:03 -07:00
Tj Holowaychuk 8ece01ccda Fixed partial support 2010-07-08 09:56:03 -07:00
Tj Holowaychuk 9b68039a62 Caching view contents 2010-07-08 09:53:34 -07:00
Tj Holowaychuk a914326e75 todo 2010-07-08 09:49:13 -07:00
Tj Holowaychuk 2b7dd35e05 Todo 2010-07-08 09:36:59 -07:00
Tj Holowaychuk 15e41169ad Added bin/express to package.json 2010-07-08 09:25:43 -07:00
Tj Holowaychuk f8c5219c12 Updated jade submodule 2010-07-08 09:23:37 -07:00
Tj Holowaychuk c570b67dda Updated jade submodule 2010-07-08 09:16:57 -07:00
Tj Holowaychuk 456fac1700 Tasks 2010-07-08 07:43:17 -07:00
Tj Holowaychuk 41e58c394b Updated tasks 2010-07-07 17:16:18 -07:00
Tj Holowaychuk 5aeda5f67b Added .pomo
Used with my ruby "pomo" executable, for managing tasks
2010-07-07 17:15:36 -07:00
Tj Holowaychuk c96adf168c Added ./index.js
For super easy git installs
2010-07-07 17:13:49 -07:00
Tj Holowaychuk 40c5bc01ff Docs 2010-07-07 17:08:07 -07:00
Tj Holowaychuk 09dabef70c Updated docs 2010-07-07 17:03:23 -07:00
Tj Holowaychuk 96edee806e req.param() docs 2010-07-07 17:03:13 -07:00
Tj Holowaychuk e58f4683d1 Finished req.accepts() 2010-07-07 17:00:23 -07:00
Tj Holowaychuk 9750817bf0 Added more tests for req.accepts() 2010-07-07 16:44:42 -07:00
Tj Holowaychuk 7099d730e6 Docs for req.accepts() 2010-07-07 16:41:07 -07:00
Tj Holowaychuk 13c290e99f Docs for req.accepts() 2010-07-07 16:40:29 -07:00
Tj Holowaychuk cf37966e39 Added req.accepts() 2010-07-07 16:38:23 -07:00
Tj Holowaychuk 9449c4b9b5 Merge branch 'params' into connect 2010-07-07 16:05:43 -07:00
Tj Holowaychuk 046172e5d9 Added req.param() POST support via connect.bodyDecoder() 2010-07-07 16:05:32 -07:00
Tj Holowaychuk c74446e38c Added req.param() 2010-07-07 15:54:25 -07:00
Tj Holowaychuk 7897460993 Added req.header() tests 2010-07-07 15:38:06 -07:00
Tj Holowaychuk 4b59583bca Docs 2010-07-07 15:34:46 -07:00
Tj Holowaychuk 41f73559f2 Setting res.render() cache to true in production 2010-07-07 15:21:21 -07:00
Tj Holowaychuk d3090c0965 Added option docs to res.render() 2010-07-07 15:17:48 -07:00
Tj Holowaychuk dc5caebbf8 Added haml test 2010-07-07 15:10:16 -07:00
Tj Holowaychuk 14280dfedb Added buffer support to res.send() 2010-07-07 14:54:23 -07:00
Tj Holowaychuk 8fdf11135a Added res.attachment() 2010-07-07 14:45:45 -07:00
Tj Holowaychuk c8baa8f349 Added res.send() Content-Type precedence test 2010-07-07 14:38:41 -07:00
Tj Holowaychuk a6e25b46af Added res.send() examples 2010-07-07 14:29:18 -07:00
Tj Holowaychuk 395d14ab58 Allowing status as first or second arg to res.send() 2010-07-07 14:25:06 -07:00
Tj Holowaychuk 0d4b57df7a req.send() headers take precedence 2010-07-07 14:11:00 -07:00
Tj Holowaychuk 416e7617b3 res.contentType() using res.header() 2010-07-07 14:02:55 -07:00
Tj Holowaychuk 838c470017 Added res.header() 2010-07-07 14:02:16 -07:00
Tj Holowaychuk f0a09665db res.send() only setting Content-Type when not already present 2010-07-07 13:57:56 -07:00
Tj Holowaychuk 1397fa64d5 Added req.header(name, defaultValue) 2010-07-07 13:33:21 -07:00
Tj Holowaychuk ac17a6afcf Added res.contentType() tests 2010-07-07 13:32:16 -07:00
Tj Holowaychuk 35af1bab30 Added req.xhr as alias of req.isXMLHttpRequest 2010-07-07 13:22:59 -07:00
Tj Holowaychuk 1fe7bb271a Added req.isXMLHttpRequest 2010-07-07 13:21:07 -07:00
Tj Holowaychuk 774e25d944 Added make install-support and make uninstall-support 2010-07-07 13:06:41 -07:00
Tj Holowaychuk 6770e8541d Added `make install 2010-07-07 13:05:21 -07:00
Tj Holowaychuk 70e94e4dde Updated connect submodule 2010-07-07 12:54:28 -07:00
Tj Holowaychuk 0ffbc6e345 Added jade submodule 2010-07-07 12:43:48 -07:00
Tj Holowaychuk 25e796753f Added Connect submodule 2010-07-07 12:43:01 -07:00
Tj Holowaychuk 70d9ef4f77 Added test for next()ing 2010-07-07 11:56:37 -07:00
Tj Holowaychuk fd67c9a589 Exposing req / res to each other 2010-07-07 11:52:18 -07:00
Tj Holowaychuk f0917ff774 Ignore pids 2010-07-07 07:49:40 -07:00
Tj Holowaychuk 843281dec0 Added hello-world example
run with:
    connect -C examples/helloworld
2010-07-07 07:49:01 -07:00
Tj Holowaychuk 3a21588429 Docs :) 2010-07-07 07:35:57 -07:00
Tj Holowaychuk 21eeb09a3c Executable docs 2010-07-06 20:31:52 -07:00
Tj Holowaychuk 900c5ed358 More docs 2010-07-06 19:46:48 -07:00
Tj Holowaychuk 195c8a92d1 Added contributors back to docs 2010-07-06 19:42:06 -07:00
Tj Holowaychuk 7c651e6093 More styling
gahh!!
2010-07-06 17:10:59 -07:00
Tj Holowaychuk 860b899f0c Added images back to docs 2010-07-06 17:06:39 -07:00
Tj Holowaychuk 87b7524de9 More doc styling 2010-07-06 17:01:04 -07:00
Tj Holowaychuk 29641ae16a Started new docs 2010-07-06 16:56:42 -07:00
Tj Holowaychuk 02e32a7a9d App generation in bin/express 2010-07-06 08:17:35 -07:00
Tj Holowaychuk 3056369c6e Started bin/express 2010-07-06 08:06:39 -07:00
Tj Holowaychuk 3da75726d3 Error handling for views 2010-07-06 07:53:18 -07:00
Tj Holowaychuk b7346de47d Fixed partials 2010-07-06 07:07:56 -07:00
Tj Holowaychuk 7a69100b2f Updated copyright 2010-07-06 06:53:13 -07:00
Tj Holowaychuk 2732d2b9d3 Updated docs 2010-07-06 06:52:48 -07:00
Tj Holowaychuk 87bb27cc4f Added migrate doc files
yet to be filled with copy :)
2010-07-05 21:56:58 -07:00
Tj Holowaychuk bafa300b0f Generated docs 2010-07-05 21:52:49 -07:00
Tj Holowaychuk 939cf4542f Added make docs 2010-07-05 21:47:37 -07:00
Tj Holowaychuk 874975da54 Added response helpers 2010-07-05 21:37:56 -07:00
Tj Holowaychuk f0bebd4c33 Docs 2010-07-05 16:58:07 -07:00
Tj Holowaychuk c444a11862 Todo 2010-07-05 16:55:16 -07:00
Tj Holowaychuk 4c0704e338 Started implementing partials again 2010-07-05 16:50:37 -07:00
Tj Holowaychuk 77f4cd5d58 Refactord ServerResponse#render() 2010-07-05 16:30:55 -07:00
Tj Holowaychuk 9858d3c5a8 Refactord ServerResponse#render() 2010-07-05 16:30:21 -07:00
Tj Holowaychuk 414acbc9ec Added layout support 2010-07-05 16:29:39 -07:00
Tj Holowaychuk 21f904db42 Started ServerResponse#render() 2010-07-05 16:14:34 -07:00
Tj Holowaychuk f6ca253849 Applying arguments from createServer() 2010-07-05 15:54:35 -07:00
Tj Holowaychuk 3f989191e3 Added failing constructor middleware test 2010-07-05 15:49:38 -07:00
Tj Holowaychuk 2bea014e89 Added middleware usage test 2010-07-05 15:43:10 -07:00
Tj Holowaychuk 84fc19a75f Docs 2010-07-05 15:33:56 -07:00
Tj Holowaychuk d803924ef0 Added Server#{set,enable,disable}() and friends 2010-07-05 15:32:54 -07:00
Tj Holowaychuk 889f8d9d30 Added server.js 2010-07-05 15:13:32 -07:00
Tj Holowaychuk 1dcb7eaf1f . 2010-07-05 15:13:19 -07:00
Tj Holowaychuk 5f9e4ace2f Added basic app test 2010-07-05 15:02:25 -07:00
Tj Holowaychuk 6386330973 Started tests 2010-07-05 14:58:38 -07:00
Tj Holowaychuk fd89b9755e Removed benchmarks 2010-07-05 14:52:19 -07:00
Tj Holowaychuk 730f454278 Removed examples 2010-07-05 14:51:53 -07:00
Tj Holowaychuk e2fca29c91 Cleared out makefile 2010-07-05 14:51:45 -07:00
Tj Holowaychuk f97a222cf5 Removed specs 2010-07-05 14:50:39 -07:00
Tj Holowaychuk c75105e977 Added expresso submodule 2010-07-05 14:50:21 -07:00
Tj Holowaychuk 7096471d65 Removed submodules 2010-07-05 14:49:57 -07:00
Tj Holowaychuk cc1cee8a38 Auto-requiring ./view.js 2010-06-19 22:25:10 -07:00
Tj Holowaychuk 5f2680889f Added application.js 2010-06-19 22:18:35 -07:00
Tj Holowaychuk b3ae8bb606 Added Application#runConfig() 2010-06-19 22:07:18 -07:00
Tj Holowaychuk 72d9f37845 Added Application#{set,enable,disable}() 2010-06-19 21:39:36 -07:00
Tj Holowaychuk fdfccafd84 Fixed another typo 2010-06-19 21:35:16 -07:00
Tj Holowaychuk a784f946ba Fixed ternary typo 2010-06-19 21:34:12 -07:00
Tj Holowaychuk a04af6c4bd Started re-write of views 2010-06-19 21:33:29 -07:00
Tj Holowaychuk 64b24a96c8 Fixing chat example 2010-06-18 17:30:20 -07:00
Tj Holowaychuk a62a5d0d7b Removed old cruft
wow express is light now! haha.. go connect go
2010-06-18 17:16:17 -07:00
Tj Holowaychuk 3043d1e839 Hello world working (somewhat) 2010-06-18 17:00:07 -07:00
Tj Holowaychuk a3aefb6902 Removed spec crap
not a good fit for async
2010-06-18 16:23:08 -07:00
Tj Holowaychuk a42aaa270c Removed lib/support
you will all have to install these via kiwi or npm etc,
bundling is no more! (at least for now)
2010-06-18 16:22:48 -07:00
Tj Holowaychuk f8b471c17b Started the destruction :) 2010-06-18 16:21:16 -07:00
Tj Holowaychuk 87adff44db Added connect submodule 2010-06-18 16:15:52 -07:00
isaacs 767bba9c04 s/parseQuery/parse/g (The node querystring module changed recently) 2010-06-16 00:54:19 -07:00
Tj Holowaychuk 0c827521d0 Added npm install docs 2010-06-15 14:25:20 -07:00
Tj Holowaychuk 80cec7d12f Release 0.14.0 2010-06-15 14:22:51 -07:00
Tj Holowaychuk 5f916357e9 Make Express npm friendly
Since wayyy back in the early days of node we did
not have relative require :)
2010-06-15 14:14:40 -07:00
Tj Holowaychuk ea82eea9bb Misc package.json updates 2010-06-15 13:50:17 -07:00
Aaron Heckmann 22222d7db4 update node version 2010-06-14 01:54:34 -04:00
Aaron Heckmann cebee369d1 add ciaran 2010-06-13 19:59:39 -04:00
Aaron Heckmann faf809851c add contributors 2010-06-10 21:21:32 -04:00
Aaron Heckmann d05aafd76b use plugin option instead of global set() 2010-06-10 20:21:52 -04:00
visionmedia 8d52721873 Removed bufferSize from static benchmarks 2010-06-10 11:09:26 -07:00
visionmedia 66c6152cd2 Merge remote branch 'aheckmann/staticbuffersize' 2010-06-10 11:08:40 -07:00
Aaron Heckmann 32cd51d3a5 add 'static buffer size' setting 2010-06-09 21:19:02 -04:00
Aaron Heckmann 497a28401e cache view and partial subdirectories 2010-06-09 08:04:45 -07:00
visionmedia e46912047c Updated haml submodule 2010-06-08 05:44:54 -07:00
visionmedia 56b573ede5 Updated class submodule 2010-06-04 11:07:38 -07:00
visionmedia 0276be1789 Updated haml submodule 2010-06-04 11:05:47 -07:00
visionmedia 7db4c60fc3 Removed old release details link
Not really relevant anymore. (but really im just testing
my new CI server haha :D )
2010-06-03 16:39:43 -07:00
visionmedia 95cc01dd91 Added missing file comment 2010-06-03 16:36:11 -07:00
visionmedia cce1dddf42 Added author to package.json
Guys feel free to add yourself as contributors in there :)
2010-06-03 16:31:08 -07:00
visionmedia 0938b57841 Removed bin/express
for now :) maybe it will come back some day when it is
more useful
2010-06-03 16:25:50 -07:00
visionmedia aef8550e2f Removed old todo comment 2010-06-03 16:22:45 -07:00
visionmedia 71bf0bde32 Readme typo 2010-06-03 16:18:59 -07:00
visionmedia 750623b9b1 Fixed mime.type() comments now that ".ext" is not supported 2010-06-03 16:15:32 -07:00
visionmedia 1f12c53b65 Added Connect port notice 2010-06-03 16:04:36 -07:00
visionmedia 8717ea1b95 Updated seed.yml 2010-06-01 08:49:21 -07:00
visionmedia db2eb658ca Release 0.13.0 2010-06-01 08:49:04 -07:00
visionmedia 70483484ce Fixed upload example 2010-06-01 08:44:26 -07:00
visionmedia d21afc43a1 Merge branch 'charset' of git://github.com/aheckmann/express 2010-05-31 14:06:29 -07:00
visionmedia 7ad0803f2e Updated package.json 2010-05-31 14:05:15 -07:00
Aaron Heckmann ec4bfd55f9 not-found exceptions using utf-8 2010-05-31 12:58:53 -04:00
Aaron Heckmann f65174a0db show-exceptions uses utf-8 2010-05-31 12:56:30 -04:00
visionmedia 8b1fcd4dd7 mime.type() no longer accepts ".type" 2010-05-30 13:14:08 -07:00
visionmedia 9509237958 Fixed mime.type() due to path.extname() changes 2010-05-30 13:04:35 -07:00
visionmedia f20fd20a06 Fixed view support due to fs.readFile Buffers 2010-05-30 12:46:15 -07:00
visionmedia 8e48120fb7 Updated JSpec 2010-05-30 12:42:31 -07:00
visionmedia 44cc5ac883 Updated haml submodule 2010-05-27 15:32:30 -07:00
visionmedia 9a43cc8c4b Updated haml submodule 2010-05-25 16:08:50 -07:00
visionmedia 8dfc0d54f4 Updated haml submodule 2010-05-25 13:49:30 -07:00
visionmedia 77febd21de Fixed code styling 2010-05-23 09:38:42 -07:00
Aaron Heckmann 84a997c66b Added support for deleting cookies via Request#cookie('key', null) 2010-05-23 09:37:53 -07:00
Aaron Heckmann b900a59fc2 respond(204) should not have a body 2010-05-22 12:13:15 -04:00
visionmedia ca782dbc58 Release 0.12.0 2010-05-22 08:24:22 -07:00
visionmedia 746cda27ec Fixed cookie spec urlencoding 2010-05-22 08:23:28 -07:00
visionmedia 16d1651656 Fixed a cookie spec 2010-05-22 08:22:01 -07:00
visionmedia 4735fb2377 Merge branch 'master' of git://github.com/tritonrc/express 2010-05-22 08:21:08 -07:00
Aaron Heckmann ec6b518fd2 compatible with node v0.1.96 2010-05-22 08:09:09 -07:00
Brian McKinney 580ad1b192 Make sure to URL encode cookie name and value on response if we are going to URL decode on request 2010-05-18 18:53:01 -06:00
visionmedia 23d8810486 Updated haml submodule 2010-05-17 15:43:38 -07:00
visionmedia d579d62eb6 Comment changed to match others 2010-05-14 07:30:14 -07:00
visionmedia 529f785e3c Merge branch 'master' of git://github.com/Guille/express 2010-05-14 07:28:53 -07:00
Guillermo Rauch 0581ae87b4 Renaming Globals to helpers (I'm sold) 2010-05-14 11:16:51 -03:00
visionmedia cda1059336 Updated readme, we are compatible with node --version v0.1.95 2010-05-14 06:51:59 -07:00
Aaron Heckmann 1aed6b5c30 Merge branch 'master' into encoding 2010-05-14 08:05:46 -04:00
Aaron Heckmann 4e68705b24 compatible with node v0.1.95 2010-05-14 08:01:05 -04:00
Guillermo Rauch 216cb1ea12 Added support for globals (eg: helpers) in views
- Added export.Globals in plugins/view.js
 - Added two specs (one for a simple template, one for a template with a layout) with a dummy i18n helper
 - Updated README features list
2010-05-13 20:35:25 -03:00
Guillermo Rauch 8ef6a0b432 Merge branch 'master' of http://github.com/visionmedia/express
* 'master' of http://github.com/visionmedia/express: (168 commits)
  Updated haml submodule
  s/==/===/
  Misc refactoring to make parseCookie() more readable / spec for overriding keys
  s/QueryString/queryString/
  Added spec for malformed cookies
  regexps have no "n" flag
  No need to quote key in spec
  Fixed LF -> CRLF for setting multiple cookies
  Redo cookies parsing to accept quoted values and url escaped cookies
  Remove inode from ETag, modified time only
  Release 0.11.0
  Works fine with node --version v0.1.94
  Refactoring some spec fixtures
  Fixing spec for EJS partial
  Updated ext
  Updated haml
  Added spec / refactored layout of different engine support
  Added spec for layouts with different engines
  Fixing EJS partial support by passing along the context. Issue #307
  Allow layouts to use different engines
  ...

Conflicts:
	lib/express/core.js
2010-05-13 18:53:11 -03:00
visionmedia 5dc152c46e Updated haml submodule 2010-05-11 13:22:32 -07:00
visionmedia c3a21437e4 Merge branch 'integration' 2010-05-11 07:57:50 -07:00
visionmedia 32bc8dcbf9 s/==/===/ 2010-05-11 07:57:24 -07:00
visionmedia 677ca7b4aa Misc refactoring to make parseCookie() more readable / spec for overriding keys 2010-05-11 07:55:15 -07:00
visionmedia dfc2331104 s/QueryString/queryString/ 2010-05-11 07:47:20 -07:00
visionmedia cd06bbfb8d Added spec for malformed cookies 2010-05-11 07:46:44 -07:00
visionmedia 1d596bcbac regexps have no "n" flag 2010-05-11 07:44:31 -07:00
visionmedia 0cb7b9c13d No need to quote key in spec 2010-05-11 07:42:23 -07:00
visionmedia a180efeca7 Merge branch 'master' of git://github.com/tritonrc/express into integration 2010-05-11 07:41:15 -07:00
visionmedia eef24ea29c Fixed LF -> CRLF for setting multiple cookies 2010-05-11 07:25:08 -07:00
Brian McKinney 458bb3d7f7 Redo cookies parsing to accept quoted values and url escaped cookies 2010-05-10 17:18:42 -06:00
visionmedia ffb23d92c0 Remove inode from ETag, modified time only 2010-05-07 13:52:13 -07:00
visionmedia 0ce39a4cf6 Release 0.11.0 2010-05-06 15:41:15 -07:00
visionmedia a24c70e490 Works fine with node --version v0.1.94 2010-05-06 15:36:06 -07:00
visionmedia 8d4ef6e883 Merge branch 'integration' 2010-05-06 15:35:39 -07:00
visionmedia 54865ebdee Refactoring some spec fixtures 2010-05-06 15:24:30 -07:00
visionmedia cb8e704d5c Merged bdotdub/master 2010-05-06 15:21:47 -07:00
Benny Wong 57f4978442 Fixing spec for EJS partial
* Had to use double quote and not single quote for the partial filename
* Couldn't get each to work. Using ugly `for` for now
2010-05-06 13:59:50 -04:00
visionmedia b8833f4c9e Updated ext 2010-05-06 10:29:15 -07:00
visionmedia 5c40cbc675 Merge branch 'update-haml' 2010-05-06 09:17:13 -07:00
visionmedia a455dcc919 Updated haml 2010-05-06 09:17:08 -07:00
visionmedia 289487cc46 Merge branch 'integration' 2010-05-06 07:52:32 -07:00
visionmedia 42b28d5bd6 Added spec / refactored layout of different engine support 2010-05-06 07:52:28 -07:00
visionmedia 46bee05d93 Merge branch 'master' of git://github.com/nick/express into integration 2010-05-06 07:44:43 -07:00
visionmedia 49bed5cd5f Added spec for layouts with different engines 2010-05-06 07:43:54 -07:00
Benny Wong 624cf93e2e Fixing EJS partial support by passing along the context. Issue #307 2010-05-06 01:20:35 -04:00
Nick Poulden 6ab76cda51 Allow layouts to use different engines 2010-05-05 13:19:16 -07:00
Nick Poulden 15beb81368 Allow ejs templates to contain single quotes 2010-05-05 11:42:41 -07:00
visionmedia 6a6cce03b7 Release 0.10.1 2010-05-03 08:42:01 -07:00
Matt Colyer 970ff87ef6 Fix binary uploads. 2010-05-01 11:46:25 -07:00
visionmedia 8b6c4d322f Updated history 2010-04-30 10:46:24 -07:00
visionmedia 4467a00acd Release 0.10.0 2010-04-30 10:34:13 -07:00
visionmedia 63efc61517 Added "dump exceptions" setting, which is enabled by default 2010-04-30 10:09:53 -07:00
visionmedia 7aa18345c8 Added better ejs usage example 2010-04-30 10:05:04 -07:00
visionmedia 34149187a8 Catching ENOENT in view caching, preventing error when "views/partials" is not found 2010-04-30 10:00:00 -07:00
visionmedia 2d132cd0d5 Merge branch 'ejs' 2010-04-30 09:57:23 -07:00
visionmedia 8d741361e0 Added simple ejs support 2010-04-30 09:57:19 -07:00
visionmedia 2bcea3a370 Added more cache key specs 2010-04-30 09:33:10 -07:00
visionmedia ead3cace02 No need to reverse plugins on each request
This was slowing things down quite a bit
2010-04-30 09:24:17 -07:00
visionmedia 7afa5c7b43 Revert "Clone / reverse plugins ONCE"
shit, was causing some bugs, will figure that out first

This reverts commit 115765e1ee.
2010-04-30 09:18:38 -07:00
visionmedia 115765e1ee Clone / reverse plugins ONCE
huuuuge performance boost
2010-04-30 09:12:48 -07:00
visionmedia d712fae2d7 Fixed bug producing messed up response bodies
Express was trying to respond twice to the same request
due to an error caused by having no callback,
which was then caught, and responded to using Request#error()

haha!
2010-04-30 08:53:52 -07:00
visionmedia 0dba9bd87f Removed Logger "request" format 2010-04-30 08:40:59 -07:00
visionmedia 2fbc495088 Merge branch 'update-ext' 2010-04-30 08:00:04 -07:00
visionmedia 37d490cbe4 Fixed bug recently introduced preventing plugin events to trigger 2010-04-30 07:59:57 -07:00
visionmedia 451679c582 Cache reaper destroys null caches as well
so they dont linger until expired
2010-04-29 09:01:17 -07:00
visionmedia 7270a13ef7 Fixed compileCookie() utility due to ext changes 2010-04-29 08:56:55 -07:00
visionmedia 16f3f90ed7 Todo 2010-04-29 08:52:48 -07:00
visionmedia 9ff2f81a10 Fixed cache bugs introduced by 1bc9a1a 2010-04-29 08:52:01 -07:00
visionmedia 1bc9a1af6a Fixed Cache Store.Memory usage of Object#reduce() 2010-04-29 08:42:51 -07:00
visionmedia 760d9e3341 Fixed error page hash iteration 2010-04-29 08:35:20 -07:00
visionmedia 5b28abc5ed Fixed session / cache key iteration due to ext changes 2010-04-29 08:23:24 -07:00
visionmedia defb1596bb Removed Array#at() usage 2010-04-29 08:10:31 -07:00
visionmedia 9c117d5875 Request#accepts() fixed due to ext changes 2010-04-29 08:09:48 -07:00
visionmedia 1b09fce42a Todo 2010-04-29 08:05:51 -07:00
visionmedia 5e328830e7 Replace merge() calls with Object.merge() 2010-04-29 08:04:42 -07:00
visionmedia 606da1c45b Merge branch 'integration' 2010-04-29 06:50:52 -07:00
visionmedia 6232c1a8f3 Several fixes to http client
- Only attempts to "render" data on first request (not redirects)
  - Allows setting of "redirects" via the data variable
  - Fixed Host header predecence issue
  - Only setting Content-Length / Content-Type when not previously set
  - Passing response object on errors
2010-04-29 06:50:46 -07:00
Viktor Kelemen 15a24e68d2 In case of redirect the request function was called with a wrong param list 2010-04-29 19:21:14 +09:00
visionmedia c12ace81db Fixed Logger content-length 2010-04-28 16:57:55 -07:00
visionmedia 531990b516 Merge branch 'rename-halt' 2010-04-26 09:17:06 -07:00
visionmedia b90a3dbffe Renamed Request#halt() to Request#respond(). Closes #289
deprecated Request#halt(), however it will remain until 1.0
2010-04-26 09:17:01 -07:00
visionmedia 0352b97798 Merge branch 'integration' 2010-04-26 07:07:15 -07:00
visionmedia e45abe60bf _ -> val 2010-04-26 07:07:11 -07:00
visionmedia 8077481707 Merge branch 'cache' of git://github.com/aheckmann/express into integration 2010-04-26 07:05:49 -07:00
visionmedia 4651dd33cd Updated haml submodule 2010-04-26 06:56:07 -07:00
visionmedia c93cfa0871 Added "encoding" option to Request#render(). Closes #299
Should work :)
2010-04-26 06:44:29 -07:00
Aaron Heckmann d57cb7d411 utilize each() 2010-04-25 00:02:20 -04:00
visionmedia 81088766ee Updated ext submodule 2010-04-24 14:14:51 -07:00
visionmedia ae59a50c28 Added benchmark link 2010-04-23 15:24:40 -07:00
visionmedia 4a05056393 Removed unused param in Cache.startReaper()
wtf?
2010-04-23 15:15:27 -07:00
visionmedia 71e97c815a Merge branch 'benchmarks' 2010-04-23 14:40:04 -07:00
visionmedia 8b7787aa60 Added sass benchmarks 2010-04-23 14:39:58 -07:00
visionmedia e0f94b052b Added ruby haml :ugly option to make it render faster in benchmarks 2010-04-23 11:56:12 -07:00
visionmedia eb2c9ffd32 Added haml benchmarks 2010-04-23 11:49:22 -07:00
visionmedia 5af315c165 Using sys.inspect() instead of JSON.encode() for error output
produces cleaner output
2010-04-23 10:30:59 -07:00
visionmedia e9fdfc339b Added error reponse support for text/plain, application/json. Closes #297 2010-04-23 10:28:12 -07:00
visionmedia 132730acea Added specs for errors with text/plain and application/json 2010-04-23 09:55:10 -07:00
visionmedia 405097d323 Fixed Request#sendfile() 404 support even when a callback is available 2010-04-23 06:57:02 -07:00
visionmedia c9d79f26c5 Smooth line graph 2010-04-22 14:18:13 -07:00
visionmedia 7ef13eaf0c Merge branch 'benchmarks' 2010-04-22 14:15:41 -07:00
visionmedia 2756aba21f Added COL 2010-04-22 14:15:36 -07:00
visionmedia c01a7f57df Merge branch 'benchmarks' 2010-04-22 13:43:14 -07:00
visionmedia 33a4dd3841 Fixed graph labels 2010-04-22 13:43:11 -07:00
visionmedia 3c150db4a2 Merge branch 'benchmarks' 2010-04-22 13:20:27 -07:00
visionmedia e31f5d2325 Generating bar graphs for requests per sec 2010-04-22 13:20:24 -07:00
visionmedia f8a61c667e My bad, swap express -> node in graphs 2010-04-22 12:09:40 -07:00
visionmedia e2fe60399f Merge branch 'benchmarks' 2010-04-22 12:04:32 -07:00
visionmedia 59c4e35691 Added graphing capabilities (gnuplot must be installed) 2010-04-22 12:04:28 -07:00
visionmedia 2dc5afd018 Docs 2010-04-22 11:04:04 -07:00
visionmedia b5df39bc46 Merge branch 'benchmarks' 2010-04-22 11:02:24 -07:00
visionmedia f87b709923 Added node static / large static benchmarks 2010-04-22 11:02:21 -07:00
visionmedia 671aa1036b Merge branch 'benchmarks' 2010-04-22 10:55:52 -07:00
visionmedia 4580340db3 Added simple node benchmark 2010-04-22 10:55:46 -07:00
visionmedia 31b53eae39 Added larger ~550kb static benchmarks 2010-04-22 10:41:04 -07:00
visionmedia 089423958d run() returns the http.Server instance. Closes #298 2010-04-22 09:48:20 -07:00
visionmedia 0d02ea43e1 Default Server#host to null (INADDR_ANY)
use run(3000, localhost) etc as needed
2010-04-22 09:43:57 -07:00
visionmedia 93239ae3fb Logger "common" format scale of 0.4f 2010-04-22 09:01:08 -07:00
visionmedia 5d21e9364d Match sinatra buffer size for static benchmark 2010-04-21 18:06:57 -07:00
visionmedia b9306c4cca Added sinatra static benchmark 2010-04-21 18:05:03 -07:00
visionmedia c07bd31f61 Outputting rps while benchmarking 2010-04-21 17:07:13 -07:00
visionmedia fee4830669 Added simple sinatra benchmark 2010-04-21 17:05:39 -07:00
visionmedia 9016b6778e Remove pids 2010-04-21 17:04:19 -07:00
visionmedia e05501a1ae Added simple thin benchmark 2010-04-21 17:03:39 -07:00
visionmedia 23d09fcc9e Added express static benchmark 2010-04-21 16:53:11 -07:00
visionmedia 5d11fccbf2 Ignore *.out 2010-04-21 16:42:39 -07:00
visionmedia 3851957dd0 Started benchmark script 2010-04-21 16:41:50 -07:00
visionmedia 135afb0883 Revert "Renamed session Base" - haha :) just kidding
This reverts commit 27b27af7cd.
2010-04-21 15:50:54 -07:00
visionmedia 27b27af7cd Renamed session Base 2010-04-21 15:50:43 -07:00
visionmedia 20fe31b803 Removed ETag work-around for bug in node
commit that fixed this: http://github.com/ry/node/commit/3934cb54853ca23cee7ef3c6206a5b1264f8ba6d
2010-04-21 15:33:06 -07:00
visionmedia ebca9aab8d Fix chat app plugins 2010-04-21 15:13:10 -07:00
visionmedia 49821e0416 Request#stream() fixes
a) on "end" the stream is already destroyed
  b) AFAIK its not destroyed on "error", so now we destroy it
  c) no need to callback(err) unless first
2010-04-21 14:53:46 -07:00
visionmedia b5d6f1ada5 Merge branch 'etag' 2010-04-21 14:37:17 -07:00
visionmedia b40325cd7b Misc refactoring to Request#trigger() 2010-04-21 13:49:44 -07:00
visionmedia 3b27ec66e1 Removed "data || {}" in Event constructor. Not needed anymore since Object#merge() handles non objects 2010-04-21 13:42:49 -07:00
visionmedia 52b8b36d54 Updated ext submodule which includes higher performance Object#merge() 2010-04-21 13:14:35 -07:00
visionmedia 7e3106dd1b Increase performance by preventing several calls to toLowerCase() in Router#match()
Roughly 10% increase for routing speeds
2010-04-21 12:48:37 -07:00
visionmedia 399e0d94fc Merge branch 'fix-opera' 2010-04-21 11:45:32 -07:00
visionmedia eef1ff9e87 Fixed bug preventing Opera from retaining the generated session id. Closes #292
This might not be the best solution, I am not sure what the cookie spec states.
But it works for now :)
2010-04-21 11:45:27 -07:00
visionmedia 9202c7504b Added "request" logger format for debugging http requests 2010-04-21 10:46:01 -07:00
visionmedia 3fd7e3b93e Added make prof so that we can generate v8.log and analyse the output 2010-04-21 09:58:39 -07:00
visionmedia b6996df86a Added "template created in ..." message in bin/express 2010-04-21 09:24:55 -07:00
visionmedia 4b3efd7bfa Added PREFIX to makefile 2010-04-21 09:24:30 -07:00
visionmedia 12c2682c34 Merge branch 'bin' 2010-04-21 08:57:55 -07:00
visionmedia 2caf67b813 Bash template generator with dummy app 2010-04-21 08:57:50 -07:00
visionmedia fbbe13661a Added view partials to feature list 2010-04-20 20:59:23 -07:00
visionmedia 0fb102edae Normalized another header name 2010-04-20 20:57:12 -07:00
visionmedia b4dd90d074 0.9.0 release details link 2010-04-20 19:53:42 -07:00
visionmedia 2e3f806d07 Normalized header conventions.
For example use Content-Type instead of content-type,
Request#header() lowercases when reading a header,
however does not when writing.
2010-04-20 19:33:54 -07:00
visionmedia f76092e83e Request#error() now accepts a callback function
A common idiom is / will be to accept a callback function in most cases
so this will help to keep things DRY
2010-04-20 19:23:16 -07:00
visionmedia 1e44081583 Added Request#sendHead() 2010-04-20 19:15:30 -07:00
visionmedia 26b3a4259d Added support for Request#halt(status, null) (empty response body) 2010-04-20 19:11:18 -07:00
visionmedia 8a074a7e6d Request#sendfile() Content-Length prevents images from rendering for some reason
commented out for now
2010-04-20 17:27:32 -07:00
visionmedia e99434582f Added ETag support to Request#sendfile() 2010-04-20 16:44:11 -07:00
visionmedia fec57df994 Added options to Request#sendfile(), passed to fs.createReadStream() 2010-04-20 13:09:24 -07:00
visionmedia 033cb2d20a Updated haml submodule 2010-04-20 11:07:58 -07:00
visionmedia a5fa58e3e6 Updated ext submodule 2010-04-20 09:59:35 -07:00
visionmedia fdc9d2714b Removed unused script from sample upload app.
This was preventing the page from loading
2010-04-20 09:46:02 -07:00
visionmedia 824ca9b513 Merge branch 'update-ext' 2010-04-20 09:32:57 -07:00
visionmedia a74a740964 Updated ext submodule 2010-04-20 09:32:52 -07:00
visionmedia 2041d52495 no need for type coercion for testing methods 2010-04-20 08:13:38 -07:00
visionmedia fb5d528eff Merge branch 'stream' 2010-04-19 15:22:24 -07:00
visionmedia a2cedbd9da Request#download() now accepts second filename arg 2010-04-19 15:20:35 -07:00
visionmedia 8574eddfa0 Misc refactoring to Request#stream() 2010-04-19 14:43:42 -07:00
visionmedia 2ccf876929 Started Request#stream() based of Aarons work on Static#streamfile() 2010-04-19 13:58:29 -07:00
visionmedia 28df150784 Revert "Only unshift support libs once"
This reverts commit 0950083da2.
2010-04-16 10:27:33 -07:00
visionmedia 0950083da2 Only unshift support libs once 2010-04-16 10:25:21 -07:00
visionmedia 88c5f910da Changed; sendfile() using notFound()
instead of halt() so that our DSL-level notFound()
route can handle this as needed. Also outputs the pretty
page when visiting directly
2010-04-15 09:43:29 -07:00
visionmedia a9d3e4798e Updated node --version supported 2010-04-15 08:50:25 -07:00
visionmedia d85d834b23 Updated JSpec 2010-04-15 08:49:59 -07:00
visionmedia 5729da5a9f Release 0.9.0 2010-04-14 17:03:57 -07:00
visionmedia 1255331160 Release 0.9.0 2010-04-14 16:56:13 -07:00
visionmedia 0fef51b5f6 Updated git submodules 2010-04-14 16:41:42 -07:00
visionmedia 7cf18c0468 Merge branch 'fix-querystring-0' 2010-04-13 13:25:55 -07:00
visionmedia b994509b9d Fixed bug preventing falsey params. Closes #286
Request#param() would prevously fail with ?page=0 for example
when param("page") is used since it would return undefined and not 0
2010-04-13 13:25:44 -07:00
visionmedia 6571e19e8f Added spec for #286 2010-04-13 13:17:27 -07:00
visionmedia 7441164db9 Merge branch 'integration' 2010-04-12 20:40:03 -07:00
visionmedia 09bb10cd3f Merge branch 'download' of git://github.com/aheckmann/express into integration 2010-04-12 20:39:20 -07:00
Aaron Heckmann bd6f24f4b1 add cookie support to readme 2010-04-12 22:56:59 -04:00
Aaron Heckmann 0a174ad219 move Request#download to Static plugin
#download() was a hangover from before the Static plugin existed and no longer worked. Also added missing specs so this won't happen again.
2010-04-12 22:49:49 -04:00
visionmedia 33d004fb9a Fixed MockResponse to match node API 2010-04-12 11:04:52 -07:00
visionmedia 652bf34c77 Merge branch 'integration' 2010-04-12 10:40:08 -07:00
Aaron Heckmann 3f11bad68e fix FileWriteStream.prototype.close renamed to end() 2010-04-11 23:10:41 -04:00
Aaron Heckmann 5245fbfc6d fix OutgoingMessage.prototype.close has been renamed to end() 2010-04-11 23:06:09 -04:00
visionmedia 68f8ee8a99 Fixed "express" executable due to node 0.1.90 changes 2010-04-11 18:39:14 -07:00
visionmedia 7b83a52dce http client fix from node renaming close to end 2010-04-11 18:10:58 -07:00
visionmedia 5f57c82478 Merge branch 'integration' 2010-04-11 18:08:05 -07:00
visionmedia 3128cbef73 Removed TODO comment
added an issue http://github.com/visionmedia/express/issues/issue/285
2010-04-11 18:08:00 -07:00
visionmedia 694b2bf055 Merge branch 'node_0.1.9_fixes' of git://github.com/ciaranj/express into integration 2010-04-11 18:04:31 -07:00
visionmedia e03a023c5f Merge branch 'integration' 2010-04-11 17:45:19 -07:00
ciaranj 3ff5d3bd09 Temporarily add back in the old multipart support
This will at least get us going again whilst decisions are made :)
2010-04-10 10:06:04 +01:00
ciaranj 04841196e3 Fixed the cookie test so it will work in different timezones.
Tj, I'm not sure what timezone you were in when you wrote the test, but
I've guessed that it was PDT ?   Hopefully this fix allows the test to
run in any timezone :) .. I was surprised that cookies don't use UTC which
could've mate things a lot cleaner, meh, old tech eh.
2010-04-10 09:59:41 +01:00
visionmedia 18dd495d99 Revert "Fixed relative require of Class"
This reverts commit f714945bbb.
2010-04-08 16:09:06 -07:00
visionmedia f714945bbb Fixed relative require of Class 2010-04-08 15:43:33 -07:00
visionmedia a318ef2232 Cookie expires now using Date#toGMTString()
Spec I found wanted hyphens, but this appears to be the norm
for JS cookies
2010-04-06 19:40:59 -07:00
visionmedia 8ed24de9d3 Updated haml submodule 2010-04-06 15:32:36 -07:00
visionmedia e06e50936d Updated sass submodule 2010-04-06 14:38:06 -07:00
visionmedia d710e9cb47 Merge branch 'integration' 2010-04-06 11:01:23 -07:00
Aaron Heckmann 9af3699850 utilize Date.now() 2010-04-04 12:50:11 -04:00
visionmedia 3cc7b4d8c2 Utilizing Date.now() 2010-04-02 14:12:36 -07:00
visionmedia 8b58732a1f Merge branch 'globals' 2010-04-02 13:35:04 -07:00
visionmedia a2a0935343 Request is no longer global 2010-04-02 13:13:26 -07:00
visionmedia 2668156e53 Event is no longer global 2010-04-02 13:07:54 -07:00
visionmedia d67615d239 puts() -> sys.puts() 2010-04-02 13:06:25 -07:00
visionmedia afd70b64ed Removed "sys" global merge 2010-04-02 13:05:18 -07:00
visionmedia 78a6e43667 Request#render() now only sets option.cache to true when set("cache view contents") is true
to allow development editing of the views
2010-03-31 10:36:52 -07:00
visionmedia a65af97e43 Docs 2010-03-31 10:28:40 -07:00
visionmedia 637dfabe69 render() always passing "cache" and "filename" options
if the engine does not use them, then they
will be ignored. However this already bumps
haml.js by about %25 in terms of performance
2010-03-31 10:20:24 -07:00
visionmedia ff8b3c10f3 Updated haml submodule 2010-03-31 10:14:29 -07:00
visionmedia f442555d8f Updated haml submodule 2010-03-31 08:10:28 -07:00
visionmedia bdf9f882ad Merge branch 'better-haml' 2010-03-31 07:51:00 -07:00
visionmedia 1e5c5bfe00 Switching around partial filename 2010-03-31 07:50:11 -07:00
visionmedia 0e78fdfcb4 Templates using haml.js instead of haml-js 2010-03-29 10:23:22 -07:00
visionmedia 4f532f86dc Added haml.js submodule; removed haml-js 2010-03-29 09:21:33 -07:00
visionmedia 92844825cb Always httpOnly session cookie 2010-03-29 08:37:57 -07:00
visionmedia 6b13fc99b0 Merge branch 'flip-views' 2010-03-29 08:25:23 -07:00
visionmedia 0f7aa26757 Added deprecation warning for views 2010-03-29 08:25:18 -07:00
visionmedia a06f963263 Merge branch 'flipViewExt' of git://github.com/aheckmann/express into flip-views 2010-03-29 07:58:13 -07:00
visionmedia d31de1e654 Defaulting httpOnly for Session cookies, however overridable 2010-03-29 07:55:37 -07:00
Aaron Heckmann 46a0301022 session cookie now httpOnly 2010-03-27 00:21:37 -04:00
Aaron Heckmann 73d26036ef updated specs and example apps
all tests passing
2010-03-27 00:00:49 -04:00
Aaron Heckmann b9637c9d7d started flipping view extensions 2010-03-27 00:00:49 -04:00
visionmedia 08497683bf Fixed setting of multiple cookies. Closes #199 2010-03-26 16:08:39 -07:00
visionmedia 44a50f6e58 Moved require("http") out of Server#run() 2010-03-26 07:16:55 -07:00
visionmedia 4c2b4e5c66 Removed unused require 2010-03-26 07:16:12 -07:00
Guillermo Rauch b0884ad7c3 Correction 2010-03-25 19:33:45 -07:00
Guillermo Rauch cf09f86df2 Expose the http.Server instance 2010-03-25 19:17:43 -07:00
visionmedia d33c38f671 Merge branch 'integration' 2010-03-25 15:57:08 -07:00
Aaron Heckmann fbfba21854 multipart parse only when needed 2010-03-25 18:03:32 -04:00
visionmedia b2093d6f10 Merge branch 'partial-index-and-length' 2010-03-25 12:47:22 -07:00
visionmedia 736a0190c1 Passing __index__, __length__, __isFirst__, __isLast__ to collection partials. Closes #254 2010-03-25 12:47:17 -07:00
visionmedia a74c259c38 Request instance created before body parsing. Closes #262
Merge branch 'request'
2010-03-25 11:48:35 -07:00
visionmedia d3dedd6312 Fixed post param issue 2010-03-25 11:44:55 -07:00
visionmedia 920eab0ef9 Fixed mocks to work with new routing api 2010-03-25 11:37:56 -07:00
visionmedia d576085e8d . 2010-03-25 11:09:50 -07:00
visionmedia 62b9a9e287 Docs 2010-03-25 10:49:25 -07:00
visionmedia 56ffe1d62a Merge branch 'upload-limit' 2010-03-25 10:49:00 -07:00
visionmedia 14acbcb5f1 Added "max upload size" setting 2010-03-25 10:48:55 -07:00
visionmedia 9a0011bf49 Updated ext. Closes #256
Should be fixed now :)
2010-03-25 09:29:52 -07:00
visionmedia 7b9f18b097 Added Request#render() callback function. Closes #258 2010-03-25 08:53:47 -07:00
visionmedia f8e4333157 Merge branch 'integration' 2010-03-25 08:40:47 -07:00
visionmedia b5c933aa94 fn -> callback 2010-03-25 08:40:18 -07:00
visionmedia c441af3f2c Typo 2010-03-25 08:39:48 -07:00
visionmedia e885421a67 Merge branch 'master' of git://github.com/aheckmann/express into integration 2010-03-25 08:38:54 -07:00
visionmedia ce4fe24a93 Updated to JSpec 4.0.0 2010-03-25 08:25:38 -07:00
visionmedia 1c0e2ceba5 error() is passed the exception 2010-03-25 08:24:19 -07:00
Aaron Heckmann a435e8ec47 fn -> callback 2010-03-25 11:22:48 -04:00
visionmedia b958393135 Added DSL level error() route support 2010-03-25 08:21:49 -07:00
visionmedia a6dd697a68 Added DSL level notFound() route support 2010-03-25 08:13:22 -07:00
visionmedia a4833e7b35 Added specs for Request#notFound() 2010-03-25 07:58:28 -07:00
visionmedia 54fa643c10 More Request#error() specs 2010-03-25 07:54:07 -07:00
visionmedia 6047cd4542 Added specs for Request#error() 2010-03-25 07:51:19 -07:00
visionmedia 8c5f7df280 Merge branch 'errors' 2010-03-25 07:35:44 -07:00
visionmedia ff1250c33c Added publish Request#notFound() 2010-03-25 07:35:39 -07:00
visionmedia 4297c10fe9 Removed Express.error(), Added public Request#error() 2010-03-25 07:18:55 -07:00
visionmedia ab6ad94ec3 Request#halt() accepts callback function as 3rd/4th arg 2010-03-24 16:05:34 -07:00
visionmedia 759183461f Merge branch 'error-handling' 2010-03-24 15:44:50 -07:00
visionmedia f850fa6bc9 Misc error handling improvements 2010-03-24 15:44:46 -07:00
visionmedia 5a242d35b7 Removed unused variable 2010-03-24 15:15:45 -07:00
visionmedia abf5d66e01 Merge branch 'error-handling' 2010-03-24 15:08:51 -07:00
visionmedia e92360e0d4 Caching notFound / showException modules 2010-03-24 15:08:06 -07:00
visionmedia b5c0fdc013 Express.error() now acts as the core exception handler 2010-03-24 14:54:13 -07:00
visionmedia 906ef02c5e request response event is now fired in reverse.
This does a few things:
  a. Allows plugins such as Logger to properly "wrap" all
     other plugins when it is the first passed to use().

  b. Lessons the chance of a plugin failure effecting another plugin
2010-03-24 14:45:46 -07:00
visionmedia 7550decbc0 Handle when a plugin response fails 2010-03-24 14:32:08 -07:00
visionmedia acd88c3c8a next -> callback 2010-03-24 12:56:26 -07:00
visionmedia a3854a2de1 Styling 2010-03-24 12:54:52 -07:00
visionmedia 880aca5d83 Removed set("session cookie") in favour of use(Session, { cookie: { ... }}) 2010-03-24 12:53:33 -07:00
visionmedia 2d1c98a5a7 Docs for stable / edge 2010-03-24 08:33:43 -07:00
visionmedia fefa06ba21 Merge branch 'route-wildcards' 2010-03-23 10:41:31 -07:00
visionmedia 18faa91c94 Added preprocessing of route param wildcards using param(). Closes #251
Async is yet to come
2010-03-23 10:41:25 -07:00
visionmedia 9f23c7b31a Added specs for param() 2010-03-23 10:31:46 -07:00
visionmedia eee6926bab Added more route wildcard specs 2010-03-23 10:11:52 -07:00
visionmedia 6806f952d6 Merge branch 'pre-cache-views' 2010-03-23 09:53:23 -07:00
visionmedia faaef54b42 Pre-caching views in memory. Closes #253
This mirrors the partial caching functionality. This
causes a slight overhead at boot time, however prevents
the need to perform cache checks per render() call.
2010-03-23 09:53:17 -07:00
visionmedia c29852fae7 Started pre caching of views 2010-03-23 09:42:23 -07:00
visionmedia 7d100dae97 Merge branch 'integration' 2010-03-22 15:34:50 -07:00
visionmedia 206e800963 Added assertion to ensure that partials dir is relative to set("views") 2010-03-22 15:34:46 -07:00
visionmedia 555a334315 Re-using variables 2010-03-22 15:33:08 -07:00
visionmedia d2c5def108 Using set("views") when setting set("partials")
So that /partials is always relative by default
2010-03-22 15:31:39 -07:00
visionmedia 98323c530e partialscache -> partials 2010-03-22 15:30:34 -07:00
Aaron Heckmann b36510dbb9 preload partials
add settings
bug fix, partial now works when cache view contents is true
2010-03-22 18:16:40 -04:00
Aaron Heckmann 50e533c32b add cache view partials 2010-03-22 16:40:35 -04:00
visionmedia 33277c3d37 Removed utils.mixin() use Object#mergeDeep()
jQuery is messy, and this implementation is way to
slow for SSJS, and just gross :)
2010-03-22 11:28:23 -07:00
visionmedia 28f2ad0109 Merge branch 'partials' 2010-03-22 10:21:42 -07:00
visionmedia 5d10ee4e61 Chat sample app using partials as an example 2010-03-22 10:21:37 -07:00
visionmedia b4190ada0c Added partial "as" option 2010-03-22 10:16:12 -07:00
visionmedia 60d314552d Partial collection should not introduce newlines 2010-03-22 10:13:25 -07:00
visionmedia c971d54543 Added partial collection support 2010-03-22 10:12:52 -07:00
visionmedia 346f019fa8 Started view partial support 2010-03-22 10:05:05 -07:00
visionmedia d61c2480b6 Updated ext submodule 2010-03-22 09:12:24 -07:00
visionmedia e30b5b86da Removed Request#_blendInNodeRequest() 2010-03-22 09:12:09 -07:00
visionmedia bd74fe24fd Merge branch 'net2_fixes' of git://github.com/ciaranj/express 2010-03-22 09:05:58 -07:00
visionmedia b30eaa8ee3 Updated support to v0.1.33 2010-03-22 08:34:05 -07:00
ciaranj 75c530516a Various minor fixes required to make express work post the net2 merge branch 2010-03-20 12:26:37 +00:00
visionmedia 3b49821e82 Release 0.8.0 2010-03-19 16:51:43 -07:00
visionmedia febf443960 Fixed session reaper 2010-03-19 15:57:25 -07:00
visionmedia f5da81e782 Removed a comment from chat app 2010-03-19 14:38:26 -07:00
visionmedia 9cb23ac584 Merge branch 'coffee' 2010-03-19 14:14:52 -07:00
visionmedia 6ff3100c1f Added coffeescript example app. Closes #242 2010-03-19 14:14:46 -07:00
visionmedia e3ea3723bf Added dir for coffeescript example 2010-03-19 13:56:31 -07:00
visionmedia 33443d9b41 Merge branch 'integration' 2010-03-19 10:13:26 -07:00
visionmedia e0ef61659f Merge branch 'async-session' into integration 2010-03-19 10:12:56 -07:00
visionmedia 655ad77bce fn -> callback 2010-03-19 09:55:06 -07:00
visionmedia c09e546240 Removed session reaper try/catch
we can revisit this issue later,
and deal with it across Cache as well
2010-03-19 09:53:33 -07:00
visionmedia a08b14a89e Misc Session refactoring 2010-03-19 09:52:18 -07:00
visionmedia 12e90b0eef Merge branch 'session_with_callbacks' of git://github.com/ciaranj/express into async-session 2010-03-19 09:41:30 -07:00
visionmedia 7606f1bcbd Merge branch 'async-cache' 2010-03-19 09:38:47 -07:00
visionmedia cabb43b187 Finished converting async cache api. Closes #240 2010-03-19 09:38:42 -07:00
visionmedia b85cda3f6e Cache api is now async 2010-03-19 09:19:22 -07:00
visionmedia b92f1b7497 Async cache specs 2010-03-19 09:04:31 -07:00
visionmedia 273a51a335 Release 0.7.6 2010-03-19 08:55:52 -07:00
ciaranj 212dc88b89 Squashed commit of the changes I've put in place to support callback
methods on the session object.

This code changes the behaviour of the session handling in a fairly key
way:

If an unknown session id is seen then a *new* session is created with a *new* session
id.  The previous behaviour was to create a new session with the existing id.
2010-03-19 13:55:51 +00:00
visionmedia ce82a91d14 Revert "Fail to test CI"
This reverts commit 52a08401c7.
2010-03-18 16:20:53 -07:00
visionmedia 52a08401c7 Fail to test CI 2010-03-18 16:20:12 -07:00
visionmedia 706c0cb033 View support listed in features already 2010-03-18 16:19:39 -07:00
visionmedia 1567a613a6 Closes #63.
Merge branch 'cli'
2010-03-18 13:02:00 -07:00
visionmedia d767d80d20 Added make install 2010-03-18 13:01:28 -07:00
visionmedia 1103a9d510 Moved a helper function to the helpers section 2010-03-18 13:00:34 -07:00
visionmedia c34af4b97a Started executable 2010-03-18 12:57:44 -07:00
visionmedia 8dcee4d338 Request#render() only calls cache.get() once 2010-03-18 11:40:48 -07:00
visionmedia fc1e69ea73 Namespacing View caches with "view:" 2010-03-18 11:40:04 -07:00
visionmedia db460117c1 Namespacing Static caches with "static:" 2010-03-18 11:39:23 -07:00
visionmedia 1c514df0fd Fixed ternary style 2010-03-18 11:37:34 -07:00
visionmedia 780ec5cbec Docs 2010-03-18 11:27:15 -07:00
visionmedia 3721873b62 Both example apps now use Static 2010-03-18 11:23:07 -07:00
visionmedia 3bdc77ca91 Deprecated Request#sendfile() and express/static 2010-03-18 11:22:40 -07:00
visionmedia b8f54d64a4 Closes #88.
Merge branch 'runtime-routes'
2010-03-18 11:17:16 -07:00
visionmedia 90d48b320a Added "GET /public/*" to Static plugin, defaulting to <root>/public 2010-03-18 11:16:55 -07:00
visionmedia a797342800 Static is now a plugin 2010-03-18 11:09:25 -07:00
visionmedia 31e608e0ae Added Request#sendfile() specs 2010-03-18 10:58:50 -07:00
visionmedia ebcfb0e577 Removed Server#running 2010-03-18 10:31:40 -07:00
visionmedia 161c9f9142 Closes #52
fs.readFile becomes fs.readFileSync when testing

Merge branch 'view-specs'
2010-03-18 10:17:03 -07:00
visionmedia 2a099da726 Fixed a few specs 2010-03-18 10:16:14 -07:00
visionmedia 5118397004 Added auto content-type view spec 2010-03-18 10:14:10 -07:00
visionmedia 546c340656 Added view custom context spec 2010-03-18 10:12:20 -07:00
visionmedia 3034cc7c52 View context spec 2010-03-18 10:10:10 -07:00
visionmedia d89381ff78 Added layout local var access spec 2010-03-18 10:04:25 -07:00
visionmedia 86cac58100 Added view locals spec 2010-03-18 09:54:29 -07:00
visionmedia 8fc062007e Added spec for invalid view engine 2010-03-18 09:51:48 -07:00
visionmedia 9fd92e3306 Added view caching specs 2010-03-18 09:50:16 -07:00
visionmedia a4cbbe5dd4 Spec for layout: false 2010-03-18 09:36:57 -07:00
visionmedia da7ea9655f Spec for custom layout 2010-03-18 09:36:12 -07:00
visionmedia 00a8c642dd Started view specs 2010-03-18 09:32:32 -07:00
visionmedia e1152f6e56 Typo 2010-03-18 09:12:46 -07:00
visionmedia 7cf9c6842a Merge branch 'fix-views' 2010-03-18 09:08:06 -07:00
visionmedia d375535cd9 Fixed set("views"). Closes #239
This actually should have never worked (if it even did).
My bad :)
2010-03-18 09:08:02 -07:00
visionmedia c5ea868f47 Merge branch 'bugfix' of git://github.com/aheckmann/express 2010-03-18 08:02:23 -07:00
visionmedia 884d333805 Added Request#isXHR. Closes #229
Merge branch 'integration'
2010-03-18 07:55:30 -07:00
visionmedia 3b9921a15b Added Request#isXHR specs 2010-03-18 07:54:34 -07:00
Aaron Heckmann 17b753d95e add missing space to combined log format 2010-03-17 22:38:45 -04:00
Aaron Heckmann 6a8781b5e2 add request.isXHR 2010-03-17 22:16:13 -04:00
Aaron Heckmann 0dfaf01749 add git clone to git command 2010-03-17 21:40:13 -04:00
visionmedia 088aa83e22 Updated feature list 2010-03-17 16:07:53 -07:00
visionmedia 934adb1e9f Release 0.7.5 2010-03-16 19:38:21 -07:00
visionmedia 50e0593de6 Request#flash() without args now returns all flashes 2010-03-16 19:34:11 -07:00
visionmedia f2637c6421 Fixed Request#flash() specs 2010-03-16 19:22:10 -07:00
visionmedia a52dacea68 Updated ext 2010-03-16 19:12:15 -07:00
visionmedia f56a33d22d Release 0.7.4 2010-03-16 16:14:48 -07:00
visionmedia 2aa858b0fb Merge branch 'class' 2010-03-16 16:12:42 -07:00
visionmedia c3b8ba4b9a NewClass -> Class, removed js-oo dependency 2010-03-16 16:12:14 -07:00
visionmedia ac96b8c0e1 Update class.js submodule with Class#include() 2010-03-16 16:10:39 -07:00
visionmedia a329a9f4d8 Converted more to use class.js 2010-03-16 15:53:32 -07:00
visionmedia 63cc7eb44d Converted more to use class.js 2010-03-16 15:50:17 -07:00
visionmedia 6505f32221 Started conversion of js-oo Class -> class.js 2010-03-16 15:46:22 -07:00
visionmedia 22088260f4 Fixed session reaper 2010-03-16 13:25:39 -07:00
visionmedia d893009a8d Release 0.7.3 2010-03-16 13:17:41 -07:00
visionmedia b62e1741be Fixed requiring of haml / sass 2010-03-16 13:16:55 -07:00
visionmedia 903c2aa642 Added package.json 2010-03-16 08:31:33 -07:00
visionmedia d0a8bb550e Release 0.7.2 2010-03-16 08:08:17 -07:00
visionmedia f96f1423e1 Fixed GIT submodules (HAH!) 2010-03-16 08:06:26 -07:00
visionmedia 7bf17f2f61 Removed old support dir 2010-03-16 08:03:57 -07:00
visionmedia 670b6cfc15 Merge branch 'remove-kiwi' 2010-03-16 08:03:33 -07:00
visionmedia b6d2c8479c Release 0.7.1 2010-03-16 08:03:06 -07:00
visionmedia 5aaa114271 Docs 2010-03-16 08:01:51 -07:00
visionmedia e99c2791bb Docs 2010-03-16 07:58:06 -07:00
visionmedia 656d7754cd Express now using submodules again until a PM is adopted 2010-03-16 07:54:20 -07:00
visionmedia 4aaf10fbfc Moved support 2010-03-16 07:39:56 -07:00
visionmedia 85e77b77aa Added submodules 2010-03-16 07:02:49 -07:00
visionmedia f23ef09247 Chat example using millisecond conversions from ext 2010-03-15 16:00:39 -07:00
visionmedia 440d956438 Refactored Session#startReaper() with ext millisecond conversions 2010-03-15 15:59:37 -07:00
visionmedia acd2852cf3 ext >= 0.2.4 2010-03-15 15:58:02 -07:00
visionmedia 4246f43bdf ext >= 0.2.3 2010-03-15 09:57:38 -07:00
visionmedia 7d33769cd2 Revert "Removed sass / haml "dependencies""
This reverts commit 31fdba80d4.
2010-03-15 09:43:29 -07:00
visionmedia 31fdba80d4 Removed sass / haml "dependencies" 2010-03-15 09:42:15 -07:00
visionmedia 77f8e460d0 Better example app 2010-03-15 09:31:11 -07:00
visionmedia 51e51db9f7 Docs 2010-03-15 09:16:13 -07:00
visionmedia 73c506f19c Release 0.7.0 2010-03-15 09:13:18 -07:00
visionmedia 79143f3334 Chat sample app using pass() 2010-03-15 09:10:50 -07:00
visionmedia 128ba9040e Refactored Router#matchingRoute() 2010-03-15 09:09:51 -07:00
visionmedia 300cfe74ad Request#pass() accepts a pathname string 2010-03-15 09:02:44 -07:00
visionmedia f008af05bd Merge branch 'pull' 2010-03-15 08:54:57 -07:00
Aaron Heckmann 3aa870d6bd return this in pass 2010-03-15 08:50:35 -07:00
Aaron Heckmann 25e1a8c001 add pass specs 2010-03-15 08:50:26 -07:00
Aaron Heckmann 0ba3b114b0 add pass support 2010-03-15 08:50:20 -07:00
visionmedia c429e88e8e Updated --version of node tested against in readme 2010-03-15 08:42:22 -07:00
Aaron Heckmann c7a2fe8440 remove profiler from plugins.js 2010-03-15 08:41:21 -07:00
Aaron Heckmann de237e760b remove Profiler 2010-03-15 08:41:03 -07:00
visionmedia 927f5c9883 Logger copyright 2010-03-12 07:36:50 -08:00
visionmedia 88f461baf2 Logger using Date#format() 2010-03-12 07:14:57 -08:00
visionmedia 3251ae26a0 Fixed plot format 2010-03-12 07:09:56 -08:00
visionmedia e84c81633e "combined" using printf() 2010-03-12 07:09:20 -08:00
visionmedia a2ec966ac7 "common" Logger format using printf() 2010-03-12 07:06:47 -08:00
visionmedia 69660fbfda Merge branch 'integration' 2010-03-12 06:58:34 -08:00
visionmedia dcedca1a80 Removed 'sinatra' logger, added duration to 'common' log format 2010-03-12 06:58:23 -08:00
visionmedia 6455e954fc Removed CommonLogger, use Logger 2010-03-12 06:53:17 -08:00
visionmedia 646904688f No need for utils.mixin() here 2010-03-11 11:16:48 -08:00
visionmedia 62779fc972 Doc typo 2010-03-11 11:14:33 -08:00
visionmedia fdee4cde26 Sample app in readme 2010-03-11 11:14:02 -08:00
visionmedia 0c18ac5adc Added kiwi installation docs 2010-03-11 11:05:41 -08:00
visionmedia 6da4a942ca Managing dependencies with the kiwi package manager. Closes #228
Merge branch 'kiwi'
2010-03-11 11:01:54 -08:00
visionmedia 565f68d2d7 Added kiwi.seed() calls to make them available via require()
This is needed since the view plugin uses
the regular require() and not kiwi.require()
2010-03-11 11:00:47 -08:00
visionmedia a7cee4c889 Removed references to submodules 2010-03-11 10:57:26 -08:00
visionmedia 4f315f9b11 Added haml / sass dependencies 2010-03-11 10:46:08 -08:00
visionmedia 51febfec2d Actually added seed.yml :) 2010-03-10 19:23:56 -08:00
visionmedia df8bd96b2e Added support for arbitrary view engines 2010-03-10 19:23:56 -08:00
visionmedia 9da9beb342 Added seed.yml for kiwi package management support 2010-03-10 19:23:56 -08:00
visionmedia f93af823df Fixed typo 2010-03-10 19:23:51 -08:00
Aaron Heckmann 5e74723a92 add logger 2010-03-10 22:09:07 -05:00
visionmedia ec77e1acea HTTP client appends query string when method is GET. Closes #205 2010-03-10 19:01:40 -08:00
visionmedia 1afad64972 Misc refactoring to http client 2010-03-10 18:53:12 -08:00
visionmedia a3365dda07 Removed usage of RESTful route funcs as http client 2010-03-10 18:49:04 -08:00
visionmedia 4c246a4cd1 Merge branch 'async-plugins' 2010-03-10 18:34:09 -08:00
visionmedia 934ffd0731 Fixed params in show-exception page 2010-03-10 18:32:25 -08:00
visionmedia 790e2c233d Inverted plugin async support. Return true WHEN async 2010-03-10 17:06:46 -08:00
visionmedia 9e9967381c Misc refactoring 2010-03-10 17:01:40 -08:00
visionmedia 891ed08827 Request#trigger() now supports callback as 2nd or 3rd arg 2010-03-10 17:01:08 -08:00
visionmedia 55d13a6f08 Doc typo 2010-03-10 16:58:53 -08:00
visionmedia 5569ea4397 Removed custom exceptions
because they are lame
2010-03-10 16:57:51 -08:00
visionmedia 693e37459a Removed InvalidResponseBody / InvalidStatusCode
stupid anyway, just dont fuck shit up :)
2010-03-10 16:46:47 -08:00
visionmedia 90de1fa55d Refactoring routing slightly 2010-03-10 16:34:21 -08:00
visionmedia 6d6e1557ce Refactored Request#trigger() 2010-03-10 16:26:20 -08:00
visionmedia 2d84f16dc0 Hooks do not support async at the moment anyway, return true 2010-03-10 16:14:54 -08:00
visionmedia 2f98ef9f6d Strict comparisons 2010-03-10 16:12:16 -08:00
visionmedia e0c07d2385 Fixed typo 2010-03-10 16:11:38 -08:00
ciaranj 0b2413d8c0 Missed a curly brace out 2010-03-10 23:52:31 +00:00
ciaranj e92b01f813 Change the approach to be truth based
Now just enforces that a plugin returns true, if it doesn't return true then
we assume the plugin is taking care of making sure that the plugin chain continues.

A sensible enhancement to this might be to improve the request.trigger function to timeout
after a fixed period, log a warning, then carry on as normal ??

I'm not too sure of what 'Hooks.js' does so I may haveconfigured that incorrectly, just FYI
2010-03-10 23:49:38 +00:00
ciaranj 27ff13459f Merge branch 'master' of git://github.com/visionmedia/express into async_plugins
Conflicts:
	lib/express/plugins/cookie.js
	lib/express/plugins/hooks.js
	lib/express/request.js
2010-03-10 23:36:18 +00:00
ciaranj 3e80915454 Oops, still had some proto code in there 2010-03-10 23:23:37 +00:00
ciaranj 4063d2e2c4 Initial stab at async plugin execution 2010-03-10 23:16:31 +00:00
visionmedia ce9416857b Renamed params -> keys now that ext.js is fixed 2010-03-10 13:39:49 -08:00
visionmedia 575d5e8e57 Updated ext.js. Closes #227 2010-03-10 13:38:07 -08:00
visionmedia 14ceb8c046 Release 0.5.0 2010-03-10 13:17:57 -08:00
visionmedia c6c29ca505 Styling 2010-03-10 13:07:04 -08:00
visionmedia c551226504 More refactoring 2010-03-10 13:06:10 -08:00
visionmedia fcbc09543c More refactoring 2010-03-10 13:04:12 -08:00
visionmedia 6d83bb0026 Misc refactoring 2010-03-10 13:00:43 -08:00
visionmedia 0784a513c9 configure() using each() 2010-03-10 12:48:48 -08:00
visionmedia ebcdec0860 Misc refactoring 2010-03-10 12:43:40 -08:00
visionmedia 6805e4f28f Kinda updated feature list a bit 2010-03-10 12:30:50 -08:00
visionmedia 962f5fa412 Removed extname() / basename() utils. Using path module 2010-03-10 12:27:49 -08:00
visionmedia 1385988ab8 Better escape() util 2010-03-10 12:24:08 -08:00
visionmedia 6cc80f8c54 Removed toArray() util. use arguments.values 2010-03-10 12:23:45 -08:00
visionmedia d6c843962d Removed escapeRegexp() util 2010-03-10 12:22:25 -08:00
visionmedia 247e6ad9ab Removed process.mixin() dependency 2010-03-10 12:17:10 -08:00
visionmedia 364c131a4e Merge branch 'ext' 2010-03-10 12:04:38 -08:00
visionmedia b047325033 Updated ext and removed Collection 2010-03-10 12:03:26 -08:00
visionmedia 0894cfe058 Removed more Collection usage 2010-03-10 11:21:29 -08:00
visionmedia f4a9d7e70b Removed more Collection usage 2010-03-10 11:18:14 -08:00
visionmedia 593634fb5d Started removing usage of Collection 2010-03-10 11:16:26 -08:00
visionmedia 2932bf5006 make test / make init distinction 2010-03-10 11:12:12 -08:00
visionmedia 4b1c39fe41 Removed Collection specs 2010-03-10 11:10:12 -08:00
visionmedia ee91e3a139 Started removal of Collection 2010-03-10 11:08:20 -08:00
visionmedia e287b854a2 Added ext.js submodule 2010-03-09 08:31:17 -08:00
visionmedia 5458e5dd00 Misc refactoring 2010-03-09 08:07:55 -08:00
visionmedia ed30f37ca9 Fixing some comments 2010-03-09 08:02:44 -08:00
visionmedia 9e495f6bb8 Misc refactoring to multi-part handling 2010-03-09 07:57:57 -08:00
Aaron Heckmann 21566c49f0 update node version in readme
push the stream.part bugfix from previous commit
2010-03-09 07:54:50 -08:00
Aaron Heckmann 0a225c13a4 refactor run callback
add Server.error
fix bug in run callback (accepts not defined)
fix bug in stream.body event (part is undefined)
2010-03-09 07:54:46 -08:00
Aaron Heckmann 680c07a030 ensure uploaded files close before routing 2010-03-09 07:54:41 -08:00
visionmedia 8ee66dca22 Updated HTTP client. Closes #221
Merge branch 'update-http-client'
2010-03-08 18:43:38 -08:00
visionmedia 60393f07ef Removed debugging data 2010-03-08 18:43:05 -08:00
visionmedia 34418b03fb HTTP client is resolving callback function amoung other args 2010-03-08 18:42:28 -08:00
visionmedia ce2f161f08 Implemented max redirects option for http client. Closes #204 2010-03-08 18:33:23 -08:00
visionmedia d5ca1ea152 Started fixing HTTP client 2010-03-08 18:08:09 -08:00
visionmedia c3fec8225a Removed http client allowData 2010-03-08 17:51:32 -08:00
visionmedia bfff00826e Styling 2010-03-08 17:11:16 -08:00
visionmedia 61cb50b2bd Styling 2010-03-08 17:09:36 -08:00
visionmedia c8d3bfabc7 Styling 2010-03-08 17:01:35 -08:00
visionmedia 1ce212d33d Styling 2010-03-08 17:00:56 -08:00
visionmedia 3682f4f06a Styling 2010-03-08 16:57:49 -08:00
visionmedia 0f74408b0e Styling 2010-03-08 16:56:31 -08:00
visionmedia f7d7c4a8e0 Merge branch 'node-0.1.30' 2010-03-08 16:42:41 -08:00
visionmedia 0cb8d12796 Removed ElementCollection support
this will become another library
2010-03-08 16:40:23 -08:00
ciaranj 9586ecfd58 Multipart form-data / File uploading now works again
Haven't re-implemented a timeout, wasn't sure what behaviour was wanted here...should
be easy enough to do, wish I could get local tests working again :(
2010-03-09 00:13:00 +00:00
ciaranj 86217867f9 Now working on node 0.1.30 but using custom mixin 2010-03-08 22:00:09 +00:00
Aaron Heckmann 496de51a11 Common log client address instead of server address 2010-03-05 07:38:08 -08:00
visionmedia 38591d06a0 Deep copy request 2010-03-05 07:32:57 -08:00
visionmedia 91805f7da4 Shameless self promotion of ebook 2010-02-22 14:48:43 -08:00
visionmedia 7bd8340a8b Fixed Collection#clone() 2010-02-22 13:30:46 -08:00
visionmedia 4817007097 Re-throwing errors 2010-02-22 13:26:35 -08:00
visionmedia d5003feb39 Fixed mocks to match node api 2010-02-22 08:08:51 -08:00
visionmedia f03e460ca5 Started converting fs module 2010-02-22 08:05:13 -08:00
visionmedia 347c8847b0 Removed addErrback() from render()
throws with latest node
2010-02-12 10:36:23 -08:00
visionmedia 9f48b32329 Benchmarks link 2010-02-12 09:34:40 -08:00
257 arquivos alterados com 14836 adições e 8856 exclusões
+8
Ver Arquivo
@@ -1 +1,9 @@
.DS_Store
lib-cov
*.seed
*.log
*.csv
*.dat
*.out
*.pid
benchmarks/graphs
+21 -12
Ver Arquivo
@@ -1,12 +1,21 @@
[submodule "spec/support/libxmljs"]
path = spec/support/libxmljs
url = git://github.com/sprsquish/libxmljs.git
[submodule "lib/support/haml"]
path = lib/support/haml
url = git://github.com/creationix/haml-js.git
[submodule "lib/support/js-oo"]
path = lib/support/js-oo
url = git://github.com/visionmedia/js-oo.git
[submodule "lib/support/sass"]
path = lib/support/sass
url = git://github.com/visionmedia/sass.js.git
[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
[submodule "support/qs"]
path = support/qs
url = git://github.com/visionmedia/node-querystring.git
+4
Ver Arquivo
@@ -0,0 +1,4 @@
test
support
examples
docs
+350
Ver Arquivo
@@ -1,4 +1,354 @@
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
==================
* Added; deduce partial object names from the last segment.
For example by default `partial('forum/post', postObject)` will
give you the _post_ object, providing a meaningful default.
* Added http status code string representation to `res.redirect()` body
* Added; `res.redirect()` supporting _text/plain_ and _text/html_ via __Accept__.
* Added `req.is()` to aid in content negotiation
* Added partial local inheritance [suggested by masylum]. Closes #102
providing access to parent template locals.
* Added _-s, --session[s]_ flag to express(1) to add session related middleware
* Added _--template_ flag to express(1) to specify the
template engine to use.
* Added _--css_ flag to express(1) to specify the
stylesheet engine to use (or just plain css by default).
* Added `app.all()` support [thanks aheckmann]
* Added partial direct object support.
You may now `partial('user', user)` providing the "user" local,
vs previously `partial('user', { object: user })`.
* Added _route-separation_ example since many people question ways
to do this with CommonJS modules. Also view the _blog_ example for
an alternative.
* Performance; caching view path derived partial object names
* Fixed partial local inheritance precedence. [reported by Nick Poulden] Closes #454
* Fixed jsonp support; _text/javascript_ as per mailinglist discussion
1.0.0rc4 / 2010-10-14
==================
* Added _NODE_ENV_ support, _EXPRESS_ENV_ is deprecated and will be removed in 1.0.0
* Added route-middleware support (very helpful, see the [docs](http://expressjs.com/guide.html#Route-Middleware))
* Added _jsonp callback_ setting to enable/disable jsonp autowrapping [Dav Glass]
* Added callback query check on response.send to autowrap JSON objects for simple webservice implementations [Dav Glass]
* Added `partial()` support for array-like collections. Closes #434
* Added support for swappable querystring parsers
* Added session usage docs. Closes #443
* Added dynamic helper caching. Closes #439 [suggested by maritz]
* Added authentication example
* Added basic Range support to `res.sendfile()` (and `res.download()` etc)
* Changed; `express(1)` generated app using 2 spaces instead of 4
* Default env to "development" again [aheckmann]
* Removed _context_ option is no more, use "scope"
* Fixed; exposing _./support_ libs to examples so they can run without installs
* Fixed mvc example
1.0.0rc3 / 2010-09-20
==================
* Added confirmation for `express(1)` app generation. Closes #391
* Added extending of flash formatters via `app.flashFormatters`
* Added flash formatter support. Closes #411
* Added streaming support to `res.sendfile()` using `sys.pump()` when >= "stream threshold"
* Added _stream threshold_ setting for `res.sendfile()`
* Added `res.send()` __HEAD__ support
* Added `res.clearCookie()`
* Added `res.cookie()`
* Added `res.render()` headers option
* Added `res.redirect()` response bodies
* Added `res.render()` status option support. Closes #425 [thanks aheckmann]
* Fixed `res.sendfile()` responding with 403 on malicious path
* Fixed `res.download()` bug; when an error occurs remove _Content-Disposition_
* Fixed; mounted apps settings now inherit from parent app [aheckmann]
* Fixed; stripping Content-Length / Content-Type when 204
* Fixed `res.send()` 204. Closes #419
* Fixed multiple _Set-Cookie_ headers via `res.header()`. Closes #402
* Fixed bug messing with error handlers when `listenFD()` is called instead of `listen()`. [thanks guillermo]
1.0.0rc2 / 2010-08-17
==================
* Added `app.register()` for template engine mapping. Closes #390
* Added `res.render()` callback support as second argument (no options)
* Added callback support to `res.download()`
* Added callback support for `res.sendfile()`
* Added support for middleware access via `express.middlewareName()` vs `connect.middlewareName()`
* Added "partials" setting to docs
* Added default expresso tests to `express(1)` generated app. Closes #384
* Fixed `res.sendfile()` error handling, defer via `next()`
* Fixed `res.render()` callback when a layout is used [thanks guillermo]
* Fixed; `make install` creating ~/.node_libraries when not present
* Fixed issue preventing error handlers from being defined anywhere. Closes #387
1.0.0rc / 2010-07-28
==================
* Added mounted hook. Closes #369
* Added connect dependency to _package.json_
* Removed "reload views" setting and support code
development env never caches, production always caches.
* Removed _param_ in route callbacks, signature is now
simply (req, res, next), previously (req, res, params, next).
Use _req.params_ for path captures, _req.query_ for GET params.
* Fixed "home" setting
* Fixed middleware/router precedence issue. Closes #366
* Fixed; _configure()_ callbacks called immediately. Closes #368
1.0.0beta2 / 2010-07-23
==================
* Added more examples
* Added; exporting `Server` constructor
* Added `Server#helpers()` for view locals
* Added `Server#dynamicHelpers()` for dynamic view locals. Closes #349
* Added support for absolute view paths
* Added; _home_ setting defaults to `Server#route` for mounted apps. Closes #363
* Added Guillermo Rauch to the contributor list
* Added support for "as" for non-collection partials. Closes #341
* Fixed _install.sh_, ensuring _~/.node_libraries_ exists. Closes #362 [thanks jf]
* Fixed `res.render()` exceptions, now passed to `next()` when no callback is given [thanks guillermo]
* Fixed instanceof `Array` checks, now `Array.isArray()`
* Fixed express(1) expansion of public dirs. Closes #348
* Fixed middleware precedence. Closes #345
* Fixed view watcher, now async [thanks aheckmann]
1.0.0beta / 2010-07-15
==================
* Re-write
- much faster
- much lighter
- Check [ExpressJS.com](http://expressjs.com) for migration guide and updated docs
0.14.0 / 2010-06-15
==================
* Utilize relative requires
* Added Static bufferSize option [aheckmann]
* Fixed caching of view and partial subdirectories [aheckmann]
* Fixed mime.type() comments now that ".ext" is not supported
* Updated haml submodule
* Updated class submodule
* Removed bin/express
0.13.0 / 2010-06-01
==================
* Added node v0.1.97 compatibility
* Added support for deleting cookies via Request#cookie('key', null)
* Updated haml submodule
* Fixed not-found page, now using using charset utf-8
* Fixed show-exceptions page, now using using charset utf-8
* Fixed view support due to fs.readFile Buffers
* Changed; mime.type() no longer accepts ".type" due to node extname() changes
0.12.0 / 2010-05-22
==================
* Added node v0.1.96 compatibility
* Added view `helpers` export which act as additional local variables
* Updated haml submodule
* Changed ETag; removed inode, modified time only
* Fixed LF to CRLF for setting multiple cookies
* Fixed cookie complation; values are now urlencoded
* Fixed cookies parsing; accepts quoted values and url escaped cookies
0.11.0 / 2010-05-06
==================
* Added support for layouts using different engines
- this.render('page.html.haml', { layout: 'super-cool-layout.html.ejs' })
- this.render('page.html.haml', { layout: 'foo' }) // assumes 'foo.html.haml'
- this.render('page.html.haml', { layout: false }) // no layout
* Updated ext submodule
* Updated haml submodule
* Fixed EJS partial support by passing along the context. Issue #307
0.10.1 / 2010-05-03
==================
* Fixed binary uploads.
0.10.0 / 2010-04-30
==================
* Added charset support via Request#charset (automatically assigned to 'UTF-8' when respond()'s
encoding is set to 'utf8' or 'utf-8'.
* Added "encoding" option to Request#render(). Closes #299
* Added "dump exceptions" setting, which is enabled by default.
* Added simple ejs template engine support
* Added error reponse support for text/plain, application/json. Closes #297
* Added callback function param to Request#error()
* Added Request#sendHead()
* Added Request#stream()
* Added support for Request#respond(304, null) for empty response bodies
* Added ETag support to Request#sendfile()
* Added options to Request#sendfile(), passed to fs.createReadStream()
* Added filename arg to Request#download()
* Performance enhanced due to pre-reversing plugins so that plugins.reverse() is not called on each request
* Performance enhanced by preventing several calls to toLowerCase() in Router#match()
* Changed; Request#sendfile() now streams
* Changed; Renamed Request#halt() to Request#respond(). Closes #289
* Changed; Using sys.inspect() instead of JSON.encode() for error output
* Changed; run() returns the http.Server instance. Closes #298
* Changed; Defaulting Server#host to null (INADDR_ANY)
* Changed; Logger "common" format scale of 0.4f
* Removed Logger "request" format
* Fixed; Catching ENOENT in view caching, preventing error when "views/partials" is not found
* Fixed several issues with http client
* Fixed Logger Content-Length output
* Fixed bug preventing Opera from retaining the generated session id. Closes #292
0.9.0 / 2010-04-14
==================
* Added DSL level error() route support
* Added DSL level notFound() route support
* Added Request#error()
* Added Request#notFound()
* Added Request#render() callback function. Closes #258
* Added "max upload size" setting
* Added "magic" variables to collection partials (\_\_index\_\_, \_\_length\_\_, \_\_isFirst\_\_, \_\_isLast\_\_). Closes #254
* Added [haml.js](http://github.com/visionmedia/haml.js) submodule; removed haml-js
* Added callback function support to Request#halt() as 3rd/4th arg
* Added preprocessing of route param wildcards using param(). Closes #251
* Added view partial support (with collections etc)
* Fixed bug preventing falsey params (such as ?page=0). Closes #286
* Fixed setting of multiple cookies. Closes #199
* Changed; view naming convention is now NAME.TYPE.ENGINE (for example page.html.haml)
* Changed; session cookie is now httpOnly
* Changed; Request is no longer global
* Changed; Event is no longer global
* Changed; "sys" module is no longer global
* Changed; moved Request#download to Static plugin where it belongs
* Changed; Request instance created before body parsing. Closes #262
* Changed; Pre-caching views in memory when "cache view contents" is enabled. Closes #253
* Changed; Pre-caching view partials in memory when "cache view partials" is enabled
* Updated support to node --version 0.1.90
* Updated dependencies
* Removed set("session cookie") in favour of use(Session, { cookie: { ... }})
* Removed utils.mixin(); use Object#mergeDeep()
0.8.0 / 2010-03-19
==================
* Added coffeescript example app. Closes #242
* Changed; cache api now async friendly. Closes #240
* Removed deprecated 'express/static' support. Use 'express/plugins/static'
0.7.6 / 2010-03-19
==================
* Added Request#isXHR. Closes #229
* Added `make install` (for the executable)
* Added `express` executable for setting up simple app templates
* Added "GET /public/*" to Static plugin, defaulting to <root>/public
* Added Static plugin
* Fixed; Request#render() only calls cache.get() once
* Fixed; Namespacing View caches with "view:"
* Fixed; Namespacing Static caches with "static:"
* Fixed; Both example apps now use the Static plugin
* Fixed set("views"). Closes #239
* Fixed missing space for combined log format
* Deprecated Request#sendfile() and 'express/static'
* Removed Server#running
0.7.5 / 2010-03-16
==================
* Added Request#flash() support without args, now returns all flashes
* Updated ext submodule
0.7.4 / 2010-03-16
==================
* Fixed session reaper
* Changed; class.js replacing js-oo Class implementation (quite a bit faster, no browser cruft)
0.7.3 / 2010-03-16
==================
* Added package.json
* Fixed requiring of haml / sass due to kiwi removal
0.7.2 / 2010-03-16
==================
* Fixed GIT submodules (HAH!)
0.7.1 / 2010-03-16
==================
* Changed; Express now using submodules again until a PM is adopted
* Changed; chat example using millisecond conversions from ext
0.7.0 / 2010-03-15
==================
* Added Request#pass() support (finds the next matching route, or the given path)
* Added Logger plugin (default "common" format replaces CommonLogger)
* Removed Profiler plugin
* Removed CommonLogger plugin
0.6.0 / 2010-03-11
==================
* Added seed.yml for kiwi package management support
* Added HTTP client query string support when method is GET. Closes #205
* Added support for arbitrary view engines.
For example "foo.engine.html" will now require('engine'),
the exports from this module are cached after the first require().
* Added async plugin support
* Removed usage of RESTful route funcs as http client
get() etc, use http.get() and friends
* Removed custom exceptions
0.5.0 / 2010-03-10
==================
* Added ext dependency (library of js extensions)
* Removed extname() / basename() utils. Use path module
* Removed toArray() util. Use arguments.values
* Removed escapeRegexp() util. Use RegExp.escape()
* Removed process.mixin() dependency. Use utils.mixin()
* Removed Collection
* Removed ElementCollection
* Shameless self promotion of ebook "Advanced JavaScript" (http://dev-mag.com) ;)
0.4.0 / 2010-02-11
==================
+22
Ver Arquivo
@@ -0,0 +1,22 @@
(The MIT License)
Copyright (c) 2009-2010 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
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+73 -29
Ver Arquivo
@@ -1,33 +1,77 @@
NODE = node
PREFIX ?= /usr/local
LIB_PREFIX = ~/.node_libraries
all: test
DOCS = docs/index.md \
docs/executable.md \
docs/contrib.md \
docs/guide.md \
docs/migrate.md \
docs/applications.md
init:
@git submodule init && git submodule update
MANPAGES =$(DOCS:.md=.1)
HTMLDOCS =$(DOCS:.md=.html)
test: init spec/support/libxmljs/libxmljs.node
@$(NODE) spec/node.js all
test-independant: init
@$(NODE) spec/node.js independant
test-dependant: init spec/support/libxmljs/libxmljs.node
@$(NODE) spec/node.js dependant
app: app-chat
app-chat:
@$(NODE) examples/chat/app.js
app-upload:
@$(NODE) examples/upload/app.js
benchmark:
@$(NODE) benchmarks/collection.js
@$(NODE) benchmarks/views.js
spec/support/libxmljs/libxmljs.node:
@scons -C spec/support/libxmljs libxmljs.node
.PHONY: init test benchmark app
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
uninstall: uninstall-docs
rm -f $(PREFIX)/bin/express
rm -fr $(LIB_PREFIX)/express
install-support:
cd support/connect && $(MAKE) install
uninstall-support:
cd support/connect && $(MAKE) uninstall
install-docs:
@mkdir -p $(PREFIX)/share/man/man1
cp -f docs/executable.1 $(PREFIX)/share/man/man1/express.1
uninstall-docs:
rm -f $(PREFIX)/share/man/man1/express.1
test:
@NODE_ENV=test ./support/expresso/bin/expresso \
-I lib \
-I support \
-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' \
> $@
docclean:
rm -f docs/*.{1,html}
.PHONY: install uninstall install-docs install-support uninstall-support install-docs uninstall-docs test test-cov docs docclean
+62 -104
Ver Arquivo
@@ -2,128 +2,86 @@
# Express
Insanely fast (and small) server-side JavaScript web development framework
built on **node.js** and the **V8 JavaScript engine**.
* Visit the [Wiki](http://wiki.github.com/visionmedia/express) for documentation
* Visit the [Google Group](http://groups.google.com/group/express-js) for discussion
## Features (so far)
* Sexy DSL with robust sinatra-like routing
* High performance
* Session support
* Mime helpers
* Redirection helpers
* Nested parameter parsing
* Full test coverage
* Extremely readable specs
* Test helpers (mock requests etc)
* Environment based configuration
* Light-weight JavaScript class implementation via js-oo
* Collections and chainable iterators
* ElementCollections / markup parsing via libxmljs and css selector traversal support via css2xpath
* View support (ejs, haml, sass, etc)
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');
});
app.listen(3000);
## Installation
Currently Express must be cloned (or downloaded), you can use the following command to
get rolling and initialize the submodule dependencies:
npm:
$ git clone git://github.com/visionmedia/express.git && cd express && git submodule update --init && make app
Or with the [gh](http://github.com/visionmedia/gh) utility:
$ npm install express
$ gh clone visionmedia express && cd express && git submodule update --init && make app
curl:
## Performance
$ curl -# http://expressjs.com/install.sh | sh
Extensive benchmarking will wait until a development version
has been released.
Currently Express can chew through a request with a two Haml views (*page and layout*)
requested **2000** times with concurrency of **80** in **2.4** seconds and **814**
requests per second. With no caching involved.
An identical Sinatra application was served with the **Thin** HTTP server
and scored **8.3** seconds and **238** requests per second. In this situation
Express is currently **3.5** times faster than Sinatra.
## Features
## Examples
* Robust routing
* Redirection helpers
* Dynamic view helpers
* 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
Below is a minimal app example when express is already within your load path.
Via Connect:
require('express')
require('express/plugins')
configure(function(){
use(MethodOverride)
use(ContentLength)
set('root', __dirname)
})
get('/hello', function(){
this.contentType('html')
return '<h1>World<h1>'
})
get('/user/:id?', function(id) {
this.render('user.haml.html', {
locals: {
name: id ? 'User ' + id : 'You'
}
})
})
run()
## Running Tests
* Session support
* Cache API
* Mime helpers
* ETag support
* Persistent flash notifications
* Cookie support
* JSON-RPC
* Logging
* and _much_ more!
Express uses the [JSpec](http://jspec.info) BDD JavaScript testing
framework to write and run elegant spec suites. JSpec is frozen
to spec/lib and does not require separate installation.
To run all specifications run the following command. This will ensure
git submodules are initialized and updated, as well as building test
related dependencies such as libxmljs.
$ make test
To run independent specs (which do not require building of external apis etc) use:
$ make test-independant
To run dependent specs (which require building of external apis etc) use:
$ make test-dependant
Run individual suites:
$ node spec/node.js core
$ node spec/node.js mime
$ node spec/node.js routing
...
Express is currently being developed with node --version:
v0.1.27
## More Information
* [JavaScript Extensions &amp; Utilities](http://github.com/visionmedia/ext.js)
* [JavaScript Sass](http://github.com/visionmedia/sass.js)
* [Scons Build System](http://www.scons.org/) (some development dependencies rely on this, ex libxmljs)
## Contributors
* TJ Holowaychuk (visionmedia) &lt;tj@vision-media.ca&gt;
* Aaron Heckmann (aheckmann) &lt;aaron.heckmann+github@gmail.com&gt;
* Ciaran Jessup (ciaranj) &lt;ciaranj@gmail.com&gt;
* Gareth Jones (csausdev) &lt;gareth.jones@sensis.com.au&gt;
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
* Express [Contrib](http://github.com/visionmedia/express-contrib) repo for additional functionality
* Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates
* [Google Group](http://groups.google.com/group/express-js) for discussion
* Visit the [Wiki](http://github.com/visionmedia/express/wiki)
## Node Compatibility
The latest release of Express is compatible with node --version:
v0.2.5
and connect --version:
0.3.0
Express 1.x is maintained in the _1.x_ branch.
## License
(The MIT License)
Copyright (c) 2009 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
Copyright (c) 2009-2010 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
-83
Ver Arquivo
@@ -1,83 +0,0 @@
;(function(){
var currentSuite
/**
* Contents of _fn_. Strips function literal and signature.
*
* @param {function} fn
* @return {string}
* @api private
*/
function contentsOf(fn) {
return fn.toString().match(/^[^\{]*{((.*\n*)*)}/m)[1]
}
/**
* Pad _str_ to _len_.
*
* @param {string} str
* @param {integer} len
* @return {string}
* @api private
*/
function pad(str, len) {
return str + (new Array(len - str.length)).join(' ')
}
/**
* Time the execution of _fn_
*
* @param {function} fn
* @return {float}
* @api private
*/
function time(fn) {
var start = Number(new Date)
fn()
return (Number(new Date) - start) / 1000
}
/**
* Benchmark _fn_ with the given _label_.
*
* @param {string} label
* @param {function} fn
* @api public
*/
function benchmark(label, fn) {
var duration = time(function(){
for (var i = 0; i < currentSuite.times; ++i)
fn()
}).toFixed(3)
print(pad(' ' + label, 50 - duration.toString().length) + duration + ' |')
}
/**
* Create a benchmark suite with the given _label_, which
* will run each benchmark n _times_. If _times_ is omitted
* then it defaults to 1.
*
* @param {string} label
* @param {integer, function} times
* @param {function} fn
* @api public
*/
suite = function(label, times, fn) {
currentSuite = this
if (typeof times == 'function')
this.times = 1, fn = times
else
this.times = times
print('\n ' + pad(label, 42 - this.times.toString().length) + this.times + ' time(s)')
print(' -------------------------------------------------')
eval(contentsOf(fn))
print('')
}
})()
-111
Ver Arquivo
@@ -1,111 +0,0 @@
require.paths.unshift('lib')
require.paths.unshift('benchmarks')
process.mixin(GLOBAL, require('sys'))
process.mixin(GLOBAL, require('benchmark'))
require('express')
print = puts
range = function(a, b) {
var array = []
while (a++ < b)
array.push(a-1)
return array
}
suite('Collection with [0..10,000]', 100, function(){
array = range(0, 10000)
benchmark('for', function(){
for (var i = 0, len = array.length; i < len; ++i) ;
})
benchmark('for uncached', function(){
for (var i = 0; i < array.length; ++i) ;
})
benchmark('forEach()', function(){
array.forEach(function(){})
})
benchmark('#each()', function(){
$(array).each(function(){})
})
benchmark('#map()', function(){
$(array).map(function(n){ return n += 1 })
})
benchmark('#map() with shorthand', function(){
$(array).map('a += 1')
})
benchmark('#find()', function(){
$(array).find(function(n){ return n > 5000 })
})
benchmark('#select()', function(){
$(array).select(function(n){ return n % 2 })
})
benchmark('#first()', function(){
$(array).first(5000)
})
benchmark('#slice()', function(){
$(array).slice(100, 5000)
})
benchmark('#drop()', function(){
$(array).drop(5000)
})
benchmark('#length()', function(){
$(array).length()
})
benchmark('#keys()', function(){
$(array).keys()
})
benchmark('#toArray()', function(){
$(array).toArray()
})
benchmark('#min()', function(){
$(array).min()
})
benchmark('#max()', function(){
$(array).max()
})
benchmark('#sum()', function(){
$(array).sum()
})
benchmark('#avg()', function(){
$(array).avg()
})
benchmark('#clone()', function(){
$(array).clone()
})
benchmark('#merge()', function(){
$(array).merge({ foo: 'bar' })
})
benchmark('#sample()', function(){
$(array).sample()
})
benchmark('#chunk()', function(){
$(array).chunk(5)
})
benchmark('#at()', function(){
$(array).at(5000)
})
})
-56
Ver Arquivo
@@ -1,56 +0,0 @@
require.paths.unshift('lib')
require.paths.unshift('benchmarks')
process.mixin(GLOBAL, require('sys'))
process.mixin(GLOBAL, require('benchmark'))
require('express')
print = puts
engine = {
ejs: require('ejs'),
haml: require('haml'),
sass: require('sass')
}
options = { locals: { article: { title: 'Foo', body: 'bar' }}}
ejs = ' \n\
<div id="primary"> \n\
<div class="block first"> \n\
<h1><%= article.title %></h1> \n\
<p><%= article.body %></p> \n\
</div> \n\
</div> \n\
'
haml = ' \n\
#primary \n\
.block.first \n\
%h1= article.title \n\
%p= article.body \n\
'
sass = ' \n\
red: #ff0000 \n\
body \n\
ul \n\
li \n\
a \n\
:color !red \n\
:list-style none \n\
'
suite('Template Engines', 1000, function(){
benchmark('ejs', function(){
engine.ejs.render(ejs, options)
})
benchmark('haml', function(){
engine.haml.render(haml, options)
})
benchmark('sass', function(){
engine.sass.render(sass)
})
})
Arquivo executável
+426
Ver Arquivo
@@ -0,0 +1,426 @@
#!/usr/bin/env node
/**
* Module dependencies.
*/
var fs = require('fs')
, sys = require('sys')
, exec = require('child_process').exec;
/**
* Framework version.
*/
var version = '1.0.4';
/**
* 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'
;
/**
* Jade layout template.
*/
var jadeLayout = [
'!!!'
, 'html'
, ' head'
, ' title= title'
, ' link(rel=\'stylesheet\', href=\'/stylesheets/style.css\')'
, ' body!= body'
].join('\n');
/**
* Jade index template.
*/
var jadeIndex = [
'h1= title'
, 'p Welcome to #{title}'
].join('\n');
/**
* EJS layout template.
*/
var ejsLayout = [
'<!DOCTYPE html>'
, '<html>'
, ' <head>'
, ' <title><%= title %></title>'
, ' <link rel=\'stylesheet\' href=\'/stylesheets/style.css\' />'
, ' </head>'
, ' <body>'
, ' <%- body %>'
, ' </body>'
, '</html>'
].join('\n');
/**
* EJS index template.
*/
var ejsIndex = [
'<h1><%= title %></h1>'
, '<p>Welcome to <%= title %></p>'
].join('\n');
/**
* Default css template.
*/
var css = [
'body {'
, ' padding: 50px;'
, ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;'
, '}'
].join('\n');
/**
* Default less template.
*/
var less = [
'body {'
, ' padding: 50px;'
, ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;'
, '}'
].join('\n');
/**
* Default sass template.
*/
var sass = [
'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')"
, " , assert = require('assert');"
, "",
, "module.exports = {"
, " 'GET /': function(){"
, " 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');
/**
* App template.
*/
var app = [
''
, '/**'
, ' * Module dependencies.'
, ' */'
, ''
, 'var express = require(\'express\');'
, ''
, 'var app = module.exports = express.createServer();'
, ''
, '// Configuration'
, ''
, 'app.configure(function(){'
, ' 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.configure(\'development\', function(){'
, ' app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); '
, '});'
, ''
, 'app.configure(\'production\', function(){'
, ' app.use(express.errorHandler()); '
, '});'
, ''
, '// 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;
}
}
// Generate application
(function createApplication(path) {
emptyDirectory(path, function(empty){
if (empty) {
createApplicationAt(path);
} else {
confirm('destination is not empty, continue? ', function(ok){
if (ok) {
stdin.destroy();
createApplicationAt(path);
} else {
abort('aborting');
}
});
}
});
})(path);
/**
* Create application at the given directory `path`.
*
* @param {String} path
*/
function createApplicationAt(path) {
mkdir(path, function(){
mkdir(path + '/pids');
mkdir(path + '/logs');
mkdir(path + '/public/javascripts');
mkdir(path + '/public/images');
mkdir(path + '/public/stylesheets', function(){
switch (cssEngine) {
case 'less':
write(path + '/public/stylesheets/style.less', less);
break;
case 'sass':
write(path + '/public/stylesheets/style.sass', sass);
break;
default:
write(path + '/public/stylesheets/style.css', css);
}
});
mkdir(path + '/views/partials', function(){
switch (templateEngine) {
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;
}
});
mkdir(path + '/test', function(){
write(path + '/test/app.test.js', appTest);
});
// CSS Engine support
switch (cssEngine) {
case 'sass':
case 'less':
app = app.replace(':CSS', '\n app.use(express.compiler({ src: __dirname + \'/public\', enable: [\'' + cssEngine + '\'] }));');
break;
default:
app = app.replace(':CSS', '');
}
// Session support
app = app.replace(':SESS', sessions
? '\n app.use(express.cookieDecoder());\n app.use(express.session());'
: '');
// Template support
app = app.replace(':TEMPLATE', templateEngine);
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);
}
console.log(' - make sure you have installed %s: \x1b[33m$ npm install %s\x1b[0m'
, templateEngine
, templateEngine);
});
});
}
/**
* Check if the given directory `path` is empty.
*
* @param {String} path
* @param {Function} fn
*/
function emptyDirectory(path, fn) {
fs.readdir(path, function(err, files){
if (err && err.errno !== process.ENOENT) throw err;
fn(!files || !files.length);
});
}
/**
* echo str > path.
*
* @param {String} path
* @param {String} str
*/
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);
});
}
/**
* Mkdir -p.
*
* @param {String} path
* @param {Function} fn
*/
function mkdir(path, fn) {
exec('mkdir -p ' + path, function(err){
if (err) throw err;
console.log(' \x1b[33mcreate\x1b[0m : ' + path);
fn && fn();
});
}
/**
* Exit with the given `str`.
*
* @param {String} str
*/
function abort(str) {
console.error(str);
process.exit(1);
}
+1676
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+70
Ver Arquivo
@@ -0,0 +1,70 @@
.\" 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
@@ -0,0 +1,252 @@
<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
@@ -0,0 +1,47 @@
<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
@@ -0,0 +1,82 @@
.\" 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
@@ -0,0 +1,247 @@
<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
@@ -0,0 +1,38 @@
### 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
@@ -0,0 +1,30 @@
.\" 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
@@ -0,0 +1,221 @@
<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
@@ -0,0 +1,18 @@
## 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
+1864
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+1417
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+1046
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 108 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 159 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 145 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 145 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 154 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 181 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 200 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 236 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 112 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 88 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 127 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 108 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 7.0 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 7.2 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 143 B

+106
Ver Arquivo
@@ -0,0 +1,106 @@
.\" 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
@@ -0,0 +1,254 @@
<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
@@ -0,0 +1,42 @@
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
@@ -0,0 +1,4 @@
</div>
</div>
</body>
</html>
+192
Ver Arquivo
@@ -0,0 +1,192 @@
<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
@@ -0,0 +1,347 @@
.\" 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
@@ -0,0 +1,412 @@
<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
@@ -0,0 +1,189 @@
### 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
+126
Ver Arquivo
@@ -0,0 +1,126 @@
// Expose modules in ./support for demo purposes
require.paths.unshift(__dirname + '/../../support');
/**
* Module dependencies.
*/
var express = require('../../lib/express'),
crypto = require('crypto');
var app = express.createServer();
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.bodyDecoder());
app.use(express.cookieDecoder());
app.use(express.session());
// Message helper, ideally we would use req.flash()
// however this is more light-weight for an example
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>';
}
});
// Generate a salt for the user to prevent rainbow table attacks
var users = {
tj: {
name: 'tj',
salt: 'randomly-generated-salt',
pass: md5('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');
}
// 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'));
}
function restrict(req, res, next) {
if (req.session.user) {
next();
} else {
req.session.error = 'Access denied!';
res.redirect('/login');
}
}
function accessLogger(req, res, next) {
console.log('/restricted accessed by %s', req.session.user.name);
next();
}
app.get('/', function(req, res){
res.redirect('/login');
});
app.get('/restricted', restrict, accessLogger, 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');
});
});
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');
});
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');
}
});
});
app.listen(3000);
console.log('Express started on port 3000');
+21
Ver Arquivo
@@ -0,0 +1,21 @@
<!DOCTYPE html>
<html>
<head>
<title>Authentication Example</title>
<style>
body {
padding: 50px;
font: 13px Helvetica, Arial, sans-serif;
}
.error {
color: red
}
.success {
color: green;
}
</style>
</head>
<body>
<%- body %>
</body>
</html>
+16
Ver Arquivo
@@ -0,0 +1,16 @@
<h1>Login</h1>
<%- message %>
Try accessing <a href="/restricted">/restricted</a>.
<form method="post" action="/login">
<p>
<label>Username:</label>
<input type="text" name="username">
</p>
<p>
<label>Password:</label>
<input type="text" name="password">
</p>
<p>
<input type="submit" value="Login">
</p>
</form>
+25
Ver Arquivo
@@ -0,0 +1,25 @@
// 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
@@ -0,0 +1,45 @@
/**
* 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
@@ -0,0 +1,4 @@
[
{ "id": 0, "title": "Post one", "body": "Just some lame post" },
{ "id": 1, "title": "Post two", "body": "Just another lame post" }
]
+2
Ver Arquivo
@@ -0,0 +1,2 @@
<h2>Posts</h2>
<%- partial('post', { collection: posts, as: global }) %>
+9
Ver Arquivo
@@ -0,0 +1,9 @@
<html>
<head>
<title>Blog Example</title>
</head>
<body>
<h1>Best Blog Ever</h1>
<%- body %>
</body>
</html>
+2
Ver Arquivo
@@ -0,0 +1,2 @@
<h3><a href="<%= basepath %>/post/<%= id %>"><%= title %></a></h3>
<p><%= body %></p>
+1
Ver Arquivo
@@ -0,0 +1 @@
<%- partial('post', { object: post, as: global }) %>
+9
Ver Arquivo
@@ -0,0 +1,9 @@
// 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
@@ -0,0 +1,10 @@
// 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>');
});
-83
Ver Arquivo
@@ -1,83 +0,0 @@
require.paths.unshift('lib')
require('express')
require('express/plugins')
configure(function(){
var fiveMinutes = 300000,
oneMinute = 60000
use(MethodOverride)
use(ContentLength)
use(CommonLogger)
use(Cookie)
use(Cache, { lifetime: fiveMinutes, reapInterval: oneMinute })
use(Session, { lifetime: fiveMinutes, reapInterval: oneMinute })
set('root', __dirname)
})
require('express/http')
var messages = [],
utils = require('express/utils')
get('/', function(){
this.redirect('/chat')
})
get('/chat', function(){
this.render('chat.haml.html', {
locals: {
title: 'Chat',
messages: messages,
name: this.session.name,
usersOnline: Session.store.length()
}
})
})
post('/chat', function(){
this.session.name = this.param('name')
messages
.push(utils.escape(this.param('name')) + ': ' + utils.escape(this.param('message'))
.replace(/(http:\/\/[^\s]+)/g, '<a href="$1" target="express-chat">$1</a>')
.replace(/:\)/g, '<img src="http://icons3.iconfinder.netdna-cdn.com/data/icons/ledicons/emoticon_smile.png">'))
this.halt(200)
})
get('/chat/messages', function(){
var self = this,
previousLength = messages.length,
timer = setInterval(function(){
if (messages.length > previousLength)
self.contentType('json'),
previousLength = messages.length,
self.halt(200, JSON.encode(messages)),
clearInterval(timer)
}, 100)
})
get('/public/*', function(file){
this.sendfile(__dirname + '/public/' + file)
})
get('/*.css', function(file){
this.render(file + '.sass.css', { layout: false })
})
get('/error/view', function(){
this.render('does.not.exist')
})
get('/error', function(){
throw new Error('oh noes!')
})
get('/simple', function(){
return 'Hello :)'
})
get('/favicon.ico', function(){
this.halt()
})
run()
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 5.2 KiB

-28
Ver Arquivo
@@ -1,28 +0,0 @@
$(function(){
// Send message
$('form').submit(function(){
var message = $('input[name=message]'),
name = $('input[name=name]')
if (message.val())
$.post('/chat', { name: name.val(), message: message.val() }, function(){
message.val('')
})
else
message.css('border', '1px solid red')
return false
})
// Longpoll
;(function poll(){
$.getJSON('/chat/messages', function(messages){
$('#messages').empty()
$.each(messages, function(i, msg){
$('#messages')
.append('<li>' + msg + '</li>')
.get(0).scrollTop = $('#messages').get(0).scrollHeight
})
poll()
})
})()
})
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
-10
Ver Arquivo
@@ -1,10 +0,0 @@
%h1 Chat
%img.bubble{ src: '/public/images/bubble.png' }
%ul#messages
:each msg in messages
%li= msg
%form{ method: 'post' }
%input{ type: 'hidden', name: '_method', value: 'put' }
%input{ type: 'text', name: 'name', value: name || 'guest' }
%input{ type: 'text', name: 'message' }
%input{ type: 'submit', value: 'Send' }
-11
Ver Arquivo
@@ -1,11 +0,0 @@
%html
%head
%title= title
%script{ src: '/public/javascripts/jquery.js' }
%script{ src: '/public/javascripts/app.js' }
%link{ rel: 'stylesheet', href: '/style.css' }
%body
#wrapper= body
#online
Online:
%strong= usersOnline
-81
Ver Arquivo
@@ -1,81 +0,0 @@
body
:font-family "Helvetica Neue", "Lucida Grande", "Arial"
:font-size 13px
:text-align center
=text-stroke 1px rgba(255, 255, 255, 0.1)
:color #555
h1, h2
:margin 0
:font-size 22px
:color #343434
h1
:text-shadow 1px 2px 2px #ddd
:font-size 60px
img.bubble
:position absolute
:top -25px
:left 120px
#wrapper
:position relative
:margin 100px auto
:width 500px
:text-align left
ul
:margin 0
:padding 0
:max-height 300px
:overflow-x hidden
li
:margin 5px 0
:padding 3px 8px
:list-style none
:border 1px solid #eee
=border-radius 3px
=border-radius 3px
li:hover
:cursor pointer
:color #2E2E2E
input[type=text]
:padding 5px
:border 1px solid #ddd
:outline none
=border-radius 2px
input[type=text]:focus
:border-color #00C3FF
input[type=submit]
=border-radius 2px
=box-shadow 0 1px 2px #ddd
:padding 6px 10px
:border solid 1px #999
:background -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#ddd))
:color #333
:text-decoration none
:cursor pointer
:display inline-block
:text-align center
:text-shadow 0px 1px 1px #fff
:line-height 1
input[type=submit]:hover
:background -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#E6E4E4))
input[type=submit]:active
:background -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#c7c7c7))
input[name=name]
:width 80px
a
:color #1ABFF1
=transition-property padding
=transition-duration 0.15s
a:hover
:padding 0 5px
a:hover:before
:content 'visit: '
#online
:font-size 12px
+46
Ver Arquivo
@@ -0,0 +1,46 @@
/**
* Module dependencies.
*/
var express = require('./../../lib/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' }),
// Provides req.cookies
express.cookieDecoder(),
// Parses x-www-form-urlencoded request bodies (and json)
express.bodyDecoder()
);
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>');
}
});
app.get('/forget', function(req, res){
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');
});
app.listen(3000);
console.log('Express started on port 3000');
+32
Ver Arquivo
@@ -0,0 +1,32 @@
/**
* Module dependencies.
*/
var express = require('./../../lib/express');
var app = express.createServer();
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>');
});
app.get('/files/*', function(req, res){
var file = req.params[0];
res.download(__dirname + '/files/' + file);
});
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);
}
});
app.listen(3000);
console.log('Express started on port 3000');
+1
Ver Arquivo
@@ -0,0 +1 @@
wow supes cool are you glad you downloaded this?
+32
Ver Arquivo
@@ -0,0 +1,32 @@
// 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);
+6
Ver Arquivo
@@ -0,0 +1,6 @@
<html>
<body>
<h1>Users</h1>
<%- body %>
</body>
</html>
+1
Ver Arquivo
@@ -0,0 +1 @@
<li><%= user.name %> &lt;<%= user.email %>&gt;</li>
+3
Ver Arquivo
@@ -0,0 +1,3 @@
<ul id="users">
<%- partial('user', users) %>
</ul>
+103
Ver Arquivo
@@ -0,0 +1,103 @@
// 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');
+4
Ver Arquivo
@@ -0,0 +1,4 @@
- if (error.path)
h2 Cannot find #{error.path}
- else
h2 Page Not Found
+2
Ver Arquivo
@@ -0,0 +1,2 @@
h1 Error: #{error.message}
pre= error.stack
+8
Ver Arquivo
@@ -0,0 +1,8 @@
h2 Pages Example
ul
li
| visit
a(href="/500") 500
li
| visit
a(href="/404") 404
+6
Ver Arquivo
@@ -0,0 +1,6 @@
html
head
title Custom Pages Example
body
h1 My Site
!= body
+25
Ver Arquivo
@@ -0,0 +1,25 @@
/**
* 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);
+78
Ver Arquivo
@@ -0,0 +1,78 @@
// 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
@@ -0,0 +1,3 @@
<h1>Flash Message Example</h1>
<p>on page <%- page %></p>
<%- messages() %>
+5
Ver Arquivo
@@ -0,0 +1,5 @@
<html>
<body>
<%- body %>
</body>
</html>
+12
Ver Arquivo
@@ -0,0 +1,12 @@
<% 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
@@ -0,0 +1,79 @@
/**
* 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
@@ -0,0 +1,63 @@
/**
* 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
@@ -0,0 +1,119 @@
// 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
@@ -0,0 +1,19 @@
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
@@ -0,0 +1,8 @@
- 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
@@ -0,0 +1,7 @@
!!!
html
head
title Github Example
link(rel="stylesheet", href="/style.css")
body
#container!= body
+5
Ver Arquivo
@@ -0,0 +1,5 @@
tr.repo
td.name
a(href: repo.homepage || repo.url)= repo.name
td.watchers
= repo.watchers
+14
Ver Arquivo
@@ -0,0 +1,14 @@
/**
* Module dependencies.
*/
var express = require('./../../lib/express');
var app = express.createServer();
app.get('/', function(req, res){
res.send('Hello World');
});
app.listen(3000);
+47
Ver Arquivo
@@ -0,0 +1,47 @@
// Expose modules in ./support for demo purposes
require.paths.unshift(__dirname + '/../../support');
/**
* Module dependencies.
*/
var express = require('./../../lib/express');
// Path to our public directory
var pub = __dirname + '/public';
// Auto-compile sass to css with "compiler"
// and then serve with connect's staticProvider
var app = express.createServer(
express.compiler({ src: pub, enable: ['sass'] }),
express.staticProvider(pub)
);
// Optional since express defaults to CWD/views
app.set('views', __dirname + '/views');
// Set our default template engine to "jade"
// which prevents the need for extensions (although you can still mix and match)
app.set('view engine', 'jade');
// 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', {
locals: {
users: users
}
});
});
app.listen(3000);
console.log('Express app started on port 3000');
+3
Ver Arquivo
@@ -0,0 +1,3 @@
body {
padding: 50px 80px;
font: 14px "Helvetica Nueue", "Lucida Grande", Arial, sans-serif;}
@@ -0,0 +1,3 @@
body
:padding 50px 80px
:font 14px "Helvetica Nueue", "Lucida Grande", Arial, sans-serif
+6
Ver Arquivo
@@ -0,0 +1,6 @@
!!!
html
head
title Jade Example
link(rel="stylesheet", href="/stylesheets/style.css")
body!= body
+3
Ver Arquivo
@@ -0,0 +1,3 @@
.user
h2= user.name
.email= user.email
+3
Ver Arquivo
@@ -0,0 +1,3 @@
- if (users.length)
h1 Users
#users!= partial('user', users)
+52
Ver Arquivo
@@ -0,0 +1,52 @@
// Expose modules in ./support for demo purposes
require.paths.unshift(__dirname + '/../../support');
/**
* Module dependencies.
*/
var express = require('../../lib/express'),
form = require('connect-form'),
sys = require('sys');
var app = express.createServer(
// connect-form (http://github.com/visionmedia/connect-form)
// middleware uses the formidable middleware to parse urlencoded
// and multipart form data
form({ keepExtensions: true })
);
app.get('/', function(req, res){
res.send('<form method="post" enctype="multipart/form-data">'
+ '<p>Image: <input type="file" name="image" /></p>'
+ '<p><input type="submit" value="Upload" /></p>'
+ '</form>');
});
app.post('/', function(req, res, next){
// connect-form adds the req.form object
// we can (optionally) define onComplete, passing
// the exception (if any) fields parsed, and files parsed
req.form.complete(function(err, fields, files){
if (err) {
next(err);
} else {
console.log('\nuploaded %s to %s',
files.image.filename,
files.image.path);
res.redirect('back');
}
});
// We can add listeners for several form
// events such as "progress"
req.form.addListener('progress', function(bytesReceived, bytesExpected){
var percent = (bytesReceived / bytesExpected * 100) | 0;
sys.print('Uploading: %' + percent + '\r');
});
});
app.listen(3000);
console.log('Express app started on port 3000');
+16
Ver Arquivo
@@ -0,0 +1,16 @@
// Expose modules in ./support for demo purposes
require.paths.unshift(__dirname + '/../../support');
/**
* Module dependencies.
*/
var express = require('../../lib/express');
var app = express.createServer();
require('./mvc').boot(app);
app.listen(3000);
console.log('Express app started on port 3000');
+9
Ver Arquivo
@@ -0,0 +1,9 @@
module.exports = {
// /
index: function(req, res){
res.render();
}
};

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