vulcan 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. data/README.md +1 -80
  2. data/lib/vulcan/cli.rb +12 -33
  3. data/lib/vulcan/version.rb +1 -1
  4. data/server/bin/make +3 -1
  5. data/server/lib/spawner.js +4 -9
  6. data/server/node_modules/connect-form/node_modules/formidable/Readme.md +2 -13
  7. data/server/node_modules/connect-form/node_modules/formidable/lib/incoming_form.js +7 -19
  8. data/server/node_modules/connect-form/node_modules/formidable/lib/multipart_parser.js +1 -12
  9. data/server/node_modules/connect-form/node_modules/formidable/package.json +1 -1
  10. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +10 -0
  11. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +9 -0
  12. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +1 -1
  13. data/server/node_modules/cradle/lib/cradle.js +1 -0
  14. data/server/node_modules/cradle/node_modules/vows/LICENSE +20 -0
  15. data/server/node_modules/cradle/node_modules/vows/Makefile +7 -0
  16. data/server/node_modules/cradle/node_modules/vows/README.md +39 -0
  17. data/server/node_modules/cradle/node_modules/vows/bin/vows +515 -0
  18. data/server/node_modules/cradle/node_modules/vows/lib/assert/error.js +27 -0
  19. data/server/node_modules/cradle/node_modules/vows/lib/assert/macros.js +215 -0
  20. data/server/node_modules/cradle/node_modules/vows/lib/assert/utils.js +77 -0
  21. data/server/node_modules/cradle/node_modules/vows/lib/vows.js +193 -0
  22. data/server/node_modules/cradle/node_modules/vows/lib/vows/console.js +131 -0
  23. data/server/node_modules/cradle/node_modules/vows/lib/vows/context.js +55 -0
  24. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/file.js +29 -0
  25. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-foot.html +2 -0
  26. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-head.html +61 -0
  27. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-html.js +54 -0
  28. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-json.js +54 -0
  29. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-plain.js +38 -0
  30. data/server/node_modules/cradle/node_modules/vows/lib/vows/extras.js +28 -0
  31. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/dot-matrix.js +67 -0
  32. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/json.js +16 -0
  33. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/silent.js +8 -0
  34. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/spec.js +44 -0
  35. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/watch.js +39 -0
  36. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/xunit.js +90 -0
  37. data/server/node_modules/cradle/node_modules/vows/lib/vows/suite.js +319 -0
  38. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/LICENSE +20 -0
  39. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/Makefile +4 -0
  40. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/README.md +72 -0
  41. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/lib/eyes.js +233 -0
  42. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/package.json +14 -0
  43. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/test/eyes-test.js +55 -0
  44. data/server/node_modules/cradle/node_modules/vows/package.json +14 -0
  45. data/server/node_modules/cradle/node_modules/vows/test/assert-test.js +135 -0
  46. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/failing.js +18 -0
  47. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/log.js +18 -0
  48. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/passing.js +17 -0
  49. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/stderr.js +18 -0
  50. data/server/node_modules/cradle/node_modules/vows/test/isolate-test.js +140 -0
  51. data/server/node_modules/cradle/node_modules/vows/test/testInherit.js +133 -0
  52. data/server/node_modules/cradle/node_modules/vows/test/vows-error-test.js +51 -0
  53. data/server/node_modules/cradle/node_modules/vows/test/vows-test.js +374 -0
  54. data/server/node_modules/cradle/package.json +3 -3
  55. data/server/node_modules/cradle/test/cache-test.js +7 -6
  56. data/server/node_modules/cradle/test/cradle-test.js +5 -4
  57. data/server/node_modules/cradle/test/response-test.js +6 -5
  58. data/server/node_modules/express/History.md +1 -53
  59. data/server/node_modules/express/Makefile +9 -3
  60. data/server/node_modules/express/Readme.md +1 -3
  61. data/server/node_modules/express/bin/express +66 -65
  62. data/server/node_modules/express/lib/express.js +1 -1
  63. data/server/node_modules/express/lib/request.js +9 -23
  64. data/server/node_modules/express/lib/response.js +2 -3
  65. data/server/node_modules/express/lib/utils.js +0 -13
  66. data/server/node_modules/express/lib/view.js +16 -19
  67. data/server/node_modules/express/lib/view/view.js +1 -2
  68. data/server/node_modules/express/node_modules/connect/lib/connect.js +1 -1
  69. data/server/node_modules/express/node_modules/connect/lib/http.js +0 -2
  70. data/server/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js +31 -135
  71. data/server/node_modules/express/node_modules/connect/lib/middleware/limit.js +1 -5
  72. data/server/node_modules/express/node_modules/connect/lib/middleware/session.js +2 -2
  73. data/server/node_modules/express/node_modules/connect/lib/middleware/static.js +21 -26
  74. data/server/node_modules/express/node_modules/connect/lib/middleware/staticCache.js +38 -91
  75. data/server/node_modules/express/node_modules/connect/lib/middleware/vhost.js +1 -1
  76. data/server/node_modules/express/node_modules/connect/lib/utils.js +4 -11
  77. data/server/node_modules/express/node_modules/connect/package.json +6 -7
  78. data/server/node_modules/express/node_modules/connect/test.js +31 -44
  79. data/server/node_modules/express/node_modules/mime/index.js +1 -0
  80. data/server/node_modules/express/node_modules/mime/mime.js +3 -3
  81. data/server/node_modules/express/node_modules/mime/{types/mime.types → mime.types} +0 -0
  82. data/server/node_modules/express/node_modules/mime/{types/node.types → node.types} +0 -17
  83. data/server/node_modules/express/node_modules/mime/package.json +10 -21
  84. data/server/node_modules/express/node_modules/mime/test.js +3 -2
  85. data/server/node_modules/express/node_modules/qs/History.md +0 -11
  86. data/server/node_modules/express/node_modules/qs/Makefile +3 -1
  87. data/server/node_modules/express/node_modules/qs/Readme.md +4 -2
  88. data/server/node_modules/express/node_modules/qs/lib/querystring.js +74 -100
  89. data/server/node_modules/express/node_modules/qs/package.json +2 -9
  90. data/server/node_modules/express/node_modules/qs/support/expresso/History.md +128 -0
  91. data/server/node_modules/express/node_modules/qs/support/expresso/Makefile +53 -0
  92. data/server/node_modules/express/node_modules/qs/support/expresso/Readme.md +61 -0
  93. data/server/node_modules/express/node_modules/qs/support/expresso/bin/expresso +856 -0
  94. data/server/node_modules/express/node_modules/qs/support/expresso/docs/api.html +1080 -0
  95. data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.html +377 -0
  96. data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.md +290 -0
  97. data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/foot.html +3 -0
  98. data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/head.html +42 -0
  99. data/server/node_modules/express/node_modules/qs/support/expresso/lib/bar.js +4 -0
  100. data/server/node_modules/express/node_modules/qs/support/expresso/lib/foo.js +16 -0
  101. data/server/node_modules/express/node_modules/qs/support/expresso/package.json +12 -0
  102. data/server/node_modules/express/node_modules/qs/support/expresso/test/assert.test.js +91 -0
  103. data/server/node_modules/express/node_modules/qs/support/expresso/test/async.test.js +12 -0
  104. data/server/node_modules/express/node_modules/qs/support/expresso/test/bar.test.js +13 -0
  105. data/server/node_modules/express/node_modules/qs/support/expresso/test/foo.test.js +14 -0
  106. data/server/node_modules/express/node_modules/qs/support/expresso/test/http.test.js +146 -0
  107. data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/async.test.js +39 -0
  108. data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/http.test.js +48 -0
  109. data/server/node_modules/express/node_modules/qs/support/should/History.md +22 -0
  110. data/server/node_modules/express/node_modules/qs/support/should/Makefile +6 -0
  111. data/server/node_modules/express/node_modules/qs/support/should/Readme.md +248 -0
  112. data/server/node_modules/express/node_modules/qs/support/should/examples/runner.js +53 -0
  113. data/server/node_modules/express/node_modules/qs/support/should/index.js +2 -0
  114. data/server/node_modules/express/node_modules/qs/support/should/lib/eql.js +91 -0
  115. data/server/node_modules/express/node_modules/qs/support/should/lib/should.js +548 -0
  116. data/server/node_modules/express/node_modules/qs/support/should/package.json +8 -0
  117. data/server/node_modules/express/node_modules/qs/support/should/test/should.test.js +358 -0
  118. data/server/node_modules/express/node_modules/qs/test/{parse.js → parse.test.js} +2 -1
  119. data/server/node_modules/express/node_modules/qs/test/{stringify.js → stringify.test.js} +0 -0
  120. data/server/node_modules/express/package.json +8 -9
  121. data/server/node_modules/node-uuid/README.md +67 -166
  122. data/server/node_modules/node-uuid/package.json +3 -5
  123. data/server/node_modules/node-uuid/{benchmark → test}/benchmark-native.c +0 -0
  124. data/server/node_modules/node-uuid/test/benchmark.js +27 -0
  125. data/server/node_modules/node-uuid/test/test.html +0 -3
  126. data/server/node_modules/node-uuid/test/test.js +57 -214
  127. data/server/node_modules/node-uuid/uuid.js +56 -225
  128. data/server/node_modules/restler/README.md +7 -20
  129. data/server/node_modules/restler/bin/restler +1 -1
  130. data/server/node_modules/restler/lib/multipartform.js +8 -9
  131. data/server/node_modules/restler/lib/restler.js +22 -64
  132. data/server/node_modules/restler/package.json +2 -2
  133. data/server/node_modules/restler/test/restler.js +2 -22
  134. data/server/node_modules/restler/test/test_helper.js +1 -20
  135. data/server/package.json +10 -10
  136. data/server/web.js +7 -30
  137. metadata +96 -89
  138. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/file/plain.txt +0 -1
  139. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/no-filename/generic.http +0 -13
  140. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/js/no-filename.js +0 -3
  141. data/server/node_modules/express/node_modules/connect/node_modules/formidable/Makefile +0 -14
  142. data/server/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md +0 -286
  143. data/server/node_modules/express/node_modules/connect/node_modules/formidable/TODO +0 -3
  144. data/server/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js +0 -70
  145. data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js +0 -43
  146. data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js +0 -48
  147. data/server/node_modules/express/node_modules/connect/node_modules/formidable/index.js +0 -1
  148. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js +0 -61
  149. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js +0 -377
  150. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js +0 -3
  151. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js +0 -312
  152. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js +0 -25
  153. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js +0 -6
  154. data/server/node_modules/express/node_modules/connect/node_modules/formidable/package.json +0 -22
  155. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js +0 -19
  156. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt +0 -1
  157. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt +0 -1
  158. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/no-filename/generic.http +0 -13
  159. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +0 -3
  160. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +0 -26
  161. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http +0 -24
  162. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +0 -23
  163. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +0 -24
  164. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +0 -22
  165. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +0 -22
  166. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +0 -22
  167. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js +0 -3
  168. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +0 -21
  169. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multi_video.upload +0 -0
  170. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js +0 -72
  171. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js +0 -89
  172. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js +0 -24
  173. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +0 -80
  174. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js +0 -104
  175. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js +0 -715
  176. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +0 -50
  177. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +0 -45
  178. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +0 -72
  179. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js +0 -2
  180. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js +0 -63
  181. data/server/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js +0 -47
  182. data/server/node_modules/express/node_modules/mkdirp/LICENSE +0 -21
  183. data/server/node_modules/express/node_modules/mkdirp/README.markdown +0 -21
  184. data/server/node_modules/express/node_modules/mkdirp/examples/pow.js +0 -6
  185. data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.orig +0 -6
  186. data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.rej +0 -19
  187. data/server/node_modules/express/node_modules/mkdirp/index.js +0 -20
  188. data/server/node_modules/express/node_modules/mkdirp/package.json +0 -23
  189. data/server/node_modules/express/node_modules/mkdirp/test/mkdirp.js +0 -28
  190. data/server/node_modules/express/node_modules/mkdirp/test/race.js +0 -41
  191. data/server/node_modules/express/node_modules/mkdirp/test/rel.js +0 -32
  192. data/server/node_modules/express/node_modules/qs/test/mocha.opts +0 -2
  193. data/server/node_modules/express/testing/foo/app.js +0 -35
  194. data/server/node_modules/express/testing/foo/package.json +0 -9
  195. data/server/node_modules/express/testing/foo/public/stylesheets/style.css +0 -8
  196. data/server/node_modules/express/testing/foo/routes/index.js +0 -10
  197. data/server/node_modules/express/testing/foo/views/index.jade +0 -2
  198. data/server/node_modules/express/testing/foo/views/layout.jade +0 -6
  199. data/server/node_modules/express/testing/index.js +0 -43
  200. data/server/node_modules/express/testing/public/test.txt +0 -2971
  201. data/server/node_modules/express/testing/views/page.html +0 -1
  202. data/server/node_modules/express/testing/views/page.jade +0 -3
  203. data/server/node_modules/express/testing/views/test.md +0 -1
  204. data/server/node_modules/express/testing/views/user/index.jade +0 -1
  205. data/server/node_modules/express/testing/views/user/list.jade +0 -1
  206. data/server/node_modules/node-uuid/benchmark/README.md +0 -53
  207. data/server/node_modules/node-uuid/benchmark/bench.gnu +0 -174
  208. data/server/node_modules/node-uuid/benchmark/bench.sh +0 -34
  209. data/server/node_modules/node-uuid/benchmark/benchmark.js +0 -84
  210. data/server/node_modules/node-uuid/test/benchmark-native +0 -0
  211. data/server/node_modules/node-uuid/test/compare_v1.js +0 -63
