@xyo-network/bridge-pub-sub 2.100.6 → 2.100.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/browser/PubSubBridge.d.cts +3 -1
  2. package/dist/browser/PubSubBridge.d.cts.map +1 -1
  3. package/dist/browser/PubSubBridge.d.mts +3 -1
  4. package/dist/browser/PubSubBridge.d.mts.map +1 -1
  5. package/dist/browser/PubSubBridge.d.ts +3 -1
  6. package/dist/browser/PubSubBridge.d.ts.map +1 -1
  7. package/dist/browser/PubSubBridgeModuleResolver.d.cts +1 -1
  8. package/dist/browser/PubSubBridgeModuleResolver.d.cts.map +1 -1
  9. package/dist/browser/PubSubBridgeModuleResolver.d.mts +1 -1
  10. package/dist/browser/PubSubBridgeModuleResolver.d.mts.map +1 -1
  11. package/dist/browser/PubSubBridgeModuleResolver.d.ts +1 -1
  12. package/dist/browser/PubSubBridgeModuleResolver.d.ts.map +1 -1
  13. package/dist/browser/index.cjs +42 -17
  14. package/dist/browser/index.cjs.map +1 -1
  15. package/dist/browser/index.js +42 -17
  16. package/dist/browser/index.js.map +1 -1
  17. package/dist/neutral/PubSubBridge.d.cts +3 -1
  18. package/dist/neutral/PubSubBridge.d.cts.map +1 -1
  19. package/dist/neutral/PubSubBridge.d.mts +3 -1
  20. package/dist/neutral/PubSubBridge.d.mts.map +1 -1
  21. package/dist/neutral/PubSubBridge.d.ts +3 -1
  22. package/dist/neutral/PubSubBridge.d.ts.map +1 -1
  23. package/dist/neutral/PubSubBridgeModuleResolver.d.cts +1 -1
  24. package/dist/neutral/PubSubBridgeModuleResolver.d.cts.map +1 -1
  25. package/dist/neutral/PubSubBridgeModuleResolver.d.mts +1 -1
  26. package/dist/neutral/PubSubBridgeModuleResolver.d.mts.map +1 -1
  27. package/dist/neutral/PubSubBridgeModuleResolver.d.ts +1 -1
  28. package/dist/neutral/PubSubBridgeModuleResolver.d.ts.map +1 -1
  29. package/dist/neutral/index.cjs +42 -17
  30. package/dist/neutral/index.cjs.map +1 -1
  31. package/dist/neutral/index.js +42 -17
  32. package/dist/neutral/index.js.map +1 -1
  33. package/dist/node/PubSubBridge.d.cts +3 -1
  34. package/dist/node/PubSubBridge.d.cts.map +1 -1
  35. package/dist/node/PubSubBridge.d.mts +3 -1
  36. package/dist/node/PubSubBridge.d.mts.map +1 -1
  37. package/dist/node/PubSubBridge.d.ts +3 -1
  38. package/dist/node/PubSubBridge.d.ts.map +1 -1
  39. package/dist/node/PubSubBridgeModuleResolver.d.cts +1 -1
  40. package/dist/node/PubSubBridgeModuleResolver.d.cts.map +1 -1
  41. package/dist/node/PubSubBridgeModuleResolver.d.mts +1 -1
  42. package/dist/node/PubSubBridgeModuleResolver.d.mts.map +1 -1
  43. package/dist/node/PubSubBridgeModuleResolver.d.ts +1 -1
  44. package/dist/node/PubSubBridgeModuleResolver.d.ts.map +1 -1
  45. package/dist/node/index.cjs +44 -17
  46. package/dist/node/index.cjs.map +1 -1
  47. package/dist/node/index.js +44 -17
  48. package/dist/node/index.js.map +1 -1
  49. package/package.json +20 -20
  50. package/src/PubSubBridge.ts +44 -12
  51. package/src/PubSubBridgeModuleResolver.ts +8 -10
