@boarteam/boar-pack-common-backend 4.0.0 → 5.1.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 (86) hide show
  1. package/dist/index.js +46 -0
  2. package/dist/index.js.map +1 -0
  3. package/dist/modules/cluster/cluster.config.d.ts +11 -0
  4. package/dist/modules/cluster/cluster.config.js +47 -0
  5. package/dist/modules/cluster/cluster.config.js.map +1 -0
  6. package/dist/modules/cluster/cluster.interface.d.ts +22 -0
  7. package/dist/modules/cluster/cluster.interface.js +3 -0
  8. package/dist/modules/cluster/cluster.interface.js.map +1 -0
  9. package/dist/modules/cluster/cluster.module.d.ts +11 -0
  10. package/dist/modules/cluster/cluster.module.js +60 -0
  11. package/dist/modules/cluster/cluster.module.js.map +1 -0
  12. package/dist/modules/cluster/cluster.service.d.ts +18 -0
  13. package/dist/modules/cluster/cluster.service.js +151 -0
  14. package/dist/modules/cluster/cluster.service.js.map +1 -0
  15. package/dist/modules/cluster/index.js +21 -0
  16. package/dist/modules/cluster/index.js.map +1 -0
  17. package/dist/modules/schedule/schedule.module.d.ts +3 -0
  18. package/dist/modules/schedule/schedule.module.js +37 -0
  19. package/dist/modules/schedule/schedule.module.js.map +1 -0
  20. package/dist/modules/schedule/schedule.service.d.ts +11 -0
  21. package/dist/modules/schedule/schedule.service.js +52 -0
  22. package/dist/modules/schedule/schedule.service.js.map +1 -0
  23. package/dist/modules/scrypt/scrypt.config.d.ts +11 -0
  24. package/dist/modules/scrypt/scrypt.config.js +46 -0
  25. package/dist/modules/scrypt/scrypt.config.js.map +1 -0
  26. package/dist/modules/scrypt/scrypt.module.d.ts +2 -0
  27. package/dist/modules/scrypt/scrypt.module.js +35 -0
  28. package/dist/modules/scrypt/scrypt.module.js.map +1 -0
  29. package/dist/modules/scrypt/scrypt.service.d.ts +9 -0
  30. package/dist/modules/scrypt/scrypt.service.js +47 -0
  31. package/dist/modules/scrypt/scrypt.service.js.map +1 -0
  32. package/dist/modules/websockets/dto/websockets.dto.d.ts +11 -0
  33. package/dist/modules/websockets/dto/websockets.dto.js +7 -0
  34. package/dist/modules/websockets/dto/websockets.dto.js.map +1 -0
  35. package/{src/modules/websockets/index.ts → dist/modules/websockets/index.d.ts} +1 -0
  36. package/dist/modules/websockets/index.js +20 -0
  37. package/dist/modules/websockets/index.js.map +1 -0
  38. package/dist/modules/websockets/websockets.clients.d.ts +27 -0
  39. package/dist/modules/websockets/websockets.clients.js +154 -0
  40. package/dist/modules/websockets/websockets.clients.js.map +1 -0
  41. package/dist/modules/websockets/websockets.exception-filter.d.ts +5 -0
  42. package/dist/modules/websockets/websockets.exception-filter.js +30 -0
  43. package/dist/modules/websockets/websockets.exception-filter.js.map +1 -0
  44. package/dist/modules/websockets/websockets.module.d.ts +2 -0
  45. package/dist/modules/websockets/websockets.module.js +25 -0
  46. package/dist/modules/websockets/websockets.module.js.map +1 -0
  47. package/dist/tools/ApiError.d.ts +8 -0
  48. package/dist/tools/ApiError.js +5 -0
  49. package/dist/tools/ApiError.js.map +1 -0
  50. package/{src/tools/index.ts → dist/tools/index.d.ts} +1 -1
  51. package/dist/tools/index.js +22 -0
  52. package/dist/tools/index.js.map +1 -0
  53. package/dist/tools/named-logger.d.ts +6 -0
  54. package/dist/tools/named-logger.js +15 -0
  55. package/dist/tools/named-logger.js.map +1 -0
  56. package/dist/tools/select-query-builder.extension.d.ts +9 -0
  57. package/dist/tools/select-query-builder.extension.js +18 -0
  58. package/dist/tools/select-query-builder.extension.js.map +1 -0
  59. package/dist/tools/typeorm.execption-filter.d.ts +9 -0
  60. package/dist/tools/typeorm.execption-filter.js +62 -0
  61. package/dist/tools/typeorm.execption-filter.js.map +1 -0
  62. package/dist/tools/virtual-column.decorator.d.ts +3 -0
  63. package/dist/tools/virtual-column.decorator.js +14 -0
  64. package/dist/tools/virtual-column.decorator.js.map +1 -0
  65. package/dist/tsconfig.build.tsbuildinfo +1 -0
  66. package/package.json +6 -4
  67. package/src/modules/cluster/cluster.config.ts +0 -38
  68. package/src/modules/cluster/cluster.interface.ts +0 -25
  69. package/src/modules/cluster/cluster.module.ts +0 -47
  70. package/src/modules/cluster/cluster.service.ts +0 -178
  71. package/src/modules/schedule/schedule.module.ts +0 -18
  72. package/src/modules/schedule/schedule.service.ts +0 -43
  73. package/src/modules/scrypt/scrypt.config.ts +0 -36
  74. package/src/modules/scrypt/scrypt.module.ts +0 -20
  75. package/src/modules/scrypt/scrypt.service.ts +0 -41
  76. package/src/modules/websockets/dto/websockets.dto.ts +0 -12
  77. package/src/modules/websockets/websockets.clients.ts +0 -164
  78. package/src/modules/websockets/websockets.exception-filter.ts +0 -19
  79. package/src/modules/websockets/websockets.module.ts +0 -13
  80. package/src/tools/ApiError.ts +0 -18
  81. package/src/tools/named-logger.ts +0 -14
  82. package/src/tools/select-query-builder.extension.ts +0 -28
  83. package/src/tools/typeorm.execption-filter.ts +0 -56
  84. package/src/tools/virtual-column.decorator.ts +0 -13
  85. /package/{src/index.ts → dist/index.d.ts} +0 -0
  86. /package/{src/modules/cluster/index.ts → dist/modules/cluster/index.d.ts} +0 -0
