@xyo-network/bridge-websocket 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 (70) hide show
  1. package/dist/browser/ClientBridge.d.cts +1 -2
  2. package/dist/browser/ClientBridge.d.cts.map +1 -1
  3. package/dist/browser/ClientBridge.d.mts +1 -2
  4. package/dist/browser/ClientBridge.d.mts.map +1 -1
  5. package/dist/browser/ClientBridge.d.ts +1 -2
  6. package/dist/browser/ClientBridge.d.ts.map +1 -1
  7. package/dist/browser/Config.d.cts +0 -1
  8. package/dist/browser/Config.d.cts.map +1 -1
  9. package/dist/browser/Config.d.mts +0 -1
  10. package/dist/browser/Config.d.mts.map +1 -1
  11. package/dist/browser/Config.d.ts +0 -1
  12. package/dist/browser/Config.d.ts.map +1 -1
  13. package/dist/browser/WebsocketBridgeModuleResolver.d.cts +1 -1
  14. package/dist/browser/WebsocketBridgeModuleResolver.d.cts.map +1 -1
  15. package/dist/browser/WebsocketBridgeModuleResolver.d.mts +1 -1
  16. package/dist/browser/WebsocketBridgeModuleResolver.d.mts.map +1 -1
  17. package/dist/browser/WebsocketBridgeModuleResolver.d.ts +1 -1
  18. package/dist/browser/WebsocketBridgeModuleResolver.d.ts.map +1 -1
  19. package/dist/browser/index-browser.cjs +9 -12
  20. package/dist/browser/index-browser.cjs.map +1 -1
  21. package/dist/browser/index-browser.js +9 -12
  22. package/dist/browser/index-browser.js.map +1 -1
  23. package/dist/neutral/ClientBridge.d.cts +1 -2
  24. package/dist/neutral/ClientBridge.d.cts.map +1 -1
  25. package/dist/neutral/ClientBridge.d.mts +1 -2
  26. package/dist/neutral/ClientBridge.d.mts.map +1 -1
  27. package/dist/neutral/ClientBridge.d.ts +1 -2
  28. package/dist/neutral/ClientBridge.d.ts.map +1 -1
  29. package/dist/neutral/Config.d.cts +0 -1
  30. package/dist/neutral/Config.d.cts.map +1 -1
  31. package/dist/neutral/Config.d.mts +0 -1
  32. package/dist/neutral/Config.d.mts.map +1 -1
  33. package/dist/neutral/Config.d.ts +0 -1
  34. package/dist/neutral/Config.d.ts.map +1 -1
  35. package/dist/neutral/WebsocketBridgeModuleResolver.d.cts +1 -1
  36. package/dist/neutral/WebsocketBridgeModuleResolver.d.cts.map +1 -1
  37. package/dist/neutral/WebsocketBridgeModuleResolver.d.mts +1 -1
  38. package/dist/neutral/WebsocketBridgeModuleResolver.d.mts.map +1 -1
  39. package/dist/neutral/WebsocketBridgeModuleResolver.d.ts +1 -1
  40. package/dist/neutral/WebsocketBridgeModuleResolver.d.ts.map +1 -1
  41. package/dist/neutral/index.cjs +9 -12
  42. package/dist/neutral/index.cjs.map +1 -1
  43. package/dist/neutral/index.js +9 -12
  44. package/dist/neutral/index.js.map +1 -1
  45. package/dist/node/ClientBridge.d.cts +1 -2
  46. package/dist/node/ClientBridge.d.cts.map +1 -1
  47. package/dist/node/ClientBridge.d.mts +1 -2
  48. package/dist/node/ClientBridge.d.mts.map +1 -1
  49. package/dist/node/ClientBridge.d.ts +1 -2
  50. package/dist/node/ClientBridge.d.ts.map +1 -1
  51. package/dist/node/Config.d.cts +0 -1
  52. package/dist/node/Config.d.cts.map +1 -1
  53. package/dist/node/Config.d.mts +0 -1
  54. package/dist/node/Config.d.mts.map +1 -1
  55. package/dist/node/Config.d.ts +0 -1
  56. package/dist/node/Config.d.ts.map +1 -1
  57. package/dist/node/WebsocketBridgeModuleResolver.d.cts +1 -1
  58. package/dist/node/WebsocketBridgeModuleResolver.d.cts.map +1 -1
  59. package/dist/node/WebsocketBridgeModuleResolver.d.mts +1 -1
  60. package/dist/node/WebsocketBridgeModuleResolver.d.mts.map +1 -1
  61. package/dist/node/WebsocketBridgeModuleResolver.d.ts +1 -1
  62. package/dist/node/WebsocketBridgeModuleResolver.d.ts.map +1 -1
  63. package/dist/node/index.cjs +9 -12
  64. package/dist/node/index.cjs.map +1 -1
  65. package/dist/node/index.js +9 -12
  66. package/dist/node/index.js.map +1 -1
  67. package/package.json +14 -14
  68. package/src/ClientBridge.ts +5 -12
  69. package/src/Config.ts +0 -1
  70. package/src/WebsocketBridgeModuleResolver.ts +3 -6
@@ -6,6 +6,6 @@ export interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolve
6
6
  }
7
7
  export declare class WebsocketBridgeModuleResolver<T extends WebsocketBridgeModuleResolverParams = WebsocketBridgeModuleResolverParams> extends AbstractBridgeModuleResolver<T> {
8
8
  get querySender(): WebsocketBridgeQuerySender;
9
- resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | T[] | undefined>;
9
+ resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]>;
10
10
  }
11
11
  //# sourceMappingURL=WebsocketBridgeModuleResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAIL,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEf,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,0BAA0B,EAAoD,MAAM,eAAe,CAAA;AAE5G,MAAM,WAAW,mCAAoC,SAAQ,0BAA0B;IACrF,WAAW,EAAE,0BAA0B,CAAA;CACxC;AAED,qBAAa,6BAA6B,CACxC,CAAC,SAAS,mCAAmC,GAAG,mCAAmC,CACnF,SAAQ,4BAA4B,CAAC,CAAC,CAAC;IACvC,IAAI,WAAW,+BAEd;IAEc,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;CAqDhC"}
1
+ {"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAIL,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEf,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,0BAA0B,EAAoD,MAAM,eAAe,CAAA;AAE5G,MAAM,WAAW,mCAAoC,SAAQ,0BAA0B;IACrF,WAAW,EAAE,0BAA0B,CAAA;CACxC;AAED,qBAAa,6BAA6B,CACxC,CAAC,SAAS,mCAAmC,GAAG,mCAAmC,CACnF,SAAQ,4BAA4B,CAAC,CAAC,CAAC;IACvC,IAAI,WAAW,+BAEd;IAEc,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;CAqD/I"}
@@ -6,6 +6,6 @@ export interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolve
6
6
  }
7
7
  export declare class WebsocketBridgeModuleResolver<T extends WebsocketBridgeModuleResolverParams = WebsocketBridgeModuleResolverParams> extends AbstractBridgeModuleResolver<T> {
8
8
  get querySender(): WebsocketBridgeQuerySender;
9
- resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | T[] | undefined>;
9
+ resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]>;
10
10
  }
11
11
  //# sourceMappingURL=WebsocketBridgeModuleResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAIL,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEf,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,0BAA0B,EAAoD,MAAM,eAAe,CAAA;AAE5G,MAAM,WAAW,mCAAoC,SAAQ,0BAA0B;IACrF,WAAW,EAAE,0BAA0B,CAAA;CACxC;AAED,qBAAa,6BAA6B,CACxC,CAAC,SAAS,mCAAmC,GAAG,mCAAmC,CACnF,SAAQ,4BAA4B,CAAC,CAAC,CAAC;IACvC,IAAI,WAAW,+BAEd;IAEc,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;CAqDhC"}
1
+ {"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAIL,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEf,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,0BAA0B,EAAoD,MAAM,eAAe,CAAA;AAE5G,MAAM,WAAW,mCAAoC,SAAQ,0BAA0B;IACrF,WAAW,EAAE,0BAA0B,CAAA;CACxC;AAED,qBAAa,6BAA6B,CACxC,CAAC,SAAS,mCAAmC,GAAG,mCAAmC,CACnF,SAAQ,4BAA4B,CAAC,CAAC,CAAC;IACvC,IAAI,WAAW,+BAEd;IAEc,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;CAqD/I"}
@@ -118,9 +118,13 @@ var WebsocketBridgeModuleResolver = class extends import_abstract_bridge2.Abstra
118
118
  proxy.downResolver.add(instance);
119
119
  if (remainderParts.length > 0) {
120
120
  const result = await wrapped.resolve(remainderParts, options);
121
- return result;
121
+ return result ? [
122
+ result
123
+ ] : [];
122
124
  }
123
- return instance;
125
+ return [
126
+ instance
127
+ ];
124
128
  }
125
129
  };
126
130
 
@@ -182,15 +186,15 @@ var WebsocketClientBridge = class _WebsocketClientBridge extends import_abstract
182
186
  get url() {
183
187
  return (0, import_assert2.assertEx)(this.config.client?.url, () => "No Url Set");
184
188
  }
185
- async discoverRoots() {
186
- return await Promise.resolve([]);
187
- }
188
189
  exposeHandler(_id, _options) {
189
190
  throw new Error("Unsupported");
190
191
  }
191
192
  exposedHandler() {
192
193
  throw new Error("Unsupported");
193
194
  }
195
+ async getRoots() {
196
+ return await Promise.resolve([]);
197
+ }
194
198
  async sendBridgeQuery(targetAddress, _query, _payloads) {
195
199
  const lastFailureTime = this._failureTimeCache.get(targetAddress);
196
200
  if (lastFailureTime !== void 0) {
@@ -211,13 +215,6 @@ var WebsocketClientBridge = class _WebsocketClientBridge extends import_abstract
211
215
  this.querySemaphore.release();
212
216
  }
213
217
  }