@@ -17,15 +17,17 @@ export declare class PubSubBridge<TParams extends PubSubBridgeParams = PubSubBri
17
17
  protected _lastState?: LRUCache<string, number>;
18
18
  private _busClient?;
19
19
  private _busHost?;
20
+ private _discoverRootsMutex;
20
21
  private _resolver?;
22
+ private _roots?;
21
23
  get resolver(): PubSubBridgeModuleResolver;
22
24
  protected get moduleName(): string;
23
25
  connect(id: ModuleIdentifier, maxDepth?: number): Promise<Address | undefined>;
24
26
  disconnect(id: ModuleIdentifier): Promise<Address | undefined>;
25
- discoverRoots(): Promise<ModuleInstance[]>;
26
27
  exposeChild(mod: ModuleInstance, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]>;
27
28
  exposeHandler(address: Address, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]>;
28
29
  exposedHandler(): Address[];
30
+ getRoots(force?: boolean): Promise<ModuleInstance[]>;
29
31
  startHandler(): Promise<boolean>;
30
32
  unexposeHandler(id: ModuleIdentifier, options?: BridgeUnexposeOptions | undefined): Promise<ModuleInstance[]>;
31
33
  protected busClient(): AsyncQueryBusClient<import("./AsyncQueryBus").AsyncQueryBusClientParams> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"PubSubBridge.d.ts","sourceRoot":"","sources":["../../src/PubSubBridge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,qBAAqB,EAKtB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAmB,gBAAgB,EAAE,cAAc,EAA6C,MAAM,2BAA2B,CAAA;AAExI,OAAO,EAAyB,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAIzE,qBACa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC;IACjJ,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqD;IACrG,gBAAyB,mBAAmB,EAAE,MAAM,CAA2B;IAE/E,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAK;IAC1C,SAAS,CAAC,0BAA0B,EAAE,MAAM,CAAK;IACjD,SAAS,CAAC,oCAAoC,EAAE,MAAM,CAAK;IAC3D,SAAS,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAK;IAC3C,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE/C,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAmB;IACpC,OAAO,CAAC,SAAS,CAAC,CAA4B;IAE9C,IAAa,QAAQ,IAAI,0BAA0B,CAgBlD;IAED,SAAS,KAAK,UAAU,WAEvB;IAEK,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAczE,UAAU,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IASrD,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAUnD,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBtG,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAY3G,cAAc,IAAI,OAAO,EAAE;IAKZ,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzC,eAAe,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBnH,SAAS,CAAC,SAAS;IAWnB,SAAS,CAAC,OAAO;cAiBD,eAAe,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;cAkBnF,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAI7D"}
