@xyo-network/node 2.43.5 → 2.43.6
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.map +1 -1
- package/dist/cjs/AbstractNode.js.map +1 -1
- package/dist/cjs/MemoryNode.d.ts +4 -1
- package/dist/cjs/MemoryNode.d.ts.map +1 -1
- package/dist/cjs/MemoryNode.js +35 -16
- package/dist/cjs/MemoryNode.js.map +1 -1
- package/dist/docs.json +1239 -929
- package/dist/esm/AbstractNode.d.ts.map +1 -1
- package/dist/esm/AbstractNode.js.map +1 -1
- package/dist/esm/MemoryNode.d.ts +4 -1
- package/dist/esm/MemoryNode.d.ts.map +1 -1
- package/dist/esm/MemoryNode.js +34 -16
- package/dist/esm/MemoryNode.js.map +1 -1
- package/package.json +11 -10
- package/src/AbstractNode.ts +1 -0
- package/src/MemoryNode.spec.ts +39 -1
- package/src/MemoryNode.ts +36 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,OAAO,EACL,cAAc,EACd,MAAM,EACN,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EAIb,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAoB,MAAM,UAAU,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAKnC,MAAM,WAAW,kBAAkB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,YAAY,CAAC,OAAO,CAAC;IACzI,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;CAC7C;
|
|
1
|
+
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EACL,cAAc,EASd,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,GAEhB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAIhE,OAAO,EAAc,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEvD,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,wBAAwB,EAAgB,4BAA4B,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"AbstractNode.js","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EACL,cAAc,EASd,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,GAEhB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAIhE,OAAO,EAAc,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEvD,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,wBAAwB,EAAgB,4BAA4B,EAAE,MAAM,WAAW,CAAA;AAQtJ,MAAM,OAAgB,YACpB,SAAQ,cAAuB;IAG/B,MAAM,CAAU,YAAY,GAAG,gBAAgB,CAAA;IAErC,gBAAgB,CAA2B;IAErD,YAAsB,MAA4C;QAChE,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,IAAI,oBAAoB,EAAW,CAAA;IACxF,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,MAAM,CAAC,MAAoC;QAC/D,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,YAAY;QACZ,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,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;oBACrC,MAAK;iBACN;gBACD,KAAK,wBAAwB,CAAC,CAAC;oBAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;oBACrC,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,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;oBACzC,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;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,cAAc,CAClB,OAAwC,EACxC,MAAqB;QAErB,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;IACpE,CAAC;IAEQ,KAAK,CAAC,KAAK;QAClB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,iBAAiB,CACrB,OAAwC,EACxC,MAAqB;QAErB,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aACnC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,IAAI;gBACF,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA;aACxB;YAAC,OAAO,IAAI,EAAE;gBACb,OAAO,SAAS,CAAA;aACjB;QACH,CAAC,CAAC;aACD,MAAM,CAAC,MAAM,CAAC,CAAA;IACnB,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"}
|
package/dist/esm/MemoryNode.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Module, ModuleFilter } from '@xyo-network/module';
|
|
2
2
|
import { AbstractNode, AbstractNodeParams } from './AbstractNode';
|
|
3
3
|
import { NodeConfig } from './Config';
|
|
4
|
+
export interface MemoryNodeParams<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module> extends AbstractNodeParams<TConfig, TModule> {
|
|
5
|
+
autoAttachExternallyResolved?: boolean;
|
|
6
|
+
}
|
|
4
7
|
export declare class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module> extends AbstractNode<TConfig, TModule> {
|
|
5
8
|
static configSchema: "network.xyo.node.config";
|
|
6
9
|
private registeredModuleMap;
|
|
7
|
-
static create(params?: Partial<
|
|
10
|
+
static create(params?: Partial<MemoryNodeParams>): Promise<MemoryNode>;
|
|
8
11
|
attach(address: string, name?: string): void;
|
|
9
12
|
detach(address: string): void;
|
|
10
13
|
register(module: TModule): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAA+C,MAAM,EAAE,YAAY,EAAkB,MAAM,qBAAqB,CAAA;AAEvH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,UAAU,EAAoB,MAAM,UAAU,CAAA;AAEvD,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,CACxG,SAAQ,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;IAC5C,4BAA4B,CAAC,EAAE,OAAO,CAAA;CACvC;AAED,qBAAa,UAAU,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC;IACtI,MAAM,CAAC,YAAY,4BAAmB;IACtC,OAAO,CAAC,mBAAmB,CAA6B;WAElC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAwB5E,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAKrC,MAAM,CAAC,OAAO,EAAE,MAAM;IAItB,QAAQ,CAAC,MAAM,EAAE,OAAO;IAIxB,UAAU;IAMV,iBAAiB;IAMX,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAOlD,UAAU,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAY3D,UAAU,CAAC,MAAM,EAAE,OAAO;CAGpC"}
|
package/dist/esm/MemoryNode.js
CHANGED
|
@@ -1,23 +1,36 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert';
|
|
2
|
+
import { exists } from '@xylabs/exists';
|
|
3
|
+
import { fulfilled } from '@xylabs/promise';
|
|
4
|
+
import { duplicateModules, mixinResolverEventEmitter } from '@xyo-network/module';
|
|
2
5
|
import { AbstractNode } from './AbstractNode';
|
|
3
6
|
import { NodeConfigSchema } from './Config';
|
|
4
|
-
/**
|
|
5
|
-
* Used to filter duplicates during module resolution since we search
|
|
6
|
-
* internal and external resolvers for modules
|
|
7
|
-
* @param value Current Module
|
|
8
|
-
* @param index Current Module's index
|
|
9
|
-
* @param array Module Array
|
|
10
|
-
* @returns True if the Module's address is the first occurrence of
|
|
11
|
-
* that address in the array, false otherwise
|
|
12
|
-
*/
|
|
13
|
-
const duplicateModules = (value, index, array) => {
|
|
14
|
-
return array.findIndex((v) => v.address === value.address) === index;
|
|
15
|
-
};
|
|
16
7
|
export class MemoryNode extends AbstractNode {
|
|
17
8
|
static configSchema = NodeConfigSchema;
|
|
18
9
|
registeredModuleMap = new Map();
|
|
19
10
|
static async create(params) {
|
|
20
|
-
|
|
11
|
+
const instance = (await super.create(params));
|
|
12
|
+
if (params?.resolver && params?.autoAttachExternallyResolved) {
|
|
13
|
+
const resolver = mixinResolverEventEmitter(params?.resolver);
|
|
14
|
+
resolver.on('moduleResolved', (args) => {
|
|
15
|
+
const { module, filter } = args;
|
|
16
|
+
try {
|
|
17
|
+
instance.register(module);
|
|
18
|
+
if (filter?.name?.length) {
|
|
19
|
+
filter.name.map((name) => {
|
|
20
|
+
instance.attach(module.address, name);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
instance.attach(module.address);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
params.logger?.error(`Error attaching externally resolved module: 0x${module.address}`);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
instance.resolver = resolver;
|
|
32
|
+
}
|
|
33
|
+
return instance;
|
|
21
34
|
}
|
|
22
35
|
attach(address, name) {
|
|
23
36
|
const module = assertEx(this.registeredModuleMap.get(address), 'No module found at that address');
|
|
@@ -43,13 +56,18 @@ export class MemoryNode extends AbstractNode {
|
|
|
43
56
|
const internal = this.internalResolver.resolve(filter);
|
|
44
57
|
const external = this.resolver?.resolve(filter) || [];
|
|
45
58
|
const resolved = await Promise.all([internal, external]);
|
|
46
|
-
return resolved.flat().filter(duplicateModules);
|
|
59
|
+
return resolved.flat().filter(exists).filter(duplicateModules);
|
|
47
60
|
}
|
|
48
61
|
async tryResolve(filter) {
|
|
49
62
|
const internal = this.internalResolver.tryResolve(filter);
|
|
50
63
|
const external = this.resolver?.tryResolve(filter) || [];
|
|
51
|
-
const resolved = await Promise.
|
|
52
|
-
return resolved
|
|
64
|
+
const resolved = await Promise.allSettled([internal, external]);
|
|
65
|
+
return resolved
|
|
66
|
+
.filter(fulfilled)
|
|
67
|
+
.map((r) => r.value)
|
|
68
|
+
.flat()
|
|
69
|
+
.filter(exists)
|
|
70
|
+
.filter(duplicateModules);
|
|
53
71
|
}
|
|
54
72
|
unregister(module) {
|
|
55
73
|
this.registeredModuleMap.delete(module.address);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryNode.js","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"MemoryNode.js","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -12,15 +12,16 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@xylabs/assert": "^2.6.15",
|
|
14
14
|
"@xylabs/exists": "^2.6.15",
|
|
15
|
-
"@
|
|
16
|
-
"@xyo-network/
|
|
17
|
-
"@xyo-network/
|
|
18
|
-
"@xyo-network/
|
|
19
|
-
"@xyo-network/module
|
|
20
|
-
"@xyo-network/
|
|
21
|
-
"@xyo-network/payload-
|
|
22
|
-
"@xyo-network/payload-
|
|
23
|
-
"@xyo-network/
|
|
15
|
+
"@xylabs/promise": "^2.6.15",
|
|
16
|
+
"@xyo-network/account": "^2.43.6",
|
|
17
|
+
"@xyo-network/address-payload-plugin": "^2.43.6",
|
|
18
|
+
"@xyo-network/archivist-wrapper": "^2.43.6",
|
|
19
|
+
"@xyo-network/module": "^2.43.6",
|
|
20
|
+
"@xyo-network/module-model": "^2.43.6",
|
|
21
|
+
"@xyo-network/payload-builder": "^2.43.6",
|
|
22
|
+
"@xyo-network/payload-model": "^2.43.6",
|
|
23
|
+
"@xyo-network/payload-wrapper": "^2.43.6",
|
|
24
|
+
"@xyo-network/promise": "^2.43.6"
|
|
24
25
|
},
|
|
25
26
|
"devDependencies": {
|
|
26
27
|
"@xylabs/ts-scripts-yarn3": "^2.12.0"
|
|
@@ -58,5 +59,5 @@
|
|
|
58
59
|
},
|
|
59
60
|
"sideEffects": false,
|
|
60
61
|
"types": "dist/esm/index.d.ts",
|
|
61
|
-
"version": "2.43.
|
|
62
|
+
"version": "2.43.6"
|
|
62
63
|
}
|
package/src/AbstractNode.ts
CHANGED
|
@@ -30,6 +30,7 @@ import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeDetachQuer
|
|
|
30
30
|
export interface AbstractNodeParams<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module> extends ModuleParams<TConfig> {
|
|
31
31
|
internalResolver?: ModuleRepository<TModule>
|
|
32
32
|
}
|
|
33
|
+
|
|
33
34
|
export abstract class AbstractNode<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module>
|
|
34
35
|
extends AbstractModule<TConfig>
|
|
35
36
|
implements NodeModule
|
package/src/MemoryNode.spec.ts
CHANGED
|
@@ -14,7 +14,7 @@ import { AbstractModule, Module, ModuleDescription, SimpleModuleResolver } from
|
|
|
14
14
|
import { Account, PayloadWrapper, XyoPayload, XyoPayloadBuilder, XyoPayloadSchema } from '@xyo-network/protocol'
|
|
15
15
|
|
|
16
16
|
import { NodeConfigSchema } from './Config'
|
|
17
|
-
import { MemoryNode } from './MemoryNode'
|
|
17
|
+
import { MemoryNode, MemoryNodeParams } from './MemoryNode'
|
|
18
18
|
|
|
19
19
|
describe('MemoryNode', () => {
|
|
20
20
|
const testAccount1 = new Account({ phrase: 'testPhrase1' })
|
|
@@ -76,6 +76,44 @@ describe('MemoryNode', () => {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
})
|
|
79
|
+
describe('with autoAttachExternallyResolved true', () => {
|
|
80
|
+
it('attaches external modules to internal resolver', async () => {
|
|
81
|
+
// Arrange
|
|
82
|
+
// Create a MemoryNode with no modules in the internal
|
|
83
|
+
// resolver and one module in the external resolver
|
|
84
|
+
const resolver = new SimpleModuleResolver()
|
|
85
|
+
const internalResolver = new SimpleModuleResolver()
|
|
86
|
+
const params: MemoryNodeParams = {
|
|
87
|
+
autoAttachExternallyResolved: true,
|
|
88
|
+
config: { schema: NodeConfigSchema },
|
|
89
|
+
internalResolver,
|
|
90
|
+
resolver,
|
|
91
|
+
}
|
|
92
|
+
const module = await MemoryArchivist.create()
|
|
93
|
+
const filter = { address: [module.address] }
|
|
94
|
+
resolver.add(module)
|
|
95
|
+
// No modules exist in internal resolver
|
|
96
|
+
expect(await internalResolver.tryResolve(filter)).toBeArrayOfSize(0)
|
|
97
|
+
// Module exists in external resolver
|
|
98
|
+
expect(await resolver.tryResolve(filter)).toBeArrayOfSize(1)
|
|
99
|
+
const node = await MemoryNode.create(params)
|
|
100
|
+
// No modules are attached
|
|
101
|
+
expect(await node.attached()).toBeArrayOfSize(0)
|
|
102
|
+
|
|
103
|
+
// Act
|
|
104
|
+
// Query for unattached module (by address) that exists in
|
|
105
|
+
// external resolver
|
|
106
|
+
expect(await node.tryResolve(filter)).toBeArrayOfSize(1)
|
|
107
|
+
|
|
108
|
+
// Assert
|
|
109
|
+
// Module is now attached
|
|
110
|
+
expect(await node.attached()).toBeArrayOfSize(1)
|
|
111
|
+
// Module exists in internal resolver
|
|
112
|
+
expect(await internalResolver.tryResolve(filter)).toBeArrayOfSize(1)
|
|
113
|
+
// Module still exists in external resolver
|
|
114
|
+
expect(await resolver.tryResolve(filter)).toBeArrayOfSize(1)
|
|
115
|
+
})
|
|
116
|
+
})
|
|
79
117
|
})
|
|
80
118
|
describe('register', () => {
|
|
81
119
|
it('registers module', async () => {
|
package/src/MemoryNode.ts
CHANGED
|
@@ -1,28 +1,42 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert'
|
|
2
|
-
import {
|
|
2
|
+
import { exists } from '@xylabs/exists'
|
|
3
|
+
import { fulfilled } from '@xylabs/promise'
|
|
4
|
+
import { duplicateModules, mixinResolverEventEmitter, Module, ModuleFilter, ModuleResolver } from '@xyo-network/module'
|
|
3
5
|
|
|
4
6
|
import { AbstractNode, AbstractNodeParams } from './AbstractNode'
|
|
5
7
|
import { NodeConfig, NodeConfigSchema } from './Config'
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
* @param value Current Module
|
|
11
|
-
* @param index Current Module's index
|
|
12
|
-
* @param array Module Array
|
|
13
|
-
* @returns True if the Module's address is the first occurrence of
|
|
14
|
-
* that address in the array, false otherwise
|
|
15
|
-
*/
|
|
16
|
-
const duplicateModules = (value: Module, index: number, array: Module[]): value is Module => {
|
|
17
|
-
return array.findIndex((v) => v.address === value.address) === index
|
|
9
|
+
export interface MemoryNodeParams<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module>
|
|
10
|
+
extends AbstractNodeParams<TConfig, TModule> {
|
|
11
|
+
autoAttachExternallyResolved?: boolean
|
|
18
12
|
}
|
|
19
13
|
|
|
20
14
|
export class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module> extends AbstractNode<TConfig, TModule> {
|
|
21
15
|
static configSchema = NodeConfigSchema
|
|
22
16
|
private registeredModuleMap = new Map<string, TModule>()
|
|
23
17
|
|
|
24
|
-
static override async create(params?: Partial<
|
|
25
|
-
|
|
18
|
+
static override async create(params?: Partial<MemoryNodeParams>): Promise<MemoryNode> {
|
|
19
|
+
const instance = (await super.create(params)) as MemoryNode
|
|
20
|
+
if (params?.resolver && params?.autoAttachExternallyResolved) {
|
|
21
|
+
const resolver = mixinResolverEventEmitter(params?.resolver)
|
|
22
|
+
resolver.on('moduleResolved', (args) => {
|
|
23
|
+
const { module, filter } = args
|
|
24
|
+
try {
|
|
25
|
+
instance.register(module)
|
|
26
|
+
if (filter?.name?.length) {
|
|
27
|
+
filter.name.map((name) => {
|
|
28
|
+
instance.attach(module.address, name)
|
|
29
|
+
})
|
|
30
|
+
} else {
|
|
31
|
+
instance.attach(module.address)
|
|
32
|
+
}
|
|
33
|
+
} catch (err) {
|
|
34
|
+
params.logger?.error(`Error attaching externally resolved module: 0x${module.address}`)
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
instance.resolver = resolver
|
|
38
|
+
}
|
|
39
|
+
return instance
|
|
26
40
|
}
|
|
27
41
|
|
|
28
42
|
override attach(address: string, name?: string) {
|
|
@@ -54,14 +68,19 @@ export class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends
|
|
|
54
68
|
const internal = this.internalResolver.resolve(filter)
|
|
55
69
|
const external = (this.resolver as ModuleResolver<TModule> | undefined)?.resolve(filter) || []
|
|
56
70
|
const resolved = await Promise.all([internal, external])
|
|
57
|
-
return resolved.flat().filter(duplicateModules)
|
|
71
|
+
return resolved.flat().filter(exists).filter(duplicateModules)
|
|
58
72
|
}
|
|
59
73
|
|
|
60
74
|
override async tryResolve(filter?: ModuleFilter): Promise<TModule[]> {
|
|
61
75
|
const internal = this.internalResolver.tryResolve(filter)
|
|
62
76
|
const external = (this.resolver as ModuleResolver<TModule> | undefined)?.tryResolve(filter) || []
|
|
63
|
-
const resolved = await Promise.
|
|
64
|
-
return resolved
|
|
77
|
+
const resolved = await Promise.allSettled([internal, external])
|
|
78
|
+
return resolved
|
|
79
|
+
.filter(fulfilled)
|
|
80
|
+
.map((r) => r.value)
|
|
81
|
+
.flat()
|
|
82
|
+
.filter(exists)
|
|
83
|
+
.filter(duplicateModules)
|
|
65
84
|
}
|
|
66
85
|
|
|
67
86
|
override unregister(module: TModule) {
|