@spider-mesh/core 2.0.30 → 2.0.35

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 (76) hide show
  1. package/README.md +573 -0
  2. package/build/src/RemoteService.d.ts +1 -1
  3. package/build/src/RemoteService.js.map +1 -1
  4. package/build/src/SpiderMesh.d.ts +2 -2
  5. package/build/src/SpiderMesh.js +266 -115
  6. package/build/src/SpiderMesh.js.map +1 -1
  7. package/build/src/decorators/Microservice.d.ts +1 -1
  8. package/build/src/decorators/Microservice.js.map +1 -1
  9. package/build/src/helpers/GetIps.js +15 -8
  10. package/build/src/helpers/GetIps.js.map +1 -1
  11. package/build/src/helpers/LimitConcurrency.js +5 -2
  12. package/build/src/helpers/LimitConcurrency.js.map +1 -1
  13. package/build/src/index.d.ts +1 -0
  14. package/build/src/types.d.ts +102 -0
  15. package/build/src/types.js +2 -0
  16. package/build/src/types.js.map +1 -0
  17. package/build/tsconfig.tsbuildinfo +1 -1
  18. package/package.json +4 -4
  19. package/tsconfig.json +3 -1
  20. package/build/src/abstract/DiscoveryTransporter.d.ts +0 -5
  21. package/build/src/abstract/DiscoveryTransporter.js +0 -3
  22. package/build/src/abstract/DiscoveryTransporter.js.map +0 -1
  23. package/build/src/abstract/PubsubTransporter.d.ts +0 -11
  24. package/build/src/abstract/PubsubTransporter.js +0 -3
  25. package/build/src/abstract/PubsubTransporter.js.map +0 -1
  26. package/build/src/abstract/RemoteService.d.ts +0 -35
  27. package/build/src/abstract/RemoteService.js +0 -107
  28. package/build/src/abstract/RemoteService.js.map +0 -1
  29. package/build/src/abstract/RpcTransporter.d.ts +0 -30
  30. package/build/src/abstract/RpcTransporter.js +0 -3
  31. package/build/src/abstract/RpcTransporter.js.map +0 -1
  32. package/build/src/abstract/SpiderMeshNode.d.ts +0 -18
  33. package/build/src/abstract/SpiderMeshNode.js +0 -2
  34. package/build/src/abstract/SpiderMeshNode.js.map +0 -1
  35. package/build/src/abstracts/DiscoveryTransporter.d.ts +0 -5
  36. package/build/src/abstracts/DiscoveryTransporter.js +0 -3
  37. package/build/src/abstracts/DiscoveryTransporter.js.map +0 -1
  38. package/build/src/abstracts/PubsubTransporter.d.ts +0 -11
  39. package/build/src/abstracts/PubsubTransporter.js +0 -3
  40. package/build/src/abstracts/PubsubTransporter.js.map +0 -1
  41. package/build/src/abstracts/RemoteService.d.ts +0 -38
  42. package/build/src/abstracts/RemoteService.js +0 -105
  43. package/build/src/abstracts/RemoteService.js.map +0 -1
  44. package/build/src/abstracts/RpcTransporter.d.ts +0 -30
  45. package/build/src/abstracts/RpcTransporter.js +0 -3
  46. package/build/src/abstracts/RpcTransporter.js.map +0 -1
  47. package/build/src/abstracts/SpiderMeshNode.d.ts +0 -18
  48. package/build/src/abstracts/SpiderMeshNode.js +0 -2
  49. package/build/src/abstracts/SpiderMeshNode.js.map +0 -1
  50. package/build/src/helpers/MicroserviceNotFound copy.d.ts +0 -5
  51. package/build/src/helpers/MicroserviceNotFound copy.js +0 -8
  52. package/build/src/helpers/MicroserviceNotFound copy.js.map +0 -1
  53. package/build/src/helpers/MicroserviceNotFound.d.ts +0 -5
  54. package/build/src/helpers/MicroserviceNotFound.js +0 -8
  55. package/build/src/helpers/MicroserviceNotFound.js.map +0 -1
  56. package/build/src/helpers/MicroserviceOfflineException.d.ts +0 -5
  57. package/build/src/helpers/MicroserviceOfflineException.js +0 -8
  58. package/build/src/helpers/MicroserviceOfflineException.js.map +0 -1
  59. package/build/src/helpers/MicroserviceRpcTimeout.d.ts +0 -5
  60. package/build/src/helpers/MicroserviceRpcTimeout.js +0 -8
  61. package/build/src/helpers/MicroserviceRpcTimeout.js.map +0 -1
  62. package/build/src/interfaces/DiscoveryTransporter.d.ts +0 -5
  63. package/build/src/interfaces/DiscoveryTransporter.js +0 -3
  64. package/build/src/interfaces/DiscoveryTransporter.js.map +0 -1
  65. package/build/src/interfaces/PubsubTransporter.d.ts +0 -11
  66. package/build/src/interfaces/PubsubTransporter.js +0 -3
  67. package/build/src/interfaces/PubsubTransporter.js.map +0 -1
  68. package/build/src/interfaces/RemoteService.d.ts +0 -35
  69. package/build/src/interfaces/RemoteService.js +0 -107
  70. package/build/src/interfaces/RemoteService.js.map +0 -1
  71. package/build/src/interfaces/RpcTransporter.d.ts +0 -30
  72. package/build/src/interfaces/RpcTransporter.js +0 -3
  73. package/build/src/interfaces/RpcTransporter.js.map +0 -1
  74. package/build/src/interfaces/SpiderMeshNode.d.ts +0 -18
  75. package/build/src/interfaces/SpiderMeshNode.js +0 -2
  76. package/build/src/interfaces/SpiderMeshNode.js.map +0 -1