1
+ {"version":3,"file":"PubSubBridge.d.ts","sourceRoot":"","sources":["../../src/PubSubBridge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,qBAAqB,EAKtB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAmB,gBAAgB,EAAE,cAAc,EAA6C,MAAM,2BAA2B,CAAA;AAExI,OAAO,EAAyB,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAIzE,qBACa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC;IACjJ,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqD;IACrG,gBAAyB,mBAAmB,EAAE,MAAM,CAA2B;IAE/E,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAK;IAC1C,SAAS,CAAC,0BAA0B,EAAE,MAAM,CAAK;IACjD,SAAS,CAAC,oCAAoC,EAAE,MAAM,CAAK;IAC3D,SAAS,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAK;IAC3C,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE/C,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAmB;IACpC,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,SAAS,CAAC,CAA4B;IAC9C,OAAO,CAAC,MAAM,CAAC,CAAkB;IAEjC,IAAa,QAAQ,IAAI,0BAA0B,CAgBlD;IAED,SAAS,KAAK,UAAU,WAEvB;IAEK,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAazE,UAAU,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAS9D,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiBtG,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAa3G,cAAc,IAAI,OAAO,EAAE;IAKrB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAsC3C,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzC,eAAe,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBnH,SAAS,CAAC,SAAS;IAWnB,SAAS,CAAC,OAAO;cAiBD,eAAe,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;cAkBnF,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAI7D"}
@@ -17,15 +17,17 @@ export declare class PubSubBridge<TParams extends PubSubBridgeParams = PubSubBri
17
17
  protected _lastState?: LRUCache<string, number>;
18
18
  private _busClient?;
19
19
  private _busHost?;
20
+ private _discoverRootsMutex;
20
21
  private _resolver?;
22
+ private _roots?;
21
23
  get resolver(): PubSubBridgeModuleResolver;
22
24
  protected get moduleName(): string;
23
25
  connect(id: ModuleIdentifier, maxDepth?: number): Promise<Address | undefined>;
24
26
  disconnect(id: ModuleIdentifier): Promise<Address | undefined>;
25
- discoverRoots(): Promise<ModuleInstance[]>;
26
27
  exposeChild(mod: ModuleInstance, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]>;
27
28
  exposeHandler(address: Address, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]>;
28
29
  exposedHandler(): Address[];
30
+ getRoots(force?: boolean): Promise<ModuleInstance[]>;
29
31
  startHandler(): Promise<boolean>;
30
32
  unexposeHandler(id: ModuleIdentifier, options?: BridgeUnexposeOptions | undefined): Promise<ModuleInstance[]>;
31
33
  protected busClient(): AsyncQueryBusClient<import("./AsyncQueryBus").AsyncQueryBusClientParams> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"PubSubBridge.d.ts","sourceRoot":"","sources":["../../src/PubSubBridge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,qBAAqB,EAKtB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAmB,gBAAgB,EAAE,cAAc,EAA6C,MAAM,2BAA2B,CAAA;AAExI,OAAO,EAAyB,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAIzE,qBACa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC;IACjJ,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqD;IACrG,gBAAyB,mBAAmB,EAAE,MAAM,CAA2B;IAE/E,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAK;IAC1C,SAAS,CAAC,0BAA0B,EAAE,MAAM,CAAK;IACjD,SAAS,CAAC,oCAAoC,EAAE,MAAM,CAAK;IAC3D,SAAS,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAK;IAC3C,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE/C,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAmB;IACpC,OAAO,CAAC,SAAS,CAAC,CAA4B;IAE9C,IAAa,QAAQ,IAAI,0BAA0B,CAgBlD;IAED,SAAS,KAAK,UAAU,WAEvB;IAEK,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAczE,UAAU,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IASrD,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAUnD,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBtG,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAY3G,cAAc,IAAI,OAAO,EAAE;IAKZ,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzC,eAAe,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBnH,SAAS,CAAC,SAAS;IAWnB,SAAS,CAAC,OAAO;cAiBD,eAAe,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;cAkBnF,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAI7D"}
1
+ {"version":3,"file":"PubSubBridge.d.ts","sourceRoot":"","sources":["../../src/PubSubBridge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,qBAAqB,EAKtB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAmB,gBAAgB,EAAE,cAAc,EAA6C,MAAM,2BAA2B,CAAA;AAExI,OAAO,EAAyB,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAIzE,qBACa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC;IACjJ,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqD;IACrG,gBAAyB,mBAAmB,EAAE,MAAM,CAA2B;IAE/E,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAK;IAC1C,SAAS,CAAC,0BAA0B,EAAE,MAAM,CAAK;IACjD,SAAS,CAAC,oCAAoC,EAAE,MAAM,CAAK;IAC3D,SAAS,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAK;IAC3C,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE/C,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAmB;IACpC,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,SAAS,CAAC,CAA4B;IAC9C,OAAO,CAAC,MAAM,CAAC,CAAkB;IAEjC,IAAa,QAAQ,IAAI,0BAA0B,CAgBlD;IAED,SAAS,KAAK,UAAU,WAEvB;IAEK,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAazE,UAAU,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAS9D,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiBtG,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAa3G,cAAc,IAAI,OAAO,EAAE;IAKrB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAsC3C,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzC,eAAe,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBnH,SAAS,CAAC,SAAS;IAWnB,SAAS,CAAC,OAAO;cAiBD,eAAe,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;cAkBnF,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAI7D"}
@@ -17,15 +17,17 @@ export declare class PubSubBridge<TParams extends PubSubBridgeParams = PubSubBri
17
17
  protected _lastState?: LRUCache<string, number>;
18
18
  private _busClient?;
19
19
  private _busHost?;
20
+ private _discoverRootsMutex;
20
21
  private _resolver?;
22
+ private _roots?;
21
23
  get resolver(): PubSubBridgeModuleResolver;
22
24
  protected get moduleName(): string;
23
25
  connect(id: ModuleIdentifier, maxDepth?: number): Promise<Address | undefined>;
24
26
  disconnect(id: ModuleIdentifier): Promise<Address | undefined>;
25
- discoverRoots(): Promise<ModuleInstance[]>;
26
27
  exposeChild(mod: ModuleInstance, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]>;
27
28
  exposeHandler(address: Address, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]>;
28
29
  exposedHandler(): Address[];
30
+ getRoots(force?: boolean): Promise<ModuleInstance[]>;
29
31
  startHandler(): Promise<boolean>;
30
32
  unexposeHandler(id: ModuleIdentifier, options?: BridgeUnexposeOptions | undefined): Promise<ModuleInstance[]>;
31
33
  protected busClient(): AsyncQueryBusClient<import("./AsyncQueryBus").AsyncQueryBusClientParams> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"PubSubBridge.d.ts","sourceRoot":"","sources":["../../src/PubSubBridge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,qBAAqB,EAKtB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAmB,gBAAgB,EAAE,cAAc,EAA6C,MAAM,2BAA2B,CAAA;AAExI,OAAO,EAAyB,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAIzE,qBACa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC;IACjJ,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqD;IACrG,gBAAyB,mBAAmB,EAAE,MAAM,CAA2B;IAE/E,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAK;IAC1C,SAAS,CAAC,0BAA0B,EAAE,MAAM,CAAK;IACjD,SAAS,CAAC,oCAAoC,EAAE,MAAM,CAAK;IAC3D,SAAS,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAK;IAC3C,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE/C,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAmB;IACpC,OAAO,CAAC,SAAS,CAAC,CAA4B;IAE9C,IAAa,QAAQ,IAAI,0BAA0B,CAgBlD;IAED,SAAS,KAAK,UAAU,WAEvB;IAEK,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAczE,UAAU,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IASrD,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAUnD,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBtG,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAY3G,cAAc,IAAI,OAAO,EAAE;IAKZ,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzC,eAAe,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBnH,SAAS,CAAC,SAAS;IAWnB,SAAS,CAAC,OAAO;cAiBD,eAAe,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;cAkBnF,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAI7D"}
1
+ {"version":3,"file":"PubSubBridge.d.ts","sourceRoot":"","sources":["../../src/PubSubBridge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,qBAAqB,EAKtB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAmB,gBAAgB,EAAE,cAAc,EAA6C,MAAM,2BAA2B,CAAA;AAExI,OAAO,EAAyB,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAIzE,qBACa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC;IACjJ,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqD;IACrG,gBAAyB,mBAAmB,EAAE,MAAM,CAA2B;IAE/E,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAK;IAC1C,SAAS,CAAC,0BAA0B,EAAE,MAAM,CAAK;IACjD,SAAS,CAAC,oCAAoC,EAAE,MAAM,CAAK;IAC3D,SAAS,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAK;IAC3C,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE/C,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAmB;IACpC,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,SAAS,CAAC,CAA4B;IAC9C,OAAO,CAAC,MAAM,CAAC,CAAkB;IAEjC,IAAa,QAAQ,IAAI,0BAA0B,CAgBlD;IAED,SAAS,KAAK,UAAU,WAEvB;IAEK,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAazE,UAAU,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAS9D,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiBtG,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAa3G,cAAc,IAAI,OAAO,EAAE;IAKrB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAsC3C,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzC,eAAe,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBnH,SAAS,CAAC,SAAS;IAWnB,SAAS,CAAC,OAAO;cAiBD,eAAe,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;cAkBnF,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAI7D"}
@@ -5,6 +5,6 @@ export interface PubSubBridgeModuleResolverParams extends BridgeModuleResolverPa
5
5
  busClient: AsyncQueryBusClient;
6
6
  }
7
7
  export declare class PubSubBridgeModuleResolver extends AbstractBridgeModuleResolver<PubSubBridgeModuleResolverParams> {
8
- resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | T[] | undefined>;
8
+ resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]>;
9
9
  }
10
10
  //# sourceMappingURL=PubSubBridgeModuleResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PubSubBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/PubSubBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAAsD,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAErJ,OAAO,EAAE,mBAAmB,EAA4D,MAAM,iBAAiB,CAAA;AAE/G,MAAM,WAAW,gCAAiC,SAAQ,0BAA0B;IAClF,SAAS,EAAE,mBAAmB,CAAA;CAC/B;AAED,qBAAa,0BAA2B,SAAQ,4BAA4B,CAAC,gCAAgC,CAAC;IAC7F,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EACrE,EAAE,EAAE,gBAAgB,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;CAuChC"}
1
+ {"version":3,"file":"PubSubBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/PubSubBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAAsD,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAErJ,OAAO,EAAE,mBAAmB,EAA4D,MAAM,iBAAiB,CAAA;AAE/G,MAAM,WAAW,gCAAiC,SAAQ,0BAA0B;IAClF,SAAS,EAAE,mBAAmB,CAAA;CAC/B;AAED,qBAAa,0BAA2B,SAAQ,4BAA4B,CAAC,gCAAgC,CAAC;IAC7F,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAwC/I"}
@@ -5,6 +5,6 @@ export interface PubSubBridgeModuleResolverParams extends BridgeModuleResolverPa
5
5
  busClient: AsyncQueryBusClient;
6
6
  }
