@xyo-network/manifest 2.84.6 → 2.84.7
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/browser/ManifestWrapper.d.cts.map +1 -1
- package/dist/browser/ManifestWrapper.d.mts.map +1 -1
- package/dist/browser/ManifestWrapper.d.ts.map +1 -1
- package/dist/browser/index.cjs +11 -13
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +11 -13
- package/dist/browser/index.js.map +1 -1
- package/dist/node/ManifestWrapper.d.cts.map +1 -1
- package/dist/node/ManifestWrapper.d.mts.map +1 -1
- package/dist/node/ManifestWrapper.d.ts.map +1 -1
- package/dist/node/index.cjs +153 -0
- package/dist/node/index.cjs.map +1 -0
- package/dist/node/index.js +51 -79
- package/dist/node/index.js.map +1 -1
- package/package.json +19 -19
- package/src/ManifestWrapper.ts +12 -14
- package/dist/node/index.mjs +0 -129
- package/dist/node/index.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManifestWrapper.d.ts","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAEL,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EAGrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,wEAAwE;AACxE,qBAAa,eAAgB,SAAQ,cAAc,CAAC,sBAAsB,CAAC;IAGvE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IAChD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,EAAE;IAC3D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,sBAAsB,EAAE;gBAJ5D,OAAO,EAAE,sBAAsB,EACZ,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,oBAAmD,EAC5D,cAAc,GAAE,sBAAsB,EAAO,EAC7C,eAAe,GAAE,sBAAsB,EAAO;IAK7D,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9I,UAAU,CACd,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,OAAO,EACjB,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ManifestWrapper.d.ts","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAEL,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EAGrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,wEAAwE;AACxE,qBAAa,eAAgB,SAAQ,cAAc,CAAC,sBAAsB,CAAC;IAGvE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IAChD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,EAAE;IAC3D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,sBAAsB,EAAE;gBAJ5D,OAAO,EAAE,sBAAsB,EACZ,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,oBAAmD,EAC5D,cAAc,GAAE,sBAAsB,EAAO,EAC7C,eAAe,GAAE,sBAAsB,EAAO;IAK7D,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9I,UAAU,CACd,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,OAAO,EACjB,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,IAAI,CAAC;IA0BV,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IAC3G,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;IAO7G,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IACrI,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;IA6C7I;;OAEG;IACG,SAAS;IACb,oDAAoD;IACpD,IAAI,CAAC,EAAE,UAAU;IACjB,mCAAmC;IACnC,0BAA0B,CAAC,EAAE,uBAAuB,GACnD,OAAO,CAAC,UAAU,EAAE,CAAC;IAClB,SAAS;IACb,oDAAoD;IACpD,IAAI,CAAC,EAAE,UAAU;IACjB,mCAAmC;IACnC,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,UAAU,EAAE,CAAC;IAaxB,YAAY,CAAC,KAAK,EAAE,MAAM;IAI1B,sDAAsD;YACxC,cAAc;CAsB7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManifestWrapper.d.ts","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAEL,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EAGrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,wEAAwE;AACxE,qBAAa,eAAgB,SAAQ,cAAc,CAAC,sBAAsB,CAAC;IAGvE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IAChD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,EAAE;IAC3D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,sBAAsB,EAAE;gBAJ5D,OAAO,EAAE,sBAAsB,EACZ,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,oBAAmD,EAC5D,cAAc,GAAE,sBAAsB,EAAO,EAC7C,eAAe,GAAE,sBAAsB,EAAO;IAK7D,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9I,UAAU,CACd,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,OAAO,EACjB,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ManifestWrapper.d.ts","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAEL,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EAGrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,wEAAwE;AACxE,qBAAa,eAAgB,SAAQ,cAAc,CAAC,sBAAsB,CAAC;IAGvE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IAChD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,EAAE;IAC3D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,sBAAsB,EAAE;gBAJ5D,OAAO,EAAE,sBAAsB,EACZ,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,oBAAmD,EAC5D,cAAc,GAAE,sBAAsB,EAAO,EAC7C,eAAe,GAAE,sBAAsB,EAAO;IAK7D,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9I,UAAU,CACd,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,OAAO,EACjB,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,IAAI,CAAC;IA0BV,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IAC3G,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;IAO7G,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IACrI,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;IA6C7I;;OAEG;IACG,SAAS;IACb,oDAAoD;IACpD,IAAI,CAAC,EAAE,UAAU;IACjB,mCAAmC;IACnC,0BAA0B,CAAC,EAAE,uBAAuB,GACnD,OAAO,CAAC,UAAU,EAAE,CAAC;IAClB,SAAS;IACb,oDAAoD;IACpD,IAAI,CAAC,EAAE,UAAU;IACjB,mCAAmC;IACnC,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,UAAU,EAAE,CAAC;IAaxB,YAAY,CAAC,KAAK,EAAE,MAAM;IAI1B,sDAAsD;YACxC,cAAc;CAsB7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManifestWrapper.d.ts","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAEL,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EAGrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,wEAAwE;AACxE,qBAAa,eAAgB,SAAQ,cAAc,CAAC,sBAAsB,CAAC;IAGvE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IAChD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,EAAE;IAC3D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,sBAAsB,EAAE;gBAJ5D,OAAO,EAAE,sBAAsB,EACZ,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,oBAAmD,EAC5D,cAAc,GAAE,sBAAsB,EAAO,EAC7C,eAAe,GAAE,sBAAsB,EAAO;IAK7D,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9I,UAAU,CACd,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,OAAO,EACjB,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ManifestWrapper.d.ts","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAEL,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EAGrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,wEAAwE;AACxE,qBAAa,eAAgB,SAAQ,cAAc,CAAC,sBAAsB,CAAC;IAGvE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IAChD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,EAAE;IAC3D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,sBAAsB,EAAE;gBAJ5D,OAAO,EAAE,sBAAsB,EACZ,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,oBAAmD,EAC5D,cAAc,GAAE,sBAAsB,EAAO,EAC7C,eAAe,GAAE,sBAAsB,EAAO;IAK7D,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9I,UAAU,CACd,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,OAAO,EACjB,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,IAAI,CAAC;IA0BV,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IAC3G,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;IAO7G,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IACrI,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;IA6C7I;;OAEG;IACG,SAAS;IACb,oDAAoD;IACpD,IAAI,CAAC,EAAE,UAAU;IACjB,mCAAmC;IACnC,0BAA0B,CAAC,EAAE,uBAAuB,GACnD,OAAO,CAAC,UAAU,EAAE,CAAC;IAClB,SAAS;IACb,oDAAoD;IACpD,IAAI,CAAC,EAAE,UAAU;IACjB,mCAAmC;IACnC,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,UAAU,EAAE,CAAC;IAaxB,YAAY,CAAC,KAAK,EAAE,MAAM;IAI1B,sDAAsD;YACxC,cAAc;CAsB7B"}
|
package/dist/browser/index.cjs
CHANGED
|
@@ -57,21 +57,19 @@ var ManifestWrapper = class _ManifestWrapper extends import_payload_wrapper.Payl
|
|
|
57
57
|
}
|
|
58
58
|
async loadModule(node, manifest, external = true, additionalCreatableModules) {
|
|
59
59
|
const collision = async (node2, name, external2) => {
|
|
60
|
-
const externalConflict = external2 ? (await node2.resolve({ name: [name] }, { direction: external2 ? "all" : "down" })).length
|
|
61
|
-
return externalConflict || (await node2.resolve({ name: [name] }, { direction: "down" })).length
|
|
60
|
+
const externalConflict = external2 ? (await node2.resolve({ name: [name] }, { direction: external2 ? "all" : "down" })).length > 0 : false;
|
|
61
|
+
return externalConflict || (await node2.resolve({ name: [name] }, { direction: "down" })).length > 0;
|
|
62
62
|
};
|
|
63
63
|
const creatableModules = (0, import_module_model2.assignCreatableModuleRegistry)(
|
|
64
64
|
{},
|
|
65
65
|
(0, import_module_model2.toCreatableModuleRegistry)(standardCreatableModules),
|
|
66
66
|
(0, import_module_model2.toCreatableModuleRegistry)(additionalCreatableModules ?? {})
|
|
67
67
|
);
|
|
68
|
-
if (!await collision(node, manifest.config.name, external)) {
|
|
69
|
-
|
|
70
|
-
(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
);
|
|
74
|
-
}
|
|
68
|
+
if (!await collision(node, manifest.config.name, external) && manifest.config.language && manifest.config.language === "javascript") {
|
|
69
|
+
(0, import_assert.assertEx)(
|
|
70
|
+
(manifest.config.name && await node.attach(manifest.config.name, external)) ?? await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external),
|
|
71
|
+
`No module with config schema [${manifest.config.name}] registered`
|
|
72
|
+
);
|
|
75
73
|
}
|
|
76
74
|
}
|
|
77
75
|
async loadNodeFromIndex(index, additionalCreatableModules) {
|
|
@@ -95,18 +93,18 @@ var ManifestWrapper = class _ManifestWrapper extends import_payload_wrapper.Payl
|
|
|
95
93
|
this.privateChildren.map(async (child) => {
|
|
96
94
|
const wrapper = new _ManifestWrapper(child, this.wallet, this.locator);
|
|
97
95
|
const subNodes = await wrapper.loadNodes(node);
|
|
98
|
-
|
|
96
|
+
for (const subNode of subNodes) {
|
|
99
97
|
node.attach(subNode.address, false);
|
|
100
|
-
}
|
|
98
|
+
}
|
|
101
99
|
})
|
|
102
100
|
);
|
|
103
101
|
await Promise.all(
|
|
104
102
|
this.publicChildren.map(async (child) => {
|
|
105
103
|
const wrapper = new _ManifestWrapper(child, this.wallet, this.locator);
|
|
106
104
|
const subNodes = await wrapper.loadNodes(node);
|
|
107
|
-
|
|
105
|
+
for (const subNode of subNodes) {
|
|
108
106
|
node.attach(subNode.address, true);
|
|
109
|
-
}
|
|
107
|
+
}
|
|
110
108
|
})
|
|
111
109
|
);
|
|
112
110
|
return node;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/ManifestWrapper.ts","../../src/standardCreatableModules.ts"],"sourcesContent":["export * from './ManifestWrapper'\nexport * from './standardCreatableModules'\nexport * from '@xyo-network/manifest-model'\n","import { assertEx } from '@xylabs/assert'\nimport { Account } from '@xyo-network/account'\nimport { ModuleManifest, NodeManifest, PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n assignCreatableModuleRegistry,\n CreatableModuleDictionary,\n CreatableModuleRegistry,\n ModuleFactoryLocator,\n ModuleInstance,\n toCreatableModuleRegistry,\n} from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { standardCreatableModules } from './standardCreatableModules'\n\n/** Provides functionality that can be performed on a PackageManifest */\nexport class ManifestWrapper extends PayloadWrapper<PackageManifestPayload> {\n constructor(\n payload: PackageManifestPayload,\n protected readonly wallet: WalletInstance,\n protected readonly locator: ModuleFactoryLocator = new ModuleFactoryLocator({}),\n protected readonly publicChildren: PackageManifestPayload[] = [],\n protected readonly privateChildren: PackageManifestPayload[] = [],\n ) {\n super(payload)\n }\n\n async loadModule(node: MemoryNode, manifest: ModuleManifest, external: boolean, additionalCreatableModules?: CreatableModuleRegistry): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external: boolean,\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external = true,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<void> {\n const collision = async (node: NodeInstance, name: string, external: boolean) => {\n const externalConflict = external ? (await node.resolve({ name: [name] }, { direction: external ? 'all' : 'down' })).length !== 0 : false\n return externalConflict || (await node.resolve({ name: [name] }, { direction: 'down' })).length !== 0\n }\n\n const creatableModules = assignCreatableModuleRegistry(\n {},\n toCreatableModuleRegistry(standardCreatableModules),\n toCreatableModuleRegistry(additionalCreatableModules ?? {}),\n )\n if (!(await collision(node, manifest.config.name, external))) {\n if (manifest.config.language && manifest.config.language === 'javascript') {\n assertEx(\n (manifest.config.name && (await node.attach(manifest.config.name, external))) ??\n (await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external)),\n `No module with config schema [${manifest.config.name}] registered`,\n )\n }\n }\n }\n\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode> {\n const manifest = assertEx(this.nodeManifest(index), 'Failed to find Node Manifest')\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, registry)\n }\n\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromManifest(\n manifest: NodeManifest,\n path?: string,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<MemoryNode> {\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const node = await MemoryNode.create({ account, config: manifest.config, wallet })\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n // Load Private Modules\n const privateModules =\n manifest.modules?.private?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, false, registry)\n }) ?? []\n // Load Public Modules\n const publicModules =\n manifest.modules?.public?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, true, registry)\n }) ?? []\n await Promise.all([...privateModules, ...publicModules])\n\n await Promise.all(\n this.privateChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n subNodes.forEach((subNode) => {\n node.attach(subNode.address, false)\n })\n }),\n )\n\n await Promise.all(\n this.publicChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n subNodes.forEach((subNode) => {\n node.attach(subNode.address, true)\n })\n }),\n )\n\n return node\n }\n\n /**\n * Load the nodes that are defined in the wrapped manifest and optionally attach them to a node\n */\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleRegistry,\n ): Promise<MemoryNode[]>\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<MemoryNode[]>\n async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode[]> {\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n const result = await Promise.all(\n this.jsonPayload().nodes?.map(async (nodeManifest, index) => {\n const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, registry)\n await node?.register(subNode)\n return subNode\n }),\n )\n return result\n }\n\n nodeManifest(index: number) {\n return this.jsonPayload().nodes?.[index]\n }\n\n /** Register a module on a node based on a manifest */\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleRegistry): Promise<ModuleInstance>\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleDictionary): Promise<ModuleInstance>\n private async registerModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n creatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<ModuleInstance> {\n const registry = toCreatableModuleRegistry(creatableModules ?? {})\n const creatableModule = new ModuleFactoryLocator(this.locator.registry)\n .registerMany(registry)\n .locate(manifest.config.schema, manifest.config.labels)\n const path = manifest.config.accountPath\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const module = await creatableModule.create({\n account,\n config: assertEx(manifest.config, 'Missing config'),\n wallet,\n })\n await node.register(module)\n return module\n }\n}\n","import { HttpBridge } from '@xyo-network/http-bridge'\nimport { MemoryArchivist } from '@xyo-network/memory-archivist'\nimport { CreatableModuleDictionary, ModuleFactory } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { MemorySentinel } from '@xyo-network/sentinel'\n\nexport const standardCreatableModules: CreatableModuleDictionary = {\n 'network.xyo.archivist.config': MemoryArchivist,\n 'network.xyo.bridge.http.config': ModuleFactory.withParams(HttpBridge, { config: { schema: HttpBridge.configSchema } }),\n 'network.xyo.node.config': MemoryNode,\n 'network.xyo.sentinel.config': MemorySentinel,\n}\n"],"mappings":"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","names":["import_module_model","import_node_memory","node","external","module"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/ManifestWrapper.ts","../../src/standardCreatableModules.ts"],"sourcesContent":["export * from './ManifestWrapper'\nexport * from './standardCreatableModules'\nexport * from '@xyo-network/manifest-model'\n","import { assertEx } from '@xylabs/assert'\nimport { Account } from '@xyo-network/account'\nimport { ModuleManifest, NodeManifest, PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n assignCreatableModuleRegistry,\n CreatableModuleDictionary,\n CreatableModuleRegistry,\n ModuleFactoryLocator,\n ModuleInstance,\n toCreatableModuleRegistry,\n} from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { standardCreatableModules } from './standardCreatableModules'\n\n/** Provides functionality that can be performed on a PackageManifest */\nexport class ManifestWrapper extends PayloadWrapper<PackageManifestPayload> {\n constructor(\n payload: PackageManifestPayload,\n protected readonly wallet: WalletInstance,\n protected readonly locator: ModuleFactoryLocator = new ModuleFactoryLocator({}),\n protected readonly publicChildren: PackageManifestPayload[] = [],\n protected readonly privateChildren: PackageManifestPayload[] = [],\n ) {\n super(payload)\n }\n\n async loadModule(node: MemoryNode, manifest: ModuleManifest, external: boolean, additionalCreatableModules?: CreatableModuleRegistry): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external: boolean,\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external = true,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<void> {\n const collision = async (node: NodeInstance, name: string, external: boolean) => {\n const externalConflict = external ? (await node.resolve({ name: [name] }, { direction: external ? 'all' : 'down' })).length > 0 : false\n return externalConflict || (await node.resolve({ name: [name] }, { direction: 'down' })).length > 0\n }\n\n const creatableModules = assignCreatableModuleRegistry(\n {},\n toCreatableModuleRegistry(standardCreatableModules),\n toCreatableModuleRegistry(additionalCreatableModules ?? {}),\n )\n if (!(await collision(node, manifest.config.name, external)) && manifest.config.language && manifest.config.language === 'javascript') {\n assertEx(\n (manifest.config.name && (await node.attach(manifest.config.name, external))) ??\n (await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external)),\n `No module with config schema [${manifest.config.name}] registered`,\n )\n }\n }\n\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode> {\n const manifest = assertEx(this.nodeManifest(index), 'Failed to find Node Manifest')\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, registry)\n }\n\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromManifest(\n manifest: NodeManifest,\n path?: string,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<MemoryNode> {\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const node = await MemoryNode.create({ account, config: manifest.config, wallet })\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n // Load Private Modules\n const privateModules =\n manifest.modules?.private?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, false, registry)\n }) ?? []\n // Load Public Modules\n const publicModules =\n manifest.modules?.public?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, true, registry)\n }) ?? []\n await Promise.all([...privateModules, ...publicModules])\n\n await Promise.all(\n this.privateChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n for (const subNode of subNodes) {\n node.attach(subNode.address, false)\n }\n }),\n )\n\n await Promise.all(\n this.publicChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n for (const subNode of subNodes) {\n node.attach(subNode.address, true)\n }\n }),\n )\n\n return node\n }\n\n /**\n * Load the nodes that are defined in the wrapped manifest and optionally attach them to a node\n */\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleRegistry,\n ): Promise<MemoryNode[]>\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<MemoryNode[]>\n async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode[]> {\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n const result = await Promise.all(\n this.jsonPayload().nodes?.map(async (nodeManifest, index) => {\n const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, registry)\n await node?.register(subNode)\n return subNode\n }),\n )\n return result\n }\n\n nodeManifest(index: number) {\n return this.jsonPayload().nodes?.[index]\n }\n\n /** Register a module on a node based on a manifest */\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleRegistry): Promise<ModuleInstance>\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleDictionary): Promise<ModuleInstance>\n private async registerModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n creatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<ModuleInstance> {\n const registry = toCreatableModuleRegistry(creatableModules ?? {})\n const creatableModule = new ModuleFactoryLocator(this.locator.registry)\n .registerMany(registry)\n .locate(manifest.config.schema, manifest.config.labels)\n const path = manifest.config.accountPath\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const module = await creatableModule.create({\n account,\n config: assertEx(manifest.config, 'Missing config'),\n wallet,\n })\n await node.register(module)\n return module\n }\n}\n","import { HttpBridge } from '@xyo-network/http-bridge'\nimport { MemoryArchivist } from '@xyo-network/memory-archivist'\nimport { CreatableModuleDictionary, ModuleFactory } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { MemorySentinel } from '@xyo-network/sentinel'\n\nexport const standardCreatableModules: CreatableModuleDictionary = {\n 'network.xyo.archivist.config': MemoryArchivist,\n 'network.xyo.bridge.http.config': ModuleFactory.withParams(HttpBridge, { config: { schema: HttpBridge.configSchema } }),\n 'network.xyo.node.config': MemoryNode,\n 'network.xyo.sentinel.config': MemorySentinel,\n}\n"],"mappings":"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","names":["import_module_model","import_node_memory","node","external","module"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -33,21 +33,19 @@ var ManifestWrapper = class _ManifestWrapper extends PayloadWrapper {
|
|
|
33
33
|
}
|
|
34
34
|
async loadModule(node, manifest, external = true, additionalCreatableModules) {
|
|
35
35
|
const collision = async (node2, name, external2) => {
|
|
36
|
-
const externalConflict = external2 ? (await node2.resolve({ name: [name] }, { direction: external2 ? "all" : "down" })).length
|
|
37
|
-
return externalConflict || (await node2.resolve({ name: [name] }, { direction: "down" })).length
|
|
36
|
+
const externalConflict = external2 ? (await node2.resolve({ name: [name] }, { direction: external2 ? "all" : "down" })).length > 0 : false;
|
|
37
|
+
return externalConflict || (await node2.resolve({ name: [name] }, { direction: "down" })).length > 0;
|
|
38
38
|
};
|
|
39
39
|
const creatableModules = assignCreatableModuleRegistry(
|
|
40
40
|
{},
|
|
41
41
|
toCreatableModuleRegistry(standardCreatableModules),
|
|
42
42
|
toCreatableModuleRegistry(additionalCreatableModules ?? {})
|
|
43
43
|
);
|
|
44
|
-
if (!await collision(node, manifest.config.name, external)) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
);
|
|
50
|
-
}
|
|
44
|
+
if (!await collision(node, manifest.config.name, external) && manifest.config.language && manifest.config.language === "javascript") {
|
|
45
|
+
assertEx(
|
|
46
|
+
(manifest.config.name && await node.attach(manifest.config.name, external)) ?? await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external),
|
|
47
|
+
`No module with config schema [${manifest.config.name}] registered`
|
|
48
|
+
);
|
|
51
49
|
}
|
|
52
50
|
}
|
|
53
51
|
async loadNodeFromIndex(index, additionalCreatableModules) {
|
|
@@ -71,18 +69,18 @@ var ManifestWrapper = class _ManifestWrapper extends PayloadWrapper {
|
|
|
71
69
|
this.privateChildren.map(async (child) => {
|
|
72
70
|
const wrapper = new _ManifestWrapper(child, this.wallet, this.locator);
|
|
73
71
|
const subNodes = await wrapper.loadNodes(node);
|
|
74
|
-
|
|
72
|
+
for (const subNode of subNodes) {
|
|
75
73
|
node.attach(subNode.address, false);
|
|
76
|
-
}
|
|
74
|
+
}
|
|
77
75
|
})
|
|
78
76
|
);
|
|
79
77
|
await Promise.all(
|
|
80
78
|
this.publicChildren.map(async (child) => {
|
|
81
79
|
const wrapper = new _ManifestWrapper(child, this.wallet, this.locator);
|
|
82
80
|
const subNodes = await wrapper.loadNodes(node);
|
|
83
|
-
|
|
81
|
+
for (const subNode of subNodes) {
|
|
84
82
|
node.attach(subNode.address, true);
|
|
85
|
-
}
|
|
83
|
+
}
|
|
86
84
|
})
|
|
87
85
|
);
|
|
88
86
|
return node;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ManifestWrapper.ts","../../src/standardCreatableModules.ts","../../src/index.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Account } from '@xyo-network/account'\nimport { ModuleManifest, NodeManifest, PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n assignCreatableModuleRegistry,\n CreatableModuleDictionary,\n CreatableModuleRegistry,\n ModuleFactoryLocator,\n ModuleInstance,\n toCreatableModuleRegistry,\n} from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { standardCreatableModules } from './standardCreatableModules'\n\n/** Provides functionality that can be performed on a PackageManifest */\nexport class ManifestWrapper extends PayloadWrapper<PackageManifestPayload> {\n constructor(\n payload: PackageManifestPayload,\n protected readonly wallet: WalletInstance,\n protected readonly locator: ModuleFactoryLocator = new ModuleFactoryLocator({}),\n protected readonly publicChildren: PackageManifestPayload[] = [],\n protected readonly privateChildren: PackageManifestPayload[] = [],\n ) {\n super(payload)\n }\n\n async loadModule(node: MemoryNode, manifest: ModuleManifest, external: boolean, additionalCreatableModules?: CreatableModuleRegistry): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external: boolean,\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external = true,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<void> {\n const collision = async (node: NodeInstance, name: string, external: boolean) => {\n const externalConflict = external ? (await node.resolve({ name: [name] }, { direction: external ? 'all' : 'down' })).length !== 0 : false\n return externalConflict || (await node.resolve({ name: [name] }, { direction: 'down' })).length !== 0\n }\n\n const creatableModules = assignCreatableModuleRegistry(\n {},\n toCreatableModuleRegistry(standardCreatableModules),\n toCreatableModuleRegistry(additionalCreatableModules ?? {}),\n )\n if (!(await collision(node, manifest.config.name, external))) {\n if (manifest.config.language && manifest.config.language === 'javascript') {\n assertEx(\n (manifest.config.name && (await node.attach(manifest.config.name, external))) ??\n (await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external)),\n `No module with config schema [${manifest.config.name}] registered`,\n )\n }\n }\n }\n\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode> {\n const manifest = assertEx(this.nodeManifest(index), 'Failed to find Node Manifest')\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, registry)\n }\n\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromManifest(\n manifest: NodeManifest,\n path?: string,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<MemoryNode> {\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const node = await MemoryNode.create({ account, config: manifest.config, wallet })\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n // Load Private Modules\n const privateModules =\n manifest.modules?.private?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, false, registry)\n }) ?? []\n // Load Public Modules\n const publicModules =\n manifest.modules?.public?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, true, registry)\n }) ?? []\n await Promise.all([...privateModules, ...publicModules])\n\n await Promise.all(\n this.privateChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n subNodes.forEach((subNode) => {\n node.attach(subNode.address, false)\n })\n }),\n )\n\n await Promise.all(\n this.publicChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n subNodes.forEach((subNode) => {\n node.attach(subNode.address, true)\n })\n }),\n )\n\n return node\n }\n\n /**\n * Load the nodes that are defined in the wrapped manifest and optionally attach them to a node\n */\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleRegistry,\n ): Promise<MemoryNode[]>\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<MemoryNode[]>\n async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode[]> {\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n const result = await Promise.all(\n this.jsonPayload().nodes?.map(async (nodeManifest, index) => {\n const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, registry)\n await node?.register(subNode)\n return subNode\n }),\n )\n return result\n }\n\n nodeManifest(index: number) {\n return this.jsonPayload().nodes?.[index]\n }\n\n /** Register a module on a node based on a manifest */\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleRegistry): Promise<ModuleInstance>\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleDictionary): Promise<ModuleInstance>\n private async registerModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n creatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<ModuleInstance> {\n const registry = toCreatableModuleRegistry(creatableModules ?? {})\n const creatableModule = new ModuleFactoryLocator(this.locator.registry)\n .registerMany(registry)\n .locate(manifest.config.schema, manifest.config.labels)\n const path = manifest.config.accountPath\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const module = await creatableModule.create({\n account,\n config: assertEx(manifest.config, 'Missing config'),\n wallet,\n })\n await node.register(module)\n return module\n }\n}\n","import { HttpBridge } from '@xyo-network/http-bridge'\nimport { MemoryArchivist } from '@xyo-network/memory-archivist'\nimport { CreatableModuleDictionary, ModuleFactory } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { MemorySentinel } from '@xyo-network/sentinel'\n\nexport const standardCreatableModules: CreatableModuleDictionary = {\n 'network.xyo.archivist.config': MemoryArchivist,\n 'network.xyo.bridge.http.config': ModuleFactory.withParams(HttpBridge, { config: { schema: HttpBridge.configSchema } }),\n 'network.xyo.node.config': MemoryNode,\n 'network.xyo.sentinel.config': MemorySentinel,\n}\n","export * from './ManifestWrapper'\nexport * from './standardCreatableModules'\nexport * from '@xyo-network/manifest-model'\n"],"mappings":"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","names":["MemoryNode","node","external","MemoryNode"]}
|
|
1
|
+
{"version":3,"sources":["../../src/ManifestWrapper.ts","../../src/standardCreatableModules.ts","../../src/index.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Account } from '@xyo-network/account'\nimport { ModuleManifest, NodeManifest, PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n assignCreatableModuleRegistry,\n CreatableModuleDictionary,\n CreatableModuleRegistry,\n ModuleFactoryLocator,\n ModuleInstance,\n toCreatableModuleRegistry,\n} from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { standardCreatableModules } from './standardCreatableModules'\n\n/** Provides functionality that can be performed on a PackageManifest */\nexport class ManifestWrapper extends PayloadWrapper<PackageManifestPayload> {\n constructor(\n payload: PackageManifestPayload,\n protected readonly wallet: WalletInstance,\n protected readonly locator: ModuleFactoryLocator = new ModuleFactoryLocator({}),\n protected readonly publicChildren: PackageManifestPayload[] = [],\n protected readonly privateChildren: PackageManifestPayload[] = [],\n ) {\n super(payload)\n }\n\n async loadModule(node: MemoryNode, manifest: ModuleManifest, external: boolean, additionalCreatableModules?: CreatableModuleRegistry): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external: boolean,\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external = true,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<void> {\n const collision = async (node: NodeInstance, name: string, external: boolean) => {\n const externalConflict = external ? (await node.resolve({ name: [name] }, { direction: external ? 'all' : 'down' })).length > 0 : false\n return externalConflict || (await node.resolve({ name: [name] }, { direction: 'down' })).length > 0\n }\n\n const creatableModules = assignCreatableModuleRegistry(\n {},\n toCreatableModuleRegistry(standardCreatableModules),\n toCreatableModuleRegistry(additionalCreatableModules ?? {}),\n )\n if (!(await collision(node, manifest.config.name, external)) && manifest.config.language && manifest.config.language === 'javascript') {\n assertEx(\n (manifest.config.name && (await node.attach(manifest.config.name, external))) ??\n (await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external)),\n `No module with config schema [${manifest.config.name}] registered`,\n )\n }\n }\n\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode> {\n const manifest = assertEx(this.nodeManifest(index), 'Failed to find Node Manifest')\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, registry)\n }\n\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromManifest(\n manifest: NodeManifest,\n path?: string,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<MemoryNode> {\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const node = await MemoryNode.create({ account, config: manifest.config, wallet })\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n // Load Private Modules\n const privateModules =\n manifest.modules?.private?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, false, registry)\n }) ?? []\n // Load Public Modules\n const publicModules =\n manifest.modules?.public?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, true, registry)\n }) ?? []\n await Promise.all([...privateModules, ...publicModules])\n\n await Promise.all(\n this.privateChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n for (const subNode of subNodes) {\n node.attach(subNode.address, false)\n }\n }),\n )\n\n await Promise.all(\n this.publicChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n for (const subNode of subNodes) {\n node.attach(subNode.address, true)\n }\n }),\n )\n\n return node\n }\n\n /**\n * Load the nodes that are defined in the wrapped manifest and optionally attach them to a node\n */\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleRegistry,\n ): Promise<MemoryNode[]>\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<MemoryNode[]>\n async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode[]> {\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n const result = await Promise.all(\n this.jsonPayload().nodes?.map(async (nodeManifest, index) => {\n const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, registry)\n await node?.register(subNode)\n return subNode\n }),\n )\n return result\n }\n\n nodeManifest(index: number) {\n return this.jsonPayload().nodes?.[index]\n }\n\n /** Register a module on a node based on a manifest */\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleRegistry): Promise<ModuleInstance>\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleDictionary): Promise<ModuleInstance>\n private async registerModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n creatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<ModuleInstance> {\n const registry = toCreatableModuleRegistry(creatableModules ?? {})\n const creatableModule = new ModuleFactoryLocator(this.locator.registry)\n .registerMany(registry)\n .locate(manifest.config.schema, manifest.config.labels)\n const path = manifest.config.accountPath\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const module = await creatableModule.create({\n account,\n config: assertEx(manifest.config, 'Missing config'),\n wallet,\n })\n await node.register(module)\n return module\n }\n}\n","import { HttpBridge } from '@xyo-network/http-bridge'\nimport { MemoryArchivist } from '@xyo-network/memory-archivist'\nimport { CreatableModuleDictionary, ModuleFactory } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { MemorySentinel } from '@xyo-network/sentinel'\n\nexport const standardCreatableModules: CreatableModuleDictionary = {\n 'network.xyo.archivist.config': MemoryArchivist,\n 'network.xyo.bridge.http.config': ModuleFactory.withParams(HttpBridge, { config: { schema: HttpBridge.configSchema } }),\n 'network.xyo.node.config': MemoryNode,\n 'network.xyo.sentinel.config': MemorySentinel,\n}\n","export * from './ManifestWrapper'\nexport * from './standardCreatableModules'\nexport * from '@xyo-network/manifest-model'\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,eAAe;AAExB;AAAA,EACE;AAAA,EAGA;AAAA,EAEA;AAAA,OACK;AACP,SAAS,cAAAA,mBAAkB;AAE3B,SAAS,sBAAsB;;;ACb/B,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAoC,qBAAqB;AACzD,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAExB,IAAM,2BAAsD;AAAA,EACjE,gCAAgC;AAAA,EAChC,kCAAkC,cAAc,WAAW,YAAY,EAAE,QAAQ,EAAE,QAAQ,WAAW,aAAa,EAAE,CAAC;AAAA,EACtH,2BAA2B;AAAA,EAC3B,+BAA+B;AACjC;;;ADQO,IAAM,kBAAN,MAAM,yBAAwB,eAAuC;AAAA,EAC1E,YACE,SACmB,QACA,UAAgC,IAAI,qBAAqB,CAAC,CAAC,GAC3D,iBAA2C,CAAC,GAC5C,kBAA4C,CAAC,GAChE;AACA,UAAM,OAAO;AALM;AACA;AACA;AACA;AAAA,EAGrB;AAAA,EASA,MAAM,WACJ,MACA,UACA,WAAW,MACX,4BACe;AACf,UAAM,YAAY,OAAOC,OAAoB,MAAcC,cAAsB;AAC/E,YAAM,mBAAmBA,aAAY,MAAMD,MAAK,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,WAAWC,YAAW,QAAQ,OAAO,CAAC,GAAG,SAAS,IAAI;AAClI,aAAO,qBAAqB,MAAMD,MAAK,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,OAAO,CAAC,GAAG,SAAS;AAAA,IACpG;AAEA,UAAM,mBAAmB;AAAA,MACvB,CAAC;AAAA,MACD,0BAA0B,wBAAwB;AAAA,MAClD,0BAA0B,8BAA8B,CAAC,CAAC;AAAA,IAC5D;AACA,QAAI,CAAE,MAAM,UAAU,MAAM,SAAS,OAAO,MAAM,QAAQ,KAAM,SAAS,OAAO,YAAY,SAAS,OAAO,aAAa,cAAc;AACrI;AAAA,SACG,SAAS,OAAO,QAAS,MAAM,KAAK,OAAO,SAAS,OAAO,MAAM,QAAQ,MACvE,MAAM,KAAK,QAAQ,MAAM,KAAK,eAAe,MAAM,UAAU,gBAAgB,GAAG,SAAS,QAAQ;AAAA,QACpG,iCAAiC,SAAS,OAAO,IAAI;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAAA,EAIA,MAAM,kBAAkB,OAAe,4BAAuG;AAC5I,UAAM,WAAW,SAAS,KAAK,aAAa,KAAK,GAAG,8BAA8B;AAClF,UAAM,WAAW,0BAA0B,8BAA8B,CAAC,CAAC;AAC3E,WAAO,MAAM,KAAK,qBAAqB,UAAU,SAAS,OAAO,eAAe,GAAG,KAAK,KAAK,QAAQ;AAAA,EACvG;AAAA,EAIA,MAAM,qBACJ,UACA,MACA,4BACqB;AACrB,UAAM,SAAS,OAAO,MAAM,KAAK,OAAO,WAAW,IAAI,IAAI;AAC3D,UAAM,UAAU,OAAO,SAAY,QAAQ,WAAW;AACtD,UAAM,OAAO,MAAME,YAAW,OAAO,EAAE,SAAS,QAAQ,SAAS,QAAQ,OAAO,CAAC;AACjF,UAAM,WAAW,0BAA0B,8BAA8B,CAAC,CAAC;AAE3E,UAAM,iBACJ,SAAS,SAAS,SAAS,IAAI,OAAO,mBAAmB;AACvD,YAAM,KAAK,WAAW,MAAM,gBAAgB,OAAO,QAAQ;AAAA,IAC7D,CAAC,KAAK,CAAC;AAET,UAAM,gBACJ,SAAS,SAAS,QAAQ,IAAI,OAAO,mBAAmB;AACtD,YAAM,KAAK,WAAW,MAAM,gBAAgB,MAAM,QAAQ;AAAA,IAC5D,CAAC,KAAK,CAAC;AACT,UAAM,QAAQ,IAAI,CAAC,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAEvD,UAAM,QAAQ;AAAA,MACZ,KAAK,gBAAgB,IAAI,OAAO,UAAU;AACxC,cAAM,UAAU,IAAI,iBAAgB,OAAO,KAAK,QAAQ,KAAK,OAAO;AACpE,cAAM,WAAW,MAAM,QAAQ,UAAU,IAAI;AAC7C,mBAAW,WAAW,UAAU;AAC9B,eAAK,OAAO,QAAQ,SAAS,KAAK;AAAA,QACpC;AAAA,MACF,CAAC;AAAA,IACH;AAEA,UAAM,QAAQ;AAAA,MACZ,KAAK,eAAe,IAAI,OAAO,UAAU;AACvC,cAAM,UAAU,IAAI,iBAAgB,OAAO,KAAK,QAAQ,KAAK,OAAO;AACpE,cAAM,WAAW,MAAM,QAAQ,UAAU,IAAI;AAC7C,mBAAW,WAAW,UAAU;AAC9B,eAAK,OAAO,QAAQ,SAAS,IAAI;AAAA,QACnC;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAAA,EAiBA,MAAM,UAAU,MAAmB,4BAAyG;AAC1I,UAAM,WAAW,0BAA0B,8BAA8B,CAAC,CAAC;AAC3E,UAAM,SAAS,MAAM,QAAQ;AAAA,MAC3B,KAAK,YAAY,EAAE,OAAO,IAAI,OAAO,cAAc,UAAU;AAC3D,cAAM,UAAU,MAAM,KAAK,qBAAqB,cAAc,aAAa,OAAO,eAAe,GAAG,KAAK,KAAK,QAAQ;AACtH,cAAM,MAAM,SAAS,OAAO;AAC5B,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAAA,EAEA,aAAa,OAAe;AAC1B,WAAO,KAAK,YAAY,EAAE,QAAQ,KAAK;AAAA,EACzC;AAAA,EAKA,MAAc,eACZ,MACA,UACA,kBACyB;AACzB,UAAM,WAAW,0BAA0B,oBAAoB,CAAC,CAAC;AACjE,UAAM,kBAAkB,IAAI,qBAAqB,KAAK,QAAQ,QAAQ,EACnE,aAAa,QAAQ,EACrB,OAAO,SAAS,OAAO,QAAQ,SAAS,OAAO,MAAM;AACxD,UAAM,OAAO,SAAS,OAAO;AAC7B,UAAM,SAAS,OAAO,MAAM,KAAK,OAAO,WAAW,IAAI,IAAI;AAC3D,UAAM,UAAU,OAAO,SAAY,QAAQ,WAAW;AACtD,UAAM,SAAS,MAAM,gBAAgB,OAAO;AAAA,MAC1C;AAAA,MACA,QAAQ,SAAS,SAAS,QAAQ,gBAAgB;AAAA,MAClD;AAAA,IACF,CAAC;AACD,UAAM,KAAK,SAAS,MAAM;AAC1B,WAAO;AAAA,EACT;AACF;;;AExKA,cAAc;","names":["MemoryNode","node","external","MemoryNode"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManifestWrapper.d.ts","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAEL,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EAGrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,wEAAwE;AACxE,qBAAa,eAAgB,SAAQ,cAAc,CAAC,sBAAsB,CAAC;IAGvE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IAChD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,EAAE;IAC3D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,sBAAsB,EAAE;gBAJ5D,OAAO,EAAE,sBAAsB,EACZ,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,oBAAmD,EAC5D,cAAc,GAAE,sBAAsB,EAAO,EAC7C,eAAe,GAAE,sBAAsB,EAAO;IAK7D,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9I,UAAU,CACd,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,OAAO,EACjB,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ManifestWrapper.d.ts","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAEL,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EAGrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,wEAAwE;AACxE,qBAAa,eAAgB,SAAQ,cAAc,CAAC,sBAAsB,CAAC;IAGvE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IAChD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,EAAE;IAC3D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,sBAAsB,EAAE;gBAJ5D,OAAO,EAAE,sBAAsB,EACZ,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,oBAAmD,EAC5D,cAAc,GAAE,sBAAsB,EAAO,EAC7C,eAAe,GAAE,sBAAsB,EAAO;IAK7D,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9I,UAAU,CACd,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,OAAO,EACjB,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,IAAI,CAAC;IA0BV,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IAC3G,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;IAO7G,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IACrI,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;IA6C7I;;OAEG;IACG,SAAS;IACb,oDAAoD;IACpD,IAAI,CAAC,EAAE,UAAU;IACjB,mCAAmC;IACnC,0BAA0B,CAAC,EAAE,uBAAuB,GACnD,OAAO,CAAC,UAAU,EAAE,CAAC;IAClB,SAAS;IACb,oDAAoD;IACpD,IAAI,CAAC,EAAE,UAAU;IACjB,mCAAmC;IACnC,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,UAAU,EAAE,CAAC;IAaxB,YAAY,CAAC,KAAK,EAAE,MAAM;IAI1B,sDAAsD;YACxC,cAAc;CAsB7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManifestWrapper.d.ts","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAEL,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EAGrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,wEAAwE;AACxE,qBAAa,eAAgB,SAAQ,cAAc,CAAC,sBAAsB,CAAC;IAGvE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IAChD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,EAAE;IAC3D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,sBAAsB,EAAE;gBAJ5D,OAAO,EAAE,sBAAsB,EACZ,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,oBAAmD,EAC5D,cAAc,GAAE,sBAAsB,EAAO,EAC7C,eAAe,GAAE,sBAAsB,EAAO;IAK7D,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9I,UAAU,CACd,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,OAAO,EACjB,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ManifestWrapper.d.ts","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAEL,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EAGrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,wEAAwE;AACxE,qBAAa,eAAgB,SAAQ,cAAc,CAAC,sBAAsB,CAAC;IAGvE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IAChD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,EAAE;IAC3D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,sBAAsB,EAAE;gBAJ5D,OAAO,EAAE,sBAAsB,EACZ,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,oBAAmD,EAC5D,cAAc,GAAE,sBAAsB,EAAO,EAC7C,eAAe,GAAE,sBAAsB,EAAO;IAK7D,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9I,UAAU,CACd,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,OAAO,EACjB,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,IAAI,CAAC;IA0BV,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IAC3G,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;IAO7G,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IACrI,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;IA6C7I;;OAEG;IACG,SAAS;IACb,oDAAoD;IACpD,IAAI,CAAC,EAAE,UAAU;IACjB,mCAAmC;IACnC,0BAA0B,CAAC,EAAE,uBAAuB,GACnD,OAAO,CAAC,UAAU,EAAE,CAAC;IAClB,SAAS;IACb,oDAAoD;IACpD,IAAI,CAAC,EAAE,UAAU;IACjB,mCAAmC;IACnC,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,UAAU,EAAE,CAAC;IAaxB,YAAY,CAAC,KAAK,EAAE,MAAM;IAI1B,sDAAsD;YACxC,cAAc;CAsB7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManifestWrapper.d.ts","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAEL,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EAGrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,wEAAwE;AACxE,qBAAa,eAAgB,SAAQ,cAAc,CAAC,sBAAsB,CAAC;IAGvE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IAChD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,EAAE;IAC3D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,sBAAsB,EAAE;gBAJ5D,OAAO,EAAE,sBAAsB,EACZ,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,oBAAmD,EAC5D,cAAc,GAAE,sBAAsB,EAAO,EAC7C,eAAe,GAAE,sBAAsB,EAAO;IAK7D,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9I,UAAU,CACd,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,OAAO,EACjB,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ManifestWrapper.d.ts","sourceRoot":"","sources":["../../src/ManifestWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAEL,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EAGrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,wEAAwE;AACxE,qBAAa,eAAgB,SAAQ,cAAc,CAAC,sBAAsB,CAAC;IAGvE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IAChD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,EAAE;IAC3D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,sBAAsB,EAAE;gBAJ5D,OAAO,EAAE,sBAAsB,EACZ,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,oBAAmD,EAC5D,cAAc,GAAE,sBAAsB,EAAO,EAC7C,eAAe,GAAE,sBAAsB,EAAO;IAK7D,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9I,UAAU,CACd,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,OAAO,EACjB,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,IAAI,CAAC;IA0BV,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IAC3G,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;IAO7G,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IACrI,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC;IA6C7I;;OAEG;IACG,SAAS;IACb,oDAAoD;IACpD,IAAI,CAAC,EAAE,UAAU;IACjB,mCAAmC;IACnC,0BAA0B,CAAC,EAAE,uBAAuB,GACnD,OAAO,CAAC,UAAU,EAAE,CAAC;IAClB,SAAS;IACb,oDAAoD;IACpD,IAAI,CAAC,EAAE,UAAU;IACjB,mCAAmC;IACnC,0BAA0B,CAAC,EAAE,yBAAyB,GACrD,OAAO,CAAC,UAAU,EAAE,CAAC;IAaxB,YAAY,CAAC,KAAK,EAAE,MAAM;IAI1B,sDAAsD;YACxC,cAAc;CAsB7B"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
|
|
21
|
+
// src/index.ts
|
|
22
|
+
var src_exports = {};
|
|
23
|
+
__export(src_exports, {
|
|
24
|
+
ManifestWrapper: () => ManifestWrapper,
|
|
25
|
+
standardCreatableModules: () => standardCreatableModules
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(src_exports);
|
|
28
|
+
|
|
29
|
+
// src/ManifestWrapper.ts
|
|
30
|
+
var import_assert = require("@xylabs/assert");
|
|
31
|
+
var import_account = require("@xyo-network/account");
|
|
32
|
+
var import_module_model2 = require("@xyo-network/module-model");
|
|
33
|
+
var import_node_memory2 = require("@xyo-network/node-memory");
|
|
34
|
+
var import_payload_wrapper = require("@xyo-network/payload-wrapper");
|
|
35
|
+
|
|
36
|
+
// src/standardCreatableModules.ts
|
|
37
|
+
var import_http_bridge = require("@xyo-network/http-bridge");
|
|
38
|
+
var import_memory_archivist = require("@xyo-network/memory-archivist");
|
|
39
|
+
var import_module_model = require("@xyo-network/module-model");
|
|
40
|
+
var import_node_memory = require("@xyo-network/node-memory");
|
|
41
|
+
var import_sentinel = require("@xyo-network/sentinel");
|
|
42
|
+
var standardCreatableModules = {
|
|
43
|
+
"network.xyo.archivist.config": import_memory_archivist.MemoryArchivist,
|
|
44
|
+
"network.xyo.bridge.http.config": import_module_model.ModuleFactory.withParams(import_http_bridge.HttpBridge, { config: { schema: import_http_bridge.HttpBridge.configSchema } }),
|
|
45
|
+
"network.xyo.node.config": import_node_memory.MemoryNode,
|
|
46
|
+
"network.xyo.sentinel.config": import_sentinel.MemorySentinel
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// src/ManifestWrapper.ts
|
|
50
|
+
var ManifestWrapper = class _ManifestWrapper extends import_payload_wrapper.PayloadWrapper {
|
|
51
|
+
constructor(payload, wallet, locator = new import_module_model2.ModuleFactoryLocator({}), publicChildren = [], privateChildren = []) {
|
|
52
|
+
super(payload);
|
|
53
|
+
this.wallet = wallet;
|
|
54
|
+
this.locator = locator;
|
|
55
|
+
this.publicChildren = publicChildren;
|
|
56
|
+
this.privateChildren = privateChildren;
|
|
57
|
+
}
|
|
58
|
+
async loadModule(node, manifest, external = true, additionalCreatableModules) {
|
|
59
|
+
const collision = async (node2, name, external2) => {
|
|
60
|
+
const externalConflict = external2 ? (await node2.resolve({ name: [name] }, { direction: external2 ? "all" : "down" })).length > 0 : false;
|
|
61
|
+
return externalConflict || (await node2.resolve({ name: [name] }, { direction: "down" })).length > 0;
|
|
62
|
+
};
|
|
63
|
+
const creatableModules = (0, import_module_model2.assignCreatableModuleRegistry)(
|
|
64
|
+
{},
|
|
65
|
+
(0, import_module_model2.toCreatableModuleRegistry)(standardCreatableModules),
|
|
66
|
+
(0, import_module_model2.toCreatableModuleRegistry)(additionalCreatableModules ?? {})
|
|
67
|
+
);
|
|
68
|
+
if (!await collision(node, manifest.config.name, external) && manifest.config.language && manifest.config.language === "javascript") {
|
|
69
|
+
(0, import_assert.assertEx)(
|
|
70
|
+
(manifest.config.name && await node.attach(manifest.config.name, external)) ?? await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external),
|
|
71
|
+
`No module with config schema [${manifest.config.name}] registered`
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async loadNodeFromIndex(index, additionalCreatableModules) {
|
|
76
|
+
const manifest = (0, import_assert.assertEx)(this.nodeManifest(index), "Failed to find Node Manifest");
|
|
77
|
+
const registry = (0, import_module_model2.toCreatableModuleRegistry)(additionalCreatableModules ?? {});
|
|
78
|
+
return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, registry);
|
|
79
|
+
}
|
|
80
|
+
async loadNodeFromManifest(manifest, path, additionalCreatableModules) {
|
|
81
|
+
var _a, _b, _c, _d;
|
|
82
|
+
const wallet = path ? await this.wallet.derivePath(path) : void 0;
|
|
83
|
+
const account = path ? void 0 : import_account.Account.randomSync();
|
|
84
|
+
const node = await import_node_memory2.MemoryNode.create({ account, config: manifest.config, wallet });
|
|
85
|
+
const registry = (0, import_module_model2.toCreatableModuleRegistry)(additionalCreatableModules ?? {});
|
|
86
|
+
const privateModules = ((_b = (_a = manifest.modules) == null ? void 0 : _a.private) == null ? void 0 : _b.map(async (moduleManifest) => {
|
|
87
|
+
await this.loadModule(node, moduleManifest, false, registry);
|
|
88
|
+
})) ?? [];
|
|
89
|
+
const publicModules = ((_d = (_c = manifest.modules) == null ? void 0 : _c.public) == null ? void 0 : _d.map(async (moduleManifest) => {
|
|
90
|
+
await this.loadModule(node, moduleManifest, true, registry);
|
|
91
|
+
})) ?? [];
|
|
92
|
+
await Promise.all([...privateModules, ...publicModules]);
|
|
93
|
+
await Promise.all(
|
|
94
|
+
this.privateChildren.map(async (child) => {
|
|
95
|
+
const wrapper = new _ManifestWrapper(child, this.wallet, this.locator);
|
|
96
|
+
const subNodes = await wrapper.loadNodes(node);
|
|
97
|
+
for (const subNode of subNodes) {
|
|
98
|
+
node.attach(subNode.address, false);
|
|
99
|
+
}
|
|
100
|
+
})
|
|
101
|
+
);
|
|
102
|
+
await Promise.all(
|
|
103
|
+
this.publicChildren.map(async (child) => {
|
|
104
|
+
const wrapper = new _ManifestWrapper(child, this.wallet, this.locator);
|
|
105
|
+
const subNodes = await wrapper.loadNodes(node);
|
|
106
|
+
for (const subNode of subNodes) {
|
|
107
|
+
node.attach(subNode.address, true);
|
|
108
|
+
}
|
|
109
|
+
})
|
|
110
|
+
);
|
|
111
|
+
return node;
|
|
112
|
+
}
|
|
113
|
+
async loadNodes(node, additionalCreatableModules) {
|
|
114
|
+
var _a;
|
|
115
|
+
const registry = (0, import_module_model2.toCreatableModuleRegistry)(additionalCreatableModules ?? {});
|
|
116
|
+
const result = await Promise.all(
|
|
117
|
+
(_a = this.jsonPayload().nodes) == null ? void 0 : _a.map(async (nodeManifest, index) => {
|
|
118
|
+
const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, registry);
|
|
119
|
+
await (node == null ? void 0 : node.register(subNode));
|
|
120
|
+
return subNode;
|
|
121
|
+
})
|
|
122
|
+
);
|
|
123
|
+
return result;
|
|
124
|
+
}
|
|
125
|
+
nodeManifest(index) {
|
|
126
|
+
var _a;
|
|
127
|
+
return (_a = this.jsonPayload().nodes) == null ? void 0 : _a[index];
|
|
128
|
+
}
|
|
129
|
+
async registerModule(node, manifest, creatableModules) {
|
|
130
|
+
const registry = (0, import_module_model2.toCreatableModuleRegistry)(creatableModules ?? {});
|
|
131
|
+
const creatableModule = new import_module_model2.ModuleFactoryLocator(this.locator.registry).registerMany(registry).locate(manifest.config.schema, manifest.config.labels);
|
|
132
|
+
const path = manifest.config.accountPath;
|
|
133
|
+
const wallet = path ? await this.wallet.derivePath(path) : void 0;
|
|
134
|
+
const account = path ? void 0 : import_account.Account.randomSync();
|
|
135
|
+
const module2 = await creatableModule.create({
|
|
136
|
+
account,
|
|
137
|
+
config: (0, import_assert.assertEx)(manifest.config, "Missing config"),
|
|
138
|
+
wallet
|
|
139
|
+
});
|
|
140
|
+
await node.register(module2);
|
|
141
|
+
return module2;
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
// src/index.ts
|
|
146
|
+
__reExport(src_exports, require("@xyo-network/manifest-model"), module.exports);
|
|
147
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
148
|
+
0 && (module.exports = {
|
|
149
|
+
ManifestWrapper,
|
|
150
|
+
standardCreatableModules,
|
|
151
|
+
...require("@xyo-network/manifest-model")
|
|
152
|
+
});
|
|
153
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/ManifestWrapper.ts","../../src/standardCreatableModules.ts"],"sourcesContent":["export * from './ManifestWrapper'\nexport * from './standardCreatableModules'\nexport * from '@xyo-network/manifest-model'\n","import { assertEx } from '@xylabs/assert'\nimport { Account } from '@xyo-network/account'\nimport { ModuleManifest, NodeManifest, PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n assignCreatableModuleRegistry,\n CreatableModuleDictionary,\n CreatableModuleRegistry,\n ModuleFactoryLocator,\n ModuleInstance,\n toCreatableModuleRegistry,\n} from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { standardCreatableModules } from './standardCreatableModules'\n\n/** Provides functionality that can be performed on a PackageManifest */\nexport class ManifestWrapper extends PayloadWrapper<PackageManifestPayload> {\n constructor(\n payload: PackageManifestPayload,\n protected readonly wallet: WalletInstance,\n protected readonly locator: ModuleFactoryLocator = new ModuleFactoryLocator({}),\n protected readonly publicChildren: PackageManifestPayload[] = [],\n protected readonly privateChildren: PackageManifestPayload[] = [],\n ) {\n super(payload)\n }\n\n async loadModule(node: MemoryNode, manifest: ModuleManifest, external: boolean, additionalCreatableModules?: CreatableModuleRegistry): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external: boolean,\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external = true,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<void> {\n const collision = async (node: NodeInstance, name: string, external: boolean) => {\n const externalConflict = external ? (await node.resolve({ name: [name] }, { direction: external ? 'all' : 'down' })).length > 0 : false\n return externalConflict || (await node.resolve({ name: [name] }, { direction: 'down' })).length > 0\n }\n\n const creatableModules = assignCreatableModuleRegistry(\n {},\n toCreatableModuleRegistry(standardCreatableModules),\n toCreatableModuleRegistry(additionalCreatableModules ?? {}),\n )\n if (!(await collision(node, manifest.config.name, external)) && manifest.config.language && manifest.config.language === 'javascript') {\n assertEx(\n (manifest.config.name && (await node.attach(manifest.config.name, external))) ??\n (await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external)),\n `No module with config schema [${manifest.config.name}] registered`,\n )\n }\n }\n\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode> {\n const manifest = assertEx(this.nodeManifest(index), 'Failed to find Node Manifest')\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, registry)\n }\n\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromManifest(\n manifest: NodeManifest,\n path?: string,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<MemoryNode> {\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const node = await MemoryNode.create({ account, config: manifest.config, wallet })\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n // Load Private Modules\n const privateModules =\n manifest.modules?.private?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, false, registry)\n }) ?? []\n // Load Public Modules\n const publicModules =\n manifest.modules?.public?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, true, registry)\n }) ?? []\n await Promise.all([...privateModules, ...publicModules])\n\n await Promise.all(\n this.privateChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n for (const subNode of subNodes) {\n node.attach(subNode.address, false)\n }\n }),\n )\n\n await Promise.all(\n this.publicChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n for (const subNode of subNodes) {\n node.attach(subNode.address, true)\n }\n }),\n )\n\n return node\n }\n\n /**\n * Load the nodes that are defined in the wrapped manifest and optionally attach them to a node\n */\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleRegistry,\n ): Promise<MemoryNode[]>\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<MemoryNode[]>\n async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode[]> {\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n const result = await Promise.all(\n this.jsonPayload().nodes?.map(async (nodeManifest, index) => {\n const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, registry)\n await node?.register(subNode)\n return subNode\n }),\n )\n return result\n }\n\n nodeManifest(index: number) {\n return this.jsonPayload().nodes?.[index]\n }\n\n /** Register a module on a node based on a manifest */\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleRegistry): Promise<ModuleInstance>\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleDictionary): Promise<ModuleInstance>\n private async registerModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n creatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<ModuleInstance> {\n const registry = toCreatableModuleRegistry(creatableModules ?? {})\n const creatableModule = new ModuleFactoryLocator(this.locator.registry)\n .registerMany(registry)\n .locate(manifest.config.schema, manifest.config.labels)\n const path = manifest.config.accountPath\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const module = await creatableModule.create({\n account,\n config: assertEx(manifest.config, 'Missing config'),\n wallet,\n })\n await node.register(module)\n return module\n }\n}\n","import { HttpBridge } from '@xyo-network/http-bridge'\nimport { MemoryArchivist } from '@xyo-network/memory-archivist'\nimport { CreatableModuleDictionary, ModuleFactory } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { MemorySentinel } from '@xyo-network/sentinel'\n\nexport const standardCreatableModules: CreatableModuleDictionary = {\n 'network.xyo.archivist.config': MemoryArchivist,\n 'network.xyo.bridge.http.config': ModuleFactory.withParams(HttpBridge, { config: { schema: HttpBridge.configSchema } }),\n 'network.xyo.node.config': MemoryNode,\n 'network.xyo.sentinel.config': MemorySentinel,\n}\n"],"mappings":"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","names":["import_module_model","import_node_memory","node","external","module"]}
|
package/dist/node/index.js
CHANGED
|
@@ -1,54 +1,30 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
19
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
-
|
|
21
|
-
// src/index.ts
|
|
22
|
-
var src_exports = {};
|
|
23
|
-
__export(src_exports, {
|
|
24
|
-
ManifestWrapper: () => ManifestWrapper,
|
|
25
|
-
standardCreatableModules: () => standardCreatableModules
|
|
26
|
-
});
|
|
27
|
-
module.exports = __toCommonJS(src_exports);
|
|
28
|
-
|
|
29
1
|
// src/ManifestWrapper.ts
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
2
|
+
import { assertEx } from "@xylabs/assert";
|
|
3
|
+
import { Account } from "@xyo-network/account";
|
|
4
|
+
import {
|
|
5
|
+
assignCreatableModuleRegistry,
|
|
6
|
+
ModuleFactoryLocator,
|
|
7
|
+
toCreatableModuleRegistry
|
|
8
|
+
} from "@xyo-network/module-model";
|
|
9
|
+
import { MemoryNode as MemoryNode2 } from "@xyo-network/node-memory";
|
|
10
|
+
import { PayloadWrapper } from "@xyo-network/payload-wrapper";
|
|
35
11
|
|
|
36
12
|
// src/standardCreatableModules.ts
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
13
|
+
import { HttpBridge } from "@xyo-network/http-bridge";
|
|
14
|
+
import { MemoryArchivist } from "@xyo-network/memory-archivist";
|
|
15
|
+
import { ModuleFactory } from "@xyo-network/module-model";
|
|
16
|
+
import { MemoryNode } from "@xyo-network/node-memory";
|
|
17
|
+
import { MemorySentinel } from "@xyo-network/sentinel";
|
|
42
18
|
var standardCreatableModules = {
|
|
43
|
-
"network.xyo.archivist.config":
|
|
44
|
-
"network.xyo.bridge.http.config":
|
|
45
|
-
"network.xyo.node.config":
|
|
46
|
-
"network.xyo.sentinel.config":
|
|
19
|
+
"network.xyo.archivist.config": MemoryArchivist,
|
|
20
|
+
"network.xyo.bridge.http.config": ModuleFactory.withParams(HttpBridge, { config: { schema: HttpBridge.configSchema } }),
|
|
21
|
+
"network.xyo.node.config": MemoryNode,
|
|
22
|
+
"network.xyo.sentinel.config": MemorySentinel
|
|
47
23
|
};
|
|
48
24
|
|
|
49
25
|
// src/ManifestWrapper.ts
|
|
50
|
-
var ManifestWrapper = class _ManifestWrapper extends
|
|
51
|
-
constructor(payload, wallet, locator = new
|
|
26
|
+
var ManifestWrapper = class _ManifestWrapper extends PayloadWrapper {
|
|
27
|
+
constructor(payload, wallet, locator = new ModuleFactoryLocator({}), publicChildren = [], privateChildren = []) {
|
|
52
28
|
super(payload);
|
|
53
29
|
this.wallet = wallet;
|
|
54
30
|
this.locator = locator;
|
|
@@ -57,34 +33,32 @@ var ManifestWrapper = class _ManifestWrapper extends import_payload_wrapper.Payl
|
|
|
57
33
|
}
|
|
58
34
|
async loadModule(node, manifest, external = true, additionalCreatableModules) {
|
|
59
35
|
const collision = async (node2, name, external2) => {
|
|
60
|
-
const externalConflict = external2 ? (await node2.resolve({ name: [name] }, { direction: external2 ? "all" : "down" })).length
|
|
61
|
-
return externalConflict || (await node2.resolve({ name: [name] }, { direction: "down" })).length
|
|
36
|
+
const externalConflict = external2 ? (await node2.resolve({ name: [name] }, { direction: external2 ? "all" : "down" })).length > 0 : false;
|
|
37
|
+
return externalConflict || (await node2.resolve({ name: [name] }, { direction: "down" })).length > 0;
|
|
62
38
|
};
|
|
63
|
-
const creatableModules =
|
|
39
|
+
const creatableModules = assignCreatableModuleRegistry(
|
|
64
40
|
{},
|
|
65
|
-
|
|
66
|
-
|
|
41
|
+
toCreatableModuleRegistry(standardCreatableModules),
|
|
42
|
+
toCreatableModuleRegistry(additionalCreatableModules ?? {})
|
|
67
43
|
);
|
|
68
|
-
if (!await collision(node, manifest.config.name, external)) {
|
|
69
|
-
|
|
70
|
-
(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
);
|
|
74
|
-
}
|
|
44
|
+
if (!await collision(node, manifest.config.name, external) && manifest.config.language && manifest.config.language === "javascript") {
|
|
45
|
+
assertEx(
|
|
46
|
+
(manifest.config.name && await node.attach(manifest.config.name, external)) ?? await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external),
|
|
47
|
+
`No module with config schema [${manifest.config.name}] registered`
|
|
48
|
+
);
|
|
75
49
|
}
|
|
76
50
|
}
|
|
77
51
|
async loadNodeFromIndex(index, additionalCreatableModules) {
|
|
78
|
-
const manifest =
|
|
79
|
-
const registry =
|
|
52
|
+
const manifest = assertEx(this.nodeManifest(index), "Failed to find Node Manifest");
|
|
53
|
+
const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {});
|
|
80
54
|
return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, registry);
|
|
81
55
|
}
|
|
82
56
|
async loadNodeFromManifest(manifest, path, additionalCreatableModules) {
|
|
83
57
|
var _a, _b, _c, _d;
|
|
84
58
|
const wallet = path ? await this.wallet.derivePath(path) : void 0;
|
|
85
|
-
const account = path ? void 0 :
|
|
86
|
-
const node = await
|
|
87
|
-
const registry =
|
|
59
|
+
const account = path ? void 0 : Account.randomSync();
|
|
60
|
+
const node = await MemoryNode2.create({ account, config: manifest.config, wallet });
|
|
61
|
+
const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {});
|
|
88
62
|
const privateModules = ((_b = (_a = manifest.modules) == null ? void 0 : _a.private) == null ? void 0 : _b.map(async (moduleManifest) => {
|
|
89
63
|
await this.loadModule(node, moduleManifest, false, registry);
|
|
90
64
|
})) ?? [];
|
|
@@ -96,25 +70,25 @@ var ManifestWrapper = class _ManifestWrapper extends import_payload_wrapper.Payl
|
|
|
96
70
|
this.privateChildren.map(async (child) => {
|
|
97
71
|
const wrapper = new _ManifestWrapper(child, this.wallet, this.locator);
|
|
98
72
|
const subNodes = await wrapper.loadNodes(node);
|
|
99
|
-
|
|
73
|
+
for (const subNode of subNodes) {
|
|
100
74
|
node.attach(subNode.address, false);
|
|
101
|
-
}
|
|
75
|
+
}
|
|
102
76
|
})
|
|
103
77
|
);
|
|
104
78
|
await Promise.all(
|
|
105
79
|
this.publicChildren.map(async (child) => {
|
|
106
80
|
const wrapper = new _ManifestWrapper(child, this.wallet, this.locator);
|
|
107
81
|
const subNodes = await wrapper.loadNodes(node);
|
|
108
|
-
|
|
82
|
+
for (const subNode of subNodes) {
|
|
109
83
|
node.attach(subNode.address, true);
|
|
110
|
-
}
|
|
84
|
+
}
|
|
111
85
|
})
|
|
112
86
|
);
|
|
113
87
|
return node;
|
|
114
88
|
}
|
|
115
89
|
async loadNodes(node, additionalCreatableModules) {
|
|
116
90
|
var _a;
|
|
117
|
-
const registry =
|
|
91
|
+
const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {});
|
|
118
92
|
const result = await Promise.all(
|
|
119
93
|
(_a = this.jsonPayload().nodes) == null ? void 0 : _a.map(async (nodeManifest, index) => {
|
|
120
94
|
const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, registry);
|
|
@@ -129,27 +103,25 @@ var ManifestWrapper = class _ManifestWrapper extends import_payload_wrapper.Payl
|
|
|
129
103
|
return (_a = this.jsonPayload().nodes) == null ? void 0 : _a[index];
|
|
130
104
|
}
|
|
131
105
|
async registerModule(node, manifest, creatableModules) {
|
|
132
|
-
const registry =
|
|
133
|
-
const creatableModule = new
|
|
106
|
+
const registry = toCreatableModuleRegistry(creatableModules ?? {});
|
|
107
|
+
const creatableModule = new ModuleFactoryLocator(this.locator.registry).registerMany(registry).locate(manifest.config.schema, manifest.config.labels);
|
|
134
108
|
const path = manifest.config.accountPath;
|
|
135
109
|
const wallet = path ? await this.wallet.derivePath(path) : void 0;
|
|
136
|
-
const account = path ? void 0 :
|
|
137
|
-
const
|
|
110
|
+
const account = path ? void 0 : Account.randomSync();
|
|
111
|
+
const module = await creatableModule.create({
|
|
138
112
|
account,
|
|
139
|
-
config:
|
|
113
|
+
config: assertEx(manifest.config, "Missing config"),
|
|
140
114
|
wallet
|
|
141
115
|
});
|
|
142
|
-
await node.register(
|
|
143
|
-
return
|
|
116
|
+
await node.register(module);
|
|
117
|
+
return module;
|
|
144
118
|
}
|
|
145
119
|
};
|
|
146
120
|
|
|
147
121
|
// src/index.ts
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
0 && (module.exports = {
|
|
122
|
+
export * from "@xyo-network/manifest-model";
|
|
123
|
+
export {
|
|
151
124
|
ManifestWrapper,
|
|
152
|
-
standardCreatableModules
|
|
153
|
-
|
|
154
|
-
});
|
|
125
|
+
standardCreatableModules
|
|
126
|
+
};
|
|
155
127
|
//# sourceMappingURL=index.js.map
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/ManifestWrapper.ts","../../src/standardCreatableModules.ts"],"sourcesContent":["export * from './ManifestWrapper'\nexport * from './standardCreatableModules'\nexport * from '@xyo-network/manifest-model'\n","import { assertEx } from '@xylabs/assert'\nimport { Account } from '@xyo-network/account'\nimport { ModuleManifest, NodeManifest, PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n assignCreatableModuleRegistry,\n CreatableModuleDictionary,\n CreatableModuleRegistry,\n ModuleFactoryLocator,\n ModuleInstance,\n toCreatableModuleRegistry,\n} from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { standardCreatableModules } from './standardCreatableModules'\n\n/** Provides functionality that can be performed on a PackageManifest */\nexport class ManifestWrapper extends PayloadWrapper<PackageManifestPayload> {\n constructor(\n payload: PackageManifestPayload,\n protected readonly wallet: WalletInstance,\n protected readonly locator: ModuleFactoryLocator = new ModuleFactoryLocator({}),\n protected readonly publicChildren: PackageManifestPayload[] = [],\n protected readonly privateChildren: PackageManifestPayload[] = [],\n ) {\n super(payload)\n }\n\n async loadModule(node: MemoryNode, manifest: ModuleManifest, external: boolean, additionalCreatableModules?: CreatableModuleRegistry): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external: boolean,\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external = true,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<void> {\n const collision = async (node: NodeInstance, name: string, external: boolean) => {\n const externalConflict = external ? (await node.resolve({ name: [name] }, { direction: external ? 'all' : 'down' })).length !== 0 : false\n return externalConflict || (await node.resolve({ name: [name] }, { direction: 'down' })).length !== 0\n }\n\n const creatableModules = assignCreatableModuleRegistry(\n {},\n toCreatableModuleRegistry(standardCreatableModules),\n toCreatableModuleRegistry(additionalCreatableModules ?? {}),\n )\n if (!(await collision(node, manifest.config.name, external))) {\n if (manifest.config.language && manifest.config.language === 'javascript') {\n assertEx(\n (manifest.config.name && (await node.attach(manifest.config.name, external))) ??\n (await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external)),\n `No module with config schema [${manifest.config.name}] registered`,\n )\n }\n }\n }\n\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode> {\n const manifest = assertEx(this.nodeManifest(index), 'Failed to find Node Manifest')\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, registry)\n }\n\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromManifest(\n manifest: NodeManifest,\n path?: string,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<MemoryNode> {\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const node = await MemoryNode.create({ account, config: manifest.config, wallet })\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n // Load Private Modules\n const privateModules =\n manifest.modules?.private?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, false, registry)\n }) ?? []\n // Load Public Modules\n const publicModules =\n manifest.modules?.public?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, true, registry)\n }) ?? []\n await Promise.all([...privateModules, ...publicModules])\n\n await Promise.all(\n this.privateChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n subNodes.forEach((subNode) => {\n node.attach(subNode.address, false)\n })\n }),\n )\n\n await Promise.all(\n this.publicChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n subNodes.forEach((subNode) => {\n node.attach(subNode.address, true)\n })\n }),\n )\n\n return node\n }\n\n /**\n * Load the nodes that are defined in the wrapped manifest and optionally attach them to a node\n */\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleRegistry,\n ): Promise<MemoryNode[]>\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<MemoryNode[]>\n async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode[]> {\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n const result = await Promise.all(\n this.jsonPayload().nodes?.map(async (nodeManifest, index) => {\n const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, registry)\n await node?.register(subNode)\n return subNode\n }),\n )\n return result\n }\n\n nodeManifest(index: number) {\n return this.jsonPayload().nodes?.[index]\n }\n\n /** Register a module on a node based on a manifest */\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleRegistry): Promise<ModuleInstance>\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleDictionary): Promise<ModuleInstance>\n private async registerModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n creatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<ModuleInstance> {\n const registry = toCreatableModuleRegistry(creatableModules ?? {})\n const creatableModule = new ModuleFactoryLocator(this.locator.registry)\n .registerMany(registry)\n .locate(manifest.config.schema, manifest.config.labels)\n const path = manifest.config.accountPath\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const module = await creatableModule.create({\n account,\n config: assertEx(manifest.config, 'Missing config'),\n wallet,\n })\n await node.register(module)\n return module\n }\n}\n","import { HttpBridge } from '@xyo-network/http-bridge'\nimport { MemoryArchivist } from '@xyo-network/memory-archivist'\nimport { CreatableModuleDictionary, ModuleFactory } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { MemorySentinel } from '@xyo-network/sentinel'\n\nexport const standardCreatableModules: CreatableModuleDictionary = {\n 'network.xyo.archivist.config': MemoryArchivist,\n 'network.xyo.bridge.http.config': ModuleFactory.withParams(HttpBridge, { config: { schema: HttpBridge.configSchema } }),\n 'network.xyo.node.config': MemoryNode,\n 'network.xyo.sentinel.config': MemorySentinel,\n}\n"],"mappings":"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","names":["import_module_model","import_node_memory","node","external","module"]}
|
|
1
|
+
{"version":3,"sources":["../../src/ManifestWrapper.ts","../../src/standardCreatableModules.ts","../../src/index.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Account } from '@xyo-network/account'\nimport { ModuleManifest, NodeManifest, PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n assignCreatableModuleRegistry,\n CreatableModuleDictionary,\n CreatableModuleRegistry,\n ModuleFactoryLocator,\n ModuleInstance,\n toCreatableModuleRegistry,\n} from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { standardCreatableModules } from './standardCreatableModules'\n\n/** Provides functionality that can be performed on a PackageManifest */\nexport class ManifestWrapper extends PayloadWrapper<PackageManifestPayload> {\n constructor(\n payload: PackageManifestPayload,\n protected readonly wallet: WalletInstance,\n protected readonly locator: ModuleFactoryLocator = new ModuleFactoryLocator({}),\n protected readonly publicChildren: PackageManifestPayload[] = [],\n protected readonly privateChildren: PackageManifestPayload[] = [],\n ) {\n super(payload)\n }\n\n async loadModule(node: MemoryNode, manifest: ModuleManifest, external: boolean, additionalCreatableModules?: CreatableModuleRegistry): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external: boolean,\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external = true,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<void> {\n const collision = async (node: NodeInstance, name: string, external: boolean) => {\n const externalConflict = external ? (await node.resolve({ name: [name] }, { direction: external ? 'all' : 'down' })).length > 0 : false\n return externalConflict || (await node.resolve({ name: [name] }, { direction: 'down' })).length > 0\n }\n\n const creatableModules = assignCreatableModuleRegistry(\n {},\n toCreatableModuleRegistry(standardCreatableModules),\n toCreatableModuleRegistry(additionalCreatableModules ?? {}),\n )\n if (!(await collision(node, manifest.config.name, external)) && manifest.config.language && manifest.config.language === 'javascript') {\n assertEx(\n (manifest.config.name && (await node.attach(manifest.config.name, external))) ??\n (await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external)),\n `No module with config schema [${manifest.config.name}] registered`,\n )\n }\n }\n\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode> {\n const manifest = assertEx(this.nodeManifest(index), 'Failed to find Node Manifest')\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, registry)\n }\n\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromManifest(\n manifest: NodeManifest,\n path?: string,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<MemoryNode> {\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const node = await MemoryNode.create({ account, config: manifest.config, wallet })\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n // Load Private Modules\n const privateModules =\n manifest.modules?.private?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, false, registry)\n }) ?? []\n // Load Public Modules\n const publicModules =\n manifest.modules?.public?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, true, registry)\n }) ?? []\n await Promise.all([...privateModules, ...publicModules])\n\n await Promise.all(\n this.privateChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n for (const subNode of subNodes) {\n node.attach(subNode.address, false)\n }\n }),\n )\n\n await Promise.all(\n this.publicChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n for (const subNode of subNodes) {\n node.attach(subNode.address, true)\n }\n }),\n )\n\n return node\n }\n\n /**\n * Load the nodes that are defined in the wrapped manifest and optionally attach them to a node\n */\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleRegistry,\n ): Promise<MemoryNode[]>\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<MemoryNode[]>\n async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode[]> {\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n const result = await Promise.all(\n this.jsonPayload().nodes?.map(async (nodeManifest, index) => {\n const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, registry)\n await node?.register(subNode)\n return subNode\n }),\n )\n return result\n }\n\n nodeManifest(index: number) {\n return this.jsonPayload().nodes?.[index]\n }\n\n /** Register a module on a node based on a manifest */\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleRegistry): Promise<ModuleInstance>\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleDictionary): Promise<ModuleInstance>\n private async registerModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n creatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<ModuleInstance> {\n const registry = toCreatableModuleRegistry(creatableModules ?? {})\n const creatableModule = new ModuleFactoryLocator(this.locator.registry)\n .registerMany(registry)\n .locate(manifest.config.schema, manifest.config.labels)\n const path = manifest.config.accountPath\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const module = await creatableModule.create({\n account,\n config: assertEx(manifest.config, 'Missing config'),\n wallet,\n })\n await node.register(module)\n return module\n }\n}\n","import { HttpBridge } from '@xyo-network/http-bridge'\nimport { MemoryArchivist } from '@xyo-network/memory-archivist'\nimport { CreatableModuleDictionary, ModuleFactory } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { MemorySentinel } from '@xyo-network/sentinel'\n\nexport const standardCreatableModules: CreatableModuleDictionary = {\n 'network.xyo.archivist.config': MemoryArchivist,\n 'network.xyo.bridge.http.config': ModuleFactory.withParams(HttpBridge, { config: { schema: HttpBridge.configSchema } }),\n 'network.xyo.node.config': MemoryNode,\n 'network.xyo.sentinel.config': MemorySentinel,\n}\n","export * from './ManifestWrapper'\nexport * from './standardCreatableModules'\nexport * from '@xyo-network/manifest-model'\n"],"mappings":"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","names":["MemoryNode","node","external","MemoryNode"]}
|
package/package.json
CHANGED
|
@@ -11,24 +11,23 @@
|
|
|
11
11
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@xylabs/assert": "^2.13.20",
|
|
14
|
-
"@xyo-network/http-bridge": "~2.84.
|
|
15
|
-
"@xyo-network/manifest-model": "~2.84.
|
|
16
|
-
"@xyo-network/memory-archivist": "~2.84.
|
|
17
|
-
"@xyo-network/module-model": "~2.84.
|
|
18
|
-
"@xyo-network/node-memory": "~2.84.
|
|
19
|
-
"@xyo-network/node-model": "~2.84.
|
|
20
|
-
"@xyo-network/payload-wrapper": "~2.84.
|
|
21
|
-
"@xyo-network/sentinel": "~2.84.
|
|
22
|
-
"@xyo-network/wallet-model": "~2.84.
|
|
14
|
+
"@xyo-network/http-bridge": "~2.84.7",
|
|
15
|
+
"@xyo-network/manifest-model": "~2.84.7",
|
|
16
|
+
"@xyo-network/memory-archivist": "~2.84.7",
|
|
17
|
+
"@xyo-network/module-model": "~2.84.7",
|
|
18
|
+
"@xyo-network/node-memory": "~2.84.7",
|
|
19
|
+
"@xyo-network/node-model": "~2.84.7",
|
|
20
|
+
"@xyo-network/payload-wrapper": "~2.84.7",
|
|
21
|
+
"@xyo-network/sentinel": "~2.84.7",
|
|
22
|
+
"@xyo-network/wallet-model": "~2.84.7"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@xylabs/ts-scripts-yarn3": "^3.2.
|
|
26
|
-
"@xylabs/tsconfig": "^3.2.
|
|
27
|
-
"@xyo-network/account": "~2.84.
|
|
25
|
+
"@xylabs/ts-scripts-yarn3": "^3.2.24",
|
|
26
|
+
"@xylabs/tsconfig": "^3.2.24",
|
|
27
|
+
"@xyo-network/account": "~2.84.7",
|
|
28
28
|
"@xyo-network/address-payload-plugin": "^2.84.2",
|
|
29
29
|
"typescript": "^5.3.3"
|
|
30
30
|
},
|
|
31
|
-
"docs": "dist/docs.json",
|
|
32
31
|
"types": "dist/node/index.d.ts",
|
|
33
32
|
"exports": {
|
|
34
33
|
".": {
|
|
@@ -44,12 +43,12 @@
|
|
|
44
43
|
},
|
|
45
44
|
"node": {
|
|
46
45
|
"require": {
|
|
47
|
-
"types": "./dist/node/index.d.
|
|
48
|
-
"default": "./dist/node/index.
|
|
46
|
+
"types": "./dist/node/index.d.cts",
|
|
47
|
+
"default": "./dist/node/index.cjs"
|
|
49
48
|
},
|
|
50
49
|
"import": {
|
|
51
50
|
"types": "./dist/node/index.d.mts",
|
|
52
|
-
"default": "./dist/node/index.
|
|
51
|
+
"default": "./dist/node/index.js"
|
|
53
52
|
}
|
|
54
53
|
}
|
|
55
54
|
},
|
|
@@ -58,8 +57,8 @@
|
|
|
58
57
|
},
|
|
59
58
|
"./package.json": "./package.json"
|
|
60
59
|
},
|
|
61
|
-
"main": "dist/node/index.
|
|
62
|
-
"module": "dist/node/index.
|
|
60
|
+
"main": "dist/node/index.cjs",
|
|
61
|
+
"module": "dist/node/index.js",
|
|
63
62
|
"homepage": "https://xyo.network",
|
|
64
63
|
"license": "LGPL-3.0-only",
|
|
65
64
|
"name": "@xyo-network/manifest",
|
|
@@ -71,5 +70,6 @@
|
|
|
71
70
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
72
71
|
},
|
|
73
72
|
"sideEffects": false,
|
|
74
|
-
"version": "2.84.
|
|
73
|
+
"version": "2.84.7",
|
|
74
|
+
"type": "module"
|
|
75
75
|
}
|
package/src/ManifestWrapper.ts
CHANGED
|
@@ -42,8 +42,8 @@ export class ManifestWrapper extends PayloadWrapper<PackageManifestPayload> {
|
|
|
42
42
|
additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,
|
|
43
43
|
): Promise<void> {
|
|
44
44
|
const collision = async (node: NodeInstance, name: string, external: boolean) => {
|
|
45
|
-
const externalConflict = external ? (await node.resolve({ name: [name] }, { direction: external ? 'all' : 'down' })).length
|
|
46
|
-
return externalConflict || (await node.resolve({ name: [name] }, { direction: 'down' })).length
|
|
45
|
+
const externalConflict = external ? (await node.resolve({ name: [name] }, { direction: external ? 'all' : 'down' })).length > 0 : false
|
|
46
|
+
return externalConflict || (await node.resolve({ name: [name] }, { direction: 'down' })).length > 0
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
const creatableModules = assignCreatableModuleRegistry(
|
|
@@ -51,14 +51,12 @@ export class ManifestWrapper extends PayloadWrapper<PackageManifestPayload> {
|
|
|
51
51
|
toCreatableModuleRegistry(standardCreatableModules),
|
|
52
52
|
toCreatableModuleRegistry(additionalCreatableModules ?? {}),
|
|
53
53
|
)
|
|
54
|
-
if (!(await collision(node, manifest.config.name, external))) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
)
|
|
61
|
-
}
|
|
54
|
+
if (!(await collision(node, manifest.config.name, external)) && manifest.config.language && manifest.config.language === 'javascript') {
|
|
55
|
+
assertEx(
|
|
56
|
+
(manifest.config.name && (await node.attach(manifest.config.name, external))) ??
|
|
57
|
+
(await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external)),
|
|
58
|
+
`No module with config schema [${manifest.config.name}] registered`,
|
|
59
|
+
)
|
|
62
60
|
}
|
|
63
61
|
}
|
|
64
62
|
|
|
@@ -97,9 +95,9 @@ export class ManifestWrapper extends PayloadWrapper<PackageManifestPayload> {
|
|
|
97
95
|
this.privateChildren.map(async (child) => {
|
|
98
96
|
const wrapper = new ManifestWrapper(child, this.wallet, this.locator)
|
|
99
97
|
const subNodes = await wrapper.loadNodes(node)
|
|
100
|
-
|
|
98
|
+
for (const subNode of subNodes) {
|
|
101
99
|
node.attach(subNode.address, false)
|
|
102
|
-
}
|
|
100
|
+
}
|
|
103
101
|
}),
|
|
104
102
|
)
|
|
105
103
|
|
|
@@ -107,9 +105,9 @@ export class ManifestWrapper extends PayloadWrapper<PackageManifestPayload> {
|
|
|
107
105
|
this.publicChildren.map(async (child) => {
|
|
108
106
|
const wrapper = new ManifestWrapper(child, this.wallet, this.locator)
|
|
109
107
|
const subNodes = await wrapper.loadNodes(node)
|
|
110
|
-
|
|
108
|
+
for (const subNode of subNodes) {
|
|
111
109
|
node.attach(subNode.address, true)
|
|
112
|
-
}
|
|
110
|
+
}
|
|
113
111
|
}),
|
|
114
112
|
)
|
|
115
113
|
|
package/dist/node/index.mjs
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
// src/ManifestWrapper.ts
|
|
2
|
-
import { assertEx } from "@xylabs/assert";
|
|
3
|
-
import { Account } from "@xyo-network/account";
|
|
4
|
-
import {
|
|
5
|
-
assignCreatableModuleRegistry,
|
|
6
|
-
ModuleFactoryLocator,
|
|
7
|
-
toCreatableModuleRegistry
|
|
8
|
-
} from "@xyo-network/module-model";
|
|
9
|
-
import { MemoryNode as MemoryNode2 } from "@xyo-network/node-memory";
|
|
10
|
-
import { PayloadWrapper } from "@xyo-network/payload-wrapper";
|
|
11
|
-
|
|
12
|
-
// src/standardCreatableModules.ts
|
|
13
|
-
import { HttpBridge } from "@xyo-network/http-bridge";
|
|
14
|
-
import { MemoryArchivist } from "@xyo-network/memory-archivist";
|
|
15
|
-
import { ModuleFactory } from "@xyo-network/module-model";
|
|
16
|
-
import { MemoryNode } from "@xyo-network/node-memory";
|
|
17
|
-
import { MemorySentinel } from "@xyo-network/sentinel";
|
|
18
|
-
var standardCreatableModules = {
|
|
19
|
-
"network.xyo.archivist.config": MemoryArchivist,
|
|
20
|
-
"network.xyo.bridge.http.config": ModuleFactory.withParams(HttpBridge, { config: { schema: HttpBridge.configSchema } }),
|
|
21
|
-
"network.xyo.node.config": MemoryNode,
|
|
22
|
-
"network.xyo.sentinel.config": MemorySentinel
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
// src/ManifestWrapper.ts
|
|
26
|
-
var ManifestWrapper = class _ManifestWrapper extends PayloadWrapper {
|
|
27
|
-
constructor(payload, wallet, locator = new ModuleFactoryLocator({}), publicChildren = [], privateChildren = []) {
|
|
28
|
-
super(payload);
|
|
29
|
-
this.wallet = wallet;
|
|
30
|
-
this.locator = locator;
|
|
31
|
-
this.publicChildren = publicChildren;
|
|
32
|
-
this.privateChildren = privateChildren;
|
|
33
|
-
}
|
|
34
|
-
async loadModule(node, manifest, external = true, additionalCreatableModules) {
|
|
35
|
-
const collision = async (node2, name, external2) => {
|
|
36
|
-
const externalConflict = external2 ? (await node2.resolve({ name: [name] }, { direction: external2 ? "all" : "down" })).length !== 0 : false;
|
|
37
|
-
return externalConflict || (await node2.resolve({ name: [name] }, { direction: "down" })).length !== 0;
|
|
38
|
-
};
|
|
39
|
-
const creatableModules = assignCreatableModuleRegistry(
|
|
40
|
-
{},
|
|
41
|
-
toCreatableModuleRegistry(standardCreatableModules),
|
|
42
|
-
toCreatableModuleRegistry(additionalCreatableModules ?? {})
|
|
43
|
-
);
|
|
44
|
-
if (!await collision(node, manifest.config.name, external)) {
|
|
45
|
-
if (manifest.config.language && manifest.config.language === "javascript") {
|
|
46
|
-
assertEx(
|
|
47
|
-
(manifest.config.name && await node.attach(manifest.config.name, external)) ?? await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external),
|
|
48
|
-
`No module with config schema [${manifest.config.name}] registered`
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
async loadNodeFromIndex(index, additionalCreatableModules) {
|
|
54
|
-
const manifest = assertEx(this.nodeManifest(index), "Failed to find Node Manifest");
|
|
55
|
-
const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {});
|
|
56
|
-
return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, registry);
|
|
57
|
-
}
|
|
58
|
-
async loadNodeFromManifest(manifest, path, additionalCreatableModules) {
|
|
59
|
-
var _a, _b, _c, _d;
|
|
60
|
-
const wallet = path ? await this.wallet.derivePath(path) : void 0;
|
|
61
|
-
const account = path ? void 0 : Account.randomSync();
|
|
62
|
-
const node = await MemoryNode2.create({ account, config: manifest.config, wallet });
|
|
63
|
-
const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {});
|
|
64
|
-
const privateModules = ((_b = (_a = manifest.modules) == null ? void 0 : _a.private) == null ? void 0 : _b.map(async (moduleManifest) => {
|
|
65
|
-
await this.loadModule(node, moduleManifest, false, registry);
|
|
66
|
-
})) ?? [];
|
|
67
|
-
const publicModules = ((_d = (_c = manifest.modules) == null ? void 0 : _c.public) == null ? void 0 : _d.map(async (moduleManifest) => {
|
|
68
|
-
await this.loadModule(node, moduleManifest, true, registry);
|
|
69
|
-
})) ?? [];
|
|
70
|
-
await Promise.all([...privateModules, ...publicModules]);
|
|
71
|
-
await Promise.all(
|
|
72
|
-
this.privateChildren.map(async (child) => {
|
|
73
|
-
const wrapper = new _ManifestWrapper(child, this.wallet, this.locator);
|
|
74
|
-
const subNodes = await wrapper.loadNodes(node);
|
|
75
|
-
subNodes.forEach((subNode) => {
|
|
76
|
-
node.attach(subNode.address, false);
|
|
77
|
-
});
|
|
78
|
-
})
|
|
79
|
-
);
|
|
80
|
-
await Promise.all(
|
|
81
|
-
this.publicChildren.map(async (child) => {
|
|
82
|
-
const wrapper = new _ManifestWrapper(child, this.wallet, this.locator);
|
|
83
|
-
const subNodes = await wrapper.loadNodes(node);
|
|
84
|
-
subNodes.forEach((subNode) => {
|
|
85
|
-
node.attach(subNode.address, true);
|
|
86
|
-
});
|
|
87
|
-
})
|
|
88
|
-
);
|
|
89
|
-
return node;
|
|
90
|
-
}
|
|
91
|
-
async loadNodes(node, additionalCreatableModules) {
|
|
92
|
-
var _a;
|
|
93
|
-
const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {});
|
|
94
|
-
const result = await Promise.all(
|
|
95
|
-
(_a = this.jsonPayload().nodes) == null ? void 0 : _a.map(async (nodeManifest, index) => {
|
|
96
|
-
const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, registry);
|
|
97
|
-
await (node == null ? void 0 : node.register(subNode));
|
|
98
|
-
return subNode;
|
|
99
|
-
})
|
|
100
|
-
);
|
|
101
|
-
return result;
|
|
102
|
-
}
|
|
103
|
-
nodeManifest(index) {
|
|
104
|
-
var _a;
|
|
105
|
-
return (_a = this.jsonPayload().nodes) == null ? void 0 : _a[index];
|
|
106
|
-
}
|
|
107
|
-
async registerModule(node, manifest, creatableModules) {
|
|
108
|
-
const registry = toCreatableModuleRegistry(creatableModules ?? {});
|
|
109
|
-
const creatableModule = new ModuleFactoryLocator(this.locator.registry).registerMany(registry).locate(manifest.config.schema, manifest.config.labels);
|
|
110
|
-
const path = manifest.config.accountPath;
|
|
111
|
-
const wallet = path ? await this.wallet.derivePath(path) : void 0;
|
|
112
|
-
const account = path ? void 0 : Account.randomSync();
|
|
113
|
-
const module = await creatableModule.create({
|
|
114
|
-
account,
|
|
115
|
-
config: assertEx(manifest.config, "Missing config"),
|
|
116
|
-
wallet
|
|
117
|
-
});
|
|
118
|
-
await node.register(module);
|
|
119
|
-
return module;
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
// src/index.ts
|
|
124
|
-
export * from "@xyo-network/manifest-model";
|
|
125
|
-
export {
|
|
126
|
-
ManifestWrapper,
|
|
127
|
-
standardCreatableModules
|
|
128
|
-
};
|
|
129
|
-
//# sourceMappingURL=index.mjs.map
|
package/dist/node/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ManifestWrapper.ts","../../src/standardCreatableModules.ts","../../src/index.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Account } from '@xyo-network/account'\nimport { ModuleManifest, NodeManifest, PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n assignCreatableModuleRegistry,\n CreatableModuleDictionary,\n CreatableModuleRegistry,\n ModuleFactoryLocator,\n ModuleInstance,\n toCreatableModuleRegistry,\n} from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { standardCreatableModules } from './standardCreatableModules'\n\n/** Provides functionality that can be performed on a PackageManifest */\nexport class ManifestWrapper extends PayloadWrapper<PackageManifestPayload> {\n constructor(\n payload: PackageManifestPayload,\n protected readonly wallet: WalletInstance,\n protected readonly locator: ModuleFactoryLocator = new ModuleFactoryLocator({}),\n protected readonly publicChildren: PackageManifestPayload[] = [],\n protected readonly privateChildren: PackageManifestPayload[] = [],\n ) {\n super(payload)\n }\n\n async loadModule(node: MemoryNode, manifest: ModuleManifest, external: boolean, additionalCreatableModules?: CreatableModuleRegistry): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external: boolean,\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<void>\n async loadModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n external = true,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<void> {\n const collision = async (node: NodeInstance, name: string, external: boolean) => {\n const externalConflict = external ? (await node.resolve({ name: [name] }, { direction: external ? 'all' : 'down' })).length !== 0 : false\n return externalConflict || (await node.resolve({ name: [name] }, { direction: 'down' })).length !== 0\n }\n\n const creatableModules = assignCreatableModuleRegistry(\n {},\n toCreatableModuleRegistry(standardCreatableModules),\n toCreatableModuleRegistry(additionalCreatableModules ?? {}),\n )\n if (!(await collision(node, manifest.config.name, external))) {\n if (manifest.config.language && manifest.config.language === 'javascript') {\n assertEx(\n (manifest.config.name && (await node.attach(manifest.config.name, external))) ??\n (await node.attach((await this.registerModule(node, manifest, creatableModules)).address, external)),\n `No module with config schema [${manifest.config.name}] registered`,\n )\n }\n }\n }\n\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode> {\n const manifest = assertEx(this.nodeManifest(index), 'Failed to find Node Manifest')\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, registry)\n }\n\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>\n async loadNodeFromManifest(\n manifest: NodeManifest,\n path?: string,\n additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<MemoryNode> {\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const node = await MemoryNode.create({ account, config: manifest.config, wallet })\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n // Load Private Modules\n const privateModules =\n manifest.modules?.private?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, false, registry)\n }) ?? []\n // Load Public Modules\n const publicModules =\n manifest.modules?.public?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, true, registry)\n }) ?? []\n await Promise.all([...privateModules, ...publicModules])\n\n await Promise.all(\n this.privateChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n subNodes.forEach((subNode) => {\n node.attach(subNode.address, false)\n })\n }),\n )\n\n await Promise.all(\n this.publicChildren.map(async (child) => {\n const wrapper = new ManifestWrapper(child, this.wallet, this.locator)\n const subNodes = await wrapper.loadNodes(node)\n subNodes.forEach((subNode) => {\n node.attach(subNode.address, true)\n })\n }),\n )\n\n return node\n }\n\n /**\n * Load the nodes that are defined in the wrapped manifest and optionally attach them to a node\n */\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleRegistry,\n ): Promise<MemoryNode[]>\n async loadNodes(\n /** Node to optionally attach the loaded nodes to */\n node?: MemoryNode,\n /** Additional creatable modules */\n additionalCreatableModules?: CreatableModuleDictionary,\n ): Promise<MemoryNode[]>\n async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode[]> {\n const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})\n const result = await Promise.all(\n this.jsonPayload().nodes?.map(async (nodeManifest, index) => {\n const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, registry)\n await node?.register(subNode)\n return subNode\n }),\n )\n return result\n }\n\n nodeManifest(index: number) {\n return this.jsonPayload().nodes?.[index]\n }\n\n /** Register a module on a node based on a manifest */\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleRegistry): Promise<ModuleInstance>\n private async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleDictionary): Promise<ModuleInstance>\n private async registerModule(\n node: MemoryNode,\n manifest: ModuleManifest,\n creatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,\n ): Promise<ModuleInstance> {\n const registry = toCreatableModuleRegistry(creatableModules ?? {})\n const creatableModule = new ModuleFactoryLocator(this.locator.registry)\n .registerMany(registry)\n .locate(manifest.config.schema, manifest.config.labels)\n const path = manifest.config.accountPath\n const wallet = path ? await this.wallet.derivePath(path) : undefined\n const account = path ? undefined : Account.randomSync()\n const module = await creatableModule.create({\n account,\n config: assertEx(manifest.config, 'Missing config'),\n wallet,\n })\n await node.register(module)\n return module\n }\n}\n","import { HttpBridge } from '@xyo-network/http-bridge'\nimport { MemoryArchivist } from '@xyo-network/memory-archivist'\nimport { CreatableModuleDictionary, ModuleFactory } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { MemorySentinel } from '@xyo-network/sentinel'\n\nexport const standardCreatableModules: CreatableModuleDictionary = {\n 'network.xyo.archivist.config': MemoryArchivist,\n 'network.xyo.bridge.http.config': ModuleFactory.withParams(HttpBridge, { config: { schema: HttpBridge.configSchema } }),\n 'network.xyo.node.config': MemoryNode,\n 'network.xyo.sentinel.config': MemorySentinel,\n}\n","export * from './ManifestWrapper'\nexport * from './standardCreatableModules'\nexport * from '@xyo-network/manifest-model'\n"],"mappings":"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","names":["MemoryNode","node","external","MemoryNode"]}
|