@spider-mesh/core 2.0.44 → 2.0.145

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,9 +6,9 @@ It provides:
6
6
 
7
7
  - local microservice registration with decorators
8
8
  - typed remote service linking through proxies
9
- - RPC, discovery, and pubsub transporter contracts
10
- - a `Registry` for remote peer state and RPC routing
11
- - a `SpiderMesh` runtime for local services, transporters, and node metadata
9
+ - RPC, discovery, pubsub, and `ServiceDirectory` transporter contracts
10
+ - a `SpiderMesh` runtime for local services, transporters, and node metadata (no registry required)
11
+ - a `Registry` helper for transports that route client-side
12
12
  - NestJS helper adapters
13
13
 
14
14
  Concrete transport implementations live in companion packages such as `@spider-mesh/tcp` and `@spider-mesh/ws`, or in your own custom transporters.
@@ -23,23 +23,28 @@ For TypeScript projects using decorators, enable decorator metadata in your comp
23
23
 
24
24
  ## Runtime Setup
25
25
 
26
- Create a registry when you need remote peer discovery and RPC routing.
26
+ `SpiderMesh` takes no constructor arguments it does not own a registry. Availability
27
+ (`wait()`/`watch()`/`nodes`) is sourced from each transporter's `ServiceDirectory`, and
28
+ routing is owned by the transport.
27
29
 
28
30
  ```ts
29
- import { Registry, SpiderMesh } from '@spider-mesh/core'
31
+ import { SpiderMesh } from '@spider-mesh/core'
30
32
 
31
- const registry = new Registry()
32
- const mesh = new SpiderMesh(registry)
33
+ const mesh = new SpiderMesh()
33
34
  ```
34
35
 
35
- Register transporter instances on the runtime:
36
+ Register transporter instances on the runtime. Transports that route client-side (like
37
+ `@spider-mesh/tcp`) keep their own peer table — construct one `Registry` and inject it
38
+ into them; relay-based transports (like `@spider-mesh/ws`) need nothing:
36
39
 
37
40
  ```ts
41
+ import { Registry } from '@spider-mesh/core'
38
42
  import { Http2Pubsub, Http2Rpc, UdpDiscovery } from '@spider-mesh/tcp'
39
43
 
40
- mesh.registerTransporter(new UdpDiscovery())
41
- mesh.registerTransporter(new Http2Rpc())
42
- mesh.registerTransporter(new Http2Pubsub())
44
+ const registry = new Registry()
45
+ mesh.registerTransporter(new UdpDiscovery(registry))
46
+ mesh.registerTransporter(new Http2Rpc(registry))
47
+ mesh.registerTransporter(new Http2Pubsub(registry))
43
48
  ```
44
49
 
45
50
  Transporter capability is inferred by instance shape:
@@ -47,6 +52,7 @@ Transporter capability is inferred by instance shape:
47
52
  - `send()` => RPC transporter
48
53
  - `publish()` => pubsub transporter
49
54
  - `broadcast()` => discovery transporter
55
+ - `watchService()` + `listNodes()` => `ServiceDirectory` (availability source for `wait()`/`watch()`/`nodes`)
50
56
 
51
57
  ## Local Services
52
58
 
@@ -196,11 +202,15 @@ Current event behavior:
196
202
  - last unsubscribe removes the topic from local node metadata
197
203
  - discovery transporters rebroadcast node metadata after topic changes
198
204
 
199
- ## Registry
205
+ ## Registry (transport helper)
200
206
 
201
- `Registry` stores remote peer and RPC routing state.
207
+ `SpiderMesh` no longer owns or depends on a `Registry`. It is exported as an optional
208
+ **helper for transports that route client-side**: such a transport constructs its own
209
+ `Registry`, feeds it from its discovery stream, and exposes it to core as a
210
+ `ServiceDirectory`. `@spider-mesh/tcp` does exactly this; relay transports
211
+ (`@spider-mesh/ws`) need no registry at all.
202
212
 
203
- Current public methods:
213
+ Public methods:
204
214
 
205
215
  - `getPeer(nodeId)`
206
216
  - `upsertPeer(node)`
@@ -211,6 +221,19 @@ Current public methods:
211
221
  - `getRpcTransporterName(service)`
212
222
  - `listTopicNodes(topic)`
213
223
 
