ee-core 1.5.0 → 1.5.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 (41) 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 +17 -17
  5. package/config/config.default.js +280 -276
  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 +457 -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 +124 -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/index.js +127 -127
  17. package/core/lib/utils/sequencify.js +59 -59
  18. package/core/lib/utils/timing.js +77 -77
  19. package/index.js +49 -49
  20. package/lib/appLoader.js +53 -53
  21. package/lib/application.js +84 -84
  22. package/lib/baseApp.js +131 -131
  23. package/lib/constant.js +9 -9
  24. package/lib/eeApp.js +359 -335
  25. package/lib/httpclient.js +136 -136
  26. package/lib/logger.js +46 -46
  27. package/lib/socket/httpServer.js +142 -142
  28. package/lib/socket/io.js +23 -23
  29. package/lib/socket/ipcServer.js +108 -108
  30. package/lib/socket/socketClient.js +50 -50
  31. package/lib/socket/socketServer.js +76 -76
  32. package/lib/socket/start.js +22 -22
  33. package/lib/storage/index.js +33 -33
  34. package/lib/storage/lowdbStorage.js +98 -98
  35. package/lib/storage/sqliteStorage.js +127 -127
  36. package/package.json +45 -45
  37. package/tools/encrypt.js +274 -274
  38. package/tools/replaceDist.js +61 -61
  39. package/utils/common.js +90 -90
  40. package/utils/index.js +246 -246
  41. package/utils/wrap.js +37 -37
