@xyo-network/bridge-abstract 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/AbstractBridge.d.cts +36 -0
- package/dist/browser/AbstractBridge.d.cts.map +1 -0
- package/dist/browser/AbstractBridge.d.mts +36 -0
- package/dist/browser/AbstractBridge.d.mts.map +1 -0
- package/dist/browser/AbstractBridge.d.ts +36 -0
- package/dist/browser/AbstractBridge.d.ts.map +1 -0
- package/dist/browser/AbstractBridgeModuleResolver.d.cts +21 -0
- package/dist/browser/AbstractBridgeModuleResolver.d.cts.map +1 -0
- package/dist/browser/AbstractBridgeModuleResolver.d.mts +21 -0
- package/dist/browser/AbstractBridgeModuleResolver.d.mts.map +1 -0
- package/dist/browser/AbstractBridgeModuleResolver.d.ts +21 -0
- package/dist/browser/AbstractBridgeModuleResolver.d.ts.map +1 -0
- package/dist/browser/AbstractModuleProxy/AbstractModuleProxy.d.cts +74 -0
- package/dist/browser/AbstractModuleProxy/AbstractModuleProxy.d.cts.map +1 -0
- package/dist/browser/AbstractModuleProxy/AbstractModuleProxy.d.mts +74 -0
- package/dist/browser/AbstractModuleProxy/AbstractModuleProxy.d.mts.map +1 -0
- package/dist/browser/AbstractModuleProxy/AbstractModuleProxy.d.ts +74 -0
- package/dist/browser/AbstractModuleProxy/AbstractModuleProxy.d.ts.map +1 -0
- package/dist/browser/AbstractModuleProxy/ModuleProxyResolver.d.cts +65 -0
- package/dist/browser/AbstractModuleProxy/ModuleProxyResolver.d.cts.map +1 -0
- package/dist/browser/AbstractModuleProxy/ModuleProxyResolver.d.mts +65 -0
- package/dist/browser/AbstractModuleProxy/ModuleProxyResolver.d.mts.map +1 -0
- package/dist/browser/AbstractModuleProxy/ModuleProxyResolver.d.ts +65 -0
- package/dist/browser/AbstractModuleProxy/ModuleProxyResolver.d.ts.map +1 -0
- package/dist/browser/AbstractModuleProxy/index.d.cts +3 -0
- package/dist/browser/AbstractModuleProxy/index.d.cts.map +1 -0
- package/dist/browser/AbstractModuleProxy/index.d.mts +3 -0
- package/dist/browser/AbstractModuleProxy/index.d.mts.map +1 -0
- package/dist/browser/AbstractModuleProxy/index.d.ts +3 -0
- package/dist/browser/AbstractModuleProxy/index.d.ts.map +1 -0
- package/dist/browser/index.cjs +585 -0
- package/dist/browser/index.cjs.map +1 -0
- package/dist/browser/index.d.cts +5 -0
- package/dist/browser/index.d.cts.map +1 -0
- package/dist/browser/index.d.mts +5 -0
- package/dist/browser/index.d.mts.map +1 -0
- package/dist/browser/index.d.ts +5 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +564 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/wrapModuleWithType.d.cts +5 -0
- package/dist/browser/wrapModuleWithType.d.cts.map +1 -0
- package/dist/browser/wrapModuleWithType.d.mts +5 -0
- package/dist/browser/wrapModuleWithType.d.mts.map +1 -0
- package/dist/browser/wrapModuleWithType.d.ts +5 -0
- package/dist/browser/wrapModuleWithType.d.ts.map +1 -0
- package/dist/neutral/AbstractBridge.d.cts +36 -0
- package/dist/neutral/AbstractBridge.d.cts.map +1 -0
- package/dist/neutral/AbstractBridge.d.mts +36 -0
- package/dist/neutral/AbstractBridge.d.mts.map +1 -0
- package/dist/neutral/AbstractBridge.d.ts +36 -0
- package/dist/neutral/AbstractBridge.d.ts.map +1 -0
- package/dist/neutral/AbstractBridgeModuleResolver.d.cts +21 -0
- package/dist/neutral/AbstractBridgeModuleResolver.d.cts.map +1 -0
- package/dist/neutral/AbstractBridgeModuleResolver.d.mts +21 -0
- package/dist/neutral/AbstractBridgeModuleResolver.d.mts.map +1 -0
- package/dist/neutral/AbstractBridgeModuleResolver.d.ts +21 -0
- package/dist/neutral/AbstractBridgeModuleResolver.d.ts.map +1 -0
- package/dist/neutral/AbstractModuleProxy/AbstractModuleProxy.d.cts +74 -0
- package/dist/neutral/AbstractModuleProxy/AbstractModuleProxy.d.cts.map +1 -0
- package/dist/neutral/AbstractModuleProxy/AbstractModuleProxy.d.mts +74 -0
- package/dist/neutral/AbstractModuleProxy/AbstractModuleProxy.d.mts.map +1 -0
- package/dist/neutral/AbstractModuleProxy/AbstractModuleProxy.d.ts +74 -0
- package/dist/neutral/AbstractModuleProxy/AbstractModuleProxy.d.ts.map +1 -0
- package/dist/neutral/AbstractModuleProxy/ModuleProxyResolver.d.cts +65 -0
- package/dist/neutral/AbstractModuleProxy/ModuleProxyResolver.d.cts.map +1 -0
- package/dist/neutral/AbstractModuleProxy/ModuleProxyResolver.d.mts +65 -0
- package/dist/neutral/AbstractModuleProxy/ModuleProxyResolver.d.mts.map +1 -0
- package/dist/neutral/AbstractModuleProxy/ModuleProxyResolver.d.ts +65 -0
- package/dist/neutral/AbstractModuleProxy/ModuleProxyResolver.d.ts.map +1 -0
- package/dist/neutral/AbstractModuleProxy/index.d.cts +3 -0
- package/dist/neutral/AbstractModuleProxy/index.d.cts.map +1 -0
- package/dist/neutral/AbstractModuleProxy/index.d.mts +3 -0
- package/dist/neutral/AbstractModuleProxy/index.d.mts.map +1 -0
- package/dist/neutral/AbstractModuleProxy/index.d.ts +3 -0
- package/dist/neutral/AbstractModuleProxy/index.d.ts.map +1 -0
- package/dist/neutral/index.cjs +585 -0
- package/dist/neutral/index.cjs.map +1 -0
- package/dist/neutral/index.d.cts +5 -0
- package/dist/neutral/index.d.cts.map +1 -0
- package/dist/neutral/index.d.mts +5 -0
- package/dist/neutral/index.d.mts.map +1 -0
- package/dist/neutral/index.d.ts +5 -0
- package/dist/neutral/index.d.ts.map +1 -0
- package/dist/neutral/index.js +564 -0
- package/dist/neutral/index.js.map +1 -0
- package/dist/neutral/wrapModuleWithType.d.cts +5 -0
- package/dist/neutral/wrapModuleWithType.d.cts.map +1 -0
- package/dist/neutral/wrapModuleWithType.d.mts +5 -0
- package/dist/neutral/wrapModuleWithType.d.mts.map +1 -0
- package/dist/neutral/wrapModuleWithType.d.ts +5 -0
- package/dist/neutral/wrapModuleWithType.d.ts.map +1 -0
- package/dist/node/AbstractBridge.d.cts +36 -0
- package/dist/node/AbstractBridge.d.cts.map +1 -0
- package/dist/node/AbstractBridge.d.mts +36 -0
- package/dist/node/AbstractBridge.d.mts.map +1 -0
- package/dist/node/AbstractBridge.d.ts +36 -0
- package/dist/node/AbstractBridge.d.ts.map +1 -0
- package/dist/node/AbstractBridgeModuleResolver.d.cts +21 -0
- package/dist/node/AbstractBridgeModuleResolver.d.cts.map +1 -0
- package/dist/node/AbstractBridgeModuleResolver.d.mts +21 -0
- package/dist/node/AbstractBridgeModuleResolver.d.mts.map +1 -0
- package/dist/node/AbstractBridgeModuleResolver.d.ts +21 -0
- package/dist/node/AbstractBridgeModuleResolver.d.ts.map +1 -0
- package/dist/node/AbstractModuleProxy/AbstractModuleProxy.d.cts +74 -0
- package/dist/node/AbstractModuleProxy/AbstractModuleProxy.d.cts.map +1 -0
- package/dist/node/AbstractModuleProxy/AbstractModuleProxy.d.mts +74 -0
- package/dist/node/AbstractModuleProxy/AbstractModuleProxy.d.mts.map +1 -0
- package/dist/node/AbstractModuleProxy/AbstractModuleProxy.d.ts +74 -0
- package/dist/node/AbstractModuleProxy/AbstractModuleProxy.d.ts.map +1 -0
- package/dist/node/AbstractModuleProxy/ModuleProxyResolver.d.cts +65 -0
- package/dist/node/AbstractModuleProxy/ModuleProxyResolver.d.cts.map +1 -0
- package/dist/node/AbstractModuleProxy/ModuleProxyResolver.d.mts +65 -0
- package/dist/node/AbstractModuleProxy/ModuleProxyResolver.d.mts.map +1 -0
- package/dist/node/AbstractModuleProxy/ModuleProxyResolver.d.ts +65 -0
- package/dist/node/AbstractModuleProxy/ModuleProxyResolver.d.ts.map +1 -0
- package/dist/node/AbstractModuleProxy/index.d.cts +3 -0
- package/dist/node/AbstractModuleProxy/index.d.cts.map +1 -0
- package/dist/node/AbstractModuleProxy/index.d.mts +3 -0
- package/dist/node/AbstractModuleProxy/index.d.mts.map +1 -0
- package/dist/node/AbstractModuleProxy/index.d.ts +3 -0
- package/dist/node/AbstractModuleProxy/index.d.ts.map +1 -0
- package/dist/node/index.cjs +609 -0
- package/dist/node/index.cjs.map +1 -0
- package/dist/node/index.d.cts +5 -0
- package/dist/node/index.d.cts.map +1 -0
- package/dist/node/index.d.mts +5 -0
- package/dist/node/index.d.mts.map +1 -0
- package/dist/node/index.d.ts +5 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +580 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/wrapModuleWithType.d.cts +5 -0
- package/dist/node/wrapModuleWithType.d.cts.map +1 -0
- package/dist/node/wrapModuleWithType.d.mts +5 -0
- package/dist/node/wrapModuleWithType.d.mts.map +1 -0
- package/dist/node/wrapModuleWithType.d.ts +5 -0
- package/dist/node/wrapModuleWithType.d.ts.map +1 -0
- package/package.json +92 -0
- package/src/AbstractBridge.ts +232 -0
- package/src/AbstractBridgeModuleResolver.ts +42 -0
- package/src/AbstractModuleProxy/AbstractModuleProxy.ts +268 -0
- package/src/AbstractModuleProxy/ModuleProxyResolver.ts +143 -0
- package/src/AbstractModuleProxy/index.ts +2 -0
- package/src/index.ts +4 -0
- package/src/wrapModuleWithType.ts +32 -0
- package/typedoc.json +5 -0
|
@@ -0,0 +1,609 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __reflectGet = Reflect.get;
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
10
|
+
var __export = (target, all) => {
|
|
11
|
+
for (var name in all)
|
|
12
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from))
|
|
17
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
23
|
+
var __publicField = (obj, key, value) => {
|
|
24
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
25
|
+
return value;
|
|
26
|
+
};
|
|
27
|
+
var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
|
|
28
|
+
|
|
29
|
+
// src/index.ts
|
|
30
|
+
var src_exports = {};
|
|
31
|
+
__export(src_exports, {
|
|
32
|
+
AbstractBridge: () => AbstractBridge,
|
|
33
|
+
AbstractBridgeModuleResolver: () => AbstractBridgeModuleResolver,
|
|
34
|
+
AbstractModuleProxy: () => AbstractModuleProxy,
|
|
35
|
+
ModuleProxyResolver: () => ModuleProxyResolver,
|
|
36
|
+
wrapModuleWithType: () => wrapModuleWithType
|
|
37
|
+
});
|
|
38
|
+
module.exports = __toCommonJS(src_exports);
|
|
39
|
+
|
|
40
|
+
// src/AbstractBridge.ts
|
|
41
|
+
var import_assert = require("@xylabs/assert");
|
|
42
|
+
var import_exists = require("@xylabs/exists");
|
|
43
|
+
var import_forget = require("@xylabs/forget");
|
|
44
|
+
var import_object = require("@xylabs/object");
|
|
45
|
+
var import_address_payload_plugin = require("@xyo-network/address-payload-plugin");
|
|
46
|
+
var import_archivist_model = require("@xyo-network/archivist-model");
|
|
47
|
+
var import_boundwitness_wrapper = require("@xyo-network/boundwitness-wrapper");
|
|
48
|
+
var import_bridge_model = require("@xyo-network/bridge-model");
|
|
49
|
+
var import_module_abstract = require("@xyo-network/module-abstract");
|
|
50
|
+
var import_module_model = require("@xyo-network/module-model");
|
|
51
|
+
var import_payload_model = require("@xyo-network/payload-model");
|
|
52
|
+
var _AbstractBridge = class _AbstractBridge extends import_module_abstract.AbstractModuleInstance {
|
|
53
|
+
_roots;
|
|
54
|
+
get allowNameResolution() {
|
|
55
|
+
return this.params.allowNameResolution ?? true;
|
|
56
|
+
}
|
|
57
|
+
get queries() {
|
|
58
|
+
return [
|
|
59
|
+
import_bridge_model.BridgeConnectQuerySchema,
|
|
60
|
+
import_bridge_model.BridgeDisconnectQuerySchema,
|
|
61
|
+
import_bridge_model.BridgeExposeQuerySchema,
|
|
62
|
+
import_bridge_model.BridgeUnexposeQuerySchema,
|
|
63
|
+
...super.queries
|
|
64
|
+
];
|
|
65
|
+
}
|
|
66
|
+
get resolver() {
|
|
67
|
+
return (0, import_assert.assertEx)(this.params.resolver, () => "No resolver provided");
|
|
68
|
+
}
|
|
69
|
+
get _queryAccountPaths() {
|
|
70
|
+
return {
|
|
71
|
+
"network.xyo.query.bridge.connect": "1/1",
|
|
72
|
+
"network.xyo.query.bridge.disconnect": "1/2",
|
|
73
|
+
"network.xyo.query.bridge.expose": "1/4",
|
|
74
|
+
"network.xyo.query.bridge.unexpose": "1/5"
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
async expose(id, options) {
|
|
78
|
+
this._noOverride("expose");
|
|
79
|
+
(0, import_assert.assertEx)(id !== "*", () => "Exposing '*' not supported");
|
|
80
|
+
const addressToExpose = (0, import_assert.assertEx)(await (0, import_module_model.resolvePathToAddress)(this, id), () => `Module to expose not found [${id}]`);
|
|
81
|
+
console.log(`expose: ${addressToExpose}`);
|
|
82
|
+
const modules = await this.exposeHandler(addressToExpose, options);
|
|
83
|
+
await this.emit("exposed", {
|
|
84
|
+
module: this,
|
|
85
|
+
modules
|
|
86
|
+
});
|
|
87
|
+
return modules;
|
|
88
|
+
}
|
|
89
|
+
async exposed() {
|
|
90
|
+
this._noOverride("exposed");
|
|
91
|
+
return await this.exposedHandler();
|
|
92
|
+
}
|
|
93
|
+
// eslint-disable-next-line complexity
|
|
94
|
+
async resolve(idOrFilter = "*", options = {}) {
|
|
95
|
+
const roots = this._roots ?? [];
|
|
96
|
+
const workingSet = options.direction === "up" ? [
|
|
97
|
+
this
|
|
98
|
+
] : [
|
|
99
|
+
...roots,
|
|
100
|
+
this
|
|
101
|
+
];
|
|
102
|
+
if (idOrFilter === "*") {
|
|
103
|
+
const remainingDepth = (options.maxDepth ?? 5) - 1;
|
|
104
|
+
return remainingDepth <= 0 ? workingSet : [
|
|
105
|
+
...workingSet,
|
|
106
|
+
...(await Promise.all(roots.map((mod) => mod.resolve("*", {
|
|
107
|
+
...options,
|
|
108
|
+
maxDepth: remainingDepth
|
|
109
|
+
})))).flat()
|
|
110
|
+
];
|
|
111
|
+
}
|
|
112
|
+
switch (typeof idOrFilter) {
|
|
113
|
+
case "string": {
|
|
114
|
+
const parts = idOrFilter.split(":");
|
|
115
|
+
const first = parts.shift();
|
|
116
|
+
const result = workingSet.find((mod) => {
|
|
117
|
+
return first === mod.address || first === mod.modName;
|
|
118
|
+
});
|
|
119
|
+
return parts.length === 0 ? result : result == null ? void 0 : result.resolve(parts.join(":"), options);
|
|
120
|
+
}
|
|
121
|
+
case "object": {
|
|
122
|
+
const results = [];
|
|
123
|
+
if ((0, import_module_model.isNameModuleFilter)(idOrFilter)) {
|
|
124
|
+
for (const mod of workingSet) {
|
|
125
|
+
if (mod.modName && idOrFilter.name.includes(mod.modName))
|
|
126
|
+
results.push(mod);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if ((0, import_module_model.isAddressModuleFilter)(idOrFilter)) {
|
|
130
|
+
for (const mod of workingSet) {
|
|
131
|
+
if (mod.modName && idOrFilter.address.includes(mod.address))
|
|
132
|
+
results.push(mod);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return results;
|
|
136
|
+
}
|
|
137
|
+
default: {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
async startHandler() {
|
|
143
|
+
const { discoverRoots } = this.config;
|
|
144
|
+
if (discoverRoots === "lazy") {
|
|
145
|
+
(0, import_forget.forget)(this.getRoots());
|
|
146
|
+
} else {
|
|
147
|
+
await this.getRoots();
|
|
148
|
+
}
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
async unexpose(id, options) {
|
|
152
|
+
this._noOverride("unexpose");
|
|
153
|
+
const addressToUnexpose = (0, import_assert.assertEx)(await (0, import_module_model.resolvePathToAddress)(this, id), () => `Module to unexpose not found [${id}]`);
|
|
154
|
+
const modules = await this.unexposeHandler(addressToUnexpose, options);
|
|
155
|
+
await this.emit("unexposed", {
|
|
156
|
+
module: this,
|
|
157
|
+
modules
|
|
158
|
+
});
|
|
159
|
+
return modules;
|
|
160
|
+
}
|
|
161
|
+
async queryHandler(query, payloads) {
|
|
162
|
+
const wrapper = await import_boundwitness_wrapper.QueryBoundWitnessWrapper.parseQuery(query, payloads);
|
|
163
|
+
const queryPayload = await wrapper.getQuery();
|
|
164
|
+
const resultPayloads = [];
|
|
165
|
+
switch (queryPayload.schema) {
|
|
166
|
+
case import_bridge_model.BridgeExposeQuerySchema: {
|
|
167
|
+
const filterPayloads = (payloads ?? []).filter((0, import_payload_model.isPayloadOfSchemaType)(import_bridge_model.ModuleFilterPayloadSchema));
|
|
168
|
+
(0, import_assert.assertEx)(filterPayloads, () => "At least one filter is required");
|
|
169
|
+
await Promise.all(filterPayloads.map(async (filter) => {
|
|
170
|
+
const { id, ...options } = filter;
|
|
171
|
+
const modules = await this.expose(id, options);
|
|
172
|
+
modules.map((module2) => {
|
|
173
|
+
const addressPayload = {
|
|
174
|
+
address: module2.address,
|
|
175
|
+
schema: import_address_payload_plugin.AddressSchema
|
|
176
|
+
};
|
|
177
|
+
resultPayloads.push(addressPayload);
|
|
178
|
+
});
|
|
179
|
+
}));
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
case import_bridge_model.BridgeUnexposeQuerySchema: {
|
|
183
|
+
const filterPayloads = (payloads ?? []).filter((0, import_payload_model.isPayloadOfSchemaType)(import_bridge_model.ModuleFilterPayloadSchema));
|
|
184
|
+
(0, import_assert.assertEx)(filterPayloads, () => "At least one filter is required");
|
|
185
|
+
await Promise.all(filterPayloads.map(async (filter) => {
|
|
186
|
+
const { id, ...options } = filter;
|
|
187
|
+
const modules = await this.unexpose(id, options);
|
|
188
|
+
modules.map((module2) => {
|
|
189
|
+
const addressPayload = {
|
|
190
|
+
address: module2.address,
|
|
191
|
+
schema: import_address_payload_plugin.AddressSchema
|
|
192
|
+
};
|
|
193
|
+
resultPayloads.push(addressPayload);
|
|
194
|
+
});
|
|
195
|
+
}));
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
default: {
|
|
199
|
+
return await super.queryHandler(query, payloads);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return resultPayloads;
|
|
203
|
+
}
|
|
204
|
+
async resolveArchivingArchivists() {
|
|
205
|
+
var _a;
|
|
206
|
+
const archivists = (_a = this.archiving) == null ? void 0 : _a.archivists;
|
|
207
|
+
if (!archivists)
|
|
208
|
+
return [];
|
|
209
|
+
const resolvedAddresses = (await Promise.all(archivists.map(async (archivist) => (await Promise.all((await this.parents()).map((parent) => (0, import_module_model.resolvePathToAddress)(parent, archivist)))).filter(import_exists.exists)))).flat().filter(import_exists.exists);
|
|
210
|
+
const resolved = (await Promise.all(resolvedAddresses.map((address) => (0, import_module_model.resolveAddressToInstance)(this, address)))).filter(import_exists.exists);
|
|
211
|
+
return resolved.map((mod) => (0, import_archivist_model.asArchivistInstance)(mod)).filter(import_exists.exists);
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
__name(_AbstractBridge, "AbstractBridge");
|
|
215
|
+
__publicField(_AbstractBridge, "configSchemas", [
|
|
216
|
+
...__superGet(_AbstractBridge, _AbstractBridge, "configSchemas"),
|
|
217
|
+
import_bridge_model.BridgeConfigSchema
|
|
218
|
+
]);
|
|
219
|
+
__publicField(_AbstractBridge, "defaultConfigSchema", import_bridge_model.BridgeConfigSchema);
|
|
220
|
+
__publicField(_AbstractBridge, "uniqueName", (0, import_object.globallyUnique)("AbstractBridge", _AbstractBridge, "xyo"));
|
|
221
|
+
var AbstractBridge = _AbstractBridge;
|
|
222
|
+
|
|
223
|
+
// src/AbstractBridgeModuleResolver.ts
|
|
224
|
+
var import_module_model2 = require("@xyo-network/module-model");
|
|
225
|
+
var import_module_resolver = require("@xyo-network/module-resolver");
|
|
226
|
+
var _AbstractBridgeModuleResolver = class _AbstractBridgeModuleResolver extends import_module_resolver.CompositeModuleResolver {
|
|
227
|
+
get priority() {
|
|
228
|
+
return import_module_model2.ObjectResolverPriority.VeryLow;
|
|
229
|
+
}
|
|
230
|
+
async resolveHandler(id, options, _params) {
|
|
231
|
+
if (id === "*") {
|
|
232
|
+
return [];
|
|
233
|
+
}
|
|
234
|
+
return await super.resolveHandler(id, options);
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
__name(_AbstractBridgeModuleResolver, "AbstractBridgeModuleResolver");
|
|
238
|
+
var AbstractBridgeModuleResolver = _AbstractBridgeModuleResolver;
|
|
239
|
+
|
|
240
|
+
// src/AbstractModuleProxy/AbstractModuleProxy.ts
|
|
241
|
+
var import_assert3 = require("@xylabs/assert");
|
|
242
|
+
var import_forget2 = require("@xylabs/forget");
|
|
243
|
+
var import_hex = require("@xylabs/hex");
|
|
244
|
+
var import_lodash = require("@xylabs/lodash");
|
|
245
|
+
var import_object2 = require("@xylabs/object");
|
|
246
|
+
var import_boundwitness_wrapper2 = require("@xyo-network/boundwitness-wrapper");
|
|
247
|
+
var import_manifest_model = require("@xyo-network/manifest-model");
|
|
248
|
+
var import_module_abstract2 = require("@xyo-network/module-abstract");
|
|
249
|
+
var import_module_model4 = require("@xyo-network/module-model");
|
|
250
|
+
var import_module_wrapper = require("@xyo-network/module-wrapper");
|
|
251
|
+
var import_payload_builder = require("@xyo-network/payload-builder");
|
|
252
|
+
var import_payload_model2 = require("@xyo-network/payload-model");
|
|
253
|
+
var import_query_payload_plugin = require("@xyo-network/query-payload-plugin");
|
|
254
|
+
var import_lru_cache = require("lru-cache");
|
|
255
|
+
|
|
256
|
+
// src/AbstractModuleProxy/ModuleProxyResolver.ts
|
|
257
|
+
var import_assert2 = require("@xylabs/assert");
|
|
258
|
+
var import_exists2 = require("@xylabs/exists");
|
|
259
|
+
var import_account = require("@xyo-network/account");
|
|
260
|
+
var import_module_model3 = require("@xyo-network/module-model");
|
|
261
|
+
var import_module_resolver2 = require("@xyo-network/module-resolver");
|
|
262
|
+
|
|
263
|
+
// src/wrapModuleWithType.ts
|
|
264
|
+
var import_archivist_model2 = require("@xyo-network/archivist-model");
|
|
265
|
+
var import_archivist_wrapper = require("@xyo-network/archivist-wrapper");
|
|
266
|
+
var import_diviner_model = require("@xyo-network/diviner-model");
|
|
267
|
+
var import_diviner_wrapper = require("@xyo-network/diviner-wrapper");
|
|
268
|
+
var import_node_model = require("@xyo-network/node-model");
|
|
269
|
+
var import_node_wrapper = require("@xyo-network/node-wrapper");
|
|
270
|
+
var import_sentinel_model = require("@xyo-network/sentinel-model");
|
|
271
|
+
var import_sentinel_wrapper = require("@xyo-network/sentinel-wrapper");
|
|
272
|
+
var import_witness_model = require("@xyo-network/witness-model");
|
|
273
|
+
var import_witness_wrapper = require("@xyo-network/witness-wrapper");
|
|
274
|
+
var wrapModuleWithType = /* @__PURE__ */ __name((module2, account) => {
|
|
275
|
+
if ((0, import_archivist_model2.isArchivistModule)(module2)) {
|
|
276
|
+
return import_archivist_wrapper.ArchivistWrapper.wrap(module2, account);
|
|
277
|
+
}
|
|
278
|
+
if ((0, import_diviner_model.isDivinerModule)(module2)) {
|
|
279
|
+
return import_diviner_wrapper.DivinerWrapper.wrap(module2, account);
|
|
280
|
+
}
|
|
281
|
+
if ((0, import_node_model.isNodeModule)(module2)) {
|
|
282
|
+
return import_node_wrapper.NodeWrapper.wrap(module2, account);
|
|
283
|
+
}
|
|
284
|
+
if ((0, import_sentinel_model.isSentinelModule)(module2)) {
|
|
285
|
+
return import_sentinel_wrapper.SentinelWrapper.wrap(module2, account);
|
|
286
|
+
}
|
|
287
|
+
if ((0, import_witness_model.isWitnessModule)(module2)) {
|
|
288
|
+
return import_witness_wrapper.WitnessWrapper.wrap(module2, account);
|
|
289
|
+
}
|
|
290
|
+
throw "Failed to wrap";
|
|
291
|
+
}, "wrapModuleWithType");
|
|
292
|
+
|
|
293
|
+
// src/AbstractModuleProxy/ModuleProxyResolver.ts
|
|
294
|
+
var _ModuleProxyResolver = class _ModuleProxyResolver {
|
|
295
|
+
options;
|
|
296
|
+
downResolver;
|
|
297
|
+
constructor(options) {
|
|
298
|
+
this.options = options;
|
|
299
|
+
this.downResolver = new import_module_resolver2.CompositeModuleResolver({
|
|
300
|
+
moduleIdentifierTransformers: options.moduleIdentifierTransformers,
|
|
301
|
+
root: this.root
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
get priority() {
|
|
305
|
+
return import_module_model3.ObjectResolverPriority.VeryLow;
|
|
306
|
+
}
|
|
307
|
+
get root() {
|
|
308
|
+
return this.options.module;
|
|
309
|
+
}
|
|
310
|
+
get childAddressMap() {
|
|
311
|
+
return this.options.childAddressMap;
|
|
312
|
+
}
|
|
313
|
+
get host() {
|
|
314
|
+
return this.options.host;
|
|
315
|
+
}
|
|
316
|
+
get module() {
|
|
317
|
+
return this.options.module;
|
|
318
|
+
}
|
|
319
|
+
addResolver(_resolver) {
|
|
320
|
+
throw new Error("Not supported");
|
|
321
|
+
}
|
|
322
|
+
removeResolver(_resolver) {
|
|
323
|
+
throw new Error("Not supported");
|
|
324
|
+
}
|
|
325
|
+
async resolve(idOrFilter = "*", options) {
|
|
326
|
+
var _a;
|
|
327
|
+
const direction = (options == null ? void 0 : options.direction) ?? "all";
|
|
328
|
+
if (idOrFilter === "*") {
|
|
329
|
+
const childAddresses = Object.keys(this.childAddressMap);
|
|
330
|
+
const resolvedChildren = await Promise.all(childAddresses.map((address) => this.resolve(address, options)));
|
|
331
|
+
return resolvedChildren.filter(import_exists2.exists);
|
|
332
|
+
} else if (typeof idOrFilter === "string") {
|
|
333
|
+
const idParts = idOrFilter.split(":");
|
|
334
|
+
const firstPart = (0, import_assert2.assertEx)(idParts.shift(), () => "Invalid module identifier at first position");
|
|
335
|
+
const firstPartAddress = await this.resolveIdentifier(firstPart);
|
|
336
|
+
if (firstPartAddress) {
|
|
337
|
+
const remainingParts = idParts.length > 0 ? idParts.join(":") : void 0;
|
|
338
|
+
if (direction === "down" || direction === "all") {
|
|
339
|
+
const downResolverModule = await this.downResolver.resolve(firstPartAddress);
|
|
340
|
+
if (downResolverModule) {
|
|
341
|
+
return remainingParts ? downResolverModule.resolve(remainingParts, options) : downResolverModule;
|
|
342
|
+
}
|
|
343
|
+
const addressToProxy = Object.keys(this.childAddressMap).includes(firstPartAddress) ? firstPartAddress : (_a = Object.entries(this.childAddressMap).find(([_, value]) => value === firstPartAddress)) == null ? void 0 : _a[0];
|
|
344
|
+
if (addressToProxy) {
|
|
345
|
+
const proxy = await this.host.resolve(addressToProxy, {
|
|
346
|
+
...options,
|
|
347
|
+
direction: "down"
|
|
348
|
+
});
|
|
349
|
+
if (proxy) {
|
|
350
|
+
const wrapped = wrapModuleWithType(proxy, import_account.Account.randomSync());
|
|
351
|
+
return remainingParts ? wrapped == null ? void 0 : wrapped.resolve(remainingParts, options) : wrapped;
|
|
352
|
+
}
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
return;
|
|
358
|
+
} else {
|
|
359
|
+
const filter = idOrFilter;
|
|
360
|
+
if ((0, import_module_model3.isAddressModuleFilter)(filter)) {
|
|
361
|
+
const results = (await Promise.all(filter.address.map((item) => this.resolve(item, options)))).filter(import_exists2.exists);
|
|
362
|
+
return results;
|
|
363
|
+
} else if ((0, import_module_model3.isNameModuleFilter)(filter)) {
|
|
364
|
+
return (await Promise.all(filter.name.map((item) => this.resolve(item, options)))).filter(import_exists2.exists);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
resolveIdentifier(id, _options) {
|
|
369
|
+
var _a;
|
|
370
|
+
if (this.childAddressMap[id]) {
|
|
371
|
+
return id;
|
|
372
|
+
}
|
|
373
|
+
const addressFromName = (_a = Object.entries(this.childAddressMap).find(([, name]) => name === id)) == null ? void 0 : _a[0];
|
|
374
|
+
if (addressFromName) {
|
|
375
|
+
return addressFromName;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
async resolvePrivate(id, _options) {
|
|
379
|
+
if (id === "*")
|
|
380
|
+
return await Promise.resolve([]);
|
|
381
|
+
}
|
|
382
|
+
};
|
|
383
|
+
__name(_ModuleProxyResolver, "ModuleProxyResolver");
|
|
384
|
+
var ModuleProxyResolver = _ModuleProxyResolver;
|
|
385
|
+
|
|
386
|
+
// src/AbstractModuleProxy/AbstractModuleProxy.ts
|
|
387
|
+
var _AbstractModuleProxy = class _AbstractModuleProxy extends import_module_abstract2.AbstractModuleInstance {
|
|
388
|
+
_config;
|
|
389
|
+
_publicChildren;
|
|
390
|
+
_state = void 0;
|
|
391
|
+
_stateInProcess = false;
|
|
392
|
+
_spamTrap = new import_lru_cache.LRUCache({
|
|
393
|
+
max: 1e3,
|
|
394
|
+
ttl: 1e3 * 60,
|
|
395
|
+
ttlAutopurge: true
|
|
396
|
+
});
|
|
397
|
+
constructor(params) {
|
|
398
|
+
params.addToResolvers = false;
|
|
399
|
+
super(_AbstractModuleProxy.privateConstructorKey, params, params.account);
|
|
400
|
+
}
|
|
401
|
+
get address() {
|
|
402
|
+
return this.params.moduleAddress;
|
|
403
|
+
}
|
|
404
|
+
get archiving() {
|
|
405
|
+
var _a;
|
|
406
|
+
return (_a = this.params) == null ? void 0 : _a.archiving;
|
|
407
|
+
}
|
|
408
|
+
get config() {
|
|
409
|
+
return (0, import_assert3.assertEx)(this._config, () => "Config not set");
|
|
410
|
+
}
|
|
411
|
+
get queries() {
|
|
412
|
+
const queryPayloads = (0, import_assert3.assertEx)(this._state, () => "Module state not found. Make sure proxy has been started").filter((item) => (0, import_payload_model2.isPayloadOfSchemaType)(import_query_payload_plugin.QuerySchema)(item));
|
|
413
|
+
return queryPayloads.map((payload) => payload.query);
|
|
414
|
+
}
|
|
415
|
+
get _queryAccountPaths() {
|
|
416
|
+
return this._baseModuleQueryAccountPaths;
|
|
417
|
+
}
|
|
418
|
+
static hasRequiredQueries(module2) {
|
|
419
|
+
return this.missingRequiredQueries(module2).length === 0;
|
|
420
|
+
}
|
|
421
|
+
static missingRequiredQueries(module2) {
|
|
422
|
+
const moduleQueries = module2.queries;
|
|
423
|
+
return (0, import_lodash.compact)(this.requiredQueries.map((query) => {
|
|
424
|
+
return moduleQueries.includes(query) ? null : query;
|
|
425
|
+
}));
|
|
426
|
+
}
|
|
427
|
+
async addressPreviousHash() {
|
|
428
|
+
const queryPayload = {
|
|
429
|
+
schema: import_module_model4.ModuleAddressQuerySchema
|
|
430
|
+
};
|
|
431
|
+
const result = (0, import_assert3.assertEx)((await this.sendQuery(queryPayload, void 0, this.account)).find((0, import_payload_model2.isPayloadOfSchemaType)(import_module_model4.AddressPreviousHashSchema)), () => "Result did not include correct payload");
|
|
432
|
+
return result;
|
|
433
|
+
}
|
|
434
|
+
childAddressByName(name) {
|
|
435
|
+
var _a, _b;
|
|
436
|
+
const nodeManifests = (_a = this._state) == null ? void 0 : _a.filter((0, import_payload_model2.isPayloadOfSchemaType)(import_manifest_model.NodeManifestPayloadSchema));
|
|
437
|
+
const childPairs = nodeManifests == null ? void 0 : nodeManifests.flatMap((nodeManifest) => {
|
|
438
|
+
var _a2;
|
|
439
|
+
return Object.entries(((_a2 = nodeManifest.status) == null ? void 0 : _a2.children) ?? {});
|
|
440
|
+
});
|
|
441
|
+
return (0, import_hex.asAddress)((_b = childPairs == null ? void 0 : childPairs.find(([_, childName]) => childName === name)) == null ? void 0 : _b[0]);
|
|
442
|
+
}
|
|
443
|
+
async childAddressMap() {
|
|
444
|
+
var _a, _b;
|
|
445
|
+
const state = await this.state();
|
|
446
|
+
const result = {};
|
|
447
|
+
const nodeManifests = state.filter((0, import_payload_model2.isPayloadOfSchemaType)(import_manifest_model.NodeManifestPayloadSchema));
|
|
448
|
+
for (const manifest of nodeManifests) {
|
|
449
|
+
const children = ((_a = manifest.modules) == null ? void 0 : _a.public) ?? [];
|
|
450
|
+
for (const child of children) {
|
|
451
|
+
if (typeof child === "object") {
|
|
452
|
+
const address = (_b = child.status) == null ? void 0 : _b.address;
|
|
453
|
+
if (address) {
|
|
454
|
+
result[address] = child.config.name ?? null;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
return result;
|
|
460
|
+
}
|
|
461
|
+
async manifest(maxDepth) {
|
|
462
|
+
const queryPayload = {
|
|
463
|
+
schema: import_module_model4.ModuleManifestQuerySchema,
|
|
464
|
+
...maxDepth === void 0 ? {} : {
|
|
465
|
+
maxDepth
|
|
466
|
+
}
|
|
467
|
+
};
|
|
468
|
+
return (await this.sendQuery(queryPayload))[0];
|
|
469
|
+
}
|
|
470
|
+
async moduleAddress() {
|
|
471
|
+
const queryPayload = {
|
|
472
|
+
schema: import_module_model4.ModuleAddressQuerySchema
|
|
473
|
+
};
|
|
474
|
+
return await this.sendQuery(queryPayload);
|
|
475
|
+
}
|
|
476
|
+
async previousHash() {
|
|
477
|
+
const queryPayload = {
|
|
478
|
+
schema: import_module_model4.ModuleAddressQuerySchema
|
|
479
|
+
};
|
|
480
|
+
return (await this.sendQuery(queryPayload)).pop().previousHash;
|
|
481
|
+
}
|
|
482
|
+
async publicChildren() {
|
|
483
|
+
this._publicChildren = this._publicChildren ?? await super.publicChildren();
|
|
484
|
+
return this._publicChildren;
|
|
485
|
+
}
|
|
486
|
+
async query(query, payloads) {
|
|
487
|
+
this._checkDead();
|
|
488
|
+
return await this.busy(async () => {
|
|
489
|
+
var _a, _b, _c, _d, _e, _f;
|
|
490
|
+
try {
|
|
491
|
+
await this.checkSpam(query);
|
|
492
|
+
(_b = (_a = this.params).onQuerySendStarted) == null ? void 0 : _b.call(_a, {
|
|
493
|
+
payloads,
|
|
494
|
+
query
|
|
495
|
+
});
|
|
496
|
+
const result = await this.proxyQueryHandler(query, payloads);
|
|
497
|
+
(_d = (_c = this.params).onQuerySendFinished) == null ? void 0 : _d.call(_c, {
|
|
498
|
+
payloads,
|
|
499
|
+
query,
|
|
500
|
+
result,
|
|
501
|
+
status: "success"
|
|
502
|
+
});
|
|
503
|
+
if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {
|
|
504
|
+
(0, import_forget2.forget)(this.storeToArchivists(result.flat()));
|
|
505
|
+
}
|
|
506
|
+
(0, import_forget2.forget)(this.emit("moduleQueried", {
|
|
507
|
+
module: this,
|
|
508
|
+
payloads,
|
|
509
|
+
query,
|
|
510
|
+
result
|
|
511
|
+
}));
|
|
512
|
+
return result;
|
|
513
|
+
} catch (ex) {
|
|
514
|
+
(_f = (_e = this.params).onQuerySendFinished) == null ? void 0 : _f.call(_e, {
|
|
515
|
+
payloads,
|
|
516
|
+
query,
|
|
517
|
+
status: "failure"
|
|
518
|
+
});
|
|
519
|
+
const error = ex;
|
|
520
|
+
this._lastError = error;
|
|
521
|
+
const deadError = new import_module_model4.DeadModuleError(this.address, error);
|
|
522
|
+
const errorPayload = {
|
|
523
|
+
message: deadError.message,
|
|
524
|
+
name: deadError.name,
|
|
525
|
+
schema: import_payload_model2.ModuleErrorSchema
|
|
526
|
+
};
|
|
527
|
+
const sourceQuery = await import_payload_builder.PayloadBuilder.build((0, import_assert3.assertEx)(import_boundwitness_wrapper2.QueryBoundWitnessWrapper.unwrap(query), () => "Invalid query"));
|
|
528
|
+
return await this.bindQueryResult(sourceQuery, [], void 0, [
|
|
529
|
+
errorPayload
|
|
530
|
+
]);
|
|
531
|
+
}
|
|
532
|
+
});
|
|
533
|
+
}
|
|
534
|
+
queryHandler(_query, _payloads, _queryConfig) {
|
|
535
|
+
throw new Error("queryHandler should never be called");
|
|
536
|
+
}
|
|
537
|
+
async queryable(_query, _payloads, _queryConfig) {
|
|
538
|
+
return await Promise.resolve(true);
|
|
539
|
+
}
|
|
540
|
+
async resolveArchivingArchivists() {
|
|
541
|
+
var _a;
|
|
542
|
+
return await ((_a = this.params.archiving) == null ? void 0 : _a.resolveArchivists()) ?? [];
|
|
543
|
+
}
|
|
544
|
+
setConfig(config) {
|
|
545
|
+
this._config = config;
|
|
546
|
+
}
|
|
547
|
+
async startHandler() {
|
|
548
|
+
const state = await this.state();
|
|
549
|
+
const manifestPayload = state.find((payload) => (0, import_payload_model2.isPayloadOfSchemaType)(import_manifest_model.NodeManifestPayloadSchema)(payload) || (0, import_payload_model2.isPayloadOfSchemaType)(import_manifest_model.ModuleManifestPayloadSchema)(payload));
|
|
550
|
+
const manifest = (0, import_assert3.assertEx)(manifestPayload, () => "Can't find manifest payload");
|
|
551
|
+
this.setConfig({
|
|
552
|
+
...manifest.config
|
|
553
|
+
});
|
|
554
|
+
this.downResolver.addResolver(new ModuleProxyResolver({
|
|
555
|
+
childAddressMap: await this.childAddressMap(),
|
|
556
|
+
host: this.params.host,
|
|
557
|
+
module: this,
|
|
558
|
+
moduleIdentifierTransformers: this.params.moduleIdentifierTransformers
|
|
559
|
+
}));
|
|
560
|
+
return await super.startHandler();
|
|
561
|
+
}
|
|
562
|
+
async state() {
|
|
563
|
+
if (this._state === void 0) {
|
|
564
|
+
const stateQueryPayload = {
|
|
565
|
+
query: import_module_model4.ModuleStateQuerySchema,
|
|
566
|
+
schema: import_query_payload_plugin.QuerySchema
|
|
567
|
+
};
|
|
568
|
+
const manifestQueryPayload = {
|
|
569
|
+
query: import_module_model4.ModuleManifestQuerySchema,
|
|
570
|
+
schema: import_query_payload_plugin.QuerySchema
|
|
571
|
+
};
|
|
572
|
+
this._state = [
|
|
573
|
+
stateQueryPayload,
|
|
574
|
+
manifestQueryPayload
|
|
575
|
+
];
|
|
576
|
+
const wrapper = import_module_wrapper.ModuleWrapper.wrap(this, this.account);
|
|
577
|
+
this._state = await wrapper.state();
|
|
578
|
+
}
|
|
579
|
+
return this._state;
|
|
580
|
+
}
|
|
581
|
+
async filterErrors(result) {
|
|
582
|
+
const wrapper = await import_boundwitness_wrapper2.BoundWitnessWrapper.wrap(result[0], result[1]);
|
|
583
|
+
return wrapper.payloadsBySchema(import_payload_model2.ModuleErrorSchema);
|
|
584
|
+
}
|
|
585
|
+
//this checks and warns if we are getting spammed by the same query
|
|
586
|
+
async checkSpam(query) {
|
|
587
|
+
var _a;
|
|
588
|
+
const hash = await import_payload_builder.PayloadBuilder.hash(query);
|
|
589
|
+
const previousCount = this._spamTrap.get(hash) ?? 0;
|
|
590
|
+
if (previousCount > 0) {
|
|
591
|
+
(_a = this.logger) == null ? void 0 : _a.warn(`Spam trap triggered for query: ${hash} from ${(0, import_object2.toJsonString)(query.addresses)}`);
|
|
592
|
+
}
|
|
593
|
+
this._spamTrap.set(hash, previousCount + 1);
|
|
594
|
+
}
|
|
595
|
+
};
|
|
596
|
+
__name(_AbstractModuleProxy, "AbstractModuleProxy");
|
|
597
|
+
__publicField(_AbstractModuleProxy, "requiredQueries", [
|
|
598
|
+
import_module_model4.ModuleStateQuerySchema
|
|
599
|
+
]);
|
|
600
|
+
var AbstractModuleProxy = _AbstractModuleProxy;
|
|
601
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
602
|
+
0 && (module.exports = {
|
|
603
|
+
AbstractBridge,
|
|
604
|
+
AbstractBridgeModuleResolver,
|
|
605
|
+
AbstractModuleProxy,
|
|
606
|
+
ModuleProxyResolver,
|
|
607
|
+
wrapModuleWithType
|
|
608
|
+
});
|
|
609
|
+
//# sourceMappingURL=index.cjs.map
|