214
- async startHandler() {
215
- const { discoverRoot = true } = this.config;
216
- if (discoverRoot) {
217
- await this.discoverRoots();
218
- }
219
- return true;
220
- }
221
218
  unexposeHandler(_id, _options) {
222
219
  throw new Error("Unsupported");
223
220
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Bridge.ts","../../src/ClientBridge.ts","../../src/Config.ts","../../src/WebsocketBridgeModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["export * from './Bridge'\nexport * from './Config'\n","import { createServer as createHttpServer, Server as HttpServer } from 'node:http'\n\nimport { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { BridgeExposeOptions, BridgeModule } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Server, Socket } from 'socket.io'\n\nimport { WebsocketClientBridge } from './ClientBridge'\nimport { WebsocketBridgeConfig } from './Config'\nimport { WebsocketBridgeParams } from './Params'\n\nexport const BridgeCommands = {\n join: 'join',\n query: 'query',\n}\n\nconst DEFAULT_HOST_PORT = 8080\n\n@creatableModule()\nexport class WebsocketBridge<\n TParams extends WebsocketBridgeParams<AnyConfigSchema<WebsocketBridgeConfig>> = WebsocketBridgeParams<WebsocketBridgeConfig>,\n >\n extends WebsocketClientBridge<TParams>\n implements BridgeModule<TParams>\n{\n httpServer?: HttpServer\n server?: Server\n\n get host() {\n return this.config.host\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n override async startHandler(): Promise<boolean> {\n if (this.host) {\n this.startServer()\n }\n return await super.startHandler()\n }\n\n override async stopHandler(): Promise<boolean> {\n if (this.host) {\n this.stopServer()\n }\n return await super.stopHandler()\n }\n\n private startServer() {\n if (this.httpServer) {\n throw new Error('Http Server already started')\n }\n if (this.server) {\n throw new Error('Socket Server already started')\n }\n const host = assertEx(this.host, () => 'No Host Configured')\n this.httpServer = createHttpServer()\n this.server = new Server(this.httpServer)\n\n this.server.on('connection', (socket: Socket) => {\n socket.on(BridgeCommands.join, async (address: Address) => {\n await socket.join(address)\n console.log(`User ${socket.id} has connected to module ${address}`)\n })\n\n socket.on(BridgeCommands.query, ({ address, query }: { address: Address; query: Payload[] }) => {\n socket.to(address).emit('message', query)\n })\n })\n this.httpServer.listen(host.port ?? DEFAULT_HOST_PORT)\n }\n\n private stopServer() {\n this.server?.close()\n this.server = undefined\n this.httpServer?.close()\n this.httpServer = undefined\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractBridge } from '@xyo-network/abstract-bridge'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { creatableModule, ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { Semaphore } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { WebsocketBridgeConfigSchema } from './Config'\nimport { WebsocketBridgeQuerySender } from './ModuleProxy'\nimport { WebsocketBridgeParams } from './Params'\nimport { WebsocketBridgeModuleResolver } from './WebsocketBridgeModuleResolver'\n\n@creatableModule()\nexport class WebsocketClientBridge<TParams extends WebsocketBridgeParams = WebsocketBridgeParams>\n extends AbstractBridge<TParams>\n implements BridgeModule<TParams>, WebsocketBridgeQuerySender\n{\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WebsocketBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WebsocketBridgeConfigSchema\n static defaultFailureRetryTime = 1000 * 60\n static defaultMaxConnections = 4\n static defaultMaxPayloadSizeWarning = 256 * 256\n static maxFailureCacheSize = 1000\n\n private _failureTimeCache = new LRUCache<Address, number>({ max: WebsocketClientBridge.maxFailureCacheSize })\n private _querySemaphore?: Semaphore\n\n private _resolver?: WebsocketBridgeModuleResolver\n\n get client() {\n return this.config.client\n }\n\n get failureRetryTime() {\n return this.client?.failureRetryTime ?? WebsocketClientBridge.defaultFailureRetryTime\n }\n\n get maxConnections() {\n return this.client?.maxConnections ?? WebsocketClientBridge.defaultMaxConnections\n }\n\n get maxPayloadSizeWarning() {\n return this.client?.maxPayloadSizeWarning ?? WebsocketClientBridge.defaultMaxPayloadSizeWarning\n }\n\n get querySemaphore() {\n this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections)\n return this._querySemaphore\n }\n\n override get resolver() {\n this._resolver =\n this._resolver ?? new WebsocketBridgeModuleResolver({ bridge: this, querySender: this, root: this, wrapperAccount: this.account })\n return this._resolver\n }\n\n get url() {\n return assertEx(this.config.client?.url, () => 'No Url Set')\n }\n\n override async discoverRoots(): Promise<ModuleInstance[]> {\n return await Promise.resolve([])\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n async sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n _query: TQuery,\n _payloads?: TIn[],\n ): Promise<ModuleQueryResult<TOut>> {\n const lastFailureTime = this._failureTimeCache.get(targetAddress)\n if (lastFailureTime !== undefined) {\n const now = Date.now()\n const timeSincePreviousFailure = now - lastFailureTime\n if (timeSincePreviousFailure > this.failureRetryTime) {\n throw new Error(`target module failed recently [${targetAddress}] [${timeSincePreviousFailure}ms ago]`)\n }\n this._failureTimeCache.delete(targetAddress)\n }\n try {\n await this.querySemaphore.acquire()\n throw new Error('Unsupported')\n } catch (ex) {\n const error = ex as Error\n throw error\n } finally {\n this.querySemaphore.release()\n }\n }\n\n override async startHandler(): Promise<boolean> {\n const { discoverRoot = true } = this.config\n if (discoverRoot) {\n await this.discoverRoots()\n }\n return true\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WebsocketBridgeConfigSchema = 'network.xyo.bridge.websocket.config'\nexport type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema\n\nexport type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n discoverRoot?: boolean\n schema: WebsocketBridgeConfigSchema\n } & TConfig,\n TSchema extends string ? TSchema : WebsocketBridgeConfigSchema,\n {\n failureRetryTime?: number\n failureTimeCacheMax?: number\n maxConnections?: number\n maxPayloadSizeWarning?: number\n url: string\n },\n {\n port?: number\n }\n>\n","import { assertEx } from '@xylabs/assert'\nimport { Address, isAddress } from '@xylabs/hex'\nimport { AbstractBridgeModuleResolver, BridgeModuleResolverParams, wrapModuleWithType } from '@xyo-network/abstract-bridge'\nimport { Account } from '@xyo-network/account'\nimport { ConfigPayload, ConfigSchema } from '@xyo-network/config-payload-plugin'\nimport {\n asModuleInstance,\n ModuleConfig,\n ModuleConfigSchema,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ResolveHelper,\n} from '@xyo-network/module-model'\n\nimport { WebsocketBridgeQuerySender, WebsocketModuleProxy, WebsocketModuleProxyParams } from './ModuleProxy'\n\nexport interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolverParams {\n querySender: WebsocketBridgeQuerySender\n}\n\nexport class WebsocketBridgeModuleResolver<\n T extends WebsocketBridgeModuleResolverParams = WebsocketBridgeModuleResolverParams,\n> extends AbstractBridgeModuleResolver<T> {\n get querySender() {\n return this.params.querySender\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult) {\n return parentResult\n }\n if (id === '*') {\n return []\n }\n const idParts = id.split(':')\n const untransformedFirstPart = assertEx(idParts.shift(), () => `Invalid module identifier: ${id}`)\n const firstPart = await ResolveHelper.transformModuleIdentifier(untransformedFirstPart)\n const moduleAddress = firstPart as Address\n assertEx(isAddress(firstPart), () => `Invalid module address: ${firstPart}`)\n const remainderParts = idParts.join(':')\n const params: WebsocketModuleProxyParams = {\n account: Account.randomSync(),\n config: { schema: ModuleConfigSchema },\n host: this,\n moduleAddress,\n querySender: this.querySender,\n }\n\n this.logger?.debug(`creating HttpProxy [${moduleAddress}] ${id}`)\n\n const proxy = new WebsocketModuleProxy<T, WebsocketModuleProxyParams>(params)\n //calling state here to get the config\n if (proxy) {\n const state = await proxy.state()\n if (state) {\n const configSchema = (state.find((payload) => payload.schema === ConfigSchema) as ConfigPayload | undefined)?.config\n const config = assertEx(\n state.find((payload) => payload.schema === configSchema),\n () => 'Unable to locate config',\n ) as ModuleConfig\n proxy.setConfig(config)\n }\n }\n\n await proxy.start()\n\n const wrapped = assertEx(wrapModuleWithType(proxy, Account.randomSync()) as unknown as T, () => `Failed to wrapModuleWithType [${id}]`)\n const instance = assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n proxy.upResolver.add(instance)\n proxy.downResolver.add(instance)\n\n if (remainderParts.length > 0) {\n const result = await wrapped.resolve<T>(remainderParts, options)\n return result\n }\n\n //console.log(`resolved: ${proxy.address} [${wrapped.constructor.name}] [${as.constructor.name}]`)\n return instance\n }\n}\n","import { Address } from '@xylabs/hex'\nimport { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/abstract-bridge'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport interface WebsocketBridgeQuerySender {\n sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n query: TQuery,\n payloads?: TIn[],\n ) => Promise<ModuleQueryResult<TOut>>\n}\n\nexport type WebsocketModuleProxyParams = ModuleProxyParams & {\n querySender: WebsocketBridgeQuerySender\n}\n\nexport class WebsocketModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends Omit<WebsocketModuleProxyParams, 'config'> & { config: TWrappedModule['config'] } = Omit<WebsocketModuleProxyParams, 'config'> & {\n config: TWrappedModule['config']\n },\n >\n extends AbstractModuleProxy<TWrappedModule, TParams>\n implements ModuleInstance<TParams, TWrappedModule['eventData']>\n{\n static createCount = 0\n\n constructor(params: TParams) {\n WebsocketModuleProxy.createCount = WebsocketModuleProxy.createCount + 1\n if (Math.floor(WebsocketModuleProxy.createCount / 10) === WebsocketModuleProxy.createCount / 10) {\n console.log(`WebsocketModuleProxy.createCount: ${WebsocketModuleProxy.createCount}`)\n }\n super(params)\n }\n\n async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n return await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads)\n }\n}\n"],"mappings":"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","names":["import_assert","import_module_model","import_assert","import_abstract_bridge","import_module_model","WebsocketBridgeConfigSchema","import_abstract_bridge","WebsocketModuleProxy","AbstractModuleProxy","createCount","constructor","params","Math","floor","console","log","proxyQueryHandler","query","payloads","querySender","sendBridgeQuery","moduleAddress","WebsocketBridgeModuleResolver","AbstractBridgeModuleResolver","querySender","params","resolveHandler","id","options","parentResult","idParts","split","untransformedFirstPart","assertEx","shift","firstPart","ResolveHelper","transformModuleIdentifier","moduleAddress","isAddress","remainderParts","join","account","Account","randomSync","config","schema","ModuleConfigSchema","host","logger","debug","proxy","WebsocketModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","instance","asModuleInstance","upResolver","add","downResolver","length","result","resolve","WebsocketClientBridge","AbstractBridge","configSchemas","WebsocketBridgeConfigSchema","defaultConfigSchema","defaultFailureRetryTime","defaultMaxConnections","defaultMaxPayloadSizeWarning","maxFailureCacheSize","_failureTimeCache","LRUCache","max","_querySemaphore","_resolver","client","config","failureRetryTime","maxConnections","maxPayloadSizeWarning","querySemaphore","Semaphore","resolver","WebsocketBridgeModuleResolver","bridge","querySender","root","wrapperAccount","account","url","assertEx","discoverRoots","Promise","resolve","exposeHandler","_id","_options","Error","exposedHandler","sendBridgeQuery","targetAddress","_query","_payloads","lastFailureTime","get","undefined","now","Date","timeSincePreviousFailure","delete","acquire","ex","error","release","startHandler","discoverRoot","unexposeHandler","creatableModule","BridgeCommands","join","query","DEFAULT_HOST_PORT","WebsocketBridge","WebsocketClientBridge","httpServer","server","host","config","exposeHandler","_id","_options","Error","exposedHandler","startHandler","startServer","stopHandler","stopServer","assertEx","createHttpServer","Server","on","socket","address","console","log","id","to","emit","listen","port","close","undefined","creatableModule"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Bridge.ts","../../src/ClientBridge.ts","../../src/Config.ts","../../src/WebsocketBridgeModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["export * from './Bridge'\nexport * from './Config'\n","import { createServer as createHttpServer, Server as HttpServer } from 'node:http'\n\nimport { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { BridgeExposeOptions, BridgeModule } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Server, Socket } from 'socket.io'\n\nimport { WebsocketClientBridge } from './ClientBridge'\nimport { WebsocketBridgeConfig } from './Config'\nimport { WebsocketBridgeParams } from './Params'\n\nexport const BridgeCommands = {\n join: 'join',\n query: 'query',\n}\n\nconst DEFAULT_HOST_PORT = 8080\n\n@creatableModule()\nexport class WebsocketBridge<\n TParams extends WebsocketBridgeParams<AnyConfigSchema<WebsocketBridgeConfig>> = WebsocketBridgeParams<WebsocketBridgeConfig>,\n >\n extends WebsocketClientBridge<TParams>\n implements BridgeModule<TParams>\n{\n httpServer?: HttpServer\n server?: Server\n\n get host() {\n return this.config.host\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n override async startHandler(): Promise<boolean> {\n if (this.host) {\n this.startServer()\n }\n return await super.startHandler()\n }\n\n override async stopHandler(): Promise<boolean> {\n if (this.host) {\n this.stopServer()\n }\n return await super.stopHandler()\n }\n\n private startServer() {\n if (this.httpServer) {\n throw new Error('Http Server already started')\n }\n if (this.server) {\n throw new Error('Socket Server already started')\n }\n const host = assertEx(this.host, () => 'No Host Configured')\n this.httpServer = createHttpServer()\n this.server = new Server(this.httpServer)\n\n this.server.on('connection', (socket: Socket) => {\n socket.on(BridgeCommands.join, async (address: Address) => {\n await socket.join(address)\n console.log(`User ${socket.id} has connected to module ${address}`)\n })\n\n socket.on(BridgeCommands.query, ({ address, query }: { address: Address; query: Payload[] }) => {\n socket.to(address).emit('message', query)\n })\n })\n this.httpServer.listen(host.port ?? DEFAULT_HOST_PORT)\n }\n\n private stopServer() {\n this.server?.close()\n this.server = undefined\n this.httpServer?.close()\n this.httpServer = undefined\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractBridge } from '@xyo-network/abstract-bridge'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { creatableModule, ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { Semaphore } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { WebsocketBridgeConfigSchema } from './Config'\nimport { WebsocketBridgeQuerySender } from './ModuleProxy'\nimport { WebsocketBridgeParams } from './Params'\nimport { WebsocketBridgeModuleResolver } from './WebsocketBridgeModuleResolver'\n\n@creatableModule()\nexport class WebsocketClientBridge<TParams extends WebsocketBridgeParams = WebsocketBridgeParams>\n extends AbstractBridge<TParams>\n implements BridgeModule<TParams>, WebsocketBridgeQuerySender\n{\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WebsocketBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WebsocketBridgeConfigSchema\n static defaultFailureRetryTime = 1000 * 60\n static defaultMaxConnections = 4\n static defaultMaxPayloadSizeWarning = 256 * 256\n static maxFailureCacheSize = 1000\n\n private _failureTimeCache = new LRUCache<Address, number>({ max: WebsocketClientBridge.maxFailureCacheSize })\n private _querySemaphore?: Semaphore\n\n private _resolver?: WebsocketBridgeModuleResolver\n\n get client() {\n return this.config.client\n }\n\n get failureRetryTime() {\n return this.client?.failureRetryTime ?? WebsocketClientBridge.defaultFailureRetryTime\n }\n\n get maxConnections() {\n return this.client?.maxConnections ?? WebsocketClientBridge.defaultMaxConnections\n }\n\n get maxPayloadSizeWarning() {\n return this.client?.maxPayloadSizeWarning ?? WebsocketClientBridge.defaultMaxPayloadSizeWarning\n }\n\n get querySemaphore() {\n this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections)\n return this._querySemaphore\n }\n\n override get resolver() {\n this._resolver =\n this._resolver ?? new WebsocketBridgeModuleResolver({ bridge: this, querySender: this, root: this, wrapperAccount: this.account })\n return this._resolver\n }\n\n get url() {\n return assertEx(this.config.client?.url, () => 'No Url Set')\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n async getRoots(): Promise<ModuleInstance[]> {\n return await Promise.resolve([])\n }\n\n async sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n _query: TQuery,\n _payloads?: TIn[],\n ): Promise<ModuleQueryResult<TOut>> {\n const lastFailureTime = this._failureTimeCache.get(targetAddress)\n if (lastFailureTime !== undefined) {\n const now = Date.now()\n const timeSincePreviousFailure = now - lastFailureTime\n if (timeSincePreviousFailure > this.failureRetryTime) {\n throw new Error(`target module failed recently [${targetAddress}] [${timeSincePreviousFailure}ms ago]`)\n }\n this._failureTimeCache.delete(targetAddress)\n }\n try {\n await this.querySemaphore.acquire()\n throw new Error('Unsupported')\n } catch (ex) {\n const error = ex as Error\n throw error\n } finally {\n this.querySemaphore.release()\n }\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WebsocketBridgeConfigSchema = 'network.xyo.bridge.websocket.config'\nexport type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema\n\nexport type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n schema: WebsocketBridgeConfigSchema\n } & TConfig,\n TSchema extends string ? TSchema : WebsocketBridgeConfigSchema,\n {\n failureRetryTime?: number\n failureTimeCacheMax?: number\n maxConnections?: number\n maxPayloadSizeWarning?: number\n url: string\n },\n {\n port?: number\n }\n>\n","import { assertEx } from '@xylabs/assert'\nimport { Address, isAddress } from '@xylabs/hex'\nimport { AbstractBridgeModuleResolver, BridgeModuleResolverParams, wrapModuleWithType } from '@xyo-network/abstract-bridge'\nimport { Account } from '@xyo-network/account'\nimport { ConfigPayload, ConfigSchema } from '@xyo-network/config-payload-plugin'\nimport {\n asModuleInstance,\n ModuleConfig,\n ModuleConfigSchema,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ResolveHelper,\n} from '@xyo-network/module-model'\n\nimport { WebsocketBridgeQuerySender, WebsocketModuleProxy, WebsocketModuleProxyParams } from './ModuleProxy'\n\nexport interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolverParams {\n querySender: WebsocketBridgeQuerySender\n}\n\nexport class WebsocketBridgeModuleResolver<\n T extends WebsocketBridgeModuleResolverParams = WebsocketBridgeModuleResolverParams,\n> extends AbstractBridgeModuleResolver<T> {\n get querySender() {\n return this.params.querySender\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult) {\n return parentResult\n }\n if (id === '*') {\n return []\n }\n const idParts = id.split(':')\n const untransformedFirstPart = assertEx(idParts.shift(), () => `Invalid module identifier: ${id}`)\n const firstPart = await ResolveHelper.transformModuleIdentifier(untransformedFirstPart)\n const moduleAddress = firstPart as Address\n assertEx(isAddress(firstPart), () => `Invalid module address: ${firstPart}`)\n const remainderParts = idParts.join(':')\n const params: WebsocketModuleProxyParams = {\n account: Account.randomSync(),\n config: { schema: ModuleConfigSchema },\n host: this,\n moduleAddress,\n querySender: this.querySender,\n }\n\n this.logger?.debug(`creating HttpProxy [${moduleAddress}] ${id}`)\n\n const proxy = new WebsocketModuleProxy<T, WebsocketModuleProxyParams>(params)\n //calling state here to get the config\n if (proxy) {\n const state = await proxy.state()\n if (state) {\n const configSchema = (state.find((payload) => payload.schema === ConfigSchema) as ConfigPayload | undefined)?.config\n const config = assertEx(\n state.find((payload) => payload.schema === configSchema),\n () => 'Unable to locate config',\n ) as ModuleConfig\n proxy.setConfig(config)\n }\n }\n\n await proxy.start()\n\n const wrapped = assertEx(wrapModuleWithType(proxy, Account.randomSync()) as unknown as T, () => `Failed to wrapModuleWithType [${id}]`)\n const instance = assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n proxy.upResolver.add(instance)\n proxy.downResolver.add(instance)\n\n if (remainderParts.length > 0) {\n const result = await wrapped.resolve<T>(remainderParts, options)\n return result ? [result] : []\n }\n\n //console.log(`resolved: ${proxy.address} [${wrapped.constructor.name}] [${as.constructor.name}]`)\n return [instance]\n }\n}\n","import { Address } from '@xylabs/hex'\nimport { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/abstract-bridge'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport interface WebsocketBridgeQuerySender {\n sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n query: TQuery,\n payloads?: TIn[],\n ) => Promise<ModuleQueryResult<TOut>>\n}\n\nexport type WebsocketModuleProxyParams = ModuleProxyParams & {\n querySender: WebsocketBridgeQuerySender\n}\n\nexport class WebsocketModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends Omit<WebsocketModuleProxyParams, 'config'> & { config: TWrappedModule['config'] } = Omit<WebsocketModuleProxyParams, 'config'> & {\n config: TWrappedModule['config']\n },\n >\n extends AbstractModuleProxy<TWrappedModule, TParams>\n implements ModuleInstance<TParams, TWrappedModule['eventData']>\n{\n static createCount = 0\n\n constructor(params: TParams) {\n WebsocketModuleProxy.createCount = WebsocketModuleProxy.createCount + 1\n if (Math.floor(WebsocketModuleProxy.createCount / 10) === WebsocketModuleProxy.createCount / 10) {\n console.log(`WebsocketModuleProxy.createCount: ${WebsocketModuleProxy.createCount}`)\n }\n super(params)\n }\n\n async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n return await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;ACAA,uBAAuE;AAEvE,IAAAA,iBAAyB;AAIzB,IAAAC,uBAAiE;AAEjE,oBAA+B;;;ACR/B,IAAAC,iBAAyB;AAIzB,IAAAC,0BAA+B;AAG/B,IAAAC,uBAAmE;AAEnE,yBAA0B;AAC1B,uBAAyB;;;ACPlB,IAAMC,8BAA8B;;;ACH3C,oBAAyB;AACzB,iBAAmC;AACnC,IAAAC,0BAA6F;AAC7F,qBAAwB;AACxB,mCAA4C;AAC5C,0BAQO;;;ACZP,6BAAuD;AAiBhD,IAAMC,uBAAN,MAAMA,8BAMHC,2CAAAA;EAvBV,OAuBUA;;;EAGR,OAAOC,cAAc;EAErBC,YAAYC,QAAiB;AAC3BJ,0BAAqBE,cAAcF,sBAAqBE,cAAc;AACtE,QAAIG,KAAKC,MAAMN,sBAAqBE,cAAc,EAAA,MAAQF,sBAAqBE,cAAc,IAAI;AAC/FK,cAAQC,IAAI,qCAAqCR,sBAAqBE,WAAW,EAAE;IACrF;AACA,UAAME,MAAAA;EACR;EAEA,MAAMK,kBAAmEC,OAAUC,WAAsB,CAAA,GAAgC;AACvI,WAAO,MAAM,KAAKP,OAAOQ,YAAYC,gBAAgB,KAAKT,OAAOU,eAAeJ,OAAOC,QAAAA;EACzF;AACF;;;ADnBO,IAAMI,gCAAN,cAEGC,qDAAAA;EAvBV,OAuBUA;;;EACR,IAAIC,cAAc;AAChB,WAAO,KAAKC,OAAOD;EACrB;EAEA,MAAeE,eAA0DC,IAAsBC,SAAgD;AAC7I,UAAMC,eAAe,MAAM,MAAMH,eAAeC,IAAIC,OAAAA;AACpD,QAAIC,cAAc;AAChB,aAAOA;IACT;AACA,QAAIF,OAAO,KAAK;AACd,aAAO,CAAA;IACT;AACA,UAAMG,UAAUH,GAAGI,MAAM,GAAA;AACzB,UAAMC,6BAAyBC,wBAASH,QAAQI,MAAK,GAAI,MAAM,8BAA8BP,EAAAA,EAAI;AACjG,UAAMQ,YAAY,MAAMC,kCAAcC,0BAA0BL,sBAAAA;AAChE,UAAMM,gBAAgBH;AACtBF,oCAASM,sBAAUJ,SAAAA,GAAY,MAAM,2BAA2BA,SAAAA,EAAW;AAC3E,UAAMK,iBAAiBV,QAAQW,KAAK,GAAA;AACpC,UAAMhB,SAAqC;MACzCiB,SAASC,uBAAQC,WAAU;MAC3BC,QAAQ;QAAEC,QAAQC;MAAmB;MACrCC,MAAM;MACNV;MACAd,aAAa,KAAKA;IACpB;AAEA,SAAKyB,QAAQC,MAAM,uBAAuBZ,aAAAA,KAAkBX,EAAAA,EAAI;AAEhE,UAAMwB,QAAQ,IAAIC,qBAAoD3B,MAAAA;AAEtE,QAAI0B,OAAO;AACT,YAAME,QAAQ,MAAMF,MAAME,MAAK;AAC/B,UAAIA,OAAO;AACT,cAAMC,eAAgBD,MAAME,KAAK,CAACC,YAAYA,QAAQV,WAAWW,yCAAAA,GAA6CZ;AAC9G,cAAMA,aAASZ,wBACboB,MAAME,KAAK,CAACC,YAAYA,QAAQV,WAAWQ,YAAAA,GAC3C,MAAM,yBAAA;AAERH,cAAMO,UAAUb,MAAAA;MAClB;IACF;AAEA,UAAMM,MAAMQ,MAAK;AAEjB,UAAMC,cAAU3B,4BAAS4B,4CAAmBV,OAAOR,uBAAQC,WAAU,CAAA,GAAqB,MAAM,iCAAiCjB,EAAAA,GAAK;AACtI,UAAMmC,eAAW7B,4BAAS8B,sCAAoBH,SAAS,CAAC,CAAA,GAAI,MAAM,+BAA+BjC,EAAAA,GAAK;AACtGwB,UAAMa,WAAWC,IAAIH,QAAAA;AACrBX,UAAMe,aAAaD,IAAIH,QAAAA;AAEvB,QAAItB,eAAe2B,SAAS,GAAG;AAC7B,YAAMC,SAAS,MAAMR,QAAQS,QAAW7B,gBAAgBZ,OAAAA;AACxD,aAAOwC,SAAS;QAACA;UAAU,CAAA;IAC7B;AAGA,WAAO;MAACN;;EACV;AACF;;;;;;;;;;;;;;AF/DO,IAAMQ,wBAAN,MAAMA,+BACHC,uCAAAA;SAAAA;;;EAGR,OAAyBC,gBAA0B;OAAI,MAAMA;IAAeC;;EAC5E,OAAyBC,sBAA8BD;EACvD,OAAOE,0BAA0B,MAAO;EACxC,OAAOC,wBAAwB;EAC/B,OAAOC,+BAA+B,MAAM;EAC5C,OAAOC,sBAAsB;EAErBC,oBAAoB,IAAIC,0BAA0B;IAAEC,KAAKX,uBAAsBQ;EAAoB,CAAA;EACnGI;EAEAC;EAER,IAAIC,SAAS;AACX,WAAO,KAAKC,OAAOD;EACrB;EAEA,IAAIE,mBAAmB;AACrB,WAAO,KAAKF,QAAQE,oBAAoBhB,uBAAsBK;EAChE;EAEA,IAAIY,iBAAiB;AACnB,WAAO,KAAKH,QAAQG,kBAAkBjB,uBAAsBM;EAC9D;EAEA,IAAIY,wBAAwB;AAC1B,WAAO,KAAKJ,QAAQI,yBAAyBlB,uBAAsBO;EACrE;EAEA,IAAIY,iBAAiB;AACnB,SAAKP,kBAAkB,KAAKA,mBAAmB,IAAIQ,6BAAU,KAAKH,cAAc;AAChF,WAAO,KAAKL;EACd;EAEA,IAAaS,WAAW;AACtB,SAAKR,YACH,KAAKA,aAAa,IAAIS,8BAA8B;MAAEC,QAAQ;MAAMC,aAAa;MAAMC,MAAM;MAAMC,gBAAgB,KAAKC;IAAQ,CAAA;AAClI,WAAO,KAAKd;EACd;EAEA,IAAIe,MAAM;AACR,eAAOC,yBAAS,KAAKd,OAAOD,QAAQc,KAAK,MAAM,YAAA;EACjD;EAESE,cAAcC,KAAaC,UAA0E;AAC5G,UAAM,IAAIC,MAAM,aAAA;EAClB;EAESC,iBAAwC;AAC/C,UAAM,IAAID,MAAM,aAAA;EAClB;EAEA,MAAME,WAAsC;AAC1C,WAAO,MAAMC,QAAQC,QAAQ,CAAA,CAAE;EACjC;EAEA,MAAMC,gBACJC,eACAC,QACAC,WACkC;AAClC,UAAMC,kBAAkB,KAAKjC,kBAAkBkC,IAAIJ,aAAAA;AACnD,QAAIG,oBAAoBE,QAAW;AACjC,YAAMC,MAAMC,KAAKD,IAAG;AACpB,YAAME,2BAA2BF,MAAMH;AACvC,UAAIK,2BAA2B,KAAK/B,kBAAkB;AACpD,cAAM,IAAIiB,MAAM,kCAAkCM,aAAAA,MAAmBQ,wBAAAA,SAAiC;MACxG;AACA,WAAKtC,kBAAkBuC,OAAOT,aAAAA;IAChC;AACA,QAAI;AACF,YAAM,KAAKpB,eAAe8B,QAAO;AACjC,YAAM,IAAIhB,MAAM,aAAA;IAClB,SAASiB,IAAI;AACX,YAAMC,QAAQD;AACd,YAAMC;IACR,UAAA;AACE,WAAKhC,eAAeiC,QAAO;IAC7B;EACF;EAESC,gBAAgBtB,KAAaC,UAA4E;AAChH,UAAM,IAAIC,MAAM,aAAA;EAClB;AACF;AAvFajC,wBAAAA,aAAAA;MADZsD,sCAAAA;GACYtD,qBAAAA;;;;;;;;;;;;;;ADJN,IAAMuD,iBAAiB;EAC5BC,MAAM;EACNC,OAAO;AACT;AAEA,IAAMC,oBAAoB;AAGnB,IAAMC,kBAAN,cAGGC,sBAAAA;SAAAA;;;EAGRC;EACAC;EAEA,IAAIC,OAAO;AACT,WAAO,KAAKC,OAAOD;EACrB;EAESE,cAAcC,KAAaC,UAA0E;AAC5G,UAAM,IAAIC,MAAM,aAAA;EAClB;EAESC,iBAAwC;AAC/C,UAAM,IAAID,MAAM,aAAA;EAClB;EAEA,MAAeE,eAAiC;AAC9C,QAAI,KAAKP,MAAM;AACb,WAAKQ,YAAW;IAClB;AACA,WAAO,MAAM,MAAMD,aAAAA;EACrB;EAEA,MAAeE,cAAgC;AAC7C,QAAI,KAAKT,MAAM;AACb,WAAKU,WAAU;IACjB;AACA,WAAO,MAAM,MAAMD,YAAAA;EACrB;EAEQD,cAAc;AACpB,QAAI,KAAKV,YAAY;AACnB,YAAM,IAAIO,MAAM,6BAAA;IAClB;AACA,QAAI,KAAKN,QAAQ;AACf,YAAM,IAAIM,MAAM,+BAAA;IAClB;AACA,UAAML,WAAOW,yBAAS,KAAKX,MAAM,MAAM,oBAAA;AACvC,SAAKF,iBAAac,iBAAAA,cAAAA;AAClB,SAAKb,SAAS,IAAIc,qBAAO,KAAKf,UAAU;AAExC,SAAKC,OAAOe,GAAG,cAAc,CAACC,WAAAA;AAC5BA,aAAOD,GAAGtB,eAAeC,MAAM,OAAOuB,YAAAA;AACpC,cAAMD,OAAOtB,KAAKuB,OAAAA;AAClBC,gBAAQC,IAAI,QAAQH,OAAOI,EAAE,4BAA4BH,OAAAA,EAAS;MACpE,CAAA;AAEAD,aAAOD,GAAGtB,eAAeE,OAAO,CAAC,EAAEsB,SAAStB,MAAK,MAA0C;AACzFqB,eAAOK,GAAGJ,OAAAA,EAASK,KAAK,WAAW3B,KAAAA;MACrC,CAAA;IACF,CAAA;AACA,SAAKI,WAAWwB,OAAOtB,KAAKuB,QAAQ5B,iBAAAA;EACtC;EAEQe,aAAa;AACnB,SAAKX,QAAQyB,MAAAA;AACb,SAAKzB,SAAS0B;AACd,SAAK3B,YAAY0B,MAAAA;AACjB,SAAK1B,aAAa2B;EACpB;AACF;AAjEa7B,kBAAAA,cAAAA;MADZ8B,sCAAAA;GACY9B,eAAAA;","names":["import_assert","import_module_model","import_assert","import_abstract_bridge","import_module_model","WebsocketBridgeConfigSchema","import_abstract_bridge","WebsocketModuleProxy","AbstractModuleProxy","createCount","constructor","params","Math","floor","console","log","proxyQueryHandler","query","payloads","querySender","sendBridgeQuery","moduleAddress","WebsocketBridgeModuleResolver","AbstractBridgeModuleResolver","querySender","params","resolveHandler","id","options","parentResult","idParts","split","untransformedFirstPart","assertEx","shift","firstPart","ResolveHelper","transformModuleIdentifier","moduleAddress","isAddress","remainderParts","join","account","Account","randomSync","config","schema","ModuleConfigSchema","host","logger","debug","proxy","WebsocketModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","instance","asModuleInstance","upResolver","add","downResolver","length","result","resolve","WebsocketClientBridge","AbstractBridge","configSchemas","WebsocketBridgeConfigSchema","defaultConfigSchema","defaultFailureRetryTime","defaultMaxConnections","defaultMaxPayloadSizeWarning","maxFailureCacheSize","_failureTimeCache","LRUCache","max","_querySemaphore","_resolver","client","config","failureRetryTime","maxConnections","maxPayloadSizeWarning","querySemaphore","Semaphore","resolver","WebsocketBridgeModuleResolver","bridge","querySender","root","wrapperAccount","account","url","assertEx","exposeHandler","_id","_options","Error","exposedHandler","getRoots","Promise","resolve","sendBridgeQuery","targetAddress","_query","_payloads","lastFailureTime","get","undefined","now","Date","timeSincePreviousFailure","delete","acquire","ex","error","release","unexposeHandler","creatableModule","BridgeCommands","join","query","DEFAULT_HOST_PORT","WebsocketBridge","WebsocketClientBridge","httpServer","server","host","config","exposeHandler","_id","_options","Error","exposedHandler","startHandler","startServer","stopHandler","stopServer","assertEx","createHttpServer","Server","on","socket","address","console","log","id","to","emit","listen","port","close","undefined","creatableModule"]}
@@ -92,9 +92,13 @@ var WebsocketBridgeModuleResolver = class extends AbstractBridgeModuleResolver {
92
92
  proxy.downResolver.add(instance);
93
93
  if (remainderParts.length > 0) {
94
94
  const result = await wrapped.resolve(remainderParts, options);
95
- return result;
95
+ return result ? [
96
+ result
97
+ ] : [];
96
98
  }
97
- return instance;
99
+ return [
100
+ instance
101
+ ];
98
102
  }
99
103
  };
100
104
 
@@ -156,15 +160,15 @@ var WebsocketClientBridge = class _WebsocketClientBridge extends AbstractBridge
156
160
  get url() {
157
161
  return assertEx2(this.config.client?.url, () => "No Url Set");
158
162
  }
159
- async discoverRoots() {
160
- return await Promise.resolve([]);
161
- }
162
163
  exposeHandler(_id, _options) {
163
164
  throw new Error("Unsupported");
164
165
  }
165
166
  exposedHandler() {
166
167
  throw new Error("Unsupported");
167
168
  }
169
+ async getRoots() {
170
+ return await Promise.resolve([]);
171
+ }
168
172
  async sendBridgeQuery(targetAddress, _query, _payloads) {
169
173
  const lastFailureTime = this._failureTimeCache.get(targetAddress);
170
174
  if (lastFailureTime !== void 0) {
@@ -185,13 +189,6 @@ var WebsocketClientBridge = class _WebsocketClientBridge extends AbstractBridge
185
189
  this.querySemaphore.release();
186
190
  }
187
191
  }
188
- async startHandler() {
189
- const { discoverRoot = true } = this.config;
190
- if (discoverRoot) {
191
- await this.discoverRoots();
192
- }
193
- return true;
194
- }
195
192
  unexposeHandler(_id, _options) {
196
193
  throw new Error("Unsupported");
197
194
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Bridge.ts","../../src/ClientBridge.ts","../../src/Config.ts","../../src/WebsocketBridgeModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["import { createServer as createHttpServer, Server as HttpServer } from 'node:http'\n\nimport { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { BridgeExposeOptions, BridgeModule } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Server, Socket } from 'socket.io'\n\nimport { WebsocketClientBridge } from './ClientBridge'\nimport { WebsocketBridgeConfig } from './Config'\nimport { WebsocketBridgeParams } from './Params'\n\nexport const BridgeCommands = {\n join: 'join',\n query: 'query',\n}\n\nconst DEFAULT_HOST_PORT = 8080\n\n@creatableModule()\nexport class WebsocketBridge<\n TParams extends WebsocketBridgeParams<AnyConfigSchema<WebsocketBridgeConfig>> = WebsocketBridgeParams<WebsocketBridgeConfig>,\n >\n extends WebsocketClientBridge<TParams>\n implements BridgeModule<TParams>\n{\n httpServer?: HttpServer\n server?: Server\n\n get host() {\n return this.config.host\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n override async startHandler(): Promise<boolean> {\n if (this.host) {\n this.startServer()\n }\n return await super.startHandler()\n }\n\n override async stopHandler(): Promise<boolean> {\n if (this.host) {\n this.stopServer()\n }\n return await super.stopHandler()\n }\n\n private startServer() {\n if (this.httpServer) {\n throw new Error('Http Server already started')\n }\n if (this.server) {\n throw new Error('Socket Server already started')\n }\n const host = assertEx(this.host, () => 'No Host Configured')\n this.httpServer = createHttpServer()\n this.server = new Server(this.httpServer)\n\n this.server.on('connection', (socket: Socket) => {\n socket.on(BridgeCommands.join, async (address: Address) => {\n await socket.join(address)\n console.log(`User ${socket.id} has connected to module ${address}`)\n })\n\n socket.on(BridgeCommands.query, ({ address, query }: { address: Address; query: Payload[] }) => {\n socket.to(address).emit('message', query)\n })\n })\n this.httpServer.listen(host.port ?? DEFAULT_HOST_PORT)\n }\n\n private stopServer() {\n this.server?.close()\n this.server = undefined\n this.httpServer?.close()\n this.httpServer = undefined\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractBridge } from '@xyo-network/abstract-bridge'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { creatableModule, ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { Semaphore } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { WebsocketBridgeConfigSchema } from './Config'\nimport { WebsocketBridgeQuerySender } from './ModuleProxy'\nimport { WebsocketBridgeParams } from './Params'\nimport { WebsocketBridgeModuleResolver } from './WebsocketBridgeModuleResolver'\n\n@creatableModule()\nexport class WebsocketClientBridge<TParams extends WebsocketBridgeParams = WebsocketBridgeParams>\n extends AbstractBridge<TParams>\n implements BridgeModule<TParams>, WebsocketBridgeQuerySender\n{\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WebsocketBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WebsocketBridgeConfigSchema\n static defaultFailureRetryTime = 1000 * 60\n static defaultMaxConnections = 4\n static defaultMaxPayloadSizeWarning = 256 * 256\n static maxFailureCacheSize = 1000\n\n private _failureTimeCache = new LRUCache<Address, number>({ max: WebsocketClientBridge.maxFailureCacheSize })\n private _querySemaphore?: Semaphore\n\n private _resolver?: WebsocketBridgeModuleResolver\n\n get client() {\n return this.config.client\n }\n\n get failureRetryTime() {\n return this.client?.failureRetryTime ?? WebsocketClientBridge.defaultFailureRetryTime\n }\n\n get maxConnections() {\n return this.client?.maxConnections ?? WebsocketClientBridge.defaultMaxConnections\n }\n\n get maxPayloadSizeWarning() {\n return this.client?.maxPayloadSizeWarning ?? WebsocketClientBridge.defaultMaxPayloadSizeWarning\n }\n\n get querySemaphore() {\n this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections)\n return this._querySemaphore\n }\n\n override get resolver() {\n this._resolver =\n this._resolver ?? new WebsocketBridgeModuleResolver({ bridge: this, querySender: this, root: this, wrapperAccount: this.account })\n return this._resolver\n }\n\n get url() {\n return assertEx(this.config.client?.url, () => 'No Url Set')\n }\n\n override async discoverRoots(): Promise<ModuleInstance[]> {\n return await Promise.resolve([])\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n async sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n _query: TQuery,\n _payloads?: TIn[],\n ): Promise<ModuleQueryResult<TOut>> {\n const lastFailureTime = this._failureTimeCache.get(targetAddress)\n if (lastFailureTime !== undefined) {\n const now = Date.now()\n const timeSincePreviousFailure = now - lastFailureTime\n if (timeSincePreviousFailure > this.failureRetryTime) {\n throw new Error(`target module failed recently [${targetAddress}] [${timeSincePreviousFailure}ms ago]`)\n }\n this._failureTimeCache.delete(targetAddress)\n }\n try {\n await this.querySemaphore.acquire()\n throw new Error('Unsupported')\n } catch (ex) {\n const error = ex as Error\n throw error\n } finally {\n this.querySemaphore.release()\n }\n }\n\n override async startHandler(): Promise<boolean> {\n const { discoverRoot = true } = this.config\n if (discoverRoot) {\n await this.discoverRoots()\n }\n return true\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WebsocketBridgeConfigSchema = 'network.xyo.bridge.websocket.config'\nexport type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema\n\nexport type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n discoverRoot?: boolean\n schema: WebsocketBridgeConfigSchema\n } & TConfig,\n TSchema extends string ? TSchema : WebsocketBridgeConfigSchema,\n {\n failureRetryTime?: number\n failureTimeCacheMax?: number\n maxConnections?: number\n maxPayloadSizeWarning?: number\n url: string\n },\n {\n port?: number\n }\n>\n","import { assertEx } from '@xylabs/assert'\nimport { Address, isAddress } from '@xylabs/hex'\nimport { AbstractBridgeModuleResolver, BridgeModuleResolverParams, wrapModuleWithType } from '@xyo-network/abstract-bridge'\nimport { Account } from '@xyo-network/account'\nimport { ConfigPayload, ConfigSchema } from '@xyo-network/config-payload-plugin'\nimport {\n asModuleInstance,\n ModuleConfig,\n ModuleConfigSchema,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ResolveHelper,\n} from '@xyo-network/module-model'\n\nimport { WebsocketBridgeQuerySender, WebsocketModuleProxy, WebsocketModuleProxyParams } from './ModuleProxy'\n\nexport interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolverParams {\n querySender: WebsocketBridgeQuerySender\n}\n\nexport class WebsocketBridgeModuleResolver<\n T extends WebsocketBridgeModuleResolverParams = WebsocketBridgeModuleResolverParams,\n> extends AbstractBridgeModuleResolver<T> {\n get querySender() {\n return this.params.querySender\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult) {\n return parentResult\n }\n if (id === '*') {\n return []\n }\n const idParts = id.split(':')\n const untransformedFirstPart = assertEx(idParts.shift(), () => `Invalid module identifier: ${id}`)\n const firstPart = await ResolveHelper.transformModuleIdentifier(untransformedFirstPart)\n const moduleAddress = firstPart as Address\n assertEx(isAddress(firstPart), () => `Invalid module address: ${firstPart}`)\n const remainderParts = idParts.join(':')\n const params: WebsocketModuleProxyParams = {\n account: Account.randomSync(),\n config: { schema: ModuleConfigSchema },\n host: this,\n moduleAddress,\n querySender: this.querySender,\n }\n\n this.logger?.debug(`creating HttpProxy [${moduleAddress}] ${id}`)\n\n const proxy = new WebsocketModuleProxy<T, WebsocketModuleProxyParams>(params)\n //calling state here to get the config\n if (proxy) {\n const state = await proxy.state()\n if (state) {\n const configSchema = (state.find((payload) => payload.schema === ConfigSchema) as ConfigPayload | undefined)?.config\n const config = assertEx(\n state.find((payload) => payload.schema === configSchema),\n () => 'Unable to locate config',\n ) as ModuleConfig\n proxy.setConfig(config)\n }\n }\n\n await proxy.start()\n\n const wrapped = assertEx(wrapModuleWithType(proxy, Account.randomSync()) as unknown as T, () => `Failed to wrapModuleWithType [${id}]`)\n const instance = assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n proxy.upResolver.add(instance)\n proxy.downResolver.add(instance)\n\n if (remainderParts.length > 0) {\n const result = await wrapped.resolve<T>(remainderParts, options)\n return result\n }\n\n //console.log(`resolved: ${proxy.address} [${wrapped.constructor.name}] [${as.constructor.name}]`)\n return instance\n }\n}\n","import { Address } from '@xylabs/hex'\nimport { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/abstract-bridge'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport interface WebsocketBridgeQuerySender {\n sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n query: TQuery,\n payloads?: TIn[],\n ) => Promise<ModuleQueryResult<TOut>>\n}\n\nexport type WebsocketModuleProxyParams = ModuleProxyParams & {\n querySender: WebsocketBridgeQuerySender\n}\n\nexport class WebsocketModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends Omit<WebsocketModuleProxyParams, 'config'> & { config: TWrappedModule['config'] } = Omit<WebsocketModuleProxyParams, 'config'> & {\n config: TWrappedModule['config']\n },\n >\n extends AbstractModuleProxy<TWrappedModule, TParams>\n implements ModuleInstance<TParams, TWrappedModule['eventData']>\n{\n static createCount = 0\n\n constructor(params: TParams) {\n WebsocketModuleProxy.createCount = WebsocketModuleProxy.createCount + 1\n if (Math.floor(WebsocketModuleProxy.createCount / 10) === WebsocketModuleProxy.createCount / 10) {\n console.log(`WebsocketModuleProxy.createCount: ${WebsocketModuleProxy.createCount}`)\n }\n super(params)\n }\n\n async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n return await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads)\n }\n}\n"],"mappings":"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","names":["createServer","createHttpServer","assertEx","creatableModule","Server","assertEx","AbstractBridge","creatableModule","Semaphore","LRUCache","WebsocketBridgeConfigSchema","assertEx","isAddress","AbstractBridgeModuleResolver","wrapModuleWithType","Account","ConfigSchema","asModuleInstance","ModuleConfigSchema","ResolveHelper","AbstractModuleProxy","WebsocketModuleProxy","AbstractModuleProxy","createCount","constructor","params","Math","floor","console","log","proxyQueryHandler","query","payloads","querySender","sendBridgeQuery","moduleAddress","WebsocketBridgeModuleResolver","AbstractBridgeModuleResolver","querySender","params","resolveHandler","id","options","parentResult","idParts","split","untransformedFirstPart","assertEx","shift","firstPart","ResolveHelper","transformModuleIdentifier","moduleAddress","isAddress","remainderParts","join","account","Account","randomSync","config","schema","ModuleConfigSchema","host","logger","debug","proxy","WebsocketModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","instance","asModuleInstance","upResolver","add","downResolver","length","result","resolve","WebsocketClientBridge","AbstractBridge","configSchemas","WebsocketBridgeConfigSchema","defaultConfigSchema","defaultFailureRetryTime","defaultMaxConnections","defaultMaxPayloadSizeWarning","maxFailureCacheSize","_failureTimeCache","LRUCache","max","_querySemaphore","_resolver","client","config","failureRetryTime","maxConnections","maxPayloadSizeWarning","querySemaphore","Semaphore","resolver","WebsocketBridgeModuleResolver","bridge","querySender","root","wrapperAccount","account","url","assertEx","discoverRoots","Promise","resolve","exposeHandler","_id","_options","Error","exposedHandler","sendBridgeQuery","targetAddress","_query","_payloads","lastFailureTime","get","undefined","now","Date","timeSincePreviousFailure","delete","acquire","ex","error","release","startHandler","discoverRoot","unexposeHandler","creatableModule","BridgeCommands","join","query","DEFAULT_HOST_PORT","WebsocketBridge","WebsocketClientBridge","httpServer","server","host","config","exposeHandler","_id","_options","Error","exposedHandler","startHandler","startServer","stopHandler","stopServer","assertEx","createHttpServer","Server","on","socket","address","console","log","id","to","emit","listen","port","close","undefined","creatableModule"]}
1
+ {"version":3,"sources":["../../src/Bridge.ts","../../src/ClientBridge.ts","../../src/Config.ts","../../src/WebsocketBridgeModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["import { createServer as createHttpServer, Server as HttpServer } from 'node:http'\n\nimport { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { BridgeExposeOptions, BridgeModule } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Server, Socket } from 'socket.io'\n\nimport { WebsocketClientBridge } from './ClientBridge'\nimport { WebsocketBridgeConfig } from './Config'\nimport { WebsocketBridgeParams } from './Params'\n\nexport const BridgeCommands = {\n join: 'join',\n query: 'query',\n}\n\nconst DEFAULT_HOST_PORT = 8080\n\n@creatableModule()\nexport class WebsocketBridge<\n TParams extends WebsocketBridgeParams<AnyConfigSchema<WebsocketBridgeConfig>> = WebsocketBridgeParams<WebsocketBridgeConfig>,\n >\n extends WebsocketClientBridge<TParams>\n implements BridgeModule<TParams>\n{\n httpServer?: HttpServer\n server?: Server\n\n get host() {\n return this.config.host\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n override async startHandler(): Promise<boolean> {\n if (this.host) {\n this.startServer()\n }\n return await super.startHandler()\n }\n\n override async stopHandler(): Promise<boolean> {\n if (this.host) {\n this.stopServer()\n }\n return await super.stopHandler()\n }\n\n private startServer() {\n if (this.httpServer) {\n throw new Error('Http Server already started')\n }\n if (this.server) {\n throw new Error('Socket Server already started')\n }\n const host = assertEx(this.host, () => 'No Host Configured')\n this.httpServer = createHttpServer()\n this.server = new Server(this.httpServer)\n\n this.server.on('connection', (socket: Socket) => {\n socket.on(BridgeCommands.join, async (address: Address) => {\n await socket.join(address)\n console.log(`User ${socket.id} has connected to module ${address}`)\n })\n\n socket.on(BridgeCommands.query, ({ address, query }: { address: Address; query: Payload[] }) => {\n socket.to(address).emit('message', query)\n })\n })\n this.httpServer.listen(host.port ?? DEFAULT_HOST_PORT)\n }\n\n private stopServer() {\n this.server?.close()\n this.server = undefined\n this.httpServer?.close()\n this.httpServer = undefined\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractBridge } from '@xyo-network/abstract-bridge'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { creatableModule, ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { Semaphore } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { WebsocketBridgeConfigSchema } from './Config'\nimport { WebsocketBridgeQuerySender } from './ModuleProxy'\nimport { WebsocketBridgeParams } from './Params'\nimport { WebsocketBridgeModuleResolver } from './WebsocketBridgeModuleResolver'\n\n@creatableModule()\nexport class WebsocketClientBridge<TParams extends WebsocketBridgeParams = WebsocketBridgeParams>\n extends AbstractBridge<TParams>\n implements BridgeModule<TParams>, WebsocketBridgeQuerySender\n{\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WebsocketBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WebsocketBridgeConfigSchema\n static defaultFailureRetryTime = 1000 * 60\n static defaultMaxConnections = 4\n static defaultMaxPayloadSizeWarning = 256 * 256\n static maxFailureCacheSize = 1000\n\n private _failureTimeCache = new LRUCache<Address, number>({ max: WebsocketClientBridge.maxFailureCacheSize })\n private _querySemaphore?: Semaphore\n\n private _resolver?: WebsocketBridgeModuleResolver\n\n get client() {\n return this.config.client\n }\n\n get failureRetryTime() {\n return this.client?.failureRetryTime ?? WebsocketClientBridge.defaultFailureRetryTime\n }\n\n get maxConnections() {\n return this.client?.maxConnections ?? WebsocketClientBridge.defaultMaxConnections\n }\n\n get maxPayloadSizeWarning() {\n return this.client?.maxPayloadSizeWarning ?? WebsocketClientBridge.defaultMaxPayloadSizeWarning\n }\n\n get querySemaphore() {\n this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections)\n return this._querySemaphore\n }\n\n override get resolver() {\n this._resolver =\n this._resolver ?? new WebsocketBridgeModuleResolver({ bridge: this, querySender: this, root: this, wrapperAccount: this.account })\n return this._resolver\n }\n\n get url() {\n return assertEx(this.config.client?.url, () => 'No Url Set')\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n async getRoots(): Promise<ModuleInstance[]> {\n return await Promise.resolve([])\n }\n\n async sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n _query: TQuery,\n _payloads?: TIn[],\n ): Promise<ModuleQueryResult<TOut>> {\n const lastFailureTime = this._failureTimeCache.get(targetAddress)\n if (lastFailureTime !== undefined) {\n const now = Date.now()\n const timeSincePreviousFailure = now - lastFailureTime\n if (timeSincePreviousFailure > this.failureRetryTime) {\n throw new Error(`target module failed recently [${targetAddress}] [${timeSincePreviousFailure}ms ago]`)\n }\n this._failureTimeCache.delete(targetAddress)\n }\n try {\n await this.querySemaphore.acquire()\n throw new Error('Unsupported')\n } catch (ex) {\n const error = ex as Error\n throw error\n } finally {\n this.querySemaphore.release()\n }\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WebsocketBridgeConfigSchema = 'network.xyo.bridge.websocket.config'\nexport type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema\n\nexport type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n schema: WebsocketBridgeConfigSchema\n } & TConfig,\n TSchema extends string ? TSchema : WebsocketBridgeConfigSchema,\n {\n failureRetryTime?: number\n failureTimeCacheMax?: number\n maxConnections?: number\n maxPayloadSizeWarning?: number\n url: string\n },\n {\n port?: number\n }\n>\n","import { assertEx } from '@xylabs/assert'\nimport { Address, isAddress } from '@xylabs/hex'\nimport { AbstractBridgeModuleResolver, BridgeModuleResolverParams, wrapModuleWithType } from '@xyo-network/abstract-bridge'\nimport { Account } from '@xyo-network/account'\nimport { ConfigPayload, ConfigSchema } from '@xyo-network/config-payload-plugin'\nimport {\n asModuleInstance,\n ModuleConfig,\n ModuleConfigSchema,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ResolveHelper,\n} from '@xyo-network/module-model'\n\nimport { WebsocketBridgeQuerySender, WebsocketModuleProxy, WebsocketModuleProxyParams } from './ModuleProxy'\n\nexport interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolverParams {\n querySender: WebsocketBridgeQuerySender\n}\n\nexport class WebsocketBridgeModuleResolver<\n T extends WebsocketBridgeModuleResolverParams = WebsocketBridgeModuleResolverParams,\n> extends AbstractBridgeModuleResolver<T> {\n get querySender() {\n return this.params.querySender\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult) {\n return parentResult\n }\n if (id === '*') {\n return []\n }\n const idParts = id.split(':')\n const untransformedFirstPart = assertEx(idParts.shift(), () => `Invalid module identifier: ${id}`)\n const firstPart = await ResolveHelper.transformModuleIdentifier(untransformedFirstPart)\n const moduleAddress = firstPart as Address\n assertEx(isAddress(firstPart), () => `Invalid module address: ${firstPart}`)\n const remainderParts = idParts.join(':')\n const params: WebsocketModuleProxyParams = {\n account: Account.randomSync(),\n config: { schema: ModuleConfigSchema },\n host: this,\n moduleAddress,\n querySender: this.querySender,\n }\n\n this.logger?.debug(`creating HttpProxy [${moduleAddress}] ${id}`)\n\n const proxy = new WebsocketModuleProxy<T, WebsocketModuleProxyParams>(params)\n //calling state here to get the config\n if (proxy) {\n const state = await proxy.state()\n if (state) {\n const configSchema = (state.find((payload) => payload.schema === ConfigSchema) as ConfigPayload | undefined)?.config\n const config = assertEx(\n state.find((payload) => payload.schema === configSchema),\n () => 'Unable to locate config',\n ) as ModuleConfig\n proxy.setConfig(config)\n }\n }\n\n await proxy.start()\n\n const wrapped = assertEx(wrapModuleWithType(proxy, Account.randomSync()) as unknown as T, () => `Failed to wrapModuleWithType [${id}]`)\n const instance = assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n proxy.upResolver.add(instance)\n proxy.downResolver.add(instance)\n\n if (remainderParts.length > 0) {\n const result = await wrapped.resolve<T>(remainderParts, options)\n return result ? [result] : []\n }\n\n //console.log(`resolved: ${proxy.address} [${wrapped.constructor.name}] [${as.constructor.name}]`)\n return [instance]\n }\n}\n","import { Address } from '@xylabs/hex'\nimport { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/abstract-bridge'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport interface WebsocketBridgeQuerySender {\n sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n query: TQuery,\n payloads?: TIn[],\n ) => Promise<ModuleQueryResult<TOut>>\n}\n\nexport type WebsocketModuleProxyParams = ModuleProxyParams & {\n querySender: WebsocketBridgeQuerySender\n}\n\nexport class WebsocketModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends Omit<WebsocketModuleProxyParams, 'config'> & { config: TWrappedModule['config'] } = Omit<WebsocketModuleProxyParams, 'config'> & {\n config: TWrappedModule['config']\n },\n >\n extends AbstractModuleProxy<TWrappedModule, TParams>\n implements ModuleInstance<TParams, TWrappedModule['eventData']>\n{\n static createCount = 0\n\n constructor(params: TParams) {\n WebsocketModuleProxy.createCount = WebsocketModuleProxy.createCount + 1\n if (Math.floor(WebsocketModuleProxy.createCount / 10) === WebsocketModuleProxy.createCount / 10) {\n console.log(`WebsocketModuleProxy.createCount: ${WebsocketModuleProxy.createCount}`)\n }\n super(params)\n }\n\n async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n return await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads)\n }\n}\n"],"mappings":"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","names":["createServer","createHttpServer","assertEx","creatableModule","Server","assertEx","AbstractBridge","creatableModule","Semaphore","LRUCache","WebsocketBridgeConfigSchema","assertEx","isAddress","AbstractBridgeModuleResolver","wrapModuleWithType","Account","ConfigSchema","asModuleInstance","ModuleConfigSchema","ResolveHelper","AbstractModuleProxy","WebsocketModuleProxy","AbstractModuleProxy","createCount","constructor","params","Math","floor","console","log","proxyQueryHandler","query","payloads","querySender","sendBridgeQuery","moduleAddress","WebsocketBridgeModuleResolver","AbstractBridgeModuleResolver","querySender","params","resolveHandler","id","options","parentResult","idParts","split","untransformedFirstPart","assertEx","shift","firstPart","ResolveHelper","transformModuleIdentifier","moduleAddress","isAddress","remainderParts","join","account","Account","randomSync","config","schema","ModuleConfigSchema","host","logger","debug","proxy","WebsocketModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","instance","asModuleInstance","upResolver","add","downResolver","length","result","resolve","WebsocketClientBridge","AbstractBridge","configSchemas","WebsocketBridgeConfigSchema","defaultConfigSchema","defaultFailureRetryTime","defaultMaxConnections","defaultMaxPayloadSizeWarning","maxFailureCacheSize","_failureTimeCache","LRUCache","max","_querySemaphore","_resolver","client","config","failureRetryTime","maxConnections","maxPayloadSizeWarning","querySemaphore","Semaphore","resolver","WebsocketBridgeModuleResolver","bridge","querySender","root","wrapperAccount","account","url","assertEx","exposeHandler","_id","_options","Error","exposedHandler","getRoots","Promise","resolve","sendBridgeQuery","targetAddress","_query","_payloads","lastFailureTime","get","undefined","now","Date","timeSincePreviousFailure","delete","acquire","ex","error","release","unexposeHandler","creatableModule","BridgeCommands","join","query","DEFAULT_HOST_PORT","WebsocketBridge","WebsocketClientBridge","httpServer","server","host","config","exposeHandler","_id","_options","Error","exposedHandler","startHandler","startServer","stopHandler","stopServer","assertEx","createHttpServer","Server","on","socket","address","console","log","id","to","emit","listen","port","close","undefined","creatableModule"]}
@@ -32,11 +32,10 @@ export declare class WebsocketClientBridge<TParams extends WebsocketBridgeParams
32
32
  get querySemaphore(): Semaphore;
33
33
  get resolver(): WebsocketBridgeModuleResolver<import("./WebsocketBridgeModuleResolver").WebsocketBridgeModuleResolverParams>;
34
34
  get url(): string;
35
- discoverRoots(): Promise<ModuleInstance[]>;
36
35
  exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]>;
37
36
  exposedHandler(): Promisable<Address[]>;
37
+ getRoots(): Promise<ModuleInstance[]>;
38
38
  sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(targetAddress: Address, _query: TQuery, _payloads?: TIn[]): Promise<ModuleQueryResult<TOut>>;
39
- startHandler(): Promise<boolean>;
40
39
  unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]>;
41
40
  }
42
41
  //# sourceMappingURL=ClientBridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClientBridge.d.ts","sourceRoot":"","sources":["../../src/ClientBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACpG,OAAO,EAAmB,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAIvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAE/E,qBACa,qBAAqB,CAAC,OAAO,SAAS,qBAAqB,GAAG,qBAAqB,CAC9F,SAAQ,cAAc,CAAC,OAAO,CAC9B,YAAW,YAAY,CAAC,OAAO,CAAC,EAAE,0BAA0B;IAE5D,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAwD;IACxG,gBAAyB,mBAAmB,EAAE,MAAM,CAA8B;IAClF,MAAM,CAAC,uBAAuB,SAAY;IAC1C,MAAM,CAAC,qBAAqB,SAAI;IAChC,MAAM,CAAC,4BAA4B,SAAY;IAC/C,MAAM,CAAC,mBAAmB,SAAO;IAEjC,OAAO,CAAC,iBAAiB,CAAoF;IAC7G,OAAO,CAAC,eAAe,CAAC,CAAW;IAEnC,OAAO,CAAC,SAAS,CAAC,CAA+B;IAEjD,IAAI,MAAM;;;;;;mBAET;IAED,IAAI,gBAAgB,WAEnB;IAED,IAAI,cAAc,WAEjB;IAED,IAAI,qBAAqB,WAExB;IAED,IAAI,cAAc,cAGjB;IAED,IAAa,QAAQ,iHAIpB;IAED,IAAI,GAAG,WAEN;IAEc,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIhD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAI1C,eAAe,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACvI,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,GAAG,EAAE,GAChB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAqBpB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAQtC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;CAGlH"}
1
+ {"version":3,"file":"ClientBridge.d.ts","sourceRoot":"","sources":["../../src/ClientBridge.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACpG,OAAO,EAAmB,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAIvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAE/E,qBACa,qBAAqB,CAAC,OAAO,SAAS,qBAAqB,GAAG,qBAAqB,CAC9F,SAAQ,cAAc,CAAC,OAAO,CAC9B,YAAW,YAAY,CAAC,OAAO,CAAC,EAAE,0BAA0B;IAE5D,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAwD;IACxG,gBAAyB,mBAAmB,EAAE,MAAM,CAA8B;IAClF,MAAM,CAAC,uBAAuB,SAAY;IAC1C,MAAM,CAAC,qBAAqB,SAAI;IAChC,MAAM,CAAC,4BAA4B,SAAY;IAC/C,MAAM,CAAC,mBAAmB,SAAO;IAEjC,OAAO,CAAC,iBAAiB,CAAoF;IAC7G,OAAO,CAAC,eAAe,CAAC,CAAW;IAEnC,OAAO,CAAC,SAAS,CAAC,CAA+B;IAEjD,IAAI,MAAM;;;;;;mBAET;IAED,IAAI,gBAAgB,WAEnB;IAED,IAAI,cAAc,WAEjB;IAED,IAAI,qBAAqB,WAExB;IAED,IAAI,cAAc,cAGjB;IAED,IAAa,QAAQ,iHAIpB;IAED,IAAI,GAAG,WAEN;IAEQ,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAI1C,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIrC,eAAe,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACvI,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,GAAG,EAAE,GAChB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAqB1B,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;CAGlH"}
@@ -32,11 +32,10 @@ export declare class WebsocketClientBridge<TParams extends WebsocketBridgeParams
32
32
  get querySemaphore(): Semaphore;
33
33
  get resolver(): WebsocketBridgeModuleResolver<import("./WebsocketBridgeModuleResolver").WebsocketBridgeModuleResolverParams>;
34
34
  get url(): string;
35
- discoverRoots(): Promise<ModuleInstance[]>;
36
35
  exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]>;
37
36
  exposedHandler(): Promisable<Address[]>;
37
+ getRoots(): Promise<ModuleInstance[]>;
38
38
  sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(targetAddress: Address, _query: TQuery, _payloads?: TIn[]): Promise<ModuleQueryResult<TOut>>;
39
- startHandler(): Promise<boolean>;
40
39
  unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]>;
41
40
  }
42
41
  //# sourceMappingURL=ClientBridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClientBridge.d.ts","sourceRoot":"","sources":["../../src/ClientBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACpG,OAAO,EAAmB,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAIvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAE/E,qBACa,qBAAqB,CAAC,OAAO,SAAS,qBAAqB,GAAG,qBAAqB,CAC9F,SAAQ,cAAc,CAAC,OAAO,CAC9B,YAAW,YAAY,CAAC,OAAO,CAAC,EAAE,0BAA0B;IAE5D,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAwD;IACxG,gBAAyB,mBAAmB,EAAE,MAAM,CAA8B;IAClF,MAAM,CAAC,uBAAuB,SAAY;IAC1C,MAAM,CAAC,qBAAqB,SAAI;IAChC,MAAM,CAAC,4BAA4B,SAAY;IAC/C,MAAM,CAAC,mBAAmB,SAAO;IAEjC,OAAO,CAAC,iBAAiB,CAAoF;IAC7G,OAAO,CAAC,eAAe,CAAC,CAAW;IAEnC,OAAO,CAAC,SAAS,CAAC,CAA+B;IAEjD,IAAI,MAAM;;;;;;mBAET;IAED,IAAI,gBAAgB,WAEnB;IAED,IAAI,cAAc,WAEjB;IAED,IAAI,qBAAqB,WAExB;IAED,IAAI,cAAc,cAGjB;IAED,IAAa,QAAQ,iHAIpB;IAED,IAAI,GAAG,WAEN;IAEc,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIhD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAI1C,eAAe,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACvI,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,GAAG,EAAE,GAChB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAqBpB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAQtC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;CAGlH"}
1
+ {"version":3,"file":"ClientBridge.d.ts","sourceRoot":"","sources":["../../src/ClientBridge.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACpG,OAAO,EAAmB,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAIvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAE/E,qBACa,qBAAqB,CAAC,OAAO,SAAS,qBAAqB,GAAG,qBAAqB,CAC9F,SAAQ,cAAc,CAAC,OAAO,CAC9B,YAAW,YAAY,CAAC,OAAO,CAAC,EAAE,0BAA0B;IAE5D,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAwD;IACxG,gBAAyB,mBAAmB,EAAE,MAAM,CAA8B;IAClF,MAAM,CAAC,uBAAuB,SAAY;IAC1C,MAAM,CAAC,qBAAqB,SAAI;IAChC,MAAM,CAAC,4BAA4B,SAAY;IAC/C,MAAM,CAAC,mBAAmB,SAAO;IAEjC,OAAO,CAAC,iBAAiB,CAAoF;IAC7G,OAAO,CAAC,eAAe,CAAC,CAAW;IAEnC,OAAO,CAAC,SAAS,CAAC,CAA+B;IAEjD,IAAI,MAAM;;;;;;mBAET;IAED,IAAI,gBAAgB,WAEnB;IAED,IAAI,cAAc,WAEjB;IAED,IAAI,qBAAqB,WAExB;IAED,IAAI,cAAc,cAGjB;IAED,IAAa,QAAQ,iHAIpB;IAED,IAAI,GAAG,WAEN;IAEQ,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAI1C,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIrC,eAAe,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACvI,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,GAAG,EAAE,GAChB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAqB1B,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;CAGlH"}
@@ -32,11 +32,10 @@ export declare class WebsocketClientBridge<TParams extends WebsocketBridgeParams
32
32
  get querySemaphore(): Semaphore;
33
33
  get resolver(): WebsocketBridgeModuleResolver<import("./WebsocketBridgeModuleResolver").WebsocketBridgeModuleResolverParams>;
34
34
  get url(): string;
35
- discoverRoots(): Promise<ModuleInstance[]>;
36
35
  exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]>;
37
36
  exposedHandler(): Promisable<Address[]>;
37
+ getRoots(): Promise<ModuleInstance[]>;
38
38
  sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(targetAddress: Address, _query: TQuery, _payloads?: TIn[]): Promise<ModuleQueryResult<TOut>>;
39
- startHandler(): Promise<boolean>;
40
39
  unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]>;
41
40
  }
