@spider-mesh/core 2.0.19 → 2.0.26

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.
@@ -0,0 +1,38 @@
1
+ import { RpcOptions, SpiderMeshNode } from "@spider-mesh/types";
2
+ import { Observable } from "rxjs";
3
+ import { ServiceChecker, SpiderMesh } from "./SpiderMesh.js";
4
+ export type IsUnknown<T, A, B> = unknown extends T ? ([T] extends [unknown] ? A : B) : B;
5
+ export type RemoteServiceOptions = Partial<RpcOptions<any>> & {
6
+ service: string;
7
+ };
8
+ export type Unwrap<T> = Awaited<T> extends Observable<infer U> ? Observable<U> : (T extends Promise<infer V> ? Promise<V> : Promise<T>);
9
+ export type Fallbackable<Fn, FallbackValue = unknown> = Fn extends (...args: infer A) => infer R ? ((...args: A) => IsUnknown<FallbackValue, Unwrap<R>, FallbackValue | Unwrap<R>>) : undefined;
10
+ export type FunctionOnly<T, Fallback> = T extends (...args: any[]) => any ? Fallback : never;
11
+ export declare class RemoteServiceLinker<Service> {
12
+ private sm;
13
+ private options;
14
+ constructor(sm: SpiderMesh, options: RemoteServiceOptions);
15
+ watch(): Observable<(SpiderMeshNode & {
16
+ rpc?: string;
17
+ })[]>;
18
+ get nodes(): (SpiderMeshNode & {
19
+ rpc?: string;
20
+ })[];
21
+ set<Fallback>(options: Omit<Partial<RpcOptions<Fallback>>, 'service' | 'method' | 'args'>): Mapper<Service, Fallback>;
22
+ wait(checker?: ServiceChecker, stop$?: Observable<any>): Promise<(SpiderMeshNode & {
23
+ rpc?: string;
24
+ })[] | null>;
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>;
@@ -0,0 +1,92 @@
1
+ import { catchError, EMPTY, filter, takeUntil, 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
+ watch() {
32
+ return this.sm.watchService(this.options.service);
33
+ }
34
+ get nodes() {
35
+ return this.sm.listRpcNodes(this.options.service);
36
+ }
37
+ set(options) {
38
+ return RemoteServiceLinker.link(this.sm, {
39
+ ...this.options,
40
+ ...options
41
+ });
42
+ }
43
+ wait(checker = (nodes => nodes.length > 0), stop$ = EMPTY) {
44
+ return firstValueFrom(this.watch().pipe(takeUntil(stop$), filter(nodes => {
45
+ if (checker(nodes))
46
+ return true;
47
+ return false;
48
+ })), { defaultValue: null });
49
+ }
50
+ static link(sm, options) {
51
+ const target = new this(sm, options);
52
+ const handler = {
53
+ get(_, prop) {
54
+ const method = prop.toString();
55
+ if (method == 'then')
56
+ return null;
57
+ if (InvaildMethodList.has(method))
58
+ return () => { };
59
+ const fn = target[prop];
60
+ if (fn)
61
+ return (typeof fn === 'function') ? fn.bind(target) : fn;
62
+ if (method.startsWith('__batch__')) {
63
+ const real_metod = method.split('__batch__')?.[1];
64
+ return (...args) => from(target.sm.listRpcNodes(options.service)).pipe(mergeMap(node => (target.sm.callRemoteService({
65
+ ...options,
66
+ method: real_metod,
67
+ args
68
+ }).pipe(map(data => ({ node, data })), catchError(error => of({ node, error }))))));
69
+ }
70
+ return (...args) => {
71
+ const Service = target.sm.callRemoteService({
72
+ ...options,
73
+ method,
74
+ args
75
+ });
76
+ return Object.assign(Service, {
77
+ then: async (s, r) => {
78
+ try {
79
+ s(await firstValueFrom(Service));
80
+ }
81
+ catch (e) {
82
+ r(e);
83
+ }
84
+ }
85
+ });
86
+ };
87
+ }
88
+ };
89
+ return new Proxy(target, handler);
90
+ }
91
+ }
92
+ //# sourceMappingURL=RemoteService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteService.js","sourceRoot":"","sources":["../../src/RemoteService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAc,EAAE,EAAS,MAAM,MAAM,CAAC;AAKxH,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;IAIL,KAAK;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACrD,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACrD,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,UAA0B,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,QAAyB,KAAK;QACtF,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CACnC,SAAS,CAAC,KAAK,CAAC,EAChB,MAAM,CAAC,KAAK,CAAC,EAAE;YACX,IAAI,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC/B,OAAO,KAAK,CAAA;QAChB,CAAC,CAAC,CACL,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED,MAAM,CAAC,IAAI,CAA4B,EAAc,EAAE,OAA6B;QAChF,MAAM,MAAM,GAAG,IAAI,IAAI,CAAU,EAAE,EAAE,OAAO,CAAC,CAAA;QAC7C,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,GAAG,CAAC,CAAA;gBACnD,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,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACzE,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;QACD,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,CAA8B,CAAA;IAClE,CAAC;CACJ"}
@@ -1,8 +1,5 @@
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";
1
+ import { Observable } from "rxjs";
2
+ import { SpiderMeshNode, RpcTransporter, PubsubTransporter, DiscoveryTransporter, RpcOptions } from '@spider-mesh/types';
6
3
  export type HelloEvent = SpiderMeshNode & {
7
4
  back?: boolean;
8
5
  };
@@ -11,33 +8,32 @@ export type NodesMap = {
11
8
  nodes: Map<string, SpiderMeshNode>;
12
9
  last_updated_node_id: string;
13
10
  };
11
+ export type SpiderMeshOptions = {
12
+ transporters: Array<{
13
+ new (): RpcTransporter | PubsubTransporter | DiscoveryTransporter;
14
+ }>;
15
+ };
14
16
  export declare class SpiderMesh {
15
17
  #private;
18
+ private options;
16
19
  readonly node_id: string;
17
20
  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
- }>;
31
- static linkTransporter(t: RpcTransporter | PubsubTransporter | DiscoveryTransporter): void;
32
- constructor();
21
+ constructor(options: SpiderMeshOptions);
22
+ static asProvider(options: SpiderMeshOptions): {
23
+ provide: typeof SpiderMesh;
24
+ useFactory: () => Promise<SpiderMesh>;
25
+ };
26
+ listRpcNodes(service: string): (SpiderMeshNode & {
27
+ rpc?: string;
28
+ })[];
29
+ watchService(service: string): Observable<(SpiderMeshNode & {
30
+ rpc?: string;
31
+ })[]>;
33
32
  callRemoteService<R, T>(options: RpcOptions<T>): Observable<R | T>;
34
- linkTransporter(transporter: RpcTransporter | PubsubTransporter | DiscoveryTransporter): import("rxjs").Subscription | undefined;
35
- waitServiceOnline(service: string, check: ServiceChecker | undefined, stop$: Observable<any>): Promise<boolean>;
36
33
  linkEvent<T>(factory: {
37
34
  new (...args: any[]): T;
38
35
  }): {
39
36
  publish: (data: T) => Promise<void>;
40
37
  listen: () => Observable<T>;
41
38
  };
42
- exposeLocalService(name: string, instance: any, metadata: any): Promise<void>;
43
39
  }
