@xyo-network/node-abstract 2.84.1 → 2.84.3
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/node/{index.mjs → index.cjs} +68 -43
- package/dist/node/index.cjs.map +1 -0
- package/dist/node/index.js +42 -67
- package/dist/node/index.js.map +1 -1
- package/package.json +19 -19
- package/dist/node/index.mjs.map +0 -1
|
@@ -1,33 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
2
6
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
7
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
4
21
|
var __publicField = (obj, key, value) => {
|
|
5
22
|
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
6
23
|
return value;
|
|
7
24
|
};
|
|
8
25
|
|
|
26
|
+
// src/index.ts
|
|
27
|
+
var src_exports = {};
|
|
28
|
+
__export(src_exports, {
|
|
29
|
+
AbstractNode: () => AbstractNode
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(src_exports);
|
|
32
|
+
|
|
9
33
|
// src/AbstractNode.ts
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
20
|
-
privateResolver = new CompositeModuleResolver();
|
|
34
|
+
var import_assert = require("@xylabs/assert");
|
|
35
|
+
var import_address_payload_plugin = require("@xyo-network/address-payload-plugin");
|
|
36
|
+
var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
|
|
37
|
+
var import_manifest_model = require("@xyo-network/manifest-model");
|
|
38
|
+
var import_module_abstract = require("@xyo-network/module-abstract");
|
|
39
|
+
var import_module_model = require("@xyo-network/module-model");
|
|
40
|
+
var import_module_resolver = require("@xyo-network/module-resolver");
|
|
41
|
+
var import_node_model = require("@xyo-network/node-model");
|
|
42
|
+
var import_payload_builder = require("@xyo-network/payload-builder");
|
|
43
|
+
var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractModuleInstance {
|
|
44
|
+
privateResolver = new import_module_resolver.CompositeModuleResolver();
|
|
21
45
|
isNode = true;
|
|
22
46
|
get isModuleResolver() {
|
|
23
47
|
return true;
|
|
24
48
|
}
|
|
25
49
|
get queries() {
|
|
26
50
|
return [
|
|
27
|
-
NodeAttachQuerySchema,
|
|
28
|
-
NodeDetachQuerySchema,
|
|
29
|
-
NodeAttachedQuerySchema,
|
|
30
|
-
NodeRegisteredQuerySchema,
|
|
51
|
+
import_node_model.NodeAttachQuerySchema,
|
|
52
|
+
import_node_model.NodeDetachQuerySchema,
|
|
53
|
+
import_node_model.NodeAttachedQuerySchema,
|
|
54
|
+
import_node_model.NodeRegisteredQuerySchema,
|
|
31
55
|
...super.queries
|
|
32
56
|
];
|
|
33
57
|
}
|
|
@@ -39,17 +63,17 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
39
63
|
"network.xyo.query.node.registered": "1/4"
|
|
40
64
|
};
|
|
41
65
|
}
|
|
42
|
-
static isNode(
|
|
43
|
-
return
|
|
66
|
+
static isNode(module2) {
|
|
67
|
+
return module2.isNode;
|
|
44
68
|
}
|
|
45
69
|
async attached() {
|
|
46
|
-
return (await this.attachedModules()).map((
|
|
70
|
+
return (await this.attachedModules()).map((module2) => module2.address);
|
|
47
71
|
}
|
|
48
72
|
async attachedModules(maxDepth = 2) {
|
|
49
73
|
return (await (this.resolve(void 0, {
|
|
50
74
|
direction: "down",
|
|
51
75
|
maxDepth
|
|
52
|
-
}) ?? [])).filter((
|
|
76
|
+
}) ?? [])).filter((module2) => module2.address !== this.address);
|
|
53
77
|
}
|
|
54
78
|
async manifest(maxDepth, ignoreAddresses) {
|
|
55
79
|
return await this.manifestHandler(maxDepth, ignoreAddresses);
|
|
@@ -95,8 +119,8 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
95
119
|
}
|
|
96
120
|
async discoverHandler(maxDepth) {
|
|
97
121
|
const childMods = await this.attachedModules(maxDepth);
|
|
98
|
-
const childModAddresses = await Promise.all(childMods.map((mod) => new PayloadBuilder({
|
|
99
|
-
schema: AddressSchema
|
|
122
|
+
const childModAddresses = await Promise.all(childMods.map((mod) => new import_payload_builder.PayloadBuilder({
|
|
123
|
+
schema: import_address_payload_plugin.AddressSchema
|
|
100
124
|
}).fields({
|
|
101
125
|
address: mod.address,
|
|
102
126
|
name: mod.config.name
|
|
@@ -109,14 +133,14 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
109
133
|
async manifestHandler(maxDepth, ignoreAddresses = []) {
|
|
110
134
|
const manifest = {
|
|
111
135
|
...await super.manifestHandler(),
|
|
112
|
-
schema: NodeManifestPayloadSchema
|
|
136
|
+
schema: import_manifest_model.NodeManifestPayloadSchema
|
|
113
137
|
};
|
|
114
138
|
const newIgnoreAddresses = [
|
|
115
139
|
...ignoreAddresses,
|
|
116
140
|
this.address
|
|
117
141
|
];
|
|
118
|
-
const notThisModule = /* @__PURE__ */ __name((
|
|
119
|
-
const toManifest = /* @__PURE__ */ __name((
|
|
142
|
+
const notThisModule = /* @__PURE__ */ __name((module2) => module2.address !== this.address && !ignoreAddresses.includes(module2.address), "notThisModule");
|
|
143
|
+
const toManifest = /* @__PURE__ */ __name((module2) => module2.manifest(maxDepth, newIgnoreAddresses), "toManifest");
|
|
120
144
|
const publicModules = await Promise.all((await this.resolve(void 0, {
|
|
121
145
|
direction: "down",
|
|
122
146
|
maxDepth
|
|
@@ -128,16 +152,16 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
128
152
|
return manifest;
|
|
129
153
|
}
|
|
130
154
|
async queryHandler(query, payloads, queryConfig) {
|
|
131
|
-
const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
|
|
155
|
+
const wrapper = import_boundwitness_builder.QueryBoundWitnessWrapper.parseQuery(query, payloads);
|
|
132
156
|
const queryPayload = await wrapper.getQuery();
|
|
133
|
-
assertEx(this.queryable(query, payloads, queryConfig));
|
|
157
|
+
(0, import_assert.assertEx)(this.queryable(query, payloads, queryConfig));
|
|
134
158
|
const resultPayloads = [];
|
|
135
159
|
switch (queryPayload.schema) {
|
|
136
|
-
case NodeAttachQuerySchema: {
|
|
160
|
+
case import_node_model.NodeAttachQuerySchema: {
|
|
137
161
|
const address = await this.attach(queryPayload.nameOrAddress, queryPayload.external);
|
|
138
162
|
if (address) {
|
|
139
|
-
const payload = await new PayloadBuilder({
|
|
140
|
-
schema: AddressSchema
|
|
163
|
+
const payload = await new import_payload_builder.PayloadBuilder({
|
|
164
|
+
schema: import_address_payload_plugin.AddressSchema
|
|
141
165
|
}).fields({
|
|
142
166
|
address
|
|
143
167
|
}).build();
|
|
@@ -145,11 +169,11 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
145
169
|
}
|
|
146
170
|
break;
|
|
147
171
|
}
|
|
148
|
-
case NodeDetachQuerySchema: {
|
|
172
|
+
case import_node_model.NodeDetachQuerySchema: {
|
|
149
173
|
const address = await this.detach(queryPayload.nameOrAddress);
|
|
150
174
|
if (address) {
|
|
151
|
-
const payload = await new PayloadBuilder({
|
|
152
|
-
schema: AddressSchema
|
|
175
|
+
const payload = await new import_payload_builder.PayloadBuilder({
|
|
176
|
+
schema: import_address_payload_plugin.AddressSchema
|
|
153
177
|
}).fields({
|
|
154
178
|
address
|
|
155
179
|
}).build();
|
|
@@ -157,11 +181,11 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
157
181
|
}
|
|
158
182
|
break;
|
|
159
183
|
}
|
|
160
|
-
case NodeAttachedQuerySchema: {
|
|
184
|
+
case import_node_model.NodeAttachedQuerySchema: {
|
|
161
185
|
const addresses = await this.attached();
|
|
162
186
|
for (const address of addresses) {
|
|
163
|
-
const payload = await new PayloadBuilder({
|
|
164
|
-
schema: AddressSchema
|
|
187
|
+
const payload = await new import_payload_builder.PayloadBuilder({
|
|
188
|
+
schema: import_address_payload_plugin.AddressSchema
|
|
165
189
|
}).fields({
|
|
166
190
|
address
|
|
167
191
|
}).build();
|
|
@@ -169,11 +193,11 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
169
193
|
}
|
|
170
194
|
break;
|
|
171
195
|
}
|
|
172
|
-
case NodeRegisteredQuerySchema: {
|
|
196
|
+
case import_node_model.NodeRegisteredQuerySchema: {
|
|
173
197
|
const addresses = await this.registered();
|
|
174
198
|
for (const address of addresses) {
|
|
175
|
-
const payload = await new PayloadBuilder({
|
|
176
|
-
schema: AddressSchema
|
|
199
|
+
const payload = await new import_payload_builder.PayloadBuilder({
|
|
200
|
+
schema: import_address_payload_plugin.AddressSchema
|
|
177
201
|
}).fields({
|
|
178
202
|
address
|
|
179
203
|
}).build();
|
|
@@ -195,7 +219,7 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
195
219
|
return [
|
|
196
220
|
...await this.resolvePrivate(nameOrAddressOrFilter, options),
|
|
197
221
|
...await super.resolve(nameOrAddressOrFilter, options)
|
|
198
|
-
].filter(duplicateModules);
|
|
222
|
+
].filter(import_module_model.duplicateModules);
|
|
199
223
|
}
|
|
200
224
|
}
|
|
201
225
|
}
|
|
@@ -214,10 +238,11 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
214
238
|
};
|
|
215
239
|
__name(_AbstractNode, "AbstractNode");
|
|
216
240
|
__publicField(_AbstractNode, "configSchemas", [
|
|
217
|
-
NodeConfigSchema
|
|
241
|
+
import_node_model.NodeConfigSchema
|
|
218
242
|
]);
|
|
219
243
|
var AbstractNode = _AbstractNode;
|
|
220
|
-
export
|
|
244
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
245
|
+
0 && (module.exports = {
|
|
221
246
|
AbstractNode
|
|
222
|
-
};
|
|
223
|
-
//# sourceMappingURL=index.
|
|
247
|
+
});
|
|
248
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/AbstractNode.ts"],"sourcesContent":["export * from './AbstractNode'\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport {\n duplicateModules,\n Module,\n ModuleConfig,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQuery,\n NodeQueryBase,\n NodeRegisteredQuerySchema,\n} from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } 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 NodeModule<TParams, TEventData>, Module<TParams, TEventData>\n{\n static override readonly configSchemas: string[] = [NodeConfigSchema]\n\n protected readonly privateResolver = new CompositeModuleResolver()\n\n private readonly isNode = true\n\n get isModuleResolver(): boolean {\n return true\n }\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueryBase['schema'], string> {\n return {\n 'network.xyo.query.node.attach': '1/1',\n 'network.xyo.query.node.attached': '1/2',\n 'network.xyo.query.node.detach': '1/3',\n 'network.xyo.query.node.registered': '1/4',\n }\n }\n\n static isNode(module: unknown) {\n return (module as AbstractNode).isNode\n }\n\n async attached(): Promise<string[]> {\n return (await this.attachedModules()).map((module) => module.address)\n }\n\n async attachedModules(maxDepth = 2): Promise<ModuleInstance[]> {\n return (await (this.resolve(undefined, { direction: 'down', maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n override async manifest(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n register(_module: ModuleInstance): Promisable<void> {\n throw new Error('Method not implemented.')\n }\n\n registered(): Promisable<string[]> {\n throw new Error('Method not implemented.')\n }\n\n registeredModules(): Promisable<Module[]> {\n throw new Error('Method not implemented.')\n }\n\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n override async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (typeof nameOrAddressOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(nameOrAddressOrFilter)\n }\n case 'all': {\n return await this.resolveAll(nameOrAddressOrFilter)\n }\n default: {\n return await super.resolve(nameOrAddressOrFilter, options)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(nameOrAddressOrFilter)\n }\n case 'private': {\n return await this.resolvePrivate(nameOrAddressOrFilter)\n }\n default: {\n return await super.resolve(nameOrAddressOrFilter, options)\n }\n }\n }\n }\n\n unregister(_module: ModuleInstance): Promisable<this> {\n throw new Error('Method not implemented.')\n }\n\n protected override async discoverHandler(maxDepth?: number): Promise<Payload[]> {\n const childMods = await this.attachedModules(maxDepth)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.discoverHandler(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth?: number, ignoreAddresses: string[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler()), schema: NodeManifestPayloadSchema }\n const newIgnoreAddresses = [...ignoreAddresses, this.address]\n\n const notThisModule = (module: ModuleInstance) => module.address !== this.address && !ignoreAddresses.includes(module.address)\n const toManifest = (module: ModuleInstance) => module.manifest(maxDepth, newIgnoreAddresses)\n\n /*const privateModules = await Promise.all((await this.privateResolver.resolve()).filter(notThisModule).map(toManifest))\n if (privateModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.private = privateModules\n }*/\n\n const publicModules = await Promise.all((await this.resolve(undefined, { direction: 'down', maxDepth })).filter(notThisModule).map(toManifest))\n if (publicModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.public = publicModules\n }\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 = QueryBoundWitnessWrapper.parseQuery<NodeQuery>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case NodeAttachQuerySchema: {\n const address = await this.attach(queryPayload.nameOrAddress, 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 NodeDetachQuerySchema: {\n const address = await this.detach(queryPayload.nameOrAddress)\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.attached()\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.registered()\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 return resultPayloads\n }\n\n private async resolveAll(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n switch (typeof nameOrAddressOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(nameOrAddressOrFilter, options)) ?? (await super.resolve(nameOrAddressOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(nameOrAddressOrFilter, options)), ...(await super.resolve(nameOrAddressOrFilter, options))].filter(\n duplicateModules,\n )\n }\n }\n }\n\n private async resolvePrivate(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n switch (typeof nameOrAddressOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : undefined\n }\n }\n }\n\n abstract attach(nameOrAddress: string, external?: boolean): Promisable<string | undefined>\n abstract detach(nameOrAddress: string): Promisable<string | undefined>\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;ACAA,oBAAyB;AAEzB,oCAA8C;AAC9C,kCAAyC;AAEzC,4BAAsF;AACtF,6BAAuC;AACvC,0BAQO;AACP,6BAAwC;AACxC,wBAWO;AACP,6BAA+B;AAGxB,IAAeA,gBAAf,MAAeA,sBACZC,8CAAAA;EAKWC,kBAAkB,IAAIC,+CAAAA;EAExBC,SAAS;EAE1B,IAAIC,mBAA4B;AAC9B,WAAO;EACT;EAEA,IAAaC,UAAoB;AAC/B,WAAO;MAACC;MAAuBC;MAAuBC;MAAyBC;SAA8B,MAAMJ;;EACrH;EAEA,IAAuBK,qBAA8D;AACnF,WAAO;MACL,iCAAiC;MACjC,mCAAmC;MACnC,iCAAiC;MACjC,qCAAqC;IACvC;EACF;EAEA,OAAOP,OAAOQ,SAAiB;AAC7B,WAAQA,QAAwBR;EAClC;EAEA,MAAMS,WAA8B;AAClC,YAAQ,MAAM,KAAKC,gBAAe,GAAIC,IAAI,CAACH,YAAWA,QAAOI,OAAO;EACtE;EAEA,MAAMF,gBAAgBG,WAAW,GAA8B;AAC7D,YAAQ,OAAO,KAAKC,QAAQC,QAAW;MAAEC,WAAW;MAAQH;IAAS,CAAA,KAAM,CAAA,IAAKI,OAAO,CAACT,YAAWA,QAAOI,YAAY,KAAKA,OAAO;EACpI;EAEA,MAAeM,SAASL,UAAmBM,iBAA4D;AACrG,WAAO,MAAM,KAAKC,gBAAgBP,UAAUM,eAAAA;EAC9C;EAEAE,SAASC,SAA2C;AAClD,UAAM,IAAIC,MAAM,yBAAA;EAClB;EAEAC,aAAmC;AACjC,UAAM,IAAID,MAAM,yBAAA;EAClB;EAEAE,oBAA0C;AACxC,UAAM,IAAIF,MAAM,yBAAA;EAClB;EAIA,MAAeT,QACbY,uBACAC,SACwD;AAGxD,QAAI,OAAOD,0BAA0B,UAAU;AAC7C,cAAQC,mCAASC,YAAAA;QACf,KAAK,WAAW;AACd,iBAAO,MAAM,KAAKC,eAAeH,qBAAAA;QACnC;QACA,KAAK,OAAO;AACV,iBAAO,MAAM,KAAKI,WAAWJ,qBAAAA;QAC/B;QACA,SAAS;AACP,iBAAO,MAAM,MAAMZ,QAAQY,uBAAuBC,OAAAA;QACpD;MACF;IACF,OAAO;AACL,cAAQA,mCAASC,YAAAA;QACf,KAAK,OAAO;AACV,iBAAO,MAAM,KAAKE,WAAWJ,qBAAAA;QAC/B;QACA,KAAK,WAAW;AACd,iBAAO,MAAM,KAAKG,eAAeH,qBAAAA;QACnC;QACA,SAAS;AACP,iBAAO,MAAM,MAAMZ,QAAQY,uBAAuBC,OAAAA;QACpD;MACF;IACF;EACF;EAEAI,WAAWT,SAA2C;AACpD,UAAM,IAAIC,MAAM,yBAAA;EAClB;EAEA,MAAyBS,gBAAgBnB,UAAuC;AAC9E,UAAMoB,YAAY,MAAM,KAAKvB,gBAAgBG,QAAAA;AAC7C,UAAMqB,oBAAoB,MAAMC,QAAQC,IACtCH,UAAUtB,IAAI,CAAC0B,QACb,IAAIC,sCAA+B;MAAEC,QAAQC;IAAc,CAAA,EAAGC,OAAO;MAAE7B,SAASyB,IAAIzB;MAAS8B,MAAML,IAAIM,OAAOD;IAAK,CAAA,EAAGE,MAAK,CAAA,CAAA;AAI/H,WAAO;SAAK,MAAM,MAAMZ,gBAAgBnB,QAAAA;SAAeqB;;EACzD;EAEA,MAAyBd,gBAAgBP,UAAmBM,kBAA4B,CAAA,GAAoC;AAC1H,UAAMD,WAAgC;MAAE,GAAI,MAAM,MAAME,gBAAAA;MAAoBmB,QAAQM;IAA0B;AAC9G,UAAMC,qBAAqB;SAAI3B;MAAiB,KAAKP;;AAErD,UAAMmC,gBAAgB,wBAACvC,YAA2BA,QAAOI,YAAY,KAAKA,WAAW,CAACO,gBAAgB6B,SAASxC,QAAOI,OAAO,GAAvG;AACtB,UAAMqC,aAAa,wBAACzC,YAA2BA,QAAOU,SAASL,UAAUiC,kBAAAA,GAAtD;AAQnB,UAAMI,gBAAgB,MAAMf,QAAQC,KAAK,MAAM,KAAKtB,QAAQC,QAAW;MAAEC,WAAW;MAAQH;IAAS,CAAA,GAAII,OAAO8B,aAAAA,EAAepC,IAAIsC,UAAAA,CAAAA;AACnI,QAAIC,cAAcC,SAAS,GAAG;AAC5BjC,eAASkC,UAAUlC,SAASkC,WAAW,CAAC;AACxClC,eAASkC,QAAQC,SAASH;IAC5B;AAEA,WAAOhC;EACT;EAEA,MAAyBoC,aACvBC,OACAC,UACAC,aACmC;AACnC,UAAMC,UAAUC,qDAAyBC,WAAsBL,OAAOC,QAAAA;AACtE,UAAMK,eAAe,MAAMH,QAAQI,SAAQ;AAC3CC,gCAAS,KAAKC,UAAUT,OAAOC,UAAUC,WAAAA,CAAAA;AACzC,UAAMQ,iBAA4B,CAAA;AAClC,YAAQJ,aAAatB,QAAM;MACzB,KAAKpC,yCAAuB;AAC1B,cAAMS,UAAU,MAAM,KAAKsD,OAAOL,aAAaM,eAAeN,aAAaO,QAAQ;AACnF,YAAIxD,SAAS;AACX,gBAAMyD,UAAU,MAAM,IAAI/B,sCAA+B;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE7B;UAAQ,CAAA,EAAGgC,MAAK;AAC7GqB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAKjE,yCAAuB;AAC1B,cAAMQ,UAAU,MAAM,KAAK2D,OAAOV,aAAaM,aAAa;AAC5D,YAAIvD,SAAS;AACX,gBAAMyD,UAAU,MAAM,IAAI/B,sCAA+B;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE7B;UAAQ,CAAA,EAAGgC,MAAK;AAC7GqB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAKhE,2CAAyB;AAC5B,cAAMmE,YAAY,MAAM,KAAK/D,SAAQ;AACrC,mBAAWG,WAAW4D,WAAW;AAC/B,gBAAMH,UAAU,MAAM,IAAI/B,sCAA+B;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE7B;UAAQ,CAAA,EAAGgC,MAAK;AAC7GqB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAK/D,6CAA2B;AAC9B,cAAMkE,YAAY,MAAM,KAAKhD,WAAU;AACvC,mBAAWZ,WAAW4D,WAAW;AAC/B,gBAAMH,UAAU,MAAM,IAAI/B,sCAA+B;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE7B;UAAQ,CAAA,EAAGgC,MAAK;AAC7GqB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA;AACE,eAAO,MAAM,MAAMf,aAAaC,OAAOC,QAAAA;IAC3C;AACA,WAAOS;EACT;EAIA,MAAcnC,WACZJ,uBACAC,SACwD;AACxD,YAAQ,OAAOD,uBAAAA;MACb,KAAK,UAAU;AACb,eAAQ,MAAM,KAAKG,eAAeH,uBAAuBC,OAAAA,KAAc,MAAM,MAAMb,QAAQY,uBAAuBC,OAAAA;MACpH;MACA,SAAS;AACP,eAAO;aAAK,MAAM,KAAKE,eAAeH,uBAAuBC,OAAAA;aAAe,MAAM,MAAMb,QAAQY,uBAAuBC,OAAAA;UAAWV,OAChIwD,oCAAAA;MAEJ;IACF;EACF;EAIA,MAAc5C,eACZH,uBACAC,SACwD;AACxD,UAAMX,aAAYW,mCAASX,cAAa;AACxC,UAAM0D,OAAO1D,cAAc,UAAUA,cAAc;AACnD,YAAQ,OAAOU,uBAAAA;MACb,KAAK,UAAU;AACb,eAAOgD,OAAO,MAAM,KAAK5E,gBAAgBgB,QAAQY,qBAAAA,IAAyBX;MAC5E;MACA,SAAS;AACP,eAAO2D,OAAO,MAAM,KAAK5E,gBAAgBgB,QAAQY,qBAAAA,IAAyBX;MAC5E;IACF;EACF;AAIF;AApNUlB;AAGR,cAJoBD,eAIK+E,iBAA0B;EAACC;;AAJ/C,IAAehF,eAAf;","names":["AbstractNode","AbstractModuleInstance","privateResolver","CompositeModuleResolver","isNode","isModuleResolver","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedModules","map","address","maxDepth","resolve","undefined","direction","filter","manifest","ignoreAddresses","manifestHandler","register","_module","Error","registered","registeredModules","nameOrAddressOrFilter","options","visibility","resolvePrivate","resolveAll","unregister","discoverHandler","childMods","childModAddresses","Promise","all","mod","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","duplicateModules","down","configSchemas","NodeConfigSchema"]}
|
package/dist/node/index.js
CHANGED
|
@@ -1,57 +1,33 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
3
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
4
|
var __publicField = (obj, key, value) => {
|
|
22
5
|
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
23
6
|
return value;
|
|
24
7
|
};
|
|
25
8
|
|
|
26
|
-
// src/index.ts
|
|
27
|
-
var src_exports = {};
|
|
28
|
-
__export(src_exports, {
|
|
29
|
-
AbstractNode: () => AbstractNode
|
|
30
|
-
});
|
|
31
|
-
module.exports = __toCommonJS(src_exports);
|
|
32
|
-
|
|
33
9
|
// src/AbstractNode.ts
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
var _AbstractNode = class _AbstractNode extends
|
|
44
|
-
privateResolver = new
|
|
10
|
+
import { assertEx } from "@xylabs/assert";
|
|
11
|
+
import { AddressSchema } from "@xyo-network/address-payload-plugin";
|
|
12
|
+
import { QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-builder";
|
|
13
|
+
import { NodeManifestPayloadSchema } from "@xyo-network/manifest-model";
|
|
14
|
+
import { AbstractModuleInstance } from "@xyo-network/module-abstract";
|
|
15
|
+
import { duplicateModules } from "@xyo-network/module-model";
|
|
16
|
+
import { CompositeModuleResolver } from "@xyo-network/module-resolver";
|
|
17
|
+
import { NodeAttachedQuerySchema, NodeAttachQuerySchema, NodeConfigSchema, NodeDetachQuerySchema, NodeRegisteredQuerySchema } from "@xyo-network/node-model";
|
|
18
|
+
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
19
|
+
var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
20
|
+
privateResolver = new CompositeModuleResolver();
|
|
45
21
|
isNode = true;
|
|
46
22
|
get isModuleResolver() {
|
|
47
23
|
return true;
|
|
48
24
|
}
|
|
49
25
|
get queries() {
|
|
50
26
|
return [
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
27
|
+
NodeAttachQuerySchema,
|
|
28
|
+
NodeDetachQuerySchema,
|
|
29
|
+
NodeAttachedQuerySchema,
|
|
30
|
+
NodeRegisteredQuerySchema,
|
|
55
31
|
...super.queries
|
|
56
32
|
];
|
|
57
33
|
}
|
|
@@ -63,17 +39,17 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
|
|
|
63
39
|
"network.xyo.query.node.registered": "1/4"
|
|
64
40
|
};
|
|
65
41
|
}
|
|
66
|
-
static isNode(
|
|
67
|
-
return
|
|
42
|
+
static isNode(module) {
|
|
43
|
+
return module.isNode;
|
|
68
44
|
}
|
|
69
45
|
async attached() {
|
|
70
|
-
return (await this.attachedModules()).map((
|
|
46
|
+
return (await this.attachedModules()).map((module) => module.address);
|
|
71
47
|
}
|
|
72
48
|
async attachedModules(maxDepth = 2) {
|
|
73
49
|
return (await (this.resolve(void 0, {
|
|
74
50
|
direction: "down",
|
|
75
51
|
maxDepth
|
|
76
|
-
}) ?? [])).filter((
|
|
52
|
+
}) ?? [])).filter((module) => module.address !== this.address);
|
|
77
53
|
}
|
|
78
54
|
async manifest(maxDepth, ignoreAddresses) {
|
|
79
55
|
return await this.manifestHandler(maxDepth, ignoreAddresses);
|
|
@@ -119,8 +95,8 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
|
|
|
119
95
|
}
|
|
120
96
|
async discoverHandler(maxDepth) {
|
|
121
97
|
const childMods = await this.attachedModules(maxDepth);
|
|
122
|
-
const childModAddresses = await Promise.all(childMods.map((mod) => new
|
|
123
|
-
schema:
|
|
98
|
+
const childModAddresses = await Promise.all(childMods.map((mod) => new PayloadBuilder({
|
|
99
|
+
schema: AddressSchema
|
|
124
100
|
}).fields({
|
|
125
101
|
address: mod.address,
|
|
126
102
|
name: mod.config.name
|
|
@@ -133,14 +109,14 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
|
|
|
133
109
|
async manifestHandler(maxDepth, ignoreAddresses = []) {
|
|
134
110
|
const manifest = {
|
|
135
111
|
...await super.manifestHandler(),
|
|
136
|
-
schema:
|
|
112
|
+
schema: NodeManifestPayloadSchema
|
|
137
113
|
};
|
|
138
114
|
const newIgnoreAddresses = [
|
|
139
115
|
...ignoreAddresses,
|
|
140
116
|
this.address
|
|
141
117
|
];
|
|
142
|
-
const notThisModule = /* @__PURE__ */ __name((
|
|
143
|
-
const toManifest = /* @__PURE__ */ __name((
|
|
118
|
+
const notThisModule = /* @__PURE__ */ __name((module) => module.address !== this.address && !ignoreAddresses.includes(module.address), "notThisModule");
|
|
119
|
+
const toManifest = /* @__PURE__ */ __name((module) => module.manifest(maxDepth, newIgnoreAddresses), "toManifest");
|
|
144
120
|
const publicModules = await Promise.all((await this.resolve(void 0, {
|
|
145
121
|
direction: "down",
|
|
146
122
|
maxDepth
|
|
@@ -152,16 +128,16 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
|
|
|
152
128
|
return manifest;
|
|
153
129
|
}
|
|
154
130
|
async queryHandler(query, payloads, queryConfig) {
|
|
155
|
-
const wrapper =
|
|
131
|
+
const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
|
|
156
132
|
const queryPayload = await wrapper.getQuery();
|
|
157
|
-
|
|
133
|
+
assertEx(this.queryable(query, payloads, queryConfig));
|
|
158
134
|
const resultPayloads = [];
|
|
159
135
|
switch (queryPayload.schema) {
|
|
160
|
-
case
|
|
136
|
+
case NodeAttachQuerySchema: {
|
|
161
137
|
const address = await this.attach(queryPayload.nameOrAddress, queryPayload.external);
|
|
162
138
|
if (address) {
|
|
163
|
-
const payload = await new
|
|
164
|
-
schema:
|
|
139
|
+
const payload = await new PayloadBuilder({
|
|
140
|
+
schema: AddressSchema
|
|
165
141
|
}).fields({
|
|
166
142
|
address
|
|
167
143
|
}).build();
|
|
@@ -169,11 +145,11 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
|
|
|
169
145
|
}
|
|
170
146
|
break;
|
|
171
147
|
}
|
|
172
|
-
case
|
|
148
|
+
case NodeDetachQuerySchema: {
|
|
173
149
|
const address = await this.detach(queryPayload.nameOrAddress);
|
|
174
150
|
if (address) {
|
|
175
|
-
const payload = await new
|
|
176
|
-
schema:
|
|
151
|
+
const payload = await new PayloadBuilder({
|
|
152
|
+
schema: AddressSchema
|
|
177
153
|
}).fields({
|
|
178
154
|
address
|
|
179
155
|
}).build();
|
|
@@ -181,11 +157,11 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
|
|
|
181
157
|
}
|
|
182
158
|
break;
|
|
183
159
|
}
|
|
184
|
-
case
|
|
160
|
+
case NodeAttachedQuerySchema: {
|
|
185
161
|
const addresses = await this.attached();
|
|
186
162
|
for (const address of addresses) {
|
|
187
|
-
const payload = await new
|
|
188
|
-
schema:
|
|
163
|
+
const payload = await new PayloadBuilder({
|
|
164
|
+
schema: AddressSchema
|
|
189
165
|
}).fields({
|
|
190
166
|
address
|
|
191
167
|
}).build();
|
|
@@ -193,11 +169,11 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
|
|
|
193
169
|
}
|
|
194
170
|
break;
|
|
195
171
|
}
|
|
196
|
-
case
|
|
172
|
+
case NodeRegisteredQuerySchema: {
|
|
197
173
|
const addresses = await this.registered();
|
|
198
174
|
for (const address of addresses) {
|
|
199
|
-
const payload = await new
|
|
200
|
-
schema:
|
|
175
|
+
const payload = await new PayloadBuilder({
|
|
176
|
+
schema: AddressSchema
|
|
201
177
|
}).fields({
|
|
202
178
|
address
|
|
203
179
|
}).build();
|
|
@@ -219,7 +195,7 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
|
|
|
219
195
|
return [
|
|
220
196
|
...await this.resolvePrivate(nameOrAddressOrFilter, options),
|
|
221
197
|
...await super.resolve(nameOrAddressOrFilter, options)
|
|
222
|
-
].filter(
|
|
198
|
+
].filter(duplicateModules);
|
|
223
199
|
}
|
|
224
200
|
}
|
|
225
201
|
}
|
|
@@ -238,11 +214,10 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
|
|
|
238
214
|
};
|
|
239
215
|
__name(_AbstractNode, "AbstractNode");
|
|
240
216
|
__publicField(_AbstractNode, "configSchemas", [
|
|
241
|
-
|
|
217
|
+
NodeConfigSchema
|
|
242
218
|
]);
|
|
243
219
|
var AbstractNode = _AbstractNode;
|
|
244
|
-
|
|
245
|
-
0 && (module.exports = {
|
|
220
|
+
export {
|
|
246
221
|
AbstractNode
|
|
247
|
-
}
|
|
222
|
+
};
|
|
248
223
|
//# sourceMappingURL=index.js.map
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/AbstractNode.ts"],"sourcesContent":["export * from './AbstractNode'\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport {\n duplicateModules,\n Module,\n ModuleConfig,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQuery,\n NodeQueryBase,\n NodeRegisteredQuerySchema,\n} from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } 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 NodeModule<TParams, TEventData>, Module<TParams, TEventData>\n{\n static override readonly configSchemas: string[] = [NodeConfigSchema]\n\n protected readonly privateResolver = new CompositeModuleResolver()\n\n private readonly isNode = true\n\n get isModuleResolver(): boolean {\n return true\n }\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueryBase['schema'], string> {\n return {\n 'network.xyo.query.node.attach': '1/1',\n 'network.xyo.query.node.attached': '1/2',\n 'network.xyo.query.node.detach': '1/3',\n 'network.xyo.query.node.registered': '1/4',\n }\n }\n\n static isNode(module: unknown) {\n return (module as AbstractNode).isNode\n }\n\n async attached(): Promise<string[]> {\n return (await this.attachedModules()).map((module) => module.address)\n }\n\n async attachedModules(maxDepth = 2): Promise<ModuleInstance[]> {\n return (await (this.resolve(undefined, { direction: 'down', maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n override async manifest(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n register(_module: ModuleInstance): Promisable<void> {\n throw new Error('Method not implemented.')\n }\n\n registered(): Promisable<string[]> {\n throw new Error('Method not implemented.')\n }\n\n registeredModules(): Promisable<Module[]> {\n throw new Error('Method not implemented.')\n }\n\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n override async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (typeof nameOrAddressOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(nameOrAddressOrFilter)\n }\n case 'all': {\n return await this.resolveAll(nameOrAddressOrFilter)\n }\n default: {\n return await super.resolve(nameOrAddressOrFilter, options)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(nameOrAddressOrFilter)\n }\n case 'private': {\n return await this.resolvePrivate(nameOrAddressOrFilter)\n }\n default: {\n return await super.resolve(nameOrAddressOrFilter, options)\n }\n }\n }\n }\n\n unregister(_module: ModuleInstance): Promisable<this> {\n throw new Error('Method not implemented.')\n }\n\n protected override async discoverHandler(maxDepth?: number): Promise<Payload[]> {\n const childMods = await this.attachedModules(maxDepth)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.discoverHandler(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth?: number, ignoreAddresses: string[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler()), schema: NodeManifestPayloadSchema }\n const newIgnoreAddresses = [...ignoreAddresses, this.address]\n\n const notThisModule = (module: ModuleInstance) => module.address !== this.address && !ignoreAddresses.includes(module.address)\n const toManifest = (module: ModuleInstance) => module.manifest(maxDepth, newIgnoreAddresses)\n\n /*const privateModules = await Promise.all((await this.privateResolver.resolve()).filter(notThisModule).map(toManifest))\n if (privateModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.private = privateModules\n }*/\n\n const publicModules = await Promise.all((await this.resolve(undefined, { direction: 'down', maxDepth })).filter(notThisModule).map(toManifest))\n if (publicModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.public = publicModules\n }\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 = QueryBoundWitnessWrapper.parseQuery<NodeQuery>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case NodeAttachQuerySchema: {\n const address = await this.attach(queryPayload.nameOrAddress, 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 NodeDetachQuerySchema: {\n const address = await this.detach(queryPayload.nameOrAddress)\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.attached()\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.registered()\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 return resultPayloads\n }\n\n private async resolveAll(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n switch (typeof nameOrAddressOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(nameOrAddressOrFilter, options)) ?? (await super.resolve(nameOrAddressOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(nameOrAddressOrFilter, options)), ...(await super.resolve(nameOrAddressOrFilter, options))].filter(\n duplicateModules,\n )\n }\n }\n }\n\n private async resolvePrivate(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n switch (typeof nameOrAddressOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : undefined\n }\n }\n }\n\n abstract attach(nameOrAddress: string, external?: boolean): Promisable<string | undefined>\n abstract detach(nameOrAddress: string): Promisable<string | undefined>\n}\n"],"mappings":"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","names":["AbstractNode","AbstractModuleInstance","privateResolver","CompositeModuleResolver","isNode","isModuleResolver","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedModules","map","address","maxDepth","resolve","undefined","direction","filter","manifest","ignoreAddresses","manifestHandler","register","_module","Error","registered","registeredModules","nameOrAddressOrFilter","options","visibility","resolvePrivate","resolveAll","unregister","discoverHandler","childMods","childModAddresses","Promise","all","mod","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","duplicateModules","down","configSchemas","NodeConfigSchema"]}
|
|
1
|
+
{"version":3,"sources":["../../src/AbstractNode.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport {\n duplicateModules,\n Module,\n ModuleConfig,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQuery,\n NodeQueryBase,\n NodeRegisteredQuerySchema,\n} from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } 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 NodeModule<TParams, TEventData>, Module<TParams, TEventData>\n{\n static override readonly configSchemas: string[] = [NodeConfigSchema]\n\n protected readonly privateResolver = new CompositeModuleResolver()\n\n private readonly isNode = true\n\n get isModuleResolver(): boolean {\n return true\n }\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueryBase['schema'], string> {\n return {\n 'network.xyo.query.node.attach': '1/1',\n 'network.xyo.query.node.attached': '1/2',\n 'network.xyo.query.node.detach': '1/3',\n 'network.xyo.query.node.registered': '1/4',\n }\n }\n\n static isNode(module: unknown) {\n return (module as AbstractNode).isNode\n }\n\n async attached(): Promise<string[]> {\n return (await this.attachedModules()).map((module) => module.address)\n }\n\n async attachedModules(maxDepth = 2): Promise<ModuleInstance[]> {\n return (await (this.resolve(undefined, { direction: 'down', maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n override async manifest(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n register(_module: ModuleInstance): Promisable<void> {\n throw new Error('Method not implemented.')\n }\n\n registered(): Promisable<string[]> {\n throw new Error('Method not implemented.')\n }\n\n registeredModules(): Promisable<Module[]> {\n throw new Error('Method not implemented.')\n }\n\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n override async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (typeof nameOrAddressOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(nameOrAddressOrFilter)\n }\n case 'all': {\n return await this.resolveAll(nameOrAddressOrFilter)\n }\n default: {\n return await super.resolve(nameOrAddressOrFilter, options)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(nameOrAddressOrFilter)\n }\n case 'private': {\n return await this.resolvePrivate(nameOrAddressOrFilter)\n }\n default: {\n return await super.resolve(nameOrAddressOrFilter, options)\n }\n }\n }\n }\n\n unregister(_module: ModuleInstance): Promisable<this> {\n throw new Error('Method not implemented.')\n }\n\n protected override async discoverHandler(maxDepth?: number): Promise<Payload[]> {\n const childMods = await this.attachedModules(maxDepth)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.discoverHandler(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth?: number, ignoreAddresses: string[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler()), schema: NodeManifestPayloadSchema }\n const newIgnoreAddresses = [...ignoreAddresses, this.address]\n\n const notThisModule = (module: ModuleInstance) => module.address !== this.address && !ignoreAddresses.includes(module.address)\n const toManifest = (module: ModuleInstance) => module.manifest(maxDepth, newIgnoreAddresses)\n\n /*const privateModules = await Promise.all((await this.privateResolver.resolve()).filter(notThisModule).map(toManifest))\n if (privateModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.private = privateModules\n }*/\n\n const publicModules = await Promise.all((await this.resolve(undefined, { direction: 'down', maxDepth })).filter(notThisModule).map(toManifest))\n if (publicModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.public = publicModules\n }\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 = QueryBoundWitnessWrapper.parseQuery<NodeQuery>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case NodeAttachQuerySchema: {\n const address = await this.attach(queryPayload.nameOrAddress, 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 NodeDetachQuerySchema: {\n const address = await this.detach(queryPayload.nameOrAddress)\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.attached()\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.registered()\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 return resultPayloads\n }\n\n private async resolveAll(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n switch (typeof nameOrAddressOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(nameOrAddressOrFilter, options)) ?? (await super.resolve(nameOrAddressOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(nameOrAddressOrFilter, options)), ...(await super.resolve(nameOrAddressOrFilter, options))].filter(\n duplicateModules,\n )\n }\n }\n }\n\n private async resolvePrivate(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n switch (typeof nameOrAddressOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : undefined\n }\n }\n }\n\n abstract attach(nameOrAddress: string, external?: boolean): Promisable<string | undefined>\n abstract detach(nameOrAddress: string): Promisable<string | undefined>\n}\n"],"mappings":"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","names":["assertEx","AddressSchema","QueryBoundWitnessWrapper","NodeManifestPayloadSchema","AbstractModuleInstance","duplicateModules","CompositeModuleResolver","NodeAttachedQuerySchema","NodeAttachQuerySchema","NodeConfigSchema","NodeDetachQuerySchema","NodeRegisteredQuerySchema","PayloadBuilder","AbstractNode","AbstractModuleInstance","privateResolver","CompositeModuleResolver","isNode","isModuleResolver","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedModules","map","address","maxDepth","resolve","undefined","direction","filter","manifest","ignoreAddresses","manifestHandler","register","_module","Error","registered","registeredModules","nameOrAddressOrFilter","options","visibility","resolvePrivate","resolveAll","unregister","discoverHandler","childMods","childModAddresses","Promise","all","mod","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","duplicateModules","down","configSchemas","NodeConfigSchema"]}
|
package/package.json
CHANGED
|
@@ -12,24 +12,23 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@xylabs/assert": "^2.13.20",
|
|
14
14
|
"@xylabs/promise": "^2.13.20",
|
|
15
|
-
"@xyo-network/address-payload-plugin": "^2.
|
|
16
|
-
"@xyo-network/boundwitness-builder": "~2.84.
|
|
17
|
-
"@xyo-network/boundwitness-model": "~2.84.
|
|
18
|
-
"@xyo-network/manifest-model": "~2.84.
|
|
19
|
-
"@xyo-network/module-abstract": "~2.84.
|
|
20
|
-
"@xyo-network/module-model": "~2.84.
|
|
21
|
-
"@xyo-network/module-resolver": "~2.84.
|
|
22
|
-
"@xyo-network/node-model": "~2.84.
|
|
23
|
-
"@xyo-network/payload-builder": "~2.84.
|
|
24
|
-
"@xyo-network/payload-model": "~2.84.
|
|
15
|
+
"@xyo-network/address-payload-plugin": "^2.84.0",
|
|
16
|
+
"@xyo-network/boundwitness-builder": "~2.84.3",
|
|
17
|
+
"@xyo-network/boundwitness-model": "~2.84.3",
|
|
18
|
+
"@xyo-network/manifest-model": "~2.84.3",
|
|
19
|
+
"@xyo-network/module-abstract": "~2.84.3",
|
|
20
|
+
"@xyo-network/module-model": "~2.84.3",
|
|
21
|
+
"@xyo-network/module-resolver": "~2.84.3",
|
|
22
|
+
"@xyo-network/node-model": "~2.84.3",
|
|
23
|
+
"@xyo-network/payload-builder": "~2.84.3",
|
|
24
|
+
"@xyo-network/payload-model": "~2.84.3"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@xylabs/ts-scripts-yarn3": "^3.2.
|
|
28
|
-
"@xylabs/tsconfig": "^3.2.
|
|
27
|
+
"@xylabs/ts-scripts-yarn3": "^3.2.19",
|
|
28
|
+
"@xylabs/tsconfig": "^3.2.19",
|
|
29
29
|
"typescript": "^5.3.3"
|
|
30
30
|
},
|
|
31
31
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
32
|
-
"docs": "dist/docs.json",
|
|
33
32
|
"types": "dist/node/index.d.ts",
|
|
34
33
|
"exports": {
|
|
35
34
|
".": {
|
|
@@ -45,19 +44,19 @@
|
|
|
45
44
|
},
|
|
46
45
|
"node": {
|
|
47
46
|
"require": {
|
|
48
|
-
"types": "./dist/node/index.d.
|
|
49
|
-
"default": "./dist/node/index.
|
|
47
|
+
"types": "./dist/node/index.d.cts",
|
|
48
|
+
"default": "./dist/node/index.cjs"
|
|
50
49
|
},
|
|
51
50
|
"import": {
|
|
52
51
|
"types": "./dist/node/index.d.mts",
|
|
53
|
-
"default": "./dist/node/index.
|
|
52
|
+
"default": "./dist/node/index.js"
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
55
|
},
|
|
57
56
|
"./package.json": "./package.json"
|
|
58
57
|
},
|
|
59
|
-
"main": "dist/node/index.
|
|
60
|
-
"module": "dist/node/index.
|
|
58
|
+
"main": "dist/node/index.cjs",
|
|
59
|
+
"module": "dist/node/index.js",
|
|
61
60
|
"homepage": "https://xyo.network",
|
|
62
61
|
"license": "LGPL-3.0-only",
|
|
63
62
|
"publishConfig": {
|
|
@@ -68,5 +67,6 @@
|
|
|
68
67
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
69
68
|
},
|
|
70
69
|
"sideEffects": false,
|
|
71
|
-
"version": "2.84.
|
|
70
|
+
"version": "2.84.3",
|
|
71
|
+
"type": "module"
|
|
72
72
|
}
|
package/dist/node/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/AbstractNode.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport {\n duplicateModules,\n Module,\n ModuleConfig,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQuery,\n NodeQueryBase,\n NodeRegisteredQuerySchema,\n} from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } 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 NodeModule<TParams, TEventData>, Module<TParams, TEventData>\n{\n static override readonly configSchemas: string[] = [NodeConfigSchema]\n\n protected readonly privateResolver = new CompositeModuleResolver()\n\n private readonly isNode = true\n\n get isModuleResolver(): boolean {\n return true\n }\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueryBase['schema'], string> {\n return {\n 'network.xyo.query.node.attach': '1/1',\n 'network.xyo.query.node.attached': '1/2',\n 'network.xyo.query.node.detach': '1/3',\n 'network.xyo.query.node.registered': '1/4',\n }\n }\n\n static isNode(module: unknown) {\n return (module as AbstractNode).isNode\n }\n\n async attached(): Promise<string[]> {\n return (await this.attachedModules()).map((module) => module.address)\n }\n\n async attachedModules(maxDepth = 2): Promise<ModuleInstance[]> {\n return (await (this.resolve(undefined, { direction: 'down', maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n override async manifest(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n register(_module: ModuleInstance): Promisable<void> {\n throw new Error('Method not implemented.')\n }\n\n registered(): Promisable<string[]> {\n throw new Error('Method not implemented.')\n }\n\n registeredModules(): Promisable<Module[]> {\n throw new Error('Method not implemented.')\n }\n\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n override async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (typeof nameOrAddressOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(nameOrAddressOrFilter)\n }\n case 'all': {\n return await this.resolveAll(nameOrAddressOrFilter)\n }\n default: {\n return await super.resolve(nameOrAddressOrFilter, options)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(nameOrAddressOrFilter)\n }\n case 'private': {\n return await this.resolvePrivate(nameOrAddressOrFilter)\n }\n default: {\n return await super.resolve(nameOrAddressOrFilter, options)\n }\n }\n }\n }\n\n unregister(_module: ModuleInstance): Promisable<this> {\n throw new Error('Method not implemented.')\n }\n\n protected override async discoverHandler(maxDepth?: number): Promise<Payload[]> {\n const childMods = await this.attachedModules(maxDepth)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.discoverHandler(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth?: number, ignoreAddresses: string[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler()), schema: NodeManifestPayloadSchema }\n const newIgnoreAddresses = [...ignoreAddresses, this.address]\n\n const notThisModule = (module: ModuleInstance) => module.address !== this.address && !ignoreAddresses.includes(module.address)\n const toManifest = (module: ModuleInstance) => module.manifest(maxDepth, newIgnoreAddresses)\n\n /*const privateModules = await Promise.all((await this.privateResolver.resolve()).filter(notThisModule).map(toManifest))\n if (privateModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.private = privateModules\n }*/\n\n const publicModules = await Promise.all((await this.resolve(undefined, { direction: 'down', maxDepth })).filter(notThisModule).map(toManifest))\n if (publicModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.public = publicModules\n }\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 = QueryBoundWitnessWrapper.parseQuery<NodeQuery>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case NodeAttachQuerySchema: {\n const address = await this.attach(queryPayload.nameOrAddress, 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 NodeDetachQuerySchema: {\n const address = await this.detach(queryPayload.nameOrAddress)\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.attached()\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.registered()\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 return resultPayloads\n }\n\n private async resolveAll(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n switch (typeof nameOrAddressOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(nameOrAddressOrFilter, options)) ?? (await super.resolve(nameOrAddressOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(nameOrAddressOrFilter, options)), ...(await super.resolve(nameOrAddressOrFilter, options))].filter(\n duplicateModules,\n )\n }\n }\n }\n\n private async resolvePrivate(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n switch (typeof nameOrAddressOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : undefined\n }\n }\n }\n\n abstract attach(nameOrAddress: string, external?: boolean): Promisable<string | undefined>\n abstract detach(nameOrAddress: string): Promisable<string | undefined>\n}\n"],"mappings":";;;;;;;;;AAAA,SAASA,gBAAgB;AAEzB,SAAyBC,qBAAqB;AAC9C,SAASC,gCAAgC;AAEzC,SAAqDC,iCAAiC;AACtF,SAASC,8BAA8B;AACvC,SACEC,wBAOK;AACP,SAASC,+BAA+B;AACxC,SACEC,yBACAC,uBACAC,kBACAC,uBAMAC,iCACK;AACP,SAASC,sBAAsB;AAGxB,IAAeC,gBAAf,MAAeA,sBACZC,uBAAAA;EAKWC,kBAAkB,IAAIC,wBAAAA;EAExBC,SAAS;EAE1B,IAAIC,mBAA4B;AAC9B,WAAO;EACT;EAEA,IAAaC,UAAoB;AAC/B,WAAO;MAACC;MAAuBC;MAAuBC;MAAyBC;SAA8B,MAAMJ;;EACrH;EAEA,IAAuBK,qBAA8D;AACnF,WAAO;MACL,iCAAiC;MACjC,mCAAmC;MACnC,iCAAiC;MACjC,qCAAqC;IACvC;EACF;EAEA,OAAOP,OAAOQ,QAAiB;AAC7B,WAAQA,OAAwBR;EAClC;EAEA,MAAMS,WAA8B;AAClC,YAAQ,MAAM,KAAKC,gBAAe,GAAIC,IAAI,CAACH,WAAWA,OAAOI,OAAO;EACtE;EAEA,MAAMF,gBAAgBG,WAAW,GAA8B;AAC7D,YAAQ,OAAO,KAAKC,QAAQC,QAAW;MAAEC,WAAW;MAAQH;IAAS,CAAA,KAAM,CAAA,IAAKI,OAAO,CAACT,WAAWA,OAAOI,YAAY,KAAKA,OAAO;EACpI;EAEA,MAAeM,SAASL,UAAmBM,iBAA4D;AACrG,WAAO,MAAM,KAAKC,gBAAgBP,UAAUM,eAAAA;EAC9C;EAEAE,SAASC,SAA2C;AAClD,UAAM,IAAIC,MAAM,yBAAA;EAClB;EAEAC,aAAmC;AACjC,UAAM,IAAID,MAAM,yBAAA;EAClB;EAEAE,oBAA0C;AACxC,UAAM,IAAIF,MAAM,yBAAA;EAClB;EAIA,MAAeT,QACbY,uBACAC,SACwD;AAGxD,QAAI,OAAOD,0BAA0B,UAAU;AAC7C,cAAQC,mCAASC,YAAAA;QACf,KAAK,WAAW;AACd,iBAAO,MAAM,KAAKC,eAAeH,qBAAAA;QACnC;QACA,KAAK,OAAO;AACV,iBAAO,MAAM,KAAKI,WAAWJ,qBAAAA;QAC/B;QACA,SAAS;AACP,iBAAO,MAAM,MAAMZ,QAAQY,uBAAuBC,OAAAA;QACpD;MACF;IACF,OAAO;AACL,cAAQA,mCAASC,YAAAA;QACf,KAAK,OAAO;AACV,iBAAO,MAAM,KAAKE,WAAWJ,qBAAAA;QAC/B;QACA,KAAK,WAAW;AACd,iBAAO,MAAM,KAAKG,eAAeH,qBAAAA;QACnC;QACA,SAAS;AACP,iBAAO,MAAM,MAAMZ,QAAQY,uBAAuBC,OAAAA;QACpD;MACF;IACF;EACF;EAEAI,WAAWT,SAA2C;AACpD,UAAM,IAAIC,MAAM,yBAAA;EAClB;EAEA,MAAyBS,gBAAgBnB,UAAuC;AAC9E,UAAMoB,YAAY,MAAM,KAAKvB,gBAAgBG,QAAAA;AAC7C,UAAMqB,oBAAoB,MAAMC,QAAQC,IACtCH,UAAUtB,IAAI,CAAC0B,QACb,IAAIC,eAA+B;MAAEC,QAAQC;IAAc,CAAA,EAAGC,OAAO;MAAE7B,SAASyB,IAAIzB;MAAS8B,MAAML,IAAIM,OAAOD;IAAK,CAAA,EAAGE,MAAK,CAAA,CAAA;AAI/H,WAAO;SAAK,MAAM,MAAMZ,gBAAgBnB,QAAAA;SAAeqB;;EACzD;EAEA,MAAyBd,gBAAgBP,UAAmBM,kBAA4B,CAAA,GAAoC;AAC1H,UAAMD,WAAgC;MAAE,GAAI,MAAM,MAAME,gBAAAA;MAAoBmB,QAAQM;IAA0B;AAC9G,UAAMC,qBAAqB;SAAI3B;MAAiB,KAAKP;;AAErD,UAAMmC,gBAAgB,wBAACvC,WAA2BA,OAAOI,YAAY,KAAKA,WAAW,CAACO,gBAAgB6B,SAASxC,OAAOI,OAAO,GAAvG;AACtB,UAAMqC,aAAa,wBAACzC,WAA2BA,OAAOU,SAASL,UAAUiC,kBAAAA,GAAtD;AAQnB,UAAMI,gBAAgB,MAAMf,QAAQC,KAAK,MAAM,KAAKtB,QAAQC,QAAW;MAAEC,WAAW;MAAQH;IAAS,CAAA,GAAII,OAAO8B,aAAAA,EAAepC,IAAIsC,UAAAA,CAAAA;AACnI,QAAIC,cAAcC,SAAS,GAAG;AAC5BjC,eAASkC,UAAUlC,SAASkC,WAAW,CAAC;AACxClC,eAASkC,QAAQC,SAASH;IAC5B;AAEA,WAAOhC;EACT;EAEA,MAAyBoC,aACvBC,OACAC,UACAC,aACmC;AACnC,UAAMC,UAAUC,yBAAyBC,WAAsBL,OAAOC,QAAAA;AACtE,UAAMK,eAAe,MAAMH,QAAQI,SAAQ;AAC3CC,aAAS,KAAKC,UAAUT,OAAOC,UAAUC,WAAAA,CAAAA;AACzC,UAAMQ,iBAA4B,CAAA;AAClC,YAAQJ,aAAatB,QAAM;MACzB,KAAKpC,uBAAuB;AAC1B,cAAMS,UAAU,MAAM,KAAKsD,OAAOL,aAAaM,eAAeN,aAAaO,QAAQ;AACnF,YAAIxD,SAAS;AACX,gBAAMyD,UAAU,MAAM,IAAI/B,eAA+B;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE7B;UAAQ,CAAA,EAAGgC,MAAK;AAC7GqB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAKjE,uBAAuB;AAC1B,cAAMQ,UAAU,MAAM,KAAK2D,OAAOV,aAAaM,aAAa;AAC5D,YAAIvD,SAAS;AACX,gBAAMyD,UAAU,MAAM,IAAI/B,eAA+B;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE7B;UAAQ,CAAA,EAAGgC,MAAK;AAC7GqB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAKhE,yBAAyB;AAC5B,cAAMmE,YAAY,MAAM,KAAK/D,SAAQ;AACrC,mBAAWG,WAAW4D,WAAW;AAC/B,gBAAMH,UAAU,MAAM,IAAI/B,eAA+B;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE7B;UAAQ,CAAA,EAAGgC,MAAK;AAC7GqB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAK/D,2BAA2B;AAC9B,cAAMkE,YAAY,MAAM,KAAKhD,WAAU;AACvC,mBAAWZ,WAAW4D,WAAW;AAC/B,gBAAMH,UAAU,MAAM,IAAI/B,eAA+B;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE7B;UAAQ,CAAA,EAAGgC,MAAK;AAC7GqB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA;AACE,eAAO,MAAM,MAAMf,aAAaC,OAAOC,QAAAA;IAC3C;AACA,WAAOS;EACT;EAIA,MAAcnC,WACZJ,uBACAC,SACwD;AACxD,YAAQ,OAAOD,uBAAAA;MACb,KAAK,UAAU;AACb,eAAQ,MAAM,KAAKG,eAAeH,uBAAuBC,OAAAA,KAAc,MAAM,MAAMb,QAAQY,uBAAuBC,OAAAA;MACpH;MACA,SAAS;AACP,eAAO;aAAK,MAAM,KAAKE,eAAeH,uBAAuBC,OAAAA;aAAe,MAAM,MAAMb,QAAQY,uBAAuBC,OAAAA;UAAWV,OAChIwD,gBAAAA;MAEJ;IACF;EACF;EAIA,MAAc5C,eACZH,uBACAC,SACwD;AACxD,UAAMX,aAAYW,mCAASX,cAAa;AACxC,UAAM0D,OAAO1D,cAAc,UAAUA,cAAc;AACnD,YAAQ,OAAOU,uBAAAA;MACb,KAAK,UAAU;AACb,eAAOgD,OAAO,MAAM,KAAK5E,gBAAgBgB,QAAQY,qBAAAA,IAAyBX;MAC5E;MACA,SAAS;AACP,eAAO2D,OAAO,MAAM,KAAK5E,gBAAgBgB,QAAQY,qBAAAA,IAAyBX;MAC5E;IACF;EACF;AAIF;AApNUlB;AAGR,cAJoBD,eAIK+E,iBAA0B;EAACC;;AAJ/C,IAAehF,eAAf;","names":["assertEx","AddressSchema","QueryBoundWitnessWrapper","NodeManifestPayloadSchema","AbstractModuleInstance","duplicateModules","CompositeModuleResolver","NodeAttachedQuerySchema","NodeAttachQuerySchema","NodeConfigSchema","NodeDetachQuerySchema","NodeRegisteredQuerySchema","PayloadBuilder","AbstractNode","AbstractModuleInstance","privateResolver","CompositeModuleResolver","isNode","isModuleResolver","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedModules","map","address","maxDepth","resolve","undefined","direction","filter","manifest","ignoreAddresses","manifestHandler","register","_module","Error","registered","registeredModules","nameOrAddressOrFilter","options","visibility","resolvePrivate","resolveAll","unregister","discoverHandler","childMods","childModAddresses","Promise","all","mod","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","duplicateModules","down","configSchemas","NodeConfigSchema"]}
|