42
41
  //# sourceMappingURL=ClientBridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClientBridge.d.ts","sourceRoot":"","sources":["../../src/ClientBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACpG,OAAO,EAAmB,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAIvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAE/E,qBACa,qBAAqB,CAAC,OAAO,SAAS,qBAAqB,GAAG,qBAAqB,CAC9F,SAAQ,cAAc,CAAC,OAAO,CAC9B,YAAW,YAAY,CAAC,OAAO,CAAC,EAAE,0BAA0B;IAE5D,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAwD;IACxG,gBAAyB,mBAAmB,EAAE,MAAM,CAA8B;IAClF,MAAM,CAAC,uBAAuB,SAAY;IAC1C,MAAM,CAAC,qBAAqB,SAAI;IAChC,MAAM,CAAC,4BAA4B,SAAY;IAC/C,MAAM,CAAC,mBAAmB,SAAO;IAEjC,OAAO,CAAC,iBAAiB,CAAoF;IAC7G,OAAO,CAAC,eAAe,CAAC,CAAW;IAEnC,OAAO,CAAC,SAAS,CAAC,CAA+B;IAEjD,IAAI,MAAM;;;;;;mBAET;IAED,IAAI,gBAAgB,WAEnB;IAED,IAAI,cAAc,WAEjB;IAED,IAAI,qBAAqB,WAExB;IAED,IAAI,cAAc,cAGjB;IAED,IAAa,QAAQ,iHAIpB;IAED,IAAI,GAAG,WAEN;IAEc,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIhD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAI1C,eAAe,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACvI,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,GAAG,EAAE,GAChB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAqBpB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAQtC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;CAGlH"}
