exodus-framework 2.0.816 → 2.0.817

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 (74) hide show
  1. package/lib/app/classes/broadcast.d.ts +16 -0
  2. package/lib/app/classes/broadcast.d.ts.map +1 -0
  3. package/lib/app/classes/broadcast.js +76 -0
  4. package/lib/app/classes/communication.d.ts +20 -0
  5. package/lib/app/classes/communication.d.ts.map +1 -0
  6. package/lib/app/classes/communication.js +53 -0
  7. package/lib/app/classes/event.d.ts +30 -0
  8. package/lib/app/classes/event.d.ts.map +1 -0
  9. package/lib/app/classes/event.js +88 -0
  10. package/lib/app/classes/managed.d.ts +53 -0
  11. package/lib/app/classes/managed.d.ts.map +1 -0
  12. package/lib/app/classes/managed.js +192 -0
  13. package/lib/app/classes/service.d.ts +23 -0
  14. package/lib/app/classes/service.d.ts.map +1 -0
  15. package/lib/app/classes/service.js +68 -0
  16. package/lib/app/classes/singleton.d.ts +8 -0
  17. package/lib/app/classes/singleton.d.ts.map +1 -0
  18. package/lib/app/{singleton.js → classes/singleton.js} +3 -3
  19. package/lib/app/classes/system.d.ts +6 -0
  20. package/lib/app/classes/system.d.ts.map +1 -0
  21. package/lib/app/classes/system.js +49 -0
  22. package/lib/app/controller.d.ts +6 -5
  23. package/lib/app/controller.d.ts.map +1 -1
  24. package/lib/app/controller.js +8 -7
  25. package/lib/app/core.d.ts +0 -30
  26. package/lib/app/core.d.ts.map +1 -1
  27. package/lib/app/core.js +1 -196
  28. package/lib/app/error.d.ts +3 -3
  29. package/lib/app/error.d.ts.map +1 -1
  30. package/lib/app/error.js +3 -3
  31. package/lib/app/exodus.d.ts +4 -4
  32. package/lib/app/exodus.d.ts.map +1 -1
  33. package/lib/app/exodus.js +23 -9
  34. package/lib/app/index.d.ts +2 -2
  35. package/lib/app/index.d.ts.map +1 -1
  36. package/lib/app/index.js +2 -2
  37. package/lib/app/settings.js +1 -1
  38. package/lib/contracts/singleton.d.ts +3 -4
  39. package/lib/contracts/singleton.d.ts.map +1 -1
  40. package/lib/services/express.d.ts +1 -1
  41. package/lib/services/express.d.ts.map +1 -1
  42. package/lib/services/express.js +1 -1
  43. package/lib/services/file.d.ts +1 -1
  44. package/lib/services/file.d.ts.map +1 -1
  45. package/lib/services/file.js +1 -1
  46. package/lib/services/rabitmq.d.ts +1 -1
  47. package/lib/services/rabitmq.d.ts.map +1 -1
  48. package/lib/services/rabitmq.js +1 -1
  49. package/lib/services/redis.d.ts +1 -1
  50. package/lib/services/redis.d.ts.map +1 -1
  51. package/lib/services/redis.js +1 -1
  52. package/lib/services/sequelize.d.ts +1 -1
  53. package/lib/services/sequelize.d.ts.map +1 -1
  54. package/lib/services/sequelize.js +1 -1
  55. package/lib/services/socket.d.ts +1 -1
  56. package/lib/services/socket.d.ts.map +1 -1
  57. package/lib/services/socket.js +1 -1
  58. package/lib/services/task/queue/QueueTask.d.ts +12 -12
  59. package/lib/services/task/queue/QueueTask.d.ts.map +1 -1
  60. package/lib/services/task/queue/QueueTask.js +49 -29
  61. package/lib/services/task/scheduler/SchedulerTask.d.ts +2 -2
  62. package/lib/services/task/scheduler/SchedulerTask.d.ts.map +1 -1
  63. package/lib/services/task/scheduler/SchedulerTask.js +11 -10
  64. package/lib/services/test.d.ts +4 -5
  65. package/lib/services/test.d.ts.map +1 -1
  66. package/lib/services/test.js +8 -8
  67. package/lib/tasks/schedule/teste.js +4 -4
  68. package/lib/utils/logger.d.ts.map +1 -1
  69. package/package.json +1 -1
  70. package/lib/app/service.d.ts +0 -34
  71. package/lib/app/service.d.ts.map +0 -1
  72. package/lib/app/service.js +0 -106
  73. package/lib/app/singleton.d.ts +0 -8
  74. package/lib/app/singleton.d.ts.map +0 -1