7
7
  export declare class PubSubBridgeModuleResolver extends AbstractBridgeModuleResolver<PubSubBridgeModuleResolverParams> {
8
- resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | T[] | undefined>;
8
+ resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]>;
9
9
  }
10
10
  //# sourceMappingURL=PubSubBridgeModuleResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PubSubBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/PubSubBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAAsD,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAErJ,OAAO,EAAE,mBAAmB,EAA4D,MAAM,iBAAiB,CAAA;AAE/G,MAAM,WAAW,gCAAiC,SAAQ,0BAA0B;IAClF,SAAS,EAAE,mBAAmB,CAAA;CAC/B;AAED,qBAAa,0BAA2B,SAAQ,4BAA4B,CAAC,gCAAgC,CAAC;IAC7F,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EACrE,EAAE,EAAE,gBAAgB,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;CAuChC"}
1
+ {"version":3,"file":"PubSubBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/PubSubBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAAsD,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAErJ,OAAO,EAAE,mBAAmB,EAA4D,MAAM,iBAAiB,CAAA;AAE/G,MAAM,WAAW,gCAAiC,SAAQ,0BAA0B;IAClF,SAAS,EAAE,mBAAmB,CAAA;CAC/B;AAED,qBAAa,0BAA2B,SAAQ,4BAA4B,CAAC,gCAAgC,CAAC;IAC7F,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAwC/I"}
@@ -5,6 +5,6 @@ export interface PubSubBridgeModuleResolverParams extends BridgeModuleResolverPa
5
5
  busClient: AsyncQueryBusClient;