1
+ {"version":3,"file":"ClientBridge.d.ts","sourceRoot":"","sources":["../../src/ClientBridge.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACpG,OAAO,EAAmB,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAIvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAE/E,qBACa,qBAAqB,CAAC,OAAO,SAAS,qBAAqB,GAAG,qBAAqB,CAC9F,SAAQ,cAAc,CAAC,OAAO,CAC9B,YAAW,YAAY,CAAC,OAAO,CAAC,EAAE,0BAA0B;IAE5D,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAwD;IACxG,gBAAyB,mBAAmB,EAAE,MAAM,CAA8B;IAClF,MAAM,CAAC,uBAAuB,SAAY;IAC1C,MAAM,CAAC,qBAAqB,SAAI;IAChC,MAAM,CAAC,4BAA4B,SAAY;IAC/C,MAAM,CAAC,mBAAmB,SAAO;IAEjC,OAAO,CAAC,iBAAiB,CAAoF;IAC7G,OAAO,CAAC,eAAe,CAAC,CAAW;IAEnC,OAAO,CAAC,SAAS,CAAC,CAA+B;IAEjD,IAAI,MAAM;;;;;;mBAET;IAED,IAAI,gBAAgB,WAEnB;IAED,IAAI,cAAc,WAEjB;IAED,IAAI,qBAAqB,WAExB;IAED,IAAI,cAAc,cAGjB;IAED,IAAa,QAAQ,iHAIpB;IAED,IAAI,GAAG,WAEN;IAEQ,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAI1C,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIrC,eAAe,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACvI,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,GAAG,EAAE,GAChB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAqB1B,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;CAGlH"}
@@ -3,7 +3,6 @@ import { BridgeConfig } from '@xyo-network/bridge-model';
3
3
  export declare const WebsocketBridgeConfigSchema = "network.xyo.bridge.websocket.config";
4
4
  export type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema;
5
5
  export type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<{
6
- discoverRoot?: boolean;
7
6
  schema: WebsocketBridgeConfigSchema;
8
7
  } & TConfig, TSchema extends string ? TSchema : WebsocketBridgeConfigSchema, {
9
8
  failureRetryTime?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,eAAO,MAAM,2BAA2B,wCAAwC,CAAA;AAChF,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAA;AAE5E,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,YAAY,CAC/H;IACE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,2BAA2B,CAAA;CACpC,GAAG,OAAO,EACX,OAAO,SAAS,MAAM,GAAG,OAAO,GAAG,2BAA2B,EAC9D;IACE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,MAAM,CAAA;CACZ,EACD;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CACF,CAAA"}
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,eAAO,MAAM,2BAA2B,wCAAwC,CAAA;AAChF,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAA;AAE5E,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,YAAY,CAC/H;IACE,MAAM,EAAE,2BAA2B,CAAA;CACpC,GAAG,OAAO,EACX,OAAO,SAAS,MAAM,GAAG,OAAO,GAAG,2BAA2B,EAC9D;IACE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,MAAM,CAAA;CACZ,EACD;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CACF,CAAA"}
@@ -3,7 +3,6 @@ import { BridgeConfig } from '@xyo-network/bridge-model';
3
3
  export declare const WebsocketBridgeConfigSchema = "network.xyo.bridge.websocket.config";
4
4
  export type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema;
5
5
  export type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<{
6
- discoverRoot?: boolean;
7
6
  schema: WebsocketBridgeConfigSchema;
8
7
  } & TConfig, TSchema extends string ? TSchema : WebsocketBridgeConfigSchema, {
9
8
  failureRetryTime?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,eAAO,MAAM,2BAA2B,wCAAwC,CAAA;AAChF,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAA;AAE5E,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,YAAY,CAC/H;IACE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,2BAA2B,CAAA;CACpC,GAAG,OAAO,EACX,OAAO,SAAS,MAAM,GAAG,OAAO,GAAG,2BAA2B,EAC9D;IACE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,MAAM,CAAA;CACZ,EACD;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CACF,CAAA"}
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,eAAO,MAAM,2BAA2B,wCAAwC,CAAA;AAChF,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAA;AAE5E,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,YAAY,CAC/H;IACE,MAAM,EAAE,2BAA2B,CAAA;CACpC,GAAG,OAAO,EACX,OAAO,SAAS,MAAM,GAAG,OAAO,GAAG,2BAA2B,EAC9D;IACE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,MAAM,CAAA;CACZ,EACD;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CACF,CAAA"}
@@ -3,7 +3,6 @@ import { BridgeConfig } from '@xyo-network/bridge-model';
3
3
  export declare const WebsocketBridgeConfigSchema = "network.xyo.bridge.websocket.config";
4
4
  export type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema;
5
5
  export type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<{
6
- discoverRoot?: boolean;
7
6
  schema: WebsocketBridgeConfigSchema;
8
7
  } & TConfig, TSchema extends string ? TSchema : WebsocketBridgeConfigSchema, {
9
8
  failureRetryTime?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,eAAO,MAAM,2BAA2B,wCAAwC,CAAA;AAChF,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAA;AAE5E,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,YAAY,CAC/H;IACE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,2BAA2B,CAAA;CACpC,GAAG,OAAO,EACX,OAAO,SAAS,MAAM,GAAG,OAAO,GAAG,2BAA2B,EAC9D;IACE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,MAAM,CAAA;CACZ,EACD;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CACF,CAAA"}
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,eAAO,MAAM,2BAA2B,wCAAwC,CAAA;AAChF,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAA;AAE5E,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,YAAY,CAC/H;IACE,MAAM,EAAE,2BAA2B,CAAA;CACpC,GAAG,OAAO,EACX,OAAO,SAAS,MAAM,GAAG,OAAO,GAAG,2BAA2B,EAC9D;IACE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,MAAM,CAAA;CACZ,EACD;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CACF,CAAA"}
@@ -6,6 +6,6 @@ export interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolve
6
6
  }
7
7
  export declare class WebsocketBridgeModuleResolver<T extends WebsocketBridgeModuleResolverParams = WebsocketBridgeModuleResolverParams> extends AbstractBridgeModuleResolver<T> {
8
8
  get querySender(): WebsocketBridgeQuerySender;
9
- resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | T[] | undefined>;
9
+ resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]>;
10
10
  }
11
11
  //# sourceMappingURL=WebsocketBridgeModuleResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAIL,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEf,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,0BAA0B,EAAoD,MAAM,eAAe,CAAA;AAE5G,MAAM,WAAW,mCAAoC,SAAQ,0BAA0B;IACrF,WAAW,EAAE,0BAA0B,CAAA;CACxC;AAED,qBAAa,6BAA6B,CACxC,CAAC,SAAS,mCAAmC,GAAG,mCAAmC,CACnF,SAAQ,4BAA4B,CAAC,CAAC,CAAC;IACvC,IAAI,WAAW,+BAEd;IAEc,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;CAqDhC"}
1
+ {"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAIL,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEf,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,0BAA0B,EAAoD,MAAM,eAAe,CAAA;AAE5G,MAAM,WAAW,mCAAoC,SAAQ,0BAA0B;IACrF,WAAW,EAAE,0BAA0B,CAAA;CACxC;AAED,qBAAa,6BAA6B,CACxC,CAAC,SAAS,mCAAmC,GAAG,mCAAmC,CACnF,SAAQ,4BAA4B,CAAC,CAAC,CAAC;IACvC,IAAI,WAAW,+BAEd;IAEc,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;CAqD/I"}
@@ -6,6 +6,6 @@ export interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolve
6
6
  }
7
7
  export declare class WebsocketBridgeModuleResolver<T extends WebsocketBridgeModuleResolverParams = WebsocketBridgeModuleResolverParams> extends AbstractBridgeModuleResolver<T> {
8
8
  get querySender(): WebsocketBridgeQuerySender;
9
- resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | T[] | undefined>;
9
+ resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]>;
10
10
  }
