@xyo-network/node 2.37.6 → 2.38.0-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/MemoryNode.d.ts +3 -2
- package/dist/cjs/MemoryNode.d.ts.map +1 -1
- package/dist/cjs/MemoryNode.js +18 -8
- package/dist/cjs/MemoryNode.js.map +1 -1
- package/dist/cjs/NodeModule.d.ts +1 -1
- package/dist/cjs/NodeModule.d.ts.map +1 -1
- package/dist/cjs/XyoNode.d.ts +4 -12
- package/dist/cjs/XyoNode.d.ts.map +1 -1
- package/dist/cjs/XyoNode.js +54 -35
- package/dist/cjs/XyoNode.js.map +1 -1
- package/dist/cjs/XyoNodeWrapper.d.ts +2 -1
- package/dist/cjs/XyoNodeWrapper.d.ts.map +1 -1
- package/dist/cjs/XyoNodeWrapper.js +2 -2
- package/dist/cjs/XyoNodeWrapper.js.map +1 -1
- package/dist/docs.json +5634 -4865
- package/dist/esm/MemoryNode.d.ts +3 -2
- package/dist/esm/MemoryNode.d.ts.map +1 -1
- package/dist/esm/MemoryNode.js +14 -7
- package/dist/esm/MemoryNode.js.map +1 -1
- package/dist/esm/NodeModule.d.ts +1 -1
- package/dist/esm/NodeModule.d.ts.map +1 -1
- package/dist/esm/XyoNode.d.ts +4 -12
- package/dist/esm/XyoNode.d.ts.map +1 -1
- package/dist/esm/XyoNode.js +37 -28
- package/dist/esm/XyoNode.js.map +1 -1
- package/dist/esm/XyoNodeWrapper.d.ts +2 -1
- package/dist/esm/XyoNodeWrapper.d.ts.map +1 -1
- package/dist/esm/XyoNodeWrapper.js +2 -2
- package/dist/esm/XyoNodeWrapper.js.map +1 -1
- package/package.json +8 -8
- package/src/MemoryNode.spec.ts +19 -8
- package/src/MemoryNode.ts +16 -8
- package/src/NodeModule.ts +1 -1
- package/src/XyoNode.ts +39 -31
- package/src/XyoNodeWrapper.ts +4 -3
package/dist/esm/MemoryNode.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { XyoModule } from '@xyo-network/module';
|
|
1
|
+
import { XyoModule, XyoModuleParams } from '@xyo-network/module';
|
|
2
2
|
import { NodeConfig } from './Config';
|
|
3
3
|
import { XyoNode } from './XyoNode';
|
|
4
4
|
export declare class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends XyoModule = XyoModule> extends XyoNode<TConfig, TModule> {
|
|
5
5
|
private registeredModuleMap;
|
|
6
6
|
private attachedModuleMap;
|
|
7
|
+
static create(params?: XyoModuleParams): Promise<MemoryNode>;
|
|
7
8
|
queries(): string[];
|
|
8
9
|
attached(): string[];
|
|
9
10
|
registered(): string[];
|
|
10
11
|
attachedModules(): TModule[];
|
|
11
12
|
registeredModules(): TModule[];
|
|
12
|
-
resolve(
|
|
13
|
+
resolve(addresses: string[]): (TModule | null)[];
|
|
13
14
|
register(module: TModule): void;
|
|
14
15
|
attach(address: string): void;
|
|
15
16
|
detach(address: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAEhE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,qBAAa,UAAU,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,SAAS,GAAG,SAAS,CAAE,SAAQ,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;IACvI,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,iBAAiB,CAA6B;WAEhC,MAAM,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAM3D,OAAO,IAAI,MAAM,EAAE;IAI1B,QAAQ;IAMR,UAAU;IAMV,eAAe;IAMf,iBAAiB;IAMjB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE;IAWhD,QAAQ,CAAC,MAAM,EAAE,OAAO;IAIxB,MAAM,CAAC,OAAO,EAAE,MAAM;IAKtB,MAAM,CAAC,OAAO,EAAE,MAAM;CAGhC"}
|
package/dist/esm/MemoryNode.js
CHANGED
|
@@ -5,6 +5,11 @@ import { XyoNode } from './XyoNode';
|
|
|
5
5
|
export class MemoryNode extends XyoNode {
|
|
6
6
|
registeredModuleMap = new Map();
|
|
7
7
|
attachedModuleMap = new Map();
|
|
8
|
+
static async create(params) {
|
|
9
|
+
const module = new MemoryNode(params);
|
|
10
|
+
await module.start();
|
|
11
|
+
return module;
|
|
12
|
+
}
|
|
8
13
|
queries() {
|
|
9
14
|
return [XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema, ...super.queries()];
|
|
10
15
|
}
|
|
@@ -28,13 +33,15 @@ export class MemoryNode extends XyoNode {
|
|
|
28
33
|
return value;
|
|
29
34
|
});
|
|
30
35
|
}
|
|
31
|
-
resolve(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
resolve(addresses) {
|
|
37
|
+
return addresses.map((address) => {
|
|
38
|
+
console.log(`Resolving in MemoryNode: ${address}`);
|
|
39
|
+
if (address === 'archivist') {
|
|
40
|
+
console.log(`attachedModules: ${JSON.stringify(this.attachedModules(), null, 2)}`);
|
|
41
|
+
return this.attachedModules().find((module) => module.queryable(XyoArchivistGetQuerySchema)) ?? null;
|
|
42
|
+
}
|
|
43
|
+
return this.attachedModuleMap?.get(address) ?? null;
|
|
44
|
+
});
|
|
38
45
|
}
|
|
39
46
|
register(module) {
|
|
40
47
|
this.registeredModuleMap.set(module.address, module);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryNode.js","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AAInE,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,OAAO,UAA2F,SAAQ,OAAyB;IAC/H,mBAAmB,GAAG,IAAI,GAAG,EAAmB,CAAA;IAChD,iBAAiB,GAAG,IAAI,GAAG,EAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"MemoryNode.js","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/NodeModule.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { Node } from './Node';
|
|
|
4
4
|
export interface NodeModule<TModule extends Module = Module> extends Node, Module {
|
|
5
5
|
registeredModules(): PromisableArray<TModule>;
|
|
6
6
|
attachedModules(): PromisableArray<TModule>;
|
|
7
|
-
resolve(address: string): Promisable<TModule | null>;
|
|
7
|
+
resolve(address: string[]): Promisable<(TModule | null)[]>;
|
|
8
8
|
register(module: TModule): Promisable<void>;
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=NodeModule.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeModule.d.ts","sourceRoot":"","sources":["../../src/NodeModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAElE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,MAAM,WAAW,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,IAAI,EAAE,MAAM;IAC/E,iBAAiB,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAC7C,eAAe,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAC3C,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"NodeModule.d.ts","sourceRoot":"","sources":["../../src/NodeModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAElE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,MAAM,WAAW,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,IAAI,EAAE,MAAM;IAC/E,iBAAiB,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAC7C,eAAe,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAC3C,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;IAC1D,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;CAC5C"}
|
package/dist/esm/XyoNode.d.ts
CHANGED
|
@@ -1,30 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ModuleQueryResult, XyoModule, XyoModuleResolverFunc, XyoQueryBoundWitness } from '@xyo-network/module';
|
|
1
|
+
import { Module, ModuleQueryResult, XyoModule, XyoQueryBoundWitness } from '@xyo-network/module';
|
|
3
2
|
import { XyoPayload } from '@xyo-network/payload';
|
|
4
3
|
import { NodeConfig } from './Config';
|
|
5
4
|
import { NodeModule } from './NodeModule';
|
|
6
5
|
export declare abstract class XyoNode<TConfig extends NodeConfig = NodeConfig, TModule extends XyoModule = XyoModule> extends XyoModule<TConfig> implements NodeModule {
|
|
7
|
-
constructor(config?: TConfig, account?: XyoAccount, resolver?: XyoModuleResolverFunc);
|
|
8
6
|
private storeInstanceData;
|
|
9
7
|
/** Query Functions - Start */
|
|
10
8
|
abstract attach(_address: string): void;
|
|
11
9
|
abstract detach(_address: string): void;
|
|
12
|
-
abstract resolve(_address: string): TModule | null;
|
|
10
|
+
abstract resolve(_address: string[]): (TModule | null)[];
|
|
13
11
|
private _archivist?;
|
|
14
|
-
|
|
15
|
-
security?: {
|
|
16
|
-
allowed?: Record<string, string[][]> | undefined;
|
|
17
|
-
disallowed?: Record<string, string[]> | undefined;
|
|
18
|
-
} | undefined;
|
|
19
|
-
} & {
|
|
20
|
-
schema: string;
|
|
21
|
-
}>;
|
|
12
|
+
getArchivist(): Promise<Module>;
|
|
22
13
|
registered(): string[];
|
|
23
14
|
attached(): string[];
|
|
24
15
|
registeredModules(): TModule[];
|
|
25
16
|
attachedModules(): TModule[];
|
|
26
17
|
/** Query Functions - End */
|
|
27
18
|
query<T extends XyoQueryBoundWitness = XyoQueryBoundWitness>(query: T, payloads?: XyoPayload[]): Promise<ModuleQueryResult>;
|
|
19
|
+
start(): Promise<this>;
|
|
28
20
|
register(_module: TModule): void;
|
|
29
21
|
}
|
|
30
22
|
//# sourceMappingURL=XyoNode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoNode.d.ts","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"XyoNode.d.ts","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAA6C,SAAS,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE3I,OAAO,EAAE,UAAU,EAAe,MAAM,sBAAsB,CAAA;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,8BAAsB,OAAO,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,SAAS,GAAG,SAAS,CAC1G,SAAQ,SAAS,CAAC,OAAO,CACzB,YAAW,UAAU;YAEP,iBAAiB;IAM/B,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IACvC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IACvC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE;IAExD,OAAO,CAAC,UAAU,CAAC,CAAQ;IACd,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAU5C,UAAU,IAAI,MAAM,EAAE;IAGtB,QAAQ,IAAI,MAAM,EAAE;IAIpB,iBAAiB,IAAI,OAAO,EAAE;IAG9B,eAAe,IAAI,OAAO,EAAE;IAG5B,4BAA4B;IAEb,KAAK,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmC3H,KAAK;IAMpB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAGjC"}
|
package/dist/esm/XyoNode.js
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert';
|
|
2
|
-
import { forget } from '@xylabs/forget';
|
|
3
2
|
import { XyoAccount } from '@xyo-network/account';
|
|
4
3
|
import { XyoArchivistWrapper, XyoMemoryArchivist } from '@xyo-network/archivist';
|
|
5
|
-
import { QueryBoundWitnessWrapper, XyoModule } from '@xyo-network/module';
|
|
4
|
+
import { QueryBoundWitnessWrapper, XyoErrorBuilder, XyoModule } from '@xyo-network/module';
|
|
6
5
|
import { XyoModuleInstanceSchema } from '@xyo-network/module-instance-payload-plugin';
|
|
7
6
|
import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema, XyoNodeRegisteredQuerySchema } from './Queries';
|
|
8
7
|
export class XyoNode extends XyoModule {
|
|
9
|
-
constructor(config, account, resolver) {
|
|
10
|
-
super(config, account, resolver);
|
|
11
|
-
forget(this.storeInstanceData());
|
|
12
|
-
}
|
|
13
8
|
async storeInstanceData() {
|
|
14
9
|
const payload = { address: this.address, queries: this.queries, schema: XyoModuleInstanceSchema };
|
|
15
10
|
const [bw] = await this.bindResult([payload]);
|
|
16
|
-
await new XyoArchivistWrapper(this.
|
|
11
|
+
await new XyoArchivistWrapper(await this.getArchivist()).insert([bw, payload]);
|
|
17
12
|
}
|
|
18
13
|
_archivist;
|
|
19
|
-
|
|
14
|
+
async getArchivist() {
|
|
20
15
|
if (!this._archivist) {
|
|
21
|
-
this._archivist =
|
|
16
|
+
this._archivist =
|
|
17
|
+
this._archivist ??
|
|
18
|
+
(this.config?.archivist ? this.resolver?.fromAddress([this.config?.archivist]).shift() : undefined) ??
|
|
19
|
+
(await XyoMemoryArchivist.create());
|
|
22
20
|
}
|
|
23
21
|
return this._archivist;
|
|
24
22
|
}
|
|
@@ -35,34 +33,45 @@ export class XyoNode extends XyoModule {
|
|
|
35
33
|
throw new Error('Method not implemented.');
|
|
36
34
|
}
|
|
37
35
|
/** Query Functions - End */
|
|
38
|
-
query(query, payloads) {
|
|
36
|
+
async query(query, payloads) {
|
|
39
37
|
const wrapper = QueryBoundWitnessWrapper.parseQuery(query);
|
|
40
38
|
const typedQuery = wrapper.query.payload;
|
|
41
39
|
assertEx(this.queryable(typedQuery.schema, wrapper.addresses));
|
|
42
40
|
const queryAccount = new XyoAccount();
|
|
43
41
|
const resultPayloads = [];
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
42
|
+
try {
|
|
43
|
+
switch (typedQuery.schema) {
|
|
44
|
+
case XyoNodeAttachQuerySchema: {
|
|
45
|
+
this.attach(typedQuery.address);
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
case XyoNodeDetachQuerySchema: {
|
|
49
|
+
this.detach(typedQuery.address);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
case XyoNodeAttachedQuerySchema: {
|
|
53
|
+
this.attached();
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
case XyoNodeRegisteredQuerySchema: {
|
|
57
|
+
this.registered();
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
default:
|
|
61
|
+
return await super.query(query, payloads);
|
|
56
62
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
default:
|
|
62
|
-
return super.query(query, payloads);
|
|
63
|
+
}
|
|
64
|
+
catch (ex) {
|
|
65
|
+
const error = ex;
|
|
66
|
+
resultPayloads.push(new XyoErrorBuilder(wrapper.hash, error.message).build());
|
|
63
67
|
}
|
|
64
68
|
return this.bindResult(resultPayloads, queryAccount);
|
|
65
69
|
}
|
|
70
|
+
async start() {
|
|
71
|
+
await super.start();
|
|
72
|
+
await this.storeInstanceData();
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
66
75
|
register(_module) {
|
|
67
76
|
throw new Error('Method not implemented.');
|
|
68
77
|
}
|
package/dist/esm/XyoNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoNode.js","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"XyoNode.js","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { XyoArchivistWrapper } from '@xyo-network/archivist';
|
|
2
2
|
import { Module, XyoModule, XyoModuleWrapper } from '@xyo-network/module';
|
|
3
|
+
import { Promisable } from '@xyo-network/promise';
|
|
3
4
|
import { NodeModule } from './NodeModule';
|
|
4
5
|
export declare class XyoNodeWrapper extends XyoModuleWrapper implements NodeModule {
|
|
5
6
|
private _archivist?;
|
|
@@ -11,6 +12,6 @@ export declare class XyoNodeWrapper extends XyoModuleWrapper implements NodeModu
|
|
|
11
12
|
detach(address: string): Promise<void>;
|
|
12
13
|
registeredModules(): Promise<XyoModule[]>;
|
|
13
14
|
attachedModules(): Promise<XyoModule[]>;
|
|
14
|
-
resolve(_address: string): XyoModule | null
|
|
15
|
+
resolve(_address: string[]): Promisable<(XyoModule | null)[]>;
|
|
15
16
|
}
|
|
16
17
|
//# sourceMappingURL=XyoNodeWrapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoNodeWrapper.d.ts","sourceRoot":"","sources":["../../src/XyoNodeWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"XyoNodeWrapper.d.ts","sourceRoot":"","sources":["../../src/XyoNodeWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAYzC,qBAAa,cAAe,SAAQ,gBAAiB,YAAW,UAAU;IACxE,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,IAAW,SAAS,wBAGnB;IAED,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAGzB,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAK/B,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAK7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtC,iBAAiB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAIzC,eAAe,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAK7C,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC;CAG9D"}
|
|
@@ -36,11 +36,11 @@ export class XyoNodeWrapper extends XyoModuleWrapper {
|
|
|
36
36
|
}
|
|
37
37
|
async registeredModules() {
|
|
38
38
|
const addresses = await this.registered();
|
|
39
|
-
return compact(await
|
|
39
|
+
return compact(await this.resolve(addresses));
|
|
40
40
|
}
|
|
41
41
|
async attachedModules() {
|
|
42
42
|
const addresses = await this.attached();
|
|
43
|
-
return compact(await
|
|
43
|
+
return compact(await this.resolve(addresses));
|
|
44
44
|
}
|
|
45
45
|
resolve(_address) {
|
|
46
46
|
throw Error('Not implemented');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoNodeWrapper.js","sourceRoot":"","sources":["../../src/XyoNodeWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAqB,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"XyoNodeWrapper.js","sourceRoot":"","sources":["../../src/XyoNodeWrapper.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -11,13 +11,12 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@xylabs/assert": "^2.6.9",
|
|
14
|
-
"@
|
|
15
|
-
"@xyo-network/
|
|
16
|
-
"@xyo-network/
|
|
17
|
-
"@xyo-network/module": "^2.
|
|
18
|
-
"@xyo-network/
|
|
19
|
-
"@xyo-network/
|
|
20
|
-
"@xyo-network/promise": "^2.37.6",
|
|
14
|
+
"@xyo-network/account": "^2.38.0-rc.10",
|
|
15
|
+
"@xyo-network/archivist": "^2.38.0-rc.10",
|
|
16
|
+
"@xyo-network/module": "^2.38.0-rc.10",
|
|
17
|
+
"@xyo-network/module-instance-payload-plugin": "^2.38.0-rc.10",
|
|
18
|
+
"@xyo-network/payload": "^2.38.0-rc.10",
|
|
19
|
+
"@xyo-network/promise": "^2.38.0-rc.10",
|
|
21
20
|
"lodash": "^4.17.21",
|
|
22
21
|
"tslib": "^2.4.0"
|
|
23
22
|
},
|
|
@@ -58,5 +57,6 @@
|
|
|
58
57
|
},
|
|
59
58
|
"sideEffects": false,
|
|
60
59
|
"types": "dist/esm/index.d.ts",
|
|
61
|
-
"version": "2.
|
|
60
|
+
"version": "2.38.0-rc.10",
|
|
61
|
+
"stableVersion": "2.37.6"
|
|
62
62
|
}
|
package/src/MemoryNode.spec.ts
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
/* eslint-disable max-statements */
|
|
2
2
|
import { XyoArchivistWrapper } from '@xyo-network/archivist'
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import {
|
|
4
|
+
DivinerModule,
|
|
5
|
+
XyoArchivistPayloadDiviner,
|
|
6
|
+
XyoArchivistPayloadDivinerConfigSchema,
|
|
7
|
+
XyoDivinerConfig,
|
|
8
|
+
XyoDivinerWrapper,
|
|
9
|
+
XyoHuriPayload,
|
|
10
|
+
XyoHuriSchema,
|
|
11
|
+
} from '@xyo-network/diviner'
|
|
12
|
+
import { XyoModule, XyoModuleResolver } from '@xyo-network/module'
|
|
5
13
|
import { PayloadWrapper, XyoPayload, XyoPayloadBuilder, XyoPayloadSchema } from '@xyo-network/sdk'
|
|
6
14
|
|
|
7
15
|
import { MemoryNode } from './MemoryNode'
|
|
@@ -9,16 +17,19 @@ import { NodeModule } from './NodeModule'
|
|
|
9
17
|
|
|
10
18
|
test('Create Node', async () => {
|
|
11
19
|
const XyoMemoryArchivist = (await import('@xyo-network/archivist')).XyoMemoryArchivist
|
|
12
|
-
const node: NodeModule =
|
|
13
|
-
const archivist =
|
|
14
|
-
const diviner: XyoModule =
|
|
20
|
+
const node: NodeModule = await MemoryNode.create()
|
|
21
|
+
const archivist = await XyoMemoryArchivist.create()
|
|
22
|
+
const diviner: XyoModule = await XyoArchivistPayloadDiviner.create({
|
|
23
|
+
config: { archivist: archivist.address, schema: XyoArchivistPayloadDivinerConfigSchema } as XyoDivinerConfig,
|
|
24
|
+
resolver: new XyoModuleResolver().add(archivist),
|
|
25
|
+
})
|
|
15
26
|
await node.register(archivist)
|
|
16
27
|
node.attach(archivist.address)
|
|
17
28
|
await node.register(diviner)
|
|
18
29
|
node.attach(diviner.address)
|
|
19
30
|
expect((await node.registered()).length).toBe(2)
|
|
20
31
|
expect((await node.attached()).length).toBe(2)
|
|
21
|
-
const foundArchivist = await node.resolve(archivist.address)
|
|
32
|
+
const foundArchivist = (await node.resolve([archivist.address])).shift()
|
|
22
33
|
expect(foundArchivist).toBeDefined()
|
|
23
34
|
expect(foundArchivist?.address).toBe(archivist.address)
|
|
24
35
|
const testPayload = new XyoPayloadBuilder<XyoPayload<{ schema: XyoPayloadSchema; test: boolean }>>({ schema: XyoPayloadSchema })
|
|
@@ -37,8 +48,8 @@ test('Create Node', async () => {
|
|
|
37
48
|
if (payloads && payloads[0]) {
|
|
38
49
|
const huri = new PayloadWrapper(payloads[0]).hash
|
|
39
50
|
const huriPayload: XyoHuriPayload = { huri: [huri], schema: XyoHuriSchema }
|
|
40
|
-
const
|
|
41
|
-
const foundDiviner =
|
|
51
|
+
const module = (await node.resolve([diviner.address])).shift() as DivinerModule
|
|
52
|
+
const foundDiviner = module ? new XyoDivinerWrapper(module) : null
|
|
42
53
|
expect(foundDiviner).toBeDefined()
|
|
43
54
|
if (foundDiviner) {
|
|
44
55
|
const foundDivinerWrapper = new XyoDivinerWrapper(foundDiviner)
|
package/src/MemoryNode.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert'
|
|
2
2
|
import { XyoArchivistGetQuerySchema } from '@xyo-network/archivist'
|
|
3
|
-
import { XyoModule } from '@xyo-network/module'
|
|
3
|
+
import { XyoModule, XyoModuleParams } from '@xyo-network/module'
|
|
4
4
|
|
|
5
5
|
import { NodeConfig } from './Config'
|
|
6
6
|
import { XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema } from './Queries'
|
|
@@ -10,6 +10,12 @@ export class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends
|
|
|
10
10
|
private registeredModuleMap = new Map<string, TModule>()
|
|
11
11
|
private attachedModuleMap = new Map<string, TModule>()
|
|
12
12
|
|
|
13
|
+
static override async create(params?: XyoModuleParams): Promise<MemoryNode> {
|
|
14
|
+
const module = new MemoryNode(params as XyoModuleParams<NodeConfig>)
|
|
15
|
+
await module.start()
|
|
16
|
+
return module
|
|
17
|
+
}
|
|
18
|
+
|
|
13
19
|
public override queries(): string[] {
|
|
14
20
|
return [XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema, ...super.queries()]
|
|
15
21
|
}
|
|
@@ -38,13 +44,15 @@ export class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends
|
|
|
38
44
|
})
|
|
39
45
|
}
|
|
40
46
|
|
|
41
|
-
override resolve(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
override resolve(addresses: string[]): (TModule | null)[] {
|
|
48
|
+
return addresses.map((address) => {
|
|
49
|
+
console.log(`Resolving in MemoryNode: ${address}`)
|
|
50
|
+
if (address === 'archivist') {
|
|
51
|
+
console.log(`attachedModules: ${JSON.stringify(this.attachedModules(), null, 2)}`)
|
|
52
|
+
return this.attachedModules().find((module) => module.queryable(XyoArchivistGetQuerySchema)) ?? null
|
|
53
|
+
}
|
|
54
|
+
return this.attachedModuleMap?.get(address) ?? null
|
|
55
|
+
})
|
|
48
56
|
}
|
|
49
57
|
|
|
50
58
|
override register(module: TModule) {
|
package/src/NodeModule.ts
CHANGED
|
@@ -6,6 +6,6 @@ import { Node } from './Node'
|
|
|
6
6
|
export interface NodeModule<TModule extends Module = Module> extends Node, Module {
|
|
7
7
|
registeredModules(): PromisableArray<TModule>
|
|
8
8
|
attachedModules(): PromisableArray<TModule>
|
|
9
|
-
resolve(address: string): Promisable<TModule | null>
|
|
9
|
+
resolve(address: string[]): Promisable<(TModule | null)[]>
|
|
10
10
|
register(module: TModule): Promisable<void>
|
|
11
11
|
}
|
package/src/XyoNode.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert'
|
|
2
|
-
import { forget } from '@xylabs/forget'
|
|
3
2
|
import { XyoAccount } from '@xyo-network/account'
|
|
4
3
|
import { XyoArchivistWrapper, XyoMemoryArchivist } from '@xyo-network/archivist'
|
|
5
|
-
import { ModuleQueryResult, QueryBoundWitnessWrapper,
|
|
4
|
+
import { Module, ModuleQueryResult, QueryBoundWitnessWrapper, XyoErrorBuilder, XyoModule, XyoQueryBoundWitness } from '@xyo-network/module'
|
|
6
5
|
import { XyoModuleInstanceSchema } from '@xyo-network/module-instance-payload-plugin'
|
|
7
6
|
import { XyoPayload, XyoPayloads } from '@xyo-network/payload'
|
|
8
7
|
|
|
@@ -13,26 +12,24 @@ export abstract class XyoNode<TConfig extends NodeConfig = NodeConfig, TModule e
|
|
|
13
12
|
extends XyoModule<TConfig>
|
|
14
13
|
implements NodeModule
|
|
15
14
|
{
|
|
16
|
-
constructor(config?: TConfig, account?: XyoAccount, resolver?: XyoModuleResolverFunc) {
|
|
17
|
-
super(config, account, resolver)
|
|
18
|
-
forget(this.storeInstanceData())
|
|
19
|
-
}
|
|
20
|
-
|
|
21
15
|
private async storeInstanceData() {
|
|
22
16
|
const payload = { address: this.address, queries: this.queries, schema: XyoModuleInstanceSchema }
|
|
23
17
|
const [bw] = await this.bindResult([payload])
|
|
24
|
-
await new XyoArchivistWrapper(this.
|
|
18
|
+
await new XyoArchivistWrapper(await this.getArchivist()).insert([bw, payload])
|
|
25
19
|
}
|
|
26
20
|
|
|
27
21
|
/** Query Functions - Start */
|
|
28
22
|
abstract attach(_address: string): void
|
|
29
23
|
abstract detach(_address: string): void
|
|
30
|
-
abstract resolve(_address: string): TModule | null
|
|
24
|
+
abstract resolve(_address: string[]): (TModule | null)[]
|
|
31
25
|
|
|
32
|
-
private _archivist?:
|
|
33
|
-
public
|
|
26
|
+
private _archivist?: Module
|
|
27
|
+
public async getArchivist(): Promise<Module> {
|
|
34
28
|
if (!this._archivist) {
|
|
35
|
-
this._archivist =
|
|
29
|
+
this._archivist =
|
|
30
|
+
this._archivist ??
|
|
31
|
+
(this.config?.archivist ? this.resolver?.fromAddress([this.config?.archivist]).shift() : undefined) ??
|
|
32
|
+
(await XyoMemoryArchivist.create())
|
|
36
33
|
}
|
|
37
34
|
return this._archivist
|
|
38
35
|
}
|
|
@@ -52,36 +49,47 @@ export abstract class XyoNode<TConfig extends NodeConfig = NodeConfig, TModule e
|
|
|
52
49
|
}
|
|
53
50
|
/** Query Functions - End */
|
|
54
51
|
|
|
55
|
-
override query<T extends XyoQueryBoundWitness = XyoQueryBoundWitness>(query: T, payloads?: XyoPayload[]): Promise<ModuleQueryResult> {
|
|
52
|
+
override async query<T extends XyoQueryBoundWitness = XyoQueryBoundWitness>(query: T, payloads?: XyoPayload[]): Promise<ModuleQueryResult> {
|
|
56
53
|
const wrapper = QueryBoundWitnessWrapper.parseQuery<XyoNodeQuery>(query)
|
|
57
54
|
const typedQuery = wrapper.query.payload
|
|
58
55
|
assertEx(this.queryable(typedQuery.schema, wrapper.addresses))
|
|
59
56
|
|
|
60
57
|
const queryAccount = new XyoAccount()
|
|
61
58
|
const resultPayloads: XyoPayloads = []
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
59
|
+
try {
|
|
60
|
+
switch (typedQuery.schema) {
|
|
61
|
+
case XyoNodeAttachQuerySchema: {
|
|
62
|
+
this.attach(typedQuery.address)
|
|
63
|
+
break
|
|
64
|
+
}
|
|
65
|
+
case XyoNodeDetachQuerySchema: {
|
|
66
|
+
this.detach(typedQuery.address)
|
|
67
|
+
break
|
|
68
|
+
}
|
|
69
|
+
case XyoNodeAttachedQuerySchema: {
|
|
70
|
+
this.attached()
|
|
71
|
+
break
|
|
72
|
+
}
|
|
73
|
+
case XyoNodeRegisteredQuerySchema: {
|
|
74
|
+
this.registered()
|
|
75
|
+
break
|
|
76
|
+
}
|
|
77
|
+
default:
|
|
78
|
+
return await super.query(query, payloads)
|
|
74
79
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
default:
|
|
80
|
-
return super.query(query, payloads)
|
|
80
|
+
} catch (ex) {
|
|
81
|
+
const error = ex as Error
|
|
82
|
+
resultPayloads.push(new XyoErrorBuilder(wrapper.hash, error.message).build())
|
|
81
83
|
}
|
|
82
84
|
return this.bindResult(resultPayloads, queryAccount)
|
|
83
85
|
}
|
|
84
86
|
|
|
87
|
+
override async start() {
|
|
88
|
+
await super.start()
|
|
89
|
+
await this.storeInstanceData()
|
|
90
|
+
return this
|
|
91
|
+
}
|
|
92
|
+
|
|
85
93
|
register(_module: TModule): void {
|
|
86
94
|
throw new Error('Method not implemented.')
|
|
87
95
|
}
|
package/src/XyoNodeWrapper.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { XyoArchivistWrapper } from '@xyo-network/archivist'
|
|
2
2
|
import { Module, XyoModule, XyoModuleWrapper } from '@xyo-network/module'
|
|
3
3
|
import { PayloadWrapper } from '@xyo-network/payload'
|
|
4
|
+
import { Promisable } from '@xyo-network/promise'
|
|
4
5
|
import compact from 'lodash/compact'
|
|
5
6
|
|
|
6
7
|
import { NodeModule } from './NodeModule'
|
|
@@ -50,14 +51,14 @@ export class XyoNodeWrapper extends XyoModuleWrapper implements NodeModule {
|
|
|
50
51
|
|
|
51
52
|
async registeredModules(): Promise<XyoModule[]> {
|
|
52
53
|
const addresses = await this.registered()
|
|
53
|
-
return compact(await
|
|
54
|
+
return compact(await this.resolve(addresses))
|
|
54
55
|
}
|
|
55
56
|
async attachedModules(): Promise<XyoModule[]> {
|
|
56
57
|
const addresses = await this.attached()
|
|
57
|
-
return compact(await
|
|
58
|
+
return compact(await this.resolve(addresses))
|
|
58
59
|
}
|
|
59
60
|
|
|
60
|
-
resolve(_address: string): XyoModule | null {
|
|
61
|
+
resolve(_address: string[]): Promisable<(XyoModule | null)[]> {
|
|
61
62
|
throw Error('Not implemented')
|
|
62
63
|
}
|
|
63
64
|
}
|