6
6
  }
7
7
  export declare class PubSubBridgeModuleResolver extends AbstractBridgeModuleResolver<PubSubBridgeModuleResolverParams> {
8
- resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | T[] | undefined>;
8
+ resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]>;
9
9
  }
10
10
  //# sourceMappingURL=PubSubBridgeModuleResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PubSubBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/PubSubBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAAsD,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAErJ,OAAO,EAAE,mBAAmB,EAA4D,MAAM,iBAAiB,CAAA;AAE/G,MAAM,WAAW,gCAAiC,SAAQ,0BAA0B;IAClF,SAAS,EAAE,mBAAmB,CAAA;CAC/B;AAED,qBAAa,0BAA2B,SAAQ,4BAA4B,CAAC,gCAAgC,CAAC;IAC7F,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EACrE,EAAE,EAAE,gBAAgB,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;CAuChC"}
1
+ {"version":3,"file":"PubSubBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/PubSubBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAAsD,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAErJ,OAAO,EAAE,mBAAmB,EAA4D,MAAM,iBAAiB,CAAA;AAE/G,MAAM,WAAW,gCAAiC,SAAQ,0BAA0B;IAClF,SAAS,EAAE,mBAAmB,CAAA;CAC/B;AAED,qBAAa,0BAA2B,SAAQ,4BAA4B,CAAC,gCAAgC,CAAC;IAC7F,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAwC/I"}
@@ -683,6 +683,7 @@ var import_address_payload_plugin = require("@xyo-network/address-payload-plugin
683
683
  var import_module_model4 = require("@xyo-network/module-model");
684
684
  var import_node_model = require("@xyo-network/node-model");
685
685
  var import_payload_model = require("@xyo-network/payload-model");
686
+ var import_async_mutex2 = require("async-mutex");
686
687
 
687
688
  // src/PubSubBridgeModuleResolver.ts
688
689
  var import_assert4 = require("@xylabs/assert");
@@ -697,7 +698,7 @@ var PubSubBridgeModuleResolver = class extends import_abstract_bridge2.AbstractB
697
698
  }