@@ -0,0 +1,102 @@
1
+ import { Observable } from "rxjs";
2
+ export type SpiderMeshErrorCode = ('MICROSERVICE_OFFLINE' | 'MICROSERVICE_NOT_FOUND' | 'MICROSERVICE_RPC_TIMEOUT');
3
+ export type SpiderMeshError = {
4
+ code: SpiderMeshErrorCode;
5
+ message: string;
6
+ };
7
+ export type SpiderMeshNode = {
8
+ ips: string[];
9
+ host: string;
10
+ namespace: string;
11
+ version: number;
12
+ node_id: string;
13
+ online?: boolean;
14
+ services: {
15
+ [name: string]: any;
16
+ };
17
+ nodes: {
18
+ [node_id: string]: number;
19
+ };
20
+ transporters: {
21
+ [name: string]: any;
22
+ };
23
+ };
24
+ export type NodesMap = {
25
+ nodes: Map<string, SpiderMeshNode>;
26
+ last_updated_node_id: string;
27
+ };
28
+ export type NodeMetadata<T = {}> = T & {
29
+ host: string;
30
+ node_id: string;
31
+ namespace: string;
32
+ };
33
+ export type MdnsMessage<T extends NodeMetadata> = {
34
+ hi: boolean;
35
+ node: T;
36
+ sender_id: string;
37
+ forwarder_id?: string;
38
+ receiver_id?: string;
39
+ };
40
+ export type DiscoveryEvent = {
41
+ discovered: SpiderMeshNode;
42
+ };
43
+ export type DiscoveryTransporter = Observable<DiscoveryEvent> & {
44
+ broadcast(data: MdnsMessage<NodeMetadata>, ips: string[]): Promise<void>;
45
+ };
46
+ export type PubsubTransporter = {
47
+ publish<T>(topic: string, data: T): Promise<void>;
48
+ listen<T>(topic: string): Observable<T>;
49
+ };
50
+ export type RpcRoutingOptions = {
51
+ [key: string]: string | number | boolean;
52
+ };
53
+ export type RpcOptions<T = any> = {
54
+ service: string;
55
+ method: string;
56
+ args: any[];
57
+ fallback?: T;
58
+ timeout?: number;
59
+ retry?: number;
60
+ node_id?: string;
61
+ ip?: string;
62
+ };
63
+ export type RpcRequestPacket = {
64
+ kind: 'request';
65
+ request_id: string;
66
+ source_node_id: string;
67
+ target_node_id: string;
68
+ service: string;
69
+ method: string;
70
+ args: any[];
71
+ };
72
+ export type RpcResponsePacket = {
73
+ kind: 'response';
74
+ request_id: string;
75
+ source_node_id: string;
76
+ target_node_id: string;
77
+ data?: any;
78
+ error?: SpiderMeshError | {
79
+ code?: string;
80
+ message: string;
81
+ };
82
+ completed?: boolean;
83
+ };
84
+ export type RpcCancelPacket = {
85
+ kind: 'cancel';
86
+ request_id: string;
87
+ source_node_id: string;
88
+ target_node_id: string;
89
+ };
90
+ export type RpcPacket = RpcRequestPacket | RpcResponsePacket | RpcCancelPacket;
91
+ export type RpcMessage = {
92
+ node: SpiderMeshNode;
93
+ packet: RpcPacket;
94
+ };
95
+ export type RpcEvent = Partial<{
96
+ rpc: RpcMessage;
97
+ offline: string;
98
+ endpoints: Record<string, string | boolean | number>;
99
+ }>;
100
+ export type RpcTransporter = Observable<RpcEvent> & {
101
+ send(data: RpcPacket, node: SpiderMeshNode): Promise<void>;
102
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"root":["../const.ts","../env.d.ts","../src/remoteservice.ts","../src/spidermesh.ts","../src/index.ts","../src/decorators/beforemicroserviceonline.ts","../src/decorators/limitconcurrentrunning.ts","../src/decorators/microservice.ts","../src/decorators/nestjsexposemicroservice.ts","../src/decorators/nestjslinkevent.ts","../src/decorators/nestjslinkmicroservice.ts","../src/helpers/getips.ts","../src/helpers/limitconcurrency.ts","../src/helpers/microserviceexception.ts","../src/helpers/randomuuid.ts","../src/helpers/sleep.ts"],"version":"5.8.2"}
1
+ {"root":["../const.ts","../env.d.ts","../src/remoteservice.ts","../src/spidermesh.ts","../src/index.ts","../src/types.ts","../src/decorators/beforemicroserviceonline.ts","../src/decorators/limitconcurrentrunning.ts","../src/decorators/microservice.ts","../src/decorators/nestjsexposemicroservice.ts","../src/decorators/nestjslinkevent.ts","../src/decorators/nestjslinkmicroservice.ts","../src/helpers/getips.ts","../src/helpers/limitconcurrency.ts","../src/helpers/microserviceexception.ts","../src/helpers/randomuuid.ts","../src/helpers/sleep.ts"],"version":"6.0.3"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@spider-mesh/core",
3
3
  "type": "module",
4
- "version": "2.0.30",
4
+ "version": "2.0.35",
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",
@@ -14,10 +14,10 @@
14
14
  "yarn.lock"
15
15
  ],