@@ -28,7 +28,7 @@ var exports = module.exports = connect.middleware;
28
28
  * Framework version.
29
29
  */
30
30
 
31
- exports.version = '2.5.6';
31
+ exports.version = '2.4.6';
32
32
 
33
33
  /**
34
34
  * Shortcut for `new Server(...)`.
@@ -12,7 +12,6 @@
12
12
  var http = require('http')
13
13
  , req = http.IncomingMessage.prototype
14
14
  , utils = require('./utils')
15
- , parse = require('url').parse
16
15
  , mime = require('mime');
17
16
 
18
17
  /**
@@ -88,17 +87,6 @@ req.get = function(field, param){
88
87
  return RegExp.$1 || RegExp.$2;
89
88
  };
90
89
 
91
- /**
92
- * Short-hand for `require('url').parse(req.url).pathname`.
93
- *
94
- * @return {String}
95
- * @api public
96
- */
97
-
98
- req.__defineGetter__('path', function(){
99
- return parse(this.url).pathname;
100
- });
101
-
102
90
  /**
103
91
  * Check if the _Accept_ header is present, and includes the given `type`.
104
92
  *
@@ -229,10 +217,10 @@ req.flash = function(type, msg){
229
217
  , args = arguments
230
218
  , formatters = this.app.flashFormatters || {};
231
219
  formatters.__proto__ = flashFormatters;
232
- msg = utils.miniMarkdown(msg);
220
+ msg = utils.miniMarkdown(utils.escape(msg));
233
221
  msg = msg.replace(/%([a-zA-Z])/g, function(_, format){
234
222
  var formatter = formatters[format];
235
- if (formatter) return formatter(utils.escape(args[i++]));
223
+ if (formatter) return formatter(args[i++]);
236
224
  });
237
225
  return (msgs[type] = msgs[type] || []).push(msg);
238
226
  } else if (type) {
@@ -292,18 +280,16 @@ req.flash = function(type, msg){
292
280
  req.is = function(type){
293
281
  var fn = this.app.is(type);
294
282
  if (fn) return fn(this);
295
- var ct = this.headers['content-type'];
296
- if (!ct) return false;
297
- ct = ct.split(';')[0];
283
+ var contentType = this.headers['content-type'];
284
+ if (!contentType) return;
298
285
  if (!~type.indexOf('/')) type = mime.lookup(type);
299
286
  if (~type.indexOf('*')) {
300
- type = type.split('/');
301
- ct = ct.split('/');
302
- if ('*' == type[0] && type[1] == ct[1]) return true;
303
- if ('*' == type[1] && type[0] == ct[0]) return true;
304
- return false;
287
+ type = type.split('/')
288
+ contentType = contentType.split('/');
289
+ if ('*' == type[0] && type[1] == contentType[1]) return true;
290
+ if ('*' == type[1] && type[0] == contentType[0]) return true;
305
291
  }
306
- return !! ~ct.indexOf(type);
292
+ return !! ~contentType.indexOf(type);
307
293
  };
308
294
 
309
295
  // Callback for isXMLHttpRequest / xhr
@@ -105,7 +105,7 @@ res.send = function(body, headers, status){
105
105
 
106
106
  // respond
107
107
  this.statusCode = status;
108
- this.end('HEAD' == this.req.method ? null : body);
108
+ this.end('HEAD' == this.req.method ? undefined : body);
109
109
  return this;
110
110
  };
111
111
 
@@ -376,7 +376,6 @@ res.redirect = function(url, status){
376
376
  , req = this.req
377
377
  , base = app.set('basepath') || app.route
378
378
  , status = status || 302
379
- , head = 'HEAD' == req.method
380
379
  , body;
381
380
 
382
381
  // Setup redirect map
@@ -419,7 +418,7 @@ res.redirect = function(url, status){
419
418
  // Respond
420
419
  this.statusCode = status;
421
420
  this.header('Location', url);
422
- this.end(head ? null : body);
421
+ this.end(body);
423
422
  };
424
423
 
425
424
  /**
@@ -5,19 +5,6 @@
5
5
  * MIT Licensed
6
6
  */
