Skip to content
Browse files

Put node_modules under SCM (as suggested by the npm FAQ)

  • Loading branch information...
1 parent 279e912 commit 81164391895fc3e1d5fb531937bde04f49cb2e6d Felix Dahlke committed Apr 17, 2012
Showing with 9,850 additions and 7 deletions.
  1. +3 −7 README.md
  2. +1 −0 node_modules/.bin/express
  3. +1 −0 node_modules/.bin/jade
  4. +7 −0 node_modules/express/.npmignore
  5. +811 −0 node_modules/express/History.md
  6. +22 −0 node_modules/express/LICENSE
  7. +29 −0 node_modules/express/Makefile
  8. +145 −0 node_modules/express/Readme.md
  9. +417 −0 node_modules/express/bin/express
  10. +2 −0 node_modules/express/index.js
  11. +510 −0 node_modules/express/lib-cov/application.js
  12. +65 −0 node_modules/express/lib-cov/express.js
  13. +54 −0 node_modules/express/lib-cov/middleware.js
  14. +225 −0 node_modules/express/lib-cov/request.js
  15. +611 −0 node_modules/express/lib-cov/response.js
  16. +40 −0 node_modules/express/lib-cov/router/collection.js
  17. +515 −0 node_modules/express/lib-cov/router/index.js
  18. +9 −0 node_modules/express/lib-cov/router/methods.js
  19. +68 −0 node_modules/express/lib-cov/router/route.js
  20. +151 −0 node_modules/express/lib-cov/utils.js
  21. +81 −0 node_modules/express/lib-cov/view.js
  22. +79 −0 node_modules/express/lib/express.js
  23. +582 −0 node_modules/express/lib/http.js
  24. +52 −0 node_modules/express/lib/https.js
  25. +323 −0 node_modules/express/lib/request.js
  26. +460 −0 node_modules/express/lib/response.js
  27. +53 −0 node_modules/express/lib/router/collection.js
  28. +398 −0 node_modules/express/lib/router/index.js
  29. +79 −0 node_modules/express/lib/router/methods.js
  30. +88 −0 node_modules/express/lib/router/route.js
  31. +152 −0 node_modules/express/lib/utils.js
  32. +460 −0 node_modules/express/lib/view.js
  33. +40 −0 node_modules/express/lib/view/partial.js
  34. +210 −0 node_modules/express/lib/view/view.js
  35. +11 −0 node_modules/express/node_modules/connect/.npmignore
  36. +24 −0 node_modules/express/node_modules/connect/LICENSE
  37. +2 −0 node_modules/express/node_modules/connect/index.js
  38. +81 −0 node_modules/express/node_modules/connect/lib/cache.js
  39. +106 −0 node_modules/express/node_modules/connect/lib/connect.js
  40. +217 −0 node_modules/express/node_modules/connect/lib/http.js
  41. +47 −0 node_modules/express/node_modules/connect/lib/https.js
  42. +46 −0 node_modules/express/node_modules/connect/lib/index.js
  43. +93 −0 node_modules/express/node_modules/connect/lib/middleware/basicAuth.js
  44. +196 −0 node_modules/express/node_modules/connect/lib/middleware/bodyParser.js
  45. +163 −0 node_modules/express/node_modules/connect/lib/middleware/compiler.js
  46. +46 −0 node_modules/express/node_modules/connect/lib/middleware/cookieParser.js
  47. +105 −0 node_modules/express/node_modules/connect/lib/middleware/csrf.js
  48. +222 −0 node_modules/express/node_modules/connect/lib/middleware/directory.js
  49. +100 −0 node_modules/express/node_modules/connect/lib/middleware/errorHandler.js
  50. +76 −0 node_modules/express/node_modules/connect/lib/middleware/favicon.js
  51. +80 −0 node_modules/express/node_modules/connect/lib/middleware/limit.js
  52. +299 −0 node_modules/express/node_modules/connect/lib/middleware/logger.js
  53. +38 −0 node_modules/express/node_modules/connect/lib/middleware/methodOverride.js
  54. +100 −0 node_modules/express/node_modules/connect/lib/middleware/profiler.js
  55. +40 −0 node_modules/express/node_modules/connect/lib/middleware/query.js
  56. +34 −0 node_modules/express/node_modules/connect/lib/middleware/responseTime.js
  57. +379 −0 node_modules/express/node_modules/connect/lib/middleware/router.js
  58. +345 −0 node_modules/express/node_modules/connect/lib/middleware/session.js
  59. +126 −0 node_modules/express/node_modules/connect/lib/middleware/session/cookie.js
  60. +131 −0 node_modules/express/node_modules/connect/lib/middleware/session/memory.js
