@xyo-network/bridge-websocket 4.0.3 → 4.1.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/index-browser.d.ts +74 -0
- package/dist/browser/index.d.ts +91 -0
- package/dist/browser/index.mjs +258 -0
- package/dist/browser/index.mjs.map +1 -0
- package/dist/browser/spec/WebsocketBridge.spec.d.ts +2 -0
- package/dist/browser/spec/WebsocketBridge.spec.d.ts.map +1 -0
- package/dist/browser/spec/socketServer.spec.d.ts +2 -0
- package/dist/browser/spec/socketServer.spec.d.ts.map +1 -0
- package/dist/neutral/Bridge.d.ts +27 -0
- package/dist/neutral/Bridge.d.ts.map +1 -0
- package/dist/neutral/ClientBridge.d.ts +41 -0
- package/dist/neutral/ClientBridge.d.ts.map +1 -0
- package/dist/neutral/Config.d.ts +16 -0
- package/dist/neutral/Config.d.ts.map +1 -0
- package/dist/neutral/ModuleProxy/ModuleProxy.d.ts +20 -0
- package/dist/neutral/ModuleProxy/ModuleProxy.d.ts.map +1 -0
- package/dist/neutral/ModuleProxy/index.d.ts +2 -0
- package/dist/neutral/ModuleProxy/index.d.ts.map +1 -0
- package/dist/neutral/Params.d.ts +5 -0
- package/dist/neutral/Params.d.ts.map +1 -0
- package/dist/neutral/WebsocketBridgeModuleResolver.d.ts +12 -0
- package/dist/neutral/WebsocketBridgeModuleResolver.d.ts.map +1 -0
- package/dist/neutral/index-browser.d.ts.map +1 -0
- package/dist/neutral/index.d.ts +91 -0
- package/dist/neutral/index.d.ts.map +1 -0
- package/dist/neutral/socketServer.d.ts +9 -0
- package/dist/neutral/socketServer.d.ts.map +1 -0
- package/dist/neutral/spec/WebsocketBridge.spec.d.ts +2 -0
- package/dist/neutral/spec/WebsocketBridge.spec.d.ts.map +1 -0
- package/dist/neutral/spec/socketServer.spec.d.ts +2 -0
- package/dist/neutral/spec/socketServer.spec.d.ts.map +1 -0
- package/dist/node/Bridge.d.ts +27 -0
- package/dist/node/Bridge.d.ts.map +1 -0
- package/dist/node/ClientBridge.d.ts +41 -0
- package/dist/node/ClientBridge.d.ts.map +1 -0
- package/dist/node/Config.d.ts +16 -0
- package/dist/node/Config.d.ts.map +1 -0
- package/dist/node/ModuleProxy/ModuleProxy.d.ts +20 -0
- package/dist/node/ModuleProxy/ModuleProxy.d.ts.map +1 -0
- package/dist/node/ModuleProxy/index.d.ts +2 -0
- package/dist/node/ModuleProxy/index.d.ts.map +1 -0
- package/dist/node/Params.d.ts +5 -0
- package/dist/node/Params.d.ts.map +1 -0
- package/dist/node/WebsocketBridgeModuleResolver.d.ts +12 -0
- package/dist/node/WebsocketBridgeModuleResolver.d.ts.map +1 -0
- package/dist/node/index-browser.d.ts +5 -0
- package/dist/node/index-browser.d.ts.map +1 -0
- package/dist/node/index.d.ts +91 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/socketServer.d.ts +9 -0
- package/dist/node/socketServer.d.ts.map +1 -0
- package/dist/node/spec/WebsocketBridge.spec.d.ts +2 -0
- package/dist/node/spec/WebsocketBridge.spec.d.ts.map +1 -0
- package/dist/node/spec/socketServer.spec.d.ts +2 -0
- package/dist/node/spec/socketServer.spec.d.ts.map +1 -0
- package/package.json +25 -25
- package/xy.config.ts +3 -3
- package/dist/types/index.d.ts +0 -3
- /package/dist/{types → browser}/Bridge.d.ts +0 -0
- /package/dist/{types → browser}/Bridge.d.ts.map +0 -0
- /package/dist/{types → browser}/ClientBridge.d.ts +0 -0
- /package/dist/{types → browser}/ClientBridge.d.ts.map +0 -0
- /package/dist/{types → browser}/Config.d.ts +0 -0
- /package/dist/{types → browser}/Config.d.ts.map +0 -0
- /package/dist/{types → browser}/ModuleProxy/ModuleProxy.d.ts +0 -0
- /package/dist/{types → browser}/ModuleProxy/ModuleProxy.d.ts.map +0 -0
- /package/dist/{types → browser}/ModuleProxy/index.d.ts +0 -0
- /package/dist/{types → browser}/ModuleProxy/index.d.ts.map +0 -0
- /package/dist/{types → browser}/Params.d.ts +0 -0
- /package/dist/{types → browser}/Params.d.ts.map +0 -0
- /package/dist/{types → browser}/WebsocketBridgeModuleResolver.d.ts +0 -0
- /package/dist/{types → browser}/WebsocketBridgeModuleResolver.d.ts.map +0 -0
- /package/dist/{types → browser}/index-browser.d.ts.map +0 -0
- /package/dist/{types → browser}/index.d.ts.map +0 -0
- /package/dist/{types → browser}/socketServer.d.ts +0 -0
- /package/dist/{types → browser}/socketServer.d.ts.map +0 -0
- /package/dist/{types → neutral}/index-browser.d.ts +0 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { BridgeModuleResolverParams, AbstractBridgeModuleResolver, AbstractBridge } from '@xyo-network/bridge-abstract';
|
|
2
|
+
import { ModuleQueryResult, ModuleInstance, ModuleIdentifier, ModuleFilterOptions, AnyConfigSchema } from '@xyo-network/module-model';
|
|
3
|
+
import { Address } from '@xylabs/hex';
|
|
4
|
+
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
5
|
+
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
6
|
+
import * as _xyo_network_bridge_model from '@xyo-network/bridge-model';
|
|
7
|
+
import { BridgeConfig, BridgeParams, BridgeModule, BridgeExposeOptions, BridgeUnexposeOptions } from '@xyo-network/bridge-model';
|
|
8
|
+
import { Promisable } from '@xylabs/promise';
|
|
9
|
+
import { Semaphore } from 'async-mutex';
|
|
10
|
+
import { EmptyObject } from '@xylabs/object';
|
|
11
|
+
|
|
12
|
+
interface WebsocketBridgeQuerySender {
|
|
13
|
+
sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(targetAddress: Address, query: TQuery, payloads?: TIn[]) => Promise<ModuleQueryResult<TOut>>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolverParams {
|
|
17
|
+
querySender: WebsocketBridgeQuerySender;
|
|
18
|
+
}
|
|
19
|
+
declare class WebsocketBridgeModuleResolver<T extends WebsocketBridgeModuleResolverParams = WebsocketBridgeModuleResolverParams> extends AbstractBridgeModuleResolver<T> {
|
|
20
|
+
get querySender(): WebsocketBridgeQuerySender;
|
|
21
|
+
resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
declare const WebsocketBridgeConfigSchema: "network.xyo.bridge.websocket.config";
|
|
25
|
+
type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema;
|
|
26
|
+
type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<{
|
|
27
|
+
schema: WebsocketBridgeConfigSchema;
|
|
28
|
+
} & TConfig, TSchema extends string ? TSchema : WebsocketBridgeConfigSchema, {
|
|
29
|
+
failureRetryTime?: number;
|
|
30
|
+
failureTimeCacheMax?: number;
|
|
31
|
+
maxConnections?: number;
|
|
32
|
+
maxPayloadSizeWarning?: number;
|
|
33
|
+
url: string;
|
|
34
|
+
}, {
|
|
35
|
+
port?: number;
|
|
36
|
+
}>;
|
|
37
|
+
|
|
38
|
+
type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> = BridgeParams<TConfig>;
|
|
39
|
+
|
|
40
|
+
declare class WebsocketClientBridge<TParams extends WebsocketBridgeParams = WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams>, WebsocketBridgeQuerySender {
|
|
41
|
+
static readonly configSchemas: Schema[];
|
|
42
|
+
static readonly defaultConfigSchema: Schema;
|
|
43
|
+
protected static defaultFailureRetryTime: number;
|
|
44
|
+
protected static defaultMaxConnections: number;
|
|
45
|
+
protected static defaultMaxPayloadSizeWarning: number;
|
|
46
|
+
protected static maxFailureCacheSize: number;
|
|
47
|
+
private _failureTimeCache;
|
|
48
|
+
private _querySemaphore?;
|
|
49
|
+
private _resolver?;
|
|
50
|
+
get client(): (_xyo_network_bridge_model.BridgeClientConfig & {
|
|
51
|
+
failureRetryTime?: number;
|
|
52
|
+
failureTimeCacheMax?: number;
|
|
53
|
+
maxConnections?: number;
|
|
54
|
+
maxPayloadSizeWarning?: number;
|
|
55
|
+
url: string;
|
|
56
|
+
}) | undefined;
|
|
57
|
+
get failureRetryTime(): number;
|
|
58
|
+
get maxConnections(): number;
|
|
59
|
+
get maxPayloadSizeWarning(): number;
|
|
60
|
+
get querySemaphore(): Semaphore;
|
|
61
|
+
get resolver(): WebsocketBridgeModuleResolver<WebsocketBridgeModuleResolverParams>;
|
|
62
|
+
get url(): string;
|
|
63
|
+
exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]>;
|
|
64
|
+
exposedHandler(): Promisable<Address[]>;
|
|
65
|
+
getRoots(): Promise<ModuleInstance[]>;
|
|
66
|
+
sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(targetAddress: Address, _query: TQuery, _payloads?: TIn[]): Promise<ModuleQueryResult<TOut>>;
|
|
67
|
+
unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]>;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
declare class WebsocketBridge extends WebsocketClientBridge {
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export { WebsocketBridge, WebsocketBridgeConfigSchema };
|
|
74
|
+
export type { WebsocketBridgeConfig };
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import * as _xyo_network_bridge_model from '@xyo-network/bridge-model';
|
|
2
|
+
import { BridgeConfig, BridgeParams, BridgeModule, BridgeExposeOptions, BridgeUnexposeOptions } from '@xyo-network/bridge-model';
|
|
3
|
+
import { Server } from 'node:http';
|
|
4
|
+
import { Address } from '@xylabs/hex';
|
|
5
|
+
import { Promisable } from '@xylabs/promise';
|
|
6
|
+
import { ModuleQueryResult, ModuleInstance, ModuleIdentifier, ModuleFilterOptions, AnyConfigSchema } from '@xyo-network/module-model';
|
|
7
|
+
import { Server as Server$1 } from 'socket.io';
|
|
8
|
+
import { BridgeModuleResolverParams, AbstractBridgeModuleResolver, AbstractBridge } from '@xyo-network/bridge-abstract';
|
|
9
|
+
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
10
|
+
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
11
|
+
import { Semaphore } from 'async-mutex';
|
|
12
|
+
import { EmptyObject } from '@xylabs/object';
|
|
13
|
+
|
|
14
|
+
interface WebsocketBridgeQuerySender {
|
|
15
|
+
sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(targetAddress: Address, query: TQuery, payloads?: TIn[]) => Promise<ModuleQueryResult<TOut>>;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolverParams {
|
|
19
|
+
querySender: WebsocketBridgeQuerySender;
|
|
20
|
+
}
|
|
21
|
+
declare class WebsocketBridgeModuleResolver<T extends WebsocketBridgeModuleResolverParams = WebsocketBridgeModuleResolverParams> extends AbstractBridgeModuleResolver<T> {
|
|
22
|
+
get querySender(): WebsocketBridgeQuerySender;
|
|
23
|
+
resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]>;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
declare const WebsocketBridgeConfigSchema: "network.xyo.bridge.websocket.config";
|
|
27
|
+
type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema;
|
|
28
|
+
type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<{
|
|
29
|
+
schema: WebsocketBridgeConfigSchema;
|
|
30
|
+
} & TConfig, TSchema extends string ? TSchema : WebsocketBridgeConfigSchema, {
|
|
31
|
+
failureRetryTime?: number;
|
|
32
|
+
failureTimeCacheMax?: number;
|
|
33
|
+
maxConnections?: number;
|
|
34
|
+
maxPayloadSizeWarning?: number;
|
|
35
|
+
url: string;
|
|
36
|
+
}, {
|
|
37
|
+
port?: number;
|
|
38
|
+
}>;
|
|
39
|
+
|
|
40
|
+
type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> = BridgeParams<TConfig>;
|
|
41
|
+
|
|
42
|
+
declare class WebsocketClientBridge<TParams extends WebsocketBridgeParams = WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams>, WebsocketBridgeQuerySender {
|
|
43
|
+
static readonly configSchemas: Schema[];
|
|
44
|
+
static readonly defaultConfigSchema: Schema;
|
|
45
|
+
protected static defaultFailureRetryTime: number;
|
|
46
|
+
protected static defaultMaxConnections: number;
|
|
47
|
+
protected static defaultMaxPayloadSizeWarning: number;
|
|
48
|
+
protected static maxFailureCacheSize: number;
|
|
49
|
+
private _failureTimeCache;
|
|
50
|
+
private _querySemaphore?;
|
|
51
|
+
private _resolver?;
|
|
52
|
+
get client(): (_xyo_network_bridge_model.BridgeClientConfig & {
|
|
53
|
+
failureRetryTime?: number;
|
|
54
|
+
failureTimeCacheMax?: number;
|
|
55
|
+
maxConnections?: number;
|
|
56
|
+
maxPayloadSizeWarning?: number;
|
|
57
|
+
url: string;
|
|
58
|
+
}) | undefined;
|
|
59
|
+
get failureRetryTime(): number;
|
|
60
|
+
get maxConnections(): number;
|
|
61
|
+
get maxPayloadSizeWarning(): number;
|
|
62
|
+
get querySemaphore(): Semaphore;
|
|
63
|
+
get resolver(): WebsocketBridgeModuleResolver<WebsocketBridgeModuleResolverParams>;
|
|
64
|
+
get url(): string;
|
|
65
|
+
exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]>;
|
|
66
|
+
exposedHandler(): Promisable<Address[]>;
|
|
67
|
+
getRoots(): Promise<ModuleInstance[]>;
|
|
68
|
+
sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(targetAddress: Address, _query: TQuery, _payloads?: TIn[]): Promise<ModuleQueryResult<TOut>>;
|
|
69
|
+
unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]>;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
declare const BridgeCommands: {
|
|
73
|
+
join: string;
|
|
74
|
+
query: string;
|
|
75
|
+
};
|
|
76
|
+
declare class WebsocketBridge<TParams extends WebsocketBridgeParams<AnyConfigSchema<WebsocketBridgeConfig>> = WebsocketBridgeParams<WebsocketBridgeConfig>> extends WebsocketClientBridge<TParams> implements BridgeModule<TParams> {
|
|
77
|
+
httpServer?: Server;
|
|
78
|
+
server?: Server$1;
|
|
79
|
+
get host(): (_xyo_network_bridge_model.BridgeHostConfig & {
|
|
80
|
+
port?: number;
|
|
81
|
+
}) | undefined;
|
|
82
|
+
exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]>;
|
|
83
|
+
exposedHandler(): Promisable<Address[]>;
|
|
84
|
+
startHandler(): Promise<void>;
|
|
85
|
+
stopHandler(): Promise<void>;
|
|
86
|
+
private startServer;
|
|
87
|
+
private stopServer;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export { BridgeCommands, WebsocketBridge, WebsocketBridgeConfigSchema };
|
|
91
|
+
export type { WebsocketBridgeConfig };
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
+
var __reflectGet = Reflect.get;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
7
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
8
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
9
|
+
if (decorator = decorators[i])
|
|
10
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
11
|
+
if (kind && result) __defProp(target, key, result);
|
|
12
|
+
return result;
|
|
13
|
+
};
|
|
14
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
15
|
+
var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
|
|
16
|
+
|
|
17
|
+
// src/Bridge.ts
|
|
18
|
+
import { createServer as createHttpServer } from "http";
|
|
19
|
+
import { assertEx as assertEx3 } from "@xylabs/assert";
|
|
20
|
+
import {
|
|
21
|
+
creatableModule as creatableModule3
|
|
22
|
+
} from "@xyo-network/module-model";
|
|
23
|
+
import { Server } from "socket.io";
|
|
24
|
+
|
|
25
|
+
// src/ClientBridge.ts
|
|
26
|
+
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
27
|
+
import { AbstractBridge } from "@xyo-network/bridge-abstract";
|
|
28
|
+
import {
|
|
29
|
+
creatableModule as creatableModule2
|
|
30
|
+
} from "@xyo-network/module-model";
|
|
31
|
+
import { Semaphore } from "async-mutex";
|
|
32
|
+
import { LRUCache } from "lru-cache";
|
|
33
|
+
|
|
34
|
+
// src/Config.ts
|
|
35
|
+
var WebsocketBridgeConfigSchema = "network.xyo.bridge.websocket.config";
|
|
36
|
+
|
|
37
|
+
// src/WebsocketBridgeModuleResolver.ts
|
|
38
|
+
import { assertEx } from "@xylabs/assert";
|
|
39
|
+
import { isAddress } from "@xylabs/hex";
|
|
40
|
+
import { Account } from "@xyo-network/account";
|
|
41
|
+
import { AbstractBridgeModuleResolver, wrapModuleWithType } from "@xyo-network/bridge-abstract";
|
|
42
|
+
import { ConfigSchema } from "@xyo-network/config-payload-plugin";
|
|
43
|
+
import {
|
|
44
|
+
asModuleInstance,
|
|
45
|
+
ModuleConfigSchema,
|
|
46
|
+
ResolveHelper
|
|
47
|
+
} from "@xyo-network/module-model";
|
|
48
|
+
|
|
49
|
+
// src/ModuleProxy/ModuleProxy.ts
|
|
50
|
+
import { AbstractModuleProxy } from "@xyo-network/bridge-abstract";
|
|
51
|
+
import {
|
|
52
|
+
creatableModule
|
|
53
|
+
} from "@xyo-network/module-model";
|
|
54
|
+
var WebsocketModuleProxy = class extends AbstractModuleProxy {
|
|
55
|
+
async proxyQueryHandler(query, payloads = []) {
|
|
56
|
+
return await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
WebsocketModuleProxy = __decorateClass([
|
|
60
|
+
creatableModule()
|
|
61
|
+
], WebsocketModuleProxy);
|
|
62
|
+
|
|
63
|
+
// src/WebsocketBridgeModuleResolver.ts
|
|
64
|
+
var WebsocketBridgeModuleResolver = class extends AbstractBridgeModuleResolver {
|
|
65
|
+
get querySender() {
|
|
66
|
+
return this.params.querySender;
|
|
67
|
+
}
|
|
68
|
+
async resolveHandler(id, options) {
|
|
69
|
+
const parentResult = await super.resolveHandler(id, options);
|
|
70
|
+
if (parentResult) {
|
|
71
|
+
return parentResult;
|
|
72
|
+
}
|
|
73
|
+
if (id === "*") {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
const idParts = id.split(":");
|
|
77
|
+
const untransformedFirstPart = assertEx(idParts.shift(), () => `Invalid module identifier: ${id}`);
|
|
78
|
+
const firstPart = await ResolveHelper.transformModuleIdentifier(untransformedFirstPart);
|
|
79
|
+
const moduleAddress = firstPart;
|
|
80
|
+
assertEx(isAddress(firstPart), () => `Invalid module address: ${firstPart}`);
|
|
81
|
+
const remainderParts = idParts.join(":");
|
|
82
|
+
const params = {
|
|
83
|
+
name: "WebsocketBridgeModuleResolver",
|
|
84
|
+
account: await Account.random(),
|
|
85
|
+
config: { schema: ModuleConfigSchema },
|
|
86
|
+
host: this,
|
|
87
|
+
moduleAddress,
|
|
88
|
+
querySender: this.querySender
|
|
89
|
+
};
|
|
90
|
+
this.logger?.debug(`creating HttpProxy [${moduleAddress}] ${id}`);
|
|
91
|
+
const proxy = await WebsocketModuleProxy.create(params);
|
|
92
|
+
if (proxy) {
|
|
93
|
+
const state = await proxy.state();
|
|
94
|
+
if (state) {
|
|
95
|
+
const configSchema = state.find((payload) => payload.schema === ConfigSchema)?.config;
|
|
96
|
+
const config = assertEx(
|
|
97
|
+
state.find((payload) => payload.schema === configSchema),
|
|
98
|
+
() => "Unable to locate config"
|
|
99
|
+
);
|
|
100
|
+
proxy.setConfig(config);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
await proxy.start();
|
|
104
|
+
const wrapped = assertEx(wrapModuleWithType(proxy, await Account.random()), () => `Failed to wrapModuleWithType [${id}]`);
|
|
105
|
+
const instance = assertEx(asModuleInstance(wrapped, {}), () => `Failed to asModuleInstance [${id}]`);
|
|
106
|
+
proxy.upResolver.add(instance);
|
|
107
|
+
proxy.downResolver.add(instance);
|
|
108
|
+
if (remainderParts.length > 0) {
|
|
109
|
+
const result = await wrapped.resolve(remainderParts, options);
|
|
110
|
+
return result ? [result] : [];
|
|
111
|
+
}
|
|
112
|
+
return [instance];
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
// src/ClientBridge.ts
|
|
117
|
+
var WebsocketClientBridge = class extends AbstractBridge {
|
|
118
|
+
_failureTimeCache = new LRUCache({ max: WebsocketClientBridge.maxFailureCacheSize });
|
|
119
|
+
_querySemaphore;
|
|
120
|
+
_resolver;
|
|
121
|
+
get client() {
|
|
122
|
+
return this.config.client;
|
|
123
|
+
}
|
|
124
|
+
get failureRetryTime() {
|
|
125
|
+
return this.client?.failureRetryTime ?? WebsocketClientBridge.defaultFailureRetryTime;
|
|
126
|
+
}
|
|
127
|
+
get maxConnections() {
|
|
128
|
+
return this.client?.maxConnections ?? WebsocketClientBridge.defaultMaxConnections;
|
|
129
|
+
}
|
|
130
|
+
get maxPayloadSizeWarning() {
|
|
131
|
+
return this.client?.maxPayloadSizeWarning ?? WebsocketClientBridge.defaultMaxPayloadSizeWarning;
|
|
132
|
+
}
|
|
133
|
+
get querySemaphore() {
|
|
134
|
+
this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections);
|
|
135
|
+
return this._querySemaphore;
|
|
136
|
+
}
|
|
137
|
+
get resolver() {
|
|
138
|
+
this._resolver = this._resolver ?? new WebsocketBridgeModuleResolver({
|
|
139
|
+
archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },
|
|
140
|
+
bridge: this,
|
|
141
|
+
querySender: this,
|
|
142
|
+
root: this,
|
|
143
|
+
wrapperAccount: this.account
|
|
144
|
+
});
|
|
145
|
+
return this._resolver;
|
|
146
|
+
}
|
|
147
|
+
get url() {
|
|
148
|
+
return assertEx2(this.config.client?.url, () => "No Url Set");
|
|
149
|
+
}
|
|
150
|
+
exposeHandler(_id, _options) {
|
|
151
|
+
throw new Error("Unsupported");
|
|
152
|
+
}
|
|
153
|
+
exposedHandler() {
|
|
154
|
+
throw new Error("Unsupported");
|
|
155
|
+
}
|
|
156
|
+
async getRoots() {
|
|
157
|
+
return await Promise.resolve([]);
|
|
158
|
+
}
|
|
159
|
+
async sendBridgeQuery(targetAddress, _query, _payloads) {
|
|
160
|
+
const lastFailureTime = this._failureTimeCache.get(targetAddress);
|
|
161
|
+
if (lastFailureTime !== void 0) {
|
|
162
|
+
const now = Date.now();
|
|
163
|
+
const timeSincePreviousFailure = now - lastFailureTime;
|
|
164
|
+
if (timeSincePreviousFailure > this.failureRetryTime) {
|
|
165
|
+
throw new Error(`target module failed recently [${targetAddress}] [${timeSincePreviousFailure}ms ago]`);
|
|
166
|
+
}
|
|
167
|
+
this._failureTimeCache.delete(targetAddress);
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
await this.querySemaphore.acquire();
|
|
171
|
+
throw new Error("Unsupported");
|
|
172
|
+
} catch (ex) {
|
|
173
|
+
throw ex;
|
|
174
|
+
} finally {
|
|
175
|
+
this.querySemaphore.release();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
unexposeHandler(_id, _options) {
|
|
179
|
+
throw new Error("Unsupported");
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
__publicField(WebsocketClientBridge, "configSchemas", [...__superGet(WebsocketClientBridge, WebsocketClientBridge, "configSchemas"), WebsocketBridgeConfigSchema]);
|
|
183
|
+
__publicField(WebsocketClientBridge, "defaultConfigSchema", WebsocketBridgeConfigSchema);
|
|
184
|
+
__publicField(WebsocketClientBridge, "defaultFailureRetryTime", 1e3 * 60);
|
|
185
|
+
__publicField(WebsocketClientBridge, "defaultMaxConnections", 4);
|
|
186
|
+
__publicField(WebsocketClientBridge, "defaultMaxPayloadSizeWarning", 256 * 256);
|
|
187
|
+
__publicField(WebsocketClientBridge, "maxFailureCacheSize", 1e3);
|
|
188
|
+
WebsocketClientBridge = __decorateClass([
|
|
189
|
+
creatableModule2()
|
|
190
|
+
], WebsocketClientBridge);
|
|
191
|
+
|
|
192
|
+
// src/Bridge.ts
|
|
193
|
+
var BridgeCommands = {
|
|
194
|
+
join: "join",
|
|
195
|
+
query: "query"
|
|
196
|
+
};
|
|
197
|
+
var DEFAULT_HOST_PORT = 8080;
|
|
198
|
+
var WebsocketBridge = class extends WebsocketClientBridge {
|
|
199
|
+
httpServer;
|
|
200
|
+
server;
|
|
201
|
+
get host() {
|
|
202
|
+
return this.config.host;
|
|
203
|
+
}
|
|
204
|
+
exposeHandler(_id, _options) {
|
|
205
|
+
throw new Error("Unsupported");
|
|
206
|
+
}
|
|
207
|
+
exposedHandler() {
|
|
208
|
+
throw new Error("Unsupported");
|
|
209
|
+
}
|
|
210
|
+
async startHandler() {
|
|
211
|
+
if (this.host) {
|
|
212
|
+
this.startServer();
|
|
213
|
+
}
|
|
214
|
+
await super.startHandler();
|
|
215
|
+
}
|
|
216
|
+
async stopHandler() {
|
|
217
|
+
if (this.host) {
|
|
218
|
+
await this.stopServer();
|
|
219
|
+
}
|
|
220
|
+
await super.stopHandler();
|
|
221
|
+
}
|
|
222
|
+
startServer() {
|
|
223
|
+
if (this.httpServer) {
|
|
224
|
+
throw new Error("Http Server already started");
|
|
225
|
+
}
|
|
226
|
+
if (this.server) {
|
|
227
|
+
throw new Error("Socket Server already started");
|
|
228
|
+
}
|
|
229
|
+
const host = assertEx3(this.host, () => "No Host Configured");
|
|
230
|
+
this.httpServer = createHttpServer();
|
|
231
|
+
this.server = new Server(this.httpServer);
|
|
232
|
+
this.server.on("connection", (socket) => {
|
|
233
|
+
socket.on(BridgeCommands.join, async (address) => {
|
|
234
|
+
await socket.join(address);
|
|
235
|
+
console.log(`User ${socket.id} has connected to module ${address}`);
|
|
236
|
+
});
|
|
237
|
+
socket.on(BridgeCommands.query, ({ address, query }) => {
|
|
238
|
+
socket.to(address).emit("message", query);
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
this.httpServer.listen(host.port ?? DEFAULT_HOST_PORT);
|
|
242
|
+
}
|
|
243
|
+
async stopServer() {
|
|
244
|
+
await this.server?.close();
|
|
245
|
+
this.server = void 0;
|
|
246
|
+
this.httpServer?.close();
|
|
247
|
+
this.httpServer = void 0;
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
WebsocketBridge = __decorateClass([
|
|
251
|
+
creatableModule3()
|
|
252
|
+
], WebsocketBridge);
|
|
253
|
+
export {
|
|
254
|
+
BridgeCommands,
|
|
255
|
+
WebsocketBridge,
|
|
256
|
+
WebsocketBridgeConfigSchema
|
|
257
|
+
};
|
|
258
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/Bridge.ts","../../src/ClientBridge.ts","../../src/Config.ts","../../src/WebsocketBridgeModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["import { createServer as createHttpServer, Server as HttpServer } from 'node:http'\n\nimport { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { BridgeExposeOptions, BridgeModule } from '@xyo-network/bridge-model'\nimport {\n AnyConfigSchema, creatableModule, ModuleInstance,\n} from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Server, Socket } from 'socket.io'\n\nimport { WebsocketClientBridge } from './ClientBridge.ts'\nimport { WebsocketBridgeConfig } from './Config.ts'\nimport { WebsocketBridgeParams } from './Params.ts'\n\nexport const BridgeCommands = {\n join: 'join',\n query: 'query',\n}\n\nconst DEFAULT_HOST_PORT = 8080\n\n@creatableModule()\nexport class WebsocketBridge<\n TParams extends WebsocketBridgeParams<AnyConfigSchema<WebsocketBridgeConfig>> = WebsocketBridgeParams<WebsocketBridgeConfig>,\n>\n extends WebsocketClientBridge<TParams>\n implements BridgeModule<TParams> {\n httpServer?: HttpServer\n server?: Server\n\n get host() {\n return this.config.host\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n override async startHandler() {\n if (this.host) {\n this.startServer()\n }\n await super.startHandler()\n }\n\n override async stopHandler() {\n if (this.host) {\n await this.stopServer()\n }\n await super.stopHandler()\n }\n\n private startServer() {\n if (this.httpServer) {\n throw new Error('Http Server already started')\n }\n if (this.server) {\n throw new Error('Socket Server already started')\n }\n const host = assertEx(this.host, () => 'No Host Configured')\n this.httpServer = createHttpServer() as HttpServer\n this.server = new Server(this.httpServer)\n\n this.server.on('connection', (socket: Socket) => {\n socket.on(BridgeCommands.join, async (address: Address) => {\n await socket.join(address)\n console.log(`User ${socket.id} has connected to module ${address}`)\n })\n\n socket.on(BridgeCommands.query, ({ address, query }: { address: Address; query: Payload[] }) => {\n socket.to(address).emit('message', query)\n })\n })\n this.httpServer.listen(host.port ?? DEFAULT_HOST_PORT)\n }\n\n private async stopServer() {\n await this.server?.close()\n this.server = undefined\n this.httpServer?.close()\n this.httpServer = undefined\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport {\n BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions,\n} from '@xyo-network/bridge-model'\nimport {\n creatableModule, ModuleInstance, ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { Semaphore } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { WebsocketBridgeConfigSchema } from './Config.ts'\nimport { WebsocketBridgeQuerySender } from './ModuleProxy/index.ts'\nimport { WebsocketBridgeParams } from './Params.ts'\nimport { WebsocketBridgeModuleResolver } from './WebsocketBridgeModuleResolver.ts'\n\n@creatableModule()\nexport class WebsocketClientBridge<TParams extends WebsocketBridgeParams = WebsocketBridgeParams>\n extends AbstractBridge<TParams>\n implements BridgeModule<TParams>, WebsocketBridgeQuerySender {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WebsocketBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WebsocketBridgeConfigSchema\n protected static defaultFailureRetryTime = 1000 * 60\n protected static defaultMaxConnections = 4\n protected static defaultMaxPayloadSizeWarning = 256 * 256\n protected static maxFailureCacheSize = 1000\n\n private _failureTimeCache = new LRUCache<Address, number>({ max: WebsocketClientBridge.maxFailureCacheSize })\n private _querySemaphore?: Semaphore\n\n private _resolver?: WebsocketBridgeModuleResolver\n\n get client() {\n return this.config.client\n }\n\n get failureRetryTime() {\n return this.client?.failureRetryTime ?? WebsocketClientBridge.defaultFailureRetryTime\n }\n\n get maxConnections() {\n return this.client?.maxConnections ?? WebsocketClientBridge.defaultMaxConnections\n }\n\n get maxPayloadSizeWarning() {\n return this.client?.maxPayloadSizeWarning ?? WebsocketClientBridge.defaultMaxPayloadSizeWarning\n }\n\n get querySemaphore() {\n this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections)\n return this._querySemaphore\n }\n\n override get resolver() {\n this._resolver\n = this._resolver\n ?? new WebsocketBridgeModuleResolver({\n archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },\n bridge: this,\n querySender: this,\n root: this,\n wrapperAccount: this.account,\n })\n return this._resolver\n }\n\n get url() {\n return assertEx(this.config.client?.url, () => 'No Url Set')\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n async getRoots(): Promise<ModuleInstance[]> {\n return await Promise.resolve([])\n }\n\n async sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n _query: TQuery,\n _payloads?: TIn[],\n ): Promise<ModuleQueryResult<TOut>> {\n const lastFailureTime = this._failureTimeCache.get(targetAddress)\n if (lastFailureTime !== undefined) {\n const now = Date.now()\n const timeSincePreviousFailure = now - lastFailureTime\n if (timeSincePreviousFailure > this.failureRetryTime) {\n throw new Error(`target module failed recently [${targetAddress}] [${timeSincePreviousFailure}ms ago]`)\n }\n this._failureTimeCache.delete(targetAddress)\n }\n try {\n await this.querySemaphore.acquire()\n throw new Error('Unsupported')\n } catch (ex) {\n throw ex as Error\n } finally {\n this.querySemaphore.release()\n }\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n}\n","import type { EmptyObject } from '@xylabs/object'\nimport type { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WebsocketBridgeConfigSchema = 'network.xyo.bridge.websocket.config' as const\nexport type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema\n\nexport type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n schema: WebsocketBridgeConfigSchema\n } & TConfig,\n TSchema extends string ? TSchema : WebsocketBridgeConfigSchema,\n {\n failureRetryTime?: number\n failureTimeCacheMax?: number\n maxConnections?: number\n maxPayloadSizeWarning?: number\n url: string\n },\n {\n port?: number\n }\n>\n","import { assertEx } from '@xylabs/assert'\nimport type { Address } from '@xylabs/hex'\nimport { isAddress } from '@xylabs/hex'\nimport { Account } from '@xyo-network/account'\nimport type { BridgeModuleResolverParams } from '@xyo-network/bridge-abstract'\nimport { AbstractBridgeModuleResolver, wrapModuleWithType } from '@xyo-network/bridge-abstract'\nimport type { ConfigPayload } from '@xyo-network/config-payload-plugin'\nimport { ConfigSchema } from '@xyo-network/config-payload-plugin'\nimport type {\n ModuleConfig,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n} from '@xyo-network/module-model'\nimport {\n asModuleInstance,\n ModuleConfigSchema,\n ResolveHelper,\n} from '@xyo-network/module-model'\n\nimport type { WebsocketBridgeQuerySender, WebsocketModuleProxyParams } from './ModuleProxy/index.ts'\nimport { WebsocketModuleProxy } from './ModuleProxy/index.ts'\n\nexport interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolverParams {\n querySender: WebsocketBridgeQuerySender\n}\n\nexport class WebsocketBridgeModuleResolver<\n T extends WebsocketBridgeModuleResolverParams = WebsocketBridgeModuleResolverParams,\n> extends AbstractBridgeModuleResolver<T> {\n get querySender() {\n return this.params.querySender\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult) {\n return parentResult\n }\n if (id === '*') {\n return []\n }\n const idParts = id.split(':')\n const untransformedFirstPart = assertEx(idParts.shift(), () => `Invalid module identifier: ${id}`)\n const firstPart = await ResolveHelper.transformModuleIdentifier(untransformedFirstPart)\n const moduleAddress = firstPart as Address\n assertEx(isAddress(firstPart), () => `Invalid module address: ${firstPart}`)\n const remainderParts = idParts.join(':')\n const params: WebsocketModuleProxyParams = {\n name: 'WebsocketBridgeModuleResolver',\n account: await Account.random(),\n config: { schema: ModuleConfigSchema },\n host: this,\n moduleAddress,\n querySender: this.querySender,\n }\n\n this.logger?.debug(`creating HttpProxy [${moduleAddress}] ${id}`)\n\n const proxy = await WebsocketModuleProxy.create(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, await Account.random()) as unknown as T, () => `Failed to wrapModuleWithType [${id}]`)\n const instance = assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n proxy.upResolver.add(instance)\n proxy.downResolver.add(instance)\n\n if (remainderParts.length > 0) {\n const result = await wrapped.resolve<T>(remainderParts, options)\n return result ? [result] : []\n }\n\n // console.log(`resolved: ${proxy.address} [${wrapped.constructor.name}] [${as.constructor.name}]`)\n return [instance]\n }\n}\n","import type { Address } from '@xylabs/hex'\nimport type { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport type { ModuleProxyParams } from '@xyo-network/bridge-abstract'\nimport { AbstractModuleProxy } from '@xyo-network/bridge-abstract'\nimport {\n creatableModule, type ModuleInstance, type ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport interface WebsocketBridgeQuerySender {\n sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n query: TQuery,\n payloads?: TIn[],\n ) => Promise<ModuleQueryResult<TOut>>\n}\n\nexport type WebsocketModuleProxyParams = ModuleProxyParams & {\n querySender: WebsocketBridgeQuerySender\n}\n\n@creatableModule()\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 async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n return await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads)\n }\n}\n"],"mappings":"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","names":["assertEx","creatableModule","assertEx","creatableModule","assertEx","creatableModule","assertEx","creatableModule"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebsocketBridge.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/WebsocketBridge.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socketServer.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/socketServer.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Server as HttpServer } from 'node:http';
|
|
2
|
+
import { Address } from '@xylabs/hex';
|
|
3
|
+
import { Promisable } from '@xylabs/promise';
|
|
4
|
+
import { BridgeExposeOptions, BridgeModule } from '@xyo-network/bridge-model';
|
|
5
|
+
import { AnyConfigSchema, ModuleInstance } from '@xyo-network/module-model';
|
|
6
|
+
import { Server } from 'socket.io';
|
|
7
|
+
import { WebsocketClientBridge } from './ClientBridge.ts';
|
|
8
|
+
import { WebsocketBridgeConfig } from './Config.ts';
|
|
9
|
+
import { WebsocketBridgeParams } from './Params.ts';
|
|
10
|
+
export declare const BridgeCommands: {
|
|
11
|
+
join: string;
|
|
12
|
+
query: string;
|
|
13
|
+
};
|
|
14
|
+
export declare class WebsocketBridge<TParams extends WebsocketBridgeParams<AnyConfigSchema<WebsocketBridgeConfig>> = WebsocketBridgeParams<WebsocketBridgeConfig>> extends WebsocketClientBridge<TParams> implements BridgeModule<TParams> {
|
|
15
|
+
httpServer?: HttpServer;
|
|
16
|
+
server?: Server;
|
|
17
|
+
get host(): (import("@xyo-network/bridge-model").BridgeHostConfig & {
|
|
18
|
+
port?: number;
|
|
19
|
+
}) | undefined;
|
|
20
|
+
exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]>;
|
|
21
|
+
exposedHandler(): Promisable<Address[]>;
|
|
22
|
+
startHandler(): Promise<void>;
|
|
23
|
+
stopHandler(): Promise<void>;
|
|
24
|
+
private startServer;
|
|
25
|
+
private stopServer;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=Bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bridge.d.ts","sourceRoot":"","sources":["../../src/Bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAA;AAGlF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EACL,eAAe,EAAmB,cAAc,EACjD,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,MAAM,EAAU,MAAM,WAAW,CAAA;AAE1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAEnD,eAAO,MAAM,cAAc;;;CAG1B,CAAA;AAID,qBACa,eAAe,CAC1B,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,CAE5H,SAAQ,qBAAqB,CAAC,OAAO,CACrC,YAAW,YAAY,CAAC,OAAO,CAAC;IAChC,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,IAAI,IAAI;;mBAEP;IAEQ,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAIjC,YAAY;IAOZ,WAAW;IAO1B,OAAO,CAAC,WAAW;YAwBL,UAAU;CAMzB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Address } from '@xylabs/hex';
|
|
2
|
+
import { Promisable } from '@xylabs/promise';
|
|
3
|
+
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
4
|
+
import { AbstractBridge } from '@xyo-network/bridge-abstract';
|
|
5
|
+
import { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model';
|
|
6
|
+
import { ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model';
|
|
7
|
+
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
8
|
+
import { Semaphore } from 'async-mutex';
|
|
9
|
+
import { WebsocketBridgeQuerySender } from './ModuleProxy/index.ts';
|
|
10
|
+
import { WebsocketBridgeParams } from './Params.ts';
|
|
11
|
+
import { WebsocketBridgeModuleResolver } from './WebsocketBridgeModuleResolver.ts';
|
|
12
|
+
export declare class WebsocketClientBridge<TParams extends WebsocketBridgeParams = WebsocketBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams>, WebsocketBridgeQuerySender {
|
|
13
|
+
static readonly configSchemas: Schema[];
|
|
14
|
+
static readonly defaultConfigSchema: Schema;
|
|
15
|
+
protected static defaultFailureRetryTime: number;
|
|
16
|
+
protected static defaultMaxConnections: number;
|
|
17
|
+
protected static defaultMaxPayloadSizeWarning: number;
|
|
18
|
+
protected static maxFailureCacheSize: number;
|
|
19
|
+
private _failureTimeCache;
|
|
20
|
+
private _querySemaphore?;
|
|
21
|
+
private _resolver?;
|
|
22
|
+
get client(): (import("@xyo-network/bridge-model").BridgeClientConfig & {
|
|
23
|
+
failureRetryTime?: number;
|
|
24
|
+
failureTimeCacheMax?: number;
|
|
25
|
+
maxConnections?: number;
|
|
26
|
+
maxPayloadSizeWarning?: number;
|
|
27
|
+
url: string;
|
|
28
|
+
}) | undefined;
|
|
29
|
+
get failureRetryTime(): number;
|
|
30
|
+
get maxConnections(): number;
|
|
31
|
+
get maxPayloadSizeWarning(): number;
|
|
32
|
+
get querySemaphore(): Semaphore;
|
|
33
|
+
get resolver(): WebsocketBridgeModuleResolver<import("./WebsocketBridgeModuleResolver.ts").WebsocketBridgeModuleResolverParams>;
|
|
34
|
+
get url(): string;
|
|
35
|
+
exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]>;
|
|
36
|
+
exposedHandler(): Promisable<Address[]>;
|
|
37
|
+
getRoots(): Promise<ModuleInstance[]>;
|
|
38
|
+
sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(targetAddress: Address, _query: TQuery, _payloads?: TIn[]): Promise<ModuleQueryResult<TOut>>;
|
|
39
|
+
unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=ClientBridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientBridge.d.ts","sourceRoot":"","sources":["../../src/ClientBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EACL,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EACzD,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACY,cAAc,EAAE,iBAAiB,EACnD,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAIvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAA;AAElF,qBACa,qBAAqB,CAAC,OAAO,SAAS,qBAAqB,GAAG,qBAAqB,CAC9F,SAAQ,cAAc,CAAC,OAAO,CAC9B,YAAW,YAAY,CAAC,OAAO,CAAC,EAAE,0BAA0B;IAC5D,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAwD;IACxG,gBAAyB,mBAAmB,EAAE,MAAM,CAA8B;IAClF,SAAS,CAAC,MAAM,CAAC,uBAAuB,SAAY;IACpD,SAAS,CAAC,MAAM,CAAC,qBAAqB,SAAI;IAC1C,SAAS,CAAC,MAAM,CAAC,4BAA4B,SAAY;IACzD,SAAS,CAAC,MAAM,CAAC,mBAAmB,SAAO;IAE3C,OAAO,CAAC,iBAAiB,CAAoF;IAC7G,OAAO,CAAC,eAAe,CAAC,CAAW;IAEnC,OAAO,CAAC,SAAS,CAAC,CAA+B;IAEjD,IAAI,MAAM;;;;;;mBAET;IAED,IAAI,gBAAgB,WAEnB;IAED,IAAI,cAAc,WAEjB;IAED,IAAI,qBAAqB,WAExB;IAED,IAAI,cAAc,cAGjB;IAED,IAAa,QAAQ,oHAWpB;IAED,IAAI,GAAG,WAEN;IAEQ,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAI1C,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIrC,eAAe,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACvI,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,GAAG,EAAE,GAChB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAoB1B,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;CAGlH"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { EmptyObject } from '@xylabs/object';
|
|
2
|
+
import type { BridgeConfig } from '@xyo-network/bridge-model';
|
|
3
|
+
export declare const WebsocketBridgeConfigSchema: "network.xyo.bridge.websocket.config";
|
|
4
|
+
export type WebsocketBridgeConfigSchema = typeof WebsocketBridgeConfigSchema;
|
|
5
|
+
export type WebsocketBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<{
|
|
6
|
+
schema: WebsocketBridgeConfigSchema;
|
|
7
|
+
} & TConfig, TSchema extends string ? TSchema : WebsocketBridgeConfigSchema, {
|
|
8
|
+
failureRetryTime?: number;
|
|
9
|
+
failureTimeCacheMax?: number;
|
|
10
|
+
maxConnections?: number;
|
|
11
|
+
maxPayloadSizeWarning?: number;
|
|
12
|
+
url: string;
|
|
13
|
+
}, {
|
|
14
|
+
port?: number;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=Config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,eAAO,MAAM,2BAA2B,EAAG,qCAA8C,CAAA;AACzF,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAA;AAE5E,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,YAAY,CAC/H;IACE,MAAM,EAAE,2BAA2B,CAAA;CACpC,GAAG,OAAO,EACX,OAAO,SAAS,MAAM,GAAG,OAAO,GAAG,2BAA2B,EAC9D;IACE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,MAAM,CAAA;CACZ,EACD;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CACF,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Address } from '@xylabs/hex';
|
|
2
|
+
import type { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
3
|
+
import type { ModuleProxyParams } from '@xyo-network/bridge-abstract';
|
|
4
|
+
import { AbstractModuleProxy } from '@xyo-network/bridge-abstract';
|
|
5
|
+
import { type ModuleInstance, type ModuleQueryResult } from '@xyo-network/module-model';
|
|
6
|
+
import type { Payload } from '@xyo-network/payload-model';
|
|
7
|
+
export interface WebsocketBridgeQuerySender {
|
|
8
|
+
sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(targetAddress: Address, query: TQuery, payloads?: TIn[]) => Promise<ModuleQueryResult<TOut>>;
|
|
9
|
+
}
|
|
10
|
+
export type WebsocketModuleProxyParams = ModuleProxyParams & {
|
|
11
|
+
querySender: WebsocketBridgeQuerySender;
|
|
12
|
+
};
|
|
13
|
+
export declare class WebsocketModuleProxy<TWrappedModule extends ModuleInstance = ModuleInstance, TParams extends Omit<WebsocketModuleProxyParams, 'config'> & {
|
|
14
|
+
config: TWrappedModule['config'];
|
|
15
|
+
} = Omit<WebsocketModuleProxyParams, 'config'> & {
|
|
16
|
+
config: TWrappedModule['config'];
|
|
17
|
+
}> extends AbstractModuleProxy<TWrappedModule, TParams> implements ModuleInstance<TParams, TWrappedModule['eventData']> {
|
|
18
|
+
proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ModuleProxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModuleProxy.d.ts","sourceRoot":"","sources":["../../../src/ModuleProxy/ModuleProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EACY,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAC7D,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,MAAM,WAAW,0BAA0B;IACzC,eAAe,EAAE,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACnI,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,GAAG,EAAE,KACb,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAA;CACtC;AAED,MAAM,MAAM,0BAA0B,GAAG,iBAAiB,GAAG;IAC3D,WAAW,EAAE,0BAA0B,CAAA;CACxC,CAAA;AAED,qBACa,oBAAoB,CAC/B,cAAc,SAAS,cAAc,GAAG,cAAc,EACtD,OAAO,SAAS,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;CAAE,GAAG,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,GAAG;IAC/I,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;CACjC,CAED,SAAQ,mBAAmB,CAAC,cAAc,EAAE,OAAO,CACnD,YAAW,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACzD,iBAAiB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGzI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ModuleProxy/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BridgeParams } from '@xyo-network/bridge-model';
|
|
2
|
+
import type { AnyConfigSchema } from '@xyo-network/module-model';
|
|
3
|
+
import type { WebsocketBridgeConfig } from './Config.ts';
|
|
4
|
+
export type WebsocketBridgeParams<TConfig extends AnyConfigSchema<WebsocketBridgeConfig> = AnyConfigSchema<WebsocketBridgeConfig>> = BridgeParams<TConfig>;
|
|
5
|
+
//# sourceMappingURL=Params.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Params.d.ts","sourceRoot":"","sources":["../../src/Params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAEhE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC7H,YAAY,CAAC,OAAO,CAAC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BridgeModuleResolverParams } from '@xyo-network/bridge-abstract';
|
|
2
|
+
import { AbstractBridgeModuleResolver } from '@xyo-network/bridge-abstract';
|
|
3
|
+
import type { ModuleFilterOptions, ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model';
|
|
4
|
+
import type { WebsocketBridgeQuerySender } from './ModuleProxy/index.ts';
|
|
5
|
+
export interface WebsocketBridgeModuleResolverParams extends BridgeModuleResolverParams {
|
|
6
|
+
querySender: WebsocketBridgeQuerySender;
|
|
7
|
+
}
|
|
8
|
+
export declare class WebsocketBridgeModuleResolver<T extends WebsocketBridgeModuleResolverParams = WebsocketBridgeModuleResolverParams> extends AbstractBridgeModuleResolver<T> {
|
|
9
|
+
get querySender(): WebsocketBridgeQuerySender;
|
|
10
|
+
resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=WebsocketBridgeModuleResolver.d.ts.map
|