11
11
  //# sourceMappingURL=WebsocketBridgeModuleResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAIL,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEf,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,0BAA0B,EAAoD,MAAM,eAAe,CAAA;AAE5G,MAAM,WAAW,mCAAoC,SAAQ,0BAA0B;IACrF,WAAW,EAAE,0BAA0B,CAAA;CACxC;AAED,qBAAa,6BAA6B,CACxC,CAAC,SAAS,mCAAmC,GAAG,mCAAmC,CACnF,SAAQ,4BAA4B,CAAC,CAAC,CAAC;IACvC,IAAI,WAAW,+BAEd;IAEc,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;CAqDhC"}
1
+ {"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAIL,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEf,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,0BAA0B,EAAoD,MAAM,eAAe,CAAA;AAE5G,MAAM,WAAW,mCAAoC,SAAQ,0BAA0B;IACrF,WAAW,EAAE,0BAA0B,CAAA;CACxC;AAED,qBAAa,6BAA6B,CACxC,CAAC,SAAS,mCAAmC,GAAG,mCAAmC,CACnF,SAAQ,4BAA4B,CAAC,CAAC,CAAC;IACvC,IAAI,WAAW,+BAEd;IAEc,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;CAqD/I"}
@@ -6,6 +6,6 @@ export interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolve
6
6
  }
