@haku-sci/utils 1.9.7 → 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.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './microservice/microservice.service';
2
+ export * from './microservice/tcp.service';
2
3
  export * from './rabbit-mq/rabbit-mq.module';
3
4
  export * from './rabbit-mq/rabbit-mq.service';
4
5
  export * from './utils';
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./microservice/microservice.service"), exports);
18
+ __exportStar(require("./microservice/tcp.service"), exports);
18
19
  __exportStar(require("./rabbit-mq/rabbit-mq.module"), exports);
19
20
  __exportStar(require("./rabbit-mq/rabbit-mq.service"), exports);
20
21
  __exportStar(require("./utils"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sEAAoD;AACpD,+DAA6C;AAC7C,gEAA8C;AAC9C,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sEAAoD;AACpD,6DAA2C;AAC3C,+DAA6C;AAC7C,gEAA8C;AAC9C,0CAAwB"}
@@ -0,0 +1,9 @@
1
+ import * as net from 'net';
2
+ import { Logger } from '@nestjs/common';
3
+ export declare class Consul {
4
+ static registerService(serverAddress: net.AddressInfo, logger: Logger): Promise<void>;
5
+ static getServiceURI(serviceName: string): Promise<{
6
+ host: string;
7
+ port: number;
8
+ }>;
9
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Consul = void 0;
4
+ const axios_1 = require("axios");
5
+ const utils = require("../utils");
6
+ const common_1 = require("@nestjs/common");
7
+ class Consul {
8
+ static async registerService(serverAddress, logger) {
9
+ if (!process.env["CONSUL_URL"])
10
+ return;
11
+ const microServiceName = await utils.microServiceName();
12
+ const serviceData = {
13
+ ID: microServiceName,
14
+ Name: microServiceName,
15
+ Address: serverAddress.address,
16
+ Port: serverAddress.port,
17
+ Check: {
18
+ TCP: `${serverAddress.address}:${serverAddress.port}`,
19
+ Interval: "10s",
20
+ Timeout: "5s",
21
+ DeregisterCriticalServiceAfter: "1m"
22
+ }
23
+ };
24
+ await axios_1.default.put(`${process.env["CONSUL_URL"]}/v1/agent/service/register`, serviceData);
25
+ logger.log(`Service registered with Consul on ${serverAddress.address}:${serverAddress.port}`);
26
+ }
27
+ static async getServiceURI(serviceName) {
28
+ const response = await axios_1.default.get(`${process.env["CONSUL_URL"]}/v1/catalog/service/${serviceName}`);
29
+ const serviceInfo = response.data;
30
+ if (serviceInfo.length > 0) {
31
+ const service = serviceInfo[0];
32
+ const address = service.ServiceAddress || service.Address;
33
+ const port = service.ServicePort;
34
+ return {
35
+ host: address,
36
+ port: port,
37
+ };
38
+ }
39
+ else {
40
+ throw new common_1.ServiceUnavailableException(`Service ${serviceName} not found in Consul catalog`);
41
+ }
42
+ }
43
+ }
44
+ exports.Consul = Consul;
45
+ //# sourceMappingURL=consul.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consul.js","sourceRoot":"","sources":["../../src/microservice/consul.ts"],"names":[],"mappings":";;;AAAA,iCAA0B;AAE1B,kCAAiC;AACjC,2CAAqE;AAErE,MAAa,MAAM;IACf,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,aAA6B,EAAC,MAAa;QACtE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;YAC5B,OAAO;QACT,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACxD,MAAM,WAAW,GAAG;YAClB,EAAE,EAAE,gBAAgB;YACpB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,KAAK,EAAE;gBACL,GAAG,EAAE,GAAG,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE;gBACrD,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,IAAI;gBACb,8BAA8B,EAAE,IAAI;aACrC;SACF,CAAC;QAEF,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAC;QACvF,MAAM,CAAC,GAAG,CAAC,qCAAqC,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,WAAmB;QAC5C,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC;QACnG,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;QAElC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;YAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;YACjC,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,IAAI;aACX,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,oCAA2B,CAAC,WAAW,WAAW,8BAA8B,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;CACJ;AAtCD,wBAsCC"}
@@ -1,7 +1,7 @@
1
- import { ArgumentsHost, RpcExceptionFilter } from '@nestjs/common';
1
+ import { ArgumentsHost, RpcExceptionFilter, Logger } from '@nestjs/common';
2
2
  import { Observable } from 'rxjs';
3
3
  export declare class AllExceptionsFilter implements RpcExceptionFilter<any> {
4
4
  private readonly logger;
5
- constructor(identifier: string);
5
+ constructor(logger: Logger);
6
6
  catch(exception: any, host: ArgumentsHost): Observable<any>;
7
7
  }
@@ -14,8 +14,8 @@ const common_1 = require("@nestjs/common");
14
14
  const microservices_1 = require("@nestjs/microservices");
15
15
  const rxjs_1 = require("rxjs");
16
16
  let AllExceptionsFilter = class AllExceptionsFilter {
17
- constructor(identifier) {
18
- this.logger = new common_1.Logger(identifier);
17
+ constructor(logger) {
18
+ this.logger = logger;
19
19
  this.logger.log('ExceptionsHandler initialized');
20
20
  }
21
21
  catch(exception, host) {
@@ -28,6 +28,6 @@ let AllExceptionsFilter = class AllExceptionsFilter {
28
28
  exports.AllExceptionsFilter = AllExceptionsFilter;
29
29
  exports.AllExceptionsFilter = AllExceptionsFilter = __decorate([
30
30
  (0, common_1.Catch)(),
31
- __metadata("design:paramtypes", [String])
31
+ __metadata("design:paramtypes", [common_1.Logger])
32
32
  ], AllExceptionsFilter);
33
33
  //# sourceMappingURL=exceptionFilter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exceptionFilter.js","sourceRoot":"","sources":["../../src/microservice/exceptionFilter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAiG;AACjG,yDAAqD;AACrD,+BAA8C;AAGvC,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAG9B,YAAY,UAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAc,EAAE,IAAmB;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,YAAY,4BAAY,CAAA,CAAC,CAAA,SAAS,CAAC,QAAQ,EAAS,CAAA,CAAC,CAAA,SAAS,CAAA;QAE5G,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAE7C,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,sBAAa,CAAC,OAAO,EAAC,MAAM,IAAI,GAAG,EAAC,EAAC,WAAW,EAAC,OAAO,EAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;CACF,CAAA;AAhBY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,cAAK,GAAE;;GACK,mBAAmB,CAgB/B"}
1
+ {"version":3,"file":"exceptionFilter.js","sourceRoot":"","sources":["../../src/microservice/exceptionFilter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAiG;AACjG,yDAAqD;AACrD,+BAA8C;AAGvC,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAE9B,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAC,MAAM,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAc,EAAE,IAAmB;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,YAAY,4BAAY,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAS,CAAC,CAAC,CAAC,SAAS,CAAA;QAEhH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAE7C,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,sBAAa,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/F,CAAC;CACF,CAAA;AAfY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,cAAK,GAAE;qCAGc,eAAM;GAFf,mBAAmB,CAe/B"}
@@ -1,14 +1,9 @@
1
- import { INestMicroservice } from '@nestjs/common';
2
- export declare class MicroserviceService {
1
+ export declare class Microservice {
3
2
  private static serverAddress;
4
- private static rabbitMQApp;
5
- private static getServiceURI;
6
- private static detectCloudProvider;
7
- private static registerService;
8
- private static defineServerAddress;
3
+ private static logger;
4
+ static bootstrapMicroservice(appModule: any): Promise<void>;
5
+ static registerHakuSciMessageHandlers(app: any): Promise<void>;
6
+ private static isPortFree;
7
+ private static setServerAddress;
9
8
  private static startMainMicroService;
10
- private static startRabbitMQMicroService;
11
- static get host(): string;
12
- static bootstrapMicroservice(appModule: any): Promise<INestMicroservice>;
13
- static sendTCPMessage(service: any, messagePattern: any, payload?: any): Promise<any>;
14
9
  }
@@ -1,80 +1,65 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MicroserviceService = void 0;
3
+ exports.Microservice = void 0;
4
4
  const common_1 = require("@nestjs/common");
5
5
  const core_1 = require("@nestjs/core");
6
6
  const microservices_1 = require("@nestjs/microservices");
7
7
  const net = require("net");
8
- const axios_1 = require("axios");
9
- const rxjs_1 = require("rxjs");
10
8
  const utils = require("../utils");
11
- const rabbit_mq_module_1 = require("../rabbit-mq/rabbit-mq.module");
12
9
  const exceptionFilter_1 = require("./exceptionFilter");
13
- const cloudChecks = [
14
- { name: 'AWS', url: 'http://169.254.169.254/latest/meta-data/' },
15
- { name: 'Azure', url: 'http://169.254.169.254/metadata/instance?api-version=2021-02-01', headers: { 'Metadata': 'true' } },
16
- { name: 'GCP', url: 'http://metadata.google.internal/computeMetadata/v1/', headers: { 'Metadata-Flavor': 'Google' } },
17
- ];
18
- class MicroserviceService {
19
- static async getServiceURI(serviceName) {
20
- const response = await axios_1.default.get(`${process.env["CONSUL_URL"]}/v1/catalog/service/${serviceName}`);
21
- const serviceInfo = response.data;
22
- if (serviceInfo.length > 0) {
23
- const service = serviceInfo[0];
24
- const address = service.ServiceAddress || service.Address;
25
- const port = service.ServicePort;
26
- return {
27
- host: address,
28
- port: port,
29
- };
30
- }
31
- else {
32
- throw new common_1.ServiceUnavailableException(`Service ${serviceName} not found in Consul catalog`);
10
+ const nestjs_discovery_1 = require("@golevelup/nestjs-discovery");
11
+ const constants_1 = require("@nestjs/common/constants");
12
+ const constants_2 = require("@nestjs/microservices/constants");
13
+ const os = require("os");
14
+ const consul_1 = require("./consul");
15
+ class Microservice {
16
+ static async bootstrapMicroservice(appModule) {
17
+ this.setServerAddress();
18
+ this.logger = new common_1.Logger(await utils.microServiceName());
19
+ if (process.env["RDS_DBNAME"]) {
20
+ const postGresService = require('./postgres.service');
21
+ postGresService.createDatabaseIfNotExists();
33
22
  }
23
+ const app = await this.startMainMicroService(appModule);
24
+ await this.registerHakuSciMessageHandlers(app);
25
+ consul_1.Consul.registerService(this.serverAddress, this.logger);
34
26
  }
35
- static async detectCloudProvider() {
36
- for (const { name, url, headers } of cloudChecks) {
37
- try {
38
- await axios_1.default.get(url, { headers, timeout: 1000 });
39
- return name;
40
- }
41
- catch {
42
- continue;
27
+ static async registerHakuSciMessageHandlers(app) {
28
+ const moduleRef = app.select(nestjs_discovery_1.DiscoveryModule);
29
+ const discoveryService = moduleRef.get(nestjs_discovery_1.DiscoveryService, { strict: false });
30
+ const controllers = await discoveryService.controllers(() => true);
31
+ for (const { instance } of controllers) {
32
+ const resource = Reflect.getMetadata(constants_1.PATH_METADATA, instance.constructor).replace("/", "");
33
+ const prototype = Object.getPrototypeOf(instance);
34
+ for (const propertyName of Object.getOwnPropertyNames(prototype)) {
35
+ const method = prototype[propertyName];
36
+ if (propertyName === 'constructor' || typeof method !== 'function')
37
+ continue;
38
+ const action = Reflect.getMetadata(constants_2.PATTERN_METADATA, method)?.[0];
39
+ if (action) {
40
+ const handler = method.bind(instance);
41
+ app.serverInstance.addHandler([resource, action].join("/"), handler, false);
42
+ }
43
43
  }
44
44
  }
45
- return false;
46
45
  }
47
- static async registerService() {
48
- const microServiceName = await utils.microServiceName();
49
- const serviceData = {
50
- ID: microServiceName,
51
- Name: microServiceName,
52
- Address: this.serverAddress.address,
53
- Port: this.serverAddress.port,
54
- Check: {
55
- TCP: this.host,
56
- Interval: "10s",
57
- Timeout: "5s",
58
- DeregisterCriticalServiceAfter: "1m"
59
- }
60
- };
61
- await axios_1.default.put(`${process.env["CONSUL_URL"]}/v1/agent/service/register`, serviceData);
62
- console.log(`Service registered with Consul on ${this.serverAddress.address}:${this.serverAddress.port}`);
46
+ static isPortFree(port) {
47
+ return new Promise((resolve) => {
48
+ const server = net.createServer()
49
+ .once('error', () => resolve(false))
50
+ .once('listening', () => {
51
+ server.close(() => resolve(true));
52
+ })
53
+ .listen(port);
54
+ });
63
55
  }
64
- static async defineServerAddress() {
65
- if (await this.detectCloudProvider())
66
- return {
67
- address: `haku-sci-${await utils.microServiceName()}-${process.env.BRANCH}.${process.env.AWS_REGION}.elasticbeanstalk.com`,
68
- port: 3000
69
- };
70
- const server = net.createServer();
71
- server.listen(0);
72
- await new Promise((resolve) => server.once('listening', resolve));
73
- const address = server.address();
74
- address.address = 'localhost';
75
- address.family = 'IPv4';
76
- server.close();
77
- this.serverAddress = address;
56
+ static async setServerAddress() {
57
+ while (!this.isPortFree(this.serverAddress.port))
58
+ this.serverAddress.port++;
59
+ this.serverAddress.address = Object.values(os.networkInterfaces())
60
+ .flatMap((iface) => iface ?? [])
61
+ .find((addr) => addr.family === 'IPv4' && !addr.internal)
62
+ .address;
78
63
  }
79
64
  static async startMainMicroService(appModule) {
80
65
  const app = await core_1.NestFactory.createMicroservice(appModule, {
@@ -83,71 +68,11 @@ class MicroserviceService {
83
68
  port: this.serverAddress.port
84
69
  },
85
70
  });
86
- app.useGlobalFilters(new exceptionFilter_1.AllExceptionsFilter(await utils.microServiceName()));
71
+ app.useGlobalFilters(new exceptionFilter_1.AllExceptionsFilter(this.logger));
87
72
  await app.listen();
88
73
  return app;
89
74
  }
90
- static async startRabbitMQMicroService() {
91
- const queue = await utils.microServiceName();
92
- const app = await core_1.NestFactory.createMicroservice(rabbit_mq_module_1.RabbitMqModule, {
93
- transport: microservices_1.Transport.RMQ,
94
- options: {
95
- urls: [process.env.RABBITMQ_URL],
96
- queue: queue,
97
- queueOptions: {
98
- durable: true,
99
- },
100
- noAck: false,
101
- },
102
- });
103
- await app.listen();
104
- return app;
105
- }
106
- static get host() {
107
- return `${this.serverAddress.address}:${this.serverAddress.port}`;
108
- }
109
- static async bootstrapMicroservice(appModule) {
110
- await this.defineServerAddress();
111
- if (process.env["RDS_DBNAME"]) {
112
- const postGresService = require('./postgres.service');
113
- postGresService.createDatabaseIfNotExists();
114
- }
115
- const app = await this.startMainMicroService(appModule);
116
- if (process.env.RABBITMQ_URL)
117
- this.rabbitMQApp = await this.startRabbitMQMicroService();
118
- if (process.env["CONSUL_URL"])
119
- this.registerService();
120
- return app;
121
- }
122
- static async sendTCPMessage(service, messagePattern, payload) {
123
- const client = await microservices_1.ClientProxyFactory.create({
124
- transport: microservices_1.Transport.TCP,
125
- options: await MicroserviceService.getServiceURI(service),
126
- });
127
- try {
128
- let response$ = await client.send(messagePattern, payload).pipe((0, rxjs_1.catchError)(sendErr => (0, rxjs_1.throwError)(() => sendErr)));
129
- const watchdogTimeout = parseInt(process.env.WATCHDOG);
130
- if (!isNaN(watchdogTimeout) && watchdogTimeout > 0)
131
- response$ = response$.pipe((0, rxjs_1.timeout)({ first: watchdogTimeout }));
132
- response$ = response$.pipe((0, rxjs_1.defaultIfEmpty)(null));
133
- return await (0, rxjs_1.lastValueFrom)(response$);
134
- }
135
- catch (e) {
136
- if (e.message == "Error: Connection closed" && this.rabbitMQApp) {
137
- await this.rabbitMQApp.close();
138
- await this.startRabbitMQMicroService();
139
- }
140
- throw e;
141
- }
142
- finally {
143
- try {
144
- await client.close();
145
- }
146
- catch (closeError) {
147
- console.error("Error closing client:", closeError.message);
148
- }
149
- }
150
- }
151
75
  }
152
- exports.MicroserviceService = MicroserviceService;
76
+ exports.Microservice = Microservice;
77
+ Microservice.serverAddress = { family: 'IPv4', port: 3000, address: null };
153
78
  //# sourceMappingURL=microservice.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"microservice.service.js","sourceRoot":"","sources":["../../src/microservice/microservice.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"microservice.service.js","sourceRoot":"","sources":["../../src/microservice/microservice.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
2
+ import { Observable } from 'rxjs';
3
+ export declare class RpcExceptionInterceptor implements NestInterceptor {
4
+ intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
5
+ }
@@ -0,0 +1,28 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.RpcExceptionInterceptor = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const microservices_1 = require("@nestjs/microservices");
12
+ const rxjs_1 = require("rxjs");
13
+ const operators_1 = require("rxjs/operators");
14
+ let RpcExceptionInterceptor = class RpcExceptionInterceptor {
15
+ intercept(context, next) {
16
+ return next.handle().pipe((0, operators_1.catchError)(err => {
17
+ if (err instanceof microservices_1.RpcException)
18
+ return (0, rxjs_1.throwError)(() => err);
19
+ const message = err?.message || 'Internal server error';
20
+ return (0, rxjs_1.throwError)(() => new microservices_1.RpcException({ status: 'error', message }));
21
+ }));
22
+ }
23
+ };
24
+ exports.RpcExceptionInterceptor = RpcExceptionInterceptor;
25
+ exports.RpcExceptionInterceptor = RpcExceptionInterceptor = __decorate([
26
+ (0, common_1.Injectable)()
27
+ ], RpcExceptionInterceptor);
28
+ //# sourceMappingURL=rpc-exception.interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-exception.interceptor.js","sourceRoot":"","sources":["../../src/microservice/rpc-exception.interceptor.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAK0B;AACxB,yDAAiE;AACjE,+BAAgD;AAChD,8CAA0D;AAGnD,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClC,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,IAAA,sBAAU,EAAC,GAAG,CAAC,EAAE;YACf,IAAI,GAAG,YAAY,4BAAY;gBAC7B,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,uBAAuB,CAAC;YACxD,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,4BAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAA;AAXY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;GACA,uBAAuB,CAWnC"}
@@ -0,0 +1,3 @@
1
+ export declare class TCP {
2
+ static sendTCPMessage(service: any, action: string, resource?: string, payload?: any): Promise<any>;
3
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TCP = void 0;
4
+ const microservices_1 = require("@nestjs/microservices");
5
+ const rxjs_1 = require("rxjs");
6
+ const utils = require("../utils");
7
+ const consul_1 = require("./consul");
8
+ class TCP {
9
+ static async sendTCPMessage(service, action, resource, payload) {
10
+ const client = await microservices_1.ClientProxyFactory.create({
11
+ transport: microservices_1.Transport.TCP,
12
+ options: await consul_1.Consul.getServiceURI(service),
13
+ });
14
+ try {
15
+ payload.sender = await utils.microServiceName();
16
+ let response$ = await client.send([resource, action].join("/"), payload).pipe((0, rxjs_1.catchError)(err => {
17
+ const errorPayload = typeof err === 'object' ? err : { message: String(err) };
18
+ return (0, rxjs_1.throwError)(() => new Error(`[${service}] ${errorPayload.message}`));
19
+ }));
20
+ const watchdogTimeout = parseInt(process.env.WATCHDOG);
21
+ if (!isNaN(watchdogTimeout) && watchdogTimeout > 0)
22
+ response$ = response$.pipe((0, rxjs_1.timeout)({ first: watchdogTimeout }));
23
+ response$ = response$.pipe((0, rxjs_1.defaultIfEmpty)(null));
24
+ const result = await (0, rxjs_1.lastValueFrom)(response$);
25
+ if (result?.error)
26
+ throw new Error(`[${service}] ${result.message}`);
27
+ return result;
28
+ }
29
+ finally {
30
+ try {
31
+ await client.close();
32
+ }
33
+ catch (closeError) {
34
+ console.error("Error closing client:", closeError.message);
35
+ }
36
+ }
37
+ }
38
+ }
39
+ exports.TCP = TCP;
40
+ //# sourceMappingURL=tcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../src/microservice/tcp.ts"],"names":[],"mappings":";;;AAAA,yDAAmF;AACnF,+BAAsF;AACtF,kCAAiC;AACjC,qCAAkC;AAElC,MAAa,GAAG;IACZ,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,MAAa,EAAC,QAAgB,EAAE,OAAQ;QACzE,MAAM,MAAM,GAAgB,MAAM,kCAAkB,CAAC,MAAM,CAAC;YACxD,SAAS,EAAE,yBAAS,CAAC,GAAG;YACxB,OAAO,EAAE,MAAM,eAAM,CAAC,aAAa,CAAC,OAAO,CAAC;SAC/C,CAAC,CAAC;QACH,IAAI,CAAC;YACD,OAAO,CAAC,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC/C,IAAI,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CACxE,IAAA,iBAAU,EAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjG,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAAA,CAAC,CAAC,CAChF,CAAC;YACF,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,eAAe,GAAG,CAAC;gBAC9C,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAA,cAAO,EAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;YACpE,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAA,qBAAc,EAAC,IAAI,CAAC,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAa,EAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,MAAM,EAAE,KAAK;gBACb,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,OAAO,MAAM,CAAC;QAClB,CAAC;gBAYO,CAAC;YACL,IAAI,CAAC;gBACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AAxCD,kBAwCC"}
@@ -0,0 +1,3 @@
1
+ export declare class TCPService {
2
+ static sendMessage(service: any, action: string, resource?: string, payload?: any): Promise<any>;
3
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TCPService = void 0;
4
+ const microservices_1 = require("@nestjs/microservices");
5
+ const rxjs_1 = require("rxjs");
6
+ const utils = require("../utils");
7
+ const consul_1 = require("./consul");
8
+ class TCPService {
9
+ static async sendMessage(service, action, resource, payload) {
10
+ const client = await microservices_1.ClientProxyFactory.create({
11
+ transport: microservices_1.Transport.TCP,
12
+ options: await consul_1.Consul.getServiceURI(service),
13
+ });
14
+ try {
15
+ payload.sender = await utils.microServiceName();
16
+ let response$ = await client.send([resource, action].join("/"), payload).pipe((0, rxjs_1.catchError)(err => {
17
+ const errorPayload = typeof err === 'object' ? err : { message: String(err) };
18
+ return (0, rxjs_1.throwError)(() => new Error(`[${service}] ${errorPayload.message}`));
19
+ }));
20
+ const watchdogTimeout = parseInt(process.env.WATCHDOG);
21
+ if (!isNaN(watchdogTimeout) && watchdogTimeout > 0)
22
+ response$ = response$.pipe((0, rxjs_1.timeout)({ first: watchdogTimeout }));
23
+ response$ = response$.pipe((0, rxjs_1.defaultIfEmpty)(null));
24
+ const result = await (0, rxjs_1.lastValueFrom)(response$);
25
+ if (result?.error)
26
+ throw new Error(`[${service}] ${result.message}`);
27
+ return result;
28
+ }
29
+ finally {
30
+ try {
31
+ await client.close();
32
+ }
33
+ catch (closeError) {
34
+ console.error("Error closing client:", closeError.message);
35
+ }
36
+ }
37
+ }
38
+ }
39
+ exports.TCPService = TCPService;
40
+ //# sourceMappingURL=tcp.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tcp.service.js","sourceRoot":"","sources":["../../src/microservice/tcp.service.ts"],"names":[],"mappings":";;;AAAA,yDAAmF;AACnF,+BAAsF;AACtF,kCAAiC;AACjC,qCAAkC;AAElC,MAAa,UAAU;IACnB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,MAAa,EAAC,QAAgB,EAAE,OAAQ;QACtE,MAAM,MAAM,GAAgB,MAAM,kCAAkB,CAAC,MAAM,CAAC;YACxD,SAAS,EAAE,yBAAS,CAAC,GAAG;YACxB,OAAO,EAAE,MAAM,eAAM,CAAC,aAAa,CAAC,OAAO,CAAC;SAC/C,CAAC,CAAC;QACH,IAAI,CAAC;YACD,OAAO,CAAC,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC/C,IAAI,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CACxE,IAAA,iBAAU,EAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjG,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAAA,CAAC,CAAC,CAChF,CAAC;YACF,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,eAAe,GAAG,CAAC;gBAC9C,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAA,cAAO,EAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;YACpE,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAA,qBAAc,EAAC,IAAI,CAAC,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAa,EAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,MAAM,EAAE,KAAK;gBACb,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,OAAO,MAAM,CAAC;QAClB,CAAC;gBAYO,CAAC;YACL,IAAI,CAAC;gBACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AAxCD,gCAwCC"}
@@ -1 +1 @@
1
- {"version":3,"file":"rabbit-mq.module.js","sourceRoot":"","sources":["../../src/rabbit-mq/rabbit-mq.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2DAAsD;AACtD,gEAA4D;AASrD,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IAP1B,IAAA,eAAM,EAAC;QACJ,OAAO,EAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAA,CAAC,CAAA,CAAC,gCAAc,CAAC,OAAO,CAAC;oBACzD,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;iBAC9B,CAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAC;QACT,SAAS,EAAC,CAAC,mCAAe,CAAC;QAC3B,OAAO,EAAC,CAAC,mCAAe,CAAC;KAC5B,CAAC;GACW,cAAc,CAAG"}
1
+ {"version":3,"file":"rabbit-mq.module.js","sourceRoot":"","sources":["../../src/rabbit-mq/rabbit-mq.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2DAAsD;AACtD,gEAA4D;AASrD,IAAM,cAAc,GAApB,MAAM,cAAc;CAAI,CAAA;AAAlB,wCAAc;yBAAd,cAAc;IAP1B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,gCAAc,CAAC,OAAO,CAAC;oBAC9D,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;iBAC9B,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACT,SAAS,EAAE,CAAC,mCAAe,CAAC;QAC5B,OAAO,EAAE,CAAC,mCAAe,CAAC;KAC3B,CAAC;GACW,cAAc,CAAI"}
@@ -8,6 +8,7 @@ export declare class RabbitMqService {
8
8
  amqpConnection: AmqpConnection;
9
9
  projectName: string;
10
10
  ackAttached: boolean;
11
+ private startMicroService;
11
12
  constructor();
12
13
  private get ackQueueName();
13
14
  dispatchMessage(messagePattern: string, userId: string, id: string, payload?: Record<string, any>, requireAck?: boolean): Promise<void>;
@@ -16,16 +16,36 @@ const common_1 = require("@nestjs/common");
16
16
  const rabbitMQutils = require("./constants");
17
17
  const utils = require("../utils");
18
18
  const axios_1 = require("axios");
19
+ const microservices_1 = require("@nestjs/microservices");
20
+ const core_1 = require("@nestjs/core");
21
+ const rabbit_mq_module_1 = require("../rabbit-mq/rabbit-mq.module");
19
22
  const rabbitMqApiAuth = {
20
23
  username: process.env.RABBITMQ_USERNAME,
21
24
  password: process.env.RABBITMQ_PASSWORD,
22
25
  };
23
26
  let RabbitMqService = class RabbitMqService {
27
+ async startMicroService() {
28
+ const queue = await utils.microServiceName();
29
+ const app = await core_1.NestFactory.createMicroservice(rabbit_mq_module_1.RabbitMqModule, {
30
+ transport: microservices_1.Transport.RMQ,
31
+ options: {
32
+ urls: [process.env.RABBITMQ_URL],
33
+ queue: queue,
34
+ queueOptions: {
35
+ durable: true,
36
+ },
37
+ noAck: false,
38
+ },
39
+ });
40
+ await app.listen();
41
+ return app;
42
+ }
24
43
  constructor() {
25
44
  this.waitAckownledge = {};
26
45
  this.ackAttached = false;
27
46
  if (!process.env.RABBITMQ_URL)
28
47
  return;
48
+ this.startMicroService();
29
49
  utils.microServiceName().then(projectName => {
30
50
  this.projectName = projectName;
31
51
  this.amqpConnection = new nestjs_rabbitmq_1.AmqpConnection({
@@ -1 +1 @@
1
- {"version":3,"file":"rabbit-mq.service.js","sourceRoot":"","sources":["../../src/rabbit-mq/rabbit-mq.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rabbit-mq.service.js","sourceRoot":"","sources":["../../src/rabbit-mq/rabbit-mq.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AA0GA,sCA0BC;AAnID,gEAA6E;AAC7E,2CAA4C;AAC5C,6CAA6C;AAC7C,kCAAkC;AAClC,iCAA0B;AAC1B,yDAAuE;AACvE,uCAA2C;AAC3C,oEAA+D;AAC/D,MAAM,eAAe,GAAG;IACpB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IACvC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;CAC1C,CAAC;AAEK,IAAM,eAAe,GAArB,MAAM,eAAe;IAKhB,KAAK,CAAC,iBAAiB;QAC3B,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,kBAAkB,CAAsB,iCAAc,EAAE;YACpF,SAAS,EAAE,yBAAS,CAAC,GAAG;YACxB,OAAO,EAAE;gBACP,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;gBAChC,KAAK,EAAE,KAAK;gBACZ,YAAY,EAAE;oBACZ,OAAO,EAAE,IAAI;iBACd;gBACD,KAAK,EAAE,KAAK;aACb;SACF,CAAC,CAAC;QACH,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC;IACf,CAAC;IACD;QApBA,oBAAe,GAA+E,EAAE,CAAC;QAGjG,gBAAW,GAAY,KAAK,CAAC;QAkBzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY;YACzB,OAAM;QACV,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,KAAK,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACxC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,gCAAc,CAAC;gBACrC,SAAS,EAAE;oBACP;wBACI,IAAI,EAAE,aAAa,CAAC,iBAAiB;wBACrC,IAAI,EAAE,OAAO;qBAChB;iBACJ;gBACD,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;aAChC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC;IAED,IAAY,YAAY;QACpB,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,aAAa,CAAC,SAAS,EAAE,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,cAAsB,EAAE,MAAc,EAAE,EAAU,EAAE,UAA+B,EAAE,EAAE,aAAsB,KAAK;QACpI,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAA;QAC5E,IAAI,CAAgB,CAAA;QACpB,IAAI,UAAU,EAAE,CAAC;YAEb,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBACrE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;oBACzD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;oBACpD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC7C,CAAC,CAAC,CAAC;YACP,CAAC;YAGD,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YAC/C,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;YAAA,CAAC;YAE/C,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;YACxG,IAAI,yBAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAY,EAAE,EAAE,CAClE,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,iBAAiB,IAAI,OAAO,CAAC,WAAW,KAAK,cAAc,CAAC,CAAC,MAAM,CAAC;YAEzG,CAAC,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACtC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,yBAAyB,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;YACxH,CAAC,CAAC,CAAA;YACF,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC;QAAA,CAAC;QACF,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACrG,OAAO,CAAC,CAAC;IACb,CAAC;IAED,OAAO,CAAC,OAAY;QAChB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;IAED,SAAS,CAAC,aAAqB;QAC3B,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC9C,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;YAC9C,CAAC;QAEL,CAAC;IAEL,CAAC;CACJ,CAAA;AA1FY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;;GACA,eAAe,CA0F3B;AAED,SAAgB,aAAa,CAAC,OAA+B;IACzD,OAAO,UAAU,MAAW,EAAE,GAAW,EAAE,UAA8B;QACrE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QACxC,UAAU,CAAC,KAAK,GAAG,KAAK,WAAW,GAAG,IAAW;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC;gBACD,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;YAChD,CAAC;oBACO,CAAC;gBACL,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACrC,IAAI,CAAC;wBACD,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC/D,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;oBAAC,CAAC;gBAClC,CAAC;gBAAA,CAAC;YACN,CAAC;QACL,CAAC,CAAA;QACD,KAAK,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;YAC1C,IAAA,iCAAe,EAAC;gBACZ,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,QAAQ,EAAE,aAAa,CAAC,iBAAiB;gBACzC,KAAK,EAAE,WAAW;aACrB,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC"}
package/dist/utils.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ export declare const HAKU_SCI_RESOURCE = "haku:resource";
2
+ export declare const HAKU_SCI_ACTION = "haku:action";
1
3
  export declare function executeFunction<F extends (...args: any[]) => any>(parent: any, funcName: string, params: Record<string, any>): ReturnType<F>;
2
4
  export declare function getSortedParameters(func: Function, params: Record<string, any>): string[];
3
5
  export declare function microServiceName(): Promise<string>;
package/dist/utils.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HAKU_SCI_ACTION = exports.HAKU_SCI_RESOURCE = void 0;
3
4
  exports.executeFunction = executeFunction;
4
5
  exports.getSortedParameters = getSortedParameters;
5
6
  exports.microServiceName = microServiceName;
@@ -7,6 +8,8 @@ exports.withWatchdog = withWatchdog;
7
8
  const promises_1 = require("fs/promises");
8
9
  const path = require("path");
9
10
  const common_1 = require("@nestjs/common");
11
+ exports.HAKU_SCI_RESOURCE = 'haku:resource';
12
+ exports.HAKU_SCI_ACTION = 'haku:action';
10
13
  function executeFunction(parent, funcName, params) {
11
14
  const func = parent[funcName];
12
15
  const boundFunc = func.bind(parent);
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAIA,0CAUC;AAED,kDAGC;AAeD,4CAYC;AAED,oCAgBC;AAhED,0CAAuC;AACvC,6BAA6B;AAC7B,2CAA2D;AAE3D,SAAgB,eAAe,CAC7B,MAAW,EACX,QAAgB,EAChB,MAA2B;IAE3B,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAGpC,OAAO,SAAS,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAc,EAAE,MAA2B;IAC7E,MAAM,UAAU,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACnD,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAc;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,UAAU,CAAC,CAAC,CAAC;SACjB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAEM,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,MAAM,IAAA,mBAAQ,EACvB,IAAI,CAAC,IAAI,CACP,OAAO,CAAC,GAAG,EAAE,EACb,cAAc,CACf,CACF,CAAA;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,SAAgB,YAAY,CAAI,OAAmB,EAAE,SAAiB;IACpE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,CAAC,IAAI,sBAAa,CAAC,iBAAiB,EAAE,mBAAU,CAAC,eAAe,CAAC,CAAC,CAAC;QAC3E,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,OAAO;aACJ,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAMA,0CAUC;AAED,kDAGC;AAeD,4CAYC;AAED,oCAgBC;AAlED,0CAAuC;AACvC,6BAA6B;AAC7B,2CAA2D;AAC9C,QAAA,iBAAiB,GAAG,eAAe,CAAC;AACpC,QAAA,eAAe,GAAG,aAAa,CAAC;AAE7C,SAAgB,eAAe,CAC7B,MAAW,EACX,QAAgB,EAChB,MAA2B;IAE3B,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAGpC,OAAO,SAAS,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAc,EAAE,MAA2B;IAC7E,MAAM,UAAU,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACnD,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAc;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,UAAU,CAAC,CAAC,CAAC;SACjB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAEM,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,MAAM,IAAA,mBAAQ,EACvB,IAAI,CAAC,IAAI,CACP,OAAO,CAAC,GAAG,EAAE,EACb,cAAc,CACf,CACF,CAAA;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,SAAgB,YAAY,CAAI,OAAmB,EAAE,SAAiB;IACpE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,CAAC,IAAI,sBAAa,CAAC,iBAAiB,EAAE,mBAAU,CAAC,eAAe,CAAC,CAAC,CAAC;QAC3E,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,OAAO;aACJ,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,27 +1,28 @@
1
1
  {
2
2
  "name": "@haku-sci/utils",
3
- "version": "1.9.7",
3
+ "version": "2.0.0",
4
4
  "description": "utils from haku-sci. Library only",
5
5
  "main": "./dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "peerdependencies": {
8
- "@nestjs/common": "^10.4.1",
9
- "@nestjs/microservices": "^10.4.1",
10
- "utils": "^0.3.1",
11
- "@nestjs/typeorm": "^10.0.2",
12
- "@nestjs/platform-express": "^10.4.15",
13
- "pg": "^8.13.1"
8
+ "@nestjs/common": "^11.0.6",
9
+ "@nestjs/core": "^11.0.6",
10
+ "@nestjs/microservices": "^11.0.6",
11
+ "@nestjs/platform-express": "^11.0.6",
12
+ "@nestjs/typeorm": "^11.0.0",
13
+ "pg": "^8.15.6",
14
+ "utils": "^0.3.1"
14
15
  },
15
16
  "dependencies": {
17
+ "@golevelup/nestjs-discovery": "^4.0.3",
16
18
  "@golevelup/nestjs-rabbitmq": "^5.7.0",
17
19
  "amqp-connection-manager": "^4.1.14",
18
- "amqplib": "^0.10.5",
19
- "axios": "^1.7.9",
20
- "pg": "^8.13.1",
21
- "uuid": "^11.0.5"
20
+ "amqplib": "^0.10.8",
21
+ "axios": "^1.9.0",
22
+ "rxjs": "7.8.2"
22
23
  },
23
24
  "devDependencies": {
24
- "@nestjs/testing": "^10.4.1",
25
+ "@nestjs/testing": "^11.0.6",
25
26
  "@types/jest": "^29.5.12",
26
27
  "rimraf": "^6.0.1",
27
28
  "typescript": "^5.7.3"