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