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