ee-core 1.5.2-beta.1 → 2.0.0-beta.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.
Files changed (72) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +2 -2
  3. package/addon/window/index.js +91 -91
  4. package/bin/tools.js +18 -18
  5. package/config/config.default.js +287 -280
  6. package/core/index.js +12 -12
  7. package/core/lib/ee.js +218 -218
  8. package/core/lib/loader/context_loader.js +106 -106
  9. package/core/lib/loader/ee_loader.js +461 -457
  10. package/core/lib/loader/file_loader.js +325 -325
  11. package/core/lib/loader/mixin/addon.js +32 -32
  12. package/core/lib/loader/mixin/config.js +135 -135
  13. package/core/lib/loader/mixin/controller.js +125 -124
  14. package/core/lib/loader/mixin/service.js +28 -28
  15. package/core/lib/utils/base_context_class.js +34 -34
  16. package/core/lib/utils/function.js +30 -0
  17. package/core/lib/utils/index.js +127 -127
  18. package/core/lib/utils/sequencify.js +59 -59
  19. package/core/lib/utils/timing.js +77 -77
  20. package/index.js +49 -49
  21. package/lib/appLoader.js +48 -53
  22. package/lib/application.js +85 -84
  23. package/lib/baseApp.js +114 -131
  24. package/lib/eeApp.js +325 -359
  25. package/{lib/constant.js → module/const/index.js} +12 -9
  26. package/{lib/httpclient.js → module/httpclient/index.js} +170 -136
  27. package/module/jobs/child/forkProcess.js +99 -0
  28. package/module/jobs/child/index.js +33 -0
  29. package/module/jobs/index.js +55 -0
  30. package/module/jobs/renderer/index.js +140 -0
  31. package/module/jobs/renderer/loadView.js +40 -0
  32. package/module/loader/index.js +78 -0
  33. package/module/log/index.js +53 -0
  34. package/module/log/logger.js +61 -0
  35. package/module/message/index.js +13 -0
  36. package/module/message/ipcMain.js +160 -0
  37. package/module/message/ipcRender.js +0 -0
  38. package/{lib → module}/socket/httpServer.js +142 -142
  39. package/{lib → module}/socket/io.js +23 -23
  40. package/{lib → module}/socket/ipcServer.js +106 -108
  41. package/{lib → module}/socket/socketClient.js +51 -50
  42. package/{lib → module}/socket/socketServer.js +77 -76
  43. package/module/socket/start.js +22 -0
  44. package/{lib → module}/storage/index.js +35 -34
  45. package/module/storage/jsondb/adapters/Base.js +14 -0
  46. package/module/storage/jsondb/adapters/FileSync.js +32 -0
  47. package/{lib/storage/lowdb → module/storage/jsondb}/main.js +42 -46
  48. package/{lib/storage/lowdbStorage.js → module/storage/jsondbStorage.js} +98 -99
  49. package/{lib → module}/storage/sqliteStorage.js +123 -127
  50. package/module/utils/copyto.js +161 -0
  51. package/module/utils/helper.js +117 -0
  52. package/module/utils/index.js +120 -0
  53. package/module/utils/json.js +72 -0
  54. package/module/utils/ps.js +175 -0
  55. package/{utils → module/utils}/wrap.js +35 -37
  56. package/package.json +44 -48
  57. package/tools/encrypt.js +274 -274
  58. package/tools/replaceDist.js +61 -61
  59. package/utils/index.js +128 -246
  60. package/lib/logger.js +0 -47
  61. package/lib/socket/start.js +0 -22
  62. package/lib/storage/lowdb/adapters/Base.js +0 -15
  63. package/lib/storage/lowdb/adapters/FileAsync.js +0 -41
  64. package/lib/storage/lowdb/adapters/FileSync.js +0 -39
  65. package/lib/storage/lowdb/adapters/LocalStorage.js +0 -20
  66. package/lib/storage/lowdb/adapters/Memory.js +0 -8
  67. package/lib/storage/lowdb/adapters/_stringify.js +0 -4
  68. package/lib/storage/lowdb/common.js +0 -33
  69. package/lib/storage/lowdb/fp.js +0 -23
  70. package/lib/storage/lowdb/is-promise.js +0 -6
  71. package/lib/storage/lowdb/nano.js +0 -5
  72. package/utils/common.js +0 -91