698
699
  async resolveHandler(id, options) {
699
700
  const parentResult = await super.resolveHandler(id, options);
700
- if (parentResult) {
701
+ if (parentResult.length > 0) {
701
702
  return parentResult;
702
703
  }
703
704
  const idParts = id.split(":");
@@ -727,11 +728,14 @@ var PubSubBridgeModuleResolver = class extends import_abstract_bridge2.AbstractB
727
728
  }
728
729
  await proxy.start?.();
729
730
  const wrapped = (0, import_abstract_bridge2.wrapModuleWithType)(proxy, account);
730
- const as = (0, import_assert4.assertEx)((0, import_module_model3.asModuleInstance)(wrapped, {}), () => `Failed to asModuleInstance [${id}]`);
731
- proxy.upResolver.add(as);
732
- proxy.downResolver.add(as);
733
- this.add(as);
734
- return remainderParts.length > 0 ? await proxy.resolve(remainderParts, options) : as;
731
+ const instance = (0, import_assert4.assertEx)((0, import_module_model3.asModuleInstance)(wrapped, {}), () => `Failed to asModuleInstance [${id}]`);
732
+ proxy.upResolver.add(instance);
733
+ proxy.downResolver.add(instance);
734
+ this.add(instance);
735
+ const result = remainderParts.length > 0 ? await proxy.resolve(remainderParts, options) : instance;
736
+ return result ? [
737
+ result
738
+ ] : [];
735
739
  }
736
740
  };
737
741
 
