@xyo-network/manifest 2.73.4 → 2.74.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,5 +1,10 @@
1
1
  // src/ManifestWrapper.ts
2
2
  import { assertEx } from "@xylabs/assert";
3
+ import {
4
+ assignCreatableModuleRegistry,
5
+ ModuleFactoryLocator,
6
+ toCreatableModuleRegistry
7
+ } from "@xyo-network/module";
3
8
  import { MemoryNode as MemoryNode2 } from "@xyo-network/node-memory";
4
9
  import { PayloadWrapper } from "@xyo-network/payload-wrapper";
5
10
 
@@ -18,16 +23,21 @@ var standardCreatableModules = {
18
23
 
19
24
  // src/ManifestWrapper.ts
20
25
  var ManifestWrapper = class extends PayloadWrapper {
21
- constructor(payload, wallet) {
26
+ constructor(payload, wallet, locator = new ModuleFactoryLocator({})) {
22
27
  super(payload);
23
28
  this.wallet = wallet;
29
+ this.locator = locator;
24
30
  }
25
31
  async loadModule(node, manifest, external = true, additionalCreatableModules) {
26
32
  const collision = async (node2, name, external2) => {
27
33
  const externalConflict = external2 ? (await node2.resolve({ name: [name] }, { direction: external2 ? "all" : "down" })).length !== 0 : false;
28
34
  return externalConflict || (await node2.resolve({ name: [name] }, { direction: "down" })).length !== 0;
29
35
  };
30
- const creatableModules = { ...standardCreatableModules, ...additionalCreatableModules };
36
+ const creatableModules = assignCreatableModuleRegistry(
37
+ {},
38
+ toCreatableModuleRegistry(standardCreatableModules),
39
+ toCreatableModuleRegistry(additionalCreatableModules ?? {})
40
+ );
31
41
  if (!await collision(node, manifest.config.name, external)) {
32
42
  if (manifest.config.language && manifest.config.language === "javascript") {
33
43
  assertEx(
@@ -39,39 +49,38 @@ var ManifestWrapper = class extends PayloadWrapper {
39
49
  }
40
50
  async loadNodeFromIndex(index, additionalCreatableModules) {
41
51
  const manifest = assertEx(this.nodeManifest(index), "Failed to find Node Manifest");
42
- return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, additionalCreatableModules);
52
+ const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {});
53
+ return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, registry);
43
54
  }
44
55
  async loadNodeFromManifest(manifest, path, additionalCreatableModules) {
45
56
  const node = await MemoryNode2.create({ config: manifest.config, wallet: await this.wallet.derivePath(path) });
57
+ const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {});
46
58
  const privateModules = manifest.modules?.private?.map(async (moduleManifest) => {
47
- await this.loadModule(node, moduleManifest, false, additionalCreatableModules);
59
+ await this.loadModule(node, moduleManifest, false, registry);
48
60
  }) ?? [];
49
61
  const publicModules = manifest.modules?.public?.map(async (moduleManifest) => {
50
- await this.loadModule(node, moduleManifest, true, additionalCreatableModules);
62
+ await this.loadModule(node, moduleManifest, true, registry);
51
63
  }) ?? [];
52
64
  await Promise.all([...privateModules, ...publicModules]);
53
65
  return node;
54
66
  }
55
67
  async loadNodes(node, additionalCreatableModules) {
56
- const start = Date.now();
68
+ const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {});
57
69
  const result = await Promise.all(
58
70
  this.payload().nodes?.map(async (nodeManifest, index) => {
59
- const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, additionalCreatableModules);
71
+ const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, registry);
60
72
  await node?.register(subNode);
61
73
  return subNode;
62
74
  })
63
75
  );
64
- console.log(`Loaded nodes from manifest in ${Date.now() - start}ms`);
65
76
  return result;
66
77
  }
67
78
  nodeManifest(index) {
68
79
  return this.payload().nodes?.[index];
69
80
  }