7
7
  export declare class WebsocketBridgeModuleResolver<T extends WebsocketBridgeModuleResolverParams = WebsocketBridgeModuleResolverParams> extends AbstractBridgeModuleResolver<T> {
8
8
  get querySender(): WebsocketBridgeQuerySender;
9
- resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | T[] | undefined>;
9
+ resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]>;
10
10
  }
11
11
  //# sourceMappingURL=WebsocketBridgeModuleResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAIL,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEf,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,0BAA0B,EAAoD,MAAM,eAAe,CAAA;AAE5G,MAAM,WAAW,mCAAoC,SAAQ,0BAA0B;IACrF,WAAW,EAAE,0BAA0B,CAAA;CACxC;AAED,qBAAa,6BAA6B,CACxC,CAAC,SAAS,mCAAmC,GAAG,mCAAmC,CACnF,SAAQ,4BAA4B,CAAC,CAAC,CAAC;IACvC,IAAI,WAAW,+BAEd;IAEc,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;CAqDhC"}
1
+ {"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAG3H,OAAO,EAIL,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEf,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,0BAA0B,EAAoD,MAAM,eAAe,CAAA;AAE5G,MAAM,WAAW,mCAAoC,SAAQ,0BAA0B;IACrF,WAAW,EAAE,0BAA0B,CAAA;CACxC;AAED,qBAAa,6BAA6B,CACxC,CAAC,SAAS,mCAAmC,GAAG,mCAAmC,CACnF,SAAQ,4BAA4B,CAAC,CAAC,CAAC;IACvC,IAAI,WAAW,+BAEd;IAEc,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;CAqD/I"}
@@ -123,9 +123,13 @@ var _WebsocketBridgeModuleResolver = class _WebsocketBridgeModuleResolver extend
123
123
  proxy.downResolver.add(instance);
