@spider-mesh/core 2.0.8 → 2.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/build/const.d.ts +1 -0
  2. package/build/const.js +1 -0
  3. package/build/const.js.map +1 -1
  4. package/build/src/SpiderMesh.d.ts +19 -10
  5. package/build/src/SpiderMesh.js +26 -139
  6. package/build/src/SpiderMesh.js.map +1 -1
  7. package/build/src/abstract/DiscoveryTransporter.d.ts +5 -0
  8. package/build/src/abstract/DiscoveryTransporter.js +3 -0
  9. package/build/src/abstract/DiscoveryTransporter.js.map +1 -0
  10. package/build/src/abstract/PubsubTransporter.d.ts +11 -0
  11. package/build/src/abstract/PubsubTransporter.js +3 -0
  12. package/build/src/abstract/PubsubTransporter.js.map +1 -0
  13. package/build/src/abstract/RemoteService.d.ts +35 -0
  14. package/build/src/abstract/RemoteService.js +107 -0
  15. package/build/src/abstract/RemoteService.js.map +1 -0
  16. package/build/src/abstract/RpcTransporter.d.ts +30 -0
  17. package/build/src/abstract/RpcTransporter.js +3 -0
  18. package/build/src/abstract/RpcTransporter.js.map +1 -0
  19. package/build/src/abstract/SpiderMeshNode.d.ts +18 -0
  20. package/build/src/abstract/SpiderMeshNode.js +2 -0
  21. package/build/src/abstract/SpiderMeshNode.js.map +1 -0
  22. package/build/src/abstracts/DiscoveryTransporter.d.ts +5 -0
  23. package/build/src/abstracts/DiscoveryTransporter.js +3 -0
  24. package/build/src/abstracts/DiscoveryTransporter.js.map +1 -0
  25. package/build/src/abstracts/PubsubTransporter.d.ts +11 -0
  26. package/build/src/abstracts/PubsubTransporter.js +3 -0
  27. package/build/src/abstracts/PubsubTransporter.js.map +1 -0
  28. package/build/src/abstracts/RemoteService.d.ts +38 -0
  29. package/build/src/abstracts/RemoteService.js +102 -0
  30. package/build/src/abstracts/RemoteService.js.map +1 -0
  31. package/build/src/abstracts/RpcTransporter.d.ts +30 -0
  32. package/build/src/abstracts/RpcTransporter.js +3 -0
  33. package/build/src/abstracts/RpcTransporter.js.map +1 -0
  34. package/build/src/abstracts/SpiderMeshNode.d.ts +18 -0
  35. package/build/src/abstracts/SpiderMeshNode.js +2 -0
  36. package/build/src/abstracts/SpiderMeshNode.js.map +1 -0
  37. package/build/src/decorators/Microservice.d.ts +1 -1
  38. package/build/src/decorators/NestJSLinkMicroservice.d.ts +2 -1
  39. package/build/src/decorators/NestJSLinkMicroservice.js +2 -1
  40. package/build/src/decorators/NestJSLinkMicroservice.js.map +1 -1
  41. package/build/src/helpers/GetIps.d.ts +2 -0
  42. package/build/src/helpers/GetIps.js +11 -0
  43. package/build/src/helpers/GetIps.js.map +1 -0
  44. package/build/src/index.d.ts +5 -5
  45. package/build/src/index.js +5 -5
  46. package/build/src/index.js.map +1 -1
  47. package/build/src/interfaces/RemoteService.d.ts +29 -15
  48. package/build/src/interfaces/RemoteService.js +106 -1
  49. package/build/src/interfaces/RemoteService.js.map +1 -1
  50. package/build/src/interfaces/RpcTransporter.d.ts +1 -1
  51. package/build/tsconfig.tsbuildinfo +1 -1
  52. package/package.json +1 -1
package/build/const.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare const SPIDERMESH_NAMESPACE: string;
2
+ export declare const SPIDERMESH_NODE_HOSTNAME: string;
package/build/const.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export const SPIDERMESH_NAMESPACE = process.env.SPIDERMESH_NAMESPACE || 'default';
2
+ export const SPIDERMESH_NODE_HOSTNAME = process.env.SPIDERMESH_NODE_HOSTNAME || 'localhost';
2
3
  //# sourceMappingURL=const.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"const.js","sourceRoot":"","sources":["../const.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,SAAS,CAAA"}
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../const.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,SAAS,CAAA;AACjF,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,WAAW,CAAA"}
@@ -1,9 +1,8 @@
1
- import { Observable } from "rxjs";
2
- import { RemoteService } from "./interfaces/RemoteService.js";
3
- import { SpiderMeshNode } from "./interfaces/SpiderMeshNode.js";
4
- import { PubsubTransporter } from "./interfaces/PubsubTransporter.js";
5
- import { RpcTransporter, RpcOptions } from "./interfaces/RpcTransporter.js";
6
- import { DiscoveryTransporter } from "./interfaces/DiscoveryTransporter.js";
1
+ import { BehaviorSubject, Observable } from "rxjs";
2
+ import { SpiderMeshNode } from "./abstracts/SpiderMeshNode.js";
3
+ import { PubsubTransporter } from "./abstracts/PubsubTransporter.js";
4
+ import { RpcTransporter, RpcOptions } from "./abstracts/RpcTransporter.js";
5
+ import { DiscoveryTransporter } from "./abstracts/DiscoveryTransporter.js";
7
6
  export type HelloEvent = SpiderMeshNode & {
8
7
  back?: boolean;
9
8
  };
