@xyo-network/bridge-websocket 2.96.2 → 2.97.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/Bridge.d.cts +3 -1
- package/dist/browser/Bridge.d.cts.map +1 -1
- package/dist/browser/Bridge.d.mts +3 -1
- package/dist/browser/Bridge.d.mts.map +1 -1
- package/dist/browser/Bridge.d.ts +3 -1
- package/dist/browser/Bridge.d.ts.map +1 -1
- package/dist/browser/index.cjs +2 -0
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +2 -0
- package/dist/browser/index.js.map +1 -1
- package/dist/node/Bridge.d.cts +3 -1
- package/dist/node/Bridge.d.cts.map +1 -1
- package/dist/node/Bridge.d.mts +3 -1
- package/dist/node/Bridge.d.mts.map +1 -1
- package/dist/node/Bridge.d.ts +3 -1
- package/dist/node/Bridge.d.ts.map +1 -1
- package/dist/node/index.cjs +5 -0
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +5 -0
- package/dist/node/index.js.map +1 -1
- package/package.json +14 -14
- package/src/Bridge.ts +3 -1
|
@@ -3,11 +3,13 @@ import { Promisable } from '@xylabs/promise';
|
|
|
3
3
|
import { AbstractBridge } from '@xyo-network/abstract-bridge';
|
|
4
4
|
import { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model';
|
|
5
5
|
import { AnyConfigSchema, ModuleInstance } from '@xyo-network/module-model';
|
|
6
|
+
import { Schema } from '@xyo-network/payload-model';
|
|
6
7
|
import { WebsocketBridgeConfig } from './Config';
|
|
7
8
|
import { WebsocketBridgeModuleResolver } from './ModuleResolver';
|
|
8
9
|
export type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> = BridgeParams<TConfig>;
|
|
9
10
|
export declare class WebsocketBridge<TParams extends WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {
|
|
10
|
-
static configSchemas:
|
|
11
|
+
static configSchemas: Schema[];
|
|
12
|
+
static defaultConfigSchema: Schema;
|
|
11
13
|
static maxPayloadSizeWarning: number;
|
|
12
14
|
private _resolver?;
|
|
13
15
|
get resolver(): WebsocketBridgeModuleResolver<import("./ModuleResolver").WebsocketBridgeModuleResolverOptions>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bridge.d.ts","sourceRoot":"","sources":["../../src/Bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"Bridge.d.ts","sourceRoot":"","sources":["../../src/Bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC5F,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,UAAU,CAAA;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAA;AAEhE,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AAEvB,qBACa,eAAe,CAAC,OAAO,SAAS,qBAAqB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC;IAClI,OAAgB,aAAa,EAAE,MAAM,EAAE,CAAwD;IAC/F,OAAgB,mBAAmB,EAAE,MAAM,CAA8B;IACzE,MAAM,CAAC,qBAAqB,SAAY;IAExC,OAAO,CAAC,SAAS,CAAC,CAA+B;IAEjD,IAAa,QAAQ,mGAGpB;IAED,IAAI,GAAG,WAEN;IAEc,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIhD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAIjC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAQtC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;CAGlH"}
|
|
@@ -3,11 +3,13 @@ import { Promisable } from '@xylabs/promise';
|
|
|
3
3
|
import { AbstractBridge } from '@xyo-network/abstract-bridge';
|
|
4
4
|
import { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model';
|
|
5
5
|
import { AnyConfigSchema, ModuleInstance } from '@xyo-network/module-model';
|
|
6
|
+
import { Schema } from '@xyo-network/payload-model';
|
|
6
7
|
import { WebsocketBridgeConfig } from './Config';
|
|
7
8
|
import { WebsocketBridgeModuleResolver } from './ModuleResolver';
|
|
8
9
|
export type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> = BridgeParams<TConfig>;
|
|
9
10
|
export declare class WebsocketBridge<TParams extends WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {
|
|
10
|
-
static configSchemas:
|
|
11
|
+
static configSchemas: Schema[];
|
|
12
|
+
static defaultConfigSchema: Schema;
|
|
11
13
|
static maxPayloadSizeWarning: number;
|
|
12
14
|
private _resolver?;
|
|
13
15
|
get resolver(): WebsocketBridgeModuleResolver<import("./ModuleResolver").WebsocketBridgeModuleResolverOptions>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bridge.d.ts","sourceRoot":"","sources":["../../src/Bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"Bridge.d.ts","sourceRoot":"","sources":["../../src/Bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC5F,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,UAAU,CAAA;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAA;AAEhE,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AAEvB,qBACa,eAAe,CAAC,OAAO,SAAS,qBAAqB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC;IAClI,OAAgB,aAAa,EAAE,MAAM,EAAE,CAAwD;IAC/F,OAAgB,mBAAmB,EAAE,MAAM,CAA8B;IACzE,MAAM,CAAC,qBAAqB,SAAY;IAExC,OAAO,CAAC,SAAS,CAAC,CAA+B;IAEjD,IAAa,QAAQ,mGAGpB;IAED,IAAI,GAAG,WAEN;IAEc,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIhD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAIjC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAQtC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;CAGlH"}
|
package/dist/browser/Bridge.d.ts
CHANGED
|
@@ -3,11 +3,13 @@ import { Promisable } from '@xylabs/promise';
|
|
|
3
3
|
import { AbstractBridge } from '@xyo-network/abstract-bridge';
|
|
4
4
|
import { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model';
|
|
5
5
|
import { AnyConfigSchema, ModuleInstance } from '@xyo-network/module-model';
|
|
6
|
+
import { Schema } from '@xyo-network/payload-model';
|
|
6
7
|
import { WebsocketBridgeConfig } from './Config';
|
|
7
8
|
import { WebsocketBridgeModuleResolver } from './ModuleResolver';
|
|
8
9
|
export type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> = BridgeParams<TConfig>;
|
|
9
10
|
export declare class WebsocketBridge<TParams extends WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {
|
|
10
|
-
static configSchemas:
|
|
11
|
+
static configSchemas: Schema[];
|
|
12
|
+
static defaultConfigSchema: Schema;
|
|
11
13
|
static maxPayloadSizeWarning: number;
|
|
12
14
|
private _resolver?;
|
|
13
15
|
get resolver(): WebsocketBridgeModuleResolver<import("./ModuleResolver").WebsocketBridgeModuleResolverOptions>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bridge.d.ts","sourceRoot":"","sources":["../../src/Bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"Bridge.d.ts","sourceRoot":"","sources":["../../src/Bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC5F,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,UAAU,CAAA;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAA;AAEhE,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AAEvB,qBACa,eAAe,CAAC,OAAO,SAAS,qBAAqB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC;IAClI,OAAgB,aAAa,EAAE,MAAM,EAAE,CAAwD;IAC/F,OAAgB,mBAAmB,EAAE,MAAM,CAA8B;IACzE,MAAM,CAAC,qBAAqB,SAAY;IAExC,OAAO,CAAC,SAAS,CAAC,CAA+B;IAEjD,IAAa,QAAQ,mGAGpB;IAED,IAAI,GAAG,WAEN;IAEc,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIhD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAIjC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAQtC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;CAGlH"}
|
package/dist/browser/index.cjs
CHANGED
|
@@ -131,8 +131,10 @@ var WebsocketBridge = class extends import_abstract_bridge3.AbstractBridge {
|
|
|
131
131
|
__name(this, "WebsocketBridge");
|
|
132
132
|
}
|
|
133
133
|
static configSchemas = [
|
|
134
|
+
...super.configSchemas,
|
|
134
135
|
WebsocketBridgeConfigSchema
|
|
135
136
|
];
|
|
137
|
+
static defaultConfigSchema = WebsocketBridgeConfigSchema;
|
|
136
138
|
static maxPayloadSizeWarning = 256 * 256;
|
|
137
139
|
_resolver;
|
|
138
140
|
get resolver() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/Bridge.ts","../../src/Config.ts","../../src/ModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["export * from './Bridge'\nexport * from './Config'\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractBridge } from '@xyo-network/abstract-bridge'\nimport { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance } from '@xyo-network/module-model'\n\nimport { WebsocketBridgeConfig, WebsocketBridgeConfigSchema } from './Config'\nimport { WebsocketBridgeModuleResolver } from './ModuleResolver'\n\nexport type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> =\n BridgeParams<TConfig>\n\n@creatableModule()\nexport class WebsocketBridge<TParams extends WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override configSchemas = [WebsocketBridgeConfigSchema]\n static maxPayloadSizeWarning = 256 * 256\n\n private _resolver?: WebsocketBridgeModuleResolver\n\n override get resolver() {\n this._resolver = this._resolver ?? new WebsocketBridgeModuleResolver({ bridge: this, root: this, url: this.url, wrapperAccount: this.account })\n return this._resolver\n }\n\n get url() {\n return assertEx(this.config.url, () => 'No Url Set')\n }\n\n override async discoverRoots(): Promise<ModuleInstance[]> {\n return await Promise.resolve([])\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n override async startHandler(): Promise<boolean> {\n const { discoverRoot = true } = this.config\n if (discoverRoot) {\n await this.discoverRoots()\n }\n return true\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WebsocketBridgeConfigSchema = 'network.xyo.bridge.websocket.config'\nexport type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema\n\nexport type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n discoverRoot?: boolean\n /** @deprecated Do not use this for any new development */\n legacyMode?: boolean\n schema: WebsocketBridgeConfigSchema\n url?: string\n } & TConfig,\n TSchema extends string ? TSchema : WebsocketBridgeConfigSchema\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 { asModuleInstance, ModuleConfig, ModuleConfigSchema, ModuleFilterOptions, ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model'\n\nimport { WebsocketModuleProxy, WebsocketModuleProxyParams } from './ModuleProxy'\n\nexport interface WebsocketBridgeModuleResolverOptions extends BridgeModuleResolverParams {\n url: string\n}\n\nexport class WebsocketBridgeModuleResolver<\n T extends WebsocketBridgeModuleResolverOptions = WebsocketBridgeModuleResolverOptions,\n> extends AbstractBridgeModuleResolver<T> {\n moduleUrl(address: Address) {\n return new URL(address, this.params.url)\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult) {\n return parentResult\n }\n if (id === '*') {\n return []\n }\n const idParts = id.split(':')\n const firstPart = assertEx(idParts.shift(), () => 'Missing firstPart')\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 moduleUrl: this.moduleUrl(moduleAddress).href,\n }\n\n //console.log(`creating WebsocketProxy [${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 as = assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n proxy.upResolver.add(as)\n proxy.downResolver.add(as)\n\n if (remainderParts.length > 0) {\n const result = await wrapped.resolve<T>(remainderParts, options)\n return result\n }\n\n //console.log(`resolved: ${proxy.address} [${wrapped.constructor.name}] [${as.constructor.name}]`)\n return as\n }\n}\n","import { 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'\nimport { io as Client } from 'socket.io-client'\n\nexport type WebsocketModuleProxyParams = ModuleProxyParams & {\n client?: typeof Client\n maxPayloadSizeWarning?: number\n moduleUrl: string\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 async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n const { maxPayloadSizeWarning } = this.params\n const payloadSize = JSON.stringify([query, payloads]).length\n if (maxPayloadSizeWarning && payloadSize > maxPayloadSizeWarning) {\n this.logger?.warn(\n `Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${this.moduleAddress}] [${query.schema}] [${payloads?.length}]`,\n )\n }\n await Promise.resolve()\n throw new Error('Unsupported')\n }\n}\n"],"mappings":"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","names":["import_assert","import_abstract_bridge","import_module_model","WebsocketBridgeConfigSchema","import_abstract_bridge","WebsocketModuleProxy","AbstractModuleProxy","proxyQueryHandler","query","payloads","maxPayloadSizeWarning","params","payloadSize","JSON","stringify","length","logger","warn","address","moduleAddress","schema","Promise","resolve","Error","WebsocketBridgeModuleResolver","AbstractBridgeModuleResolver","moduleUrl","address","URL","params","url","resolveHandler","id","options","parentResult","idParts","split","firstPart","assertEx","shift","moduleAddress","isAddress","remainderParts","join","account","Account","randomSync","config","schema","ModuleConfigSchema","host","href","proxy","WebsocketModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","as","asModuleInstance","upResolver","add","downResolver","length","result","resolve","WebsocketBridge","AbstractBridge","configSchemas","WebsocketBridgeConfigSchema","maxPayloadSizeWarning","_resolver","resolver","WebsocketBridgeModuleResolver","bridge","root","url","wrapperAccount","account","assertEx","config","discoverRoots","Promise","resolve","exposeHandler","_id","_options","Error","exposedHandler","startHandler","discoverRoot","unexposeHandler","creatableModule"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/Bridge.ts","../../src/Config.ts","../../src/ModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["export * from './Bridge'\nexport * from './Config'\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractBridge } from '@xyo-network/abstract-bridge'\nimport { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance } from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { WebsocketBridgeConfig, WebsocketBridgeConfigSchema } from './Config'\nimport { WebsocketBridgeModuleResolver } from './ModuleResolver'\n\nexport type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> =\n BridgeParams<TConfig>\n\n@creatableModule()\nexport class WebsocketBridge<TParams extends WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override configSchemas: Schema[] = [...super.configSchemas, WebsocketBridgeConfigSchema]\n static override defaultConfigSchema: Schema = WebsocketBridgeConfigSchema\n static maxPayloadSizeWarning = 256 * 256\n\n private _resolver?: WebsocketBridgeModuleResolver\n\n override get resolver() {\n this._resolver = this._resolver ?? new WebsocketBridgeModuleResolver({ bridge: this, root: this, url: this.url, wrapperAccount: this.account })\n return this._resolver\n }\n\n get url() {\n return assertEx(this.config.url, () => 'No Url Set')\n }\n\n override async discoverRoots(): Promise<ModuleInstance[]> {\n return await Promise.resolve([])\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n override async startHandler(): Promise<boolean> {\n const { discoverRoot = true } = this.config\n if (discoverRoot) {\n await this.discoverRoots()\n }\n return true\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WebsocketBridgeConfigSchema = 'network.xyo.bridge.websocket.config'\nexport type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema\n\nexport type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n discoverRoot?: boolean\n /** @deprecated Do not use this for any new development */\n legacyMode?: boolean\n schema: WebsocketBridgeConfigSchema\n url?: string\n } & TConfig,\n TSchema extends string ? TSchema : WebsocketBridgeConfigSchema\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 { asModuleInstance, ModuleConfig, ModuleConfigSchema, ModuleFilterOptions, ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model'\n\nimport { WebsocketModuleProxy, WebsocketModuleProxyParams } from './ModuleProxy'\n\nexport interface WebsocketBridgeModuleResolverOptions extends BridgeModuleResolverParams {\n url: string\n}\n\nexport class WebsocketBridgeModuleResolver<\n T extends WebsocketBridgeModuleResolverOptions = WebsocketBridgeModuleResolverOptions,\n> extends AbstractBridgeModuleResolver<T> {\n moduleUrl(address: Address) {\n return new URL(address, this.params.url)\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult) {\n return parentResult\n }\n if (id === '*') {\n return []\n }\n const idParts = id.split(':')\n const firstPart = assertEx(idParts.shift(), () => 'Missing firstPart')\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 moduleUrl: this.moduleUrl(moduleAddress).href,\n }\n\n //console.log(`creating WebsocketProxy [${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 as = assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n proxy.upResolver.add(as)\n proxy.downResolver.add(as)\n\n if (remainderParts.length > 0) {\n const result = await wrapped.resolve<T>(remainderParts, options)\n return result\n }\n\n //console.log(`resolved: ${proxy.address} [${wrapped.constructor.name}] [${as.constructor.name}]`)\n return as\n }\n}\n","import { 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'\nimport { io as Client } from 'socket.io-client'\n\nexport type WebsocketModuleProxyParams = ModuleProxyParams & {\n client?: typeof Client\n maxPayloadSizeWarning?: number\n moduleUrl: string\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 async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n const { maxPayloadSizeWarning } = this.params\n const payloadSize = JSON.stringify([query, payloads]).length\n if (maxPayloadSizeWarning && payloadSize > maxPayloadSizeWarning) {\n this.logger?.warn(\n `Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${this.moduleAddress}] [${query.schema}] [${payloads?.length}]`,\n )\n }\n await Promise.resolve()\n throw new Error('Unsupported')\n }\n}\n"],"mappings":"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","names":["import_assert","import_abstract_bridge","import_module_model","WebsocketBridgeConfigSchema","import_abstract_bridge","WebsocketModuleProxy","AbstractModuleProxy","proxyQueryHandler","query","payloads","maxPayloadSizeWarning","params","payloadSize","JSON","stringify","length","logger","warn","address","moduleAddress","schema","Promise","resolve","Error","WebsocketBridgeModuleResolver","AbstractBridgeModuleResolver","moduleUrl","address","URL","params","url","resolveHandler","id","options","parentResult","idParts","split","firstPart","assertEx","shift","moduleAddress","isAddress","remainderParts","join","account","Account","randomSync","config","schema","ModuleConfigSchema","host","href","proxy","WebsocketModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","as","asModuleInstance","upResolver","add","downResolver","length","result","resolve","WebsocketBridge","AbstractBridge","configSchemas","WebsocketBridgeConfigSchema","defaultConfigSchema","maxPayloadSizeWarning","_resolver","resolver","WebsocketBridgeModuleResolver","bridge","root","url","wrapperAccount","account","assertEx","config","discoverRoots","Promise","resolve","exposeHandler","_id","_options","Error","exposedHandler","startHandler","discoverRoot","unexposeHandler","creatableModule"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -106,8 +106,10 @@ var WebsocketBridge = class extends AbstractBridge {
|
|
|
106
106
|
__name(this, "WebsocketBridge");
|
|
107
107
|
}
|
|
108
108
|
static configSchemas = [
|
|
109
|
+
...super.configSchemas,
|
|
109
110
|
WebsocketBridgeConfigSchema
|
|
110
111
|
];
|
|
112
|
+
static defaultConfigSchema = WebsocketBridgeConfigSchema;
|
|
111
113
|
static maxPayloadSizeWarning = 256 * 256;
|
|
112
114
|
_resolver;
|
|
113
115
|
get resolver() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Bridge.ts","../../src/Config.ts","../../src/ModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractBridge } from '@xyo-network/abstract-bridge'\nimport { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance } from '@xyo-network/module-model'\n\nimport { WebsocketBridgeConfig, WebsocketBridgeConfigSchema } from './Config'\nimport { WebsocketBridgeModuleResolver } from './ModuleResolver'\n\nexport type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> =\n BridgeParams<TConfig>\n\n@creatableModule()\nexport class WebsocketBridge<TParams extends WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override configSchemas = [WebsocketBridgeConfigSchema]\n static maxPayloadSizeWarning = 256 * 256\n\n private _resolver?: WebsocketBridgeModuleResolver\n\n override get resolver() {\n this._resolver = this._resolver ?? new WebsocketBridgeModuleResolver({ bridge: this, root: this, url: this.url, wrapperAccount: this.account })\n return this._resolver\n }\n\n get url() {\n return assertEx(this.config.url, () => 'No Url Set')\n }\n\n override async discoverRoots(): Promise<ModuleInstance[]> {\n return await Promise.resolve([])\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n override async startHandler(): Promise<boolean> {\n const { discoverRoot = true } = this.config\n if (discoverRoot) {\n await this.discoverRoots()\n }\n return true\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WebsocketBridgeConfigSchema = 'network.xyo.bridge.websocket.config'\nexport type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema\n\nexport type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n discoverRoot?: boolean\n /** @deprecated Do not use this for any new development */\n legacyMode?: boolean\n schema: WebsocketBridgeConfigSchema\n url?: string\n } & TConfig,\n TSchema extends string ? TSchema : WebsocketBridgeConfigSchema\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 { asModuleInstance, ModuleConfig, ModuleConfigSchema, ModuleFilterOptions, ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model'\n\nimport { WebsocketModuleProxy, WebsocketModuleProxyParams } from './ModuleProxy'\n\nexport interface WebsocketBridgeModuleResolverOptions extends BridgeModuleResolverParams {\n url: string\n}\n\nexport class WebsocketBridgeModuleResolver<\n T extends WebsocketBridgeModuleResolverOptions = WebsocketBridgeModuleResolverOptions,\n> extends AbstractBridgeModuleResolver<T> {\n moduleUrl(address: Address) {\n return new URL(address, this.params.url)\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult) {\n return parentResult\n }\n if (id === '*') {\n return []\n }\n const idParts = id.split(':')\n const firstPart = assertEx(idParts.shift(), () => 'Missing firstPart')\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 moduleUrl: this.moduleUrl(moduleAddress).href,\n }\n\n //console.log(`creating WebsocketProxy [${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 as = assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n proxy.upResolver.add(as)\n proxy.downResolver.add(as)\n\n if (remainderParts.length > 0) {\n const result = await wrapped.resolve<T>(remainderParts, options)\n return result\n }\n\n //console.log(`resolved: ${proxy.address} [${wrapped.constructor.name}] [${as.constructor.name}]`)\n return as\n }\n}\n","import { 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'\nimport { io as Client } from 'socket.io-client'\n\nexport type WebsocketModuleProxyParams = ModuleProxyParams & {\n client?: typeof Client\n maxPayloadSizeWarning?: number\n moduleUrl: string\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 async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n const { maxPayloadSizeWarning } = this.params\n const payloadSize = JSON.stringify([query, payloads]).length\n if (maxPayloadSizeWarning && payloadSize > maxPayloadSizeWarning) {\n this.logger?.warn(\n `Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${this.moduleAddress}] [${query.schema}] [${payloads?.length}]`,\n )\n }\n await Promise.resolve()\n throw new Error('Unsupported')\n }\n}\n"],"mappings":"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","names":["assertEx","AbstractBridge","creatableModule","WebsocketBridgeConfigSchema","assertEx","isAddress","AbstractBridgeModuleResolver","wrapModuleWithType","Account","ConfigSchema","asModuleInstance","ModuleConfigSchema","AbstractModuleProxy","WebsocketModuleProxy","AbstractModuleProxy","proxyQueryHandler","query","payloads","maxPayloadSizeWarning","params","payloadSize","JSON","stringify","length","logger","warn","address","moduleAddress","schema","Promise","resolve","Error","WebsocketBridgeModuleResolver","AbstractBridgeModuleResolver","moduleUrl","address","URL","params","url","resolveHandler","id","options","parentResult","idParts","split","firstPart","assertEx","shift","moduleAddress","isAddress","remainderParts","join","account","Account","randomSync","config","schema","ModuleConfigSchema","host","href","proxy","WebsocketModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","as","asModuleInstance","upResolver","add","downResolver","length","result","resolve","WebsocketBridge","AbstractBridge","configSchemas","WebsocketBridgeConfigSchema","maxPayloadSizeWarning","_resolver","resolver","WebsocketBridgeModuleResolver","bridge","root","url","wrapperAccount","account","assertEx","config","discoverRoots","Promise","resolve","exposeHandler","_id","_options","Error","exposedHandler","startHandler","discoverRoot","unexposeHandler","creatableModule"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Bridge.ts","../../src/Config.ts","../../src/ModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractBridge } from '@xyo-network/abstract-bridge'\nimport { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance } from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { WebsocketBridgeConfig, WebsocketBridgeConfigSchema } from './Config'\nimport { WebsocketBridgeModuleResolver } from './ModuleResolver'\n\nexport type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> =\n BridgeParams<TConfig>\n\n@creatableModule()\nexport class WebsocketBridge<TParams extends WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override configSchemas: Schema[] = [...super.configSchemas, WebsocketBridgeConfigSchema]\n static override defaultConfigSchema: Schema = WebsocketBridgeConfigSchema\n static maxPayloadSizeWarning = 256 * 256\n\n private _resolver?: WebsocketBridgeModuleResolver\n\n override get resolver() {\n this._resolver = this._resolver ?? new WebsocketBridgeModuleResolver({ bridge: this, root: this, url: this.url, wrapperAccount: this.account })\n return this._resolver\n }\n\n get url() {\n return assertEx(this.config.url, () => 'No Url Set')\n }\n\n override async discoverRoots(): Promise<ModuleInstance[]> {\n return await Promise.resolve([])\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n override async startHandler(): Promise<boolean> {\n const { discoverRoot = true } = this.config\n if (discoverRoot) {\n await this.discoverRoots()\n }\n return true\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WebsocketBridgeConfigSchema = 'network.xyo.bridge.websocket.config'\nexport type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema\n\nexport type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n discoverRoot?: boolean\n /** @deprecated Do not use this for any new development */\n legacyMode?: boolean\n schema: WebsocketBridgeConfigSchema\n url?: string\n } & TConfig,\n TSchema extends string ? TSchema : WebsocketBridgeConfigSchema\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 { asModuleInstance, ModuleConfig, ModuleConfigSchema, ModuleFilterOptions, ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model'\n\nimport { WebsocketModuleProxy, WebsocketModuleProxyParams } from './ModuleProxy'\n\nexport interface WebsocketBridgeModuleResolverOptions extends BridgeModuleResolverParams {\n url: string\n}\n\nexport class WebsocketBridgeModuleResolver<\n T extends WebsocketBridgeModuleResolverOptions = WebsocketBridgeModuleResolverOptions,\n> extends AbstractBridgeModuleResolver<T> {\n moduleUrl(address: Address) {\n return new URL(address, this.params.url)\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult) {\n return parentResult\n }\n if (id === '*') {\n return []\n }\n const idParts = id.split(':')\n const firstPart = assertEx(idParts.shift(), () => 'Missing firstPart')\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 moduleUrl: this.moduleUrl(moduleAddress).href,\n }\n\n //console.log(`creating WebsocketProxy [${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 as = assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n proxy.upResolver.add(as)\n proxy.downResolver.add(as)\n\n if (remainderParts.length > 0) {\n const result = await wrapped.resolve<T>(remainderParts, options)\n return result\n }\n\n //console.log(`resolved: ${proxy.address} [${wrapped.constructor.name}] [${as.constructor.name}]`)\n return as\n }\n}\n","import { 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'\nimport { io as Client } from 'socket.io-client'\n\nexport type WebsocketModuleProxyParams = ModuleProxyParams & {\n client?: typeof Client\n maxPayloadSizeWarning?: number\n moduleUrl: string\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 async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n const { maxPayloadSizeWarning } = this.params\n const payloadSize = JSON.stringify([query, payloads]).length\n if (maxPayloadSizeWarning && payloadSize > maxPayloadSizeWarning) {\n this.logger?.warn(\n `Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${this.moduleAddress}] [${query.schema}] [${payloads?.length}]`,\n )\n }\n await Promise.resolve()\n throw new Error('Unsupported')\n }\n}\n"],"mappings":"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","names":["assertEx","AbstractBridge","creatableModule","WebsocketBridgeConfigSchema","assertEx","isAddress","AbstractBridgeModuleResolver","wrapModuleWithType","Account","ConfigSchema","asModuleInstance","ModuleConfigSchema","AbstractModuleProxy","WebsocketModuleProxy","AbstractModuleProxy","proxyQueryHandler","query","payloads","maxPayloadSizeWarning","params","payloadSize","JSON","stringify","length","logger","warn","address","moduleAddress","schema","Promise","resolve","Error","WebsocketBridgeModuleResolver","AbstractBridgeModuleResolver","moduleUrl","address","URL","params","url","resolveHandler","id","options","parentResult","idParts","split","firstPart","assertEx","shift","moduleAddress","isAddress","remainderParts","join","account","Account","randomSync","config","schema","ModuleConfigSchema","host","href","proxy","WebsocketModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","as","asModuleInstance","upResolver","add","downResolver","length","result","resolve","WebsocketBridge","AbstractBridge","configSchemas","WebsocketBridgeConfigSchema","defaultConfigSchema","maxPayloadSizeWarning","_resolver","resolver","WebsocketBridgeModuleResolver","bridge","root","url","wrapperAccount","account","assertEx","config","discoverRoots","Promise","resolve","exposeHandler","_id","_options","Error","exposedHandler","startHandler","discoverRoot","unexposeHandler","creatableModule"]}
|
package/dist/node/Bridge.d.cts
CHANGED
|
@@ -3,11 +3,13 @@ import { Promisable } from '@xylabs/promise';
|
|
|
3
3
|
import { AbstractBridge } from '@xyo-network/abstract-bridge';
|
|
4
4
|
import { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model';
|
|
5
5
|
import { AnyConfigSchema, ModuleInstance } from '@xyo-network/module-model';
|
|
6
|
+
import { Schema } from '@xyo-network/payload-model';
|
|
6
7
|
import { WebsocketBridgeConfig } from './Config';
|
|
7
8
|
import { WebsocketBridgeModuleResolver } from './ModuleResolver';
|
|
8
9
|
export type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> = BridgeParams<TConfig>;
|
|
9
10
|
export declare class WebsocketBridge<TParams extends WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {
|
|
10
|
-
static configSchemas:
|
|
11
|
+
static configSchemas: Schema[];
|
|
12
|
+
static defaultConfigSchema: Schema;
|
|
11
13
|
static maxPayloadSizeWarning: number;
|
|
12
14
|
private _resolver?;
|
|
13
15
|
get resolver(): WebsocketBridgeModuleResolver<import("./ModuleResolver").WebsocketBridgeModuleResolverOptions>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bridge.d.ts","sourceRoot":"","sources":["../../src/Bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"Bridge.d.ts","sourceRoot":"","sources":["../../src/Bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC5F,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,UAAU,CAAA;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAA;AAEhE,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AAEvB,qBACa,eAAe,CAAC,OAAO,SAAS,qBAAqB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC;IAClI,OAAgB,aAAa,EAAE,MAAM,EAAE,CAAwD;IAC/F,OAAgB,mBAAmB,EAAE,MAAM,CAA8B;IACzE,MAAM,CAAC,qBAAqB,SAAY;IAExC,OAAO,CAAC,SAAS,CAAC,CAA+B;IAEjD,IAAa,QAAQ,mGAGpB;IAED,IAAI,GAAG,WAEN;IAEc,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIhD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAIjC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAQtC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;CAGlH"}
|
package/dist/node/Bridge.d.mts
CHANGED
|
@@ -3,11 +3,13 @@ import { Promisable } from '@xylabs/promise';
|
|
|
3
3
|
import { AbstractBridge } from '@xyo-network/abstract-bridge';
|
|
4
4
|
import { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model';
|
|
5
5
|
import { AnyConfigSchema, ModuleInstance } from '@xyo-network/module-model';
|
|
6
|
+
import { Schema } from '@xyo-network/payload-model';
|
|
6
7
|
import { WebsocketBridgeConfig } from './Config';
|
|
7
8
|
import { WebsocketBridgeModuleResolver } from './ModuleResolver';
|
|
8
9
|
export type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> = BridgeParams<TConfig>;
|
|
9
10
|
export declare class WebsocketBridge<TParams extends WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {
|
|
10
|
-
static configSchemas:
|
|
11
|
+
static configSchemas: Schema[];
|
|
12
|
+
static defaultConfigSchema: Schema;
|
|
11
13
|
static maxPayloadSizeWarning: number;
|
|
12
14
|
private _resolver?;
|
|
13
15
|
get resolver(): WebsocketBridgeModuleResolver<import("./ModuleResolver").WebsocketBridgeModuleResolverOptions>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bridge.d.ts","sourceRoot":"","sources":["../../src/Bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"Bridge.d.ts","sourceRoot":"","sources":["../../src/Bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC5F,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,UAAU,CAAA;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAA;AAEhE,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AAEvB,qBACa,eAAe,CAAC,OAAO,SAAS,qBAAqB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC;IAClI,OAAgB,aAAa,EAAE,MAAM,EAAE,CAAwD;IAC/F,OAAgB,mBAAmB,EAAE,MAAM,CAA8B;IACzE,MAAM,CAAC,qBAAqB,SAAY;IAExC,OAAO,CAAC,SAAS,CAAC,CAA+B;IAEjD,IAAa,QAAQ,mGAGpB;IAED,IAAI,GAAG,WAEN;IAEc,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIhD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAIjC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAQtC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;CAGlH"}
|
package/dist/node/Bridge.d.ts
CHANGED
|
@@ -3,11 +3,13 @@ import { Promisable } from '@xylabs/promise';
|
|
|
3
3
|
import { AbstractBridge } from '@xyo-network/abstract-bridge';
|
|
4
4
|
import { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model';
|
|
5
5
|
import { AnyConfigSchema, ModuleInstance } from '@xyo-network/module-model';
|
|
6
|
+
import { Schema } from '@xyo-network/payload-model';
|
|
6
7
|
import { WebsocketBridgeConfig } from './Config';
|
|
7
8
|
import { WebsocketBridgeModuleResolver } from './ModuleResolver';
|
|
8
9
|
export type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> = BridgeParams<TConfig>;
|
|
9
10
|
export declare class WebsocketBridge<TParams extends WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {
|
|
10
|
-
static configSchemas:
|
|
11
|
+
static configSchemas: Schema[];
|
|
12
|
+
static defaultConfigSchema: Schema;
|
|
11
13
|
static maxPayloadSizeWarning: number;
|
|
12
14
|
private _resolver?;
|
|
13
15
|
get resolver(): WebsocketBridgeModuleResolver<import("./ModuleResolver").WebsocketBridgeModuleResolverOptions>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bridge.d.ts","sourceRoot":"","sources":["../../src/Bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"Bridge.d.ts","sourceRoot":"","sources":["../../src/Bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC5F,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,UAAU,CAAA;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAA;AAEhE,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AAEvB,qBACa,eAAe,CAAC,OAAO,SAAS,qBAAqB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC;IAClI,OAAgB,aAAa,EAAE,MAAM,EAAE,CAAwD;IAC/F,OAAgB,mBAAmB,EAAE,MAAM,CAA8B;IACzE,MAAM,CAAC,qBAAqB,SAAY;IAExC,OAAO,CAAC,SAAS,CAAC,CAA+B;IAEjD,IAAa,QAAQ,mGAGpB;IAED,IAAI,GAAG,WAEN;IAEc,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIhD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAIjC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAQtC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;CAGlH"}
|
package/dist/node/index.cjs
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __reflectGet = Reflect.get;
|
|
6
8
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
9
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
8
10
|
var __export = (target, all) => {
|
|
@@ -22,6 +24,7 @@ var __publicField = (obj, key, value) => {
|
|
|
22
24
|
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
23
25
|
return value;
|
|
24
26
|
};
|
|
27
|
+
var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
|
|
25
28
|
|
|
26
29
|
// src/index.ts
|
|
27
30
|
var src_exports = {};
|
|
@@ -167,8 +170,10 @@ var _WebsocketBridge = class _WebsocketBridge extends import_abstract_bridge3.Ab
|
|
|
167
170
|
};
|
|
168
171
|
__name(_WebsocketBridge, "WebsocketBridge");
|
|
169
172
|
__publicField(_WebsocketBridge, "configSchemas", [
|
|
173
|
+
...__superGet(_WebsocketBridge, _WebsocketBridge, "configSchemas"),
|
|
170
174
|
WebsocketBridgeConfigSchema
|
|
171
175
|
]);
|
|
176
|
+
__publicField(_WebsocketBridge, "defaultConfigSchema", WebsocketBridgeConfigSchema);
|
|
172
177
|
__publicField(_WebsocketBridge, "maxPayloadSizeWarning", 256 * 256);
|
|
173
178
|
var WebsocketBridge = _WebsocketBridge;
|
|
174
179
|
WebsocketBridge = _ts_decorate([
|
package/dist/node/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/Bridge.ts","../../src/Config.ts","../../src/ModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["export * from './Bridge'\nexport * from './Config'\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractBridge } from '@xyo-network/abstract-bridge'\nimport { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance } from '@xyo-network/module-model'\n\nimport { WebsocketBridgeConfig, WebsocketBridgeConfigSchema } from './Config'\nimport { WebsocketBridgeModuleResolver } from './ModuleResolver'\n\nexport type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> =\n BridgeParams<TConfig>\n\n@creatableModule()\nexport class WebsocketBridge<TParams extends WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override configSchemas = [WebsocketBridgeConfigSchema]\n static maxPayloadSizeWarning = 256 * 256\n\n private _resolver?: WebsocketBridgeModuleResolver\n\n override get resolver() {\n this._resolver = this._resolver ?? new WebsocketBridgeModuleResolver({ bridge: this, root: this, url: this.url, wrapperAccount: this.account })\n return this._resolver\n }\n\n get url() {\n return assertEx(this.config.url, () => 'No Url Set')\n }\n\n override async discoverRoots(): Promise<ModuleInstance[]> {\n return await Promise.resolve([])\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n override async startHandler(): Promise<boolean> {\n const { discoverRoot = true } = this.config\n if (discoverRoot) {\n await this.discoverRoots()\n }\n return true\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WebsocketBridgeConfigSchema = 'network.xyo.bridge.websocket.config'\nexport type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema\n\nexport type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n discoverRoot?: boolean\n /** @deprecated Do not use this for any new development */\n legacyMode?: boolean\n schema: WebsocketBridgeConfigSchema\n url?: string\n } & TConfig,\n TSchema extends string ? TSchema : WebsocketBridgeConfigSchema\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 { asModuleInstance, ModuleConfig, ModuleConfigSchema, ModuleFilterOptions, ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model'\n\nimport { WebsocketModuleProxy, WebsocketModuleProxyParams } from './ModuleProxy'\n\nexport interface WebsocketBridgeModuleResolverOptions extends BridgeModuleResolverParams {\n url: string\n}\n\nexport class WebsocketBridgeModuleResolver<\n T extends WebsocketBridgeModuleResolverOptions = WebsocketBridgeModuleResolverOptions,\n> extends AbstractBridgeModuleResolver<T> {\n moduleUrl(address: Address) {\n return new URL(address, this.params.url)\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult) {\n return parentResult\n }\n if (id === '*') {\n return []\n }\n const idParts = id.split(':')\n const firstPart = assertEx(idParts.shift(), () => 'Missing firstPart')\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 moduleUrl: this.moduleUrl(moduleAddress).href,\n }\n\n //console.log(`creating WebsocketProxy [${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 as = assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n proxy.upResolver.add(as)\n proxy.downResolver.add(as)\n\n if (remainderParts.length > 0) {\n const result = await wrapped.resolve<T>(remainderParts, options)\n return result\n }\n\n //console.log(`resolved: ${proxy.address} [${wrapped.constructor.name}] [${as.constructor.name}]`)\n return as\n }\n}\n","import { 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'\nimport { io as Client } from 'socket.io-client'\n\nexport type WebsocketModuleProxyParams = ModuleProxyParams & {\n client?: typeof Client\n maxPayloadSizeWarning?: number\n moduleUrl: string\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 async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n const { maxPayloadSizeWarning } = this.params\n const payloadSize = JSON.stringify([query, payloads]).length\n if (maxPayloadSizeWarning && payloadSize > maxPayloadSizeWarning) {\n this.logger?.warn(\n `Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${this.moduleAddress}] [${query.schema}] [${payloads?.length}]`,\n )\n }\n await Promise.resolve()\n throw new Error('Unsupported')\n }\n}\n"],"mappings":"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","names":["import_assert","import_abstract_bridge","import_module_model","WebsocketBridgeConfigSchema","import_abstract_bridge","WebsocketModuleProxy","AbstractModuleProxy","proxyQueryHandler","query","payloads","maxPayloadSizeWarning","params","payloadSize","JSON","stringify","length","logger","warn","address","moduleAddress","schema","Promise","resolve","Error","WebsocketBridgeModuleResolver","AbstractBridgeModuleResolver","moduleUrl","address","URL","params","url","resolveHandler","id","options","parentResult","idParts","split","firstPart","assertEx","shift","moduleAddress","isAddress","remainderParts","join","account","Account","randomSync","config","schema","ModuleConfigSchema","host","href","proxy","WebsocketModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","as","asModuleInstance","upResolver","add","downResolver","length","result","resolve","WebsocketBridge","AbstractBridge","_resolver","resolver","WebsocketBridgeModuleResolver","bridge","root","url","wrapperAccount","account","assertEx","config","discoverRoots","Promise","resolve","exposeHandler","_id","_options","Error","exposedHandler","startHandler","discoverRoot","unexposeHandler","configSchemas","WebsocketBridgeConfigSchema","maxPayloadSizeWarning","creatableModule"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/Bridge.ts","../../src/Config.ts","../../src/ModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["export * from './Bridge'\nexport * from './Config'\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractBridge } from '@xyo-network/abstract-bridge'\nimport { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance } from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { WebsocketBridgeConfig, WebsocketBridgeConfigSchema } from './Config'\nimport { WebsocketBridgeModuleResolver } from './ModuleResolver'\n\nexport type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> =\n BridgeParams<TConfig>\n\n@creatableModule()\nexport class WebsocketBridge<TParams extends WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override configSchemas: Schema[] = [...super.configSchemas, WebsocketBridgeConfigSchema]\n static override defaultConfigSchema: Schema = WebsocketBridgeConfigSchema\n static maxPayloadSizeWarning = 256 * 256\n\n private _resolver?: WebsocketBridgeModuleResolver\n\n override get resolver() {\n this._resolver = this._resolver ?? new WebsocketBridgeModuleResolver({ bridge: this, root: this, url: this.url, wrapperAccount: this.account })\n return this._resolver\n }\n\n get url() {\n return assertEx(this.config.url, () => 'No Url Set')\n }\n\n override async discoverRoots(): Promise<ModuleInstance[]> {\n return await Promise.resolve([])\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n override async startHandler(): Promise<boolean> {\n const { discoverRoot = true } = this.config\n if (discoverRoot) {\n await this.discoverRoots()\n }\n return true\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WebsocketBridgeConfigSchema = 'network.xyo.bridge.websocket.config'\nexport type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema\n\nexport type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n discoverRoot?: boolean\n /** @deprecated Do not use this for any new development */\n legacyMode?: boolean\n schema: WebsocketBridgeConfigSchema\n url?: string\n } & TConfig,\n TSchema extends string ? TSchema : WebsocketBridgeConfigSchema\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 { asModuleInstance, ModuleConfig, ModuleConfigSchema, ModuleFilterOptions, ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model'\n\nimport { WebsocketModuleProxy, WebsocketModuleProxyParams } from './ModuleProxy'\n\nexport interface WebsocketBridgeModuleResolverOptions extends BridgeModuleResolverParams {\n url: string\n}\n\nexport class WebsocketBridgeModuleResolver<\n T extends WebsocketBridgeModuleResolverOptions = WebsocketBridgeModuleResolverOptions,\n> extends AbstractBridgeModuleResolver<T> {\n moduleUrl(address: Address) {\n return new URL(address, this.params.url)\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult) {\n return parentResult\n }\n if (id === '*') {\n return []\n }\n const idParts = id.split(':')\n const firstPart = assertEx(idParts.shift(), () => 'Missing firstPart')\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 moduleUrl: this.moduleUrl(moduleAddress).href,\n }\n\n //console.log(`creating WebsocketProxy [${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 as = assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n proxy.upResolver.add(as)\n proxy.downResolver.add(as)\n\n if (remainderParts.length > 0) {\n const result = await wrapped.resolve<T>(remainderParts, options)\n return result\n }\n\n //console.log(`resolved: ${proxy.address} [${wrapped.constructor.name}] [${as.constructor.name}]`)\n return as\n }\n}\n","import { 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'\nimport { io as Client } from 'socket.io-client'\n\nexport type WebsocketModuleProxyParams = ModuleProxyParams & {\n client?: typeof Client\n maxPayloadSizeWarning?: number\n moduleUrl: string\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 async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n const { maxPayloadSizeWarning } = this.params\n const payloadSize = JSON.stringify([query, payloads]).length\n if (maxPayloadSizeWarning && payloadSize > maxPayloadSizeWarning) {\n this.logger?.warn(\n `Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${this.moduleAddress}] [${query.schema}] [${payloads?.length}]`,\n )\n }\n await Promise.resolve()\n throw new Error('Unsupported')\n }\n}\n"],"mappings":"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","names":["import_assert","import_abstract_bridge","import_module_model","WebsocketBridgeConfigSchema","import_abstract_bridge","WebsocketModuleProxy","AbstractModuleProxy","proxyQueryHandler","query","payloads","maxPayloadSizeWarning","params","payloadSize","JSON","stringify","length","logger","warn","address","moduleAddress","schema","Promise","resolve","Error","WebsocketBridgeModuleResolver","AbstractBridgeModuleResolver","moduleUrl","address","URL","params","url","resolveHandler","id","options","parentResult","idParts","split","firstPart","assertEx","shift","moduleAddress","isAddress","remainderParts","join","account","Account","randomSync","config","schema","ModuleConfigSchema","host","href","proxy","WebsocketModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","as","asModuleInstance","upResolver","add","downResolver","length","result","resolve","WebsocketBridge","AbstractBridge","_resolver","resolver","WebsocketBridgeModuleResolver","bridge","root","url","wrapperAccount","account","assertEx","config","discoverRoots","Promise","resolve","exposeHandler","_id","_options","Error","exposedHandler","startHandler","discoverRoot","unexposeHandler","configSchemas","WebsocketBridgeConfigSchema","defaultConfigSchema","maxPayloadSizeWarning","creatableModule"]}
|
package/dist/node/index.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
3
|
+
var __reflectGet = Reflect.get;
|
|
2
4
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
5
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
4
6
|
var __publicField = (obj, key, value) => {
|
|
5
7
|
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
6
8
|
return value;
|
|
7
9
|
};
|
|
10
|
+
var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
|
|
8
11
|
|
|
9
12
|
// src/Bridge.ts
|
|
10
13
|
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
@@ -142,8 +145,10 @@ var _WebsocketBridge = class _WebsocketBridge extends AbstractBridge {
|
|
|
142
145
|
};
|
|
143
146
|
__name(_WebsocketBridge, "WebsocketBridge");
|
|
144
147
|
__publicField(_WebsocketBridge, "configSchemas", [
|
|
148
|
+
...__superGet(_WebsocketBridge, _WebsocketBridge, "configSchemas"),
|
|
145
149
|
WebsocketBridgeConfigSchema
|
|
146
150
|
]);
|
|
151
|
+
__publicField(_WebsocketBridge, "defaultConfigSchema", WebsocketBridgeConfigSchema);
|
|
147
152
|
__publicField(_WebsocketBridge, "maxPayloadSizeWarning", 256 * 256);
|
|
148
153
|
var WebsocketBridge = _WebsocketBridge;
|
|
149
154
|
WebsocketBridge = _ts_decorate([
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Bridge.ts","../../src/Config.ts","../../src/ModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractBridge } from '@xyo-network/abstract-bridge'\nimport { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance } from '@xyo-network/module-model'\n\nimport { WebsocketBridgeConfig, WebsocketBridgeConfigSchema } from './Config'\nimport { WebsocketBridgeModuleResolver } from './ModuleResolver'\n\nexport type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> =\n BridgeParams<TConfig>\n\n@creatableModule()\nexport class WebsocketBridge<TParams extends WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override configSchemas = [WebsocketBridgeConfigSchema]\n static maxPayloadSizeWarning = 256 * 256\n\n private _resolver?: WebsocketBridgeModuleResolver\n\n override get resolver() {\n this._resolver = this._resolver ?? new WebsocketBridgeModuleResolver({ bridge: this, root: this, url: this.url, wrapperAccount: this.account })\n return this._resolver\n }\n\n get url() {\n return assertEx(this.config.url, () => 'No Url Set')\n }\n\n override async discoverRoots(): Promise<ModuleInstance[]> {\n return await Promise.resolve([])\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n override async startHandler(): Promise<boolean> {\n const { discoverRoot = true } = this.config\n if (discoverRoot) {\n await this.discoverRoots()\n }\n return true\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WebsocketBridgeConfigSchema = 'network.xyo.bridge.websocket.config'\nexport type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema\n\nexport type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n discoverRoot?: boolean\n /** @deprecated Do not use this for any new development */\n legacyMode?: boolean\n schema: WebsocketBridgeConfigSchema\n url?: string\n } & TConfig,\n TSchema extends string ? TSchema : WebsocketBridgeConfigSchema\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 { asModuleInstance, ModuleConfig, ModuleConfigSchema, ModuleFilterOptions, ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model'\n\nimport { WebsocketModuleProxy, WebsocketModuleProxyParams } from './ModuleProxy'\n\nexport interface WebsocketBridgeModuleResolverOptions extends BridgeModuleResolverParams {\n url: string\n}\n\nexport class WebsocketBridgeModuleResolver<\n T extends WebsocketBridgeModuleResolverOptions = WebsocketBridgeModuleResolverOptions,\n> extends AbstractBridgeModuleResolver<T> {\n moduleUrl(address: Address) {\n return new URL(address, this.params.url)\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult) {\n return parentResult\n }\n if (id === '*') {\n return []\n }\n const idParts = id.split(':')\n const firstPart = assertEx(idParts.shift(), () => 'Missing firstPart')\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 moduleUrl: this.moduleUrl(moduleAddress).href,\n }\n\n //console.log(`creating WebsocketProxy [${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 as = assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n proxy.upResolver.add(as)\n proxy.downResolver.add(as)\n\n if (remainderParts.length > 0) {\n const result = await wrapped.resolve<T>(remainderParts, options)\n return result\n }\n\n //console.log(`resolved: ${proxy.address} [${wrapped.constructor.name}] [${as.constructor.name}]`)\n return as\n }\n}\n","import { 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'\nimport { io as Client } from 'socket.io-client'\n\nexport type WebsocketModuleProxyParams = ModuleProxyParams & {\n client?: typeof Client\n maxPayloadSizeWarning?: number\n moduleUrl: string\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 async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n const { maxPayloadSizeWarning } = this.params\n const payloadSize = JSON.stringify([query, payloads]).length\n if (maxPayloadSizeWarning && payloadSize > maxPayloadSizeWarning) {\n this.logger?.warn(\n `Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${this.moduleAddress}] [${query.schema}] [${payloads?.length}]`,\n )\n }\n await Promise.resolve()\n throw new Error('Unsupported')\n }\n}\n"],"mappings":"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","names":["assertEx","AbstractBridge","creatableModule","WebsocketBridgeConfigSchema","assertEx","isAddress","AbstractBridgeModuleResolver","wrapModuleWithType","Account","ConfigSchema","asModuleInstance","ModuleConfigSchema","AbstractModuleProxy","WebsocketModuleProxy","AbstractModuleProxy","proxyQueryHandler","query","payloads","maxPayloadSizeWarning","params","payloadSize","JSON","stringify","length","logger","warn","address","moduleAddress","schema","Promise","resolve","Error","WebsocketBridgeModuleResolver","AbstractBridgeModuleResolver","moduleUrl","address","URL","params","url","resolveHandler","id","options","parentResult","idParts","split","firstPart","assertEx","shift","moduleAddress","isAddress","remainderParts","join","account","Account","randomSync","config","schema","ModuleConfigSchema","host","href","proxy","WebsocketModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","as","asModuleInstance","upResolver","add","downResolver","length","result","resolve","WebsocketBridge","AbstractBridge","_resolver","resolver","WebsocketBridgeModuleResolver","bridge","root","url","wrapperAccount","account","assertEx","config","discoverRoots","Promise","resolve","exposeHandler","_id","_options","Error","exposedHandler","startHandler","discoverRoot","unexposeHandler","configSchemas","WebsocketBridgeConfigSchema","maxPayloadSizeWarning","creatableModule"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Bridge.ts","../../src/Config.ts","../../src/ModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractBridge } from '@xyo-network/abstract-bridge'\nimport { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance } from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { WebsocketBridgeConfig, WebsocketBridgeConfigSchema } from './Config'\nimport { WebsocketBridgeModuleResolver } from './ModuleResolver'\n\nexport type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> =\n BridgeParams<TConfig>\n\n@creatableModule()\nexport class WebsocketBridge<TParams extends WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override configSchemas: Schema[] = [...super.configSchemas, WebsocketBridgeConfigSchema]\n static override defaultConfigSchema: Schema = WebsocketBridgeConfigSchema\n static maxPayloadSizeWarning = 256 * 256\n\n private _resolver?: WebsocketBridgeModuleResolver\n\n override get resolver() {\n this._resolver = this._resolver ?? new WebsocketBridgeModuleResolver({ bridge: this, root: this, url: this.url, wrapperAccount: this.account })\n return this._resolver\n }\n\n get url() {\n return assertEx(this.config.url, () => 'No Url Set')\n }\n\n override async discoverRoots(): Promise<ModuleInstance[]> {\n return await Promise.resolve([])\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n override async startHandler(): Promise<boolean> {\n const { discoverRoot = true } = this.config\n if (discoverRoot) {\n await this.discoverRoots()\n }\n return true\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WebsocketBridgeConfigSchema = 'network.xyo.bridge.websocket.config'\nexport type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema\n\nexport type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n discoverRoot?: boolean\n /** @deprecated Do not use this for any new development */\n legacyMode?: boolean\n schema: WebsocketBridgeConfigSchema\n url?: string\n } & TConfig,\n TSchema extends string ? TSchema : WebsocketBridgeConfigSchema\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 { asModuleInstance, ModuleConfig, ModuleConfigSchema, ModuleFilterOptions, ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model'\n\nimport { WebsocketModuleProxy, WebsocketModuleProxyParams } from './ModuleProxy'\n\nexport interface WebsocketBridgeModuleResolverOptions extends BridgeModuleResolverParams {\n url: string\n}\n\nexport class WebsocketBridgeModuleResolver<\n T extends WebsocketBridgeModuleResolverOptions = WebsocketBridgeModuleResolverOptions,\n> extends AbstractBridgeModuleResolver<T> {\n moduleUrl(address: Address) {\n return new URL(address, this.params.url)\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult) {\n return parentResult\n }\n if (id === '*') {\n return []\n }\n const idParts = id.split(':')\n const firstPart = assertEx(idParts.shift(), () => 'Missing firstPart')\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 moduleUrl: this.moduleUrl(moduleAddress).href,\n }\n\n //console.log(`creating WebsocketProxy [${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 as = assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n proxy.upResolver.add(as)\n proxy.downResolver.add(as)\n\n if (remainderParts.length > 0) {\n const result = await wrapped.resolve<T>(remainderParts, options)\n return result\n }\n\n //console.log(`resolved: ${proxy.address} [${wrapped.constructor.name}] [${as.constructor.name}]`)\n return as\n }\n}\n","import { 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'\nimport { io as Client } from 'socket.io-client'\n\nexport type WebsocketModuleProxyParams = ModuleProxyParams & {\n client?: typeof Client\n maxPayloadSizeWarning?: number\n moduleUrl: string\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 async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n const { maxPayloadSizeWarning } = this.params\n const payloadSize = JSON.stringify([query, payloads]).length\n if (maxPayloadSizeWarning && payloadSize > maxPayloadSizeWarning) {\n this.logger?.warn(\n `Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${this.moduleAddress}] [${query.schema}] [${payloads?.length}]`,\n )\n }\n await Promise.resolve()\n throw new Error('Unsupported')\n }\n}\n"],"mappings":";;;;;;;;;;;;AAAA,SAASA,YAAAA,iBAAgB;AAGzB,SAASC,sBAAsB;AAE/B,SAA0BC,uBAAuC;;;ACF1D,IAAMC,8BAA8B;;;ACH3C,SAASC,gBAAgB;AACzB,SAAkBC,iBAAiB;AACnC,SAASC,8BAA0DC,0BAA0B;AAC7F,SAASC,eAAe;AACxB,SAAwBC,oBAAoB;AAC5C,SAASC,kBAAgCC,0BAAiF;;;ACL1H,SAASC,2BAA8C;AAYhD,IAAMC,wBAAN,MAAMA,8BAMHC,oBAAAA;EAGR,MAAMC,kBAAmEC,OAAUC,WAAsB,CAAA,GAAgC;AArB3I;AAsBI,UAAM,EAAEC,sBAAqB,IAAK,KAAKC;AACvC,UAAMC,cAAcC,KAAKC,UAAU;MAACN;MAAOC;KAAS,EAAEM;AACtD,QAAIL,yBAAyBE,cAAcF,uBAAuB;AAChE,iBAAKM,WAAL,mBAAaC,KACX,iCAAiCL,WAAAA,WAAsB,KAAKM,OAAO,KAAK,KAAKC,aAAa,MAAMX,MAAMY,MAAM,MAAMX,qCAAUM,MAAAA;IAEhI;AACA,UAAMM,QAAQC,QAAO;AACrB,UAAM,IAAIC,MAAM,aAAA;EAClB;AACF;AAdUjB;AANH,IAAMD,uBAAN;;;ADCA,IAAMmB,iCAAN,MAAMA,uCAEHC,6BAAAA;EACRC,UAAUC,SAAkB;AAC1B,WAAO,IAAIC,IAAID,SAAS,KAAKE,OAAOC,GAAG;EACzC;EAEA,MAAeC,eACbC,IACAC,SAC8B;AAvBlC;AAwBI,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,YAAYC,SAASH,QAAQI,MAAK,GAAI,MAAM,mBAAA;AAClD,UAAMC,gBAAgBH;AACtBC,aAASG,UAAUJ,SAAAA,GAAY,MAAM,2BAA2BA,SAAAA,EAAW;AAC3E,UAAMK,iBAAiBP,QAAQQ,KAAK,GAAA;AACpC,UAAMd,SAAqC;MACzCe,SAASC,QAAQC,WAAU;MAC3BC,QAAQ;QAAEC,QAAQC;MAAmB;MACrCC,MAAM;MACNV;MACAd,WAAW,KAAKA,UAAUc,aAAAA,EAAeW;IAC3C;AAIA,UAAMC,QAAQ,IAAIC,qBAAoDxB,MAAAA;AAEtE,QAAIuB,OAAO;AACT,YAAME,QAAQ,MAAMF,MAAME,MAAK;AAC/B,UAAIA,OAAO;AACT,cAAMC,gBAAgBD,WAAME,KAAK,CAACC,YAAYA,QAAQT,WAAWU,YAAAA,MAA3CJ,mBAAwFP;AAC9G,cAAMA,SAAST,SACbgB,MAAME,KAAK,CAACC,YAAYA,QAAQT,WAAWO,YAAAA,GAC3C,MAAM,yBAAA;AAERH,cAAMO,UAAUZ,MAAAA;MAClB;IACF;AAEA,UAAMK,MAAMQ,MAAK;AAEjB,UAAMC,UAAUvB,SAASwB,mBAAmBV,OAAOP,QAAQC,WAAU,CAAA,GAAqB,MAAM,iCAAiCd,EAAAA,GAAK;AACtI,UAAM+B,KAAKzB,SAAS0B,iBAAoBH,SAAS,CAAC,CAAA,GAAI,MAAM,+BAA+B7B,EAAAA,GAAK;AAChGoB,UAAMa,WAAWC,IAAIH,EAAAA;AACrBX,UAAMe,aAAaD,IAAIH,EAAAA;AAEvB,QAAIrB,eAAe0B,SAAS,GAAG;AAC7B,YAAMC,SAAS,MAAMR,QAAQS,QAAW5B,gBAAgBT,OAAAA;AACxD,aAAOoC;IACT;AAGA,WAAON;EACT;AACF;AA5DUtC;AAFH,IAAMD,gCAAN;;;;;;;;;;;;;;AFEA,IAAM+C,mBAAN,MAAMA,yBAA+DC,eAAAA;EAKlEC;EAER,IAAaC,WAAW;AACtB,SAAKD,YAAY,KAAKA,aAAa,IAAIE,8BAA8B;MAAEC,QAAQ;MAAMC,MAAM;MAAMC,KAAK,KAAKA;MAAKC,gBAAgB,KAAKC;IAAQ,CAAA;AAC7I,WAAO,KAAKP;EACd;EAEA,IAAIK,MAAM;AACR,WAAOG,UAAS,KAAKC,OAAOJ,KAAK,MAAM,YAAA;EACzC;EAEA,MAAeK,gBAA2C;AACxD,WAAO,MAAMC,QAAQC,QAAQ,CAAA,CAAE;EACjC;EAESC,cAAcC,KAAaC,UAA0E;AAC5G,UAAM,IAAIC,MAAM,aAAA;EAClB;EAESC,iBAAwC;AAC/C,UAAM,IAAID,MAAM,aAAA;EAClB;EAEA,MAAeE,eAAiC;AAC9C,UAAM,EAAEC,eAAe,KAAI,IAAK,KAAKV;AACrC,QAAIU,cAAc;AAChB,YAAM,KAAKT,cAAa;IAC1B;AACA,WAAO;EACT;EAESU,gBAAgBN,KAAaC,UAA4E;AAChH,UAAM,IAAIC,MAAM,aAAA;EAClB;AACF;AAvC4EjB;AAC1E,cADWD,kBACKuB,iBAA0B;KAAI,+CAAMA;EAAeC;;AACnE,cAFWxB,kBAEKyB,uBAA8BD;AAC9C,cAHWxB,kBAGJ0B,yBAAwB,MAAM;AAHhC,IAAM1B,kBAAN;AAAMA,kBAAAA,aAAAA;EADZ2B,gBAAAA;GACY3B,eAAAA;","names":["assertEx","AbstractBridge","creatableModule","WebsocketBridgeConfigSchema","assertEx","isAddress","AbstractBridgeModuleResolver","wrapModuleWithType","Account","ConfigSchema","asModuleInstance","ModuleConfigSchema","AbstractModuleProxy","WebsocketModuleProxy","AbstractModuleProxy","proxyQueryHandler","query","payloads","maxPayloadSizeWarning","params","payloadSize","JSON","stringify","length","logger","warn","address","moduleAddress","schema","Promise","resolve","Error","WebsocketBridgeModuleResolver","AbstractBridgeModuleResolver","moduleUrl","address","URL","params","url","resolveHandler","id","options","parentResult","idParts","split","firstPart","assertEx","shift","moduleAddress","isAddress","remainderParts","join","account","Account","randomSync","config","schema","ModuleConfigSchema","host","href","proxy","WebsocketModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","as","asModuleInstance","upResolver","add","downResolver","length","result","resolve","WebsocketBridge","AbstractBridge","_resolver","resolver","WebsocketBridgeModuleResolver","bridge","root","url","wrapperAccount","account","assertEx","config","discoverRoots","Promise","resolve","exposeHandler","_id","_options","Error","exposedHandler","startHandler","discoverRoot","unexposeHandler","configSchemas","WebsocketBridgeConfigSchema","defaultConfigSchema","maxPayloadSizeWarning","creatableModule"]}
|
package/package.json
CHANGED
|
@@ -14,25 +14,25 @@
|
|
|
14
14
|
"@xylabs/hex": "^3.1.8",
|
|
15
15
|
"@xylabs/object": "^3.1.8",
|
|
16
16
|
"@xylabs/promise": "^3.1.8",
|
|
17
|
-
"@xyo-network/abstract-bridge": "~2.
|
|
18
|
-
"@xyo-network/account": "~2.
|
|
19
|
-
"@xyo-network/boundwitness-model": "~2.
|
|
20
|
-
"@xyo-network/bridge-model": "~2.
|
|
21
|
-
"@xyo-network/config-payload-plugin": "~2.
|
|
22
|
-
"@xyo-network/module-model": "~2.
|
|
23
|
-
"@xyo-network/payload-model": "~2.
|
|
17
|
+
"@xyo-network/abstract-bridge": "~2.97.1",
|
|
18
|
+
"@xyo-network/account": "~2.97.1",
|
|
19
|
+
"@xyo-network/boundwitness-model": "~2.97.1",
|
|
20
|
+
"@xyo-network/bridge-model": "~2.97.1",
|
|
21
|
+
"@xyo-network/config-payload-plugin": "~2.97.1",
|
|
22
|
+
"@xyo-network/module-model": "~2.97.1",
|
|
23
|
+
"@xyo-network/payload-model": "~2.97.1",
|
|
24
24
|
"socket.io": "^4.7.5",
|
|
25
25
|
"socket.io-client": "^4.7.5"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@xylabs/ts-scripts-yarn3": "^3.9.1",
|
|
29
29
|
"@xylabs/tsconfig": "^3.9.1",
|
|
30
|
-
"@xyo-network/account": "~2.
|
|
31
|
-
"@xyo-network/archivist-model": "~2.
|
|
32
|
-
"@xyo-network/node-memory": "~2.
|
|
33
|
-
"@xyo-network/node-model": "~2.
|
|
34
|
-
"@xyo-network/payload-builder": "~2.
|
|
35
|
-
"@xyo-network/payload-wrapper": "~2.
|
|
30
|
+
"@xyo-network/account": "~2.97.1",
|
|
31
|
+
"@xyo-network/archivist-model": "~2.97.1",
|
|
32
|
+
"@xyo-network/node-memory": "~2.97.1",
|
|
33
|
+
"@xyo-network/node-model": "~2.97.1",
|
|
34
|
+
"@xyo-network/payload-builder": "~2.97.1",
|
|
35
|
+
"@xyo-network/payload-wrapper": "~2.97.1",
|
|
36
36
|
"socket.io-client": "^4.7.5",
|
|
37
37
|
"typescript": "^5.4.5"
|
|
38
38
|
},
|
|
@@ -75,6 +75,6 @@
|
|
|
75
75
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
76
76
|
},
|
|
77
77
|
"sideEffects": false,
|
|
78
|
-
"version": "2.
|
|
78
|
+
"version": "2.97.1",
|
|
79
79
|
"type": "module"
|
|
80
80
|
}
|
package/src/Bridge.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { Promisable } from '@xylabs/promise'
|
|
|
4
4
|
import { AbstractBridge } from '@xyo-network/abstract-bridge'
|
|
5
5
|
import { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model'
|
|
6
6
|
import { AnyConfigSchema, creatableModule, ModuleInstance } from '@xyo-network/module-model'
|
|
7
|
+
import { Schema } from '@xyo-network/payload-model'
|
|
7
8
|
|
|
8
9
|
import { WebsocketBridgeConfig, WebsocketBridgeConfigSchema } from './Config'
|
|
9
10
|
import { WebsocketBridgeModuleResolver } from './ModuleResolver'
|
|
@@ -13,7 +14,8 @@ export type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridg
|
|
|
13
14
|
|
|
14
15
|
@creatableModule()
|
|
15
16
|
export class WebsocketBridge<TParams extends WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {
|
|
16
|
-
static override configSchemas = [WebsocketBridgeConfigSchema]
|
|
17
|
+
static override configSchemas: Schema[] = [...super.configSchemas, WebsocketBridgeConfigSchema]
|
|
18
|
+
static override defaultConfigSchema: Schema = WebsocketBridgeConfigSchema
|
|
17
19
|
static maxPayloadSizeWarning = 256 * 256
|
|
18
20
|
|
|
19
21
|
private _resolver?: WebsocketBridgeModuleResolver
|