@spider-mesh/core 1.0.129 → 1.0.131
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.js +3 -0
- package/build/src/Encoder.js.map +1 -1
- package/build/src/SpiderMesh.d.ts +4 -2
- package/build/src/SpiderMesh.js +16 -21
- package/build/src/SpiderMesh.js.map +1 -1
- package/build/src/decorators/ListenEvent.d.ts +2 -2
- package/build/src/decorators/Microservice.d.ts +0 -30
- package/build/src/decorators/Microservice.js +0 -20
- package/build/src/decorators/Microservice.js.map +1 -1
- package/build/src/decorators/NestJSExposeMicroservice.d.ts +6 -0
- package/build/src/decorators/NestJSExposeMicroservice.js +12 -0
- package/build/src/decorators/NestJSExposeMicroservice.js.map +1 -0
- package/build/src/decorators/NestJSInjectMetadata.d.ts +7 -0
- package/build/src/decorators/NestJSInjectMetadata.js +14 -0
- package/build/src/decorators/NestJSInjectMetadata.js.map +1 -0
- package/build/src/decorators/NestJSLinkEvent.d.ts +20 -0
- package/build/src/decorators/NestJSLinkEvent.js +7 -0
- package/build/src/decorators/NestJSLinkEvent.js.map +1 -0
- package/build/src/decorators/NestJSLinkMicroservice.d.ts +6 -0
- package/build/src/decorators/NestJSLinkMicroservice.js +7 -0
- package/build/src/decorators/NestJSLinkMicroservice.js.map +1 -0
- package/build/src/decorators/OnMicroserviceReady.d.ts +1 -1
- package/build/src/index.d.ts +6 -2
- package/build/src/index.js +6 -2
- package/build/src/index.js.map +1 -1
- package/build/src/interfaces/SpiderMeshNode.d.ts +0 -5
- package/package.json +1 -1
- package/build/src/builtin-transporter/BuiltinTransporter.d.ts +0 -11
- package/build/src/builtin-transporter/BuiltinTransporter.js +0 -151
- package/build/src/builtin-transporter/BuiltinTransporter.js.map +0 -1
- package/build/src/builtin-transporter/RxjsTcpServer.d.ts +0 -6
- package/build/src/builtin-transporter/RxjsTcpServer.js +0 -31
- package/build/src/builtin-transporter/RxjsTcpServer.js.map +0 -1
- package/build/src/builtin-transporter/RxjsTcpSocket.d.ts +0 -19
- package/build/src/builtin-transporter/RxjsTcpSocket.js +0 -72
- package/build/src/builtin-transporter/RxjsTcpSocket.js.map +0 -1
- package/build/src/builtin-transporter/RxjsUdpServer.d.ts +0 -20
- package/build/src/builtin-transporter/RxjsUdpServer.js +0 -92
- package/build/src/builtin-transporter/RxjsUdpServer.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/Encoder.js
CHANGED
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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"}
|
|
@@ -4,7 +4,7 @@ import { SpiderMeshTransporter } from './interfaces/SpiderMeshTransporter.js';
|
|
|
4
4
|
import { RPCOptions } from './RPCOptions.js';
|
|
5
5
|
import { RemoteService } from './interfaces/RemoteService.js';
|
|
6
6
|
import { EventHub } from './decorators/ListenEvent.js';
|
|
7
|
-
import { Observable, Subject } from 'rxjs';
|
|
7
|
+
import { Observable, ReplaySubject, Subject } from 'rxjs';
|
|
8
8
|
import { Encodable } from './Encoder.js';
|
|
9
9
|
type SpiderMeshMetadata = {
|
|
10
10
|
smnid: string;
|
|
@@ -44,8 +44,10 @@ export type SpiderMeshBatchPublishPayload<T extends Encodable = Encodable> = {
|
|
|
44
44
|
};
|
|
45
45
|
export declare class SpiderMesh {
|
|
46
46
|
#private;
|
|
47
|
+
static $transporters: ReplaySubject<SpiderMeshTransporter>;
|
|
47
48
|
$nodes_monitor: Subject<SpiderMeshNodeMetadata>;
|
|
48
|
-
constructor(
|
|
49
|
+
constructor();
|
|
50
|
+
set_metadata(metadata: any, overwrite?: boolean): void;
|
|
49
51
|
rpc<T = any>(service: string, method: string, args: any, options?: Partial<RPCOptions>): Observable<T> | undefined;
|
|
50
52
|
$metadata(): Promise<Omit<SpiderMeshNodeMetadata, "local_transporter_id" | "remote_transporter_id">>;
|
|
51
53
|
$update_isolate_mode(active: boolean): Promise<void>;
|
package/build/src/SpiderMesh.js
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { randomUUID } from 'crypto';
|
|
2
2
|
import { get } from 'http';
|
|
3
|
-
import { networkInterfaces } from 'os';
|
|
4
3
|
import { DeepProxy } from './decorators/DeepProxy.js';
|
|
5
4
|
import { RPCOptionsList } from './RPCOptions.js';
|
|
6
|
-
import os from 'os';
|
|
7
5
|
import { listEventSubscribers } from './decorators/ListenEvent.js';
|
|
8
6
|
import { listReadyHookMethods } from './decorators/OnMicroserviceReady.js';
|
|
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
|
-
import { readFileSync } from 'fs';
|
|
7
|
+
import { BehaviorSubject, Observable, ReplaySubject, Subject, bufferTime, catchError, debounceTime, filter, firstValueFrom, from, groupBy, map, merge, mergeAll, mergeMap, of, retry, scan, share, tap, timeout } from 'rxjs';
|
|
11
8
|
import { sleep } from './helpers/sleep.js';
|
|
12
9
|
import { NAMEPSACE } from './const.js';
|
|
13
|
-
import { BuiltinTransporter } from './builtin-transporter/BuiltinTransporter.js';
|
|
14
10
|
import { $services } from './decorators/Microservice.js';
|
|
15
|
-
|
|
11
|
+
if (typeof Buffer == 'undefined') {
|
|
12
|
+
global.Buffer = require('buffer').Buffer;
|
|
13
|
+
}
|
|
16
14
|
export class SpiderMesh {
|
|
15
|
+
static $transporters = new ReplaySubject();
|
|
17
16
|
#node_id = randomUUID();
|
|
18
17
|
#requests = new Map;
|
|
19
18
|
#local_services = new Map();
|
|
@@ -38,11 +37,15 @@ export class SpiderMesh {
|
|
|
38
37
|
$nodes_monitor = new Subject();
|
|
39
38
|
#$isolated = new BehaviorSubject(false);
|
|
40
39
|
#transporters = new Map();
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
#metadata = {};
|
|
41
|
+
constructor() {
|
|
42
|
+
SpiderMesh.$transporters.subscribe(transporter => this.link_transporter(transporter));
|
|
43
|
+
}
|
|
44
|
+
set_metadata(metadata, overwrite = false) {
|
|
45
|
+
this.#metadata = {
|
|
46
|
+
...overwrite ? {} : this.#metadata,
|
|
47
|
+
...metadata
|
|
48
|
+
};
|
|
46
49
|
}
|
|
47
50
|
#caculate_rpc_node_id(service_name, options = {}) {
|
|
48
51
|
const current = this.#remote_services.get(service_name);
|
|
@@ -56,7 +59,7 @@ export class SpiderMesh {
|
|
|
56
59
|
const option_ip = options.$ip;
|
|
57
60
|
const nodes = option_ip ? (current
|
|
58
61
|
.nodes
|
|
59
|
-
.filter(node => node.public_ip == option_ip
|
|
62
|
+
.filter(node => node.public_ip == option_ip)) : current.nodes;
|
|
60
63
|
if (nodes.length == 0)
|
|
61
64
|
return;
|
|
62
65
|
current.last_call_index = (current.last_call_index + 1) % nodes.length;
|
|
@@ -131,10 +134,6 @@ export class SpiderMesh {
|
|
|
131
134
|
});
|
|
132
135
|
}
|
|
133
136
|
async $metadata() {
|
|
134
|
-
const ips = (Object.values(networkInterfaces())
|
|
135
|
-
.flat(2)
|
|
136
|
-
.filter(a => a && !a.internal && a.address)
|
|
137
|
-
.map(a => a?.address));
|
|
138
137
|
const services = [...this.#local_services.entries()].reduce((p, [service_id, { metadata }]) => ({
|
|
139
138
|
...p,
|
|
140
139
|
[service_id]: metadata
|
|
@@ -145,16 +144,12 @@ export class SpiderMesh {
|
|
|
145
144
|
.map(node => node.local_transporter_id))
|
|
146
145
|
];
|
|
147
146
|
const metadata = {
|
|
147
|
+
...this.#metadata,
|
|
148
148
|
node_id: this.#node_id,
|
|
149
|
-
name: PACKAGE_JSON?.name || 'UNKNOWN',
|
|
150
|
-
version: PACKAGE_JSON?.version || '1.0.0',
|
|
151
149
|
path: process.cwd(),
|
|
152
150
|
uptime: process.uptime(),
|
|
153
|
-
hostname: os.hostname(),
|
|
154
|
-
plaform: os.platform(),
|
|
155
151
|
node_version: process.version,
|
|
156
152
|
public_ip: await this.#public_ip,
|
|
157
|
-
ip_addresses: ips,
|
|
158
153
|
last_online: Date.now(),
|
|
159
154
|
online: true,
|
|
160
155
|
services,
|
|
@@ -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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAGrD,OAAO,EAAc,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAE5D,OAAO,EAAY,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAc,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACzO,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAMxD,IAAI,OAAO,MAAM,IAAI,WAAW,EAAE;IAC9B,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAA;CAC3C;AAgDD,MAAM,OAAO,UAAU;IAEZ,MAAM,CAAC,aAAa,GAAG,IAAI,aAAa,EAAyB,CAAA;IAExE,QAAQ,GAAG,UAAU,EAAE,CAAA;IAEvB,SAAS,GAAG,IAAI,GAAgE,CAAA;IAEhF,eAAe,GAAG,IAAI,GAAG,EAGrB,CAAA;IAEJ,gBAAgB,GAAG,IAAI,GAGrB,CAAA;IACF,aAAa,GAAG,IAAI,GAAG,EAA0B,CAAA;IAEjD,UAAU,GAAG,IAAI,OAAO,CAAgB,KAAK,EAAC,CAAC,EAAC,EAAE;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,MAAM,EAAE,GAAG,MAAM,IAAI,OAAO,CAAgB,CAAC,CAAC,EAAE;gBAC5C,GAAG,CAAC,sBAAsB,EAAE,CAAC,GAAG,EAAE,EAAE;oBAChC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;oBACvB,IAAI,OAAO,GAAG,EAAE,CAAA;oBAChB,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;oBAChD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;gBACnC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;YACjC,CAAC,CAAC,CAAA;YACF,IAAI,EAAE,IAAI,EAAE,IAAI,aAAa;gBAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;YAC3C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;SAC7C;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,cAAc,GAAG,IAAI,OAAO,EAAkB,CAAA;IAG9C,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAA;IAEhD,aAAa,GAAG,IAAI,GAAG,EAGnB,CAAA;IAEJ,SAAS,GAAQ,EAAE,CAAA;IAEnB;QACI,UAAU,CAAC,aAAa,CAAC,SAAS,CAC9B,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CACpD,CAAA;IACL,CAAC;IAED,YAAY,CAAC,QAAa,EAAE,YAAqB,KAAK;QAClD,IAAI,CAAC,SAAS,GAAG;YACb,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;YAClC,GAAG,QAAQ;SACd,CAAA;IACL,CAAC;IAED,qBAAqB,CAAC,YAAoB,EAAE,UAA+B,EAAE;QACzE,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QACvD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;YAAE,OAAM;QACjD,IAAI,OAAO,CAAC,QAAQ,EAAE;YAClB,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;gBAAE,OAAO,OAAO,CAAC,QAAQ,CAAA;YACzF,OAAM;SACT;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAA;QAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CACtB,OAAO;aACF,KAAK;aACL,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,CACnD,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAA;QACjB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;YAAE,OAAM;QAE7B,OAAO,CAAC,eAAe,GAAG,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;QACtE,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,CAAA;IAEjD,CAAC;IAED,GAAG,CAAU,OAAe,EAAE,MAAc,EAAE,IAAS,EAAE,UAA+B,EAAE;QAEtF,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAChE,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,UAAU,CAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CACnD,IAAI,KAAK,CAAC,uBAAuB,OAAO,EAAE,EAAE;gBACxC,KAAK,EAAE;oBACH,OAAO;oBACP,MAAM;oBACN,IAAI;oBACJ,OAAO;iBACV;aAEJ,CAAC,CACL,CAAC,CAAA;QAEF,IAAI,OAAO,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,CAAsC;gBAC9C,KAAK,EAAE,WAAW;gBAClB,OAAO,EAAE;oBACL,OAAO,EAAE;wBACL,IAAI;wBACJ,MAAM;wBACN,UAAU,EAAE,GAAG;wBACf,OAAO;qBACV;iBACJ;aACJ,CAAC,CAAA;YACF,OAAM;SACT;QAED,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE;YACjC,MAAM,UAAU,GAAG,UAAU,EAAE,CAAA;YAI/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAA;YAG1D,IAAI,CAAC,OAAO,CAAsC;gBAC9C,KAAK,EAAE,WAAW;gBAClB,OAAO,EAAE;oBACL,OAAO,EAAE;wBACL,IAAI;wBACJ,MAAM;wBACN,UAAU;wBACV,OAAO;qBACV;iBACJ;aACJ,CAAC,CAAA;YAEF,OAAO,GAAG,EAAE;gBACR,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YACrC,CAAC,CAAA;QACL,CAAC,CAAC,CAAC,IAAI,CACH,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC,EAC1E,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EACpD,UAAU,CAAC,GAAG,CAAC,EAAE;YACb,IAAI,OAAO,CAAC,SAAS,EAAE;gBACnB,OAAO,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;aAC/B;YACD,MAAM,GAAG,CAAA;QACb,CAAC,CAAC,EACF,KAAK,EAAE,CACV,CAAA;QAED,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QAIlD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;YACpB,IAAI,EAAE,KAAK,EAAE,OAAiB,EAAE,KAAe,EAAE,EAAE;gBAC/C,IAAI;oBACA,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,CAAC,CAAC,CAAA;oBACrC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;iBACtD;gBAAC,OAAO,CAAC,EAAE;oBACR,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;iBACrD;YACL,CAAC;YACD,KAAK,CAAC,KAAK;gBACP,OAAO,EAAO,CAAA;YAClB,CAAC;YACD,KAAK,CAAC,OAAO;gBACT,OAAO,EAAO,CAAA;YAClB,CAAC;YACD,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE;SAC3B,CAA+B,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,SAAS;QAEX,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CACvD,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,GAAG,CAAC;YACJ,CAAC,UAAU,CAAC,EAAE,QAAQ;SACzB,CAAC,EACF,EAAE,CACL,CAAA;QACD,MAAM,cAAc,GAAG;YACnB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;iBACtC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;iBAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SAC/C,CAAA;QAED,MAAM,QAAQ,GAAmF;YAC7F,GAAI,IAAI,CAAC,SAAS;YAClB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE;YACnB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;YACxB,YAAY,EAAE,OAAO,CAAC,OAAO;YAC7B,SAAS,EAAE,MAAM,IAAI,CAAC,UAAU;YAChC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,MAAM,EAAE,IAAI;YACZ,QAAQ;YACR,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YACtC,cAAc;YACd,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;SAClC,CAAA;QACD,OAAO,QAAQ,CAAA;IACnB,CAAC;IAGD,KAAK,CAAC,eAAe,CAAC,oBAA6B,EAAE,qBAA8B;QAC/E,MAAM,IAAI,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAA;QACtH,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE;YACvB,IAAI,CAAC,MAAM;gBAAE,SAAQ;YACrB,MAAM,EAAE,GAA2B;gBAC/B,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;gBACzB,oBAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,cAAc;gBACvD,qBAAqB,EAAE,YAAY;aACtC,CAAA;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAA;SAChF;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,MAAe;QACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5B,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QACvC,OAAO,EAAE,CAAA;IACb,CAAC;IAED,eAAe,CAAC,GAAkC;QAC9C,IAAI,GAAG,CAAC,OAAO,IAAI,YAAY,EAAE;YAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,MAAM,8BAA8B,CAAA;YACrE,OAAO,IAAI,CAAA;SACd;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAA;QAC/D,IAAI,CAAC,OAAO;YAAE,MAAM,uBAAuB,CAAA;QAC3C,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,UAAU;YAAE,MAAM,sBAAsB,CAAA;QAC1E,OAAO,OAAO,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAsE;QAEtI,IAAI,KAAK,CAAC,OAAO,EAAE;YACf,MAAM,QAAQ,GAAG,CAAC,IAA6C,EAAE,EAAE;gBAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC;oBACtD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAe;oBACjC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;oBAC3B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAc;oBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAe;iBACpC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAC3B,OAAO,IAAI,CAAC,OAAO,CAAuC;oBACtD,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE;wBACL,QAAQ,EAAE;4BACN,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;4BACpC,GAAG,IAAI;4BACP,KAAK;yBACR;qBACJ;iBACJ,CAAC,CAAA;YACN,CAAC,CAAA;YACD,IAAI;gBACA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAIpD,IAAI;oBACA,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;oBACnF,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG;wBAAE,OAAM;oBAC3C,IAAI,KAAK,YAAY,UAAU,EAAE;wBAC7B,KAAK,CAAC,SAAS,CAAC;4BACZ,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;4BAC7C,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;4BACnC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;yBAC/C,CAAC,CAAA;wBACF,OAAM;qBACT;yBAAM;wBACH,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;qBACjD;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG;wBAAE,OAAM;oBAC3C,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAkB,EAAE,CAAC,CAAA;iBAC1C;aACJ;YAAC,OAAO,KAAK,EAAE;gBACZ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG;oBAAE,OAAM;gBAC3C,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAY,EAAE,CAAC,CAAA;aACpC;SACJ;QAED,IAAI,KAAK,CAAC,QAAQ,EAAE;YAChB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;YAC7D,IAAI,CAAC,OAAO;gBAAE,OAAM;YACpB,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;gBACrB,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aACpD;YACD,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE;gBAC1B,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAA;aAC/B;YACD,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE;gBACtB,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;aAChD;SACJ;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,WAAkC;QAErD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,cAAc,EAAE;YAC/C,WAAW;YACX,KAAK,EAAE,IAAI,GAAG,EAAE;SACnB,CAAC,CAAA;QAIF,IAAI,CAAC,MAAM,CAAqB,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CACpD,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CACvC,CAAA;QAGD,IAAI,CAAC,MAAM,CAAiB,OAAO,CAAC,CAAC,IAAI,CACrC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,EACpD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAC5B,YAAY,CAAC,GAAG,CAAC,EACjB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YACvB,GAAG,OAAO;YACV,oBAAoB,EAAE,WAAW,CAAC,cAAc;YAChD,qBAAqB,EAAE,GAAG;SACV,CAAA,CAAC,EACrB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CACtD,CAAC,CAEL,CAAC,SAAS,EAAE,CAAA;QAGb,WAAW,CAAC,aAAa,CAAC,IAAI,CAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAC1G,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAC5B,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YACnB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;gBAAE,OAAO,OAAwB,CAAA;YAC7E,OAAO,SAAS,CAAA;QACpB,CAAC,EAAE,SAAwC,CAAC,EAC5C,MAAM,CAAC,OAAO,CAAC,EACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAqB,CAAC,EAClC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAC5F,CAAC,CACL;aACI,SAAS,EAAE,CAAA;QAEhB,SAAS,CAAC,IAAI,CACV,QAAQ,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;YACtC,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YACpD,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA;QAC5C,CAAC,CAAC,EACF,YAAY,CAAC,GAAG,CAAC,EACjB,QAAQ,CAAC,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;QACpD,CAAC,CAAC,CACL,CAAC,SAAS,EAAE,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAoB;QAC1C,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACvD,IAAI,UAAU,IAAI,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;YAAE,OAAM;QACnE,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACxD,MAAM,QAAQ,GAAmB;YAC7B,GAAG,IAAI;YACP,MAAM,EAAE,IAAI;SACf,CAAA;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACtG,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK;YAAE,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAA;QAE9H,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;gBACxC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE;oBAClC,eAAe,EAAE,CAAC,CAAC;oBACnB,KAAK,EAAE,EAAE;iBACZ,CAAC,CAAA;aACL;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAE,CAAA;YACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC1E,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SAClF;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAElC,CAAC;IAED,gBAAgB,CAAC,oBAA4B,EAAE,qBAA6B;QAExE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAA;QAC/F,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC5C,IAAI,CAAC,IAAI;YAAE,OAAM;QAIjB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE;YAClD,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,IAAI,qBAAqB,CAAC,CAAA;SACpG;QAGD,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;YAC5D,IAAI,WAAW,IAAI,OAAO,EAAE;gBACxB,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;gBAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;aAC7B;SACJ;QAGD,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAC5D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAEtC,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAI,OAAmC,EAAE,sBAA+B,KAAK;QAElG,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAA;QAEjC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;YAC5B,QAAQ;YACR,QAAQ;YACR,WAAW;YACX,aAAa;YACb,kBAAkB;YAClB,kBAAkB;YAClB,gBAAgB;YAChB,kBAAkB;YAClB,kBAAkB;YAClB,eAAe;YACf,sBAAsB;YACtB,UAAU;YACV,SAAS;YACT,gBAAgB;YAChB,WAAW;YACX,cAAc;YACd,wBAAwB;YACxB,iBAAiB;YACjB,2BAA2B;YAC3B,uBAAuB;SAC1B,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;QACjC,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;YACrE,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE;gBAC/F,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;aACxD;SACJ;QAGD,mBAAmB,IAAI,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAA;QAEpE,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE;YACjB,GAAG,EAAE,CAAC,CAAC,EAAE,MAAc,EAAE,EAAE;gBACvB,IAAI,MAAM,IAAI,sBAAsB,EAAE;oBAClC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAA;iBACvD;gBAED,IAAI,MAAM,IAAI,QAAQ;oBAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CACzD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAChD,CAAA;gBAED,IAAI,MAAM,IAAI,aAAa,EAAE;oBACzB,OAAO,CACH,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CACrF,CAAA;iBACvC;gBAED,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;oBAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;oBAEhD,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;wBAAE,OAAO,IAAI,CAAA;oBAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;oBAEjG,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE;wBACtB,MAAM,CAAC,GAAG,IAAI,OAAO,EAAE,CAAA;wBACvB,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CACZ,QAAQ,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;4BAClB,IAAI;gCACA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CACvB,YAAY,EACZ,WAAW,EACX,IAAI,EACJ,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAgB,CAC3C,CAAA;gCACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;6BACxB;4BAAC,OAAO,KAAK,EAAE;gCACZ,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;6BACzB;wBACL,CAAC,CAAC,CACL,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;wBACd,OAAO,CAAC,CAAA;oBACZ,CAAC,CAAA;iBACJ;gBAED,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;oBAC/C,OAAO,IAAI,SAAS,CAChB,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EACpC,CAAC,MAAc,EAAE,OAAO,EAAE,EAAE,CAAC,CACzB,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CACpE,CACJ,CAAC,IAAI,EAAE,CAAC,MAAyB,CAAC,CAAA;iBACtC;gBAED,OAAO,IAAI,CAAA;YACf,CAAC;SACJ,CAAqB,CAAA;IAE1B,CAAC;IAED,KAAK,CAAC,UAAU,CAAkC,aAAyC,EAAE,iBAA0B;QACnH,MAAM,CAAC,GAAG,IAAI,OAAO,EAAK,CAAA;QAC1B,MAAM,EAAE,GAAwB,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACxH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;YAC9B,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,aAAa,CAAC,IAAI;SAC5B,CAAC,CAAC,CAAA;QAEH,OAAO;YACH,OAAO,EAAE,KAAK,EAAE,IAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACxC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAI,aAAa,CAAC;SAC9C,CAAA;IAEL,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,QAAa,EAAE,QAAyB;QAEhE,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QACjD,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAA;QAEvC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;QACtD,IAAI,CAAC,MAAM,CAAqB,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAA;QAIrF,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAA;QACzD,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,iBAAiB,EAAE;YAC1D,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;YACvE,MAAM,EAAE,GAAoB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;SACjD;IAEL,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,eAAuB,KAAK;QAEnD,OAAO,IAAI,EAAE;YACT,MAAM,KAAK,CAAC,IAAI,CAAC,CAAA;YACjB,IAAI,YAAY,IAAI,KAAK,EAAE;gBACvB,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;oBACpE,OAAO,IAAI,CAAA;iBACd;aACJ;iBAAM;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,IAAI,EAAE,CAAA;gBAClE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAM;aAC/B;SACJ;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,QAAa;QAGnC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAGjC,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE;YAC5E,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;SAC3B;IACL,CAAC;IAED,QAAQ,CAAsB,WAAkC,EAAE,KAAuC,EAAE,IAAS,EAAE,qBAA8B;QAChJ,MAAM,KAAK,GAAG,OAAO,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;QAC3D,MAAM,CAAC,GAAG;YACN,KAAK;YACL,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;YAClC,OAAO,EAAE,IAAI;YACb,GAAG,EAAE,qBAAqB;SAC7B,CAAA;QACD,OAAO,WAAW,CAAC,OAAO,CAA0B,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,aAAa,CAAsB,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAoC;QAClH,IAAI,OAAO,EAAE;YACT,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAC5C,IAAI,CAAC,IAAI;gBAAE,OAAM;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;YAChE,IAAI,CAAC,MAAM;gBAAE,OAAM;YACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAA;SACvF;QACD,IAAI,oBAAoB,EAAE;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;YAC3D,OAAO,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;SACrE;QACD,KAAK,MAAM,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE;YACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;SACpD;IAEL,CAAC;IAED,OAAO,CAAsB,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAA+B;QACvG,OAAO,IAAI,CAAC,aAAa,CAAC;YACtB,OAAO;YACP,OAAO,EAAE,CAAC,OAAO,CAAC;YAClB,KAAK;YACL,oBAAoB;SACvB,CAAC,CAAA;IACN,CAAC;IAED,MAAM,CAAkC,KAA0C;QAC9E,MAAM,UAAU,GAAG,OAAO,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;QAChE,OAAO,KAAK,CACR,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CACzD,WAAW,CAAC,MAAM,CAA0B,UAAU,CAAC,CAAC,IAAI,CACxD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,GAAG,GAAG;YACN,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,GAAG,CAAC,QAAS,CAAC,KAAK;SAC/B,CAAC,CAAC,CAAC,EACJ,QAAQ,EAAE,CACb,CACJ,CAAC,CACL,CAAA;IACL,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { SpiderMeshTransporterEvent } from '../interfaces/SpiderMeshTransporter.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { Encodable } from '../Encoder.js';
|
|
4
|
+
import { SpiderMesh } from '../SpiderMesh.js';
|
|
5
5
|
export type EventMetadata = {
|
|
6
6
|
method: string;
|
|
7
7
|
event: string;
|
|
@@ -1,38 +1,8 @@
|
|
|
1
1
|
import { ReplaySubject } from "rxjs";
|
|
2
2
|
import { ServiceMetadata } from "../../src/interfaces/SpiderMeshNode.js";
|
|
3
|
-
import { SpiderMesh } from "../../src/SpiderMesh.js";
|
|
4
3
|
export declare const $services: ReplaySubject<{
|
|
5
4
|
instance: any;
|
|
6
5
|
namespace: string;
|
|
7
6
|
metadata: ServiceMetadata;
|
|
8
7
|
}>;
|
|
9
|
-
export declare const NestJSExposeMicroservice: (factory: any, metadata?: ServiceMetadata, namespace?: string) => {
|
|
10
|
-
provide: symbol;
|
|
11
|
-
inject: any[];
|
|
12
|
-
useFactory: (instance: any) => void;
|
|
13
|
-
};
|
|
14
|
-
export declare const NestJSLinkMicroservice: (factory: any, wait_service_online?: boolean) => {
|
|
15
|
-
provide: any;
|
|
16
|
-
inject: (typeof SpiderMesh)[];
|
|
17
|
-
useFactory: (sm: SpiderMesh) => Promise<import("../index.js").RemoteService<unknown>>;
|
|
18
|
-
};
|
|
19
|
-
export declare const NestJSLinkEvent: (factory: any, publish_buffer_ms?: number) => {
|
|
20
|
-
provide: any;
|
|
21
|
-
inject: (typeof SpiderMesh)[];
|
|
22
|
-
useFactory: (sm: SpiderMesh) => Promise<{
|
|
23
|
-
publish: (data: import("../Encoder.js").Encodable) => Promise<void>;
|
|
24
|
-
listen: () => import("rxjs").Observable<{
|
|
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;
|
|
35
|
-
}>;
|
|
36
|
-
}>;
|
|
37
|
-
};
|
|
38
8
|
export declare const Microservice: (namespace?: string, metadata?: ServiceMetadata) => any;
|
|
@@ -1,26 +1,6 @@
|
|
|
1
1
|
import { ReplaySubject } from "rxjs";
|
|
2
2
|
import { NAMEPSACE } from "../const.js";
|
|
3
|
-
import { SpiderMesh } from "../../src/SpiderMesh.js";
|
|
4
3
|
export const $services = new ReplaySubject();
|
|
5
|
-
export const NestJSExposeMicroservice = (factory, metadata = {}, namespace = NAMEPSACE) => ({
|
|
6
|
-
provide: Symbol(),
|
|
7
|
-
inject: [factory],
|
|
8
|
-
useFactory: (instance) => $services.next({
|
|
9
|
-
instance,
|
|
10
|
-
namespace,
|
|
11
|
-
metadata
|
|
12
|
-
})
|
|
13
|
-
});
|
|
14
|
-
export const NestJSLinkMicroservice = (factory, wait_service_online) => ({
|
|
15
|
-
provide: factory,
|
|
16
|
-
inject: [SpiderMesh],
|
|
17
|
-
useFactory: (sm) => sm.link_remote_service(factory, wait_service_online)
|
|
18
|
-
});
|
|
19
|
-
export const NestJSLinkEvent = (factory, publish_buffer_ms) => ({
|
|
20
|
-
provide: factory,
|
|
21
|
-
inject: [SpiderMesh],
|
|
22
|
-
useFactory: (sm) => sm.link_event(factory, publish_buffer_ms)
|
|
23
|
-
});
|
|
24
4
|
export const Microservice = (namespace = NAMEPSACE, metadata = {}) => {
|
|
25
5
|
return ((target) => {
|
|
26
6
|
class C extends target {
|
|
@@ -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;
|
|
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;AAGvC,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,aAAa,EAAmE,CAAA;AAI7G,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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { NAMEPSACE } from "../const.js";
|
|
2
|
+
import { $services } from "./Microservice.js";
|
|
3
|
+
export const NestJSExposeMicroservice = (factory, metadata = {}, namespace = NAMEPSACE) => ({
|
|
4
|
+
provide: Symbol(),
|
|
5
|
+
inject: [factory],
|
|
6
|
+
useFactory: (instance) => $services.next({
|
|
7
|
+
instance,
|
|
8
|
+
namespace,
|
|
9
|
+
metadata
|
|
10
|
+
})
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=NestJSExposeMicroservice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NestJSExposeMicroservice.js","sourceRoot":"","sources":["../../../src/decorators/NestJSExposeMicroservice.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ServiceMetadata } from "../interfaces/SpiderMeshNode.js";
|
|
2
|
+
import { SpiderMesh } from "../SpiderMesh.js";
|
|
3
|
+
export declare const NestJSInjectMetadata: (fn: () => Promise<ServiceMetadata>) => {
|
|
4
|
+
provide: symbol;
|
|
5
|
+
inject: (typeof SpiderMesh)[];
|
|
6
|
+
useFactory: (sm: SpiderMesh) => Promise<void>;
|
|
7
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SpiderMesh } from "../SpiderMesh.js";
|
|
2
|
+
export const NestJSInjectMetadata = (fn) => ({
|
|
3
|
+
provide: Symbol.for('NestJSInjectMetadata'),
|
|
4
|
+
inject: [SpiderMesh],
|
|
5
|
+
useFactory: async (sm) => {
|
|
6
|
+
try {
|
|
7
|
+
const m = await fn();
|
|
8
|
+
sm.set_metadata(m, true);
|
|
9
|
+
}
|
|
10
|
+
catch (e) {
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=NestJSInjectMetadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NestJSInjectMetadata.js","sourceRoot":"","sources":["../../../src/decorators/NestJSInjectMetadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAkC,EAAE,EAAE,CAAC,CAAC;IACzE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC3C,MAAM,EAAE,CAAC,UAAU,CAAC;IACpB,UAAU,EAAE,KAAK,EAAE,EAAc,EAAE,EAAE;QACjC,IAAI;YACA,MAAM,CAAC,GAAG,MAAM,EAAE,EAAE,CAAA;YACpB,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;SAC3B;QAAC,OAAO,CAAC,EAAE;SAEX;IACL,CAAC;CACJ,CAAC,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SpiderMesh } from "../SpiderMesh.js";
|
|
2
|
+
export declare const NestJSLinkEvent: (factory: any, publish_buffer_ms?: number) => {
|
|
3
|
+
provide: any;
|
|
4
|
+
inject: (typeof SpiderMesh)[];
|
|
5
|
+
useFactory: (sm: SpiderMesh) => Promise<{
|
|
6
|
+
publish: (data: import("../Encoder.js").Encodable) => Promise<void>;
|
|
7
|
+
listen: () => import("rxjs").Observable<{
|
|
8
|
+
payload: import("../Encoder.js").Encodable;
|
|
9
|
+
node_id: string;
|
|
10
|
+
id: string;
|
|
11
|
+
topic: string;
|
|
12
|
+
created_at: number;
|
|
13
|
+
received_at: number;
|
|
14
|
+
metadata: {
|
|
15
|
+
smnid: string;
|
|
16
|
+
};
|
|
17
|
+
sti: string;
|
|
18
|
+
}>;
|
|
19
|
+
}>;
|
|
20
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SpiderMesh } from "../SpiderMesh.js";
|
|
2
|
+
export const NestJSLinkEvent = (factory, publish_buffer_ms) => ({
|
|
3
|
+
provide: factory,
|
|
4
|
+
inject: [SpiderMesh],
|
|
5
|
+
useFactory: (sm) => sm.link_event(factory, publish_buffer_ms)
|
|
6
|
+
});
|
|
7
|
+
//# sourceMappingURL=NestJSLinkEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NestJSLinkEvent.js","sourceRoot":"","sources":["../../../src/decorators/NestJSLinkEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SpiderMesh } from "../SpiderMesh.js";
|
|
2
|
+
export declare const NestJSLinkMicroservice: (factory: any, wait_service_online?: boolean) => {
|
|
3
|
+
provide: any;
|
|
4
|
+
inject: (typeof SpiderMesh)[];
|
|
5
|
+
useFactory: (sm: SpiderMesh) => Promise<import("../index.js").RemoteService<unknown>>;
|
|
6
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SpiderMesh } from "../SpiderMesh.js";
|
|
2
|
+
export const NestJSLinkMicroservice = (factory, wait_service_online) => ({
|
|
3
|
+
provide: factory,
|
|
4
|
+
inject: [SpiderMesh],
|
|
5
|
+
useFactory: (sm) => sm.link_remote_service(factory, wait_service_online)
|
|
6
|
+
});
|
|
7
|
+
//# sourceMappingURL=NestJSLinkMicroservice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NestJSLinkMicroservice.js","sourceRoot":"","sources":["../../../src/decorators/NestJSLinkMicroservice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,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"}
|
package/build/src/index.d.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
export * from './const.js';
|
|
2
|
-
export { BuiltinTransporter } from './builtin-transporter/BuiltinTransporter.js';
|
|
3
2
|
export { SpiderMesh } from './SpiderMesh.js';
|
|
4
3
|
export { SpiderMeshNode, SpiderMeshNodeMetadata } from './interfaces/SpiderMeshNode.js';
|
|
5
4
|
export { SpiderMeshTransporter, SpiderMeshTransporterFactory } from './interfaces/SpiderMeshTransporter.js';
|
|
6
5
|
export { RemoteService } from './interfaces/RemoteService.js';
|
|
7
6
|
export { RPCOptions, RPCOptionsList } from './RPCOptions.js';
|
|
8
7
|
export { OnMicroserviceReady } from './decorators/OnMicroserviceReady.js';
|
|
9
|
-
export { Microservice
|
|
8
|
+
export { Microservice } from './decorators/Microservice.js';
|
|
9
|
+
export { NestJSExposeMicroservice } from './decorators/NestJSExposeMicroservice.js';
|
|
10
|
+
export { NestJSLinkMicroservice } from './decorators/NestJSLinkMicroservice.js';
|
|
11
|
+
export { NestJSLinkEvent } from './decorators/NestJSLinkEvent.js';
|
|
12
|
+
export { NestJSInjectMetadata } from './decorators/NestJSInjectMetadata.js';
|
|
13
|
+
export { Encodable, Encoder } from './Encoder.js';
|
|
10
14
|
export { ListenEvent, EventDataType, EventHub, createSpiderMeshEvent, E, ListenEventBatch } from './decorators/ListenEvent.js';
|
|
11
15
|
export * from './interfaces/SpiderMeshTransporter.js';
|
|
12
16
|
export { LimitConcurrentRunning } from './decorators/LimitConcurrentRunning.js';
|
package/build/src/index.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
export * from './const.js';
|
|
2
|
-
export { BuiltinTransporter } from './builtin-transporter/BuiltinTransporter.js';
|
|
3
2
|
export { SpiderMesh } from './SpiderMesh.js';
|
|
4
3
|
export { RPCOptionsList } from './RPCOptions.js';
|
|
5
4
|
export { OnMicroserviceReady } from './decorators/OnMicroserviceReady.js';
|
|
6
|
-
export { Microservice
|
|
5
|
+
export { Microservice } from './decorators/Microservice.js';
|
|
6
|
+
export { NestJSExposeMicroservice } from './decorators/NestJSExposeMicroservice.js';
|
|
7
|
+
export { NestJSLinkMicroservice } from './decorators/NestJSLinkMicroservice.js';
|
|
8
|
+
export { NestJSLinkEvent } from './decorators/NestJSLinkEvent.js';
|
|
9
|
+
export { NestJSInjectMetadata } from './decorators/NestJSInjectMetadata.js';
|
|
10
|
+
export { Encoder } from './Encoder.js';
|
|
7
11
|
export { ListenEvent, createSpiderMeshEvent, ListenEventBatch } from './decorators/ListenEvent.js';
|
|
8
12
|
export * from './interfaces/SpiderMeshTransporter.js';
|
|
9
13
|
export { LimitConcurrentRunning } from './decorators/LimitConcurrentRunning.js';
|
package/build/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,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,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAa,OAAO,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EACH,WAAW,EAGX,qBAAqB,EAErB,gBAAgB,EACnB,MAAM,6BAA6B,CAAA;AACpC,cAAc,uCAAuC,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA"}
|
|
@@ -5,16 +5,11 @@ export type SpiderMeshNodeMetadata = {
|
|
|
5
5
|
node_id: string;
|
|
6
6
|
local_transporter_id: string;
|
|
7
7
|
remote_transporter_id: string;
|
|
8
|
-
name: string;
|
|
9
|
-
version: string;
|
|
10
8
|
path: string;
|
|
11
9
|
uptime: number;
|
|
12
|
-
plaform: string;
|
|
13
|
-
hostname: string;
|
|
14
10
|
node_version: string;
|
|
15
11
|
namespace: string;
|
|
16
12
|
public_ip: string | null;
|
|
17
|
-
ip_addresses: string[];
|
|
18
13
|
last_online: number;
|
|
19
14
|
online: boolean;
|
|
20
15
|
services: {
|
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.131",
|
|
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",
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { PublishMetadata, SpiderMeshTransporter, SpiderMeshTransporterEvent, SpiderMeshTransporterEventMetadata, TcpNodeStatus } from "../interfaces/SpiderMeshTransporter.js";
|
|
2
|
-
import { Observable, Subject } from 'rxjs';
|
|
3
|
-
import { Encodable } from "../Encoder.js";
|
|
4
|
-
export declare class BuiltinTransporter implements SpiderMeshTransporter {
|
|
5
|
-
#private;
|
|
6
|
-
readonly $nodes_status: Subject<TcpNodeStatus>;
|
|
7
|
-
readonly transporter_id: string;
|
|
8
|
-
constructor();
|
|
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
|
-
}
|
|
@@ -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,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,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"}
|