evaengine 1.0.14 → 2.0.0

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 (199) hide show
  1. package/README.md +15 -1
  2. package/bin/engine +2 -31
  3. package/dist/bin.d.ts +1 -0
  4. package/dist/bin.js +40 -0
  5. package/dist/bin.js.map +1 -0
  6. package/{src/commands/index.js → dist/commands/index.d.ts} +1 -8
  7. package/dist/commands/index.js +6 -0
  8. package/dist/commands/index.js.map +1 -0
  9. package/dist/commands/interface.d.ts +18 -0
  10. package/dist/commands/interface.js +40 -0
  11. package/dist/commands/interface.js.map +1 -0
  12. package/dist/commands/make_entity.d.ts +47 -0
  13. package/dist/commands/make_entity.js +410 -0
  14. package/dist/commands/make_entity.js.map +1 -0
  15. package/dist/commands/tramp.d.ts +7 -0
  16. package/dist/commands/tramp.js +29 -0
  17. package/dist/commands/tramp.js.map +1 -0
  18. package/dist/config/index.d.ts +92 -0
  19. package/dist/config/index.js +96 -0
  20. package/dist/config/index.js.map +1 -0
  21. package/dist/di.d.ts +73 -0
  22. package/dist/di.js +76 -0
  23. package/dist/di.js.map +1 -0
  24. package/dist/engine.d.ts +85 -0
  25. package/dist/engine.js +404 -0
  26. package/dist/engine.js.map +1 -0
  27. package/dist/entities/index.d.ts +54 -0
  28. package/dist/entities/index.js +228 -0
  29. package/dist/entities/index.js.map +1 -0
  30. package/dist/exceptions/index.d.ts +153 -0
  31. package/dist/exceptions/index.js +439 -0
  32. package/dist/exceptions/index.js.map +1 -0
  33. package/dist/index.d.ts +45 -0
  34. package/dist/index.js +45 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/middlewares/auth.d.ts +5 -0
  37. package/dist/middlewares/auth.js +63 -0
  38. package/dist/middlewares/auth.js.map +1 -0
  39. package/dist/middlewares/auth_kong.d.ts +2 -0
  40. package/dist/middlewares/auth_kong.js +24 -0
  41. package/dist/middlewares/auth_kong.js.map +1 -0
  42. package/dist/middlewares/debug.d.ts +3 -0
  43. package/dist/middlewares/debug.js +50 -0
  44. package/dist/middlewares/debug.js.map +1 -0
  45. package/{src/middlewares/index.js → dist/middlewares/index.d.ts} +1 -11
  46. package/dist/middlewares/index.js +9 -0
  47. package/dist/middlewares/index.js.map +1 -0
  48. package/dist/middlewares/providers.d.ts +25 -0
  49. package/dist/middlewares/providers.js +63 -0
  50. package/dist/middlewares/providers.js.map +1 -0
  51. package/dist/middlewares/session.d.ts +6 -0
  52. package/dist/middlewares/session.js +51 -0
  53. package/dist/middlewares/session.js.map +1 -0
  54. package/dist/middlewares/trace.d.ts +52 -0
  55. package/dist/middlewares/trace.js +225 -0
  56. package/dist/middlewares/trace.js.map +1 -0
  57. package/dist/middlewares/validator.d.ts +10 -0
  58. package/dist/middlewares/validator.js +43 -0
  59. package/dist/middlewares/validator.js.map +1 -0
  60. package/dist/middlewares/view_cache.d.ts +14 -0
  61. package/dist/middlewares/view_cache.js +102 -0
  62. package/dist/middlewares/view_cache.js.map +1 -0
  63. package/dist/services/cache.d.ts +66 -0
  64. package/dist/services/cache.js +207 -0
  65. package/dist/services/cache.js.map +1 -0
  66. package/dist/services/config.d.ts +25 -0
  67. package/dist/services/config.js +88 -0
  68. package/dist/services/config.js.map +1 -0
  69. package/dist/services/env.d.ts +12 -0
  70. package/dist/services/env.js +24 -0
  71. package/dist/services/env.js.map +1 -0
  72. package/dist/services/event_manager.d.ts +29 -0
  73. package/dist/services/event_manager.js +75 -0
  74. package/dist/services/event_manager.js.map +1 -0
  75. package/dist/services/http_client.d.ts +66 -0
  76. package/dist/services/http_client.js +62 -0
  77. package/dist/services/http_client.js.map +1 -0
  78. package/{src/services/index.js → dist/services/index.d.ts} +1 -15
  79. package/dist/services/index.js +14 -0
  80. package/dist/services/index.js.map +1 -0
  81. package/{src/services/interface.js → dist/services/interface.d.ts} +1 -3
  82. package/dist/services/interface.js +6 -0
  83. package/dist/services/interface.js.map +1 -0
  84. package/{src/services/joi.js → dist/services/joi.d.ts} +2 -9
  85. package/dist/services/joi.js +11 -0
  86. package/dist/services/joi.js.map +1 -0
  87. package/dist/services/jwt_token.d.ts +24 -0
  88. package/dist/services/jwt_token.js +77 -0
  89. package/dist/services/jwt_token.js.map +1 -0
  90. package/dist/services/jwt_token_kong.d.ts +25 -0
  91. package/dist/services/jwt_token_kong.js +65 -0
  92. package/dist/services/jwt_token_kong.js.map +1 -0
  93. package/dist/services/logger.d.ts +30 -0
  94. package/dist/services/logger.js +126 -0
  95. package/dist/services/logger.js.map +1 -0
  96. package/dist/services/namespace.d.ts +55 -0
  97. package/dist/services/namespace.js +157 -0
  98. package/dist/services/namespace.js.map +1 -0
  99. package/dist/services/now.d.ts +14 -0
  100. package/dist/services/now.js +43 -0
  101. package/dist/services/now.js.map +1 -0
  102. package/dist/services/providers.d.ts +55 -0
  103. package/dist/services/providers.js +134 -0
  104. package/dist/services/providers.js.map +1 -0
  105. package/dist/services/redis.d.ts +18 -0
  106. package/dist/services/redis.js +53 -0
  107. package/dist/services/redis.js.map +1 -0
  108. package/dist/services/rest_client.d.ts +48 -0
  109. package/dist/services/rest_client.js +96 -0
  110. package/dist/services/rest_client.js.map +1 -0
  111. package/dist/swagger/index.d.ts +223 -0
  112. package/dist/swagger/index.js +564 -0
  113. package/dist/swagger/index.js.map +1 -0
  114. package/dist/types/express.d.ts +14 -0
  115. package/dist/types/vendor.d.ts +102 -0
  116. package/dist/utils/api_scaffold.d.ts +74 -0
  117. package/dist/utils/api_scaffold.js +220 -0
  118. package/dist/utils/api_scaffold.js.map +1 -0
  119. package/dist/utils/case_converter.d.ts +7 -0
  120. package/dist/utils/case_converter.js +29 -0
  121. package/dist/utils/case_converter.js.map +1 -0
  122. package/dist/utils/crc32.d.ts +2 -0
  123. package/dist/utils/crc32.js +43 -0
  124. package/dist/utils/crc32.js.map +1 -0
  125. package/dist/utils/cron.d.ts +27 -0
  126. package/dist/utils/cron.js +186 -0
  127. package/dist/utils/cron.js.map +1 -0
  128. package/dist/utils/datetime.d.ts +4 -0
  129. package/dist/utils/datetime.js +6 -0
  130. package/dist/utils/datetime.js.map +1 -0
  131. package/dist/utils/host.d.ts +18 -0
  132. package/dist/utils/host.js +33 -0
  133. package/dist/utils/host.js.map +1 -0
  134. package/{src/utils/index.js → dist/utils/index.d.ts} +2 -26
  135. package/dist/utils/index.js +12 -0
  136. package/dist/utils/index.js.map +1 -0
  137. package/dist/utils/pagination.d.ts +150 -0
  138. package/dist/utils/pagination.js +242 -0
  139. package/dist/utils/pagination.js.map +1 -0
  140. package/dist/utils/random.d.ts +3 -0
  141. package/dist/utils/random.js +18 -0
  142. package/dist/utils/random.js.map +1 -0
  143. package/dist/utils/request_client.d.ts +33 -0
  144. package/dist/utils/request_client.js +153 -0
  145. package/dist/utils/request_client.js.map +1 -0
  146. package/dist/utils/smart_query.d.ts +144 -0
  147. package/dist/utils/smart_query.js +310 -0
  148. package/dist/utils/smart_query.js.map +1 -0
  149. package/dist/utils/test.d.ts +14 -0
  150. package/dist/utils/test.js +37 -0
  151. package/dist/utils/test.js.map +1 -0
  152. package/dist/utils/wrapper.d.ts +3 -0
  153. package/dist/utils/wrapper.js +5 -0
  154. package/dist/utils/wrapper.js.map +1 -0
  155. package/package.json +24 -10
  156. package/index.js +0 -2
  157. package/src/commands/interface.js +0 -45
  158. package/src/commands/make_entity.js +0 -490
  159. package/src/commands/tramp.js +0 -34
  160. package/src/config/index.js +0 -95
  161. package/src/di.js +0 -96
  162. package/src/engine.js +0 -556
  163. package/src/entities/index.js +0 -272
  164. package/src/exceptions/index.js +0 -501
  165. package/src/index.js +0 -55
  166. package/src/middlewares/auth.js +0 -67
  167. package/src/middlewares/auth_kong.js +0 -28
  168. package/src/middlewares/debug.js +0 -88
  169. package/src/middlewares/providers.js +0 -73
  170. package/src/middlewares/session.js +0 -63
  171. package/src/middlewares/trace.js +0 -254
  172. package/src/middlewares/validator.js +0 -50
  173. package/src/middlewares/view_cache.js +0 -127
  174. package/src/services/cache.js +0 -223
  175. package/src/services/config.js +0 -115
  176. package/src/services/env.js +0 -28
  177. package/src/services/event_manager.js +0 -84
  178. package/src/services/http_client.js +0 -69
  179. package/src/services/jwt_token.js +0 -89
  180. package/src/services/jwt_token_kong.js +0 -75
  181. package/src/services/logger.js +0 -150
  182. package/src/services/namespace.js +0 -176
  183. package/src/services/now.js +0 -49
  184. package/src/services/providers.js +0 -158
  185. package/src/services/redis.js +0 -63
  186. package/src/services/rest_client.js +0 -112
  187. package/src/swagger/index.js +0 -665
  188. package/src/utils/api_scaffold.js +0 -240
  189. package/src/utils/case_converter.js +0 -33
  190. package/src/utils/crc32.js +0 -44
  191. package/src/utils/cron.js +0 -208
  192. package/src/utils/datetime.js +0 -13
  193. package/src/utils/host.js +0 -39
  194. package/src/utils/pagination.js +0 -260
  195. package/src/utils/random.js +0 -23
  196. package/src/utils/request_client.js +0 -179
  197. package/src/utils/smart_query.js +0 -352
  198. package/src/utils/test.js +0 -48
  199. package/src/utils/wrapper.js +0 -8
