@spider-mesh/core 1.0.118 → 1.0.120
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/build/src/Encoder.d.ts +4 -9
- package/build/src/Encoder.js +3 -37
- package/build/src/Encoder.js.map +1 -1
- package/build/src/SpiderMesh.d.ts +41 -45
- package/build/src/SpiderMesh.js +215 -273
- package/build/src/SpiderMesh.js.map +1 -1
- package/build/src/builtin-transporter/BuiltinTransporter.d.ts +5 -10
- package/build/src/builtin-transporter/BuiltinTransporter.js +85 -94
- package/build/src/builtin-transporter/BuiltinTransporter.js.map +1 -1
- package/build/src/builtin-transporter/RxjsTcpServer.d.ts +4 -9
- package/build/src/builtin-transporter/RxjsTcpServer.js +25 -25
- package/build/src/builtin-transporter/RxjsTcpServer.js.map +1 -1
- package/build/src/builtin-transporter/RxjsTcpSocket.d.ts +1 -0
- package/build/src/builtin-transporter/RxjsTcpSocket.js +3 -0
- package/build/src/builtin-transporter/RxjsTcpSocket.js.map +1 -1
- package/build/src/builtin-transporter/RxjsUdpServer.d.ts +20 -0
- package/build/src/builtin-transporter/RxjsUdpServer.js +83 -0
- package/build/src/builtin-transporter/RxjsUdpServer.js.map +1 -0
- package/build/src/const.d.ts +1 -0
- package/build/src/const.js +1 -0
- package/build/src/const.js.map +1 -1
- package/build/src/decorators/Microservice.d.ts +3 -1
- package/build/src/interfaces/SpiderMeshNode.d.ts +3 -1
- package/build/src/interfaces/SpiderMeshTransporter.d.ts +13 -12
- package/build/tests/Rpc.d.ts +1 -0
- package/build/tests/Rpc.js +102 -0
- package/build/tests/Rpc.js.map +1 -0
- package/package.json +1 -1
- package/tsconfig.json +2 -1
- package/build/src/builtin-transporter/RxjsUdpBroadcaster.d.ts +0 -19
- package/build/src/builtin-transporter/RxjsUdpBroadcaster.js +0 -56
- package/build/src/builtin-transporter/RxjsUdpBroadcaster.js.map +0 -1
- package/build/src/decorators/LimitConcurrentRunning.d.ts +0 -3
- package/build/src/decorators/LimitConcurrentRunning.js +0 -23
- package/build/src/decorators/LimitConcurrentRunning.js.map +0 -1
- package/build/src/helpers/waitFirstEvent.d.ts +0 -3
- package/build/src/helpers/waitFirstEvent.js +0 -5
- package/build/src/helpers/waitFirstEvent.js.map +0 -1
- package/build/src/index.d.ts +0 -12
- package/build/src/index.js +0 -10
- package/build/src/index.js.map +0 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { createSocket } from "dgram";
|
|
2
|
+
import { Observable, from, mergeMap } from "rxjs";
|
|
3
|
+
import { networkInterfaces } from 'os';
|
|
4
|
+
import { createHmac } from "crypto";
|
|
5
|
+
import { UDP_SECRET_KEY } from "../const.js";
|
|
6
|
+
import { RxjsTcpSocket } from "./RxjsTcpSocket.js";
|
|
7
|
+
export class RxjsUdpServer extends Observable {
|
|
8
|
+
config;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
super(o => {
|
|
11
|
+
const nodes = new Set();
|
|
12
|
+
const { udp_port } = config;
|
|
13
|
+
const udp = createSocket({
|
|
14
|
+
type: 'udp4',
|
|
15
|
+
reuseAddr: true
|
|
16
|
+
});
|
|
17
|
+
udp.bind({
|
|
18
|
+
address: '0.0.0.0',
|
|
19
|
+
port: udp_port,
|
|
20
|
+
}, () => udp.setBroadcast(true));
|
|
21
|
+
udp.on('message', async (data, rinfo) => {
|
|
22
|
+
try {
|
|
23
|
+
const msg = JSON.parse(data.toString('utf-8'));
|
|
24
|
+
const sig = createHmac('SHA256', UDP_SECRET_KEY).update(`${msg.namespace}|${msg.transporter_id}|${msg.port}`).digest('base64');
|
|
25
|
+
if (msg.sig != sig)
|
|
26
|
+
return;
|
|
27
|
+
if (msg.namespace != config.namespace)
|
|
28
|
+
return;
|
|
29
|
+
if (msg.transporter_id == config.transporter_id)
|
|
30
|
+
return;
|
|
31
|
+
const socket = await RxjsTcpSocket.connect({
|
|
32
|
+
...msg,
|
|
33
|
+
host: rinfo.address,
|
|
34
|
+
keepAlive: true,
|
|
35
|
+
retry_delay_ms: 5000,
|
|
36
|
+
retry_times: 5
|
|
37
|
+
});
|
|
38
|
+
if (socket) {
|
|
39
|
+
if (nodes.has(msg.transporter_id)) {
|
|
40
|
+
socket.close();
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
nodes.add(msg.transporter_id);
|
|
44
|
+
o.next(socket);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
config.$tcp_server_port.subscribe(port => this.#broadcast(udp, port));
|
|
52
|
+
});
|
|
53
|
+
this.config = config;
|
|
54
|
+
}
|
|
55
|
+
#broadcast(udp, port) {
|
|
56
|
+
const { namespace, transporter_id, udp_port, udp_address = '' } = this.config;
|
|
57
|
+
const broadcast_ips = ['255.255.255.255'];
|
|
58
|
+
const network_address = (Object.entries(networkInterfaces())
|
|
59
|
+
.filter(([i]) => !i.startsWith('lo'))
|
|
60
|
+
.map(e => e[1])
|
|
61
|
+
.flat(2)
|
|
62
|
+
.filter(d => d && d.family == 'IPv4' && d.address)
|
|
63
|
+
.map(d => d.address.split('.').slice(0, 3).join('.') + '.255'));
|
|
64
|
+
const env_address = udp_address.split(',').map(a => a.trim()).filter(a => !!a);
|
|
65
|
+
for (const address of [...network_address, ...env_address]) {
|
|
66
|
+
const splited = address.split('.');
|
|
67
|
+
splited.length == 4 && broadcast_ips.push(address);
|
|
68
|
+
splited.length == 3 && new Array(256).fill(0).map((_, i) => broadcast_ips.push(`${address}.${i}`));
|
|
69
|
+
}
|
|
70
|
+
const msg = {
|
|
71
|
+
namespace,
|
|
72
|
+
transporter_id,
|
|
73
|
+
port,
|
|
74
|
+
sig: ''
|
|
75
|
+
};
|
|
76
|
+
const sig = createHmac('SHA256', UDP_SECRET_KEY).update(`${msg.namespace}|${msg.transporter_id}|${msg.port}`).digest('base64');
|
|
77
|
+
const json = JSON.stringify({ ...msg, sig });
|
|
78
|
+
from(broadcast_ips).pipe(mergeMap(async (host) => {
|
|
79
|
+
await udp.send(Buffer.from(json), udp_port, host);
|
|
80
|
+
}, 50)).subscribe();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=RxjsUdpServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RxjsUdpServer.js","sourceRoot":"","sources":["../../../src/builtin-transporter/RxjsUdpServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAW,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAiBlD,MAAM,OAAO,aAAc,SAAQ,UAAyB;IAGpC;IAApB,YAAoB,MAAgC;QAChD,KAAK,CAAC,CAAC,CAAC,EAAE;YAEN,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;YAE/B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;YAC3B,MAAM,GAAG,GAAG,YAAY,CAAC;gBACrB,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,IAAI;aAClB,CAAC,CAAA;YAEF,GAAG,CAAC,IAAI,CAAC;gBACL,OAAO,EAAE,SAAS;gBAClB,IAAI,EAAE,QAAQ;aACjB,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;YAEhC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;gBACpC,IAAI;oBACA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAqB,CAAA;oBAClE,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;oBAC9H,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG;wBAAE,OAAM;oBAC1B,IAAI,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS;wBAAE,OAAM;oBAC7C,IAAI,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc;wBAAE,OAAM;oBAEvD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC;wBACvC,GAAG,GAAG;wBACN,IAAI,EAAE,KAAK,CAAC,OAAO;wBACnB,SAAS,EAAE,IAAI;wBACf,cAAc,EAAE,IAAI;wBACpB,WAAW,EAAE,CAAC;qBACjB,CAAC,CAAA;oBACF,IAAI,MAAM,EAAE;wBACR,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;4BAC/B,MAAM,CAAC,KAAK,EAAE,CAAA;yBACjB;6BAAM;4BACH,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;4BAC7B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;yBACjB;qBACJ;iBAEJ;gBAAC,OAAO,CAAC,EAAE;iBAEX;YACL,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;QA9Cc,WAAM,GAAN,MAAM,CAA0B;IA+CpD,CAAC;IAED,UAAU,CAAC,GAAW,EAAE,IAAY;QAEhC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QAC7E,MAAM,aAAa,GAAG,CAAC,iBAAiB,CAAC,CAAA;QACzC,MAAM,eAAe,GAAG,CACpB,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;aAC9B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACpC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACd,IAAI,CAAC,CAAC,CAAC;aACP,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC;aACjD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CACtE,CAAA;QACD,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE9E,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,eAAe,EAAE,GAAG,WAAW,CAAC,EAAE;YACxD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAClD,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;SACrG;QACD,MAAM,GAAG,GAAqB;YAC1B,SAAS;YACT,cAAc;YACd,IAAI;YACJ,GAAG,EAAE,EAAE;SACV,CAAA;QACD,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC9H,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;QAG5C,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CACpB,QAAQ,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;YAClB,MAAM,GAAG,CAAC,IAAI,CACV,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EACjB,QAAQ,EACR,IAAI,CACP,CAAA;QACL,CAAC,EAAE,EAAE,CAAC,CAET,CAAC,SAAS,EAAE,CAAA;IACjB,CAAC;CACJ"}
|
package/build/src/const.d.ts
CHANGED
package/build/src/const.js
CHANGED
|
@@ -3,4 +3,5 @@ export const NAMEPSACE = process.env.SPIDERMESH_NAMESPACE || 'default';
|
|
|
3
3
|
export const NODE_ID = process.env.SPIDERMESH_NODE_ID || randomUUID();
|
|
4
4
|
export const UDP_BROADCAST_ADDRESS = process.env.SPIDERMESH_UDP_BROADCAST_ADDRESS || '';
|
|
5
5
|
export const UDP_BROADCAST_PORT = Number(process.env.SPIDERMESH_UDP_BROADCAST_PORT || 10000);
|
|
6
|
+
export const UDP_SECRET_KEY = process.env.SPIDERMESH_UDP_BROADCAST_PORT || 'default-spider-mesh-secret-key';
|
|
6
7
|
//# sourceMappingURL=const.js.map
|
package/build/src/const.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAEnC,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,SAAS,CAAA;AACtE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,UAAU,EAAE,CAAA;AACrE,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,EAAE,CAAA;AACvF,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,KAAK,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAEnC,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,SAAS,CAAA;AACtE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,UAAU,EAAE,CAAA;AACrE,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,EAAE,CAAA;AACvF,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,KAAK,CAAC,CAAA;AAC5F,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,gCAAgC,CAAA"}
|
|
@@ -14,7 +14,7 @@ export declare const NestJSExposeMicroservice: (factory: any, metadata?: Service
|
|
|
14
14
|
export declare const NestJSLinkMicroservice: (factory: any, wait_service_online?: boolean) => {
|
|
15
15
|
provide: any;
|
|
16
16
|
inject: (typeof SpiderMesh)[];
|
|
17
|
-
useFactory: (sm: SpiderMesh) => Promise<import("../
|
|
17
|
+
useFactory: (sm: SpiderMesh) => Promise<import("../interfaces/RemoteService.js").RemoteService<unknown>>;
|
|
18
18
|
};
|
|
19
19
|
export declare const NestJSLinkEvent: (factory: any, publish_buffer_ms?: number) => {
|
|
20
20
|
provide: any;
|
|
@@ -23,6 +23,8 @@ export declare const NestJSLinkEvent: (factory: any, publish_buffer_ms?: number)
|
|
|
23
23
|
publish: (data: import("../Encoder.js").Encodeable) => Promise<void>;
|
|
24
24
|
listen: () => import("rxjs").Observable<{
|
|
25
25
|
data: import("../Encoder.js").Encodeable;
|
|
26
|
+
received_transporter_id: string;
|
|
27
|
+
sender_transporter_id: string;
|
|
26
28
|
sender_node_id: string;
|
|
27
29
|
}>;
|
|
28
30
|
}>;
|
|
@@ -2,7 +2,9 @@ export type ServiceMetadata = {
|
|
|
2
2
|
[key: string]: string | number | boolean;
|
|
3
3
|
};
|
|
4
4
|
export type SpiderMeshNodeMetadata = {
|
|
5
|
-
|
|
5
|
+
node_id: string;
|
|
6
|
+
local_transporter_id: string;
|
|
7
|
+
remote_transporter_id: string;
|
|
6
8
|
name: string;
|
|
7
9
|
version: string;
|
|
8
10
|
path: string;
|
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
import { Observable } from "rxjs";
|
|
2
2
|
import { Encodeable } from "src/Encoder.js";
|
|
3
|
-
export type PublishMetadata = {
|
|
3
|
+
export type PublishMetadata<T extends Encodeable = Encodeable> = {
|
|
4
4
|
event: string;
|
|
5
|
-
|
|
6
|
-
data:
|
|
5
|
+
remote_transporter_id?: string;
|
|
6
|
+
data: T;
|
|
7
7
|
};
|
|
8
8
|
export type SpiderMeshTransporterEvent<T extends Encodeable = Encodeable> = {
|
|
9
9
|
data: T;
|
|
10
|
-
|
|
10
|
+
received_transporter_id: string;
|
|
11
|
+
sender_transporter_id: string;
|
|
12
|
+
};
|
|
13
|
+
export type TcpNodeStatus = {
|
|
14
|
+
local_transporter_id: string;
|
|
15
|
+
remote_transporter_id: string;
|
|
16
|
+
online: boolean;
|
|
11
17
|
};
|
|
12
18
|
export type SpiderMeshTransporter = {
|
|
13
|
-
readonly
|
|
14
|
-
|
|
15
|
-
$nodes_status: Observable<{
|
|
16
|
-
node_id: string;
|
|
17
|
-
online: boolean;
|
|
18
|
-
}>;
|
|
19
|
-
start: () => Promise<void>;
|
|
19
|
+
readonly transporter_id: string;
|
|
20
|
+
$nodes_status: Observable<TcpNodeStatus>;
|
|
20
21
|
listen: <T extends Encodeable>(topic: string) => Observable<SpiderMeshTransporterEvent<T>>;
|
|
21
|
-
publish(config: PublishMetadata): Promise<void>;
|
|
22
|
+
publish<T extends Encodeable>(config: PublishMetadata<T>): Promise<void>;
|
|
22
23
|
};
|
|
23
24
|
export type SpiderMeshTransporterFactory = {
|
|
24
25
|
new (...args: any[]): SpiderMeshTransporter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { firstValueFrom, from, lastValueFrom, map, mergeMap, timer, toArray } from 'rxjs';
|
|
3
|
+
import { Microservice } from '../src/decorators/Microservice.js';
|
|
4
|
+
import { SpiderMesh } from '../src/SpiderMesh.js';
|
|
5
|
+
let ExampleService = class ExampleService {
|
|
6
|
+
constructor() {
|
|
7
|
+
console.log(`Example service running`);
|
|
8
|
+
}
|
|
9
|
+
sum(a, b) {
|
|
10
|
+
return a + b;
|
|
11
|
+
}
|
|
12
|
+
async asyncSum(a, b) {
|
|
13
|
+
await firstValueFrom(timer(1000));
|
|
14
|
+
return a + b;
|
|
15
|
+
}
|
|
16
|
+
interator() {
|
|
17
|
+
return from([1, 2, 3, 4, 5]);
|
|
18
|
+
}
|
|
19
|
+
async asyncInterator() {
|
|
20
|
+
return from([1, 2, 3, 4, 5]).pipe(mergeMap(async (d) => {
|
|
21
|
+
await firstValueFrom(timer(1000));
|
|
22
|
+
return d;
|
|
23
|
+
}, 1));
|
|
24
|
+
}
|
|
25
|
+
async buffer() {
|
|
26
|
+
return Buffer.from('ahihihi', 'utf-8');
|
|
27
|
+
}
|
|
28
|
+
async nulla() {
|
|
29
|
+
}
|
|
30
|
+
async interatorBufferMix() {
|
|
31
|
+
return from([
|
|
32
|
+
{ a: 1, b: "s", c: Buffer.from('abc') },
|
|
33
|
+
null,
|
|
34
|
+
undefined,
|
|
35
|
+
{ v: new Set([1, 2,]) }
|
|
36
|
+
]).pipe(mergeMap(async (d) => {
|
|
37
|
+
await firstValueFrom(timer(1000));
|
|
38
|
+
return { d };
|
|
39
|
+
}, 1));
|
|
40
|
+
}
|
|
41
|
+
errror_test() {
|
|
42
|
+
throw { a: { b: "c" } };
|
|
43
|
+
}
|
|
44
|
+
obj_errror_test() {
|
|
45
|
+
throw new Error('AHIHI');
|
|
46
|
+
}
|
|
47
|
+
get_time() {
|
|
48
|
+
return { time: Date.now() };
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
ExampleService = __decorate([
|
|
52
|
+
Microservice(),
|
|
53
|
+
__metadata("design:paramtypes", [])
|
|
54
|
+
], ExampleService);
|
|
55
|
+
if (process.argv[2] == 'a') {
|
|
56
|
+
new ExampleService();
|
|
57
|
+
const sm = new SpiderMesh();
|
|
58
|
+
}
|
|
59
|
+
if (process.argv[2] == 'b') {
|
|
60
|
+
console.log('Testing');
|
|
61
|
+
const sm = new SpiderMesh();
|
|
62
|
+
const service = await sm.link_remote_service(ExampleService, true);
|
|
63
|
+
console.log(`Service online`);
|
|
64
|
+
console.log(`Not found`);
|
|
65
|
+
console.log(await service.xxxx());
|
|
66
|
+
console.log(`Batch`);
|
|
67
|
+
console.log(await firstValueFrom(service.$batch_get_time().pipe(toArray())));
|
|
68
|
+
console.log(`Timeout`);
|
|
69
|
+
const data = await service.$timeout(500).$fallback(7).asyncSum(1, 2);
|
|
70
|
+
console.log({ data });
|
|
71
|
+
console.log('sync sum');
|
|
72
|
+
console.log({
|
|
73
|
+
'sum: 1+2': await service.sum(1, 2)
|
|
74
|
+
});
|
|
75
|
+
console.log({
|
|
76
|
+
'asyncSum: 1+2': await service.asyncSum(1, 2)
|
|
77
|
+
});
|
|
78
|
+
console.log('Interator');
|
|
79
|
+
await lastValueFrom(service.interator().pipe(map(n => console.log({ n }))));
|
|
80
|
+
console.log('ERROR');
|
|
81
|
+
try {
|
|
82
|
+
await service.errror_test();
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
console.log(JSON.stringify(e));
|
|
86
|
+
}
|
|
87
|
+
console.log('ERROR OBJ');
|
|
88
|
+
try {
|
|
89
|
+
await service.obj_errror_test();
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
console.log(e);
|
|
93
|
+
}
|
|
94
|
+
console.log('Async interator');
|
|
95
|
+
await lastValueFrom(service.asyncInterator().pipe(map(n => console.log({ n }))));
|
|
96
|
+
console.log('Buffer');
|
|
97
|
+
const buffer = await service.buffer();
|
|
98
|
+
console.log({ buffer, v: buffer.toString('utf8') });
|
|
99
|
+
console.log('interatorBufferMix');
|
|
100
|
+
await lastValueFrom(service.interatorBufferMix().pipe(map(n => console.log({ n }))));
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=Rpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Rpc.js","sourceRoot":"","sources":["../../tests/Rpc.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spider-mesh/core",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.120",
|
|
5
5
|
"description": "Lightweight microservice framework for typescript, auto discovery, load-balancing, fault-torrent, multiple transporters",
|
|
6
6
|
"main": "./build/src/index.js",
|
|
7
7
|
"types": "./build/src/index.d.ts",
|
package/tsconfig.json
CHANGED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Observable } from "rxjs";
|
|
2
|
-
export type RxjsUdpBroadcasterConfig = {
|
|
3
|
-
node_id: string;
|
|
4
|
-
namespace: string;
|
|
5
|
-
udp_address?: string;
|
|
6
|
-
udp_port: number;
|
|
7
|
-
};
|
|
8
|
-
export declare class RxjsUdpBroadcaster {
|
|
9
|
-
static start({ namespace, node_id, udp_port, udp_address }: RxjsUdpBroadcasterConfig): Promise<{
|
|
10
|
-
broadcast: (port: number) => Promise<void>;
|
|
11
|
-
$new_node_discovered: Observable<{
|
|
12
|
-
port: number;
|
|
13
|
-
node_id: string;
|
|
14
|
-
namespace: string;
|
|
15
|
-
} & {
|
|
16
|
-
host: string;
|
|
17
|
-
}>;
|
|
18
|
-
}>;
|
|
19
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { createSocket } from "dgram";
|
|
2
|
-
import { Observable } from "rxjs";
|
|
3
|
-
import { networkInterfaces } from 'os';
|
|
4
|
-
export class RxjsUdpBroadcaster {
|
|
5
|
-
static async start({ namespace, node_id, udp_port, udp_address = '' }) {
|
|
6
|
-
const udp = createSocket({
|
|
7
|
-
type: 'udp4',
|
|
8
|
-
reuseAddr: true
|
|
9
|
-
});
|
|
10
|
-
udp.bind({
|
|
11
|
-
address: '0.0.0.0',
|
|
12
|
-
port: udp_port,
|
|
13
|
-
}, () => udp.setBroadcast(true));
|
|
14
|
-
const $new_node_discovered = new Observable(o => {
|
|
15
|
-
udp.on('message', async (raw, rinfo) => {
|
|
16
|
-
try {
|
|
17
|
-
const info = JSON.parse(raw.toString('utf-8'));
|
|
18
|
-
if (info.namespace == namespace && info.node_id != node_id) {
|
|
19
|
-
o.next({ ...info, host: rinfo.address });
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
catch (e) {
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
const broadcast_ips = ['255.255.255.255'];
|
|
27
|
-
const network_address = (Object.entries(networkInterfaces())
|
|
28
|
-
.filter(([i]) => !i.startsWith('lo'))
|
|
29
|
-
.map(e => e[1])
|
|
30
|
-
.flat(2)
|
|
31
|
-
.filter(d => d && d.family == 'IPv4' && d.address)
|
|
32
|
-
.map(d => d.address.split('.').slice(0, 3).join('.') + '.255'));
|
|
33
|
-
const env_address = udp_address.split(',').map(a => a.trim()).filter(a => !!a);
|
|
34
|
-
for (const address of [...network_address, ...env_address]) {
|
|
35
|
-
const splited = address.split('.');
|
|
36
|
-
splited.length == 4 && broadcast_ips.push(address);
|
|
37
|
-
splited.length == 3 && new Array(256).fill(0).map((_, i) => broadcast_ips.push(`${address}.${i}`));
|
|
38
|
-
}
|
|
39
|
-
const broadcast = async (port) => {
|
|
40
|
-
const msg = {
|
|
41
|
-
namespace,
|
|
42
|
-
node_id,
|
|
43
|
-
port
|
|
44
|
-
};
|
|
45
|
-
const json = JSON.stringify(msg);
|
|
46
|
-
for (const host of broadcast_ips) {
|
|
47
|
-
await udp.send(Buffer.from(json), udp_port, host);
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
return {
|
|
51
|
-
broadcast,
|
|
52
|
-
$new_node_discovered
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=RxjsUdpBroadcaster.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RxjsUdpBroadcaster.js","sourceRoot":"","sources":["../../../src/builtin-transporter/RxjsUdpBroadcaster.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Subject, mergeMap } from "rxjs";
|
|
2
|
-
export function LimitConcurrentRunning(limit) {
|
|
3
|
-
return (target, method, descriptor) => {
|
|
4
|
-
const bus = new Subject();
|
|
5
|
-
const fn = descriptor.value;
|
|
6
|
-
bus.pipe(mergeMap(async ({ $, args, r, s }) => {
|
|
7
|
-
try {
|
|
8
|
-
s(await fn.call($, ...args));
|
|
9
|
-
}
|
|
10
|
-
catch (e) {
|
|
11
|
-
r(e);
|
|
12
|
-
}
|
|
13
|
-
}, limit)).subscribe();
|
|
14
|
-
return {
|
|
15
|
-
value: async function (...args) {
|
|
16
|
-
return new Promise((s, r) => {
|
|
17
|
-
bus.next({ $: this, args, s, r });
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=LimitConcurrentRunning.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LimitConcurrentRunning.js","sourceRoot":"","sources":["../../../src/decorators/LimitConcurrentRunning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAGxC,MAAM,UAAU,sBAAsB,CAAI,KAAa;IACnD,OAAO,CAAC,MAAW,EAAE,MAAc,EAAE,UAAsC,EAAE,EAAE;QAE3E,MAAM,GAAG,GAAG,IAAI,OAAO,EAKnB,CAAA;QAEJ,MAAM,EAAE,GAAG,UAAU,CAAC,KAAiB,CAAA;QAEvC,GAAG,CAAC,IAAI,CACJ,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;YACjC,IAAI;gBACA,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;aAC/B;YAAC,OAAO,CAAC,EAAE;gBACR,CAAC,CAAC,CAAC,CAAC,CAAA;aACP;QACL,CAAC,EAAE,KAAK,CAAC,CACZ,CAAC,SAAS,EAAE,CAAA;QAEb,OAAO;YACH,KAAK,EAAE,KAAK,WAAsB,GAAG,IAAW;gBAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACxB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;gBACrC,CAAC,CAAC,CAAA;YACN,CAAM;SACT,CAAA;IACL,CAAC,CAAA;AACL,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { firstValueFrom, merge, fromEvent, map } from "rxjs";
|
|
2
|
-
export function waitFirstEvent(target, ...events) {
|
|
3
|
-
return firstValueFrom(merge(...events.map(e => fromEvent(target, e).pipe(map((...args) => [e, ...args])))));
|
|
4
|
-
}
|
|
5
|
-
//# sourceMappingURL=waitFirstEvent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"waitFirstEvent.js","sourceRoot":"","sources":["../../../src/helpers/waitFirstEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAG7D,MAAM,UAAU,cAAc,CAAC,MAAoB,EAAE,GAAG,MAAgB;IACpE,OAAO,cAAc,CAAC,KAAK,CACvB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAC/E,CAAC,CAAA;AACN,CAAC"}
|
package/build/src/index.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export * from './const.js';
|
|
2
|
-
export { BuiltinTransporter } from './builtin-transporter/BuiltinTransporter.js';
|
|
3
|
-
export { SpiderMesh } from './SpiderMesh.js';
|
|
4
|
-
export { SpiderMeshNode, SpiderMeshNodeMetadata } from './interfaces/SpiderMeshNode.js';
|
|
5
|
-
export { SpiderMeshTransporter, SpiderMeshTransporterFactory } from './interfaces/SpiderMeshTransporter.js';
|
|
6
|
-
export { RemoteService } from './interfaces/RemoteService.js';
|
|
7
|
-
export { RPCOptions, RPCOptionsList } from './RPCOptions.js';
|
|
8
|
-
export { OnMicroserviceReady } from './decorators/OnMicroserviceReady.js';
|
|
9
|
-
export { Microservice, NestJSExposeMicroservice, NestJSLinkMicroservice, NestJSLinkEvent } from './decorators/Microservice.js';
|
|
10
|
-
export { ListenEvent, EventDataType, EventHub, createSpiderMeshEvent, E, ListenEventBatch } from './decorators/ListenEvent.js';
|
|
11
|
-
export * from './interfaces/SpiderMeshTransporter.js';
|
|
12
|
-
export { LimitConcurrentRunning } from './decorators/LimitConcurrentRunning.js';
|
package/build/src/index.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export * from './const.js';
|
|
2
|
-
export { BuiltinTransporter } from './builtin-transporter/BuiltinTransporter.js';
|
|
3
|
-
export { SpiderMesh } from './SpiderMesh.js';
|
|
4
|
-
export { RPCOptionsList } from './RPCOptions.js';
|
|
5
|
-
export { OnMicroserviceReady } from './decorators/OnMicroserviceReady.js';
|
|
6
|
-
export { Microservice, NestJSExposeMicroservice, NestJSLinkMicroservice, NestJSLinkEvent } from './decorators/Microservice.js';
|
|
7
|
-
export { ListenEvent, createSpiderMeshEvent, ListenEventBatch } from './decorators/ListenEvent.js';
|
|
8
|
-
export * from './interfaces/SpiderMeshTransporter.js';
|
|
9
|
-
export { LimitConcurrentRunning } from './decorators/LimitConcurrentRunning.js';
|
|
10
|
-
//# sourceMappingURL=index.js.map
|
package/build/src/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAI5C,OAAO,EAAc,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AACzE,OAAO,EACH,YAAY,EACZ,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,EAClB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACH,WAAW,EAGX,qBAAqB,EAErB,gBAAgB,EACnB,MAAM,6BAA6B,CAAA;AACpC,cAAc,uCAAuC,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA"}
|