@xyo-network/react-node 2.41.26 → 2.41.27

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.
Files changed (41) hide show
  1. package/dist/cjs/components/Node.js +1 -1
  2. package/dist/cjs/components/Node.js.map +1 -1
  3. package/dist/cjs/contexts/index.d.ts +0 -1
  4. package/dist/cjs/contexts/index.d.ts.map +1 -1
  5. package/dist/cjs/contexts/index.js +0 -1
  6. package/dist/cjs/contexts/index.js.map +1 -1
  7. package/dist/cjs/contexts/useModules.js +1 -1
  8. package/dist/cjs/contexts/useModules.js.map +1 -1
  9. package/dist/docs.json +95 -166
  10. package/dist/esm/components/Node.js +1 -1
  11. package/dist/esm/components/Node.js.map +1 -1
  12. package/dist/esm/contexts/index.d.ts +0 -1
  13. package/dist/esm/contexts/index.d.ts.map +1 -1
  14. package/dist/esm/contexts/index.js +0 -1
  15. package/dist/esm/contexts/index.js.map +1 -1
  16. package/dist/esm/contexts/useModules.js +1 -1
  17. package/dist/esm/contexts/useModules.js.map +1 -1
  18. package/package.json +2 -2
  19. package/src/components/Node.stories.tsx +36 -14
  20. package/src/components/Node.tsx +1 -1
  21. package/src/contexts/index.ts +0 -1
  22. package/src/contexts/useModules.ts +1 -1
  23. package/dist/cjs/components/NodeQueryDiviner.d.ts +0 -3
  24. package/dist/cjs/components/NodeQueryDiviner.d.ts.map +0 -1
  25. package/dist/cjs/components/NodeQueryDiviner.js +0 -21
  26. package/dist/cjs/components/NodeQueryDiviner.js.map +0 -1
  27. package/dist/cjs/contexts/useAddNamedModules.d.ts +0 -5
  28. package/dist/cjs/contexts/useAddNamedModules.d.ts.map +0 -1
  29. package/dist/cjs/contexts/useAddNamedModules.js +0 -90
  30. package/dist/cjs/contexts/useAddNamedModules.js.map +0 -1
  31. package/dist/esm/components/NodeQueryDiviner.d.ts +0 -3
  32. package/dist/esm/components/NodeQueryDiviner.d.ts.map +0 -1
  33. package/dist/esm/components/NodeQueryDiviner.js +0 -17
  34. package/dist/esm/components/NodeQueryDiviner.js.map +0 -1
  35. package/dist/esm/contexts/useAddNamedModules.d.ts +0 -5
  36. package/dist/esm/contexts/useAddNamedModules.d.ts.map +0 -1
  37. package/dist/esm/contexts/useAddNamedModules.js +0 -81
  38. package/dist/esm/contexts/useAddNamedModules.js.map +0 -1
  39. package/src/components/NodeQueryDiviner.stories.tsx +0 -31
  40. package/src/components/NodeQueryDiviner.tsx +0 -29
  41. package/src/contexts/useAddNamedModules.tsx +0 -97
@@ -4,7 +4,7 @@ import { useAsyncEffect } from '@xylabs/react-shared';
4
4
  import { useState } from 'react';
5
5
  import { useNode } from '../contexts';
