@xyo-network/node 2.42.10 → 2.42.12
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/AbstractNode.d.ts +2 -0
- package/dist/cjs/AbstractNode.d.ts.map +1 -1
- package/dist/cjs/AbstractNode.js +30 -0
- package/dist/cjs/AbstractNode.js.map +1 -1
- package/dist/cjs/NodeWrapper.d.ts +4 -5
- package/dist/cjs/NodeWrapper.d.ts.map +1 -1
- package/dist/cjs/NodeWrapper.js.map +1 -1
- package/dist/docs.json +949 -1722
- package/dist/esm/AbstractNode.d.ts +2 -0
- package/dist/esm/AbstractNode.d.ts.map +1 -1
- package/dist/esm/AbstractNode.js +27 -2
- package/dist/esm/AbstractNode.js.map +1 -1
- package/dist/esm/NodeWrapper.d.ts +4 -5
- package/dist/esm/NodeWrapper.d.ts.map +1 -1
- package/dist/esm/NodeWrapper.js.map +1 -1
- package/package.json +7 -7
- package/src/AbstractNode.ts +31 -1
- package/src/MemoryNode.spec.ts +61 -1
- package/src/NodeWrapper.ts +4 -5
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Account } from '@xyo-network/account';
|
|
1
2
|
import { AbstractModule, Module, ModuleDescription, ModuleFilter, ModuleParams, ModuleQueryResult, SimpleModuleResolver, XyoQueryBoundWitness } from '@xyo-network/module';
|
|
2
3
|
import { XyoPayload } from '@xyo-network/payload';
|
|
3
4
|
import { Promisable } from '@xyo-network/promise';
|
|
@@ -13,6 +14,7 @@ export declare abstract class AbstractNode<TConfig extends NodeConfig = NodeConf
|
|
|
13
14
|
attached(): Promise<string[]>;
|
|
14
15
|
attachedModules(): Promise<TModule[]>;
|
|
15
16
|
description(): Promise<ModuleDescription>;
|
|
17
|
+
discover(_queryAccount?: Account | undefined): Promise<XyoPayload[]>;
|
|
16
18
|
queries(): string[];
|
|
17
19
|
query<T extends XyoQueryBoundWitness = XyoQueryBoundWitness>(query: T, payloads?: XyoPayload[]): Promise<ModuleQueryResult>;
|
|
18
20
|
register(_module: TModule): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,OAAO,EACL,cAAc,EAGd,MAAM,EACN,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EAGjB,oBAAoB,EAEpB,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAkB,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAoB,MAAM,UAAU,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAKzC,8BAAsB,YAAY,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,CACzG,SAAQ,cAAc,CAAC,OAAO,CAC9B,YAAW,UAAU;IAErB,MAAM,CAAC,YAAY,4BAAmB;IAC/B,gBAAgB,UAAO;IAE9B,SAAS,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAA;IACzD,OAAO,CAAC,UAAU,CAAC,CAAQ;IAE3B,SAAS,aAAa,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC;WAK/E,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAIzF,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI7B,eAAe,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAI5B,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAKzC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAyBnE,OAAO;IAIR,KAAK,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2C1I,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIhC,UAAU,IAAI,MAAM,EAAE;IAItB,iBAAiB,IAAI,OAAO,EAAE;IAIf,KAAK;IAKpB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IACtC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IACtC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IAC9D,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;CAClE;AAED,2CAA2C;AAC3C,8BAAsB,OAAO,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY,CAC1I,OAAO,EACP,OAAO,CACR;CAAG"}
|
package/dist/esm/AbstractNode.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert';
|
|
2
2
|
import { Account } from '@xyo-network/account';
|
|
3
3
|
import { AddressSchema } from '@xyo-network/address-payload-plugin';
|
|
4
|
-
import { AbstractModule, QueryBoundWitnessWrapper, SimpleModuleResolver, XyoErrorBuilder, } from '@xyo-network/module';
|
|
5
|
-
import { XyoPayloadBuilder } from '@xyo-network/payload';
|
|
4
|
+
import { AbstractModule, AbstractModuleDiscoverQuerySchema, QueryBoundWitnessWrapper, SimpleModuleResolver, XyoErrorBuilder, } from '@xyo-network/module';
|
|
5
|
+
import { PayloadWrapper, XyoPayloadBuilder } from '@xyo-network/payload';
|
|
6
6
|
import { NodeConfigSchema } from './Config';
|
|
7
7
|
import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema, XyoNodeRegisteredQuerySchema } from './Queries';
|
|
8
|
+
const childModuleDiscoverQueryPayload = PayloadWrapper.parse({ schema: AbstractModuleDiscoverQuerySchema });
|
|
8
9
|
export class AbstractNode extends AbstractModule {
|
|
9
10
|
static configSchema = NodeConfigSchema;
|
|
10
11
|
isModuleResolver = true;
|
|
@@ -28,6 +29,30 @@ export class AbstractNode extends AbstractModule {
|
|
|
28
29
|
const children = await Promise.all((await this.attachedModules()).map((mod) => mod.description()));
|
|
29
30
|
return { ...desc, children };
|
|
30
31
|
}
|
|
32
|
+
async discover(_queryAccount) {
|
|
33
|
+
const parent = await super.discover(_queryAccount);
|
|
34
|
+
// const childMods = (await this.attachedModules()).map((mod) => new ModuleWrapper(mod))
|
|
35
|
+
// const query = await this.bindQuery(childModuleDiscoverQueryPayload)
|
|
36
|
+
// const childModQueryResults = await Promise.all(
|
|
37
|
+
// childMods.map((mod) => {
|
|
38
|
+
// try {
|
|
39
|
+
// return mod.query(query[0], query[1])
|
|
40
|
+
// } catch {
|
|
41
|
+
// // TODO: remove this once we ensure all modules
|
|
42
|
+
// // implement discover query
|
|
43
|
+
// return undefined
|
|
44
|
+
// }
|
|
45
|
+
// }),
|
|
46
|
+
// )
|
|
47
|
+
// const children = compact(childModQueryResults)
|
|
48
|
+
// .map((result) => {
|
|
49
|
+
// const [bw, payloads] = result
|
|
50
|
+
// return [bw, ...payloads]
|
|
51
|
+
// })
|
|
52
|
+
// .flatMap((x) => x)
|
|
53
|
+
// return [...parent, ...children]
|
|
54
|
+
return parent;
|
|
55
|
+
}
|
|
31
56
|
queries() {
|
|
32
57
|
return [XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema, XyoNodeAttachedQuerySchema, XyoNodeRegisteredQuerySchema, ...super.queries()];
|
|
33
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.js","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EACL,cAAc,
|
|
1
|
+
{"version":3,"file":"AbstractNode.js","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EACL,cAAc,EAEd,iCAAiC,EAOjC,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,GAEhB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,cAAc,EAAc,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAIpF,OAAO,EAAc,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEvD,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,wBAAwB,EAAgB,4BAA4B,EAAE,MAAM,WAAW,CAAA;AAEtJ,MAAM,+BAA+B,GAAG,cAAc,CAAC,KAAK,CAA8B,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC,CAAA;AAExI,MAAM,OAAgB,YACpB,SAAQ,cAAuB;IAG/B,MAAM,CAAC,YAAY,GAAG,gBAAgB,CAAA;IAC/B,gBAAgB,GAAG,IAAI,CAAA;IAEpB,gBAAgB,CAA+B;IACjD,UAAU,CAAS;IAE3B,YAAsB,MAA6B,EAAE,gBAAgD;QACnG,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,IAAI,IAAI,oBAAoB,EAAW,CAAA;IACjF,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,MAAM,CAAC,MAA0C;QACrE,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAiB,CAAA;IACrD,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,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IACtD,CAAC;IAEQ,KAAK,CAAC,WAAW;QACxB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAA;QACtC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QAClG,OAAO,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAA;IAC9B,CAAC;IACQ,KAAK,CAAC,QAAQ,CAAC,aAAmC;QACzD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;QAClD,wFAAwF;QACxF,sEAAsE;QACtE,kDAAkD;QAClD,6BAA6B;QAC7B,YAAY;QACZ,6CAA6C;QAC7C,gBAAgB;QAChB,wDAAwD;QACxD,oCAAoC;QACpC,yBAAyB;QACzB,QAAQ;QACR,QAAQ;QACR,IAAI;QACJ,iDAAiD;QACjD,uBAAuB;QACvB,oCAAoC;QACpC,+BAA+B;QAC/B,OAAO;QACP,uBAAuB;QACvB,kCAAkC;QAClC,OAAO,MAAM,CAAA;IACf,CAAC;IAEe,OAAO;QACrB,OAAO,CAAC,wBAAwB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3I,CAAC;IAEQ,KAAK,CAAC,KAAK,CAAwD,KAAQ,EAAE,QAAuB;QAC3G,MAAM,OAAO,GAAG,wBAAwB,CAAC,UAAU,CAAe,KAAK,EAAE,QAAQ,CAAC,CAAA;QAClF,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAA;QACxC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;QAE9D,MAAM,YAAY,GAAG,IAAI,OAAO,EAAE,CAAA;QAClC,MAAM,cAAc,GAAiB,EAAE,CAAA;QACvC,IAAI;YACF,QAAQ,UAAU,CAAC,MAAM,EAAE;gBACzB,KAAK,wBAAwB,CAAC,CAAC;oBAC7B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;oBAC/B,MAAK;iBACN;gBACD,KAAK,wBAAwB,CAAC,CAAC;oBAC7B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;oBAC/B,MAAK;iBACN;gBACD,KAAK,0BAA0B,CAAC,CAAC;oBAC/B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;oBACvC,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;wBAC/B,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;wBAC5F,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;qBAC7B;oBACD,MAAK;iBACN;gBACD,KAAK,4BAA4B,CAAC,CAAC;oBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;oBACnC,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;wBAC/B,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;wBAC5F,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;qBAC7B;oBACD,MAAK;iBACN;gBACD;oBACE,OAAO,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aAC5C;SACF;QAAC,OAAO,EAAE,EAAE;YACX,MAAM,KAAK,GAAG,EAAW,CAAA;YACzB,cAAc,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;SAChF;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,YAAY,CAAC,CAAA;IACtD,CAAC;IAED,QAAQ,CAAC,OAAgB;QACvB,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;IAEQ,KAAK,CAAC,KAAK;QAClB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU,CAAC,OAAgB;QACzB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;;AAQH,2CAA2C;AAC3C,MAAM,OAAgB,OAAkG,SAAQ,YAG/H;CAAG"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { ArchivistWrapper } from '@xyo-network/archivist';
|
|
2
|
-
import {
|
|
2
|
+
import { Module, ModuleFilter, ModuleWrapper } from '@xyo-network/module';
|
|
3
3
|
import { Promisable } from '@xyo-network/promise';
|
|
4
|
-
import { AbstractNode } from './AbstractNode';
|
|
5
4
|
import { NodeModule } from './NodeModule';
|
|
6
|
-
export declare class NodeWrapper<TModule extends
|
|
5
|
+
export declare class NodeWrapper<TModule extends NodeModule = NodeModule> extends ModuleWrapper<TModule> implements NodeModule {
|
|
7
6
|
isModuleResolver: boolean;
|
|
8
7
|
private _archivist?;
|
|
9
8
|
get archivist(): ArchivistWrapper;
|
|
@@ -11,11 +10,11 @@ export declare class NodeWrapper<TModule extends AbstractNode = AbstractNode> ex
|
|
|
11
10
|
attached(): Promise<string[]>;
|
|
12
11
|
attachedModules(): Promise<Module[]>;
|
|
13
12
|
detach(address: string): Promise<void>;
|
|
14
|
-
register(mod:
|
|
13
|
+
register(mod: Module): Promisable<void>;
|
|
15
14
|
registered(): Promise<string[]>;
|
|
16
15
|
registeredModules(): Promise<Module[]>;
|
|
17
16
|
resolve(filter: ModuleFilter): Promisable<Module[]>;
|
|
18
17
|
tryResolve(filter: ModuleFilter): Promisable<Module[]>;
|
|
19
|
-
unregister(mod:
|
|
18
|
+
unregister(mod: Module): Promisable<void>;
|
|
20
19
|
}
|
|
21
20
|
//# sourceMappingURL=NodeWrapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeWrapper.d.ts","sourceRoot":"","sources":["../../src/NodeWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"NodeWrapper.d.ts","sourceRoot":"","sources":["../../src/NodeWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAYzC,qBAAa,WAAW,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,CAAE,SAAQ,aAAa,CAAC,OAAO,CAAE,YAAW,UAAU;IAC7G,gBAAgB,UAAO;IAE9B,OAAO,CAAC,UAAU,CAAC,CAAkB;IAErC,IAAW,SAAS,qBAGnB;IAEK,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM7B,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKpC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;IAIjC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM/B,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI5C,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IAInD,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IAItD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;CAG1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeWrapper.js","sourceRoot":"","sources":["../../src/NodeWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"NodeWrapper.js","sourceRoot":"","sources":["../../src/NodeWrapper.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@xylabs/assert": "^2.6.11",
|
|
14
|
-
"@xyo-network/account": "^2.42.
|
|
15
|
-
"@xyo-network/address-payload-plugin": "^2.42.
|
|
16
|
-
"@xyo-network/archivist": "^2.42.
|
|
17
|
-
"@xyo-network/module": "^2.42.
|
|
18
|
-
"@xyo-network/payload": "^2.42.
|
|
19
|
-
"@xyo-network/promise": "^2.42.
|
|
14
|
+
"@xyo-network/account": "^2.42.12",
|
|
15
|
+
"@xyo-network/address-payload-plugin": "^2.42.12",
|
|
16
|
+
"@xyo-network/archivist": "^2.42.12",
|
|
17
|
+
"@xyo-network/module": "^2.42.12",
|
|
18
|
+
"@xyo-network/payload": "^2.42.12",
|
|
19
|
+
"@xyo-network/promise": "^2.42.12",
|
|
20
20
|
"lodash": "^4.17.21",
|
|
21
21
|
"tslib": "^2.4.1"
|
|
22
22
|
},
|
|
@@ -62,5 +62,5 @@
|
|
|
62
62
|
},
|
|
63
63
|
"sideEffects": false,
|
|
64
64
|
"types": "dist/esm/index.d.ts",
|
|
65
|
-
"version": "2.42.
|
|
65
|
+
"version": "2.42.12"
|
|
66
66
|
}
|
package/src/AbstractNode.ts
CHANGED
|
@@ -3,23 +3,29 @@ import { Account } from '@xyo-network/account'
|
|
|
3
3
|
import { AddressSchema } from '@xyo-network/address-payload-plugin'
|
|
4
4
|
import {
|
|
5
5
|
AbstractModule,
|
|
6
|
+
AbstractModuleDiscoverQuery,
|
|
7
|
+
AbstractModuleDiscoverQuerySchema,
|
|
6
8
|
Module,
|
|
7
9
|
ModuleDescription,
|
|
8
10
|
ModuleFilter,
|
|
9
11
|
ModuleParams,
|
|
10
12
|
ModuleQueryResult,
|
|
13
|
+
ModuleWrapper,
|
|
11
14
|
QueryBoundWitnessWrapper,
|
|
12
15
|
SimpleModuleResolver,
|
|
13
16
|
XyoErrorBuilder,
|
|
14
17
|
XyoQueryBoundWitness,
|
|
15
18
|
} from '@xyo-network/module'
|
|
16
|
-
import { XyoPayload, XyoPayloadBuilder } from '@xyo-network/payload'
|
|
19
|
+
import { PayloadWrapper, XyoPayload, XyoPayloadBuilder } from '@xyo-network/payload'
|
|
17
20
|
import { Promisable } from '@xyo-network/promise'
|
|
21
|
+
import compact from 'lodash/compact'
|
|
18
22
|
|
|
19
23
|
import { NodeConfig, NodeConfigSchema } from './Config'
|
|
20
24
|
import { NodeModule } from './NodeModule'
|
|
21
25
|
import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema, XyoNodeQuery, XyoNodeRegisteredQuerySchema } from './Queries'
|
|
22
26
|
|
|
27
|
+
const childModuleDiscoverQueryPayload = PayloadWrapper.parse<AbstractModuleDiscoverQuery>({ schema: AbstractModuleDiscoverQuerySchema })
|
|
28
|
+
|
|
23
29
|
export abstract class AbstractNode<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module>
|
|
24
30
|
extends AbstractModule<TConfig>
|
|
25
31
|
implements NodeModule
|
|
@@ -52,6 +58,30 @@ export abstract class AbstractNode<TConfig extends NodeConfig = NodeConfig, TMod
|
|
|
52
58
|
const children = await Promise.all((await this.attachedModules()).map((mod) => mod.description()))
|
|
53
59
|
return { ...desc, children }
|
|
54
60
|
}
|
|
61
|
+
override async discover(_queryAccount?: Account | undefined): Promise<XyoPayload[]> {
|
|
62
|
+
const parent = await super.discover(_queryAccount)
|
|
63
|
+
// const childMods = (await this.attachedModules()).map((mod) => new ModuleWrapper(mod))
|
|
64
|
+
// const query = await this.bindQuery(childModuleDiscoverQueryPayload)
|
|
65
|
+
// const childModQueryResults = await Promise.all(
|
|
66
|
+
// childMods.map((mod) => {
|
|
67
|
+
// try {
|
|
68
|
+
// return mod.query(query[0], query[1])
|
|
69
|
+
// } catch {
|
|
70
|
+
// // TODO: remove this once we ensure all modules
|
|
71
|
+
// // implement discover query
|
|
72
|
+
// return undefined
|
|
73
|
+
// }
|
|
74
|
+
// }),
|
|
75
|
+
// )
|
|
76
|
+
// const children = compact(childModQueryResults)
|
|
77
|
+
// .map((result) => {
|
|
78
|
+
// const [bw, payloads] = result
|
|
79
|
+
// return [bw, ...payloads]
|
|
80
|
+
// })
|
|
81
|
+
// .flatMap((x) => x)
|
|
82
|
+
// return [...parent, ...children]
|
|
83
|
+
return parent
|
|
84
|
+
}
|
|
55
85
|
|
|
56
86
|
public override queries() {
|
|
57
87
|
return [XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema, XyoNodeAttachedQuerySchema, XyoNodeRegisteredQuerySchema, ...super.queries()]
|
package/src/MemoryNode.spec.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/* eslint-disable max-statements */
|
|
2
|
+
import { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'
|
|
2
3
|
import { ArchivistWrapper, MemoryArchivist, MemoryArchivistConfigSchema } from '@xyo-network/archivist'
|
|
3
4
|
import {
|
|
4
5
|
ArchivistPayloadDiviner,
|
|
@@ -8,7 +9,7 @@ import {
|
|
|
8
9
|
XyoHuriPayload,
|
|
9
10
|
XyoHuriSchema,
|
|
10
11
|
} from '@xyo-network/diviner'
|
|
11
|
-
import { AbstractModule, ModuleDescription, SimpleModuleResolver } from '@xyo-network/module'
|
|
12
|
+
import { AbstractModule, Module, ModuleDescription, SimpleModuleResolver } from '@xyo-network/module'
|
|
12
13
|
import { Account, PayloadWrapper, XyoPayload, XyoPayloadBuilder, XyoPayloadSchema } from '@xyo-network/protocol'
|
|
13
14
|
|
|
14
15
|
import { NodeConfigSchema } from './Config'
|
|
@@ -248,6 +249,65 @@ describe('MemoryNode', () => {
|
|
|
248
249
|
})
|
|
249
250
|
})
|
|
250
251
|
})
|
|
252
|
+
describe('discover', () => {
|
|
253
|
+
const archivistConfig = { schema: MemoryArchivistConfigSchema }
|
|
254
|
+
const validateDiscoveryResponse = (mod: Module, response: XyoPayload[]) => {
|
|
255
|
+
expect(response).toBeArray()
|
|
256
|
+
const address = response.find((p) => p.schema === AddressSchema) as AddressPayload
|
|
257
|
+
expect(address).toBeObject()
|
|
258
|
+
expect(address.address).toEqual(mod.address)
|
|
259
|
+
const config = response.find((p) => p.schema === mod.config.schema)
|
|
260
|
+
expect(config).toBeObject()
|
|
261
|
+
expect(config).toEqual(mod.config)
|
|
262
|
+
const queries = response.filter((p) => mod.queries().includes(p.schema))
|
|
263
|
+
expect(queries.length).toBeGreaterThanOrEqual(0)
|
|
264
|
+
queries.map((query) => {
|
|
265
|
+
expect(query).toBeObject()
|
|
266
|
+
})
|
|
267
|
+
}
|
|
268
|
+
describe('node without child modules', () => {
|
|
269
|
+
it('describes node alone', async () => {
|
|
270
|
+
const description = await node.discover()
|
|
271
|
+
validateDiscoveryResponse(node, description)
|
|
272
|
+
})
|
|
273
|
+
})
|
|
274
|
+
describe('node with child modules', () => {
|
|
275
|
+
beforeEach(async () => {
|
|
276
|
+
const modules = await Promise.all([
|
|
277
|
+
await MemoryArchivist.create({ account: testAccount2, config: archivistConfig }),
|
|
278
|
+
await MemoryArchivist.create({ account: testAccount3, config: archivistConfig }),
|
|
279
|
+
])
|
|
280
|
+
modules.map((mod) => {
|
|
281
|
+
node.register(mod)
|
|
282
|
+
node.attach(mod.address)
|
|
283
|
+
})
|
|
284
|
+
})
|
|
285
|
+
it('describes node and child modules', async () => {
|
|
286
|
+
const description = await node.discover()
|
|
287
|
+
validateDiscoveryResponse(node, description)
|
|
288
|
+
})
|
|
289
|
+
})
|
|
290
|
+
describe('node with nested nodes and modules', () => {
|
|
291
|
+
beforeEach(async () => {
|
|
292
|
+
const nestedNode = await MemoryNode.create({ account: testAccount2, config: nodeConfig })
|
|
293
|
+
const nestedModules = await Promise.all([await MemoryArchivist.create({ account: testAccount3, config: archivistConfig })])
|
|
294
|
+
nestedModules.map((mod) => {
|
|
295
|
+
nestedNode.register(mod)
|
|
296
|
+
nestedNode.attach(mod.address)
|
|
297
|
+
})
|
|
298
|
+
const rootModules: AbstractModule[] = await Promise.all([await MemoryArchivist.create({ account: testAccount4, config: archivistConfig })])
|
|
299
|
+
rootModules.push(nestedNode)
|
|
300
|
+
rootModules.map((mod) => {
|
|
301
|
+
node.register(mod)
|
|
302
|
+
node.attach(mod.address)
|
|
303
|
+
})
|
|
304
|
+
})
|
|
305
|
+
it('describes node and all nested nodes and child modules', async () => {
|
|
306
|
+
const description = await node.discover()
|
|
307
|
+
validateDiscoveryResponse(node, description)
|
|
308
|
+
})
|
|
309
|
+
})
|
|
310
|
+
})
|
|
251
311
|
})
|
|
252
312
|
|
|
253
313
|
const prettyPrintDescription = (description: ModuleDescription) => {
|
package/src/NodeWrapper.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'
|
|
2
2
|
import { ArchivistWrapper } from '@xyo-network/archivist'
|
|
3
|
-
import {
|
|
3
|
+
import { Module, ModuleFilter, ModuleWrapper } from '@xyo-network/module'
|
|
4
4
|
import { isXyoPayloadOfSchemaType, PayloadWrapper } from '@xyo-network/payload'
|
|
5
5
|
import { Promisable } from '@xyo-network/promise'
|
|
6
6
|
import compact from 'lodash/compact'
|
|
7
7
|
|
|
8
|
-
import { AbstractNode } from './AbstractNode'
|
|
9
8
|
import { NodeModule } from './NodeModule'
|
|
10
9
|
import {
|
|
11
10
|
XyoNodeAttachedQuery,
|
|
@@ -18,7 +17,7 @@ import {
|
|
|
18
17
|
XyoNodeRegisteredQuerySchema,
|
|
19
18
|
} from './Queries'
|
|
20
19
|
|
|
21
|
-
export class NodeWrapper<TModule extends
|
|
20
|
+
export class NodeWrapper<TModule extends NodeModule = NodeModule> extends ModuleWrapper<TModule> implements NodeModule {
|
|
22
21
|
public isModuleResolver = true
|
|
23
22
|
|
|
24
23
|
private _archivist?: ArchivistWrapper
|
|
@@ -49,7 +48,7 @@ export class NodeWrapper<TModule extends AbstractNode = AbstractNode> extends Mo
|
|
|
49
48
|
await this.sendQuery(queryPayload)
|
|
50
49
|
}
|
|
51
50
|
|
|
52
|
-
register(mod:
|
|
51
|
+
register(mod: Module): Promisable<void> {
|
|
53
52
|
return this.module.register(mod)
|
|
54
53
|
}
|
|
55
54
|
|
|
@@ -71,7 +70,7 @@ export class NodeWrapper<TModule extends AbstractNode = AbstractNode> extends Mo
|
|
|
71
70
|
return this.module.tryResolve(filter)
|
|
72
71
|
}
|
|
73
72
|
|
|
74
|
-
unregister(mod:
|
|
73
|
+
unregister(mod: Module): Promisable<void> {
|
|
75
74
|
return this.module.unregister(mod)
|
|
76
75
|
}
|
|
77
76
|
}
|