@xyo-network/bridge-websocket 2.102.0 → 2.102.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/ClientBridge.d.cts +1 -1
- package/dist/browser/ClientBridge.d.cts.map +1 -1
- package/dist/browser/ClientBridge.d.mts +1 -1
- package/dist/browser/ClientBridge.d.mts.map +1 -1
- package/dist/browser/ClientBridge.d.ts +1 -1
- package/dist/browser/ClientBridge.d.ts.map +1 -1
- package/dist/browser/ModuleProxy/ModuleProxy.d.cts +1 -1
- package/dist/browser/ModuleProxy/ModuleProxy.d.cts.map +1 -1
- package/dist/browser/ModuleProxy/ModuleProxy.d.mts +1 -1
- package/dist/browser/ModuleProxy/ModuleProxy.d.mts.map +1 -1
- package/dist/browser/ModuleProxy/ModuleProxy.d.ts +1 -1
- package/dist/browser/ModuleProxy/ModuleProxy.d.ts.map +1 -1
- package/dist/browser/WebsocketBridgeModuleResolver.d.cts +1 -1
- package/dist/browser/WebsocketBridgeModuleResolver.d.cts.map +1 -1
- package/dist/browser/WebsocketBridgeModuleResolver.d.mts +1 -1
- package/dist/browser/WebsocketBridgeModuleResolver.d.mts.map +1 -1
- package/dist/browser/WebsocketBridgeModuleResolver.d.ts +1 -1
- package/dist/browser/WebsocketBridgeModuleResolver.d.ts.map +1 -1
- package/dist/browser/index-browser.cjs +7 -7
- package/dist/browser/index-browser.cjs.map +1 -1
- package/dist/browser/index-browser.js +3 -3
- package/dist/browser/index-browser.js.map +1 -1
- package/dist/neutral/ClientBridge.d.cts +1 -1
- package/dist/neutral/ClientBridge.d.cts.map +1 -1
- package/dist/neutral/ClientBridge.d.mts +1 -1
- package/dist/neutral/ClientBridge.d.mts.map +1 -1
- package/dist/neutral/ClientBridge.d.ts +1 -1
- package/dist/neutral/ClientBridge.d.ts.map +1 -1
- package/dist/neutral/ModuleProxy/ModuleProxy.d.cts +1 -1
- package/dist/neutral/ModuleProxy/ModuleProxy.d.cts.map +1 -1
- package/dist/neutral/ModuleProxy/ModuleProxy.d.mts +1 -1
- package/dist/neutral/ModuleProxy/ModuleProxy.d.mts.map +1 -1
- package/dist/neutral/ModuleProxy/ModuleProxy.d.ts +1 -1
- package/dist/neutral/ModuleProxy/ModuleProxy.d.ts.map +1 -1
- package/dist/neutral/WebsocketBridgeModuleResolver.d.cts +1 -1
- package/dist/neutral/WebsocketBridgeModuleResolver.d.cts.map +1 -1
- package/dist/neutral/WebsocketBridgeModuleResolver.d.mts +1 -1
- package/dist/neutral/WebsocketBridgeModuleResolver.d.mts.map +1 -1
- package/dist/neutral/WebsocketBridgeModuleResolver.d.ts +1 -1
- package/dist/neutral/WebsocketBridgeModuleResolver.d.ts.map +1 -1
- package/dist/neutral/index.cjs +7 -7
- package/dist/neutral/index.cjs.map +1 -1
- package/dist/neutral/index.js +3 -3
- package/dist/neutral/index.js.map +1 -1
- package/dist/node/ClientBridge.d.cts +1 -1
- package/dist/node/ClientBridge.d.cts.map +1 -1
- package/dist/node/ClientBridge.d.mts +1 -1
- package/dist/node/ClientBridge.d.mts.map +1 -1
- package/dist/node/ClientBridge.d.ts +1 -1
- package/dist/node/ClientBridge.d.ts.map +1 -1
- package/dist/node/ModuleProxy/ModuleProxy.d.cts +1 -1
- package/dist/node/ModuleProxy/ModuleProxy.d.cts.map +1 -1
- package/dist/node/ModuleProxy/ModuleProxy.d.mts +1 -1
- package/dist/node/ModuleProxy/ModuleProxy.d.mts.map +1 -1
- package/dist/node/ModuleProxy/ModuleProxy.d.ts +1 -1
- package/dist/node/ModuleProxy/ModuleProxy.d.ts.map +1 -1
- package/dist/node/WebsocketBridgeModuleResolver.d.cts +1 -1
- package/dist/node/WebsocketBridgeModuleResolver.d.cts.map +1 -1
- package/dist/node/WebsocketBridgeModuleResolver.d.mts +1 -1
- package/dist/node/WebsocketBridgeModuleResolver.d.mts.map +1 -1
- package/dist/node/WebsocketBridgeModuleResolver.d.ts +1 -1
- package/dist/node/WebsocketBridgeModuleResolver.d.ts.map +1 -1
- package/dist/node/index.cjs +7 -7
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +3 -3
- package/dist/node/index.js.map +1 -1
- package/package.json +14 -14
- package/src/ClientBridge.ts +1 -1
- package/src/ModuleProxy/ModuleProxy.ts +1 -1
- package/src/WebsocketBridgeModuleResolver.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAE3H,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"}
|
package/dist/neutral/index.cjs
CHANGED
|
@@ -35,7 +35,7 @@ var import_socket = require("socket.io");
|
|
|
35
35
|
|
|
36
36
|
// src/ClientBridge.ts
|
|
37
37
|
var import_assert2 = require("@xylabs/assert");
|
|
38
|
-
var
|
|
38
|
+
var import_bridge_abstract3 = require("@xyo-network/bridge-abstract");
|
|
39
39
|
var import_module_model2 = require("@xyo-network/module-model");
|
|
40
40
|
var import_async_mutex = require("async-mutex");
|
|
41
41
|
var import_lru_cache = require("lru-cache");
|
|
@@ -46,14 +46,14 @@ var WebsocketBridgeConfigSchema = "network.xyo.bridge.websocket.config";
|
|
|
46
46
|
// src/WebsocketBridgeModuleResolver.ts
|
|
47
47
|
var import_assert = require("@xylabs/assert");
|
|
48
48
|
var import_hex = require("@xylabs/hex");
|
|
49
|
-
var import_abstract_bridge2 = require("@xyo-network/abstract-bridge");
|
|
50
49
|
var import_account = require("@xyo-network/account");
|
|
50
|
+
var import_bridge_abstract2 = require("@xyo-network/bridge-abstract");
|
|
51
51
|
var import_config_payload_plugin = require("@xyo-network/config-payload-plugin");
|
|
52
52
|
var import_module_model = require("@xyo-network/module-model");
|
|
53
53
|
|
|
54
54
|
// src/ModuleProxy/ModuleProxy.ts
|
|
55
|
-
var
|
|
56
|
-
var WebsocketModuleProxy = class _WebsocketModuleProxy extends
|
|
55
|
+
var import_bridge_abstract = require("@xyo-network/bridge-abstract");
|
|
56
|
+
var WebsocketModuleProxy = class _WebsocketModuleProxy extends import_bridge_abstract.AbstractModuleProxy {
|
|
57
57
|
static {
|
|
58
58
|
__name(this, "WebsocketModuleProxy");
|
|
59
59
|
}
|
|
@@ -71,7 +71,7 @@ var WebsocketModuleProxy = class _WebsocketModuleProxy extends import_abstract_b
|
|
|
71
71
|
};
|
|
72
72
|
|
|
73
73
|
// src/WebsocketBridgeModuleResolver.ts
|
|
74
|
-
var WebsocketBridgeModuleResolver = class extends
|
|
74
|
+
var WebsocketBridgeModuleResolver = class extends import_bridge_abstract2.AbstractBridgeModuleResolver {
|
|
75
75
|
static {
|
|
76
76
|
__name(this, "WebsocketBridgeModuleResolver");
|
|
77
77
|
}
|
|
@@ -112,7 +112,7 @@ var WebsocketBridgeModuleResolver = class extends import_abstract_bridge2.Abstra
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
await proxy.start();
|
|
115
|
-
const wrapped = (0, import_assert.assertEx)((0,
|
|
115
|
+
const wrapped = (0, import_assert.assertEx)((0, import_bridge_abstract2.wrapModuleWithType)(proxy, import_account.Account.randomSync()), () => `Failed to wrapModuleWithType [${id}]`);
|
|
116
116
|
const instance = (0, import_assert.assertEx)((0, import_module_model.asModuleInstance)(wrapped, {}), () => `Failed to asModuleInstance [${id}]`);
|
|
117
117
|
proxy.upResolver.add(instance);
|
|
118
118
|
proxy.downResolver.add(instance);
|
|
@@ -140,7 +140,7 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
140
140
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
141
141
|
}
|
|
142
142
|
__name(_ts_decorate, "_ts_decorate");
|
|
143
|
-
var WebsocketClientBridge = class _WebsocketClientBridge extends
|
|
143
|
+
var WebsocketClientBridge = class _WebsocketClientBridge extends import_bridge_abstract3.AbstractBridge {
|
|
144
144
|
static {
|
|
145
145
|
__name(this, "WebsocketClientBridge");
|
|
146
146
|
}
|
|
@@ -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 ??\n new WebsocketBridgeModuleResolver({\n archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },\n bridge: this,\n querySender: this,\n root: this,\n wrapperAccount: this.account,\n })\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;AAGzB,IAAAC,0BAA+B;AAG/B,IAAAC,uBAAmE;AAEnE,yBAA0B;AAC1B,uBAAyB;;;ACNlB,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;;;;;;;;;;;;;;AFhEO,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,aACL,IAAIS,8BAA8B;MAChCC,WAAW;QAAE,GAAG,KAAKA;QAAWC,mBAAmB,KAAKC,2BAA2BC,KAAK,IAAI;MAAE;MAC9FC,QAAQ;MACRC,aAAa;MACbC,MAAM;MACNC,gBAAgB,KAAKC;IACvB,CAAA;AACF,WAAO,KAAKlB;EACd;EAEA,IAAImB,MAAM;AACR,eAAOC,yBAAS,KAAKlB,OAAOD,QAAQkB,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,KAAKrC,kBAAkBsC,IAAIJ,aAAAA;AACnD,QAAIG,oBAAoBE,QAAW;AACjC,YAAMC,MAAMC,KAAKD,IAAG;AACpB,YAAME,2BAA2BF,MAAMH;AACvC,UAAIK,2BAA2B,KAAKnC,kBAAkB;AACpD,cAAM,IAAIqB,MAAM,kCAAkCM,aAAAA,MAAmBQ,wBAAAA,SAAiC;MACxG;AACA,WAAK1C,kBAAkB2C,OAAOT,aAAAA;IAChC;AACA,QAAI;AACF,YAAM,KAAKxB,eAAekC,QAAO;AACjC,YAAM,IAAIhB,MAAM,aAAA;IAClB,SAASiB,IAAI;AACX,YAAMC,QAAQD;AACd,YAAMC;IACR,UAAA;AACE,WAAKpC,eAAeqC,QAAO;IAC7B;EACF;EAESC,gBAAgBtB,KAAaC,UAA4E;AAChH,UAAM,IAAIC,MAAM,aAAA;EAClB;AACF;AA9FarC,wBAAAA,aAAAA;MADZ0D,sCAAAA;GACY1D,qBAAAA;;;;;;;;;;;;;;ADHN,IAAM2D,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","archiving","resolveArchivists","resolveArchivingArchivists","bind","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"]}
|
|
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 { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\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 ??\n new WebsocketBridgeModuleResolver({\n archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },\n bridge: this,\n querySender: this,\n root: this,\n wrapperAccount: this.account,\n })\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 { Account } from '@xyo-network/account'\nimport { AbstractBridgeModuleResolver, BridgeModuleResolverParams, wrapModuleWithType } from '@xyo-network/bridge-abstract'\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 { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/bridge-abstract'\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_bridge_abstract","import_module_model","WebsocketBridgeConfigSchema","import_bridge_abstract","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","archiving","resolveArchivists","resolveArchivingArchivists","bind","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"]}
|
package/dist/neutral/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import { Server } from "socket.io";
|
|
|
9
9
|
|
|
10
10
|
// src/ClientBridge.ts
|
|
11
11
|
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
12
|
-
import { AbstractBridge } from "@xyo-network/abstract
|
|
12
|
+
import { AbstractBridge } from "@xyo-network/bridge-abstract";
|
|
13
13
|
import { creatableModule } from "@xyo-network/module-model";
|
|
14
14
|
import { Semaphore } from "async-mutex";
|
|
15
15
|
import { LRUCache } from "lru-cache";
|
|
@@ -20,13 +20,13 @@ var WebsocketBridgeConfigSchema = "network.xyo.bridge.websocket.config";
|
|
|
20
20
|
// src/WebsocketBridgeModuleResolver.ts
|
|
21
21
|
import { assertEx } from "@xylabs/assert";
|
|
22
22
|
import { isAddress } from "@xylabs/hex";
|
|
23
|
-
import { AbstractBridgeModuleResolver, wrapModuleWithType } from "@xyo-network/abstract-bridge";
|
|
24
23
|
import { Account } from "@xyo-network/account";
|
|
24
|
+
import { AbstractBridgeModuleResolver, wrapModuleWithType } from "@xyo-network/bridge-abstract";
|
|
25
25
|
import { ConfigSchema } from "@xyo-network/config-payload-plugin";
|
|
26
26
|
import { asModuleInstance, ModuleConfigSchema, ResolveHelper } from "@xyo-network/module-model";
|
|
27
27
|
|
|
28
28
|
// src/ModuleProxy/ModuleProxy.ts
|
|
29
|
-
import { AbstractModuleProxy } from "@xyo-network/abstract
|
|
29
|
+
import { AbstractModuleProxy } from "@xyo-network/bridge-abstract";
|
|
30
30
|
var WebsocketModuleProxy = class _WebsocketModuleProxy extends AbstractModuleProxy {
|
|
31
31
|
static {
|
|
32
32
|
__name(this, "WebsocketModuleProxy");
|
|
@@ -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 ??\n new WebsocketBridgeModuleResolver({\n archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },\n bridge: this,\n querySender: this,\n root: this,\n wrapperAccount: this.account,\n })\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","archiving","resolveArchivists","resolveArchivingArchivists","bind","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"]}
|
|
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 { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\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 ??\n new WebsocketBridgeModuleResolver({\n archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },\n bridge: this,\n querySender: this,\n root: this,\n wrapperAccount: this.account,\n })\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 { Account } from '@xyo-network/account'\nimport { AbstractBridgeModuleResolver, BridgeModuleResolverParams, wrapModuleWithType } from '@xyo-network/bridge-abstract'\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 { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/bridge-abstract'\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","Account","AbstractBridgeModuleResolver","wrapModuleWithType","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","archiving","resolveArchivists","resolveArchivingArchivists","bind","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"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Address } from '@xylabs/hex';
|
|
2
2
|
import { Promisable } from '@xylabs/promise';
|
|
3
|
-
import { AbstractBridge } from '@xyo-network/abstract-bridge';
|
|
4
3
|
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
4
|
+
import { AbstractBridge } from '@xyo-network/bridge-abstract';
|
|
5
5
|
import { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model';
|
|
6
6
|
import { ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model';
|
|
7
7
|
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
@@ -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,
|
|
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,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,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,iHAWpB;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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Address } from '@xylabs/hex';
|
|
2
2
|
import { Promisable } from '@xylabs/promise';
|
|
3
|
-
import { AbstractBridge } from '@xyo-network/abstract-bridge';
|
|
4
3
|
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
4
|
+
import { AbstractBridge } from '@xyo-network/bridge-abstract';
|
|
5
5
|
import { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model';
|
|
6
6
|
import { ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model';
|
|
7
7
|
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
@@ -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,
|
|
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,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,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,iHAWpB;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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Address } from '@xylabs/hex';
|
|
2
2
|
import { Promisable } from '@xylabs/promise';
|
|
3
|
-
import { AbstractBridge } from '@xyo-network/abstract-bridge';
|
|
4
3
|
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
4
|
+
import { AbstractBridge } from '@xyo-network/bridge-abstract';
|
|
5
5
|
import { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model';
|
|
6
6
|
import { ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model';
|
|
7
7
|
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
@@ -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,
|
|
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,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,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,iHAWpB;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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Address } from '@xylabs/hex';
|
|
2
|
-
import { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/abstract-bridge';
|
|
3
2
|
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
3
|
+
import { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/bridge-abstract';
|
|
4
4
|
import { ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model';
|
|
5
5
|
import { Payload } from '@xyo-network/payload-model';
|
|
6
6
|
export interface WebsocketBridgeQuerySender {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModuleProxy.d.ts","sourceRoot":"","sources":["../../../src/ModuleProxy/ModuleProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ModuleProxy.d.ts","sourceRoot":"","sources":["../../../src/ModuleProxy/ModuleProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AACrF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,WAAW,0BAA0B;IACzC,eAAe,EAAE,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACnI,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,GAAG,EAAE,KACb,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAA;CACtC;AAED,MAAM,MAAM,0BAA0B,GAAG,iBAAiB,GAAG;IAC3D,WAAW,EAAE,0BAA0B,CAAA;CACxC,CAAA;AAED,qBAAa,oBAAoB,CAC7B,cAAc,SAAS,cAAc,GAAG,cAAc,EACtD,OAAO,SAAS,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;CAAE,GAAG,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,GAAG;IAC/I,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;CACjC,CAEH,SAAQ,mBAAmB,CAAC,cAAc,EAAE,OAAO,CACnD,YAAW,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IAE/D,MAAM,CAAC,WAAW,SAAI;gBAEV,MAAM,EAAE,OAAO;IAQrB,iBAAiB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGzI"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Address } from '@xylabs/hex';
|
|
2
|
-
import { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/abstract-bridge';
|
|
3
2
|
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
3
|
+
import { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/bridge-abstract';
|
|
4
4
|
import { ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model';
|
|
5
5
|
import { Payload } from '@xyo-network/payload-model';
|
|
6
6
|
export interface WebsocketBridgeQuerySender {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModuleProxy.d.ts","sourceRoot":"","sources":["../../../src/ModuleProxy/ModuleProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ModuleProxy.d.ts","sourceRoot":"","sources":["../../../src/ModuleProxy/ModuleProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AACrF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,WAAW,0BAA0B;IACzC,eAAe,EAAE,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACnI,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,GAAG,EAAE,KACb,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAA;CACtC;AAED,MAAM,MAAM,0BAA0B,GAAG,iBAAiB,GAAG;IAC3D,WAAW,EAAE,0BAA0B,CAAA;CACxC,CAAA;AAED,qBAAa,oBAAoB,CAC7B,cAAc,SAAS,cAAc,GAAG,cAAc,EACtD,OAAO,SAAS,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;CAAE,GAAG,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,GAAG;IAC/I,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;CACjC,CAEH,SAAQ,mBAAmB,CAAC,cAAc,EAAE,OAAO,CACnD,YAAW,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IAE/D,MAAM,CAAC,WAAW,SAAI;gBAEV,MAAM,EAAE,OAAO;IAQrB,iBAAiB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGzI"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Address } from '@xylabs/hex';
|
|
2
|
-
import { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/abstract-bridge';
|
|
3
2
|
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
3
|
+
import { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/bridge-abstract';
|
|
4
4
|
import { ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model';
|
|
5
5
|
import { Payload } from '@xyo-network/payload-model';
|
|
6
6
|
export interface WebsocketBridgeQuerySender {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModuleProxy.d.ts","sourceRoot":"","sources":["../../../src/ModuleProxy/ModuleProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ModuleProxy.d.ts","sourceRoot":"","sources":["../../../src/ModuleProxy/ModuleProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AACrF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,WAAW,0BAA0B;IACzC,eAAe,EAAE,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACnI,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,GAAG,EAAE,KACb,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAA;CACtC;AAED,MAAM,MAAM,0BAA0B,GAAG,iBAAiB,GAAG;IAC3D,WAAW,EAAE,0BAA0B,CAAA;CACxC,CAAA;AAED,qBAAa,oBAAoB,CAC7B,cAAc,SAAS,cAAc,GAAG,cAAc,EACtD,OAAO,SAAS,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;CAAE,GAAG,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,GAAG;IAC/I,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;CACjC,CAEH,SAAQ,mBAAmB,CAAC,cAAc,EAAE,OAAO,CACnD,YAAW,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IAE/D,MAAM,CAAC,WAAW,SAAI;gBAEV,MAAM,EAAE,OAAO;IAQrB,iBAAiB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGzI"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AbstractBridgeModuleResolver, BridgeModuleResolverParams } from '@xyo-network/abstract
|
|
1
|
+
import { AbstractBridgeModuleResolver, BridgeModuleResolverParams } from '@xyo-network/bridge-abstract';
|
|
2
2
|
import { ModuleFilterOptions, ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model';
|
|
3
3
|
import { WebsocketBridgeQuerySender } from './ModuleProxy';
|
|
4
4
|
export interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolverParams {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAE3H,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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AbstractBridgeModuleResolver, BridgeModuleResolverParams } from '@xyo-network/abstract
|
|
1
|
+
import { AbstractBridgeModuleResolver, BridgeModuleResolverParams } from '@xyo-network/bridge-abstract';
|
|
2
2
|
import { ModuleFilterOptions, ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model';
|
|
3
3
|
import { WebsocketBridgeQuerySender } from './ModuleProxy';
|
|
4
4
|
export interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolverParams {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAE3H,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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AbstractBridgeModuleResolver, BridgeModuleResolverParams } from '@xyo-network/abstract
|
|
1
|
+
import { AbstractBridgeModuleResolver, BridgeModuleResolverParams } from '@xyo-network/bridge-abstract';
|
|
2
2
|
import { ModuleFilterOptions, ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model';
|
|
3
3
|
import { WebsocketBridgeQuerySender } from './ModuleProxy';
|
|
4
4
|
export interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolverParams {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WebsocketBridgeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/WebsocketBridgeModuleResolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAsB,MAAM,8BAA8B,CAAA;AAE3H,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"}
|
package/dist/node/index.cjs
CHANGED
|
@@ -43,7 +43,7 @@ var import_socket = require("socket.io");
|
|
|
43
43
|
|
|
44
44
|
// src/ClientBridge.ts
|
|
45
45
|
var import_assert2 = require("@xylabs/assert");
|
|
46
|
-
var
|
|
46
|
+
var import_bridge_abstract3 = require("@xyo-network/bridge-abstract");
|
|
47
47
|
var import_module_model2 = require("@xyo-network/module-model");
|
|
48
48
|
var import_async_mutex = require("async-mutex");
|
|
49
49
|
var import_lru_cache = require("lru-cache");
|
|
@@ -54,14 +54,14 @@ var WebsocketBridgeConfigSchema = "network.xyo.bridge.websocket.config";
|
|
|
54
54
|
// src/WebsocketBridgeModuleResolver.ts
|
|
55
55
|
var import_assert = require("@xylabs/assert");
|
|
56
56
|
var import_hex = require("@xylabs/hex");
|
|
57
|
-
var import_abstract_bridge2 = require("@xyo-network/abstract-bridge");
|
|
58
57
|
var import_account = require("@xyo-network/account");
|
|
58
|
+
var import_bridge_abstract2 = require("@xyo-network/bridge-abstract");
|
|
59
59
|
var import_config_payload_plugin = require("@xyo-network/config-payload-plugin");
|
|
60
60
|
var import_module_model = require("@xyo-network/module-model");
|
|
61
61
|
|
|
62
62
|
// src/ModuleProxy/ModuleProxy.ts
|
|
63
|
-
var
|
|
64
|
-
var _WebsocketModuleProxy = class _WebsocketModuleProxy extends
|
|
63
|
+
var import_bridge_abstract = require("@xyo-network/bridge-abstract");
|
|
64
|
+
var _WebsocketModuleProxy = class _WebsocketModuleProxy extends import_bridge_abstract.AbstractModuleProxy {
|
|
65
65
|
constructor(params) {
|
|
66
66
|
_WebsocketModuleProxy.createCount = _WebsocketModuleProxy.createCount + 1;
|
|
67
67
|
if (Math.floor(_WebsocketModuleProxy.createCount / 10) === _WebsocketModuleProxy.createCount / 10) {
|
|
@@ -78,7 +78,7 @@ __publicField(_WebsocketModuleProxy, "createCount", 0);
|
|
|
78
78
|
var WebsocketModuleProxy = _WebsocketModuleProxy;
|
|
79
79
|
|
|
80
80
|
// src/WebsocketBridgeModuleResolver.ts
|
|
81
|
-
var _WebsocketBridgeModuleResolver = class _WebsocketBridgeModuleResolver extends
|
|
81
|
+
var _WebsocketBridgeModuleResolver = class _WebsocketBridgeModuleResolver extends import_bridge_abstract2.AbstractBridgeModuleResolver {
|
|
82
82
|
get querySender() {
|
|
83
83
|
return this.params.querySender;
|
|
84
84
|
}
|
|
@@ -117,7 +117,7 @@ var _WebsocketBridgeModuleResolver = class _WebsocketBridgeModuleResolver extend
|
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
await proxy.start();
|
|
120
|
-
const wrapped = (0, import_assert.assertEx)((0,
|
|
120
|
+
const wrapped = (0, import_assert.assertEx)((0, import_bridge_abstract2.wrapModuleWithType)(proxy, import_account.Account.randomSync()), () => `Failed to wrapModuleWithType [${id}]`);
|
|
121
121
|
const instance = (0, import_assert.assertEx)((0, import_module_model.asModuleInstance)(wrapped, {}), () => `Failed to asModuleInstance [${id}]`);
|
|
122
122
|
proxy.upResolver.add(instance);
|
|
123
123
|
proxy.downResolver.add(instance);
|
|
@@ -147,7 +147,7 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
147
147
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
148
148
|
}
|
|
149
149
|
__name(_ts_decorate, "_ts_decorate");
|
|
150
|
-
var _WebsocketClientBridge = class _WebsocketClientBridge extends
|
|
150
|
+
var _WebsocketClientBridge = class _WebsocketClientBridge extends import_bridge_abstract3.AbstractBridge {
|
|
151
151
|
_failureTimeCache = new import_lru_cache.LRUCache({
|
|
152
152
|
max: _WebsocketClientBridge.maxFailureCacheSize
|
|
153
153
|
});
|