@@ -764,7 +768,9 @@ var PubSubBridge = class extends import_abstract_bridge3.AbstractBridge {
764
768
  _lastState;
765
769
  _busClient;
766
770
  _busHost;
771
+ _discoverRootsMutex = new import_async_mutex2.Mutex();
767
772
  _resolver;
773
+ _roots;
768
774
  get resolver() {
769
775
  this._resolver = this._resolver ?? new PubSubBridgeModuleResolver({
770
776
  bridge: this,
@@ -795,8 +801,7 @@ var PubSubBridge = class extends import_abstract_bridge3.AbstractBridge {
795
801
  if (existingInstance) {
796
802
  return existingInstance.address;
797
803
  }
798
- const result = await this.resolver.resolveHandler(id);
799
- const instance = Array.isArray(result) ? result[0] : result;
804
+ const [instance] = await this.resolver.resolveHandler(id);
800
805
  return await this.connectInstance(instance, maxDepth);
801
806
  }
802
807
  async disconnect(id) {
@@ -807,17 +812,9 @@ var PubSubBridge = class extends import_abstract_bridge3.AbstractBridge {
807
812
  return instance.address;
808
813
  }
809
814
  }
810
- async discoverRoots() {
811
- const rootAddresses = (await Promise.all((this.config.roots ?? []).map((id) => import_module_model4.ResolveHelper.transformModuleIdentifier(id)))).filter(import_exists.exists);
812
- const rootInstances = (await Promise.all(rootAddresses.map(async (root) => await this.resolver.resolve(root)))).filter(import_exists.exists);
813
- for (const instance of rootInstances) {
814
- this.downResolver.add(instance);
815
- }
816
- this._roots = rootInstances;
817
- return rootInstances;
818
- }
819
815
  async exposeChild(mod, options) {
820
816
  const { maxDepth = 5 } = options ?? {};
817
+ console.log(`exposeChild: ${mod.address} ${mod?.id} ${maxDepth}`);
821
818
  const host = (0, import_assert5.assertEx)(this.busHost(), () => "Not configured as a host");
822
819
  host.expose(mod);
823
820
  const children = maxDepth > 0 ? await mod.publicChildren?.() ?? [] : [];
@@ -837,6 +834,7 @@ var PubSubBridge = class extends import_abstract_bridge3.AbstractBridge {
837
834
  async exposeHandler(address, options) {
838
835
  const { required = true } = options ?? {};
839
836
  const mod = await (0, import_module_model4.resolveAddressToInstanceUp)(this, address);
837
+ console.log(`exposeHandler: ${address} ${mod?.id}`);
840
838
  if (required && !mod) {
841
839
  throw new Error(`Unable to find required module: ${address}`);
842
840
  }
@@ -851,6 +849,33 @@ var PubSubBridge = class extends import_abstract_bridge3.AbstractBridge {
851
849
  ...exposedSet
852
850
  ] : [];
853
851
  }
852
+ async getRoots(force) {
853
+ return await this._discoverRootsMutex.runExclusive(async () => {
854
+ if (this._roots === void 0 || force) {
855
+ const rootAddresses = (await Promise.all((this.config.roots ?? []).map((id) => {
856
+ try {
857
+ return import_module_model4.ResolveHelper.transformModuleIdentifier(id);
858
+ } catch (ex) {
859
+ this.logger?.warn("Unable to transform module identifier:", id, ex);
860
+ return;
861
+ }
862
+ }))).filter(import_exists.exists);
863
+ const rootInstances = (await Promise.all(rootAddresses.map(async (root) => {
864
+ try {
865
+ return await this.resolver.resolveHandler(root);
866
+ } catch (ex) {
867
+ this.logger?.warn("Unable to resolve root:", root, ex);
868
+ return;
869
+ }
870
+ }))).flat().filter(import_exists.exists);
871
+ for (const instance of rootInstances) {
872
+ this.downResolver.add(instance);
873
+ }
874
+ this._roots = rootInstances;
875
+ }
876
+ return this._roots;
877
+ });
878
+ }
854
879
  async startHandler() {
855
880
  this.busHost()?.start();
856
881
  return await super.startHandler();