7
7
 
8
- /**
9
- * Check if `path` looks absolute.
10
- *
11
- * @param {String} path
12
- * @return {Boolean}
13
- * @api private
14
- */
15
-
16
- exports.isAbsolute = function(path){
17
- if ('/' == path[0]) return true;
18
- if (':' == path[1] && '\\' == path[2]) return true;
19
- };
20
-
21
8
  /**
22
9
  * Merge object `b` with `a` giving precedence to
23
10
  * values in object `a`.
@@ -47,10 +47,7 @@ exports.register = View.register;
47
47
  */
48
48
 
49
49
  exports.compile = function(view, cache, cid, options){
50
- if (cache && cid && cache[cid]){
51
- options.filename = cache[cid].path;
52
- return cache[cid];
53
- }
50
+ if (cache && cid && cache[cid]) return cache[cid];
54
51
 
55
52
  // lookup
56
53
  view = exports.lookup(view, options);
@@ -61,13 +58,13 @@ exports.compile = function(view, cache, cid, options){
61
58
  var err = new Error('failed to locate view "' + view.original.view + '"');
62
59
  err.view = view.original;
63
60
  throw err;
64
- }
61
+ }
65
62
 
66
63
  // compile
67
64
  options.filename = view.path;
68
65
  view.fn = view.templateEngine.compile(view.contents, options);
