@xyo-network/react-sentinel 2.64.9 → 2.65.0

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 (95) hide show
  1. package/dist/browser/contexts/use.d.cts +5 -28
  2. package/dist/browser/contexts/use.d.cts.map +1 -1
  3. package/dist/browser/contexts/use.d.mts +5 -28
  4. package/dist/browser/contexts/use.d.mts.map +1 -1
  5. package/dist/browser/contexts/use.d.ts +5 -28
  6. package/dist/browser/contexts/use.d.ts.map +1 -1
  7. package/dist/browser/index.cjs +1 -1
  8. package/dist/browser/index.cjs.map +1 -1
  9. package/dist/browser/index.js +1 -1
  10. package/dist/browser/index.js.map +1 -1
  11. package/dist/node/contexts/use.d.cts +5 -28
  12. package/dist/node/contexts/use.d.cts.map +1 -1
  13. package/dist/node/contexts/use.d.mts +5 -28
  14. package/dist/node/contexts/use.d.mts.map +1 -1
  15. package/dist/node/contexts/use.d.ts +5 -28
  16. package/dist/node/contexts/use.d.ts.map +1 -1
  17. package/dist/node/index.cjs +1 -1
  18. package/dist/node/index.cjs.map +1 -1
  19. package/dist/node/index.js +1 -1
  20. package/dist/node/index.js.map +1 -1
  21. package/package.json +15 -15
  22. package/src/contexts/Provider.tsx +1 -1
  23. package/dist/browser/contexts/Context.cjs +0 -28
  24. package/dist/browser/contexts/Context.cjs.map +0 -1
  25. package/dist/browser/contexts/Context.js +0 -7
  26. package/dist/browser/contexts/Context.js.map +0 -1
  27. package/dist/browser/contexts/Provider.cjs +0 -124
  28. package/dist/browser/contexts/Provider.cjs.map +0 -1
  29. package/dist/browser/contexts/Provider.js +0 -103
  30. package/dist/browser/contexts/Provider.js.map +0 -1
  31. package/dist/browser/contexts/State.cjs +0 -34
  32. package/dist/browser/contexts/State.cjs.map +0 -1
  33. package/dist/browser/contexts/State.js +0 -13
  34. package/dist/browser/contexts/State.js.map +0 -1
  35. package/dist/browser/contexts/index.cjs +0 -146
  36. package/dist/browser/contexts/index.cjs.map +0 -1
  37. package/dist/browser/contexts/index.js +0 -123
  38. package/dist/browser/contexts/index.js.map +0 -1
  39. package/dist/browser/contexts/use.cjs +0 -37
  40. package/dist/browser/contexts/use.cjs.map +0 -1
  41. package/dist/browser/contexts/use.js +0 -16
  42. package/dist/browser/contexts/use.js.map +0 -1
  43. package/dist/browser/hooks/index.cjs +0 -64
  44. package/dist/browser/hooks/index.cjs.map +0 -1
  45. package/dist/browser/hooks/index.js +0 -41
  46. package/dist/browser/hooks/index.js.map +0 -1
  47. package/dist/browser/hooks/node/index.cjs +0 -64
  48. package/dist/browser/hooks/node/index.cjs.map +0 -1
  49. package/dist/browser/hooks/node/index.js +0 -41
  50. package/dist/browser/hooks/node/index.js.map +0 -1
  51. package/dist/browser/hooks/node/useSentinelFromNode.cjs +0 -38
  52. package/dist/browser/hooks/node/useSentinelFromNode.cjs.map +0 -1
  53. package/dist/browser/hooks/node/useSentinelFromNode.js +0 -17
  54. package/dist/browser/hooks/node/useSentinelFromNode.js.map +0 -1
  55. package/dist/browser/hooks/node/useSentinelsFromNode.cjs +0 -47
  56. package/dist/browser/hooks/node/useSentinelsFromNode.cjs.map +0 -1
  57. package/dist/browser/hooks/node/useSentinelsFromNode.js +0 -26
  58. package/dist/browser/hooks/node/useSentinelsFromNode.js.map +0 -1
  59. package/dist/docs.json +0 -2133
  60. package/dist/node/contexts/Context.cjs +0 -32
  61. package/dist/node/contexts/Context.cjs.map +0 -1
  62. package/dist/node/contexts/Context.js +0 -7
  63. package/dist/node/contexts/Context.js.map +0 -1
  64. package/dist/node/contexts/Provider.cjs +0 -129
  65. package/dist/node/contexts/Provider.cjs.map +0 -1
  66. package/dist/node/contexts/Provider.js +0 -104
  67. package/dist/node/contexts/Provider.js.map +0 -1
  68. package/dist/node/contexts/State.cjs +0 -38
  69. package/dist/node/contexts/State.cjs.map +0 -1
  70. package/dist/node/contexts/State.js +0 -13
  71. package/dist/node/contexts/State.js.map +0 -1
  72. package/dist/node/contexts/index.cjs +0 -154
  73. package/dist/node/contexts/index.cjs.map +0 -1
  74. package/dist/node/contexts/index.js +0 -124
  75. package/dist/node/contexts/index.js.map +0 -1
  76. package/dist/node/contexts/use.cjs +0 -41
  77. package/dist/node/contexts/use.cjs.map +0 -1
  78. package/dist/node/contexts/use.js +0 -16
  79. package/dist/node/contexts/use.js.map +0 -1
  80. package/dist/node/hooks/index.cjs +0 -70
  81. package/dist/node/hooks/index.cjs.map +0 -1
  82. package/dist/node/hooks/index.js +0 -42
  83. package/dist/node/hooks/index.js.map +0 -1
  84. package/dist/node/hooks/node/index.cjs +0 -70
  85. package/dist/node/hooks/node/index.cjs.map +0 -1
  86. package/dist/node/hooks/node/index.js +0 -42
  87. package/dist/node/hooks/node/index.js.map +0 -1
  88. package/dist/node/hooks/node/useSentinelFromNode.cjs +0 -43
  89. package/dist/node/hooks/node/useSentinelFromNode.cjs.map +0 -1
  90. package/dist/node/hooks/node/useSentinelFromNode.js +0 -18
  91. package/dist/node/hooks/node/useSentinelFromNode.js.map +0 -1
  92. package/dist/node/hooks/node/useSentinelsFromNode.cjs +0 -51
  93. package/dist/node/hooks/node/useSentinelsFromNode.cjs.map +0 -1
  94. package/dist/node/hooks/node/useSentinelsFromNode.js +0 -26
  95. package/dist/node/hooks/node/useSentinelsFromNode.js.map +0 -1
