@xyo-network/bridge-websocket 2.111.2 → 3.0.0
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 +72 -4
- package/dist/neutral/index.d.ts +90 -3
- package/dist/node/index.d.ts +90 -3
- package/dist/node/index.mjs +34 -41
- package/dist/node/index.mjs.map +1 -1
- package/package.json +24 -34
- package/xy.config.ts +3 -0
- package/dist/browser/Bridge.d.cts +0 -27
- package/dist/browser/Bridge.d.cts.map +0 -1
- package/dist/browser/Bridge.d.mts +0 -27
- package/dist/browser/Bridge.d.mts.map +0 -1
- package/dist/browser/Bridge.d.ts +0 -27
- package/dist/browser/Bridge.d.ts.map +0 -1
- package/dist/browser/ClientBridge.d.cts +0 -41
- package/dist/browser/ClientBridge.d.cts.map +0 -1
- package/dist/browser/ClientBridge.d.mts +0 -41
- package/dist/browser/ClientBridge.d.mts.map +0 -1
- package/dist/browser/ClientBridge.d.ts +0 -41
- package/dist/browser/ClientBridge.d.ts.map +0 -1
- package/dist/browser/Config.d.cts +0 -16
- package/dist/browser/Config.d.cts.map +0 -1
- package/dist/browser/Config.d.mts +0 -16
- package/dist/browser/Config.d.mts.map +0 -1
- package/dist/browser/Config.d.ts +0 -16
- package/dist/browser/Config.d.ts.map +0 -1
- package/dist/browser/ModuleProxy/ModuleProxy.d.cts +0 -21
- package/dist/browser/ModuleProxy/ModuleProxy.d.cts.map +0 -1
- package/dist/browser/ModuleProxy/ModuleProxy.d.mts +0 -21
- package/dist/browser/ModuleProxy/ModuleProxy.d.mts.map +0 -1
- package/dist/browser/ModuleProxy/ModuleProxy.d.ts +0 -21
- package/dist/browser/ModuleProxy/ModuleProxy.d.ts.map +0 -1
- package/dist/browser/ModuleProxy/index.d.cts +0 -2
- package/dist/browser/ModuleProxy/index.d.cts.map +0 -1
- package/dist/browser/ModuleProxy/index.d.mts +0 -2
- package/dist/browser/ModuleProxy/index.d.mts.map +0 -1
- package/dist/browser/ModuleProxy/index.d.ts +0 -2
- package/dist/browser/ModuleProxy/index.d.ts.map +0 -1
- package/dist/browser/Params.d.cts +0 -5
- package/dist/browser/Params.d.cts.map +0 -1
- package/dist/browser/Params.d.mts +0 -5
- package/dist/browser/Params.d.mts.map +0 -1
- package/dist/browser/Params.d.ts +0 -5
- package/dist/browser/Params.d.ts.map +0 -1
- package/dist/browser/WebsocketBridgeModuleResolver.d.cts +0 -11
- package/dist/browser/WebsocketBridgeModuleResolver.d.cts.map +0 -1
- package/dist/browser/WebsocketBridgeModuleResolver.d.mts +0 -11
- package/dist/browser/WebsocketBridgeModuleResolver.d.mts.map +0 -1
- package/dist/browser/WebsocketBridgeModuleResolver.d.ts +0 -11
- package/dist/browser/WebsocketBridgeModuleResolver.d.ts.map +0 -1
- package/dist/browser/index-browser.cjs +0 -224
- package/dist/browser/index-browser.cjs.map +0 -1
- package/dist/browser/index-browser.d.cts +0 -5
- package/dist/browser/index-browser.d.cts.map +0 -1
- package/dist/browser/index-browser.d.mts +0 -5
- package/dist/browser/index-browser.d.mts.map +0 -1
- package/dist/browser/index-browser.d.ts.map +0 -1
- package/dist/browser/index.d.cts +0 -3
- package/dist/browser/index.d.cts.map +0 -1
- package/dist/browser/index.d.mts +0 -3
- package/dist/browser/index.d.mts.map +0 -1
- package/dist/browser/index.d.ts +0 -3
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/socketServer.d.cts +0 -9
- package/dist/browser/socketServer.d.cts.map +0 -1
- package/dist/browser/socketServer.d.mts +0 -9
- package/dist/browser/socketServer.d.mts.map +0 -1
- package/dist/browser/socketServer.d.ts +0 -9
- package/dist/browser/socketServer.d.ts.map +0 -1
- package/dist/neutral/Bridge.d.cts +0 -27
- package/dist/neutral/Bridge.d.cts.map +0 -1
- package/dist/neutral/Bridge.d.mts +0 -27
- package/dist/neutral/Bridge.d.mts.map +0 -1
- package/dist/neutral/Bridge.d.ts +0 -27
- package/dist/neutral/Bridge.d.ts.map +0 -1
- package/dist/neutral/ClientBridge.d.cts +0 -41
- package/dist/neutral/ClientBridge.d.cts.map +0 -1
- package/dist/neutral/ClientBridge.d.mts +0 -41
- package/dist/neutral/ClientBridge.d.mts.map +0 -1
- package/dist/neutral/ClientBridge.d.ts +0 -41
- package/dist/neutral/ClientBridge.d.ts.map +0 -1
- package/dist/neutral/Config.d.cts +0 -16
- package/dist/neutral/Config.d.cts.map +0 -1
- package/dist/neutral/Config.d.mts +0 -16
- package/dist/neutral/Config.d.mts.map +0 -1
- package/dist/neutral/Config.d.ts +0 -16
- package/dist/neutral/Config.d.ts.map +0 -1
- package/dist/neutral/ModuleProxy/ModuleProxy.d.cts +0 -21
- package/dist/neutral/ModuleProxy/ModuleProxy.d.cts.map +0 -1
- package/dist/neutral/ModuleProxy/ModuleProxy.d.mts +0 -21
- package/dist/neutral/ModuleProxy/ModuleProxy.d.mts.map +0 -1
- package/dist/neutral/ModuleProxy/ModuleProxy.d.ts +0 -21
- package/dist/neutral/ModuleProxy/ModuleProxy.d.ts.map +0 -1
- package/dist/neutral/ModuleProxy/index.d.cts +0 -2
- package/dist/neutral/ModuleProxy/index.d.cts.map +0 -1
- package/dist/neutral/ModuleProxy/index.d.mts +0 -2
- package/dist/neutral/ModuleProxy/index.d.mts.map +0 -1
- package/dist/neutral/ModuleProxy/index.d.ts +0 -2
- package/dist/neutral/ModuleProxy/index.d.ts.map +0 -1
- package/dist/neutral/Params.d.cts +0 -5
- package/dist/neutral/Params.d.cts.map +0 -1
- package/dist/neutral/Params.d.mts +0 -5
- package/dist/neutral/Params.d.mts.map +0 -1
- package/dist/neutral/Params.d.ts +0 -5
- package/dist/neutral/Params.d.ts.map +0 -1
- package/dist/neutral/WebsocketBridgeModuleResolver.d.cts +0 -11
- package/dist/neutral/WebsocketBridgeModuleResolver.d.cts.map +0 -1
- package/dist/neutral/WebsocketBridgeModuleResolver.d.mts +0 -11
- package/dist/neutral/WebsocketBridgeModuleResolver.d.mts.map +0 -1
- package/dist/neutral/WebsocketBridgeModuleResolver.d.ts +0 -11
- package/dist/neutral/WebsocketBridgeModuleResolver.d.ts.map +0 -1
- package/dist/neutral/index-browser.d.cts +0 -5
- package/dist/neutral/index-browser.d.cts.map +0 -1
- package/dist/neutral/index-browser.d.mts +0 -5
- package/dist/neutral/index-browser.d.mts.map +0 -1
- package/dist/neutral/index-browser.d.ts +0 -5
- package/dist/neutral/index-browser.d.ts.map +0 -1
- package/dist/neutral/index.cjs +0 -296
- package/dist/neutral/index.cjs.map +0 -1
- package/dist/neutral/index.d.cts +0 -3
- package/dist/neutral/index.d.cts.map +0 -1
- package/dist/neutral/index.d.mts +0 -3
- package/dist/neutral/index.d.mts.map +0 -1
- package/dist/neutral/index.d.ts.map +0 -1
- package/dist/neutral/socketServer.d.cts +0 -9
- package/dist/neutral/socketServer.d.cts.map +0 -1
- package/dist/neutral/socketServer.d.mts +0 -9
- package/dist/neutral/socketServer.d.mts.map +0 -1
- package/dist/neutral/socketServer.d.ts +0 -9
- package/dist/neutral/socketServer.d.ts.map +0 -1
- package/dist/node/Bridge.d.cts +0 -27
- package/dist/node/Bridge.d.cts.map +0 -1
- package/dist/node/Bridge.d.mts +0 -27
- package/dist/node/Bridge.d.mts.map +0 -1
- package/dist/node/Bridge.d.ts +0 -27
- package/dist/node/Bridge.d.ts.map +0 -1
- package/dist/node/ClientBridge.d.cts +0 -41
- package/dist/node/ClientBridge.d.cts.map +0 -1
- package/dist/node/ClientBridge.d.mts +0 -41
- package/dist/node/ClientBridge.d.mts.map +0 -1
- package/dist/node/ClientBridge.d.ts +0 -41
- package/dist/node/ClientBridge.d.ts.map +0 -1
- package/dist/node/Config.d.cts +0 -16
- package/dist/node/Config.d.cts.map +0 -1
- package/dist/node/Config.d.mts +0 -16
- package/dist/node/Config.d.mts.map +0 -1
- package/dist/node/Config.d.ts +0 -16
- package/dist/node/Config.d.ts.map +0 -1
- package/dist/node/ModuleProxy/ModuleProxy.d.cts +0 -21
- package/dist/node/ModuleProxy/ModuleProxy.d.cts.map +0 -1
- package/dist/node/ModuleProxy/ModuleProxy.d.mts +0 -21
- package/dist/node/ModuleProxy/ModuleProxy.d.mts.map +0 -1
- package/dist/node/ModuleProxy/ModuleProxy.d.ts +0 -21
- package/dist/node/ModuleProxy/ModuleProxy.d.ts.map +0 -1
- package/dist/node/ModuleProxy/index.d.cts +0 -2
- package/dist/node/ModuleProxy/index.d.cts.map +0 -1
- package/dist/node/ModuleProxy/index.d.mts +0 -2
- package/dist/node/ModuleProxy/index.d.mts.map +0 -1
- package/dist/node/ModuleProxy/index.d.ts +0 -2
- package/dist/node/ModuleProxy/index.d.ts.map +0 -1
- package/dist/node/Params.d.cts +0 -5
- package/dist/node/Params.d.cts.map +0 -1
- package/dist/node/Params.d.mts +0 -5
- package/dist/node/Params.d.mts.map +0 -1
- package/dist/node/Params.d.ts +0 -5
- package/dist/node/Params.d.ts.map +0 -1
- package/dist/node/WebsocketBridgeModuleResolver.d.cts +0 -11
- package/dist/node/WebsocketBridgeModuleResolver.d.cts.map +0 -1
- package/dist/node/WebsocketBridgeModuleResolver.d.mts +0 -11
- package/dist/node/WebsocketBridgeModuleResolver.d.mts.map +0 -1
- package/dist/node/WebsocketBridgeModuleResolver.d.ts +0 -11
- package/dist/node/WebsocketBridgeModuleResolver.d.ts.map +0 -1
- package/dist/node/index-browser.d.cts +0 -5
- package/dist/node/index-browser.d.cts.map +0 -1
- package/dist/node/index-browser.d.mts +0 -5
- package/dist/node/index-browser.d.mts.map +0 -1
- package/dist/node/index-browser.d.ts +0 -5
- package/dist/node/index-browser.d.ts.map +0 -1
- package/dist/node/index.cjs +0 -309
- package/dist/node/index.cjs.map +0 -1
- package/dist/node/index.d.cts +0 -3
- package/dist/node/index.d.cts.map +0 -1
- package/dist/node/index.d.mts +0 -3
- package/dist/node/index.d.mts.map +0 -1
- package/dist/node/index.d.ts.map +0 -1
- package/dist/node/socketServer.d.cts +0 -9
- package/dist/node/socketServer.d.cts.map +0 -1
- package/dist/node/socketServer.d.mts +0 -9
- package/dist/node/socketServer.d.mts.map +0 -1
- package/dist/node/socketServer.d.ts +0 -9
- package/dist/node/socketServer.d.ts.map +0 -1
|
@@ -1,5 +1,73 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
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>>;
|
|
4
14
|
}
|
|
5
|
-
|
|
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
|
+
static defaultFailureRetryTime: number;
|
|
44
|
+
static defaultMaxConnections: number;
|
|
45
|
+
static defaultMaxPayloadSizeWarning: number;
|
|
46
|
+
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, type WebsocketBridgeConfig, WebsocketBridgeConfigSchema };
|
package/dist/neutral/index.d.ts
CHANGED
|
@@ -1,3 +1,90 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
+
static defaultFailureRetryTime: number;
|
|
46
|
+
static defaultMaxConnections: number;
|
|
47
|
+
static defaultMaxPayloadSizeWarning: number;
|
|
48
|
+
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<boolean>;
|
|
85
|
+
stopHandler(): Promise<boolean>;
|
|
86
|
+
private startServer;
|
|
87
|
+
private stopServer;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export { BridgeCommands, WebsocketBridge, type WebsocketBridgeConfig, WebsocketBridgeConfigSchema };
|
package/dist/node/index.d.ts
CHANGED
|
@@ -1,3 +1,90 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
+
static defaultFailureRetryTime: number;
|
|
46
|
+
static defaultMaxConnections: number;
|
|
47
|
+
static defaultMaxPayloadSizeWarning: number;
|
|
48
|
+
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<boolean>;
|
|
85
|
+
stopHandler(): Promise<boolean>;
|
|
86
|
+
private startServer;
|
|
87
|
+
private stopServer;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export { BridgeCommands, WebsocketBridge, type WebsocketBridgeConfig, WebsocketBridgeConfigSchema };
|
package/dist/node/index.mjs
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
3
|
-
var __reflectGet = Reflect.get;
|
|
4
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
5
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
6
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
7
|
-
var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
|
|
8
3
|
|
|
9
4
|
// src/Bridge.ts
|
|
10
5
|
import { createServer as createHttpServer } from "node:http";
|
|
@@ -32,7 +27,11 @@ import { asModuleInstance, ModuleConfigSchema, ResolveHelper } from "@xyo-networ
|
|
|
32
27
|
|
|
33
28
|
// src/ModuleProxy/ModuleProxy.ts
|
|
34
29
|
import { AbstractModuleProxy } from "@xyo-network/bridge-abstract";
|
|
35
|
-
var
|
|
30
|
+
var WebsocketModuleProxy = class _WebsocketModuleProxy extends AbstractModuleProxy {
|
|
31
|
+
static {
|
|
32
|
+
__name(this, "WebsocketModuleProxy");
|
|
33
|
+
}
|
|
34
|
+
static createCount = 0;
|
|
36
35
|
constructor(params) {
|
|
37
36
|
_WebsocketModuleProxy.createCount = _WebsocketModuleProxy.createCount + 1;
|
|
38
37
|
if (Math.floor(_WebsocketModuleProxy.createCount / 10) === _WebsocketModuleProxy.createCount / 10) {
|
|
@@ -44,17 +43,16 @@ var _WebsocketModuleProxy = class _WebsocketModuleProxy extends AbstractModulePr
|
|
|
44
43
|
return await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads);
|
|
45
44
|
}
|
|
46
45
|
};
|
|
47
|
-
__name(_WebsocketModuleProxy, "WebsocketModuleProxy");
|
|
48
|
-
__publicField(_WebsocketModuleProxy, "createCount", 0);
|
|
49
|
-
var WebsocketModuleProxy = _WebsocketModuleProxy;
|
|
50
46
|
|
|
51
47
|
// src/WebsocketBridgeModuleResolver.ts
|
|
52
|
-
var
|
|
48
|
+
var WebsocketBridgeModuleResolver = class extends AbstractBridgeModuleResolver {
|
|
49
|
+
static {
|
|
50
|
+
__name(this, "WebsocketBridgeModuleResolver");
|
|
51
|
+
}
|
|
53
52
|
get querySender() {
|
|
54
53
|
return this.params.querySender;
|
|
55
54
|
}
|
|
56
55
|
async resolveHandler(id, options) {
|
|
57
|
-
var _a, _b;
|
|
58
56
|
const parentResult = await super.resolveHandler(id, options);
|
|
59
57
|
if (parentResult) {
|
|
60
58
|
return parentResult;
|
|
@@ -77,12 +75,12 @@ var _WebsocketBridgeModuleResolver = class _WebsocketBridgeModuleResolver extend
|
|
|
77
75
|
moduleAddress,
|
|
78
76
|
querySender: this.querySender
|
|
79
77
|
};
|
|
80
|
-
|
|
78
|
+
this.logger?.debug(`creating HttpProxy [${moduleAddress}] ${id}`);
|
|
81
79
|
const proxy = new WebsocketModuleProxy(params);
|
|
82
80
|
if (proxy) {
|
|
83
81
|
const state = await proxy.state();
|
|
84
82
|
if (state) {
|
|
85
|
-
const configSchema =
|
|
83
|
+
const configSchema = state.find((payload) => payload.schema === ConfigSchema)?.config;
|
|
86
84
|
const config = assertEx(state.find((payload) => payload.schema === configSchema), () => "Unable to locate config");
|
|
87
85
|
proxy.setConfig(config);
|
|
88
86
|
}
|
|
@@ -103,8 +101,6 @@ var _WebsocketBridgeModuleResolver = class _WebsocketBridgeModuleResolver extend
|
|
|
103
101
|
];
|
|
104
102
|
}
|
|
105
103
|
};
|
|
106
|
-
__name(_WebsocketBridgeModuleResolver, "WebsocketBridgeModuleResolver");
|
|
107
|
-
var WebsocketBridgeModuleResolver = _WebsocketBridgeModuleResolver;
|
|
108
104
|
|
|
109
105
|
// src/ClientBridge.ts
|
|
110
106
|
function _ts_decorate(decorators, target, key, desc) {
|
|
@@ -114,7 +110,19 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
114
110
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
115
111
|
}
|
|
116
112
|
__name(_ts_decorate, "_ts_decorate");
|
|
117
|
-
var
|
|
113
|
+
var WebsocketClientBridge = class _WebsocketClientBridge extends AbstractBridge {
|
|
114
|
+
static {
|
|
115
|
+
__name(this, "WebsocketClientBridge");
|
|
116
|
+
}
|
|
117
|
+
static configSchemas = [
|
|
118
|
+
...super.configSchemas,
|
|
119
|
+
WebsocketBridgeConfigSchema
|
|
120
|
+
];
|
|
121
|
+
static defaultConfigSchema = WebsocketBridgeConfigSchema;
|
|
122
|
+
static defaultFailureRetryTime = 1e3 * 60;
|
|
123
|
+
static defaultMaxConnections = 4;
|
|
124
|
+
static defaultMaxPayloadSizeWarning = 256 * 256;
|
|
125
|
+
static maxFailureCacheSize = 1e3;
|
|
118
126
|
_failureTimeCache = new LRUCache({
|
|
119
127
|
max: _WebsocketClientBridge.maxFailureCacheSize
|
|
120
128
|
});
|
|
@@ -124,16 +132,13 @@ var _WebsocketClientBridge = class _WebsocketClientBridge extends AbstractBridge
|
|
|
124
132
|
return this.config.client;
|
|
125
133
|
}
|
|
126
134
|
get failureRetryTime() {
|
|
127
|
-
|
|
128
|
-
return ((_a = this.client) == null ? void 0 : _a.failureRetryTime) ?? _WebsocketClientBridge.defaultFailureRetryTime;
|
|
135
|
+
return this.client?.failureRetryTime ?? _WebsocketClientBridge.defaultFailureRetryTime;
|
|
129
136
|
}
|
|
130
137
|
get maxConnections() {
|
|
131
|
-
|
|
132
|
-
return ((_a = this.client) == null ? void 0 : _a.maxConnections) ?? _WebsocketClientBridge.defaultMaxConnections;
|
|
138
|
+
return this.client?.maxConnections ?? _WebsocketClientBridge.defaultMaxConnections;
|
|
133
139
|
}
|
|
134
140
|
get maxPayloadSizeWarning() {
|
|
135
|
-
|
|
136
|
-
return ((_a = this.client) == null ? void 0 : _a.maxPayloadSizeWarning) ?? _WebsocketClientBridge.defaultMaxPayloadSizeWarning;
|
|
141
|
+
return this.client?.maxPayloadSizeWarning ?? _WebsocketClientBridge.defaultMaxPayloadSizeWarning;
|
|
137
142
|
}
|
|
138
143
|
get querySemaphore() {
|
|
139
144
|
this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections);
|
|
@@ -153,8 +158,7 @@ var _WebsocketClientBridge = class _WebsocketClientBridge extends AbstractBridge
|
|
|
153
158
|
return this._resolver;
|
|
154
159
|
}
|
|
155
160
|
get url() {
|
|
156
|
-
|
|
157
|
-
return assertEx2((_a = this.config.client) == null ? void 0 : _a.url, () => "No Url Set");
|
|
161
|
+
return assertEx2(this.config.client?.url, () => "No Url Set");
|
|
158
162
|
}
|
|
159
163
|
exposeHandler(_id, _options) {
|
|
160
164
|
throw new Error("Unsupported");
|
|
@@ -188,17 +192,6 @@ var _WebsocketClientBridge = class _WebsocketClientBridge extends AbstractBridge
|
|
|
188
192
|
throw new Error("Unsupported");
|
|
189
193
|
}
|
|
190
194
|
};
|
|
191
|
-
__name(_WebsocketClientBridge, "WebsocketClientBridge");
|
|
192
|
-
__publicField(_WebsocketClientBridge, "configSchemas", [
|
|
193
|
-
...__superGet(_WebsocketClientBridge, _WebsocketClientBridge, "configSchemas"),
|
|
194
|
-
WebsocketBridgeConfigSchema
|
|
195
|
-
]);
|
|
196
|
-
__publicField(_WebsocketClientBridge, "defaultConfigSchema", WebsocketBridgeConfigSchema);
|
|
197
|
-
__publicField(_WebsocketClientBridge, "defaultFailureRetryTime", 1e3 * 60);
|
|
198
|
-
__publicField(_WebsocketClientBridge, "defaultMaxConnections", 4);
|
|
199
|
-
__publicField(_WebsocketClientBridge, "defaultMaxPayloadSizeWarning", 256 * 256);
|
|
200
|
-
__publicField(_WebsocketClientBridge, "maxFailureCacheSize", 1e3);
|
|
201
|
-
var WebsocketClientBridge = _WebsocketClientBridge;
|
|
202
195
|
WebsocketClientBridge = _ts_decorate([
|
|
203
196
|
creatableModule()
|
|
204
197
|
], WebsocketClientBridge);
|
|
@@ -216,7 +209,10 @@ var BridgeCommands = {
|
|
|
216
209
|
query: "query"
|
|
217
210
|
};
|
|
218
211
|
var DEFAULT_HOST_PORT = 8080;
|
|
219
|
-
var
|
|
212
|
+
var WebsocketBridge = class extends WebsocketClientBridge {
|
|
213
|
+
static {
|
|
214
|
+
__name(this, "WebsocketBridge");
|
|
215
|
+
}
|
|
220
216
|
httpServer;
|
|
221
217
|
server;
|
|
222
218
|
get host() {
|
|
@@ -262,15 +258,12 @@ var _WebsocketBridge = class _WebsocketBridge extends WebsocketClientBridge {
|
|
|
262
258
|
this.httpServer.listen(host.port ?? DEFAULT_HOST_PORT);
|
|
263
259
|
}
|
|
264
260
|
stopServer() {
|
|
265
|
-
|
|
266
|
-
(_a = this.server) == null ? void 0 : _a.close();
|
|
261
|
+
this.server?.close();
|
|
267
262
|
this.server = void 0;
|
|
268
|
-
|
|
263
|
+
this.httpServer?.close();
|
|
269
264
|
this.httpServer = void 0;
|
|
270
265
|
}
|
|
271
266
|
};
|
|
272
|
-
__name(_WebsocketBridge, "WebsocketBridge");
|
|
273
|
-
var WebsocketBridge = _WebsocketBridge;
|
|
274
267
|
WebsocketBridge = _ts_decorate2([
|
|
275
268
|
creatableModule2()
|
|
276
269
|
], WebsocketBridge);
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Bridge.ts","../../src/ClientBridge.ts","../../src/Config.ts","../../src/WebsocketBridgeModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["import { createServer as createHttpServer, Server as HttpServer } from 'node:http'\n\nimport { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { BridgeExposeOptions, BridgeModule } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Server, Socket } from 'socket.io'\n\nimport { WebsocketClientBridge } from './ClientBridge.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(): Promise<boolean> {\n if (this.host) {\n this.startServer()\n }\n return await super.startHandler()\n }\n\n override async stopHandler(): Promise<boolean> {\n if (this.host) {\n this.stopServer()\n }\n return await super.stopHandler()\n }\n\n private startServer() {\n if (this.httpServer) {\n throw new Error('Http Server already started')\n }\n if (this.server) {\n throw new Error('Socket Server already started')\n }\n const host = assertEx(this.host, () => 'No Host Configured')\n this.httpServer = createHttpServer()\n this.server = new Server(this.httpServer)\n\n this.server.on('connection', (socket: Socket) => {\n socket.on(BridgeCommands.join, async (address: Address) => {\n await socket.join(address)\n console.log(`User ${socket.id} has connected to module ${address}`)\n })\n\n socket.on(BridgeCommands.query, ({ address, query }: { address: Address; query: Payload[] }) => {\n socket.to(address).emit('message', query)\n })\n })\n this.httpServer.listen(host.port ?? DEFAULT_HOST_PORT)\n }\n\n private stopServer() {\n this.server?.close()\n this.server = undefined\n this.httpServer?.close()\n this.httpServer = undefined\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { creatableModule, ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { Semaphore } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { WebsocketBridgeConfigSchema } from './Config.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 static defaultFailureRetryTime = 1000 * 60\n static defaultMaxConnections = 4\n static defaultMaxPayloadSizeWarning = 256 * 256\n static maxFailureCacheSize = 1000\n\n private _failureTimeCache = new LRUCache<Address, number>({ max: WebsocketClientBridge.maxFailureCacheSize })\n private _querySemaphore?: Semaphore\n\n private _resolver?: WebsocketBridgeModuleResolver\n\n get client() {\n return this.config.client\n }\n\n get failureRetryTime() {\n return this.client?.failureRetryTime ?? WebsocketClientBridge.defaultFailureRetryTime\n }\n\n get maxConnections() {\n return this.client?.maxConnections ?? WebsocketClientBridge.defaultMaxConnections\n }\n\n get maxPayloadSizeWarning() {\n return this.client?.maxPayloadSizeWarning ?? WebsocketClientBridge.defaultMaxPayloadSizeWarning\n }\n\n get querySemaphore() {\n this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections)\n return this._querySemaphore\n }\n\n override get resolver() {\n this._resolver\n = this._resolver\n ?? new WebsocketBridgeModuleResolver({\n archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },\n bridge: this,\n querySender: this,\n root: this,\n wrapperAccount: this.account,\n })\n return this._resolver\n }\n\n get url() {\n return assertEx(this.config.client?.url, () => 'No Url Set')\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n async getRoots(): Promise<ModuleInstance[]> {\n return await Promise.resolve([])\n }\n\n async sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n _query: TQuery,\n _payloads?: TIn[],\n ): Promise<ModuleQueryResult<TOut>> {\n const lastFailureTime = this._failureTimeCache.get(targetAddress)\n if (lastFailureTime !== undefined) {\n const now = Date.now()\n const timeSincePreviousFailure = now - lastFailureTime\n if (timeSincePreviousFailure > this.failureRetryTime) {\n throw new Error(`target module failed recently [${targetAddress}] [${timeSincePreviousFailure}ms ago]`)\n }\n this._failureTimeCache.delete(targetAddress)\n }\n try {\n await this.querySemaphore.acquire()\n throw new Error('Unsupported')\n } catch (ex) {\n 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 { EmptyObject } from '@xylabs/object'\nimport { 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 { Address, isAddress } from '@xylabs/hex'\nimport { Account } from '@xyo-network/account'\nimport { AbstractBridgeModuleResolver, BridgeModuleResolverParams, wrapModuleWithType } from '@xyo-network/bridge-abstract'\nimport { ConfigPayload, ConfigSchema } from '@xyo-network/config-payload-plugin'\nimport {\n asModuleInstance,\n ModuleConfig,\n ModuleConfigSchema,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ResolveHelper,\n} from '@xyo-network/module-model'\n\nimport { WebsocketBridgeQuerySender, WebsocketModuleProxy, WebsocketModuleProxyParams } from './ModuleProxy/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 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 = 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, 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 { Address } from '@xylabs/hex'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/bridge-abstract'\nimport { ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport interface WebsocketBridgeQuerySender {\n sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n query: TQuery,\n payloads?: TIn[],\n ) => Promise<ModuleQueryResult<TOut>>\n}\n\nexport type WebsocketModuleProxyParams = ModuleProxyParams & {\n querySender: WebsocketBridgeQuerySender\n}\n\nexport class WebsocketModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends Omit<WebsocketModuleProxyParams, 'config'> & { config: TWrappedModule['config'] } = Omit<WebsocketModuleProxyParams, 'config'> & {\n config: TWrappedModule['config']\n },\n>\n extends AbstractModuleProxy<TWrappedModule, TParams>\n implements ModuleInstance<TParams, TWrappedModule['eventData']> {\n static createCount = 0\n\n constructor(params: TParams) {\n WebsocketModuleProxy.createCount = WebsocketModuleProxy.createCount + 1\n if (Math.floor(WebsocketModuleProxy.createCount / 10) === WebsocketModuleProxy.createCount / 10) {\n console.log(`WebsocketModuleProxy.createCount: ${WebsocketModuleProxy.createCount}`)\n }\n super(params)\n }\n\n async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n return await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads)\n }\n}\n"],"mappings":"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","names":["createServer","createHttpServer","assertEx","creatableModule","Server","assertEx","AbstractBridge","creatableModule","Semaphore","LRUCache","WebsocketBridgeConfigSchema","assertEx","isAddress","Account","AbstractBridgeModuleResolver","wrapModuleWithType","ConfigSchema","asModuleInstance","ModuleConfigSchema","ResolveHelper","AbstractModuleProxy","WebsocketModuleProxy","AbstractModuleProxy","constructor","params","createCount","Math","floor","console","log","proxyQueryHandler","query","payloads","querySender","sendBridgeQuery","moduleAddress","WebsocketBridgeModuleResolver","AbstractBridgeModuleResolver","querySender","params","resolveHandler","id","options","parentResult","idParts","split","untransformedFirstPart","assertEx","shift","firstPart","ResolveHelper","transformModuleIdentifier","moduleAddress","isAddress","remainderParts","join","account","Account","random","config","schema","ModuleConfigSchema","host","logger","debug","proxy","WebsocketModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","instance","asModuleInstance","upResolver","add","downResolver","length","result","resolve","WebsocketClientBridge","AbstractBridge","_failureTimeCache","LRUCache","max","maxFailureCacheSize","_querySemaphore","_resolver","client","config","failureRetryTime","defaultFailureRetryTime","maxConnections","defaultMaxConnections","maxPayloadSizeWarning","defaultMaxPayloadSizeWarning","querySemaphore","Semaphore","resolver","WebsocketBridgeModuleResolver","archiving","resolveArchivists","resolveArchivingArchivists","bind","bridge","querySender","root","wrapperAccount","account","url","assertEx","exposeHandler","_id","_options","Error","exposedHandler","getRoots","Promise","resolve","sendBridgeQuery","targetAddress","_query","_payloads","lastFailureTime","get","undefined","now","Date","timeSincePreviousFailure","delete","acquire","ex","release","unexposeHandler","configSchemas","WebsocketBridgeConfigSchema","defaultConfigSchema","BridgeCommands","join","query","DEFAULT_HOST_PORT","WebsocketBridge","WebsocketClientBridge","httpServer","server","host","config","exposeHandler","_id","_options","Error","exposedHandler","startHandler","startServer","stopHandler","stopServer","assertEx","createHttpServer","Server","on","socket","address","console","log","id","to","emit","listen","port","close","undefined"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Bridge.ts","../../src/ClientBridge.ts","../../src/Config.ts","../../src/WebsocketBridgeModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["import { createServer as createHttpServer, Server as HttpServer } from 'node:http'\n\nimport { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { BridgeExposeOptions, BridgeModule } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Server, Socket } from 'socket.io'\n\nimport { WebsocketClientBridge } from './ClientBridge.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(): Promise<boolean> {\n if (this.host) {\n this.startServer()\n }\n return await super.startHandler()\n }\n\n override async stopHandler(): Promise<boolean> {\n if (this.host) {\n this.stopServer()\n }\n return await super.stopHandler()\n }\n\n private startServer() {\n if (this.httpServer) {\n throw new Error('Http Server already started')\n }\n if (this.server) {\n throw new Error('Socket Server already started')\n }\n const host = assertEx(this.host, () => 'No Host Configured')\n this.httpServer = createHttpServer()\n this.server = new Server(this.httpServer)\n\n this.server.on('connection', (socket: Socket) => {\n socket.on(BridgeCommands.join, async (address: Address) => {\n await socket.join(address)\n console.log(`User ${socket.id} has connected to module ${address}`)\n })\n\n socket.on(BridgeCommands.query, ({ address, query }: { address: Address; query: Payload[] }) => {\n socket.to(address).emit('message', query)\n })\n })\n this.httpServer.listen(host.port ?? DEFAULT_HOST_PORT)\n }\n\n private stopServer() {\n this.server?.close()\n this.server = undefined\n this.httpServer?.close()\n this.httpServer = undefined\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { creatableModule, ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { Semaphore } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { WebsocketBridgeConfigSchema } from './Config.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 static defaultFailureRetryTime = 1000 * 60\n static defaultMaxConnections = 4\n static defaultMaxPayloadSizeWarning = 256 * 256\n static maxFailureCacheSize = 1000\n\n private _failureTimeCache = new LRUCache<Address, number>({ max: WebsocketClientBridge.maxFailureCacheSize })\n private _querySemaphore?: Semaphore\n\n private _resolver?: WebsocketBridgeModuleResolver\n\n get client() {\n return this.config.client\n }\n\n get failureRetryTime() {\n return this.client?.failureRetryTime ?? WebsocketClientBridge.defaultFailureRetryTime\n }\n\n get maxConnections() {\n return this.client?.maxConnections ?? WebsocketClientBridge.defaultMaxConnections\n }\n\n get maxPayloadSizeWarning() {\n return this.client?.maxPayloadSizeWarning ?? WebsocketClientBridge.defaultMaxPayloadSizeWarning\n }\n\n get querySemaphore() {\n this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections)\n return this._querySemaphore\n }\n\n override get resolver() {\n this._resolver\n = this._resolver\n ?? new WebsocketBridgeModuleResolver({\n archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },\n bridge: this,\n querySender: this,\n root: this,\n wrapperAccount: this.account,\n })\n return this._resolver\n }\n\n get url() {\n return assertEx(this.config.client?.url, () => 'No Url Set')\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n async getRoots(): Promise<ModuleInstance[]> {\n return await Promise.resolve([])\n }\n\n async sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n _query: TQuery,\n _payloads?: TIn[],\n ): Promise<ModuleQueryResult<TOut>> {\n const lastFailureTime = this._failureTimeCache.get(targetAddress)\n if (lastFailureTime !== undefined) {\n const now = Date.now()\n const timeSincePreviousFailure = now - lastFailureTime\n if (timeSincePreviousFailure > this.failureRetryTime) {\n throw new Error(`target module failed recently [${targetAddress}] [${timeSincePreviousFailure}ms ago]`)\n }\n this._failureTimeCache.delete(targetAddress)\n }\n try {\n await this.querySemaphore.acquire()\n throw new Error('Unsupported')\n } catch (ex) {\n 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 { EmptyObject } from '@xylabs/object'\nimport { 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 { Address, isAddress } from '@xylabs/hex'\nimport { Account } from '@xyo-network/account'\nimport { AbstractBridgeModuleResolver, BridgeModuleResolverParams, wrapModuleWithType } from '@xyo-network/bridge-abstract'\nimport { ConfigPayload, ConfigSchema } from '@xyo-network/config-payload-plugin'\nimport {\n asModuleInstance,\n ModuleConfig,\n ModuleConfigSchema,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ResolveHelper,\n} from '@xyo-network/module-model'\n\nimport { WebsocketBridgeQuerySender, WebsocketModuleProxy, WebsocketModuleProxyParams } from './ModuleProxy/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 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 = 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, 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 { Address } from '@xylabs/hex'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/bridge-abstract'\nimport { ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport interface WebsocketBridgeQuerySender {\n sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n query: TQuery,\n payloads?: TIn[],\n ) => Promise<ModuleQueryResult<TOut>>\n}\n\nexport type WebsocketModuleProxyParams = ModuleProxyParams & {\n querySender: WebsocketBridgeQuerySender\n}\n\nexport class WebsocketModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends Omit<WebsocketModuleProxyParams, 'config'> & { config: TWrappedModule['config'] } = Omit<WebsocketModuleProxyParams, 'config'> & {\n config: TWrappedModule['config']\n },\n>\n extends AbstractModuleProxy<TWrappedModule, TParams>\n implements ModuleInstance<TParams, TWrappedModule['eventData']> {\n static createCount = 0\n\n constructor(params: TParams) {\n WebsocketModuleProxy.createCount = WebsocketModuleProxy.createCount + 1\n if (Math.floor(WebsocketModuleProxy.createCount / 10) === WebsocketModuleProxy.createCount / 10) {\n console.log(`WebsocketModuleProxy.createCount: ${WebsocketModuleProxy.createCount}`)\n }\n super(params)\n }\n\n async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n return await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads)\n }\n}\n"],"mappings":"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","names":["createServer","createHttpServer","assertEx","creatableModule","Server","assertEx","AbstractBridge","creatableModule","Semaphore","LRUCache","WebsocketBridgeConfigSchema","assertEx","isAddress","Account","AbstractBridgeModuleResolver","wrapModuleWithType","ConfigSchema","asModuleInstance","ModuleConfigSchema","ResolveHelper","AbstractModuleProxy","WebsocketModuleProxy","AbstractModuleProxy","createCount","constructor","params","Math","floor","console","log","proxyQueryHandler","query","payloads","querySender","sendBridgeQuery","moduleAddress","WebsocketBridgeModuleResolver","AbstractBridgeModuleResolver","querySender","params","resolveHandler","id","options","parentResult","idParts","split","untransformedFirstPart","assertEx","shift","firstPart","ResolveHelper","transformModuleIdentifier","moduleAddress","isAddress","remainderParts","join","account","Account","random","config","schema","ModuleConfigSchema","host","logger","debug","proxy","WebsocketModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","instance","asModuleInstance","upResolver","add","downResolver","length","result","resolve","WebsocketClientBridge","AbstractBridge","configSchemas","WebsocketBridgeConfigSchema","defaultConfigSchema","defaultFailureRetryTime","defaultMaxConnections","defaultMaxPayloadSizeWarning","maxFailureCacheSize","_failureTimeCache","LRUCache","max","_querySemaphore","_resolver","client","config","failureRetryTime","maxConnections","maxPayloadSizeWarning","querySemaphore","Semaphore","resolver","WebsocketBridgeModuleResolver","archiving","resolveArchivists","resolveArchivingArchivists","bind","bridge","querySender","root","wrapperAccount","account","url","assertEx","exposeHandler","_id","_options","Error","exposedHandler","getRoots","Promise","resolve","sendBridgeQuery","targetAddress","_query","_payloads","lastFailureTime","get","undefined","now","Date","timeSincePreviousFailure","delete","acquire","ex","release","unexposeHandler","BridgeCommands","join","query","DEFAULT_HOST_PORT","WebsocketBridge","WebsocketClientBridge","httpServer","server","host","config","exposeHandler","_id","_options","Error","exposedHandler","startHandler","startServer","stopHandler","stopServer","assertEx","createHttpServer","Server","on","socket","address","console","log","id","to","emit","listen","port","close","undefined"]}
|
package/package.json
CHANGED
|
@@ -10,63 +10,53 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xylabs/assert": "^3.6.
|
|
14
|
-
"@xylabs/hex": "^3.6.
|
|
15
|
-
"@xylabs/object": "^3.6.
|
|
16
|
-
"@xylabs/promise": "^3.6.
|
|
17
|
-
"@xyo-network/account": "^
|
|
18
|
-
"@xyo-network/boundwitness-model": "^
|
|
19
|
-
"@xyo-network/bridge-abstract": "^
|
|
20
|
-
"@xyo-network/bridge-model": "^
|
|
21
|
-
"@xyo-network/config-payload-plugin": "^
|
|
22
|
-
"@xyo-network/module-model": "^
|
|
23
|
-
"@xyo-network/payload-model": "^
|
|
13
|
+
"@xylabs/assert": "^3.6.12",
|
|
14
|
+
"@xylabs/hex": "^3.6.12",
|
|
15
|
+
"@xylabs/object": "^3.6.12",
|
|
16
|
+
"@xylabs/promise": "^3.6.12",
|
|
17
|
+
"@xyo-network/account": "^3.0.0",
|
|
18
|
+
"@xyo-network/boundwitness-model": "^3.0.0",
|
|
19
|
+
"@xyo-network/bridge-abstract": "^3.0.0",
|
|
20
|
+
"@xyo-network/bridge-model": "^3.0.0",
|
|
21
|
+
"@xyo-network/config-payload-plugin": "^3.0.0",
|
|
22
|
+
"@xyo-network/module-model": "^3.0.0",
|
|
23
|
+
"@xyo-network/payload-model": "^3.0.0",
|
|
24
24
|
"async-mutex": "^0.5.0",
|
|
25
25
|
"lru-cache": "^11.0.0",
|
|
26
26
|
"socket.io": "^4.7.5"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@xylabs/ts-scripts-yarn3": "
|
|
30
|
-
"@xylabs/tsconfig": "
|
|
31
|
-
"@xyo-network/account": "^
|
|
32
|
-
"@xyo-network/archivist-model": "^
|
|
33
|
-
"@xyo-network/node-memory": "^
|
|
34
|
-
"@xyo-network/node-model": "^
|
|
35
|
-
"@xyo-network/payload-builder": "^
|
|
36
|
-
"@xyo-network/payload-wrapper": "^
|
|
29
|
+
"@xylabs/ts-scripts-yarn3": "next",
|
|
30
|
+
"@xylabs/tsconfig": "next",
|
|
31
|
+
"@xyo-network/account": "^3.0.0",
|
|
32
|
+
"@xyo-network/archivist-model": "^3.0.0",
|
|
33
|
+
"@xyo-network/node-memory": "^3.0.0",
|
|
34
|
+
"@xyo-network/node-model": "^3.0.0",
|
|
35
|
+
"@xyo-network/payload-builder": "^3.0.0",
|
|
36
|
+
"@xyo-network/payload-wrapper": "^3.0.0",
|
|
37
37
|
"socket.io-client": "^4.7.5",
|
|
38
|
-
"tslib": "^2.6.3",
|
|
39
38
|
"typescript": "^5.5.4"
|
|
40
39
|
},
|
|
41
40
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
42
41
|
"exports": {
|
|
43
42
|
".": {
|
|
44
43
|
"browser": {
|
|
45
|
-
"require": {
|
|
46
|
-
"types": "./dist/browser/index-browser.d.cts",
|
|
47
|
-
"default": "./dist/browser/index-browser.cjs"
|
|
48
|
-
},
|
|
49
44
|
"import": {
|
|
50
|
-
"types": "./dist/browser/index-browser.d.
|
|
45
|
+
"types": "./dist/browser/index-browser.d.ts",
|
|
51
46
|
"default": "./dist/browser/index-browser.mjs"
|
|
52
47
|
}
|
|
53
48
|
},
|
|
54
49
|
"node": {
|
|
55
|
-
"require": {
|
|
56
|
-
"types": "./dist/node/index.d.cts",
|
|
57
|
-
"default": "./dist/node/index.cjs"
|
|
58
|
-
},
|
|
59
50
|
"import": {
|
|
60
|
-
"types": "./dist/node/index.d.
|
|
51
|
+
"types": "./dist/node/index.d.ts",
|
|
61
52
|
"default": "./dist/node/index.mjs"
|
|
62
53
|
}
|
|
63
54
|
}
|
|
64
55
|
},
|
|
65
56
|
"./package.json": "./package.json"
|
|
66
57
|
},
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"types": "dist/node/index.d.ts",
|
|
58
|
+
"module": "dist/neutral/index.mjs",
|
|
59
|
+
"types": "dist/neutral/index.d.ts",
|
|
70
60
|
"homepage": "https://xyo.network",
|
|
71
61
|
"license": "LGPL-3.0-only",
|
|
72
62
|
"publishConfig": {
|
|
@@ -77,6 +67,6 @@
|
|
|
77
67
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
78
68
|
},
|
|
79
69
|
"sideEffects": false,
|
|
80
|
-
"version": "
|
|
70
|
+
"version": "3.0.0",
|
|
81
71
|
"type": "module"
|
|
82
72
|
}
|