Skip to content

Commit 424f7ca

Browse files
committed
Merge pull request #114 from sourcejs/0.5.0-rc
0.5.0 release
2 parents bd2baa8 + d4b0615 commit 424f7ca

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+1748
-773
lines changed

Gruntfile.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,7 @@ module.exports = function(grunt) {
285285
var spec = grunt.option('spec');
286286

287287
if (spec) {
288+
// if custom mask set - `grunt test --spec=test/specs/middleware/**/*.js`
288289
grunt.config.set('mochaTest.test.src', [spec]);
289290
grunt.task.run('mochaTest');
290291
} else {

app.js

Lines changed: 54 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
var express = require('express');
88
var colors = require('colors');
99
var fs = require('fs');
10-
var deepExtend = require('deep-extend');
1110
var loadOptions = require('./core/loadOptions');
1211
var commander = require('commander');
1312
var bodyParser = require('body-parser');
@@ -51,6 +50,19 @@ global.app.use(require('compression')());
5150

5251
// Cookies
5352
global.app.use(require('cookie-parser')());
53+
global.app.use(require('express-session')({
54+
secret: (function() {
55+
var d = new Date().getTime();
56+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
57+
var r = (d + Math.random() * 16) % 16 | 0;
58+
d = Math.floor(d / 16);
59+
return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
60+
});
61+
})(),
62+
resave: false,
63+
saveUninitialized: true
64+
}));
65+
5466
app.use(function (req, res, next) {
5567
res.cookie('source-mode', global.MODE, { maxAge: 3600000, httpOnly: false });
5668

@@ -71,48 +83,42 @@ app.use(bodyParser.json());
7183

7284
/* Middlewares */
7385

74-
// LESS processing
75-
if (global.MODE === 'development') {
76-
var less = require('less-middleware');
77-
78-
var lessOpts = {
79-
src: global.app.get('user')
80-
};
81-
82-
deepExtend(lessOpts, global.opts.core.less);
83-
84-
global.app.use(less(lessOpts));
85-
}
86-
86+
// Auth initializing
87+
var auth = require('./core/auth')(app);
88+
app.use(auth.everyauth.middleware());
8789

8890
// Clarify
8991
global.app.use(require('./core/middleware/clarify'));
9092

91-
9293
// File tree module
93-
fileTree = require('./core/file-tree');
94-
global.app.use(function(req, res, next){
94+
var fileTree = require('./core/file-tree');
9595

96-
// Updating navigation on each main page visit
97-
if(global.MODE !== 'presentation' && req.url === "/") {
98-
// Making this async
99-
fileTree.scan();
100-
}
96+
// Run file tree scan on start
97+
fileTree.scan();
98+
99+
// Run file tree scan on main page visit
100+
if (global.opts.core.fileTree.mainPageTrigger && global.MODE !== 'presentation') {
101+
global.app.use(function(req, res, next){
102+
103+
// Updating navigation on each main page visit
104+
if (req.url === "/") fileTree.scan();
105+
106+
next();
107+
});
108+
}
101109

102-
next();
103-
});
104110

105111
// Middleware that loads spec content
106112
var read = require("./core/middleware/read");
107-
global.app.use(read.handleIndex);
108113
global.app.use(read.process);
109114

115+
// Markdown
116+
global.app.use(require("./core/middleware/md").process);
117+
global.app.use(require("./core/middleware/mdTag").process);
118+
110119
// Load user defined middleware, that processes spec content
111120
require("./core/middleware/userMiddleware");
112121

113-
// Basic markdown support
114-
global.app.use(require("./core/middleware/markdown").process);
115-
116122
// Middleware that wraps spec with Source template
117123
global.app.use(require("./core/middleware/wrap").process);
118124

@@ -142,6 +148,13 @@ try {
142148
// User additional functionality
143149
require(global.app.get('user') + "/core/app.js");
144150
} catch(e){}
151+
152+
153+
// Watchers
154+
if (global.opts.core.watch.enabled && global.MODE !== 'presentation') {
155+
require('./core/watchNewSpecs');
156+
}
157+
145158
/* /Includes */
146159

147160

@@ -153,10 +166,9 @@ var headerFooter = require('./core/headerFooter');
153166
global.app.use(express.static(global.app.get('user')));
154167

155168
// Page 404
156-
global.app.use(function(req, res, next){
169+
global.app.use(function(req, res){
157170

158171
if (req.accepts('html')) {
159-
160172
var headerFooterHTML = headerFooter.getHeaderAndFooter();
161173
res.status(404).render(__dirname + '/core/views/404.ejs', {
162174
header: headerFooterHTML.header,
@@ -171,26 +183,23 @@ global.app.use(function(req, res, next){
171183

172184
/* Error handling */
173185
var logErrors = function(err, req, res, next) {
174-
log.error(("Error: " + err.stack).red);
175-
next(err);
176-
};
186+
if (err) {
187+
var url = req.url || '';
177188

178-
var clientErrorHandler = function(err, req, res, next) {
179-
if (req.xhr) {
180-
res.send(500, { error: 'Something blew up!' });
189+
log.debug(req.method, req.headers);
190+
log.error(url.red, ('Error: ' + err.stack).red);
191+
192+
if (req.xhr) {
193+
res.status(500).json({msg: 'Server error'});
194+
} else {
195+
res.status(500).send('Server error');
196+
}
181197
} else {
182-
next(err);
198+
next();
183199
}
184200
};
185201

186-
var errorHandler = function(err, req, res, next) {
187-
res.status(500);
188-
res.render('error', { error: err });
189-
};
190-
191202
global.app.use(logErrors);
192-
global.app.use(clientErrorHandler);
193-
global.app.use(errorHandler);
194203
/* /Error handling */
195204

196205

@@ -202,5 +211,5 @@ if (!module.parent) {
202211
global.app.listen(port);
203212
var portString = port.toString();
204213

205-
log.info('[SOURCEJS] launched on http://localhost:'.blue + portString.red + ' in '.blue + MODE.blue + ' mode...'.blue);
214+
log.info('[SOURCEJS] launched on http://127.0.0.1:'.blue + portString.red + ' in '.blue + MODE.blue + ' mode...'.blue);
206215
}

assets/css/defaults.less

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
@import url('project/modal.less');
3232
@import url('project/autocomplete.less');
3333
@import url('project/clarify-in-spec.less');
34+
@import url('project/auth.less');
3435

3536
//Cosmetic
3637
@import url('cosmetic/highlights.less');

assets/css/project/auth.less

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
.source_login {
2+
display: inline-block;
3+
height: 40px;
4+
float: right;
5+
6+
margin-top: 2px;
7+
vertical-align: top;
8+
}
9+
10+
.source_login-avatar {
11+
width: 25px;
12+
height: 25px;
13+
14+
border-radius: 50%;
15+
border: 1px solid #FFF;
16+
cursor: pointer;
17+
}
18+
19+
.source_login-avatar.anonymous {
20+
border: 1px solid #333;
21+
}
22+
23+
.source_login-button {
24+
display: inline-block;
25+
26+
color: #999;
27+
text-decoration: none;
28+
line-height: 1;
29+
cursor: pointer;
30+
vertical-align: top;
31+
margin: 5px 0px 0px 10px;
32+
}
33+
.source_login-button:hover {
34+
color: #FFF
35+
}

assets/css/project/info.less

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
/* Info blocks
22
---------------------------------------------------------------------------------- */
33

4+
// !important next to rules are intended solution till we will use shadow DOM or iframes for source_examples
5+
46
.source_data,
57
.source_doc,
68
.source_note,
79
.source_warn,
810
.source_info {
911
display: block;
1012
position: relative;
11-
box-sizing: content-box;
13+
box-sizing: content-box !important;
1214

13-
border-radius: 10px;
15+
border-radius: @border-radius !important;
16+
17+
.source_section & {
18+
font-size: @fz-size-s !important;
19+
}
1420

1521
&:empty {
1622
display: none;
@@ -25,7 +31,6 @@
2531
}
2632
}
2733

28-
body p.source_info, /* cascade for weight */
2934
.source_info {
3035
background: #FFF6DD !important;
3136

@@ -39,7 +44,6 @@ body p.source_info, /* cascade for weight */
3944
}
4045
}
4146

42-
body p.source_warn, /* cascade for weight */
4347
.source_warn {
4448
margin: 20px @layout_spec--inner-margin-right 20px 0 !important;
4549
padding: 10px 10px 10px 35px !important;
@@ -51,20 +55,17 @@ body p.source_warn, /* cascade for weight */
5155
}
5256
}
5357

54-
body p.source_note, /* cascade for weight */
5558
.source_note {
5659
margin: 20px @layout_spec--inner-margin-right 20px 0 !important;
5760
padding: 10px 10px 10px 35px !important;
5861

5962
background: #DCF1FA url(/source/assets/i/note.png) no-repeat 13px 13px !important;
6063

61-
6264
.source_section & {
6365
margin-right: 0 !important;
6466
}
6567
}
6668

67-
body p.source_doc, /* cascade for weight */
6869
.source_doc {
6970
margin: 20px @layout_spec--inner-margin-right 20px 0 !important;
7071
padding: 10px 25px !important;
@@ -77,7 +78,6 @@ body p.source_doc, /* cascade for weight */
7778
}
7879
}
7980

80-
body p.source_data, /* cascade for weight */
8181
.source_data {
8282
margin: 20px @layout_spec--inner-margin-right 20px 0 !important;
8383
padding: 10px 25px !important;

assets/css/reset.less

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,11 +180,14 @@ body {
180180
});
181181

182182
.source-section-reset(ol, {
183-
margin: 15px 0 15px 5px;
183+
margin: 25px 0 25px 22px;
184184
});
185185

186186
.source-section-reset(~'ol > li', {
187-
list-style-type: decimal !important;
187+
font-family: @font-family-main;
188+
font-size: @fz-size-m;
189+
line-height: 1.5;
190+
list-style: outside decimal;
188191
});
189192

190193
//a {

assets/css/variables.less

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313

1414
/* Layout
1515
-------------------------------------------------- */
16+
@border-radius: 10px;
17+
1618
@layout_col-main--padding: 25px;
1719
@layout_col-main--max-width: @max-width - @layout_col-main--padding * 2;
1820

@@ -93,26 +95,29 @@
9395
* @reset - Boolean enable of disable reset (enabled by default) [true | false]
9496
*/
9597
.source-only(@selector, @rules, @reset: true) {
96-
.source_section > *@{notCleaningClasses} > @{selector},
9798
.source_section > *@{notCleaningClasses} > @{selector},
9899
.source_section > *@{notCleaningClasses} > *@{notCleaningClasses} > @{selector},
99100
.source_section > *@{notCleaningClasses} > *@{notCleaningClasses} > *@{notCleaningClasses} > @{selector},
100101
.source_section > *@{notCleaningClasses} > *@{notCleaningClasses} > *@{notCleaningClasses} > *@{notCleaningClasses} > @{selector},
102+
101103
.source_info > @{selector},
102104
.source_info > *@{notCleaningClasses} > @{selector},
103105
.source_info > *@{notCleaningClasses} > *@{notCleaningClasses} > @{selector},
104106
.source_info > *@{notCleaningClasses} > *@{notCleaningClasses} > *@{notCleaningClasses} > @{selector},
105107
.source_info > *@{notCleaningClasses} > *@{notCleaningClasses} > *@{notCleaningClasses} > *@{notCleaningClasses} > @{selector},
108+
106109
.source_doc > @{selector},
107110
.source_doc > *@{notCleaningClasses} > @{selector},
108111
.source_doc > *@{notCleaningClasses} > *@{notCleaningClasses} > @{selector},
109112
.source_doc > *@{notCleaningClasses} > *@{notCleaningClasses} > *@{notCleaningClasses} > @{selector},
110113
.source_doc > *@{notCleaningClasses} > *@{notCleaningClasses} > *@{notCleaningClasses} > *@{notCleaningClasses} > @{selector},
114+
111115
.source_warn > @{selector},
112116
.source_warn > *@{notCleaningClasses} > @{selector},
113117
.source_warn > *@{notCleaningClasses} > *@{notCleaningClasses} > @{selector},
114118
.source_warn > *@{notCleaningClasses} > *@{notCleaningClasses} > *@{notCleaningClasses} > @{selector},
115119
.source_warn > *@{notCleaningClasses} > *@{notCleaningClasses} > *@{notCleaningClasses} > *@{notCleaningClasses} > @{selector},
120+
116121
.source_deps > @{selector},
117122
.source_deps > *@{notCleaningClasses} > @{selector},
118123
.source_deps > *@{notCleaningClasses} > *@{notCleaningClasses} > @{selector},

assets/i/github-loagind.gif

96.1 KB
Loading

assets/i/unknown.gif

1.04 KB
Loading

assets/js/enter-the-source.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@ require([
88
"jquery",
99
"source/load-options", // TODO: remove when all modules inherit Module()
1010
"sourceModules/browser",
11-
"sourceModules/moduleLoader"
12-
], function ($, options) {
13-
11+
"sourceModules/moduleLoader",
12+
'sourceModules/auth',
13+
], function ($, options, browser, Loader, Auth) {
14+
if (options && options.modulesEnabled && options.modulesEnabled.auth === true) {
15+
new Auth({
16+
target: $('.js-hook.source_login')
17+
});
18+
}
1419
});

0 commit comments

Comments
 (0)