224
+ ## ServiceDirectory
225
+
226
+ A transporter MAY implement `ServiceDirectory` to tell core which nodes serve a service.
227
+ Core merges this across all registered transporters to answer `wait()` / `watch()` / `nodes`,
228
+ without owning any peer state itself.
229
+
230
+ ```ts
231
+ type ServiceDirectory = {
232
+ watchService(service: string): Observable<NodeRef[]> // emit current state promptly (BehaviorSubject semantics)
233
+ listNodes(service: string): NodeRef[] // sync snapshot; [] if the transport cannot enumerate
234
+ }
235
+ ```
236
+
214
237
  ## Transporter Contracts
215
238
 
216
239
  The contract source of truth is `src/types.ts`.
@@ -219,11 +242,12 @@ The contract source of truth is `src/types.ts`.
219
242
 
220
243
  ```ts
221
244
  type RpcTransporter = Observable<RpcEvent> & {
222
- linkRegistry?(registry: Registry): void
223
- send(data: RpcRequestPacket | RpcCancelPacket | RpcResponsePacket): Promise<{ cancel: () => void }>
245
+ send(data: RpcRequestPacket | RpcResponsePacket): Promise<{ cancel: () => void }>
224
246
  }
225
247
  ```
226
248
 
249
+ The core contract `send()` accepts only `request` and `response` packets. Cancellation is exposed through the `cancel()` function returned by `send()`, not by passing a `RpcCancelPacket` to `send()`. A concrete transporter may translate that `cancel()` into a `RpcCancelPacket` on the wire (for example `@spider-mesh/tcp`), but that is a transport-internal detail.
250
+
227
251
  `send()` returns a `cancel` function. For `request` packets, calling `cancel()` sends a `RpcCancelPacket` to the destination node, which causes the provider to stop any running stream. For `response` and `cancel` packets the returned `cancel` is a no-op.
228
252
 
229
253
  `SpiderMesh` calls `cancel()` automatically when a subscriber unsubscribes from a stream that has not yet completed.