package/dist/index.js ADDED
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
+ };
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.Tools = void 0;
40
+ __exportStar(require("./modules/scrypt/scrypt.module"), exports);
41
+ __exportStar(require("./modules/scrypt/scrypt.service"), exports);
42
+ __exportStar(require("./modules/schedule/schedule.module"), exports);
43
+ __exportStar(require("./modules/cluster"), exports);
44
+ __exportStar(require("./modules/websockets"), exports);
45
+ exports.Tools = __importStar(require("./tools"));
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAA+C;AAC/C,kEAAgD;AAChD,qEAAmD;AACnD,oDAAkC;AAClC,uDAAqC;AACrC,iDAAiC"}
@@ -0,0 +1,11 @@
1
+ import { ConfigService } from '@nestjs/config';
2
+ export type TClusterConfig = {
3
+ port: number;
4
+ worker?: string;
5
+ disableCluster?: boolean;
6
+ };
7
+ export declare class ClusterConfigService {
8
+ private configService;
9
+ constructor(configService: ConfigService);
10
+ get config(): TClusterConfig;
11
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ClusterConfigService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const config_1 = require("@nestjs/config");
18
+ const node_cluster_1 = __importDefault(require("node:cluster"));
19
+ let ClusterConfigService = class ClusterConfigService {
20
+ constructor(configService) {
21
+ this.configService = configService;
22
+ }
23
+ get config() {
24
+ const port = Number.parseInt(this.configService.get('PORT') || '');
25
+ const worker = this.configService.get('WORKER');
26
+ const disableCluster = this.configService.get('DISABLE_CLUSTER') === 'true';
27
+ if (!disableCluster) {
28
+ if (!port) {
29
+ throw new Error('PORT env variable is not set');
30
+ }
31
+ if (node_cluster_1.default.isWorker && !worker) {
32
+ throw new Error('WORKER env variable is not set');
33
+ }
34
+ }
35
+ return {
36
+ port,
37
+ worker,
38
+ disableCluster,
39
+ };
40
+ }
41
+ };
42
+ exports.ClusterConfigService = ClusterConfigService;
43
+ exports.ClusterConfigService = ClusterConfigService = __decorate([
44
+ (0, common_1.Injectable)(),
45
+ __metadata("design:paramtypes", [config_1.ConfigService])
46
+ ], ClusterConfigService);
47
+ //# sourceMappingURL=cluster.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster.config.js","sourceRoot":"","sources":["../../../src/modules/cluster/cluster.config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAA+C;AAC/C,gEAAmC;AAS5B,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAChD,CAAC;IAED,IAAI,MAAM;QACR,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,QAAQ,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,iBAAiB,CAAC,KAAK,MAAM,CAAC;QAEpF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YAED,IAAI,sBAAO,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACpD,CAAC;QAEH,CAAC;QAED,OAAO;YACL,IAAI;YACJ,MAAM;YACN,cAAc;SACf,CAAC;IACJ,CAAC;CACF,CAAA;AA1BY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;qCAEwB,sBAAa;GADrC,oBAAoB,CA0BhC"}
@@ -0,0 +1,22 @@
1
+ import { Cluster } from "node:cluster";
2
+ import { Worker } from "cluster";
3
+ export interface WorkerSettings {
4
+ workerId: string;
5
+ workerName?: string;
6
+ portIncrement: number | null;
7
+ port?: number | null;
8
+ extraEnv?: Record<string, string>;
9
+ }
10
+ export interface ClusterSettings {
11
+ clusterId: string;
12
+ appRole: string;
13
+ restartDelay?: number;
14
+ }
15
+ export interface ClusterInterface {
16
+ getSettings(): Promise<ClusterSettings>;
17
+ getWorkersSettings(): Promise<WorkerSettings[]>;
18
+ onWorkerRun?(worker: WorkerSettings, vars: Record<string, string>): void;
19
+ onWorkerExit?(worker: WorkerSettings, code: number, signal: string): void;
20
+ onWorkerListening?(worker: WorkerSettings): void;
21
+ onClusterMessage?(cluster: Cluster, worker: Worker, message: any): void;
22
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=cluster.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster.interface.js","sourceRoot":"","sources":["../../../src/modules/cluster/cluster.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { OnApplicationBootstrap } from '@nestjs/common';
2
+ import { ClusterService } from "./cluster.service";
3
+ import { ClusterConfigService } from "./cluster.config";
4
+ export declare class ClusterModule implements OnApplicationBootstrap {
5
+ private readonly clusterService;
6
+ private readonly configService;
7
+ private readonly logger;
8
+ private config;
9
+ constructor(clusterService: ClusterService, configService: ClusterConfigService);
10
+ onApplicationBootstrap(): Promise<void>;
11
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var ClusterModule_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ClusterModule = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const cluster_service_1 = require("./cluster.service");
16
+ const process_1 = require("process");
17
+ const config_1 = require("@nestjs/config");
18
+ const cluster_config_1 = require("./cluster.config");
19
+ let ClusterModule = ClusterModule_1 = class ClusterModule {
20
+ constructor(clusterService, configService) {
21
+ this.clusterService = clusterService;
22
+ this.configService = configService;
23
+ this.logger = new common_1.Logger(ClusterModule_1.name);
24
+ this.config = configService.config;
25
+ }
26
+ async onApplicationBootstrap() {
27
+ if (this.config.disableCluster) {
28
+ this.logger.debug('Cluster is disabled');
29
+ return;
30
+ }
31
+ (0, process_1.nextTick)(async () => {
32
+ try {
33
+ await this.clusterService.runClusters();
34
+ }
35
+ catch (e) {
36
+ this.logger.error('Error while running clusters');
37
+ this.logger.error(e, e.stack);
38
+ }
39
+ });
40
+ }
41
+ };
42
+ exports.ClusterModule = ClusterModule;
43
+ exports.ClusterModule = ClusterModule = ClusterModule_1 = __decorate([
44
+ (0, common_1.Module)({
45
+ imports: [
46
+ config_1.ConfigModule,
47
+ ],
48
+ providers: [
49
+ cluster_config_1.ClusterConfigService,
50
+ cluster_service_1.ClusterService,
51
+ ],
52
+ exports: [
53
+ cluster_service_1.ClusterService,
54
+ cluster_config_1.ClusterConfigService,
55
+ ],
56
+ }),
57
+ __metadata("design:paramtypes", [cluster_service_1.ClusterService,
58
+ cluster_config_1.ClusterConfigService])
59
+ ], ClusterModule);
60
+ //# sourceMappingURL=cluster.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster.module.js","sourceRoot":"","sources":["../../../src/modules/cluster/cluster.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAwE;AACxE,uDAAmD;AACnD,qCAAmC;AACnC,2CAA8C;AAC9C,qDAAwE;AAejE,IAAM,aAAa,qBAAnB,MAAM,aAAa;IAIxB,YACmB,cAA8B,EAC9B,aAAmC;QADnC,mBAAc,GAAd,cAAc,CAAgB;QAC9B,kBAAa,GAAb,aAAa,CAAsB;QALrC,WAAM,GAAG,IAAI,eAAM,CAAC,eAAa,CAAC,IAAI,CAAC,CAAC;QAOvD,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAGD,IAAA,kBAAQ,EAAC,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YAC1C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA3BY,sCAAa;wBAAb,aAAa;IAbzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,qBAAY;SACb;QACD,SAAS,EAAE;YACT,qCAAoB;YACpB,gCAAc;SACf;QACD,OAAO,EAAE;YACP,gCAAc;YACd,qCAAoB;SACrB;KACF,CAAC;qCAMmC,gCAAc;QACf,qCAAoB;GAN3C,aAAa,CA2BzB"}
@@ -0,0 +1,18 @@
1
+ import { ClusterInterface } from "./cluster.interface";
2
+ import { ClusterConfigService } from "./cluster.config";
3
+ export declare class ClusterService {
4
+ private readonly configService;
5
+ private readonly logger;
6
+ private readonly STOP_WORKER;
7
+ private readonly config;
8
+ private workersByClusters;
9
+ constructor(configService: ClusterConfigService);
10
+ addCluster(cluster: ClusterInterface): void;
11
+ runClusters(): Promise<void>;
12
+ private runCluster;
13
+ private runWorker;
14
+ setWorkerState(cluster: ClusterInterface, workerId: string, state: boolean): Promise<void>;
15
+ private startWorker;
16
+ private stopWorker;
17
+ private updateWorker;
18
+ }
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ var ClusterService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.ClusterService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const node_cluster_1 = __importDefault(require("node:cluster"));
19
+ const cluster_config_1 = require("./cluster.config");
20
+ let ClusterService = ClusterService_1 = class ClusterService {
21
+ constructor(configService) {
22
+ this.configService = configService;
23
+ this.logger = new common_1.Logger(ClusterService_1.name);
24
+ this.STOP_WORKER = 'SIGKILL';
25
+ this.workersByClusters = new Map();
26
+ this.config = this.configService.config;
27
+ }
28
+ addCluster(cluster) {
29
+ this.workersByClusters.set(cluster, new Map());
30
+ }
31
+ async runClusters() {
32
+ const clusters = Array.from(this.workersByClusters.keys());
33
+ await Promise.allSettled(clusters.map(cluster => this.runCluster(cluster)));
34
+ }
35
+ async runCluster(runningCluster) {
36
+ const clusterSettings = await runningCluster.getSettings();
37
+ const workersSettings = await runningCluster.getWorkersSettings();
38
+ workersSettings.forEach(settings => this.runWorker({
39
+ runningCluster,
40
+ clusterSettings,
41
+ workerSettings: settings
42
+ }));
43
+ }
44
+ runWorker({ runningCluster, clusterSettings, workerSettings, callback, }) {
45
+ var _a;
46
+ const clusterWorkers = this.workersByClusters.get(runningCluster);
47
+ if (!clusterWorkers) {
48
+ throw new Error(`Cluster ${runningCluster.constructor.name} is not found`);
49
+ }
50
+ const workerName = workerSettings.workerName || workerSettings.workerId;
51
+ this.logger.log(`Starting worker ${workerName}...`);
52
+ const vars = Object.assign({ APP_ROLE: clusterSettings.appRole, WORKER: workerSettings.workerId, WORKER_NAME: workerName }, workerSettings.extraEnv);
53
+ if (workerSettings.port) {
54
+ vars.PORT = String(workerSettings.port);
55
+ }
56
+ else if (workerSettings.portIncrement !== null) {
57
+ vars.PORT = String(this.config.port + workerSettings.portIncrement);
58
+ }
59
+ (_a = runningCluster.onWorkerRun) === null || _a === void 0 ? void 0 : _a.call(runningCluster, workerSettings, vars);
60
+ const workerProcess = node_cluster_1.default.fork(vars);
61
+ clusterWorkers.set(workerProcess.id, {
62
+ worker: workerProcess,
63
+ workerVars: vars,
64
+ });
65
+ node_cluster_1.default.on('message', (worker, message) => {
66
+ var _a;
67
+ (_a = runningCluster.onClusterMessage) === null || _a === void 0 ? void 0 : _a.call(runningCluster, node_cluster_1.default, worker, message);
68
+ });
69
+ workerProcess.on('exit', (code, signal) => {
70
+ var _a;
71
+ clusterWorkers.delete(workerProcess.id);
72
+ (_a = runningCluster.onWorkerExit) === null || _a === void 0 ? void 0 : _a.call(runningCluster, workerSettings, code, signal);
73
+ this.logger.error(`Worker ${workerName} died with code ${code} and signal ${signal}`);
74
+ if (signal === this.STOP_WORKER) {
75
+ this.logger.log(`Worker ${workerName} was stopped and will not be restarted`);
76
+ return;
77
+ }
78
+ if (typeof clusterSettings.restartDelay === 'undefined') {
79
+ this.logger.log(`Restarting worker ${workerName} without delay...`);
80
+ this.startWorker(runningCluster, workerSettings.workerId).catch(err => {
81
+ this.logger.error(`Failed to restart worker ${workerName}: ${err}`);
82
+ });
83
+ }
84
+ else {
85
+ this.logger.log(`Worker ${workerName} will be restarted in ${clusterSettings.restartDelay}ms...`);
86
+ setTimeout(() => {
87
+ this.logger.log(`Restarting worker ${workerName}...`);
88
+ this.startWorker(runningCluster, workerSettings.workerId).catch(err => {
89
+ this.logger.error(`Failed to restart worker ${workerName}: ${err}`);
90
+ });
91
+ }, clusterSettings.restartDelay);
92
+ }
93
+ });
94
+ workerProcess.once('listening', () => {
95
+ var _a;
96
+ this.logger.log(`Worker ${workerName} started`);
97
+ callback === null || callback === void 0 ? void 0 : callback();
98
+ (_a = runningCluster.onWorkerListening) === null || _a === void 0 ? void 0 : _a.call(runningCluster, workerSettings);
99
+ });
100
+ }
101
+ async setWorkerState(cluster, workerId, state) {
102
+ const workers = this.workersByClusters.get(cluster);
103
+ if (!workers) {
104
+ throw new common_1.NotFoundException(`Cluster ${cluster.constructor.name} is not found`);
105
+ }
106
+ const workerDescriptor = Array.from(workers.values()).find(worker => worker.workerVars.WORKER === workerId);
107
+ if (!workerDescriptor) {
108
+ if (state) {
109
+ await this.startWorker(cluster, workerId);
110
+ }
111
+ else {
112
+ this.logger.log(`Worker ${workerId} is not found and should be stopped - doing nothing`);
113
+ }
114
+ }
115
+ else {
116
+ if (state) {
117
+ await this.updateWorker(workerDescriptor.worker, workerId);
118
+ }
119
+ else {
120
+ await this.stopWorker(workerDescriptor.worker, workerId);
121
+ }
122
+ }
123
+ }
124
+ async startWorker(runningCluster, workerId) {
125
+ const clusterSettings = await runningCluster.getSettings();
126
+ const workersSettings = await runningCluster.getWorkersSettings();
127
+ const workerSettings = workersSettings.find(settings => settings.workerId === workerId);
128
+ if (!workerSettings) {
129
+ throw new common_1.NotFoundException(`Settings for worker ${workerId} are not found`);
130
+ }
131
+ this.runWorker({
132
+ runningCluster,
133
+ clusterSettings,
134
+ workerSettings,
135
+ });
136
+ }
137
+ async stopWorker(worker, workerId) {
138
+ this.logger.log(`Stopping worker ${workerId}...`);
139
+ worker.kill(this.STOP_WORKER);
140
+ }
141
+ async updateWorker(worker, workerId) {
142
+ this.logger.log(`Updating worker ${workerId} by restarting...`);
143
+ worker.kill();
144
+ }
145
+ };
146
+ exports.ClusterService = ClusterService;
147
+ exports.ClusterService = ClusterService = ClusterService_1 = __decorate([
148
+ (0, common_1.Injectable)(),
149
+ __metadata("design:paramtypes", [cluster_config_1.ClusterConfigService])
150
+ ], ClusterService);
151
+ //# sourceMappingURL=cluster.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster.service.js","sourceRoot":"","sources":["../../../src/modules/cluster/cluster.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAuE;AAEvE,gEAAmC;AACnC,qDAAwE;AAajE,IAAM,cAAc,sBAApB,MAAM,cAAc;IAUzB,YACmB,aAAmC;QAAnC,kBAAa,GAAb,aAAa,CAAsB;QAVrC,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;QACzC,gBAAW,GAAG,SAAS,CAAC;QAGjC,sBAAiB,GAGnB,IAAI,GAAG,EAAE,CAAC;QAKd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;IAC1C,CAAC;IAEM,UAAU,CAAC,OAAyB;QACzC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,cAAgC;QACvD,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,CAAC;QAC3D,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,kBAAkB,EAAE,CAAC;QAClE,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;YACjD,cAAc;YACd,eAAe;YACf,cAAc,EAAE,QAAQ;SACzB,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,SAAS,CAAC,EAChB,cAAc,EACd,eAAe,EACf,cAAc,EACd,QAAQ,GAMT;;QACC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAElE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,WAAW,cAAc,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,IAAI,cAAc,CAAC,QAAQ,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,UAAU,KAAK,CAAC,CAAC;QAEpD,MAAM,IAAI,mBACR,QAAQ,EAAE,eAAe,CAAC,OAAO,EACjC,MAAM,EAAE,cAAc,CAAC,QAAQ,EAC/B,WAAW,EAAE,UAAU,IACpB,cAAc,CAAC,QAAQ,CAC3B,CAAA;QAED,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,cAAc,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;QACtE,CAAC;QAED,MAAA,cAAc,CAAC,WAAW,+DAAG,cAAc,EAAE,IAAI,CAAC,CAAC;QAEnD,MAAM,aAAa,GAAG,sBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE;YACnC,MAAM,EAAE,aAAa;YACrB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,sBAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;;YACxC,MAAA,cAAc,CAAC,gBAAgB,+DAAG,sBAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAA;QAEF,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;;YACxC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACxC,MAAA,cAAc,CAAC,YAAY,+DAAG,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAE5D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,UAAU,mBAAmB,IAAI,eAAe,MAAM,EAAE,CAAC,CAAC;YAEtF,IAAI,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,UAAU,wCAAwC,CAAC,CAAC;gBAC9E,OAAO;YACT,CAAC;YAED,IAAI,OAAO,eAAe,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;gBACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,UAAU,mBAAmB,CAAC,CAAC;gBACpE,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACpE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,UAAU,KAAK,GAAG,EAAE,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,UAAU,yBAAyB,eAAe,CAAC,YAAY,OAAO,CAAC,CAAC;gBAClG,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,UAAU,KAAK,CAAC,CAAC;oBACtD,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACpE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,UAAU,KAAK,GAAG,EAAE,CAAC,CAAC;oBACtE,CAAC,CAAC,CAAC;gBACL,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;;YACnC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,UAAU,UAAU,CAAC,CAAC;YAChD,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,EAAI,CAAC;YACb,MAAA,cAAc,CAAC,iBAAiB,+DAAG,cAAc,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,OAAyB,EAAE,QAAgB,EAAE,KAAc;QACrF,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,0BAAiB,CAAC,WAAW,OAAO,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAC5G,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,QAAQ,qDAAqD,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,cAAgC,EAAE,QAAgB;QAC1E,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,CAAC;QAC3D,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,kBAAkB,EAAE,CAAC;QAClE,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QAExF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,0BAAiB,CAAC,uBAAuB,QAAQ,gBAAgB,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,CAAC,SAAS,CAAC;YACb,cAAc;YACd,eAAe;YACf,cAAc;SACf,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,QAAgB;QACvD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,QAAQ,KAAK,CAAC,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,QAAgB;QACzD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,QAAQ,mBAAmB,CAAC,CAAC;QAChE,MAAM,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;CACF,CAAA;AAjKY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;qCAYuB,qCAAoB;GAX3C,cAAc,CAiK1B"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./cluster.config"), exports);
18
+ __exportStar(require("./cluster.interface"), exports);
19
+ __exportStar(require("./cluster.module"), exports);
20
+ __exportStar(require("./cluster.service"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/cluster/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,sDAAoC;AACpC,mDAAiC;AACjC,oDAAkC"}
@@ -0,0 +1,3 @@
1
+ export declare class ScheduleModule {
2
+ constructor();
3
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ScheduleModule = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const schedule_1 = require("@nestjs/schedule");
18
+ const schedule_service_1 = __importDefault(require("./schedule.service"));
19
+ let ScheduleModule = class ScheduleModule {
20
+ constructor() { }
21
+ };
22
+ exports.ScheduleModule = ScheduleModule;
23
+ exports.ScheduleModule = ScheduleModule = __decorate([
24
+ (0, common_1.Module)({
25
+ imports: [
26
+ schedule_1.ScheduleModule.forRoot(),
27
+ ],
28
+ providers: [
29
+ schedule_service_1.default
30
+ ],
31
+ exports: [
32
+ schedule_service_1.default,
33
+ ],
34
+ }),
35
+ __metadata("design:paramtypes", [])
36
+ ], ScheduleModule);
37
+ //# sourceMappingURL=schedule.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.module.js","sourceRoot":"","sources":["../../../src/modules/schedule/schedule.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAwC;AACxC,+CAAwE;AACxE,0EAAiD;AAa1C,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,gBAAe,CAAC;CACjB,CAAA;AAFY,wCAAc;yBAAd,cAAc;IAX1B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,yBAAkB,CAAC,OAAO,EAAE;SAC7B;QACD,SAAS,EAAE;YACT,0BAAe;SAChB;QACD,OAAO,EAAE;YACP,0BAAe;SAChB;KACF,CAAC;;GACW,cAAc,CAE1B"}
@@ -0,0 +1,11 @@
1
+ import { OnApplicationBootstrap } from "@nestjs/common";
2
+ import { SchedulerRegistry } from "@nestjs/schedule";
3
+ export declare class ScheduleService implements OnApplicationBootstrap {
4
+ private schedulerRegistry;
5
+ constructor(schedulerRegistry: SchedulerRegistry);
6
+ onApplicationBootstrap(): void;
7
+ private stopAllCronJobs;
8
+ private deleteAllIntervals;
9
+ private deleteAllTimeouts;
10
+ }
11
+ export default ScheduleService;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ScheduleService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const schedule_1 = require("@nestjs/schedule");
15
+ let ScheduleService = class ScheduleService {
16
+ constructor(schedulerRegistry) {
17
+ this.schedulerRegistry = schedulerRegistry;
18
+ }
19
+ onApplicationBootstrap() {
20
+ const isDisabled = process.env.SWAGGER === 'true';
21
+ if (isDisabled) {
22
+ this.stopAllCronJobs();
23
+ this.deleteAllIntervals();
24
+ this.deleteAllTimeouts();
25
+ }
26
+ }
27
+ stopAllCronJobs() {
28
+ const jobs = this.schedulerRegistry.getCronJobs();
29
+ jobs.forEach(job => {
30
+ job.stop();
31
+ });
32
+ }
33
+ deleteAllIntervals() {
34
+ const intervals = this.schedulerRegistry.getIntervals();
35
+ intervals.forEach(key => {
36
+ this.schedulerRegistry.deleteInterval(key);
37
+ });
38
+ }
39
+ deleteAllTimeouts() {
40
+ const timeouts = this.schedulerRegistry.getTimeouts();
41
+ timeouts.forEach(key => {
42
+ this.schedulerRegistry.deleteTimeout(key);
43
+ });
44
+ }
45
+ };
46
+ exports.ScheduleService = ScheduleService;
47
+ exports.ScheduleService = ScheduleService = __decorate([
48
+ (0, common_1.Injectable)(),
49
+ __metadata("design:paramtypes", [schedule_1.SchedulerRegistry])
50
+ ], ScheduleService);
51
+ exports.default = ScheduleService;
52
+ //# sourceMappingURL=schedule.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.service.js","sourceRoot":"","sources":["../../../src/modules/schedule/schedule.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAoE;AACpE,+CAAqD;AAG9C,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YAAoB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;IACxD,CAAC;IAED,sBAAsB;QACpB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,MAAM,CAAC;QAElD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,eAAe;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAElD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACf,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,CAAC,CACF,CAAA;IACH,CAAC;IAEO,kBAAkB;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;QACxD,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;QACtD,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACrB,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AApCY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAE4B,4BAAiB;GAD7C,eAAe,CAoC3B;AAED,kBAAe,eAAe,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ConfigService } from '@nestjs/config';
2
+ export type TScryptConfig = {
3
+ salt: string;
4
+ iv: string;
5
+ };
6
+ export declare class ScryptConfigService {
7
+ private configService;
8
+ private ivSchema;
9
+ constructor(configService: ConfigService);
10
+ get config(): TScryptConfig;
11
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ScryptConfigService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const config_1 = require("@nestjs/config");
18
+ const joi_1 = __importDefault(require("joi"));
19
+ let ScryptConfigService = class ScryptConfigService {
20
+ constructor(configService) {
21
+ this.configService = configService;
22
+ this.ivSchema = joi_1.default.string().length(16).hex();
23
+ }
24
+ get config() {
25
+ const salt = this.configService.get('SCRYPT_SALT');
26
+ const iv = this.configService.get('SCRYPT_IV');
27
+ if (!salt || !iv) {
28
+ throw new Error('SCRYPT_SALT or SCRYPT_IV env variables are not set');
29
+ }
30
+ const { error } = this.ivSchema.validate(iv);
31
+ if (error) {
32
+ console.error('IV is invalid:', error.details[0].message);
33
+ throw new Error('IV is invalid, check SCRYPT_IV env variable');
34
+ }
35
+ return {
36
+ salt,
37
+ iv,
38
+ };
39
+ }
40
+ };
41
+ exports.ScryptConfigService = ScryptConfigService;
42
+ exports.ScryptConfigService = ScryptConfigService = __decorate([
43
+ (0, common_1.Injectable)(),
44
+ __metadata("design:paramtypes", [config_1.ConfigService])
45
+ ], ScryptConfigService);
46
+ //# sourceMappingURL=scrypt.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrypt.config.js","sourceRoot":"","sources":["../../../src/modules/scrypt/scrypt.config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAA+C;AAC/C,8CAAsB;AAQf,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAG9B,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAFxC,aAAQ,GAAG,aAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAGjD,CAAC;IAED,IAAI,MAAM;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,aAAa,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,WAAW,CAAC,CAAC;QAEvD,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,OAAO;YACL,IAAI;YACJ,EAAE;SACH,CAAC;IACJ,CAAC;CACF,CAAA;AAzBY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;qCAIwB,sBAAa;GAHrC,mBAAmB,CAyB/B"}
@@ -0,0 +1,2 @@
1
+ export declare class ScryptModule {
2
+ }