@@ -1,17 +1,12 @@
1
- import { BehaviorSubject, catchError, EMPTY, filter, finalize, firstValueFrom, from, lastValueFrom, map, merge, mergeAll, mergeMap, of, ReplaySubject, retry, tap, throwError, timeout, timer } from "rxjs";
1
+ import { BehaviorSubject, catchError, EMPTY, filter, finalize, firstValueFrom, from, lastValueFrom, map, mergeAll, mergeMap, of, retry, tap, throwError, timeout, timer } from "rxjs";
2
2
  import { listBeforeMicroserviceOnlineMethods } from "./decorators/BeforeMicroserviceOnline.js";
3
- import { PubsubTransporter } from "./abstracts/PubsubTransporter.js";
4
- import { RpcTransporter } from "./abstracts/RpcTransporter.js";
5
- import { MicroserviceException } from "./helpers/MicroserviceException.js";
6
- import { MicroserviceOfflineException } from "./helpers/MicroserviceOfflineException.js";
7
- import { services$ } from "./decorators/Microservice.js";
8
- import { MicroserviceNotFound } from "./helpers/MicroserviceNotFound.js";
9
- import { DiscoveryTransporter } from "./abstracts/DiscoveryTransporter.js";
10
- import { MicroserviceRpcTimeout } from "./helpers/MicroserviceRpcTimeout.js";
3
+ import { MicroserviceException, MicroserviceNotFound, MicroserviceOfflineException, MicroserviceRpcTimeout } from "./helpers/MicroserviceException.js";
4
+ import { LOCAL_SERVICES$ } from "./decorators/Microservice.js";
11
5
  import { SPIDERMESH_NAMESPACE, SPIDERMESH_NODE_HOSTNAME } from "../const.js";
12
6
  import { AllIpAddresses } from "./helpers/GetIps.js";
13
7
  export class SpiderMesh {
14
- node_id = `${Date.now()}`;
8
+ options;
9
+ node_id = `${Date.now().toString(36).toUpperCase()}`;
15
10
  namespace = SPIDERMESH_NAMESPACE;
16
11
  #rpcs = new Map();
17
12
  #pubsubs = new BehaviorSubject(new Map());
@@ -25,48 +20,70 @@ export class SpiderMesh {
25
20
  topics: [],
26
21
  transporters: {},
27
22
  nodes: {},
28
- version: 0
23
+ version: 0,
29
24
  });
