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.
- data/README.md +1 -80
- data/lib/vulcan/cli.rb +12 -33
- data/lib/vulcan/version.rb +1 -1
- data/server/bin/make +3 -1
- data/server/lib/spawner.js +4 -9
- data/server/node_modules/connect-form/node_modules/formidable/Readme.md +2 -13
- data/server/node_modules/connect-form/node_modules/formidable/lib/incoming_form.js +7 -19
- data/server/node_modules/connect-form/node_modules/formidable/lib/multipart_parser.js +1 -12
- data/server/node_modules/connect-form/node_modules/formidable/package.json +1 -1
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +10 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +9 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +1 -1
- data/server/node_modules/cradle/lib/cradle.js +1 -0
- data/server/node_modules/cradle/node_modules/vows/LICENSE +20 -0
- data/server/node_modules/cradle/node_modules/vows/Makefile +7 -0
- data/server/node_modules/cradle/node_modules/vows/README.md +39 -0
- data/server/node_modules/cradle/node_modules/vows/bin/vows +515 -0
- data/server/node_modules/cradle/node_modules/vows/lib/assert/error.js +27 -0
- data/server/node_modules/cradle/node_modules/vows/lib/assert/macros.js +215 -0
- data/server/node_modules/cradle/node_modules/vows/lib/assert/utils.js +77 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows.js +193 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/console.js +131 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/context.js +55 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/file.js +29 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-foot.html +2 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-head.html +61 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-html.js +54 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-json.js +54 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-plain.js +38 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/extras.js +28 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/dot-matrix.js +67 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/json.js +16 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/silent.js +8 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/spec.js +44 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/watch.js +39 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/xunit.js +90 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/suite.js +319 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/LICENSE +20 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/Makefile +4 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/README.md +72 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/lib/eyes.js +233 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/package.json +14 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/test/eyes-test.js +55 -0
- data/server/node_modules/cradle/node_modules/vows/package.json +14 -0
- data/server/node_modules/cradle/node_modules/vows/test/assert-test.js +135 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/failing.js +18 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/log.js +18 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/passing.js +17 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/stderr.js +18 -0
- data/server/node_modules/cradle/node_modules/vows/test/isolate-test.js +140 -0
- data/server/node_modules/cradle/node_modules/vows/test/testInherit.js +133 -0
- data/server/node_modules/cradle/node_modules/vows/test/vows-error-test.js +51 -0
- data/server/node_modules/cradle/node_modules/vows/test/vows-test.js +374 -0
- data/server/node_modules/cradle/package.json +3 -3
- data/server/node_modules/cradle/test/cache-test.js +7 -6
- data/server/node_modules/cradle/test/cradle-test.js +5 -4
- data/server/node_modules/cradle/test/response-test.js +6 -5
- data/server/node_modules/express/History.md +1 -53
- data/server/node_modules/express/Makefile +9 -3
- data/server/node_modules/express/Readme.md +1 -3
- data/server/node_modules/express/bin/express +66 -65
- data/server/node_modules/express/lib/express.js +1 -1
- data/server/node_modules/express/lib/request.js +9 -23
- data/server/node_modules/express/lib/response.js +2 -3
- data/server/node_modules/express/lib/utils.js +0 -13
- data/server/node_modules/express/lib/view.js +16 -19
- data/server/node_modules/express/lib/view/view.js +1 -2
- data/server/node_modules/express/node_modules/connect/lib/connect.js +1 -1
- data/server/node_modules/express/node_modules/connect/lib/http.js +0 -2
- data/server/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js +31 -135
- data/server/node_modules/express/node_modules/connect/lib/middleware/limit.js +1 -5
- data/server/node_modules/express/node_modules/connect/lib/middleware/session.js +2 -2
- data/server/node_modules/express/node_modules/connect/lib/middleware/static.js +21 -26
- data/server/node_modules/express/node_modules/connect/lib/middleware/staticCache.js +38 -91
- data/server/node_modules/express/node_modules/connect/lib/middleware/vhost.js +1 -1
- data/server/node_modules/express/node_modules/connect/lib/utils.js +4 -11
- data/server/node_modules/express/node_modules/connect/package.json +6 -7
- data/server/node_modules/express/node_modules/connect/test.js +31 -44
- data/server/node_modules/express/node_modules/mime/index.js +1 -0
- data/server/node_modules/express/node_modules/mime/mime.js +3 -3
- data/server/node_modules/express/node_modules/mime/{types/mime.types → mime.types} +0 -0
- data/server/node_modules/express/node_modules/mime/{types/node.types → node.types} +0 -17
- data/server/node_modules/express/node_modules/mime/package.json +10 -21
- data/server/node_modules/express/node_modules/mime/test.js +3 -2
- data/server/node_modules/express/node_modules/qs/History.md +0 -11
- data/server/node_modules/express/node_modules/qs/Makefile +3 -1
- data/server/node_modules/express/node_modules/qs/Readme.md +4 -2
- data/server/node_modules/express/node_modules/qs/lib/querystring.js +74 -100
- data/server/node_modules/express/node_modules/qs/package.json +2 -9
- data/server/node_modules/express/node_modules/qs/support/expresso/History.md +128 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/Makefile +53 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/Readme.md +61 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/bin/expresso +856 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/api.html +1080 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.html +377 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.md +290 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/foot.html +3 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/head.html +42 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/lib/bar.js +4 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/lib/foo.js +16 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/package.json +12 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/assert.test.js +91 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/async.test.js +12 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/bar.test.js +13 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/foo.test.js +14 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/http.test.js +146 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/async.test.js +39 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/http.test.js +48 -0
- data/server/node_modules/express/node_modules/qs/support/should/History.md +22 -0
- data/server/node_modules/express/node_modules/qs/support/should/Makefile +6 -0
- data/server/node_modules/express/node_modules/qs/support/should/Readme.md +248 -0
- data/server/node_modules/express/node_modules/qs/support/should/examples/runner.js +53 -0
- data/server/node_modules/express/node_modules/qs/support/should/index.js +2 -0
- data/server/node_modules/express/node_modules/qs/support/should/lib/eql.js +91 -0
- data/server/node_modules/express/node_modules/qs/support/should/lib/should.js +548 -0
- data/server/node_modules/express/node_modules/qs/support/should/package.json +8 -0
- data/server/node_modules/express/node_modules/qs/support/should/test/should.test.js +358 -0
- data/server/node_modules/express/node_modules/qs/test/{parse.js → parse.test.js} +2 -1
- data/server/node_modules/express/node_modules/qs/test/{stringify.js → stringify.test.js} +0 -0
- data/server/node_modules/express/package.json +8 -9
- data/server/node_modules/node-uuid/README.md +67 -166
- data/server/node_modules/node-uuid/package.json +3 -5
- data/server/node_modules/node-uuid/{benchmark → test}/benchmark-native.c +0 -0
- data/server/node_modules/node-uuid/test/benchmark.js +27 -0
- data/server/node_modules/node-uuid/test/test.html +0 -3
- data/server/node_modules/node-uuid/test/test.js +57 -214
- data/server/node_modules/node-uuid/uuid.js +56 -225
- data/server/node_modules/restler/README.md +7 -20
- data/server/node_modules/restler/bin/restler +1 -1
- data/server/node_modules/restler/lib/multipartform.js +8 -9
- data/server/node_modules/restler/lib/restler.js +22 -64
- data/server/node_modules/restler/package.json +2 -2
- data/server/node_modules/restler/test/restler.js +2 -22
- data/server/node_modules/restler/test/test_helper.js +1 -20
- data/server/package.json +10 -10
- data/server/web.js +7 -30
- metadata +96 -89
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/file/plain.txt +0 -1
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/no-filename/generic.http +0 -13
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/js/no-filename.js +0 -3
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/Makefile +0 -14
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md +0 -286
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/TODO +0 -3
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js +0 -70
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js +0 -43
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js +0 -48
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/index.js +0 -1
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js +0 -61
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js +0 -377
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js +0 -3
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js +0 -312
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js +0 -25
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js +0 -6
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/package.json +0 -22
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js +0 -19
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt +0 -1
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt +0 -1
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/no-filename/generic.http +0 -13
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +0 -3
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +0 -26
- 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
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +0 -23
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +0 -24
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +0 -22
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +0 -22
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +0 -22
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js +0 -3
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +0 -21
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multi_video.upload +0 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js +0 -72
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js +0 -89
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js +0 -24
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +0 -80
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js +0 -104
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js +0 -715
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +0 -50
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +0 -45
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +0 -72
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js +0 -2
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js +0 -63
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js +0 -47
- data/server/node_modules/express/node_modules/mkdirp/LICENSE +0 -21
- data/server/node_modules/express/node_modules/mkdirp/README.markdown +0 -21
- data/server/node_modules/express/node_modules/mkdirp/examples/pow.js +0 -6
- data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.orig +0 -6
- data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.rej +0 -19
- data/server/node_modules/express/node_modules/mkdirp/index.js +0 -20
- data/server/node_modules/express/node_modules/mkdirp/package.json +0 -23
- data/server/node_modules/express/node_modules/mkdirp/test/mkdirp.js +0 -28
- data/server/node_modules/express/node_modules/mkdirp/test/race.js +0 -41
- data/server/node_modules/express/node_modules/mkdirp/test/rel.js +0 -32
- data/server/node_modules/express/node_modules/qs/test/mocha.opts +0 -2
- data/server/node_modules/express/testing/foo/app.js +0 -35
- data/server/node_modules/express/testing/foo/package.json +0 -9
- data/server/node_modules/express/testing/foo/public/stylesheets/style.css +0 -8
- data/server/node_modules/express/testing/foo/routes/index.js +0 -10
- data/server/node_modules/express/testing/foo/views/index.jade +0 -2
- data/server/node_modules/express/testing/foo/views/layout.jade +0 -6
- data/server/node_modules/express/testing/index.js +0 -43
- data/server/node_modules/express/testing/public/test.txt +0 -2971
- data/server/node_modules/express/testing/views/page.html +0 -1
- data/server/node_modules/express/testing/views/page.jade +0 -3
- data/server/node_modules/express/testing/views/test.md +0 -1
- data/server/node_modules/express/testing/views/user/index.jade +0 -1
- data/server/node_modules/express/testing/views/user/list.jade +0 -1
- data/server/node_modules/node-uuid/benchmark/README.md +0 -53
- data/server/node_modules/node-uuid/benchmark/bench.gnu +0 -174
- data/server/node_modules/node-uuid/benchmark/bench.sh +0 -34
- data/server/node_modules/node-uuid/benchmark/benchmark.js +0 -84
- data/server/node_modules/node-uuid/test/benchmark-native +0 -0
- data/server/node_modules/node-uuid/test/compare_v1.js +0 -63
|
@@ -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(
|
|
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
|
|
296
|
-
if (!
|
|
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
|
-
|
|
302
|
-
if ('*' == type[0] && type[1] ==
|
|
303
|
-
if ('*' == type[1] && type[0] ==
|
|
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 !! ~
|
|
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 ?
|
|
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(
|
|
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 (
|
|
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
|
|
@@ -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_
|
|
34
|
-
*
|
|
35
|
-
* to a function
|
|
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(
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
148
|
-
*
|
|
85
|
+
* - application/x-www-form-urlencoded
|
|
86
|
+
* - application/json
|
|
149
87
|
*/
|
|
150
88
|
|
|
151
|
-
exports.parse
|
|
152
|
-
|
|
153
|
-
|
|
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
|
};
|