@xyo-network/react-sentinel 2.64.0-rc.7 → 2.64.1

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 (138) hide show
  1. package/dist/browser/contexts/Context.cjs +28 -0
  2. package/dist/{node/contexts/Context.mjs.map → browser/contexts/Context.cjs.map} +1 -1
  3. package/dist/browser/contexts/Context.d.cts +4 -0
  4. package/dist/browser/contexts/Context.d.cts.map +1 -0
  5. package/dist/browser/contexts/Context.js +2 -1
  6. package/dist/browser/contexts/Context.js.map +1 -1
  7. package/dist/browser/contexts/Provider.cjs +124 -0
  8. package/dist/browser/contexts/Provider.cjs.map +1 -0
  9. package/dist/browser/contexts/Provider.d.cts +18 -0
  10. package/dist/browser/contexts/Provider.d.cts.map +1 -0
  11. package/dist/browser/contexts/Provider.js +14 -9
  12. package/dist/browser/contexts/Provider.js.map +1 -1
  13. package/dist/browser/contexts/State.cjs +34 -0
  14. package/dist/{node/contexts/State.mjs.map → browser/contexts/State.cjs.map} +1 -1
  15. package/dist/browser/contexts/State.d.cts +31 -0
  16. package/dist/browser/contexts/State.d.cts.map +1 -0
  17. package/dist/browser/contexts/State.js +1 -0
  18. package/dist/browser/contexts/State.js.map +1 -1
  19. package/dist/browser/contexts/index.cjs +146 -0
  20. package/dist/browser/contexts/index.cjs.map +1 -0
  21. package/dist/browser/contexts/index.d.cts +5 -0
  22. package/dist/browser/contexts/index.d.cts.map +1 -0
  23. package/dist/browser/contexts/index.js +122 -4
  24. package/dist/browser/contexts/index.js.map +1 -1
  25. package/dist/browser/contexts/use.cjs +37 -0
  26. package/dist/browser/contexts/use.cjs.map +1 -0
  27. package/dist/browser/contexts/use.d.cts +78 -0
  28. package/dist/browser/contexts/use.d.cts.map +1 -0
  29. package/dist/browser/contexts/use.js +8 -2
  30. package/dist/browser/contexts/use.js.map +1 -1
  31. package/dist/browser/hooks/index.cjs +64 -0
  32. package/dist/browser/hooks/index.cjs.map +1 -0
  33. package/dist/browser/hooks/index.d.cts +2 -0
  34. package/dist/browser/hooks/index.d.cts.map +1 -0
  35. package/dist/browser/hooks/index.js +40 -1
  36. package/dist/browser/hooks/index.js.map +1 -1
  37. package/dist/browser/hooks/node/index.cjs +64 -0
  38. package/dist/browser/hooks/node/index.cjs.map +1 -0
  39. package/dist/browser/hooks/node/index.d.cts +3 -0
  40. package/dist/browser/hooks/node/index.d.cts.map +1 -0
  41. package/dist/browser/hooks/node/index.js +40 -2
  42. package/dist/browser/hooks/node/index.js.map +1 -1
  43. package/dist/browser/hooks/node/useSentinelFromNode.cjs +38 -0
  44. package/dist/{node/hooks/node/useSentinelFromNode.mjs.map → browser/hooks/node/useSentinelFromNode.cjs.map} +1 -1
  45. package/dist/browser/hooks/node/useSentinelFromNode.d.cts +4 -0
  46. package/dist/browser/hooks/node/useSentinelFromNode.d.cts.map +1 -0
  47. package/dist/browser/hooks/node/useSentinelFromNode.js +2 -1
  48. package/dist/browser/hooks/node/useSentinelFromNode.js.map +1 -1
  49. package/dist/browser/hooks/node/useSentinelsFromNode.cjs +47 -0
  50. package/dist/{node/hooks/node/useSentinelsFromNode.mjs.map → browser/hooks/node/useSentinelsFromNode.cjs.map} +1 -1
  51. package/dist/browser/hooks/node/useSentinelsFromNode.d.cts +5 -0
  52. package/dist/browser/hooks/node/useSentinelsFromNode.d.cts.map +1 -0
  53. package/dist/browser/hooks/node/useSentinelsFromNode.js +2 -1
  54. package/dist/browser/hooks/node/useSentinelsFromNode.js.map +1 -1
  55. package/dist/browser/index.cjs +185 -0
  56. package/dist/browser/index.cjs.map +1 -0
  57. package/dist/browser/index.d.cts +3 -0
  58. package/dist/browser/index.d.cts.map +1 -0
  59. package/dist/browser/index.js +161 -2
  60. package/dist/browser/index.js.map +1 -1
  61. package/dist/docs.json +2133 -0
  62. package/dist/node/contexts/Context.cjs +32 -0
  63. package/dist/node/contexts/Context.cjs.map +1 -0
  64. package/dist/node/contexts/Context.d.cts +4 -0
  65. package/dist/node/contexts/Context.d.cts.map +1 -0
  66. package/dist/node/contexts/Context.js +5 -28
  67. package/dist/node/contexts/Context.js.map +1 -1
  68. package/dist/node/contexts/Provider.cjs +129 -0
  69. package/dist/node/contexts/Provider.cjs.map +1 -0
  70. package/dist/node/contexts/Provider.d.cts +18 -0
  71. package/dist/node/contexts/Provider.d.cts.map +1 -0
  72. package/dist/node/contexts/Provider.js +40 -58
  73. package/dist/node/contexts/Provider.js.map +1 -1
  74. package/dist/node/contexts/State.cjs +38 -0
  75. package/dist/node/contexts/State.cjs.map +1 -0
  76. package/dist/node/contexts/State.d.cts +31 -0
  77. package/dist/node/contexts/State.d.cts.map +1 -0
  78. package/dist/node/contexts/State.js +3 -26
  79. package/dist/node/contexts/State.js.map +1 -1
  80. package/dist/node/contexts/index.cjs +154 -0
  81. package/dist/node/contexts/index.cjs.map +1 -0
  82. package/dist/node/contexts/index.d.cts +5 -0
  83. package/dist/node/contexts/index.d.cts.map +1 -0
  84. package/dist/node/contexts/index.js +122 -27
  85. package/dist/node/contexts/index.js.map +1 -1
  86. package/dist/node/contexts/use.cjs +41 -0
  87. package/dist/node/contexts/use.cjs.map +1 -0
  88. package/dist/node/contexts/use.d.cts +78 -0
  89. package/dist/node/contexts/use.d.cts.map +1 -0
  90. package/dist/node/contexts/use.js +12 -30
  91. package/dist/node/contexts/use.js.map +1 -1
  92. package/dist/node/hooks/index.cjs +70 -0
  93. package/dist/node/hooks/index.cjs.map +1 -0
  94. package/dist/node/hooks/index.d.cts +2 -0
  95. package/dist/node/hooks/index.d.cts.map +1 -0
  96. package/dist/node/hooks/index.js +39 -20
  97. package/dist/node/hooks/index.js.map +1 -1
  98. package/dist/node/hooks/node/index.cjs +70 -0
  99. package/dist/node/hooks/node/index.cjs.map +1 -0
  100. package/dist/node/hooks/node/index.d.cts +3 -0
  101. package/dist/node/hooks/node/index.d.cts.map +1 -0
  102. package/dist/node/hooks/node/index.js +39 -22
  103. package/dist/node/hooks/node/index.js.map +1 -1
  104. package/dist/node/hooks/node/useSentinelFromNode.cjs +43 -0
  105. package/dist/node/hooks/node/useSentinelFromNode.cjs.map +1 -0
  106. package/dist/node/hooks/node/useSentinelFromNode.d.cts +4 -0
  107. package/dist/node/hooks/node/useSentinelFromNode.d.cts.map +1 -0
  108. package/dist/node/hooks/node/useSentinelFromNode.js +11 -33
  109. package/dist/node/hooks/node/useSentinelFromNode.js.map +1 -1
  110. package/dist/node/hooks/node/useSentinelsFromNode.cjs +51 -0
  111. package/dist/node/hooks/node/useSentinelsFromNode.cjs.map +1 -0
  112. package/dist/node/hooks/node/useSentinelsFromNode.d.cts +5 -0
  113. package/dist/node/hooks/node/useSentinelsFromNode.d.cts.map +1 -0
  114. package/dist/node/hooks/node/useSentinelsFromNode.js +10 -33
  115. package/dist/node/hooks/node/useSentinelsFromNode.js.map +1 -1
  116. package/dist/node/index.cjs +196 -0
  117. package/dist/node/index.cjs.map +1 -0
  118. package/dist/node/index.d.cts +3 -0
  119. package/dist/node/index.d.cts.map +1 -0
  120. package/dist/node/index.js +161 -22
  121. package/dist/node/index.js.map +1 -1
  122. package/package.json +24 -24
  123. package/dist/node/contexts/Context.mjs +0 -6
  124. package/dist/node/contexts/Provider.mjs +0 -98
  125. package/dist/node/contexts/Provider.mjs.map +0 -1
  126. package/dist/node/contexts/State.mjs +0 -12
  127. package/dist/node/contexts/index.mjs +0 -5
  128. package/dist/node/contexts/index.mjs.map +0 -1
  129. package/dist/node/contexts/use.mjs +0 -10
  130. package/dist/node/contexts/use.mjs.map +0 -1
  131. package/dist/node/hooks/index.mjs +0 -2
  132. package/dist/node/hooks/index.mjs.map +0 -1
  133. package/dist/node/hooks/node/index.mjs +0 -3
  134. package/dist/node/hooks/node/index.mjs.map +0 -1
  135. package/dist/node/hooks/node/useSentinelFromNode.mjs +0 -16
  136. package/dist/node/hooks/node/useSentinelsFromNode.mjs +0 -25
  137. package/dist/node/index.mjs +0 -3
  138. package/dist/node/index.mjs.map +0 -1