@@ -1,32 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/contexts/Context.ts
21
- var Context_exports = {};
22
- __export(Context_exports, {
23
- SentinelContext: () => SentinelContext
24
- });
25
- module.exports = __toCommonJS(Context_exports);
26
- var import_react_shared = require("@xyo-network/react-shared");
27
- var SentinelContext = (0, import_react_shared.createContextEx)();
28
- // Annotate the CommonJS export names for ESM import in node:
29
- 0 && (module.exports = {
30
- SentinelContext
31
- });
32
- //# sourceMappingURL=Context.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/contexts/Context.ts"],"sourcesContent":["import { createContextEx } from '@xyo-network/react-shared'\n\nimport { SentinelContextState } from './State'\n\nexport const SentinelContext = createContextEx<SentinelContextState>()\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAgC;AAIzB,IAAM,sBAAkB,qCAAsC;","names":[]}
@@ -1,7 +0,0 @@
1
- // src/contexts/Context.ts
2
- import { createContextEx } from "@xyo-network/react-shared";
3
- var SentinelContext = createContextEx();
4
- export {
5
- SentinelContext
6
- };
7
- //# sourceMappingURL=Context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/contexts/Context.ts"],"sourcesContent":["import { createContextEx } from '@xyo-network/react-shared'\n\nimport { SentinelContextState } from './State'\n\nexport const SentinelContext = createContextEx<SentinelContextState>()\n"],"mappings":";AAAA,SAAS,uBAAuB;AAIzB,IAAM,kBAAkB,gBAAsC;","names":[]}
@@ -1,129 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/contexts/Provider.tsx
21
- var Provider_exports = {};
22
- __export(Provider_exports, {
23
- SentinelProvider: () => SentinelProvider
24
- });
25
- module.exports = __toCommonJS(Provider_exports);
26
- var import_react_async_effect = require("@xylabs/react-async-effect");
27
- var import_react_witness = require("@xyo-network/react-witness");
28
- var import_sentinel = require("@xyo-network/sentinel");
29
- var import_react = require("react");
30
-
31
- // src/contexts/Context.ts
32
- var import_react_shared = require("@xyo-network/react-shared");
33
- var SentinelContext = (0, import_react_shared.createContextEx)();
34
-
35
- // src/contexts/Provider.tsx
36
- var import_jsx_runtime = require("react/jsx-runtime");
37
- var SentinelProvider = ({ account, archivist, children, filter, name, required = false }) => {
38
- const [sentinel, setSentinel] = (0, import_react.useState)();
39
- const [history, setHistory] = (0, import_react.useState)();
40
- const [progress, setProgress] = (0, import_react.useState)({});
41
- const [status, setStatus] = (0, import_react.useState)("idle" /* Idle */);
42
- const [reportingErrors, setReportingErrors] = (0, import_react.useState)();
43
- const [witnesses] = (0, import_react_witness.useWitnessesFromNode)(filter);
44
- (0, import_react_async_effect.useAsyncEffect)(
45
- // eslint-disable-next-line react-hooks/exhaustive-deps
46
- async (mounted) => {
47
- const sentinel2 = await import_sentinel.MemorySentinel.create({
48
- account,
49
- config: {
50
- archivists: archivist ? [archivist] : void 0,
51
- name,
52
- schema: import_sentinel.SentinelConfigSchema,
53
- witnesses: witnesses == null ? void 0 : witnesses.map((module2) => module2.address)
54
- }
55
- });
56
- const offCallbacks = [];
57
- offCallbacks.push(
58
- sentinel2.on("reportEnd", ({ module: module2, outPayloads }) => {
59
- var _a;
60
- if (mounted()) {
61
- setProgress({
62
- archivists: progress.archivists,
63
- witnesses: progress.witnesses
64
- });
65
- setStatus((outPayloads == null ? void 0 : outPayloads.length) ? "succeeded" /* Succeeded */ : "failed" /* Failed */);
66
- setReportingErrors([Error(`Witness failed [${((_a = module2 == null ? void 0 : module2.config) == null ? void 0 : _a.name) ?? module2.address}]`)]);
67
- }
68
- })
69
- );
70
- offCallbacks.push(
71
- sentinel2.on("reportStart", () => {
72
- if (mounted()) {
73
- setProgress({ archivists: {}, witnesses: {} });
74
- setStatus("started" /* Started */);
75
- }
76
- })
77
- );
78
- witnesses == null ? void 0 : witnesses.forEach((witness) => {
79
- offCallbacks.push(
80
- witness.on("observeEnd", ({ module: module2, outPayloads }) => {
81
- const witnesses2 = progress.witnesses ?? {};
82
- witnesses2[witness.address] = {
83
- status: (outPayloads == null ? void 0 : outPayloads.length) ? "succeeded" /* Succeeded */ : "failed" /* Failed */,
84
- witness: module2
85
- };
86
- if (mounted()) {
87
- setProgress({
88
- archivists: progress.archivists,
89
- witnesses: witnesses2
90
- });
91
- }
92
- })
93
- );
94
- offCallbacks.push(
95
- witness.on("observeStart", ({ module: module2 }) => {
96
- const witnesses2 = progress.witnesses ?? {};
97
- witnesses2[witness.address] = {
98
- status: "started" /* Started */,
99
- witness: module2
100
- };
101
- if (mounted()) {
102
- setProgress({
103
- archivists: progress.archivists,
104
- witnesses: witnesses2
105
- });
106
- }
107
- })
108
- );
109
- });
110
- setSentinel(sentinel2);
111
- return () => {
112
- offCallbacks.forEach((callback) => {
113
- callback();
114
- });
115
- };
116
- },
117
- // eslint-disable-next-line react-hooks/exhaustive-deps
118
- [account, archivist, witnesses]
119
- );
120
- (0, import_react.useEffect)(() => {
121
- setHistory(sentinel == null ? void 0 : sentinel.history);
122
- }, [sentinel]);
123
- return !required || sentinel ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SentinelContext.Provider, { value: { history, progress, provided: true, reportingErrors, sentinel, status }, children }) : null;
124
- };
125
- // Annotate the CommonJS export names for ESM import in node:
126
- 0 && (module.exports = {
127
- SentinelProvider
128
- });
129
- //# sourceMappingURL=Provider.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/contexts/Provider.tsx","../../../src/contexts/Context.ts"],"sourcesContent":["import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleFilter } from '@xyo-network/module'\nimport { useWitnessesFromNode } from '@xyo-network/react-witness'\nimport { MemorySentinel, SentinelConfig, SentinelConfigSchema } from '@xyo-network/sentinel'\nimport { WitnessInstance } from '@xyo-network/witness'\nimport { useEffect, useState } from 'react'\n\nimport { SentinelContext } from './Context'\nimport { SentinelReportProgress, SentinelReportStatus } from './State'\n\nexport interface SentinelProviderProps {\n /** Account used by the sentinel for signing */\n account: AccountInstance\n /** @deprecated - sentinel no longer uses archive but relies on an archivist */\n archive?: string\n archivist?: string\n filter?: ModuleFilter\n name?: string\n required?: boolean\n witnesses?: WitnessInstance[]\n}\n\nexport const SentinelProvider: React.FC<WithChildren<SentinelProviderProps>> = ({ account, archivist, children, filter, name, required = false }) => {\n const [sentinel, setSentinel] = useState<MemorySentinel>()\n const [history, setHistory] = useState<BoundWitness[]>()\n const [progress, setProgress] = useState<SentinelReportProgress>({})\n const [status, setStatus] = useState(SentinelReportStatus.Idle)\n const [reportingErrors, setReportingErrors] = useState<Error[]>()\n const [witnesses] = useWitnessesFromNode(filter)\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n const sentinel = await MemorySentinel.create({\n account,\n config: {\n archivists: archivist ? [archivist] : undefined,\n name,\n\n schema: SentinelConfigSchema,\n witnesses: witnesses?.map((module) => module.address),\n } as SentinelConfig,\n })\n const offCallbacks: (() => void)[] = []\n offCallbacks.push(\n sentinel.on('reportEnd', ({ module, outPayloads }) => {\n if (mounted()) {\n setProgress({\n archivists: progress.archivists,\n witnesses: progress.witnesses,\n })\n setStatus(outPayloads?.length ? SentinelReportStatus.Succeeded : SentinelReportStatus.Failed)\n setReportingErrors([Error(`Witness failed [${module?.config?.name ?? module.address}]`)])\n }\n }),\n )\n offCallbacks.push(\n sentinel.on('reportStart', () => {\n if (mounted()) {\n setProgress({ archivists: {}, witnesses: {} })\n setStatus(SentinelReportStatus.Started)\n }\n }),\n )\n witnesses?.forEach((witness) => {\n offCallbacks.push(\n witness.on('observeEnd', ({ module, outPayloads }) => {\n const witnesses = progress.witnesses ?? {}\n witnesses[witness.address] = {\n status: outPayloads?.length ? SentinelReportStatus.Succeeded : SentinelReportStatus.Failed,\n witness: module,\n }\n if (mounted()) {\n setProgress({\n archivists: progress.archivists,\n witnesses,\n })\n }\n }),\n )\n offCallbacks.push(\n witness.on('observeStart', ({ module }) => {\n const witnesses = progress.witnesses ?? {}\n witnesses[witness.address] = {\n status: SentinelReportStatus.Started,\n witness: module,\n }\n if (mounted()) {\n setProgress({\n archivists: progress.archivists,\n witnesses,\n })\n }\n }),\n )\n })\n setSentinel(sentinel as MemorySentinel)\n return () => {\n //unsubscribe from events\n offCallbacks.forEach((callback) => {\n callback()\n })\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [account, archivist, witnesses],\n )\n\n useEffect(() => {\n setHistory(sentinel?.history as BoundWitness[])\n }, [sentinel])\n\n return !required || sentinel ? (\n <SentinelContext.Provider value={{ history, progress, provided: true, reportingErrors, sentinel, status }}>{children}</SentinelContext.Provider>\n ) : null\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { SentinelContextState } from './State'\n\nexport const SentinelContext = createContextEx<SentinelContextState>()\n"],"mappings":"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","names":["sentinel","module","witnesses"]}
@@ -1,104 +0,0 @@
1
- // src/contexts/Provider.tsx
2
- import { useAsyncEffect } from "@xylabs/react-async-effect";
3
- import { useWitnessesFromNode } from "@xyo-network/react-witness";
4
- import { MemorySentinel, SentinelConfigSchema } from "@xyo-network/sentinel";
5
- import { useEffect, useState } from "react";
6
-
7
- // src/contexts/Context.ts
8
- import { createContextEx } from "@xyo-network/react-shared";
9
- var SentinelContext = createContextEx();
10
-
11
- // src/contexts/Provider.tsx
12
- import { jsx } from "react/jsx-runtime";
13
- var SentinelProvider = ({ account, archivist, children, filter, name, required = false }) => {
14
- const [sentinel, setSentinel] = useState();
15
- const [history, setHistory] = useState();
16
- const [progress, setProgress] = useState({});
17
- const [status, setStatus] = useState("idle" /* Idle */);
18
- const [reportingErrors, setReportingErrors] = useState();
19
- const [witnesses] = useWitnessesFromNode(filter);
20
- useAsyncEffect(
21
- // eslint-disable-next-line react-hooks/exhaustive-deps
22
- async (mounted) => {
23
- const sentinel2 = await MemorySentinel.create({
24
- account,
25
- config: {
26
- archivists: archivist ? [archivist] : void 0,
27
- name,
28
- schema: SentinelConfigSchema,
29
- witnesses: witnesses == null ? void 0 : witnesses.map((module) => module.address)
30
- }
31
- });
32
- const offCallbacks = [];
33
- offCallbacks.push(
34
- sentinel2.on("reportEnd", ({ module, outPayloads }) => {
35
- var _a;
36
- if (mounted()) {
37
- setProgress({
38
- archivists: progress.archivists,
39
- witnesses: progress.witnesses
40
- });
41
- setStatus((outPayloads == null ? void 0 : outPayloads.length) ? "succeeded" /* Succeeded */ : "failed" /* Failed */);
42
- setReportingErrors([Error(`Witness failed [${((_a = module == null ? void 0 : module.config) == null ? void 0 : _a.name) ?? module.address}]`)]);
43
- }
44
- })
45
- );
46
- offCallbacks.push(
47
- sentinel2.on("reportStart", () => {
48
- if (mounted()) {
49
- setProgress({ archivists: {}, witnesses: {} });
50
- setStatus("started" /* Started */);
51
- }
52
- })
53
- );
54
- witnesses == null ? void 0 : witnesses.forEach((witness) => {
55
- offCallbacks.push(
56
- witness.on("observeEnd", ({ module, outPayloads }) => {
57
- const witnesses2 = progress.witnesses ?? {};
58
- witnesses2[witness.address] = {
59
- status: (outPayloads == null ? void 0 : outPayloads.length) ? "succeeded" /* Succeeded */ : "failed" /* Failed */,
60
- witness: module
61
- };
62
- if (mounted()) {
63
- setProgress({
64
- archivists: progress.archivists,
65
- witnesses: witnesses2
66
- });
67
- }
68
- })
69
- );
70
- offCallbacks.push(
71
- witness.on("observeStart", ({ module }) => {
72
- const witnesses2 = progress.witnesses ?? {};
73
- witnesses2[witness.address] = {
74
- status: "started" /* Started */,
75
- witness: module
76
- };
77
- if (mounted()) {
78
- setProgress({
79
- archivists: progress.archivists,
80
- witnesses: witnesses2
81
- });
82
- }
83
- })
84
- );
85
- });
86
- setSentinel(sentinel2);
87
- return () => {
88
- offCallbacks.forEach((callback) => {
89
- callback();
90
- });
91
- };
92
- },
93
- // eslint-disable-next-line react-hooks/exhaustive-deps
94
- [account, archivist, witnesses]
95
- );
96
- useEffect(() => {
97
- setHistory(sentinel == null ? void 0 : sentinel.history);
98
- }, [sentinel]);
99
- return !required || sentinel ? /* @__PURE__ */ jsx(SentinelContext.Provider, { value: { history, progress, provided: true, reportingErrors, sentinel, status }, children }) : null;
100
- };
101
- export {
102
- SentinelProvider
103
- };
104
- //# sourceMappingURL=Provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/contexts/Provider.tsx","../../../src/contexts/Context.ts"],"sourcesContent":["import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleFilter } from '@xyo-network/module'\nimport { useWitnessesFromNode } from '@xyo-network/react-witness'\nimport { MemorySentinel, SentinelConfig, SentinelConfigSchema } from '@xyo-network/sentinel'\nimport { WitnessInstance } from '@xyo-network/witness'\nimport { useEffect, useState } from 'react'\n\nimport { SentinelContext } from './Context'\nimport { SentinelReportProgress, SentinelReportStatus } from './State'\n\nexport interface SentinelProviderProps {\n /** Account used by the sentinel for signing */\n account: AccountInstance\n /** @deprecated - sentinel no longer uses archive but relies on an archivist */\n archive?: string\n archivist?: string\n filter?: ModuleFilter\n name?: string\n required?: boolean\n witnesses?: WitnessInstance[]\n}\n\nexport const SentinelProvider: React.FC<WithChildren<SentinelProviderProps>> = ({ account, archivist, children, filter, name, required = false }) => {\n const [sentinel, setSentinel] = useState<MemorySentinel>()\n const [history, setHistory] = useState<BoundWitness[]>()\n const [progress, setProgress] = useState<SentinelReportProgress>({})\n const [status, setStatus] = useState(SentinelReportStatus.Idle)\n const [reportingErrors, setReportingErrors] = useState<Error[]>()\n const [witnesses] = useWitnessesFromNode(filter)\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n const sentinel = await MemorySentinel.create({\n account,\n config: {\n archivists: archivist ? [archivist] : undefined,\n name,\n\n schema: SentinelConfigSchema,\n witnesses: witnesses?.map((module) => module.address),\n } as SentinelConfig,\n })\n const offCallbacks: (() => void)[] = []\n offCallbacks.push(\n sentinel.on('reportEnd', ({ module, outPayloads }) => {\n if (mounted()) {\n setProgress({\n archivists: progress.archivists,\n witnesses: progress.witnesses,\n })\n setStatus(outPayloads?.length ? SentinelReportStatus.Succeeded : SentinelReportStatus.Failed)\n setReportingErrors([Error(`Witness failed [${module?.config?.name ?? module.address}]`)])\n }\n }),\n )\n offCallbacks.push(\n sentinel.on('reportStart', () => {\n if (mounted()) {\n setProgress({ archivists: {}, witnesses: {} })\n setStatus(SentinelReportStatus.Started)\n }\n }),\n )\n witnesses?.forEach((witness) => {\n offCallbacks.push(\n witness.on('observeEnd', ({ module, outPayloads }) => {\n const witnesses = progress.witnesses ?? {}\n witnesses[witness.address] = {\n status: outPayloads?.length ? SentinelReportStatus.Succeeded : SentinelReportStatus.Failed,\n witness: module,\n }\n if (mounted()) {\n setProgress({\n archivists: progress.archivists,\n witnesses,\n })\n }\n }),\n )\n offCallbacks.push(\n witness.on('observeStart', ({ module }) => {\n const witnesses = progress.witnesses ?? {}\n witnesses[witness.address] = {\n status: SentinelReportStatus.Started,\n witness: module,\n }\n if (mounted()) {\n setProgress({\n archivists: progress.archivists,\n witnesses,\n })\n }\n }),\n )\n })\n setSentinel(sentinel as MemorySentinel)\n return () => {\n //unsubscribe from events\n offCallbacks.forEach((callback) => {\n callback()\n })\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [account, archivist, witnesses],\n )\n\n useEffect(() => {\n setHistory(sentinel?.history as BoundWitness[])\n }, [sentinel])\n\n return !required || sentinel ? (\n <SentinelContext.Provider value={{ history, progress, provided: true, reportingErrors, sentinel, status }}>{children}</SentinelContext.Provider>\n ) : null\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { SentinelContextState } from './State'\n\nexport const SentinelContext = createContextEx<SentinelContextState>()\n"],"mappings":"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","names":["sentinel","witnesses"]}
@@ -1,38 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/contexts/State.ts
21
- var State_exports = {};
22
- __export(State_exports, {
23
- SentinelReportStatus: () => SentinelReportStatus
24
- });
25
- module.exports = __toCommonJS(State_exports);
26
- var SentinelReportStatus = /* @__PURE__ */ ((SentinelReportStatus2) => {
27
- SentinelReportStatus2["Idle"] = "idle";
28
- SentinelReportStatus2["Queued"] = "queued";
29
- SentinelReportStatus2["Started"] = "started";
30
- SentinelReportStatus2["Succeeded"] = "succeeded";
31
- SentinelReportStatus2["Failed"] = "failed";
32
- return SentinelReportStatus2;
33
- })(SentinelReportStatus || {});
34
- // Annotate the CommonJS export names for ESM import in node:
35
- 0 && (module.exports = {
36
- SentinelReportStatus
37
- });
38
- //# sourceMappingURL=State.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/contexts/State.ts"],"sourcesContent":["import { ArchivistModule } from '@xyo-network/archivist'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { SentinelModule } from '@xyo-network/sentinel'\nimport { WitnessModule } from '@xyo-network/witness'\n\nexport enum SentinelReportStatus {\n Idle = 'idle',\n Queued = 'queued',\n Started = 'started',\n Succeeded = 'succeeded',\n Failed = 'failed',\n}\n\nexport interface SentinelWitnessReportProgress {\n status: SentinelReportStatus\n witness: WitnessModule\n}\n\nexport interface SentinelArchivistApiReportProgress {\n archivist: ArchivistModule\n status: SentinelReportStatus\n}\n\nexport interface SentinelReportProgress {\n archivists?: Record<string, SentinelArchivistApiReportProgress>\n witnesses?: Record<string, SentinelWitnessReportProgress>\n}\n\nexport interface SentinelContextState {\n history?: BoundWitness[]\n progress?: SentinelReportProgress\n reportingErrors?: Error[]\n sentinel?: SentinelModule\n status?: SentinelReportStatus\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,IAAK,uBAAL,kBAAKA,0BAAL;AACL,EAAAA,sBAAA,UAAO;AACP,EAAAA,sBAAA,YAAS;AACT,EAAAA,sBAAA,aAAU;AACV,EAAAA,sBAAA,eAAY;AACZ,EAAAA,sBAAA,YAAS;AALC,SAAAA;AAAA,GAAA;","names":["SentinelReportStatus"]}
@@ -1,13 +0,0 @@
1
- // src/contexts/State.ts
2
- var SentinelReportStatus = /* @__PURE__ */ ((SentinelReportStatus2) => {
3
- SentinelReportStatus2["Idle"] = "idle";
4
- SentinelReportStatus2["Queued"] = "queued";
5
- SentinelReportStatus2["Started"] = "started";
6
- SentinelReportStatus2["Succeeded"] = "succeeded";
7
- SentinelReportStatus2["Failed"] = "failed";
8
- return SentinelReportStatus2;
9
- })(SentinelReportStatus || {});
10
- export {
11
- SentinelReportStatus
12
- };
13
- //# sourceMappingURL=State.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/contexts/State.ts"],"sourcesContent":["import { ArchivistModule } from '@xyo-network/archivist'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { SentinelModule } from '@xyo-network/sentinel'\nimport { WitnessModule } from '@xyo-network/witness'\n\nexport enum SentinelReportStatus {\n Idle = 'idle',\n Queued = 'queued',\n Started = 'started',\n Succeeded = 'succeeded',\n Failed = 'failed',\n}\n\nexport interface SentinelWitnessReportProgress {\n status: SentinelReportStatus\n witness: WitnessModule\n}\n\nexport interface SentinelArchivistApiReportProgress {\n archivist: ArchivistModule\n status: SentinelReportStatus\n}\n\nexport interface SentinelReportProgress {\n archivists?: Record<string, SentinelArchivistApiReportProgress>\n witnesses?: Record<string, SentinelWitnessReportProgress>\n}\n\nexport interface SentinelContextState {\n history?: BoundWitness[]\n progress?: SentinelReportProgress\n reportingErrors?: Error[]\n sentinel?: SentinelModule\n status?: SentinelReportStatus\n}\n"],"mappings":";AAKO,IAAK,uBAAL,kBAAKA,0BAAL;AACL,EAAAA,sBAAA,UAAO;AACP,EAAAA,sBAAA,YAAS;AACT,EAAAA,sBAAA,aAAU;AACV,EAAAA,sBAAA,eAAY;AACZ,EAAAA,sBAAA,YAAS;AALC,SAAAA;AAAA,GAAA;","names":["SentinelReportStatus"]}
@@ -1,154 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/contexts/index.ts
21
- var contexts_exports = {};
22
- __export(contexts_exports, {
23
- SentinelContext: () => SentinelContext,
24
- SentinelProvider: () => SentinelProvider,
25
- SentinelReportStatus: () => SentinelReportStatus,
26
- useSentinelContext: () => useSentinelContext
27
- });
28
- module.exports = __toCommonJS(contexts_exports);
29
-
30
- // src/contexts/Context.ts
31
- var import_react_shared = require("@xyo-network/react-shared");
32
- var SentinelContext = (0, import_react_shared.createContextEx)();
33
-
34
- // src/contexts/Provider.tsx
35
- var import_react_async_effect = require("@xylabs/react-async-effect");
36
- var import_react_witness = require("@xyo-network/react-witness");
37
- var import_sentinel = require("@xyo-network/sentinel");
38
- var import_react = require("react");
39
-
40
- // src/contexts/State.ts
41
- var SentinelReportStatus = /* @__PURE__ */ ((SentinelReportStatus2) => {
42
- SentinelReportStatus2["Idle"] = "idle";
43
- SentinelReportStatus2["Queued"] = "queued";
44
- SentinelReportStatus2["Started"] = "started";
45
- SentinelReportStatus2["Succeeded"] = "succeeded";
46
- SentinelReportStatus2["Failed"] = "failed";
47
- return SentinelReportStatus2;
48
- })(SentinelReportStatus || {});
49
-
50
- // src/contexts/Provider.tsx
51
- var import_jsx_runtime = require("react/jsx-runtime");
52
- var SentinelProvider = ({ account, archivist, children, filter, name, required = false }) => {
53
- const [sentinel, setSentinel] = (0, import_react.useState)();
54
- const [history, setHistory] = (0, import_react.useState)();
55
- const [progress, setProgress] = (0, import_react.useState)({});
56
- const [status, setStatus] = (0, import_react.useState)("idle" /* Idle */);
57
- const [reportingErrors, setReportingErrors] = (0, import_react.useState)();
58
- const [witnesses] = (0, import_react_witness.useWitnessesFromNode)(filter);
59
- (0, import_react_async_effect.useAsyncEffect)(
60
- // eslint-disable-next-line react-hooks/exhaustive-deps
61
- async (mounted) => {
62
- const sentinel2 = await import_sentinel.MemorySentinel.create({
63
- account,
64
- config: {
65
- archivists: archivist ? [archivist] : void 0,
66
- name,
67
- schema: import_sentinel.SentinelConfigSchema,
68
- witnesses: witnesses == null ? void 0 : witnesses.map((module2) => module2.address)
69
- }
70
- });
71
- const offCallbacks = [];
72
- offCallbacks.push(
73
- sentinel2.on("reportEnd", ({ module: module2, outPayloads }) => {
74
- var _a;
75
- if (mounted()) {
76
- setProgress({
77
- archivists: progress.archivists,
78
- witnesses: progress.witnesses
79
- });
80
- setStatus((outPayloads == null ? void 0 : outPayloads.length) ? "succeeded" /* Succeeded */ : "failed" /* Failed */);
81
- setReportingErrors([Error(`Witness failed [${((_a = module2 == null ? void 0 : module2.config) == null ? void 0 : _a.name) ?? module2.address}]`)]);
82
- }
83
- })
84
- );
85
- offCallbacks.push(
86
- sentinel2.on("reportStart", () => {
87
- if (mounted()) {
88
- setProgress({ archivists: {}, witnesses: {} });
89
- setStatus("started" /* Started */);
90
- }
91
- })
92
- );
93
- witnesses == null ? void 0 : witnesses.forEach((witness) => {
94
- offCallbacks.push(
95
- witness.on("observeEnd", ({ module: module2, outPayloads }) => {
96
- const witnesses2 = progress.witnesses ?? {};
97
- witnesses2[witness.address] = {
98
- status: (outPayloads == null ? void 0 : outPayloads.length) ? "succeeded" /* Succeeded */ : "failed" /* Failed */,
99
- witness: module2
100
- };
101
- if (mounted()) {
102
- setProgress({
103
- archivists: progress.archivists,
104
- witnesses: witnesses2
105
- });
106
- }
107
- })
108
- );
109
- offCallbacks.push(
110
- witness.on("observeStart", ({ module: module2 }) => {
111
- const witnesses2 = progress.witnesses ?? {};
112
- witnesses2[witness.address] = {
113
- status: "started" /* Started */,
114
- witness: module2
115
- };
116
- if (mounted()) {
117
- setProgress({
118
- archivists: progress.archivists,
119
- witnesses: witnesses2
120
- });
121
- }
122
- })
123
- );
124
- });
125
- setSentinel(sentinel2);
126
- return () => {
127
- offCallbacks.forEach((callback) => {
128
- callback();
129
- });
130
- };
131
- },
132
- // eslint-disable-next-line react-hooks/exhaustive-deps
133
- [account, archivist, witnesses]
134
- );
135
- (0, import_react.useEffect)(() => {
136
- setHistory(sentinel == null ? void 0 : sentinel.history);
137
- }, [sentinel]);
138
- return !required || sentinel ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SentinelContext.Provider, { value: { history, progress, provided: true, reportingErrors, sentinel, status }, children }) : null;
139
- };
140
-
141
- // src/contexts/use.ts
142
- var import_react_shared2 = require("@xyo-network/react-shared");
143
- var useSentinelContext = () => {
144
- const { sentinel, history, progress, reportingErrors, status } = (0, import_react_shared2.useContextEx)(SentinelContext, "Sentinel");
145
- return { history, progress, reportingErrors, sentinel, status };
146
- };
147
- // Annotate the CommonJS export names for ESM import in node:
148
- 0 && (module.exports = {
149
- SentinelContext,
150
- SentinelProvider,
151
- SentinelReportStatus,
152
- useSentinelContext
153
- });
154
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/contexts/index.ts","../../../src/contexts/Context.ts","../../../src/contexts/Provider.tsx","../../../src/contexts/State.ts","../../../src/contexts/use.ts"],"sourcesContent":["export * from './Context'\nexport * from './Provider'\nexport * from './State'\nexport * from './use'\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { SentinelContextState } from './State'\n\nexport const SentinelContext = createContextEx<SentinelContextState>()\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleFilter } from '@xyo-network/module'\nimport { useWitnessesFromNode } from '@xyo-network/react-witness'\nimport { MemorySentinel, SentinelConfig, SentinelConfigSchema } from '@xyo-network/sentinel'\nimport { WitnessInstance } from '@xyo-network/witness'\nimport { useEffect, useState } from 'react'\n\nimport { SentinelContext } from './Context'\nimport { SentinelReportProgress, SentinelReportStatus } from './State'\n\nexport interface SentinelProviderProps {\n /** Account used by the sentinel for signing */\n account: AccountInstance\n /** @deprecated - sentinel no longer uses archive but relies on an archivist */\n archive?: string\n archivist?: string\n filter?: ModuleFilter\n name?: string\n required?: boolean\n witnesses?: WitnessInstance[]\n}\n\nexport const SentinelProvider: React.FC<WithChildren<SentinelProviderProps>> = ({ account, archivist, children, filter, name, required = false }) => {\n const [sentinel, setSentinel] = useState<MemorySentinel>()\n const [history, setHistory] = useState<BoundWitness[]>()\n const [progress, setProgress] = useState<SentinelReportProgress>({})\n const [status, setStatus] = useState(SentinelReportStatus.Idle)\n const [reportingErrors, setReportingErrors] = useState<Error[]>()\n const [witnesses] = useWitnessesFromNode(filter)\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n const sentinel = await MemorySentinel.create({\n account,\n config: {\n archivists: archivist ? [archivist] : undefined,\n name,\n\n schema: SentinelConfigSchema,\n witnesses: witnesses?.map((module) => module.address),\n } as SentinelConfig,\n })\n const offCallbacks: (() => void)[] = []\n offCallbacks.push(\n sentinel.on('reportEnd', ({ module, outPayloads }) => {\n if (mounted()) {\n setProgress({\n archivists: progress.archivists,\n witnesses: progress.witnesses,\n })\n setStatus(outPayloads?.length ? SentinelReportStatus.Succeeded : SentinelReportStatus.Failed)\n setReportingErrors([Error(`Witness failed [${module?.config?.name ?? module.address}]`)])\n }\n }),\n )\n offCallbacks.push(\n sentinel.on('reportStart', () => {\n if (mounted()) {\n setProgress({ archivists: {}, witnesses: {} })\n setStatus(SentinelReportStatus.Started)\n }\n }),\n )\n witnesses?.forEach((witness) => {\n offCallbacks.push(\n witness.on('observeEnd', ({ module, outPayloads }) => {\n const witnesses = progress.witnesses ?? {}\n witnesses[witness.address] = {\n status: outPayloads?.length ? SentinelReportStatus.Succeeded : SentinelReportStatus.Failed,\n witness: module,\n }\n if (mounted()) {\n setProgress({\n archivists: progress.archivists,\n witnesses,\n })\n }\n }),\n )\n offCallbacks.push(\n witness.on('observeStart', ({ module }) => {\n const witnesses = progress.witnesses ?? {}\n witnesses[witness.address] = {\n status: SentinelReportStatus.Started,\n witness: module,\n }\n if (mounted()) {\n setProgress({\n archivists: progress.archivists,\n witnesses,\n })\n }\n }),\n )\n })\n setSentinel(sentinel as MemorySentinel)\n return () => {\n //unsubscribe from events\n offCallbacks.forEach((callback) => {\n callback()\n })\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [account, archivist, witnesses],\n )\n\n useEffect(() => {\n setHistory(sentinel?.history as BoundWitness[])\n }, [sentinel])\n\n return !required || sentinel ? (\n <SentinelContext.Provider value={{ history, progress, provided: true, reportingErrors, sentinel, status }}>{children}</SentinelContext.Provider>\n ) : null\n}\n","import { ArchivistModule } from '@xyo-network/archivist'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { SentinelModule } from '@xyo-network/sentinel'\nimport { WitnessModule } from '@xyo-network/witness'\n\nexport enum SentinelReportStatus {\n Idle = 'idle',\n Queued = 'queued',\n Started = 'started',\n Succeeded = 'succeeded',\n Failed = 'failed',\n}\n\nexport interface SentinelWitnessReportProgress {\n status: SentinelReportStatus\n witness: WitnessModule\n}\n\nexport interface SentinelArchivistApiReportProgress {\n archivist: ArchivistModule\n status: SentinelReportStatus\n}\n\nexport interface SentinelReportProgress {\n archivists?: Record<string, SentinelArchivistApiReportProgress>\n witnesses?: Record<string, SentinelWitnessReportProgress>\n}\n\nexport interface SentinelContextState {\n history?: BoundWitness[]\n progress?: SentinelReportProgress\n reportingErrors?: Error[]\n sentinel?: SentinelModule\n status?: SentinelReportStatus\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { SentinelContext } from './Context'\n\nexport const useSentinelContext = () => {\n const { sentinel, history, progress, reportingErrors, status } = useContextEx(SentinelContext, 'Sentinel')\n return { history, progress, reportingErrors, sentinel, status }\n}\n"],"mappings":"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","names":["SentinelReportStatus","sentinel","module","witnesses","import_react_shared"]}