6
6
  export const NodeBox = (props) => {
7
- const [node] = useNode();
7
+ const [node] = useNode(false);
8
8
  const [description, setDescription] = useState();
9
9
  useAsyncEffect(
10
10
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -1 +1 @@
1
- {"version":3,"file":"Node.js","sourceRoot":"","sources":["../../../src/components/Node.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAgB,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,MAAM,CAAC,MAAM,OAAO,GAA2B,CAAC,KAAK,EAAE,EAAE;IACvD,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAA;IACxB,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,EAAU,CAAA;IAExD,cAAc;IACZ,uDAAuD;IACvD,KAAK,IAAI,EAAE;QACT,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACpE,CAAC,EACD,CAAC,IAAI,CAAC,CACP,CAAA;IAED,OAAO,CACL,KAAC,OAAO,OAAK,KAAK,YAChB,wBAAM,WAAW,GAAO,GAChB,CACX,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"Node.js","sourceRoot":"","sources":["../../../src/components/Node.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAgB,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,MAAM,CAAC,MAAM,OAAO,GAA2B,CAAC,KAAK,EAAE,EAAE;IACvD,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,EAAU,CAAA;IAExD,cAAc;IACZ,uDAAuD;IACvD,KAAK,IAAI,EAAE;QACT,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACpE,CAAC,EACD,CAAC,IAAI,CAAC,CACP,CAAA;IAED,OAAO,CACL,KAAC,OAAO,OAAK,KAAK,YAChB,wBAAM,WAAW,GAAO,GAChB,CACX,CAAA;AACH,CAAC,CAAA"}
@@ -4,7 +4,6 @@ export * from './ModuleRepository';
4
4
  export * from './NodeDrawerContext';
5
5
  export * from './Provider';
6
6
  export * from './State';
7
- export * from './useAddNamedModules';
8
7
  export * from './useArchiveArchivists';
9
8
  export * from './useArchivistModule';
10
9
  export * from './useArchivistModules';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA"}
@@ -4,7 +4,6 @@ export * from './ModuleRepository';
4
4
  export * from './NodeDrawerContext';
5
5
  export * from './Provider';
6
6
  export * from './State';
7
- export * from './useAddNamedModules';
8
7
  export * from './useArchiveArchivists';
9
8
  export * from './useArchivistModule';
10
9
  export * from './useArchivistModules';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA"}
@@ -7,7 +7,7 @@ export const useModules = (filter) => {
7
7
  useAsyncEffect(
8
8
  // eslint-disable-next-line react-hooks/exhaustive-deps
9
9
  async (mounted) => {
10
- const modules = await node?.resolve(filter);
10
+ const modules = await node?.tryResolve(filter);
11
11
  if (mounted()) {
12
12
  setModules(modules);
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useModules.js","sourceRoot":"","sources":["../../../src/contexts/useModules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAGrD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAqB,EAAE,EAAE;IAClD,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,EAAgB,CAAA;IACtC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAY,CAAA;IAElD,cAAc;IACZ,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAC3C,IAAI,OAAO,EAAE,EAAE;YACb,UAAU,CAAC,OAAO,CAAC,CAAA;SACpB;IACH,CAAC,EACD,CAAC,MAAM,EAAE,IAAI,CAAC,CACf,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
1
+ {"version":3,"file":"useModules.js","sourceRoot":"","sources":["../../../src/contexts/useModules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAGrD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAqB,EAAE,EAAE;IAClD,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,EAAgB,CAAA;IACtC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAY,CAAA;IAElD,cAAc;IACZ,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;QAC9C,IAAI,OAAO,EAAE,EAAE;YACb,UAAU,CAAC,OAAO,CAAC,CAAA;SACpB;IACH,CAAC,EACD,CAAC,MAAM,EAAE,IAAI,CAAC,CACf,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
package/package.json CHANGED
@@ -23,7 +23,7 @@
23
23
  "@xyo-network/node": "^2.43.6",
24
24
  "@xyo-network/payload-builder": "^2.43.6",
25
25
  "@xyo-network/payload-model": "^2.43.6",
26
- "@xyo-network/react-shared": "^2.41.26",
26
+ "@xyo-network/react-shared": "^2.41.27",
27
27
  "@xyo-network/witness": "^2.43.6",
28
28
  "lodash": "^4.17.21"
29
29
  },
@@ -81,5 +81,5 @@
81
81
  },
82
82
  "sideEffects": false,
83
83
  "types": "dist/esm/index.d.ts",
84
- "version": "2.41.26"
84
+ "version": "2.41.27"
85
85
  }
@@ -1,10 +1,14 @@
1
1
  import { ComponentStory, DecoratorFn, Meta } from '@storybook/react'
2
- import { NodeConfigSchema } from '@xyo-network/node'
2
+ import { useAsyncEffect } from '@xylabs/react-shared'
3
+ import { AbstractModule } from '@xyo-network/module'
4
+ import { MemoryNode, NodeConfigSchema } from '@xyo-network/node'
5
+ import { useState } from 'react'
3
6
 
4
- import { MemoryNodeProvider, useAddNamedModules } from '../contexts'
5
- import { NodeBox } from './Node'
7
+ import { MemoryNodeProvider, useNode } from '../contexts'
6
8
 
7
- const NodeBoxDecorator: DecoratorFn = (Story, args) => {
9
+ class TestModule extends AbstractModule {}
10
+
11
+ const MemoryNodeDecorator: DecoratorFn = (Story, args) => {
8
12
  return (
9
13
  <MemoryNodeProvider config={{ schema: NodeConfigSchema }}>
10
14
  <Story {...args} />
@@ -12,26 +16,44 @@ const NodeBoxDecorator: DecoratorFn = (Story, args) => {
12
16
  )
13
17
  }
14
18
 
15
- const AddModulesDecorator: DecoratorFn = (Story, args) => {
16
- const list = { AddressHistoryDiviner: Symbol('AddressHistoryDiviner') }
17
- useAddNamedModules(list, { apiDomain: 'http://localhost:8080' })
18
- return <Story {...args} />
19
- }
20
-
21
19
  // eslint-disable-next-line import/no-default-export
22
20
  export default {
23
- component: NodeBox,
24
- decorators: [NodeBoxDecorator],
25
21
  title: 'node/NodeBox',
26
22
  } as Meta
27
23
 
28
- const Template: ComponentStory<typeof NodeBox> = (props) => <NodeBox {...props} />
24
+ const Template: ComponentStory<React.FC> = (props) => {
25
+ const [node] = useNode<MemoryNode>(false)
26
+ const [description, setDescription] = useState<string>()
27
+
28
+ useAsyncEffect(
29
+ // eslint-disable-next-line react-hooks/exhaustive-deps
30
+ async () => {
31
+ if (node) {
32
+ try {
33
+ const mod = await TestModule.create({ config: { schema: 'network.xyo.test.module' } })
34
+ node?.register(mod)
35
+ node?.attach(mod.address)
36
+ setDescription(JSON.stringify(await node?.description(), null, 2))
37
+ } catch (e) {
38
+ console.error(e)
39
+ }
40
+ }
41
+ },
42
+ [node],
43
+ )
44
+
45
+ return (
46
+ <div {...props}>
47
+ <pre>{description}</pre>
48
+ </div>
49
+ )
50
+ }
29
51
 
30
52
  const Default = Template.bind({})
31
53
  Default.args = {}
32
54
 
33
55
  const WithModules = Template.bind({})
34
- WithModules.decorators = [AddModulesDecorator]
35
56
  WithModules.argTypes = {}
57
+ WithModules.decorators = [MemoryNodeDecorator]
36
58
 
37
59
  export { Default, WithModules }
@@ -5,7 +5,7 @@ import { useState } from 'react'
5
5
  import { useNode } from '../contexts'
6
6
 
7
7
  export const NodeBox: React.FC<FlexBoxProps> = (props) => {
8
- const [node] = useNode()
8
+ const [node] = useNode(false)
9
9
  const [description, setDescription] = useState<string>()
10
10
 
11
11
  useAsyncEffect(
@@ -4,7 +4,6 @@ export * from './ModuleRepository'
4
4
  export * from './NodeDrawerContext'
5
5
  export * from './Provider'
6
6
  export * from './State'
7
- export * from './useAddNamedModules'
8
7
  export * from './useArchiveArchivists'
9
8
  export * from './useArchivistModule'
10
9
  export * from './useArchivistModules'
@@ -12,7 +12,7 @@ export const useModules = (filter?: ModuleFilter) => {
12
12
  useAsyncEffect(
13
13
  // eslint-disable-next-line react-hooks/exhaustive-deps
14
14
  async (mounted) => {
15
- const modules = await node?.resolve(filter)
15
+ const modules = await node?.tryResolve(filter)
16
16
  if (mounted()) {
17
17
  setModules(modules)
18
18
  }
@@ -1,3 +0,0 @@
1
- /// <reference types="react" />
2
- export declare const NodeQueryDiviner: React.FC;
3
- //# sourceMappingURL=NodeQueryDiviner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeQueryDiviner.d.ts","sourceRoot":"","sources":["../../../src/components/NodeQueryDiviner.tsx"],"names":[],"mappings":";AAQA,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAoBpC,CAAA"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NodeQueryDiviner = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const material_1 = require("@mui/material");
6
- const react_flexbox_1 = require("@xylabs/react-flexbox");
7
- const payload_builder_1 = require("@xyo-network/payload-builder");
8
- const react_1 = require("react");
9
- const contexts_1 = require("../contexts");
10
- const NodeQueryDiviner = () => {
11
- const [query, setQuery] = (0, react_1.useState)();
12
- const [address, setAddress] = (0, react_1.useState)('');
13
- const [result, error] = (0, contexts_1.useNodeQueryDiviner)('AddressHistoryDiviner', query);
14
- const onClick = () => {
15
- const query = new payload_builder_1.XyoPayloadBuilder({ schema: 'network.xyo.diviner.address.query' }).fields({ address }).build();
16
- setQuery(query);
17
- };
18
- return ((0, jsx_runtime_1.jsxs)(react_flexbox_1.FlexCol, Object.assign({ rowGap: 2 }, { children: [(0, jsx_runtime_1.jsx)(material_1.TextField, { placeholder: "Address on localhost", onChange: (event) => setAddress(event.target.value) }), (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ disabled: !address, variant: 'contained', onClick: onClick }, { children: "divine" })), (0, jsx_runtime_1.jsx)("code", Object.assign({ style: { overflowWrap: 'anywhere' } }, { children: JSON.stringify(result, null, 2) })), (0, jsx_runtime_1.jsx)("code", Object.assign({ style: { overflowWrap: 'anywhere' } }, { children: JSON.stringify(error, null, 2) }))] })));
19
- };
20
- exports.NodeQueryDiviner = NodeQueryDiviner;
21
- //# sourceMappingURL=NodeQueryDiviner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeQueryDiviner.js","sourceRoot":"","sources":["../../../src/components/NodeQueryDiviner.tsx"],"names":[],"mappings":";;;;AAAA,4CAAiD;AACjD,yDAA+C;AAC/C,kEAAgE;AAEhE,iCAAgC;AAEhC,0CAAiD;AAE1C,MAAM,gBAAgB,GAAa,GAAG,EAAE;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,GAAc,CAAA;IAChD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAA;IAC1C,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAA,8BAAmB,EAAC,uBAAuB,EAAE,KAAK,CAAC,CAAA;IAE3E,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,KAAK,GAAG,IAAI,mCAAiB,CAAC,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;QAChH,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjB,CAAC,CAAA;IAED,OAAO,CACL,wBAAC,uBAAO,kBAAC,MAAM,EAAE,CAAC,iBAChB,uBAAC,oBAAS,IAAC,WAAW,EAAC,sBAAsB,EAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAI,EACrG,uBAAC,iBAAM,kBAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,4BAEzD,EACT,+CAAM,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAQ,EACnF,+CAAM,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAQ,KAC1E,CACX,CAAA;AACH,CAAC,CAAA;AApBY,QAAA,gBAAgB,oBAoB5B"}
@@ -1,5 +0,0 @@
1
- import { ApiConfig } from '@xylabs/api';
2
- type ModuleList = Record<string, symbol>;
3
- export declare const useAddNamedModules: (moduleList?: ModuleList, apiConfig?: ApiConfig, reset?: boolean) => boolean;
4
- export {};
5
- //# sourceMappingURL=useAddNamedModules.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAddNamedModules.d.ts","sourceRoot":"","sources":["../../../src/contexts/useAddNamedModules.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAWvC,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAyCxC,eAAO,MAAM,kBAAkB,gBAAiB,UAAU,cAAc,SAAS,6BA4ChF,CAAA"}
@@ -1,90 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useAddNamedModules = void 0;
4
- const tslib_1 = require("tslib");
5
- const react_shared_1 = require("@xylabs/react-shared");
6
- const archivist_1 = require("@xyo-network/archivist");
7
- const diviner_wrapper_1 = require("@xyo-network/diviner-wrapper");
8
- const http_proxy_module_1 = require("@xyo-network/http-proxy-module");
9
- const module_1 = require("@xyo-network/module");
10
- const node_1 = require("@xyo-network/node");
11
- const react_1 = require("react");
12
- const useNode_1 = require("./useNode");
13
- class NodeUtils {
14
- static addToNode(remoteModule, name, memoryNode) {
15
- const wrapper = ModuleUtils.addWrapper(remoteModule);
16
- memoryNode.register(wrapper !== null && wrapper !== void 0 ? wrapper : remoteModule);
17
- memoryNode.attach(remoteModule.address, name);
18
- console.log('attached:', name);
19
- }
20
- static newNodeInstance(node) {
21
- // using .assign instead of spread because we need to keep the prototype chain intact for root node / module methods
22
- return Object.assign(Object.create(Object.getPrototypeOf(node)), node);
23
- }
24
- static resolveNode(node, reset) {
25
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
26
- let localNode = node;
27
- if (reset) {
28
- localNode = yield node_1.MemoryNode.create();
29
- }
30
- return localNode;
31
- });
32
- }
33
- }
34
- class ModuleUtils {
35
- static addWrapper(remoteModule) {
36
- let wrapper;
37
- if (remoteModule.config.schema.includes('divine')) {
38
- wrapper = new diviner_wrapper_1.DivinerWrapper(remoteModule);
39
- }
40
- else if (remoteModule.config.schema.includes('archivist')) {
41
- wrapper = new archivist_1.ArchivistWrapper(remoteModule);
42
- }
43
- return wrapper;
44
- }
45
- static constructRemoteModule(apiConfig, description) {
46
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
47
- return yield http_proxy_module_1.HttpProxyModule.create({
48
- apiConfig,
49
- config: { schema: module_1.AbstractModuleConfigSchema },
50
- name: description,
51
- });
52
- });
53
- }
54
- }
55
- const useAddNamedModules = (moduleList, apiConfig, reset = false) => {
56
- const [node, setNode] = (0, useNode_1.useNode)();
57
- const [complete, setComplete] = (0, react_1.useState)(false);
58
- const updateNode = (0, react_1.useCallback)((node) => {
59
- const newNode = NodeUtils.newNodeInstance(node);
60
- setNode === null || setNode === void 0 ? void 0 : setNode(newNode);
61
- }, [setNode]);
62
- const handleNewModule = (apiConfig, localNode, description) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
63
- try {
64
- const remoteModule = yield ModuleUtils.constructRemoteModule(apiConfig, description);
65
- NodeUtils.addToNode(remoteModule, description !== null && description !== void 0 ? description : 'unknown', localNode);
66
- }
67
- catch (error) {
68
- console.error(error);
69
- }
70
- });
71
- (0, react_1.useEffect)(() => {
72
- // whenever the api config changes, assume we need to rebuild the memory node
73
- setComplete(false);
74
- }, [apiConfig]);
75
- (0, react_shared_1.useAsyncEffect)(
76
- // eslint-disable-next-line react-hooks/exhaustive-deps
77
- () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
78
- if (moduleList && apiConfig && node && !complete) {
79
- const localNode = yield NodeUtils.resolveNode(node, reset);
80
- yield Promise.allSettled(Object.entries(moduleList).map(([_key, { description }]) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
81
- yield handleNewModule(apiConfig, localNode, description);
82
- })));
83
- setComplete(true);
84
- updateNode(node);
85
- }
86
- }), [apiConfig, complete, moduleList, node, reset, setNode, updateNode]);
87
- return complete;
88
- };
89
- exports.useAddNamedModules = useAddNamedModules;
90
- //# sourceMappingURL=useAddNamedModules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAddNamedModules.js","sourceRoot":"","sources":["../../../src/contexts/useAddNamedModules.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- /// <reference types="react" />
2
- export declare const NodeQueryDiviner: React.FC;
3
- //# sourceMappingURL=NodeQueryDiviner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeQueryDiviner.d.ts","sourceRoot":"","sources":["../../../src/components/NodeQueryDiviner.tsx"],"names":[],"mappings":";AAQA,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAoBpC,CAAA"}
@@ -1,17 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Button, TextField } from '@mui/material';
3
- import { FlexCol } from '@xylabs/react-flexbox';
4
- import { XyoPayloadBuilder } from '@xyo-network/payload-builder';
5
- import { useState } from 'react';
6
- import { useNodeQueryDiviner } from '../contexts';
7
- export const NodeQueryDiviner = () => {
8
- const [query, setQuery] = useState();
9
- const [address, setAddress] = useState('');
10
- const [result, error] = useNodeQueryDiviner('AddressHistoryDiviner', query);
11
- const onClick = () => {
12
- const query = new XyoPayloadBuilder({ schema: 'network.xyo.diviner.address.query' }).fields({ address }).build();
13
- setQuery(query);
14
- };
15
- return (_jsxs(FlexCol, { rowGap: 2, children: [_jsx(TextField, { placeholder: "Address on localhost", onChange: (event) => setAddress(event.target.value) }), _jsx(Button, { disabled: !address, variant: 'contained', onClick: onClick, children: "divine" }), _jsx("code", { style: { overflowWrap: 'anywhere' }, children: JSON.stringify(result, null, 2) }), _jsx("code", { style: { overflowWrap: 'anywhere' }, children: JSON.stringify(error, null, 2) })] }));
16
- };
17
- //# sourceMappingURL=NodeQueryDiviner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeQueryDiviner.js","sourceRoot":"","sources":["../../../src/components/NodeQueryDiviner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAEhE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,MAAM,CAAC,MAAM,gBAAgB,GAAa,GAAG,EAAE;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAc,CAAA;IAChD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC1C,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,mBAAmB,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAA;IAE3E,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;QAChH,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjB,CAAC,CAAA;IAED,OAAO,CACL,MAAC,OAAO,IAAC,MAAM,EAAE,CAAC,aAChB,KAAC,SAAS,IAAC,WAAW,EAAC,sBAAsB,EAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAI,EACrG,KAAC,MAAM,IAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,uBAEzD,EACT,eAAM,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,YAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAQ,EACnF,eAAM,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,YAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAQ,IAC1E,CACX,CAAA;AACH,CAAC,CAAA"}
@@ -1,5 +0,0 @@
1
- import { ApiConfig } from '@xylabs/api';
2
- type ModuleList = Record<string, symbol>;
3
- export declare const useAddNamedModules: (moduleList?: ModuleList, apiConfig?: ApiConfig, reset?: boolean) => boolean;
4
- export {};
5
- //# sourceMappingURL=useAddNamedModules.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAddNamedModules.d.ts","sourceRoot":"","sources":["../../../src/contexts/useAddNamedModules.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAWvC,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAyCxC,eAAO,MAAM,kBAAkB,gBAAiB,UAAU,cAAc,SAAS,6BA4ChF,CAAA"}
@@ -1,81 +0,0 @@
1
- import { useAsyncEffect } from '@xylabs/react-shared';
2
- import { ArchivistWrapper } from '@xyo-network/archivist';
3
- import { DivinerWrapper } from '@xyo-network/diviner-wrapper';
4
- import { HttpProxyModule } from '@xyo-network/http-proxy-module';
5
- import { AbstractModuleConfigSchema } from '@xyo-network/module';
6
- import { MemoryNode } from '@xyo-network/node';
7
- import { useCallback, useEffect, useState } from 'react';
8
- import { useNode } from './useNode';
9
- class NodeUtils {
10
- static addToNode(remoteModule, name, memoryNode) {
11
- const wrapper = ModuleUtils.addWrapper(remoteModule);
12
- memoryNode.register(wrapper ?? remoteModule);
13
- memoryNode.attach(remoteModule.address, name);
14
- console.log('attached:', name);
15
- }
16
- static newNodeInstance(node) {
17
- // using .assign instead of spread because we need to keep the prototype chain intact for root node / module methods
18
- return Object.assign(Object.create(Object.getPrototypeOf(node)), node);
19
- }
20
- static async resolveNode(node, reset) {
21
- let localNode = node;
22
- if (reset) {
23
- localNode = await MemoryNode.create();
24
- }
25
- return localNode;
26
- }
27
- }
28
- class ModuleUtils {
29
- static addWrapper(remoteModule) {
30
- let wrapper;
31
- if (remoteModule.config.schema.includes('divine')) {
32
- wrapper = new DivinerWrapper(remoteModule);
33
- }
34
- else if (remoteModule.config.schema.includes('archivist')) {
35
- wrapper = new ArchivistWrapper(remoteModule);
36
- }
37
- return wrapper;
38
- }
39
- static async constructRemoteModule(apiConfig, description) {
40
- return await HttpProxyModule.create({
41
- apiConfig,
42
- config: { schema: AbstractModuleConfigSchema },
43
- name: description,
44
- });
45
- }
46
- }
47
- export const useAddNamedModules = (moduleList, apiConfig, reset = false) => {
48
- const [node, setNode] = useNode();
49
- const [complete, setComplete] = useState(false);
50
- const updateNode = useCallback((node) => {
51
- const newNode = NodeUtils.newNodeInstance(node);
52
- setNode?.(newNode);
53
- }, [setNode]);
54
- const handleNewModule = async (apiConfig, localNode, description) => {
55
- try {
56
- const remoteModule = await ModuleUtils.constructRemoteModule(apiConfig, description);
57
- NodeUtils.addToNode(remoteModule, description ?? 'unknown', localNode);
58
- }
59
- catch (error) {
60
- console.error(error);
61
- }
62
- };
63
- useEffect(() => {
64
- // whenever the api config changes, assume we need to rebuild the memory node
65
- setComplete(false);
66
- }, [apiConfig]);
67
- useAsyncEffect(
68
- // eslint-disable-next-line react-hooks/exhaustive-deps
69
- async () => {
70
- if (moduleList && apiConfig && node && !complete) {
71
- const localNode = await NodeUtils.resolveNode(node, reset);
72
- await Promise.allSettled(Object.entries(moduleList).map(async ([_key, { description }]) => {
73
- await handleNewModule(apiConfig, localNode, description);
74
- }));
75
- setComplete(true);
76
- updateNode(node);
77
- }
78
- }, [apiConfig, complete, moduleList, node, reset, setNode, updateNode]);
79
- return complete;
80
- };
81
- //# sourceMappingURL=useAddNamedModules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAddNamedModules.js","sourceRoot":"","sources":["../../../src/contexts/useAddNamedModules.tsx"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import { ComponentStory, DecoratorFn } from '@storybook/react'
2
- import { NodeConfigSchema } from '@xyo-network/node'
3
-
4
- import { MemoryNodeProvider, useAddNamedModules } from '../contexts'
5
- import { NodeQueryDiviner } from './NodeQueryDiviner'
6
-
7
- const MemoryNodeDecorator: DecoratorFn = (Story, args) => (
8
- <MemoryNodeProvider config={{ schema: NodeConfigSchema }}>
9
- <Story {...args} />
10
- </MemoryNodeProvider>
11
- )
12
-
13
- const AddModulesDecorator: DecoratorFn = (Story, args) => {
14
- const list = { AddressHistoryDiviner: Symbol('AddressHistoryDiviner') }
15
- useAddNamedModules(list, { apiDomain: 'http://localhost:8080' })
16
- return <Story {...args} />
17
- }
18
-
19
- // eslint-disable-next-line import/no-default-export
20
- export default {
21
- component: NodeQueryDiviner,
22
- decorators: [AddModulesDecorator, MemoryNodeDecorator],
23
- title: 'node/NodeQueryDiviner',
24
- }
25
-
26
- const Template: ComponentStory<typeof NodeQueryDiviner> = () => <NodeQueryDiviner />
27
-
28
- const Default = Template.bind({})
29
- Default.args = {}
30
-
31
- export { Default }
@@ -1,29 +0,0 @@
1
- import { Button, TextField } from '@mui/material'
2
- import { FlexCol } from '@xylabs/react-flexbox'
3
- import { XyoPayloadBuilder } from '@xyo-network/payload-builder'
4
- import { XyoPayload } from '@xyo-network/payload-model'
5
- import { useState } from 'react'
6
-
7
- import { useNodeQueryDiviner } from '../contexts'
8
-
9
- export const NodeQueryDiviner: React.FC = () => {
10
- const [query, setQuery] = useState<XyoPayload>()
11
- const [address, setAddress] = useState('')
12
- const [result, error] = useNodeQueryDiviner('AddressHistoryDiviner', query)
13
-
14
- const onClick = () => {
15
- const query = new XyoPayloadBuilder({ schema: 'network.xyo.diviner.address.query' }).fields({ address }).build()
16
- setQuery(query)
17
- }
18
-
19
- return (
20
- <FlexCol rowGap={2}>
21
- <TextField placeholder="Address on localhost" onChange={(event) => setAddress(event.target.value)} />
22
- <Button disabled={!address} variant={'contained'} onClick={onClick}>
23
- divine
24
- </Button>
25
- <code style={{ overflowWrap: 'anywhere' }}>{JSON.stringify(result, null, 2)}</code>
26
- <code style={{ overflowWrap: 'anywhere' }}>{JSON.stringify(error, null, 2)}</code>
27
- </FlexCol>
28
- )
29
- }
@@ -1,97 +0,0 @@
1
- import { ApiConfig } from '@xylabs/api'
2
- import { useAsyncEffect } from '@xylabs/react-shared'
3
- import { ArchivistWrapper } from '@xyo-network/archivist'
4
- import { DivinerWrapper } from '@xyo-network/diviner-wrapper'
5
- import { HttpProxyModule } from '@xyo-network/http-proxy-module'
6
- import { AbstractModuleConfigSchema, Module, ModuleWrapper } from '@xyo-network/module'
7
- import { MemoryNode } from '@xyo-network/node'
8
- import { useCallback, useEffect, useState } from 'react'
9
-
10
- import { useNode } from './useNode'
11
-
12
- type ModuleList = Record<string, symbol>
13
-
14
- class NodeUtils {
15
- static addToNode(remoteModule: Module, name: string, memoryNode: MemoryNode) {
16
- const wrapper = ModuleUtils.addWrapper(remoteModule)
17
- memoryNode.register(wrapper ?? remoteModule)
18
- memoryNode.attach(remoteModule.address, name)
19
- console.log('attached:', name)
20
- }
21
- static newNodeInstance(node: MemoryNode) {
22
- // using .assign instead of spread because we need to keep the prototype chain intact for root node / module methods
23
- return Object.assign(Object.create(Object.getPrototypeOf(node)), node)
24
- }
25
- static async resolveNode(node: MemoryNode, reset?: boolean) {
26
- let localNode = node
27
- if (reset) {
28
- localNode = await MemoryNode.create()
29
- }
30
- return localNode
31
- }
32
- }
33
-
34
- class ModuleUtils {
35
- static addWrapper(remoteModule: Module) {
36
- let wrapper: ModuleWrapper | undefined
37
- if (remoteModule.config.schema.includes('divine')) {
38
- wrapper = new DivinerWrapper(remoteModule)
39
- } else if (remoteModule.config.schema.includes('archivist')) {
40
- wrapper = new ArchivistWrapper(remoteModule)
41
- }
42
- return wrapper
43
- }
44
- static async constructRemoteModule(apiConfig: ApiConfig, description?: string) {
45
- return await HttpProxyModule.create({
46
- apiConfig,
47
- config: { schema: AbstractModuleConfigSchema },
48
- name: description,
49
- })
50
- }
51
- }
52
-
53
- export const useAddNamedModules = (moduleList?: ModuleList, apiConfig?: ApiConfig, reset = false) => {
54
- const [node, setNode] = useNode<MemoryNode>()
55
- const [complete, setComplete] = useState(false)
56
-
57
- const updateNode = useCallback(
58
- (node: MemoryNode) => {
59
- const newNode = NodeUtils.newNodeInstance(node)
60
- setNode?.(newNode)
61
- },
62
- [setNode],
63
- )
64
-
65
- const handleNewModule = async (apiConfig: ApiConfig, localNode: MemoryNode, description?: string) => {
66
- try {
67
- const remoteModule = await ModuleUtils.constructRemoteModule(apiConfig, description)
68
- NodeUtils.addToNode(remoteModule, description ?? 'unknown', localNode)
69
- } catch (error) {
70
- console.error(error)
71
- }
72
- }
73
-
74
- useEffect(() => {
75
- // whenever the api config changes, assume we need to rebuild the memory node
76
- setComplete(false)
77
- }, [apiConfig])
78
-
79
- useAsyncEffect(
80
- // eslint-disable-next-line react-hooks/exhaustive-deps
81
- async () => {
82
- if (moduleList && apiConfig && node && !complete) {
83
- const localNode = await NodeUtils.resolveNode(node, reset)
84
- await Promise.allSettled(
85
- Object.entries(moduleList).map(async ([_key, { description }]) => {
86
- await handleNewModule(apiConfig, localNode, description)
87
- }),
88
- )
89
- setComplete(true)
90
- updateNode(node)
91
- }
92
- },
93
- [apiConfig, complete, moduleList, node, reset, setNode, updateNode],
94
- )
95
-
96
- return complete
97
- }