@@ -16,14 +15,24 @@ export declare class SpiderMesh {
16
15
  #private;
17
16
  readonly node_id: string;
18
17
  readonly namespace: string;
18
+ readonly nodes$: BehaviorSubject<{
19
+ nodes: Map<string, SpiderMeshNode & {
20
+ rpc?: string;
21
+ }>;
22
+ last_updated_node_id: string;
23
+ }>;
24
+ readonly services$: BehaviorSubject<{
25
+ services: Map<string, {
26
+ index: number;
27
+ nodes: string[];
28
+ }>;
29
+ last_updated_services: Set<string>;
30
+ }>;
19
31
  static linkTransporter(t: RpcTransporter | PubsubTransporter | DiscoveryTransporter): void;
20
32
  constructor();
21
- callRemoteService<T>(options: RpcOptions<T>): Observable<T>;
33
+ callRemoteService<R, T>(options: RpcOptions<T>): Observable<R | T>;
22
34
  linkTransporter(transporter: RpcTransporter | PubsubTransporter | DiscoveryTransporter): import("rxjs").Subscription | undefined;
23
35
  waitServiceOnline(service: string, check?: ServiceChecker): Promise<true>;
24
- linkRemoteService<T>(factory: {
25
- new (...args: any[]): T;
26
- }): RemoteService<T>;
27
36
  linkEvent<T>(factory: {
28
37
  new (...args: any[]): T;
29
38
  }): {
@@ -1,15 +1,15 @@
1
1
  import { BehaviorSubject, catchError, EMPTY, filter, finalize, firstValueFrom, from, lastValueFrom, map, mergeAll, mergeMap, of, ReplaySubject, retry, tap, throwError, timeout, timer } from "rxjs";
2
2
  import { listBeforeMicroserviceOnlineMethods } from "./decorators/BeforeMicroserviceOnline.js";
3
- import { PubsubTransporter } from "./interfaces/PubsubTransporter.js";
4
- import { RpcTransporter } from "./interfaces/RpcTransporter.js";
3
+ import { PubsubTransporter } from "./abstracts/PubsubTransporter.js";
4
+ import { RpcTransporter } from "./abstracts/RpcTransporter.js";
5
5
  import { MicroserviceException } from "./helpers/MicroserviceException.js";
6
6
  import { MicroserviceOfflineException } from "./helpers/MicroserviceOfflineException.js";
7
7
  import { services$ } from "./decorators/Microservice.js";
8
- import { networkInterfaces } from "os";
9
8
  import { MicroserviceNotFound } from "./helpers/MicroserviceNotFound.js";
10
- import { DiscoveryTransporter } from "./interfaces/DiscoveryTransporter.js";
9
+ import { DiscoveryTransporter } from "./abstracts/DiscoveryTransporter.js";
11
10
  import { MicroserviceRpcTimeout } from "./helpers/MicroserviceRpcTimeout.js";
12
- import { SPIDERMESH_NAMESPACE } from "../const.js";
11
+ import { SPIDERMESH_NAMESPACE, SPIDERMESH_NODE_HOSTNAME } from "../const.js";
12
+ import { AllIpAddresses } from "./helpers/GetIps.js";
13
13
  export class SpiderMesh {
14
14
  node_id = `${Date.now()}`;
15
15
  namespace = SPIDERMESH_NAMESPACE;
@@ -17,8 +17,8 @@ export class SpiderMesh {
17
17
  #pubsubs = new BehaviorSubject(new Map());
18
18
  #discovers = new Map();
19
19
  #metadata$ = new BehaviorSubject({
20
- ips: Object.values(networkInterfaces()).flat(2).filter(a => !a?.internal && !!a?.address).map(a => a?.address),
21
- host: '',
20
+ ips: AllIpAddresses,
21
+ host: SPIDERMESH_NODE_HOSTNAME,
22
22
  namespace: SPIDERMESH_NAMESPACE,
23
23
  node_id: this.node_id,
24
24
  services: {},
@@ -27,11 +27,11 @@ export class SpiderMesh {
27
27
  nodes: {},
28
28
  version: 0
29
29
  });
30
- #nodes = new BehaviorSubject({
30
+ nodes$ = new BehaviorSubject({
31
31
  nodes: new Map(),
32
32
  last_updated_node_id: ''
33
33
  });
34
- #services$ = new BehaviorSubject({
34
+ services$ = new BehaviorSubject({
35
35
  services: new Map(),
36
36
  last_updated_services: new Set()
37
37
  });
@@ -66,7 +66,7 @@ export class SpiderMesh {
66
66
  if (!filters.service)
67
67
  return null;
68
68
  if (filters.node_id) {
69
- const node = this.#nodes.value.nodes.get(filters.node_id);
69
+ const node = this.nodes$.value.nodes.get(filters.node_id);
70
70
  if (!node)
71
71
  return null;
72
72
  if (!node.services[filters.service])
@@ -78,11 +78,11 @@ export class SpiderMesh {
78
78
  return null;
79
79
  return { node, transporter };
80
80
  }
81
- const state = this.#services$.value.services.get(filters.service);
81
+ const state = this.services$.value.services.get(filters.service);
82
82
  if (!state || state.nodes.length == 0)
83
83
  return null;
84
84
  const nodes = state.nodes.map(id => {
85
- const node = this.#nodes.value.nodes.get(id);
85
+ const node = this.nodes$.value.nodes.get(id);
86
86
  const transporter = node && node.rpc && this.#rpcs.get(node.rpc);
87
87
  if (node && transporter) {
88
88
  if (filters.ip) {
@@ -131,7 +131,7 @@ export class SpiderMesh {
131
131
  if (this.#rpcs.has(transporter_name))
132
132
  return;
133
133
  this.#rpcs.set(transporter_name, rpc);
134
- return transporter.link(this.#metadata$, this.#nodes).pipe(map(e => {
134
+ return transporter.link(this.#metadata$, this.nodes$).pipe(map(e => {
135
135
  const rpc = e.rpc;
136
136
  if (rpc) {
137
137
  try {
@@ -148,10 +148,10 @@ export class SpiderMesh {
148
148
  }
149
149
  const online = e.online;
150
150
  if (online) {
151
- const node = this.#nodes.value.nodes.get(online);
151
+ const node = this.nodes$.value.nodes.get(online);
152
152
  if (node) {
153
153
  node.rpc = transporter_name;
154
- const services = this.#services$.value.services;
154
+ const services = this.services$.value.services;
155
155
  for (const service of Object.keys(node.services || {})) {
156
156
  const target = services.get(service) || { index: 0, nodes: [] };
157
157
  services.set(service, {
@@ -162,7 +162,7 @@ export class SpiderMesh {
162
162
  ]
163
163
  });
164
164
  }
165
- this.#services$.next({
165
+ this.services$.next({
166
166
  services,
167
167
  last_updated_services: new Set(Object.keys(node.services || {}))
168
168
  });
@@ -170,18 +170,18 @@ export class SpiderMesh {
170
170
  }
171
171
  const offline = e.offline;
172
172
  if (offline) {
173
- const nodes = this.#nodes.value.nodes;
173
+ const nodes = this.nodes$.value.nodes;
174
174
  const node = nodes.get(offline);
175
175
  if (node) {
176
176
  nodes.delete(offline);
177
- this.#nodes.next({ nodes, last_updated_node_id: node.node_id });
178
- const services = this.#services$.value.services;
177
+ this.nodes$.next({ nodes, last_updated_node_id: node.node_id });
178
+ const services = this.services$.value.services;
179
179
  for (const service of Object.values(node.services)) {
180
180
  const target = services.get(service) || { index: 0, nodes: [] };
181
181
  const nodes = target.nodes.filter(id => id != node.node_id);
182
182
  nodes.length == 0 ? services.delete(service) : services.set(service, { ...target, nodes });
183
183
  }
184
- this.#services$.next({
184
+ this.services$.next({
185
185
  services,
186
186
  last_updated_services: new Set(Object.keys(node.services || {}))
187
187
  });
@@ -206,7 +206,7 @@ export class SpiderMesh {
206
206
  const transporters = this.#pubsubs.getValue();
207
207
  transporters.set(transporter_name, transporter);
208
208
  this.#pubsubs.next(transporters);
209
- return transporter.link(this.#metadata$, this.#nodes).pipe(map(a => a.metadata), filter(Boolean), tap(metadata => {
209
+ return transporter.link(this.#metadata$, this.nodes$).pipe(map(a => a.metadata), filter(Boolean), tap(metadata => {
210
210
  this.#metadata$.next({
211
211
  ...this.#metadata$.value,
212
212
  transporters: {
@@ -224,13 +224,13 @@ export class SpiderMesh {
224
224
  const discover = transporter;
225
225
  this.#discovers.set(transporter_name, discover);
226
226
  return discover.link(this.#metadata$).pipe(tap(node => {
227
- const nodes = this.#nodes.value.nodes;
227
+ const nodes = this.nodes$.value.nodes;
228
228
  nodes.set(node.node_id, {
229
229
  ...nodes.get(node.node_id) || {},
230
230
  ...node
231
231
  });
232
232
  const last_updated_node_id = node.node_id;
233
- this.#nodes.next({
233
+ this.nodes$.next({
234
234
  nodes,
235
235
  last_updated_node_id
236
236
  });
@@ -238,125 +238,12 @@ export class SpiderMesh {
238
238
  }
239
239
  }
240
240
  waitServiceOnline(service, check = (nodes => nodes.length > 0)) {
241
- return firstValueFrom(this.#services$.pipe(map(() => {
242
- const targets = this.#services$.value.services.get(service)?.nodes || [];
243
- const nodes = targets.map(id => this.#nodes.value.nodes.get(id)).filter(Boolean);
241
+ return firstValueFrom(this.services$.pipe(map(() => {
242
+ const targets = this.services$.value.services.get(service)?.nodes || [];
243
+ const nodes = targets.map(id => this.nodes$.value.nodes.get(id)).filter(Boolean);
244
244
  return nodes;
245
245
  }), mergeMap(async (targets) => check(targets)), filter(Boolean)));
246
246
  }
247
- linkRemoteService(factory) {
248
- const service = factory.name;
249
- const omitProperties = new Set([
250
- 'caller',
251
- 'callee',
252
- 'arguments',
253
- 'constructor',
254
- '__defineGetter__',
255
- '__defineSetter__',
256
- 'hasOwnProperty',
257
- '__lookupGetter__',
258
- '__lookupSetter__',
259
- 'isPrototypeOf',
260
- 'propertyIsEnumerable',
261
- 'toString',
262
- 'valueOf',
263
- 'toLocaleString',
264
- '__proto__',
265
- 'onModuleInit',
266
- 'onApplicationBootstrap',
267
- 'onModuleDestroy',
268
- 'beforeApplicationShutdown',
269
- 'onApplicationShutdown'
270
- ]);
271
- const listRpcNodes = () => {
272
- const targets = this.#services$.value.services.get(service);
273
- if (!targets || targets.nodes.length == 0)
274
- return [];
275
- return targets.nodes.map(id => {
276
- const node = this.#nodes.value.nodes.get(id);
277
- if (node && node.rpc)
278
- return node;
279
- }).filter(Boolean).map(node => node);
280
- };
281
- const target = new Proxy({}, {
282
- get: (_, $) => {
283
- if (omitProperties.has($))
284
- return null;
285
- if ($ == 'wait$') {
286
- return (fn) => this.waitServiceOnline(service, fn);
287
- }
288
- if ($ == 'nodes')
289
- return listRpcNodes();
290
- if ($ == 'watch$')
291
- return () => {
292
- return this.#services$.pipe(filter((e, index) => {
293
- if (index == 0)
294
- return true;
295
- if (e.last_updated_services.has(service))
296
- return true;
297
- return false;
298
- }), map(e => e.services.get(service)?.nodes || []), map(targets => targets.map(id => this.#nodes.value.nodes.get(id)).filter(Boolean)));
299
- };
300
- if ($.startsWith('__batch__')) {
301
- const method = $.split('__batch__')?.[1];
302
- return (...args) => from(listRpcNodes()).pipe(mergeMap(node => (this.callRemoteService({
303
- service,
304
- args,
305
- method,
306
- node_id: node.node_id,
307
- }).pipe(map(data => ({ node, data })), catchError(e => of({ node, e }))))));
308
- }
309
- if ($ == 'set') {
310
- return (options) => new Proxy({}, {
311
- get: (_, method) => {
312
- return (...args) => {
313
- const response = this.callRemoteService({
314
- ...options,
315
- args,
316
- method,
317
- service
318
- });
319
- return Object.assign(response, {
320
- then: async (s, r) => {
321
- try {
322
- s(await firstValueFrom(response));
323
- }
324
- catch (e) {
325
- r(e);
326
- }
327
- }
328
- });
329
- };
330
- }
331
- });
332
- }
333
- return (...args) => {
334
- const response = this.callRemoteService({
335
- args,
336
- method: $,
337
- service
338
- });
339
- return Object.assign(response, {
340
- then: async (s, r) => {
341
- try {
342
- s(await firstValueFrom(response));
343
- }
344
- catch (e) {
345
- r(e);
346
- }
347
- }
348
- });
349
- };
350
- }
351
- });
352
- return new Proxy(target, {
353
- get(target, p) {
354
- if (p == 'then')
355
- return target;
356
- return target[p];
357
- },
358
- });
359
- }
360
247
  linkEvent(factory) {
361
248
  const topic = factory.name;
362
249
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"SpiderMesh.js","sourceRoot":"","sources":["../../src/SpiderMesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAc,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAChN,OAAO,EAAE,mCAAmC,EAAE,MAAM,0CAA0C,CAAC;AAG/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAc,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAUnD,MAAM,OAAO,UAAU;IAEH,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;IACzB,SAAS,GAAG,oBAAoB,CAAA;IAEhD,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAA;IACzC,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,GAAG,EAA6B,CAAC,CAAA;IACpE,UAAU,GAAG,IAAI,GAAG,EAAgC,CAAA;IAEpD,UAAU,GAAG,IAAI,eAAe,CAAiB;QAC7C,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAQ,CAAC;QAC/G,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,oBAAoB;QAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,EAAE;QAChB,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,CAAC;KACb,CAAC,CAAA;IAEF,MAAM,GAAG,IAAI,eAAe,CAAC;QACzB,KAAK,EAAE,IAAI,GAAG,EAA6C;QAC3D,oBAAoB,EAAE,EAAE;KAC3B,CAAC,CAAA;IAEF,UAAU,GAAG,IAAI,eAAe,CAAC;QAC7B,QAAQ,EAAE,IAAI,GAAG,EAGb;QACJ,qBAAqB,EAAE,IAAI,GAAG,EAAU;KAC3C,CAAC,CAAA;IAEF,MAAM,CAAC,cAAc,GAAG,IAAI,aAAa,EAA6D,CAAA;IACtG,MAAM,CAAC,eAAe,CAAC,CAA4D;QAC/E,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACrC,CAAC;IAED;QACI,SAAS,CAAC,IAAI,CACV,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAC5C,QAAQ,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE;YACtB,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjD,MAAM,IAAI,GAAG,mCAAmC,CAAC,QAAQ,CAAC,CAAA;gBAC1D,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;oBACxB,MAAM,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAA;gBAC5B,CAAC;YACL,CAAC;YACD,MAAM,QAAQ,GAAG;gBACb,GAAI,IAAI,CAAC,UAAU,CAAC,KAAK;gBACzB,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE;oBAClE,OAAO;wBACH,GAAG,CAAC;wBACJ,CAAC,IAAI,CAAC,EAAE,QAAQ;qBACnB,CAAA;gBACL,CAAC,EAAE,EAA6B,CAAC;gBACjC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC;aAC7C,CAAA;YACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAE9B,OAAO,QAAQ,CAAA;QACnB,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CACzB,CAAC,SAAS,EAAE,CAAA;QAEb,UAAU,CAAC,cAAc,CAAC,IAAI,CAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CACpC,CAAC,SAAS,EAAE,CAAA;IAEjB,CAAC;IAGD,gBAAgB,CAAC,UAAwE,EAAE;QACvF,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,IAAI,CAAA;QAEjC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACzD,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAA;YACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAA;YAChD,IAAI,CAAC,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAA;YAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC5C,IAAI,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAA;YAC7B,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;QAChC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACjE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAGlD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC5C,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAChE,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;gBACtB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;oBACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAG,CAAC;wBAAE,OAAO,IAAI,CAAA;gBACpD,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;YAChC,CAAC;QACL,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAG,CAAC,CAAA;QAEhC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IAC9C,CAAC;IAED,iBAAiB,CAAI,OAAsB;QACvC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CACb,QAAQ,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;YAC7C,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,4BAA4B,EAAE,CAAA;YACrD,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAA;YAC/C,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,CAAI,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACjE,CAAC,CAAC,EACF,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAChB,KAAK,CAAC;YACF,KAAK,EAAE,CAAC,CAAQ,EAAE,KAAa,EAAE,EAAE;gBAC/B,IAAI,CAAC,YAAY,4BAA4B,IAAI,CAAC,CAAC,OAAO,IAAI,4BAA4B,CAAC,IAAI,EAAE,CAAC;oBAC9F,IAAI,OAAO,CAAC,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK;wBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAA;gBAClE,CAAC;gBACD,MAAM,CAAC,CAAA;YACX,CAAC;SACJ,CAAC,EACF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YACtB,IAAI,EAAE,OAAO,CAAC,OAAO;YACrB,IAAI,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,sBAAsB,EAAE,CAAC;SAC7D,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EACV,UAAU,CAAC,CAAC,CAAC,EAAE;YACX,IAAI,OAAO,CAAC,QAAQ,IAAI,SAAS;gBAAE,OAAO,EAAE,CAAC,OAAO,CAAC,QAAoB,CAAC,CAAA;YAC1E,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACT,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAA;gBAC1C,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAA;gBACrB,MAAM,KAAK,CAAA;YACf,CAAC;YACD,MAAM,CAAC,CAAA;QACX,CAAC,CAAC,CACL,CAAA;IACL,CAAC;IAED,eAAe,CACX,WAAsE;QAEtE,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,IAAI,CAAA;QAE5E,IAAI,WAAW,YAAY,cAAc,EAAE,CAAC;YAExC,MAAM,GAAG,GAAG,WAAW,CAAA;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBAAE,OAAM;YAE5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;YAGrC,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACtD,GAAG,CAAC,CAAC,CAAC,EAAE;gBACJ,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAA;gBACjB,IAAI,GAAG,EAAE,CAAC;oBACN,IAAI,CAAC;wBACD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;wBAC5C,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAA;wBAClC,IAAI,CAAC,QAAQ;4BAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAA;wBAChF,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;wBAClD,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;oBAC1B,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACX,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;oBACvC,CAAC;gBACL,CAAC;gBAED,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAA;gBACvB,IAAI,MAAM,EAAE,CAAC;oBACT,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;oBAChD,IAAI,IAAI,EAAE,CAAC;wBACP,IAAI,CAAC,GAAG,GAAG,gBAAgB,CAAA;wBAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAA;wBAC/C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;4BACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;4BAC/D,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE;gCAClB,KAAK,EAAE,MAAM,CAAC,KAAK;gCACnB,KAAK,EAAE;oCACH,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC;oCAChD,IAAI,CAAC,OAAO;iCACf;6BACJ,CAAC,CAAA;wBACN,CAAC;wBACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;4BACjB,QAAQ;4BACR,qBAAqB,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;yBACnE,CAAC,CAAA;oBACN,CAAC;gBACL,CAAC;gBAED,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAA;gBACzB,IAAI,OAAO,EAAE,CAAC;oBACV,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAA;oBACrC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;oBAI/B,IAAI,IAAI,EAAE,CAAC;wBAEP,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;wBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;wBAG/D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAA;wBAC/C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;4BAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,CAAA;4BAC3D,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;wBAC9F,CAAC;wBACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;4BACjB,QAAQ;4BACR,qBAAqB,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;yBACnE,CAAC,CAAA;oBACN,CAAC;gBACL,CAAC;gBAED,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAA;gBAC3B,IAAI,QAAQ,EAAE,CAAC;oBACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;wBACjB,GAAI,IAAI,CAAC,UAAU,CAAC,KAAK;wBACzB,YAAY,EAAE;4BACV,GAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY;4BACtC,CAAC,gBAAgB,CAAC,EAAE,QAAQ;yBAC/B;wBACD,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC;qBAC7C,CAAC,CAAA;gBACN,CAAC;YACL,CAAC,CACA,EACD,QAAQ,CAAC,GAAG,EAAE;gBACV,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;YACvC,CAAC,CAAC,CACL,CAAC,SAAS,EAAE,CAAA;QACjB,CAAC;QAED,IAAI,WAAW,YAAY,iBAAiB,EAAE,CAAC;YAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAA;YAC7C,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;YAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAEhC,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACtD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EACpB,MAAM,CAAC,OAAO,CAAC,EACf,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBACjB,GAAI,IAAI,CAAC,UAAU,CAAC,KAAK;oBACzB,YAAY,EAAE;wBACV,GAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY;wBACtC,CAAC,gBAAgB,CAAC,EAAE,QAAQ;qBAC/B;oBACD,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC;iBAC7C,CAAC,CAAA;YACN,CAAC,CAAC,EACF,QAAQ,CAAC,GAAG,EAAE;gBACV,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;gBACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACpC,CAAC,CAAC,CACL,CAAC,SAAS,EAAE,CAAA;QACjB,CAAC;QAED,IAAI,WAAW,YAAY,oBAAoB,EAAE,CAAC;YAE9C,MAAM,QAAQ,GAAG,WAAmC,CAAA;YACpD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;YAC/C,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CACtC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACP,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAA;gBACrC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;oBACpB,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;oBAChC,GAAG,IAAI;iBACV,CAAC,CAAA;gBACF,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAA;gBACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACb,KAAK;oBACL,oBAAoB;iBACvB,CAAC,CAAA;YACN,CAAC,CAAC,EACF,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAC3D,CAAC,SAAS,EAAE,CAAA;QAEjB,CAAC;IACL,CAAC;IAGD,iBAAiB,CAAC,OAAe,EAAE,QAAwB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAClF,OAAO,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CACtC,GAAG,CAAC,GAAG,EAAE;YACL,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE,CAAA;YACxE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACjF,OAAO,KAAK,CAAA;QAChB,CAAC,CAAC,EACF,QAAQ,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EACzC,MAAM,CAAC,OAAO,CAAC,CAClB,CAAC,CAAA;IACN,CAAC;IAED,iBAAiB,CAAI,OAAmC;QAEpD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAA;QAE5B,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;YAC3B,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,YAAY,GAAG,GAAG,EAAE;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAC3D,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAA;YACpD,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBAC5C,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG;oBAAE,OAAO,IAAI,CAAA;YACrC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAK,CAAC,CAAA;QACzC,CAAC,CAAA;QAED,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;YACzB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE;gBAClB,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,OAAO,IAAI,CAAA;gBAEtC,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;oBACf,OAAO,CAAC,EAA4D,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;gBAChH,CAAC;gBAED,IAAI,CAAC,IAAI,OAAO;oBAAE,OAAO,YAAY,EAAE,CAAA;gBAEvC,IAAI,CAAC,IAAI,QAAQ;oBAAE,OAAO,GAAG,EAAE;wBAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACvB,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;4BAChB,IAAI,KAAK,IAAI,CAAC;gCAAE,OAAO,IAAI,CAAA;4BAC3B,IAAI,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC;gCAAE,OAAO,IAAI,CAAA;4BACrD,OAAO,KAAK,CAAA;wBAChB,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,EAC9C,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CACtF,CAAA;oBACL,CAAC,CAAA;gBAED,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;oBACxC,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CACb,IAAI,CAAC,iBAAiB,CAAC;wBACnB,OAAO;wBACP,IAAI;wBACJ,MAAM;wBACN,OAAO,EAAE,IAAI,CAAC,OAAO;qBACxB,CAAC,CAAC,IAAI,CACH,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAC7B,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CACnC,CACJ,CAAC,CACL,CAAA;gBACL,CAAC;gBAED,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;oBACb,OAAO,CAAC,OAAwB,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE;wBAC/C,GAAG,EAAE,CAAC,CAAC,EAAE,MAAc,EAAE,EAAE;4BACvB,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE;gCACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAkB;oCACrD,GAAG,OAAO;oCACV,IAAI;oCACJ,MAAM;oCACN,OAAO;iCACV,CAAC,CAAA;gCAEF,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;oCAC3B,IAAI,EAAE,KAAK,EAAE,CAAW,EAAE,CAAW,EAAE,EAAE;wCACrC,IAAI,CAAC;4CACD,CAAC,CAAC,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAA;wCACrC,CAAC;wCAAC,OAAO,CAAC,EAAE,CAAC;4CACT,CAAC,CAAC,CAAC,CAAC,CAAA;wCACR,CAAC;oCACL,CAAC;iCACJ,CAAC,CAAA;4BACN,CAAC,CAAA;wBACL,CAAC;qBACJ,CAAC,CAAA;gBACN,CAAC;gBAED,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE;oBACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAkB;wBACrD,IAAI;wBACJ,MAAM,EAAE,CAAC;wBACT,OAAO;qBACV,CAAC,CAAA;oBAEF,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;wBAC3B,IAAI,EAAE,KAAK,EAAE,CAAW,EAAE,CAAW,EAAE,EAAE;4BACrC,IAAI,CAAC;gCACD,CAAC,CAAC,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAA;4BACrC,CAAC;4BAAC,OAAO,CAAC,EAAE,CAAC;gCACT,CAAC,CAAC,CAAC,CAAC,CAAA;4BACR,CAAC;wBACL,CAAC;qBACJ,CAAC,CAAA;gBACN,CAAC,CAAA;YACL,CAAC;SACJ,CAAqB,CAAA;QAEtB,OAAO,IAAI,KAAK,CAAmB,MAAM,EAAE;YACvC,GAAG,CAAC,MAAM,EAAE,CAAC;gBACT,IAAI,CAAC,IAAI,MAAM;oBAAE,OAAO,MAAM,CAAA;gBAC9B,OAAQ,MAAc,CAAC,CAAC,CAAC,CAAA;YAC7B,CAAC;SACJ,CAAC,CAAA;IAEN,CAAC;IAED,SAAS,CAAI,OAAmC;QAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAA;QAC1B,OAAO;YACH,OAAO,EAAE,CAAC,IAAO,EAAE,EAAE,CAAC,aAAa,CAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CACxC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CACxC,EAAE,EAAE,YAAY,EAAE,SAAwB,EAAE,CAChD;YACD,MAAM,EAAE,GAAG,EAAE;gBACT,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAC/B,QAAQ,EAAE,EACV,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAI,KAAK,CAAC,CAAC,CACpC,CAAA;YACL,CAAC;SACJ,CAAA;IACL,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAY,EAAE,QAAa,EAAE,QAAa;QAC/D,SAAS,CAAC,IAAI,CAAC;YACX,GAAG,SAAS,CAAC,KAAK;YAClB,CAAC,IAAI,CAAC,EAAE;gBACJ,QAAQ;gBACR,QAAQ;gBACR,IAAI;aACP;SACJ,CAAC,CAAA;IACN,CAAC"}
1
+ {"version":3,"file":"SpiderMesh.js","sourceRoot":"","sources":["../../src/SpiderMesh.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { BehaviorSubject, Observable } from "rxjs";
2
+ import { SpiderMeshNode } from "./SpiderMeshNode.js";
3
+ export declare abstract class DiscoveryTransporter {
4
+ abstract link(metadata$: BehaviorSubject<SpiderMeshNode>): Observable<SpiderMeshNode>;
5
+ }
@@ -0,0 +1,3 @@
1
+ export class DiscoveryTransporter {
2
+ }
3
+ //# sourceMappingURL=DiscoveryTransporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscoveryTransporter.js","sourceRoot":"","sources":["../../../src/abstract/DiscoveryTransporter.ts"],"names":[],"mappings":"AAIA,MAAM,OAAgB,oBAAoB;CAEzC"}
@@ -0,0 +1,11 @@
1
+ import { Observable } from "rxjs";
2
+ import { NodesMap } from "src/SpiderMesh.js";
3
+ import { SpiderMeshNode } from "./SpiderMeshNode.js";
4
+ export type PubsubTransporterEvent = {
5
+ metadata: Record<string, string | boolean | number>;
6
+ };
7
+ export declare abstract class PubsubTransporter {
8
+ abstract link(metadata: Observable<SpiderMeshNode>, nodes$: Observable<NodesMap>): Observable<PubsubTransporterEvent>;
9
+ abstract publish<T>(topic: string, data: T): Promise<void>;
10
+ abstract listen<T>(topic: string): Observable<T>;
11
+ }
@@ -0,0 +1,3 @@
1
+ export class PubsubTransporter {
2
+ }
3
+ //# sourceMappingURL=PubsubTransporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PubsubTransporter.js","sourceRoot":"","sources":["../../../src/abstract/PubsubTransporter.ts"],"names":[],"mappings":"AAUA,MAAM,OAAgB,iBAAiB;CAItC"}
@@ -0,0 +1,35 @@
1
+ import { Observable } from "rxjs";
2
+ import { SpiderMeshNode } from "./SpiderMeshNode.js";
3
+ import { RpcOptions } from "./RpcTransporter.js";
4
+ import { SpiderMesh } from "src/SpiderMesh.js";
5
+ export type ServiceChecker = (nodes: SpiderMeshNode[]) => Promise<boolean> | boolean;
6
+ export type RemoteServiceOptions = Partial<RpcOptions<any>> & {
7
+ service: string;
8
+ };
9
+ export declare class RemoteService<Response, Fallback> {
10
+ #private;
11
+ private sm;
12
+ private options;
13
+ constructor(sm: SpiderMesh, options: RemoteServiceOptions);
14
+ watch$(): Observable<(SpiderMeshNode & {
15
+ rpc?: string;
16
+ })[]>;
17
+ get nodes(): (SpiderMeshNode & {
18
+ rpc?: string;
19
+ })[];
20
+ set(options: Omit<Partial<RpcOptions<Fallback>>, 'service' | 'method' | 'args'>): RemoteService<Response, Fallback> & { [K in keyof Response as Response[K] extends (...args: any) => any ? K : ""]: Response[K] extends (...args: any) => any ? (...args: Parameters<Response[K]>) => ReturnType<Response[K]> extends Observable<any> | Promise<Observable<any>> ? Awaited<Fallback> | Awaited<Observable<any> & ReturnType<Response[K]>> | Awaited<Promise<Observable<any>> & ReturnType<Response[K]>> : Promise<Awaited<Fallback> | Awaited<ReturnType<Response[K]>>> : null; } & { [key in keyof Response as key extends string ? `__batch__${key}` : string]: Response[key] extends (...args: any) => any ? (...args: Parameters<Response[key]>) => Observable<{
21
+ node: SpiderMeshNode;
22
+ data: Awaited<ReturnType<Response[key]>>;
23
+ } | {
24
+ node: SpiderMeshNode;
25
+ error: Error;
26
+ }> : Response[key]; };
27
+ wait(check?: ServiceChecker): Promise<true>;
28
+ static link<Service, Fallback>(sm: SpiderMesh, options: RemoteServiceOptions): (RemoteService<Service, Fallback> & { [K in keyof Service as (Service[K] extends (...args: any) => any ? K : "")]: Service[K] extends (...args: any) => any ? ((...args: Parameters<Service[K]>) => ReturnType<Service[K]> extends (Observable<any> | Promise<Observable<any>>) ? Awaited<ReturnType<Service[K]> | Fallback> : Promise<Awaited<ReturnType<Service[K]> | Fallback>>) : null; } & { [key in keyof Service as (key extends string ? `__batch__${key}` : string)]: Service[key] extends ((...args: any) => any) ? ((...args: Parameters<Service[key]>) => Observable<{
29
+ node: SpiderMeshNode;
30
+ data: Awaited<ReturnType<Service[key]>>;
31
+ } | {
32
+ node: SpiderMeshNode;
33
+ error: Error;
34
+ }>) : Service[key]; });
35
+ }
@@ -0,0 +1,107 @@
1
+ import { catchError, filter, firstValueFrom, from, map, mergeMap, of } from "rxjs";
2
+ const InvaildMethodList = new Set([
3
+ 'caller',
4
+ 'callee',
5
+ 'arguments',
6
+ 'constructor',
7
+ '__defineGetter__',
8
+ '__defineSetter__',
9
+ 'hasOwnProperty',
10
+ '__lookupGetter__',
11
+ '__lookupSetter__',
12
+ 'isPrototypeOf',
13
+ 'propertyIsEnumerable',
14
+ 'toString',
15
+ 'valueOf',
16
+ 'toLocaleString',
17
+ '__proto__',
18
+ 'onModuleInit',
19
+ 'onApplicationBootstrap',
20
+ 'onModuleDestroy',
21
+ 'beforeApplicationShutdown',
22
+ 'onApplicationShutdown'
23
+ ]);
24
+ export class RemoteService {
25
+ sm;
26
+ options;
27
+ constructor(sm, options) {
28
+ this.sm = sm;
29
+ this.options = options;
30
+ }
31
+ #listRpcNodes() {
32
+ const targets = this.sm.services$.value.services.get(this.options.service);
33
+ if (!targets || targets.nodes.length == 0)
34
+ return [];
35
+ return targets.nodes.map(id => {
36
+ const node = this.sm.nodes$.value.nodes.get(id);
37
+ if (node && node.rpc)
38
+ return node;
39
+ }).filter(Boolean).map(node => node);
40
+ }
41
+ watch$() {
42
+ return this.sm.services$.pipe(filter((e, index) => {
43
+ if (index == 0)
44
+ return true;
45
+ if (e.last_updated_services.has(this.options.service))
46
+ return true;
47
+ return false;
48
+ }), map(e => e.services.get(this.options.service)?.nodes || []), map(targets => targets.map(id => this.sm.nodes$.value.nodes.get(id)).filter(Boolean)));
49
+ }
50
+ get nodes() {
51
+ return this.#listRpcNodes();
52
+ }
53
+ set(options) {
54
+ return RemoteService.link(this.sm, {
55
+ ...this.options,
56
+ ...options
57
+ });
58
+ }
59
+ wait(check = (nodes => nodes.length > 0)) {
60
+ const name = this.options.service;
61
+ return firstValueFrom(this.sm.services$.pipe(map(() => {
62
+ const targets = this.sm.services$.value.services.get(name)?.nodes || [];
63
+ const nodes = targets.map(id => this.sm.nodes$.value.nodes.get(id)).filter(Boolean);
64
+ return nodes;
65
+ }), mergeMap(async (targets) => check(targets)), filter(Boolean)));
66
+ }
67
+ static link(sm, options) {
68
+ const target = new this(sm, options);
69
+ const handler = {
70
+ get(_, prop, receiver) {
71
+ const method = prop.toString();
72
+ const fn = target[prop];
73
+ if (fn)
74
+ return fn;
75
+ if (InvaildMethodList.has(method))
76
+ return () => null;
77
+ if (method.startsWith('__batch__')) {
78
+ const real_metod = method.split('__batch__')?.[1];
79
+ return (...args) => from(target.#listRpcNodes()).pipe(mergeMap(node => (target.sm.callRemoteService({
80
+ ...options,
81
+ method: real_metod,
82
+ args
83
+ }).pipe(map(data => ({ node, data })), catchError(error => of({ node, error }))))));
84
+ }
85
+ return (...args) => {
86
+ const response = target.sm.callRemoteService({
87
+ ...options,
88
+ method,
89
+ args
90
+ });
91
+ return Object.assign(response, {
92
+ then: async (s, r) => {
93
+ try {
94
+ s(await firstValueFrom(response));
95
+ }
96
+ catch (e) {
97
+ r(e);
98
+ }
99
+ }
100
+ });
101
+ };
102
+ }
103
+ };
104
+ return new Proxy(target, handler);
105
+ }
106
+ }
107
+ //# sourceMappingURL=RemoteService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteService.js","sourceRoot":"","sources":["../../../src/abstract/RemoteService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { Observable } from "rxjs";
2
+ import { SpiderMeshNode } from "./SpiderMeshNode.js";
3
+ export type RpcRoutingOptions = {
4
+ [key: string]: string | number | boolean;
5
+ };
6
+ export type RpcOptions<T = any> = {
7
+ service: string;
8
+ method: string;
9
+ args: any[];
10
+ fallback?: T;
11
+ timeout?: number;
12
+ retry?: number;
13
+ node_id?: string;
14
+ ip?: string;
15
+ };
16
+ export type RpcEvent = Partial<{
17
+ rpc: RpcOptions<any> & {
18
+ callback: (o: any | Promise<any> | Observable<any>) => void;
19
+ };
20
+ online: string;
21
+ offline: string;
22
+ metadata: Record<string, string | boolean | number>;
23
+ }>;
24
+ export declare abstract class RpcTransporter {
25
+ abstract link(metadata: Observable<SpiderMeshNode>, nodes$: Observable<{
26
+ nodes: Map<string, SpiderMeshNode>;
27
+ last_updated_node_id: string;
28
+ }>): Observable<RpcEvent>;
29
+ abstract rpc<R, T>(r: RpcOptions<T>, node: SpiderMeshNode, force: boolean): Observable<R>;
30
+ }
@@ -0,0 +1,3 @@
1
+ export class RpcTransporter {
2
+ }
3
+ //# sourceMappingURL=RpcTransporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RpcTransporter.js","sourceRoot":"","sources":["../../../src/abstract/RpcTransporter.ts"],"names":[],"mappings":"AA0BA,MAAM,OAAgB,cAAc;CASnC"}
@@ -0,0 +1,18 @@
1
+ export type SpiderMeshNode = {
2
+ ips: string[];
3
+ host: string;
4
+ namespace: string;
5
+ version: number;
6
+ node_id: string;
7
+ online?: boolean;
8
+ topics: string[];
9
+ services: {
10
+ [name: string]: any;
11
+ };
12
+ nodes: {
13
+ [node_id: string]: number;
14
+ };
15
+ transporters: {
16
+ [name: string]: any;
17
+ };
18
+ };