vulcan 0.3.0 → 0.4.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/bin/vulcan +3 -1
- data/lib/vulcan/cli.rb +22 -3
- data/lib/vulcan/version.rb +1 -1
- data/server/bin/make +1 -3
- data/server/lib/spawner.js +9 -4
- data/server/node_modules/connect-form/node_modules/formidable/Readme.md +13 -2
- data/server/node_modules/connect-form/node_modules/formidable/lib/incoming_form.js +19 -7
- data/server/node_modules/connect-form/node_modules/formidable/lib/multipart_parser.js +12 -1
- data/server/node_modules/connect-form/node_modules/formidable/package.json +1 -1
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/file/plain.txt +1 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/no-filename/generic.http +13 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +0 -10
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +0 -9
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/js/no-filename.js +3 -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 +0 -1
- data/server/node_modules/cradle/package.json +3 -3
- data/server/node_modules/cradle/test/cache-test.js +6 -7
- data/server/node_modules/cradle/test/cradle-test.js +4 -5
- data/server/node_modules/cradle/test/response-test.js +5 -6
- data/server/node_modules/express/History.md +53 -1
- data/server/node_modules/express/Makefile +3 -9
- data/server/node_modules/express/Readme.md +3 -1
- data/server/node_modules/express/bin/express +65 -66
- data/server/node_modules/express/lib/express.js +1 -1
- data/server/node_modules/express/lib/request.js +23 -9
- data/server/node_modules/express/lib/response.js +3 -2
- data/server/node_modules/express/lib/utils.js +13 -0
- data/server/node_modules/express/lib/view/view.js +2 -1
- data/server/node_modules/express/lib/view.js +19 -16
- data/server/node_modules/express/node_modules/connect/lib/connect.js +1 -1
- data/server/node_modules/express/node_modules/connect/lib/http.js +2 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js +135 -31
- data/server/node_modules/express/node_modules/connect/lib/middleware/limit.js +5 -1
- 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 +26 -21
- data/server/node_modules/express/node_modules/connect/lib/middleware/staticCache.js +91 -38
- 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 +11 -4
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/Makefile +14 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md +286 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/TODO +3 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js +70 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js +43 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js +48 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/index.js +1 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js +61 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js +377 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js +3 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js +312 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js +25 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js +6 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/package.json +22 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js +19 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt +1 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt +1 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/no-filename/generic.http +13 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +3 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +26 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http +24 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +23 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +24 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +22 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +22 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +22 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js +3 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +21 -0
- 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 +72 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js +89 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js +24 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +80 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js +104 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js +715 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +50 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +45 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +72 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js +2 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js +63 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js +47 -0
- data/server/node_modules/express/node_modules/connect/package.json +7 -6
- data/server/node_modules/express/node_modules/connect/test.js +44 -31
- data/server/node_modules/express/node_modules/mime/mime.js +3 -3
- data/server/node_modules/express/node_modules/mime/package.json +21 -10
- data/server/node_modules/express/node_modules/mime/test.js +2 -3
- data/server/node_modules/express/node_modules/mime/{mime.types → types/mime.types} +0 -0
- data/server/node_modules/express/node_modules/mime/{node.types → types/node.types} +17 -0
- data/server/node_modules/express/node_modules/mkdirp/LICENSE +21 -0
- data/server/node_modules/express/node_modules/mkdirp/README.markdown +21 -0
- data/server/node_modules/express/node_modules/mkdirp/examples/pow.js +6 -0
- data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.orig +6 -0
- data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.rej +19 -0
- data/server/node_modules/express/node_modules/mkdirp/index.js +20 -0
- data/server/node_modules/express/node_modules/mkdirp/package.json +23 -0
- data/server/node_modules/express/node_modules/mkdirp/test/mkdirp.js +28 -0
- data/server/node_modules/express/node_modules/mkdirp/test/race.js +41 -0
- data/server/node_modules/express/node_modules/mkdirp/test/rel.js +32 -0
- data/server/node_modules/express/node_modules/qs/History.md +11 -0
- data/server/node_modules/express/node_modules/qs/Makefile +1 -3
- data/server/node_modules/express/node_modules/qs/Readme.md +2 -4
- data/server/node_modules/express/node_modules/qs/lib/querystring.js +100 -74
- data/server/node_modules/express/node_modules/qs/package.json +9 -2
- data/server/node_modules/express/node_modules/qs/test/mocha.opts +2 -0
- data/server/node_modules/express/node_modules/qs/test/{parse.test.js → parse.js} +1 -2
- data/server/node_modules/express/node_modules/qs/test/{stringify.test.js → stringify.js} +0 -0
- data/server/node_modules/express/package.json +9 -8
- data/server/node_modules/express/testing/foo/app.js +35 -0
- data/server/node_modules/express/testing/foo/package.json +9 -0
- data/server/node_modules/express/testing/foo/public/stylesheets/style.css +8 -0
- data/server/node_modules/express/testing/foo/routes/index.js +10 -0
- data/server/node_modules/express/testing/foo/views/index.jade +2 -0
- data/server/node_modules/express/testing/foo/views/layout.jade +6 -0
- data/server/node_modules/express/testing/index.js +43 -0
- data/server/node_modules/express/testing/public/test.txt +2971 -0
- data/server/node_modules/express/testing/views/page.html +1 -0
- data/server/node_modules/express/testing/views/page.jade +3 -0
- data/server/node_modules/express/testing/views/test.md +1 -0
- data/server/node_modules/express/testing/views/user/index.jade +1 -0
- data/server/node_modules/express/testing/views/user/list.jade +1 -0
- data/server/node_modules/node-uuid/README.md +166 -67
- data/server/node_modules/node-uuid/benchmark/README.md +53 -0
- data/server/node_modules/node-uuid/benchmark/bench.gnu +174 -0
- data/server/node_modules/node-uuid/benchmark/bench.sh +34 -0
- data/server/node_modules/node-uuid/{test → benchmark}/benchmark-native.c +0 -0
- data/server/node_modules/node-uuid/benchmark/benchmark.js +84 -0
- data/server/node_modules/node-uuid/package.json +5 -3
- data/server/node_modules/node-uuid/test/benchmark-native +0 -0
- data/server/node_modules/node-uuid/test/compare_v1.js +63 -0
- data/server/node_modules/node-uuid/test/test.html +3 -0
- data/server/node_modules/node-uuid/test/test.js +214 -57
- data/server/node_modules/node-uuid/uuid.js +225 -56
- data/server/node_modules/restler/README.md +20 -7
- data/server/node_modules/restler/bin/restler +1 -1
- data/server/node_modules/restler/lib/multipartform.js +9 -8
- data/server/node_modules/restler/lib/restler.js +64 -22
- data/server/node_modules/restler/package.json +2 -2
- data/server/node_modules/restler/test/restler.js +22 -2
- data/server/node_modules/restler/test/test_helper.js +20 -1
- data/server/package.json +1 -2
- data/server/web.js +30 -7
- metadata +90 -86
- data/server/node_modules/cradle/node_modules/vows/LICENSE +0 -20
- data/server/node_modules/cradle/node_modules/vows/Makefile +0 -7
- data/server/node_modules/cradle/node_modules/vows/README.md +0 -39
- data/server/node_modules/cradle/node_modules/vows/bin/vows +0 -515
- data/server/node_modules/cradle/node_modules/vows/lib/assert/error.js +0 -27
- data/server/node_modules/cradle/node_modules/vows/lib/assert/macros.js +0 -215
- data/server/node_modules/cradle/node_modules/vows/lib/assert/utils.js +0 -77
- data/server/node_modules/cradle/node_modules/vows/lib/vows/console.js +0 -131
- data/server/node_modules/cradle/node_modules/vows/lib/vows/context.js +0 -55
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/file.js +0 -29
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-foot.html +0 -2
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-head.html +0 -61
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-html.js +0 -54
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-json.js +0 -54
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-plain.js +0 -38
- data/server/node_modules/cradle/node_modules/vows/lib/vows/extras.js +0 -28
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/dot-matrix.js +0 -67
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/json.js +0 -16
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/silent.js +0 -8
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/spec.js +0 -44
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/watch.js +0 -39
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/xunit.js +0 -90
- data/server/node_modules/cradle/node_modules/vows/lib/vows/suite.js +0 -319
- data/server/node_modules/cradle/node_modules/vows/lib/vows.js +0 -193
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/LICENSE +0 -20
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/Makefile +0 -4
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/README.md +0 -72
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/lib/eyes.js +0 -233
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/package.json +0 -14
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/test/eyes-test.js +0 -55
- data/server/node_modules/cradle/node_modules/vows/package.json +0 -14
- data/server/node_modules/cradle/node_modules/vows/test/assert-test.js +0 -135
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/failing.js +0 -18
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/log.js +0 -18
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/passing.js +0 -17
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/stderr.js +0 -18
- data/server/node_modules/cradle/node_modules/vows/test/isolate-test.js +0 -140
- data/server/node_modules/cradle/node_modules/vows/test/testInherit.js +0 -133
- data/server/node_modules/cradle/node_modules/vows/test/vows-error-test.js +0 -51
- data/server/node_modules/cradle/node_modules/vows/test/vows-test.js +0 -374
- data/server/node_modules/express/node_modules/mime/index.js +0 -1
- data/server/node_modules/express/node_modules/qs/support/expresso/History.md +0 -128
- data/server/node_modules/express/node_modules/qs/support/expresso/Makefile +0 -53
- data/server/node_modules/express/node_modules/qs/support/expresso/Readme.md +0 -61
- data/server/node_modules/express/node_modules/qs/support/expresso/bin/expresso +0 -856
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/api.html +0 -1080
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.html +0 -377
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.md +0 -290
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/foot.html +0 -3
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/head.html +0 -42
- data/server/node_modules/express/node_modules/qs/support/expresso/lib/bar.js +0 -4
- data/server/node_modules/express/node_modules/qs/support/expresso/lib/foo.js +0 -16
- data/server/node_modules/express/node_modules/qs/support/expresso/package.json +0 -12
- data/server/node_modules/express/node_modules/qs/support/expresso/test/assert.test.js +0 -91
- data/server/node_modules/express/node_modules/qs/support/expresso/test/async.test.js +0 -12
- data/server/node_modules/express/node_modules/qs/support/expresso/test/bar.test.js +0 -13
- data/server/node_modules/express/node_modules/qs/support/expresso/test/foo.test.js +0 -14
- data/server/node_modules/express/node_modules/qs/support/expresso/test/http.test.js +0 -146
- data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/async.test.js +0 -39
- data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/http.test.js +0 -48
- data/server/node_modules/express/node_modules/qs/support/should/History.md +0 -22
- data/server/node_modules/express/node_modules/qs/support/should/Makefile +0 -6
- data/server/node_modules/express/node_modules/qs/support/should/Readme.md +0 -248
- data/server/node_modules/express/node_modules/qs/support/should/examples/runner.js +0 -53
- data/server/node_modules/express/node_modules/qs/support/should/index.js +0 -2
- data/server/node_modules/express/node_modules/qs/support/should/lib/eql.js +0 -91
- data/server/node_modules/express/node_modules/qs/support/should/lib/should.js +0 -548
- data/server/node_modules/express/node_modules/qs/support/should/package.json +0 -8
- data/server/node_modules/express/node_modules/qs/support/should/test/should.test.js +0 -358
- data/server/node_modules/node-uuid/test/benchmark.js +0 -27
|
@@ -5,13 +5,15 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
var fs = require('fs')
|
|
8
|
-
,
|
|
8
|
+
, os = require('os')
|
|
9
|
+
, exec = require('child_process').exec
|
|
10
|
+
, mkdirp = require('mkdirp');
|
|
9
11
|
|
|
10
12
|
/**
|
|
11
13
|
* Framework version.
|
|
12
14
|
*/
|
|
13
15
|
|
|
14
|
-
var version = '2.
|
|
16
|
+
var version = '2.5.5';
|
|
15
17
|
|
|
16
18
|
/**
|
|
17
19
|
* Add session support.
|
|
@@ -25,6 +27,14 @@ var sessions = false;
|
|
|
25
27
|
|
|
26
28
|
var cssEngine;
|
|
27
29
|
|
|
30
|
+
/**
|
|
31
|
+
* End-of-line code.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
var eol = os.platform
|
|
35
|
+
? ('win32' == os.platform() ? '\r\n' : '\n')
|
|
36
|
+
: '\n';
|
|
37
|
+
|
|
28
38
|
/**
|
|
29
39
|
* Template engine to utilize.
|
|
30
40
|
*/
|
|
@@ -42,11 +52,26 @@ var usage = ''
|
|
|
42
52
|
+ ' Options:\n'
|
|
43
53
|
+ ' -s, --sessions add session support\n'
|
|
44
54
|
+ ' -t, --template <engine> add template <engine> support (jade|ejs). default=jade\n'
|
|
45
|
-
+ ' -c, --css <engine> add stylesheet <engine> support (
|
|
55
|
+
+ ' -c, --css <engine> add stylesheet <engine> support (stylus). default=plain css\n'
|
|
46
56
|
+ ' -v, --version output framework version\n'
|
|
47
57
|
+ ' -h, --help output help information\n'
|
|
48
58
|
;
|
|
49
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Routes index template.
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
var index = [
|
|
65
|
+
''
|
|
66
|
+
, '/*'
|
|
67
|
+
, ' * GET home page.'
|
|
68
|
+
, ' */'
|
|
69
|
+
, ''
|
|
70
|
+
, 'exports.index = function(req, res){'
|
|
71
|
+
, ' res.render(\'index\', { title: \'Express\' })'
|
|
72
|
+
, '};'
|
|
73
|
+
].join(eol);
|
|
74
|
+
|
|
50
75
|
/**
|
|
51
76
|
* Jade layout template.
|
|
52
77
|
*/
|
|
@@ -58,7 +83,7 @@ var jadeLayout = [
|
|
|
58
83
|
, ' title= title'
|
|
59
84
|
, ' link(rel=\'stylesheet\', href=\'/stylesheets/style.css\')'
|
|
60
85
|
, ' body!= body'
|
|
61
|
-
].join(
|
|
86
|
+
].join(eol);
|
|
62
87
|
|
|
63
88
|
/**
|
|
64
89
|
* Jade index template.
|
|
@@ -67,7 +92,7 @@ var jadeLayout = [
|
|
|
67
92
|
var jadeIndex = [
|
|
68
93
|
'h1= title'
|
|
69
94
|
, 'p Welcome to #{title}'
|
|
70
|
-
].join(
|
|
95
|
+
].join(eol);
|
|
71
96
|
|
|
72
97
|
/**
|
|
73
98
|
* EJS layout template.
|
|
@@ -84,7 +109,7 @@ var ejsLayout = [
|
|
|
84
109
|
, ' <%- body %>'
|
|
85
110
|
, ' </body>'
|
|
86
111
|
, '</html>'
|
|
87
|
-
].join(
|
|
112
|
+
].join(eol);
|
|
88
113
|
|
|
89
114
|
/**
|
|
90
115
|
* EJS index template.
|
|
@@ -93,7 +118,7 @@ var ejsLayout = [
|
|
|
93
118
|
var ejsIndex = [
|
|
94
119
|
'<h1><%= title %></h1>'
|
|
95
120
|
, '<p>Welcome to <%= title %></p>'
|
|
96
|
-
].join(
|
|
121
|
+
].join(eol);
|
|
97
122
|
|
|
98
123
|
/**
|
|
99
124
|
* Default css template.
|
|
@@ -108,34 +133,7 @@ var css = [
|
|
|
108
133
|
, 'a {'
|
|
109
134
|
, ' color: #00B7FF;'
|
|
110
135
|
, '}'
|
|
111
|
-
].join(
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Default less template.
|
|
115
|
-
*/
|
|
116
|
-
|
|
117
|
-
var less = [
|
|
118
|
-
'body {'
|
|
119
|
-
, ' padding: 50px;'
|
|
120
|
-
, ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;'
|
|
121
|
-
, '}'
|
|
122
|
-
, ''
|
|
123
|
-
, 'a {'
|
|
124
|
-
, ' color: #00B7FF;'
|
|
125
|
-
, '}'
|
|
126
|
-
].join('\n');
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Default sass template.
|
|
130
|
-
*/
|
|
131
|
-
|
|
132
|
-
var sass = [
|
|
133
|
-
'body'
|
|
134
|
-
, ' :padding 50px'
|
|
135
|
-
, ' :font 14px "Lucida Grande", Helvetica, Arial, sans-serif'
|
|
136
|
-
, 'a'
|
|
137
|
-
, ' :color #00B7FF'
|
|
138
|
-
].join('\n');
|
|
136
|
+
].join(eol);
|
|
139
137
|
|
|
140
138
|
/**
|
|
141
139
|
* Default stylus template.
|
|
@@ -147,7 +145,7 @@ var stylus = [
|
|
|
147
145
|
, ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif'
|
|
148
146
|
, 'a'
|
|
149
147
|
, ' color: #00B7FF'
|
|
150
|
-
].join(
|
|
148
|
+
].join(eol);
|
|
151
149
|
|
|
152
150
|
/**
|
|
153
151
|
* App template.
|
|
@@ -159,7 +157,8 @@ var app = [
|
|
|
159
157
|
, ' * Module dependencies.'
|
|
160
158
|
, ' */'
|
|
161
159
|
, ''
|
|
162
|
-
, 'var express = require(\'express\')
|
|
160
|
+
, 'var express = require(\'express\')'
|
|
161
|
+
, ' , routes = require(\'./routes\')'
|
|
163
162
|
, ''
|
|
164
163
|
, 'var app = module.exports = express.createServer();'
|
|
165
164
|
, ''
|
|
@@ -184,16 +183,12 @@ var app = [
|
|
|
184
183
|
, ''
|
|
185
184
|
, '// Routes'
|
|
186
185
|
, ''
|
|
187
|
-
, 'app.get(\'/\',
|
|
188
|
-
, ' res.render(\'index\', {'
|
|
189
|
-
, ' title: \'Express\''
|
|
190
|
-
, ' });'
|
|
191
|
-
, '});'
|
|
186
|
+
, 'app.get(\'/\', routes.index);'
|
|
192
187
|
, ''
|
|
193
188
|
, 'app.listen(3000);'
|
|
194
189
|
, 'console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);'
|
|
195
190
|
, ''
|
|
196
|
-
].join(
|
|
191
|
+
].join(eol);
|
|
197
192
|
|
|
198
193
|
// Parse arguments
|
|
199
194
|
|
|
@@ -259,7 +254,16 @@ while (args.length) {
|
|
|
259
254
|
*/
|
|
260
255
|
|
|
261
256
|
function createApplicationAt(path) {
|
|
257
|
+
console.log();
|
|
258
|
+
process.on('exit', function(){
|
|
259
|
+
console.log();
|
|
260
|
+
console.log(' dont forget to install dependencies:');
|
|
261
|
+
console.log(' $ cd %s && npm install', path);
|
|
262
|
+
console.log();
|
|
263
|
+
});
|
|
264
|
+
|
|
262
265
|
mkdir(path, function(){
|
|
266
|
+
mkdir(path + '/public');
|
|
263
267
|
mkdir(path + '/public/javascripts');
|
|
264
268
|
mkdir(path + '/public/images');
|
|
265
269
|
mkdir(path + '/public/stylesheets', function(){
|
|
@@ -267,16 +271,15 @@ function createApplicationAt(path) {
|
|
|
267
271
|
case 'stylus':
|
|
268
272
|
write(path + '/public/stylesheets/style.styl', stylus);
|
|
269
273
|
break;
|
|
270
|
-
case 'less':
|
|
271
|
-
write(path + '/public/stylesheets/style.less', less);
|
|
272
|
-
break;
|
|
273
|
-
case 'sass':
|
|
274
|
-
write(path + '/public/stylesheets/style.sass', sass);
|
|
275
|
-
break;
|
|
276
274
|
default:
|
|
277
275
|
write(path + '/public/stylesheets/style.css', css);
|
|
278
276
|
}
|
|
279
277
|
});
|
|
278
|
+
|
|
279
|
+
mkdir(path + '/routes', function(){
|
|
280
|
+
write(path + '/routes/index.js', index);
|
|
281
|
+
});
|
|
282
|
+
|
|
280
283
|
mkdir(path + '/views', function(){
|
|
281
284
|
switch (templateEngine) {
|
|
282
285
|
case 'ejs':
|
|
@@ -292,12 +295,8 @@ function createApplicationAt(path) {
|
|
|
292
295
|
|
|
293
296
|
// CSS Engine support
|
|
294
297
|
switch (cssEngine) {
|
|
295
|
-
case 'sass':
|
|
296
|
-
case 'less':
|
|
297
|
-
app = app.replace('{css}', '\n app.use(express.compiler({ src: __dirname + \'/public\', enable: [\'' + cssEngine + '\'] }));');
|
|
298
|
-
break;
|
|
299
298
|
case 'stylus':
|
|
300
|
-
app = app.replace('{css}', '
|
|
299
|
+
app = app.replace('{css}', eol + ' app.use(require(\'stylus\').middleware({ src: __dirname + \'/public\' }));');
|
|
301
300
|
break;
|
|
302
301
|
default:
|
|
303
302
|
app = app.replace('{css}', '');
|
|
@@ -305,22 +304,22 @@ function createApplicationAt(path) {
|
|
|
305
304
|
|
|
306
305
|
// Session support
|
|
307
306
|
app = app.replace('{sess}', sessions
|
|
308
|
-
? '
|
|
307
|
+
? eol + ' app.use(express.cookieParser());' + eol + ' app.use(express.session({ secret: \'your secret here\' }));'
|
|
309
308
|
: '');
|
|
310
309
|
|
|
311
310
|
// Template support
|
|
312
311
|
app = app.replace(':TEMPLATE', templateEngine);
|
|
313
312
|
|
|
314
313
|
// package.json
|
|
315
|
-
var json = '{
|
|
316
|
-
json += ' "name": "application-name"
|
|
317
|
-
json += ' , "version": "0.0.1"
|
|
318
|
-
json += ' , "private": true
|
|
319
|
-
json += ' , "dependencies": {
|
|
320
|
-
json += ' "express": "' + version + '"
|
|
321
|
-
if (cssEngine) json += ' , "' + cssEngine + '": ">= 0.0.1"
|
|
322
|
-
if (templateEngine) json += ' , "' + templateEngine + '": ">= 0.0.1"
|
|
323
|
-
json += ' }
|
|
314
|
+
var json = '{' + eol;
|
|
315
|
+
json += ' "name": "application-name"' + eol;
|
|
316
|
+
json += ' , "version": "0.0.1"' + eol;
|
|
317
|
+
json += ' , "private": true' + eol;
|
|
318
|
+
json += ' , "dependencies": {' + eol;
|
|
319
|
+
json += ' "express": "' + version + '"' + eol;
|
|
320
|
+
if (cssEngine) json += ' , "' + cssEngine + '": ">= 0.0.1"' + eol;
|
|
321
|
+
if (templateEngine) json += ' , "' + templateEngine + '": ">= 0.0.1"' + eol;
|
|
322
|
+
json += ' }' + eol;
|
|
324
323
|
json += '}';
|
|
325
324
|
|
|
326
325
|
|
|
@@ -398,9 +397,9 @@ function prompt(msg, fn) {
|
|
|
398
397
|
*/
|
|
399
398
|
|
|
400
399
|
function mkdir(path, fn) {
|
|
401
|
-
|
|
400
|
+
mkdirp(path, 0755, function(err){
|
|
402
401
|
if (err) throw err;
|
|
403
|
-
console.log(' \
|
|
402
|
+
console.log(' \033[36mcreate\033[0m : ' + path);
|
|
404
403
|
fn && fn();
|
|
405
404
|
});
|
|
406
405
|
}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
var http = require('http')
|
|
13
13
|
, req = http.IncomingMessage.prototype
|
|
14
14
|
, utils = require('./utils')
|
|
15
|
+
, parse = require('url').parse
|
|
15
16
|
, mime = require('mime');
|
|
16
17
|
|
|
17
18
|
/**
|
|
@@ -87,6 +88,17 @@ req.get = function(field, param){
|
|
|
87
88
|
return RegExp.$1 || RegExp.$2;
|
|
88
89
|
};
|
|
89
90
|
|
|
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
|
+
|
|
90
102
|
/**
|
|
91
103
|
* Check if the _Accept_ header is present, and includes the given `type`.
|
|
92
104
|
*
|
|
@@ -217,10 +229,10 @@ req.flash = function(type, msg){
|
|
|
217
229
|
, args = arguments
|
|
218
230
|
, formatters = this.app.flashFormatters || {};
|
|
219
231
|
formatters.__proto__ = flashFormatters;
|
|
220
|
-
msg = utils.miniMarkdown(
|
|
232
|
+
msg = utils.miniMarkdown(msg);
|
|
221
233
|
msg = msg.replace(/%([a-zA-Z])/g, function(_, format){
|
|
222
234
|
var formatter = formatters[format];
|
|
223
|
-
if (formatter) return formatter(args[i++]);
|
|
235
|
+
if (formatter) return formatter(utils.escape(args[i++]));
|
|
224
236
|
});
|
|
225
237
|
return (msgs[type] = msgs[type] || []).push(msg);
|
|
226
238
|
} else if (type) {
|
|
@@ -280,16 +292,18 @@ req.flash = function(type, msg){
|
|
|
280
292
|
req.is = function(type){
|
|
281
293
|
var fn = this.app.is(type);
|
|
282
294
|
if (fn) return fn(this);
|
|
283
|
-
var
|
|
284
|
-
if (!
|
|
295
|
+
var ct = this.headers['content-type'];
|
|
296
|
+
if (!ct) return false;
|
|
297
|
+
ct = ct.split(';')[0];
|
|
285
298
|
if (!~type.indexOf('/')) type = mime.lookup(type);
|
|
286
299
|
if (~type.indexOf('*')) {
|
|
287
|
-
type = type.split('/')
|
|
288
|
-
|
|
289
|
-
if ('*' == type[0] && type[1] ==
|
|
290
|
-
if ('*' == type[1] && type[0] ==
|
|
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;
|
|
291
305
|
}
|
|
292
|
-
return !! ~
|
|
306
|
+
return !! ~ct.indexOf(type);
|
|
293
307
|
};
|
|
294
308
|
|
|
295
309
|
// 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 ? null : body);
|
|
109
109
|
return this;
|
|
110
110
|
};
|
|
111
111
|
|
|
@@ -376,6 +376,7 @@ 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
|
|
379
380
|
, body;
|
|
380
381
|
|
|
381
382
|
// Setup redirect map
|
|
@@ -418,7 +419,7 @@ res.redirect = function(url, status){
|
|
|
418
419
|
// Respond
|
|
419
420
|
this.statusCode = status;
|
|
420
421
|
this.header('Location', url);
|
|
421
|
-
this.end(body);
|
|
422
|
+
this.end(head ? null : body);
|
|
422
423
|
};
|
|
423
424
|
|
|
424
425
|
/**
|
|
@@ -5,6 +5,19 @@
|
|
|
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
|
+
|
|
8
21
|
/**
|
|
9
22
|
* Merge object `b` with `a` giving precedence to
|
|
10
23
|
* values in object `a`.
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
var path = require('path')
|
|
13
|
+
, utils = require('../utils')
|
|
13
14
|
, extname = path.extname
|
|
14
15
|
, dirname = path.dirname
|
|
15
16
|
, basename = path.basename
|
|
@@ -99,7 +100,7 @@ View.prototype.resolvePath = function(){
|
|
|
99
100
|
// Implicit engine
|
|
100
101
|
if (!~this.basename.indexOf('.')) path += this.extension;
|
|
101
102
|
// Absolute
|
|
102
|
-
if (
|
|
103
|
+
if (utils.isAbsolute(path)) return path;
|
|
103
104
|
// Relative to parent
|
|
104
105
|
if (this.relative && this.parent) return this.parent.dirname + '/' + path;
|
|
105
106
|
// Relative to root
|
|
@@ -47,7 +47,10 @@ exports.register = View.register;
|
|
|
47
47
|
*/
|
|
48
48
|
|
|
49
49
|
exports.compile = function(view, cache, cid, options){
|
|
50
|
-
if (cache && cid && cache[cid])
|
|
50
|
+
if (cache && cid && cache[cid]){
|
|
51
|
+
options.filename = cache[cid].path;
|
|
52
|
+
return cache[cid];
|
|
53
|
+
}
|
|
51
54
|
|
|
52
55
|
// lookup
|
|
53
56
|
view = exports.lookup(view, options);
|
|
@@ -58,13 +61,13 @@ exports.compile = function(view, cache, cid, options){
|
|
|
58
61
|
var err = new Error('failed to locate view "' + view.original.view + '"');
|
|
59
62
|
err.view = view.original;
|
|
60
63
|
throw err;
|
|
61
|
-
}
|
|
64
|
+
}
|
|
62
65
|
|
|
63
66
|
// compile
|
|
64
67
|
options.filename = view.path;
|
|
65
68
|
view.fn = view.templateEngine.compile(view.contents, options);
|
|
66
69
|
cache[cid] = view;
|
|
67
|
-
|
|
70
|
+
|
|
68
71
|
return view;
|
|
69
72
|
};
|
|
70
73
|
|
|
@@ -81,11 +84,11 @@ exports.compile = function(view, cache, cid, options){
|
|
|
81
84
|
*
|
|
82
85
|
* Lookup:
|
|
83
86
|
*
|
|
84
|
-
* - partial `_<name>`
|
|
85
|
-
* - any `<name>/index`
|
|
86
|
-
* - non-layout `../<name>/index`
|
|
87
|
-
* - any `<root>/<name>`
|
|
88
|
-
* - partial `<root>/_<name>`
|
|
87
|
+
* - partial `_<name>`
|
|
88
|
+
* - any `<name>/index`
|
|
89
|
+
* - non-layout `../<name>/index`
|
|
90
|
+
* - any `<root>/<name>`
|
|
91
|
+
* - partial `<root>/_<name>`
|
|
89
92
|
*
|
|
90
93
|
* @param {String} view
|
|
91
94
|
* @param {Object} options
|
|
@@ -161,7 +164,7 @@ function renderPartial(res, view, options, parentLocals, parent){
|
|
|
161
164
|
|
|
162
165
|
// Inherit locals from parent
|
|
163
166
|
union(options, parentLocals);
|
|
164
|
-
|
|
167
|
+
|
|
165
168
|
// Merge locals
|
|
166
169
|
if (locals) merge(options, locals);
|
|
167
170
|
|
|
@@ -202,7 +205,7 @@ function renderPartial(res, view, options, parentLocals, parent){
|
|
|
202
205
|
options.lastInCollection = i == len - 1;
|
|
203
206
|
object = val;
|
|
204
207
|
buf += render();
|
|
205
|
-
}
|
|
208
|
+
}
|
|
206
209
|
} else {
|
|
207
210
|
keys = Object.keys(collection);
|
|
208
211
|
len = keys.length;
|
|
@@ -227,20 +230,20 @@ function renderPartial(res, view, options, parentLocals, parent){
|
|
|
227
230
|
};
|
|
228
231
|
|
|
229
232
|
/**
|
|
230
|
-
* Render `view` partial with the given `options`. Optionally a
|
|
233
|
+
* Render `view` partial with the given `options`. Optionally a
|
|
231
234
|
* callback `fn(err, str)` may be passed instead of writing to
|
|
232
235
|
* the socket.
|
|
233
236
|
*
|
|
234
237
|
* Options:
|
|
235
238
|
*
|
|
236
|
-
* - `object` Single object with name derived from the view (unless `as` is present)
|
|
239
|
+
* - `object` Single object with name derived from the view (unless `as` is present)
|
|
237
240
|
*
|
|
238
241
|
* - `as` Variable name for each `collection` value, defaults to the view name.
|
|
239
242
|
* * as: 'something' will add the `something` local variable
|
|
240
243
|
* * as: this will use the collection value as the template context
|
|
241
244
|
* * as: global will merge the collection value's properties with `locals`
|
|
242
245
|
*
|
|
243
|
-
* - `collection` Array of objects, the name is derived from the view name itself.
|
|
246
|
+
* - `collection` Array of objects, the name is derived from the view name itself.
|
|
244
247
|
* For example _video.html_ will have a object _video_ available to it.
|
|
245
248
|
*
|
|
246
249
|
* @param {String} view
|
|
@@ -294,7 +297,7 @@ res.partial = function(view, options, fn){
|
|
|
294
297
|
* automatically, however otherwise a response of _200_ and _text/html_ is given.
|
|
295
298
|
*
|
|
296
299
|
* Options:
|
|
297
|
-
*
|
|
300
|
+
*
|
|
298
301
|
* - `scope` Template evaluation context (the value of `this`)
|
|
299
302
|
* - `debug` Output debugging information
|
|
300
303
|
* - `status` Response status code
|
|
@@ -430,7 +433,7 @@ res._render = function(view, opts, fn, parent, sub){
|
|
|
430
433
|
// partial return
|
|
431
434
|
} else if (partial) {
|
|
432
435
|
return str;
|
|
433
|
-
// render complete, and
|
|
436
|
+
// render complete, and
|
|
434
437
|
// callback given
|
|
435
438
|
} else if (fn) {
|
|
436
439
|
fn(null, str);
|
|
@@ -454,4 +457,4 @@ function hintAtViewPaths(view, options) {
|
|
|
454
457
|
console.error(' - %s', path);
|
|
455
458
|
});
|
|
456
459
|
console.error();
|
|
457
|
-
}
|
|
460
|
+
}
|
|
@@ -163,10 +163,12 @@ 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();
|
|
166
167
|
res.end(msg);
|
|
167
168
|
} else {
|
|
168
169
|
res.statusCode = 404;
|
|
169
170
|
res.setHeader('Content-Type', 'text/plain');
|
|
171
|
+
if ('HEAD' == req.method) return res.end();
|
|
170
172
|
res.end('Cannot ' + req.method + ' ' + req.url);
|
|
171
173
|
}
|
|
172
174
|
return;
|