@haku-sci/utils 1.2.9 → 1.3.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/README.md CHANGED
@@ -1,9 +1,35 @@
1
1
  # Description of the utils inside this package
2
2
 
3
- This package is used by Haku-Sci, to handle microservices.
3
+ This package is used by Haku-Sci, to handle different contents.
4
+
5
+ ## Microservices
6
+
4
7
  Loading the class MicroserviceLib, it allows to fetch:
5
8
 
6
9
  * The name of the current microservice
7
10
  * default bootstrap for microservices
8
11
 
9
- if consul is used, and env variabe CONSUL_URI is defined, then the lib allows as well to send messages to other services via TCP, and fetch the response if any.
12
+ ### Consul
13
+
14
+ if consul is used, and env variabe CONSUL_URI is defined, then the lib allows as well:
15
+
16
+ * to send messages to other services via TCP, and fetch the response if any
17
+ * to emit message for all services via RabbitMQ
18
+
19
+ ## Docker
20
+
21
+ the start_docker_services.bat method allows to run all required services from docker:
22
+
23
+ * Consul
24
+ * Neo4j
25
+ * Postgresql
26
+ * RabbitMQ
27
+
28
+ ## launch.json
29
+
30
+ The launch.json file allows to run all services (the project libs must be in the same directory as "services", which contains all services)
31
+
32
+ ## other
33
+
34
+ Finally, the method executeFunction into the utils library lets call dynamically the function of an object, with parameters
35
+ (Format: object as class, function name as string, parameters as dictionary)
@@ -1,8 +1,11 @@
1
- import { INestMicroservice } from '@nestjs/common';
1
+ import { INestApplication } from '@nestjs/common';
2
2
  export declare class MicroserviceService {
3
+ private static serviceAddress;
4
+ private static msName;
3
5
  static projectName(): Promise<string>;
4
6
  private static getServiceURI;
5
7
  static sendTCPMessage(service: any, messagePattern: any, payload?: any): Promise<any>;
8
+ static emitTCPEvent(messagePattern: any, queue?: any, payload?: any): Promise<void>;
6
9
  private static registerService;
7
- static bootstrapMicroservice(appModule: any): Promise<INestMicroservice>;
10
+ static bootstrapMicroservice(appModule: any): Promise<INestApplication>;
8
11
  }
@@ -16,11 +16,15 @@ const microservices_1 = require("@nestjs/microservices");
16
16
  const net = require("net");
17
17
  const axios_1 = require("axios");
18
18
  const rxjs_1 = require("rxjs");
19
+ const HAKU_SCI_EXCHANGE = 'Haku-SciExchange';
19
20
  let MicroserviceService = MicroserviceService_1 = class MicroserviceService {
20
21
  static async projectName() {
21
- var data = await (0, promises_1.readFile)(path.join(process.cwd(), 'package.json'));
22
- const { name } = JSON.parse(data.toString());
23
- return name;
22
+ if (!this.msName) {
23
+ var data = await (0, promises_1.readFile)(path.join(process.cwd(), 'package.json'));
24
+ const { name } = JSON.parse(data.toString());
25
+ this.msName = name;
26
+ }
27
+ return this.msName;
24
28
  }
25
29
  static async getServiceURI(serviceName) {
26
30
  const response = await axios_1.default.get(`${process.env["CONSUL_URL"]}/v1/catalog/service/${serviceName}`);
@@ -47,8 +51,23 @@ let MicroserviceService = MicroserviceService_1 = class MicroserviceService {
47
51
  const result = await (0, rxjs_1.lastValueFrom)(await client.send(messagePattern, payload));
48
52
  return result;
49
53
  }
50
- catch (error) {
51
- throw error;
54
+ finally {
55
+ client.close();
56
+ }
57
+ }
58
+ static async emitTCPEvent(messagePattern, queue, payload) {
59
+ const client = microservices_1.ClientProxyFactory.create({
60
+ options: {
61
+ urls: [`amqp://${process.env["RABBITMQ_URL"]}`],
62
+ queue: queue,
63
+ queueOptions: {
64
+ durable: false,
65
+ },
66
+ exchange: HAKU_SCI_EXCHANGE,
67
+ },
68
+ });
69
+ try {
70
+ client.emit(messagePattern, payload);
52
71
  }
53
72
  finally {
54
73
  client.close();
@@ -75,14 +94,28 @@ let MicroserviceService = MicroserviceService_1 = class MicroserviceService {
75
94
  const server = net.createServer();
76
95
  server.listen(0);
77
96
  await new Promise((resolve) => server.once('listening', resolve));
78
- const address = server.address();
79
- const app = await core_1.NestFactory.createMicroservice(appModule, {
97
+ this.serviceAddress = server.address();
98
+ const app = await core_1.NestFactory.create(appModule);
99
+ app.connectMicroservice({
80
100
  transport: microservices_1.Transport.TCP,
81
101
  options: {
82
- port: address.port
102
+ port: this.serviceAddress.port
83
103
  }
84
104
  });
85
- await app.listen();
105
+ if (process.env["RABBITMQ_URL"]) {
106
+ app.connectMicroservice({
107
+ transport: microservices_1.Transport.RMQ,
108
+ options: {
109
+ urls: [`amqp://${process.env["RABBITMQ_URL"]}`],
110
+ queue: await this.projectName(),
111
+ queueOptions: {
112
+ durable: false,
113
+ },
114
+ },
115
+ });
116
+ }
117
+ await app.startAllMicroservices();
118
+ await app.listen(this.serviceAddress.port);
86
119
  if (process.env["CONSUL_URL"]) {
87
120
  const tcpServer = app.server.server;
88
121
  this.registerService(tcpServer.address());
@@ -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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"}
package/package.json CHANGED
@@ -1,16 +1,13 @@
1
1
  {
2
2
  "name": "@haku-sci/utils",
3
- "version": "1.2.9",
3
+ "version": "1.3.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
8
  "@nestjs/common": "^10.4.1",
9
9
  "@nestjs/microservices": "^10.4.1",
10
- "axios": "^1.7.9",
11
- "utils": "^0.3.1"
12
- },
13
- "dependencies": {
10
+ "utils": "^0.3.1",
14
11
  "@nestjs/typeorm": "^10.0.2",
15
12
  "axios": "^1.7.9"
16
13
  },
@@ -18,12 +15,12 @@
18
15
  "@nestjs/testing": "^10.4.1",
19
16
  "@types/jest": "^29.5.12",
20
17
  "rimraf": "^6.0.1",
21
- "typescript": "^5.7.2"
18
+ "typescript": "^5.7.3"
22
19
  },
23
20
  "scripts": {
24
21
  "test": "echo \"Error: no test specified\" && exit 1",
25
- "build": "tsc",
26
- "clean": "rimraf dist"
22
+ "build": "tsc --build",
23
+ "clean": "tsc --build --clean"
27
24
  },
28
25
  "author": "Nicolas Blexmann",
29
26
  "license": "ISC",
@@ -38,5 +35,10 @@
38
35
  "microservices",
39
36
  "ports",
40
37
  "hosts"
41
- ]
38
+ ],
39
+ "dependencies": {
40
+ "@nestjs/microservices": "^10.4.15",
41
+ "@nestjs/platform-express": "^10.4.15",
42
+ "axios": "^1.7.9"
43
+ }
42
44
  }