124
124
  if (remainderParts.length > 0) {
125
125
  const result = await wrapped.resolve(remainderParts, options);
126
- return result;
126
+ return result ? [
127
+ result
128
+ ] : [];
127
129
  }
128
- return instance;
130
+ return [
131
+ instance
132
+ ];
129
133
  }
130
134
  };
131
135
  __name(_WebsocketBridgeModuleResolver, "WebsocketBridgeModuleResolver");
@@ -181,15 +185,15 @@ var _WebsocketClientBridge = class _WebsocketClientBridge extends import_abstrac
181
185
  var _a;
182
186
  return (0, import_assert2.assertEx)((_a = this.config.client) == null ? void 0 : _a.url, () => "No Url Set");
183
187
  }
184
- async discoverRoots() {
185
- return await Promise.resolve([]);
186
- }
187
188
  exposeHandler(_id, _options) {
188
189
  throw new Error("Unsupported");
189
190
  }
190
191
  exposedHandler() {
191
192
  throw new Error("Unsupported");
192
193
  }
194
+ async getRoots() {
195
+ return await Promise.resolve([]);
196
+ }
193
197
  async sendBridgeQuery(targetAddress, _query, _payloads) {
194
198
  const lastFailureTime = this._failureTimeCache.get(targetAddress);
195
199
  if (lastFailureTime !== void 0) {
@@ -210,13 +214,6 @@ var _WebsocketClientBridge = class _WebsocketClientBridge extends import_abstrac
210
214
  this.querySemaphore.release();
211
215
  }
212
216
  }
213
- async startHandler() {
214
- const { discoverRoot = true } = this.config;
215
- if (discoverRoot) {
216
- await this.discoverRoots();
217
- }
218
- return true;
219
- }
220
217
  unexposeHandler(_id, _options) {
221
218
  throw new Error("Unsupported");
222
219
  }