Sorry, we could not display the entire diff because too many files (316) changed.
View
0 .gitignore
Sorry, we could not display the changes to this file because there were too many other changes to display.
View
10 README.md
@@ -10,13 +10,9 @@ This is still work in progress.
Running
-------
-To run Algorithms, first get [node.js](http://nodejs.org/) and
-[npm](http://npmjs.org/) and then execute the following:
-
- npm install express jade
-
-Now you can run the server like this:
+To run Algorithms, just get [node.js](http://nodejs.org/) and execute
+the following:
node app
-And finally, point your browser to: [http://localhost:3000](http://localhost:3000)
+Then point your browser to: [http://localhost:3000](http://localhost:3000).
View
1 node_modules/.bin/express
View
1 node_modules/.bin/jade
View
7 node_modules/express/.npmignore
@@ -0,0 +1,7 @@
+.git*
+docs/
+examples/
+support/
+test/
+testing.js
+.DS_Store
View
811 node_modules/express/History.md
@@ -0,0 +1,811 @@
+
+2.5.9/ 2012-04-02
+==================
+
+ * Added support for PURGE request method [pbuyle]
+ * Fixed `express(1)` generated app `app.address()` before `listening` [mmalecki]
+
+2.5.8 / 2012-02-08
+==================
+
+ * Update mkdirp dep. Closes #991
+
+2.5.7 / 2012-02-06
+==================
+
+ * Fixed `app.all` duplicate DELETE requests [mscdex]
+
+2.5.6 / 2012-01-13
+==================
+
+ * Updated hamljs dev dep. Closes #953
+
+2.5.5 / 2012-01-08
+==================
+
+ * Fixed: set `filename` on cached templates [matthewleon]
+
+2.5.4 / 2012-01-02
+==================
+
+ * Fixed `express(1)` eol on 0.4.x. Closes #947
+
+2.5.3 / 2011-12-30
+==================
+
+ * Fixed `req.is()` when a charset is present
+
+2.5.2 / 2011-12-10
+==================
+
+ * Fixed: express(1) LF -> CRLF for windows
+
+2.5.1 / 2011-11-17
+==================
+
+ * Changed: updated connect to 1.8.x
+ * Removed sass.js support from express(1)
+
+2.5.0 / 2011-10-24
+==================
+
+ * Added ./routes dir for generated app by default
+ * Added npm install reminder to express(1) app gen
+ * Added 0.5.x support
+ * Removed `make test-cov` since it wont work with node 0.5.x
+ * Fixed express(1) public dir for windows. Closes #866
+
+2.4.7 / 2011-10-05
+==================
+
+ * Added mkdirp to express(1). Closes #795
+ * Added simple _json-config_ example
+ * Added shorthand for the parsed request's pathname via `req.path`
+ * Changed connect dep to 1.7.x to fix npm issue...
+ * Fixed `res.redirect()` __HEAD__ support. [reported by xerox]
+ * Fixed `req.flash()`, only escape args
+ * Fixed absolute path checking on windows. Closes #829 [reported by andrewpmckenzie]
+
+2.4.6 / 2011-08-22
+==================
+
+ * Fixed multiple param callback regression. Closes #824 [reported by TroyGoode]
+
+2.4.5 / 2011-08-19
+==================
+
+ * Added support for routes to handle errors. Closes #809
+ * Added `app.routes.all()`. Closes #803
+ * Added "basepath" setting to work in conjunction with reverse proxies etc.
+ * Refactored `Route` to use a single array of callbacks
+ * Added support for multiple callbacks for `app.param()`. Closes #801
+Closes #805
+ * Changed: removed .call(self) for route callbacks
+ * Dependency: `qs >= 0.3.1`
+ * Fixed `res.redirect()` on windows due to `join()` usage. Closes #808
+
+2.4.4 / 2011-08-05
+==================
+
+ * Fixed `res.header()` intention of a set, even when `undefined`
+ * Fixed `*`, value no longer required
+ * Fixed `res.send(204)` support. Closes #771
+
+2.4.3 / 2011-07-14
+==================
+
+ * Added docs for `status` option special-case. Closes #739
+ * Fixed `options.filename`, exposing the view path to template engines
+
+2.4.2. / 2011-07-06
+==================
+
+ * Revert "removed jsonp stripping" for XSS
+
+2.4.1 / 2011-07-06
+==================
+
+ * Added `res.json()` JSONP support. Closes #737
+ * Added _extending-templates_ example. Closes #730
+ * Added "strict routing" setting for trailing slashes
+ * Added support for multiple envs in `app.configure()` calls. Closes #735
+ * Changed: `res.send()` using `res.json()`
+ * Changed: when cookie `path === null` don't default it
+ * Changed; default cookie path to "home" setting. Closes #731
+ * Removed _pids/logs_ creation from express(1)
+
+2.4.0 / 2011-06-28
+==================
+
+ * Added chainable `res.status(code)`
+ * Added `res.json()`, an explicit version of `res.send(obj)`
+ * Added simple web-service example
+
+2.3.12 / 2011-06-22
+==================
+
+ * \#express is now on freenode! come join!
+ * Added `req.get(field, param)`
+ * Added links to Japanese documentation, thanks @hideyukisaito!
+ * Added; the `express(1)` generated app outputs the env
+ * Added `content-negotiation` example
+ * Dependency: connect >= 1.5.1 < 2.0.0
+ * Fixed view layout bug. Closes #720
+ * Fixed; ignore body on 304. Closes #701
+
+2.3.11 / 2011-06-04
+==================
+
+ * Added `npm test`
+ * Removed generation of dummy test file from `express(1)`
+ * Fixed; `express(1)` adds express as a dep
+ * Fixed; prune on `prepublish`
+
+2.3.10 / 2011-05-27
+==================
+
+ * Added `req.route`, exposing the current route
+ * Added _package.json_ generation support to `express(1)`
+ * Fixed call to `app.param()` function for optional params. Closes #682
+
+2.3.9 / 2011-05-25
+==================
+
+ * Fixed bug-ish with `../' in `res.partial()` calls
+
+2.3.8 / 2011-05-24
+==================
+
+ * Fixed `app.options()`
+
+2.3.7 / 2011-05-23
+==================
+
+ * Added route `Collection`, ex: `app.get('/user/:id').remove();`
+ * Added support for `app.param(fn)` to define param logic
+ * Removed `app.param()` support for callback with return value
+ * Removed module.parent check from express(1) generated app. Closes #670
+ * Refactored router. Closes #639
+
+2.3.6 / 2011-05-20
+==================
+
+ * Changed; using devDependencies instead of git submodules
+ * Fixed redis session example
+ * Fixed markdown example
+ * Fixed view caching, should not be enabled in development
+
+2.3.5 / 2011-05-20
+==================
+
+ * Added export `.view` as alias for `.View`
+
+2.3.4 / 2011-05-08
+==================
+
+ * Added `./examples/say`
+ * Fixed `res.sendfile()` bug preventing the transfer of files with spaces
+
+2.3.3 / 2011-05-03
+==================
+
+ * Added "case sensitive routes" option.
+ * Changed; split methods supported per rfc [slaskis]
+ * Fixed route-specific middleware when using the same callback function several times
+
+2.3.2 / 2011-04-27
+==================
+
+ * Fixed view hints
+
+2.3.1 / 2011-04-26
+==================
+
+ * Added `app.match()` as `app.match.all()`
+ * Added `app.lookup()` as `app.lookup.all()`
+ * Added `app.remove()` for `app.remove.all()`
+ * Added `app.remove.VERB()`
+ * Fixed template caching collision issue. Closes #644
+ * Moved router over from connect and started refactor
+
+2.3.0 / 2011-04-25
+==================
+
+ * Added options support to `res.clearCookie()`
+ * Added `res.helpers()` as alias of `res.locals()`
+ * Added; json defaults to UTF-8 with `res.send()`. Closes #632. [Daniel * Dependency `connect >= 1.4.0`
+ * Changed; auto set Content-Type in res.attachement [Aaron Heckmann]
+ * Renamed "cache views" to "view cache". Closes #628
+ * Fixed caching of views when using several apps. Closes #637
+ * Fixed gotcha invoking `app.param()` callbacks once per route middleware.
+Closes #638
+ * Fixed partial lookup precedence. Closes #631
+Shaw]
+
+2.2.2 / 2011-04-12
+==================
+
+ * Added second callback support for `res.download()` connection errors
+ * Fixed `filename` option passing to template engine
+
+2.2.1 / 2011-04-04
+==================
+
+ * Added `layout(path)` helper to change the layout within a view. Closes #610
+ * Fixed `partial()` collection object support.
+ Previously only anything with `.length` would work.
+ When `.length` is present one must still be aware of holes,
+ however now `{ collection: {foo: 'bar'}}` is valid, exposes
+ `keyInCollection` and `keysInCollection`.
+
+ * Performance improved with better view caching
+ * Removed `request` and `response` locals
+ * Changed; errorHandler page title is now `Express` instead of `Connect`
+
+2.2.0 / 2011-03-30
+==================
+
+ * Added `app.lookup.VERB()`, ex `app.lookup.put('/user/:id')`. Closes #606
+ * Added `app.match.VERB()`, ex `app.match.put('/user/12')`. Closes #606
+ * Added `app.VERB(path)` as alias of `app.lookup.VERB()`.
+ * Dependency `connect >= 1.2.0`
+
+2.1.1 / 2011-03-29
+==================
+
+ * Added; expose `err.view` object when failing to locate a view
+ * Fixed `res.partial()` call `next(err)` when no callback is given [reported by aheckmann]
+ * Fixed; `res.send(undefined)` responds with 204 [aheckmann]
+
+2.1.0 / 2011-03-24
+==================
+
+ * Added `<root>/_?<name>` partial lookup support. Closes #447
+ * Added `request`, `response`, and `app` local variables
+ * Added `settings` local variable, containing the app's settings
+ * Added `req.flash()` exception if `req.session` is not available
+ * Added `res.send(bool)` support (json response)
+ * Fixed stylus example for latest version
+ * Fixed; wrap try/catch around `res.render()`
+
+2.0.0 / 2011-03-17
+==================
+
+ * Fixed up index view path alternative.
+ * Changed; `res.locals()` without object returns the locals
+
+2.0.0rc3 / 2011-03-17
+==================
+
+ * Added `res.locals(obj)` to compliment `res.local(key, val)`
+ * Added `res.partial()` callback support
+ * Fixed recursive error reporting issue in `res.render()`
+
+2.0.0rc2 / 2011-03-17
+==================
+
+ * Changed; `partial()` "locals" are now optional
+ * Fixed `SlowBuffer` support. Closes #584 [reported by tyrda01]
+ * Fixed .filename view engine option [reported by drudge]
+ * Fixed blog example
+ * Fixed `{req,res}.app` reference when mounting [Ben Weaver]
+
+2.0.0rc / 2011-03-14
+==================
+
+ * Fixed; expose `HTTPSServer` constructor
+ * Fixed express(1) default test charset. Closes #579 [reported by secoif]
+ * Fixed; default charset to utf-8 instead of utf8 for lame IE [reported by NickP]
+
+2.0.0beta3 / 2011-03-09
+==================
+
+ * Added support for `res.contentType()` literal
+ The original `res.contentType('.json')`,
+ `res.contentType('application/json')`, and `res.contentType('json')`
+ will work now.
+ * Added `res.render()` status option support back
+ * Added charset option for `res.render()`
+ * Added `.charset` support (via connect 1.0.4)
+ * Added view resolution hints when in development and a lookup fails
+ * Added layout lookup support relative to the page view.
+ For example while rendering `./views/user/index.jade` if you create
+ `./views/user/layout.jade` it will be used in favour of the root layout.
+ * Fixed `res.redirect()`. RFC states absolute url [reported by unlink]
+ * Fixed; default `res.send()` string charset to utf8
+ * Removed `Partial` constructor (not currently used)
+
+2.0.0beta2 / 2011-03-07
+==================
+
+ * Added res.render() `.locals` support back to aid in migration process
+ * Fixed flash example
+
+2.0.0beta / 2011-03-03
+==================
+
+ * Added HTTPS support
+ * Added `res.cookie()` maxAge support
+ * Added `req.header()` _Referrer_ / _Referer_ special-case, either works
+ * Added mount support for `res.redirect()`, now respects the mount-point
+ * Added `union()` util, taking place of `merge(clone())` combo
+ * Added stylus support to express(1) generated app
+ * Added secret to session middleware used in examples and generated app
+ * Added `res.local(name, val)` for progressive view locals
+ * Added default param support to `req.param(name, default)`
+ * Added `app.disabled()` and `app.enabled()`
+ * Added `app.register()` support for omitting leading ".", either works
+ * Added `res.partial()`, using the same interface as `partial()` within a view. Closes #539
+ * Added `app.param()` to map route params to async/sync logic
+ * Added; aliased `app.helpers()` as `app.locals()`. Closes #481
+ * Added extname with no leading "." support to `res.contentType()`
+ * Added `cache views` setting, defaulting to enabled in "production" env
+ * Added index file partial resolution, eg: partial('user') may try _views/user/index.jade_.
+ * Added `req.accepts()` support for extensions
+ * Changed; `res.download()` and `res.sendfile()` now utilize Connect's
+ static file server `connect.static.send()`.
+ * Changed; replaced `connect.utils.mime()` with npm _mime_ module
+ * Changed; allow `req.query` to be pre-defined (via middleware or other parent
+ * Changed view partial resolution, now relative to parent view
+ * Changed view engine signature. no longer `engine.render(str, options, callback)`, now `engine.compile(str, options) -> Function`, the returned function accepts `fn(locals)`.
+ * Fixed `req.param()` bug returning Array.prototype methods. Closes #552
+ * Fixed; using `Stream#pipe()` instead of `sys.pump()` in `res.sendfile()`
+ * Fixed; using _qs_ module instead of _querystring_
+ * Fixed; strip unsafe chars from jsonp callbacks
+ * Removed "stream threshold" setting
+
+1.0.8 / 2011-03-01
+==================
+
+ * Allow `req.query` to be pre-defined (via middleware or other parent app)
+ * "connect": ">= 0.5.0 < 1.0.0". Closes #547
+ * Removed the long deprecated __EXPRESS_ENV__ support
+
+1.0.7 / 2011-02-07
+==================
+
+ * Fixed `render()` setting inheritance.
+ Mounted apps would not inherit "view engine"
+
+1.0.6 / 2011-02-07
+==================
+
+ * Fixed `view engine` setting bug when period is in dirname
+
+1.0.5 / 2011-02-05
+==================
+
+ * Added secret to generated app `session()` call
+
+1.0.4 / 2011-02-05
+==================
+
+ * Added `qs` dependency to _package.json_
+ * Fixed namespaced `require()`s for latest connect support
+
+1.0.3 / 2011-01-13
+==================
+
+ * Remove unsafe characters from JSONP callback names [Ryan Grove]
+
+1.0.2 / 2011-01-10
+==================
+
+ * Removed nested require, using `connect.router`
+
+1.0.1 / 2010-12-29
+==================
+
+ * Fixed for middleware stacked via `createServer()`
+ previously the `foo` middleware passed to `createServer(foo)`
+ would not have access to Express methods such as `res.send()`
+ or props like `req.query` etc.
+
+1.0.0 / 2010-11-16
+==================
+
+ * 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
+==================
+
+ * Added flash() example to sample upload app
+ * Added high level restful http client module (express/http)
+ * Changed; RESTful route functions double as HTTP clients. Closes #69
+ * Changed; throwing error when routes are added at runtime
+ * Changed; defaulting render() context to the current Request. Closes #197
+ * Updated haml submodule
+
+0.3.0 / 2010-02-11
+==================
+
+ * Updated haml / sass submodules. Closes #200
+ * Added flash message support. Closes #64
+ * Added accepts() now allows multiple args. fixes #117
+ * Added support for plugins to halt. Closes #189
+ * Added alternate layout support. Closes #119
+ * Removed Route#run(). Closes #188
+ * Fixed broken specs due to use(Cookie) missing
+
+0.2.1 / 2010-02-05
+==================
+
+ * Added "plot" format option for Profiler (for gnuplot processing)
+ * Added request number to Profiler plugin
+ * Fixed binary encoding for multi-part file uploads, was previously defaulting to UTF8
+ * Fixed issue with routes not firing when not files are present. Closes #184
+ * Fixed process.Promise -> events.Promise
+
+0.2.0 / 2010-02-03
+==================
+
+ * Added parseParam() support for name[] etc. (allows for file inputs with "multiple" attr) Closes #180
+ * Added Both Cache and Session option "reapInterval" may be "reapEvery". Closes #174
+ * Added expiration support to cache api with reaper. Closes #133
+ * Added cache Store.Memory#reap()
+ * Added Cache; cache api now uses first class Cache instances
+ * Added abstract session Store. Closes #172
+ * Changed; cache Memory.Store#get() utilizing Collection
+ * Renamed MemoryStore -> Store.Memory
+ * Fixed use() of the same plugin several time will always use latest options. Closes #176
+
+0.1.0 / 2010-02-03
+==================
+
+ * Changed; Hooks (before / after) pass request as arg as well as evaluated in their context
+ * Updated node support to 0.1.27 Closes #169
+ * Updated dirname(__filename) -> __dirname
+ * Updated libxmljs support to v0.2.0
+ * Added session support with memory store / reaping
+ * Added quick uid() helper
+ * Added multi-part upload support
+ * Added Sass.js support / submodule
+ * Added production env caching view contents and static files
+ * Added static file caching. Closes #136
+ * Added cache plugin with memory stores
+ * Added support to StaticFile so that it works with non-textual files.
+ * Removed dirname() helper
+ * Removed several globals (now their modules must be required)
+
+0.0.2 / 2010-01-10
+==================
+
+ * Added view benchmarks; currently haml vs ejs
+ * Added Request#attachment() specs. Closes #116
+ * Added use of node's parseQuery() util. Closes #123
+ * Added `make init` for submodules
+ * Updated Haml
+ * Updated sample chat app to show messages on load
+ * Updated libxmljs parseString -> parseHtmlString
+ * Fixed `make init` to work with older versions of git
+ * Fixed specs can now run independant specs for those who cant build deps. Closes #127
+ * Fixed issues introduced by the node url module changes. Closes 126.
+ * Fixed two assertions failing due to Collection#keys() returning strings
+ * Fixed faulty Collection#toArray() spec due to keys() returning strings
+ * Fixed `make test` now builds libxmljs.node before testing
+
+0.0.1 / 2010-01-03
+==================
+
+ * Initial release
View
22 node_modules/express/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2009-2011 TJ Holowaychuk <tj@vision-media.ca>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'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.
View
29 node_modules/express/Makefile
@@ -0,0 +1,29 @@
+
+DOCS = $(shell find docs/*.md)
+HTMLDOCS = $(DOCS:.md=.html)
+TESTS = $(shell find test/*.test.js)
+
+test:
+ @NODE_ENV=test ./node_modules/.bin/expresso $(TESTS)
+
+docs: $(HTMLDOCS)
+ @ echo "... generating TOC"
+ @./support/toc.js docs/guide.html
+
+%.html: %.md
+ @echo "... $< -> $@"
+ @markdown $< \
+ | cat docs/layout/head.html - docs/layout/foot.html \
+ > $@
+
+site:
+ rm -fr /tmp/docs \
+ && cp -fr docs /tmp/docs \
+ && git checkout gh-pages \
+ && cp -fr /tmp/docs/* . \
+ && echo "done"
+
+docclean:
+ rm -f docs/*.{1,html}
+
+.PHONY: site test docs docclean
View
145 node_modules/express/Readme.md
@@ -0,0 +1,145 @@
+
+# Express
+
+ Insanely fast (and small) server-side JavaScript web development framework
+ built on [node](http://nodejs.org) and [Connect](http://github.com/senchalabs/connect).
+
+ var app = express.createServer();
+
+ app.get('/', function(req, res){
+ res.send('Hello World');
+ });
+
+ app.listen(3000);
+
+## Installation
+
+ $ npm install express
+
+or to access the `express(1)` executable install globally:
+
+ $ npm install -g express
+
+## Quick Start
+
+ The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below:
+
+ Create the app:
+
+ $ npm install -g express
+ $ express /tmp/foo && cd /tmp/foo
+
+ Install dependencies:
+
+ $ npm install -d
+
+ Start the server:
+
+ $ node app.js
+
+## Features
+
+ * 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
+
+Via Connect:
+
+ * Session support
+ * Cache API
+ * Mime helpers
+ * ETag support
+ * Persistent flash notifications
+ * Cookie support
+ * JSON-RPC
+ * Logging
+ * and _much_ more!
+
+## Contributors
+
+The following are the major contributors of Express (in no specific order).
+
+ * TJ Holowaychuk ([visionmedia](http://github.com/visionmedia))
+ * Ciaran Jessup ([ciaranj](http://github.com/ciaranj))
+ * Aaron Heckmann ([aheckmann](http://github.com/aheckmann))
+ * Guillermo Rauch ([guille](http://github.com/guille))
+
+## More Information
+
+ * #express on freenode
+ * [express-expose](http://github.com/visionmedia/express-expose) expose objects, functions, modules and more to client-side js with ease
+ * [express-configure](http://github.com/visionmedia/express-configuration) async configuration support
+ * [express-messages](http://github.com/visionmedia/express-messages) flash notification rendering helper
+ * [express-namespace](http://github.com/visionmedia/express-namespace) namespaced route support
+ * [express-params](https://github.com/visionmedia/express-params) param pre-condition functions
+ * [express-mongoose](https://github.com/LearnBoost/express-mongoose) plugin for easy rendering of Mongoose async Query results
+ * 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)
+ * [日本語ドキュメンテーション](http://hideyukisaito.com/doc/expressjs/) by [hideyukisaito](https://github.com/hideyukisaito)
+ * Screencast - [Introduction](http://bit.ly/eRYu0O)
+ * Screencast - [View Partials](http://bit.ly/dU13Fx)
+ * Screencast - [Route Specific Middleware](http://bit.ly/hX4IaH)
+ * Screencast - [Route Path Placeholder Preconditions](http://bit.ly/eNqmVs)
+
+## Node Compatibility
+
+Express 1.x is compatible with node 0.2.x and connect < 1.0.
+
+Express 2.x is compatible with node 0.4.x or 0.6.x, and connect 1.x
+
+Express 3.x (master) will be compatible with node 0.6.x and connect 2.x
+
+## Viewing Examples
+
+First install the dev dependencies to install all the example / test suite deps:
+
+ $ npm install
+
+then run whichever tests you want:
+
+ $ node examples/jade/app.js
+
+## Running Tests
+
+To run the test suite first invoke the following command within the repo, installing the development dependencies:
+
+ $ npm install
+
+then run the tests:
+
+ $ make test
+
+## License
+
+(The MIT License)
+
+Copyright (c) 2009-2011 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
+'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.
View
417 node_modules/express/bin/express
@@ -0,0 +1,417 @@
+#!/usr/bin/env node
+
+/**
+ * Module dependencies.
+ */
+
+var fs = require('fs')
+ , os = require('os')
+ , exec = require('child_process').exec
+ , mkdirp = require('mkdirp');
+
+/**
+ * Framework version.
+ */
+
+var version = '2.5.8';
+
+/**
+ * Add session support.
+ */
+
+var sessions = false;
+
+/**
+ * CSS engine to utilize.
+ */
+
+var cssEngine;
+
+/**
+ * End-of-line code.
+ */
+
+var eol = os.platform
+ ? ('win32' == os.platform() ? '\r\n' : '\n')
+ : '\n';
+
+/**
+ * Template engine to utilize.
+ */
+
+var templateEngine = 'jade';
+
+/**
+ * Usage documentation.
+ */
+
+var usage = ''
+ + '\n'
+ + ' Usage: express [options] [path]\n'
+ + '\n'
+ + ' Options:\n'
+ + ' -s, --sessions add session support\n'
+ + ' -t, --template <engine> add template <engine> support (jade|ejs). default=jade\n'
+ + ' -c, --css <engine> add stylesheet <engine> support (stylus). default=plain css\n'
+ + ' -v, --version output framework version\n'
+ + ' -h, --help output help information\n'
+ ;
+
+/**
+ * Routes index template.
+ */
+
+var index = [
+ ''
+ , '/*'
+ , ' * GET home page.'
+ , ' */'
+ , ''
+ , 'exports.index = function(req, res){'
+ , ' res.render(\'index\', { title: \'Express\' })'
+ , '};'
+].join(eol);
+
+/**
+ * Jade layout template.
+ */
+
+var jadeLayout = [
+ '!!!'
+ , 'html'
+ , ' head'
+ , ' title= title'
+ , ' link(rel=\'stylesheet\', href=\'/stylesheets/style.css\')'
+ , ' body!= body'
+].join(eol);
+
+/**
+ * Jade index template.
+ */
+
+var jadeIndex = [
+ 'h1= title'
+ , 'p Welcome to #{title}'
+].join(eol);
+
+/**
+ * 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(eol);
+
+/**
+ * EJS index template.
+ */
+
+var ejsIndex = [
+ '<h1><%= title %></h1>'
+ , '<p>Welcome to <%= title %></p>'
+ ].join(eol);
+
+/**
+ * Default css template.
+ */
+
+var css = [
+ 'body {'
+ , ' padding: 50px;'
+ , ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;'
+ , '}'
+ , ''
+ , 'a {'
+ , ' color: #00B7FF;'
+ , '}'
+].join(eol);
+
+/**
+ * Default stylus template.
+ */
+
+var stylus = [
+ 'body'
+ , ' padding: 50px'
+ , ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif'
+ , 'a'
+ , ' color: #00B7FF'
+].join(eol);
+
+/**
+ * App template.
+ */
+
+var app = [
+ ''
+ , '/**'
+ , ' * Module dependencies.'
+ , ' */'
+ , ''
+ , 'var express = require(\'express\')'
+ , ' , routes = require(\'./routes\');'
+ , ''
+ , 'var app = module.exports = express.createServer();'
+ , ''
+ , '// Configuration'
+ , ''
+ , 'app.configure(function(){'
+ , ' app.set(\'views\', __dirname + \'/views\');'
+ , ' app.set(\'view engine\', \':TEMPLATE\');'
+ , ' app.use(express.bodyParser());'
+ , ' app.use(express.methodOverride());{sess}{css}'
+ , ' app.use(app.router);'
+ , ' app.use(express.static(__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(\'/\', routes.index);'
+ , ''
+ , 'app.listen(3000, function(){'
+ , ' console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);'
+ , '});'
+ , ''
+].join(eol);
+
+// 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) {
+ process.stdin.destroy();
+ createApplicationAt(path);
+ } else {
+ abort('aborting');
+ }
+ });
+ }
+ });
+})(path);
+
+/**
+ * Create application at the given directory `path`.
+ *
+ * @param {String} path
+ */
+
+function createApplicationAt(path) {
+ console.log();
+ process.on('exit', function(){
+ console.log();
+ console.log(' dont forget to install dependencies:');
+ console.log(' $ cd %s && npm install', path);
+ console.log();
+ });
+
+ mkdir(path, function(){
+ mkdir(path + '/public');
+ mkdir(path + '/public/javascripts');
+ mkdir(path + '/public/images');
+ mkdir(path + '/public/stylesheets', function(){
+ switch (cssEngine) {
+ case 'stylus':
+ write(path + '/public/stylesheets/style.styl', stylus);
+ break;
+ default:
+ write(path + '/public/stylesheets/style.css', css);
+ }
+ });
+
+ mkdir(path + '/routes', function(){
+ write(path + '/routes/index.js', index);
+ });
+
+ mkdir(path + '/views', 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;
+ }
+ });
+
+ // CSS Engine support
+ switch (cssEngine) {
+ case 'stylus':
+ app = app.replace('{css}', eol + ' app.use(require(\'stylus\').middleware({ src: __dirname + \'/public\' }));');
+ break;
+ default:
+ app = app.replace('{css}', '');
+ }
+
+ // Session support
+ app = app.replace('{sess}', sessions
+ ? eol + ' app.use(express.cookieParser());' + eol + ' app.use(express.session({ secret: \'your secret here\' }));'
+ : '');
+
+ // Template support
+ app = app.replace(':TEMPLATE', templateEngine);
+
+ // package.json
+ var json = '{' + eol;
+ json += ' "name": "application-name"' + eol;
+ json += ' , "version": "0.0.1"' + eol;
+ json += ' , "private": true' + eol;
+ json += ' , "dependencies": {' + eol;
+ json += ' "express": "' + version + '"' + eol;
+ if (cssEngine) json += ' , "' + cssEngine + '": ">= 0.0.1"' + eol;
+ if (templateEngine) json += ' , "' + templateEngine + '": ">= 0.0.1"' + eol;
+ json += ' }' + eol;
+ json += '}';
+
+
+ write(path + '/package.json', json);
+ write(path + '/app.js', app);
+ });
+}
+
+/**
+ * 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 && 'ENOENT' != err.code) 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[36mcreate\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) {
+ // prompt
+ if (' ' == msg[msg.length - 1]) {
+ process.stdout.write(msg);
+ } else {
+ console.log(msg);
+ }
+
+ // stdin
+ process.stdin.setEncoding('ascii');
+ process.stdin.once('data', function(data){
+ fn(data);
+ }).resume();
+}
+
+/**
+ * Mkdir -p.
+ *
+ * @param {String} path
+ * @param {Function} fn
+ */
+
+function mkdir(path, fn) {
+ mkdirp(path, 0755, function(err){
+ if (err) throw err;
+ console.log(' \033[36mcreate\033[0m : ' + path);
+ fn && fn();
+ });
+}
+
+/**
+ * Exit with the given `str`.
+ *
+ * @param {String} str
+ */
+
+function abort(str) {
+ console.error(str);
+ process.exit(1);
+}
View
2 node_modules/express/index.js
@@ -0,0 +1,2 @@
+
+module.exports = require('./lib/express');
View
510 node_modules/express/lib-cov/application.js
@@ -0,0 +1,510 @@
+/* automatically generated by JSCoverage - do not edit */
+if (typeof _$jscoverage === 'undefined') _$jscoverage = {};
+if (! _$jscoverage['application.js']) {
+ _$jscoverage['application.js'] = [];
+ _$jscoverage['application.js'][12] = 0;
+ _$jscoverage['application.js'][29] = 0;
+ _$jscoverage['application.js'][41] = 0;
+ _$jscoverage['application.js'][42] = 0;
+ _$jscoverage['application.js'][43] = 0;
+ _$jscoverage['application.js'][44] = 0;
+ _$jscoverage['application.js'][45] = 0;
+ _$jscoverage['application.js'][46] = 0;
+ _$jscoverage['application.js'][47] = 0;
+ _$jscoverage['application.js'][50] = 0;
+ _$jscoverage['application.js'][51] = 0;
+ _$jscoverage['application.js'][52] = 0;
+ _$jscoverage['application.js'][55] = 0;
+ _$jscoverage['application.js'][56] = 0;
+ _$jscoverage['application.js'][61] = 0;
+ _$jscoverage['application.js'][62] = 0;
+ _$jscoverage['application.js'][71] = 0;
+ _$jscoverage['application.js'][72] = 0;
+ _$jscoverage['application.js'][75] = 0;
+ _$jscoverage['application.js'][76] = 0;
+ _$jscoverage['application.js'][79] = 0;
+ _$jscoverage['application.js'][80] = 0;
+ _$jscoverage['application.js'][83] = 0;
+ _$jscoverage['application.js'][84] = 0;
+ _$jscoverage['application.js'][85] = 0;
+ _$jscoverage['application.js'][89] = 0;
+ _$jscoverage['application.js'][90] = 0;
+ _$jscoverage['application.js'][91] = 0;
+ _$jscoverage['application.js'][93] = 0;
+ _$jscoverage['application.js'][94] = 0;
+ _$jscoverage['application.js'][95] = 0;
+ _$jscoverage['application.js'][98] = 0;
+ _$jscoverage['application.js'][102] = 0;
+ _$jscoverage['application.js'][103] = 0;
+ _$jscoverage['application.js'][104] = 0;
+ _$jscoverage['application.js'][105] = 0;
+ _$jscoverage['application.js'][106] = 0;
+ _$jscoverage['application.js'][107] = 0;
+ _$jscoverage['application.js'][108] = 0;
+ _$jscoverage['application.js'][112] = 0;
+ _$jscoverage['application.js'][115] = 0;
+ _$jscoverage['application.js'][116] = 0;
+ _$jscoverage['application.js'][119] = 0;
+ _$jscoverage['application.js'][120] = 0;
+ _$jscoverage['application.js'][132] = 0;
+ _$jscoverage['application.js'][133] = 0;
+ _$jscoverage['application.js'][145] = 0;
+ _$jscoverage['application.js'][146] = 0;
+ _$jscoverage['application.js'][159] = 0;
+ _$jscoverage['application.js'][160] = 0;
+ _$jscoverage['application.js'][163] = 0;
+ _$jscoverage['application.js'][166] = 0;
+ _$jscoverage['application.js'][169] = 0;
+ _$jscoverage['application.js'][170] = 0;
+ _$jscoverage['application.js'][171] = 0;
+ _$jscoverage['application.js'][172] = 0;
+ _$jscoverage['application.js'][173] = 0;
+ _$jscoverage['application.js'][174] = 0;
+ _$jscoverage['application.js'][175] = 0;
+ _$jscoverage['application.js'][180] = 0;
+ _$jscoverage['application.js'][181] = 0;
+ _$jscoverage['application.js'][184] = 0;
+ _$jscoverage['application.js'][185] = 0;
+ _$jscoverage['application.js'][186] = 0;
+ _$jscoverage['application.js'][189] = 0;
+ _$jscoverage['application.js'][209] = 0;
+ _$jscoverage['application.js'][210] = 0;
+ _$jscoverage['application.js'][211] = 0;
+ _$jscoverage['application.js'][212] = 0;
+ _$jscoverage['application.js'][274] = 0;
+ _$jscoverage['application.js'][275] = 0;
+ _$jscoverage['application.js'][279] = 0;
+ _$jscoverage['application.js'][280] = 0;
+ _$jscoverage['application.js'][281] = 0;
+ _$jscoverage['application.js'][282] = 0;
+ _$jscoverage['application.js'][286] = 0;
+ _$jscoverage['application.js'][287] = 0;
+ _$jscoverage['application.js'][290] = 0;
+ _$jscoverage['application.js'][291] = 0;
+ _$jscoverage['application.js'][292] = 0;
+ _$jscoverage['application.js'][296] = 0;
+ _$jscoverage['application.js'][309] = 0;
+ _$jscoverage['application.js'][310] = 0;
+ _$jscoverage['application.js'][311] = 0;
+ _$jscoverage['application.js'][312] = 0;
+ _$jscoverage['application.js'][313] = 0;
+ _$jscoverage['application.js'][314] = 0;
+ _$jscoverage['application.js'][317] = 0;
+ _$jscoverage['application.js'][318] = 0;
+ _$jscoverage['application.js'][331] = 0;
+ _$jscoverage['application.js'][332] = 0;
+ _$jscoverage['application.js'][345] = 0;
+ _$jscoverage['application.js'][346] = 0;
+ _$jscoverage['application.js'][357] = 0;
+ _$jscoverage['application.js'][358] = 0;
+ _$jscoverage['application.js'][369] = 0;
+ _$jscoverage['application.js'][370] = 0;
+ _$jscoverage['application.js'][381] = 0;
+ _$jscoverage['application.js'][382] = 0;
+ _$jscoverage['application.js'][411] = 0;
+ _$jscoverage['application.js'][412] = 0;
+ _$jscoverage['application.js'][414] = 0;
+ _$jscoverage['application.js'][415] = 0;
+ _$jscoverage['application.js'][416] = 0;
+ _$jscoverage['application.js'][417] = 0;
+ _$jscoverage['application.js'][430] = 0;
+ _$jscoverage['application.js'][431] = 0;
+ _$jscoverage['application.js'][432] = 0;
+ _$jscoverage['application.js'][439] = 0;
+ _$jscoverage['application.js'][440] = 0;
+ _$jscoverage['application.js'][441] = 0;
+ _$jscoverage['application.js'][442] = 0;
+ _$jscoverage['application.js'][443] = 0;
+ _$jscoverage['application.js'][444] = 0;
+ _$jscoverage['application.js'][458] = 0;
+ _$jscoverage['application.js'][459] = 0;
+ _$jscoverage['application.js'][460] = 0;
+ _$jscoverage['application.js'][461] = 0;
+ _$jscoverage['application.js'][462] = 0;
+ _$jscoverage['application.js'][464] = 0;
+ _$jscoverage['application.js'][469] = 0;
+ _$jscoverage['application.js'][482] = 0;
+ _$jscoverage['application.js'][483] = 0;
+ _$jscoverage['application.js'][490] = 0;
+ _$jscoverage['application.js'][491] = 0;
+ _$jscoverage['application.js'][495] = 0;
+ _$jscoverage['application.js'][498] = 0;
+ _$jscoverage['application.js'][501] = 0;
+ _$jscoverage['application.js'][504] = 0;
+ _$jscoverage['application.js'][509] = 0;
+ _$jscoverage['application.js'][512] = 0;
+ _$jscoverage['application.js'][513] = 0;
+ _$jscoverage['application.js'][520] = 0;
+ _$jscoverage['application.js'][524] = 0;
+ _$jscoverage['application.js'][525] = 0;
+ _$jscoverage['application.js'][527] = 0;
+}
+_$jscoverage['application.js'][12]++;
+var connect = require("connect"), Router = require("./router"), methods = Router.methods.concat("del", "all"), middleware = require("./middleware"), debug = require("debug")("express:application"), View = require("./view"), url = require("url"), utils = connect.utils, path = require("path"), http = require("http"), join = path.join, fs = require("fs");
+_$jscoverage['application.js'][29]++;
+var app = exports = module.exports = {};
+_$jscoverage['application.js'][41]++;
+app.init = (function () {
+ _$jscoverage['application.js'][42]++;
+ var self = this;
+ _$jscoverage['application.js'][43]++;
+ this.cache = {};
+ _$jscoverage['application.js'][44]++;
+ this.settings = {};
+ _$jscoverage['application.js'][45]++;
+ this.engines = {};
+ _$jscoverage['application.js'][46]++;
+ this.viewCallbacks = [];
+ _$jscoverage['application.js'][47]++;
+ this.defaultConfiguration();
+ _$jscoverage['application.js'][50]++;
+ methods.forEach((function (method) {
+ _$jscoverage['application.js'][51]++;
+ self.lookup[method] = (function (path) {
+ _$jscoverage['application.js'][52]++;
+ return self._router.lookup(method, path);
+});
+ _$jscoverage['application.js'][55]++;
+ self.remove[method] = (function (path) {
+ _$jscoverage['application.js'][56]++;
+ return self._router.lookup(method, path).remove();
+});
+}));
+ _$jscoverage['application.js'][61]++;
+ self.lookup.del = self.lookup["delete"];
+ _$jscoverage['application.js'][62]++;
+ self.remove.del = self.remove["delete"];
+});
+_$jscoverage['application.js'][71]++;
+app.defaultConfiguration = (function () {
+ _$jscoverage['application.js'][72]++;
+ var self = this;
+ _$jscoverage['application.js'][75]++;
+ this.set("env", process.env.NODE_ENV || "development");
+ _$jscoverage['application.js'][76]++;
+ debug("booting in %s mode", this.get("env"));
+ _$jscoverage['application.js'][79]++;
+ this.use(connect.query());
+ _$jscoverage['application.js'][80]++;
+ this.use(middleware.init(this));
+ _$jscoverage['application.js'][83]++;
+ this.locals = (function (obj) {
+ _$jscoverage['application.js'][84]++;
+ for (var key in obj) {
+ _$jscoverage['application.js'][84]++;
+ self.locals[key] = obj[key];
+}
+ _$jscoverage['application.js'][85]++;
+ return self;
+});
+ _$jscoverage['application.js'][89]++;
+ this.locals.use = (function (fn) {
+ _$jscoverage['application.js'][90]++;
+ if (3 == fn.length) {
+ _$jscoverage['application.js'][91]++;
+ self.viewCallbacks.push(fn);
+ }
+ else {
+ _$jscoverage['application.js'][93]++;
+ self.viewCallbacks.push((function (req, res, done) {
+ _$jscoverage['application.js'][94]++;
+ fn(req, res);
+ _$jscoverage['application.js'][95]++;
+ done();
+}));
+ }
+ _$jscoverage['application.js'][98]++;
+ return this;
+});
+ _$jscoverage['application.js'][102]++;
+ this._router = new Router(this);
+ _$jscoverage['application.js'][103]++;
+ this.routes = this._router.routes;
+ _$jscoverage['application.js'][104]++;
+ this.__defineGetter__("router", (function () {
+ _$jscoverage['application.js'][105]++;
+ this._usedRouter = true;
+ _$jscoverage['application.js'][106]++;
+ this._router.caseSensitive = this.enabled("case sensitive routing");
+ _$jscoverage['application.js'][107]++;
+ this._router.strict = this.enabled("strict routing");
+ _$jscoverage['application.js'][108]++;
+ return this._router.middleware;
+}));
+ _$jscoverage['application.js'][112]++;
+ this.locals.settings = this.settings;
+ _$jscoverage['application.js'][115]++;
+ this.configure("development", (function () {
+ _$jscoverage['application.js'][116]++;
+ this.set("json spaces", 2);
+}));
+ _$jscoverage['application.js'][119]++;
+ this.configure("production", (function () {
+ _$jscoverage['application.js'][120]++;
+ this.enable("view cache");
+}));
+});
+_$jscoverage['application.js'][132]++;
+app.remove = (function (path) {
+ _$jscoverage['application.js'][133]++;
+ return this._router.lookup("all", path).remove();
+});
+_$jscoverage['application.js'][145]++;
+app.lookup = (function (path) {
+ _$jscoverage['application.js'][146]++;
+ return this._router.lookup("all", path);
+});
+_$jscoverage['application.js'][159]++;
+app.use = (function (route, fn) {
+ _$jscoverage['application.js'][160]++;
+ var app, home, handle;
+ _$jscoverage['application.js'][163]++;
+ if ("string" != typeof route) {
+ _$jscoverage['application.js'][163]++;
+ fn = route, route = "/";
+ }
+ _$jscoverage['application.js'][166]++;
+ if (fn.handle && fn.set) {
+ _$jscoverage['application.js'][166]++;
+ app = fn;
+ }
+ _$jscoverage['application.js'][169]++;
+ if (app) {
+ _$jscoverage['application.js'][170]++;
+ app.route = route;
+ _$jscoverage['application.js'][171]++;
+ fn = (function (req, res, next) {
+ _$jscoverage['application.js'][172]++;
+ var orig = req.app;
+ _$jscoverage['application.js'][173]++;
+ app.handle(req, res, (function (err) {
+ _$jscoverage['application.js'][174]++;
+ req.app = res.app = orig;
+ _$jscoverage['application.js'][175]++;
+ next(err);
+}));
+});
+ }
+ _$jscoverage['application.js'][180]++;
+ debug("use %s %s", route, fn.name || "unnamed");
+ _$jscoverage['application.js'][181]++;
+ connect.proto.use.call(this, route, fn);
+ _$jscoverage['application.js'][184]++;
+ if (app) {
+ _$jscoverage['application.js'][185]++;
+ app.parent = this;
+ _$jscoverage['application.js'][186]++;
+ app.emit("mount", this);
+ }
+ _$jscoverage['application.js'][189]++;
+ return this;
+});
+_$jscoverage['application.js'][209]++;
+app.engine = (function (ext, fn) {
+ _$jscoverage['application.js'][210]++;
+ if ("." != ext[0]) {
+ _$jscoverage['application.js'][210]++;
+ ext = "." + ext;
+ }
+ _$jscoverage['application.js'][211]++;
+ this.engines[ext] = fn;
+ _$jscoverage['application.js'][212]++;
+ return this;
+});
+_$jscoverage['application.js'][274]++;
+app.param = (function (name, fn) {
+ _$jscoverage['application.js'][275]++;
+ var self = this, fns = [].slice.call(arguments, 1);
+ _$jscoverage['application.js'][279]++;
+ if (Array.isArray(name)) {
+ _$jscoverage['application.js'][280]++;
+ name.forEach((function (name) {
+ _$jscoverage['application.js'][281]++;
+ fns.forEach((function (fn) {
+ _$jscoverage['application.js'][282]++;
+ self.param(name, fn);
+}));
+}));
+ }
+ else {
+ _$jscoverage['application.js'][286]++;
+ if ("function" == typeof name) {
+ _$jscoverage['application.js'][287]++;
+ this._router.param(name);
+ }
+ else {
+ _$jscoverage['application.js'][290]++;
+ if (":" == name[0]) {
+ _$jscoverage['application.js'][290]++;
+ name = name.substr(1);
+ }
+ _$jscoverage['application.js'][291]++;
+ fns.forEach((function (fn) {
+ _$jscoverage['application.js'][292]++;
+ self._router.param(name, fn);
+}));
+ }
+ }
+ _$jscoverage['application.js'][296]++;
+ return this;
+});
+_$jscoverage['application.js'][309]++;
+app.set = (function (setting, val) {
+ _$jscoverage['application.js'][310]++;
+ if (1 == arguments.length) {
+ _$jscoverage['application.js'][311]++;
+ if (this.settings.hasOwnProperty(setting)) {
+ _$jscoverage['application.js'][312]++;
+ return this.settings[setting];
+ }
+ else {
+ _$jscoverage['application.js'][313]++;
+ if (this.parent) {
+ _$jscoverage['application.js'][314]++;
+ return this.parent.set(setting);
+ }
+ }
+ }
+ else {
+ _$jscoverage['application.js'][317]++;
+ this.settings[setting] = val;
+ _$jscoverage['application.js'][318]++;
+ return this;
+ }
+});
+_$jscoverage['application.js'][331]++;
+app.path = (function () {
+ _$jscoverage['application.js'][332]++;
+ return this.parent? this.parent.path() + this.route: "";
+});
+_$jscoverage['application.js'][345]++;
+app.enabled = (function (setting) {
+ _$jscoverage['application.js'][346]++;
+ return ! ! this.set(setting);
+});
+_$jscoverage['application.js'][357]++;
+app.disabled = (function (setting) {
+ _$jscoverage['application.js'][358]++;
+ return ! this.set(setting);
+});
+_$jscoverage['application.js'][369]++;
+app.enable = (function (setting) {
+ _$jscoverage['application.js'][370]++;
+ return this.set(setting, true);
+});
+_$jscoverage['application.js'][381]++;
+app.disable = (function (setting) {
+ _$jscoverage['application.js'][382]++;
+ return this.set(setting, false);
+});
+_$jscoverage['application.js'][411]++;
+app.configure = (function (env, fn) {
+ _$jscoverage['application.js'][412]++;
+ var envs = "all", args = [].slice.call(arguments);
+ _$jscoverage['application.js'][414]++;
+ fn = args.pop();
+ _$jscoverage['application.js'][415]++;
+ if (args.length) {
+ _$jscoverage['application.js'][415]++;
+ envs = args;
+ }
+ _$jscoverage['application.js'][416]++;
+ if ("all" == envs || ~ envs.indexOf(this.settings.env)) {
+ _$jscoverage['application.js'][416]++;
+ fn.call(this);
+ }
+ _$jscoverage['application.js'][417]++;
+ return this;
+});
+_$jscoverage['application.js'][430]++;
+app.listen = (function () {
+ _$jscoverage['application.js'][431]++;
+ var server = http.createServer(this);
+ _$jscoverage['application.js'][432]++;
+ return server.listen.apply(server, arguments);
+});
+_$jscoverage['application.js'][439]++;
+methods.forEach((function (method) {
+ _$jscoverage['application.js'][440]++;
+ app[method] = (function (path) {
+ _$jscoverage['application.js'][441]++;
+ if ("get" == method && 1 == arguments.length) {
+ _$jscoverage['application.js'][441]++;
+ return this.set(path);
+ }
+ _$jscoverage['application.js'][442]++;
+ var args = [method].concat([].slice.call(arguments));
+ _$jscoverage['application.js'][443]++;
+ if (! this._usedRouter) {
+ _$jscoverage['application.js'][443]++;
+ this.use(this.router);
+ }
+ _$jscoverage['application.js'][444]++;
+ return this._router.route.apply(this._router, args);
+});
+}));
+_$jscoverage['application.js'][458]++;
+app.all = (function (path) {
+ _$jscoverage['application.js'][459]++;
+ var args = arguments;
+ _$jscoverage['application.js'][460]++;
+ methods.forEach((function (method) {
+ _$jscoverage['application.js'][461]++;
+ if ("all" == method || "del" == method) {
+ _$jscoverage['application.js'][461]++;
+ return;
+ }
+ _$jscoverage['application.js'][462]++;
+ app[method].apply(this, args);
+}), this);
+ _$jscoverage['application.js'][464]++;
+ return this;
+});
+_$jscoverage['application.js'][469]++;
+app.del = app["delete"];
+_$jscoverage['application.js'][482]++;
+app.render = (function (name, options, fn) {
+ _$jscoverage['application.js'][483]++;
+ var self = this, opts = {}, cache = this.cache, engines = this.engines, view;
+ _$jscoverage['application.js'][490]++;
+ if ("function" == typeof options) {
+ _$jscoverage['application.js'][491]++;
+ fn = options, options = {};
+ }
+ _$jscoverage['application.js'][495]++;
+ utils.merge(opts, this.locals);
+ _$jscoverage['application.js'][498]++;
+ if (options.locals) {
+ _$jscoverage['application.js'][498]++;
+ utils.merge(opts, options.locals);
+ }
+ _$jscoverage['application.js'][501]++;
+ utils.merge(opts, options);
+ _$jscoverage['application.js'][504]++;
+ opts.cache = null == opts.cache? this.enabled("view cache"): opts.cache;
+ _$jscoverage['application.js'][509]++;
+ if (opts.cache) {
+ _$jscoverage['application.js'][509]++;
+ view = cache[name];
+ }
+ _$jscoverage['application.js'][512]++;
+ if (! view) {
+ _$jscoverage['application.js'][513]++;
+ view = new View(name, {defaultEngine: this.get("view engine"), root: this.get("views") || process.cwd() + "/views", engines: engines});
+ _$jscoverage['application.js'][520]++;
+ if (opts.cache) {
+ _$jscoverage['application.js'][520]++;
+ cache[name] = view;
+ }
+ }
+ _$jscoverage['application.js'][524]++;
+ try {
+ _$jscoverage['application.js'][525]++;
+ view.render(opts, fn);
+ }
+ catch (err) {
+ _$jscoverage['application.js'][527]++;
+ fn(err);
+ }
+});
+_$jscoverage['application.js'].source = ["","/*!"," * Express - proto"," * Copyright(c) 2010 TJ Holowaychuk &lt;tj@vision-media.ca&gt;"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var connect = require('connect')"," , Router = require('./router')"," , methods = Router.methods.concat('del', 'all')"," , middleware = require('./middleware')"," , debug = require('debug')('express:application')"," , View = require('./view')"," , url = require('url')"," , utils = connect.utils"," , path = require('path')"," , http = require('http')"," , join = path.join"," , fs = require('fs');","","/**"," * Application prototype."," */","","var app = exports = module.exports = {};","","/**"," * Initialize the server."," *"," * - setup default configuration"," * - setup default middleware"," * - setup route reflection methods"," *"," * @api private"," */","","app.init = function(){"," var self = this;"," this.cache = {};"," this.settings = {};"," this.engines = {};"," this.viewCallbacks = [];"," this.defaultConfiguration();",""," // route reflection methods"," methods.forEach(function(method){"," self.lookup[method] = function(path){"," return self._router.lookup(method, path);"," };",""," self.remove[method] = function(path){"," return self._router.lookup(method, path).remove();"," };"," });",""," // del -&gt; delete"," self.lookup.del = self.lookup.delete;"," self.remove.del = self.remove.delete;","};","","/**"," * Initialize application configuration."," *"," * @api private"," */","","app.defaultConfiguration = function(){"," var self = this;",""," // default settings"," this.set('env', process.env.NODE_ENV || 'development');"," debug('booting in %s mode', this.get('env'));",""," // implicit middleware"," this.use(connect.query());"," this.use(middleware.init(this));",""," // app locals"," this.locals = function(obj){"," for (var key in obj) self.locals[key] = obj[key];"," return self;"," };",""," // response locals"," this.locals.use = function(fn){"," if (3 == fn.length) {"," self.viewCallbacks.push(fn);"," } else {"," self.viewCallbacks.push(function(req, res, done){"," fn(req, res);"," done();"," });"," }"," return this;"," };",""," // router"," this._router = new Router(this);"," this.routes = this._router.routes;"," this.__defineGetter__('router', function(){"," this._usedRouter = true;"," this._router.caseSensitive = this.enabled('case sensitive routing');"," this._router.strict = this.enabled('strict routing');"," return this._router.middleware;"," });",""," // default locals"," this.locals.settings = this.settings;",""," // default configuration"," this.configure('development', function(){"," this.set('json spaces', 2);"," });",""," this.configure('production', function(){"," this.enable('view cache');"," });","};","","/**"," * Remove routes matching the given `path`."," *"," * @param {Route} path"," * @return {Boolean}"," * @api public"," */","","app.remove = function(path){"," return this._router.lookup('all', path).remove();","};","","/**"," * Lookup routes defined with a path"," * equivalent to `path`."," *"," * @param {String} path"," * @return {Array}"," * @api public"," */","","app.lookup = function(path){"," return this._router.lookup('all', path);","};","","/**"," * Proxy `connect#use()` to apply settings to"," * mounted applications."," *"," * @param {String|Function|Server} route"," * @param {Function|Server} fn"," * @return {app} for chaining"," * @api public"," */","","app.use = function(route, fn){"," var app, home, handle;",""," // default route to '/'"," if ('string' != typeof route) fn = route, route = '/';",""," // express app"," if (fn.handle &amp;&amp; fn.set) app = fn;",""," // restore .app property on req and res"," if (app) {"," app.route = route;"," fn = function(req, res, next) {"," var orig = req.app;"," app.handle(req, res, function(err){"," req.app = res.app = orig;"," next(err);"," });"," };"," }",""," debug('use %s %s', route, fn.name || 'unnamed');"," connect.proto.use.call(this, route, fn);",""," // mounted an app"," if (app) {"," app.parent = this;"," app.emit('mount', this);"," }",""," return this;","};","","/**"," * Register the given template engine callback `fn`"," * as `ext`. For example we may wish to map \".html\""," * files to ejs rather than using the \".ejs\" extension."," *"," * app.engine('.html', require('ejs').render);"," *"," * or"," *"," * app.engine('html', require('ejs').render);"," *"," * @param {String} ext"," * @param {Function} fn"," * @return {app} for chaining"," * @api public"," */","","app.engine = function(ext, fn){"," if ('.' != ext[0]) ext = '.' + ext;"," this.engines[ext] = fn;"," return this;","};","","/**"," * Map the given param placeholder `name`(s) to the given callback(s)."," *"," * Param mapping is used to provide pre-conditions to routes"," * which us normalized placeholders. This callback has the same"," * signature as regular middleware, for example below when \":userId\""," * is used this function will be invoked in an attempt to load the user."," *"," * app.param('userId', function(req, res, next, id){"," * User.find(id, function(err, user){"," * if (err) {"," * next(err);"," * } else if (user) {"," * req.user = user;"," * next();"," * } else {"," * next(new Error('failed to load user'));"," * }"," * });"," * });"," *"," * Passing a single function allows you to map logic"," * to the values passed to `app.param()`, for example"," * this is useful to provide coercion support in a concise manner."," *"," * The following example maps regular expressions to param values"," * ensuring that they match, otherwise passing control to the next"," * route:"," *"," * app.param(function(name, regexp){"," * if (regexp instanceof RegExp) {"," * return function(req, res, next, val){"," * var captures;"," * if (captures = regexp.exec(String(val))) {"," * req.params[name] = captures;"," * next();"," * } else {"," * next('route');"," * }"," * }"," * }"," * });"," *"," * We can now use it as shown below, where \"/commit/:commit\" expects"," * that the value for \":commit\" is at 5 or more digits. The capture"," * groups are then available as `req.params.commit` as we defined"," * in the function above."," *"," * app.param('commit', /^\\d{5,}$/);"," *"," * For more of this useful functionality take a look"," * at [express-params](http://github.com/visionmedia/express-params)."," *"," * @param {String|Array|Function} name"," * @param {Function} fn"," * @return {app} for chaining"," * @api public"," */","","app.param = function(name, fn){"," var self = this"," , fns = [].slice.call(arguments, 1);",""," // array"," if (Array.isArray(name)) {"," name.forEach(function(name){"," fns.forEach(function(fn){"," self.param(name, fn);"," });"," });"," // param logic"," } else if ('function' == typeof name) {"," this._router.param(name);"," // single"," } else {"," if (':' == name[0]) name = name.substr(1);"," fns.forEach(function(fn){"," self._router.param(name, fn);"," });"," }",""," return this;","};","","/**"," * Assign `setting` to `val`, or return `setting`'s value."," * Mounted servers inherit their parent server's settings."," *"," * @param {String} setting"," * @param {String} val"," * @return {Server|Mixed} for chaining, or the setting value"," * @api public"," */","","app.set = function(setting, val){"," if (1 == arguments.length) {"," if (this.settings.hasOwnProperty(setting)) {"," return this.settings[setting];"," } else if (this.parent) {"," return this.parent.set(setting);"," }"," } else {"," this.settings[setting] = val;"," return this;"," }","};","","/**"," * Return the app's absolute pathname"," * based on the parent(s) that have"," * mounted it."," *"," * @return {String}"," * @api private"," */","","app.path = function(){"," return this.parent"," ? this.parent.path() + this.route"," : '';","};","","/**"," * Check if `setting` is enabled."," *"," * @param {String} setting"," * @return {Boolean}"," * @api public"," */","","app.enabled = function(setting){"," return !!this.set(setting);","};","","/**"," * Check if `setting` is disabled."," *"," * @param {String} setting"," * @return {Boolean}"," * @api public"," */","","app.disabled = function(setting){"," return !this.set(setting);","};","","/**"," * Enable `setting`."," *"," * @param {String} setting"," * @return {app} for chaining"," * @api public"," */","","app.enable = function(setting){"," return this.set(setting, true);","};","","/**"," * Disable `setting`."," *"," * @param {String} setting"," * @return {app} for chaining"," * @api public"," */","","app.disable = function(setting){"," return this.set(setting, false);","};","","/**"," * Configure callback for zero or more envs,"," * when no env is specified that callback will"," * be invoked for all environments. Any combination"," * can be used multiple times, in any order desired."," *"," * Examples:"," *"," * app.configure(function(){"," * // executed for all envs"," * });"," *"," * app.configure('stage', function(){"," * // executed staging env"," * });"," *"," * app.configure('stage', 'production', function(){"," * // executed for stage and production"," * });"," *"," * @param {String} env..."," * @param {Function} fn"," * @return {app} for chaining"," * @api public"," */","","app.configure = function(env, fn){"," var envs = 'all'"," , args = [].slice.call(arguments);"," fn = args.pop();"," if (args.length) envs = args;"," if ('all' == envs || ~envs.indexOf(this.settings.env)) fn.call(this);"," return this;","};","","/**"," * Listen for connections."," *"," * This method takes the same arguments"," * as node's `http.Server#listen()`. "," *"," * @return {http.Server}"," * @api public"," */","","app.listen = function(){"," var server = http.createServer(this);"," return server.listen.apply(server, arguments);","};","","/**"," * Delegate `.VERB(...)` calls to `.route(VERB, ...)`."," */","","methods.forEach(function(method){"," app[method] = function(path){"," if ('get' == method &amp;&amp; 1 == arguments.length) return this.set(path); "," var args = [method].concat([].slice.call(arguments));"," if (!this._usedRouter) this.use(this.router);"," return this._router.route.apply(this._router, args);"," }","});","","/**"," * Special-cased \"all\" method, applying the given route `path`,"," * middleware, and callback to _every_ HTTP method."," *"," * @param {String} path"," * @param {Function} ..."," * @return {app} for chaining"," * @api public"," */","","app.all = function(path){"," var args = arguments;"," methods.forEach(function(method){"," if ('all' == method || 'del' == method) return;"," app[method].apply(this, args);"," }, this);"," return this;","};","","// del -&gt; delete alias","","app.del = app.delete;","","/**"," * Render the given view `name` name with `options`"," * and a callback accepting an error and the"," * rendered template string."," *"," * @param {String} name"," * @param {String|Function} options or fn"," * @param {Function} fn"," * @api public"," */","","app.render = function(name, options, fn){"," var self = this"," , opts = {}"," , cache = this.cache"," , engines = this.engines"," , view;",""," // support callback function as second arg"," if ('function' == typeof options) {"," fn = options, options = {};"," }",""," // merge app.locals"," utils.merge(opts, this.locals);",""," // merge options.locals"," if (options.locals) utils.merge(opts, options.locals);",""," // merge options"," utils.merge(opts, options);",""," // set .cache unless explicitly provided"," opts.cache = null == opts.cache"," ? this.enabled('view cache')"," : opts.cache;",""," // primed cache"," if (opts.cache) view = cache[name];",""," // view"," if (!view) {"," view = new View(name, {"," defaultEngine: this.get('view engine')"," , root: this.get('views') || process.cwd() + '/views'"," , engines: engines"," });",""," // prime the cache"," if (opts.cache) cache[name] = view;"," }",""," // render"," try {"," view.render(opts, fn);"," } catch (err) {"," fn(err);"," }","};"];
View
65 node_modules/express/lib-cov/express.js
@@ -0,0 +1,65 @@
+/* automatically generated by JSCoverage - do not edit */
+if (typeof _$jscoverage === 'undefined') _$jscoverage = {};
+if (! _$jscoverage['express.js']) {
+ _$jscoverage['express.js'] = [];
+ _$jscoverage['express.js'][12] = 0;
+ _$jscoverage['express.js'][25] = 0;
+ _$jscoverage['express.js'][31] = 0;
+ _$jscoverage['express.js'][40] = 0;
+ _$jscoverage['express.js'][41] = 0;
+ _$jscoverage['express.js'][42] = 0;
+ _$jscoverage['express.js'][43] = 0;
+ _$jscoverage['express.js'][44] = 0;
+ _$jscoverage['express.js'][45] = 0;
+ _$jscoverage['express.js'][46] = 0;
+ _$jscoverage['express.js'][54] = 0;
+ _$jscoverage['express.js'][55] = 0;
+ _$jscoverage['express.js'][65] = 0;
+ _$jscoverage['express.js'][66] = 0;
+ _$jscoverage['express.js'][67] = 0;
+ _$jscoverage['express.js'][73] = 0;
+ _$jscoverage['express.js'][74] = 0;
+ _$jscoverage['express.js'][80] = 0;
+ _$jscoverage['express.js'][84] = 0;
+}
+_$jscoverage['express.js'][12]++;
+var http = require("http"), connect = require("connect"), proto = require("./application"), Route = require("./router/route"), Router = require("./router"), req = require("./request"), res = require("./response"), utils = connect.utils;
+_$jscoverage['express.js'][25]++;
+exports = module.exports = createApplication;
+_$jscoverage['express.js'][31]++;
+exports.version = "3.0.0alpha1-pre";
+_$jscoverage['express.js'][40]++;
+function createApplication() {
+ _$jscoverage['express.js'][41]++;
+ var app = connect();
+ _$jscoverage['express.js'][42]++;
+ utils.merge(app, proto);
+ _$jscoverage['express.js'][43]++;
+ app.request = {__proto__: req};
+ _$jscoverage['express.js'][44]++;
+ app.response = {__proto__: res};
+ _$jscoverage['express.js'][45]++;
+ app.init();
+ _$jscoverage['express.js'][46]++;
+ return app;
+}
+_$jscoverage['express.js'][54]++;
+for (var key in connect.middleware) {
+ _$jscoverage['express.js'][55]++;
+ Object.defineProperty(exports, key, Object.getOwnPropertyDescriptor(connect.middleware, key));
+}
+_$jscoverage['express.js'][65]++;
+exports.application = proto;
+_$jscoverage['express.js'][66]++;
+exports.request = req;
+_$jscoverage['express.js'][67]++;
+exports.response = res;
+_$jscoverage['express.js'][73]++;
+exports.Route = Route;
+_$jscoverage['express.js'][74]++;
+exports.Router = Router;
+_$jscoverage['express.js'][80]++;
+exports.methods = require("./router/methods");
+_$jscoverage['express.js'][84]++;
+exports.errorHandler.title = "Express";
+_$jscoverage['express.js'].source = ["","/*!"," * Express"," * Copyright(c) 2010 TJ Holowaychuk &lt;tj@vision-media.ca&gt;"," * MIT Licensed"," */","","/**"," * Module dependencies."," */","","var http = require('http')"," , connect = require('connect')"," , proto = require('./application')"," , Route = require('./router/route')"," , Router = require('./router')"," , req = require('./request')"," , res = require('./response')"," , utils = connect.utils;","","/**"," * Expose `createApplication()`."," */","","exports = module.exports = createApplication;","","/**"," * Framework version."," */","","exports.version = '3.0.0alpha1-pre';","","/**"," * Create an express application."," *"," * @return {Function}"," * @api public"," */","","function createApplication() {"," var app = connect();"," utils.merge(app, proto);"," app.request = { __proto__: req };"," app.response = { __proto__: res };"," app.init();"," return app;","}","","/**"," * Expose connect.middleware as express.*"," * for example `express.logger` etc. "," */","","for (var key in connect.middleware) {"," Object.defineProperty("," exports"," , key"," , Object.getOwnPropertyDescriptor(connect.middleware, key));","}","","/**"," * Expose the prototypes."," */","","exports.application = proto;","exports.request = req;","exports.response = res;","","/**"," * Expose constructors."," */","","exports.Route = Route;","exports.Router = Router;","","/**"," * Expose HTTP methods."," */","","exports.methods = require('./router/methods');","","// Error handler title","","exports.errorHandler.title = 'Express';",""];
View
54 node_modules/express/lib-cov/middleware.js
@@ -0,0 +1,54 @@
+/* automatically generated by JSCoverage - do not edit */
+if (typeof _$jscoverage === 'undefined') _$jscoverage = {};
+if (! _$jscoverage['middleware.js']) {
+ _$jscoverage['middleware.js'] = [];
+ _$jscoverage['middleware.js'][18] = 0;
+ _$jscoverage['middleware.js'][19] = 0;
+ _$jscoverage['middleware.js'][20] = 0;
+ _$jscoverage['middleware.js'][21] = 0;
+ _$jscoverage['middleware.js'][22] = 0;
+ _$jscoverage['middleware.js'][23] = 0;
+ _$jscoverage['middleware.js'][24] = 0;
+ _$jscoverage['middleware.js'][25] = 0;
+ _$jscoverage['middleware.js'][27] = 0;
+ _$jscoverage['middleware.js'][28] = 0;
+ _$jscoverage['middleware.js'][30] = 0;
+ _$jscoverage['middleware.js'][31] = 0;
+ _$jscoverage['middleware.js'][32] = 0;
+ _$jscoverage['middleware.js'][35] = 0;
+}
+_$jscoverage['middleware.js'][18]++;
+exports.init = (function (app) {
+ _$jscoverage['middleware.js'][19]++;
+ return (function (req, res, next) {
+ _$jscoverage['middleware.js'][20]++;
+ var charset;
+ _$jscoverage['middleware.js'][21]++;
+ res.setHeader("X-Powered-By", "Express");
+ _$jscoverage['middleware.js'][22]++;
+ req.app = res.app = app;
+ _$jscoverage['middleware.js'][23]++;
+ req.res = res;
+ _$jscoverage['middleware.js'][24]++;
+ res.req = req;
+ _$jscoverage['middleware.js'][25]++;
+ req.next = next;
+ _$jscoverage['middleware.js'][27]++;
+ req.__proto__ = app.request;
+ _$jscoverage['middleware.js'][28]++;
+ res.__proto__ = app.response;
+ _$jscoverage['middleware.js'][30]++;
+ res.locals = (function (obj) {
+ _$jscoverage['middleware.js'][31]++;
+ for (var key in obj) {
+ _$jscoverage['middleware.js'][31]++;
+ res.locals[key] = obj[key];
+}
+ _$jscoverage['middleware.js'][32]++;
+ return res;
+});
+ _$jscoverage['middleware.js'][35]++;
+ next();
+});
+});
+_$jscoverage['middleware.js'].source = ["","/*!"," * Express - middleware - init"," * Copyright(c) 2010-2011 TJ Holowaychuk &lt;tj@vision-media.ca&gt;"," * MIT Licensed"," */","","/**"," * Initialization middleware, exposing the"," * request and response to eachother, as well"," * as defaulting the X-Powered-By header field."," *"," * @param {Function} app"," * @return {Function}"," * @api private"," */","","exports.init = function(app){"," return function(req, res, next){"," var charset;"," res.setHeader('X-Powered-By', 'Express');"," req.app = res.app = app;"," req.res = res;"," res.req = req;"," req.next = next;",""," req.__proto__ = app.request;"," res.__proto__ = app.response;",""," res.locals = function(obj){"," for (var key in obj) res.locals[key] = obj[key];"," return res;"," };",""," next();"," }","};"];
View
225 node_modules/express/lib-cov/request.js
@@ -0,0 +1,225 @@
+/* automatically generated by JSCoverage - do not edit */
+if (typeof _$jscoverage === 'undefined') _$jscoverage = {};
+if (! _$jscoverage['request.js']) {
+ _$jscoverage['request.js'] = [];
+ _$jscoverage['request.js'][12] = 0;
+ _$jscoverage['request.js'][22] = 0;
+ _$jscoverage['request.js'][49] = 0;
+ _$jscoverage['request.js'][50] = 0;
+ _$jscoverage['request.js'][53] = 0;
+ _$jscoverage['request.js'][56] = 0;
+ _$jscoverage['request.js'][86] = 0;
+ _$jscoverage['request.js'][87] = 0;
+ _$jscoverage['request.js'][99] = 0;
+ _$jscoverage['request.js'][100] = 0;
+ _$jscoverage['request.js'][101] = 0;
+ _$jscoverage['request.js'][115] = 0;
+ _$jscoverage['request.js'][116] = 0;
+ _$jscoverage['request.js'][117] = 0;
+ _$jscoverage['request.js'][141] = 0;
+ _$jscoverage['request.js'][142] = 0;
+ _$jscoverage['request.js'][143] = 0;
+ _$jscoverage['request.js'][161] = 0;
+ _$jscoverage['request.js'][162] = 0;
+ _$jscoverage['request.js'][163] = 0;
+ _$jscoverage['request.js'][167] = 0;
+ _$jscoverage['request.js'][185] = 0;
+ _$jscoverage['request.js'][186] = 0;
+ _$jscoverage['request.js'][187] = 0;
+ _$jscoverage['request.js'][191] = 0;
+ _$jscoverage['request.js'][213] = 0;
+ _$jscoverage['request.js'][215] = 0;