30
- nodes$ = new BehaviorSubject({
25
+ #nodes$ = new BehaviorSubject({
31
26
  nodes: new Map(),
32
27
  last_updated_node_id: ''
33
28
  });
34
- services$ = new BehaviorSubject({
35
- services: new Map(),
36
- last_updated_services: new Set()
37
- });
38
- static #transporters$ = new ReplaySubject();
39
- static linkTransporter(t) {
40
- SpiderMesh.#transporters$.next(t);
41
- }
42
- constructor() {
43
- services$.pipe(filter(list => Object.keys(list).length > 0), mergeMap(async (services) => {
44
- for (const { instance } of Object.values(services)) {
45
- const list = listBeforeMicroserviceOnlineMethods(instance);
29
+ #local_services = new Map();
30
+ #remote_services$ = new BehaviorSubject(new Map());
31
+ constructor(options) {
32
+ this.options = options;
33
+ if (!options)
34
+ throw new Error(`Missing options for SpiderMesh, please using like that new SpiderMeshOptions({ ... options})`);
35
+ setTimeout(() => {
36
+ LOCAL_SERVICES$.pipe(mergeMap(async (service) => {
37
+ const list = listBeforeMicroserviceOnlineMethods(service.instance);
46
38
  for (const method of list) {
47
- await instance[method]();
39
+ await service.instance[method]();
48
40
  }
41
+ this.#local_services.set(service.name, service.instance);
42
+ const metadata = {
43
+ ...this.#metadata$.value,
44
+ services: {
45
+ ...this.#metadata$.value.services,
46
+ [service.name]: service.metadata
47
+ },
48
+ version: this.#metadata$.value.version + 1
49
+ };
50
+ this.#metadata$.next(metadata);
51
+ }, 1), catchError(e => EMPTY)).subscribe();
52
+ this.#linkTransporters();
53
+ }, 0);
54
+ }
55
+ static asProvider(options) {
56
+ return {
57
+ provide: this,
58
+ useFactory: async () => new this(options)
59
+ };
60
+ }
61
+ listRpcNodes(service) {
62
+ const targets = this.#remote_services$.value.get(service);
63
+ if (!targets || targets.nodes.length == 0)
64
+ return [];
65
+ return targets.nodes.map(id => {
66
+ const node = this.#nodes$.value.nodes.get(id);
67
+ if (node && node.rpc)
68
+ return node;
69
+ }).filter(Boolean).map(node => node);
70
+ }
71
+ watchService(service) {
72
+ return this.#nodes$.pipe(filter(e => {
73
+ if (!e.last_updated_node_id)
74
+ return true;
75
+ if (e.last_updated_node_id.startsWith('offline:')) {
76
+ return e.last_updated_node_id.split(':')[1].includes(service);
49
77
  }
50
- const metadata = {
51
- ...this.#metadata$.value,
52
- services: Object.entries(services).reduce((p, [name, { metadata }]) => {
53
- return {
54
- ...p,
55
- [name]: metadata
56
- };
57
- }, {}),
58
- version: this.#metadata$.value.version + 1
59
- };
60
- this.#metadata$.next(metadata);
61
- return services;
62
- }), catchError(e => EMPTY)).subscribe();
63
- SpiderMesh.#transporters$.pipe(tap(t => this.linkTransporter(t))).subscribe();
78
+ const node = e.nodes.get(e.last_updated_node_id);
79
+ return node ? node.services[service] != undefined : false;
80
+ }), map(e => [...e.nodes.values()].filter(node => node.services[service] != undefined)));
64
81
  }
65
82
  #selectRpcTarget(filters = {}) {
66
83
  if (!filters.service)
67
84
  return null;