package/dist/engine.js ADDED
@@ -0,0 +1,404 @@
1
+ import express from 'express';
2
+ import http from 'http';
3
+ import https from 'https';
4
+ import path from 'path';
5
+ import yargs from 'yargs/yargs';
6
+ import moment from 'moment-timezone';
7
+ import packageJson from '../package.json' with { type: 'json' };
8
+ import DI from "./di.js";
9
+ import * as ServiceProviders from "./services/providers.js";
10
+ import * as MiddlewareProviders from "./middlewares/providers.js";
11
+ import { StandardException, RuntimeException } from "./exceptions/index.js";
12
+ import { parseCron, setCronInterval } from "./utils/cron.js";
13
+ moment.tz.setDefault(process.env.TZ ? process.env.TZ : 'Asia/Shanghai');
14
+ export const MODES = {
15
+ WEB: 'web',
16
+ CLI: 'cli'
17
+ };
18
+ export { DI, express, yargs };
19
+ let app = null;
20
+ let baseServiceProviders = [
21
+ ServiceProviders.EnvProvider,
22
+ ServiceProviders.ConfigProvider,
23
+ ServiceProviders.LoggerProvider,
24
+ ServiceProviders.NamespaceProvider,
25
+ ServiceProviders.NowProvider,
26
+ ServiceProviders.EventManagerProvider
27
+ ];
28
+ let serviceProvidersForWeb = [
29
+ ServiceProviders.RedisProvider,
30
+ ServiceProviders.CacheProvider,
31
+ ServiceProviders.HttpClientProvider,
32
+ ServiceProviders.RestClientProvider,
33
+ ServiceProviders.ValidatorBaseProvider,
34
+ ServiceProviders.JsonWebTokenProvider
35
+ ];
36
+ let middlewareProviders = [
37
+ MiddlewareProviders.SessionMiddlewareProvider,
38
+ MiddlewareProviders.AuthMiddlewareProvider,
39
+ MiddlewareProviders.DebugMiddlewareProvider,
40
+ MiddlewareProviders.ViewCacheMiddlewareProvider,
41
+ MiddlewareProviders.ValidatorMiddlewareProvider,
42
+ MiddlewareProviders.TraceMiddlewareProvider
43
+ ];
44
+ let serviceProvidersForCLI = [
45
+ ServiceProviders.CacheProvider,
46
+ ServiceProviders.HttpClientProvider,
47
+ ServiceProviders.RestClientProvider,
48
+ ServiceProviders.RedisProvider
49
+ ];
50
+ export default class EvaEngine {
51
+ server;
52
+ commands;
53
+ command;
54
+ commandName;
55
+ port;
56
+ defaultErrorHandler;
57
+ serverErrorHandler;
58
+ uncaughtExceptionHandler;
59
+ crontabJobHandlers;
60
+ meta;
61
+ logger;
62
+ config;
63
+ namespace;
64
+ constructor({ projectRoot, configPath, sourceRoot, config, logger, namespace, port = 3000 }, mode = MODES.WEB) {
65
+ this.server = null;
66
+ this.commands = {};
67
+ this.command = null;
68
+ this.commandName = null;
69
+ this.port = ((val) => {
70
+ const rawPort = parseInt(String(val), 10);
71
+ if (Number.isNaN(rawPort)) {
72
+ return val;
73
+ }
74
+ if (rawPort >= 0) {
75
+ return rawPort;
76
+ }
77
+ return false;
78
+ })(port);
79
+ this.defaultErrorHandler = null;
80
+ this.serverErrorHandler = null;
81
+ this.uncaughtExceptionHandler = null;
82
+ this.crontabJobHandlers = [];
83
+ this.meta = {
84
+ mode,
85
+ port: this.port,
86
+ projectRoot: path.normalize(projectRoot),
87
+ configPath: path.normalize(configPath || `${projectRoot}/config`),
88
+ sourceRoot: path.normalize(sourceRoot || `${projectRoot}/src`)
89
+ };
90
+ this.registerServiceProviders(EvaEngine.getBaseServiceProviders());
91
+ this.logger = logger || DI.get('logger');
92
+ this.config = config || DI.get('config');
93
+ this.namespace = namespace || DI.get('namespace');
94
+ this.logger.info('Engine started, Meta: %j', this.meta);
95
+ this.logger.debug('Engine config files loaded: %j', this.config.getMergedFiles());
96
+ }
97
+ getMeta() {
98
+ return this.meta;
99
+ }
100
+ getDI() {
101
+ return DI;
102
+ }
103
+ static getApp() {
104
+ if (app) {
105
+ return app;
106
+ }
107
+ app = express();
108
+ return app;
109
+ }
110
+ static createRouter() {
111
+ return express.Router();
112
+ }
113
+ getCLI(commandNameInput) {
114
+ if (Object.keys(this.commands).length < 1) {
115
+ throw new RuntimeException('No command registered yet');
116
+ }
117
+ this.registerServiceProviders(EvaEngine.getServiceProvidersForCLI());
118
+ this.logger.debug('Bound services %j', Object.keys(DI.getBound()));
119
+ const [, , commandNameFromArgv] = process.argv;
120
+ const commandName = commandNameInput || commandNameFromArgv;
121
+ if (!commandName) {
122
+ return yargs(process.argv.slice(2)).argv;
123
+ }
124
+ this.commandName = commandName;
125
+ if (!this.commands[commandName]) {
126
+ // StandardException takes a single argument and silently drops the rest,
127
+ // so the legacy format-string call shape is kept as-is at runtime.
128
+ // @ts-expect-error RuntimeException declares only one constructor argument
129
+ throw new RuntimeException('Command %s not registered.', commandName);
130
+ }
131
+ const command = this.commands[commandName];
132
+ if (!{}.hasOwnProperty.call(command, 'getSpec')
133
+ || !{}.hasOwnProperty.call(command, 'getDescription')) {
134
+ throw new RuntimeException('Command require getSpec and getDescription static method');
135
+ }
136
+ const { argv } = yargs(process.argv.slice(2))
137
+ .command(commandName, command.getDescription(), Object.assign({
138
+ verbose: {
139
+ alias: 'v',
140
+ count: true
141
+ },
142
+ help: {
143
+ alias: '?'
144
+ }
145
+ }, command.getSpec()))
146
+ .help()
147
+ .count('verbose');
148
+ const { verbose } = argv;
149
+ const levels = ['info', 'verbose', 'debug', 'debug'];
150
+ const level = levels[verbose] ? levels[verbose] : 'info';
151
+ for (const [, transport = {}] of Object.entries(this.logger.getInstance().transports)) {
152
+ transport.level = level;
153
+ }
154
+ return argv;
155
+ }
156
+ static setBaseServiceProviders(providers) {
157
+ baseServiceProviders = providers;
158
+ }
159
+ static getBaseServiceProviders() {
160
+ return baseServiceProviders;
161
+ }
162
+ static getServiceProvidersForWeb() {
163
+ return serviceProvidersForWeb;
164
+ }
165
+ static setServiceProvidersForWeb(providers) {
166
+ serviceProvidersForWeb = providers;
167
+ }
168
+ static getMiddlewareProviders() {
169
+ return middlewareProviders;
170
+ }
171
+ static setMiddlewareProviders(providers) {
172
+ middlewareProviders = providers;
173
+ }
174
+ static getServiceProvidersForCLI() {
175
+ return serviceProvidersForCLI;
176
+ }
177
+ static setServiceProvidersForCLI(providers) {
178
+ serviceProvidersForCLI = providers;
179
+ }
180
+ registerServiceProviders(providers = []) {
181
+ return DI.registerServiceProviders(providers, this);
182
+ }
183
+ registerService(ProviderClass) {
184
+ return DI.registerService(ProviderClass, this);
185
+ }
186
+ registerCommands(commands) {
187
+ //TODO: validate command
188
+ const registerCommandClass = (commandClasses) => {
189
+ Object.keys(commandClasses).forEach((commandClassName) => {
190
+ const commandClass = commandClasses[commandClassName];
191
+ this.commands[commandClass.getName()] = commandClass;
192
+ });
193
+ };
194
+ if (Array.isArray(commands)) {
195
+ if (Array.isArray(commands[0])) {
196
+ commands.forEach(commandsPerFile => commandsPerFile.forEach(registerCommandClass));
197
+ }
198
+ else {
199
+ commands.forEach(registerCommandClass);
200
+ }
201
+ }
202
+ else {
203
+ registerCommandClass(commands);
204
+ }
205
+ this.logger.debug('Registered commands %j', Object.keys(this.commands));
206
+ return this;
207
+ }
208
+ getCommand() {
209
+ return this.command;
210
+ }
211
+ getCommands() {
212
+ return this.commands;
213
+ }
214
+ clearCommands() {
215
+ this.commands = {};
216
+ }
217
+ clearCrontabs() {
218
+ this.crontabJobHandlers.forEach((handler) => {
219
+ if (handler && typeof handler.clear === 'function') {
220
+ handler.clear();
221
+ }
222
+ else {
223
+ clearInterval(handler);
224
+ }
225
+ });
226
+ this.crontabJobHandlers = [];
227
+ }
228
+ getCommandName() {
229
+ return this.commandName;
230
+ }
231
+ setDefaultErrorHandler(handler) {
232
+ this.defaultErrorHandler = handler;
233
+ return this;
234
+ }
235
+ getDefaultErrorHandler() {
236
+ const env = DI.get('env');
237
+ return this.defaultErrorHandler ||
238
+ ((err, req, res, next) => {
239
+ let exception = err;
240
+ if (!(err instanceof Error)) {
241
+ this.logger.error('%s %s | %o', req.method, req.originalUrl || req.url, exception);
242
+ exception = (new RuntimeException('Unknown error')).setPrevError(err);
243
+ }
244
+ if (!(exception instanceof StandardException)) {
245
+ exception = new RuntimeException(err);
246
+ }
247
+ if (exception instanceof RuntimeException) {
248
+ //TODO: report to sentry
249
+ //TODO: with req & res
250
+ this.logger.error('%s %s | %o', req.method, req.originalUrl || req.url, exception);
251
+ }
252
+ else {
253
+ this.logger.warn('%s %s | %o', req.method, req.originalUrl || req.url, exception.getImportance() > 0 ? exception : exception.message);
254
+ }
255
+ return res
256
+ .status(exception.getStatusCode())
257
+ .json(Object.assign(exception.toJSON(), env.isDevelopment()
258
+ ? {} : {
259
+ prevError: {},
260
+ filename: '',
261
+ stack: [],
262
+ fullStack: []
263
+ }));
264
+ });
265
+ }
266
+ setUncaughtExceptionHandler(handler) {
267
+ this.uncaughtExceptionHandler = handler;
268
+ return this;
269
+ }
270
+ getUncaughtExceptionHandler() {
271
+ return this.uncaughtExceptionHandler ||
272
+ ((err) => {
273
+ this.logger.error(err);
274
+ try {
275
+ const killTimer = setTimeout(() => {
276
+ process.exit(1);
277
+ }, 30000);
278
+ killTimer.unref();
279
+ this.server.close();
280
+ }
281
+ catch (e) {
282
+ this.logger.error('Error when exit %s', e.stack);
283
+ }
284
+ });
285
+ }
286
+ setServerErrorHandler(handler) {
287
+ this.serverErrorHandler = handler;
288
+ return this;
289
+ }
290
+ getServerErrorHandler() {
291
+ return this.serverErrorHandler ||
292
+ ((error) => {
293
+ this.logger.error(error);
294
+ if (error.syscall !== 'listen') {
295
+ throw error;
296
+ }
297
+ const { port } = this;
298
+ const bind = typeof port === 'string'
299
+ ? `Pipe ${port}`
300
+ : `Port ${port}`;
301
+ // handle specific listen errors with friendly messages
302
+ switch (error.code) {
303
+ case 'EACCES':
304
+ this.logger.error('%s requires elevated privileges', bind);
305
+ process.exit(1);
306
+ break;
307
+ case 'EADDRINUSE':
308
+ this.logger.error('%s is already in use', bind);
309
+ process.exit(1);
310
+ break;
311
+ default:
312
+ throw error;
313
+ }
314
+ });
315
+ }
316
+ bootstrap() {
317
+ this.registerServiceProviders(EvaEngine.getServiceProvidersForWeb());
318
+ this.registerServiceProviders(EvaEngine.getMiddlewareProviders());
319
+ this.logger.info('Engine bootstrapped under env %s', DI.get('env').get());
320
+ this.logger.debug('Bound services %j', Object.keys(DI.getBound()));
321
+ return this;
322
+ }
323
+ //声明为 Express.use 的完整契约,保留路径/处理器组合的重载与回调参数推导;实现只做转发
324
+ use = (...args) => EvaEngine.getApp().use(...args);
325
+ run(port) {
326
+ process.on('uncaughtException', this.getUncaughtExceptionHandler());
327
+ EvaEngine.getApp().set('port', port || this.port);
328
+ EvaEngine.getApp().use(this.getDefaultErrorHandler());
329
+ this.server = http.createServer(EvaEngine.getApp());
330
+ this.server.listen(port || this.port);
331
+ this.server.on('error', this.getServerErrorHandler());
332
+ this.logger.info('Engine running http server by listening on %s', this.port);
333
+ return this;
334
+ }
335
+ runHttps(port, options = {}) {
336
+ process.on('uncaughtException', this.getUncaughtExceptionHandler());
337
+ EvaEngine.getApp().set('port', port || this.port);
338
+ EvaEngine.getApp().use(this.getDefaultErrorHandler());
339
+ this.server = https.createServer(options, EvaEngine.getApp());
340
+ this.server.listen(port || this.port);
341
+ this.server.on('error', this.getServerErrorHandler());
342
+ this.logger.info('Engine running http server by listening on %s', this.port);
343
+ return this;
344
+ }
345
+ getServer() {
346
+ return this.server;
347
+ }
348
+ static getVersion() {
349
+ return packageJson.version;
350
+ }
351
+ async runCLI(inputCommandName) {
352
+ const argv = this.getCLI(inputCommandName);
353
+ const commandName = this.getCommandName();
354
+ if (!commandName) {
355
+ this.logger.info('Available commands:');
356
+ Object.entries(this.commands).forEach(([name, commandClass]) => {
357
+ this.logger.info(`- ${(`${name} `).padEnd(30, '-')} ${commandClass.getDescription()}`);
358
+ });
359
+ return;
360
+ }
361
+ this.logger.debug('Start run command %s', commandName);
362
+ this.logger.debug('Received arguments %j', argv);
363
+ const CommandClass = this.commands[commandName];
364
+ this.command = new CommandClass(argv);
365
+ await this.command.run();
366
+ this.logger.debug('CLI run finished');
367
+ }
368
+ runCrontab(sequence, commandString, useSeconds = false) {
369
+ if (Object.keys(this.commands).length < 1) {
370
+ throw new RuntimeException('No command registered yet');
371
+ }
372
+ this.registerServiceProviders(EvaEngine.getServiceProvidersForCLI());
373
+ this.logger.debug('Bound services %j', Object.keys(DI.getBound()));
374
+ //Cron jobs run in local time, matching the previous later.date.localTime() default
375
+ this.logger.info('Cron job using %s Timezone', 'Local');
376
+ const [commandName, ...options] = commandString.split(' ');
377
+ if (Object.keys(this.commands).includes(commandName) === false) {
378
+ throw new RuntimeException(`Command ${commandName} not registered`);
379
+ }
380
+ const { argv } = yargs(options);
381
+ const command = new this.commands[commandName](argv);
382
+ let i = 1;
383
+ const schedule = parseCron(sequence, useSeconds);
384
+ const handler = setCronInterval(async () => {
385
+ this.logger.info('Cron job [%s] | Round %d | started with params %j', commandName, i, argv);
386
+ //Let job crash if any exception happen
387
+ await command.run();
388
+ this.logger.info('Cron job [%s] | Round %d | finished', commandName, i);
389
+ i += 1;
390
+ }, schedule); //useSeconds 为 True 时启用秒级字段
391
+ this.logger.info('Cron job [%s] with sequence [%s] registered as %j', commandString, sequence, schedule);
392
+ this.crontabJobHandlers.push(handler);
393
+ }
394
+ async runCommand(commandString) {
395
+ const [commandName, ...options] = commandString.split(' ');
396
+ if (Object.keys(this.commands).includes(commandName) === false) {
397
+ throw new RuntimeException(`Command ${commandName} not registered`);
398
+ }
399
+ const { argv } = yargs(options);
400
+ const command = new this.commands[commandName](argv);
401
+ return command.run();
402
+ }
403
+ }
404
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { Sequelize, Op, QueryTypes } from 'sequelize';
2
+ import type { DataTypes, Model, ModelStatic, QueryOptions, Transaction, TransactionOptions } from 'sequelize';
3
+ type EntityModel = ModelStatic<Model> & {
4
+ associate?: (entities: Record<string, EntityModel>) => void;
5
+ };
6
+ type SequelizeStatic = typeof Sequelize & {
7
+ DataTypes: typeof DataTypes;
8
+ Op: typeof Op;
9
+ QueryTypes: typeof QueryTypes;
10
+ };
11
+ export default class Entities {
12
+ entitiesPath: string;
13
+ sequelize: Sequelize | (() => Sequelize) | null;
14
+ entities: Record<string, EntityModel>;
15
+ scanned: boolean;
16
+ constructor(entitiesPath: string, sequelizeInstance?: Sequelize | (() => Sequelize) | null);
17
+ /**
18
+ * Add tracer info to end of SQL query logging
19
+ */
20
+ static addTracer(options?: Record<string, unknown>): Record<string, unknown> & {
21
+ benchmark: boolean;
22
+ logging: (...args: unknown[]) => void;
23
+ };
24
+ /**
25
+ * Scan all entity schemas under a special path
26
+ */
27
+ scan(entitiesPath: string, withAssociate?: boolean): this;
28
+ /**
29
+ * Init sequelize instance from DI config
30
+ */
31
+ init(withAssociate?: boolean): Sequelize | this | (() => Sequelize);
32
+ /**
33
+ * Shortcut for Sequelize query
34
+ */
35
+ query(sql: string, bind?: Record<string, unknown>, options?: QueryOptions): Promise<unknown>;
36
+ /**
37
+ * A shortcut to prevent repeat insert
38
+ */
39
+ uniqueInsert({ tableName, input, uniqueCondition, transaction }: {
40
+ tableName: string;
41
+ input: Record<string, unknown>;
42
+ uniqueCondition: string | Record<string, unknown>;
43
+ transaction?: Transaction;
44
+ }, options?: QueryOptions): Promise<[unknown[], unknown]>;
45
+ /**
46
+ * A short cut to start a database transaction
47
+ */
48
+ getTransaction(options?: TransactionOptions): Promise<Transaction>;
49
+ getSequelize(): SequelizeStatic;
50
+ getInstance(): Sequelize;
51
+ get<T extends EntityModel = EntityModel>(name: string): T;
52
+ getAll(): Record<string, EntityModel>;
53
+ }
54
+ export {};