@xyo-network/bridge-http 2.102.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/LICENSE +165 -0
- package/README.md +13 -0
- package/dist/browser/HttpBridge.d.cts +43 -0
- package/dist/browser/HttpBridge.d.cts.map +1 -0
- package/dist/browser/HttpBridge.d.mts +43 -0
- package/dist/browser/HttpBridge.d.mts.map +1 -0
- package/dist/browser/HttpBridge.d.ts +43 -0
- package/dist/browser/HttpBridge.d.ts.map +1 -0
- package/dist/browser/HttpBridgeConfig.d.cts +13 -0
- package/dist/browser/HttpBridgeConfig.d.cts.map +1 -0
- package/dist/browser/HttpBridgeConfig.d.mts +13 -0
- package/dist/browser/HttpBridgeConfig.d.mts.map +1 -0
- package/dist/browser/HttpBridgeConfig.d.ts +13 -0
- package/dist/browser/HttpBridgeConfig.d.ts.map +1 -0
- package/dist/browser/HttpBridgeModuleResolver.d.cts +14 -0
- package/dist/browser/HttpBridgeModuleResolver.d.cts.map +1 -0
- package/dist/browser/HttpBridgeModuleResolver.d.mts +14 -0
- package/dist/browser/HttpBridgeModuleResolver.d.mts.map +1 -0
- package/dist/browser/HttpBridgeModuleResolver.d.ts +14 -0
- package/dist/browser/HttpBridgeModuleResolver.d.ts.map +1 -0
- package/dist/browser/ModuleProxy/ModuleProxy.d.cts +21 -0
- package/dist/browser/ModuleProxy/ModuleProxy.d.cts.map +1 -0
- package/dist/browser/ModuleProxy/ModuleProxy.d.mts +21 -0
- package/dist/browser/ModuleProxy/ModuleProxy.d.mts.map +1 -0
- package/dist/browser/ModuleProxy/ModuleProxy.d.ts +21 -0
- package/dist/browser/ModuleProxy/ModuleProxy.d.ts.map +1 -0
- package/dist/browser/ModuleProxy/index.d.cts +2 -0
- package/dist/browser/ModuleProxy/index.d.cts.map +1 -0
- package/dist/browser/ModuleProxy/index.d.mts +2 -0
- package/dist/browser/ModuleProxy/index.d.mts.map +1 -0
- package/dist/browser/ModuleProxy/index.d.ts +2 -0
- package/dist/browser/ModuleProxy/index.d.ts.map +1 -0
- package/dist/browser/index.cjs +306 -0
- package/dist/browser/index.cjs.map +1 -0
- package/dist/browser/index.d.cts +3 -0
- package/dist/browser/index.d.cts.map +1 -0
- package/dist/browser/index.d.mts +3 -0
- package/dist/browser/index.d.mts.map +1 -0
- package/dist/browser/index.d.ts +3 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +285 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/neutral/HttpBridge.d.cts +43 -0
- package/dist/neutral/HttpBridge.d.cts.map +1 -0
- package/dist/neutral/HttpBridge.d.mts +43 -0
- package/dist/neutral/HttpBridge.d.mts.map +1 -0
- package/dist/neutral/HttpBridge.d.ts +43 -0
- package/dist/neutral/HttpBridge.d.ts.map +1 -0
- package/dist/neutral/HttpBridgeConfig.d.cts +13 -0
- package/dist/neutral/HttpBridgeConfig.d.cts.map +1 -0
- package/dist/neutral/HttpBridgeConfig.d.mts +13 -0
- package/dist/neutral/HttpBridgeConfig.d.mts.map +1 -0
- package/dist/neutral/HttpBridgeConfig.d.ts +13 -0
- package/dist/neutral/HttpBridgeConfig.d.ts.map +1 -0
- package/dist/neutral/HttpBridgeModuleResolver.d.cts +14 -0
- package/dist/neutral/HttpBridgeModuleResolver.d.cts.map +1 -0
- package/dist/neutral/HttpBridgeModuleResolver.d.mts +14 -0
- package/dist/neutral/HttpBridgeModuleResolver.d.mts.map +1 -0
- package/dist/neutral/HttpBridgeModuleResolver.d.ts +14 -0
- package/dist/neutral/HttpBridgeModuleResolver.d.ts.map +1 -0
- package/dist/neutral/ModuleProxy/ModuleProxy.d.cts +21 -0
- package/dist/neutral/ModuleProxy/ModuleProxy.d.cts.map +1 -0
- package/dist/neutral/ModuleProxy/ModuleProxy.d.mts +21 -0
- package/dist/neutral/ModuleProxy/ModuleProxy.d.mts.map +1 -0
- package/dist/neutral/ModuleProxy/ModuleProxy.d.ts +21 -0
- package/dist/neutral/ModuleProxy/ModuleProxy.d.ts.map +1 -0
- package/dist/neutral/ModuleProxy/index.d.cts +2 -0
- package/dist/neutral/ModuleProxy/index.d.cts.map +1 -0
- package/dist/neutral/ModuleProxy/index.d.mts +2 -0
- package/dist/neutral/ModuleProxy/index.d.mts.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/index.cjs +306 -0
- package/dist/neutral/index.cjs.map +1 -0
- package/dist/neutral/index.d.cts +3 -0
- package/dist/neutral/index.d.cts.map +1 -0
- package/dist/neutral/index.d.mts +3 -0
- package/dist/neutral/index.d.mts.map +1 -0
- package/dist/neutral/index.d.ts +3 -0
- package/dist/neutral/index.d.ts.map +1 -0
- package/dist/neutral/index.js +285 -0
- package/dist/neutral/index.js.map +1 -0
- package/dist/node/HttpBridge.d.cts +43 -0
- package/dist/node/HttpBridge.d.cts.map +1 -0
- package/dist/node/HttpBridge.d.mts +43 -0
- package/dist/node/HttpBridge.d.mts.map +1 -0
- package/dist/node/HttpBridge.d.ts +43 -0
- package/dist/node/HttpBridge.d.ts.map +1 -0
- package/dist/node/HttpBridgeConfig.d.cts +13 -0
- package/dist/node/HttpBridgeConfig.d.cts.map +1 -0
- package/dist/node/HttpBridgeConfig.d.mts +13 -0
- package/dist/node/HttpBridgeConfig.d.mts.map +1 -0
- package/dist/node/HttpBridgeConfig.d.ts +13 -0
- package/dist/node/HttpBridgeConfig.d.ts.map +1 -0
- package/dist/node/HttpBridgeModuleResolver.d.cts +14 -0
- package/dist/node/HttpBridgeModuleResolver.d.cts.map +1 -0
- package/dist/node/HttpBridgeModuleResolver.d.mts +14 -0
- package/dist/node/HttpBridgeModuleResolver.d.mts.map +1 -0
- package/dist/node/HttpBridgeModuleResolver.d.ts +14 -0
- package/dist/node/HttpBridgeModuleResolver.d.ts.map +1 -0
- package/dist/node/ModuleProxy/ModuleProxy.d.cts +21 -0
- package/dist/node/ModuleProxy/ModuleProxy.d.cts.map +1 -0
- package/dist/node/ModuleProxy/ModuleProxy.d.mts +21 -0
- package/dist/node/ModuleProxy/ModuleProxy.d.mts.map +1 -0
- package/dist/node/ModuleProxy/ModuleProxy.d.ts +21 -0
- package/dist/node/ModuleProxy/ModuleProxy.d.ts.map +1 -0
- package/dist/node/ModuleProxy/index.d.cts +2 -0
- package/dist/node/ModuleProxy/index.d.cts.map +1 -0
- package/dist/node/ModuleProxy/index.d.mts +2 -0
- package/dist/node/ModuleProxy/index.d.mts.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/index.cjs +324 -0
- package/dist/node/index.cjs.map +1 -0
- package/dist/node/index.d.cts +3 -0
- package/dist/node/index.d.cts.map +1 -0
- package/dist/node/index.d.mts +3 -0
- package/dist/node/index.d.mts.map +1 -0
- package/dist/node/index.d.ts +3 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +298 -0
- package/dist/node/index.js.map +1 -0
- package/package.json +86 -0
- package/src/HttpBridge.ts +195 -0
- package/src/HttpBridgeConfig.ts +17 -0
- package/src/HttpBridgeModuleResolver.ts +88 -0
- package/src/ModuleProxy/ModuleProxy.ts +41 -0
- package/src/ModuleProxy/index.ts +1 -0
- package/src/index.ts +2 -0
- package/typedoc.json +5 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert'
|
|
2
|
+
import { Address, isAddress } from '@xylabs/hex'
|
|
3
|
+
import { AbstractBridgeModuleResolver, BridgeModuleResolverParams, wrapModuleWithType } from '@xyo-network/abstract-bridge'
|
|
4
|
+
import { Account } from '@xyo-network/account'
|
|
5
|
+
import { ConfigPayload, ConfigSchema } from '@xyo-network/config-payload-plugin'
|
|
6
|
+
import {
|
|
7
|
+
asModuleInstance,
|
|
8
|
+
ModuleConfig,
|
|
9
|
+
ModuleConfigSchema,
|
|
10
|
+
ModuleFilterOptions,
|
|
11
|
+
ModuleIdentifier,
|
|
12
|
+
ModuleInstance,
|
|
13
|
+
ResolveHelper,
|
|
14
|
+
} from '@xyo-network/module-model'
|
|
15
|
+
|
|
16
|
+
import { BridgeQuerySender, HttpModuleProxy, HttpModuleProxyParams } from './ModuleProxy'
|
|
17
|
+
|
|
18
|
+
export interface HttpBridgeModuleResolverParams extends BridgeModuleResolverParams {
|
|
19
|
+
querySender: BridgeQuerySender
|
|
20
|
+
rootUrl: string
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export class HttpBridgeModuleResolver<
|
|
24
|
+
T extends HttpBridgeModuleResolverParams = HttpBridgeModuleResolverParams,
|
|
25
|
+
> extends AbstractBridgeModuleResolver<T> {
|
|
26
|
+
get querySender() {
|
|
27
|
+
return this.params.querySender
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
moduleUrl(address: Address) {
|
|
31
|
+
return new URL(address, this.params.rootUrl)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
override async resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]> {
|
|
35
|
+
const parentResult = await super.resolveHandler(id, options)
|
|
36
|
+
if (parentResult.length > 0) {
|
|
37
|
+
return parentResult
|
|
38
|
+
}
|
|
39
|
+
if (id === '*') {
|
|
40
|
+
return []
|
|
41
|
+
}
|
|
42
|
+
const idParts = id.split(':')
|
|
43
|
+
const untransformedFirstPart = assertEx(idParts.shift(), () => `Invalid module identifier: ${id}`)
|
|
44
|
+
const firstPart = await ResolveHelper.transformModuleIdentifier(untransformedFirstPart)
|
|
45
|
+
const moduleAddress = firstPart as Address
|
|
46
|
+
assertEx(isAddress(firstPart), () => `Invalid module address: ${firstPart}`)
|
|
47
|
+
const remainderParts = idParts.join(':')
|
|
48
|
+
const params: HttpModuleProxyParams = {
|
|
49
|
+
account: Account.randomSync(),
|
|
50
|
+
archiving: this.params.archiving,
|
|
51
|
+
config: { schema: ModuleConfigSchema },
|
|
52
|
+
host: this,
|
|
53
|
+
moduleAddress,
|
|
54
|
+
querySender: this.querySender,
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
this.logger?.debug(`creating HttpProxy [${moduleAddress}] ${id}`)
|
|
58
|
+
|
|
59
|
+
const proxy = new HttpModuleProxy<T, HttpModuleProxyParams>(params)
|
|
60
|
+
//calling state here to get the config
|
|
61
|
+
if (proxy) {
|
|
62
|
+
const state = await proxy.state()
|
|
63
|
+
if (state) {
|
|
64
|
+
const configSchema = (state.find((payload) => payload.schema === ConfigSchema) as ConfigPayload | undefined)?.config
|
|
65
|
+
const config = assertEx(
|
|
66
|
+
state.find((payload) => payload.schema === configSchema),
|
|
67
|
+
() => 'Unable to locate config',
|
|
68
|
+
) as ModuleConfig
|
|
69
|
+
proxy.setConfig(config)
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
await proxy.start()
|
|
74
|
+
|
|
75
|
+
const wrapped = assertEx(wrapModuleWithType(proxy, Account.randomSync()) as unknown as T, () => `Failed to wrapModuleWithType [${id}]`)
|
|
76
|
+
const instance = assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)
|
|
77
|
+
proxy.upResolver.add(instance)
|
|
78
|
+
proxy.downResolver.add(instance)
|
|
79
|
+
|
|
80
|
+
if (remainderParts.length > 0) {
|
|
81
|
+
const result = await wrapped.resolve<T>(remainderParts, options)
|
|
82
|
+
return result ? [result] : []
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
//console.log(`resolved: ${proxy.address} [${wrapped.constructor.name}] [${as.constructor.name}]`)
|
|
86
|
+
return [instance]
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Address } from '@xylabs/hex'
|
|
2
|
+
import { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/abstract-bridge'
|
|
3
|
+
import { QueryBoundWitness } from '@xyo-network/boundwitness-model'
|
|
4
|
+
import { AttachableModuleInstance, ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'
|
|
5
|
+
import { Payload } from '@xyo-network/payload-model'
|
|
6
|
+
|
|
7
|
+
export interface BridgeQuerySender {
|
|
8
|
+
sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(
|
|
9
|
+
targetAddress: Address,
|
|
10
|
+
query: TQuery,
|
|
11
|
+
payloads?: TIn[],
|
|
12
|
+
) => Promise<ModuleQueryResult<TOut>>
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export type HttpModuleProxyParams = ModuleProxyParams & {
|
|
16
|
+
querySender: BridgeQuerySender
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export class HttpModuleProxy<
|
|
20
|
+
TWrappedModule extends ModuleInstance = ModuleInstance,
|
|
21
|
+
TParams extends Omit<HttpModuleProxyParams, 'config'> & { config: TWrappedModule['config'] } = Omit<HttpModuleProxyParams, 'config'> & {
|
|
22
|
+
config: TWrappedModule['config']
|
|
23
|
+
},
|
|
24
|
+
>
|
|
25
|
+
extends AbstractModuleProxy<TWrappedModule, TParams>
|
|
26
|
+
implements AttachableModuleInstance<TParams, TWrappedModule['eventData']>
|
|
27
|
+
{
|
|
28
|
+
static createCount = 0
|
|
29
|
+
|
|
30
|
+
constructor(params: TParams) {
|
|
31
|
+
HttpModuleProxy.createCount = HttpModuleProxy.createCount + 1
|
|
32
|
+
if (Math.floor(HttpModuleProxy.createCount / 10) === HttpModuleProxy.createCount / 10) {
|
|
33
|
+
console.log(`HttpModuleProxy.createCount: ${HttpModuleProxy.createCount}`)
|
|
34
|
+
}
|
|
35
|
+
super(params)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {
|
|
39
|
+
return await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads)
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ModuleProxy'
|
package/src/index.ts
ADDED