16
16
  "devDependencies": {
17
- "@types/node": "^22.10.3",
17
+ "@types/node": "^25.6.0",
18
18
  "@types/reflect-metadata": "^0.1.0",
19
19
  "@types/uuid": "^10.0.0",
20
- "typescript": "^5.7.2"
20
+ "typescript": "^6.0.3"
21
21
  },
22
22
  "exports": {
23
23
  ".": {
@@ -33,7 +33,7 @@
33
33
  "author": "Duong Van Ba",
34
34
  "license": "ISC",
35
35
  "dependencies": {
36
- "@spider-mesh/types": "^2.0.28",
36
+ "@types/bun": "^1.3.13",
37
37
  "buffer": "^6.0.3",
38
38
  "react-native-uuid": "^2.0.2",
39
39
  "rxjs": "^7.8.2",
package/tsconfig.json CHANGED
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "compilerOptions": {
3
+ "types": ["node","bun"],
3
4
  "strict": true,
4
5
  "module": "NodeNext",
5
6
  "declaration": true,
@@ -32,6 +33,7 @@
32
33
  "out",
33
34
  "src/schema.ts",
34
35
  "bin",
35
- "./build/**/*"
36
+ "./build/**/*",
37
+ "tests/**/*"
36
38
  ]
37
39
  }
@@ -1,5 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- export class DiscoveryTransporter {
2
- }
3
- //# sourceMappingURL=DiscoveryTransporter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DiscoveryTransporter.js","sourceRoot":"","sources":["../../../src/abstract/DiscoveryTransporter.ts"],"names":[],"mappings":"AAIA,MAAM,OAAgB,oBAAoB;CAEzC"}
@@ -1,11 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- export class PubsubTransporter {
2
- }
3
- //# sourceMappingURL=PubsubTransporter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PubsubTransporter.js","sourceRoot":"","sources":["../../../src/abstract/PubsubTransporter.ts"],"names":[],"mappings":"AAUA,MAAM,OAAgB,iBAAiB;CAItC"}
@@ -1,35 +0,0 @@
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
- }
@@ -1,107 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"RemoteService.js","sourceRoot":"","sources":["../../../src/abstract/RemoteService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAc,EAAE,EAAE,MAAM,MAAM,CAAC;AAQ/F,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAC9B,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,aAAa;IACb,kBAAkB;IAClB,kBAAkB;IAClB,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,sBAAsB;IACtB,UAAU;IACV,SAAS;IACT,gBAAgB;IAChB,WAAW;IACX,cAAc;IACd,wBAAwB;IACxB,iBAAiB;IACjB,2BAA2B;IAC3B,uBAAuB;CAC1B,CAAC,CAAA;AAIF,MAAM,OAAO,aAAa;IAGV;IACA;IAFZ,YACY,EAAc,EACd,OAA6B;QAD7B,OAAE,GAAF,EAAE,CAAY;QACd,YAAO,GAAP,OAAO,CAAsB;IACrC,CAAC;IAEL,aAAa;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAI,OAAO,CAAC,CAAA;QAC7E,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,EAAE,CAAA;QACpD,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC/C,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAA;QACrC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAK,CAAC,CAAA;IACzC,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CACzB,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAChB,IAAI,KAAK,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC3B,IAAI,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAA;YAClE,OAAO,KAAK,CAAA;QAChB,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,EAC3D,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CACzF,CAAA;IACL,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,aAAa,EAAE,CAAA;IAC/B,CAAC;IAED,GAAG,CAAC,OAA2E;QAC3E,OAAO,aAAa,CAAC,IAAI,CAAqB,IAAI,CAAC,EAAE,EAAE;YACnD,GAAG,IAAI,CAAC,OAAO;YACf,GAAG,OAAO;SACb,CAAC,CAAA;IACN,CAAC;IAED,IAAI,CAAC,QAAwB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;QACjC,OAAO,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CACxC,GAAG,CAAC,GAAG,EAAE;YACL,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,CAAA;YACvE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACpF,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;IAID,MAAM,CAAC,IAAI,CAAoB,EAAc,EAAE,OAA6B;QACxE,MAAM,MAAM,GAAG,IAAI,IAAI,CAAoB,EAAE,EAAE,OAAO,CAAC,CAAA;QACvD,MAAM,OAAO,GAAsB;YAC/B,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ;gBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;gBAC9B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAqD,CAAC,CAAA;gBACxE,IAAI,EAAE;oBAAE,OAAO,EAAE,CAAA;gBAEjB,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAA;gBAEpD,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBACjC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;oBACjD,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CACb,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC;wBACxB,GAAG,OAAO;wBACV,MAAM,EAAE,UAAU;wBAClB,IAAI;qBACP,CAAC,CAAC,IAAI,CACH,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAC7B,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAC3C,CACJ,CAAC,CACL,CAAA;gBACL,CAAC;gBAGD,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE;oBACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC;wBACzC,GAAG,OAAO;wBACV,MAAM;wBACN,IAAI;qBACP,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;YAEL,CAAC;SACJ,CAAA;QACD,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,CAgB/B,CAAA;IACL,CAAC;CACJ"}
@@ -1,30 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- export class RpcTransporter {
2
- }
3
- //# sourceMappingURL=RpcTransporter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RpcTransporter.js","sourceRoot":"","sources":["../../../src/abstract/RpcTransporter.ts"],"names":[],"mappings":"AA0BA,MAAM,OAAgB,cAAc;CASnC"}
@@ -1,18 +0,0 @@
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
- };
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=SpiderMeshNode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SpiderMeshNode.js","sourceRoot":"","sources":["../../../src/abstract/SpiderMeshNode.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- export class DiscoveryTransporter {
2
- }
3
- //# sourceMappingURL=DiscoveryTransporter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DiscoveryTransporter.js","sourceRoot":"","sources":["../../../src/abstracts/DiscoveryTransporter.ts"],"names":[],"mappings":"AAIA,MAAM,OAAgB,oBAAoB;CAEzC"}
@@ -1,11 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- export class PubsubTransporter {
2
- }
3
- //# sourceMappingURL=PubsubTransporter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PubsubTransporter.js","sourceRoot":"","sources":["../../../src/abstracts/PubsubTransporter.ts"],"names":[],"mappings":"AAUA,MAAM,OAAgB,iBAAiB;CAItC"}
@@ -1,38 +0,0 @@
1
- import { Observable } from "rxjs";
2
- import { SpiderMeshNode } from "./SpiderMeshNode.js";
3
- import { RpcOptions } from "./RpcTransporter.js";
4
- import { ServiceChecker, SpiderMesh } from "../../src/SpiderMesh.js";
5
- export type IsUnknown<T, A, B> = unknown extends T ? ([T] extends [unknown] ? A : B) : B;
6
- export type RemoteServiceOptions = Partial<RpcOptions<any>> & {
7
- service: string;
8
- };
9
- export type Unwrap<T> = Awaited<T> extends Observable<infer U> ? Observable<U> : (T extends Promise<infer V> ? Promise<V> : Promise<T>);
10
- export type Fallbackable<Fn, FallbackValue = unknown> = Fn extends (...args: infer A) => infer R ? ((...args: A) => IsUnknown<FallbackValue, Unwrap<R>, FallbackValue | Unwrap<R>>) : undefined;
11
- export type FunctionOnly<T, Fallback> = T extends (...args: any[]) => any ? Fallback : never;
12
- export declare class RemoteServiceLinker<Service> {
13
- #private;
14
- private sm;
15
- private options;
16
- constructor(sm: SpiderMesh, options: RemoteServiceOptions);
17
- watch(): Observable<(SpiderMeshNode & {
18
- rpc?: string;
19
- })[]>;
20
- get nodes(): (SpiderMeshNode & {
21
- rpc?: string;
22
- })[];
23
- set<Fallback>(options: Omit<Partial<RpcOptions<Fallback>>, 'service' | 'method' | 'args'>): Mapper<Service, Fallback>;
24
- wait(check?: ServiceChecker, stop$?: Observable<any>): Promise<boolean>;
25
- static link<Service, Fallback = never>(sm: SpiderMesh, options: RemoteServiceOptions): Mapper<Service, Fallback>;
26
- }
27
- export type Mapper<Service, Fallback = unknown> = RemoteServiceLinker<Service> & ({
28
- [K in keyof Service as FunctionOnly<Service[K], K>]: Fallbackable<Service[K], Fallback>;
29
- } & {
30
- [key in keyof Service as FunctionOnly<Service[key], key extends string ? `__batch__${key}` : never>]: Service[key] extends ((...args: any) => any) ? ((...args: Parameters<Service[key]>) => Observable<{
31
- node: SpiderMeshNode;
32
- data: Awaited<ReturnType<Service[key]>>;
33
- } | {
34
- node: SpiderMeshNode;
35
- error: Error;
36
- }>) : never;
37
- });
38
- export type RemoteService<Service> = Mapper<Service>;
@@ -1,105 +0,0 @@
1
- import { catchError, EMPTY, 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 RemoteServiceLinker {
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 RemoteServiceLinker.link(this.sm, {
55
- ...this.options,
56
- ...options
57
- });
58
- }
59
- wait(check = (nodes => nodes.length > 0), stop$ = EMPTY) {
60
- return this.sm.waitServiceOnline(this.options.service, check, stop$);
61
- }
62
- static link(sm, options) {
63
- const target = new this(sm, options);
64
- const handler = {
65
- get(_, prop) {
66
- const method = prop.toString();
67
- if (method == 'then')
68
- return null;
69
- if (InvaildMethodList.has(method))
70
- return () => null;
71
- const fn = target[prop];
72
- if (fn)
73
- return (typeof fn === 'function') ? fn.bind(target) : fn;
74
- if (method.startsWith('__batch__')) {
75
- const real_metod = method.split('__batch__')?.[1];
76
- return (...args) => from(target.#listRpcNodes()).pipe(mergeMap(node => (target.sm.callRemoteService({
77
- ...options,
78
- method: real_metod,
79
- args
80
- }).pipe(map(data => ({ node, data })), catchError(error => of({ node, error }))))));
81
- }
82
- return (...args) => {
83
- const Service = target.sm.callRemoteService({
84
- ...options,
85
- method,
86
- args
87
- });
88
- return Object.assign(Service, {
89
- then: async (s, r) => {
90
- try {
91
- s(await firstValueFrom(Service));
92
- }
93
- catch (e) {
94
- r(e);
95
- }
96
- }
97
- });
98
- };
99
- }
100
- };
101
- return new Proxy(target, handler);
102
- }
103
- }
104
- const a = {};
105
- //# sourceMappingURL=RemoteService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RemoteService.js","sourceRoot":"","sources":["../../../src/abstracts/RemoteService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAc,EAAE,EAAS,MAAM,MAAM,CAAC;AAO7G,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAC9B,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,aAAa;IACb,kBAAkB;IAClB,kBAAkB;IAClB,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,sBAAsB;IACtB,UAAU;IACV,SAAS;IACT,gBAAgB;IAChB,WAAW;IACX,cAAc;IACd,wBAAwB;IACxB,iBAAiB;IACjB,2BAA2B;IAC3B,uBAAuB;CAC1B,CAAC,CAAA;AAiBF,MAAM,OAAO,mBAAmB;IAGhB;IACA;IAFZ,YACY,EAAc,EACd,OAA6B;QAD7B,OAAE,GAAF,EAAE,CAAY;QACd,YAAO,GAAP,OAAO,CAAsB;IACrC,CAAC;IAEL,aAAa;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC1E,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,EAAE,CAAA;QACpD,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC/C,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAA;QACrC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAK,CAAC,CAAA;IACzC,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CACzB,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAChB,IAAI,KAAK,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC3B,IAAI,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAA;YAClE,OAAO,KAAK,CAAA;QAChB,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,EAC3D,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CACzF,CAAA;IACL,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,aAAa,EAAE,CAAA;IAC/B,CAAC;IAED,GAAG,CAAW,OAA2E;QACrF,OAAO,mBAAmB,CAAC,IAAI,CAAoB,IAAI,CAAC,EAAE,EAAE;YACxD,GAAG,IAAI,CAAC,OAAO;YACf,GAAG,OAAO;SACb,CAAC,CAAA;IACN,CAAC;IAED,IAAI,CAAC,QAAwB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,QAAyB,KAAK;QACpF,OAAO,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IACxE,CAAC;IAED,MAAM,CAAC,IAAI,CAA4B,EAAc,EAAE,OAA6B;QAEhF,MAAM,MAAM,GAAG,IAAI,IAAI,CAAU,EAAE,EAAE,OAAO,CAAC,CAAA;QAG7C,MAAM,OAAO,GAAsB;YAC/B,GAAG,CAAC,CAAC,EAAE,IAAI;gBACP,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;gBAC9B,IAAI,MAAM,IAAI,MAAM;oBAAE,OAAO,IAAI,CAAA;gBACjC,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAA;gBACpD,MAAM,EAAE,GAAI,MAAkB,CAAC,IAAqB,CAAC,CAAA;gBACrD,IAAI,EAAE;oBAAE,OAAO,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAEjE,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBACjC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;oBAEjD,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CACb,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC;wBACxB,GAAG,OAAO;wBACV,MAAM,EAAE,UAAU;wBAClB,IAAI;qBACP,CAAC,CAAC,IAAI,CACH,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAC7B,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAC3C,CACJ,CAAC,CACL,CAAA;gBACL,CAAC;gBAED,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE;oBAEtB,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC;wBACxC,GAAG,OAAO;wBACV,MAAM;wBACN,IAAI;qBACP,CAAC,CAAA;oBAEF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;wBAC1B,IAAI,EAAE,KAAK,EAAE,CAAW,EAAE,CAAW,EAAE,EAAE;4BACrC,IAAI,CAAC;gCACD,CAAC,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;4BACpC,CAAC;4BAAC,OAAO,CAAC,EAAE,CAAC;gCACT,CAAC,CAAC,CAAC,CAAC,CAAA;4BACR,CAAC;wBACL,CAAC;qBACJ,CAAC,CAAA;gBAEN,CAAC,CAAA;YAEL,CAAC;SACJ,CAAA;QAED,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,CAA8B,CAAA;IAClE,CAAC;CACJ;AAoBD,MAAM,CAAC,GAAG,EAER,CAAA"}
@@ -1,30 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- export class RpcTransporter {
2
- }
3
- //# sourceMappingURL=RpcTransporter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RpcTransporter.js","sourceRoot":"","sources":["../../../src/abstracts/RpcTransporter.ts"],"names":[],"mappings":"AA0BA,MAAM,OAAgB,cAAc;CASnC"}