@spider-mesh/core 1.0.138 → 1.0.142

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.
@@ -26,14 +26,6 @@ export type SpiderMeshRpcEvent = {
26
26
  };
27
27
  };
28
28
  export type SpiderMeshNamespace = string;
29
- export type SpiderMeshPublishPayload<T extends Encodable = Encodable> = {
30
- topic: string | {
31
- new (): EventHub<T>;
32
- };
33
- payload: T;
34
- node_id?: string;
35
- local_transporter_id?: string;
36
- };
37
29
  export type SpiderMeshBatchPublishPayload<T extends Encodable = Encodable> = {
38
30
  topic: string | {
39
31
  new (): EventHub<T>;
@@ -44,14 +36,13 @@ export type SpiderMeshBatchPublishPayload<T extends Encodable = Encodable> = {
44
36
  };
45
37
  export declare class SpiderMesh {
46
38
  #private;
39
+ private metadata;
47
40
  static $transporters: ReplaySubject<SpiderMeshTransporter>;
48
41
  $nodes_monitor: Subject<SpiderMeshNodeMetadata>;
49
- constructor();
50
- set_metadata(metadata: any, overwrite?: boolean): void;
51
- rpc<T = any>(service: string, method: string, args: any, options?: Partial<RPCOptions>): Observable<T> | undefined;
42
+ constructor(metadata?: any);
43
+ rpc<T = any>(service: string, method: string, args: any, options?: Partial<RPCOptions>): (Observable<T> & Promise<T>) | undefined;
52
44
  $metadata(): Promise<Omit<SpiderMeshNodeMetadata, "local_transporter_id" | "remote_transporter_id">>;
53
45
  $update_isolate_mode(active: boolean): Promise<void>;
54
- link_transporter(transporter: SpiderMeshTransporter): Promise<void>;
55
46
  link_remote_service<T>(factory: {
56
47
  new (...args: any[]): T;
57
48
  }, wait_service_online?: boolean): Promise<RemoteService<T>>;
@@ -70,11 +61,10 @@ export declare class SpiderMesh {
70
61
  sti: string;
71
62
  }>;
72
63
  }>;
73
- batch_publish<T extends Encodable>({ payload, topic, node_id, local_transporter_id }: SpiderMeshBatchPublishPayload<T>): Promise<void> | undefined;
74
- publish<T extends Encodable>({ payload, topic, node_id, local_transporter_id }: SpiderMeshPublishPayload<T>): Promise<void> | undefined;
64
+ publish<T extends Encodable>({ payload, topic, node_id, local_transporter_id }: SpiderMeshBatchPublishPayload<T>, transporter?: SpiderMeshTransporter): Promise<void> | undefined;
75
65
  listen<T extends Encodable = Encodable>(topic: string | {
76
66
  new (...args: any[]): T;
77
- }): Observable<{
67
+ }, transporter?: SpiderMeshTransporter): Observable<{
78
68
  payload: T;
79
69
  node_id: string;
80
70
  id: string;
@@ -2,12 +2,23 @@ import { DeepProxy } from './decorators/DeepProxy.js';
2
2
  import { RPCOptionsList } from './RPCOptions.js';
3
3
  import { listEventSubscribers } from './decorators/ListenEvent.js';
4
4
  import { listReadyHookMethods } from './decorators/OnMicroserviceReady.js';
5
- import { BehaviorSubject, Observable, ReplaySubject, Subject, bufferTime, catchError, debounceTime, filter, firstValueFrom, from, groupBy, map, merge, mergeAll, mergeMap, of, retry, scan, share, tap, timeout } from 'rxjs';
5
+ import { BehaviorSubject, Observable, ReplaySubject, Subject, bufferTime, catchError, debounceTime, filter, firstValueFrom, from, groupBy, map, mergeAll, mergeMap, of, pipe, retry, scan, share, tap, timeout } from 'rxjs';
6
6
  import { sleep } from './helpers/sleep.js';
7
7
  import { NAMEPSACE } from './const.js';
8
8
  import { $services } from './decorators/Microservice.js';
9
9
  import { randomUUID } from './helpers/randomUUID.js';
10
+ import axios from 'axios';
11
+ const $public_ip = new Promise(async (resolve) => {
12
+ try {
13
+ const { data } = await axios.get('https://api.ipify.org?format=json');
14
+ resolve(data.ip);
15
+ }
16
+ catch (error) {
17
+ resolve(undefined);
18
+ }
19
+ });
10
20
  export class SpiderMesh {
21
+ metadata;
11
22
  static $transporters = new ReplaySubject();
12
23
  #node_id = randomUUID();
13
24
  #requests = new Map;
@@ -17,15 +28,12 @@ export class SpiderMesh {
17
28
  $nodes_monitor = new Subject();
18
29
  #$isolated = new BehaviorSubject(false);
19
30
  #transporters = new Map();
20
- #metadata = {};
21
- constructor() {
22
- SpiderMesh.$transporters.subscribe(transporter => this.link_transporter(transporter));
23
- }
24
- set_metadata(metadata, overwrite = false) {
25
- this.#metadata = {
26
- ...overwrite ? {} : this.#metadata,
27
- ...metadata
28
- };
31
+ constructor(metadata = {}) {
32
+ this.metadata = metadata;
33
+ SpiderMesh.$transporters.pipe(mergeMap(async (transporter) => {
34
+ await this.#link_transporter(transporter);
35
+ await this.#self_introduce(transporter.transporter_id);
36
+ })).subscribe();
29
37
  }
30
38
  #caculate_rpc_node_id(service_name, options = {}) {
31
39
  const current = this.#remote_services.get(service_name);
@@ -36,7 +44,10 @@ export class SpiderMesh {
36
44
  return options.$node_id;
37
45
  return;
38
46
  }
39
- const nodes = current.nodes;
47
+ const option_ip = options.$ip;
48
+ const nodes = option_ip ? (current
49
+ .nodes
50
+ .filter(node => node.public_ip == option_ip)) : current.nodes;
40
51
  if (nodes.length == 0)
41
52
  return;
42
53
  current.last_call_index = (current.last_call_index + 1) % nodes.length;
@@ -44,26 +55,40 @@ export class SpiderMesh {
44
55
  }
45
56
  rpc(service, method, args, options = {}) {
46
57
  const rpc_node_id = this.#caculate_rpc_node_id(service, options);
47
- if (!rpc_node_id)
48
- return new Observable(o => o.error(new Error(`SERVICE_NOT_RUNNING:${service}`, {
58
+ if (!rpc_node_id) {
59
+ const e = new Error(`SERVICE_NOT_RUNNING:${service}`, {
49
60
  cause: {
50
61
  service,
51
62
  method,
52
63
  args,
53
64
  options
54
65
  }
55
- })));
66
+ });
67
+ return Object.assign(new Observable(o => o.error(e)), {
68
+ then: async (success, error) => {
69
+ error(e);
70
+ },
71
+ async catch() {
72
+ return {};
73
+ },
74
+ async finally() {
75
+ return {};
76
+ },
77
+ [Symbol.toStringTag]: ''
78
+ });
79
+ }
56
80
  if (options.$forgot) {
57
81
  this.publish({
58
82
  topic: rpc_node_id,
59
- payload: {
60
- request: {
61
- args,
62
- method,
63
- request_id: '#',
64
- service
65
- }
66
- }
83
+ payload: [{
84
+ request: {
85
+ args,
86
+ method,
87
+ request_id: '#',
88
+ service
89
+ }
90
+ }],
91
+ node_id: rpc_node_id
67
92
  });
68
93
  return;
69
94
  }
@@ -72,14 +97,15 @@ export class SpiderMesh {
72
97
  this.#requests.set(request_id, { $response, rpc_node_id });
73
98
  this.publish({
74
99
  topic: rpc_node_id,
75
- payload: {
76
- request: {
77
- args,
78
- method,
79
- request_id,
80
- service
81
- }
82
- }
100
+ payload: [{
101
+ request: {
102
+ args,
103
+ method,
104
+ request_id,
105
+ service
106
+ }
107
+ }],
108
+ node_id: rpc_node_id
83
109
  });
84
110
  return () => {
85
111
  this.#requests.delete(request_id);
@@ -121,7 +147,7 @@ export class SpiderMesh {
121
147
  .map(node => node.local_transporter_id))
122
148
  ];
123
149
  const metadata = {
124
- ...this.#metadata,
150
+ metadata: this.metadata,
125
151
  node_id: this.#node_id,
126
152
  node_version: process.version,
127
153
  last_online: Date.now(),
@@ -131,10 +157,11 @@ export class SpiderMesh {
131
157
  linked: [...this.#linked_nodes.keys()],
132
158
  isolated_nodes,
133
159
  isolated: this.#$isolated.value,
160
+ public_ip: await $public_ip
134
161
  };
135
162
  return metadata;
136
163
  }
137
- async #self_introduce(local_transporter_id, remote_transporter_id) {
164
+ async #self_introduce(local_transporter_id, node_id) {
138
165
  const list = local_transporter_id ? [this.#transporters.get(local_transporter_id)] : [...this.#transporters.values()];
139
166
  for (const target of list) {
140
167
  if (!target)
@@ -144,7 +171,7 @@ export class SpiderMesh {
144
171
  local_transporter_id: target.transporter.transporter_id,
145
172
  remote_transporter_id: '#OVERWRITE'
146
173
  };
147
- await this.#publish(target.transporter, '#join', [me], remote_transporter_id);
174
+ await this.publish({ payload: [me], topic: '#join', node_id }, target.transporter);
148
175
  }
149
176
  }
150
177
  async $update_isolate_mode(active) {
@@ -165,7 +192,7 @@ export class SpiderMesh {
165
192
  throw 'RPC_METHOD_NOT_FOUND';
166
193
  return service;
167
194
  }
168
- async #node_event_handler({ payload: event, sti, metadata: { smnid } }) {
195
+ async #node_event_handler(transporter, { payload: event, metadata: { smnid } }) {
169
196
  if (event.request) {
170
197
  const response = (data) => {
171
198
  const error = data.error ? (data.error instanceof Error ? {
@@ -174,16 +201,18 @@ export class SpiderMesh {
174
201
  name: data.error.name,
175
202
  stack: data.error.stack
176
203
  } : data.error) : undefined;
177
- return this.publish({
178
- topic: smnid,
179
- payload: {
204
+ const payload = [{
180
205
  response: {
181
206
  request_id: event.request.request_id,
182
207
  ...data,
183
208
  error
184
209
  },
185
- }
186
- });
210
+ }];
211
+ this.publish({
212
+ payload,
213
+ topic: smnid,
214
+ node_id: smnid
215
+ }, transporter);
187
216
  };
188
217
  try {
189
218
  const instance = this.#get_rpc_target(event.request);
@@ -230,13 +259,13 @@ export class SpiderMesh {
230
259
  }
231
260
  }
232
261
  }
233
- async link_transporter(transporter) {
262
+ async #link_transporter(transporter) {
234
263
  this.#transporters.set(transporter.transporter_id, {
235
264
  transporter,
236
265
  nodes: new Map()
237
266
  });
238
- this.listen(this.#node_id).subscribe(msg => this.#node_event_handler(msg));
239
- this.listen('#join').pipe(filter(node => node.metadata.smnid != this.#node_id), groupBy(node => node.metadata.smnid), mergeMap(grouped => grouped.pipe(debounceTime(500), map(({ payload, sti }) => ({
267
+ this.listen(this.#node_id, transporter).pipe(tap(msg => this.#node_event_handler(transporter, msg))).subscribe();
268
+ this.listen('#join', transporter).pipe(filter(node => node.metadata.smnid != this.#node_id), groupBy(node => node.metadata.smnid), mergeMap(grouped => grouped.pipe(debounceTime(500), map(({ payload, sti }) => ({
240
269
  ...payload,
241
270
  local_transporter_id: transporter.transporter_id,
242
271
  remote_transporter_id: sti,
@@ -245,14 +274,8 @@ export class SpiderMesh {
245
274
  if (!prev || (prev.online != current.online))
246
275
  return current;
247
276
  return undefined;
248
- }, undefined), filter(Boolean), map(node => node), filter(node => node.online), tap(node => this.#self_introduce(transporter.transporter_id, node.remote_transporter_id)))))
249
- .subscribe();
250
- $services.pipe(mergeMap(async ({ instance, metadata }) => {
251
- await this.#active_local_service(instance, metadata);
252
- await this.#active_ready_hooks(instance);
253
- }), debounceTime(500), mergeMap(async () => {
254
- this.#self_introduce(transporter.transporter_id);
255
- })).subscribe();
277
+ }, undefined), filter(Boolean), map(node => node), filter(node => node.online), tap(node => this.#self_introduce(transporter.transporter_id))))).subscribe();
278
+ $services.subscribe(service => this.#active_local_service(transporter, service.instance, service.metadata));
256
279
  }
257
280
  async #on_node_discovered(node) {
258
281
  if (node.node_id == this.#node_id)
@@ -268,7 +291,7 @@ export class SpiderMesh {
268
291
  this.#linked_nodes.set(node.node_id, new_node);
269
292
  this.#transporters.get(node.local_transporter_id)?.nodes.set(node.remote_transporter_id, node.node_id);
270
293
  if (!peer_updated && !this.#$isolated.value)
271
- await this.#self_introduce(node.local_transporter_id, node.remote_transporter_id);
294
+ await this.#self_introduce(node.local_transporter_id, node.node_id);
272
295
  for (const service_id of Object.keys(node.services)) {
273
296
  if (!this.#remote_services.has(service_id)) {
274
297
  this.#remote_services.set(service_id, {
@@ -372,7 +395,7 @@ export class SpiderMesh {
372
395
  const $ = new Subject();
373
396
  const $$ = publish_buffer_ms ? $.pipe(bufferTime(publish_buffer_ms), filter(l => l.length > 0)) : $;
374
397
  $$.subscribe(data => this.publish({
375
- payload: data,
398
+ payload: [data],
376
399
  topic: event_factory.name
377
400
  }));
378
401
  return {
@@ -380,16 +403,14 @@ export class SpiderMesh {
380
403
  listen: () => this.listen(event_factory)
381
404
  };
382
405
  }
383
- async #active_local_service(instance, metadata) {
406
+ async #active_local_service(transporter, instance, metadata) {
384
407
  const prototype = Object.getPrototypeOf(instance);
385
408
  const name = prototype.constructor.name;
386
409
  this.#local_services.set(name, { instance, metadata });
387
- this.listen(name).subscribe(evt => this.#node_event_handler(evt));
410
+ this.listen(name, transporter).subscribe(evt => this.#node_event_handler(transporter, evt));
388
411
  const event_subscribers = listEventSubscribers(prototype);
389
412
  for (const { event, method, buffer_ms } of event_subscribers) {
390
- const $ = this.listen(event).pipe(filter(() => !this.#$isolated.value));
391
- const $$ = buffer_ms ? $.pipe(bufferTime(buffer_ms), filter(l => l.length > 0)) : $;
392
- $$.subscribe(e => instance[method]?.(e, this));
413
+ this.listen(event, transporter).pipe(filter(() => !this.#$isolated.value), buffer_ms ? pipe(bufferTime(buffer_ms), filter(l => l.length > 0)) : pipe(map(item => [item]))).subscribe(e => instance[method]?.(e, this));
393
414
  }
394
415
  }
395
416
  async #wait_service_online(service_name = 'all') {
@@ -413,17 +434,16 @@ export class SpiderMesh {
413
434
  instance[method]?.(this);
414
435
  }
415
436
  }
416
- #publish(transporter, topic, list, remote_transporter_id) {
437
+ publish({ payload, topic, node_id, local_transporter_id }, transporter) {
417
438
  const event = typeof topic == 'string' ? topic : topic.name;
418
439
  const e = {
419
440
  event,
420
441
  metadata: { smnid: this.#node_id },
421
- payload: list,
422
- rti: remote_transporter_id
442
+ payload
423
443
  };
424
- return transporter.publish(e);
425
- }
426
- batch_publish({ payload, topic, node_id, local_transporter_id }) {
444
+ if (transporter) {
445
+ return transporter.publish(e);
446
+ }
427
447
  if (node_id) {
428
448
  const node = this.#linked_nodes.get(node_id);
429
449
  if (!node)
@@ -431,31 +451,26 @@ export class SpiderMesh {
431
451
  const target = this.#transporters.get(node.local_transporter_id);
432
452
  if (!target)
433
453
  return;
434
- return this.#publish(target.transporter, topic, payload, node.remote_transporter_id);
454
+ return target.transporter.publish({
455
+ ...e,
456
+ rti: node.remote_transporter_id
457
+ });
435
458
  }
436
459
  if (local_transporter_id) {
437
460
  const target = this.#transporters.get(local_transporter_id);
438
- return target && this.#publish(target.transporter, topic, payload);
461
+ return target && target.transporter.publish(e);
439
462
  }
440
463
  for (const { transporter } of this.#transporters.values()) {
441
- return this.#publish(transporter, topic, payload);
464
+ transporter.publish(e);
442
465
  }
443
466
  }
444
- publish({ payload, topic, node_id, local_transporter_id }) {
445
- return this.batch_publish({
446
- node_id,
447
- payload: [payload],
448
- topic,
449
- local_transporter_id
450
- });
451
- }
452
- listen(topic) {
467
+ listen(topic, transporter) {
453
468
  const topic_name = typeof topic == 'string' ? topic : topic.name;
454
- return merge(...[...this.#transporters.values()].map(({ transporter }) => (transporter.listen(topic_name).pipe(map(msg => msg.payload.map(data => ({
469
+ return SpiderMesh.$transporters.pipe(mergeMap(transporter => transporter.listen(topic_name).pipe(map(msg => msg.payload.map(data => ({
455
470
  ...msg,
456
471
  payload: data,
457
472
  node_id: msg.metadata.smnid
458
- }))), mergeAll()))));
473
+ }))), mergeAll())));
459
474
  }
460
475
  }
461
476
  //# 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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"}
@@ -0,0 +1,6 @@
1
+ import { ServiceMetadata } from "../interfaces/SpiderMeshNode.js";
2
+ import { SpiderMesh } from "../SpiderMesh.js";
3
+ export declare const CustomSpiderMesh: (fn: () => Promise<ServiceMetadata>) => {
4
+ provide: symbol;
5
+ useFactory: () => Promise<SpiderMesh>;
6
+ };
@@ -0,0 +1,9 @@
1
+ import { SpiderMesh } from "../SpiderMesh.js";
2
+ export const CustomSpiderMesh = (fn) => ({
3
+ provide: Symbol.for('NestJSInjectMetadata'),
4
+ useFactory: async () => {
5
+ const m = await fn();
6
+ return new SpiderMesh(m);
7
+ }
8
+ });
9
+ //# sourceMappingURL=CustomSpiderMesh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomSpiderMesh.js","sourceRoot":"","sources":["../../../src/decorators/CustomSpiderMesh.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAkC,EAAE,EAAE,CAAC,CAAC;IACrE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC3C,UAAU,EAAE,KAAK,IAAI,EAAE;QACnB,MAAM,CAAC,GAAG,MAAM,EAAE,EAAE,CAAA;QACpB,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;IAC5B,CAAC;CACJ,CAAC,CAAA"}
@@ -9,7 +9,7 @@ export { Microservice } from './decorators/Microservice.js';
9
9
  export { NestJSExposeMicroservice } from './decorators/NestJSExposeMicroservice.js';
10
10
  export { NestJSLinkMicroservice } from './decorators/NestJSLinkMicroservice.js';
11
11
  export { NestJSLinkEvent } from './decorators/NestJSLinkEvent.js';
12
- export { NestJSInjectMetadata } from './decorators/NestJSInjectMetadata.js';
12
+ export { CustomSpiderMesh } from './decorators/CustomSpiderMesh.js';
13
13
  export { Encodable, Encoder } from './Encoder.js';
14
14
  export { ListenEvent, EventDataType, EventHub, createSpiderMeshEvent, E, ListenEventBatch } from './decorators/ListenEvent.js';
15
15
  export * from './interfaces/SpiderMeshTransporter.js';
@@ -6,7 +6,7 @@ export { Microservice } from './decorators/Microservice.js';
6
6
  export { NestJSExposeMicroservice } from './decorators/NestJSExposeMicroservice.js';
7
7
  export { NestJSLinkMicroservice } from './decorators/NestJSLinkMicroservice.js';
8
8
  export { NestJSLinkEvent } from './decorators/NestJSLinkEvent.js';
9
- export { NestJSInjectMetadata } from './decorators/NestJSInjectMetadata.js';
9
+ export { CustomSpiderMesh } from './decorators/CustomSpiderMesh.js';
10
10
  export { Encoder } from './Encoder.js';
11
11
  export { ListenEvent, createSpiderMeshEvent, ListenEventBatch } from './decorators/ListenEvent.js';
12
12
  export * from './interfaces/SpiderMeshTransporter.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAI5C,OAAO,EAAc,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAa,OAAO,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EACH,WAAW,EAGX,qBAAqB,EAErB,gBAAgB,EACnB,MAAM,6BAA6B,CAAA;AACpC,cAAc,uCAAuC,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAI5C,OAAO,EAAc,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAa,OAAO,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EACH,WAAW,EAGX,qBAAqB,EAErB,gBAAgB,EACnB,MAAM,6BAA6B,CAAA;AACpC,cAAc,uCAAuC,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA"}
@@ -7,6 +7,7 @@ export type SpiderMeshNodeMetadata = {
7
7
  remote_transporter_id: string;
8
8
  node_version: string;
9
9
  namespace: string;
10
+ public_ip?: string;
10
11
  last_online: number;
11
12
  online: boolean;
12
13
  services: {
@@ -17,5 +18,6 @@ export type SpiderMeshNodeMetadata = {
17
18
  linked: string[];
18
19
  isolated_nodes: string[];
19
20
  isolated: boolean;
21
+ metadata: ServiceMetadata;
20
22
  };
21
23
  export type SpiderMeshNode = SpiderMeshNodeMetadata;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@spider-mesh/core",
3
3
  "type": "module",
4
- "version": "1.0.138",
4
+ "version": "1.0.142",
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",
@@ -34,6 +34,7 @@
34
34
  "author": "Duong Van Ba",
35
35
  "license": "ISC",
36
36
  "dependencies": {
37
+ "axios": "^1.7.5",
37
38
  "buffer": "^6.0.3",
38
39
  "frame-stream": "^4.0.0",
39
40
  "react-native-uuid": "^2.0.2",
@@ -1,7 +0,0 @@
1
- import { ServiceMetadata } from "../interfaces/SpiderMeshNode.js";
2
- import { SpiderMesh } from "../SpiderMesh.js";
3
- export declare const NestJSInjectMetadata: (fn: () => Promise<ServiceMetadata>) => {
4
- provide: symbol;
5
- inject: (typeof SpiderMesh)[];
6
- useFactory: (sm: SpiderMesh) => Promise<void>;
7
- };
@@ -1,14 +0,0 @@
1
- import { SpiderMesh } from "../SpiderMesh.js";
2
- export const NestJSInjectMetadata = (fn) => ({
3
- provide: Symbol.for('NestJSInjectMetadata'),
4
- inject: [SpiderMesh],
5
- useFactory: async (sm) => {
6
- try {
7
- const m = await fn();
8
- sm.set_metadata(m, true);
9
- }
10
- catch (e) {
11
- }
12
- }
13
- });
14
- //# sourceMappingURL=NestJSInjectMetadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NestJSInjectMetadata.js","sourceRoot":"","sources":["../../../src/decorators/NestJSInjectMetadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAkC,EAAE,EAAE,CAAC,CAAC;IACzE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC3C,MAAM,EAAE,CAAC,UAAU,CAAC;IACpB,UAAU,EAAE,KAAK,EAAE,EAAc,EAAE,EAAE;QACjC,IAAI;YACA,MAAM,CAAC,GAAG,MAAM,EAAE,EAAE,CAAA;YACpB,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;SAC3B;QAAC,OAAO,CAAC,EAAE;SAEX;IACL,CAAC;CACJ,CAAC,CAAA"}