@xyo-network/node 2.70.4 → 2.70.5
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/cjs/index.js +2 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/docs.json +31687 -38980
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +5 -15
- package/src/index.ts +2 -2
- package/dist/cjs/AbstractNode.js +0 -214
- package/dist/cjs/AbstractNode.js.map +0 -1
- package/dist/cjs/MemoryNode.js +0 -186
- package/dist/cjs/MemoryNode.js.map +0 -1
- package/dist/esm/AbstractNode.js +0 -169
- package/dist/esm/AbstractNode.js.map +0 -1
- package/dist/esm/MemoryNode.js +0 -157
- package/dist/esm/MemoryNode.js.map +0 -1
- package/dist/types/AbstractNode.d.ts +0 -33
- package/dist/types/AbstractNode.d.ts.map +0 -1
- package/dist/types/MemoryNode.d.ts +0 -21
- package/dist/types/MemoryNode.d.ts.map +0 -1
- package/src/AbstractNode.ts +0 -242
- package/src/MemoryNode.ts +0 -209
package/dist/esm/AbstractNode.js
DELETED
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { assertEx } from '@xylabs/assert';
|
|
2
|
-
import { AddressSchema } from '@xyo-network/address-payload-plugin';
|
|
3
|
-
import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder';
|
|
4
|
-
import { NodeManifestPayloadSchema } from '@xyo-network/manifest-model';
|
|
5
|
-
import { AbstractModuleInstance, CompositeModuleResolver } from '@xyo-network/module-abstract';
|
|
6
|
-
import { duplicateModules, } from '@xyo-network/module-model';
|
|
7
|
-
import { NodeAttachedQuerySchema, NodeAttachQuerySchema, NodeConfigSchema, NodeDetachQuerySchema, NodeRegisteredQuerySchema, } from '@xyo-network/node-model';
|
|
8
|
-
import { PayloadBuilder } from '@xyo-network/payload-builder';
|
|
9
|
-
export class AbstractNode extends AbstractModuleInstance {
|
|
10
|
-
static configSchemas = [NodeConfigSchema];
|
|
11
|
-
privateResolver = new CompositeModuleResolver();
|
|
12
|
-
isNode = true;
|
|
13
|
-
get isModuleResolver() {
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
16
|
-
get queries() {
|
|
17
|
-
return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries];
|
|
18
|
-
}
|
|
19
|
-
get _queryAccountPaths() {
|
|
20
|
-
return {
|
|
21
|
-
'network.xyo.query.node.attach': '1/1',
|
|
22
|
-
'network.xyo.query.node.attached': '1/2',
|
|
23
|
-
'network.xyo.query.node.detach': '1/3',
|
|
24
|
-
'network.xyo.query.node.registered': '1/4',
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
static isNode(module) {
|
|
28
|
-
return module.isNode;
|
|
29
|
-
}
|
|
30
|
-
async attached() {
|
|
31
|
-
return (await this.attachedModules()).map((module) => module.address);
|
|
32
|
-
}
|
|
33
|
-
async attachedModules() {
|
|
34
|
-
return (await (this.resolve(undefined, { direction: 'down', maxDepth: 2 }) ?? [])).filter((module) => module.address !== this.address);
|
|
35
|
-
}
|
|
36
|
-
async manifest(ignoreAddresses) {
|
|
37
|
-
return await this.manifestHandler(ignoreAddresses);
|
|
38
|
-
}
|
|
39
|
-
register(_module) {
|
|
40
|
-
throw new Error('Method not implemented.');
|
|
41
|
-
}
|
|
42
|
-
registered() {
|
|
43
|
-
throw new Error('Method not implemented.');
|
|
44
|
-
}
|
|
45
|
-
registeredModules() {
|
|
46
|
-
throw new Error('Method not implemented.');
|
|
47
|
-
}
|
|
48
|
-
async resolve(nameOrAddressOrFilter, options) {
|
|
49
|
-
//checking type of nameOrAddressOrFilter before calling other functions since TS seems
|
|
50
|
-
//to need help here narrowing before the call
|
|
51
|
-
if (typeof nameOrAddressOrFilter === 'string') {
|
|
52
|
-
switch (options?.visibility) {
|
|
53
|
-
case 'private': {
|
|
54
|
-
return await this.resolvePrivate(nameOrAddressOrFilter);
|
|
55
|
-
}
|
|
56
|
-
case 'all': {
|
|
57
|
-
return await this.resolveAll(nameOrAddressOrFilter);
|
|
58
|
-
}
|
|
59
|
-
default: {
|
|
60
|
-
return await super.resolve(nameOrAddressOrFilter, options);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
switch (options?.visibility) {
|
|
66
|
-
case 'all': {
|
|
67
|
-
return await this.resolveAll(nameOrAddressOrFilter);
|
|
68
|
-
}
|
|
69
|
-
case 'private': {
|
|
70
|
-
return await this.resolvePrivate(nameOrAddressOrFilter);
|
|
71
|
-
}
|
|
72
|
-
default: {
|
|
73
|
-
return await super.resolve(nameOrAddressOrFilter, options);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
unregister(_module) {
|
|
79
|
-
throw new Error('Method not implemented.');
|
|
80
|
-
}
|
|
81
|
-
async discoverHandler() {
|
|
82
|
-
const childMods = await this.attachedModules();
|
|
83
|
-
const childModAddresses = childMods.map((mod) => new PayloadBuilder({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build());
|
|
84
|
-
return [...(await super.discoverHandler()), ...childModAddresses];
|
|
85
|
-
}
|
|
86
|
-
async manifestHandler(ignoreAddresses = []) {
|
|
87
|
-
const manifest = { ...(await super.manifestHandler()), schema: NodeManifestPayloadSchema };
|
|
88
|
-
const newIgnoreAddresses = [...ignoreAddresses, this.address];
|
|
89
|
-
const notThisModule = (module) => module.address !== this.address && !ignoreAddresses.includes(module.address);
|
|
90
|
-
const toManifest = (module) => module.manifest(newIgnoreAddresses);
|
|
91
|
-
const privateModules = await Promise.all((await this.privateResolver.resolve()).filter(notThisModule).map(toManifest));
|
|
92
|
-
if (privateModules.length > 0) {
|
|
93
|
-
manifest.modules = manifest.modules ?? {};
|
|
94
|
-
manifest.modules.private = privateModules;
|
|
95
|
-
}
|
|
96
|
-
const publicModules = await Promise.all((await this.resolve()).filter(notThisModule).map(toManifest));
|
|
97
|
-
if (publicModules.length > 0) {
|
|
98
|
-
manifest.modules = manifest.modules ?? {};
|
|
99
|
-
manifest.modules.public = publicModules;
|
|
100
|
-
}
|
|
101
|
-
return manifest;
|
|
102
|
-
}
|
|
103
|
-
async queryHandler(query, payloads, queryConfig) {
|
|
104
|
-
const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
|
|
105
|
-
const queryPayload = await wrapper.getQuery();
|
|
106
|
-
assertEx(this.queryable(query, payloads, queryConfig));
|
|
107
|
-
const resultPayloads = [];
|
|
108
|
-
switch (queryPayload.schema) {
|
|
109
|
-
case NodeAttachQuerySchema: {
|
|
110
|
-
const address = await this.attach(queryPayload.nameOrAddress, queryPayload.external);
|
|
111
|
-
if (address) {
|
|
112
|
-
const payload = new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build();
|
|
113
|
-
resultPayloads.push(payload);
|
|
114
|
-
}
|
|
115
|
-
break;
|
|
116
|
-
}
|
|
117
|
-
case NodeDetachQuerySchema: {
|
|
118
|
-
const address = await this.detach(queryPayload.nameOrAddress);
|
|
119
|
-
if (address) {
|
|
120
|
-
const payload = new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build();
|
|
121
|
-
resultPayloads.push(payload);
|
|
122
|
-
}
|
|
123
|
-
break;
|
|
124
|
-
}
|
|
125
|
-
case NodeAttachedQuerySchema: {
|
|
126
|
-
const addresses = await this.attached();
|
|
127
|
-
for (const address of addresses) {
|
|
128
|
-
const payload = new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build();
|
|
129
|
-
resultPayloads.push(payload);
|
|
130
|
-
}
|
|
131
|
-
break;
|
|
132
|
-
}
|
|
133
|
-
case NodeRegisteredQuerySchema: {
|
|
134
|
-
const addresses = await this.registered();
|
|
135
|
-
for (const address of addresses) {
|
|
136
|
-
const payload = new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build();
|
|
137
|
-
resultPayloads.push(payload);
|
|
138
|
-
}
|
|
139
|
-
break;
|
|
140
|
-
}
|
|
141
|
-
default:
|
|
142
|
-
return await super.queryHandler(query, payloads);
|
|
143
|
-
}
|
|
144
|
-
return resultPayloads;
|
|
145
|
-
}
|
|
146
|
-
async resolveAll(nameOrAddressOrFilter, options) {
|
|
147
|
-
switch (typeof nameOrAddressOrFilter) {
|
|
148
|
-
case 'string': {
|
|
149
|
-
return (await this.resolvePrivate(nameOrAddressOrFilter, options)) ?? (await super.resolve(nameOrAddressOrFilter, options));
|
|
150
|
-
}
|
|
151
|
-
default: {
|
|
152
|
-
return [...(await this.resolvePrivate(nameOrAddressOrFilter, options)), ...(await super.resolve(nameOrAddressOrFilter, options))].filter(duplicateModules);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
async resolvePrivate(nameOrAddressOrFilter, options) {
|
|
157
|
-
const direction = options?.direction ?? 'all';
|
|
158
|
-
const down = direction === 'down' || direction === 'all';
|
|
159
|
-
switch (typeof nameOrAddressOrFilter) {
|
|
160
|
-
case 'string': {
|
|
161
|
-
return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : undefined;
|
|
162
|
-
}
|
|
163
|
-
default: {
|
|
164
|
-
return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : undefined;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
//# sourceMappingURL=AbstractNode.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.js","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAkB,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnF,OAAO,EAAqB,wBAAwB,EAAE,MAAM,mCAAmC,CAAA;AAC/F,OAAO,EAAuB,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5F,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAC9F,OAAO,EACL,gBAAgB,GAOjB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EAMrB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAI7D,MAAM,OAAgB,YACpB,SAAQ,sBAA2C;IAGnD,MAAM,CAAmB,aAAa,GAAa,CAAC,gBAAgB,CAAC,CAAA;IAElD,eAAe,GAAG,IAAI,uBAAuB,EAAE,CAAA;IAEjD,MAAM,GAAG,IAAI,CAAA;IAE9B,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAa,OAAO;QAClB,OAAO,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;IAC7H,CAAC;IAED,IAAuB,kBAAkB;QACvC,OAAO;YACL,+BAA+B,EAAE,KAAK;YACtC,iCAAiC,EAAE,KAAK;YACxC,+BAA+B,EAAE,KAAK;YACtC,mCAAmC,EAAE,KAAK;SAC3C,CAAA;IACH,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,MAAe;QAC3B,OAAQ,MAAuB,CAAC,MAAM,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAA;IACxI,CAAC;IAEQ,KAAK,CAAC,QAAQ,CAAC,eAA0B;QAChD,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAA;IACpD,CAAC;IAED,QAAQ,CAAC,OAAuB;QAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IAED,UAAU;QACR,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IAED,iBAAiB;QACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IAIQ,KAAK,CAAC,OAAO,CACpB,qBAA6C,EAC7C,OAA6B;QAE7B,sFAAsF;QACtF,6CAA6C;QAC7C,IAAI,OAAO,qBAAqB,KAAK,QAAQ,EAAE;YAC7C,QAAQ,OAAO,EAAE,UAAU,EAAE;gBAC3B,KAAK,SAAS,CAAC,CAAC;oBACd,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAA;iBACxD;gBACD,KAAK,KAAK,CAAC,CAAC;oBACV,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAA;iBACpD;gBACD,OAAO,CAAC,CAAC;oBACP,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAA;iBAC3D;aACF;SACF;aAAM;YACL,QAAQ,OAAO,EAAE,UAAU,EAAE;gBAC3B,KAAK,KAAK,CAAC,CAAC;oBACV,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAA;iBACpD;gBACD,KAAK,SAAS,CAAC,CAAC;oBACd,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAA;iBACxD;gBACD,OAAO,CAAC,CAAC;oBACP,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAA;iBAC3D;aACF;SACF;IACH,CAAC;IAED,UAAU,CAAC,OAAuB;QAChC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IAEkB,KAAK,CAAC,eAAe;QACtC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAC9C,MAAM,iBAAiB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC9C,IAAI,cAAc,CAAiB,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAC9H,CAAA;QAED,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,GAAG,iBAAiB,CAAC,CAAA;IACnE,CAAC;IAEkB,KAAK,CAAC,eAAe,CAAC,kBAA4B,EAAE;QACrE,MAAM,QAAQ,GAAwB,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAA;QAC/G,MAAM,kBAAkB,GAAG,CAAC,GAAG,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAE7D,MAAM,aAAa,GAAG,CAAC,MAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC9H,MAAM,UAAU,GAAG,CAAC,MAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QAElF,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAA;QACtH,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAA;YACzC,QAAQ,CAAC,OAAO,CAAC,OAAO,GAAG,cAAc,CAAA;SAC1C;QAED,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAA;QACrG,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAA;YACzC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,aAAa,CAAA;SACxC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEkB,KAAK,CAAC,YAAY,CACnC,KAAQ,EACR,QAAoB,EACpB,WAAqB;QAErB,MAAM,OAAO,GAAG,wBAAwB,CAAC,UAAU,CAAY,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC/E,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAA;QAC7C,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAA;QACtD,MAAM,cAAc,GAAc,EAAE,CAAA;QACpC,QAAQ,YAAY,CAAC,MAAM,EAAE;YAC3B,KAAK,qBAAqB,CAAC,CAAC;gBAC1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;gBACpF,IAAI,OAAO,EAAE;oBACX,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;oBACzF,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;iBAC7B;gBACD,MAAK;aACN;YACD,KAAK,qBAAqB,CAAC,CAAC;gBAC1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;gBAC7D,IAAI,OAAO,EAAE;oBACX,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;oBACzF,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;iBAC7B;gBACD,MAAK;aACN;YACD,KAAK,uBAAuB,CAAC,CAAC;gBAC5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;gBACvC,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;oBAC/B,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;oBACzF,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;iBAC7B;gBACD,MAAK;aACN;YACD,KAAK,yBAAyB,CAAC,CAAC;gBAC9B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;gBACzC,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;oBAC/B,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;oBACzF,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;iBAC7B;gBACD,MAAK;aACN;YACD;gBACE,OAAO,MAAM,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;SACnD;QACD,OAAO,cAAc,CAAA;IACvB,CAAC;IAIO,KAAK,CAAC,UAAU,CACtB,qBAA6C,EAC7C,OAA6B;QAE7B,QAAQ,OAAO,qBAAqB,EAAE;YACpC,KAAK,QAAQ,CAAC,CAAC;gBACb,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAA;aAC5H;YACD,OAAO,CAAC,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CACtI,gBAAgB,CACjB,CAAA;aACF;SACF;IACH,CAAC;IAIO,KAAK,CAAC,cAAc,CAC1B,qBAA6C,EAC7C,OAA6B;QAE7B,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,KAAK,CAAA;QAC7C,MAAM,IAAI,GAAG,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,CAAA;QACxD,QAAQ,OAAO,qBAAqB,EAAE;YACpC,KAAK,QAAQ,CAAC,CAAC;gBACb,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;aACpF;YACD,OAAO,CAAC,CAAC;gBACP,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;aACpF;SACF;IACH,CAAC"}
|
package/dist/esm/MemoryNode.js
DELETED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { assertEx } from '@xylabs/assert';
|
|
2
|
-
import { isNodeModule, NodeConfigSchema } from '@xyo-network/node-model';
|
|
3
|
-
import compact from 'lodash/compact';
|
|
4
|
-
import { AbstractNode } from './AbstractNode';
|
|
5
|
-
export class MemoryNode extends AbstractNode {
|
|
6
|
-
static configSchemas = [NodeConfigSchema];
|
|
7
|
-
registeredModuleMap = {};
|
|
8
|
-
async attach(nameOrAddress, external) {
|
|
9
|
-
await this.started('throw');
|
|
10
|
-
return (await this.attachUsingAddress(nameOrAddress, external)) ?? (await this.attachUsingName(nameOrAddress, external));
|
|
11
|
-
}
|
|
12
|
-
async detach(nameOrAddress) {
|
|
13
|
-
await this.started('throw');
|
|
14
|
-
return (await this.detachUsingAddress(nameOrAddress)) ?? (await this.detachUsingName(nameOrAddress));
|
|
15
|
-
}
|
|
16
|
-
async register(module) {
|
|
17
|
-
await this.started('throw');
|
|
18
|
-
assertEx(!this.registeredModuleMap[module.address], `Module already registered at that address[${module.address}]`);
|
|
19
|
-
this.registeredModuleMap[module.address] = module;
|
|
20
|
-
const args = { module, name: module.config.name };
|
|
21
|
-
await this.emit('moduleRegistered', args);
|
|
22
|
-
}
|
|
23
|
-
registered() {
|
|
24
|
-
return Object.keys(this.registeredModuleMap).map((key) => {
|
|
25
|
-
return key;
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
registeredModules() {
|
|
29
|
-
return Object.values(this.registeredModuleMap).map((value) => {
|
|
30
|
-
return value;
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
async unregister(module) {
|
|
34
|
-
await this.started('throw');
|
|
35
|
-
await this.detach(module.address);
|
|
36
|
-
delete this.registeredModuleMap[module.address];
|
|
37
|
-
const args = { module, name: module.config.name };
|
|
38
|
-
await this.emit('moduleUnregistered', args);
|
|
39
|
-
return this;
|
|
40
|
-
}
|
|
41
|
-
startHandler() {
|
|
42
|
-
return super.startHandler();
|
|
43
|
-
}
|
|
44
|
-
async attachUsingAddress(address, external) {
|
|
45
|
-
const existingModule = (await this.resolve({ address: [address] })).pop();
|
|
46
|
-
assertEx(!existingModule, `Module [${existingModule?.config.name ?? existingModule?.address}] already attached at address [${address}]`);
|
|
47
|
-
const module = this.registeredModuleMap[address];
|
|
48
|
-
if (!module) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
const notifiedAddresses = [];
|
|
52
|
-
const getModulesToNotifyAbout = async (node) => {
|
|
53
|
-
//send attach events for all existing attached modules
|
|
54
|
-
const childModules = await node.resolve(undefined, { direction: 'down' });
|
|
55
|
-
return compact(childModules.map((child) => {
|
|
56
|
-
//don't report self
|
|
57
|
-
if (node.address === child.address) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
//prevent loop
|
|
61
|
-
if (notifiedAddresses.includes(child.address)) {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
notifiedAddresses.push(child.address);
|
|
65
|
-
return child;
|
|
66
|
-
}));
|
|
67
|
-
};
|
|
68
|
-
const notificationList = await getModulesToNotifyAbout(module);
|
|
69
|
-
//give it private access
|
|
70
|
-
module.upResolver.addResolver?.(this.privateResolver);
|
|
71
|
-
//give it public access
|
|
72
|
-
module.upResolver.addResolver?.(this.downResolver);
|
|
73
|
-
//give it outside access
|
|
74
|
-
module.upResolver.addResolver?.(this.upResolver);
|
|
75
|
-
if (external) {
|
|
76
|
-
//expose it externally
|
|
77
|
-
this.downResolver.addResolver(module.downResolver);
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
this.privateResolver.addResolver(module.downResolver);
|
|
81
|
-
}
|
|
82
|
-
const args = { module, name: module.config.name };
|
|
83
|
-
await this.emit('moduleAttached', args);
|
|
84
|
-
if (isNodeModule(module)) {
|
|
85
|
-
if (external) {
|
|
86
|
-
const attachedListener = async (args) => await this.emit('moduleAttached', args);
|
|
87
|
-
const detachedListener = async (args) => await this.emit('moduleDetached', args);
|
|
88
|
-
module.on('moduleAttached', attachedListener);
|
|
89
|
-
module.on('moduleDetached', detachedListener);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
const notifyOfExistingModules = async (childModules) => {
|
|
93
|
-
await Promise.all(childModules.map(async (child) => {
|
|
94
|
-
const args = { module: child, name: child.config.name };
|
|
95
|
-
await this.emit('moduleAttached', args);
|
|
96
|
-
}));
|
|
97
|
-
};
|
|
98
|
-
await notifyOfExistingModules(notificationList);
|
|
99
|
-
return address;
|
|
100
|
-
}
|
|
101
|
-
async attachUsingName(name, external) {
|
|
102
|
-
const address = this.moduleAddressFromName(name);
|
|
103
|
-
if (address) {
|
|
104
|
-
return await this.attachUsingAddress(address, external);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
async detachUsingAddress(address) {
|
|
108
|
-
const module = this.registeredModuleMap[address];
|
|
109
|
-
if (!module) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
//remove inside access
|
|
113
|
-
module.upResolver?.removeResolver?.(this.privateResolver);
|
|
114
|
-
//remove outside access
|
|
115
|
-
module.upResolver?.removeResolver?.(this.upResolver);
|
|
116
|
-
//remove external exposure
|
|
117
|
-
this.downResolver.removeResolver(module.downResolver);
|
|
118
|
-
const args = { module, name: module.config.name };
|
|
119
|
-
await this.emit('moduleDetached', args);
|
|
120
|
-
//notify of all sub node children detach
|
|
121
|
-
const notifiedAddresses = [];
|
|
122
|
-
if (isNodeModule(module)) {
|
|
123
|
-
const notifyOfExistingModules = async (node) => {
|
|
124
|
-
//send attach events for all existing attached modules
|
|
125
|
-
const childModules = await node.resolve(undefined, { direction: 'down' });
|
|
126
|
-
await Promise.all(childModules.map(async (child) => {
|
|
127
|
-
//don't report self
|
|
128
|
-
if (node.address === child.address) {
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
//prevent loop
|
|
132
|
-
if (notifiedAddresses.includes(child.address)) {
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
notifiedAddresses.push(child.address);
|
|
136
|
-
await this.emit('moduleDetached', { module: child });
|
|
137
|
-
}));
|
|
138
|
-
};
|
|
139
|
-
await notifyOfExistingModules(module);
|
|
140
|
-
}
|
|
141
|
-
return address;
|
|
142
|
-
}
|
|
143
|
-
async detachUsingName(name) {
|
|
144
|
-
const address = this.moduleAddressFromName(name);
|
|
145
|
-
if (address) {
|
|
146
|
-
return await this.detachUsingAddress(address);
|
|
147
|
-
}
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
moduleAddressFromName(name) {
|
|
151
|
-
const address = Object.values(this.registeredModuleMap).find((value) => {
|
|
152
|
-
return value.config.name === name;
|
|
153
|
-
}, undefined)?.address;
|
|
154
|
-
return address;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
//# sourceMappingURL=MemoryNode.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryNode.js","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { QueryBoundWitness } from '@xyo-network/boundwitness-builder';
|
|
2
|
-
import { NodeManifestPayload } from '@xyo-network/manifest-model';
|
|
3
|
-
import { AbstractModuleInstance, CompositeModuleResolver } from '@xyo-network/module-abstract';
|
|
4
|
-
import { Module, ModuleConfig, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleQueryHandlerResult } from '@xyo-network/module-model';
|
|
5
|
-
import { NodeModule, NodeModuleEventData, NodeModuleParams, NodeQueryBase } from '@xyo-network/node-model';
|
|
6
|
-
import { Payload } from '@xyo-network/payload-model';
|
|
7
|
-
import { Promisable } from '@xyo-network/promise';
|
|
8
|
-
export declare abstract class AbstractNode<TParams extends NodeModuleParams = NodeModuleParams, TEventData extends NodeModuleEventData = NodeModuleEventData> extends AbstractModuleInstance<TParams, TEventData> implements NodeModule<TParams, TEventData>, Module<TParams, TEventData> {
|
|
9
|
-
static readonly configSchemas: string[];
|
|
10
|
-
protected readonly privateResolver: CompositeModuleResolver;
|
|
11
|
-
private readonly isNode;
|
|
12
|
-
get isModuleResolver(): boolean;
|
|
13
|
-
get queries(): string[];
|
|
14
|
-
protected get _queryAccountPaths(): Record<NodeQueryBase['schema'], string>;
|
|
15
|
-
static isNode(module: unknown): boolean;
|
|
16
|
-
attached(): Promise<string[]>;
|
|
17
|
-
attachedModules(): Promise<Module[]>;
|
|
18
|
-
manifest(ignoreAddresses?: string[]): Promise<NodeManifestPayload>;
|
|
19
|
-
register(_module: ModuleInstance): Promisable<void>;
|
|
20
|
-
registered(): Promisable<string[]>;
|
|
21
|
-
registeredModules(): Promisable<Module[]>;
|
|
22
|
-
resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
23
|
-
resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
|
|
24
|
-
unregister(_module: ModuleInstance): Promisable<this>;
|
|
25
|
-
protected discoverHandler(): Promise<Payload[]>;
|
|
26
|
-
protected manifestHandler(ignoreAddresses?: string[]): Promise<NodeManifestPayload>;
|
|
27
|
-
protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
|
|
28
|
-
private resolveAll;
|
|
29
|
-
private resolvePrivate;
|
|
30
|
-
abstract attach(nameOrAddress: string, external?: boolean): Promisable<string | undefined>;
|
|
31
|
-
abstract detach(nameOrAddress: string): Promisable<string | undefined>;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=AbstractNode.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA4B,MAAM,mCAAmC,CAAA;AAC/F,OAAO,EAAE,mBAAmB,EAA6B,MAAM,6BAA6B,CAAA;AAC5F,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAC9F,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAKL,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAEhB,aAAa,EAEd,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,8BAAsB,YAAY,CAAC,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EAAE,UAAU,SAAS,mBAAmB,GAAG,mBAAmB,CAClJ,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;IAEvE,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqB;IAErE,SAAS,CAAC,QAAQ,CAAC,eAAe,0BAAgC;IAElE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAE9B,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAOnF;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;IAIvB,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI7B,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI3B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIjF,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;IAInD,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;IAIlC,iBAAiB,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;IAI1B,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAkCjH,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;cAI5B,eAAe,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;cASrC,eAAe,CAAC,eAAe,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;cAsB7E,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,OAAO,SAAS,YAAY,GAAG,YAAY,EAChI,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,wBAAwB,CAAC;YA4CtB,UAAU;YAkBV,cAAc;IAkB5B,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;CACvE"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { AnyConfigSchema, ModuleInstance } from '@xyo-network/module';
|
|
2
|
-
import { NodeConfig, NodeInstance, NodeModuleEventData, NodeModuleParams } from '@xyo-network/node-model';
|
|
3
|
-
import { AbstractNode } from './AbstractNode';
|
|
4
|
-
export type MemoryNodeParams = NodeModuleParams<AnyConfigSchema<NodeConfig>>;
|
|
5
|
-
export declare class MemoryNode<TParams extends MemoryNodeParams = MemoryNodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData> extends AbstractNode<TParams, TEventData> implements NodeInstance {
|
|
6
|
-
static configSchemas: "network.xyo.node.config"[];
|
|
7
|
-
private registeredModuleMap;
|
|
8
|
-
attach(nameOrAddress: string, external?: boolean): Promise<string | undefined>;
|
|
9
|
-
detach(nameOrAddress: string): Promise<string | undefined>;
|
|
10
|
-
register(module: ModuleInstance): Promise<void>;
|
|
11
|
-
registered(): string[];
|
|
12
|
-
registeredModules(): ModuleInstance[];
|
|
13
|
-
unregister(module: ModuleInstance): Promise<this>;
|
|
14
|
-
protected startHandler(): Promise<boolean>;
|
|
15
|
-
private attachUsingAddress;
|
|
16
|
-
private attachUsingName;
|
|
17
|
-
private detachUsingAddress;
|
|
18
|
-
private detachUsingName;
|
|
19
|
-
private moduleAddressFromName;
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=MemoryNode.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAkD,cAAc,EAAkB,MAAM,qBAAqB,CAAA;AACrI,OAAO,EAAgB,UAAU,EAAoB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAGzI,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAA;AAE5E,qBAAa,UAAU,CAAC,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EAAE,UAAU,SAAS,mBAAmB,GAAG,mBAAmB,CACvI,SAAQ,YAAY,CAAC,OAAO,EAAE,UAAU,CACxC,YAAW,YAAY;IAEvB,OAAgB,aAAa,8BAAqB;IAElD,OAAO,CAAC,mBAAmB,CAAqC;IAEjD,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO;IAKhD,MAAM,CAAC,aAAa,EAAE,MAAM;IAK5B,QAAQ,CAAC,MAAM,EAAE,cAAc;IAQrC,UAAU;IAMV,iBAAiB;IAMX,UAAU,CAAC,MAAM,EAAE,cAAc;cAS7B,YAAY;YAIjB,kBAAkB;YAiFlB,eAAe;YAOf,kBAAkB;YA8ClB,eAAe;IAQ7B,OAAO,CAAC,qBAAqB;CAM9B"}
|
package/src/AbstractNode.ts
DELETED
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
import { assertEx } from '@xylabs/assert'
|
|
2
|
-
import { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'
|
|
3
|
-
import { QueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'
|
|
4
|
-
import { NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'
|
|
5
|
-
import { AbstractModuleInstance, CompositeModuleResolver } from '@xyo-network/module-abstract'
|
|
6
|
-
import {
|
|
7
|
-
duplicateModules,
|
|
8
|
-
Module,
|
|
9
|
-
ModuleConfig,
|
|
10
|
-
ModuleFilter,
|
|
11
|
-
ModuleFilterOptions,
|
|
12
|
-
ModuleInstance,
|
|
13
|
-
ModuleQueryHandlerResult,
|
|
14
|
-
} from '@xyo-network/module-model'
|
|
15
|
-
import {
|
|
16
|
-
NodeAttachedQuerySchema,
|
|
17
|
-
NodeAttachQuerySchema,
|
|
18
|
-
NodeConfigSchema,
|
|
19
|
-
NodeDetachQuerySchema,
|
|
20
|
-
NodeModule,
|
|
21
|
-
NodeModuleEventData,
|
|
22
|
-
NodeModuleParams,
|
|
23
|
-
NodeQuery,
|
|
24
|
-
NodeQueryBase,
|
|
25
|
-
NodeRegisteredQuerySchema,
|
|
26
|
-
} from '@xyo-network/node-model'
|
|
27
|
-
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
28
|
-
import { Payload } from '@xyo-network/payload-model'
|
|
29
|
-
import { Promisable } from '@xyo-network/promise'
|
|
30
|
-
|
|
31
|
-
export abstract class AbstractNode<TParams extends NodeModuleParams = NodeModuleParams, TEventData extends NodeModuleEventData = NodeModuleEventData>
|
|
32
|
-
extends AbstractModuleInstance<TParams, TEventData>
|
|
33
|
-
implements NodeModule<TParams, TEventData>, Module<TParams, TEventData>
|
|
34
|
-
{
|
|
35
|
-
static override readonly configSchemas: string[] = [NodeConfigSchema]
|
|
36
|
-
|
|
37
|
-
protected readonly privateResolver = new CompositeModuleResolver()
|
|
38
|
-
|
|
39
|
-
private readonly isNode = true
|
|
40
|
-
|
|
41
|
-
get isModuleResolver(): boolean {
|
|
42
|
-
return true
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
override get queries(): string[] {
|
|
46
|
-
return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
protected override get _queryAccountPaths(): Record<NodeQueryBase['schema'], string> {
|
|
50
|
-
return {
|
|
51
|
-
'network.xyo.query.node.attach': '1/1',
|
|
52
|
-
'network.xyo.query.node.attached': '1/2',
|
|
53
|
-
'network.xyo.query.node.detach': '1/3',
|
|
54
|
-
'network.xyo.query.node.registered': '1/4',
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
static isNode(module: unknown) {
|
|
59
|
-
return (module as AbstractNode).isNode
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
async attached(): Promise<string[]> {
|
|
63
|
-
return (await this.attachedModules()).map((module) => module.address)
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
async attachedModules(): Promise<Module[]> {
|
|
67
|
-
return (await (this.resolve(undefined, { direction: 'down', maxDepth: 2 }) ?? [])).filter((module) => module.address !== this.address)
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
override async manifest(ignoreAddresses?: string[]): Promise<NodeManifestPayload> {
|
|
71
|
-
return await this.manifestHandler(ignoreAddresses)
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
register(_module: ModuleInstance): Promisable<void> {
|
|
75
|
-
throw new Error('Method not implemented.')
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
registered(): Promisable<string[]> {
|
|
79
|
-
throw new Error('Method not implemented.')
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
registeredModules(): Promisable<Module[]> {
|
|
83
|
-
throw new Error('Method not implemented.')
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>
|
|
87
|
-
override async resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>
|
|
88
|
-
override async resolve(
|
|
89
|
-
nameOrAddressOrFilter?: ModuleFilter | string,
|
|
90
|
-
options?: ModuleFilterOptions,
|
|
91
|
-
): Promise<ModuleInstance | ModuleInstance[] | undefined> {
|
|
92
|
-
//checking type of nameOrAddressOrFilter before calling other functions since TS seems
|
|
93
|
-
//to need help here narrowing before the call
|
|
94
|
-
if (typeof nameOrAddressOrFilter === 'string') {
|
|
95
|
-
switch (options?.visibility) {
|
|
96
|
-
case 'private': {
|
|
97
|
-
return await this.resolvePrivate(nameOrAddressOrFilter)
|
|
98
|
-
}
|
|
99
|
-
case 'all': {
|
|
100
|
-
return await this.resolveAll(nameOrAddressOrFilter)
|
|
101
|
-
}
|
|
102
|
-
default: {
|
|
103
|
-
return await super.resolve(nameOrAddressOrFilter, options)
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
} else {
|
|
107
|
-
switch (options?.visibility) {
|
|
108
|
-
case 'all': {
|
|
109
|
-
return await this.resolveAll(nameOrAddressOrFilter)
|
|
110
|
-
}
|
|
111
|
-
case 'private': {
|
|
112
|
-
return await this.resolvePrivate(nameOrAddressOrFilter)
|
|
113
|
-
}
|
|
114
|
-
default: {
|
|
115
|
-
return await super.resolve(nameOrAddressOrFilter, options)
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
unregister(_module: ModuleInstance): Promisable<this> {
|
|
122
|
-
throw new Error('Method not implemented.')
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
protected override async discoverHandler(): Promise<Payload[]> {
|
|
126
|
-
const childMods = await this.attachedModules()
|
|
127
|
-
const childModAddresses = childMods.map((mod) =>
|
|
128
|
-
new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),
|
|
129
|
-
)
|
|
130
|
-
|
|
131
|
-
return [...(await super.discoverHandler()), ...childModAddresses]
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
protected override async manifestHandler(ignoreAddresses: string[] = []): Promise<NodeManifestPayload> {
|
|
135
|
-
const manifest: NodeManifestPayload = { ...(await super.manifestHandler()), schema: NodeManifestPayloadSchema }
|
|
136
|
-
const newIgnoreAddresses = [...ignoreAddresses, this.address]
|
|
137
|
-
|
|
138
|
-
const notThisModule = (module: ModuleInstance) => module.address !== this.address && !ignoreAddresses.includes(module.address)
|
|
139
|
-
const toManifest = (module: ModuleInstance) => module.manifest(newIgnoreAddresses)
|
|
140
|
-
|
|
141
|
-
const privateModules = await Promise.all((await this.privateResolver.resolve()).filter(notThisModule).map(toManifest))
|
|
142
|
-
if (privateModules.length > 0) {
|
|
143
|
-
manifest.modules = manifest.modules ?? {}
|
|
144
|
-
manifest.modules.private = privateModules
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
const publicModules = await Promise.all((await this.resolve()).filter(notThisModule).map(toManifest))
|
|
148
|
-
if (publicModules.length > 0) {
|
|
149
|
-
manifest.modules = manifest.modules ?? {}
|
|
150
|
-
manifest.modules.public = publicModules
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
return manifest
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(
|
|
157
|
-
query: T,
|
|
158
|
-
payloads?: Payload[],
|
|
159
|
-
queryConfig?: TConfig,
|
|
160
|
-
): Promise<ModuleQueryHandlerResult> {
|
|
161
|
-
const wrapper = QueryBoundWitnessWrapper.parseQuery<NodeQuery>(query, payloads)
|
|
162
|
-
const queryPayload = await wrapper.getQuery()
|
|
163
|
-
assertEx(this.queryable(query, payloads, queryConfig))
|
|
164
|
-
const resultPayloads: Payload[] = []
|
|
165
|
-
switch (queryPayload.schema) {
|
|
166
|
-
case NodeAttachQuerySchema: {
|
|
167
|
-
const address = await this.attach(queryPayload.nameOrAddress, queryPayload.external)
|
|
168
|
-
if (address) {
|
|
169
|
-
const payload = new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build()
|
|
170
|
-
resultPayloads.push(payload)
|
|
171
|
-
}
|
|
172
|
-
break
|
|
173
|
-
}
|
|
174
|
-
case NodeDetachQuerySchema: {
|
|
175
|
-
const address = await this.detach(queryPayload.nameOrAddress)
|
|
176
|
-
if (address) {
|
|
177
|
-
const payload = new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build()
|
|
178
|
-
resultPayloads.push(payload)
|
|
179
|
-
}
|
|
180
|
-
break
|
|
181
|
-
}
|
|
182
|
-
case NodeAttachedQuerySchema: {
|
|
183
|
-
const addresses = await this.attached()
|
|
184
|
-
for (const address of addresses) {
|
|
185
|
-
const payload = new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build()
|
|
186
|
-
resultPayloads.push(payload)
|
|
187
|
-
}
|
|
188
|
-
break
|
|
189
|
-
}
|
|
190
|
-
case NodeRegisteredQuerySchema: {
|
|
191
|
-
const addresses = await this.registered()
|
|
192
|
-
for (const address of addresses) {
|
|
193
|
-
const payload = new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build()
|
|
194
|
-
resultPayloads.push(payload)
|
|
195
|
-
}
|
|
196
|
-
break
|
|
197
|
-
}
|
|
198
|
-
default:
|
|
199
|
-
return await super.queryHandler(query, payloads)
|
|
200
|
-
}
|
|
201
|
-
return resultPayloads
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
private async resolveAll(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>
|
|
205
|
-
private async resolveAll(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>
|
|
206
|
-
private async resolveAll(
|
|
207
|
-
nameOrAddressOrFilter?: ModuleFilter | string,
|
|
208
|
-
options?: ModuleFilterOptions,
|
|
209
|
-
): Promise<ModuleInstance | ModuleInstance[] | undefined> {
|
|
210
|
-
switch (typeof nameOrAddressOrFilter) {
|
|
211
|
-
case 'string': {
|
|
212
|
-
return (await this.resolvePrivate(nameOrAddressOrFilter, options)) ?? (await super.resolve(nameOrAddressOrFilter, options))
|
|
213
|
-
}
|
|
214
|
-
default: {
|
|
215
|
-
return [...(await this.resolvePrivate(nameOrAddressOrFilter, options)), ...(await super.resolve(nameOrAddressOrFilter, options))].filter(
|
|
216
|
-
duplicateModules,
|
|
217
|
-
)
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
private async resolvePrivate(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>
|
|
223
|
-
private async resolvePrivate(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>
|
|
224
|
-
private async resolvePrivate(
|
|
225
|
-
nameOrAddressOrFilter?: ModuleFilter | string,
|
|
226
|
-
options?: ModuleFilterOptions,
|
|
227
|
-
): Promise<ModuleInstance | ModuleInstance[] | undefined> {
|
|
228
|
-
const direction = options?.direction ?? 'all'
|
|
229
|
-
const down = direction === 'down' || direction === 'all'
|
|
230
|
-
switch (typeof nameOrAddressOrFilter) {
|
|
231
|
-
case 'string': {
|
|
232
|
-
return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : undefined
|
|
233
|
-
}
|
|
234
|
-
default: {
|
|
235
|
-
return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : undefined
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
abstract attach(nameOrAddress: string, external?: boolean): Promisable<string | undefined>
|
|
241
|
-
abstract detach(nameOrAddress: string): Promisable<string | undefined>
|
|
242
|
-
}
|