@haku-sci/utils 1.10.0 → 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 +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/microservice/consul.d.ts +9 -0
- package/dist/microservice/consul.js +45 -0
- package/dist/microservice/consul.js.map +1 -0
- package/dist/microservice/exceptionFilter.d.ts +2 -2
- package/dist/microservice/exceptionFilter.js +3 -3
- package/dist/microservice/exceptionFilter.js.map +1 -1
- package/dist/microservice/microservice.service.d.ts +6 -11
- package/dist/microservice/microservice.service.js +51 -127
- package/dist/microservice/microservice.service.js.map +1 -1
- package/dist/microservice/rpc-exception.interceptor.d.ts +5 -0
- package/dist/microservice/rpc-exception.interceptor.js +28 -0
- package/dist/microservice/rpc-exception.interceptor.js.map +1 -0
- package/dist/microservice/tcp.d.ts +3 -0
- package/dist/microservice/tcp.js +40 -0
- package/dist/microservice/tcp.js.map +1 -0
- package/dist/microservice/tcp.service.d.ts +3 -0
- package/dist/microservice/tcp.service.js +40 -0
- package/dist/microservice/tcp.service.js.map +1 -0
- package/dist/rabbit-mq/rabbit-mq.module.js.map +1 -1
- package/dist/rabbit-mq/rabbit-mq.service.d.ts +1 -0
- package/dist/rabbit-mq/rabbit-mq.service.js +20 -0
- package/dist/rabbit-mq/rabbit-mq.service.js.map +1 -1
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +3 -0
- package/dist/utils.js.map +1 -1
- package/package.json +13 -12
package/dist/index.d.ts
CHANGED
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(
|
|
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(
|
|
18
|
-
this.logger =
|
|
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", [
|
|
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;
|
|
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
|
-
|
|
2
|
-
export declare class MicroserviceService {
|
|
1
|
+
export declare class Microservice {
|
|
3
2
|
private static serverAddress;
|
|
4
|
-
private static
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
private static
|
|
8
|
-
private static
|
|
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.
|
|
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
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class
|
|
19
|
-
static async
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (
|
|
23
|
-
const
|
|
24
|
-
|
|
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
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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,72 +68,11 @@ class MicroserviceService {
|
|
|
83
68
|
port: this.serverAddress.port
|
|
84
69
|
},
|
|
85
70
|
});
|
|
86
|
-
app.useGlobalFilters(new exceptionFilter_1.AllExceptionsFilter(
|
|
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
|
-
payload.sender = await utils.microServiceName();
|
|
129
|
-
let response$ = await client.send(messagePattern, payload).pipe((0, rxjs_1.catchError)(sendErr => (0, rxjs_1.throwError)(() => sendErr)));
|
|
130
|
-
const watchdogTimeout = parseInt(process.env.WATCHDOG);
|
|
131
|
-
if (!isNaN(watchdogTimeout) && watchdogTimeout > 0)
|
|
132
|
-
response$ = response$.pipe((0, rxjs_1.timeout)({ first: watchdogTimeout }));
|
|
133
|
-
response$ = response$.pipe((0, rxjs_1.defaultIfEmpty)(null));
|
|
134
|
-
return await (0, rxjs_1.lastValueFrom)(response$);
|
|
135
|
-
}
|
|
136
|
-
catch (e) {
|
|
137
|
-
if (e.message == "Error: Connection closed" && this.rabbitMQApp) {
|
|
138
|
-
await this.rabbitMQApp.close();
|
|
139
|
-
await this.startRabbitMQMicroService();
|
|
140
|
-
}
|
|
141
|
-
throw e;
|
|
142
|
-
}
|
|
143
|
-
finally {
|
|
144
|
-
try {
|
|
145
|
-
await client.close();
|
|
146
|
-
}
|
|
147
|
-
catch (closeError) {
|
|
148
|
-
console.error("Error closing client:", closeError.message);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
75
|
}
|
|
153
|
-
exports.
|
|
76
|
+
exports.Microservice = Microservice;
|
|
77
|
+
Microservice.serverAddress = { family: 'IPv4', port: 3000, address: null };
|
|
154
78
|
//# sourceMappingURL=microservice.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"microservice.service.js","sourceRoot":"","sources":["../../src/microservice/microservice.service.ts"],"names":[],"mappings":";;;AAAA,
|
|
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,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,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;
|
|
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":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"rabbit-mq.service.js","sourceRoot":"","sources":["../../src/rabbit-mq/rabbit-mq.service.ts"],"names":[],"mappings":"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"}
|
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":"
|
|
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": "
|
|
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": "^
|
|
9
|
-
"@nestjs/
|
|
10
|
-
"
|
|
11
|
-
"@nestjs/
|
|
12
|
-
"@nestjs/
|
|
13
|
-
"pg": "^8.
|
|
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.
|
|
19
|
-
"axios": "^1.
|
|
20
|
-
"
|
|
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": "^
|
|
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"
|