vulcan 0.2.5 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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
  };