@@ -0,0 +1,16 @@
1
+ import { Worker } from 'cluster';
2
+ import Managed from './managed';
3
+ import { TClusterBroadCastMessage } from '../../contracts/core';
4
+ declare class Broadcast extends Managed {
5
+ protected onMasterInit(): void;
6
+ protected onClusterInit(): void;
7
+ private masterReceiveMessage;
8
+ private clusterMessage;
9
+ broadcastMessage(message: any): void;
10
+ sendMessageToCluster(clusterId: number, eventKey: string, data: any): void;
11
+ sendMessageToMaster(eventKey: string, data: any): void;
12
+ protected onMasterReceiveMessage(_worker: Worker, _message: TClusterBroadCastMessage): void;
13
+ protected onClusterReceiveMessage(_message: TClusterBroadCastMessage): void;
14
+ }
15
+ export default Broadcast;
16
+ //# sourceMappingURL=broadcast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../../src/app/classes/broadcast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,cAAM,SAAU,SAAQ,OAAO;IAC7B,SAAS,CAAC,YAAY,IAAI,IAAI;IAY9B,SAAS,CAAC,aAAa,IAAI,IAAI;IAQ/B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,cAAc;IAIf,gBAAgB,CAAC,OAAO,EAAE,GAAG;IAU7B,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAanE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAWtD,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,wBAAwB;IAGpF,SAAS,CAAC,uBAAuB,CAAC,QAAQ,EAAE,wBAAwB;CAGrE;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _error = require("../error");
8
+ var _managed = _interopRequireDefault(require("./managed"));
9
+ var _event = _interopRequireDefault(require("./event"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ class Broadcast extends _managed.default {
12
+ onMasterInit() {
13
+ super.onMasterInit();
14
+ const workers = this.getWorkers();
15
+ for (const id in workers) {
16
+ const worker = workers[id];
17
+ if (worker) {
18
+ worker.on('message', message => this.masterReceiveMessage(worker, message));
19
+ }
20
+ }
21
+ }
22
+ onClusterInit() {
23
+ super.onClusterInit();
24
+ _event.default.registerProcessMessageHandle(message => this.clusterMessage(message));
25
+ }
26
+ masterReceiveMessage(worker, data) {
27
+ if (!data || !data.data || !data.eventKey) return;
28
+ this.onMasterReceiveMessage(worker, data);
29
+ }
30
+ clusterMessage(message) {
31
+ this.onClusterReceiveMessage(message);
32
+ }
33
+ broadcastMessage(message) {
34
+ if (this.isCluster()) {
35
+ return;
36
+ }
37
+ const workers = this.getWorkers();
38
+ for (const id in workers) {
39
+ workers[id]?.send(message);
40
+ }
41
+ }
42
+ sendMessageToCluster(clusterId, eventKey, data) {
43
+ if (this.isCluster()) {
44
+ return;
45
+ }
46
+ const worker = this.getWorkers()[clusterId];
47
+ if (worker) {
48
+ worker.send({
49
+ eventKey,
50
+ data
51
+ });
52
+ } else {
53
+ // TODO
54
+ }
55
+ }
56
+ sendMessageToMaster(eventKey, data) {
57
+ if (this.isMaster()) {
58
+ return;
59
+ }
60
+ try {
61
+ process.send({
62
+ eventKey,
63
+ data
64
+ });
65
+ } catch (error) {
66
+ new _error.ErrorHandler('Houve um erro ao enviar a mensagem para o master', error);
67
+ }
68
+ }
69
+ onMasterReceiveMessage(_worker, _message) {
70
+ return;
71
+ }
72
+ onClusterReceiveMessage(_message) {
73
+ return;
74
+ }
75
+ }
76
+ var _default = exports.default = Broadcast;
@@ -0,0 +1,20 @@
1
+ import EventEmitter from 'events';
2
+ import Broadcast from './broadcast';
3
+ import { TClusterBroadCastMessage } from '../../contracts/core';
4
+ import { Worker } from 'cluster';
5
+ import { eEventCommunication, TMappedEventCommunicationHandlers } from '../../contracts/service';
6
+ declare class RestrictEventCommunication<TransportData = any> extends Broadcast {
7
+ protected serviceName: string;
8
+ emitter: EventEmitter;
9
+ constructor(serviceName: string);
10
+ sendToServiceCluster(clusterId: number, event: string, data: TransportData): void;
11
+ sendToServiceMaster(event: string, data: TransportData): void;
12
+ protected onMasterReceiveMessage(worker: Worker, message: TClusterBroadCastMessage): void;
13
+ protected onClusterReceiveMessage(message: TClusterBroadCastMessage): void;
14
+ protected onServiceMasterReceived(worker: Worker, eventKey: string, data: TransportData): void;
15
+ protected onServiceClusterReceived(eventKey: string, data: TransportData): void;
16
+ on<T extends eEventCommunication>(key: T, handle: TMappedEventCommunicationHandlers[T]): void;
17
+ off<T extends eEventCommunication>(key: T, handle: TMappedEventCommunicationHandlers[T]): void;
18
+ }
19
+ export default RestrictEventCommunication;
20
+ //# sourceMappingURL=communication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"communication.d.ts","sourceRoot":"","sources":["../../../src/app/classes/communication.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,iCAAiC,EAAE,MAAM,yBAAyB,CAAC;AAEjG,cAAM,0BAA0B,CAAC,aAAa,GAAG,GAAG,CAAE,SAAQ,SAAS;IAGzD,SAAS,CAAC,WAAW,EAAE,MAAM;IAFzC,OAAO,EAAE,YAAY,CAAC;gBAEA,WAAW,EAAE,MAAM;IAKlC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa;IAI1E,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa;IAM7D,SAAS,CAAC,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAMzF,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAQ1E,SAAS,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa;IAGvF,SAAS,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa;IAIjE,EAAE,CAAC,CAAC,SAAS,mBAAmB,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,iCAAiC,CAAC,CAAC,CAAC;IAGtF,GAAG,CAAC,CAAC,SAAS,mBAAmB,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,iCAAiC,CAAC,CAAC,CAAC;CAG/F;AAED,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _events = _interopRequireDefault(require("events"));
8
+ var _broadcast = _interopRequireDefault(require("./broadcast"));
9
+ var _service = require("../../contracts/service");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ class RestrictEventCommunication extends _broadcast.default {
12
+ emitter;
13
+ constructor(serviceName) {
14
+ super();
15
+ this.serviceName = serviceName;
16
+ this.emitter = new _events.default();
17
+ }
18
+ sendToServiceCluster(clusterId, event, data) {
19
+ const key = `${this.serviceName}_${event}`;
20
+ this.sendMessageToCluster(clusterId, key, data);
21
+ }
22
+ sendToServiceMaster(event, data) {
23
+ const key = `${this.serviceName}_${event}`;
24
+ this.sendMessageToMaster(key, data);
25
+ }
26
+
27
+ //#Non Muted
28
+ onMasterReceiveMessage(worker, message) {
29
+ if (!message.eventKey.includes(this.serviceName)) return;
30
+ const key = message.eventKey.replace(this.serviceName + '_', '');
31
+ this.onServiceMasterReceived(worker, key, message.data);
32
+ }
33
+ onClusterReceiveMessage(message) {
34
+ if (!message.eventKey.includes(this.serviceName)) return;
35
+ const key = message.eventKey.replace(this.serviceName + '_', '');
36
+ this.onServiceClusterReceived(key, message.data);
37
+ }
38
+
39
+ //# Muted
40
+ onServiceMasterReceived(worker, eventKey, data) {
41
+ this.emitter.emit(_service.eEventCommunication.RECEIVED_CLUSTER_MESSAGE, worker, eventKey, data);
42
+ }
43
+ onServiceClusterReceived(eventKey, data) {
44
+ this.emitter.emit(_service.eEventCommunication.RECEIVED_MASTER_MESSAGE, eventKey, data);
45
+ }
46
+ on(key, handle) {
47
+ this.emitter.on(key, handle);
48
+ }
49
+ off(key, handle) {
50
+ this.emitter.off(key, handle);
51
+ }
52
+ }
53
+ var _default = exports.default = RestrictEventCommunication;
@@ -0,0 +1,30 @@
1
+ import { Worker } from 'cluster';
2
+ import System from './system';
3
+ import { TClusterBroadCastMessage } from '../../contracts/core';
4
+ type cbExit = (code: number, worker: Worker, signal: string) => void;
5
+ type cbProcessExit = (code: number) => void;
6
+ type cbSignal = (signal: NodeJS.Signals) => void;
7
+ type cbException = (err: Error) => void;
8
+ type cbRejection = (reason: unknown, promise: Promise<unknown>) => void;
9
+ type cbMessage = (message: TClusterBroadCastMessage) => void;
10
+ declare class EventManagment extends System {
11
+ private static workerExitHandles;
12
+ private static clusterExitHandles;
13
+ private static processSIGINTHandles;
14
+ private static processSIGTERMHandles;
15
+ private static processExceptionHandles;
16
+ private static processRejectionHandles;
17
+ private static processExitHandles;
18
+ private static processMessageHandles;
19
+ static registerWorkerExitHandle(handle: cbExit): void;
20
+ static registerClusterExitHandle(handle: cbExit): void;
21
+ static registerProcessSIGINTHandle(handle: cbSignal): void;
22
+ static registerProcessSIGTERMHandle(handle: cbSignal): void;
23
+ static registerProcessExceptionHandle(handle: cbException): void;
24
+ static registerProcessRejectionHandle(handle: cbRejection): void;
25
+ static registerProcessExitHandle(handle: cbProcessExit): void;
26
+ static registerProcessMessageHandle(handle: cbMessage): void;
27
+ static Start(): void;
28
+ }
29
+ export default EventManagment;
30
+ //# sourceMappingURL=event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../src/app/classes/event.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AACrE,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAC5C,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;AACjD,KAAK,WAAW,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;AACxC,KAAK,WAAW,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;AACxE,KAAK,SAAS,GAAG,CAAC,OAAO,EAAE,wBAAwB,KAAK,IAAI,CAAC;AAE7D,cAAM,cAAe,SAAQ,MAAM;IACjC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAgB;IAChD,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAgB;IACjD,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAkB;IACrD,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAkB;IACtD,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAqB;IAC3D,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAqB;IAC3D,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAuB;IACxD,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAmB;IAEvD,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM;IAG9C,MAAM,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM;IAG/C,MAAM,CAAC,2BAA2B,CAAC,MAAM,EAAE,QAAQ;IAGnD,MAAM,CAAC,4BAA4B,CAAC,MAAM,EAAE,QAAQ;IAGpD,MAAM,CAAC,8BAA8B,CAAC,MAAM,EAAE,WAAW;IAGzD,MAAM,CAAC,8BAA8B,CAAC,MAAM,EAAE,WAAW;IAGzD,MAAM,CAAC,yBAAyB,CAAC,MAAM,EAAE,aAAa;IAGtD,MAAM,CAAC,4BAA4B,CAAC,MAAM,EAAE,SAAS;IAIrD,MAAM,CAAC,KAAK;CAmDb;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _cluster = _interopRequireDefault(require("cluster"));
8
+ var _system = _interopRequireDefault(require("./system"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ class EventManagment extends _system.default {
11
+ static workerExitHandles = [];
12
+ static clusterExitHandles = [];
13
+ static processSIGINTHandles = [];
14
+ static processSIGTERMHandles = [];
15
+ static processExceptionHandles = [];
16
+ static processRejectionHandles = [];
17
+ static processExitHandles = [];
18
+ static processMessageHandles = [];
19
+ static registerWorkerExitHandle(handle) {
20
+ this.workerExitHandles.push(handle);
21
+ }
22
+ static registerClusterExitHandle(handle) {
23
+ this.clusterExitHandles.push(handle);
24
+ }
25
+ static registerProcessSIGINTHandle(handle) {
26
+ this.processSIGINTHandles.push(handle);
27
+ }
28
+ static registerProcessSIGTERMHandle(handle) {
29
+ this.processSIGTERMHandles.push(handle);
30
+ }
31
+ static registerProcessExceptionHandle(handle) {
32
+ this.processExceptionHandles.push(handle);
33
+ }
34
+ static registerProcessRejectionHandle(handle) {
35
+ this.processRejectionHandles.push(handle);
36
+ }
37
+ static registerProcessExitHandle(handle) {
38
+ this.processExitHandles.push(handle);
39
+ }
40
+ static registerProcessMessageHandle(handle) {
41
+ this.processMessageHandles.push(handle);
42
+ }
43
+ static Start() {
44
+ _cluster.default.on('fork', worker => {
45
+ worker.on('exit', (code, signal) => {
46
+ for (const cb of this.workerExitHandles) {
47
+ if (cb) cb(code, worker, signal);
48
+ }
49
+ });
50
+ });
51
+ _cluster.default.on('exit', (worker, code, signal) => {
52
+ for (const cb of this.clusterExitHandles) {
53
+ if (cb) cb(code, worker, signal);
54
+ }
55
+ });
56
+ process.on('SIGINT', signal => {
57
+ for (const cb of this.processSIGINTHandles) {
58
+ if (cb) cb(signal);
59
+ }
60
+ });
61
+ process.on('SIGTERM', signal => {
62
+ for (const cb of this.processSIGTERMHandles) {
63
+ if (cb) cb(signal);
64
+ }
65
+ });
66
+ process.on('uncaughtException', err => {
67
+ for (const cb of this.processExceptionHandles) {
68
+ if (cb) cb(err);
69
+ }
70
+ });
71
+ process.on('unhandledRejection', (reason, promise) => {
72
+ for (const cb of this.processRejectionHandles) {
73
+ if (cb) cb(reason, promise);
74
+ }
75
+ });
76
+ process.on('exit', code => {
77
+ for (const cb of this.processExitHandles) {
78
+ if (cb) cb(code);
79
+ }
80
+ });
81
+ process.on('message', message => {
82
+ for (const cb of this.processMessageHandles) {
83
+ if (cb) cb(message);
84
+ }
85
+ });
86
+ }
87
+ }
88
+ var _default = exports.default = EventManagment;
@@ -0,0 +1,53 @@
1
+ import { Worker } from 'cluster';
2
+ import System from './system';
3
+ declare abstract class Managed extends System {
4
+ private _isMaster;
5
+ private _isCluster;
6
+ constructor();
7
+ private init;
8
+ private initProcessHandles;
9
+ private exit;
10
+ private SIGINT;
11
+ private SIGTERM;
12
+ private uncaughtException;
13
+ private unhandledRejection;
14
+ private masterInit;
15
+ private masterExit;
16
+ private masterSIGINT;
17
+ private masterSIGTERM;
18
+ private masterUncaughtException;
19
+ private masterUnhandledRejection;
20
+ private clusterInit;
21
+ private clusterDown;
22
+ private clusterExit;
23
+ private clusterSIGINT;
24
+ private clusterSIGTERM;
25
+ private clusterUncaughtException;
26
+ private clusterUnhandledRejection;
27
+ protected onInit(): void;
28
+ protected onClusterInit(): void;
29
+ protected onMasterInit(): void;
30
+ protected onExit(_code: number): void;
31
+ protected onClusterExit(_code: number): void;
32
+ protected onMasterExit(_code: number): void;
33
+ protected onClusterDown(_code: number, _worker: Worker, _signal: string): void;
34
+ protected onSIGINT(_signal: NodeJS.Signals): void;
35
+ protected onClusterSIGINT(_signal: NodeJS.Signals): void;
36
+ protected onMasterSIGINT(_signal: NodeJS.Signals): void;
37
+ protected onSIGTERM(_signal: NodeJS.Signals): void;
38
+ protected onClusterSIGTERM(_signal: NodeJS.Signals): void;
39
+ protected onMasterSIGTERM(_signal: NodeJS.Signals): void;
40
+ protected onUncaughtException(_err: Error): void;
41
+ protected onClusterUncaughtException(_err: Error): void;
42
+ protected onMasterUncaughtException(_err: Error): void;
43
+ protected onUnhandledRejection(_reason: unknown, _promise: Promise<unknown>): void;
44
+ protected onClusterUnhandledRejection(_reason: unknown, _promise: Promise<unknown>): void;
45
+ protected onMasterUnhandledRejection(_reason: unknown, _promise: Promise<unknown>): void;
46
+ protected isMaster(): boolean;
47
+ protected isCluster(): boolean;
48
+ protected getWorkers(): NodeJS.Dict<Worker>;
49
+ protected getWorkId(): number;
50
+ protected getClusterCount(): number;
51
+ }
52
+ export default Managed;
53
+ //# sourceMappingURL=managed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed.d.ts","sourceRoot":"","sources":["../../../src/app/classes/managed.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,MAAM,MAAM,UAAU,CAAC;AAG9B,uBAAe,OAAQ,SAAQ,MAAM;IACnC,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,UAAU,CAAU;;IAc5B,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,kBAAkB;IAyD1B,OAAO,CAAC,IAAI;IAGZ,OAAO,CAAC,MAAM;IAGd,OAAO,CAAC,OAAO;IAGf,OAAO,CAAC,iBAAiB;IAGzB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,UAAU;IAGlB,OAAO,CAAC,YAAY;IAGpB,OAAO,CAAC,aAAa;IAGrB,OAAO,CAAC,uBAAuB;IAG/B,OAAO,CAAC,wBAAwB;IAKhC,OAAO,CAAC,WAAW;IAGnB,OAAO,CAAC,WAAW;IAGnB,OAAO,CAAC,WAAW;IAGnB,OAAO,CAAC,aAAa;IAGrB,OAAO,CAAC,cAAc;IAGtB,OAAO,CAAC,wBAAwB;IAGhC,OAAO,CAAC,yBAAyB;IAKjC,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,aAAa;IACvB,SAAS,CAAC,YAAY;IAEtB,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM;IAC9B,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM;IACrC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM;IACpC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAEvE,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO;IAC1C,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO;IACjD,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO;IAEhD,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO;IAC3C,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO;IAClD,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO;IAEjD,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK;IACzC,SAAS,CAAC,0BAA0B,CAAC,IAAI,EAAE,KAAK;IAChD,SAAS,CAAC,yBAAyB,CAAC,IAAI,EAAE,KAAK;IAE/C,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC;IAC3E,SAAS,CAAC,2BAA2B,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC;IAClF,SAAS,CAAC,0BAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC;IAGjF,SAAS,CAAC,QAAQ;IAGlB,SAAS,CAAC,SAAS;IAKnB,SAAS,CAAC,UAAU;IAGpB,SAAS,CAAC,SAAS;IAMnB,SAAS,CAAC,eAAe;CAG1B;AAED,eAAe,OAAO,CAAC"}
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _cluster = _interopRequireDefault(require("cluster"));
8
+ var _system = _interopRequireDefault(require("./system"));
9
+ var _event = _interopRequireDefault(require("./event"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ class Managed extends _system.default {
12
+ _isMaster;
13
+ _isCluster;
14
+ constructor() {
15
+ super();
16
+ if (_cluster.default.isPrimary) {
17
+ this._isMaster = true;
18
+ } else {
19
+ this._isCluster = true;
20
+ }
21
+ this.init();
22
+ }
23
+
24
+ //# Common
25
+ init() {
26
+ this.initProcessHandles();
27
+ this.onInit();
28
+ if (this.isCluster()) {
29
+ this.clusterInit();
30
+ }
31
+ if (this.isMaster()) {
32
+ this.masterInit();
33
+ }
34
+ }
35
+ initProcessHandles() {
36
+ _event.default.registerProcessSIGINTHandle(signal => {
37
+ this.SIGINT(signal);
38
+ if (this.isMaster()) {
39
+ this.masterSIGINT(signal);
40
+ }
41
+ if (this.isCluster()) {
42
+ this.clusterSIGINT(signal);
43
+ }
44
+ });
45
+ _event.default.registerProcessSIGTERMHandle(signal => {
46
+ this.SIGTERM(signal);
47
+ if (this.isMaster()) {
48
+ this.masterSIGTERM(signal);
49
+ }
50
+ if (this.isCluster()) {
51
+ this.clusterSIGTERM(signal);
52
+ }
53
+ });
54
+ _event.default.registerProcessExceptionHandle(err => {
55
+ this.uncaughtException(err);
56
+ if (this.isMaster()) {
57
+ this.masterUncaughtException(err);
58
+ }
59
+ if (this.isCluster()) {
60
+ this.clusterUncaughtException(err);
61
+ }
62
+ });
63
+ _event.default.registerProcessRejectionHandle((reason, promise) => {
64
+ this.unhandledRejection(reason, promise);
65
+ if (this.isMaster()) {
66
+ this.masterUnhandledRejection(reason, promise);
67
+ }
68
+ if (this.isCluster()) {
69
+ this.clusterUnhandledRejection(reason, promise);
70
+ }
71
+ });
72
+ _event.default.registerProcessExitHandle(code => {
73
+ this.exit(code);
74
+ if (this.isMaster()) {
75
+ this.masterExit(code);
76
+ }
77
+ if (this.isCluster()) {
78
+ this.clusterExit(code);
79
+ }
80
+ });
81
+ }
82
+ exit(code) {
83
+ this.onExit(code);
84
+ }
85
+ SIGINT(signal) {
86
+ this.onSIGINT(signal);
87
+ }
88
+ SIGTERM(signal) {
89
+ this.onSIGTERM(signal);
90
+ }
91
+ uncaughtException(err) {
92
+ this.onUncaughtException(err);
93
+ }
94
+ unhandledRejection(reason, promise) {
95
+ this.onUnhandledRejection(reason, promise);
96
+ }
97
+
98
+ //# Master
99
+ masterInit() {
100
+ const workers = this.getWorkers();
101
+ for (const id in workers) {
102
+ const worker = workers[id];
103
+ if (worker) {
104
+ worker.on('exit', (code, signal) => this.clusterDown(code, worker, signal));
105
+ }
106
+ }
107
+ _event.default.registerWorkerExitHandle((code, worker, signal) => this.clusterDown(code, worker, signal));
108
+ this.onMasterInit();
109
+ }
110
+ masterExit(code) {
111
+ this.onMasterExit(code);
112
+ }
113
+ masterSIGINT(signal) {
114
+ this.onMasterSIGINT(signal);
115
+ }
116
+ masterSIGTERM(signal) {
117
+ this.onMasterSIGTERM(signal);
118
+ }
119
+ masterUncaughtException(err) {
120
+ this.onMasterUncaughtException(err);
121
+ }
122
+ masterUnhandledRejection(reason, promise) {
123
+ this.onMasterUnhandledRejection(reason, promise);
124
+ }
125
+
126
+ //# Cluster
127
+ clusterInit() {
128
+ this.onClusterInit();
129
+ }
130
+ clusterDown(code, worker, signal) {
131
+ this.onClusterDown(code, worker, signal);
132
+ }
133
+ clusterExit(code) {
134
+ this.onClusterExit(code);
135
+ }
136
+ clusterSIGINT(signal) {
137
+ this.clusterSIGINT(signal);
138
+ }
139
+ clusterSIGTERM(signal) {
140
+ this.onClusterSIGTERM(signal);
141
+ }
142
+ clusterUncaughtException(err) {
143
+ this.onClusterUncaughtException(err);
144
+ }
145
+ clusterUnhandledRejection(reason, promise) {
146
+ this.onClusterUnhandledRejection(reason, promise);
147
+ }
148
+
149
+ //# Muted
150
+ onInit() {}
151
+ onClusterInit() {}
152
+ onMasterInit() {}
153
+ onExit(_code) {}
154
+ onClusterExit(_code) {}
155
+ onMasterExit(_code) {}
156
+ onClusterDown(_code, _worker, _signal) {}
157
+ onSIGINT(_signal) {}
158
+ onClusterSIGINT(_signal) {}
159
+ onMasterSIGINT(_signal) {}
160
+ onSIGTERM(_signal) {}
161
+ onClusterSIGTERM(_signal) {}
162
+ onMasterSIGTERM(_signal) {}
163
+ onUncaughtException(_err) {}
164
+ onClusterUncaughtException(_err) {}
165
+ onMasterUncaughtException(_err) {}
166
+ onUnhandledRejection(_reason, _promise) {}
167
+ onClusterUnhandledRejection(_reason, _promise) {}
168
+ onMasterUnhandledRejection(_reason, _promise) {}
169
+
170
+ //# Utils
171
+ isMaster() {
172
+ return this._isMaster;
173
+ }
174
+ isCluster() {
175
+ return this._isCluster;
176
+ }
177
+
178
+ //# Getters
179
+ getWorkers() {
180
+ return _cluster.default.workers;
181
+ }
182
+ getWorkId() {
183
+ if (this.isMaster()) {
184
+ return -1;
185
+ }
186
+ return _cluster.default.worker.id;
187
+ }
188
+ getClusterCount() {
189
+ return Object.values(_cluster.default.workers || {}).filter(worker => worker?.isConnected()).length;
190
+ }
191
+ }
192
+ var _default = exports.default = Managed;
@@ -0,0 +1,23 @@
1
+ import { Worker } from 'cluster';
2
+ import { NonConstructor } from '../../contracts';
3
+ import Managed from './managed';
4
+ type TStaticService<S> = NonConstructor<typeof Service> & {
5
+ new (): S;
6
+ };
7
+ declare abstract class Service<D = any> extends Managed {
8
+ static instance: Service;
9
+ private eCom;
10
+ static singleton<S extends Service>(this: TStaticService<S>): S;
11
+ static getService<S extends Service>(this: TStaticService<S>): S;
12
+ protected onInit(): void;
13
+ serviceInit(): Promise<void>;
14
+ protected onServiceInit(): Promise<void>;
15
+ protected onServiceMasterInit(): Promise<void>;
16
+ protected onServiceClusterInit(): Promise<void>;
17
+ protected sendToServiceCluster(clusterId: number, event: string, data: D): void;
18
+ protected sendToServiceMaster(event: string, data: D): void;
19
+ protected onServiceMasterReceived(_worker: Worker, _eventKey: string, _data: any): void;
20
+ protected onServiceClusterReceived(_eventKey: string, _data: any): void;
21
+ }
22
+ export default Service;
23
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/app/classes/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,KAAK,cAAc,CAAC,CAAC,IAAI,cAAc,CAAC,OAAO,OAAO,CAAC,GAAG;IACxD,QAAQ,CAAC,CAAC;CACX,CAAC;AAWF,uBAAe,OAAO,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,OAAO;IAC7C,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,IAAI,CAA6B;IAEzC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAEjC,CAAC;IAE3B,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAI5D,SAAS,CAAC,MAAM,IAAI,IAAI;IAKX,WAAW;cAsBR,aAAa;cAGb,mBAAmB;cAGnB,oBAAoB;IAIpC,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAGxE,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAIpD,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAGhF,SAAS,CAAC,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;CAGjE;AACD,eAAe,OAAO,CAAC"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _service = require("../../contracts/service");
8
+ var _communication = _interopRequireDefault(require("./communication"));
9
+ var _managed = _interopRequireDefault(require("./managed"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ /**
12
+ * Classe base de Serviços
13
+ * Responsável por gerênciar métodos e funções utilizadas por todas
14
+ * as classes de serviço desta aplicação
15
+ *
16
+ * @abstract
17
+ * @class Service
18
+ * @extends {Managed}
19
+ * @template S
20
+ */
21
+ class Service extends _managed.default {
22
+ static instance;
23
+ eCom;
24
+ static singleton() {
25
+ if (!this.instance) this.instance = new this();
26
+ return this.instance;
27
+ }
28
+ static getService() {
29
+ return this.singleton();
30
+ }
31
+ onInit() {
32
+ super.onInit();
33
+ this.eCom = new _communication.default(this.constructor.name);
34
+ }
35
+ async serviceInit() {
36
+ this.eCom.on(_service.eEventCommunication.RECEIVED_CLUSTER_MESSAGE, this.onServiceMasterReceived.bind(this));
37
+ this.eCom.on(_service.eEventCommunication.RECEIVED_MASTER_MESSAGE, this.onServiceClusterReceived.bind(this));
38
+ await this.onServiceInit();
39
+ if (this.isMaster()) {
40
+ await this.onServiceMasterInit();
41
+ }
42
+ if (this.isCluster()) {
43
+ await this.onServiceClusterInit();
44
+ }
45
+ }
46
+ async onServiceInit() {
47
+ return;
48
+ }
49
+ async onServiceMasterInit() {
50
+ return;
51
+ }
52
+ async onServiceClusterInit() {
53
+ return;
54
+ }
55
+ sendToServiceCluster(clusterId, event, data) {
56
+ this.eCom.sendMessageToCluster(clusterId, event, data);
57
+ }
58
+ sendToServiceMaster(event, data) {
59
+ this.eCom.sendMessageToMaster(event, data);
60
+ }
61
+ onServiceMasterReceived(_worker, _eventKey, _data) {
62
+ return;
63
+ }
64
+ onServiceClusterReceived(_eventKey, _data) {
65
+ return;
66
+ }
67
+ }
68
+ var _default = exports.default = Service;
@@ -0,0 +1,8 @@
1
+ import { StaticSingleton } from '../../contracts/singleton';
2
+ import Managed from './managed';
3
+ declare abstract class Singleton extends Managed {
4
+ static instance: Singleton;
5
+ static singleton<S extends Singleton>(this: StaticSingleton<S>): S;
6
+ }
7
+ export default Singleton;
8
+ //# sourceMappingURL=singleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../../src/app/classes/singleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,OAAO,MAAM,WAAW,CAAC;AAWhC,uBAAe,SAAU,SAAQ,OAAO;IAEtC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;WAEb,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,GAE3C,CAAC;CAE5B;AAED,eAAe,SAAS,CAAC"}