@spider-mesh/core 1.0.129 → 1.0.132

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/build/src/Encoder.js +3 -0
  2. package/build/src/Encoder.js.map +1 -1
  3. package/build/src/SpiderMesh.d.ts +4 -2
  4. package/build/src/SpiderMesh.js +19 -45
  5. package/build/src/SpiderMesh.js.map +1 -1
  6. package/build/src/const.js +2 -2
  7. package/build/src/const.js.map +1 -1
  8. package/build/src/decorators/ListenEvent.d.ts +2 -2
  9. package/build/src/decorators/Microservice.d.ts +0 -30
  10. package/build/src/decorators/Microservice.js +0 -20
  11. package/build/src/decorators/Microservice.js.map +1 -1
  12. package/build/src/decorators/NestJSExposeMicroservice.d.ts +6 -0
  13. package/build/src/decorators/NestJSExposeMicroservice.js +12 -0
  14. package/build/src/decorators/NestJSExposeMicroservice.js.map +1 -0
  15. package/build/src/decorators/NestJSInjectMetadata.d.ts +7 -0
  16. package/build/src/decorators/NestJSInjectMetadata.js +14 -0
  17. package/build/src/decorators/NestJSInjectMetadata.js.map +1 -0
  18. package/build/src/decorators/NestJSLinkEvent.d.ts +20 -0
  19. package/build/src/decorators/NestJSLinkEvent.js +7 -0
  20. package/build/src/decorators/NestJSLinkEvent.js.map +1 -0
  21. package/build/src/decorators/NestJSLinkMicroservice.d.ts +6 -0
  22. package/build/src/decorators/NestJSLinkMicroservice.js +7 -0
  23. package/build/src/decorators/NestJSLinkMicroservice.js.map +1 -0
  24. package/build/src/decorators/OnMicroserviceReady.d.ts +1 -1
  25. package/build/src/index.d.ts +6 -2
  26. package/build/src/index.js +6 -2
  27. package/build/src/index.js.map +1 -1
  28. package/build/src/interfaces/SpiderMeshNode.d.ts +0 -6
  29. package/package.json +4 -2
  30. package/tsconfig.json +2 -1
  31. package/build/src/builtin-transporter/BuiltinTransporter.d.ts +0 -11
  32. package/build/src/builtin-transporter/BuiltinTransporter.js +0 -151
  33. package/build/src/builtin-transporter/BuiltinTransporter.js.map +0 -1
  34. package/build/src/builtin-transporter/RxjsTcpServer.d.ts +0 -6
  35. package/build/src/builtin-transporter/RxjsTcpServer.js +0 -31
  36. package/build/src/builtin-transporter/RxjsTcpServer.js.map +0 -1
  37. package/build/src/builtin-transporter/RxjsTcpSocket.d.ts +0 -19
  38. package/build/src/builtin-transporter/RxjsTcpSocket.js +0 -72
  39. package/build/src/builtin-transporter/RxjsTcpSocket.js.map +0 -1
  40. package/build/src/builtin-transporter/RxjsUdpServer.d.ts +0 -20
  41. package/build/src/builtin-transporter/RxjsUdpServer.js +0 -92
  42. package/build/src/builtin-transporter/RxjsUdpServer.js.map +0 -1
  43. package/build/src/helpers/waitFirstEvent.d.ts +0 -3
  44. package/build/src/helpers/waitFirstEvent.js +0 -5
  45. package/build/src/helpers/waitFirstEvent.js.map +0 -1
  46. package/build/tests/ExampleEvent.d.ts +0 -1
  47. package/build/tests/ExampleEvent.js +0 -2
  48. package/build/tests/ExampleEvent.js.map +0 -1
  49. package/build/tests/ExampleService.d.ts +0 -29
  50. package/build/tests/ExampleService.js +0 -70
  51. package/build/tests/ExampleService.js.map +0 -1
  52. package/build/tests/index.d.ts +0 -1
  53. package/build/tests/index.js +0 -119
  54. package/build/tests/index.js.map +0 -1
