@xyo-network/react-node 2.41.25 → 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.
- package/dist/cjs/components/Node.js +1 -1
- package/dist/cjs/components/Node.js.map +1 -1
- package/dist/cjs/contexts/index.d.ts +0 -1
- package/dist/cjs/contexts/index.d.ts.map +1 -1
- package/dist/cjs/contexts/index.js +0 -1
- package/dist/cjs/contexts/index.js.map +1 -1
- package/dist/cjs/contexts/useModules.js +1 -1
- package/dist/cjs/contexts/useModules.js.map +1 -1
- package/dist/docs.json +95 -166
- package/dist/esm/components/Node.js +1 -1
- package/dist/esm/components/Node.js.map +1 -1
- package/dist/esm/contexts/index.d.ts +0 -1
- package/dist/esm/contexts/index.d.ts.map +1 -1
- package/dist/esm/contexts/index.js +0 -1
- package/dist/esm/contexts/index.js.map +1 -1
- package/dist/esm/contexts/useModules.js +1 -1
- package/dist/esm/contexts/useModules.js.map +1 -1
- package/package.json +2 -2
- package/src/components/Node.stories.tsx +36 -14
- package/src/components/Node.tsx +1 -1
- package/src/contexts/index.ts +0 -1
- package/src/contexts/useModules.ts +1 -1
- package/dist/cjs/components/NodeQueryDiviner.d.ts +0 -3
- package/dist/cjs/components/NodeQueryDiviner.d.ts.map +0 -1
- package/dist/cjs/components/NodeQueryDiviner.js +0 -21
- package/dist/cjs/components/NodeQueryDiviner.js.map +0 -1
- package/dist/cjs/contexts/useAddNamedModules.d.ts +0 -5
- package/dist/cjs/contexts/useAddNamedModules.d.ts.map +0 -1
- package/dist/cjs/contexts/useAddNamedModules.js +0 -90
- package/dist/cjs/contexts/useAddNamedModules.js.map +0 -1
- package/dist/esm/components/NodeQueryDiviner.d.ts +0 -3
- package/dist/esm/components/NodeQueryDiviner.d.ts.map +0 -1
- package/dist/esm/components/NodeQueryDiviner.js +0 -17
- package/dist/esm/components/NodeQueryDiviner.js.map +0 -1
- package/dist/esm/contexts/useAddNamedModules.d.ts +0 -5
- package/dist/esm/contexts/useAddNamedModules.d.ts.map +0 -1
- package/dist/esm/contexts/useAddNamedModules.js +0 -81
- package/dist/esm/contexts/useAddNamedModules.js.map +0 -1
- package/src/components/NodeQueryDiviner.stories.tsx +0 -31
- package/src/components/NodeQueryDiviner.tsx +0 -29
- 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,
|
|
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,
|
|
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,
|
|
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?.
|
|
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,
|
|
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
|
+
"@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.
|
|
84
|
+
"version": "2.41.27"
|
|
85
85
|
}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { ComponentStory, DecoratorFn, Meta } from '@storybook/react'
|
|
2
|
-
import {
|
|
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,
|
|
5
|
-
import { NodeBox } from './Node'
|
|
7
|
+
import { MemoryNodeProvider, useNode } from '../contexts'
|
|
6
8
|
|
|
7
|
-
|
|
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<
|
|
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 }
|
package/src/components/Node.tsx
CHANGED
|
@@ -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(
|
package/src/contexts/index.ts
CHANGED
|
@@ -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?.
|
|
15
|
+
const modules = await node?.tryResolve(filter)
|
|
16
16
|
if (mounted()) {
|
|
17
17
|
setModules(modules)
|
|
18
18
|
}
|
|
@@ -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 +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 +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 +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
|
-
}
|