68
85
  if (filters.node_id) {
69
- const node = this.nodes$.value.nodes.get(filters.node_id);
86
+ const node = this.#nodes$.value.nodes.get(filters.node_id);
70
87
  if (!node)
71
88
  return null;
72
89
  if (!node.services[filters.service])
@@ -78,11 +95,11 @@ export class SpiderMesh {
78
95
  return null;
79
96
  return { node, transporter };
80
97
  }
81
- const state = this.services$.value.services.get(filters.service);
98
+ const state = this.#remote_services$.value.get(filters.service);
82
99
  if (!state || state.nodes.length == 0)
83
100
  return null;
84
101
  const nodes = state.nodes.map(id => {
85
- const node = this.nodes$.value.nodes.get(id);
102
+ const node = this.#nodes$.value.nodes.get(id);
86
103
  const transporter = node && node.rpc && this.#rpcs.get(node.rpc);
87
104
  if (node && transporter) {
88
105
  if (filters.ip) {
@@ -96,7 +113,7 @@ export class SpiderMesh {
96
113
  }
97
114
  callRemoteService(options) {
98
115
  return of(0).pipe(mergeMap(async () => {
99
- await this.waitServiceOnline(options.service, undefined, options.timeout ? timer(options.timeout) : EMPTY);
116
+ await firstValueFrom(this.watchService(options.service).pipe(options.timeout ? timeout(options.timeout) : tap(), filter(nodes => nodes.length > 0)), { defaultValue: null });
100
117
  const target = this.#selectRpcTarget(options);
101
118
  if (!target)
102
119
  throw new MicroserviceOfflineException();
@@ -104,7 +121,7 @@ export class SpiderMesh {
104
121
  return target.transporter.rpc(options, target.node, force);
105
122
  }), mergeMap($ => $), retry({
106
123
  delay: (e, count) => {
107
- if (e instanceof MicroserviceOfflineException || e.message == MicroserviceOfflineException.code) {
124
+ if (e instanceof MicroserviceOfflineException) {
108
125
  if (options.retry && count < options.retry)
109
126
  return timer(1000);
110
127
  }
@@ -124,125 +141,103 @@ export class SpiderMesh {
124
141
  throw e;
125
142
  }));
126
143
  }
127
- linkTransporter(transporter) {
128
- const transporter_name = Object.getPrototypeOf(transporter).constructor.name;
129
- if (transporter instanceof RpcTransporter) {
130
- const rpc = transporter;
131
- if (this.#rpcs.has(transporter_name))
132
- return;
133
- this.#rpcs.set(transporter_name, rpc);
134
- return transporter.link(this.#metadata$, this.nodes$).pipe(map(e => {
135
- const rpc = e.rpc;
136
- if (rpc) {
137
- try {
138
- const service = services$.value[rpc.service];
139
- const instance = service?.instance;
140
- if (!instance)
141
- return rpc.callback(throwError(() => new MicroserviceNotFound()));
142
- const response = instance[rpc.method](...rpc.args);
143
- rpc.callback(response);
144
- }
145
- catch (err) {
146
- rpc.callback(throwError(() => err));
147
- }
148
- }
149
- const online = e.online;
150
- if (online) {
151
- const node = this.nodes$.value.nodes.get(online);
152
- if (node) {
153
- node.rpc = transporter_name;
154
- const services = this.services$.value.services;
155
- for (const service of Object.keys(node.services || {})) {
156
- const target = services.get(service) || { index: 0, nodes: [] };
157
- services.set(service, {
158
- index: target.index,
159
- nodes: [
160
- ...target.nodes.filter(id => id != node.node_id),
161
- node.node_id
162
- ]
163
- });
144
+ #linkTransporters() {
145
+ return from(this.options.transporters).pipe(mergeMap(F => {
146
+ const name = F.name;
147
+ const transporter = new F();
148
+ if ('rpc' in transporter) {
149
+ if (this.#rpcs.has(name))
150
+ return EMPTY;
151
+ this.#rpcs.set(name, transporter);
152
+ return transporter.link(this.#metadata$, this.#nodes$).pipe(map(({ rpc, online, offline, metadata }) => {
153
+ if (rpc) {
154
+ try {
155
+ const service = this.#local_services.get(rpc.service);
156
+ const instance = service?.instance;
157
+ if (!instance)
158
+ return rpc.callback(throwError(() => new MicroserviceNotFound()));
159
+ const response = instance[rpc.method](...rpc.args);
160
+ rpc.callback(response);
161
+ }
162
+ catch (err) {
163
+ rpc.callback(throwError(() => err));
164
164
  }
165
- this.services$.next({
166
- services,
167
- last_updated_services: new Set(Object.keys(node.services || {}))
168
- });
169
165
  }
170
- }
171
- const offline = e.offline;
172
- if (offline) {
173
- const nodes = this.nodes$.value.nodes;
174
- const node = nodes.get(offline);
175
- if (node) {
176
- nodes.delete(offline);
177
- this.nodes$.next({ nodes, last_updated_node_id: node.node_id });
178
- const services = this.services$.value.services;
179
- for (const service of Object.values(node.services)) {
180
- const target = services.get(service) || { index: 0, nodes: [] };
181
- const nodes = target.nodes.filter(id => id != node.node_id);
182
- nodes.length == 0 ? services.delete(service) : services.set(service, { ...target, nodes });
166
+ if (offline) {
167
+ const nodes = this.#nodes$.value.nodes;
168
+ const node = nodes.get(offline);
169
+ if (node) {
170
+ nodes.delete(offline);
171
+ this.#nodes$.next({ nodes, last_updated_node_id: `offline:${Object.keys(node.services).join(',')}` });
172
+ const services = this.#remote_services$.value;
173
+ for (const service of Object.values(node.services)) {
174
+ const target = services.get(service) || { index: 0, nodes: [] };
175
+ const nodes = target.nodes.filter(id => id != node.node_id);
176
+ nodes.length == 0 ? services.delete(service) : services.set(service, { ...target, nodes });
177
+ }
178
+ this.#remote_services$.next(services);
183
179
  }
184
- this.services$.next({
185
- services,
186
- last_updated_services: new Set(Object.keys(node.services || {}))
180
+ }
181
+ if (metadata) {
182
+ this.#metadata$.next({
183
+ ...this.#metadata$.value,
184
+ transporters: {
185
+ ...this.#metadata$.value.transporters,
186
+ [name]: metadata
187
+ },
188
+ version: this.#metadata$.value.version + 1
187
189
  });
188
190
  }
189
- }
190
- const metadata = e.metadata;
191
- if (metadata) {
191
+ }), finalize(() => {
192
+ this.#rpcs.delete(name);
193
+ }));
194
+ }
195
+ if ('publish' in transporter) {
196
+ const transporters = this.#pubsubs.getValue();
197
+ transporters.set(name, transporter);
198
+ this.#pubsubs.next(transporters);
199
+ return transporter.link(this.#metadata$, this.#nodes$).pipe(map(a => a.metadata), filter(Boolean), tap(metadata => {
192
200
  this.#metadata$.next({
193
201
  ...this.#metadata$.value,
194
202
  transporters: {
195
203
  ...this.#metadata$.value.transporters,
196
- [transporter_name]: metadata
204
+ [name]: metadata
197
205
  },
198
206
  version: this.#metadata$.value.version + 1
199
207
  });
200
- }
201
- }), finalize(() => {
202
- this.#rpcs.delete(transporter_name);
203
- })).subscribe();
204
- }
205
- if (transporter instanceof PubsubTransporter) {
206
- const transporters = this.#pubsubs.getValue();
207
- transporters.set(transporter_name, transporter);
208
- this.#pubsubs.next(transporters);
209
- return transporter.link(this.#metadata$, this.nodes$).pipe(map(a => a.metadata), filter(Boolean), tap(metadata => {
210
- this.#metadata$.next({
211
- ...this.#metadata$.value,
212
- transporters: {
213
- ...this.#metadata$.value.transporters,
214
- [transporter_name]: metadata
215
- },
216
- version: this.#metadata$.value.version + 1
217
- });
218
- }), finalize(() => {
219
- transporters.delete(transporter_name);
220
- this.#pubsubs.next(transporters);
221
- })).subscribe();
222
- }
223
- if (transporter instanceof DiscoveryTransporter) {
224
- const discover = transporter;
225
- this.#discovers.set(transporter_name, discover);
226
- return discover.link(this.#metadata$).pipe(tap(node => {
227
- const nodes = this.nodes$.value.nodes;
228
- nodes.set(node.node_id, {
229
- ...nodes.get(node.node_id) || {},
230
- ...node
231
- });
232
- const last_updated_node_id = node.node_id;
233
- this.nodes$.next({
234
- nodes,
235
- last_updated_node_id
236
- });
237
- }), finalize(() => this.#discovers.delete(transporter_name))).subscribe();
238
- }
239
- }
240
- waitServiceOnline(service, check = (nodes => nodes.length > 0), stop$) {
241
- return firstValueFrom(merge(stop$.pipe(map(() => false)), 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
- return nodes;
245
- }), mergeMap(async (targets) => check(targets)), filter(Boolean))));
208
+ }), finalize(() => {
209
+ transporters.delete(name);
210
+ this.#pubsubs.next(transporters);
211
+ }));
212
+ }
213
+ if ('broadcast' in transporter) {
214
+ this.#discovers.set(name, transporter);
215
+ return transporter.link(this.#metadata$, this.#nodes$).pipe(tap(node => {
216
+ const nodes = this.#nodes$.value.nodes;
217
+ nodes.set(node.node_id, {
218
+ ...nodes.get(node.node_id) || {},
219
+ ...node
220
+ });
221
+ this.#nodes$.next({
222
+ nodes,
223
+ last_updated_node_id: node.node_id
224
+ });
225
+ const services = this.#remote_services$.value;
226
+ for (const service of Object.keys(node.services || {})) {
227
+ const target = services.get(service) || { index: 0, nodes: [] };
228
+ services.set(service, {
229
+ index: target.index,
230
+ nodes: [
231
+ ...target.nodes.filter(id => id != node.node_id),
232
+ node.node_id
233
+ ]
234
+ });
235
+ }
236
+ this.#remote_services$.next(services);
237
+ }), finalize(() => this.#discovers.delete(name)));
238
+ }
239
+ return EMPTY;
240
+ })).subscribe();
246
241
  }