70
81
  async registerModule(node, manifest, creatableModules) {
71
- const creatableModule = assertEx(
72
- creatableModules?.[manifest.config.schema],
73
- `No module with [${manifest.config.schema}] config schema available for registration`
74
- );
82
+ const registry = toCreatableModuleRegistry(creatableModules ?? {});
83
+ const creatableModule = new ModuleFactoryLocator(this.locator.registry).registerMany(registry).locate(manifest.config.schema, manifest.config.labels);
75
84
  const module = await creatableModule.create({
76
85
  account: manifest.config.accountPath ? await this.wallet.derivePath(manifest.config.accountPath) : this.wallet,
77
86
  config: assertEx(manifest.config, "Missing config")
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ManifestWrapper.ts","../src/standardCreatableModules.ts","../src/index.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { ManifestPayload, ModuleManifest, NodeManifest } from '@xyo-network/manifest-model'\nimport { CreatableModuleDictionary } from '@xyo-network/module'\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\nexport class ManifestWrapper extends PayloadWrapper<ManifestPayload> {\n constructor(\n payload: ManifestPayload,\n protected wallet: WalletInstance,\n ) {\n super(payload)\n }\n\n async loadModule(node: MemoryNode, manifest: ModuleManifest, external = true, additionalCreatableModules?: CreatableModuleDictionary) {\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 = { ...standardCreatableModules, ...additionalCreatableModules }\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?: CreatableModuleDictionary) {\n const manifest = assertEx(this.nodeManifest(index), 'Failed to find Node Manifest')\n return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, additionalCreatableModules)\n }\n\n async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleDictionary) {\n const node = await MemoryNode.create({ config: manifest.config, wallet: await this.wallet.derivePath(path) })\n // Load Private Modules\n const privateModules =\n manifest.modules?.private?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, false, additionalCreatableModules)\n }) ?? []\n // Load Public Modules\n const publicModules =\n manifest.modules?.public?.map(async (moduleManifest) => {\n await this.loadModule(node, moduleManifest, true, additionalCreatableModules)\n }) ?? []\n await Promise.all([...privateModules, ...publicModules])\n return node\n }\n\n async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary) {\n const start = Date.now()\n const result = await Promise.all(\n this.payload().nodes?.map(async (nodeManifest, index) => {\n const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, additionalCreatableModules)\n await node?.register(subNode)\n return subNode\n }),\n )\n console.log(`Loaded nodes from manifest in ${Date.now() - start}ms`)\n return result\n }\n\n nodeManifest(index: number) {\n return this.payload().nodes?.[index]\n }\n\n async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleDictionary) {\n const creatableModule = assertEx(\n creatableModules?.[manifest.config.schema],\n `No module with [${manifest.config.schema}] config schema available for registration`,\n )\n\n const module = await creatableModule.create({\n account: manifest.config.accountPath ? await this.wallet.derivePath(manifest.config.accountPath) : this.wallet,\n config: assertEx(manifest.config, 'Missing config'),\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'\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;AAGzB,SAAS,cAAAA,mBAAkB;AAE3B,SAAS,sBAAsB;;;ACL/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;;;ADDO,IAAM,kBAAN,cAA8B,eAAgC;AAAA,EACnE,YACE,SACU,QACV;AACA,UAAM,OAAO;AAFH;AAAA,EAGZ;AAAA,EAEA,MAAM,WAAW,MAAkB,UAA0B,WAAW,MAAM,4BAAwD;AACpI,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,WAAW,IAAI;AACpI,aAAO,qBAAqB,MAAMD,MAAK,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,OAAO,CAAC,GAAG,WAAW;AAAA,IACtG;AAEA,UAAM,mBAAmB,EAAE,GAAG,0BAA0B,GAAG,2BAA2B;AACtF,QAAI,CAAE,MAAM,UAAU,MAAM,SAAS,OAAO,MAAM,QAAQ,GAAI;AAC5D,UAAI,SAAS,OAAO,YAAY,SAAS,OAAO,aAAa,cAAc;AACzE;AAAA,WACG,SAAS,OAAO,QAAS,MAAM,KAAK,OAAO,SAAS,OAAO,MAAM,QAAQ,MACvE,MAAM,KAAK,QAAQ,MAAM,KAAK,eAAe,MAAM,UAAU,gBAAgB,GAAG,SAAS,QAAQ;AAAA,UACpG,iCAAiC,SAAS,OAAO,IAAI;AAAA,QACvD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,kBAAkB,OAAe,4BAAwD;AAC7F,UAAM,WAAW,SAAS,KAAK,aAAa,KAAK,GAAG,8BAA8B;AAClF,WAAO,MAAM,KAAK,qBAAqB,UAAU,SAAS,OAAO,eAAe,GAAG,KAAK,KAAK,0BAA0B;AAAA,EACzH;AAAA,EAEA,MAAM,qBAAqB,UAAwB,MAAc,4BAAwD;AACvH,UAAM,OAAO,MAAME,YAAW,OAAO,EAAE,QAAQ,SAAS,QAAQ,QAAQ,MAAM,KAAK,OAAO,WAAW,IAAI,EAAE,CAAC;AAE5G,UAAM,iBACJ,SAAS,SAAS,SAAS,IAAI,OAAO,mBAAmB;AACvD,YAAM,KAAK,WAAW,MAAM,gBAAgB,OAAO,0BAA0B;AAAA,IAC/E,CAAC,KAAK,CAAC;AAET,UAAM,gBACJ,SAAS,SAAS,QAAQ,IAAI,OAAO,mBAAmB;AACtD,YAAM,KAAK,WAAW,MAAM,gBAAgB,MAAM,0BAA0B;AAAA,IAC9E,CAAC,KAAK,CAAC;AACT,UAAM,QAAQ,IAAI,CAAC,GAAG,gBAAgB,GAAG,aAAa,CAAC;AACvD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,UAAU,MAAmB,4BAAwD;AACzF,UAAM,QAAQ,KAAK,IAAI;AACvB,UAAM,SAAS,MAAM,QAAQ;AAAA,MAC3B,KAAK,QAAQ,EAAE,OAAO,IAAI,OAAO,cAAc,UAAU;AACvD,cAAM,UAAU,MAAM,KAAK,qBAAqB,cAAc,aAAa,OAAO,eAAe,GAAG,KAAK,KAAK,0BAA0B;AACxI,cAAM,MAAM,SAAS,OAAO;AAC5B,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AACA,YAAQ,IAAI,iCAAiC,KAAK,IAAI,IAAI,KAAK,IAAI;AACnE,WAAO;AAAA,EACT;AAAA,EAEA,aAAa,OAAe;AAC1B,WAAO,KAAK,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACrC;AAAA,EAEA,MAAM,eAAe,MAAkB,UAA0B,kBAA8C;AAC7G,UAAM,kBAAkB;AAAA,MACtB,mBAAmB,SAAS,OAAO,MAAM;AAAA,MACzC,mBAAmB,SAAS,OAAO,MAAM;AAAA,IAC3C;AAEA,UAAM,SAAS,MAAM,gBAAgB,OAAO;AAAA,MAC1C,SAAS,SAAS,OAAO,cAAc,MAAM,KAAK,OAAO,WAAW,SAAS,OAAO,WAAW,IAAI,KAAK;AAAA,MACxG,QAAQ,SAAS,SAAS,QAAQ,gBAAgB;AAAA,IACpD,CAAC;AACD,UAAM,KAAK,SAAS,MAAM;AAC1B,WAAO;AAAA,EACT;AACF;;;AErFA,cAAc;","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 { ManifestPayload, ModuleManifest, NodeManifest } from '@xyo-network/manifest-model'\nimport {\n assignCreatableModuleRegistry,\n CreatableModuleDictionary,\n CreatableModuleRegistry,\n ModuleFactoryLocator,\n ModuleInstance,\n toCreatableModuleRegistry,\n} from '@xyo-network/module'\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\nexport class ManifestWrapper extends PayloadWrapper<ManifestPayload> {\n constructor(\n payload: ManifestPayload,\n protected readonly wallet: WalletInstance,\n protected readonly locator: ModuleFactoryLocator = new ModuleFactoryLocator({}),\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 node = await MemoryNode.create({ config: manifest.config, wallet: await this.wallet.derivePath(path) })\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 return node\n }\n\n async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode[]>\n async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary): 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.payload().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.payload().nodes?.[index]\n }\n\n async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleRegistry): Promise<ModuleInstance>\n async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleDictionary): Promise<ModuleInstance>\n 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 module = await creatableModule.create({\n account: manifest.config.accountPath ? await this.wallet.derivePath(manifest.config.accountPath) : this.wallet,\n config: assertEx(manifest.config, 'Missing config'),\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'\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"]}
@@ -0,0 +1,3 @@
1
+ import { CreatableModuleDictionary } from '@xyo-network/module';
2
+ export declare const standardCreatableModules: CreatableModuleDictionary;
3
+ //# sourceMappingURL=standardCreatableModules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standardCreatableModules.d.ts","sourceRoot":"","sources":["../src/standardCreatableModules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAiB,MAAM,qBAAqB,CAAA;AAI9E,eAAO,MAAM,wBAAwB,EAAE,yBAKtC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { CreatableModuleDictionary } from '@xyo-network/module';
2
+ export declare const standardCreatableModules: CreatableModuleDictionary;
3
+ //# sourceMappingURL=standardCreatableModules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standardCreatableModules.d.ts","sourceRoot":"","sources":["../src/standardCreatableModules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAiB,MAAM,qBAAqB,CAAA;AAI9E,eAAO,MAAM,wBAAwB,EAAE,yBAKtC,CAAA"}
package/package.json CHANGED
@@ -8,28 +8,22 @@
8
8
  "email": "support@xyo.network",
9
9
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
10
10
  },
11
- "scripts": {
12
- "package-compile": "tsup && publint",
13
- "package-recompile": "tsup && publint"
14
- },
15
11
  "description": "Primary SDK for using XYO Protocol 2.0",
16
12
  "dependencies": {
17
- "@xylabs/assert": "^2.10.16",
18
- "@xyo-network/http-bridge": "~2.73.4",
19
- "@xyo-network/manifest-model": "~2.73.4",
20
- "@xyo-network/memory-archivist": "~2.73.4",
21
- "@xyo-network/module": "~2.73.4",
22
- "@xyo-network/node-memory": "~2.73.4",
23
- "@xyo-network/node-model": "~2.73.4",
24
- "@xyo-network/payload-wrapper": "~2.73.4",
25
- "@xyo-network/sentinel": "~2.73.4",
26
- "@xyo-network/wallet-model": "~2.73.4"
13
+ "@xylabs/assert": "^2.11.5",
14
+ "@xyo-network/http-bridge": "~2.74.0",
15
+ "@xyo-network/manifest-model": "~2.74.0",
16
+ "@xyo-network/memory-archivist": "~2.74.0",
17
+ "@xyo-network/module": "~2.74.0",
18
+ "@xyo-network/node-memory": "~2.74.0",
19
+ "@xyo-network/node-model": "~2.74.0",
20
+ "@xyo-network/payload-wrapper": "~2.74.0",
21
+ "@xyo-network/sentinel": "~2.74.0",
22
+ "@xyo-network/wallet-model": "~2.74.0"
27
23
  },
28
24
  "devDependencies": {
29
- "@xylabs/ts-scripts-yarn3": "^2.19.12",
30
- "@xylabs/tsconfig": "^2.19.12",
31
- "publint": "^0.2.2",
32
- "tsup": "^7.2.0",
25
+ "@xylabs/ts-scripts-yarn3": "^3.0.27",
26
+ "@xylabs/tsconfig": "^3.0.27",
33
27
  "typescript": "^5.2.2"
34
28
  },
35
29
  "docs": "dist/docs.json",
@@ -45,18 +39,9 @@
45
39
  "default": "./dist/index.mjs"
46
40
  }
47
41
  },
