sim 1.0.18 → 2.0.0-dev.12.1

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.
package/lib/handler.js DELETED
@@ -1,173 +0,0 @@
1
- 'use strict';
2
-
3
- const _ = require('lodash');
4
- const url = require('url');
5
- const EventEmitter = require('events');
6
-
7
- const HEADERS = {
8
- html: [200, { 'Content-Type': 'text/html' }, ''],
9
- plain: [200, { 'Content-Type': 'text/plain' }, ''],
10
- error404: [404, { 'Content-Type': 'text/plain' }, 'Error 404: Page not found!'],
11
- error500: [500, { 'Content-Type': 'text/plain' }, 'Error 500: Internal Server Error'],
12
- };
13
-
14
- class Handler {
15
-
16
- constructor (opts) {
17
- var self = this;
18
-
19
- _.extend(self, {
20
- page: opts.page,
21
- args: opts.args,
22
- req: opts.req || opts.request,
23
- res: opts.res || opts.response,
24
- user: opts.user || null,
25
- urlData: url.parse(opts.req.url, true),
26
- });
27
- }
28
-
29
- get url () {
30
- var self = this;
31
- return self.req.url;
32
- }
33
-
34
- get method () {
35
- var self = this;
36
- return self.req.method.toLowerCase();
37
- }
38
-
39
- get headers () {
40
- var self = this;
41
- return self.req.headers;
42
- }
43
-
44
- get host () {
45
- var self = this;
46
- return self.headers.host;
47
- }
48
-
49
- get connection () {
50
- var self = this;
51
- return self.headers.connection;
52
- }
53
-
54
- get userAgent () {
55
- var self = this;
56
- return self.headers['user-agent'];
57
- }
58
-
59
- get accept () {
60
- var self = this;
61
- return self.headers.accept;
62
- }
63
-
64
- get pathname () {
65
- var self = this;
66
- return self.urlData.pathname;
67
- }
68
-
69
- get href () {
70
- var self = this;
71
- return self.urlData.href;
72
- }
73
-
74
- get path () {
75
- var self = this;
76
- return self.urlData.path;
77
- }
78
-
79
- get query () {
80
- var self = this;
81
- return self.urlData.query;
82
- }
83
-
84
- get post () {
85
- var self = this;
86
- return self.req.body;
87
- }
88
-
89
- handleRequest (name) {
90
- var self = this;
91
- return new Promise((resolve, reject) => {
92
- var result = self[name]();
93
- if (result instanceof Promise)
94
- return result;
95
- if (typeof result === 'string')
96
- self.plain();
97
- resolve(result);
98
- });
99
- }
100
-
101
- handleGet (...args) {
102
- var self = this;
103
- return self.handleRequest('getHandler');
104
- }
105
-
106
- handlePost (...args) {
107
- var self = this;
108
- return self.handleRequest('postHandler');
109
- }
110
-
111
- // Default Handlers ==========================================================
112
-
113
- getHandler () {
114
- var self = this;
115
- self.html();
116
- }
117
-
118
- postHandler () {
119
- var self = this;
120
- self.html();
121
- }
122
-
123
- // Methods ===================================================================
124
-
125
- send (h = 'html', status = 200, content = undefined) {
126
- var self = this,
127
- res = self.res,
128
- data = HEADERS[h] || [];
129
- res.writeHead(status || data[0], typeof h === 'object' ? h : data[1]);
130
- res.end(content || data[2]);
131
- }
132
-
133
- redirect (url) {
134
- var self = this;
135
- self.send({ 'Location': url }, 302);
136
- }
137
-
138
- html (c = {}) {
139
- var self = this,
140
- context = _.extend({
141
- args: self.args,
142
- query: self.query,
143
- post: self.post,
144
- user: self.user,
145
- handler: self,
146
- }, c);
147
- self.page
148
- .render(self.method, context)
149
- .then(html => self.send('html', null, html));
150
- }
151
-
152
- plain (content) {
153
- var self = this;
154
- self.send('plain', null, content);
155
- }
156
-
157
- error404 (content) {
158
- var self = this;
159
- }
160
-
161
- error500 () {
162
- var self = this;
163
- }
164
-
165
- // Api =======================================================================
166
-
167
- getUrl () {
168
- var self = this;
169
- }
170
-
171
- }
172
-
173
- module.exports = Handler;
package/lib/index.js DELETED
@@ -1,15 +0,0 @@
1
- 'use strict';
2
-
3
- exports.db = require('./db');
4
- exports.auth = require('./auth');
5
- exports.cookies = require('./cookies');
6
- exports.project = require('./project');
7
- exports.Handler = require('./handler');
8
- exports.Middleware = require('./middleware');
9
- //exports.steps = require('./steps');
10
- //exports.server = require('./server');
11
- //exports.pages = require('./pages');
12
-
13
- //exports.start = exports.server.start.bind(exports.server);
14
-
15
- exports.start = exports.project.start.bind(exports.project);
package/lib/middleware.js DELETED
@@ -1,151 +0,0 @@
1
- 'use strict';
2
-
3
- const _ = require('lodash');
4
- const sim = require('sim');
5
-
6
- class Middleware {
7
-
8
- static getMethodsNames () {
9
- var Class = this;
10
- return Object
11
- .getOwnPropertyNames(Class.prototype)
12
- .filter(name => name !== 'constructor' && !name.startsWith('_'));
13
- }
14
-
15
- // Content ===================================================================
16
-
17
- onScript () {
18
- var self = this;
19
- }
20
-
21
- onStyle () {
22
- var self = this;
23
- }
24
-
25
- onTemplate () {
26
- var self = this;
27
- }
28
-
29
- onResult () {
30
- var self = this;
31
- }
32
-
33
- // Request ===================================================================
34
-
35
- onRequest () {
36
- var self = this;
37
- }
38
-
39
- preHandler () {
40
- var self = this;
41
- }
42
-
43
- postHandler () {
44
- var self = this;
45
- }
46
-
47
- // Init ======================================================================
48
-
49
- preConstruction () {
50
- var self = this;
51
- }
52
-
53
- postConstruction () {
54
- var self = this;
55
- }
56
-
57
- // Update ====================================================================
58
-
59
- preUpdate () {
60
- var self = this;
61
- }
62
-
63
- postUpdate () {
64
- var self = this;
65
- }
66
-
67
- preSettingsUpdate () {
68
- var self = this;
69
- }
70
-
71
- postSettingsUpdate () {
72
- var self = this;
73
- }
74
-
75
- preRouterUpdate () {
76
- var self = this;
77
- }
78
-
79
- postRouterUpdate () {
80
- var self = this;
81
- }
82
-
83
- prePagesUpdate () {
84
- var self = this;
85
- }
86
-
87
- postPagesUpdate () {
88
- var self = this;
89
- }
90
-
91
- preMiddlewareUpdate () {
92
- var self = this;
93
- }
94
-
95
- postMiddlewareUpdate () {
96
- var self = this;
97
- }
98
-
99
- preServerUpdate () {
100
- var self = this;
101
- }
102
-
103
- postServerUpdate () {
104
- var self = this;
105
- }
106
-
107
- // Server ====================================================================
108
-
109
- preStatic () {
110
- var self = this;
111
- }
112
-
113
- postStatic () {
114
- var self = this;
115
- }
116
-
117
- preBodyParser () {
118
- var self = this;
119
- }
120
-
121
- postBodyParser () {
122
- var self = this;
123
- }
124
-
125
- preAuth () {
126
- var self = this;
127
- }
128
-
129
- postAuth () {
130
- var self = this;
131
- }
132
-
133
- preFiles () {
134
- var self = this;
135
- }
136
-
137
- postFiles () {
138
- var self = this;
139
- }
140
-
141
- prePage () {
142
- var self = this;
143
- }
144
-
145
- postPage () {
146
- var self = this;
147
- }
148
-
149
- }
150
-
151
- module.exports = Middleware;
@@ -1,242 +0,0 @@
1
-
2
- // Module vars
3
- var slotsTemplate = hb.compile(rfile(__dirname + '/../../client/slots.js'));
4
-
5
- class Project {
6
-
7
- start () {
8
- var self = this;
9
-
10
- self.updateSettings();
11
- db.setURL(self.settings.dbURL);
12
- db.loadFromDir(self.root + '/models');
13
- db.on('error', function (err) {
14
- console.log('sim.db error: ' + err.stack);
15
- });
16
- db.on('info', function (message) {
17
- console.log('sim.db info: ' + message);
18
- });
19
-
20
- self.compileHandlers();
21
- self.updateHandlers();
22
- self.updatePages();
23
- self.updateSlots();
24
- self.updateMiddleware();
25
- self.updateServer();
26
- self.listen();
27
- self.listenSlots();
28
-
29
- console.log(`Sim server started at 127.0.0.1:${self.settings.port}...`);
30
- }
31
-
32
- // Implementation ==========================================================
33
-
34
- listenSlots () {
35
- var self = this;
36
- if (!self.settings.useSlots) {
37
- return;
38
- }
39
- self.server.io.on('connection', function (socket) {
40
- socket.on('slot', function (request, callback) {
41
- var name = request.name || '',
42
- module = request.module,
43
- sessionKey = request.sessionKey,
44
- anonUserId = request.anonUserId,
45
- args = request.args || [],
46
- slot = self.slots[module] ? self.slots[module][name] : null;
47
-
48
- if (!slot) {
49
- console.log('Slot ' + request.module + '.' + request.name + ' not found!');
50
- return;
51
- }
52
-
53
- auth.getUserBySession(sessionKey, function (user) {
54
- if (user) {
55
- var context = {
56
- user: user,
57
- models: db.getLists()
58
- };
59
- args.push(callback);
60
- slot.apply(context, args);
61
- } else {
62
- db.getLists().users.get({
63
- _id: anonUserId
64
- }, function (user) {
65
- user = user || null;
66
- var context = {
67
- user: user,
68
- models: db.getLists()
69
- };
70
- args.push(callback);
71
- slot.apply(context, args);
72
- });
73
- }
74
- });
75
- });
76
- });
77
- }
78
-
79
- updateMiddleware () {
80
- var self = this;
81
- self.middleware = new Middleware();
82
- if (!exists(self.root + '/middleware.js')) {
83
- return;
84
- }
85
- _.each(require(self.root + '/middleware.js'), function (func, name) {
86
- self.middleware.add(func);
87
- });
88
- }
89
-
90
- responseMiddleware (request, response) {
91
-
92
- function proceedMiddleware(context, mt) {
93
- context = context || options.context;
94
- if (typeof context === 'string') {
95
- content = context;
96
- if (typeof mt === 'string') {
97
- mimetype = mt;
98
- }
99
- handleContent();
100
- return;
101
- }
102
- self.middleware.start(context, {
103
- options: options
104
- }, function (context) {
105
- content = template(context);
106
- handleContent();
107
- });
108
- }
109
-
110
- function handleContent() {
111
-
112
- // Min HTML
113
- if (st.minHTML) {
114
- content = htmlmin(content, {
115
- removeComments: true,
116
- removeCommentsFromCDATA: true,
117
- collapseWhitespace: true,
118
- lint: false
119
- });
120
- }
121
- if (st.minHTML === false) {
122
- content = prettyhtml(content, {
123
- indent_size: 4
124
- });
125
- }
126
-
127
- // Include styles
128
- if (st.includeStyles) {
129
- content = content.replace('</head>', '<style>' + page.styles + '</style></head>');
130
- }
131
-
132
- // Include script
133
- if (st.includeScript) {
134
- content = content.replace('</body>', '<script>' + page.script + '</script></body>');
135
- }
136
-
137
- // Include slots scripts
138
- if (st.useSlots) {
139
- content = content.replace('<head>', '<head><script>' + self.slotsClient + '</script>');
140
- }
141
-
142
- // Include js libs
143
- if (st.includeJSLibs) {
144
- var libsCode = '';
145
- _.each(st.jsLibs, function (path) {
146
- var filename;
147
- if (path.charAt(0) === '/') {
148
- filename = path;
149
- } else {
150
- filename = '/js/lib/' + path;
151
- }
152
- libsCode += '<script src="' + filename + '"></script>\n';
153
- });
154
- content = content.replace('<head>', '<head>\n' + libsCode);
155
- }
156
-
157
- content = content.replace('<head>', '<head><meta charset="utf-8">');
158
-
159
- done();
160
- }
161
-
162
- function done() {
163
- response.writeHead(200, {
164
- 'Content-Type': mimetype
165
- });
166
- response.end(content);
167
- }
168
- }
169
-
170
- proceedMiddleware (object, context, callback) {
171
- var self = this;
172
- if (typeof object !== 'object') {
173
- callback(object);
174
- return;
175
- }
176
- self.middleware.start(object, context, callback);
177
- }
178
-
179
- updateSlots () {
180
- var self = this,
181
- slotsList = [];
182
- self.slots = {};
183
- if (!exists(self.root + '/slots') || !self.settings.useSlots) {
184
- return;
185
- }
186
- _.each(fs.readdirSync(self.root + '/slots'), function (filename) {
187
- var path = self.root + '/slots/' + filename;
188
- if (filename.slice(-3) !== '.js') {
189
- return;
190
- }
191
- var mod = require(path),
192
- modName = filename.slice(0, -3);
193
- _.each(mod, function (handler, name) {
194
- self.slots[modName] = self.slots[modName] || {};
195
- self.slots[modName][name] = handler;
196
- slotsList.push({
197
- module: modName,
198
- name: name
199
- });
200
- });
201
- });
202
- self.slotsClient = slotsTemplate({
203
- slotsList: JSON.stringify(slotsList)
204
- });
205
- }
206
-
207
- updateServer () {
208
- var self = this,
209
- server = {},
210
- connectMid = null;
211
- if (fs.existsSync(self.root + '/connect.js')) {
212
- connectMid = require(self.root + '/connect.js');
213
- }
214
-
215
- // Connect on start
216
- apply('beforeStatic');
217
- apply('init');
218
-
219
- // Set connect middleware
220
- apply('afterStatic');
221
- apply('beforeBody');
222
-
223
- // server.connect.use(connect.query());
224
- apply('afterBody');
225
- apply('beforeUser');
226
-
227
- apply('afterUser');
228
- apply('beforeFiles');
229
-
230
- apply('afterFiles');
231
- apply('beforeResponse');
232
- }
233
-
234
- updateHandlers () {
235
- var self = this;
236
- if (!exists(self.root + '/.build/http.js')) return;
237
- self.handlers = require(self.root + '/.build/http.js');
238
- }
239
-
240
- }
241
-
242
- module.exports = Project;
@@ -1,105 +0,0 @@
1
- files:
2
- html:
3
- get:
4
- - get.html
5
- - index.html
6
- post:
7
- - post.html
8
- jade:
9
- get:
10
- - get.jade
11
- - index.jade
12
- post:
13
- - post.jade
14
- request:
15
- - page.js
16
- - controller.js
17
- - handler.js
18
- - view.js
19
- - server.js
20
- css:
21
- - page.css
22
- - styles.css
23
- - style.css
24
- - index.css
25
- stylus:
26
- - page.styl
27
- - styles.styl
28
- - style.styl
29
- - index.styl
30
- js:
31
- - client.js
32
- - script.js
33
- - app.js
34
- - index.js
35
-
36
- socket:
37
- rememberTransport: false
38
- transports:
39
- - WebSocket
40
- - Flash Socket
41
- - AJAX long-polling
42
-
43
- defaults:
44
- port: 8080
45
- dbURL: 'mongodb://localhost/test'
46
- minCSS: false
47
- minJS: false
48
- minHTML: false
49
- includeParentStyles: true
50
- includeJSLibs: true
51
- includeStyles: true
52
- includeScript: true
53
- jsLibs: []
54
- useSlots: true
55
- preLoad: false
56
- cssPreprocessor: stylus
57
-
58
- webpack:
59
- filename: app.js
60
- output:
61
- dir: static/js
62
- file: 'app.js'
63
- exts:
64
- - ''
65
- - .js
66
- - .html
67
- - .json
68
- dirs:
69
- - '.'
70
- - './lib'
71
- - './pages'
72
- - './node_modules'
73
- loaders:
74
- babel:
75
- test: \.js$
76
- exclude:
77
- - node_modules/
78
- props:
79
- presets:
80
- - latest
81
- plugins:
82
- - transform-decorators-legacy
83
- - transform-class-properties
84
- ts-loader:
85
- test: \.tsx?$
86
- json:
87
- test: \.json$
88
- html:
89
- test: \.html$
90
- yaml:
91
- test: \.yaml$
92
- watchSettings:
93
- aggregateTimeout: 300
94
- poll: true
95
-
96
- logs:
97
- info:
98
- color: blue
99
- icon: ℹ
100
- success:
101
- color: green
102
- icon: ✔
103
- error:
104
- color: red
105
- icon: ⚠
@@ -1,24 +0,0 @@
1
- 'use strict';
2
-
3
- const _ = require('lodash');
4
- const fs = require('fs');
5
- const path = require('path');
6
-
7
- class File {
8
-
9
- constructor (file) {
10
- var self = this;
11
- self.exists = file.size === 0 ? false : true;
12
- self.filename = file.originalFilename;
13
- self.path = file.path;
14
- self.ext = path.extname(self.filename);
15
- }
16
-
17
- write (filename) {
18
- var self = this;
19
- fs.writeFileSync(filename, fs.readFileSync(self.path));
20
- }
21
-
22
- }
23
-
24
- module.exports = File;
@@ -1,8 +0,0 @@
1
- 'use strict';
2
-
3
- const Project = require('./project');
4
-
5
- exports.start = function (root) {
6
- var project = new Project(root);
7
- project.start();
8
- };