@spider-mesh/core 1.0.121 → 1.0.123
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 -8
- package/build/src/Encoder.js +2 -2
- package/build/src/Encoder.js.map +1 -1
- package/build/src/RPCOptions.d.ts +1 -1
- package/build/src/RPCOptions.js +1 -3
- package/build/src/RPCOptions.js.map +1 -1
- package/build/src/SpiderMesh.d.ts +30 -21
- package/build/src/SpiderMesh.js +77 -73
- package/build/src/SpiderMesh.js.map +1 -1
- package/build/src/builtin-transporter/BuiltinTransporter.d.ts +4 -4
- package/build/src/builtin-transporter/BuiltinTransporter.js +32 -29
- package/build/src/builtin-transporter/BuiltinTransporter.js.map +1 -1
- package/build/src/decorators/ListenEvent.d.ts +5 -5
- package/build/src/decorators/ListenEvent.js.map +1 -1
- package/build/src/decorators/Microservice.d.ts +12 -6
- package/build/src/decorators/Microservice.js +3 -3
- package/build/src/decorators/Microservice.js.map +1 -1
- package/build/src/interfaces/SpiderMeshTransporter.d.ts +19 -12
- package/build/tests/ExampleEvent.js +2 -0
- package/build/tests/ExampleEvent.js.map +1 -0
- package/build/tests/ExampleService.d.ts +29 -0
- package/build/tests/ExampleService.js +70 -0
- package/build/tests/ExampleService.js.map +1 -0
- package/build/tests/index.d.ts +1 -0
- package/build/tests/index.js +119 -0
- package/build/tests/index.js.map +1 -0
- package/package.json +1 -1
- package/build/tests/Rpc.js +0 -102
- package/build/tests/Rpc.js.map +0 -1
- /package/build/tests/{Rpc.d.ts → ExampleEvent.d.ts} +0 -0
package/build/src/Encoder.d.ts
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
[key: string]: PureData;
|
|
2
|
+
export type Encodable = string | number | boolean | undefined | null | Buffer | Encodable[] | {
|
|
3
|
+
[key: string]: Encodable;
|
|
5
4
|
};
|
|
6
|
-
export type Encodeable = PureData | Array<PureData | Encodeable> | {
|
|
7
|
-
[key: string]: PureData | Encodeable;
|
|
8
|
-
} | Observable<PureData>;
|
|
9
5
|
export declare const Encoder: {
|
|
10
|
-
encode: <T extends
|
|
11
|
-
decode: <T_1>(raw: Buffer) => T_1 |
|
|
6
|
+
encode: <T extends Encodable>(content: T) => Buffer;
|
|
7
|
+
decode: <T_1>(raw: Buffer) => T_1 | undefined;
|
|
12
8
|
};
|
package/build/src/Encoder.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const Encoder = {
|
|
2
2
|
encode: (content) => {
|
|
3
3
|
const buffers = [];
|
|
4
|
-
if (content ==
|
|
4
|
+
if (content == undefined) {
|
|
5
5
|
const buffer = Buffer.alloc(4);
|
|
6
6
|
buffer.writeInt32LE(-1);
|
|
7
7
|
return buffer;
|
|
@@ -43,7 +43,7 @@ export const Encoder = {
|
|
|
43
43
|
const buffers = [];
|
|
44
44
|
const length = raw.readUInt32LE(0);
|
|
45
45
|
if (length > raw.length || length < 0)
|
|
46
|
-
return
|
|
46
|
+
return;
|
|
47
47
|
let index = 4;
|
|
48
48
|
for (let i = 0; i < length; i++) {
|
|
49
49
|
const blength = raw.readUint32LE(index);
|
package/build/src/Encoder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Encoder.js","sourceRoot":"","sources":["../../src/Encoder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Encoder.js","sourceRoot":"","sources":["../../src/Encoder.ts"],"names":[],"mappings":"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"}
|
package/build/src/RPCOptions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RPCOptions.js","sourceRoot":"","sources":["../../src/RPCOptions.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAClC,UAAU;IACV,
|
|
1
|
+
{"version":3,"file":"RPCOptions.js","sourceRoot":"","sources":["../../src/RPCOptions.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAClC,UAAU;IACV,UAAU;IACV,SAAS;IACT,WAAW;IACX,QAAQ;IACR,cAAc;IACd,YAAY;IACZ,KAAK;CACR,CAAC,CAAA"}
|
|
@@ -5,9 +5,9 @@ import { RPCOptions } from './RPCOptions.js';
|
|
|
5
5
|
import { RemoteService } from './interfaces/RemoteService.js';
|
|
6
6
|
import { EventHub } from './decorators/ListenEvent.js';
|
|
7
7
|
import { Observable, Subject } from 'rxjs';
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
import { Encodable } from './Encoder.js';
|
|
9
|
+
type SpiderMeshMetadata = {
|
|
10
|
+
smnid: string;
|
|
11
11
|
};
|
|
12
12
|
export type SpiderMeshRpcEvent = {
|
|
13
13
|
request: {
|
|
@@ -18,15 +18,15 @@ export type SpiderMeshRpcEvent = {
|
|
|
18
18
|
};
|
|
19
19
|
response: {
|
|
20
20
|
request_id: string;
|
|
21
|
-
error?:
|
|
21
|
+
error?: Encodable;
|
|
22
22
|
data?: {
|
|
23
|
-
value:
|
|
23
|
+
value: Encodable;
|
|
24
24
|
};
|
|
25
25
|
completed?: boolean;
|
|
26
26
|
};
|
|
27
27
|
};
|
|
28
28
|
export type SpiderMeshNamespace = string;
|
|
29
|
-
export type SpiderMeshPublishPayload<T extends
|
|
29
|
+
export type SpiderMeshPublishPayload<T extends Encodable = Encodable> = {
|
|
30
30
|
topic: string | {
|
|
31
31
|
new (): EventHub<T>;
|
|
32
32
|
};
|
|
@@ -34,7 +34,7 @@ export type SpiderMeshPublishPayload<T extends Encodeable = Encodeable> = {
|
|
|
34
34
|
node_id?: string;
|
|
35
35
|
local_transporter_id?: string;
|
|
36
36
|
};
|
|
37
|
-
export type SpiderMeshBatchPublishPayload<T extends
|
|
37
|
+
export type SpiderMeshBatchPublishPayload<T extends Encodable = Encodable> = {
|
|
38
38
|
topic: string | {
|
|
39
39
|
new (): EventHub<T>;
|
|
40
40
|
};
|
|
@@ -46,32 +46,41 @@ export declare class SpiderMesh {
|
|
|
46
46
|
#private;
|
|
47
47
|
$nodes_monitor: Subject<SpiderMeshNodeMetadata>;
|
|
48
48
|
constructor(using_default_transporter?: boolean);
|
|
49
|
-
rpc<T = any>(service: string, method: string, args: any, options?: Partial<RPCOptions>): Observable<T> & Promise<T
|
|
50
|
-
$metadata(): Promise<Omit<SpiderMeshNodeMetadata, "
|
|
49
|
+
rpc<T = any>(service: string, method: string, args: any, options?: Partial<RPCOptions>): (Observable<T> & Promise<T>) | undefined;
|
|
50
|
+
$metadata(): Promise<Omit<SpiderMeshNodeMetadata, "local_transporter_id" | "remote_transporter_id">>;
|
|
51
51
|
$update_isolate_mode(active: boolean): Promise<void>;
|
|
52
52
|
link_transporter(transporter: SpiderMeshTransporter): Promise<void>;
|
|
53
53
|
link_remote_service<T>(factory: {
|
|
54
54
|
new (...args: any[]): T;
|
|
55
55
|
}, wait_service_online?: boolean): Promise<RemoteService<T>>;
|
|
56
|
-
link_event<T extends
|
|
56
|
+
link_event<T extends Encodable = Encodable>(event_factory: {
|
|
57
57
|
new (...args: any[]): T;
|
|
58
58
|
}, publish_buffer_ms?: number): Promise<{
|
|
59
59
|
publish: (data: T) => Promise<void>;
|
|
60
60
|
listen: () => Observable<{
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
payload: T;
|
|
62
|
+
node_id: string;
|
|
63
|
+
id: string;
|
|
64
|
+
topic: string;
|
|
65
|
+
created_at: number;
|
|
66
|
+
received_at: number;
|
|
67
|
+
metadata: SpiderMeshMetadata;
|
|
68
|
+
sti: string;
|
|
65
69
|
}>;
|
|
66
70
|
}>;
|
|
67
|
-
batch_publish<T extends
|
|
68
|
-
publish<T extends
|
|
69
|
-
listen<T extends
|
|
71
|
+
batch_publish<T extends Encodable>({ payload, topic, node_id, local_transporter_id }: SpiderMeshBatchPublishPayload<T>): Promise<void> | undefined;
|
|
72
|
+
publish<T extends Encodable>({ payload, topic, node_id, local_transporter_id }: SpiderMeshPublishPayload<T>): Promise<void> | undefined;
|
|
73
|
+
listen<T extends Encodable = Encodable>(topic: string | {
|
|
70
74
|
new (...args: any[]): T;
|
|
71
75
|
}): Observable<{
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
payload: T;
|
|
77
|
+
node_id: string;
|
|
78
|
+
id: string;
|
|
79
|
+
topic: string;
|
|
80
|
+
created_at: number;
|
|
81
|
+
received_at: number;
|
|
82
|
+
metadata: SpiderMeshMetadata;
|
|
83
|
+
sti: string;
|
|
76
84
|
}>;
|
|
77
85
|
}
|
|
86
|
+
export {};
|
package/build/src/SpiderMesh.js
CHANGED
|
@@ -6,12 +6,12 @@ import { RPCOptionsList } from './RPCOptions.js';
|
|
|
6
6
|
import os from 'os';
|
|
7
7
|
import { listEventSubscribers } from './decorators/ListenEvent.js';
|
|
8
8
|
import { listReadyHookMethods } from './decorators/OnMicroserviceReady.js';
|
|
9
|
-
import { BehaviorSubject,
|
|
9
|
+
import { BehaviorSubject, Observable, Subject, bufferTime, catchError, debounceTime, filter, firstValueFrom, from, groupBy, map, merge, mergeAll, mergeMap, of, retry, scan, share, tap, timeout } from 'rxjs';
|
|
10
10
|
import { readFileSync } from 'fs';
|
|
11
|
-
import { serviceInstanceList } from './decorators/Microservice.js';
|
|
12
11
|
import { sleep } from './helpers/sleep.js';
|
|
13
12
|
import { NAMEPSACE } from './const.js';
|
|
14
13
|
import { BuiltinTransporter } from './builtin-transporter/BuiltinTransporter.js';
|
|
14
|
+
import { $services } from './decorators/Microservice.js';
|
|
15
15
|
const PACKAGE_JSON = JSON.parse(readFileSync(`package.json`, 'utf8')) || {};
|
|
16
16
|
export class SpiderMesh {
|
|
17
17
|
#node_id = randomUUID();
|
|
@@ -66,31 +66,44 @@ export class SpiderMesh {
|
|
|
66
66
|
const rpc_node_id = this.#caculate_rpc_node_id(service, options);
|
|
67
67
|
if (!rpc_node_id)
|
|
68
68
|
throw `SERVICE_NOT_RUNNING:${service}`;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
if (options.$forgot) {
|
|
70
|
+
this.publish({
|
|
71
|
+
topic: rpc_node_id,
|
|
72
|
+
payload: {
|
|
73
|
+
request: {
|
|
74
|
+
args,
|
|
75
|
+
method,
|
|
76
|
+
request_id: '#',
|
|
77
|
+
service
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const $ = new Observable($response => {
|
|
84
|
+
const request_id = randomUUID();
|
|
85
|
+
this.#requests.set(request_id, { $response, rpc_node_id });
|
|
86
|
+
this.publish({
|
|
87
|
+
topic: rpc_node_id,
|
|
88
|
+
payload: {
|
|
89
|
+
request: {
|
|
90
|
+
args,
|
|
91
|
+
method,
|
|
92
|
+
request_id,
|
|
93
|
+
service
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
return () => {
|
|
98
|
+
this.#requests.delete(request_id);
|
|
99
|
+
};
|
|
100
|
+
}).pipe(retry({ count: options.$retry || 0, delay: options.$retry_delay || 1000 }), options.$timeout ? timeout(options.$timeout) : tap(), catchError(err => {
|
|
73
101
|
if (options.$fallback) {
|
|
74
102
|
return of(options.$fallback);
|
|
75
103
|
}
|
|
76
104
|
throw err;
|
|
77
105
|
}), share());
|
|
78
|
-
$.subscribe({
|
|
79
|
-
complete: () => { },
|
|
80
|
-
error: () => { },
|
|
81
|
-
next: () => { }
|
|
82
|
-
});
|
|
83
|
-
this.publish({
|
|
84
|
-
topic: rpc_node_id,
|
|
85
|
-
payload: {
|
|
86
|
-
request: {
|
|
87
|
-
args,
|
|
88
|
-
method,
|
|
89
|
-
request_id,
|
|
90
|
-
service
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
});
|
|
106
|
+
$.subscribe({ error: () => { }, next: () => { } });
|
|
94
107
|
return Object.assign($, {
|
|
95
108
|
then: async (success, error) => {
|
|
96
109
|
try {
|
|
@@ -153,13 +166,9 @@ export class SpiderMesh {
|
|
|
153
166
|
const me = {
|
|
154
167
|
...await this.$metadata(),
|
|
155
168
|
local_transporter_id: target.transporter.transporter_id,
|
|
156
|
-
remote_transporter_id: '#'
|
|
169
|
+
remote_transporter_id: '#OVERWRITE'
|
|
157
170
|
};
|
|
158
|
-
await this
|
|
159
|
-
topic: '#join',
|
|
160
|
-
payload: me,
|
|
161
|
-
local_transporter_id
|
|
162
|
-
});
|
|
171
|
+
await this.#publish(target.transporter, '#join', [me], remote_transporter_id);
|
|
163
172
|
}
|
|
164
173
|
}
|
|
165
174
|
async $update_isolate_mode(active) {
|
|
@@ -180,7 +189,7 @@ export class SpiderMesh {
|
|
|
180
189
|
throw 'RPC_METHOD_NOT_FOUND';
|
|
181
190
|
return service;
|
|
182
191
|
}
|
|
183
|
-
async #node_event_handler({
|
|
192
|
+
async #node_event_handler({ payload: event, sti, metadata: { smnid } }) {
|
|
184
193
|
if (event.request) {
|
|
185
194
|
const response = (data) => {
|
|
186
195
|
const error = data.error ? (data.error instanceof Error ? {
|
|
@@ -190,7 +199,7 @@ export class SpiderMesh {
|
|
|
190
199
|
stack: data.error.stack
|
|
191
200
|
} : data.error) : undefined;
|
|
192
201
|
return this.publish({
|
|
193
|
-
topic:
|
|
202
|
+
topic: smnid,
|
|
194
203
|
payload: {
|
|
195
204
|
response: {
|
|
196
205
|
request_id: event.request.request_id,
|
|
@@ -204,6 +213,8 @@ export class SpiderMesh {
|
|
|
204
213
|
const instance = this.#get_rpc_target(event.request);
|
|
205
214
|
try {
|
|
206
215
|
const value = await instance?.[event.request.method]?.(...event.request.args || []);
|
|
216
|
+
if (event.request.request_id == '#')
|
|
217
|
+
return;
|
|
207
218
|
if (value instanceof Observable) {
|
|
208
219
|
value.subscribe({
|
|
209
220
|
complete: () => response({ completed: true }),
|
|
@@ -217,10 +228,14 @@ export class SpiderMesh {
|
|
|
217
228
|
}
|
|
218
229
|
}
|
|
219
230
|
catch (error) {
|
|
231
|
+
if (event.request.request_id == '#')
|
|
232
|
+
return;
|
|
220
233
|
response({ error: error });
|
|
221
234
|
}
|
|
222
235
|
}
|
|
223
236
|
catch (error) {
|
|
237
|
+
if (event.request.request_id == '#')
|
|
238
|
+
return;
|
|
224
239
|
response({ error: error });
|
|
225
240
|
}
|
|
226
241
|
}
|
|
@@ -245,18 +260,22 @@ export class SpiderMesh {
|
|
|
245
260
|
nodes: new Map()
|
|
246
261
|
});
|
|
247
262
|
this.listen(this.#node_id).subscribe(msg => this.#node_event_handler(msg));
|
|
248
|
-
this.listen('#join').pipe(filter(node => node.
|
|
249
|
-
...
|
|
250
|
-
local_transporter_id:
|
|
251
|
-
remote_transporter_id:
|
|
252
|
-
})), mergeMap(node => this.#on_node_discovered(node), 1)))).subscribe();
|
|
253
|
-
transporter.$nodes_status.pipe(tap(node => !node.online && this.#on_node_offline(node)), groupBy(node => node.
|
|
263
|
+
this.listen('#join').pipe(filter(node => node.metadata.smnid != this.#node_id), groupBy(node => node.metadata.smnid), mergeMap(grouped => grouped.pipe(debounceTime(500), map(({ payload, sti }) => ({
|
|
264
|
+
...payload,
|
|
265
|
+
local_transporter_id: transporter.transporter_id,
|
|
266
|
+
remote_transporter_id: sti,
|
|
267
|
+
})), filter(node => node.node_id != this.#node_id), mergeMap(node => this.#on_node_discovered(node), 1)))).subscribe();
|
|
268
|
+
transporter.$nodes_status.pipe(tap(node => !node.online && this.#on_node_offline(transporter.transporter_id, node.remote_transporter_id)), groupBy(node => node.remote_transporter_id), mergeMap(grouped => grouped.pipe(scan((prev, current) => {
|
|
269
|
+
if (!prev || (prev.online != current.online))
|
|
270
|
+
return current;
|
|
271
|
+
return undefined;
|
|
272
|
+
}, undefined), filter(Boolean), map(node => node), filter(node => node.online), tap(node => this.#self_introduce(transporter.transporter_id, node.remote_transporter_id)))))
|
|
254
273
|
.subscribe();
|
|
255
|
-
|
|
274
|
+
$services.pipe(mergeMap(async ({ instance, metadata }) => {
|
|
256
275
|
await this.#active_local_service(instance, metadata);
|
|
257
276
|
await this.#active_ready_hooks(instance);
|
|
258
|
-
}), debounceTime(
|
|
259
|
-
|
|
277
|
+
}), debounceTime(500), mergeMap(async () => {
|
|
278
|
+
this.#self_introduce(transporter.transporter_id);
|
|
260
279
|
})).subscribe();
|
|
261
280
|
}
|
|
262
281
|
async #on_node_discovered(node) {
|
|
@@ -287,7 +306,7 @@ export class SpiderMesh {
|
|
|
287
306
|
}
|
|
288
307
|
this.$nodes_monitor.next(node);
|
|
289
308
|
}
|
|
290
|
-
#on_node_offline(
|
|
309
|
+
#on_node_offline(local_transporter_id, remote_transporter_id) {
|
|
291
310
|
const node_id = this.#transporters.get(local_transporter_id)?.nodes?.get(remote_transporter_id);
|
|
292
311
|
if (!node_id)
|
|
293
312
|
return;
|
|
@@ -418,9 +437,17 @@ export class SpiderMesh {
|
|
|
418
437
|
instance[method]?.(this);
|
|
419
438
|
}
|
|
420
439
|
}
|
|
421
|
-
|
|
440
|
+
#publish(transporter, topic, list, remote_transporter_id) {
|
|
422
441
|
const event = typeof topic == 'string' ? topic : topic.name;
|
|
423
|
-
const
|
|
442
|
+
const e = {
|
|
443
|
+
event,
|
|
444
|
+
metadata: { smnid: this.#node_id },
|
|
445
|
+
payload: list,
|
|
446
|
+
rti: remote_transporter_id
|
|
447
|
+
};
|
|
448
|
+
return transporter.publish(e);
|
|
449
|
+
}
|
|
450
|
+
batch_publish({ payload, topic, node_id, local_transporter_id }) {
|
|
424
451
|
if (node_id) {
|
|
425
452
|
const node = this.#linked_nodes.get(node_id);
|
|
426
453
|
if (!node)
|
|
@@ -428,26 +455,14 @@ export class SpiderMesh {
|
|
|
428
455
|
const target = this.#transporters.get(node.local_transporter_id);
|
|
429
456
|
if (!target)
|
|
430
457
|
return;
|
|
431
|
-
target.transporter.
|
|
432
|
-
event,
|
|
433
|
-
remote_transporter_id: node.remote_transporter_id,
|
|
434
|
-
data
|
|
435
|
-
});
|
|
436
|
-
return;
|
|
458
|
+
return this.#publish(target.transporter, topic, payload, node.remote_transporter_id);
|
|
437
459
|
}
|
|
438
460
|
if (local_transporter_id) {
|
|
439
461
|
const target = this.#transporters.get(local_transporter_id);
|
|
440
|
-
target
|
|
441
|
-
event,
|
|
442
|
-
data
|
|
443
|
-
});
|
|
444
|
-
return;
|
|
462
|
+
return target && this.#publish(target.transporter, topic, payload);
|
|
445
463
|
}
|
|
446
464
|
for (const { transporter } of this.#transporters.values()) {
|
|
447
|
-
|
|
448
|
-
event,
|
|
449
|
-
data
|
|
450
|
-
});
|
|
465
|
+
return this.#publish(transporter, topic, payload);
|
|
451
466
|
}
|
|
452
467
|
}
|
|
453
468
|
publish({ payload, topic, node_id, local_transporter_id }) {
|
|
@@ -460,22 +475,11 @@ export class SpiderMesh {
|
|
|
460
475
|
}
|
|
461
476
|
listen(topic) {
|
|
462
477
|
const topic_name = typeof topic == 'string' ? topic : topic.name;
|
|
463
|
-
return merge(...[...this.#transporters.values()].map(
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
data,
|
|
469
|
-
received_transporter_id,
|
|
470
|
-
sender_transporter_id,
|
|
471
|
-
sender_node_id: items.node_id
|
|
472
|
-
};
|
|
473
|
-
});
|
|
474
|
-
}
|
|
475
|
-
catch (e) {
|
|
476
|
-
return [];
|
|
477
|
-
}
|
|
478
|
-
}), mergeAll());
|
|
478
|
+
return merge(...[...this.#transporters.values()].map(({ transporter }) => (transporter.listen(topic_name).pipe(map(msg => msg.payload.map(data => ({
|
|
479
|
+
...msg,
|
|
480
|
+
payload: data,
|
|
481
|
+
node_id: msg.metadata.smnid
|
|
482
|
+
}))), mergeAll()))));
|
|
479
483
|
}
|
|
480
484
|
}
|
|
481
485
|
//# sourceMappingURL=SpiderMesh.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpiderMesh.js","sourceRoot":"","sources":["../../src/SpiderMesh.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SpiderMesh.js","sourceRoot":"","sources":["../../src/SpiderMesh.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { PublishMetadata, SpiderMeshTransporter, SpiderMeshTransporterEvent, TcpNodeStatus } from "../interfaces/SpiderMeshTransporter.js";
|
|
1
|
+
import { PublishMetadata, SpiderMeshTransporter, SpiderMeshTransporterEvent, SpiderMeshTransporterEventMetadata, TcpNodeStatus } from "../interfaces/SpiderMeshTransporter.js";
|
|
2
2
|
import { Observable, Subject } from 'rxjs';
|
|
3
|
-
import {
|
|
3
|
+
import { Encodable } from "../Encoder.js";
|
|
4
4
|
export declare class BuiltinTransporter implements SpiderMeshTransporter {
|
|
5
5
|
#private;
|
|
6
6
|
readonly $nodes_status: Subject<TcpNodeStatus>;
|
|
7
7
|
readonly transporter_id: string;
|
|
8
8
|
constructor();
|
|
9
|
-
listen<T extends
|
|
10
|
-
publish({
|
|
9
|
+
listen<T extends Encodable = Encodable, Metadata extends SpiderMeshTransporterEventMetadata = SpiderMeshTransporterEventMetadata>(topic: string): Observable<SpiderMeshTransporterEvent<T, Metadata>>;
|
|
10
|
+
publish<T extends Encodable, Metadata extends SpiderMeshTransporterEventMetadata = SpiderMeshTransporterEventMetadata>({ payload, event, metadata, rti }: PublishMetadata<T, Metadata>): Promise<void>;
|
|
11
11
|
}
|
|
@@ -29,16 +29,16 @@ export class BuiltinTransporter {
|
|
|
29
29
|
}
|
|
30
30
|
catch (e) { }
|
|
31
31
|
}), filter(Boolean), mergeMap(async (msg) => {
|
|
32
|
-
const data = msg.data;
|
|
33
32
|
if (msg.topic == `#hello`) {
|
|
34
33
|
const host = socket.rawSocket.remoteAddress;
|
|
35
34
|
host && await this.#sync_node(socket, {
|
|
36
|
-
...
|
|
35
|
+
...msg.payload,
|
|
37
36
|
host
|
|
38
37
|
});
|
|
39
38
|
return;
|
|
40
39
|
}
|
|
41
|
-
|
|
40
|
+
const event = { ...msg, received_at: Date.now() };
|
|
41
|
+
this.#listeners.get(msg.topic)?.forEach(cb => cb(event));
|
|
42
42
|
}));
|
|
43
43
|
!socket.opened_by_remote_side && this.#tcp_hello(socket);
|
|
44
44
|
return $;
|
|
@@ -72,7 +72,6 @@ export class BuiltinTransporter {
|
|
|
72
72
|
!peer_updated && this.#tcp_hello(socket);
|
|
73
73
|
this.$nodes_status.next({
|
|
74
74
|
online: true,
|
|
75
|
-
local_transporter_id: this.transporter_id,
|
|
76
75
|
remote_transporter_id: metadata.transporter_id,
|
|
77
76
|
});
|
|
78
77
|
socket.$status.pipe(filter(status => status != 'ready'), first(), finalize(() => {
|
|
@@ -83,26 +82,29 @@ export class BuiltinTransporter {
|
|
|
83
82
|
this.#nodes_map.delete(metadata.transporter_id);
|
|
84
83
|
this.$nodes_status.next({
|
|
85
84
|
remote_transporter_id: metadata.transporter_id,
|
|
86
|
-
online: false
|
|
87
|
-
local_transporter_id: this.transporter_id
|
|
85
|
+
online: false
|
|
88
86
|
});
|
|
89
87
|
})).subscribe();
|
|
90
88
|
}
|
|
91
89
|
async #tcp_hello(tcp_socket) {
|
|
92
90
|
const port = this.#$tcp.$port.getValue();
|
|
93
|
-
const data = {
|
|
94
|
-
host: '',
|
|
95
|
-
transporter_id: this.transporter_id,
|
|
96
|
-
port,
|
|
97
|
-
listening: ['#hello', ...this.#listeners.keys()],
|
|
98
|
-
peers: [...this.#nodes_map.values()].map(({ socket, ...node }) => node),
|
|
99
|
-
version: this.#version
|
|
100
|
-
};
|
|
101
91
|
const msg = {
|
|
102
|
-
|
|
103
|
-
|
|
92
|
+
created_at: Date.now(),
|
|
93
|
+
id: randomUUID(),
|
|
94
|
+
metadata: {
|
|
95
|
+
namespace: NAMEPSACE,
|
|
96
|
+
},
|
|
104
97
|
topic: '#hello',
|
|
105
|
-
|
|
98
|
+
sti: this.transporter_id,
|
|
99
|
+
payload: {
|
|
100
|
+
host: '',
|
|
101
|
+
transporter_id: this.transporter_id,
|
|
102
|
+
port,
|
|
103
|
+
listening: ['#hello', ...this.#listeners.keys()],
|
|
104
|
+
peers: [...this.#nodes_map.values()].map(({ socket, ...node }) => node),
|
|
105
|
+
version: this.#version
|
|
106
|
+
},
|
|
107
|
+
received_at: 0
|
|
106
108
|
};
|
|
107
109
|
tcp_socket.write(Encoder.encode(msg));
|
|
108
110
|
}
|
|
@@ -111,11 +113,7 @@ export class BuiltinTransporter {
|
|
|
111
113
|
this.#version = Date.now();
|
|
112
114
|
!this.#listeners.has(topic) && this.#listeners.set(topic, new Map());
|
|
113
115
|
const id = randomUUID();
|
|
114
|
-
this.#listeners.get(topic)?.set(id, (
|
|
115
|
-
data,
|
|
116
|
-
received_transporter_id: this.transporter_id,
|
|
117
|
-
sender_transporter_id
|
|
118
|
-
}));
|
|
116
|
+
this.#listeners.get(topic)?.set(id, (data) => o.next(data));
|
|
119
117
|
this.#$rebroadcast.next();
|
|
120
118
|
return () => {
|
|
121
119
|
this.#version = Date.now();
|
|
@@ -125,22 +123,27 @@ export class BuiltinTransporter {
|
|
|
125
123
|
};
|
|
126
124
|
});
|
|
127
125
|
}
|
|
128
|
-
async publish({
|
|
126
|
+
async publish({ payload, event, metadata, rti }) {
|
|
129
127
|
const msg = {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
128
|
+
created_at: Date.now(),
|
|
129
|
+
id: randomUUID(),
|
|
130
|
+
metadata,
|
|
131
|
+
payload,
|
|
132
|
+
received_at: 0,
|
|
133
|
+
sti: this.transporter_id,
|
|
134
|
+
topic: event || rti || '#'
|
|
134
135
|
};
|
|
135
136
|
const buffer = Encoder.encode(msg);
|
|
136
|
-
if (
|
|
137
|
+
if (rti) {
|
|
138
|
+
await this.#nodes_map.get(rti)?.socket?.write(buffer);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
137
141
|
for (const node_id of this.#events_map.get(event) || []) {
|
|
138
142
|
const node = this.#nodes_map.get(node_id);
|
|
139
143
|
await node?.socket?.write(buffer);
|
|
140
144
|
}
|
|
141
145
|
return;
|
|
142
146
|
}
|
|
143
|
-
remote_transporter_id && await this.#nodes_map.get(remote_transporter_id)?.socket?.write(buffer);
|
|
144
147
|
}
|
|
145
148
|
}
|
|
146
149
|
//# sourceMappingURL=BuiltinTransporter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuiltinTransporter.js","sourceRoot":"","sources":["../../../src/builtin-transporter/BuiltinTransporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAO,MAAM,MAAM,CAAA;AAC9F,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAClF,OAAO,
|
|
1
|
+
{"version":3,"file":"BuiltinTransporter.js","sourceRoot":"","sources":["../../../src/builtin-transporter/BuiltinTransporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { SpiderMeshTransporterEvent } from '../interfaces/SpiderMeshTransporter.js';
|
|
3
3
|
import { SpiderMesh } from 'src/SpiderMesh.js';
|
|
4
|
-
import {
|
|
4
|
+
import { Encodable } from 'src/Encoder.js';
|
|
5
5
|
export type EventMetadata = {
|
|
6
6
|
method: string;
|
|
7
7
|
event: string;
|
|
8
8
|
buffer_ms?: number;
|
|
9
9
|
};
|
|
10
|
-
export type EventHub<T extends
|
|
10
|
+
export type EventHub<T extends Encodable = Encodable> = {
|
|
11
11
|
publish: (data: T) => void;
|
|
12
12
|
listen: () => Observable<SpiderMeshTransporterEvent<T>>;
|
|
13
13
|
};
|
|
14
|
-
export declare const ListenEvent: <T extends
|
|
15
|
-
export declare const ListenEventBatch: <T extends
|
|
14
|
+
export declare const ListenEvent: <T extends Encodable = Encodable>(factory: new () => EventHub<T>) => (target: Object, method: string, descriptor: TypedPropertyDescriptor<(event: SpiderMeshTransporterEvent<T>, sm?: SpiderMesh) => any>) => void;
|
|
15
|
+
export declare const ListenEventBatch: <T extends Encodable = Encodable>(factory: new () => EventHub<T>, buffer_ms: number) => (target: Object, method: string, descriptor: TypedPropertyDescriptor<(event: SpiderMeshTransporterEvent<T>[], sm?: SpiderMesh) => any>) => void;
|
|
16
16
|
export declare const listEventSubscribers: (target: any) => EventMetadata[];
|
|
17
|
-
export declare function createSpiderMeshEvent<T extends
|
|
17
|
+
export declare function createSpiderMeshEvent<T extends Encodable = Encodable>(): new () => EventHub<T>;
|
|
18
18
|
export type EventDataType<T extends EventHub<any>> = Parameters<T['publish']>[0];
|
|
19
19
|
export type E<T extends EventHub<any>> = SpiderMeshTransporterEvent<EventDataType<T>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListenEvent.js","sourceRoot":"","sources":["../../../src/decorators/ListenEvent.ts"],"names":[],"mappings":"AAMA,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAcxC,MAAM,CAAC,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"ListenEvent.js","sourceRoot":"","sources":["../../../src/decorators/ListenEvent.ts"],"names":[],"mappings":"AAMA,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAcxC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAkC,OAA+B,EAAE,EAAE,CAAC,CAC7F,MAAc,EACd,MAAa,EACb,UAAmG,EACrG,EAAE;IACA,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAA;IAC1B,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAmB,EAAE,CAAC,CAAA;AAC/F,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAkC,OAA+B,EAAE,SAAiB,EAAE,EAAE,CAAC,CACrH,MAAc,EACd,MAAa,EACb,UAA0G,EAC5G,EAAE;IACA,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAA;IAC1B,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAmB,EAAE,CAAC,CAAA;AAC1G,CAAC,CAAA;AAMD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAW,EAAE,EAAE;IAChD,MAAM,OAAO,GAAG,EAAqB,CAAA;IACrC,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;QAC1D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE;YAChD,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;SACrD;KACJ;IACD,OAAO,OAAO,CAAA;AAClB,CAAC,CAAA;AAKD,MAAM,UAAU,qBAAqB;IACjC,OAAO;KAEN,CAAA;AACL,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ReplaySubject } from "rxjs";
|
|
2
2
|
import { ServiceMetadata } from "../../src/interfaces/SpiderMeshNode.js";
|
|
3
3
|
import { SpiderMesh } from "../../src/SpiderMesh.js";
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const $services: ReplaySubject<{
|
|
5
5
|
instance: any;
|
|
6
6
|
namespace: string;
|
|
7
7
|
metadata: ServiceMetadata;
|
|
@@ -20,12 +20,18 @@ export declare const NestJSLinkEvent: (factory: any, publish_buffer_ms?: number)
|
|
|
20
20
|
provide: any;
|
|
21
21
|
inject: (typeof SpiderMesh)[];
|
|
22
22
|
useFactory: (sm: SpiderMesh) => Promise<{
|
|
23
|
-
publish: (data: import("../Encoder.js").
|
|
23
|
+
publish: (data: import("../Encoder.js").Encodable) => Promise<void>;
|
|
24
24
|
listen: () => import("rxjs").Observable<{
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
payload: import("../Encoder.js").Encodable;
|
|
26
|
+
node_id: string;
|
|
27
|
+
id: string;
|
|
28
|
+
topic: string;
|
|
29
|
+
created_at: number;
|
|
30
|
+
received_at: number;
|
|
31
|
+
metadata: {
|
|
32
|
+
smnid: string;
|
|
33
|
+
};
|
|
34
|
+
sti: string;
|
|
29
35
|
}>;
|
|
30
36
|
}>;
|
|
31
37
|
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ReplaySubject } from "rxjs";
|
|
2
2
|
import { NAMEPSACE } from "../const.js";
|
|
3
3
|
import { SpiderMesh } from "../../src/SpiderMesh.js";
|
|
4
|
-
export const
|
|
4
|
+
export const $services = new ReplaySubject();
|
|
5
5
|
export const NestJSExposeMicroservice = (factory, metadata = {}, namespace = NAMEPSACE) => ({
|
|
6
6
|
provide: Symbol(),
|
|
7
7
|
inject: [factory],
|
|
8
|
-
useFactory: (instance) =>
|
|
8
|
+
useFactory: (instance) => $services.next({
|
|
9
9
|
instance,
|
|
10
10
|
namespace,
|
|
11
11
|
metadata
|
|
@@ -26,7 +26,7 @@ export const Microservice = (namespace = NAMEPSACE, metadata = {}) => {
|
|
|
26
26
|
class C extends target {
|
|
27
27
|
constructor(...args) {
|
|
28
28
|
super(...args);
|
|
29
|
-
|
|
29
|
+
$services.next({
|
|
30
30
|
instance: this,
|
|
31
31
|
namespace,
|
|
32
32
|
metadata
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Microservice.js","sourceRoot":"","sources":["../../../src/decorators/Microservice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"Microservice.js","sourceRoot":"","sources":["../../../src/decorators/Microservice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,aAAa,EAAmE,CAAA;AAI7G,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,OAAY,EAAE,WAA4B,EAAE,EAAE,YAAoB,SAAS,EAAE,EAAE,CAAC,CAAC;IACtH,OAAO,EAAE,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,QAAa,EAAE,EAAE,CAAE,SAAS,CAAC,IAAI,CAAC;QAC3C,QAAQ;QACR,SAAS;QACT,QAAQ;KACX,CAAC;CACL,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAY,EAAE,mBAA6B,EAAE,EAAE,CAAC,CAAC;IACpF,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,CAAC,UAAU,CAAC;IACpB,UAAU,EAAE,CAAC,EAAc,EAAE,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC;CACvF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAY,EAAE,iBAA0B,EAAE,EAAE,CAAC,CAAC;IAC1E,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,CAAC,UAAU,CAAC;IACpB,UAAU,EAAE,CAAC,EAAc,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,iBAAiB,CAAC;CAC5E,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,YAAoB,SAAS,EAAE,WAA4B,EAAE,EAAE,EAAE;IAC1F,OAAO,CACH,CAAC,MAAmC,EAAE,EAAE;QACpC,MAAM,CAAE,SAAQ,MAAM;YAClB,YAAY,GAAG,IAAW;gBACtB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;gBACd,SAAS,CAAC,IAAI,CAAC;oBACX,QAAQ,EAAE,IAAI;oBACd,SAAS;oBACT,QAAQ;iBACX,CAAC,CAAA;YACN,CAAC;SACJ;QACD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACxD,OAAO,CAAQ,CAAA;IACnB,CAAC,CAGG,CAAA;AACZ,CAAC,CAAA"}
|
|
@@ -1,25 +1,32 @@
|
|
|
1
1
|
import { Observable } from "rxjs";
|
|
2
|
-
import {
|
|
3
|
-
export type
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { Encodable } from "../Encoder.js";
|
|
3
|
+
export type SpiderMeshTransporterEventMetadata = {
|
|
4
|
+
[key: string]: Encodable;
|
|
5
|
+
};
|
|
6
|
+
export type SpiderMeshTransporterEvent<T extends Encodable = Encodable, Metadata = SpiderMeshTransporterEventMetadata> = {
|
|
7
|
+
id: string;
|
|
8
|
+
topic: string;
|
|
9
|
+
created_at: number;
|
|
10
|
+
received_at: number;
|
|
11
|
+
payload: T;
|
|
12
|
+
metadata: Metadata;
|
|
13
|
+
sti: string;
|
|
7
14
|
};
|
|
8
|
-
export type
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
15
|
+
export type PublishMetadata<T extends Encodable = Encodable, Metadata = SpiderMeshTransporterEventMetadata> = {
|
|
16
|
+
event: string;
|
|
17
|
+
payload: T;
|
|
18
|
+
metadata: Metadata;
|
|
19
|
+
rti?: string;
|
|
12
20
|
};
|
|
13
21
|
export type TcpNodeStatus = {
|
|
14
|
-
local_transporter_id: string;
|
|
15
22
|
remote_transporter_id: string;
|
|
16
23
|
online: boolean;
|
|
17
24
|
};
|
|
18
25
|
export type SpiderMeshTransporter = {
|
|
19
26
|
readonly transporter_id: string;
|
|
20
27
|
$nodes_status: Observable<TcpNodeStatus>;
|
|
21
|
-
listen: <T extends
|
|
22
|
-
publish<T extends
|
|
28
|
+
listen: <T extends Encodable, Metadata extends SpiderMeshTransporterEventMetadata>(topic: string) => Observable<SpiderMeshTransporterEvent<T, Metadata>>;
|
|
29
|
+
publish<T extends Encodable, Metadata extends SpiderMeshTransporterEventMetadata>(config: PublishMetadata<T, Metadata>): Promise<void>;
|
|
23
30
|
};
|
|
24
31
|
export type SpiderMeshTransporterFactory = {
|
|
25
32
|
new (...args: any[]): SpiderMeshTransporter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExampleEvent.js","sourceRoot":"","sources":["../../tests/ExampleEvent.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExampleService.js","sourceRoot":"","sources":["../../tests/ExampleService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { firstValueFrom, lastValueFrom, mergeMap, timer } from 'rxjs';
|
|
2
|
+
import { SpiderMesh } from '../src/SpiderMesh.js';
|
|
3
|
+
import { ExampleService } from './ExampleService.js';
|
|
4
|
+
import { before, it, describe } from 'node:test';
|
|
5
|
+
import { strictEqual, deepStrictEqual } from 'assert';
|
|
6
|
+
if (process.argv[2] == 'a') {
|
|
7
|
+
describe('Test RPC running service', {}, () => {
|
|
8
|
+
const sm = new SpiderMesh();
|
|
9
|
+
const service = new ExampleService(sm);
|
|
10
|
+
strictEqual(service.online, true, 'Service must online');
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
if (process.argv[2] == 'b') {
|
|
14
|
+
describe('Test RPC requester', undefined, () => {
|
|
15
|
+
let service;
|
|
16
|
+
before(async () => {
|
|
17
|
+
const sm = new SpiderMesh();
|
|
18
|
+
service = await sm.link_remote_service(ExampleService);
|
|
19
|
+
});
|
|
20
|
+
it(`Wait service online`, async () => {
|
|
21
|
+
await service.$wait_service_online();
|
|
22
|
+
strictEqual(service.$list_nodes().length >= 1, true);
|
|
23
|
+
});
|
|
24
|
+
it(`Wait 2 service online`, async () => {
|
|
25
|
+
await service.$wait_service_online();
|
|
26
|
+
strictEqual(service.$list_nodes().length >= 2, true);
|
|
27
|
+
});
|
|
28
|
+
it(`Test not found`, async () => {
|
|
29
|
+
let i = 0;
|
|
30
|
+
try {
|
|
31
|
+
await service.sumdfd(1, 2);
|
|
32
|
+
i = 1;
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
i = 2;
|
|
36
|
+
}
|
|
37
|
+
strictEqual(i, 2);
|
|
38
|
+
});
|
|
39
|
+
it(`Call sync method`, async () => {
|
|
40
|
+
strictEqual(await service.sum(1, 2), 3);
|
|
41
|
+
});
|
|
42
|
+
it(`Call async sync method`, async () => {
|
|
43
|
+
strictEqual(await service.asyncSum(1, 2), 3);
|
|
44
|
+
});
|
|
45
|
+
it(`Interator`, async () => {
|
|
46
|
+
let i = 1;
|
|
47
|
+
service.interator().subscribe(n => {
|
|
48
|
+
strictEqual(i++, n);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
it(`Async interator`, async () => {
|
|
52
|
+
let i = 1;
|
|
53
|
+
service.interator().subscribe(n => {
|
|
54
|
+
strictEqual(i++, n);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
it(`Buffer`, async () => {
|
|
58
|
+
strictEqual((await service.buffer()).toString('utf8'), 'ahihihi');
|
|
59
|
+
});
|
|
60
|
+
it(`Interator with buffer`, async () => {
|
|
61
|
+
const items = [
|
|
62
|
+
null,
|
|
63
|
+
undefined,
|
|
64
|
+
{ v: new Set([1, 2,]) },
|
|
65
|
+
{ a: 1, b: "s", c: Buffer.from('abc') },
|
|
66
|
+
];
|
|
67
|
+
await lastValueFrom(service.interatorBufferMix().pipe(mergeMap(async (data, i) => {
|
|
68
|
+
deepStrictEqual(data, items[i]);
|
|
69
|
+
})));
|
|
70
|
+
});
|
|
71
|
+
it(`Throw test obj error`, async () => {
|
|
72
|
+
try {
|
|
73
|
+
await service.errror_test();
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
deepStrictEqual(e, { a: { b: "c" } });
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
deepStrictEqual("Result", "Not throw error");
|
|
80
|
+
});
|
|
81
|
+
it(`Throw test message error`, async () => {
|
|
82
|
+
try {
|
|
83
|
+
await service.obj_errror_test();
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
deepStrictEqual(e.message, 'AHIHI');
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
deepStrictEqual("Result", "Not throw error");
|
|
90
|
+
});
|
|
91
|
+
it(`Retry`, async () => {
|
|
92
|
+
const d = await service.$retry(5).retry();
|
|
93
|
+
strictEqual(d, 3);
|
|
94
|
+
});
|
|
95
|
+
it(`RRR`, async () => {
|
|
96
|
+
const ids = service.$list_nodes().map((a, i) => a.node_id);
|
|
97
|
+
const called = ids.map(() => 0);
|
|
98
|
+
for (let i = 1; i <= ids.length * 10; i++) {
|
|
99
|
+
const id = await service.get_id();
|
|
100
|
+
const j = ids.findIndex(a => a == id);
|
|
101
|
+
called[j]++;
|
|
102
|
+
}
|
|
103
|
+
console.log({ called });
|
|
104
|
+
for (let i = 1; i < ids.length; i++) {
|
|
105
|
+
strictEqual(called[i - 1], called[i]);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
it(`ID request`, async () => {
|
|
109
|
+
await firstValueFrom(timer(5000));
|
|
110
|
+
for (const node of service.$list_nodes()) {
|
|
111
|
+
await service.$node_id(node.node_id).get_id();
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
if (process.argv[2] == 'c') {
|
|
117
|
+
const sm = new SpiderMesh();
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tests/index.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.123",
|
|
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/build/tests/Rpc.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
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
|
package/build/tests/Rpc.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Rpc.js","sourceRoot":"","sources":["../../tests/Rpc.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|