Skip to content

Commit e9a0b73

Browse files
committed
port to jsengine
1 parent bd25012 commit e9a0b73

File tree

346 files changed

+482
-10774
lines changed

Some content is hidden

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

346 files changed

+482
-10774
lines changed

.gitignore

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,6 @@
2020
sftp-config.json
2121
Thumbs.db
2222

23-
# private downloads
24-
download/
25-
archive/
26-
2723
# database dump for tutorial export
2824
dump/
2925

@@ -36,7 +32,6 @@ tmp/
3632
# Manifest (build-generated content, versions)
3733
cache/
3834

39-
4035
# contains v8 executable for linux-tick-processor (run from project root)
4136
out/*
4237

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "modules/jsengine"]
2+
path = modules/jsengine
3+
url = https://github.com/iliakan/jsengine

bin/server.js

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#!/usr/bin/env node
22

33
const config = require('config');
4-
const app = require('app');
5-
const log = require('log')();
4+
const app = require('jsengine/koa/app');
5+
const log = require('jsengine/log')();
66

77
app.waitBootAndListen(config.server.host, config.server.port).then(() => {
88
log.info("App is listening");
@@ -11,6 +11,29 @@ app.waitBootAndListen(config.server.host, config.server.port).then(() => {
1111
process.exit(1); // fatal error, could not boot!
1212
});
1313

14+
process.on('SIGINT', async () => {
15+
// The process is going to be reloaded
16+
// Have to close all database/socket.io/* connections
17+
18+
let dieDelay = process.env.PM2_GRACEFUL_TIMEOUT || 4000;
19+
// I have 4000ms to let all connections finish
20+
// not accepting new connections, closing socket.io (if used)
21+
// keep-alive connection to server may still be alive, but safe to nuke the server w/ them
22+
setTimeout(function notifyAboutProblem() {
23+
// just log, kill is accomplished by PM2
24+
log.error("App is stopping for too long! Will be killed now!");
25+
}, dieDelay - 100);
26+
27+
log.info("Closing the app...");
28+
await app.close();
29+
// messages below may be not in logs due to PM2 bug
30+
log.info("App closed, exiting");
31+
process.exit(0);
32+
33+
});
34+
35+
36+
1437
// отслеживаем unhandled ошибки
1538
// https://iojs.org/api/process.html#process_event_rejectionhandled
1639
let unhandledRejections = [];

dev

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export ASSET_VERSIONING=query
1010
export WATCH=1
1111
export SITE_HOST=http://javascript.local
1212
export TUTORIAL_EDIT=
13+
export NODE_PRESERVE_SYMLINKS=1
1314

1415
npm --silent run gulp dev | bunyan -o short -l debug
1516

dev.cmd

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ set NODE_LANG=%1
44
@set NODE_ENV=development
55
@set ASSET_VERSIONING=query
66
@set WATCH=1
7-
@set NODE_PATH=./handlers;./modules
7+
@set NODE_PRESERVE_SYMLINKS=1
8+
@set NODE_PATH=./modules
89

910
call gulp dev
1011

edit

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ BRANCH="${1:-$NODE_LANG}"
77
export NODE_LANG=$BRANCH
88
export NODE_ENV=production
99
export TUTORIAL_EDIT=1
10+
export NODE_PRESERVE_SYMLINKS=1
1011

1112
npm --silent run -- gulp edit
1213

edit.cmd

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
@set TUTORIAL_EDIT=1
66
@set ASSET_VERSIONING=query
77
@set WATCH=1
8-
@set NODE_PATH=./handlers;./modules
8+
@set NODE_PRESERVE_SYMLINKS=1
9+
@set NODE_PATH=./modules
910

1011
call gulp edit
1112

gulpfile.js

Lines changed: 6 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const gulp = require('gulp');
77
const glob = require('glob');
88
const path = require('path');
99
const fs = require('fs');
10-
const assert = require('assert');
10+
const {lazyRequireTask, requireModuleTasks} = require('jsengine/gulp/requireModuleTasks');
1111
const runSequence = require('run-sequence');
1212

1313
const config = require('config');
@@ -18,44 +18,6 @@ process.on('uncaughtException', function(err) {
1818
});
1919

2020

21-
function lazyRequireTask(path) {
22-
let args = [].slice.call(arguments, 1);
23-
return function(callback) {
24-
let task = require(path).apply(this, args);
25-
26-
return task(callback);
27-
};
28-
}
29-
30-
function requireModuleTasks(moduleName) {
31-
32-
let dir = path.join(path.dirname(require.resolve(moduleName)), 'tasks');
33-
let taskFiles = fs.readdirSync(dir);
34-
35-
let hasDeps;
36-
try {
37-
fs.accessSync(path.join(dir, 'deps.json'));
38-
hasDeps = true;
39-
} catch(e) {
40-
hasDeps = false;
41-
}
42-
43-
let deps = hasDeps ? require(path.join(dir, 'deps.json')) : {};
44-
45-
for(let taskFile of taskFiles) {
46-
// migrate:myTask
47-
48-
let taskName = taskFile.split('.')[0];
49-
if (taskName === '') continue; // ignore .files
50-
51-
let taskNameFull = moduleName.replace(/\//g, ':') + ':' + taskName;
52-
53-
gulp.task(taskNameFull, deps[taskName] || [], lazyRequireTask(path.join(dir, taskFile)) );
54-
}
55-
56-
}
57-
58-
5921
gulp.task("nodemon", lazyRequireTask('./tasks/nodemon', {
6022
// shared client/server code has require('template.jade) which precompiles template on run
6123
// so I have to restart server to pickup the template change
@@ -65,7 +27,7 @@ gulp.task("nodemon", lazyRequireTask('./tasks/nodemon', {
6527
script: "./bin/server.js",
6628
//ignoreRoot: ['.git', 'node_modules'].concat(glob.sync('{handlers,modules}/**/client')), // ignore handlers' client code
6729
ignore: ['**/client/'], // ignore handlers' client code
68-
watch: ["handlers", "modules"]
30+
watch: ["modules"]
6931
}));
7032

