@xyo-network/react-panel 2.23.7
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/LICENSE +165 -0
- package/README.md +69 -0
- package/babel.config.json +5 -0
- package/dist/cjs/contexts/Context.d.ts +3 -0
- package/dist/cjs/contexts/Context.js +6 -0
- package/dist/cjs/contexts/Context.js.map +1 -0
- package/dist/cjs/contexts/Provider.d.ts +12 -0
- package/dist/cjs/contexts/Provider.js +131 -0
- package/dist/cjs/contexts/Provider.js.map +1 -0
- package/dist/cjs/contexts/State.d.ts +29 -0
- package/dist/cjs/contexts/State.js +12 -0
- package/dist/cjs/contexts/State.js.map +1 -0
- package/dist/cjs/contexts/index.d.ts +4 -0
- package/dist/cjs/contexts/index.js +8 -0
- package/dist/cjs/contexts/index.js.map +1 -0
- package/dist/cjs/contexts/use.d.ts +7 -0
- package/dist/cjs/contexts/use.js +11 -0
- package/dist/cjs/contexts/use.js.map +1 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +5 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/docs.json +943 -0
- package/dist/esm/contexts/Context.d.ts +3 -0
- package/dist/esm/contexts/Context.js +3 -0
- package/dist/esm/contexts/Context.js.map +1 -0
- package/dist/esm/contexts/Provider.d.ts +12 -0
- package/dist/esm/contexts/Provider.js +122 -0
- package/dist/esm/contexts/Provider.js.map +1 -0
- package/dist/esm/contexts/State.d.ts +29 -0
- package/dist/esm/contexts/State.js +9 -0
- package/dist/esm/contexts/State.js.map +1 -0
- package/dist/esm/contexts/index.d.ts +4 -0
- package/dist/esm/contexts/index.js +5 -0
- package/dist/esm/contexts/index.js.map +1 -0
- package/dist/esm/contexts/use.d.ts +7 -0
- package/dist/esm/contexts/use.js +7 -0
- package/dist/esm/contexts/use.js.map +1 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/package.json +138 -0
- package/src/contexts/Context.ts +5 -0
- package/src/contexts/Provider.tsx +148 -0
- package/src/contexts/State.ts +34 -0
- package/src/contexts/index.ts +4 -0
- package/src/contexts/use.ts +8 -0
- package/src/index.ts +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Context.js","sourceRoot":"","sources":["../../../src/contexts/Context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAI3D,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,EAAwB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { WithChildren } from '@xylabs/sdk-react';
|
|
3
|
+
import { XyoArchivistApi } from '@xyo-network/api';
|
|
4
|
+
import { XyoPayload, XyoWitness } from '@xyo-network/core';
|
|
5
|
+
export interface XyoPanelProviderProps {
|
|
6
|
+
archivists?: XyoArchivistApi[];
|
|
7
|
+
inlinePayloads?: boolean;
|
|
8
|
+
witnesses?: XyoWitness<XyoPayload>[];
|
|
9
|
+
required?: boolean;
|
|
10
|
+
archive?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const XyoPanelProvider: React.FC<WithChildren<XyoPanelProviderProps>>;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { assertEx, delay } from '@xylabs/sdk-js';
|
|
3
|
+
import { useAsyncEffect } from '@xylabs/sdk-react';
|
|
4
|
+
import { XyoArchivistApi } from '@xyo-network/api';
|
|
5
|
+
import { XyoPanel } from '@xyo-network/panel';
|
|
6
|
+
import { useArchive } from '@xyo-network/react-archive';
|
|
7
|
+
import { useAccount } from '@xyo-network/react-wallet';
|
|
8
|
+
import { XyoSystemInfoWitness } from '@xyo-network/systeminfo-witness';
|
|
9
|
+
import { useEffect, useState } from 'react';
|
|
10
|
+
import { XyoPanelContext } from './Context';
|
|
11
|
+
import { XyoReportStatus } from './State';
|
|
12
|
+
const getDefaultArchivists = () => {
|
|
13
|
+
const archivistConfigs = [
|
|
14
|
+
{
|
|
15
|
+
apiDomain: process.env.API_DOMAIN || 'https://api.archivist.xyo.network',
|
|
16
|
+
},
|
|
17
|
+
];
|
|
18
|
+
return archivistConfigs.map((config) => {
|
|
19
|
+
return new XyoArchivistApi(config);
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
export const XyoPanelProvider = ({ inlinePayloads = false, required = false, archivists = getDefaultArchivists(), witnesses = [new XyoSystemInfoWitness()], children, }) => {
|
|
23
|
+
const { archive } = useArchive();
|
|
24
|
+
const [panel, setPanel] = useState();
|
|
25
|
+
const [history, setHistory] = useState();
|
|
26
|
+
const [progress, setProgress] = useState({});
|
|
27
|
+
const [status, setStatus] = useState(XyoReportStatus.Idle);
|
|
28
|
+
const [reportingErrors, setReportingErrors] = useState();
|
|
29
|
+
const { account } = useAccount();
|
|
30
|
+
useAsyncEffect(
|
|
31
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
32
|
+
async (mounted) => {
|
|
33
|
+
const panel = new XyoPanel({
|
|
34
|
+
account,
|
|
35
|
+
archive,
|
|
36
|
+
archivists,
|
|
37
|
+
inlinePayloads,
|
|
38
|
+
onArchivistSendEnd: (archivist, error) => {
|
|
39
|
+
const archivists = progress.archivists ?? {};
|
|
40
|
+
archivists[archivist.config.apiDomain] = {
|
|
41
|
+
archivist,
|
|
42
|
+
status: error ? XyoReportStatus.Failed : XyoReportStatus.Succeeded,
|
|
43
|
+
};
|
|
44
|
+
if (mounted()) {
|
|
45
|
+
setProgress({ archivists, witnesses: progress.witnesses });
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
onArchivistSendStart: (archivist) => {
|
|
49
|
+
const archivists = progress.archivists ?? {};
|
|
50
|
+
archivists[archivist.config.apiDomain] = {
|
|
51
|
+
archivist,
|
|
52
|
+
status: XyoReportStatus.Started,
|
|
53
|
+
};
|
|
54
|
+
if (mounted()) {
|
|
55
|
+
setProgress({ archivists, witnesses: progress.witnesses });
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
onHistoryAdd: () => {
|
|
59
|
+
if (mounted()) {
|
|
60
|
+
setHistory(assertEx(panel).history.map((item) => item));
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
onHistoryRemove: () => {
|
|
64
|
+
if (mounted()) {
|
|
65
|
+
setHistory(assertEx(panel).history.map((item) => item));
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
onReportEnd: (_, errors) => {
|
|
69
|
+
if (mounted()) {
|
|
70
|
+
setProgress({
|
|
71
|
+
archivists: progress.archivists,
|
|
72
|
+
witnesses: progress.witnesses,
|
|
73
|
+
});
|
|
74
|
+
setStatus(errors ? XyoReportStatus.Failed : XyoReportStatus.Succeeded);
|
|
75
|
+
setReportingErrors(errors);
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
onReportStart: () => {
|
|
79
|
+
if (mounted()) {
|
|
80
|
+
setProgress({ archivists: {}, witnesses: {} });
|
|
81
|
+
setStatus(XyoReportStatus.Started);
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
onWitnessReportEnd: (witness, error) => {
|
|
85
|
+
const witnesses = progress.witnesses ?? {};
|
|
86
|
+
witnesses[witness.config.schema] = {
|
|
87
|
+
status: error ? XyoReportStatus.Failed : XyoReportStatus.Succeeded,
|
|
88
|
+
witness,
|
|
89
|
+
};
|
|
90
|
+
if (mounted()) {
|
|
91
|
+
setProgress({
|
|
92
|
+
archivists: progress.archivists,
|
|
93
|
+
witnesses,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
onWitnessReportStart: (witness) => {
|
|
98
|
+
const witnesses = progress.witnesses ?? {};
|
|
99
|
+
witnesses[witness.config.schema] = {
|
|
100
|
+
status: XyoReportStatus.Started,
|
|
101
|
+
witness,
|
|
102
|
+
};
|
|
103
|
+
if (mounted()) {
|
|
104
|
+
setProgress({
|
|
105
|
+
archivists: progress.archivists,
|
|
106
|
+
witnesses,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
witnesses: witnesses.filter((witness) => !!witness),
|
|
111
|
+
});
|
|
112
|
+
setPanel(panel);
|
|
113
|
+
await delay(0);
|
|
114
|
+
},
|
|
115
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
116
|
+
[account, archive, archivists, witnesses]);
|
|
117
|
+
useEffect(() => {
|
|
118
|
+
setHistory(panel?.history);
|
|
119
|
+
}, [panel]);
|
|
120
|
+
return (_jsx(XyoPanelContext.Provider, { value: { history, panel, progress, provided: true, reportingErrors, status }, children: panel ? children : required ? null : children }));
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=Provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../src/contexts/Provider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { XyoArchivistApi } from '@xyo-network/api';
|
|
2
|
+
import { XyoBoundWitness, XyoWitness } from '@xyo-network/core';
|
|
3
|
+
import { XyoPanel } from '@xyo-network/panel';
|
|
4
|
+
export declare enum XyoReportStatus {
|
|
5
|
+
Idle = "idle",
|
|
6
|
+
Queued = "queued",
|
|
7
|
+
Started = "started",
|
|
8
|
+
Succeeded = "succeeded",
|
|
9
|
+
Failed = "failed"
|
|
10
|
+
}
|
|
11
|
+
export interface XyoWitnessReportProgress {
|
|
12
|
+
witness: XyoWitness;
|
|
13
|
+
status: XyoReportStatus;
|
|
14
|
+
}
|
|
15
|
+
export interface XyoArchivistApiReportProgress {
|
|
16
|
+
archivist: XyoArchivistApi;
|
|
17
|
+
status: XyoReportStatus;
|
|
18
|
+
}
|
|
19
|
+
export interface XyoPanelReportProgress {
|
|
20
|
+
witnesses?: Record<string, XyoWitnessReportProgress>;
|
|
21
|
+
archivists?: Record<string, XyoArchivistApiReportProgress>;
|
|
22
|
+
}
|
|
23
|
+
export interface XyoPanelContextState {
|
|
24
|
+
panel?: XyoPanel;
|
|
25
|
+
history?: XyoBoundWitness[];
|
|
26
|
+
progress?: XyoPanelReportProgress;
|
|
27
|
+
status?: XyoReportStatus;
|
|
28
|
+
reportingErrors?: Error[];
|
|
29
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export var XyoReportStatus;
|
|
2
|
+
(function (XyoReportStatus) {
|
|
3
|
+
XyoReportStatus["Idle"] = "idle";
|
|
4
|
+
XyoReportStatus["Queued"] = "queued";
|
|
5
|
+
XyoReportStatus["Started"] = "started";
|
|
6
|
+
XyoReportStatus["Succeeded"] = "succeeded";
|
|
7
|
+
XyoReportStatus["Failed"] = "failed";
|
|
8
|
+
})(XyoReportStatus || (XyoReportStatus = {}));
|
|
9
|
+
//# sourceMappingURL=State.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"State.js","sourceRoot":"","sources":["../../../src/contexts/State.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;IACnB,0CAAuB,CAAA;IACvB,oCAAiB,CAAA;AACnB,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const useXyoPanel: () => {
|
|
2
|
+
history: import("@xyo-network/core/dist/esm/BoundWitness/models/XyoBoundWitness").XyoBoundWitness[] | undefined;
|
|
3
|
+
panel: import("@xyo-network/panel").XyoPanel | undefined;
|
|
4
|
+
progress: import("./State").XyoPanelReportProgress | undefined;
|
|
5
|
+
reportingErrors: Error[] | undefined;
|
|
6
|
+
status: import("./State").XyoReportStatus | undefined;
|
|
7
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { useContextEx } from '@xyo-network/react-shared';
|
|
2
|
+
import { XyoPanelContext } from './Context';
|
|
3
|
+
export const useXyoPanel = () => {
|
|
4
|
+
const { panel, history, progress, reportingErrors, status } = useContextEx(XyoPanelContext, 'XyoPanel');
|
|
5
|
+
return { history, panel, progress, reportingErrors, status };
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=use.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use.js","sourceRoot":"","sources":["../../../src/contexts/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;IACvG,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,CAAA;AAC9D,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './contexts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xyo-network/react-panel",
|
|
3
|
+
"author": {
|
|
4
|
+
"email": "support@xyo.network",
|
|
5
|
+
"name": "XYO Development Team",
|
|
6
|
+
"url": "https://xyo.network"
|
|
7
|
+
},
|
|
8
|
+
"bugs": {
|
|
9
|
+
"email": "support@xyo.network",
|
|
10
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
|
|
11
|
+
},
|
|
12
|
+
"workspaces": [
|
|
13
|
+
"packages/*"
|
|
14
|
+
],
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@emotion/react": "^11.9.0",
|
|
17
|
+
"@emotion/styled": "^11.8.1",
|
|
18
|
+
"@mui/icons-material": "^5.8.0",
|
|
19
|
+
"@mui/lab": "^5.0.0-alpha.83",
|
|
20
|
+
"@mui/material": "^5.8.1",
|
|
21
|
+
"@xylabs/pixel": "^1.3.7",
|
|
22
|
+
"@xylabs/sdk-js": "^2.5.5",
|
|
23
|
+
"@xylabs/sdk-react": "^2.12.7",
|
|
24
|
+
"@xyo-network/api": "^2.20.33",
|
|
25
|
+
"@xyo-network/core": "^2.20.33",
|
|
26
|
+
"@xyo-network/network": "^2.20.33",
|
|
27
|
+
"@xyo-network/panel": "^2.20.33",
|
|
28
|
+
"@xyo-network/react-archive": "^2.23.7",
|
|
29
|
+
"@xyo-network/react-shared": "^2.23.7",
|
|
30
|
+
"@xyo-network/react-wallet": "^2.23.7",
|
|
31
|
+
"@xyo-network/systeminfo-witness": "^2.20.33",
|
|
32
|
+
"@xyo-network/utils": "^2.20.33",
|
|
33
|
+
"lodash": "^4.17.21",
|
|
34
|
+
"luxon": "^2.4.0",
|
|
35
|
+
"react": "^18.1.0",
|
|
36
|
+
"react-dom": "^18.1.0",
|
|
37
|
+
"react-icons": "^4.3.1",
|
|
38
|
+
"react-json-view": "^1.21.3",
|
|
39
|
+
"react-router-dom": "^6.3.0",
|
|
40
|
+
"rollbar": "^2.25.0",
|
|
41
|
+
"typedoc": "^0.22.15"
|
|
42
|
+
},
|
|
43
|
+
"description": "Common React library for all XYO projects that use React",
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@babel/core": "^7.18.0",
|
|
46
|
+
"@babel/preset-env": "^7.18.0",
|
|
47
|
+
"@storybook/addon-actions": "^6.5.4",
|
|
48
|
+
"@storybook/addon-docs": "^6.5.4",
|
|
49
|
+
"@storybook/addon-essentials": "^6.5.4",
|
|
50
|
+
"@storybook/addon-interactions": "^6.5.4",
|
|
51
|
+
"@storybook/addon-links": "^6.5.4",
|
|
52
|
+
"@storybook/addons": "^6.5.4",
|
|
53
|
+
"@storybook/api": "^6.5.4",
|
|
54
|
+
"@storybook/builder-webpack5": "^6.5.4",
|
|
55
|
+
"@storybook/components": "^6.5.4",
|
|
56
|
+
"@storybook/core-events": "^6.5.4",
|
|
57
|
+
"@storybook/manager-webpack5": "^6.5.4",
|
|
58
|
+
"@storybook/react": "^6.5.4",
|
|
59
|
+
"@storybook/testing-library": "^0.0.11",
|
|
60
|
+
"@storybook/theming": "^6.5.4",
|
|
61
|
+
"@types/lodash": "^4.14.182",
|
|
62
|
+
"@types/luxon": "^2.3.2",
|
|
63
|
+
"@xylabs/eslint-config-react": "^2.1.5",
|
|
64
|
+
"@xylabs/pixel": "^1.3.7",
|
|
65
|
+
"@xylabs/rollup-config": "^1.1.17",
|
|
66
|
+
"@xylabs/sdk-js": "^2.5.5",
|
|
67
|
+
"@xylabs/sdk-react": "^2.12.7",
|
|
68
|
+
"@xylabs/ts-scripts": "^1.0.66",
|
|
69
|
+
"@xylabs/tsconfig": "^1.0.13",
|
|
70
|
+
"assert": "^2.0.0",
|
|
71
|
+
"axios": "^0.27.2",
|
|
72
|
+
"storybook-dark-mode": "^1.1.0",
|
|
73
|
+
"typescript": "^4.6.4"
|
|
74
|
+
},
|
|
75
|
+
"browser": "dist/esm/index.js",
|
|
76
|
+
"docs": "dist/docs.json",
|
|
77
|
+
"exports": {
|
|
78
|
+
".": {
|
|
79
|
+
"node": {
|
|
80
|
+
"import": "./dist/esm/index.js",
|
|
81
|
+
"require": "./dist/cjs/index.js"
|
|
82
|
+
},
|
|
83
|
+
"browser": {
|
|
84
|
+
"import": "./dist/esm/index.js",
|
|
85
|
+
"require": "./dist/cjs/index.js"
|
|
86
|
+
},
|
|
87
|
+
"default": "./dist/esm/index.js"
|
|
88
|
+
},
|
|
89
|
+
"./dist/docs.json": {
|
|
90
|
+
"default": "./dist/docs.json"
|
|
91
|
+
},
|
|
92
|
+
"./package.json": "./package.json"
|
|
93
|
+
},
|
|
94
|
+
"main": "dist/cjs/index.js",
|
|
95
|
+
"module": "dist/esm/index.js",
|
|
96
|
+
"homepage": "https://xyo.network",
|
|
97
|
+
"keywords": [
|
|
98
|
+
"xyo",
|
|
99
|
+
"utility",
|
|
100
|
+
"typescript",
|
|
101
|
+
"react"
|
|
102
|
+
],
|
|
103
|
+
"license": "LGPL-3.0",
|
|
104
|
+
"peerDependencies": {
|
|
105
|
+
"axios": ">0.26",
|
|
106
|
+
"typedoc": "^0.22.13"
|
|
107
|
+
},
|
|
108
|
+
"peerDependenciesMeta": {
|
|
109
|
+
"typedoc": {
|
|
110
|
+
"optional": true
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"resolutions": {
|
|
114
|
+
"@storybook/react/webpack": "^5",
|
|
115
|
+
"bn.js": "^5.2.0",
|
|
116
|
+
"react": "^18.1.0",
|
|
117
|
+
"react-dom": "^18.1.0",
|
|
118
|
+
"webpack": "^5"
|
|
119
|
+
},
|
|
120
|
+
"publishConfig": {
|
|
121
|
+
"access": "public"
|
|
122
|
+
},
|
|
123
|
+
"repository": {
|
|
124
|
+
"type": "git",
|
|
125
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js.git"
|
|
126
|
+
},
|
|
127
|
+
"scripts": {
|
|
128
|
+
"deploy": "yarn deploy3",
|
|
129
|
+
"lint-pkg": "npmPkgJsonLint .",
|
|
130
|
+
"build": "yarn clean && tsc -p tsconfig.build.cjs.json && tsc -p tsconfig.build.esm.json && yarn gen:docs",
|
|
131
|
+
"gen:docs": "typedoc ./src/index.ts --json ./dist/docs.json --tsconfig ./tsconfig.json",
|
|
132
|
+
"license": "yarn license-checker --exclude \"MIT, ISC, Apache-2.0, BSD, BSD-2-Clause, CC-BY-4.0, Unlicense, CC-BY-3.0, CC0-1.0\""
|
|
133
|
+
},
|
|
134
|
+
"sideEffects": false,
|
|
135
|
+
"types": "dist/esm/index.d.ts",
|
|
136
|
+
"version": "2.23.7",
|
|
137
|
+
"packageManager": "yarn@3.1.1"
|
|
138
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { assertEx, delay } from '@xylabs/sdk-js'
|
|
2
|
+
import { useAsyncEffect, WithChildren } from '@xylabs/sdk-react'
|
|
3
|
+
import { XyoApiConfig, XyoArchivistApi } from '@xyo-network/api'
|
|
4
|
+
import { XyoBoundWitness, XyoPayload, XyoWitness } from '@xyo-network/core'
|
|
5
|
+
import { XyoPanel } from '@xyo-network/panel'
|
|
6
|
+
import { useArchive } from '@xyo-network/react-archive'
|
|
7
|
+
import { useAccount } from '@xyo-network/react-wallet'
|
|
8
|
+
import { XyoSystemInfoWitness } from '@xyo-network/systeminfo-witness'
|
|
9
|
+
import { useEffect, useState } from 'react'
|
|
10
|
+
|
|
11
|
+
import { XyoPanelContext } from './Context'
|
|
12
|
+
import { XyoPanelReportProgress, XyoReportStatus } from './State'
|
|
13
|
+
|
|
14
|
+
export interface XyoPanelProviderProps {
|
|
15
|
+
archivists?: XyoArchivistApi[]
|
|
16
|
+
inlinePayloads?: boolean
|
|
17
|
+
witnesses?: XyoWitness<XyoPayload>[]
|
|
18
|
+
required?: boolean
|
|
19
|
+
archive?: string
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const getDefaultArchivists = () => {
|
|
23
|
+
const archivistConfigs: XyoApiConfig[] = [
|
|
24
|
+
{
|
|
25
|
+
apiDomain: process.env.API_DOMAIN || 'https://api.archivist.xyo.network',
|
|
26
|
+
},
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
return archivistConfigs.map((config) => {
|
|
30
|
+
return new XyoArchivistApi(config)
|
|
31
|
+
})
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export const XyoPanelProvider: React.FC<WithChildren<XyoPanelProviderProps>> = ({
|
|
35
|
+
inlinePayloads = false,
|
|
36
|
+
required = false,
|
|
37
|
+
archivists = getDefaultArchivists(),
|
|
38
|
+
witnesses = [new XyoSystemInfoWitness()],
|
|
39
|
+
children,
|
|
40
|
+
}) => {
|
|
41
|
+
const { archive } = useArchive()
|
|
42
|
+
const [panel, setPanel] = useState<XyoPanel>()
|
|
43
|
+
const [history, setHistory] = useState<XyoBoundWitness[]>()
|
|
44
|
+
const [progress, setProgress] = useState<XyoPanelReportProgress>({})
|
|
45
|
+
const [status, setStatus] = useState(XyoReportStatus.Idle)
|
|
46
|
+
const [reportingErrors, setReportingErrors] = useState<Error[]>()
|
|
47
|
+
|
|
48
|
+
const { account } = useAccount()
|
|
49
|
+
|
|
50
|
+
useAsyncEffect(
|
|
51
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
52
|
+
async (mounted) => {
|
|
53
|
+
const panel = new XyoPanel({
|
|
54
|
+
account,
|
|
55
|
+
archive,
|
|
56
|
+
archivists,
|
|
57
|
+
inlinePayloads,
|
|
58
|
+
onArchivistSendEnd: (archivist: XyoArchivistApi, error?: Error) => {
|
|
59
|
+
const archivists = progress.archivists ?? {}
|
|
60
|
+
archivists[archivist.config.apiDomain] = {
|
|
61
|
+
archivist,
|
|
62
|
+
status: error ? XyoReportStatus.Failed : XyoReportStatus.Succeeded,
|
|
63
|
+
}
|
|
64
|
+
if (mounted()) {
|
|
65
|
+
setProgress({ archivists, witnesses: progress.witnesses })
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
onArchivistSendStart: (archivist: XyoArchivistApi) => {
|
|
69
|
+
const archivists = progress.archivists ?? {}
|
|
70
|
+
archivists[archivist.config.apiDomain] = {
|
|
71
|
+
archivist,
|
|
72
|
+
status: XyoReportStatus.Started,
|
|
73
|
+
}
|
|
74
|
+
if (mounted()) {
|
|
75
|
+
setProgress({ archivists, witnesses: progress.witnesses })
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
onHistoryAdd: () => {
|
|
79
|
+
if (mounted()) {
|
|
80
|
+
setHistory(assertEx(panel).history.map((item) => item))
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
onHistoryRemove: () => {
|
|
84
|
+
if (mounted()) {
|
|
85
|
+
setHistory(assertEx(panel).history.map((item) => item))
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
onReportEnd: (_, errors?: Error[]) => {
|
|
89
|
+
if (mounted()) {
|
|
90
|
+
setProgress({
|
|
91
|
+
archivists: progress.archivists,
|
|
92
|
+
witnesses: progress.witnesses,
|
|
93
|
+
})
|
|
94
|
+
setStatus(errors ? XyoReportStatus.Failed : XyoReportStatus.Succeeded)
|
|
95
|
+
setReportingErrors(errors)
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
onReportStart: () => {
|
|
99
|
+
if (mounted()) {
|
|
100
|
+
setProgress({ archivists: {}, witnesses: {} })
|
|
101
|
+
setStatus(XyoReportStatus.Started)
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
onWitnessReportEnd: (witness: XyoWitness, error?: Error) => {
|
|
105
|
+
const witnesses = progress.witnesses ?? {}
|
|
106
|
+
witnesses[witness.config.schema] = {
|
|
107
|
+
status: error ? XyoReportStatus.Failed : XyoReportStatus.Succeeded,
|
|
108
|
+
witness,
|
|
109
|
+
}
|
|
110
|
+
if (mounted()) {
|
|
111
|
+
setProgress({
|
|
112
|
+
archivists: progress.archivists,
|
|
113
|
+
witnesses,
|
|
114
|
+
})
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
onWitnessReportStart: (witness: XyoWitness) => {
|
|
118
|
+
const witnesses = progress.witnesses ?? {}
|
|
119
|
+
witnesses[witness.config.schema] = {
|
|
120
|
+
status: XyoReportStatus.Started,
|
|
121
|
+
witness,
|
|
122
|
+
}
|
|
123
|
+
if (mounted()) {
|
|
124
|
+
setProgress({
|
|
125
|
+
archivists: progress.archivists,
|
|
126
|
+
witnesses,
|
|
127
|
+
})
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
witnesses: witnesses.filter((witness) => !!witness),
|
|
131
|
+
})
|
|
132
|
+
setPanel(panel)
|
|
133
|
+
await delay(0)
|
|
134
|
+
},
|
|
135
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
136
|
+
[account, archive, archivists, witnesses]
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
useEffect(() => {
|
|
140
|
+
setHistory(panel?.history)
|
|
141
|
+
}, [panel])
|
|
142
|
+
|
|
143
|
+
return (
|
|
144
|
+
<XyoPanelContext.Provider value={{ history, panel, progress, provided: true, reportingErrors, status }}>
|
|
145
|
+
{panel ? children : required ? null : children}
|
|
146
|
+
</XyoPanelContext.Provider>
|
|
147
|
+
)
|
|
148
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { XyoArchivistApi } from '@xyo-network/api'
|
|
2
|
+
import { XyoBoundWitness, XyoWitness } from '@xyo-network/core'
|
|
3
|
+
import { XyoPanel } from '@xyo-network/panel'
|
|
4
|
+
|
|
5
|
+
export enum XyoReportStatus {
|
|
6
|
+
Idle = 'idle',
|
|
7
|
+
Queued = 'queued',
|
|
8
|
+
Started = 'started',
|
|
9
|
+
Succeeded = 'succeeded',
|
|
10
|
+
Failed = 'failed',
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface XyoWitnessReportProgress {
|
|
14
|
+
witness: XyoWitness
|
|
15
|
+
status: XyoReportStatus
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface XyoArchivistApiReportProgress {
|
|
19
|
+
archivist: XyoArchivistApi
|
|
20
|
+
status: XyoReportStatus
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface XyoPanelReportProgress {
|
|
24
|
+
witnesses?: Record<string, XyoWitnessReportProgress>
|
|
25
|
+
archivists?: Record<string, XyoArchivistApiReportProgress>
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface XyoPanelContextState {
|
|
29
|
+
panel?: XyoPanel
|
|
30
|
+
history?: XyoBoundWitness[]
|
|
31
|
+
progress?: XyoPanelReportProgress
|
|
32
|
+
status?: XyoReportStatus
|
|
33
|
+
reportingErrors?: Error[]
|
|
34
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { useContextEx } from '@xyo-network/react-shared'
|
|
2
|
+
|
|
3
|
+
import { XyoPanelContext } from './Context'
|
|
4
|
+
|
|
5
|
+
export const useXyoPanel = () => {
|
|
6
|
+
const { panel, history, progress, reportingErrors, status } = useContextEx(XyoPanelContext, 'XyoPanel')
|
|
7
|
+
return { history, panel, progress, reportingErrors, status }
|
|
8
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './contexts'
|