@@ -1,151 +0,0 @@
1
- import { randomUUID } from "crypto";
2
- import { Observable, Subject, filter, finalize, first, map, merge, mergeMap } from 'rxjs';
3
- import { RxjsTcpSocket } from "./RxjsTcpSocket.js";
4
- import { RxjsTcpServer } from "./RxjsTcpServer.js";
5
- import { RxjsUdpServer } from "./RxjsUdpServer.js";
6
- import { UDP_BROADCAST_PORT, UDP_BROADCAST_ADDRESS, NAMEPSACE } from "../const.js";
7
- import { Encoder } from "../Encoder.js";
8
- export class BuiltinTransporter {
9
- $nodes_status = new Subject();
10
- #version = Date.now();
11
- #listeners = new Map;
12
- #nodes_map = new Map;
13
- #events_map = new Map();
14
- #$rebroadcast = new Subject();
15
- transporter_id = randomUUID();
16
- #$tcp = new RxjsTcpServer();
17
- constructor() {
18
- const $udp = new RxjsUdpServer({
19
- $tcp_server_port: this.#$tcp.$port,
20
- namespace: NAMEPSACE,
21
- udp_port: UDP_BROADCAST_PORT,
22
- udp_address: UDP_BROADCAST_ADDRESS,
23
- transporter_id: this.transporter_id
24
- });
25
- merge(this.#$tcp, $udp).pipe(mergeMap(socket => {
26
- const $ = socket.$incoming_data.pipe(map(buf => {
27
- try {
28
- return Encoder.decode(buf);
29
- }
30
- catch (e) { }
31
- }), filter(Boolean), mergeMap(async (msg) => {
32
- if (msg.topic == `#hello`) {
33
- const host = socket.rawSocket.remoteAddress;
34
- host && await this.#sync_node(socket, {
35
- ...msg.payload,
36
- host
37
- });
38
- return;
39
- }
40
- const event = { ...msg, received_at: Date.now() };
41
- this.#listeners.get(msg.topic)?.forEach(cb => cb(event));
42
- }));
43
- !socket.opened_by_remote_side && this.#tcp_hello(socket);
44
- return $;
45
- })).subscribe();
46
- }
47
- async #sync_node(current_socket, metadata) {
48
- const host = metadata.host;
49
- if (!host || !metadata.listening)
50
- return;
51
- for (const event of metadata.listening) {
52
- !this.#events_map.has(event) && this.#events_map.set(event, new Set());
53
- this.#events_map.get(event)?.add(metadata.transporter_id);
54
- }
55
- const cached = this.#nodes_map.get(metadata.transporter_id);
56
- if (cached && cached.version > 0)
57
- return;
58
- const socket = current_socket.opened_by_remote_side ? (await RxjsTcpSocket.connect({
59
- host,
60
- port: metadata.port,
61
- keepAlive: true,
62
- retry_delay_ms: 200,
63
- retry_times: 5
64
- }) || current_socket) : current_socket;
65
- const new_node = {
66
- ...metadata,
67
- host,
68
- socket,
69
- peers: metadata.peers.map(p => ({ ...p, peers: [] }))
70
- };
71
- this.#nodes_map.set(metadata.transporter_id, new_node);
72
- const remote_info = new_node.peers.find(p => p.transporter_id == this.transporter_id);
73
- const peer_updated = remote_info ? remote_info.version == this.#version : false;
74
- !peer_updated && this.#tcp_hello(socket);
75
- this.$nodes_status.next({
76
- online: true,
77
- remote_transporter_id: metadata.transporter_id,
78
- });
79
- socket.$status.pipe(filter(status => status != 'ready'), first(), finalize(() => {
80
- const node = this.#nodes_map.get(metadata.transporter_id);
81
- node && node.listening.map(evt => {
82
- this.#events_map.get(evt)?.delete(metadata.transporter_id);
83
- });
84
- this.#nodes_map.delete(metadata.transporter_id);
85
- this.$nodes_status.next({
86
- remote_transporter_id: metadata.transporter_id,
87
- online: false
88
- });
89
- })).subscribe();
90
- }
91
- async #tcp_hello(tcp_socket) {
92
- const port = this.#$tcp.$port.getValue();
93
- const msg = {
94
- created_at: Date.now(),
95
- id: randomUUID(),
96
- metadata: {
97
- namespace: NAMEPSACE,
98
- },
99
- topic: '#hello',
100
- sti: this.transporter_id,
101
- payload: {
102
- host: '',
103
- transporter_id: this.transporter_id,
104
- port,
105
- listening: ['#hello', ...this.#listeners.keys()],
106
- peers: [...this.#nodes_map.values()].map(({ socket, ...node }) => node),
107
- version: this.#version
108
- },
109
- received_at: 0
110
- };
111
- tcp_socket.write(Encoder.encode(msg));
112
- }
113
- listen(topic) {
114
- return new Observable(o => {
115
- this.#version = Date.now();
116
- !this.#listeners.has(topic) && this.#listeners.set(topic, new Map());
117
- const id = randomUUID();
118
- this.#listeners.get(topic)?.set(id, (data) => o.next(data));
119
- this.#$rebroadcast.next();
120
- return () => {
121
- this.#version = Date.now();
122
- this.#listeners.get(topic)?.delete(id);
123
- this.#listeners.get(topic)?.size == 0 && this.#listeners.delete(topic);
124
- this.#$rebroadcast.next();
125
- };
126
- });
127
- }
128
- async publish({ payload, event, metadata, rti }) {
129
- const msg = {
130
- created_at: Date.now(),
131
- id: randomUUID(),
132
- metadata,
133
- payload,
134
- received_at: 0,
135
- sti: this.transporter_id,
136
- topic: event || rti || '#'
137
- };
138
- const buffer = Encoder.encode(msg);
139
- if (rti) {
140
- await this.#nodes_map.get(rti)?.socket?.write(buffer);
141
- }
142
- else {
143
- for (const node_id of this.#events_map.get(event) || []) {
144
- const node = this.#nodes_map.get(node_id);
145
- await node?.socket?.write(buffer);
146
- }
147
- return;
148
- }
149
- }
150
- }
151
- //# sourceMappingURL=BuiltinTransporter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BuiltinTransporter.js","sourceRoot":"","sources":["../../../src/builtin-transporter/BuiltinTransporter.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { BehaviorSubject, Observable } from "rxjs";
2
- import { RxjsTcpSocket } from "./RxjsTcpSocket.js";
3
- export declare class RxjsTcpServer extends Observable<RxjsTcpSocket> {
4
- $port: BehaviorSubject<number>;
5
- constructor(start_port?: number);
6
- }
@@ -1,31 +0,0 @@
1
- import { createServer } from "net";
2
- import { BehaviorSubject, Observable, firstValueFrom, fromEvent } from "rxjs";
3
- import { RxjsTcpSocket } from "./RxjsTcpSocket.js";
4
- export class RxjsTcpServer extends Observable {
5
- $port = new BehaviorSubject(0);
6
- constructor(start_port = 10001) {
7
- super(o => {
8
- setTimeout(async () => {
9
- for (let tcp_port = start_port; true; tcp_port++) {
10
- const server = createServer();
11
- const success = await new Promise(s => {
12
- server.once('listening', () => s(true));
13
- server.once('error', () => s(false));
14
- server.listen(tcp_port);
15
- });
16
- if (!success)
17
- continue;
18
- this.$port.next(tcp_port);
19
- server.on('connection', async (socket) => {
20
- const stable_socket = await RxjsTcpSocket.join(socket);
21
- o.next(stable_socket);
22
- });
23
- const $error = fromEvent(server, 'error');
24
- await firstValueFrom($error);
25
- server.removeAllListeners();
26
- }
27
- });
28
- });
29
- }
30
- }
31
- //# sourceMappingURL=RxjsTcpServer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RxjsTcpServer.js","sourceRoot":"","sources":["../../../src/builtin-transporter/RxjsTcpServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAW,cAAc,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGlD,MAAM,OAAO,aAAc,SAAQ,UAAyB;IAExD,KAAK,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAA;IAEtC,YAAY,aAAqB,KAAK;QAClC,KAAK,CAAC,CAAC,CAAC,EAAE;YACN,UAAU,CAAC,KAAK,IAAI,EAAE;gBAClB,KAAK,IAAI,QAAQ,GAAG,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;oBAC9C,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;oBAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,CAAC,EAAE;wBAC3C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;wBACvC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;wBACpC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;oBAC3B,CAAC,CAAC,CAAA;oBACF,IAAI,CAAC,OAAO;wBAAE,SAAQ;oBACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBACzB,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;wBACnC,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;wBACtD,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;oBACzB,CAAC,CAAC,CAAA;oBACF,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAsB,CAAA;oBAC9D,MAAM,cAAc,CAAC,MAAM,CAAC,CAAA;oBAC5B,MAAM,CAAC,kBAAkB,EAAE,CAAA;iBAC9B;YACL,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC;CAEJ"}
@@ -1,19 +0,0 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
- import { TcpNetConnectOpts, Socket } from "net";
4
- import { BehaviorSubject, Subject } from "rxjs";
5
- export declare class RxjsTcpSocket {
6
- #private;
7
- readonly opened_by_remote_side: boolean;
8
- $incoming_data: Subject<Buffer>;
9
- $status: BehaviorSubject<"error" | "connecting" | "ready" | "closed">;
10
- rawSocket: Socket;
11
- private constructor();
12
- static connect({ retry_times, retry_delay_ms, ...options }: TcpNetConnectOpts & {
13
- retry_times?: number;
14
- retry_delay_ms?: number;
15
- }): Promise<RxjsTcpSocket | null>;
16
- static join(socket: Socket): Promise<RxjsTcpSocket>;
17
- write(data: Buffer): void;
18
- close(): void;
19
- }
@@ -1,72 +0,0 @@
1
- import { createConnection } from "net";
2
- import { BehaviorSubject, Subject, finalize, firstValueFrom, fromEvent, map, merge, takeUntil, tap, timer } from "rxjs";
3
- import frame from 'frame-stream';
4
- import { sleep } from "../../src/helpers/sleep.js";
5
- export class RxjsTcpSocket {
6
- opened_by_remote_side;
7
- #$outgoing_data = new Subject();
8
- $incoming_data = new Subject();
9
- $status = new BehaviorSubject('connecting');
10
- rawSocket;
11
- constructor(opened_by_remote_side) {
12
- this.opened_by_remote_side = opened_by_remote_side;
13
- opened_by_remote_side && this.$status.next('ready');
14
- }
15
- static connect({ retry_times = 5, retry_delay_ms = 5000, ...options }) {
16
- const $this = new this(false);
17
- return new Promise(async (s) => {
18
- for (let i = 0; i <= retry_times; i++) {
19
- const socket = createConnection({ ...options, autoSelectFamily: true });
20
- const connected = await firstValueFrom(merge(fromEvent(socket, 'connect').pipe(map(() => true)), fromEvent(socket, 'error').pipe(map(() => false)), timer(1000).pipe(map(() => false))));
21
- if (!connected) {
22
- socket.destroy();
23
- await sleep(retry_delay_ms);
24
- if (i == 0) {
25
- break;
26
- }
27
- else {
28
- continue;
29
- }
30
- }
31
- $this.$status.next('ready');
32
- const $error = $this.#join_util_error(socket);
33
- s($this);
34
- i = 0;
35
- const status = await $error;
36
- if (status == 'closed')
37
- return;
38
- }
39
- s(null);
40
- $this.$status.next('error');
41
- });
42
- }
43
- static async join(socket) {
44
- const $this = new this(true);
45
- $this.#join_util_error(socket);
46
- return $this;
47
- }
48
- async #join_util_error(socket) {
49
- const $error = merge(fromEvent(socket, 'error').pipe(map(() => 'error')), fromEvent(socket, 'close').pipe(map(() => 'closed')), fromEvent(socket, 'timeout').pipe(map(() => 'error')), fromEvent(socket, 'end').pipe(map(() => 'closed'))).pipe(tap(status => this.$status.next(status)));
50
- this.rawSocket = socket;
51
- const encoder = frame.encode();
52
- const decoder = frame.decode();
53
- decoder.on('data', (msg) => {
54
- this.$incoming_data.next(msg);
55
- });
56
- socket.on('data', data => decoder.writable && decoder.write(data));
57
- encoder.on('data', buffer => socket.writable && socket.writable && socket.write(buffer));
58
- this.#$outgoing_data.pipe(takeUntil($error), finalize(() => {
59
- socket.removeAllListeners();
60
- decoder.removeAllListeners();
61
- encoder.removeAllListeners();
62
- }), map(data => encoder.writable && encoder.write(data), 1)).subscribe();
63
- return firstValueFrom($error);
64
- }
65
- write(data) {
66
- this.#$outgoing_data.next(data);
67
- }
68
- close() {
69
- this.rawSocket?.end();
70
- }
71
- }
72
- //# sourceMappingURL=RxjsTcpSocket.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RxjsTcpSocket.js","sourceRoot":"","sources":["../../../src/builtin-transporter/RxjsTcpSocket.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { BehaviorSubject, Observable } from "rxjs";
2
- import { RxjsTcpSocket } from "./RxjsTcpSocket.js";
3
- export type BroadcastMessage = {
4
- port: number;
5
- transporter_id: string;
6
- namespace: string;
7
- sig: string;
8
- };
9
- export type RxjsUdpBroadcasterConfig = {
10
- namespace: string;
11
- udp_address?: string;
12
- udp_port: number;
13
- transporter_id: string;
14
- $tcp_server_port: BehaviorSubject<number>;
15
- };
16
- export declare class RxjsUdpServer extends Observable<RxjsTcpSocket> {
17
- #private;
18
- private config;
19
- constructor(config: RxjsUdpBroadcasterConfig);
20
- }
@@ -1,92 +0,0 @@
1
- import { createSocket } from "dgram";
2
- import { Observable, combineLatest, filter, first, from, interval, mergeMap, tap } from "rxjs";
3
- import { networkInterfaces } from 'os';
4
- import { createHmac } from "crypto";
5
- import { BROADCAST_INTERVAL, 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
- if (msg.namespace != config.namespace)
25
- return;
26
- if (msg.transporter_id == config.transporter_id)
27
- return;
28
- if (nodes.has(msg.transporter_id))
29
- return;
30
- const sig = createHmac('SHA256', UDP_SECRET_KEY).update(`${msg.namespace}|${msg.transporter_id}|${msg.port}`).digest('base64');
31
- if (msg.sig != sig)
32
- return;
33
- const socket = await RxjsTcpSocket.connect({
34
- ...msg,
35
- host: rinfo.address,
36
- keepAlive: true,
37
- retry_delay_ms: 5000,
38
- retry_times: 5
39
- });
40
- if (socket) {
41
- if (nodes.has(msg.transporter_id)) {
42
- socket.close();
43
- }
44
- else {
45
- nodes.add(msg.transporter_id);
46
- o.next(socket);
47
- socket.$status.pipe(filter(s => s == 'closed' || s == 'error'), tap(s => nodes.delete(msg.transporter_id)), first()).subscribe();
48
- }
49
- }
50
- }
51
- catch (e) {
52
- }
53
- });
54
- config.$tcp_server_port.subscribe(port => this.#broadcast(udp, port));
55
- if (BROADCAST_INTERVAL) {
56
- combineLatest([
57
- config.$tcp_server_port,
58
- interval(BROADCAST_INTERVAL)
59
- ]).subscribe(([port]) => port && this.#broadcast(udp, port));
60
- }
61
- });
62
- this.config = config;
63
- }
64
- #broadcast(udp, port) {
65
- const { namespace, transporter_id, udp_port, udp_address = '' } = this.config;
66
- const broadcast_ips = ['255.255.255.255'];
67
- const network_address = (Object.entries(networkInterfaces())
68
- .filter(([i]) => !i.startsWith('lo'))
69
- .map(e => e[1])
70
- .flat(2)
71
- .filter(d => d && d.family == 'IPv4' && d.address)
72
- .map(d => d.address.split('.').slice(0, 3).join('.') + '.255'));
73
- const env_address = udp_address.split(',').map(a => a.trim()).filter(a => !!a);
74
- for (const address of [...network_address, ...env_address]) {
75
- const splited = address.split('.');
76
- splited.length == 4 && broadcast_ips.push(address);
77
- splited.length == 3 && new Array(256).fill(0).map((_, i) => broadcast_ips.push(`${address}.${i}`));
78
- }
79
- const msg = {
80
- namespace,
81
- transporter_id,
82
- port,
83
- sig: ''
84
- };
85
- const sig = createHmac('SHA256', UDP_SECRET_KEY).update(`${msg.namespace}|${msg.transporter_id}|${msg.port}`).digest('base64');
86
- const json = JSON.stringify({ ...msg, sig });
87
- from(broadcast_ips).pipe(mergeMap(async (host) => {
88
- await udp.send(Buffer.from(json), udp_port, host);
89
- }, 50)).subscribe();
90
- }
91
- }
92
- //# sourceMappingURL=RxjsUdpServer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RxjsUdpServer.js","sourceRoot":"","sources":["../../../src/builtin-transporter/RxjsUdpServer.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- import { EventEmitter } from "stream";
3
- export declare function waitFirstEvent(target: EventEmitter, ...events: string[]): Promise<unknown[]>;
@@ -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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ExampleEvent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExampleEvent.js","sourceRoot":"","sources":["../../tests/ExampleEvent.ts"],"names":[],"mappings":""}
@@ -1,29 +0,0 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- import { SpiderMesh } from "../src/index.js";
3
- export declare class ExampleService {
4
- private sm;
5
- online: boolean;
6
- constructor(sm: SpiderMesh);
7
- sum(a: number, b: number): number;
8
- asyncSum(a: number, b: number): Promise<number>;
9
- interator(): import("rxjs").Observable<number>;
10
- asyncInterator(): Promise<import("rxjs").Observable<number>>;
11
- buffer(): Promise<Buffer>;
12
- nulla(): Promise<void>;
13
- interatorBufferMix(): Promise<import("rxjs").Observable<{
14
- v: Set<number>;
15
- a?: undefined;
16
- b?: undefined;
17
- c?: undefined;
18
- } | {
19
- a: number;
20
- b: string;
21
- c: Buffer;
22
- v?: undefined;
23
- } | null | undefined>>;
24
- errror_test(): void;
25
- obj_errror_test(): void;
26
- i: number;
27
- retry(): number;
28
- get_id(): Promise<string>;
29
- }
@@ -1,70 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { firstValueFrom, timer, from, mergeMap } from "rxjs";
3
- import { Microservice, SpiderMesh } from "../src/index.js";
4
- let ExampleService = class ExampleService {
5
- sm;
6
- online = true;
7
- constructor(sm) {
8
- this.sm = sm;
9
- console.log(`Example service running`);
10
- }
11
- sum(a, b) {
12
- return a + b;
13
- }
14
- async asyncSum(a, b) {
15
- await firstValueFrom(timer(1000));
16
- return a + b;
17
- }
18
- interator() {
19
- return from([1, 2, 3, 4, 5]);
20
- }
21
- async asyncInterator() {
22
- return from([1, 2, 3, 4, 5]).pipe(mergeMap(async (d) => {
23
- await firstValueFrom(timer(1000));
24
- return d;
25
- }, 1));
26
- }
27
- async buffer() {
28
- return Buffer.from('ahihihi', 'utf-8');
29
- }
30
- async nulla() {
31
- }
32
- async interatorBufferMix() {
33
- return from([
34
- null,
35
- undefined,
36
- { v: new Set([1, 2,]) },
37
- { a: 1, b: "s", c: Buffer.from('abc') },
38
- ]).pipe(mergeMap(async (d) => {
39
- await firstValueFrom(timer(100));
40
- return d;
41
- }, 1));
42
- }
43
- errror_test() {
44
- throw { a: { b: "c" } };
45
- }
46
- obj_errror_test() {
47
- throw new Error('AHIHI');
48
- }
49
- i = 1;
50
- retry() {
51
- this.i++;
52
- console.log({ i: this.i });
53
- if (this.i % 3 == 0) {
54
- const a = this.i;
55
- this.i = 0;
56
- return a;
57
- }
58
- throw { e: 1 };
59
- }
60
- async get_id() {
61
- const $ = await this.sm.$metadata();
62
- return $.node_id;
63
- }
64
- };
65
- ExampleService = __decorate([
66
- Microservice(),
67
- __metadata("design:paramtypes", [SpiderMesh])
68
- ], ExampleService);
69
- export { ExampleService };
70
- //# sourceMappingURL=ExampleService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExampleService.js","sourceRoot":"","sources":["../../tests/ExampleService.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};