7133
gulp.task("client:livereload", lazyRequireTask("./tasks/livereload", {
@@ -80,13 +42,13 @@ gulp.task("client:livereload", lazyRequireTask("./tasks/livereload", {
8042
]
8143
}));
8244

83-
requireModuleTasks('tutorial');
45+
requireModuleTasks('jsengine/koa/tutorial');
8446

85-
let testSrcs = ['{handlers,modules}/**/test/**/*.js'];
47+
let testSrcs = ['modules/**/test/**/*.js'];
8648
// on Travis, keys are required for E2E Selenium tests
8749
// for PRs there are no keys, so we disable E2E
8850
if (!process.env.TEST_E2E || process.env.CI && process.env.TRAVIS_SECURE_ENV_VARS=="false") {
89-
testSrcs.push('!{handlers,modules}/**/test/e2e/*.js');
51+
testSrcs.push('!modules/**/test/e2e/*.js');
9052
}
9153

9254
gulp.task("test", lazyRequireTask('./tasks/test', {
@@ -130,7 +92,7 @@ gulp.task('build', function(callback) {
13092

13193
gulp.task('server', lazyRequireTask('./tasks/server'));
13294

133-
gulp.task('edit', ['client:webpack', 'tutorial:importWatch', "client:sync-resources", 'client:livereload', 'server']);
95+
gulp.task('edit', ['client:webpack', 'jsengine:koa:tutorial:importWatch', "client:sync-resources", 'client:livereload', 'server']);
13496

13597

13698
gulp.task('dev', function(callback) {

handlers/404.js

Lines changed: 0 additions & 15 deletions
This file was deleted.

handlers/accessLogger.js

Lines changed: 0 additions & 66 deletions
This file was deleted.

0 commit comments

Comments
 (0)