ee-core 1.2.8 → 1.2.9
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/LICENSE +21 -21
- package/README.md +2 -2
- package/bin/tools.js +22 -22
- package/config/config.default.js +262 -250
- package/core/index.js +12 -12
- package/core/lib/ee.js +209 -209
- package/core/lib/loader/context_loader.js +105 -105
- package/core/lib/loader/ee_loader.js +447 -451
- package/core/lib/loader/file_loader.js +262 -262
- package/core/lib/loader/mixin/config.js +138 -138
- package/core/lib/loader/mixin/controller.js +123 -123
- package/core/lib/loader/mixin/service.js +29 -29
- package/core/lib/utils/base_context_class.js +34 -34
- package/core/lib/utils/index.js +100 -100
- package/core/lib/utils/sequencify.js +59 -59
- package/core/lib/utils/timing.js +77 -77
- package/index.js +49 -49
- package/lib/appLoader.js +45 -45
- package/lib/application.js +81 -80
- package/lib/baseApp.js +133 -118
- package/lib/constant.js +28 -28
- package/lib/eeApp.js +321 -326
- package/lib/helper.js +51 -51
- package/lib/httpclient.js +136 -136
- package/lib/logger.js +46 -46
- package/lib/socket/httpServer.js +134 -102
- package/lib/socket/io.js +23 -23
- package/lib/socket/ipcServer.js +128 -128
- package/lib/socket/socketClient.js +50 -50
- package/lib/socket/socketServer.js +76 -76
- package/lib/socket/start.js +22 -22
- package/lib/storage/index.js +33 -33
- package/lib/storage/lowdbStorage.js +98 -98
- package/lib/storage/sqliteStorage.js +58 -58
- package/package.json +45 -45
- package/tools/codeCompress.js +204 -204
- package/tools/replaceDist.js +76 -76
- package/utils/common.js +90 -90
- package/utils/index.js +151 -207
- package/utils/wrap.js +37 -37
- package/resource/images/loding.gif +0 -0
- package/resource/images/tray_logo.png +0 -0
- package/resource/loading.html +0 -22
- package/resource/view_example.html +0 -22
package/lib/application.js
CHANGED
|
@@ -1,81 +1,82 @@
|
|
|
1
|
-
const {app} = require('electron');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
const EeApp = require('./eeApp');
|
|
4
|
-
const debug = require('debug')('ee-core:Appliaction');
|
|
5
|
-
|
|
6
|
-
class Appliaction extends EeApp {
|
|
7
|
-
constructor() {
|
|
8
|
-
|
|
9
|
-
// 初始化环境变量
|
|
10
|
-
// const opt = this.initEnv();
|
|
11
|
-
const { env } = process;
|
|
12
|
-
|
|
13
|
-
// 路径不能使用绝对,打包前后有问题
|
|
14
|
-
let options = {
|
|
15
|
-
env: 'prod',
|
|
16
|
-
serverScope: '',
|
|
17
|
-
type: 'application',
|
|
18
|
-
baseDir: path.join(app.getAppPath(), 'electron'),
|
|
19
|
-
homeDir: app.getAppPath(),
|
|
20
|
-
framework: path.join(app.getAppPath(), 'node_modules', 'ee-core'),
|
|
21
|
-
appName: app.getName(),
|
|
22
|
-
userHome: app.getPath('home'),
|
|
23
|
-
appData: app.getPath('appData'),
|
|
24
|
-
appUserData: app.getPath('userData'),
|
|
25
|
-
//logsDir: app.getPath('logs'),
|
|
26
|
-
appVersion: app.getVersion(),
|
|
27
|
-
isPackaged: app.isPackaged,
|
|
28
|
-
execDir: app.getAppPath()
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// argv
|
|
32
|
-
let hotReload = false;
|
|
33
|
-
for (let i = 0; i < process.argv.length; i++) {
|
|
34
|
-
const tmpArgv = process.argv[i]
|
|
35
|
-
if (tmpArgv.indexOf('--env=') !== -1) {
|
|
36
|
-
options.env = tmpArgv.substring(6);
|
|
37
|
-
}
|
|
38
|
-
if (tmpArgv.indexOf('--hot-reload=') !== -1) {
|
|
39
|
-
hotReload = tmpArgv.substring(13) == 1 ? true : false;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// exec directory (exe dmg dep) for prod
|
|
44
|
-
if (options.env == 'prod' && app.isPackaged) {
|
|
45
|
-
options.execDir = path.dirname(app.getPath('exe'));
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// normalize env
|
|
49
|
-
env.NODE_ENV = 'production';
|
|
50
|
-
env.EE_HOME = options.homeDir;
|
|
51
|
-
env.EE_SERVER_ENV = options.env;
|
|
52
|
-
env.EE_SERVER_SCOPE = options.serverScope;
|
|
53
|
-
env.EE_USER_HOME = options.userHome;
|
|
54
|
-
env.EE_APP_DATA = options.appData;
|
|
55
|
-
env.EE_APP_USER_DATA = options.appUserData;
|
|
56
|
-
env.EE_MAIN_PORT = null;
|
|
57
|
-
env.EE_SOCKET_PORT = null;
|
|
58
|
-
env.EE_HTTP_PORT = null;
|
|
59
|
-
env.HOT_RELOAD = hotReload;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
this.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
1
|
+
const {app} = require('electron');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const EeApp = require('./eeApp');
|
|
4
|
+
const debug = require('debug')('ee-core:Appliaction');
|
|
5
|
+
|
|
6
|
+
class Appliaction extends EeApp {
|
|
7
|
+
constructor() {
|
|
8
|
+
|
|
9
|
+
// 初始化环境变量
|
|
10
|
+
// const opt = this.initEnv();
|
|
11
|
+
const { env } = process;
|
|
12
|
+
|
|
13
|
+
// 路径不能使用绝对,打包前后有问题
|
|
14
|
+
let options = {
|
|
15
|
+
env: 'prod',
|
|
16
|
+
serverScope: '',
|
|
17
|
+
type: 'application',
|
|
18
|
+
baseDir: path.join(app.getAppPath(), 'electron'),
|
|
19
|
+
homeDir: app.getAppPath(),
|
|
20
|
+
framework: path.join(app.getAppPath(), 'node_modules', 'ee-core'),
|
|
21
|
+
appName: app.getName(),
|
|
22
|
+
userHome: app.getPath('home'),
|
|
23
|
+
appData: app.getPath('appData'),
|
|
24
|
+
appUserData: app.getPath('userData'),
|
|
25
|
+
//logsDir: app.getPath('logs'),
|
|
26
|
+
appVersion: app.getVersion(),
|
|
27
|
+
isPackaged: app.isPackaged,
|
|
28
|
+
execDir: app.getAppPath()
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// argv
|
|
32
|
+
let hotReload = false;
|
|
33
|
+
for (let i = 0; i < process.argv.length; i++) {
|
|
34
|
+
const tmpArgv = process.argv[i]
|
|
35
|
+
if (tmpArgv.indexOf('--env=') !== -1) {
|
|
36
|
+
options.env = tmpArgv.substring(6);
|
|
37
|
+
}
|
|
38
|
+
if (tmpArgv.indexOf('--hot-reload=') !== -1) {
|
|
39
|
+
hotReload = tmpArgv.substring(13) == 1 ? true : false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// exec directory (exe dmg dep) for prod
|
|
44
|
+
if (options.env == 'prod' && app.isPackaged) {
|
|
45
|
+
options.execDir = path.dirname(app.getPath('exe'));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// normalize env
|
|
49
|
+
env.NODE_ENV = 'production';
|
|
50
|
+
env.EE_HOME = options.homeDir;
|
|
51
|
+
env.EE_SERVER_ENV = options.env;
|
|
52
|
+
env.EE_SERVER_SCOPE = options.serverScope;
|
|
53
|
+
env.EE_USER_HOME = options.userHome;
|
|
54
|
+
env.EE_APP_DATA = options.appData;
|
|
55
|
+
env.EE_APP_USER_DATA = options.appUserData;
|
|
56
|
+
env.EE_MAIN_PORT = null;
|
|
57
|
+
env.EE_SOCKET_PORT = null;
|
|
58
|
+
env.EE_HTTP_PORT = null;
|
|
59
|
+
env.HOT_RELOAD = hotReload;
|
|
60
|
+
env.EE_EXEC_DIR = options.execDir;
|
|
61
|
+
env.EE_DATABASE_DIR = null;
|
|
62
|
+
debug('options:%j', options)
|
|
63
|
+
|
|
64
|
+
super(options);
|
|
65
|
+
this.initialize();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async initialize () {
|
|
69
|
+
|
|
70
|
+
await this.createPorts();
|
|
71
|
+
|
|
72
|
+
await this.startSocket();
|
|
73
|
+
|
|
74
|
+
await this.ready();
|
|
75
|
+
|
|
76
|
+
await this.createElectronApp();
|
|
77
|
+
|
|
78
|
+
await this.catchLog();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
81
82
|
module.exports = Appliaction;
|
package/lib/baseApp.js
CHANGED
|
@@ -1,119 +1,134 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const EeAppCore = require('../core/index').EeCore;
|
|
4
|
-
const EE_PATH = Symbol.for('ee#eePath');
|
|
5
|
-
const path = require('path');
|
|
6
|
-
const EE_LOADER = Symbol.for('ee#loader');
|
|
7
|
-
const AppLoader = require('./appLoader');
|
|
8
|
-
const LOGGERS = Symbol('EeApplication#loggers');
|
|
9
|
-
const ELoggers = require('./logger');
|
|
10
|
-
const HttpClient = require('./httpclient');
|
|
11
|
-
const HTTPCLIENT = Symbol('EeApplication#httpclient');
|
|
12
|
-
|
|
13
|
-
class BaseApp extends EeAppCore {
|
|
14
|
-
constructor (options = {}) {
|
|
15
|
-
|
|
16
|
-
super(options);
|
|
17
|
-
|
|
18
|
-
this.HttpClient = HttpClient;
|
|
19
|
-
|
|
20
|
-
this.loader.loadConfig();
|
|
21
|
-
|
|
22
|
-
//
|
|
23
|
-
this.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
*
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const EeAppCore = require('../core/index').EeCore;
|
|
4
|
+
const EE_PATH = Symbol.for('ee#eePath');
|
|
5
|
+
const path = require('path');
|
|
6
|
+
const EE_LOADER = Symbol.for('ee#loader');
|
|
7
|
+
const AppLoader = require('./appLoader');
|
|
8
|
+
const LOGGERS = Symbol('EeApplication#loggers');
|
|
9
|
+
const ELoggers = require('./logger');
|
|
10
|
+
const HttpClient = require('./httpclient');
|
|
11
|
+
const HTTPCLIENT = Symbol('EeApplication#httpclient');
|
|
12
|
+
|
|
13
|
+
class BaseApp extends EeAppCore {
|
|
14
|
+
constructor (options = {}) {
|
|
15
|
+
|
|
16
|
+
super(options);
|
|
17
|
+
|
|
18
|
+
this.HttpClient = HttpClient;
|
|
19
|
+
|
|
20
|
+
this.loader.loadConfig();
|
|
21
|
+
|
|
22
|
+
// todo
|
|
23
|
+
//this.setDatabaseDir();
|
|
24
|
+
|
|
25
|
+
// 缓存配置
|
|
26
|
+
this.getCoreDB().setItem('config', this.config);
|
|
27
|
+
|
|
28
|
+
this.loader.load();
|
|
29
|
+
|
|
30
|
+
// TODO 这个不行,要么每次new对象,要么所有地方都用同一个实例,否则会出现数据无法刷新的情况
|
|
31
|
+
//this.coreDB = this.getCoreDB();
|
|
32
|
+
|
|
33
|
+
this.coreLogger.info('[ee-core:baseApp] start loaded lib modules');
|
|
34
|
+
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
get [EE_PATH]() {
|
|
38
|
+
return path.join(__dirname, '..');
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
get [EE_LOADER]() {
|
|
42
|
+
return AppLoader;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* loggers
|
|
47
|
+
* @member {Object}
|
|
48
|
+
* @since 1.0.0
|
|
49
|
+
*/
|
|
50
|
+
get loggers() {
|
|
51
|
+
if (!this[LOGGERS]) {
|
|
52
|
+
this[LOGGERS] = ELoggers.getInstance(this.config);
|
|
53
|
+
}
|
|
54
|
+
return this[LOGGERS];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Get logger by name, it's equal to app.loggers['name'],
|
|
59
|
+
* but you can extend it with your own logical.
|
|
60
|
+
* @param {String} name - logger name
|
|
61
|
+
* @return {Logger} logger
|
|
62
|
+
*/
|
|
63
|
+
getLogger(name) {
|
|
64
|
+
return this.loggers[name] || null;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* application logger, log file is `$HOME/logs/ee.log`
|
|
69
|
+
* @member {Logger}
|
|
70
|
+
* @since 1.0.0
|
|
71
|
+
*/
|
|
72
|
+
get logger() {
|
|
73
|
+
return this.getLogger('logger');
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* core logger for framework and plugins, log file is `$HOME/logs/ee-core.log`
|
|
78
|
+
* @member {Logger}
|
|
79
|
+
* @since 1.0.0
|
|
80
|
+
*/
|
|
81
|
+
get coreLogger() {
|
|
82
|
+
return this.getLogger('coreLogger');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* @class core存储模块
|
|
87
|
+
* @since 1.0.0
|
|
88
|
+
*/
|
|
89
|
+
getCoreDB () {
|
|
90
|
+
const db = require('./storage/index').JsonDB.connection('system');
|
|
91
|
+
return db;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @class curl
|
|
96
|
+
* @since 1.0.0
|
|
97
|
+
*/
|
|
98
|
+
curl(url, opts) {
|
|
99
|
+
return this.httpclient.request(url, opts);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* HttpClient instance
|
|
104
|
+
* @see https://github.com/node-modules/urllib
|
|
105
|
+
* @member {HttpClient}
|
|
106
|
+
*/
|
|
107
|
+
get httpclient() {
|
|
108
|
+
if (!this[HTTPCLIENT]) {
|
|
109
|
+
this[HTTPCLIENT] = new this.HttpClient(this);
|
|
110
|
+
}
|
|
111
|
+
return this[HTTPCLIENT];
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* todo 设置db存储目录
|
|
116
|
+
*/
|
|
117
|
+
setDatabaseDir (dirPath) {
|
|
118
|
+
if (dirPath) {
|
|
119
|
+
assert(typeof dirPath === 'string', ` ${dirPath} dirPath required, and must be a string`);
|
|
120
|
+
process.env.EE_DATABASE_DIR = dirPath;
|
|
121
|
+
} else {
|
|
122
|
+
process.env.EE_DATABASE_DIR = this.config.database.dir;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* core app have been loaded
|
|
128
|
+
*/
|
|
129
|
+
async ready () {
|
|
130
|
+
// do some things
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
119
134
|
module.exports = BaseApp;
|
package/lib/constant.js
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
autoLaunch: {
|
|
3
|
-
LOGIN_SETTING_OPTIONS: {
|
|
4
|
-
// For Windows
|
|
5
|
-
args: [
|
|
6
|
-
'--opened-at-login=1'
|
|
7
|
-
]
|
|
8
|
-
}
|
|
9
|
-
},
|
|
10
|
-
storageKey: {
|
|
11
|
-
cache: 'cache',
|
|
12
|
-
},
|
|
13
|
-
ipcChannels: {
|
|
14
|
-
appMessage: 'app.message',
|
|
15
|
-
appUpdater: 'app.updater'
|
|
16
|
-
},
|
|
17
|
-
appUpdaterStatus: {
|
|
18
|
-
error: -1,
|
|
19
|
-
available: 1,
|
|
20
|
-
noAvailable: 2,
|
|
21
|
-
downloading: 3,
|
|
22
|
-
downloaded: 4,
|
|
23
|
-
},
|
|
24
|
-
socketIo: {
|
|
25
|
-
channel: {
|
|
26
|
-
partySoftware: 'c1',
|
|
27
|
-
}
|
|
28
|
-
}
|
|
1
|
+
module.exports = {
|
|
2
|
+
autoLaunch: {
|
|
3
|
+
LOGIN_SETTING_OPTIONS: {
|
|
4
|
+
// For Windows
|
|
5
|
+
args: [
|
|
6
|
+
'--opened-at-login=1'
|
|
7
|
+
]
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
storageKey: {
|
|
11
|
+
cache: 'cache',
|
|
12
|
+
},
|
|
13
|
+
ipcChannels: {
|
|
14
|
+
appMessage: 'app.message',
|
|
15
|
+
appUpdater: 'app.updater'
|
|
16
|
+
},
|
|
17
|
+
appUpdaterStatus: {
|
|
18
|
+
error: -1,
|
|
19
|
+
available: 1,
|
|
20
|
+
noAvailable: 2,
|
|
21
|
+
downloading: 3,
|
|
22
|
+
downloaded: 4,
|
|
23
|
+
},
|
|
24
|
+
socketIo: {
|
|
25
|
+
channel: {
|
|
26
|
+
partySoftware: 'c1',
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
29
|
};
|