69
66
  cache[cid] = view;
70
-
67
+
71
68
  return view;
72
69
  };
73
70
 
@@ -84,11 +81,11 @@ exports.compile = function(view, cache, cid, options){
84
81
  *
85
82
  * Lookup:
86
83
  *
87
- * - partial `_<name>`
88
- * - any `<name>/index`
89
- * - non-layout `../<name>/index`
90
- * - any `<root>/<name>`
91
- * - partial `<root>/_<name>`
84
+ * - partial `_<name>`
85
+ * - any `<name>/index`
86
+ * - non-layout `../<name>/index`
87
+ * - any `<root>/<name>`
88
+ * - partial `<root>/_<name>`
92
89
  *
93
90
  * @param {String} view
94
91
  * @param {Object} options
@@ -164,7 +161,7 @@ function renderPartial(res, view, options, parentLocals, parent){
164
161
 
165
162
  // Inherit locals from parent
166
163
  union(options, parentLocals);
167
-
164
+
168
165
  // Merge locals
169
166
  if (locals) merge(options, locals);
170
167
 
@@ -205,7 +202,7 @@ function renderPartial(res, view, options, parentLocals, parent){
205
202
  options.lastInCollection = i == len - 1;
206
203
  object = val;
207
204
  buf += render();
208
- }
205
+ }
209
206
  } else {
210
207
  keys = Object.keys(collection);
211
208
  len = keys.length;
@@ -230,20 +227,20 @@ function renderPartial(res, view, options, parentLocals, parent){
230
227
  };
231
228
 
232
229
  /**
233
- * Render `view` partial with the given `options`. Optionally a
230
+ * Render `view` partial with the given `options`. Optionally a
234
231
  * callback `fn(err, str)` may be passed instead of writing to
235
232
  * the socket.
236
233
  *
237
234
  * Options:
238
235
  *
239
- * - `object` Single object with name derived from the view (unless `as` is present)
236
+ * - `object` Single object with name derived from the view (unless `as` is present)
240
237
  *
241
238
  * - `as` Variable name for each `collection` value, defaults to the view name.
242
239
  * * as: 'something' will add the `something` local variable
243
240
  * * as: this will use the collection value as the template context
244
241
  * * as: global will merge the collection value's properties with `locals`
245
242
  *
246
- * - `collection` Array of objects, the name is derived from the view name itself.
243
+ * - `collection` Array of objects, the name is derived from the view name itself.
247
244
  * For example _video.html_ will have a object _video_ available to it.
248
245
  *
249
246
  * @param {String} view
@@ -297,7 +294,7 @@ res.partial = function(view, options, fn){
297
294
  * automatically, however otherwise a response of _200_ and _text/html_ is given.
298
295
  *
299
296
  * Options:
300
- *
297
+ *
301
298
  * - `scope` Template evaluation context (the value of `this`)
302
299
  * - `debug` Output debugging information
303
300
  * - `status` Response status code
@@ -433,7 +430,7 @@ res._render = function(view, opts, fn, parent, sub){
433
430
  // partial return
434
431
  } else if (partial) {
435
432
  return str;
436
- // render complete, and
433
+ // render complete, and
437
434
  // callback given
438
435
  } else if (fn) {
439
436
  fn(null, str);
@@ -457,4 +454,4 @@ function hintAtViewPaths(view, options) {
457
454
  console.error(' - %s', path);
458
455
  });
459
456
  console.error();
460
- }
457
+ }
@@ -10,7 +10,6 @@
10
10
  */
11
11
 
12
12
  var path = require('path')
13
- , utils = require('../utils')
14
13
  , extname = path.extname
15
14
  , dirname = path.dirname
16
15
  , basename = path.basename
@@ -100,7 +99,7 @@ View.prototype.resolvePath = function(){
100
99
  // Implicit engine
101
100
  if (!~this.basename.indexOf('.')) path += this.extension;
102
101
  // Absolute
103
- if (utils.isAbsolute(path)) return path;
102
+ if ('/' == path[0]) return path;
104
103
  // Relative to parent
105
104
  if (this.relative && this.parent) return this.parent.dirname + '/' + path;
106
105
  // Relative to root
@@ -26,7 +26,7 @@ exports = module.exports = createServer;
26
26
  * Framework version.
27
27
  */
28
28
 
29
- exports.version = '1.8.5';
29
+ exports.version = '1.7.1';
30
30
 
31
31
  /**
32
32
  * Initialize a new `connect.HTTPServer` with the middleware
@@ -163,12 +163,10 @@ Server.prototype.handle = function(req, res, out) {
163
163
 
164
164
  res.statusCode = 500;
165
165
  res.setHeader('Content-Type', 'text/plain');
166
- if ('HEAD' == req.method) return res.end();
167
166
  res.end(msg);
168
167
  } else {
169
168
  res.statusCode = 404;
170
169
  res.setHeader('Content-Type', 'text/plain');
171
- if ('HEAD' == req.method) return res.end();
172
170
  res.end('Cannot ' + req.method + ' ' + req.url);
173
171
  }
174
172
  return;
@@ -10,8 +10,7 @@
10
10
  * Module dependencies.
11
11
  */
12
12
 
13
- var qs = require('qs')
14
- , formidable = require('formidable');
13
+ var qs = require('qs');
15
14
 
16
15
  /**
17
16
  * Extract the mime type from the given request's
@@ -30,9 +29,10 @@ function mime(req) {
30
29
  /**
31
30
  * Parse request bodies.
32
31
  *
33
- * By default _application/json_, _application/x-www-form-urlencoded_,
34
- * and _multipart/form-data_ are supported, however you may map `connect.bodyParser.parse[contentType]`
35
- * to a function receiving `(req, options, callback)`.
32
+ * By default _application/json_ and _application/x-www-form-urlencoded_
33
+ * are supported, however you may map `connect.bodyParser.parse[contentType]`
34
+ * to a function of your choice to replace existing parsers, or implement
35
+ * one for other content-types.
36
36
  *
37
37
  * Examples:
38
38
  *
@@ -43,52 +43,36 @@ function mime(req) {
43
43
  * }
44
44
  * );
45
45
  *
46
+ * Since both _json_ and _x-www-form-urlencoded_ are supported by
47
+ * default, either of the following requests would result in the response
48
+ * of "viewing user tj".
49
+ *
46
50
  * $ curl -d 'user[name]=tj' http://localhost/
47
51
  * $ curl -d '{"user":{"name":"tj"}}' -H "Content-Type: application/json" http://localhost/
48
52
  *
49
- * Multipart req.files:
50
- *
51
- * As a security measure files are stored in a separate object, stored
52
- * as `req.files`. This prevents attacks that may potentially alter
53
- * filenames, and depending on the application gain access to restricted files.
54
- *
55
- * Multipart configuration:
56
- *
57
- * The `options` passed are provided to each parser function.
58
- * The _multipart/form-data_ parser merges these with formidable's
59
- * IncomingForm object, allowing you to tweak the upload directory,
60
- * size limits, etc. For example you may wish to retain the file extension
61
- * and change the upload directory:
62
- *
63
- * server.use(bodyParser({ uploadDir: '/www/mysite.com/uploads' }));
64
- *
65
- * View [node-formidable](https://github.com/felixge/node-formidable) for more information.
66
- *
67
- * If you wish to use formidable directly within your app, and do not
68
- * desire this behaviour for multipart requests simply remove the
69
- * parser:
70
- *
71
- * delete connect.bodyParser.parse['multipart/form-data'];
72
- *
73
- * Or
74
- *
75
- * delete express.bodyParser.parse['multipart/form-data'];
76
- *
77
- * @param {Object} options
78
53
  * @return {Function}
79
54
  * @api public
80
55
  */
81
56
 
82
- exports = module.exports = function bodyParser(options){
83
- options = options || {};
57
+ exports = module.exports = function bodyParser(){
84
58
  return function bodyParser(req, res, next) {
85
- if (req.body) return next();
86
- req.body = {};
87
-
88
59
  if ('GET' == req.method || 'HEAD' == req.method) return next();
89
60
  var parser = exports.parse[mime(req)];
90
- if (parser) {
91
- parser(req, options, next);
61
+ if (parser && !req.body) {
62
+ var data = '';
63
+ req.setEncoding('utf8');
64
+ req.on('data', function(chunk) { data += chunk; });
65
+ req.on('end', function(){
66
+ req.rawBody = data;
67
+ try {
68
+ req.body = data
69
+ ? parser(data)
70
+ : {};
71
+ } catch (err) {
72
+ return next(err);
73
+ }
74
+ next();
75
+ });
92
76
  } else {
93
77
  next();
94
78
  }
@@ -96,101 +80,13 @@ exports = module.exports = function bodyParser(options){
96
80
  };
97
81
 
98
82
  /**
99
- * Parsers.
100
- */
101
-
102
- exports.parse = {};
103
-
104
- /**
105
- * Parse application/x-www-form-urlencoded.
106
- */
107
-
108
- exports.parse['application/x-www-form-urlencoded'] = function(req, options, fn){
109
- var buf = '';
110
- req.setEncoding('utf8');
111
- req.on('data', function(chunk){ buf += chunk });
112
- req.on('end', function(){
113
- try {
114
- req.body = buf.length
115
- ? qs.parse(buf)
116
- : {};
117
- fn();
118
- } catch (err){
119
- fn(err);
120
- }
121
- });
122
- };
123
-
124
- /**
125
- * Parse application/json.
126
- */
127
-
128
- exports.parse['application/json'] = function(req, options, fn){
129
- var buf = '';
130
- req.setEncoding('utf8');
131
- req.on('data', function(chunk){ buf += chunk });
132
- req.on('end', function(){
133
- try {
134
- req.body = buf.length
135
- ? JSON.parse(buf)
136
- : {};
137
- fn();
138
- } catch (err){
139
- fn(err);
140
- }
141
- });
142
- };
143
-
144
- /**
145
- * Parse multipart/form-data.
83
+ * Supported decoders.
146
84
  *
147
- * TODO: make multiple support optional
148
- * TODO: revisit "error" flag if it's a formidable bug
85
+ * - application/x-www-form-urlencoded
86
+ * - application/json
149
87
  */
150
88
 
151
- exports.parse['multipart/form-data'] = function(req, options, fn){
152
- var form = new formidable.IncomingForm
153
- , data = {}
154
- , files = {}
155
- , done;
156
-
157
- Object.keys(options).forEach(function(key){
158
- form[key] = options[key];
159
- });
160
-
161
- function ondata(name, val, data){
162
- if (Array.isArray(data[name])) {
163
- data[name].push(val);
164
- } else if (data[name]) {
165
- data[name] = [data[name], val];
166
- } else {
167
- data[name] = val;
168
- }
169
- }
170
-
171
- form.on('field', function(name, val){
172
- ondata(name, val, data);
173
- });
174
-
175
- form.on('file', function(name, val){
176
- ondata(name, val, files);
177
- });
178
-
179
- form.on('error', function(err){
180
- fn(err);
181
- done = true;
182
- });
183
-
184
- form.on('end', function(){
185
- if (done) return;
186
- try {
187
- req.body = qs.parse(data);
188
- req.files = qs.parse(files);
189
- fn();
190
- } catch (err) {
191
- fn(err);
192
- }
193
- });
194
-
195
- form.parse(req);
89
+ exports.parse = {
90
+ 'application/x-www-form-urlencoded': qs.parse
91
+ , 'application/json': JSON.parse
196
92
  };