@xyo-network/node-abstract 3.6.9 → 3.6.10
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/neutral/index.mjs +50 -96
- package/dist/neutral/index.mjs.map +1 -1
- package/package.json +15 -15
package/dist/neutral/index.mjs
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
|
|
4
1
|
// src/AbstractNode.ts
|
|
5
2
|
import { assertEx } from "@xylabs/assert";
|
|
6
3
|
import { globallyUnique } from "@xylabs/object";
|
|
@@ -8,16 +5,18 @@ import { QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
|
|
|
8
5
|
import { NodeManifestPayloadSchema } from "@xyo-network/manifest-model";
|
|
9
6
|
import { AbstractModuleInstance } from "@xyo-network/module-abstract";
|
|
10
7
|
import { AddressSchema } from "@xyo-network/module-model";
|
|
11
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
ChildCertificationSchema,
|
|
10
|
+
NodeAttachedQuerySchema,
|
|
11
|
+
NodeAttachQuerySchema,
|
|
12
|
+
NodeCertifyQuerySchema,
|
|
13
|
+
NodeConfigSchema,
|
|
14
|
+
NodeDetachQuerySchema,
|
|
15
|
+
NodeRegisteredQuerySchema
|
|
16
|
+
} from "@xyo-network/node-model";
|
|
12
17
|
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
13
18
|
var AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
14
|
-
static
|
|
15
|
-
__name(this, "AbstractNode");
|
|
16
|
-
}
|
|
17
|
-
static configSchemas = [
|
|
18
|
-
...super.configSchemas,
|
|
19
|
-
NodeConfigSchema
|
|
20
|
-
];
|
|
19
|
+
static configSchemas = [...super.configSchemas, NodeConfigSchema];
|
|
21
20
|
static defaultConfigSchema = NodeConfigSchema;
|
|
22
21
|
static uniqueName = globallyUnique("AbstractNode", _AbstractNode, "xyo");
|
|
23
22
|
isNode = true;
|
|
@@ -52,16 +51,11 @@ var AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
52
51
|
return await this.attachedHandler();
|
|
53
52
|
}
|
|
54
53
|
async attachedHandler() {
|
|
55
|
-
return [
|
|
56
|
-
...(await this.attachedPublicModules()).map((mod) => mod.address),
|
|
57
|
-
...(await this.attachedPrivateModules()).map((mod) => mod.address)
|
|
58
|
-
];
|
|
54
|
+
return [...(await this.attachedPublicModules()).map((mod) => mod.address), ...(await this.attachedPrivateModules()).map((mod) => mod.address)];
|
|
59
55
|
}
|
|
60
56
|
async attachedQuery(account) {
|
|
61
57
|
this._noOverride("attachedQuery");
|
|
62
|
-
const queryPayload = {
|
|
63
|
-
schema: NodeAttachedQuerySchema
|
|
64
|
-
};
|
|
58
|
+
const queryPayload = { schema: NodeAttachedQuerySchema };
|
|
65
59
|
return await this.sendQueryRaw(queryPayload, [], account);
|
|
66
60
|
}
|
|
67
61
|
async certify(id) {
|
|
@@ -69,10 +63,7 @@ var AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
69
63
|
return await this.certifyHandler(id);
|
|
70
64
|
}
|
|
71
65
|
async certifyQuery(id, account) {
|
|
72
|
-
const queryPayload = {
|
|
73
|
-
id,
|
|
74
|
-
schema: NodeCertifyQuerySchema
|
|
75
|
-
};
|
|
66
|
+
const queryPayload = { id, schema: NodeCertifyQuerySchema };
|
|
76
67
|
return await this.sendQueryRaw(queryPayload, [], account);
|
|
77
68
|
}
|
|
78
69
|
async detach(id) {
|
|
@@ -81,10 +72,7 @@ var AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
81
72
|
}
|
|
82
73
|
async detachQuery(id, account) {
|
|
83
74
|
this._noOverride("detachQuery");
|
|
84
|
-
const queryPayload = {
|
|
85
|
-
id,
|
|
86
|
-
schema: NodeDetachQuerySchema
|
|
87
|
-
};
|
|
75
|
+
const queryPayload = { id, schema: NodeDetachQuerySchema };
|
|
88
76
|
return await this.sendQueryRaw(queryPayload, [], account);
|
|
89
77
|
}
|
|
90
78
|
async manifest(maxDepth = 10, ignoreAddresses = []) {
|
|
@@ -102,49 +90,29 @@ var AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
102
90
|
}
|
|
103
91
|
async registeredQuery(account) {
|
|
104
92
|
this._noOverride("registeredQuery");
|
|
105
|
-
const queryPayload = {
|
|
106
|
-
schema: NodeRegisteredQuerySchema
|
|
107
|
-
};
|
|
93
|
+
const queryPayload = { schema: NodeRegisteredQuerySchema };
|
|
108
94
|
return await this.sendQueryRaw(queryPayload, [], account);
|
|
109
95
|
}
|
|
110
96
|
async attachedPrivateModules(maxDepth = 1) {
|
|
111
|
-
return (await (this.resolvePrivate("*", {
|
|
112
|
-
maxDepth
|
|
113
|
-
}) ?? [])).filter((mod) => mod.address !== this.address);
|
|
97
|
+
return (await (this.resolvePrivate("*", { maxDepth }) ?? [])).filter((mod) => mod.address !== this.address);
|
|
114
98
|
}
|
|
115
99
|
async attachedPublicModules(maxDepth = 1) {
|
|
116
|
-
return (await (this.downResolver.resolve("*", {
|
|
117
|
-
direction: "down",
|
|
118
|
-
maxDepth
|
|
119
|
-
}) ?? [])).filter((mod) => mod.address !== this.address);
|
|
100
|
+
return (await (this.downResolver.resolve("*", { direction: "down", maxDepth }) ?? [])).filter((mod) => mod.address !== this.address);
|
|
120
101
|
}
|
|
121
102
|
async generateConfigAndAddress(maxDepth = 10) {
|
|
122
103
|
const childMods = await this.attachedPublicModules(maxDepth);
|
|
123
|
-
const childModAddresses = childMods.map((mod) => new PayloadBuilder({
|
|
124
|
-
|
|
125
|
-
}).fields({
|
|
126
|
-
address: mod.address
|
|
127
|
-
}).build());
|
|
128
|
-
return [
|
|
129
|
-
...await super.generateConfigAndAddress(maxDepth),
|
|
130
|
-
...childModAddresses
|
|
131
|
-
];
|
|
104
|
+
const childModAddresses = childMods.map((mod) => new PayloadBuilder({ schema: AddressSchema }).fields({ address: mod.address }).build());
|
|
105
|
+
return [...await super.generateConfigAndAddress(maxDepth), ...childModAddresses];
|
|
132
106
|
}
|
|
133
107
|
async manifestHandler(maxDepth = 10, ignoreAddresses = []) {
|
|
134
108
|
const cachedResult = this._cachedManifests.get(maxDepth);
|
|
135
109
|
if (cachedResult) {
|
|
136
110
|
return cachedResult;
|
|
137
111
|
}
|
|
138
|
-
const manifest = {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
const newIgnoreAddresses = [
|
|
143
|
-
...ignoreAddresses,
|
|
144
|
-
this.address
|
|
145
|
-
];
|
|
146
|
-
const notThisModule = /* @__PURE__ */ __name((mod) => mod.address !== this.address && !ignoreAddresses.includes(mod.address), "notThisModule");
|
|
147
|
-
const toManifest = /* @__PURE__ */ __name((mod) => mod.manifest(maxDepth - 1, newIgnoreAddresses), "toManifest");
|
|
112
|
+
const manifest = { ...await super.manifestHandler(maxDepth, ignoreAddresses), schema: NodeManifestPayloadSchema };
|
|
113
|
+
const newIgnoreAddresses = [...ignoreAddresses, this.address];
|
|
114
|
+
const notThisModule = (mod) => mod.address !== this.address && !ignoreAddresses.includes(mod.address);
|
|
115
|
+
const toManifest = (mod) => mod.manifest(maxDepth - 1, newIgnoreAddresses);
|
|
148
116
|
const publicChildren = await this.publicChildren();
|
|
149
117
|
const publicModuleManifests = await Promise.all(publicChildren.filter(notThisModule).map(toManifest));
|
|
150
118
|
if (publicModuleManifests.length > 0) {
|
|
@@ -163,11 +131,7 @@ var AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
163
131
|
case NodeAttachQuerySchema: {
|
|
164
132
|
const address = await this.attachHandler(queryPayload.id, queryPayload.external);
|
|
165
133
|
if (address) {
|
|
166
|
-
const payload = await new PayloadBuilder({
|
|
167
|
-
schema: AddressSchema
|
|
168
|
-
}).fields({
|
|
169
|
-
address
|
|
170
|
-
}).build();
|
|
134
|
+
const payload = await new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build();
|
|
171
135
|
resultPayloads.push(payload);
|
|
172
136
|
}
|
|
173
137
|
break;
|
|
@@ -175,9 +139,7 @@ var AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
175
139
|
case NodeCertifyQuerySchema: {
|
|
176
140
|
const fields = await this.certifyHandler(queryPayload.id);
|
|
177
141
|
if (fields) {
|
|
178
|
-
const payload = await new PayloadBuilder({
|
|
179
|
-
schema: ChildCertificationSchema
|
|
180
|
-
}).fields(fields).build();
|
|
142
|
+
const payload = await new PayloadBuilder({ schema: ChildCertificationSchema }).fields(fields).build();
|
|
181
143
|
resultPayloads.push(payload);
|
|
182
144
|
}
|
|
183
145
|
break;
|
|
@@ -185,11 +147,7 @@ var AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
185
147
|
case NodeDetachQuerySchema: {
|
|
186
148
|
const address = await this.detachHandler(queryPayload.id);
|
|
187
149
|
if (address) {
|
|
188
|
-
const payload = await new PayloadBuilder({
|
|
189
|
-
schema: AddressSchema
|
|
190
|
-
}).fields({
|
|
191
|
-
address
|
|
192
|
-
}).build();
|
|
150
|
+
const payload = await new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build();
|
|
193
151
|
resultPayloads.push(payload);
|
|
194
152
|
}
|
|
195
153
|
break;
|
|
@@ -197,11 +155,7 @@ var AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
197
155
|
case NodeAttachedQuerySchema: {
|
|
198
156
|
const addresses = await this.attachedHandler();
|
|
199
157
|
for (const address of addresses) {
|
|
200
|
-
const payload = await new PayloadBuilder({
|
|
201
|
-
schema: AddressSchema
|
|
202
|
-
}).fields({
|
|
203
|
-
address
|
|
204
|
-
}).build();
|
|
158
|
+
const payload = await new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build();
|
|
205
159
|
resultPayloads.push(payload);
|
|
206
160
|
}
|
|
207
161
|
break;
|
|
@@ -209,11 +163,7 @@ var AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
209
163
|
case NodeRegisteredQuerySchema: {
|
|
210
164
|
const addresses = await this.registeredHandler();
|
|
211
165
|
for (const address of addresses) {
|
|
212
|
-
const payload = await new PayloadBuilder({
|
|
213
|
-
schema: AddressSchema
|
|
214
|
-
}).fields({
|
|
215
|
-
address
|
|
216
|
-
}).build();
|
|
166
|
+
const payload = await new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build();
|
|
217
167
|
resultPayloads.push(payload);
|
|
218
168
|
}
|
|
219
169
|
break;
|
|
@@ -228,41 +178,45 @@ var AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
228
178
|
|
|
229
179
|
// src/NodeHelper/attachedPrivateModules.ts
|
|
230
180
|
import { asNodeInstance } from "@xyo-network/node-model";
|
|
231
|
-
var attachedPrivateModules =
|
|
181
|
+
var attachedPrivateModules = async (node, maxDepth = 1) => {
|
|
232
182
|
const remainingDepth = maxDepth - 1;
|
|
233
183
|
const mods = [];
|
|
234
184
|
const publicChildren = await node.privateChildren();
|
|
235
185
|
mods.push(...publicChildren);
|
|
236
186
|
if (remainingDepth > 0) {
|
|
237
|
-
await Promise.all(
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
187
|
+
await Promise.all(
|
|
188
|
+
publicChildren.map(async (mod) => {
|
|
189
|
+
const node2 = asNodeInstance(mod);
|
|
190
|
+
if (node2) {
|
|
191
|
+
const children = await attachedPrivateModules(node2, remainingDepth);
|
|
192
|
+
mods.push(...children);
|
|
193
|
+
}
|
|
194
|
+
})
|
|
195
|
+
);
|
|
244
196
|
}
|
|
245
197
|
return mods;
|
|
246
|
-
}
|
|
198
|
+
};
|
|
247
199
|
|
|
248
200
|
// src/NodeHelper/attachedPublicModules.ts
|
|
249
201
|
import { asNodeInstance as asNodeInstance2 } from "@xyo-network/node-model";
|
|
250
|
-
var attachedPublicModules =
|
|
202
|
+
var attachedPublicModules = async (node, maxDepth = 1) => {
|
|
251
203
|
const remainingDepth = maxDepth - 1;
|
|
252
204
|
const mods = [];
|
|
253
205
|
const publicChildren = await node.publicChildren();
|
|
254
206
|
mods.push(...publicChildren);
|
|
255
207
|
if (remainingDepth > 0) {
|
|
256
|
-
await Promise.all(
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
208
|
+
await Promise.all(
|
|
209
|
+
publicChildren.map(async (mod) => {
|
|
210
|
+
const node2 = asNodeInstance2(mod);
|
|
211
|
+
if (node2) {
|
|
212
|
+
const children = await attachedPublicModules(node2, remainingDepth);
|
|
213
|
+
mods.push(...children);
|
|
214
|
+
}
|
|
215
|
+
})
|
|
216
|
+
);
|
|
263
217
|
}
|
|
264
218
|
return mods;
|
|
265
|
-
}
|
|
219
|
+
};
|
|
266
220
|
|
|
267
221
|
// src/NodeHelper/index.ts
|
|
268
222
|
var NodeHelper = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/AbstractNode.ts","../../src/NodeHelper/attachedPrivateModules.ts","../../src/NodeHelper/attachedPublicModules.ts","../../src/NodeHelper/index.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport type { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport type { Promisable } from '@xylabs/promise'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { ModuleManifestPayload, NodeManifestPayload } from '@xyo-network/manifest-model'\nimport { NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport type {\n AddressPayload,\n Module,\n ModuleConfig,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { AddressSchema } from '@xyo-network/module-model'\nimport type {\n AttachableNodeInstance,\n ChildCertification,\n ChildCertificationFields,\n NodeAttachedQuery,\n NodeAttachQuery,\n NodeCertifyQuery,\n NodeDetachQuery,\n NodeInstance,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\n NodeRegisteredQuery,\n} from '@xyo-network/node-model'\nimport {\n ChildCertificationSchema,\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeCertifyQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeRegisteredQuerySchema,\n} from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\n\nexport abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData>\n extends AbstractModuleInstance<TParams, TEventData>\n implements\n AttachableNodeInstance<TParams, TEventData>,\n Module<TParams, TEventData>,\n NodeInstance<TParams, TEventData>,\n ModuleInstance<TParams, TEventData>,\n NodeModule<TParams, TEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, NodeConfigSchema]\n static override readonly defaultConfigSchema: Schema = NodeConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): Schema[] {\n return [\n NodeAttachQuerySchema,\n NodeCertifyQuerySchema,\n NodeDetachQuerySchema,\n NodeAttachedQuerySchema,\n NodeRegisteredQuerySchema,\n ...super.queries,\n ]\n }\n\n static isNode(mod: unknown) {\n return (mod as AbstractNode).isNode\n }\n\n async attach(id: ModuleIdentifier, external?: boolean): Promise<Address | undefined> {\n this._noOverride('attach')\n return await this.attachHandler(id, external)\n }\n\n async attachQuery(id: ModuleIdentifier, external?: boolean, account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n this._noOverride('attachQuery')\n const queryPayload: NodeAttachQuery = {\n external, id, schema: NodeAttachQuerySchema,\n }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n async attached(): Promise<Address[]> {\n this._noOverride('attached')\n return await this.attachedHandler()\n }\n\n async attachedHandler(): Promise<Address[]> {\n return [...(await this.attachedPublicModules()).map(mod => mod.address), ...(await this.attachedPrivateModules()).map(mod => mod.address)]\n }\n\n async attachedQuery(account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n this._noOverride('attachedQuery')\n const queryPayload: NodeAttachedQuery = { schema: NodeAttachedQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n async certify(id: ModuleIdentifier): Promise<ChildCertificationFields | undefined> {\n this._noOverride('certify')\n return await this.certifyHandler(id)\n }\n\n async certifyQuery(id: ModuleIdentifier, account?: AccountInstance): Promise<ModuleQueryResult<ChildCertification>> {\n const queryPayload: NodeCertifyQuery = { id, schema: NodeCertifyQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n async detach(id: ModuleIdentifier): Promise<Address | undefined> {\n this._noOverride('detach')\n return await this.detachHandler(id)\n }\n\n async detachQuery(id: ModuleIdentifier, account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n this._noOverride('detachQuery')\n const queryPayload: NodeDetachQuery = { id, schema: NodeDetachQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n override async manifest(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n override async privateChildren(): Promise<ModuleInstance[]> {\n return await this.attachedPrivateModules()\n }\n\n override async publicChildren(): Promise<ModuleInstance[]> {\n return await this.attachedPublicModules()\n }\n\n async registered(): Promise<Address[]> {\n this._noOverride('registered')\n return await this.registeredHandler()\n }\n\n async registeredQuery(account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n this._noOverride('registeredQuery')\n const queryPayload: NodeRegisteredQuery = { schema: NodeRegisteredQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.resolvePrivate('*', { maxDepth }) ?? [])).filter(mod => mod.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { direction: 'down', maxDepth }) ?? [])).filter(mod => mod.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 10): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n // console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = childMods.map(mod => new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address }).build())\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const cachedResult = this._cachedManifests.get(maxDepth)\n if (cachedResult) {\n return cachedResult\n }\n\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), schema: NodeManifestPayloadSchema }\n const newIgnoreAddresses = [...ignoreAddresses, this.address]\n\n const notThisModule = (mod: ModuleInstance) => mod.address !== this.address && !ignoreAddresses.includes(mod.address)\n const toManifest = (mod: ModuleInstance) => mod.manifest(maxDepth - 1, newIgnoreAddresses)\n\n const publicChildren = await this.publicChildren()\n const publicModuleManifests = await Promise.all(publicChildren.filter(notThisModule).map(toManifest))\n if (publicModuleManifests.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.public = publicModuleManifests\n }\n\n this._cachedManifests.set(maxDepth, manifest)\n\n return manifest\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig), () => 'Module is not queryable with the provided query')\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case NodeAttachQuerySchema: {\n const address = await this.attachHandler(queryPayload.id, queryPayload.external)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeCertifyQuerySchema: {\n const fields = await this.certifyHandler(queryPayload.id)\n if (fields) {\n const payload = await new PayloadBuilder<ChildCertification>({ schema: ChildCertificationSchema }).fields(fields).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeDetachQuerySchema: {\n const address = await this.detachHandler(queryPayload.id)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeAttachedQuerySchema: {\n const addresses = await this.attachedHandler()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeRegisteredQuerySchema: {\n const addresses = await this.registeredHandler()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n abstract attachHandler(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n\n abstract certifyHandler(id: ModuleIdentifier): Promisable<ChildCertificationFields | undefined>\n\n abstract detachHandler(id: ModuleIdentifier): Promisable<Address | undefined>\n\n abstract registeredHandler(): Promisable<Address[]>\n}\n","import type { ModuleInstance } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { asNodeInstance } from '@xyo-network/node-model'\n\nexport const attachedPrivateModules = async (node: NodeInstance, maxDepth = 1): Promise<ModuleInstance[]> => {\n const remainingDepth = maxDepth - 1\n const mods: ModuleInstance[] = []\n const publicChildren = await node.privateChildren()\n mods.push(...publicChildren)\n\n if (remainingDepth > 0) {\n await Promise.all(\n publicChildren.map(async (mod) => {\n const node = asNodeInstance(mod)\n if (node) {\n const children = await attachedPrivateModules(node, remainingDepth)\n mods.push(...children)\n }\n }),\n )\n }\n return mods\n}\n","import type { ModuleInstance } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { asNodeInstance } from '@xyo-network/node-model'\n\nexport const attachedPublicModules = async (node: NodeInstance, maxDepth = 1): Promise<ModuleInstance[]> => {\n const remainingDepth = maxDepth - 1\n const mods: ModuleInstance[] = []\n const publicChildren = await node.publicChildren()\n mods.push(...publicChildren)\n\n if (remainingDepth > 0) {\n await Promise.all(\n publicChildren.map(async (mod) => {\n const node = asNodeInstance(mod)\n if (node) {\n const children = await attachedPublicModules(node, remainingDepth)\n mods.push(...children)\n }\n }),\n )\n }\n return mods\n}\n","import { attachedPrivateModules } from './attachedPrivateModules.ts'\nimport { attachedPublicModules } from './attachedPublicModules.ts'\n\nexport const NodeHelper = {\n attachedPrivateModules,\n attachedPublicModules,\n}\n"],"mappings":";;;;AAAA,SAASA,gBAAgB;AAEzB,SAASC,sBAAsB;AAI/B,SAASC,gCAAgC;AAEzC,SAASC,iCAAiC;AAC1C,SAASC,8BAA8B;AAUvC,SAASC,qBAAqB;AAgB9B,SACEC,0BACAC,yBACAC,uBACAC,wBACAC,kBACAC,uBACAC,iCACK;AACP,SAASC,sBAAsB;AAGxB,IAAeC,eAAf,MAAeA,sBACZC,uBAAAA;EAhDV,OAgDUA;;;EAOR,OAAyBC,gBAA0B;OAAI,MAAMA;IAAeC;;EAC5E,OAAyBC,sBAA8BD;EACvD,OAAyBE,aAAaC,eAAe,gBAAgBN,eAAc,KAAA;EAElEO,SAAS;EAE1B,IAAaC,UAAoB;AAC/B,WAAO;MACLC;MACAC;MACAC;MACAC;MACAC;SACG,MAAML;;EAEb;EAEA,OAAOD,OAAOO,KAAc;AAC1B,WAAQA,IAAqBP;EAC/B;EAEA,MAAMQ,OAAOC,IAAsBC,UAAkD;AACnF,SAAKC,YAAY,QAAA;AACjB,WAAO,MAAM,KAAKC,cAAcH,IAAIC,QAAAA;EACtC;EAEA,MAAMG,YAAYJ,IAAsBC,UAAoBI,SAAuE;AACjI,SAAKH,YAAY,aAAA;AACjB,UAAMI,eAAgC;MACpCL;MAAUD;MAAIO,QAAQd;IACxB;AACA,WAAO,MAAM,KAAKe,aAAaF,cAAc,CAAA,GAAID,OAAAA;EACnD;EAEA,MAAMI,WAA+B;AACnC,SAAKP,YAAY,UAAA;AACjB,WAAO,MAAM,KAAKQ,gBAAe;EACnC;EAEA,MAAMA,kBAAsC;AAC1C,WAAO;UAAK,MAAM,KAAKC,sBAAqB,GAAIC,IAAId,CAAAA,QAAOA,IAAIe,OAAO;UAAO,MAAM,KAAKC,uBAAsB,GAAIF,IAAId,CAAAA,QAAOA,IAAIe,OAAO;;EAC1I;EAEA,MAAME,cAAcV,SAAuE;AACzF,SAAKH,YAAY,eAAA;AACjB,UAAMI,eAAkC;MAAEC,QAAQX;IAAwB;AAC1E,WAAO,MAAM,KAAKY,aAAaF,cAAc,CAAA,GAAID,OAAAA;EACnD;EAEA,MAAMW,QAAQhB,IAAqE;AACjF,SAAKE,YAAY,SAAA;AACjB,WAAO,MAAM,KAAKe,eAAejB,EAAAA;EACnC;EAEA,MAAMkB,aAAalB,IAAsBK,SAA2E;AAClH,UAAMC,eAAiC;MAAEN;MAAIO,QAAQb;IAAuB;AAC5E,WAAO,MAAM,KAAKc,aAAaF,cAAc,CAAA,GAAID,OAAAA;EACnD;EAEA,MAAMc,OAAOnB,IAAoD;AAC/D,SAAKE,YAAY,QAAA;AACjB,WAAO,MAAM,KAAKkB,cAAcpB,EAAAA;EAClC;EAEA,MAAMqB,YAAYrB,IAAsBK,SAAuE;AAC7G,SAAKH,YAAY,aAAA;AACjB,UAAMI,eAAgC;MAAEN;MAAIO,QAAQZ;IAAsB;AAC1E,WAAO,MAAM,KAAKa,aAAaF,cAAc,CAAA,GAAID,OAAAA;EACnD;EAEA,MAAeiB,SAASC,WAAW,IAAIC,kBAA6B,CAAA,GAAoC;AACtG,WAAO,MAAM,KAAKC,gBAAgBF,UAAUC,eAAAA;EAC9C;EAEA,MAAeE,kBAA6C;AAC1D,WAAO,MAAM,KAAKZ,uBAAsB;EAC1C;EAEA,MAAea,iBAA4C;AACzD,WAAO,MAAM,KAAKhB,sBAAqB;EACzC;EAEA,MAAMiB,aAAiC;AACrC,SAAK1B,YAAY,YAAA;AACjB,WAAO,MAAM,KAAK2B,kBAAiB;EACrC;EAEA,MAAMC,gBAAgBzB,SAAuE;AAC3F,SAAKH,YAAY,iBAAA;AACjB,UAAMI,eAAoC;MAAEC,QAAQV;IAA0B;AAC9E,WAAO,MAAM,KAAKW,aAAaF,cAAc,CAAA,GAAID,OAAAA;EACnD;EAEA,MAAgBS,uBAAuBS,WAAW,GAA8B;AAC9E,YAAQ,OAAO,KAAKQ,eAAe,KAAK;MAAER;IAAS,CAAA,KAAM,CAAA,IAAKS,OAAOlC,CAAAA,QAAOA,IAAIe,YAAY,KAAKA,OAAO;EAC1G;EAEA,MAAgBF,sBAAsBY,WAAW,GAA8B;AAC7E,YAAQ,OAAO,KAAKU,aAAaC,QAAQ,KAAK;MAAEC,WAAW;MAAQZ;IAAS,CAAA,KAAM,CAAA,IAAKS,OAAOlC,CAAAA,QAAOA,IAAIe,YAAY,KAAKA,OAAO;EACnI;EAEA,MAAyBuB,yBAAyBb,WAAW,IAAwB;AACnF,UAAMc,YAAY,MAAM,KAAK1B,sBAAsBY,QAAAA;AAEnD,UAAMe,oBAAoBD,UAAUzB,IAAId,CAAAA,QAAO,IAAIyC,eAA+B;MAAEhC,QAAQiC;IAAc,CAAA,EAAGC,OAAO;MAAE5B,SAASf,IAAIe;IAAQ,CAAA,EAAG6B,MAAK,CAAA;AAEnJ,WAAO;SAAK,MAAM,MAAMN,yBAAyBb,QAAAA;SAAee;;EAClE;EAEA,MAAyBb,gBAAgBF,WAAW,IAAIC,kBAA6B,CAAA,GAAoC;AACvH,UAAMmB,eAAe,KAAKC,iBAAiBC,IAAItB,QAAAA;AAC/C,QAAIoB,cAAc;AAChB,aAAOA;IACT;AAEA,UAAMrB,WAAgC;MAAE,GAAI,MAAM,MAAMG,gBAAgBF,UAAUC,eAAAA;MAAmBjB,QAAQuC;IAA0B;AACvI,UAAMC,qBAAqB;SAAIvB;MAAiB,KAAKX;;AAErD,UAAMmC,gBAAgB,wBAAClD,QAAwBA,IAAIe,YAAY,KAAKA,WAAW,CAACW,gBAAgByB,SAASnD,IAAIe,OAAO,GAA9F;AACtB,UAAMqC,aAAa,wBAACpD,QAAwBA,IAAIwB,SAASC,WAAW,GAAGwB,kBAAAA,GAApD;AAEnB,UAAMpB,iBAAiB,MAAM,KAAKA,eAAc;AAChD,UAAMwB,wBAAwB,MAAMC,QAAQC,IAAI1B,eAAeK,OAAOgB,aAAAA,EAAepC,IAAIsC,UAAAA,CAAAA;AACzF,QAAIC,sBAAsBG,SAAS,GAAG;AACpChC,eAASiC,UAAUjC,SAASiC,WAAW,CAAC;AACxCjC,eAASiC,QAAQC,SAASL;IAC5B;AAEA,SAAKP,iBAAiBa,IAAIlC,UAAUD,QAAAA;AAEpC,WAAOA;EACT;EAEA,MAAyBoC,aACvBC,OACAC,UACAC,aACmC;AACnC,UAAMC,UAAU,MAAMC,yBAAyBC,WAAwBL,OAAOC,QAAAA;AAC9E,UAAMtD,eAAe,MAAMwD,QAAQG,SAAQ;AAC3CC,aAAS,MAAM,KAAKC,UAAUR,OAAOC,UAAUC,WAAAA,GAAc,MAAM,iDAAA;AACnE,UAAMO,iBAA4B,CAAA;AAClC,YAAQ9D,aAAaC,QAAM;MACzB,KAAKd,uBAAuB;AAC1B,cAAMoB,UAAU,MAAM,KAAKV,cAAcG,aAAaN,IAAIM,aAAaL,QAAQ;AAC/E,YAAIY,SAAS;AACX,gBAAMwD,UAAU,MAAM,IAAI9B,eAA+B;YAAEhC,QAAQiC;UAAc,CAAA,EAAGC,OAAO;YAAE5B;UAAQ,CAAA,EAAG6B,MAAK;AAC7G0B,yBAAeE,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAK3E,wBAAwB;AAC3B,cAAM+C,SAAS,MAAM,KAAKxB,eAAeX,aAAaN,EAAE;AACxD,YAAIyC,QAAQ;AACV,gBAAM4B,UAAU,MAAM,IAAI9B,eAAmC;YAAEhC,QAAQgE;UAAyB,CAAA,EAAG9B,OAAOA,MAAAA,EAAQC,MAAK;AACvH0B,yBAAeE,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAK1E,uBAAuB;AAC1B,cAAMkB,UAAU,MAAM,KAAKO,cAAcd,aAAaN,EAAE;AACxD,YAAIa,SAAS;AACX,gBAAMwD,UAAU,MAAM,IAAI9B,eAA+B;YAAEhC,QAAQiC;UAAc,CAAA,EAAGC,OAAO;YAAE5B;UAAQ,CAAA,EAAG6B,MAAK;AAC7G0B,yBAAeE,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAKzE,yBAAyB;AAC5B,cAAM4E,YAAY,MAAM,KAAK9D,gBAAe;AAC5C,mBAAWG,WAAW2D,WAAW;AAC/B,gBAAMH,UAAU,MAAM,IAAI9B,eAA+B;YAAEhC,QAAQiC;UAAc,CAAA,EAAGC,OAAO;YAAE5B;UAAQ,CAAA,EAAG6B,MAAK;AAC7G0B,yBAAeE,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAKxE,2BAA2B;AAC9B,cAAM2E,YAAY,MAAM,KAAK3C,kBAAiB;AAC9C,mBAAWhB,WAAW2D,WAAW;AAC/B,gBAAMH,UAAU,MAAM,IAAI9B,eAA+B;YAAEhC,QAAQiC;UAAc,CAAA,EAAGC,OAAO;YAAE5B;UAAQ,CAAA,EAAG6B,MAAK;AAC7G0B,yBAAeE,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,SAAS;AACP,eAAO,MAAM,MAAMX,aAAaC,OAAOC,QAAAA;MACzC;IACF;AACA,WAAOQ;EACT;AASF;;;AC1PA,SAASK,sBAAsB;AAExB,IAAMC,yBAAyB,8BAAOC,MAAoBC,WAAW,MAAC;AAC3E,QAAMC,iBAAiBD,WAAW;AAClC,QAAME,OAAyB,CAAA;AAC/B,QAAMC,iBAAiB,MAAMJ,KAAKK,gBAAe;AACjDF,OAAKG,KAAI,GAAIF,cAAAA;AAEb,MAAIF,iBAAiB,GAAG;AACtB,UAAMK,QAAQC,IACZJ,eAAeK,IAAI,OAAOC,QAAAA;AACxB,YAAMV,QAAOW,eAAeD,GAAAA;AAC5B,UAAIV,OAAM;AACR,cAAMY,WAAW,MAAMb,uBAAuBC,OAAME,cAAAA;AACpDC,aAAKG,KAAI,GAAIM,QAAAA;MACf;IACF,CAAA,CAAA;EAEJ;AACA,SAAOT;AACT,GAlBsC;;;ACFtC,SAASU,kBAAAA,uBAAsB;AAExB,IAAMC,wBAAwB,8BAAOC,MAAoBC,WAAW,MAAC;AAC1E,QAAMC,iBAAiBD,WAAW;AAClC,QAAME,OAAyB,CAAA;AAC/B,QAAMC,iBAAiB,MAAMJ,KAAKI,eAAc;AAChDD,OAAKE,KAAI,GAAID,cAAAA;AAEb,MAAIF,iBAAiB,GAAG;AACtB,UAAMI,QAAQC,IACZH,eAAeI,IAAI,OAAOC,QAAAA;AACxB,YAAMT,QAAOU,gBAAeD,GAAAA;AAC5B,UAAIT,OAAM;AACR,cAAMW,WAAW,MAAMZ,sBAAsBC,OAAME,cAAAA;AACnDC,aAAKE,KAAI,GAAIM,QAAAA;MACf;IACF,CAAA,CAAA;EAEJ;AACA,SAAOR;AACT,GAlBqC;;;ACD9B,IAAMS,aAAa;EACxBC;EACAC;AACF;","names":["assertEx","globallyUnique","QueryBoundWitnessWrapper","NodeManifestPayloadSchema","AbstractModuleInstance","AddressSchema","ChildCertificationSchema","NodeAttachedQuerySchema","NodeAttachQuerySchema","NodeCertifyQuerySchema","NodeConfigSchema","NodeDetachQuerySchema","NodeRegisteredQuerySchema","PayloadBuilder","AbstractNode","AbstractModuleInstance","configSchemas","NodeConfigSchema","defaultConfigSchema","uniqueName","globallyUnique","isNode","queries","NodeAttachQuerySchema","NodeCertifyQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","mod","attach","id","external","_noOverride","attachHandler","attachQuery","account","queryPayload","schema","sendQueryRaw","attached","attachedHandler","attachedPublicModules","map","address","attachedPrivateModules","attachedQuery","certify","certifyHandler","certifyQuery","detach","detachHandler","detachQuery","manifest","maxDepth","ignoreAddresses","manifestHandler","privateChildren","publicChildren","registered","registeredHandler","registeredQuery","resolvePrivate","filter","downResolver","resolve","direction","generateConfigAndAddress","childMods","childModAddresses","PayloadBuilder","AddressSchema","fields","build","cachedResult","_cachedManifests","get","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicModuleManifests","Promise","all","length","modules","public","set","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","getQuery","assertEx","queryable","resultPayloads","payload","push","ChildCertificationSchema","addresses","asNodeInstance","attachedPrivateModules","node","maxDepth","remainingDepth","mods","publicChildren","privateChildren","push","Promise","all","map","mod","asNodeInstance","children","asNodeInstance","attachedPublicModules","node","maxDepth","remainingDepth","mods","publicChildren","push","Promise","all","map","mod","asNodeInstance","children","NodeHelper","attachedPrivateModules","attachedPublicModules"]}
|
|
1
|
+
{"version":3,"sources":["../../src/AbstractNode.ts","../../src/NodeHelper/attachedPrivateModules.ts","../../src/NodeHelper/attachedPublicModules.ts","../../src/NodeHelper/index.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport type { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport type { Promisable } from '@xylabs/promise'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { ModuleManifestPayload, NodeManifestPayload } from '@xyo-network/manifest-model'\nimport { NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport type {\n AddressPayload,\n Module,\n ModuleConfig,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { AddressSchema } from '@xyo-network/module-model'\nimport type {\n AttachableNodeInstance,\n ChildCertification,\n ChildCertificationFields,\n NodeAttachedQuery,\n NodeAttachQuery,\n NodeCertifyQuery,\n NodeDetachQuery,\n NodeInstance,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\n NodeRegisteredQuery,\n} from '@xyo-network/node-model'\nimport {\n ChildCertificationSchema,\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeCertifyQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeRegisteredQuerySchema,\n} from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\n\nexport abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData>\n extends AbstractModuleInstance<TParams, TEventData>\n implements\n AttachableNodeInstance<TParams, TEventData>,\n Module<TParams, TEventData>,\n NodeInstance<TParams, TEventData>,\n ModuleInstance<TParams, TEventData>,\n NodeModule<TParams, TEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, NodeConfigSchema]\n static override readonly defaultConfigSchema: Schema = NodeConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): Schema[] {\n return [\n NodeAttachQuerySchema,\n NodeCertifyQuerySchema,\n NodeDetachQuerySchema,\n NodeAttachedQuerySchema,\n NodeRegisteredQuerySchema,\n ...super.queries,\n ]\n }\n\n static isNode(mod: unknown) {\n return (mod as AbstractNode).isNode\n }\n\n async attach(id: ModuleIdentifier, external?: boolean): Promise<Address | undefined> {\n this._noOverride('attach')\n return await this.attachHandler(id, external)\n }\n\n async attachQuery(id: ModuleIdentifier, external?: boolean, account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n this._noOverride('attachQuery')\n const queryPayload: NodeAttachQuery = {\n external, id, schema: NodeAttachQuerySchema,\n }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n async attached(): Promise<Address[]> {\n this._noOverride('attached')\n return await this.attachedHandler()\n }\n\n async attachedHandler(): Promise<Address[]> {\n return [...(await this.attachedPublicModules()).map(mod => mod.address), ...(await this.attachedPrivateModules()).map(mod => mod.address)]\n }\n\n async attachedQuery(account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n this._noOverride('attachedQuery')\n const queryPayload: NodeAttachedQuery = { schema: NodeAttachedQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n async certify(id: ModuleIdentifier): Promise<ChildCertificationFields | undefined> {\n this._noOverride('certify')\n return await this.certifyHandler(id)\n }\n\n async certifyQuery(id: ModuleIdentifier, account?: AccountInstance): Promise<ModuleQueryResult<ChildCertification>> {\n const queryPayload: NodeCertifyQuery = { id, schema: NodeCertifyQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n async detach(id: ModuleIdentifier): Promise<Address | undefined> {\n this._noOverride('detach')\n return await this.detachHandler(id)\n }\n\n async detachQuery(id: ModuleIdentifier, account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n this._noOverride('detachQuery')\n const queryPayload: NodeDetachQuery = { id, schema: NodeDetachQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n override async manifest(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n override async privateChildren(): Promise<ModuleInstance[]> {\n return await this.attachedPrivateModules()\n }\n\n override async publicChildren(): Promise<ModuleInstance[]> {\n return await this.attachedPublicModules()\n }\n\n async registered(): Promise<Address[]> {\n this._noOverride('registered')\n return await this.registeredHandler()\n }\n\n async registeredQuery(account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n this._noOverride('registeredQuery')\n const queryPayload: NodeRegisteredQuery = { schema: NodeRegisteredQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.resolvePrivate('*', { maxDepth }) ?? [])).filter(mod => mod.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { direction: 'down', maxDepth }) ?? [])).filter(mod => mod.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 10): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n // console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = childMods.map(mod => new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address }).build())\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const cachedResult = this._cachedManifests.get(maxDepth)\n if (cachedResult) {\n return cachedResult\n }\n\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), schema: NodeManifestPayloadSchema }\n const newIgnoreAddresses = [...ignoreAddresses, this.address]\n\n const notThisModule = (mod: ModuleInstance) => mod.address !== this.address && !ignoreAddresses.includes(mod.address)\n const toManifest = (mod: ModuleInstance) => mod.manifest(maxDepth - 1, newIgnoreAddresses)\n\n const publicChildren = await this.publicChildren()\n const publicModuleManifests = await Promise.all(publicChildren.filter(notThisModule).map(toManifest))\n if (publicModuleManifests.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.public = publicModuleManifests\n }\n\n this._cachedManifests.set(maxDepth, manifest)\n\n return manifest\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig), () => 'Module is not queryable with the provided query')\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case NodeAttachQuerySchema: {\n const address = await this.attachHandler(queryPayload.id, queryPayload.external)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeCertifyQuerySchema: {\n const fields = await this.certifyHandler(queryPayload.id)\n if (fields) {\n const payload = await new PayloadBuilder<ChildCertification>({ schema: ChildCertificationSchema }).fields(fields).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeDetachQuerySchema: {\n const address = await this.detachHandler(queryPayload.id)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeAttachedQuerySchema: {\n const addresses = await this.attachedHandler()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeRegisteredQuerySchema: {\n const addresses = await this.registeredHandler()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n abstract attachHandler(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n\n abstract certifyHandler(id: ModuleIdentifier): Promisable<ChildCertificationFields | undefined>\n\n abstract detachHandler(id: ModuleIdentifier): Promisable<Address | undefined>\n\n abstract registeredHandler(): Promisable<Address[]>\n}\n","import type { ModuleInstance } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { asNodeInstance } from '@xyo-network/node-model'\n\nexport const attachedPrivateModules = async (node: NodeInstance, maxDepth = 1): Promise<ModuleInstance[]> => {\n const remainingDepth = maxDepth - 1\n const mods: ModuleInstance[] = []\n const publicChildren = await node.privateChildren()\n mods.push(...publicChildren)\n\n if (remainingDepth > 0) {\n await Promise.all(\n publicChildren.map(async (mod) => {\n const node = asNodeInstance(mod)\n if (node) {\n const children = await attachedPrivateModules(node, remainingDepth)\n mods.push(...children)\n }\n }),\n )\n }\n return mods\n}\n","import type { ModuleInstance } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { asNodeInstance } from '@xyo-network/node-model'\n\nexport const attachedPublicModules = async (node: NodeInstance, maxDepth = 1): Promise<ModuleInstance[]> => {\n const remainingDepth = maxDepth - 1\n const mods: ModuleInstance[] = []\n const publicChildren = await node.publicChildren()\n mods.push(...publicChildren)\n\n if (remainingDepth > 0) {\n await Promise.all(\n publicChildren.map(async (mod) => {\n const node = asNodeInstance(mod)\n if (node) {\n const children = await attachedPublicModules(node, remainingDepth)\n mods.push(...children)\n }\n }),\n )\n }\n return mods\n}\n","import { attachedPrivateModules } from './attachedPrivateModules.ts'\nimport { attachedPublicModules } from './attachedPublicModules.ts'\n\nexport const NodeHelper = {\n attachedPrivateModules,\n attachedPublicModules,\n}\n"],"mappings":"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","names":["node","asNodeInstance","node"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/node-abstract",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.10",
|
|
4
4
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -29,24 +29,24 @@
|
|
|
29
29
|
"module": "dist/neutral/index.mjs",
|
|
30
30
|
"types": "dist/neutral/index.d.ts",
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@xylabs/assert": "^4.
|
|
33
|
-
"@xylabs/hex": "^4.
|
|
34
|
-
"@xylabs/object": "^4.
|
|
35
|
-
"@xylabs/promise": "^4.
|
|
36
|
-
"@xyo-network/account-model": "^3.6.
|
|
37
|
-
"@xyo-network/boundwitness-model": "^3.6.
|
|
38
|
-
"@xyo-network/boundwitness-wrapper": "^3.6.
|
|
39
|
-
"@xyo-network/manifest-model": "^3.6.
|
|
40
|
-
"@xyo-network/module-abstract": "^3.6.
|
|
41
|
-
"@xyo-network/module-model": "^3.6.
|
|
42
|
-
"@xyo-network/node-model": "^3.6.
|
|
43
|
-
"@xyo-network/payload-builder": "^3.6.
|
|
44
|
-
"@xyo-network/payload-model": "^3.6.
|
|
32
|
+
"@xylabs/assert": "^4.5.1",
|
|
33
|
+
"@xylabs/hex": "^4.5.1",
|
|
34
|
+
"@xylabs/object": "^4.5.1",
|
|
35
|
+
"@xylabs/promise": "^4.5.1",
|
|
36
|
+
"@xyo-network/account-model": "^3.6.10",
|
|
37
|
+
"@xyo-network/boundwitness-model": "^3.6.10",
|
|
38
|
+
"@xyo-network/boundwitness-wrapper": "^3.6.10",
|
|
39
|
+
"@xyo-network/manifest-model": "^3.6.10",
|
|
40
|
+
"@xyo-network/module-abstract": "^3.6.10",
|
|
41
|
+
"@xyo-network/module-model": "^3.6.10",
|
|
42
|
+
"@xyo-network/node-model": "^3.6.10",
|
|
43
|
+
"@xyo-network/payload-builder": "^3.6.10",
|
|
44
|
+
"@xyo-network/payload-model": "^3.6.10"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@xylabs/ts-scripts-yarn3": "^4.2.6",
|
|
48
48
|
"@xylabs/tsconfig": "^4.2.6",
|
|
49
|
-
"typescript": "^5.7.
|
|
49
|
+
"typescript": "^5.7.3"
|
|
50
50
|
},
|
|
51
51
|
"publishConfig": {
|
|
52
52
|
"access": "public"
|