48
- "./dist/docs.json": {
49
- "default": "./dist/docs.json"
50
- },
51
- "./cjs": {
52
- "default": "./dist/index.js"
53
- },
54
42
  "./docs": {
55
43
  "default": "./dist/docs.json"
56
44
  },
57
- "./esm": {
58
- "default": "./dist/index.mjs"
59
- },
60
45
  "./package.json": "./package.json"
61
46
  },
62
47
  "main": "dist/index.js",
@@ -72,5 +57,5 @@
72
57
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
73
58
  },
74
59
  "sideEffects": false,
75
- "version": "2.73.4"
60
+ "version": "2.74.0"
76
61
  }
@@ -1,6 +1,13 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
2
  import { ManifestPayload, ModuleManifest, NodeManifest } from '@xyo-network/manifest-model'
3
- import { CreatableModuleDictionary } from '@xyo-network/module'
3
+ import {
4
+ assignCreatableModuleRegistry,
5
+ CreatableModuleDictionary,
6
+ CreatableModuleRegistry,
7
+ ModuleFactoryLocator,
8
+ ModuleInstance,
9
+ toCreatableModuleRegistry,
10
+ } from '@xyo-network/module'
4
11
  import { MemoryNode } from '@xyo-network/node-memory'
5
12
  import { NodeInstance } from '@xyo-network/node-model'