@@ -1,276 +1,280 @@
1
- 'use strict';
2
- const path = require('path');
3
-
4
- /**
5
- * The configuration of ee application, can be access by `app.config`
6
- * @class Config
7
- * @since 1.0.0
8
- */
9
-
10
- module.exports = appInfo => {
11
-
12
- const config = {
13
-
14
- /**
15
- * The environment of ee
16
- * @member {String} Config#env
17
- * @see {appInfo#env}
18
- * @since 1.0.0
19
- */
20
- env: appInfo.env,
21
-
22
- /**
23
- * The name of the application
24
- * @member {String} Config#name
25
- * @see {appInfo#name}
26
- * @since 1.0.0
27
- */
28
- name: appInfo.name,
29
-
30
- /**
31
- * The current directory of the application
32
- * @member {String} Config#baseDir
33
- * @see {appInfo#baseDir}
34
- * @since 1.0.0
35
- */
36
- baseDir: appInfo.baseDir,
37
-
38
- /**
39
- * The current HOME directory
40
- * @member {String} Config#HOME
41
- * @see {appInfo#HOME}
42
- * @since 1.0.0
43
- */
44
- HOME: appInfo.home,
45
-
46
- /**
47
- * The directory of server running. You can find `application_config.json` under it that is dumpped from `app.config`.
48
- * @member {String} Config#rundir
49
- * @default
50
- * @since 1.0.0
51
- */
52
- rundir: path.join(appInfo.baseDir, 'run'),
53
-
54
- /**
55
- * dump config
56
- *
57
- * It will ignore special keys when dumpConfig
58
- *
59
- * @member Config#dump
60
- * @property {Set} ignore - keys to ignore
61
- */
62
- dump: {
63
- ignore: new Set([
64
- 'pass', 'pwd', 'passd', 'passwd', 'password', 'keys', 'masterKey', 'accessKey',
65
- // ignore any key contains "secret" keyword
66
- /secret/i,
67
- ]),
68
- },
69
-
70
- /**
71
- * application home directory
72
- * @member {String} Config#homeDir
73
- * @default
74
- * @since 1.0.0
75
- */
76
- homeDir: appInfo.home,
77
-
78
- /**
79
- * application data & logs directory by env
80
- * @member {String} Config#root
81
- * @default
82
- * @since 1.0.0
83
- */
84
- root: appInfo.root,
85
-
86
- /**
87
- * application data directory
88
- * @member {String} Config#appUserDataDir
89
- * @default
90
- * @since 1.0.0
91
- */
92
- appUserDataDir: appInfo.appUserDataDir,
93
-
94
- /**
95
- * system user home dir
96
- * @member {String} Config#userHome
97
- */
98
- userHome: appInfo.userHome,
99
-
100
- /**
101
- * application version
102
- * @member {String} Config#appVersion
103
- */
104
- appVersion: appInfo.appVersion,
105
-
106
- /**
107
- * application package status
108
- * @member {boolean} Config#isPackaged
109
- */
110
- isPackaged: appInfo.isPackaged,
111
-
112
- /**
113
- * application exec file dir
114
- * @member {String} Config#execDir
115
- */
116
- execDir: appInfo.execDir
117
- };
118
-
119
- /**
120
- * logger options
121
- * @member Config#logger
122
- * @property {String} dir - directory of log files
123
- * @property {String} encoding - log file encoding, defaults to utf8
124
- * @property {String} level - default log level, could be: DEBUG, INFO, WARN, ERROR or NONE, defaults to INFO in production
125
- * @property {String} consoleLevel - log level of stdout, defaults to INFO in local serverEnv, defaults to WARN in unittest, defaults to NONE elsewise
126
- * @property {Boolean} disableConsoleAfterReady - disable logger console after app ready. defaults to `false` on local and unittest env, others is `true`.
127
- * @property {Boolean} outputJSON - log as JSON or not, defaults to false
128
- * @property {Boolean} buffer - if enabled, flush logs to disk at a certain frequency to improve performance, defaults to true
129
- * @property {String} errorLogName - file name of errorLogger
130
- * @property {String} coreLogName - file name of coreLogger
131
- * @property {String} agentLogName - file name of agent worker log
132
- * @property {Object} coreLogger - custom config of coreLogger
133
- * @property {Boolean} allowDebugAtProd - allow debug log at prod, defaults to false
134
- * @property {Boolean} enablePerformanceTimer - using performance.now() timer instead of Date.now() for more more precise milliseconds, defaults to false. e.g.: logger will set 1.456ms instead of 1ms.
135
- */
136
- config.logger = {
137
- dir: path.join(appInfo.root, 'logs'),
138
- encoding: 'utf8',
139
- env: appInfo.env,
140
- level: 'INFO',
141
- consoleLevel: 'INFO',
142
- disableConsoleAfterReady: appInfo.env !== 'local' && appInfo.env !== 'unittest',
143
- outputJSON: false,
144
- buffer: true,
145
- appLogName: `ee.log`,
146
- coreLogName: 'ee-core.log',
147
- agentLogName: 'ee-agent.log',
148
- errorLogName: `ee-error.log`,
149
- coreLogger: {},
150
- allowDebugAtProd: false,
151
- enablePerformanceTimer: false,
152
- };
153
-
154
- /**
155
- * The option for httpclient
156
- * @member Config#httpclient
157
- * @property {Boolean} enableDNSCache - Enable DNS lookup from local cache or not, default is false.
158
- * @property {Boolean} dnsCacheLookupInterval - minimum interval of DNS query on the same hostname (default 10s).
159
- *
160
- * @property {Number} request.timeout - httpclient request default timeout, default is 5000 ms.
161
- *
162
- * @property {Boolean} httpAgent.keepAlive - Enable http agent keepalive or not, default is true
163
- * @property {Number} httpAgent.freeSocketTimeout - http agent socket keepalive max free time, default is 4000 ms.
164
- * @property {Number} httpAgent.maxSockets - http agent max socket number of one host, default is `Number.MAX_SAFE_INTEGER` @ses https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
165
- * @property {Number} httpAgent.maxFreeSockets - http agent max free socket number of one host, default is 256.
166
- *
167
- * @property {Boolean} httpsAgent.keepAlive - Enable https agent keepalive or not, default is true
168
- * @property {Number} httpsAgent.freeSocketTimeout - httpss agent socket keepalive max free time, default is 4000 ms.
169
- * @property {Number} httpsAgent.maxSockets - https agent max socket number of one host, default is `Number.MAX_SAFE_INTEGER` @ses https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
170
- * @property {Number} httpsAgent.maxFreeSockets - https agent max free socket number of one host, default is 256.
171
- */
172
- config.httpclient = {
173
- enableDNSCache: false,
174
- dnsCacheLookupInterval: 10000,
175
- dnsCacheMaxLength: 1000,
176
-
177
- request: {
178
- timeout: 5000,
179
- },
180
- httpAgent: {
181
- keepAlive: true,
182
- freeSocketTimeout: 4000,
183
- maxSockets: Number.MAX_SAFE_INTEGER,
184
- maxFreeSockets: 256,
185
- },
186
- httpsAgent: {
187
- keepAlive: true,
188
- freeSocketTimeout: 4000,
189
- maxSockets: Number.MAX_SAFE_INTEGER,
190
- maxFreeSockets: 256,
191
- },
192
- };
193
-
194
- /* 内置socket服务 */
195
- config.socketServer = {
196
- enable: false, // 是否启用
197
- port: 7070, // 默认端口(如果端口被使用,则随机获取一个)
198
- path: "/socket.io/", // 路径名称
199
- connectTimeout: 45000, // 客户端连接超时时间
200
- pingTimeout: 30000, // 心跳检测超时时间
201
- pingInterval: 25000, // 心跳检测间隔
202
- maxHttpBufferSize: 1e8, // 每条消息的数据大小 1M
203
- transports: ["polling", "websocket"], // http轮询和websocket
204
- cors: {
205
- origin: true, // http协议时,要设置跨域 类型 Boolean String RegExp Array Function
206
- }
207
- };
208
-
209
- /* 内置http服务 */
210
- config.httpServer = {
211
- enable: false, // 是否启用
212
- https: {
213
- enable: false,
214
- key: '',
215
- cert: ''
216
- },
217
- protocol: 'http://',
218
- host: '127.0.0.1',
219
- port: 7071, // 默认端口(如果端口被使用,则随机获取一个)
220
- cors: {
221
- origin: "*"
222
- },
223
- body: {
224
- multipart: true, // 文件类型
225
- },
226
- filterRequest: {
227
- uris: [],
228
- returnData: ''
229
- }
230
- };
231
-
232
- /* 主进程加载的地址 */
233
- config.mainServer = {
234
- protocol: 'http://',
235
- host: '127.0.0.1',
236
- port: 7072, // 默认端口(如果端口被使用,则随机获取一个)
237
- options: {}
238
- };
239
-
240
- /**
241
- * 应用程序顶部菜单
242
- * boolean | string
243
- * true, false, 'dev-show'(dev环境显示,prod环境隐藏)
244
- */
245
- config.openAppMenu = true;
246
-
247
- /**
248
- * 硬件加速
249
- */
250
- config.hardGpu = {
251
- enable: false
252
- };
253
-
254
- /**
255
- * TODO storage
256
- */
257
- config.storage = {
258
- dir: path.join(appInfo.root, 'data'),
259
- };
260
-
261
- /**
262
- * loading页(废弃)
263
- */
264
- config.loadingPage = false;
265
-
266
- /**
267
- * addons
268
- */
269
- config.addons = {
270
- window: {
271
- enable: true,
272
- }
273
- };
274
-
275
- return config;
276
- };
1
+ 'use strict';
2
+ const path = require('path');
3
+
4
+ /**
5
+ * The configuration of ee application, can be access by `app.config`
6
+ * @class Config
7
+ * @since 1.0.0
8
+ */
9
+
10
+ module.exports = appInfo => {
11
+
12
+ const config = {
13
+
14
+ /**
15
+ * The environment of ee
16
+ * @member {String} Config#env
17
+ * @see {appInfo#env}
18
+ * @since 1.0.0
19
+ */
20
+ env: appInfo.env,
21
+
22
+ /**
23
+ * The name of the application
24
+ * @member {String} Config#name
25
+ * @see {appInfo#name}
26
+ * @since 1.0.0
27
+ */
28
+ name: appInfo.name,
29
+
30
+ /**
31
+ * The current directory of the application
32
+ * @member {String} Config#baseDir
33
+ * @see {appInfo#baseDir}
34
+ * @since 1.0.0
35
+ */
36
+ baseDir: appInfo.baseDir,
37
+
38
+ /**
39
+ * The current HOME directory
40
+ * @member {String} Config#HOME
41
+ * @see {appInfo#HOME}
42
+ * @since 1.0.0
43
+ */
44
+ HOME: appInfo.home,
45
+
46
+ /**
47
+ * The directory of server running. You can find `application_config.json` under it that is dumpped from `app.config`.
48
+ * @member {String} Config#rundir
49
+ * @default
50
+ * @since 1.0.0
51
+ */
52
+ rundir: path.join(appInfo.baseDir, 'run'),
53
+
54
+ /**
55
+ * dump config
56
+ *
57
+ * It will ignore special keys when dumpConfig
58
+ *
59
+ * @member Config#dump
60
+ * @property {Set} ignore - keys to ignore
61
+ */
62
+ dump: {
63
+ ignore: new Set([
64
+ 'pass', 'pwd', 'passd', 'passwd', 'password', 'keys', 'masterKey', 'accessKey',
65
+ // ignore any key contains "secret" keyword
66
+ /secret/i,
67
+ ]),
68
+ },
69
+
70
+ /**
71
+ * application home directory
72
+ * @member {String} Config#homeDir
73
+ * @default
74
+ * @since 1.0.0
75
+ */
76
+ homeDir: appInfo.home,
77
+
78
+ /**
79
+ * application data & logs directory by env
80
+ * @member {String} Config#root
81
+ * @default
82
+ * @since 1.0.0
83
+ */
84
+ root: appInfo.root,
85
+
86
+ /**
87
+ * application data directory
88
+ * @member {String} Config#appUserDataDir
89
+ * @default
90
+ * @since 1.0.0
91
+ */
92
+ appUserDataDir: appInfo.appUserDataDir,
93
+
94
+ /**
95
+ * system user home dir
96
+ * @member {String} Config#userHome
97
+ */
98
+ userHome: appInfo.userHome,
99
+
100
+ /**
101
+ * application version
102
+ * @member {String} Config#appVersion
103
+ */
104
+ appVersion: appInfo.appVersion,
105
+
106
+ /**
107
+ * application package status
108
+ * @member {boolean} Config#isPackaged
109
+ */
110
+ isPackaged: appInfo.isPackaged,
111
+
112
+ /**
113
+ * application exec file dir
114
+ * @member {String} Config#execDir
115
+ */
116
+ execDir: appInfo.execDir
117
+ };
118
+
119
+ /**
120
+ * logger options
121
+ * @member Config#logger
122
+ * @property {String} dir - directory of log files
123
+ * @property {String} encoding - log file encoding, defaults to utf8
124
+ * @property {String} level - default log level, could be: DEBUG, INFO, WARN, ERROR or NONE, defaults to INFO in production
125
+ * @property {String} consoleLevel - log level of stdout, defaults to INFO in local serverEnv, defaults to WARN in unittest, defaults to NONE elsewise
126
+ * @property {Boolean} disableConsoleAfterReady - disable logger console after app ready. defaults to `false` on local and unittest env, others is `true`.
127
+ * @property {Boolean} outputJSON - log as JSON or not, defaults to false
128
+ * @property {Boolean} buffer - if enabled, flush logs to disk at a certain frequency to improve performance, defaults to true
129
+ * @property {String} errorLogName - file name of errorLogger
130
+ * @property {String} coreLogName - file name of coreLogger
131
+ * @property {String} agentLogName - file name of agent worker log
132
+ * @property {Object} coreLogger - custom config of coreLogger
133
+ * @property {Boolean} allowDebugAtProd - allow debug log at prod, defaults to false
134
+ * @property {Boolean} enablePerformanceTimer - using performance.now() timer instead of Date.now() for more more precise milliseconds, defaults to false. e.g.: logger will set 1.456ms instead of 1ms.
135
+ */
136
+ config.logger = {
137
+ dir: path.join(appInfo.root, 'logs'),
138
+ encoding: 'utf8',
139
+ env: appInfo.env,
140
+ level: 'INFO',
141
+ consoleLevel: 'INFO',
142
+ disableConsoleAfterReady: appInfo.env !== 'local' && appInfo.env !== 'unittest',
143
+ outputJSON: false,
144
+ buffer: true,
145
+ appLogName: `ee.log`,
146
+ coreLogName: 'ee-core.log',
147
+ agentLogName: 'ee-agent.log',
148
+ errorLogName: `ee-error.log`,
149
+ coreLogger: {},
150
+ allowDebugAtProd: false,
151
+ enablePerformanceTimer: false,
152
+ };
153
+
154
+ /**
155
+ * The option for httpclient
156
+ * @member Config#httpclient
157
+ * @property {Boolean} enableDNSCache - Enable DNS lookup from local cache or not, default is false.
158
+ * @property {Boolean} dnsCacheLookupInterval - minimum interval of DNS query on the same hostname (default 10s).
159
+ *
160
+ * @property {Number} request.timeout - httpclient request default timeout, default is 5000 ms.
161
+ *
162
+ * @property {Boolean} httpAgent.keepAlive - Enable http agent keepalive or not, default is true
163
+ * @property {Number} httpAgent.freeSocketTimeout - http agent socket keepalive max free time, default is 4000 ms.
164
+ * @property {Number} httpAgent.maxSockets - http agent max socket number of one host, default is `Number.MAX_SAFE_INTEGER` @ses https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
165
+ * @property {Number} httpAgent.maxFreeSockets - http agent max free socket number of one host, default is 256.
166
+ *
167
+ * @property {Boolean} httpsAgent.keepAlive - Enable https agent keepalive or not, default is true
168
+ * @property {Number} httpsAgent.freeSocketTimeout - httpss agent socket keepalive max free time, default is 4000 ms.
169
+ * @property {Number} httpsAgent.maxSockets - https agent max socket number of one host, default is `Number.MAX_SAFE_INTEGER` @ses https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
170
+ * @property {Number} httpsAgent.maxFreeSockets - https agent max free socket number of one host, default is 256.
171
+ */
172
+ config.httpclient = {
173
+ enableDNSCache: false,
174
+ dnsCacheLookupInterval: 10000,
175
+ dnsCacheMaxLength: 1000,
176
+
177
+ request: {
178
+ timeout: 5000,
179
+ },
180
+ httpAgent: {
181
+ keepAlive: true,
182
+ freeSocketTimeout: 4000,
183
+ maxSockets: Number.MAX_SAFE_INTEGER,
184
+ maxFreeSockets: 256,
185
+ },
186
+ httpsAgent: {
187
+ keepAlive: true,
188
+ freeSocketTimeout: 4000,
189
+ maxSockets: Number.MAX_SAFE_INTEGER,
190
+ maxFreeSockets: 256,
191
+ },
192
+ };
193
+
194
+ /* 内置socket服务 */
195
+ config.socketServer = {
196
+ enable: false, // 是否启用
197
+ port: 7070, // 默认端口(如果端口被使用,则随机获取一个)
198
+ path: "/socket.io/", // 路径名称
199
+ connectTimeout: 45000, // 客户端连接超时时间
200
+ pingTimeout: 30000, // 心跳检测超时时间
201
+ pingInterval: 25000, // 心跳检测间隔
202
+ maxHttpBufferSize: 1e8, // 每条消息的数据大小 1M
203
+ transports: ["polling", "websocket"], // http轮询和websocket
204
+ cors: {
205
+ origin: true, // http协议时,要设置跨域 类型 Boolean String RegExp Array Function
206
+ }
207
+ };
208
+
209
+ /* 内置http服务 */
210
+ config.httpServer = {
211
+ enable: false, // 是否启用
212
+ https: {
213
+ enable: false,
214
+ key: '',
215
+ cert: ''
216
+ },
217
+ protocol: 'http://',
218
+ host: '127.0.0.1',
219
+ port: 7071, // 默认端口(如果端口被使用,则随机获取一个)
220
+ cors: {
221
+ origin: "*"
222
+ },
223
+ body: {
224
+ multipart: true, // 文件类型
225
+ },
226
+ filterRequest: {
227
+ uris: [],
228
+ returnData: ''
229
+ }
230
+ };
231
+
232
+ /* 主进程加载的地址 */
233
+ config.mainServer = {
234
+ protocol: 'http://',
235
+ host: '127.0.0.1',
236
+ port: 7072, // 默认端口(如果端口被使用,则随机获取一个)
237
+ options: {},
238
+ ssl: {
239
+ key: '',
240
+ cert: ''
241
+ }
242
+ };
243
+
244
+ /**
245
+ * 应用程序顶部菜单
246
+ * boolean | string
247
+ * true, false, 'dev-show'(dev环境显示,prod环境隐藏)
248
+ */
249
+ config.openAppMenu = true;
250
+
251
+ /**
252
+ * 硬件加速
253
+ */
254
+ config.hardGpu = {
255
+ enable: false
256
+ };
257
+
258
+ /**
259
+ * TODO storage
260
+ */
261
+ config.storage = {
262
+ dir: path.join(appInfo.root, 'data'),
263
+ };
264
+
265
+ /**
266
+ * loading页(废弃)
267
+ */
268
+ config.loadingPage = false;
269
+
270
+ /**
271
+ * addons
272
+ */
273
+ config.addons = {
274
+ window: {
275
+ enable: true,
276
+ }
277
+ };
278
+
279
+ return config;
280
+ };
package/core/index.js CHANGED
@@ -1,13 +1,13 @@
1
- 'use strict';
2
-
3
- const EeCore = require('./lib/ee');
4
- const EeLoader = require('./lib/loader/ee_loader');
5
- const BaseContextClass = require('./lib/utils/base_context_class');
6
- const utils = require('./lib/utils');
7
-
8
- module.exports = {
9
- EeCore,
10
- EeLoader,
11
- BaseContextClass,
12
- utils,
1
+ 'use strict';
2
+
3
+ const EeCore = require('./lib/ee');
4
+ const EeLoader = require('./lib/loader/ee_loader');
5
+ const BaseContextClass = require('./lib/utils/base_context_class');
6
+ const utils = require('./lib/utils');
7
+
8
+ module.exports = {
9
+ EeCore,
10
+ EeLoader,
11
+ BaseContextClass,
12
+ utils,
13
13
  };