@@ -0,0 +1,32 @@
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
@@ -0,0 +1 @@
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":[]}
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { SentinelContextState } from './State';
3
+ export declare const SentinelContext: import("react").Context<SentinelContextState & import("@xyo-network/react-shared").ContextExState>;
4
+ //# sourceMappingURL=Context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../../src/contexts/Context.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAE9C,eAAO,MAAM,eAAe,oGAA0C,CAAA"}
@@ -1,30 +1,7 @@
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
- var Context_exports = {};
20
- __export(Context_exports, {
21
- SentinelContext: () => SentinelContext
22
- });
23
- module.exports = __toCommonJS(Context_exports);
24
- var import_react_shared = require("@xyo-network/react-shared");
25
- const SentinelContext = (0, import_react_shared.createContextEx)();
26
- // Annotate the CommonJS export names for ESM import in node:
27
- 0 && (module.exports = {
1
+ // src/contexts/Context.ts
2
+ import { createContextEx } from "@xyo-network/react-shared";
3
+ var SentinelContext = createContextEx();
4
+ export {
28
5
  SentinelContext
29
- });
6
+ };
30
7
  //# sourceMappingURL=Context.js.map
@@ -1 +1 @@
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,MAAM,sBAAkB,qCAAsC;","names":[]}
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":[]}
@@ -0,0 +1,129 @@
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
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,18 @@
1
+ /// <reference types="react" />
2
+ import { WithChildren } from '@xylabs/react-shared';
3
+ import { AccountInstance } from '@xyo-network/account-model';
4
+ import { ModuleFilter } from '@xyo-network/module';
5
+ import { WitnessInstance } from '@xyo-network/witness';
6
+ export interface SentinelProviderProps {
7
+ /** Account used by the sentinel for signing */
8
+ account: AccountInstance;
9
+ /** @deprecated - sentinel no longer uses archive but relies on an archivist */
10
+ archive?: string;
11
+ archivist?: string;
12
+ filter?: ModuleFilter;
13
+ name?: string;
14
+ required?: boolean;
15
+ witnesses?: WitnessInstance[];
16
+ }
17
+ export declare const SentinelProvider: React.FC<WithChildren<SentinelProviderProps>>;
18
+ //# sourceMappingURL=Provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/contexts/Provider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAMtD,MAAM,WAAW,qBAAqB;IACpC,+CAA+C;IAC/C,OAAO,EAAE,eAAe,CAAA;IACxB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAA;CAC9B;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,qBAAqB,CAAC,CA6F1E,CAAA"}
@@ -1,62 +1,45 @@
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
- var Provider_exports = {};
20
- __export(Provider_exports, {
21
- SentinelProvider: () => SentinelProvider
22
- });
23
- module.exports = __toCommonJS(Provider_exports);
24
- var import_jsx_runtime = require("react/jsx-runtime");
25
- var import_react_async_effect = require("@xylabs/react-async-effect");
26
- var import_react_witness = require("@xyo-network/react-witness");
27
- var import_sentinel = require("@xyo-network/sentinel");
28
- var import_react = require("react");
29
- var import_Context = require("./Context");
30
- var import_State = require("./State");
31
- const SentinelProvider = ({ account, archivist, children, filter, name, required = false }) => {
32
- const [sentinel, setSentinel] = (0, import_react.useState)();
33
- const [history, setHistory] = (0, import_react.useState)();
34
- const [progress, setProgress] = (0, import_react.useState)({});
35
- const [status, setStatus] = (0, import_react.useState)(import_State.SentinelReportStatus.Idle);
36
- const [reportingErrors, setReportingErrors] = (0, import_react.useState)();
37
- const [witnesses] = (0, import_react_witness.useWitnessesFromNode)(filter);
38
- (0, import_react_async_effect.useAsyncEffect)(
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(
39
21
  // eslint-disable-next-line react-hooks/exhaustive-deps
40
22
  async (mounted) => {
41
- const sentinel2 = await import_sentinel.MemorySentinel.create({
23
+ const sentinel2 = await MemorySentinel.create({
42
24
  account,
43
25
  config: {
44
26
  archivists: archivist ? [archivist] : void 0,
45
27
  name,
46
- schema: import_sentinel.SentinelConfigSchema,
47
- witnesses: witnesses?.map((module2) => module2.address)
28
+ schema: SentinelConfigSchema,
29
+ witnesses: witnesses == null ? void 0 : witnesses.map((module) => module.address)
48
30
  }
49
31
  });
50
32
  const offCallbacks = [];
51
33
  offCallbacks.push(
52
- sentinel2.on("reportEnd", ({ module: module2, outPayloads }) => {
34
+ sentinel2.on("reportEnd", ({ module, outPayloads }) => {
35
+ var _a;
53
36
  if (mounted()) {
54
37
  setProgress({
55
38
  archivists: progress.archivists,
56
39
  witnesses: progress.witnesses
57
40
  });
58
- setStatus(outPayloads?.length ? import_State.SentinelReportStatus.Succeeded : import_State.SentinelReportStatus.Failed);
59
- setReportingErrors([Error(`Witness failed [${module2?.config?.name ?? module2.address}]`)]);
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}]`)]);
60
43
  }
61
44
  })
62
45
  );
@@ -64,17 +47,17 @@ const SentinelProvider = ({ account, archivist, children, filter, name, required
64
47
  sentinel2.on("reportStart", () => {
65
48
  if (mounted()) {
66
49
  setProgress({ archivists: {}, witnesses: {} });
67
- setStatus(import_State.SentinelReportStatus.Started);
50
+ setStatus("started" /* Started */);
68
51
  }
69
52
  })
70
53
  );
71
- witnesses?.forEach((witness) => {
54
+ witnesses == null ? void 0 : witnesses.forEach((witness) => {
72
55
  offCallbacks.push(
73
- witness.on("observeEnd", ({ module: module2, outPayloads }) => {
56
+ witness.on("observeEnd", ({ module, outPayloads }) => {
74
57
  const witnesses2 = progress.witnesses ?? {};
75
58
  witnesses2[witness.address] = {
76
- status: outPayloads?.length ? import_State.SentinelReportStatus.Succeeded : import_State.SentinelReportStatus.Failed,
77
- witness: module2
59
+ status: (outPayloads == null ? void 0 : outPayloads.length) ? "succeeded" /* Succeeded */ : "failed" /* Failed */,
60
+ witness: module
78
61
  };
79
62
  if (mounted()) {
80
63
  setProgress({
@@ -85,11 +68,11 @@ const SentinelProvider = ({ account, archivist, children, filter, name, required
85
68
  })
86
69
  );
87
70
  offCallbacks.push(
88
- witness.on("observeStart", ({ module: module2 }) => {
71
+ witness.on("observeStart", ({ module }) => {
89
72
  const witnesses2 = progress.witnesses ?? {};
90
73
  witnesses2[witness.address] = {
91
- status: import_State.SentinelReportStatus.Started,
92
- witness: module2
74
+ status: "started" /* Started */,
75
+ witness: module
93
76
  };
94
77
  if (mounted()) {
95
78
  setProgress({
@@ -110,13 +93,12 @@ const SentinelProvider = ({ account, archivist, children, filter, name, required
110
93
  // eslint-disable-next-line react-hooks/exhaustive-deps
111
94
  [account, archivist, witnesses]
112
95
  );
113
- (0, import_react.useEffect)(() => {
114
- setHistory(sentinel?.history);
96
+ useEffect(() => {
97
+ setHistory(sentinel == null ? void 0 : sentinel.history);
115
98
  }, [sentinel]);
116
- return !required || sentinel ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Context.SentinelContext.Provider, { value: { history, progress, provided: true, reportingErrors, sentinel, status }, children }) : null;
99
+ return !required || sentinel ? /* @__PURE__ */ jsx(SentinelContext.Provider, { value: { history, progress, provided: true, reportingErrors, sentinel, status }, children }) : null;
117
100
  };
118
- // Annotate the CommonJS export names for ESM import in node:
119
- 0 && (module.exports = {
101
+ export {
120
102
  SentinelProvider
121
- });
103
+ };
122
104
  //# sourceMappingURL=Provider.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/contexts/Provider.tsx"],"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"],"mappings":"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","names":["sentinel","module","witnesses"]}
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"]}
@@ -0,0 +1,38 @@
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
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,31 @@
1
+ import { ArchivistModule } from '@xyo-network/archivist';
2
+ import { BoundWitness } from '@xyo-network/boundwitness-model';
3
+ import { SentinelModule } from '@xyo-network/sentinel';
4
+ import { WitnessModule } from '@xyo-network/witness';
5
+ export declare enum SentinelReportStatus {
6
+ Idle = "idle",
7
+ Queued = "queued",
8
+ Started = "started",
9
+ Succeeded = "succeeded",
10
+ Failed = "failed"
11
+ }
12
+ export interface SentinelWitnessReportProgress {
13
+ status: SentinelReportStatus;
14
+ witness: WitnessModule;
15
+ }
16
+ export interface SentinelArchivistApiReportProgress {
17
+ archivist: ArchivistModule;
18
+ status: SentinelReportStatus;
19
+ }
20
+ export interface SentinelReportProgress {
21
+ archivists?: Record<string, SentinelArchivistApiReportProgress>;
22
+ witnesses?: Record<string, SentinelWitnessReportProgress>;
23
+ }
24
+ export interface SentinelContextState {
25
+ history?: BoundWitness[];
26
+ progress?: SentinelReportProgress;
27
+ reportingErrors?: Error[];
28
+ sentinel?: SentinelModule;
29
+ status?: SentinelReportStatus;
30
+ }
31
+ //# sourceMappingURL=State.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../../src/contexts/State.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,oBAAY,oBAAoB;IAC9B,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,oBAAoB,CAAA;IAC5B,OAAO,EAAE,aAAa,CAAA;CACvB;AAED,MAAM,WAAW,kCAAkC;IACjD,SAAS,EAAE,eAAe,CAAA;IAC1B,MAAM,EAAE,oBAAoB,CAAA;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAA;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAA;CAC1D;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;IACxB,QAAQ,CAAC,EAAE,sBAAsB,CAAA;IACjC,eAAe,CAAC,EAAE,KAAK,EAAE,CAAA;IACzB,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,MAAM,CAAC,EAAE,oBAAoB,CAAA;CAC9B"}
@@ -1,26 +1,4 @@
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
- var State_exports = {};
20
- __export(State_exports, {
21
- SentinelReportStatus: () => SentinelReportStatus
22
- });
23
- module.exports = __toCommonJS(State_exports);
1
+ // src/contexts/State.ts
24
2
  var SentinelReportStatus = /* @__PURE__ */ ((SentinelReportStatus2) => {
25
3
  SentinelReportStatus2["Idle"] = "idle";
26
4
  SentinelReportStatus2["Queued"] = "queued";
@@ -29,8 +7,7 @@ var SentinelReportStatus = /* @__PURE__ */ ((SentinelReportStatus2) => {
29
7
  SentinelReportStatus2["Failed"] = "failed";
30
8
  return SentinelReportStatus2;
31
9
  })(SentinelReportStatus || {});
32
- // Annotate the CommonJS export names for ESM import in node:
33
- 0 && (module.exports = {
10
+ export {
34
11
  SentinelReportStatus
35
- });
12
+ };
36
13
  //# sourceMappingURL=State.js.map
@@ -1 +1 @@
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
+ {"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"]}