247
242
  linkEvent(factory) {
248
243
  const topic = factory.name;
@@ -253,15 +248,5 @@ export class SpiderMesh {
253
248
  }
254
249
  };
255
250
  }
256
- async exposeLocalService(name, instance, metadata) {
257
- services$.next({
258
- ...services$.value,
259
- [name]: {
260
- instance,
261
- metadata,
262
- name
263
- }
264
- });
265
- }
266
251
  }
267
252
  //# sourceMappingURL=SpiderMesh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SpiderMesh.js","sourceRoot":"","sources":["../../src/SpiderMesh.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SpiderMesh.js","sourceRoot":"","sources":["../../src/SpiderMesh.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,9 @@
1
- import { BehaviorSubject } from "rxjs";
2
- import { SpiderMeshNode } from "../abstracts/SpiderMeshNode.js";
3
- export declare const services$: BehaviorSubject<{
4
- [name: string]: {
5
- name: string;
6
- instance: any;
7
- metadata: object | (() => Promise<object>);
8
- };
1
+ import { SpiderMeshNode } from "@spider-mesh/types";
2
+ import { ReplaySubject } from "rxjs/internal/ReplaySubject";
3
+ export declare const LOCAL_SERVICES$: ReplaySubject<{
4
+ name: string;
5
+ instance: any;
6
+ metadata: object | (() => Promise<object>);
9
7
  }>;
10
8
  export declare const MicroserviceList: SpiderMeshNode['services'];
11
9
  export declare const Microservice: (metadata?: any) => any;
@@ -1,18 +1,15 @@
1
- import { BehaviorSubject } from "rxjs";
2
- export const services$ = new BehaviorSubject({});
1
+ import { ReplaySubject } from "rxjs/internal/ReplaySubject";
2
+ export const LOCAL_SERVICES$ = new ReplaySubject();
3
3
  export const MicroserviceList = {};
4
4
  export const Microservice = (metadata = {}) => {
5
5
  return ((target) => {
6
6
  class C extends target {
7
7
  constructor(...args) {
8
8
  super(...args);
9
- services$.next({
10
- ...services$.value,
11
- [target.name]: {
12
- instance: this,
13
- name: target.name,
14
- metadata
15
- }
9
+ LOCAL_SERVICES$.next({
10
+ instance: this,
11
+ name: target.name,
12
+ metadata
16
13
  });
17
14
  }
18
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Microservice.js","sourceRoot":"","sources":["../../../src/decorators/Microservice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAiB,MAAM,MAAM,CAAA;AAGrD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,eAAe,CAMzC,EAAE,CAAC,CAAA;AAGN,MAAM,CAAC,MAAM,gBAAgB,GAA+B,EAAE,CAAA;AAE9D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAgB,EAAE,EAAE,EAAE;IAC/C,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,GAAG,SAAS,CAAC,KAAK;oBAClB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;wBACX,QAAQ,EAAE,IAAI;wBACd,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,QAAQ;qBACX;iBACJ,CAAC,CAAA;YAEN,CAAC;SACJ;QACD,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAA;QACxC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACxD,OAAO,CAAQ,CAAA;IACnB,CAAC,CAGG,CAAA;AACZ,CAAC,CAAA"}
1
+ {"version":3,"file":"Microservice.js","sourceRoot":"","sources":["../../../src/decorators/Microservice.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,aAAa,EAI5C,CAAA;AAGJ,MAAM,CAAC,MAAM,gBAAgB,GAA+B,EAAE,CAAA;AAE9D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAgB,EAAE,EAAE,EAAE;IAC/C,OAAO,CACH,CAAC,MAAmC,EAAE,EAAE;QACpC,MAAM,CAAE,SAAQ,MAAM;YAClB,YAAY,GAAG,IAAW;gBACtB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;gBACd,eAAe,CAAC,IAAI,CAAC;oBACjB,QAAQ,EAAE,IAAI;oBACd,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,QAAQ;iBACX,CAAC,CAAA;YACN,CAAC;SACJ;QACD,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAA;QACxC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACxD,OAAO,CAAQ,CAAA;IACnB,CAAC,CAGG,CAAA;AACZ,CAAC,CAAA"}
@@ -1,14 +1,13 @@
1
- import { services$ } from "./Microservice.js";
1
+ import { LOCAL_SERVICES$ } from "./Microservice.js";
2
2
  export const NestJSExposeMicroservice = (factory, metadata = {}) => ({
3
3
  provide: Symbol(),
4
4
  inject: [factory],
5
- useFactory: (instance) => services$.next({
6
- ...services$.value,
7
- [factory.name]: {
8
- instance,
5
+ useFactory: (instance) => {
6
+ LOCAL_SERVICES$.next({
7
+ instance: instance,
9
8
  name: factory.name,
10
9
  metadata
11
- }
12
- })
10
+ });
11
+ }
13
12
  });
14
13
  //# sourceMappingURL=NestJSExposeMicroservice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NestJSExposeMicroservice.js","sourceRoot":"","sources":["../../../src/decorators/NestJSExposeMicroservice.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,OAAY,EAAE,WAAmB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9E,OAAO,EAAE,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,QAAa,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1C,GAAG,SAAS,CAAC,KAAK;QAClB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACZ,QAAQ;YACR,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ;SACX;KACJ,CAAC;CACL,CAAC,CAAA"}
1
+ {"version":3,"file":"NestJSExposeMicroservice.js","sourceRoot":"","sources":["../../../src/decorators/NestJSExposeMicroservice.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,OAAY,EAAE,WAAmB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9E,OAAO,EAAE,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,QAAa,EAAE,EAAE;QAC1B,eAAe,CAAC,IAAI,CAAC;YACjB,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ;SACX,CAAC,CAAA;IACN,CAAC;CACJ,CAAC,CAAA"}
@@ -2,5 +2,5 @@ import { SpiderMesh } from "../SpiderMesh.js";
2
2
  export declare const NestJSLinkMicroservice: (factory: any) => {
3
3
  provide: any;
4
4
  inject: (typeof SpiderMesh)[];
5
- useFactory: (sm: SpiderMesh) => import("../../src/abstracts/RemoteService.js").Mapper<unknown, never>;
5
+ useFactory: (sm: SpiderMesh) => Promise<import("src/RemoteService.js").Mapper<unknown, never>>;
6
6
  };
@@ -1,8 +1,11 @@
1
- import { RemoteServiceLinker } from "../../src/abstracts/RemoteService.js";
1
+ import { RemoteServiceLinker } from "src/RemoteService.js";
2
2
  import { SpiderMesh } from "../SpiderMesh.js";
3
3
  export const NestJSLinkMicroservice = (factory) => ({
4
4
  provide: factory,
5
5
  inject: [SpiderMesh],
6
- useFactory: (sm) => RemoteServiceLinker.link(sm, { service: factory.name })
6
+ useFactory: async (sm) => {
7
+ const service = RemoteServiceLinker.link(sm, { service: factory.name });
8
+ return service;
9
+ }
7
10
  });
8
11
  //# sourceMappingURL=NestJSLinkMicroservice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NestJSLinkMicroservice.js","sourceRoot":"","sources":["../../../src/decorators/NestJSLinkMicroservice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,CAAC;IACrD,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,CAAC,UAAU,CAAC;IACpB,UAAU,EAAE,CAAC,EAAc,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;CAC1F,CAAC,CAAA"}
1
+ {"version":3,"file":"NestJSLinkMicroservice.js","sourceRoot":"","sources":["../../../src/decorators/NestJSLinkMicroservice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,CAAC;IACrD,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,CAAC,UAAU,CAAC;IACpB,UAAU,EAAE,KAAK,EAAE,EAAc,EAAE,EAAE;QACjC,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QACvE,OAAO,OAAO,CAAA;IAClB,CAAC;CACJ,CAAC,CAAA"}
@@ -1,8 +1,15 @@
1
- export declare class MicroserviceException<T extends {
2
- code: string;
3
- } = {
4
- code: string;
5
- [key: string]: any;
6
- }> extends Error {
7
- constructor(metadata: T);
1
+ import { SpiderMeshError } from "@spider-mesh/types";
2
+ export declare class MicroserviceException extends Error {
3
+ code: SpiderMeshError;
4
+ message: string;
5
+ constructor(code: SpiderMeshError, message?: string);
6
+ }
7
+ export declare class MicroserviceOfflineException extends MicroserviceException {
8
+ constructor();
9
+ }
10
+ export declare class MicroserviceNotFound extends MicroserviceException {
11
+ constructor();
12
+ }
13
+ export declare class MicroserviceRpcTimeout extends MicroserviceException {
14
+ constructor();
8
15
  }
@@ -1,9 +1,26 @@
1
1
  export class MicroserviceException extends Error {
2
- constructor(metadata) {
3
- super(metadata.code || 'UNKNOWN_ERROR');
4
- for (const key in metadata) {
5
- this[key] = metadata[key];
6
- }
2
+ code;
3
+ message;
4
+ constructor(code, message = code) {
5
+ super(message);
6
+ this.code = code;
7
+ this.message = message;
8
+ super.name = code;
9
+ }
10
+ }
11
+ export class MicroserviceOfflineException extends MicroserviceException {
12
+ constructor() {
13
+ super('MICROSERVICE_OFFLINE');
14
+ }
15
+ }
16
+ export class MicroserviceNotFound extends MicroserviceException {
17
+ constructor() {
18
+ super('MICROSERVICE_NOT_FOUND');
19
+ }
20
+ }
21
+ export class MicroserviceRpcTimeout extends MicroserviceException {
22
+ constructor() {
23
+ super('MICROSERVICE_RPC_TIMEOUT');
7
24
  }
8
25
  }
9
26
  //# sourceMappingURL=MicroserviceException.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MicroserviceException.js","sourceRoot":"","sources":["../../../src/helpers/MicroserviceException.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,qBAAyF,SAAQ,KAAK;IAC/G,YAAY,QAAW;QACnB,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,eAAe,CAAC,CAAA;QACvC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YACxB,IAAY,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;QACtC,CAAC;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"MicroserviceException.js","sourceRoot":"","sources":["../../../src/helpers/MicroserviceException.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACzB;IAA8B;IAAjD,YAAmB,IAAqB,EAAS,UAAkB,IAAI;QACnE,KAAK,CAAC,OAAO,CAAC,CAAA;QADC,SAAI,GAAJ,IAAI,CAAiB;QAAS,YAAO,GAAP,OAAO,CAAe;QAEnE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAA;IACrB,CAAC;CACJ;AAGD,MAAM,OAAO,4BAA6B,SAAQ,qBAAqB;IACnE;QACI,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACjC,CAAC;CACJ;AAED,MAAM,OAAO,oBAAqB,SAAQ,qBAAqB;IAC3D;QACI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IACnC,CAAC;CACJ;AAED,MAAM,OAAO,sBAAuB,SAAQ,qBAAqB;IAC7D;QACI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IACrC,CAAC;CACJ"}
@@ -1,16 +1,11 @@
1
1
  export { BeforeMicroserviceOnline } from './decorators/BeforeMicroserviceOnline.js';
2
2
  export { Microservice } from './decorators/Microservice.js';
3
3
  export * from './SpiderMesh.js';
4
- export * from './abstracts/RpcTransporter.js';
5
- export * from './abstracts/PubsubTransporter.js';
6
- export * from './abstracts/SpiderMeshNode.js';
7
4
  export * from './decorators/NestJSExposeMicroservice.js';
8
5
  export * from './decorators/NestJSLinkMicroservice.js';
9
6
  export * from './decorators/NestJSLinkEvent.js';
10
7
  export * from './decorators/LimitConcurrentRunning.js';
11
8
  export * from './helpers/randomUUID.js';
12
9
  export * from './helpers/MicroserviceException.js';
13
- export * from './helpers/MicroserviceOfflineException.js';
14
10
  export * from './helpers/LimitConcurrency.js';
15
- export * from './abstracts/DiscoveryTransporter.js';
16
- export * from './abstracts/RemoteService.js';
11
+ export * from './RemoteService.js';
@@ -1,17 +1,12 @@
1
1
  export { BeforeMicroserviceOnline } from './decorators/BeforeMicroserviceOnline.js';
2
2
  export { Microservice } from './decorators/Microservice.js';
3
3
  export * from './SpiderMesh.js';
4
- export * from './abstracts/RpcTransporter.js';
5
- export * from './abstracts/PubsubTransporter.js';
6
- export * from './abstracts/SpiderMeshNode.js';
7
4
  export * from './decorators/NestJSExposeMicroservice.js';
8
5
  export * from './decorators/NestJSLinkMicroservice.js';
9
6
  export * from './decorators/NestJSLinkEvent.js';
10
7
  export * from './decorators/LimitConcurrentRunning.js';
11
8
  export * from './helpers/randomUUID.js';
12
9
  export * from './helpers/MicroserviceException.js';
13
- export * from './helpers/MicroserviceOfflineException.js';
14
10
  export * from './helpers/LimitConcurrency.js';
15
- export * from './abstracts/DiscoveryTransporter.js';
16
- export * from './abstracts/RemoteService.js';
11
+ export * from './RemoteService.js';
17
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,cAAc,iBAAiB,CAAA;AAC/B,cAAc,+BAA+B,CAAA;AAC7C,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0CAA0C,CAAA;AACxD,cAAc,wCAAwC,CAAA;AACtD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,yBAAyB,CAAA;AACvC,cAAc,oCAAoC,CAAA;AAClD,cAAc,2CAA2C,CAAA;AACzD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,qCAAqC,CAAA;AACnD,cAAc,8BAA8B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0CAA0C,CAAA;AACxD,cAAc,wCAAwC,CAAA;AACtD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,yBAAyB,CAAA;AACvC,cAAc,oCAAoC,CAAA;AAClD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,oBAAoB,CAAA"}
@@ -1 +1 @@
1
- {"root":["../const.ts","../env.d.ts","../src/spidermesh.ts","../src/index.ts","../src/abstracts/discoverytransporter.ts","../src/abstracts/pubsubtransporter.ts","../src/abstracts/remoteservice.ts","../src/abstracts/rpctransporter.ts","../src/abstracts/spidermeshnode.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/microservicenotfound.ts","../src/helpers/microserviceofflineexception.ts","../src/helpers/microservicerpctimeout.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/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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@spider-mesh/core",
3
3
  "type": "module",
4
- "version": "2.0.19",
4
+ "version": "2.0.26",
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",