@@ -263,7 +287,6 @@ type RpcCancelPacket = {
263
287
  type PubsubTransporter = Observable<PubsubEvent> & {
264
288
  publish<T>(topic: string, data: T): Promise<void>
265
289
  listen<T>(topic: string): Observable<T>
266
- linkRegistry?(registry: Registry): void
267
290
  }
268
291
  ```
269
292
 
@@ -271,7 +294,6 @@ type PubsubTransporter = Observable<PubsubEvent> & {
271
294
 
272
295
  ```ts
273
296
  type DiscoveryTransporter = Observable<DiscoveryEvent> & {
274
- linkRegistry?(registry: Registry): void
275
297
  broadcast(data: MdnsMessage<NodeMetadata>): Promise<void>
276
298
  }
277
299
  ```
@@ -330,12 +352,12 @@ import { Http2Pubsub, Http2Rpc, UdpDiscovery } from '@spider-mesh/tcp'
330
352
  {
331
353
  provide: SpiderMesh,
332
354
  useFactory: () => {
355
+ const mesh = new SpiderMesh()
333
356
  const registry = new Registry()
334
- const mesh = new SpiderMesh(registry)
335
357
 
336
- mesh.registerTransporter(new UdpDiscovery())
337
- mesh.registerTransporter(new Http2Rpc())
338
- mesh.registerTransporter(new Http2Pubsub())
358
+ mesh.registerTransporter(new UdpDiscovery(registry))
359
+ mesh.registerTransporter(new Http2Rpc(registry))
360
+ mesh.registerTransporter(new Http2Pubsub(registry))
339
361
 
340
362
  return mesh
341
363
  },
@@ -454,14 +476,37 @@ The core defines these error codes for RPC flows:
454
476
 
455
477
  The package also exports:
456
478
 
457
- - `LimitConcurrency(limit)` and `LimitConcurrentRunning(limit)` for throttling async method execution
458
- - `MicroserviceError` for common RPC error codes
479
+ - `LimitConcurrency(limit)` and `LimitConcurrentRunning(limit)` for throttling async method execution (`LimitConcurrentRunning` is an alias of `LimitConcurrency`)
480
+ - `MicroserviceError` a TypeScript **type only** describing the RPC error shape (`{ code: SpiderMeshErrorCode; message?: string }`). There is no runtime class or error-code constants object; the code strings live in the `SpiderMeshErrorCode` union (see [Error Model](#error-model)). Do not `import` it as a value.
481
+
482
+ ## Usage Guidance
483
+
484
+ ### Should
485
+
486
+ - **Keep `@spider-mesh/core` runtime-agnostic.** Put RPC/business contracts and runtime wiring here; import a concrete transport (`@spider-mesh/tcp`, `@spider-mesh/ws`, or your own) only at the composition root where you build `SpiderMesh`.
487
+ - **Construct local services to register them.** `@Microservice()` self-registers on construction — just call `new UserService()` (or let your DI container instantiate it). There is no separate `register()` call.
488
+ - **`await linker.wait()` before the first remote call.** Linking is lazy; `wait()` resolves once at least one provider node is known (or your predicate passes). Calling a remote method before a provider exists relies on `timeout`/`fallback` instead.
489
+ - **Define a typed contract for `RemoteServiceLinker.link<T>()`.** The proxy is only as safe as the `T` you give it; the runtime does not validate the remote signature.
490
+ - **Tune reliability per call with `.set({ timeout, retry, fallback })`** rather than hard-coding values, and provide a `fallback` when a degraded result is acceptable — `callRemoteService` short-circuits to `of(fallback)` on *any* caught error when `fallback !== undefined`.
491
+ - **Use `linkEvent(EventClass)` for pub/sub fan-out** and treat the event class name as the topic identity. Keep event classes stable across services.
492
+ - **Unsubscribe from remote streams you no longer need.** `SpiderMesh` cancels the in-flight provider stream when the last subscriber unsubscribes — leaked subscriptions keep provider work alive.
493
+ - **Force `node_id` only when you need sticky routing** (e.g. a stateful provider). Default routing is round-robin and that is what you want most of the time.
494
+
495
+ ### Should not
496
+
497
+ - **Do not put socket/wire logic in core.** Transporters own byte transport, topic IO, and discovery broadcasts; core owns lifecycle, routing, timeout, retry, and cancel.
498
+ - **Do not `import { LOCAL_SERVICES$ }` or `MicroserviceList` from the package root** — they are internal module exports, not part of the public API.
499
+ - **Do not treat `MicroserviceError` as a runtime value.** It is a type alias; there is no class to `new` and no constants object to read codes from.
500
+ - **Do not assume `@Microservice({ version })` (or any service metadata) affects routing.** Metadata is free-form and opaque to selection; routing keys on the class name only. The typed node-level `version` is an internal monotonic counter, unrelated to this field.
501
+ - **Do not rely on multiple `SpiderMesh` instances in one process for isolation.** `LOCAL_SERVICES$` is process-global, so every mesh sees every local service. Use separate processes (and `SPIDERMESH_NAMESPACE`) to isolate.
502
+ - **Do not rename a service class casually.** Service identity — and therefore every remote link and route — is the class name. Renaming is a breaking change across the mesh.
503
+ - **Do not mutate `Registry` peer state directly** unless you are implementing a transporter; let discovery transporters populate it.
459
504
 
460
505
  ## Notes
461
506
 
462
507
  - This package is ESM-only.
463
508
  - Repository source uses emitted `.js` relative specifiers.
464
- - `LOCAL_SERVICES$` is process-global inside one process.
509
+ - `LOCAL_SERVICES$` is process-global inside one process. It is an internal module stream, not re-exported from the package root — every `SpiderMesh` in the same process sees every `@Microservice()` instance constructed in that process.
465
510
  - Local services are registered when their class instances are constructed.
466
511
  - Service identity is based on the class name.
467
512
  - Event topic identity is based on the event class name.
@@ -2,6 +2,7 @@ import { BehaviorSubject } from 'rxjs';
2
2
  import type { SpiderMeshNode } from './types.js';
3
3
  export type RegistryPickRpcTargetOptions = {
4
4
  node_id?: string;
5
+ filter?: (node: SpiderMeshNode) => boolean;
5
6
  };
6
7
  export declare class Registry {
7
8
  #private;
@@ -1,4 +1,4 @@
1
- import { BehaviorSubject, map } from 'rxjs';
1
+ import { BehaviorSubject, distinctUntilChanged, map } from 'rxjs';
2
2
  export class Registry {
3
3
  nodes$ = new BehaviorSubject(new Map());
4
4
  #transporters = new Map();
@@ -48,7 +48,12 @@ export class Registry {
48
48
  });
49
49
  }
50
50
  watch(service) {
51
- return this.nodes$.pipe(map(() => this.listPeers(service)));
51
+ return this.nodes$.pipe(map(() => this.listPeers(service)), distinctUntilChanged((prev, curr) => {
52
+ if (prev.length !== curr.length)
53
+ return false;
54
+ const prevIds = new Set(prev.map(n => n.node_id));
55
+ return curr.every(n => prevIds.has(n.node_id));
56
+ }));
52
57
  }
53
58
  pickRpcNode(service, options = {}) {
54
59
  if (options.node_id) {
@@ -59,7 +64,9 @@ export class Registry {
59
64
  return null;
60
65
  return node.node_id;
61
66
  }
62
- const targets = this.listPeers(service);
67
+ const targets = options.filter
68
+ ? this.listPeers(service).filter(options.filter)
69
+ : this.listPeers(service);
63
70
  if (targets.length === 0)
64
71
  return null;
65
72
  const index = ((this.#rrIndexes.get(service) || 0) + 1) % targets.length;
@@ -1 +1 @@
1
- {"version":3,"file":"Registry.js","sourceRoot":"","sources":["../../src/Registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Registry.js","sourceRoot":"","sources":["../../src/Registry.ts"],"names":[],"mappings":"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"}
@@ -12,10 +12,10 @@ export declare class RemoteServiceLinker<Service> {
12
12
  private sm;
13
13
  private options;
14
14
  constructor(sm: SpiderMesh, options: RemoteServiceOptions);
15
- watch(): Observable<SpiderMeshNode[]>;
16
- get nodes(): SpiderMeshNode[];
15
+ watch(): Observable<import("./types.js").NodeRef[]>;
16
+ get nodes(): import("./types.js").NodeRef[];
17
17
  set<Fallback>(options: Omit<Partial<RpcOptions<Fallback>>, 'service' | 'method' | 'args'>): Mapper<Service, Fallback>;
18
- wait(checker?: ServiceChecker, stop$?: Observable<any>): Promise<SpiderMeshNode[] | null>;
18
+ wait(checker?: ServiceChecker, stop$?: Observable<any>): Promise<import("./types.js").NodeRef[] | null>;
19
19
  static link<Service, Fallback = never>(sm: SpiderMesh, options: RemoteServiceOptions): Mapper<Service, Fallback>;
20
20
  }
21
21
  export type Mapper<Service, Fallback = unknown> = RemoteServiceLinker<Service> & ({
@@ -1,23 +1,21 @@
1
1
  import { Observable, Subscription } from "rxjs";
2
- import { SpiderMeshNode, RpcOptions, MeshTransporter } from './types.js';
3
- import { Registry } from './Registry.js';
2
+ import { SpiderMeshNode, RpcOptions, MeshTransporter, NodeRef } from './types.js';
4
3
  export type HelloEvent = SpiderMeshNode & {
5
4
  back?: boolean;
6
5
  };
7
- export type ServiceChecker = (nodes: SpiderMeshNode[]) => Promise<boolean> | boolean;
6
+ export type ServiceChecker = (nodes: NodeRef[]) => Promise<boolean> | boolean;
8
7
  export type NodesMap = {
9
8
  nodes: Map<string, SpiderMeshNode>;
10
9
  last_updated_node_id: string;
11
10
  };
12
11
  export declare class SpiderMesh {
13
12
  #private;
14
- readonly registry?: Registry | undefined;
15
13
  readonly node_id: string;
16
14
  readonly namespace: string;
17
- constructor(registry?: Registry | undefined);
15
+ constructor();
18
16
  registerTransporter(meshTransporter: MeshTransporter, name?: string): Subscription;
19
- listRpcNodes(service: string): SpiderMeshNode[];
20
- watchService(service: string): Observable<SpiderMeshNode[]>;
17
+ listRpcNodes(service: string): NodeRef[];
18
+ watchService(service: string): Observable<NodeRef[]>;
21
19
  callRemoteService<R, T>(options: RpcOptions<T>): Observable<R | T>;
22
20
  linkEvent<T>(factory: {
23
21
  new (...args: any[]): T;
@@ -1,4 +1,4 @@
1
- import { BehaviorSubject, catchError, EMPTY, finalize, firstValueFrom, from, lastValueFrom, map, mergeMap, Observable, of, retry, share, Subject, Subscription, switchMap, take, tap, throwError, timeout, timer } from "rxjs";
1
+ import { BehaviorSubject, catchError, combineLatest, distinctUntilChanged, EMPTY, finalize, firstValueFrom, from, lastValueFrom, map, mergeMap, Observable, of, retry, share, Subject, Subscription, switchMap, take, tap, throwError, timeout, timer } from "rxjs";
2
2
  import { listBeforeMicroserviceOnlineMethods } from "./decorators/BeforeMicroserviceOnline.js";
3
3
  import { LOCAL_SERVICES$ } from "./decorators/Microservice.js";
4
4
  import { SPIDERMESH_NAMESPACE, SPIDERMESH_NODE_HOSTNAME } from "../const.js";
@@ -9,7 +9,6 @@ const isNamedTransporter = (value) => {
9
9
  return !!value && typeof value === 'object';
10
10
  };
11
11
  export class SpiderMesh {
12
- registry;
13
12
  node_id = `${Date.now().toString(36).toUpperCase()}|${Math.random().toString(36).slice(10).toUpperCase()}`;
14
13
  namespace = SPIDERMESH_NAMESPACE;
15
14
  #transporters = {
@@ -32,8 +31,7 @@ export class SpiderMesh {
32
31
  pending: new Map(),
33
32
  running: new Map()
34
33
  };
35
- constructor(registry) {
36
- this.registry = registry;
34
+ constructor() {
37
35
  LOCAL_SERVICES$.pipe(mergeMap(async (service) => {
38
36
  const list = listBeforeMicroserviceOnlineMethods(service.instance);
39
37
  for (const method of list) {
@@ -52,9 +50,6 @@ export class SpiderMesh {
52
50
  || (isNamedTransporter(meshTransporter) ? meshTransporter.constructor?.name : undefined)
53
51
  || 'AnonymousTransporter';
54
52
  const subscription = new Subscription();
55
- if (this.registry && typeof meshTransporter.linkRegistry === 'function') {
56
- meshTransporter.linkRegistry(this.registry);
57
- }
58
53
  if (this.#isRpcTransporter(meshTransporter)) {
59
54
  subscription.add(this.#linkRpcTransporter(resolvedName, meshTransporter).subscribe());
60
55
  }
@@ -66,15 +61,63 @@ export class SpiderMesh {
66
61
  }
67
62
  return subscription;
68
63
  }
64
+ #serviceDirectories() {
65
+ const seen = new Set();
66
+ const directories = [];
67
+ for (const map of [this.#transporters.discoveries, this.#transporters.rpcs, this.#transporters.pubsubs]) {
68
+ for (const transporter of map.values()) {
69
+ if (seen.has(transporter))
70
+ continue;
71
+ seen.add(transporter);
72
+ const candidate = transporter;
73
+ if (typeof candidate.watchService === 'function' && typeof candidate.listNodes === 'function') {
74
+ directories.push(transporter);
75
+ }
76
+ }
77
+ }
78
+ return directories;
79
+ }
69
80
  listRpcNodes(service) {
70
- if (!this.registry)
71
- return [];
72
- return this.registry.listPeers(service).filter(node => !!node.transporters.rpc);
81
+ const seen = new Set();
82
+ const nodes = [];
83
+ for (const directory of this.#serviceDirectories()) {
84
+ for (const node of directory.listNodes(service)) {
85
+ if (seen.has(node.node_id))
86
+ continue;
87
+ seen.add(node.node_id);
88
+ nodes.push(node);
89
+ }
90
+ }
91
+ return nodes;
73
92
  }
74
93
  watchService(service) {
75
- if (!this.registry)
94
+ const directories = this.#serviceDirectories();
95
+ if (!directories.length)
76
96
  return EMPTY;
77
- return this.registry.watch(service).pipe(map(() => this.listRpcNodes(service)));
97
+ return combineLatest(directories.map(directory => directory.watchService(service))).pipe(map(lists => {
98
+ const seen = new Set();
99
+ const merged = [];
100
+ for (const node of lists.flat()) {
101
+ if (seen.has(node.node_id))
102
+ continue;
103
+ seen.add(node.node_id);
104
+ merged.push(node);
105
+ }
106
+ return merged;
107
+ }), distinctUntilChanged((prev, curr) => {
108
+ if (prev.length !== curr.length)
109
+ return false;
110
+ const prevIds = new Set(prev.map(n => n.node_id));
111
+ return curr.every(n => prevIds.has(n.node_id));
112
+ }));
113
+ }
114
+ #rpcTransporterNameForService(service) {
115
+ for (const node of this.listRpcNodes(service)) {
116
+ const name = node.transporters?.rpc;
117
+ if (typeof name === 'string')
118
+ return name;
119
+ }
120
+ return undefined;
78
121
  }
79
122
  #selectRpcTransport(filters = {}) {
80
123
  if (!filters.service)
@@ -85,14 +128,13 @@ export class SpiderMesh {
85
128
  return;
86
129
  return this.#transporters.rpcs.get(name);
87
130
  }
88
- if (!this.registry) {
89
- return this.#transporters.rpcs.values().next().value;
131
+ const name = this.#rpcTransporterNameForService(filters.service);
132
+ if (name) {
133
+ const transporter = this.#transporters.rpcs.get(name);
134
+ if (transporter)
135
+ return transporter;
90
136
  }
91
- const name = this.registry.getRpcTransporterName(filters.service);
92
- if (!name)
93
- return;
94
- const transporter = this.#transporters.rpcs.get(name);
95
- return transporter;
137
+ return this.#transporters.rpcs.values().next().value;
96
138
  }
97
139
  #normalizeRpcError(error) {
98
140
  if (error && typeof error === 'object') {
@@ -111,7 +153,7 @@ export class SpiderMesh {
111
153
  }
112
154
  #index = 1;
113
155
  callRemoteService(options) {
114
- return of(1).pipe(switchMap(() => this.registry ? firstValueFrom(this.registry.watch(options.service)) : of(1)), take(1), mergeMap(() => {
156
+ return of(1).pipe(switchMap(() => firstValueFrom(this.watchService(options.service), { defaultValue: [] })), take(1), mergeMap(() => {
115
157
  const transporter = this.#selectRpcTransport(options);
116
158
  if (!transporter)
117
159
  throw { code: 'MICROSERVICE_OFFLINE', message: `No transporter available for service ${options.service}` };
@@ -273,9 +315,6 @@ export class SpiderMesh {
273
315
  }
274
316
  }
275
317
  }
276
- if (offline) {
277
- this.registry?.removePeer(offline);
278
- }
279
318
  if (endpoints) {
280
319
  this.#refresh({
281
320
  transporters: {
@@ -306,20 +345,7 @@ export class SpiderMesh {
306
345
  sender_id: this.node_id,
307
346
  }).catch(() => undefined);
308
347
  });
309
- return transporter.pipe(tap(({ discovered: node }) => {
310
- if (!node || typeof node !== 'object' || !('node_id' in node) || !('services' in node))
311
- return;
312
- const rpcTransporterName = this.#resolveDiscoveredRpcTransporterName(node);
313
- const peer = this.registry?.upsertPeer(rpcTransporterName ? {
314
- ...node,
315
- transporters: {
316
- ...(node.transporters || {}),
317
- rpc: rpcTransporterName
318
- }
319
- } : node);
320
- if (!this.registry || !peer)
321
- return;
322
- }), finalize(() => {
348
+ return transporter.pipe(finalize(() => {
323
349
  announce.unsubscribe();
324
350
  }));
325
351
  }
@@ -362,13 +388,6 @@ export class SpiderMesh {
362
388
  }
363
389
  });
364
390
  }
365
- #resolveDiscoveredRpcTransporterName(node) {
366
- for (const [name] of this.#transporters.rpcs.entries()) {
367
- if (node.transporters && Object.hasOwn(node.transporters, name))
368
- return name;
369
- }
370
- return null;
371
- }
372
391
  #registerTopic(topic) {
373
392
  if (this.#me$.value.topics.includes(topic))
374
393
  return;
@@ -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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"}
@@ -9,4 +9,4 @@ export * from './decorators/LimitConcurrentRunning.js';
9
9
  export * from './helpers/MicroserviceException.js';
10
10
  export * from './helpers/LimitConcurrency.js';
11
11
  export * from './RemoteService.js';
12
- export type { DiscoveryEvent, DiscoveryTransporter, MdnsMessage, MeshTransporter, NodeMetadata, PubsubEvent, PubsubTransporter, RpcCancelPacket, RpcEvent, RpcOptions, RpcRequestPacket, RpcResponsePacket, RpcRoutingOptions, TransporterSelector, RpcTransporter, SpiderMeshError, SpiderMeshErrorCode, SpiderMeshNode, } from './types.js';
12
+ export type { DiscoveryEvent, DiscoveryTransporter, MdnsMessage, MeshTransporter, NodeMetadata, PubsubEvent, PubsubTransporter, RpcCancelPacket, RpcEvent, RpcOptions, RpcRequestPacket, RpcResponsePacket, RpcRoutingOptions, TransporterSelector, RpcTransporter, SpiderMeshError, SpiderMeshErrorCode, SpiderMeshNode, NodeRef, ServiceDirectory, } from './types.js';
@@ -1,5 +1,4 @@
1
1
  import { Observable } from "rxjs";
2
- import type { Registry } from './Registry.js';
3
2
  export type SpiderMeshErrorCode = ('MICROSERVICE_OFFLINE' | 'MICROSERVICE_NOT_FOUND' | 'MICROSERVICE_RPC_TIMEOUT');
4
3
  export type SpiderMeshError = {
5
4
  code: SpiderMeshErrorCode;
@@ -25,6 +24,11 @@ export type NodesMap = {
25
24
  nodes: Map<string, SpiderMeshNode>;
26
25
  last_updated_node_id: string;
27
26
  };
27
+ export type NodeRef = Pick<SpiderMeshNode, 'node_id' | 'host' | 'services' | 'transporters'>;
28
+ export type ServiceDirectory = {
29
+ watchService(service: string): Observable<NodeRef[]>;
30
+ listNodes(service: string): NodeRef[];
31
+ };
28
32
  export type NodeMetadata<T = {}> = T & {
29
33
  host: string;
30
34
  node_id: string;
@@ -41,7 +45,6 @@ export type DiscoveryEvent = {
41
45
  discovered: SpiderMeshNode;
42
46
  };
43
47
  export type DiscoveryTransporter = Observable<DiscoveryEvent> & {
44
- linkRegistry?(registry: Registry): void;
45
48
  broadcast(data: MdnsMessage<NodeMetadata>): Promise<void>;
46
49
  };
47
50
  export type PubsubEvent = {
@@ -50,7 +53,6 @@ export type PubsubEvent = {
50
53
  export type PubsubTransporter = Observable<PubsubEvent> & {
51
54
  publish<T>(topic: string, data: T): Promise<void>;
52
55
  listen<T>(topic: string): Observable<T>;
53
- linkRegistry?(registry: Registry): void;
54
56
  };
55
57
  export type RpcRoutingOptions = {
56
58
  [key: string]: string | number | boolean;
@@ -99,8 +101,7 @@ export type RpcEvent = Partial<{
99
101
  endpoints: Record<string, string | boolean | number>;
100
102
  }>;
101
103
  export type RpcTransporter = Observable<RpcEvent> & {
102
- linkRegistry?(registry: Registry): void;
103
- send(data: RpcRequestPacket | RpcCancelPacket | RpcResponsePacket): Promise<{
104
+ send(data: RpcRequestPacket | RpcResponsePacket): Promise<{
104
105
  cancel: () => void;
105
106
  }>;
106
107
  };
@@ -24,6 +24,14 @@ class ProcessRpcTransporter extends Subject {
24
24
  }
25
25
  }
26
26
  class ProcessDiscoveryTransporter extends Subject {
27
+ #registry = new Registry();
28
+ constructor() {
29
+ super();
30
+ this.subscribe(event => {
31
+ if (event.discovered)
32
+ this.#registry.upsertPeer(event.discovered);
33
+ });
34
+ }
27
35
  async broadcast(data) {
28
36
  sendHostMessage({
29
37
  kind: 'discovery-broadcast',
@@ -31,9 +39,14 @@ class ProcessDiscoveryTransporter extends Subject {
31
39
  node: data.node,
32
40
  });
33
41
  }
42
+ watchService(service) {
43
+ return this.#registry.watch(service);
44
+ }
45
+ listNodes(service) {
46
+ return this.#registry.listPeers(service);
47
+ }
34
48
  }
35
- const registry = role === 'client' ? new Registry() : undefined;
36
- const mesh = new SpiderMesh(registry);
49
+ const mesh = new SpiderMesh();
37
50
  const rpcTransporter = new ProcessRpcTransporter();
38
51
  const discoveryTransporter = new ProcessDiscoveryTransporter();
39
52
  mesh.registerTransporter(rpcTransporter, 'ProcessRpcTransporter');
@@ -1 +1 @@
1
- {"version":3,"file":"process-mesh.js","sourceRoot":"","sources":["../../../tests/fixtures/process-mesh.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-mesh.js","sourceRoot":"","sources":["../../../tests/fixtures/process-mesh.ts"],"names":[],"mappings":"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"}
@@ -60,6 +60,19 @@ class MockDiscoveryTransporter extends Subject {
60
60
  });
61
61
  }
62
62
  }
63
+ class MockDirectoryTransporter extends Subject {
64
+ #registry = new Registry();
65
+ async broadcast(_data) { }
66
+ watchService(service) {
67
+ return this.#registry.watch(service);
68
+ }
69
+ listNodes(service) {
70
+ return this.#registry.listPeers(service);
71
+ }
72
+ upsertPeer(node) {
73
+ return this.#registry.upsertPeer(node);
74
+ }
75
+ }
63
76
  describe('mock e2e', () => {
64
77
  test('routes rpc through explicit transporter name and class', async () => {
65
78
  const mesh = new SpiderMesh();
@@ -103,8 +116,9 @@ describe('mock e2e', () => {
103
116
  expect(streamValues).toEqual([1, 2, 3]);
104
117
  });
105
118
  test('wait supports async checker functions', async () => {
106
- const registry = new Registry();
107
- const mesh = new SpiderMesh(registry);
119
+ const mesh = new SpiderMesh();
120
+ const directory = new MockDirectoryTransporter();
121
+ mesh.registerTransporter(directory, 'MockDirectoryTransporter');
108
122
  const serviceName = nextName('AsyncWaitService');
109
123
  const remote = RemoteServiceLinker.link(mesh, { service: serviceName });
110
124
  const waitPromise = remote.wait(async (nodes) => {
@@ -112,7 +126,7 @@ describe('mock e2e', () => {
112
126
  return nodes.length > 0;
113
127
  });
114
128
  await Promise.resolve();
115
- registry.upsertPeer({
129
+ directory.upsertPeer({
116
130
  host: '127.0.0.1',
117
131
  namespace: mesh.namespace,
118
132
  node_id: nextName('peer'),
@@ -170,5 +184,34 @@ describe('mock e2e', () => {
170
184
  expect(provider.inject).toEqual([SpiderMesh]);
171
185
  expect(result).toEqual({ orderId: 'order-1' });
172
186
  });
187
+ test('listRpcNodes and __batch__ are honestly empty without a ServiceDirectory', async () => {
188
+ const mesh = new SpiderMesh();
189
+ const loopback = new NamedLoopbackRpcTransporter(mesh.node_id);
190
+ mesh.registerTransporter(loopback);
191
+ expect(mesh.listRpcNodes('AnyService')).toEqual([]);
192
+ const remote = RemoteServiceLinker.link(mesh, { service: 'AnyService' });
193
+ const batched = await firstValueFrom(remote.__batch__ping().pipe(toArray()));
194
+ expect(batched).toEqual([]);
195
+ });
196
+ test('pickRpcNode skips peers rejected by the filter (RPC-not-ready)', () => {
197
+ const registry = new Registry();
198
+ const service = nextName('FilterService');
199
+ const base = {
200
+ namespace: 'test',
201
+ host: '127.0.0.1',
202
+ topics: [],
203
+ nodes: {},
204
+ version: 1,
205
+ services: { [service]: {} },
206
+ };
207
+ registry.upsertPeer({ ...base, node_id: 'ready', transporters: { Http2Rpc: { port: 5000 } } });
208
+ registry.upsertPeer({ ...base, node_id: 'half', transporters: { Http2Rpc: true } });
209
+ const isReady = (node) => Number(node.transporters?.Http2Rpc?.port) > 0;
210
+ const picks = new Set();
211
+ for (let i = 0; i < 25; i++) {
212
+ picks.add(registry.pickRpcNode(service, { filter: isReady }));
213
+ }
214
+ expect([...picks]).toEqual(['ready']);
215
+ });
173
216
  });
174
217
  //# sourceMappingURL=mock-e2e.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mock-e2e.test.js","sourceRoot":"","sources":["../../tests/mock-e2e.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock-e2e.test.js","sourceRoot":"","sources":["../../tests/mock-e2e.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@spider-mesh/core",
3
3
  "type": "module",
4
- "version": "2.0.44",
4
+ "version": "2.0.145",
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",
@@ -43,4 +43,4 @@
43
43
  "browser": {
44
44
  "crypto": false
45
45
  }
46
- }
46
+ }