@xyo-network/manifest 2.63.13 → 2.64.0
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/ManifestWrapper.js +29 -31
- package/dist/cjs/ManifestWrapper.js.map +1 -1
- package/dist/cjs/ModuleFactory.js +4 -4
- package/dist/cjs/ModuleFactory.js.map +1 -1
- package/dist/docs.json +912 -1515
- package/dist/esm/ManifestWrapper.js +28 -29
- package/dist/esm/ManifestWrapper.js.map +1 -1
- package/dist/esm/ModuleFactory.js +4 -4
- package/dist/esm/ModuleFactory.js.map +1 -1
- package/dist/types/ManifestWrapper.d.ts +5 -6
- package/dist/types/ManifestWrapper.d.ts.map +1 -1
- package/dist/types/Payload.d.ts +12 -9
- package/dist/types/Payload.d.ts.map +1 -1
- package/package.json +13 -11
- package/src/ManifestWrapper.ts +35 -46
- package/src/ModuleFactory.ts +4 -4
- package/src/Payload.ts +11 -9
- package/src/schema.json +98 -79
- package/src/spec/simple-node-inline-manifest.json +24 -14
- package/src/spec/simple-node-indirect-manifest.json +0 -41
|
@@ -8,54 +8,53 @@ export class ManifestWrapper extends PayloadWrapper {
|
|
|
8
8
|
super(payload);
|
|
9
9
|
this.wallet = wallet;
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
async loadModule(node, manifest, external = true, additionalCreatableModules) {
|
|
12
|
+
const collision = async (node, name, external) => {
|
|
13
|
+
const externalConflict = external ? (await (external ? node.upResolver : node.downResolver).resolve({ name: [name] })).length !== 0 : false;
|
|
14
|
+
return externalConflict || (await node.downResolver.resolve({ name: [name] })).length !== 0;
|
|
15
|
+
};
|
|
16
|
+
const creatableModules = { ...standardCreatableModules, ...additionalCreatableModules };
|
|
17
|
+
if (!(await collision(node, manifest.config.name, external))) {
|
|
18
|
+
if (manifest.config.language && manifest.config.language === 'javascript') {
|
|
19
|
+
assertEx((manifest.config.name && (await node.attach(manifest.config.name, external))) ??
|
|
20
|
+
(await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external)), `No module with config schema [${manifest.config.name}] registered`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
13
23
|
}
|
|
14
|
-
async
|
|
15
|
-
return await this.
|
|
24
|
+
async loadNodeFromIndex(node, index, additionalCreatableModules) {
|
|
25
|
+
return await this.loadNodeFromManifest(node, assertEx(this.nodeManifest(index), 'Failed to find Node Manifest'), additionalCreatableModules);
|
|
16
26
|
}
|
|
17
|
-
async
|
|
27
|
+
async loadNodeFromManifest(node, manifest, additionalCreatableModules) {
|
|
18
28
|
const nodeWrapper = NodeWrapper.wrap(node);
|
|
19
29
|
// Load Private Modules
|
|
20
30
|
await Promise.all(manifest.modules?.private?.map(async (moduleManifest) => {
|
|
21
|
-
await this.loadModule(nodeWrapper,
|
|
31
|
+
await this.loadModule(nodeWrapper, moduleManifest, false, additionalCreatableModules);
|
|
22
32
|
}) ?? [() => null]);
|
|
23
33
|
// Load Public Modules
|
|
24
34
|
await Promise.all(manifest.modules?.public?.map(async (moduleManifest) => {
|
|
25
|
-
await this.loadModule(nodeWrapper,
|
|
35
|
+
await this.loadModule(nodeWrapper, moduleManifest, true, additionalCreatableModules);
|
|
26
36
|
}) ?? [() => null]);
|
|
27
37
|
return node;
|
|
28
38
|
}
|
|
29
|
-
async
|
|
30
|
-
return await Promise.all(this.payload().
|
|
31
|
-
const subNode = await MemoryNode.create();
|
|
39
|
+
async loadNodes(node, additionalCreatableModules) {
|
|
40
|
+
return await Promise.all(this.payload().nodes?.map(async (nodeManifest, index) => {
|
|
41
|
+
const subNode = await MemoryNode.create({ config: { schema: 'network.xyo.node.config' }, wallet: await this.wallet.derivePath(`${index}'`) });
|
|
32
42
|
await node?.register(subNode);
|
|
33
|
-
await this.
|
|
43
|
+
await this.loadNodeFromManifest(subNode, nodeManifest, additionalCreatableModules);
|
|
34
44
|
return subNode;
|
|
35
45
|
}));
|
|
36
46
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const nodeWrapper = NodeWrapper.wrap(node);
|
|
40
|
-
if (!manifest.name || (await (external ? nodeWrapper.downResolver : nodeWrapper.upResolver).resolve({ name: [manifest.name] })).length === 0) {
|
|
41
|
-
if (manifest.language && manifest.language === 'javascript') {
|
|
42
|
-
const id = manifest.id;
|
|
43
|
-
assertEx((manifest.name && (await node.attach(manifest.name, external))) ??
|
|
44
|
-
(id ? await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external) : undefined), `No module named [${manifest.name}] registered`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
+
nodeManifest(index) {
|
|
48
|
+
return this.payload().nodes?.[index];
|
|
47
49
|
}
|
|
48
50
|
async registerModule(node, manifest, creatableModules) {
|
|
49
|
-
const creatableModule = assertEx(creatableModules?.[
|
|
50
|
-
const module = await creatableModule.create(
|
|
51
|
+
const creatableModule = assertEx(creatableModules?.[manifest.config.schema], `No module with [${manifest.config.schema}] config schema available for registration`);
|
|
52
|
+
const module = await creatableModule.create({
|
|
53
|
+
account: manifest.config.accountPath ? await this.wallet.derivePath(manifest.config.accountPath) : this.wallet,
|
|
54
|
+
config: assertEx(manifest.config, 'Missing config'),
|
|
55
|
+
});
|
|
51
56
|
await node.module.register(module);
|
|
52
57
|
return module;
|
|
53
58
|
}
|
|
54
|
-
resolveModuleManifest(manifest) {
|
|
55
|
-
if (manifest?.name && !manifest.id) {
|
|
56
|
-
return this.payload().modules?.[manifest.name];
|
|
57
|
-
}
|
|
58
|
-
return manifest;
|
|
59
|
-
}
|
|
60
59
|
}
|
|
61
60
|
//# sourceMappingURL=ManifestWrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManifestWrapper.js","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"ManifestWrapper.js","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ import { ModuleFactory } from '@xyo-network/module';
|
|
|
4
4
|
import { MemoryNode } from '@xyo-network/node';
|
|
5
5
|
import { MemorySentinel } from '@xyo-network/sentinel';
|
|
6
6
|
export const standardCreatableModules = {
|
|
7
|
-
'network.xyo.archivist': MemoryArchivist,
|
|
8
|
-
'network.xyo.bridge.http': ModuleFactory.withParams(HttpBridge, { config: { schema: HttpBridge.configSchema } }),
|
|
9
|
-
'network.xyo.node': MemoryNode,
|
|
10
|
-
'network.xyo.sentinel': MemorySentinel,
|
|
7
|
+
'network.xyo.archivist.config': MemoryArchivist,
|
|
8
|
+
'network.xyo.bridge.http.config': ModuleFactory.withParams(HttpBridge, { config: { schema: HttpBridge.configSchema } }),
|
|
9
|
+
'network.xyo.node.config': MemoryNode,
|
|
10
|
+
'network.xyo.sentinel.config': MemorySentinel,
|
|
11
11
|
};
|
|
12
12
|
//# sourceMappingURL=ModuleFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModuleFactory.js","sourceRoot":"","sources":["../../src/ModuleFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAA6B,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,MAAM,CAAC,MAAM,wBAAwB,GAA8B;IACjE,
|
|
1
|
+
{"version":3,"file":"ModuleFactory.js","sourceRoot":"","sources":["../../src/ModuleFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAA6B,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,MAAM,CAAC,MAAM,wBAAwB,GAA8B;IACjE,8BAA8B,EAAE,eAAe;IAC/C,gCAAgC,EAAE,aAAa,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC;IACvH,yBAAyB,EAAE,UAAU;IACrC,6BAA6B,EAAE,cAAc;CAC9C,CAAA"}
|
|
@@ -2,16 +2,15 @@ import { CreatableModuleDictionary } from '@xyo-network/module';
|
|
|
2
2
|
import { MemoryNode, NodeWrapper } from '@xyo-network/node';
|
|
3
3
|
import { PayloadWrapper } from '@xyo-network/payload-wrapper';
|
|
4
4
|
import { WalletInstance } from '@xyo-network/wallet-model';
|
|
5
|
-
import {
|
|
5
|
+
import { ManifestPayload, ModuleManifest, NodeManifest } from './Payload';
|
|
6
6
|
export declare class ManifestWrapper extends PayloadWrapper<ManifestPayload> {
|
|
7
7
|
protected wallet: WalletInstance;
|
|
8
8
|
constructor(payload: ManifestPayload, wallet: WalletInstance);
|
|
9
|
-
dAppManifest(id: string): DappManifest | undefined;
|
|
10
|
-
loadDappFromId(node: MemoryNode, id: string, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode<import("@xyo-network/node").MemoryNodeParams, import("@xyo-network/node").NodeModuleEventData>>;
|
|
11
|
-
loadDappFromManifest(node: MemoryNode, manifest: DappManifest, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode<import("@xyo-network/node").MemoryNodeParams, import("@xyo-network/node").NodeModuleEventData>>;
|
|
12
|
-
loadDapps(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode<import("@xyo-network/node").MemoryNodeParams, import("@xyo-network/node").NodeModuleEventData>[]>;
|
|
13
9
|
loadModule(node: NodeWrapper<MemoryNode>, manifest: ModuleManifest, external?: boolean, additionalCreatableModules?: CreatableModuleDictionary): Promise<void>;
|
|
10
|
+
loadNodeFromIndex(node: MemoryNode, index: number, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode<import("@xyo-network/node").MemoryNodeParams, import("@xyo-network/node").NodeModuleEventData>>;
|
|
11
|
+
loadNodeFromManifest(node: MemoryNode, manifest: NodeManifest, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode<import("@xyo-network/node").MemoryNodeParams, import("@xyo-network/node").NodeModuleEventData>>;
|
|
12
|
+
loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode<import("@xyo-network/node").MemoryNodeParams, import("@xyo-network/node").NodeModuleEventData>[]>;
|
|
13
|
+
nodeManifest(index: number): NodeManifest;
|
|
14
14
|
registerModule(node: NodeWrapper<MemoryNode>, manifest: ModuleManifest, creatableModules?: CreatableModuleDictionary): Promise<import("@xyo-network/module").Module>;
|
|
15
|
-
resolveModuleManifest(manifest?: ModuleManifest): ModuleManifest | undefined;
|
|
16
15
|
}
|
|
17
16
|
//# sourceMappingURL=ManifestWrapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManifestWrapper.d.ts","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"ManifestWrapper.d.ts","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAc,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG1D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAEzE,qBAAa,eAAgB,SAAQ,cAAc,CAAC,eAAe,CAAC;IAC5B,SAAS,CAAC,MAAM,EAAE,cAAc;gBAA1D,OAAO,EAAE,eAAe,EAAY,MAAM,EAAE,cAAc;IAIhE,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,UAAO,EAAE,0BAA0B,CAAC,EAAE,yBAAyB;IAkB3I,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,yBAAyB;IAIzG,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,0BAA0B,CAAC,EAAE,yBAAyB;IAmBrH,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,0BAA0B,CAAC,EAAE,yBAAyB;IAWzF,YAAY,CAAC,KAAK,EAAE,MAAM;IAIpB,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,CAAC,EAAE,yBAAyB;CAa3H"}
|
package/dist/types/Payload.d.ts
CHANGED
|
@@ -4,24 +4,27 @@ export type ManifestPayloadSchema = 'network.xyo.manifest';
|
|
|
4
4
|
export declare const ManifestPayloadSchema: ManifestPayloadSchema;
|
|
5
5
|
export interface Manifest {
|
|
6
6
|
description?: string;
|
|
7
|
-
id?: string;
|
|
8
|
-
name?: string;
|
|
9
7
|
}
|
|
10
|
-
export
|
|
8
|
+
export type ConfigManifest = ModuleConfig<{
|
|
9
|
+
schema: string;
|
|
10
|
+
}> & {
|
|
11
|
+
accountPath?: string;
|
|
12
|
+
features?: string[];
|
|
13
|
+
language?: string;
|
|
14
|
+
name: string;
|
|
15
|
+
os?: string;
|
|
16
|
+
};
|
|
17
|
+
export interface NodeManifest extends ModuleManifest {
|
|
11
18
|
modules?: {
|
|
12
19
|
private?: ModuleManifest[];
|
|
13
20
|
public?: ModuleManifest[];
|
|
14
21
|
};
|
|
15
22
|
}
|
|
16
23
|
export interface ModuleManifest extends Manifest {
|
|
17
|
-
|
|
18
|
-
config?: ModuleConfig;
|
|
19
|
-
features?: string[];
|
|
20
|
-
language?: string;
|
|
21
|
-
os?: string;
|
|
24
|
+
config: ConfigManifest;
|
|
22
25
|
}
|
|
23
26
|
export type ManifestPayload = Payload<{
|
|
24
|
-
dapps: DappManifest[];
|
|
25
27
|
modules?: Record<string, ModuleManifest>;
|
|
28
|
+
nodes: NodeManifest[];
|
|
26
29
|
}, ManifestPayloadSchema>;
|
|
27
30
|
//# sourceMappingURL=Payload.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Payload.d.ts","sourceRoot":"","sources":["../../src/Payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,MAAM,qBAAqB,GAAG,sBAAsB,CAAA;AAC1D,eAAO,MAAM,qBAAqB,EAAE,qBAA8C,CAAA;AAElF,MAAM,WAAW,QAAQ;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"Payload.d.ts","sourceRoot":"","sources":["../../src/Payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,MAAM,qBAAqB,GAAG,sBAAsB,CAAA;AAC1D,eAAO,MAAM,qBAAqB,EAAE,qBAA8C,CAAA;AAElF,MAAM,WAAW,QAAQ;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,cAAc,EAAE,CAAA;QAC1B,MAAM,CAAC,EAAE,cAAc,EAAE,CAAA;KAC1B,CAAA;CACF;AAED,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,MAAM,EAAE,cAAc,CAAA;CACvB;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CACnC;IACE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACxC,KAAK,EAAE,YAAY,EAAE,CAAA;CACtB,EACD,qBAAqB,CACtB,CAAA"}
|
package/package.json
CHANGED
|
@@ -13,15 +13,15 @@
|
|
|
13
13
|
"docs": "dist/docs.json",
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"@xylabs/assert": "^2.9.3",
|
|
16
|
-
"@xyo-network/http-bridge": "^2.
|
|
17
|
-
"@xyo-network/memory-archivist": "^2.
|
|
18
|
-
"@xyo-network/module": "^2.
|
|
19
|
-
"@xyo-network/module-model": "^2.
|
|
20
|
-
"@xyo-network/node": "^2.
|
|
21
|
-
"@xyo-network/payload-model": "^2.
|
|
22
|
-
"@xyo-network/payload-wrapper": "^2.
|
|
23
|
-
"@xyo-network/sentinel": "^2.
|
|
24
|
-
"@xyo-network/wallet-model": "^2.
|
|
16
|
+
"@xyo-network/http-bridge": "^2.64.0",
|
|
17
|
+
"@xyo-network/memory-archivist": "^2.64.0",
|
|
18
|
+
"@xyo-network/module": "^2.64.0",
|
|
19
|
+
"@xyo-network/module-model": "^2.64.0",
|
|
20
|
+
"@xyo-network/node": "^2.64.0",
|
|
21
|
+
"@xyo-network/payload-model": "^2.64.0",
|
|
22
|
+
"@xyo-network/payload-wrapper": "^2.64.0",
|
|
23
|
+
"@xyo-network/sentinel": "^2.64.0",
|
|
24
|
+
"@xyo-network/wallet-model": "^2.64.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@xylabs/ts-scripts-yarn3": "^2.17.17",
|
|
@@ -43,7 +43,9 @@
|
|
|
43
43
|
"./dist/docs.json": {
|
|
44
44
|
"default": "./dist/docs.json"
|
|
45
45
|
},
|
|
46
|
-
"./package.json": "./package.json"
|
|
46
|
+
"./package.json": "./package.json",
|
|
47
|
+
"./schema.json": "./src/schema.json",
|
|
48
|
+
"./schema": "./src/schema.json"
|
|
47
49
|
},
|
|
48
50
|
"main": "dist/cjs/index.js",
|
|
49
51
|
"module": "dist/esm/index.js",
|
|
@@ -59,5 +61,5 @@
|
|
|
59
61
|
},
|
|
60
62
|
"sideEffects": false,
|
|
61
63
|
"types": "dist/types/index.d.ts",
|
|
62
|
-
"version": "2.
|
|
64
|
+
"version": "2.64.0"
|
|
63
65
|
}
|
package/src/ManifestWrapper.ts
CHANGED
|
@@ -1,95 +1,84 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert'
|
|
2
2
|
import { CreatableModuleDictionary } from '@xyo-network/module'
|
|
3
|
-
import { MemoryNode, NodeWrapper } from '@xyo-network/node'
|
|
3
|
+
import { MemoryNode, NodeModule, NodeWrapper } from '@xyo-network/node'
|
|
4
4
|
import { PayloadWrapper } from '@xyo-network/payload-wrapper'
|
|
5
5
|
import { WalletInstance } from '@xyo-network/wallet-model'
|
|
6
6
|
|
|
7
7
|
import { standardCreatableModules } from './ModuleFactory'
|
|
8
|
-
import {
|
|
8
|
+
import { ManifestPayload, ModuleManifest, NodeManifest } from './Payload'
|
|
9
9
|
|
|
10
10
|
export class ManifestWrapper extends PayloadWrapper<ManifestPayload> {
|
|
11
11
|
constructor(payload: ManifestPayload, protected wallet: WalletInstance) {
|
|
12
12
|
super(payload)
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
async loadModule(node: NodeWrapper<MemoryNode>, manifest: ModuleManifest, external = true, additionalCreatableModules?: CreatableModuleDictionary) {
|
|
16
|
+
const collision = async (node: NodeModule, name: string, external: boolean) => {
|
|
17
|
+
const externalConflict = external ? (await (external ? node.upResolver : node.downResolver).resolve({ name: [name] })).length !== 0 : false
|
|
18
|
+
return externalConflict || (await node.downResolver.resolve({ name: [name] })).length !== 0
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const creatableModules = { ...standardCreatableModules, ...additionalCreatableModules }
|
|
22
|
+
if (!(await collision(node, manifest.config.name, external))) {
|
|
23
|
+
if (manifest.config.language && manifest.config.language === 'javascript') {
|
|
24
|
+
assertEx(
|
|
25
|
+
(manifest.config.name && (await node.attach(manifest.config.name, external))) ??
|
|
26
|
+
(await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external)),
|
|
27
|
+
`No module with config schema [${manifest.config.name}] registered`,
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
}
|
|
17
31
|
}
|
|
18
32
|
|
|
19
|
-
async
|
|
20
|
-
return await this.
|
|
33
|
+
async loadNodeFromIndex(node: MemoryNode, index: number, additionalCreatableModules?: CreatableModuleDictionary) {
|
|
34
|
+
return await this.loadNodeFromManifest(node, assertEx(this.nodeManifest(index), 'Failed to find Node Manifest'), additionalCreatableModules)
|
|
21
35
|
}
|
|
22
36
|
|
|
23
|
-
async
|
|
37
|
+
async loadNodeFromManifest(node: MemoryNode, manifest: NodeManifest, additionalCreatableModules?: CreatableModuleDictionary) {
|
|
24
38
|
const nodeWrapper = NodeWrapper.wrap<NodeWrapper<MemoryNode>>(node)
|
|
25
39
|
// Load Private Modules
|
|
26
40
|
await Promise.all(
|
|
27
41
|
manifest.modules?.private?.map(async (moduleManifest) => {
|
|
28
|
-
await this.loadModule(
|
|
29
|
-
nodeWrapper,
|
|
30
|
-
assertEx(this.resolveModuleManifest(moduleManifest), 'Unable to resolve module manifest'),
|
|
31
|
-
false,
|
|
32
|
-
additionalCreatableModules,
|
|
33
|
-
)
|
|
42
|
+
await this.loadModule(nodeWrapper, moduleManifest, false, additionalCreatableModules)
|
|
34
43
|
}) ?? [() => null],
|
|
35
44
|
)
|
|
36
45
|
|
|
37
46
|
// Load Public Modules
|
|
38
47
|
await Promise.all(
|
|
39
48
|
manifest.modules?.public?.map(async (moduleManifest) => {
|
|
40
|
-
await this.loadModule(
|
|
41
|
-
nodeWrapper,
|
|
42
|
-
assertEx(this.resolveModuleManifest(moduleManifest), 'Unable to resolve module manifest'),
|
|
43
|
-
true,
|
|
44
|
-
additionalCreatableModules,
|
|
45
|
-
)
|
|
49
|
+
await this.loadModule(nodeWrapper, moduleManifest, true, additionalCreatableModules)
|
|
46
50
|
}) ?? [() => null],
|
|
47
51
|
)
|
|
48
52
|
|
|
49
53
|
return node
|
|
50
54
|
}
|
|
51
55
|
|
|
52
|
-
async
|
|
56
|
+
async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary) {
|
|
53
57
|
return await Promise.all(
|
|
54
|
-
this.payload().
|
|
55
|
-
const subNode = await MemoryNode.create()
|
|
58
|
+
this.payload().nodes?.map(async (nodeManifest, index) => {
|
|
59
|
+
const subNode = await MemoryNode.create({ config: { schema: 'network.xyo.node.config' }, wallet: await this.wallet.derivePath(`${index}'`) })
|
|
56
60
|
await node?.register(subNode)
|
|
57
|
-
await this.
|
|
61
|
+
await this.loadNodeFromManifest(subNode, nodeManifest, additionalCreatableModules)
|
|
58
62
|
return subNode
|
|
59
63
|
}),
|
|
60
64
|
)
|
|
61
65
|
}
|
|
62
66
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
const nodeWrapper = NodeWrapper.wrap(node)
|
|
66
|
-
if (!manifest.name || (await (external ? nodeWrapper.downResolver : nodeWrapper.upResolver).resolve({ name: [manifest.name] })).length === 0) {
|
|
67
|
-
if (manifest.language && manifest.language === 'javascript') {
|
|
68
|
-
const id = manifest.id
|
|
69
|
-
assertEx(
|
|
70
|
-
(manifest.name && (await node.attach(manifest.name, external))) ??
|
|
71
|
-
(id ? await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external) : undefined),
|
|
72
|
-
`No module named [${manifest.name}] registered`,
|
|
73
|
-
)
|
|
74
|
-
}
|
|
75
|
-
}
|
|
67
|
+
nodeManifest(index: number) {
|
|
68
|
+
return this.payload().nodes?.[index]
|
|
76
69
|
}
|
|
77
70
|
|
|
78
71
|
async registerModule(node: NodeWrapper<MemoryNode>, manifest: ModuleManifest, creatableModules?: CreatableModuleDictionary) {
|
|
79
72
|
const creatableModule = assertEx(
|
|
80
|
-
creatableModules?.[
|
|
81
|
-
`No module with [${manifest.
|
|
73
|
+
creatableModules?.[manifest.config.schema],
|
|
74
|
+
`No module with [${manifest.config.schema}] config schema available for registration`,
|
|
82
75
|
)
|
|
83
76
|
|
|
84
|
-
const module = await creatableModule.create(
|
|
77
|
+
const module = await creatableModule.create({
|
|
78
|
+
account: manifest.config.accountPath ? await this.wallet.derivePath(manifest.config.accountPath) : this.wallet,
|
|
79
|
+
config: assertEx(manifest.config, 'Missing config'),
|
|
80
|
+
})
|
|
85
81
|
await node.module.register(module)
|
|
86
82
|
return module
|
|
87
83
|
}
|
|
88
|
-
|
|
89
|
-
resolveModuleManifest(manifest?: ModuleManifest) {
|
|
90
|
-
if (manifest?.name && !manifest.id) {
|
|
91
|
-
return this.payload().modules?.[manifest.name]
|
|
92
|
-
}
|
|
93
|
-
return manifest
|
|
94
|
-
}
|
|
95
84
|
}
|
package/src/ModuleFactory.ts
CHANGED
|
@@ -5,8 +5,8 @@ import { MemoryNode } from '@xyo-network/node'
|
|
|
5
5
|
import { MemorySentinel } from '@xyo-network/sentinel'
|
|
6
6
|
|
|
7
7
|
export const standardCreatableModules: CreatableModuleDictionary = {
|
|
8
|
-
'network.xyo.archivist': MemoryArchivist,
|
|
9
|
-
'network.xyo.bridge.http': ModuleFactory.withParams(HttpBridge, { config: { schema: HttpBridge.configSchema } }),
|
|
10
|
-
'network.xyo.node': MemoryNode,
|
|
11
|
-
'network.xyo.sentinel': MemorySentinel,
|
|
8
|
+
'network.xyo.archivist.config': MemoryArchivist,
|
|
9
|
+
'network.xyo.bridge.http.config': ModuleFactory.withParams(HttpBridge, { config: { schema: HttpBridge.configSchema } }),
|
|
10
|
+
'network.xyo.node.config': MemoryNode,
|
|
11
|
+
'network.xyo.sentinel.config': MemorySentinel,
|
|
12
12
|
}
|
package/src/Payload.ts
CHANGED
|
@@ -6,11 +6,17 @@ export const ManifestPayloadSchema: ManifestPayloadSchema = 'network.xyo.manifes
|
|
|
6
6
|
|
|
7
7
|
export interface Manifest {
|
|
8
8
|
description?: string
|
|
9
|
-
id?: string
|
|
10
|
-
name?: string
|
|
11
9
|
}
|
|
12
10
|
|
|
13
|
-
export
|
|
11
|
+
export type ConfigManifest = ModuleConfig<{ schema: string }> & {
|
|
12
|
+
accountPath?: string
|
|
13
|
+
features?: string[]
|
|
14
|
+
language?: string
|
|
15
|
+
name: string
|
|
16
|
+
os?: string
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface NodeManifest extends ModuleManifest {
|
|
14
20
|
modules?: {
|
|
15
21
|
private?: ModuleManifest[]
|
|
16
22
|
public?: ModuleManifest[]
|
|
@@ -18,17 +24,13 @@ export interface DappManifest extends Manifest {
|
|
|
18
24
|
}
|
|
19
25
|
|
|
20
26
|
export interface ModuleManifest extends Manifest {
|
|
21
|
-
|
|
22
|
-
config?: ModuleConfig
|
|
23
|
-
features?: string[]
|
|
24
|
-
language?: string
|
|
25
|
-
os?: string
|
|
27
|
+
config: ConfigManifest
|
|
26
28
|
}
|
|
27
29
|
|
|
28
30
|
export type ManifestPayload = Payload<
|
|
29
31
|
{
|
|
30
|
-
dapps: DappManifest[]
|
|
31
32
|
modules?: Record<string, ModuleManifest>
|
|
33
|
+
nodes: NodeManifest[]
|
|
32
34
|
},
|
|
33
35
|
ManifestPayloadSchema
|
|
34
36
|
>
|