{
  "version": 3,
  "sources": ["../../src/modules/manifest-wrapper/Wrapper.ts", "../../src/modules/manifest-wrapper/WrapperEx.ts"],
  "sourcesContent": ["import type { CreatableName, Logger } from '@ariestools/sdk'\nimport {\n  assertEx, isDefined, isString,\n} from '@ariestools/sdk'\nimport type {\n  ModuleManifest, NodeManifest, PackageManifestPayload, WalletInstance,\n  WithAnySchema,\n} from '@xyo-network/sdk-protocol'\nimport { HDWallet, PayloadWrapper } from '@xyo-network/sdk-protocol'\n\nimport type {\n  ModuleFactoryLocatorInstance,\n  ModuleIdentifierTransformer, ModuleInstance, QueryableModuleParams,\n} from '#module-model'\nimport { isModuleName } from '#module-model'\nimport { MemoryNode } from '#node-memory'\nimport type { NodeInstance } from '#node-model'\n\n/** Provides functionality that can be performed on a PackageManifest */\nexport class ManifestWrapper<TManifest extends WithAnySchema<PackageManifestPayload> | void = void> extends PayloadWrapper<\n  TManifest extends WithAnySchema<PackageManifestPayload> ? TManifest : WithAnySchema<PackageManifestPayload>\n> {\n  protected readonly locator: ModuleFactoryLocatorInstance\n  protected readonly logger: Logger | undefined\n  protected readonly moduleIdentifierTransformers: ModuleIdentifierTransformer[] | undefined\n  protected readonly privateChildren: ModuleManifest[]\n  protected readonly publicChildren: ModuleManifest[]\n  protected readonly wallet: WalletInstance\n\n  constructor(\n    payload: TManifest extends WithAnySchema<PackageManifestPayload> ? TManifest : WithAnySchema<PackageManifestPayload>,\n    wallet: WalletInstance,\n    locator: ModuleFactoryLocatorInstance,\n    publicChildren: ModuleManifest[] = [],\n    privateChildren: ModuleManifest[] = [],\n    moduleIdentifierTransformers?: ModuleIdentifierTransformer[],\n    logger?: Logger,\n  ) {\n    super(payload)\n    this.wallet = wallet\n    this.locator = locator\n    this.publicChildren = publicChildren\n    this.privateChildren = privateChildren\n    this.moduleIdentifierTransformers = moduleIdentifierTransformers\n    this.logger = logger\n  }\n\n  async loadModule(wallet: WalletInstance, node: MemoryNode, manifest: ModuleManifest, external = true): Promise<void> {\n    this.logger?.log('loadModule', manifest.config.name)\n    const collision = async (node: NodeInstance, name: string, external: boolean) => {\n      const externalConflict = external ? (await node.resolve(name, { direction: external ? 'all' : 'down' })) !== undefined : false\n      return externalConflict || (await node.resolve(name, { direction: 'down' })) !== undefined\n    }\n\n    assertEx(isModuleName(manifest.config.name), () => `Invalid Module Name: ${manifest.config.name}`)\n    assertEx(!(await collision(node, manifest.config.name, external)), () => `Node name collision [${manifest.config.name}]`)\n\n    if (!(await collision(node, manifest.config.name, external))) {\n      // is it already registered?\n      if (node.registeredModules().some(mod => isDefined(mod.config.name) && mod.config.name === manifest.config.name)) {\n        assertEx(await node.attach(manifest.config.name, external), () => `Failed to attach module [${manifest.config.name}]`)\n      } else {\n        if ((manifest as NodeManifest).modules) {\n          const childNode = await this.loadNodeFromManifest(wallet, manifest, manifest.config.accountPath, false)\n          await node.register(childNode)\n          await node.attach(childNode.address, external)\n        } else {\n          assertEx(\n            await node.attach((await this.registerModule(wallet, node, manifest)).address, external),\n            () => `No module with config schema [${manifest.config.name}] registered`,\n          )\n        }\n      }\n    }\n  }\n\n  // These are top level, so they can use this.wallet as their\n  async loadNodeFromIndex(index: number): Promise<MemoryNode> {\n    const manifest = assertEx(this.nodeManifest(index), () => 'Failed to find Node Manifest')\n    return await this.loadNodeFromManifest(this.wallet, manifest, manifest.config.accountPath ?? `${index}'`)\n  }\n\n  async loadNodeFromManifest(wallet: WalletInstance, manifest: NodeManifest, path?: string, loadConfigChildren = false): Promise<MemoryNode> {\n    this.logger?.log('loadNodeFromManifest', manifest.config.name)\n    const derivedWallet = isString(path) ? await wallet.derivePath(path) : await HDWallet.random()\n    const node = await MemoryNode.create({\n      account: derivedWallet, config: manifest.config, name: manifest.config.name as CreatableName,\n    })\n    // Load Private Modules\n    const privateModules\n      = manifest.modules?.private?.map(async (moduleManifest) => {\n        if (typeof moduleManifest === 'object') {\n          await this.loadModule(derivedWallet, node, moduleManifest, false)\n        }\n      }) ?? []\n    // Load Public Modules\n    const publicModules\n      = manifest.modules?.public?.map(async (moduleManifest) => {\n        if (typeof moduleManifest === 'object') {\n          await this.loadModule(derivedWallet, node, moduleManifest, true)\n        }\n      }) ?? []\n    await Promise.all([...privateModules, ...publicModules])\n\n    if (loadConfigChildren) {\n      await Promise.all(\n        this.privateChildren.map(async (moduleManifest) => {\n          if (typeof moduleManifest === 'object') {\n            await this.loadModule(derivedWallet, node, moduleManifest, false)\n          }\n        }),\n      )\n\n      await Promise.all(\n        this.publicChildren.map(async (moduleManifest) => {\n          if (typeof moduleManifest === 'object') {\n            await this.loadModule(derivedWallet, node, moduleManifest, true)\n          }\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(node?: MemoryNode): Promise<MemoryNode[]> {\n    return await Promise.all(\n      this.payload.nodes?.map(async (nodeManifest, index) => {\n        const subNode = await this.loadNodeFromManifest(this.wallet, nodeManifest as NodeManifest, nodeManifest.config.accountPath ?? `${index}'`, index === 0)\n        await node?.register(subNode)\n        return subNode\n      }),\n    )\n  }\n\n  nodeManifest(index: number): NodeManifest | undefined {\n    return this.payload.nodes?.[index] as NodeManifest | undefined\n  }\n\n  /** Register a module on a node based on a manifest */\n  private async registerModule(wallet: WalletInstance, node: MemoryNode, manifest: ModuleManifest): Promise<ModuleInstance> {\n    const creatableModule = this.locator.locate(manifest.config.schema, manifest.config.labels)\n    const path = manifest.config.accountPath\n    const account = isString(path) ? await wallet.derivePath(path) : 'random'\n    const params: QueryableModuleParams = {\n      name: manifest.config.name as CreatableName,\n      account,\n      config: assertEx(manifest.config, () => 'Missing config'),\n    }\n    if (this.moduleIdentifierTransformers) {\n      params.moduleIdentifierTransformers = this.moduleIdentifierTransformers\n    }\n    const mod = await creatableModule.create(params)\n    await node.register(mod)\n    return mod\n  }\n}\n", "import type { CreatableName } from '@ariestools/sdk'\nimport {\n  assertEx, isArray, isString,\n} from '@ariestools/sdk'\nimport type {\n  ModuleManifest, NodeManifest, PackageManifestPayload, WalletInstance,\n  WithAnySchema,\n} from '@xyo-network/sdk-protocol'\nimport { HDWallet, PayloadWrapper } from '@xyo-network/sdk-protocol'\n\nimport type {\n  ModuleFactoryLocatorInstance,\n  ModuleIdentifierTransformer, ModuleInstance, QueryableModuleParams,\n} from '#module-model'\nimport { isModuleName } from '#module-model'\nimport { MemoryNode } from '#node-memory'\nimport type { NodeInstance } from '#node-model'\n\nexport interface ManifestWrapperExParams {\n  locator: ModuleFactoryLocatorInstance\n  moduleIdentifierTransformers?: ModuleIdentifierTransformer[]\n  privateChildren?: ModuleManifest[]\n  publicChildren?: ModuleManifest[]\n  wallet: WalletInstance\n}\n\n/** Provides functionality that can be performed on a PackageManifest */\nexport class ManifestWrapperEx<\n  TManifest extends WithAnySchema<PackageManifestPayload> | void,\n  TParams extends ManifestWrapperExParams = ManifestWrapperExParams,\n> extends PayloadWrapper<TManifest extends WithAnySchema<PackageManifestPayload> ? TManifest : WithAnySchema<PackageManifestPayload>> {\n  protected params: TParams\n  constructor(\n    payload: TManifest extends WithAnySchema<PackageManifestPayload> ? TManifest : WithAnySchema<PackageManifestPayload>,\n    params: TParams,\n  ) {\n    super(payload)\n    this.params = params\n  }\n\n  get locator(): ModuleFactoryLocatorInstance {\n    return this.params.locator\n  }\n\n  get moduleIdentifierTransformers(): ModuleIdentifierTransformer[] {\n    return this.params.moduleIdentifierTransformers ?? []\n  }\n\n  get privateChildren(): ModuleManifest[] {\n    return this.params.privateChildren ?? []\n  }\n\n  get publicChildren(): ModuleManifest[] {\n    return this.params.publicChildren ?? []\n  }\n\n  get wallet(): WalletInstance {\n    return this.params.wallet\n  }\n\n  async loadModule(wallet: WalletInstance, node: MemoryNode, manifest: ModuleManifest, external = true): Promise<void> {\n    const collision = async (node: NodeInstance, name: string, external: boolean) => {\n      const externalConflict = external ? (await node.resolve(name, { direction: external ? 'all' : 'down' })) !== undefined : false\n      return externalConflict || (await node.resolve(name, { direction: 'down' })) !== undefined\n    }\n\n    assertEx(isModuleName(manifest.config.name), () => `Invalid Module Name: ${manifest.config.name}`)\n    assertEx(!(await collision(node, manifest.config.name, external)), () => `Node name collision [${manifest.config.name}]`)\n\n    if (!(await collision(node, manifest.config.name, external))) {\n      // is it already registered?\n      if (node.registeredModules().some(mod => isString(mod.config.name) && mod.config.name === manifest.config.name)) {\n        assertEx(await node.attach(manifest.config.name, external), () => `Failed to attach module [${manifest.config.name}]`)\n      } else {\n        assertEx(\n          await node.attach((await this.registerModule(wallet, node, manifest)).address, external),\n          () => `No module with config schema [${manifest.config.name}] registered`,\n        )\n      }\n    }\n  }\n\n  // These are top level, so they can use this.wallet as their\n  async loadNodeFromIndex(index: number): Promise<MemoryNode> {\n    const manifest = assertEx(this.nodeManifest(index), () => 'Failed to find Node Manifest')\n    return await this.loadNodeFromManifest(this.wallet, manifest, manifest.config.accountPath ?? `${index}'`)\n  }\n\n  async loadNodeFromManifest(wallet: WalletInstance, manifest: NodeManifest, path?: string): Promise<MemoryNode> {\n    const derivedWallet = isString(path) ? await wallet.derivePath(path) : await HDWallet.random()\n    const node = await MemoryNode.create({ account: derivedWallet, config: manifest.config })\n    // Load Private Modules\n    const privateModules\n      = manifest.modules?.private?.map(async (moduleManifest) => {\n        if (typeof moduleManifest === 'object') {\n          await this.loadModule(derivedWallet, node, moduleManifest, false)\n        }\n      }) ?? []\n    // Load Public Modules\n    const publicModules\n      = manifest.modules?.public?.map(async (moduleManifest) => {\n        if (typeof moduleManifest === 'object') {\n          await this.loadModule(derivedWallet, node, moduleManifest, true)\n        }\n      }) ?? []\n    await Promise.all([...privateModules, ...publicModules])\n\n    await Promise.all(\n      this.privateChildren.map(async (moduleManifest) => {\n        if (typeof moduleManifest === 'object') {\n          await this.loadModule(derivedWallet, node, moduleManifest, false)\n        }\n      }),\n    )\n\n    await Promise.all(\n      this.publicChildren.map(async (moduleManifest) => {\n        if (typeof moduleManifest === 'object') {\n          await this.loadModule(derivedWallet, node, moduleManifest, 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(node?: MemoryNode): Promise<MemoryNode[]> {\n    return await Promise.all(\n      this.payload.nodes?.map(async (nodeManifest, index) => {\n        const subNode = await this.loadNodeFromManifest(this.wallet, nodeManifest as NodeManifest, nodeManifest.config.accountPath ?? `${index}'`)\n        await node?.register(subNode)\n        return subNode\n      }),\n    )\n  }\n\n  nodeManifest(index: number): NodeManifest | undefined {\n    return this.payload.nodes?.[index] as NodeManifest | undefined\n  }\n\n  /** Register a module on a node based on a manifest */\n  private async registerModule(wallet: WalletInstance, node: MemoryNode, manifest: ModuleManifest): Promise<ModuleInstance> {\n    const creatableModule = this.locator.locate(manifest.config.schema, manifest.config.labels)\n    const path = manifest.config.accountPath\n    const account = isString(path) ? await wallet.derivePath(path) : 'random'\n    const params: QueryableModuleParams = {\n      name: manifest.config.name as CreatableName,\n      account,\n      config: assertEx(manifest.config, () => 'Missing config'),\n    }\n    if (isArray(this.moduleIdentifierTransformers)) {\n      params.moduleIdentifierTransformers = this.moduleIdentifierTransformers\n    }\n    const mod = await creatableModule.create(params)\n    await node.register(mod)\n    return mod\n  }\n}\n"],
  "mappings": "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",
  "names": ["node", "external", "assertEx", "isString", "HDWallet", "PayloadWrapper", "isModuleName", "MemoryNode", "node", "external"]
}
