@xyo-network/react-standard-node 7.5.7 → 7.5.11

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.
@@ -1,15 +1,15 @@
1
1
  export declare const StandardNodesContext: import("react").Context<({
2
- findAddressByName?: (name?: string) => import("@xylabs/hex").Address | undefined;
2
+ findAddressByName?: (name?: string) => import("@xylabs/sdk-js").Address | undefined;
3
3
  nodes?: import("@xyo-network/node-memory").MemoryNode[];
4
4
  } & {
5
5
  provided: true;
6
6
  }) | (import("@xylabs/react-shared").FixedValues<import("@xylabs/react-shared").ProvidedContextExState<{
7
- findAddressByName?: (name?: string) => import("@xylabs/hex").Address | undefined;
7
+ findAddressByName?: (name?: string) => import("@xylabs/sdk-js").Address | undefined;
8
8
  nodes?: import("@xyo-network/node-memory").MemoryNode[];
9
9
  }>, never> & {
10
10
  provided: false;
11
11
  }) | (import("@xylabs/react-shared").FixedValues<import("@xylabs/react-shared").NotProvidedContextExState<{
12
- findAddressByName?: (name?: string) => import("@xylabs/hex").Address | undefined;
12
+ findAddressByName?: (name?: string) => import("@xylabs/sdk-js").Address | undefined;
13
13
  nodes?: import("@xyo-network/node-memory").MemoryNode[];
14
14
  }>, never> & {
15
15
  provided: false;
@@ -1 +1 @@
1
- {"version":3,"file":"Providers.d.ts","sourceRoot":"","sources":["../../../../src/contexts/StandardRemoteNodes/Providers.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAAkB,MAAM,OAAO,CAAA;AAItC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpD,MAAM,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;IACzD,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAChD,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/B,CAAC,CAAA;AAEF,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAqCtE,CAAA;AAED,eAAO,MAAM,+BAA+B,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAGhG,CAAA"}
1
+ {"version":3,"file":"Providers.d.ts","sourceRoot":"","sources":["../../../../src/contexts/StandardRemoteNodes/Providers.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAAkB,MAAM,OAAO,CAAA;AAItC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpD,MAAM,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;IACzD,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAChD,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/B,CAAC,CAAA;AAEF,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAsCtE,CAAA;AAED,eAAO,MAAM,+BAA+B,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAGhG,CAAA"}
@@ -1,5 +1,5 @@
1
1
  export declare const useStandardNodes: (required?: boolean) => Omit<{
2
- findAddressByName?: (name?: string) => import("@xylabs/hex").Address | undefined;
2
+ findAddressByName?: (name?: string) => import("@xylabs/sdk-js").Address | undefined;
3
3
  nodes?: import("@xyo-network/node-memory").MemoryNode[];
4
4
  } & {
5
5
  provided: true;
@@ -1,11 +1,8 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
-
4
1
  // src/components/ActiveStandardNode.tsx
5
2
  import { useAsyncEffect } from "@xylabs/react-async-effect";
6
3
  import { useNetwork } from "@xyo-network/react-network";
7
4
  import { useWeakNodeFromNode } from "@xyo-network/react-node";
8
- import React2, { useState } from "react";
5
+ import { useState } from "react";
9
6
 
10
7
  // src/contexts/StandardRemoteNodes/Context.ts
11
8
  import { createContextEx } from "@xylabs/react-shared";
@@ -16,7 +13,7 @@ import { useResetState } from "@xylabs/react-hooks";
16
13
  import { usePromise } from "@xylabs/react-promise";
17
14
  import { assertDefinedEx as assertDefinedEx5 } from "@xylabs/sdk-js";
18
15
  import { useWalletContext } from "@xyo-network/react-wallet";
19
- import React, { useMemo } from "react";
16
+ import { useMemo } from "react";
20
17
 
21
18
  // src/lib/Builders/MemoryNodeBuilder.ts
22
19
  import { assertDefinedEx as assertDefinedEx3 } from "@xylabs/sdk-js";
@@ -29,9 +26,6 @@ import { NodeConfigSchema } from "@xyo-network/node-model";
29
26
  import { assertDefinedEx } from "@xylabs/sdk-js";
30
27
  import { MemorySentinel } from "@xyo-network/sentinel-memory";
31
28
  var SentinelBuilder = class {
32
- static {
33
- __name(this, "SentinelBuilder");
34
- }
35
29
  _sentinel;
36
30
  account;
37
31
  config;
@@ -66,9 +60,6 @@ import { asArchivistInstance } from "@xyo-network/archivist-model";
66
60
  import { StorageArchivist, StorageArchivistConfigSchema } from "@xyo-network/archivist-storage";
67
61
  import { asNodeInstance } from "@xyo-network/node-model";
68
62
  var StorageArchivistBuilder = class {
69
- static {
70
- __name(this, "StorageArchivistBuilder");
71
- }
72
63
  _archivist;
73
64
  account;
74
65
  config;
@@ -90,22 +81,15 @@ var StorageArchivistBuilder = class {
90
81
  }
91
82
  async buildArchivist() {
92
83
  const config = this.buildConfig();
93
- return await StorageArchivist.create({
94
- account: this.account,
95
- config
96
- });
84
+ return await StorageArchivist.create({ account: this.account, config });
97
85
  }
98
86
  buildConfig() {
99
87
  return {
100
88
  name: this.config.name,
101
89
  namespace: this.config.namespace,
102
90
  parents: {
103
- commit: this.remoteArchivist ? [
104
- this.remoteArchivist?.address
105
- ] : void 0,
106
- read: this.remoteArchivist ? [
107
- this.remoteArchivist?.address
108
- ] : void 0
91
+ commit: this.remoteArchivist ? [this.remoteArchivist?.address] : void 0,
92
+ read: this.remoteArchivist ? [this.remoteArchivist?.address] : void 0
109
93
  },
110
94
  schema: StorageArchivistConfigSchema,
111
95
  storeParentReads: true,
@@ -113,9 +97,7 @@ var StorageArchivistBuilder = class {
113
97
  };
114
98
  }
115
99
  async findParentArchivist() {
116
- const node = asNodeInstance(this.node, "node not defined", {
117
- required: true
118
- });
100
+ const node = asNodeInstance(this.node, "node not defined", { required: true });
119
101
  const bridge = await node.resolve("RemoteNodeBridge");
120
102
  if (bridge) {
121
103
  try {
@@ -130,9 +112,6 @@ var StorageArchivistBuilder = class {
130
112
 
131
113
  // src/lib/Builders/MemoryNodeBuilder.ts
132
114
  var MemoryNodeBuilder = class {
133
- static {
134
- __name(this, "MemoryNodeBuilder");
135
- }
136
115
  _node;
137
116
  get node() {
138
117
  return assertDefinedEx3(this._node, () => "this._node was not defined upon create");
@@ -141,10 +120,7 @@ var MemoryNodeBuilder = class {
141
120
  const instance = new this();
142
121
  const memoryNode = node ?? await MemoryNode.create({
143
122
  account,
144
- config: {
145
- name,
146
- schema: NodeConfigSchema
147
- }
123
+ config: { name, schema: NodeConfigSchema }
148
124
  });
149
125
  instance._node = memoryNode;
150
126
  return instance;
@@ -154,21 +130,12 @@ var MemoryNodeBuilder = class {
154
130
  await this.addArchivistStorage(account, moduleName, namespace);
155
131
  }
156
132
  async addArchivistMemory(moduleName, account) {
157
- const config = {
158
- name: moduleName,
159
- schema: MemoryArchivistConfigSchema
160
- };
161
- const memoryArchivist = await MemoryArchivist.create({
162
- account,
163
- config
164
- });
133
+ const config = { name: moduleName, schema: MemoryArchivistConfigSchema };
134
+ const memoryArchivist = await MemoryArchivist.create({ account, config });
165
135
  await this.attach(memoryArchivist, true);
166
136
  }
167
137
  async addArchivistStorage(account, moduleName, namespace) {
168
- const config = {
169
- name: moduleName,
170
- namespace
171
- };
138
+ const config = { name: moduleName, namespace };
172
139
  const { archivist } = await StorageArchivistBuilder.create(config, account, this.node);
173
140
  await this.attach(archivist, true);
174
141
  }
@@ -178,13 +145,9 @@ var MemoryNodeBuilder = class {
178
145
  account,
179
146
  config: {
180
147
  name: moduleName,
181
- client: {
182
- url: `${apiDomain}/node`
183
- },
148
+ client: { url: `${apiDomain}/node` },
184
149
  schema: HttpBridgeConfigSchema,
185
- security: {
186
- allowAnonymous: true
187
- }
150
+ security: { allowAnonymous: true }
188
151
  }
189
152
  });
190
153
  await this.attach(bridge, true);
@@ -198,18 +161,20 @@ var MemoryNodeBuilder = class {
198
161
  return sentinel;
199
162
  }
200
163
  async addWitnesses(pluginSetResolver, witnesses = []) {
201
- await Promise.all(pluginSetResolver.witnesses().map(async (pluginSet, index) => {
202
- const witness = await witnesses?.[index]?.();
203
- if (witness) {
204
- try {
205
- await this.witnessCleanup(witness);
206
- await this.node.register(witness);
207
- await this.node.attach(witness.address, true);
208
- } catch (e) {
209
- console.error("Error attaching witness", JSON.stringify(pluginSet, null, 2), e);
164
+ await Promise.all(
165
+ pluginSetResolver.witnesses().map(async (pluginSet, index) => {
166
+ const witness = await witnesses?.[index]?.();
167
+ if (witness) {
168
+ try {
169
+ await this.witnessCleanup(witness);
170
+ await this.node.register(witness);
171
+ await this.node.attach(witness.address, true);
172
+ } catch (e) {
173
+ console.error("Error attaching witness", JSON.stringify(pluginSet, null, 2), e);
174
+ }
210
175
  }
211
- }
212
- }));
176
+ })
177
+ );
213
178
  }
214
179
  async attach(mod, external, safeAttach) {
215
180
  try {
@@ -223,7 +188,7 @@ var MemoryNodeBuilder = class {
223
188
  await this.node.register(mod);
224
189
  await this.node.attach(mod.address, external);
225
190
  } catch (e) {
226
- throw new Error(`Error adding ${mod.config.name ?? mod.address} to MemoryNode: ${e}`);
191
+ throw new Error(`Error adding ${mod.config.name ?? mod.address} to MemoryNode`, { cause: e });
227
192
  }
228
193
  }
229
194
  async witnessCleanup(witness) {
@@ -267,7 +232,7 @@ var RemoteNodeArchivistOffsetPaths = {
267
232
  };
268
233
 
269
234
  // src/lib/buildNodes.ts
270
- var knownRemoteNodes = /* @__PURE__ */ __name(() => {
235
+ var knownRemoteNodes = () => {
271
236
  const networkNames = defaultNetworkConfigs.map((config) => config.name);
272
237
  return networkNames.map((networkName) => {
273
238
  const name = assertDefinedEx4(networkName, () => "missing name in network config");
@@ -278,31 +243,36 @@ var knownRemoteNodes = /* @__PURE__ */ __name(() => {
278
243
  name
279
244
  };
280
245
  });
281
- }, "knownRemoteNodes");
282
- var BuildStandardNodes = /* @__PURE__ */ __name(async (wallet, onNodeBuilt) => {
246
+ };
247
+ var BuildStandardNodes = async (wallet, onNodeBuilt) => {
283
248
  try {
284
- return await Promise.all(knownRemoteNodes().map(async ({ apiDomain, name }) => {
285
- const remoteNodeOffset = RemoteNodeOffsetPaths[name];
286
- const remoteNodeWallet = await wallet.derivePath?.(remoteNodeOffset);
287
- const memoryNodeBuilder = await MemoryNodeBuilder.create({
288
- name
289
- }, await remoteNodeWallet.derivePath?.("0"));
290
- await memoryNodeBuilder.addBridge(apiDomain);
291
- const rootArchivistPath = `${remoteNodeOffset}/${RemoteNodeArchivistOffsetPaths[name][RootStorageArchivist]}`;
292
- const rootArchivistAccount = await wallet.derivePath?.(rootArchivistPath);
293
- await memoryNodeBuilder.addArchivistStorage(rootArchivistAccount, RootStorageArchivist, "root");
294
- const { node } = memoryNodeBuilder;
295
- assertDefinedEx4(node, () => "Memory Node was not built successfully");
296
- onNodeBuilt?.(node);
297
- return node;
298
- }));
249
+ return await Promise.all(
250
+ knownRemoteNodes().map(async ({ apiDomain, name }) => {
251
+ const remoteNodeOffset = RemoteNodeOffsetPaths[name];
252
+ const remoteNodeWallet = await wallet.derivePath?.(remoteNodeOffset);
253
+ const memoryNodeBuilder = await MemoryNodeBuilder.create({ name }, await remoteNodeWallet.derivePath?.("0"));
254
+ await memoryNodeBuilder.addBridge(apiDomain);
255
+ const rootArchivistPath = `${remoteNodeOffset}/${RemoteNodeArchivistOffsetPaths[name][RootStorageArchivist]}`;
256
+ const rootArchivistAccount = await wallet.derivePath?.(rootArchivistPath);
257
+ await memoryNodeBuilder.addArchivistStorage(rootArchivistAccount, RootStorageArchivist, "root");
258
+ const { node } = memoryNodeBuilder;
259
+ assertDefinedEx4(node, () => "Memory Node was not built successfully");
260
+ onNodeBuilt?.(node);
261
+ return node;
262
+ })
263
+ );
299
264
  } catch (e) {
300
- throw new Error(`Error Creating Known Remote Nodes: ${e}`);
265
+ throw new Error("Error Creating Known Remote Nodes", { cause: e });
301
266
  }
302
- }, "BuildStandardNodes");
267
+ };
303
268
 
304
269
  // src/contexts/StandardRemoteNodes/Providers.tsx
305
- var StandardNodesProvider = /* @__PURE__ */ __name(({ children, defaultRemoteNodes, wallet }) => {
270
+ import { jsx } from "react/jsx-runtime";
271
+ var StandardNodesProvider = ({
272
+ children,
273
+ defaultRemoteNodes,
274
+ wallet
275
+ }) => {
306
276
  const [nodes, setNodes] = useResetState(defaultRemoteNodes);
307
277
  usePromise(async () => {
308
278
  if (wallet) {
@@ -311,98 +281,85 @@ var StandardNodesProvider = /* @__PURE__ */ __name(({ children, defaultRemoteNod
311
281
  if (nodes2?.find((existingNode) => existingNode.config.name === node.config.name)) {
312
282
  return;
313
283
  }
314
- return nodes2 ? [
315
- ...nodes2,
316
- node
317
- ] : [
318
- node
319
- ];
284
+ return nodes2 ? [...nodes2, node] : [node];
320
285
  });
321
286
  });
322
287
  }
323
- }, [
324
- wallet
325
- ]);
326
- const findAddressByName = /* @__PURE__ */ __name((name) => {
327
- const validNetworkName = assertDefinedEx5(name, () => "name was not defined");
328
- return nodes?.find((node) => node.config.name === validNetworkName)?.address;
329
- }, "findAddressByName");
330
- const value = useMemo(() => ({
331
- findAddressByName,
332
- nodes,
333
- provided: true
334
- }), [
335
- findAddressByName,
336
- nodes
337
- ]);
338
- return /* @__PURE__ */ React.createElement(StandardNodesContext, {
339
- value
340
- }, children);
341
- }, "StandardNodesProvider");
342
- var StandardNodesProviderWithWallet = /* @__PURE__ */ __name((props) => {
288
+ }, [wallet]);
289
+ const value = useMemo(() => {
290
+ const findAddressByName = (name) => {
291
+ const validNetworkName = assertDefinedEx5(name, () => "name was not defined");
292
+ return nodes?.find((node) => node.config.name === validNetworkName)?.address;
293
+ };
294
+ return {
295
+ findAddressByName,
296
+ nodes,
297
+ provided: true
298
+ };
299
+ }, [nodes]);
300
+ return /* @__PURE__ */ jsx(
301
+ StandardNodesContext,
302
+ {
303
+ value,
304
+ children
305
+ }
306
+ );
307
+ };
308
+ var StandardNodesProviderWithWallet = (props) => {
343
309
  const { activeAccount } = useWalletContext();
344
- return /* @__PURE__ */ React.createElement(StandardNodesProvider, {
345
- wallet: activeAccount,
346
- ...props
347
- });
348
- }, "StandardNodesProviderWithWallet");
310
+ return /* @__PURE__ */ jsx(StandardNodesProvider, { wallet: activeAccount, ...props });
311
+ };
349
312
 
350
313
  // src/contexts/StandardRemoteNodes/use.ts
351
314
  import { useContextEx } from "@xylabs/react-shared";
352
- var useStandardNodes = /* @__PURE__ */ __name((required = false) => useContextEx(StandardNodesContext, "StandardNodes", required), "useStandardNodes");
315
+ var useStandardNodes = (required = false) => useContextEx(StandardNodesContext, "StandardNodes", required);
353
316
 
354
317
  // src/hooks/useActiveNodeAddress.ts
355
318
  import { useProvidedNode } from "@xyo-network/react-node";
356
319
  import { useMemo as useMemo2 } from "react";
357
- var useActiveNodeAddress = /* @__PURE__ */ __name((networkName) => {
320
+ var useActiveNodeAddress = (networkName) => {
358
321
  const [node] = useProvidedNode();
359
322
  const { nodes, findAddressByName } = useStandardNodes();
360
323
  const activeNodeAddress = useMemo2(() => {
361
324
  if (node && nodes && findAddressByName && networkName) {
362
325
  return findAddressByName(networkName);
363
326
  }
364
- }, [
365
- findAddressByName,
366
- networkName,
367
- node,
368
- nodes
369
- ]);
327
+ }, [findAddressByName, networkName, node, nodes]);
370
328
  return activeNodeAddress;
371
- }, "useActiveNodeAddress");
329
+ };
372
330
 
373
331
  // src/components/ActiveStandardNode.tsx
374
- var ActiveStandardNode = /* @__PURE__ */ __name(({ children, nodeNameOrAddress }) => {
332
+ import { Fragment, jsx as jsx2 } from "react/jsx-runtime";
333
+ var ActiveStandardNode = ({ children, nodeNameOrAddress }) => {
375
334
  const { network } = useNetwork();
376
335
  const [node] = useWeakNodeFromNode(nodeNameOrAddress);
377
336
  const [activeRemoteNodeAddress, setActiveRemoteNodeAddress] = useState();
378
337
  const { nodes } = useStandardNodes();
379
338
  const selectedNodeAddress = useActiveNodeAddress(network?.name);
380
- useAsyncEffect(async (mounted) => {
381
- const nodeInstance = node?.deref();
382
- if (nodeInstance && selectedNodeAddress) {
383
- try {
384
- if ((await nodeInstance?.attached())?.includes(selectedNodeAddress)) {
385
- return;
386
- }
387
- await nodeInstance?.attach(selectedNodeAddress, true);
388
- if (mounted()) {
389
- if (activeRemoteNodeAddress) {
390
- await nodeInstance?.detach(activeRemoteNodeAddress);
339
+ useAsyncEffect(
340
+ async (mounted) => {
341
+ const nodeInstance = node?.deref();
342
+ if (nodeInstance && selectedNodeAddress) {
343
+ try {
344
+ if ((await nodeInstance?.attached())?.includes(selectedNodeAddress)) {
345
+ return;
391
346
  }
392
- setActiveRemoteNodeAddress(selectedNodeAddress);
347
+ await nodeInstance?.attach(selectedNodeAddress, true);
348
+ if (mounted()) {
349
+ if (activeRemoteNodeAddress) {
350
+ await nodeInstance?.detach(activeRemoteNodeAddress);
351
+ }
352
+ setActiveRemoteNodeAddress(selectedNodeAddress);
353
+ }
354
+ } catch (e) {
355
+ console.error("Error Attaching Selected Node Address", e);
393
356
  }
394
- } catch (e) {
395
- console.error("Error Attaching Selected Node Address", e);
396
357
  }
397
- }
398
- }, [
399
- activeRemoteNodeAddress,
400
- node,
401
- selectedNodeAddress,
402
- nodes
403
- ]);
404
- return /* @__PURE__ */ React2.createElement(React2.Fragment, null, children);
405
- }, "ActiveStandardNode");
358
+ },
359
+ [activeRemoteNodeAddress, node, selectedNodeAddress, nodes]
360
+ );
361
+ return /* @__PURE__ */ jsx2(Fragment, { children });
362
+ };
406
363
  export {
407
364
  ActiveStandardNode,
408
365
  BuildStandardNodes,
@@ -1 +1 @@
1
- {"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":"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","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"]}
1
+ {"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 value: StandardNodesState = useMemo(() => {\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 return {\n findAddressByName,\n nodes,\n provided: true as const,\n }\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`, { cause: 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', { cause: 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":"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","names":["assertDefinedEx","assertDefinedEx","assertDefinedEx","assertDefinedEx","assertDefinedEx","assertDefinedEx","nodes","assertDefinedEx","useMemo","useMemo","jsx"]}