package/index.js CHANGED
@@ -1,50 +1,50 @@
1
- 'use strict';
2
-
3
- /**
4
- * @namespace EeCore
5
- */
6
-
7
- /**
8
- * @member {Appliaction} EeCore#Appliaction
9
- * @since 1.0.0
10
- */
11
- const Appliaction = require('./lib/application');
12
-
13
- /**
14
- * @member {Controller} EeCore#Controller
15
- * @since 1.0.0
16
- */
17
- const Controller = require('./core/lib/utils/base_context_class');
18
-
19
- /**
20
- * @member {Service} EeCore#Service
21
- * @since 1.0.0
22
- */
23
- const Service = require('./core/lib/utils/base_context_class');
24
-
25
- /**
26
- * @member {Storage}
27
- * @since 1.0.0
28
- */
29
- const Storage = require('./lib/storage/index');
30
-
31
- /**
32
- * @member {Utils}
33
- * @since 1.0.0
34
- */
35
- const Utils = require('./utils/index');
36
-
37
- /**
38
- * @member {Socket}
39
- * @since 1.0.0
40
- */
41
- const Socket = require('./lib/socket/io');
42
-
43
- module.exports = {
44
- Appliaction,
45
- Controller,
46
- Service,
47
- Storage,
48
- Socket,
49
- Utils
1
+ 'use strict';
2
+
3
+ /**
4
+ * @namespace EeCore
5
+ */
6
+
7
+ /**
8
+ * @member {Appliaction} EeCore#Appliaction
9
+ * @since 1.0.0
10
+ */
11
+ const Appliaction = require('./lib/application');
12
+
13
+ /**
14
+ * @member {Controller} EeCore#Controller
15
+ * @since 1.0.0
16
+ */
17
+ const Controller = require('./core/lib/utils/base_context_class');
18
+
19
+ /**
20
+ * @member {Service} EeCore#Service
21
+ * @since 1.0.0
22
+ */
23
+ const Service = require('./core/lib/utils/base_context_class');
24
+
25
+ /**
26
+ * @member {Storage}
27
+ * @since 1.0.0
28
+ */
29
+ const Storage = require('./module/storage/index');
30
+
31
+ /**
32
+ * @member {Utils}
33
+ * @since 1.0.0
34
+ */
35
+ const Utils = require('./utils/index');
36
+
37
+ /**
38
+ * @member {Socket}
39
+ * @since 1.0.0
40
+ */
41
+ const Socket = require('./module/socket/io');
42
+
43
+ module.exports = {
44
+ Appliaction,
45
+ Controller,
46
+ Service,
47
+ Storage,
48
+ Socket,
49
+ Utils
50
50
  };
package/lib/appLoader.js CHANGED
@@ -1,53 +1,48 @@
1
- 'use strict';
2
-
3
- const EeLoader = require('../core/index').EeLoader;
4
-
5
- /**
6
- * App Loader
7
- * @see
8
- */
9
- class AppLoader extends EeLoader {
10
-
11
- /**
12
- * loadPlugin first, then loadConfig
13
- * @since 1.0.0
14
- */
15
- loadConfig() {
16
- super.loadConfig();
17
- }
18
-
19
- /**
20
- * Load all directories in convention
21
- * @since 1.0.0
22
- */
23
- load() {
24
-
25
- // app > plugin
26
- this.loadService();
27
-
28
- // app
29
- this.loadController();
30
-
31
- }
32
-
33
- /**
34
- * load addons
35
- * @since 1.0.0
36
- */
37
- loadAddons() {
38
- this.loadAddon();
39
- }
40
-
41
- /**
42
- * load electron modules
43
- * @since 1.0.0
44
- */
45
- loadElectron() {
46
-
47
- // 预加载功能模块
48
- //this.loadPreload();
49
-
50
- }
51
- }
52
-
53
- module.exports = AppLoader;
1
+ const EeLoader = require('../core/index').EeLoader;
2
+
3
+ /**
4
+ * App Loader
5
+ * @see
6
+ */
7
+ class AppLoader extends EeLoader {
8
+
9
+ /**
10
+ * loadPlugin first, then loadConfig
11
+ * @since 1.0.0
12
+ */
13
+ loadConfig() {
14
+ super.loadConfig();
15
+ }
16
+
17
+ /**
18
+ * Load all directories in convention
19
+ * @since 1.0.0
20
+ */
21
+ load() {
22
+
23
+ // app > plugin
24
+ this.loadService();
25
+
26
+ // app
27
+ this.loadController();
28
+
29
+ }
30
+
31
+ /**
32
+ * load addons
33
+ * @since 1.0.0
34
+ */
35
+ loadAddons() {
36
+ this.loadAddon();
37
+ }
38
+
39
+ /**
40
+ * load electron modules
41
+ * @since 1.0.0
42
+ */
43
+ loadElectron() {
44
+
45
+ }
46
+ }
47
+
48
+ module.exports = AppLoader;
@@ -1,85 +1,86 @@
1
- const {app} = require('electron');
2
- const path = require('path');
3
- const EeApp = require('./eeApp');
4
- const debug = require('debug')('ee-core:Appliaction');
5
- const fs = require('fs');
6
-
7
- class Appliaction extends EeApp {
8
- constructor() {
9
- const { env } = process;
10
- let options = {
11
- env: 'prod',
12
- serverScope: '',
13
- type: 'application',
14
- baseDir: path.join(app.getAppPath(), 'electron'),
15
- homeDir: app.getAppPath(),
16
- framework: path.join(app.getAppPath(), 'node_modules', 'ee-core'),
17
- appName: app.getName(),
18
- userHome: app.getPath('home'),
19
- appData: app.getPath('appData'),
20
- appUserData: app.getPath('userData'),
21
- //logsDir: app.getPath('logs'),
22
- appVersion: app.getVersion(),
23
- isPackaged: app.isPackaged,
24
- execDir: app.getAppPath()
25
- }
26
-
27
- // argv
28
- let hotReload = false;
29
- for (let i = 0; i < process.argv.length; i++) {
30
- const tmpArgv = process.argv[i]
31
- if (tmpArgv.indexOf('--env=') !== -1) {
32
- options.env = tmpArgv.substring(6);
33
- }
34
- if (tmpArgv.indexOf('--hot-reload=') !== -1) {
35
- hotReload = tmpArgv.substring(13) == 1 ? true : false;
36
- }
37
- }
38
-
39
- // exec directory (exe dmg dep) for prod
40
- if (options.env == 'prod' && app.isPackaged) {
41
- options.execDir = path.dirname(app.getPath('exe'));
42
- }
43
-
44
- // Use encryption, base directory is public/electron
45
- const encryptDir = path.join(app.getAppPath(), 'public', 'electron');
46
- let isEncrypted = fs.existsSync(encryptDir);
47
- if (options.env == 'prod' && isEncrypted) {
48
- options.baseDir = encryptDir;
49
- }
50
-
51
- // normalize env
52
- env.NODE_ENV = 'production';
53
- env.EE_HOME = options.homeDir;
54
- env.EE_SERVER_ENV = options.env;
55
- env.EE_SERVER_SCOPE = options.serverScope;
56
- env.EE_USER_HOME = options.userHome;
57
- env.EE_APP_DATA = options.appData;
58
- env.EE_APP_USER_DATA = options.appUserData;
59
- env.EE_MAIN_PORT = null;
60
- env.EE_SOCKET_PORT = null;
61
- env.EE_HTTP_PORT = null;
62
- env.HOT_RELOAD = hotReload;
63
- env.EE_EXEC_DIR = options.execDir;
64
- env.EE_DATABASE_DIR = null;
65
- debug('options:%j', options)
66
-
67
- super(options);
68
- this.initialize();
69
- }
70
-
71
- async initialize () {
72
-
73
- await this.createPorts();
74
-
75
- await this.startSocket();
76
-
77
- await this.ready();
78
-
79
- await this.createElectronApp();
80
-
81
- await this.catchLog();
82
- }
83
- }
84
-
1
+ const {app} = require('electron');
2
+ const path = require('path');
3
+ const debug = require('debug')('ee-core:Appliaction');
4
+ const fs = require('fs');
5
+ const EeApp = require('./eeApp');
6
+
7
+ class Appliaction extends EeApp {
8
+ constructor() {
9
+ const { env } = process;
10
+ let options = {
11
+ env: 'prod',
12
+ serverScope: '',
13
+ type: 'application',
14
+ baseDir: path.join(app.getAppPath(), 'electron'),
15
+ homeDir: app.getAppPath(),
16
+ framework: path.join(app.getAppPath(), 'node_modules', 'ee-core'),
17
+ appName: app.getName(),
18
+ userHome: app.getPath('home'),
19
+ appData: app.getPath('appData'),
20
+ appUserData: app.getPath('userData'),
21
+ appVersion: app.getVersion(),
22
+ isPackaged: app.isPackaged,
23
+ execDir: app.getAppPath()
24
+ }
25
+
26
+ // argv
27
+ let hotReload = false;
28
+ for (let i = 0; i < process.argv.length; i++) {
29
+ const tmpArgv = process.argv[i]
30
+ if (tmpArgv.indexOf('--env=') !== -1) {
31
+ options.env = tmpArgv.substring(6);
32
+ }
33
+ if (tmpArgv.indexOf('--hot-reload=') !== -1) {
34
+ hotReload = tmpArgv.substring(13) == 1 ? true : false;
35
+ }
36
+ }
37
+
38
+ // exec directory (exe dmg dep) for prod
39
+ if (options.env == 'prod' && app.isPackaged) {
40
+ options.execDir = path.dirname(app.getPath('exe'));
41
+ }
42
+
43
+ // Use encryption, base directory is public/electron
44
+ const encryptDir = path.join(app.getAppPath(), 'public', 'electron');
45
+ let isEncrypted = fs.existsSync(encryptDir);
46
+ if (options.env == 'prod' && isEncrypted) {
47
+ options.baseDir = encryptDir;
48
+ }
49
+
50
+ // normalize env
51
+ env.NODE_ENV = options.env;
52
+ env.EE_HOME = options.homeDir;
53
+ env.EE_BASE_DIR = options.baseDir;
54
+ env.EE_SERVER_ENV = options.env;
55
+ env.EE_SERVER_SCOPE = options.serverScope;
56
+ env.EE_USER_HOME = options.userHome;
57
+ env.EE_APP_DATA = options.appData;
58
+ env.EE_APP_USER_DATA = options.appUserData;
59
+ env.HOT_RELOAD = hotReload;
60
+ env.EE_EXEC_DIR = options.execDir;
61
+ env.EE_IS_PACKAGED = options.isPackaged;
62
+ env.EE_DATABASE_DIR = null;
63
+ env.EE_MAIN_PORT = null;
64
+ env.EE_SOCKET_PORT = null;
65
+ env.EE_HTTP_PORT = null;
66
+ debug('options:%j', options)
67
+
68
+ super(options);
69
+ this.initialize();
70
+ }
71
+
72
+ async initialize () {
73
+
74
+ await this.createPorts();
75
+
76
+ await this.startSocket();
77
+
78
+ await this.ready();
79
+
80
+ await this.createElectronApp();
81
+
82
+ await this.catchLog();
83
+ }
84
+ }
85
+
85
86
  module.exports = Appliaction;
package/lib/baseApp.js CHANGED
@@ -1,132 +1,115 @@
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
- }
34
-
35
- get [EE_PATH]() {
36
- return path.join(__dirname, '..');
37
- }
38
-
39
- get [EE_LOADER]() {
40
- return AppLoader;
41
- }
42
-
43
- /**
44
- * loggers
45
- * @member {Object}
46
- * @since 1.0.0
47
- */
48
- get loggers() {
49
- if (!this[LOGGERS]) {
50
- this[LOGGERS] = ELoggers.getInstance(this.config);
51
- }
52
- return this[LOGGERS];
53
- }
54
-
55
- /**
56
- * Get logger by name, it's equal to app.loggers['name'],
57
- * but you can extend it with your own logical.
58
- * @param {String} name - logger name
59
- * @return {Logger} logger
60
- */
61
- getLogger(name) {
62
- return this.loggers[name] || null;
63
- }
64
-
65
- /**
66
- * application logger, log file is `$HOME/logs/ee.log`
67
- * @member {Logger}
68
- * @since 1.0.0
69
- */
70
- get logger() {
71
- return this.getLogger('logger');
72
- }
73
-
74
- /**
75
- * core logger for framework and plugins, log file is `$HOME/logs/ee-core.log`
76
- * @member {Logger}
77
- * @since 1.0.0
78
- */
79
- get coreLogger() {
80
- return this.getLogger('coreLogger');
81
- }
82
-
83
- /**
84
- * @class core存储模块
85
- * @since 1.0.0
86
- */
87
- getCoreDB () {
88
- const db = require('./storage/index').JsonDB.connection('system');
89
- return db;
90
- }
91
-
92
- /**
93
- * @class curl
94
- * @since 1.0.0
95
- */
96
- curl(url, opts) {
97
- return this.httpclient.request(url, opts);
98
- }
99
-
100
- /**
101
- * HttpClient instance
102
- * @see https://github.com/node-modules/urllib
103
- * @member {HttpClient}
104
- */
105
- get httpclient() {
106
- if (!this[HTTPCLIENT]) {
107
- this[HTTPCLIENT] = new this.HttpClient(this);
108
- }
109
- return this[HTTPCLIENT];
110
- }
111
-
112
- /**
113
- * todo 设置db存储目录
114
- */
115
- setDatabaseDir (dirPath) {
116
- if (dirPath) {
117
- assert(typeof dirPath === 'string', ` ${dirPath} dirPath required, and must be a string`);
118
- process.env.EE_DATABASE_DIR = dirPath;
119
- } else {
120
- process.env.EE_DATABASE_DIR = this.config.database.dir;
121
- }
122
- }
123
-
124
- /**
125
- * core app have been loaded
126
- */
127
- async ready () {
128
- // do some things
129
- }
130
- }
131
-
1
+ const EeAppCore = require('../core/index').EeCore;
2
+ const EE_PATH = Symbol.for('ee#eePath');
3
+ const path = require('path');
4
+ const EE_LOADER = Symbol.for('ee#loader');
5
+ const AppLoader = require('./appLoader');
6
+ const HttpClient = require('../module/httpclient');
7
+ const HTTPCLIENT = Symbol('EeApplication#httpclient');
8
+ const LOGGERS = Symbol('EeApplication#loggers');
9
+ const Log = require('../module/log');
10
+ const Storage = require('../module/storage');
11
+
12
+ class BaseApp extends EeAppCore {
13
+ constructor (options = {}) {
14
+
15
+ super(options);
16
+
17
+ this.loader.loadConfig();
18
+
19
+ // 缓存配置
20
+ this.getCoreDB().setItem('config', this.config);
21
+
22
+ this.loader.load();
23
+
24
+ this.HttpClient = HttpClient;
25
+
26
+ // TODO 这个不行,要么每次new对象,要么所有地方都用同一个实例,否则会出现数据无法刷新的情况
27
+ //this.coreDB = this.getCoreDB();
28
+ }
29
+
30
+ get [EE_PATH]() {
31
+ return path.join(__dirname, '..');
32
+ }
33
+
34
+ get [EE_LOADER]() {
35
+ return AppLoader;
36
+ }
37
+
38
+ /**
39
+ * loggers
40
+ * @member {Object}
41
+ * @since 1.0.0
42
+ */
43
+ get loggers() {
44
+ if (!this[LOGGERS]) {
45
+ this[LOGGERS] = Log.create(this.config);
46
+ }
47
+ return this[LOGGERS];
48
+ }
49
+
50
+ /**
51
+ * Get logger by name, it's equal to app.loggers['name'],
52
+ * but you can extend it with your own logical.
53
+ * @param {String} name - logger name
54
+ * @return {Logger} logger
55
+ */
56
+ getLogger(name) {
57
+ return this.loggers[name] || null;
58
+ }
59
+
60
+ /**
61
+ * application logger, log file is `$HOME/logs/ee.log`
62
+ * @member {Logger}
63
+ * @since 1.0.0
64
+ */
65
+ get logger() {
66
+ return this.getLogger('logger');
67
+ }
68
+
69
+ /**
70
+ * core logger for framework and plugins, log file is `$HOME/logs/ee-core.log`
71
+ * @member {Logger}
72
+ * @since 1.0.0
73
+ */
74
+ get coreLogger() {
75
+ return this.getLogger('coreLogger');
76
+ }
77
+
78
+ /**
79
+ * @class core存储模块
80
+ * @since 1.0.0
81
+ */
82
+ getCoreDB () {
83
+ const db = Storage.connection('system');
84
+ return db;
85
+ }
86
+
87
+ /**
88
+ * @class curl
89
+ * @since 1.0.0
90
+ */
91
+ curl(url, opts) {
92
+ return this.httpclient.request(url, opts);
93
+ }
94
+
95
+ /**
96
+ * HttpClient instance
97
+ * @see https://github.com/node-modules/urllib
98
+ * @member {HttpClient}
99
+ */
100
+ get httpclient() {
101
+ if (!this[HTTPCLIENT]) {
102
+ this[HTTPCLIENT] = new this.HttpClient(this.config.httpclient);
103
+ }
104
+ return this[HTTPCLIENT];
105
+ }
106
+
107
+ /**
108
+ * core app have been loaded
109
+ */
110
+ async ready () {
111
+ // do some things
112
+ }
113
+ }
114
+
132
115
  module.exports = BaseApp;