6
13
  import { PayloadWrapper } from '@xyo-network/payload-wrapper'
@@ -11,18 +18,35 @@ import { standardCreatableModules } from './standardCreatableModules'
11
18
  export class ManifestWrapper extends PayloadWrapper<ManifestPayload> {
12
19
  constructor(
13
20
  payload: ManifestPayload,
14
- protected wallet: WalletInstance,
21
+ protected readonly wallet: WalletInstance,
22
+ protected readonly locator: ModuleFactoryLocator = new ModuleFactoryLocator({}),
15
23
  ) {
16
24
  super(payload)
17
25
  }
18
26
 
19
- async loadModule(node: MemoryNode, manifest: ModuleManifest, external = true, additionalCreatableModules?: CreatableModuleDictionary) {
27
+ async loadModule(node: MemoryNode, manifest: ModuleManifest, external: boolean, additionalCreatableModules?: CreatableModuleRegistry): Promise<void>
28
+ async loadModule(
29
+ node: MemoryNode,
30
+ manifest: ModuleManifest,
31
+ external: boolean,
32
+ additionalCreatableModules?: CreatableModuleDictionary,
33
+ ): Promise<void>
34
+ async loadModule(
35
+ node: MemoryNode,
36
+ manifest: ModuleManifest,
37
+ external = true,
38
+ additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,
39
+ ): Promise<void> {
20
40
  const collision = async (node: NodeInstance, name: string, external: boolean) => {
21
41
  const externalConflict = external ? (await node.resolve({ name: [name] }, { direction: external ? 'all' : 'down' })).length !== 0 : false
22
42
  return externalConflict || (await node.resolve({ name: [name] }, { direction: 'down' })).length !== 0
23
43
  }
24
44
 
25
- const creatableModules = { ...standardCreatableModules, ...additionalCreatableModules }
45
+ const creatableModules = assignCreatableModuleRegistry(
46
+ {},
47
+ toCreatableModuleRegistry(standardCreatableModules),
48
+ toCreatableModuleRegistry(additionalCreatableModules ?? {}),
49
+ )
26
50
  if (!(await collision(node, manifest.config.name, external))) {
27
51
  if (manifest.config.language && manifest.config.language === 'javascript') {
28
52
  assertEx(
@@ -34,37 +58,48 @@ export class ManifestWrapper extends PayloadWrapper<ManifestPayload> {
34
58
  }
35
59
  }
36
60
 
37
- async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary) {
61
+ async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>
62
+ async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>
63
+ async loadNodeFromIndex(index: number, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode> {
38
64
  const manifest = assertEx(this.nodeManifest(index), 'Failed to find Node Manifest')
39
- return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, additionalCreatableModules)
65
+ const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})
66
+ return await this.loadNodeFromManifest(manifest, manifest.config.accountPath ?? `${index}'`, registry)
40
67
  }
41
68
 
42
- async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleDictionary) {
69
+ async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode>
70
+ async loadNodeFromManifest(manifest: NodeManifest, path: string, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode>
71
+ async loadNodeFromManifest(
72
+ manifest: NodeManifest,
73
+ path: string,
74
+ additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,
75
+ ): Promise<MemoryNode> {
43
76
  const node = await MemoryNode.create({ config: manifest.config, wallet: await this.wallet.derivePath(path) })
77
+ const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})
44
78
  // Load Private Modules
45
79
  const privateModules =
46
80
  manifest.modules?.private?.map(async (moduleManifest) => {
47
- await this.loadModule(node, moduleManifest, false, additionalCreatableModules)
81
+ await this.loadModule(node, moduleManifest, false, registry)
48
82
  }) ?? []
49
83
  // Load Public Modules
50
84
  const publicModules =
51
85
  manifest.modules?.public?.map(async (moduleManifest) => {
52
- await this.loadModule(node, moduleManifest, true, additionalCreatableModules)
86
+ await this.loadModule(node, moduleManifest, true, registry)
53
87
  }) ?? []
54
88
  await Promise.all([...privateModules, ...publicModules])
55
89
  return node
56
90
  }
57
91
 
58
- async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary) {
59
- const start = Date.now()
92
+ async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleRegistry): Promise<MemoryNode[]>
93
+ async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary): Promise<MemoryNode[]>
94
+ async loadNodes(node?: MemoryNode, additionalCreatableModules?: CreatableModuleDictionary | CreatableModuleRegistry): Promise<MemoryNode[]> {
95
+ const registry = toCreatableModuleRegistry(additionalCreatableModules ?? {})
60
96
  const result = await Promise.all(
61
97
  this.payload().nodes?.map(async (nodeManifest, index) => {
62
- const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, additionalCreatableModules)
98
+ const subNode = await this.loadNodeFromManifest(nodeManifest, nodeManifest.config.accountPath ?? `${index}'`, registry)
63
99
  await node?.register(subNode)
64
100
  return subNode
65
101
  }),
66
102
  )
