{"version":3,"sources":["../../src/components/ActiveStandardNode.tsx","../../src/contexts/StandardRemoteNodes/Context.ts","../../src/contexts/StandardRemoteNodes/Providers.tsx","../../src/lib/Builders/MemoryNodeBuilder.ts","../../src/lib/Builders/SentinelBuilder.ts","../../src/lib/Builders/StorageArchivistBuilder.ts","../../src/lib/buildNodes.ts","../../src/lib/ModuleNames.ts","../../src/lib/ModuleAccountPaths.ts","../../src/contexts/StandardRemoteNodes/use.ts","../../src/hooks/useActiveNodeAddress.ts"],"sourcesContent":["import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { useNetwork } from '@xyo-network/react-network'\nimport { useWeakNodeFromNode } from '@xyo-network/react-node'\nimport type { PropsWithChildren } from 'react'\nimport React, { useState } from 'react'\n\nimport { useStandardNodes } from '../contexts/index.ts'\nimport { useActiveNodeAddress } from '../hooks/index.ts'\n\nexport interface ActiveStandardNodeProps extends PropsWithChildren {\n  nodeNameOrAddress?: string\n}\n\nexport const ActiveStandardNode: React.FC<ActiveStandardNodeProps> = ({ children, nodeNameOrAddress }) => {\n  const { network } = useNetwork()\n  const [node] = useWeakNodeFromNode(nodeNameOrAddress)\n  const [activeRemoteNodeAddress, setActiveRemoteNodeAddress] = useState<string>()\n  const { nodes } = useStandardNodes()\n\n  const selectedNodeAddress = useActiveNodeAddress(network?.name)\n\n  // Probably needs to rely on node events rather than provider values to ensure its registered\n  useAsyncEffect(\n    async (mounted) => {\n      const nodeInstance = node?.deref()\n      if (nodeInstance && selectedNodeAddress) {\n        try {\n          if ((await nodeInstance?.attached())?.includes(selectedNodeAddress)) {\n            return\n          }\n          await nodeInstance?.attach(selectedNodeAddress, true)\n\n          if (mounted()) {\n            // cleanup\n            if (activeRemoteNodeAddress) {\n              await nodeInstance?.detach(activeRemoteNodeAddress)\n            }\n            setActiveRemoteNodeAddress(selectedNodeAddress)\n          }\n        } catch (e) {\n          console.error('Error Attaching Selected Node Address', e)\n        }\n      }\n    },\n    [activeRemoteNodeAddress, node, selectedNodeAddress, nodes],\n  )\n\n  return <>{children}</>\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { StandardNodesState } from './State.ts'\n\nexport const StandardNodesContext = createContextEx<StandardNodesState>()\n","import { useResetState } from '@xylabs/react-hooks'\nimport { usePromise } from '@xylabs/react-promise'\nimport { assertDefinedEx } from '@xylabs/sdk-js'\nimport type { MemoryNode } from '@xyo-network/node-memory'\nimport { useWalletContext } from '@xyo-network/react-wallet'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo } from 'react'\n\nimport { BuildStandardNodes } from '../../lib/index.ts'\nimport { StandardNodesContext } from './Context.ts'\nimport type { StandardNodesState } from './State.ts'\n\nexport type StandardNodesProviderProps = PropsWithChildren<{\n  defaultRemoteNodes?: StandardNodesState['nodes']\n  wallet?: WalletInstance | null\n}>\n\nexport const StandardNodesProvider: React.FC<StandardNodesProviderProps> = ({\n  children, defaultRemoteNodes, wallet,\n}) => {\n  const [nodes, setNodes] = useResetState<StandardNodesState['nodes']>(defaultRemoteNodes)\n\n  usePromise(async () => {\n    if (wallet) {\n      await BuildStandardNodes(wallet, (node: MemoryNode) => {\n        setNodes((nodes) => {\n          if (nodes?.find(existingNode => existingNode.config.name === node.config.name)) {\n            return\n          }\n          return nodes ? [...nodes, node] : [node]\n        })\n      })\n    }\n  }, [wallet])\n\n  const findAddressByName = (name?: string) => {\n    const validNetworkName = assertDefinedEx(name, () => 'name was not defined')\n    return nodes?.find(node => node.config.name === validNetworkName)?.address\n  }\n\n  const value: StandardNodesState = useMemo(() => ({\n    findAddressByName,\n    nodes,\n    provided: true,\n  }), [findAddressByName,\n    nodes])\n\n  return (\n    <StandardNodesContext\n      value={value}\n    >\n      {children}\n    </StandardNodesContext>\n  )\n}\n\nexport const StandardNodesProviderWithWallet: React.FC<Omit<StandardNodesProviderProps, 'wallet'>> = (props) => {\n  const { activeAccount } = useWalletContext()\n  return <StandardNodesProvider wallet={activeAccount} {...props} />\n}\n","import { assertDefinedEx } from '@xylabs/sdk-js'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { MemoryArchivistConfig } from '@xyo-network/archivist-memory'\nimport { MemoryArchivist, MemoryArchivistConfigSchema } from '@xyo-network/archivist-memory'\nimport { HttpBridge, HttpBridgeConfigSchema } from '@xyo-network/bridge-http'\nimport type { AttachableModuleInstance } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { NodeConfigSchema } from '@xyo-network/node-model'\nimport type { PayloadSetPluginResolver } from '@xyo-network/payloadset-plugin'\nimport type { SentinelConfig } from '@xyo-network/sentinel-model'\nimport type { AttachableWitnessInstance, WitnessModule } from '@xyo-network/witness-model'\n\nimport { SentinelBuilder } from './SentinelBuilder.ts'\nimport { StorageArchivistBuilder } from './StorageArchivistBuilder.ts'\n\nexport interface MemoryNodeBuilderConfig {\n  name?: string\n  node?: MemoryNode\n}\n\nexport class MemoryNodeBuilder {\n  private _node: MemoryNode | undefined\n\n  get node() {\n    return assertDefinedEx(this._node, () => 'this._node was not defined upon create')\n  }\n\n  static async create({ name, node }: MemoryNodeBuilderConfig, account?: AccountInstance): Promise<MemoryNodeBuilder> {\n    const instance = new this()\n\n    const memoryNode: MemoryNode = node ?? (await MemoryNode.create({\n      account,\n      config: { name, schema: NodeConfigSchema },\n    }))\n    instance._node = memoryNode\n    return instance\n  }\n\n  /** @deprecated - call specific method that corresponds to a type of archivist (i.e. addArchivistStorage) */\n  async addArchivist(account: AccountInstance, moduleName?: string, namespace?: string) {\n    await this.addArchivistStorage(account, moduleName, namespace)\n  }\n\n  async addArchivistMemory(moduleName?: string, account?: AccountInstance) {\n    const config: MemoryArchivistConfig = { name: moduleName, schema: MemoryArchivistConfigSchema }\n    const memoryArchivist = await MemoryArchivist.create({ account, config })\n\n    await this.attach(memoryArchivist, true)\n  }\n\n  async addArchivistStorage(account: AccountInstance, moduleName?: string, namespace?: string) {\n    const config = { name: moduleName, namespace }\n    const { archivist } = await StorageArchivistBuilder.create(config, account, this.node)\n\n    await this.attach(archivist, true)\n  }\n\n  async addBridge(apiDomain: string, moduleName = 'RemoteNodeBridge', account?: AccountInstance) {\n    try {\n      const bridge = await HttpBridge.create({\n        account,\n        config: {\n          name: moduleName, client: { url: `${apiDomain}/node` }, schema: HttpBridgeConfigSchema, security: { allowAnonymous: true },\n        },\n      })\n      await this.attach(bridge, true)\n    } catch (e) {\n      console.error('Error Creating Bridge', e)\n    }\n  }\n\n  async addSentinel(config: SentinelConfig, account: AccountInstance) {\n    const { sentinel } = await SentinelBuilder.create(config, account)\n    await this.attach(sentinel, true, true)\n    return sentinel\n  }\n\n  async addWitnesses(pluginSetResolver: PayloadSetPluginResolver, witnesses: (() => Promise<AttachableWitnessInstance>)[] = []) {\n    await Promise.all(\n      pluginSetResolver.witnesses().map(async (pluginSet, index) => {\n        // Pass the prebuilt witness at the same index\n        const witness = await witnesses?.[index]?.()\n        if (witness) {\n          try {\n            await this.witnessCleanup(witness)\n            await this.node.register(witness)\n            await this.node.attach(witness.address, true)\n          } catch (e) {\n            console.error('Error attaching witness', JSON.stringify(pluginSet, null, 2), e)\n          }\n        }\n      }),\n    )\n  }\n\n  async attach(mod: AttachableModuleInstance, external?: boolean, safeAttach?: boolean) {\n    try {\n      if (safeAttach) {\n        const existingModule = (await this.node.resolve(mod.address))\n        if (existingModule) {\n          await this.node.detach(existingModule.address)\n          await this.node.unregister(existingModule)\n        }\n      }\n      await this.node.register(mod)\n      await this.node.attach(mod.address, external)\n    } catch (e) {\n      throw new Error(`Error adding ${mod.config.name ?? mod.address} to MemoryNode: ${e}`)\n    }\n  }\n\n  private async witnessCleanup(witness: WitnessModule) {\n    if ((await this.node.registered()).includes(witness.address)) {\n      const existingWitness = await this.node.resolve(witness.address)\n      if (existingWitness) {\n        await this.node.unregister(existingWitness)\n      }\n    }\n  }\n}\n","import { assertDefinedEx } from '@xylabs/sdk-js'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { MemorySentinelParams } from '@xyo-network/sentinel-memory'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport type { SentinelConfig } from '@xyo-network/sentinel-model'\n\nexport class SentinelBuilder {\n  private _sentinel: MemorySentinel | undefined\n\n  private account: AccountInstance\n  private config: SentinelConfig\n\n  protected constructor(\n    config: SentinelConfig,\n    account: AccountInstance,\n  ) {\n    assertDefinedEx(config, () => 'config was not defined')\n    this.config = config\n    this.account = account\n  }\n\n  get sentinel() {\n    return assertDefinedEx(this._sentinel, () => 'this._sentinel not defined upon create')\n  }\n\n  static async create(config: SentinelConfig, account: AccountInstance): Promise<SentinelBuilder> {\n    const instance = new this(config, account)\n    instance._sentinel = await instance.buildSentinel()\n    return instance\n  }\n\n  async buildSentinel() {\n    const params = this.buildParams()\n    return (await MemorySentinel.create(params)) as MemorySentinel\n  }\n\n  private buildParams(): MemorySentinelParams {\n    return {\n      account: this.account,\n      config: this.config,\n    }\n  }\n}\n","import { assertDefinedEx } from '@xylabs/sdk-js'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { ArchivistModuleInstance } from '@xyo-network/archivist-model'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport type { StorageArchivistConfig } from '@xyo-network/archivist-storage'\nimport { StorageArchivist, StorageArchivistConfigSchema } from '@xyo-network/archivist-storage'\nimport type { MemoryNode } from '@xyo-network/node-memory'\nimport { asNodeInstance } from '@xyo-network/node-model'\n\nexport interface ArchivistBuilderConfig {\n  name?: string\n  namespace?: string\n}\nexport class StorageArchivistBuilder {\n  private _archivist: StorageArchivist | undefined\n  private account: AccountInstance\n  private config: ArchivistBuilderConfig\n  private node?: MemoryNode\n  private remoteArchivist: ArchivistModuleInstance | undefined\n\n  protected constructor(\n    config: ArchivistBuilderConfig,\n    account: AccountInstance,\n    node?: MemoryNode,\n  ) {\n    this.config = config\n    this.account = account\n    this.node = node\n  }\n\n  get archivist() {\n    return assertDefinedEx(this._archivist, () => 'archivist was not defined upon create')\n  }\n\n  static async create(config: ArchivistBuilderConfig, account: AccountInstance, node: MemoryNode): Promise<StorageArchivistBuilder> {\n    const instance = new this(config, account, node)\n    instance.remoteArchivist = await instance.findParentArchivist()\n    instance._archivist = await instance.buildArchivist()\n    return instance\n  }\n\n  async buildArchivist() {\n    const config = this.buildConfig()\n    return (await StorageArchivist.create({ account: this.account, config })) as StorageArchivist\n  }\n\n  buildConfig(): StorageArchivistConfig {\n    return {\n      name: this.config.name,\n      namespace: this.config.namespace,\n      parents: {\n        commit: this.remoteArchivist ? [this.remoteArchivist?.address] : undefined,\n        read: this.remoteArchivist ? [this.remoteArchivist?.address] : undefined,\n      },\n      schema: StorageArchivistConfigSchema,\n      storeParentReads: true,\n      type: 'local',\n    }\n  }\n\n  async findParentArchivist() {\n    const node = asNodeInstance(this.node, 'node not defined', { required: true })\n    const bridge = (await node.resolve('RemoteNodeBridge'))\n    if (bridge) {\n      try {\n        const archivist = (await bridge.resolve('Archivist'))\n        return asArchivistInstance(archivist)\n      } catch {\n        console.error('Error Resolving Parent Archivist', this.node?.config.name, this.config)\n      }\n    }\n  }\n}\n","import { assertDefinedEx } from '@xylabs/sdk-js'\nimport type { MemoryNode } from '@xyo-network/node-memory'\nimport { defaultNetworkConfigs } from '@xyo-network/react-network'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { MemoryNodeBuilder } from './Builders/index.ts'\nimport { RemoteNodeArchivistOffsetPaths, RemoteNodeOffsetPaths } from './ModuleAccountPaths.ts'\nimport { RootStorageArchivist } from './ModuleNames.ts'\n\nconst knownRemoteNodes = (): { apiDomain: string; name: string }[] => {\n  const networkNames = defaultNetworkConfigs.map(config => config.name)\n  return networkNames.map((networkName) => {\n    const name = assertDefinedEx<string>(networkName, () => 'missing name in network config')\n    const uri = defaultNetworkConfigs.find(config => config.name === networkName)?.nodes?.find(node => node.type === 'archivist')?.uri\n    const apiDomain = assertDefinedEx<string>(uri, () => 'missing node type \"archivist\" in network config')\n    return {\n      apiDomain,\n      name,\n    }\n  })\n}\n\nexport const BuildStandardNodes = async (wallet: WalletInstance, onNodeBuilt?: (node: MemoryNode) => void): Promise<MemoryNode[]> => {\n  try {\n    return await Promise.all(\n      knownRemoteNodes().map(async ({ apiDomain, name }) => {\n        const remoteNodeOffset = RemoteNodeOffsetPaths[name]\n        const remoteNodeWallet = await wallet.derivePath?.(remoteNodeOffset)\n\n        const memoryNodeBuilder = await MemoryNodeBuilder.create({ name }, await remoteNodeWallet.derivePath?.('0'))\n        await memoryNodeBuilder.addBridge(apiDomain)\n\n        const rootArchivistPath = `${remoteNodeOffset}/${RemoteNodeArchivistOffsetPaths[name][RootStorageArchivist]}`\n        const rootArchivistAccount = await wallet.derivePath?.(rootArchivistPath)\n        await memoryNodeBuilder.addArchivistStorage(rootArchivistAccount, RootStorageArchivist, 'root')\n\n        const { node } = memoryNodeBuilder\n        assertDefinedEx(node, () => 'Memory Node was not built successfully')\n        onNodeBuilt?.(node)\n\n        return node\n      }),\n    )\n  } catch (e) {\n    throw new Error(`Error Creating Known Remote Nodes: ${e}`)\n  }\n}\n","export const GlobalNode = 'GlobalNode'\n\nexport const RootStorageArchivist = 'RootStorageArchivist'\n","import { RootStorageArchivist } from './ModuleNames.ts'\n\nexport const GlobalNodeOffsetPath = '15'\n\nexport const RemoteNodeOffsetPaths: Record<string, string> = {\n  Kerplunk: '112',\n  Local: '111',\n  Main: '113',\n}\n\nexport const RemoteNodeArchivistOffsetPaths: Record<string, Record<string, string>> = {\n  Kerplunk: {\n    MemoryNode: '117',\n    [RootStorageArchivist]: '119',\n  },\n  Local: {\n    MemoryNode: '114',\n    [RootStorageArchivist]: '116',\n  },\n  Main: {\n    MemoryNode: '120',\n    [RootStorageArchivist]: '122',\n  },\n}\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { StandardNodesContext } from './Context.ts'\n\nexport const useStandardNodes = (required = false) => useContextEx(StandardNodesContext, 'StandardNodes', required)\n","import { useProvidedNode } from '@xyo-network/react-node'\nimport { useMemo } from 'react'\n\nimport { useStandardNodes } from '../contexts/index.ts'\n\nexport const useActiveNodeAddress = (networkName?: string) => {\n  const [node] = useProvidedNode()\n  const { nodes, findAddressByName } = useStandardNodes()\n\n  const activeNodeAddress = useMemo(() => {\n    if (node && nodes && findAddressByName && networkName) {\n      return findAddressByName(networkName)\n    }\n  }, [findAddressByName, networkName, node, nodes])\n\n  return activeNodeAddress\n}\n"],"mappings":";;;;AAAA,SAASA,sBAAsB;AAC/B,SAASC,kBAAkB;AAC3B,SAASC,2BAA2B;AAEpC,OAAOC,UAASC,gBAAgB;;;ACJhC,SAASC,uBAAuB;AAIzB,IAAMC,uBAAuBD,gBAAAA;;;ACJpC,SAASE,qBAAqB;AAC9B,SAASC,kBAAkB;AAC3B,SAASC,mBAAAA,wBAAuB;AAEhC,SAASC,wBAAwB;AAGjC,OAAOC,SAASC,eAAe;;;ACP/B,SAASC,mBAAAA,wBAAuB;AAGhC,SAASC,iBAAiBC,mCAAmC;AAC7D,SAASC,YAAYC,8BAA8B;AAEnD,SAASC,kBAAkB;AAC3B,SAASC,wBAAwB;;;ACPjC,SAASC,uBAAuB;AAGhC,SAASC,sBAAsB;AAGxB,IAAMC,kBAAN,MAAMA;EANb,OAMaA;;;EACHC;EAEAC;EACAC;EAER,YACEA,QACAD,SACA;AACAE,oBAAgBD,QAAQ,MAAM,wBAAA;AAC9B,SAAKA,SAASA;AACd,SAAKD,UAAUA;EACjB;EAEA,IAAIG,WAAW;AACb,WAAOD,gBAAgB,KAAKH,WAAW,MAAM,wCAAA;EAC/C;EAEA,aAAaK,OAAOH,QAAwBD,SAAoD;AAC9F,UAAMK,WAAW,IAAI,KAAKJ,QAAQD,OAAAA;AAClCK,aAASN,YAAY,MAAMM,SAASC,cAAa;AACjD,WAAOD;EACT;EAEA,MAAMC,gBAAgB;AACpB,UAAMC,SAAS,KAAKC,YAAW;AAC/B,WAAQ,MAAMC,eAAeL,OAAOG,MAAAA;EACtC;EAEQC,cAAoC;AAC1C,WAAO;MACLR,SAAS,KAAKA;MACdC,QAAQ,KAAKA;IACf;EACF;AACF;;;AC1CA,SAASS,mBAAAA,wBAAuB;AAGhC,SAASC,2BAA2B;AAEpC,SAASC,kBAAkBC,oCAAoC;AAE/D,SAASC,sBAAsB;AAMxB,IAAMC,0BAAN,MAAMA;EAbb,OAaaA;;;EACHC;EACAC;EACAC;EACAC;EACAC;EAER,YACEF,QACAD,SACAE,MACA;AACA,SAAKD,SAASA;AACd,SAAKD,UAAUA;AACf,SAAKE,OAAOA;EACd;EAEA,IAAIE,YAAY;AACd,WAAOC,iBAAgB,KAAKN,YAAY,MAAM,uCAAA;EAChD;EAEA,aAAaO,OAAOL,QAAgCD,SAA0BE,MAAoD;AAChI,UAAMK,WAAW,IAAI,KAAKN,QAAQD,SAASE,IAAAA;AAC3CK,aAASJ,kBAAkB,MAAMI,SAASC,oBAAmB;AAC7DD,aAASR,aAAa,MAAMQ,SAASE,eAAc;AACnD,WAAOF;EACT;EAEA,MAAME,iBAAiB;AACrB,UAAMR,SAAS,KAAKS,YAAW;AAC/B,WAAQ,MAAMC,iBAAiBL,OAAO;MAAEN,SAAS,KAAKA;MAASC;IAAO,CAAA;EACxE;EAEAS,cAAsC;AACpC,WAAO;MACLE,MAAM,KAAKX,OAAOW;MAClBC,WAAW,KAAKZ,OAAOY;MACvBC,SAAS;QACPC,QAAQ,KAAKZ,kBAAkB;UAAC,KAAKA,iBAAiBa;YAAWC;QACjEC,MAAM,KAAKf,kBAAkB;UAAC,KAAKA,iBAAiBa;YAAWC;MACjE;MACAE,QAAQC;MACRC,kBAAkB;MAClBC,MAAM;IACR;EACF;EAEA,MAAMd,sBAAsB;AAC1B,UAAMN,OAAOqB,eAAe,KAAKrB,MAAM,oBAAoB;MAAEsB,UAAU;IAAK,CAAA;AAC5E,UAAMC,SAAU,MAAMvB,KAAKwB,QAAQ,kBAAA;AACnC,QAAID,QAAQ;AACV,UAAI;AACF,cAAMrB,YAAa,MAAMqB,OAAOC,QAAQ,WAAA;AACxC,eAAOC,oBAAoBvB,SAAAA;MAC7B,QAAQ;AACNwB,gBAAQC,MAAM,oCAAoC,KAAK3B,MAAMD,OAAOW,MAAM,KAAKX,MAAM;MACvF;IACF;EACF;AACF;;;AFpDO,IAAM6B,oBAAN,MAAMA;EApBb,OAoBaA;;;EACHC;EAER,IAAIC,OAAO;AACT,WAAOC,iBAAgB,KAAKF,OAAO,MAAM,wCAAA;EAC3C;EAEA,aAAaG,OAAO,EAAEC,MAAMH,KAAI,GAA6BI,SAAuD;AAClH,UAAMC,WAAW,IAAI,KAAI;AAEzB,UAAMC,aAAyBN,QAAS,MAAMO,WAAWL,OAAO;MAC9DE;MACAI,QAAQ;QAAEL;QAAMM,QAAQC;MAAiB;IAC3C,CAAA;AACAL,aAASN,QAAQO;AACjB,WAAOD;EACT;;EAGA,MAAMM,aAAaP,SAA0BQ,YAAqBC,WAAoB;AACpF,UAAM,KAAKC,oBAAoBV,SAASQ,YAAYC,SAAAA;EACtD;EAEA,MAAME,mBAAmBH,YAAqBR,SAA2B;AACvE,UAAMI,SAAgC;MAAEL,MAAMS;MAAYH,QAAQO;IAA4B;AAC9F,UAAMC,kBAAkB,MAAMC,gBAAgBhB,OAAO;MAAEE;MAASI;IAAO,CAAA;AAEvE,UAAM,KAAKW,OAAOF,iBAAiB,IAAA;EACrC;EAEA,MAAMH,oBAAoBV,SAA0BQ,YAAqBC,WAAoB;AAC3F,UAAML,SAAS;MAAEL,MAAMS;MAAYC;IAAU;AAC7C,UAAM,EAAEO,UAAS,IAAK,MAAMC,wBAAwBnB,OAAOM,QAAQJ,SAAS,KAAKJ,IAAI;AAErF,UAAM,KAAKmB,OAAOC,WAAW,IAAA;EAC/B;EAEA,MAAME,UAAUC,WAAmBX,aAAa,oBAAoBR,SAA2B;AAC7F,QAAI;AACF,YAAMoB,SAAS,MAAMC,WAAWvB,OAAO;QACrCE;QACAI,QAAQ;UACNL,MAAMS;UAAYc,QAAQ;YAAEC,KAAK,GAAGJ,SAAAA;UAAiB;UAAGd,QAAQmB;UAAwBC,UAAU;YAAEC,gBAAgB;UAAK;QAC3H;MACF,CAAA;AACA,YAAM,KAAKX,OAAOK,QAAQ,IAAA;IAC5B,SAASO,GAAG;AACVC,cAAQC,MAAM,yBAAyBF,CAAAA;IACzC;EACF;EAEA,MAAMG,YAAY1B,QAAwBJ,SAA0B;AAClE,UAAM,EAAE+B,SAAQ,IAAK,MAAMC,gBAAgBlC,OAAOM,QAAQJ,OAAAA;AAC1D,UAAM,KAAKe,OAAOgB,UAAU,MAAM,IAAA;AAClC,WAAOA;EACT;EAEA,MAAME,aAAaC,mBAA6CC,YAA0D,CAAA,GAAI;AAC5H,UAAMC,QAAQC,IACZH,kBAAkBC,UAAS,EAAGG,IAAI,OAAOC,WAAWC,UAAAA;AAElD,YAAMC,UAAU,MAAMN,YAAYK,KAAAA,IAAM;AACxC,UAAIC,SAAS;AACX,YAAI;AACF,gBAAM,KAAKC,eAAeD,OAAAA;AAC1B,gBAAM,KAAK7C,KAAK+C,SAASF,OAAAA;AACzB,gBAAM,KAAK7C,KAAKmB,OAAO0B,QAAQG,SAAS,IAAA;QAC1C,SAASjB,GAAG;AACVC,kBAAQC,MAAM,2BAA2BgB,KAAKC,UAAUP,WAAW,MAAM,CAAA,GAAIZ,CAAAA;QAC/E;MACF;IACF,CAAA,CAAA;EAEJ;EAEA,MAAMZ,OAAOgC,KAA+BC,UAAoBC,YAAsB;AACpF,QAAI;AACF,UAAIA,YAAY;AACd,cAAMC,iBAAkB,MAAM,KAAKtD,KAAKuD,QAAQJ,IAAIH,OAAO;AAC3D,YAAIM,gBAAgB;AAClB,gBAAM,KAAKtD,KAAKwD,OAAOF,eAAeN,OAAO;AAC7C,gBAAM,KAAKhD,KAAKyD,WAAWH,cAAAA;QAC7B;MACF;AACA,YAAM,KAAKtD,KAAK+C,SAASI,GAAAA;AACzB,YAAM,KAAKnD,KAAKmB,OAAOgC,IAAIH,SAASI,QAAAA;IACtC,SAASrB,GAAG;AACV,YAAM,IAAI2B,MAAM,gBAAgBP,IAAI3C,OAAOL,QAAQgD,IAAIH,OAAO,mBAAmBjB,CAAAA,EAAG;IACtF;EACF;EAEA,MAAce,eAAeD,SAAwB;AACnD,SAAK,MAAM,KAAK7C,KAAK2D,WAAU,GAAIC,SAASf,QAAQG,OAAO,GAAG;AAC5D,YAAMa,kBAAkB,MAAM,KAAK7D,KAAKuD,QAAQV,QAAQG,OAAO;AAC/D,UAAIa,iBAAiB;AACnB,cAAM,KAAK7D,KAAKyD,WAAWI,eAAAA;MAC7B;IACF;EACF;AACF;;;AGvHA,SAASC,mBAAAA,wBAAuB;AAEhC,SAASC,6BAA6B;;;ACF/B,IAAMC,aAAa;AAEnB,IAAMC,uBAAuB;;;ACA7B,IAAMC,uBAAuB;AAE7B,IAAMC,wBAAgD;EAC3DC,UAAU;EACVC,OAAO;EACPC,MAAM;AACR;AAEO,IAAMC,iCAAyE;EACpFH,UAAU;IACRI,YAAY;IACZ,CAACC,oBAAAA,GAAuB;EAC1B;EACAJ,OAAO;IACLG,YAAY;IACZ,CAACC,oBAAAA,GAAuB;EAC1B;EACAH,MAAM;IACJE,YAAY;IACZ,CAACC,oBAAAA,GAAuB;EAC1B;AACF;;;AFdA,IAAMC,mBAAmB,6BAAA;AACvB,QAAMC,eAAeC,sBAAsBC,IAAIC,CAAAA,WAAUA,OAAOC,IAAI;AACpE,SAAOJ,aAAaE,IAAI,CAACG,gBAAAA;AACvB,UAAMD,OAAOE,iBAAwBD,aAAa,MAAM,gCAAA;AACxD,UAAME,MAAMN,sBAAsBO,KAAKL,CAAAA,WAAUA,OAAOC,SAASC,WAAAA,GAAcI,OAAOD,KAAKE,CAAAA,SAAQA,KAAKC,SAAS,WAAA,GAAcJ;AAC/H,UAAMK,YAAYN,iBAAwBC,KAAK,MAAM,iDAAA;AACrD,WAAO;MACLK;MACAR;IACF;EACF,CAAA;AACF,GAXyB;AAalB,IAAMS,qBAAqB,8BAAOC,QAAwBC,gBAAAA;AAC/D,MAAI;AACF,WAAO,MAAMC,QAAQC,IACnBlB,iBAAAA,EAAmBG,IAAI,OAAO,EAAEU,WAAWR,KAAI,MAAE;AAC/C,YAAMc,mBAAmBC,sBAAsBf,IAAAA;AAC/C,YAAMgB,mBAAmB,MAAMN,OAAOO,aAAaH,gBAAAA;AAEnD,YAAMI,oBAAoB,MAAMC,kBAAkBC,OAAO;QAAEpB;MAAK,GAAG,MAAMgB,iBAAiBC,aAAa,GAAA,CAAA;AACvG,YAAMC,kBAAkBG,UAAUb,SAAAA;AAElC,YAAMc,oBAAoB,GAAGR,gBAAAA,IAAoBS,+BAA+BvB,IAAAA,EAAMwB,oBAAAA,CAAqB;AAC3G,YAAMC,uBAAuB,MAAMf,OAAOO,aAAaK,iBAAAA;AACvD,YAAMJ,kBAAkBQ,oBAAoBD,sBAAsBD,sBAAsB,MAAA;AAExF,YAAM,EAAElB,KAAI,IAAKY;AACjBhB,MAAAA,iBAAgBI,MAAM,MAAM,wCAAA;AAC5BK,oBAAcL,IAAAA;AAEd,aAAOA;IACT,CAAA,CAAA;EAEJ,SAASqB,GAAG;AACV,UAAM,IAAIC,MAAM,sCAAsCD,CAAAA,EAAG;EAC3D;AACF,GAxBkC;;;AJJ3B,IAAME,wBAA8D,wBAAC,EAC1EC,UAAUC,oBAAoBC,OAAM,MACrC;AACC,QAAM,CAACC,OAAOC,QAAAA,IAAYC,cAA2CJ,kBAAAA;AAErEK,aAAW,YAAA;AACT,QAAIJ,QAAQ;AACV,YAAMK,mBAAmBL,QAAQ,CAACM,SAAAA;AAChCJ,iBAAS,CAACD,WAAAA;AACR,cAAIA,QAAOM,KAAKC,CAAAA,iBAAgBA,aAAaC,OAAOC,SAASJ,KAAKG,OAAOC,IAAI,GAAG;AAC9E;UACF;AACA,iBAAOT,SAAQ;eAAIA;YAAOK;cAAQ;YAACA;;QACrC,CAAA;MACF,CAAA;IACF;EACF,GAAG;IAACN;GAAO;AAEX,QAAMW,oBAAoB,wBAACD,SAAAA;AACzB,UAAME,mBAAmBC,iBAAgBH,MAAM,MAAM,sBAAA;AACrD,WAAOT,OAAOM,KAAKD,CAAAA,SAAQA,KAAKG,OAAOC,SAASE,gBAAAA,GAAmBE;EACrE,GAH0B;AAK1B,QAAMC,QAA4BC,QAAQ,OAAO;IAC/CL;IACAV;IACAgB,UAAU;EACZ,IAAI;IAACN;IACHV;GAAM;AAER,SACE,sBAAA,cAACiB,sBAAAA;IACCH;KAECjB,QAAAA;AAGP,GArC2E;AAuCpE,IAAMqB,kCAAwF,wBAACC,UAAAA;AACpG,QAAM,EAAEC,cAAa,IAAKC,iBAAAA;AAC1B,SAAO,sBAAA,cAACzB,uBAAAA;IAAsBG,QAAQqB;IAAgB,GAAGD;;AAC3D,GAHqG;;;AOzDrG,SAASG,oBAAoB;AAItB,IAAMC,mBAAmB,wBAACC,WAAW,UAAUC,aAAaC,sBAAsB,iBAAiBF,QAAAA,GAA1E;;;ACJhC,SAASG,uBAAuB;AAChC,SAASC,WAAAA,gBAAe;AAIjB,IAAMC,uBAAuB,wBAACC,gBAAAA;AACnC,QAAM,CAACC,IAAAA,IAAQC,gBAAAA;AACf,QAAM,EAAEC,OAAOC,kBAAiB,IAAKC,iBAAAA;AAErC,QAAMC,oBAAoBC,SAAQ,MAAA;AAChC,QAAIN,QAAQE,SAASC,qBAAqBJ,aAAa;AACrD,aAAOI,kBAAkBJ,WAAAA;IAC3B;EACF,GAAG;IAACI;IAAmBJ;IAAaC;IAAME;GAAM;AAEhD,SAAOG;AACT,GAXoC;;;AVQ7B,IAAME,qBAAwD,wBAAC,EAAEC,UAAUC,kBAAiB,MAAE;AACnG,QAAM,EAAEC,QAAO,IAAKC,WAAAA;AACpB,QAAM,CAACC,IAAAA,IAAQC,oBAAoBJ,iBAAAA;AACnC,QAAM,CAACK,yBAAyBC,0BAAAA,IAA8BC,SAAAA;AAC9D,QAAM,EAAEC,MAAK,IAAKC,iBAAAA;AAElB,QAAMC,sBAAsBC,qBAAqBV,SAASW,IAAAA;AAG1DC,iBACE,OAAOC,YAAAA;AACL,UAAMC,eAAeZ,MAAMa,MAAAA;AAC3B,QAAID,gBAAgBL,qBAAqB;AACvC,UAAI;AACF,aAAK,MAAMK,cAAcE,SAAAA,IAAaC,SAASR,mBAAAA,GAAsB;AACnE;QACF;AACA,cAAMK,cAAcI,OAAOT,qBAAqB,IAAA;AAEhD,YAAII,QAAAA,GAAW;AAEb,cAAIT,yBAAyB;AAC3B,kBAAMU,cAAcK,OAAOf,uBAAAA;UAC7B;AACAC,qCAA2BI,mBAAAA;QAC7B;MACF,SAASW,GAAG;AACVC,gBAAQC,MAAM,yCAAyCF,CAAAA;MACzD;IACF;EACF,GACA;IAAChB;IAAyBF;IAAMO;IAAqBF;GAAM;AAG7D,SAAO,gBAAAgB,OAAA,cAAAA,OAAA,UAAA,MAAGzB,QAAAA;AACZ,GAnCqE;","names":["useAsyncEffect","useNetwork","useWeakNodeFromNode","React","useState","createContextEx","StandardNodesContext","useResetState","usePromise","assertDefinedEx","useWalletContext","React","useMemo","assertDefinedEx","MemoryArchivist","MemoryArchivistConfigSchema","HttpBridge","HttpBridgeConfigSchema","MemoryNode","NodeConfigSchema","assertDefinedEx","MemorySentinel","SentinelBuilder","_sentinel","account","config","assertDefinedEx","sentinel","create","instance","buildSentinel","params","buildParams","MemorySentinel","assertDefinedEx","asArchivistInstance","StorageArchivist","StorageArchivistConfigSchema","asNodeInstance","StorageArchivistBuilder","_archivist","account","config","node","remoteArchivist","archivist","assertDefinedEx","create","instance","findParentArchivist","buildArchivist","buildConfig","StorageArchivist","name","namespace","parents","commit","address","undefined","read","schema","StorageArchivistConfigSchema","storeParentReads","type","asNodeInstance","required","bridge","resolve","asArchivistInstance","console","error","MemoryNodeBuilder","_node","node","assertDefinedEx","create","name","account","instance","memoryNode","MemoryNode","config","schema","NodeConfigSchema","addArchivist","moduleName","namespace","addArchivistStorage","addArchivistMemory","MemoryArchivistConfigSchema","memoryArchivist","MemoryArchivist","attach","archivist","StorageArchivistBuilder","addBridge","apiDomain","bridge","HttpBridge","client","url","HttpBridgeConfigSchema","security","allowAnonymous","e","console","error","addSentinel","sentinel","SentinelBuilder","addWitnesses","pluginSetResolver","witnesses","Promise","all","map","pluginSet","index","witness","witnessCleanup","register","address","JSON","stringify","mod","external","safeAttach","existingModule","resolve","detach","unregister","Error","registered","includes","existingWitness","assertDefinedEx","defaultNetworkConfigs","GlobalNode","RootStorageArchivist","GlobalNodeOffsetPath","RemoteNodeOffsetPaths","Kerplunk","Local","Main","RemoteNodeArchivistOffsetPaths","MemoryNode","RootStorageArchivist","knownRemoteNodes","networkNames","defaultNetworkConfigs","map","config","name","networkName","assertDefinedEx","uri","find","nodes","node","type","apiDomain","BuildStandardNodes","wallet","onNodeBuilt","Promise","all","remoteNodeOffset","RemoteNodeOffsetPaths","remoteNodeWallet","derivePath","memoryNodeBuilder","MemoryNodeBuilder","create","addBridge","rootArchivistPath","RemoteNodeArchivistOffsetPaths","RootStorageArchivist","rootArchivistAccount","addArchivistStorage","e","Error","StandardNodesProvider","children","defaultRemoteNodes","wallet","nodes","setNodes","useResetState","usePromise","BuildStandardNodes","node","find","existingNode","config","name","findAddressByName","validNetworkName","assertDefinedEx","address","value","useMemo","provided","StandardNodesContext","StandardNodesProviderWithWallet","props","activeAccount","useWalletContext","useContextEx","useStandardNodes","required","useContextEx","StandardNodesContext","useProvidedNode","useMemo","useActiveNodeAddress","networkName","node","useProvidedNode","nodes","findAddressByName","useStandardNodes","activeNodeAddress","useMemo","ActiveStandardNode","children","nodeNameOrAddress","network","useNetwork","node","useWeakNodeFromNode","activeRemoteNodeAddress","setActiveRemoteNodeAddress","useState","nodes","useStandardNodes","selectedNodeAddress","useActiveNodeAddress","name","useAsyncEffect","mounted","nodeInstance","deref","attached","includes","attach","detach","e","console","error","React"]}