67
- console.log(`Loaded nodes from manifest in ${Date.now() - start}ms`)
68
103
  return result
69
104
  }
70
105
 
@@ -72,12 +107,17 @@ export class ManifestWrapper extends PayloadWrapper<ManifestPayload> {
72
107
  return this.payload().nodes?.[index]
73
108
  }
74
109
 
75
- async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleDictionary) {
76
- const creatableModule = assertEx(
77
- creatableModules?.[manifest.config.schema],
78
- `No module with [${manifest.config.schema}] config schema available for registration`,
79
- )
80
-
110
+ async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleRegistry): Promise<ModuleInstance>
111
+ async registerModule(node: MemoryNode, manifest: ModuleManifest, creatableModules?: CreatableModuleDictionary): Promise<ModuleInstance>
112
+ async registerModule(
113
+ node: MemoryNode,
114
+ manifest: ModuleManifest,
115
+ creatableModules?: CreatableModuleDictionary | CreatableModuleRegistry,
116
+ ): Promise<ModuleInstance> {
117
+ const registry = toCreatableModuleRegistry(creatableModules ?? {})
118
+ const creatableModule = new ModuleFactoryLocator(this.locator.registry)
119
+ .registerMany(registry)
120
+ .locate(manifest.config.schema, manifest.config.labels)
81
121
  const module = await creatableModule.create({
82
122
  account: manifest.config.accountPath ? await this.wallet.derivePath(manifest.config.accountPath) : this.wallet,
83
123
  config: assertEx(manifest.config, 'Missing config'),
package/types.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ declare module 'rollup-plugin-exclude-dependencies-from-bundle'
2
+ declare module '@haensl/rollup-plugin-local-resolve'
3
+ declare module 'rollup-plugin-progress'