@xyo-network/react-sentinel 2.81.10 → 2.82.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 (224) hide show
  1. package/dist/browser/components/Card/Card.d.cts +1 -0
  2. package/dist/browser/components/Card/Card.d.cts.map +1 -1
  3. package/dist/browser/components/Card/Card.d.mts +1 -0
  4. package/dist/browser/components/Card/Card.d.mts.map +1 -1
  5. package/dist/browser/components/Card/Card.d.ts +1 -0
  6. package/dist/browser/components/Card/Card.d.ts.map +1 -1
  7. package/dist/browser/components/Card/CardActions.d.cts +1 -0
  8. package/dist/browser/components/Card/CardActions.d.cts.map +1 -1
  9. package/dist/browser/components/Card/CardActions.d.mts +1 -0
  10. package/dist/browser/components/Card/CardActions.d.mts.map +1 -1
  11. package/dist/browser/components/Card/CardActions.d.ts +1 -0
  12. package/dist/browser/components/Card/CardActions.d.ts.map +1 -1
  13. package/dist/browser/components/Card/CardHeader.d.cts +1 -0
  14. package/dist/browser/components/Card/CardHeader.d.cts.map +1 -1
  15. package/dist/browser/components/Card/CardHeader.d.mts +1 -0
  16. package/dist/browser/components/Card/CardHeader.d.mts.map +1 -1
  17. package/dist/browser/components/Card/CardHeader.d.ts +1 -0
  18. package/dist/browser/components/Card/CardHeader.d.ts.map +1 -1
  19. package/dist/browser/components/Card/index.d.cts +3 -3
  20. package/dist/browser/components/Card/index.d.cts.map +1 -1
  21. package/dist/browser/components/Card/index.d.mts +3 -3
  22. package/dist/browser/components/Card/index.d.mts.map +1 -1
  23. package/dist/browser/components/Card/index.d.ts +3 -3
  24. package/dist/browser/components/Card/index.d.ts.map +1 -1
  25. package/dist/browser/components/index.d.cts +1 -1
  26. package/dist/browser/components/index.d.mts +1 -1
  27. package/dist/browser/components/index.d.ts +1 -1
  28. package/dist/browser/contexts/Context.d.cts +1 -1
  29. package/dist/browser/contexts/Context.d.mts +1 -1
  30. package/dist/browser/contexts/Context.d.ts +1 -1
  31. package/dist/browser/contexts/Provider.d.cts +1 -0
  32. package/dist/browser/contexts/Provider.d.cts.map +1 -1
  33. package/dist/browser/contexts/Provider.d.mts +1 -0
  34. package/dist/browser/contexts/Provider.d.mts.map +1 -1
  35. package/dist/browser/contexts/Provider.d.ts +1 -0
  36. package/dist/browser/contexts/Provider.d.ts.map +1 -1
  37. package/dist/browser/contexts/index.d.cts +4 -4
  38. package/dist/browser/contexts/index.d.cts.map +1 -1
  39. package/dist/browser/contexts/index.d.mts +4 -4
  40. package/dist/browser/contexts/index.d.mts.map +1 -1
  41. package/dist/browser/contexts/index.d.ts +4 -4
  42. package/dist/browser/contexts/index.d.ts.map +1 -1
  43. package/dist/browser/contexts/use.d.cts +2 -2
  44. package/dist/browser/contexts/use.d.mts +2 -2
  45. package/dist/browser/contexts/use.d.ts +2 -2
  46. package/dist/browser/hooks/index.d.cts +1 -1
  47. package/dist/browser/hooks/index.d.mts +1 -1
  48. package/dist/browser/hooks/index.d.ts +1 -1
  49. package/dist/browser/hooks/node/index.d.cts +4 -4
  50. package/dist/browser/hooks/node/index.d.cts.map +1 -1
  51. package/dist/browser/hooks/node/index.d.mts +4 -4
  52. package/dist/browser/hooks/node/index.d.mts.map +1 -1
  53. package/dist/browser/hooks/node/index.d.ts +4 -4
  54. package/dist/browser/hooks/node/index.d.ts.map +1 -1
  55. package/dist/browser/hooks/node/useSentinelFromNode.d.cts.map +1 -1
  56. package/dist/browser/hooks/node/useSentinelFromNode.d.mts.map +1 -1
  57. package/dist/browser/hooks/node/useSentinelFromNode.d.ts.map +1 -1
  58. package/dist/browser/hooks/node/useSentinelsFromNode.d.cts.map +1 -1
  59. package/dist/browser/hooks/node/useSentinelsFromNode.d.mts.map +1 -1
  60. package/dist/browser/hooks/node/useSentinelsFromNode.d.ts.map +1 -1
  61. package/dist/browser/index.cjs +201 -135
  62. package/dist/browser/index.cjs.map +1 -1
  63. package/dist/browser/index.d.cts +3 -3
  64. package/dist/browser/index.d.mts +3 -3
  65. package/dist/browser/index.d.ts +3 -3
  66. package/dist/browser/index.mjs +303 -0
  67. package/dist/browser/index.mjs.map +1 -0
  68. package/dist/neutral/components/Card/Card.d.cts +1 -0
  69. package/dist/neutral/components/Card/Card.d.cts.map +1 -1
  70. package/dist/neutral/components/Card/Card.d.mts +1 -0
  71. package/dist/neutral/components/Card/Card.d.mts.map +1 -1
  72. package/dist/neutral/components/Card/Card.d.ts +1 -0
  73. package/dist/neutral/components/Card/Card.d.ts.map +1 -1
  74. package/dist/neutral/components/Card/CardActions.d.cts +1 -0
  75. package/dist/neutral/components/Card/CardActions.d.cts.map +1 -1
  76. package/dist/neutral/components/Card/CardActions.d.mts +1 -0
  77. package/dist/neutral/components/Card/CardActions.d.mts.map +1 -1
  78. package/dist/neutral/components/Card/CardActions.d.ts +1 -0
  79. package/dist/neutral/components/Card/CardActions.d.ts.map +1 -1
  80. package/dist/neutral/components/Card/CardHeader.d.cts +1 -0
  81. package/dist/neutral/components/Card/CardHeader.d.cts.map +1 -1
  82. package/dist/neutral/components/Card/CardHeader.d.mts +1 -0
  83. package/dist/neutral/components/Card/CardHeader.d.mts.map +1 -1
  84. package/dist/neutral/components/Card/CardHeader.d.ts +1 -0
  85. package/dist/neutral/components/Card/CardHeader.d.ts.map +1 -1
  86. package/dist/neutral/components/Card/index.d.cts +3 -3
  87. package/dist/neutral/components/Card/index.d.cts.map +1 -1
  88. package/dist/neutral/components/Card/index.d.mts +3 -3
  89. package/dist/neutral/components/Card/index.d.mts.map +1 -1
  90. package/dist/neutral/components/Card/index.d.ts +3 -3
  91. package/dist/neutral/components/Card/index.d.ts.map +1 -1
  92. package/dist/neutral/components/index.d.cts +1 -1
  93. package/dist/neutral/components/index.d.mts +1 -1
  94. package/dist/neutral/components/index.d.ts +1 -1
  95. package/dist/neutral/contexts/Context.d.cts +1 -1
  96. package/dist/neutral/contexts/Context.d.mts +1 -1
  97. package/dist/neutral/contexts/Context.d.ts +1 -1
  98. package/dist/neutral/contexts/Provider.d.cts +1 -0
  99. package/dist/neutral/contexts/Provider.d.cts.map +1 -1
  100. package/dist/neutral/contexts/Provider.d.mts +1 -0
  101. package/dist/neutral/contexts/Provider.d.mts.map +1 -1
  102. package/dist/neutral/contexts/Provider.d.ts +1 -0
  103. package/dist/neutral/contexts/Provider.d.ts.map +1 -1
  104. package/dist/neutral/contexts/index.d.cts +4 -4
  105. package/dist/neutral/contexts/index.d.cts.map +1 -1
  106. package/dist/neutral/contexts/index.d.mts +4 -4
  107. package/dist/neutral/contexts/index.d.mts.map +1 -1
  108. package/dist/neutral/contexts/index.d.ts +4 -4
  109. package/dist/neutral/contexts/index.d.ts.map +1 -1
  110. package/dist/neutral/contexts/use.d.cts +2 -2
  111. package/dist/neutral/contexts/use.d.mts +2 -2
  112. package/dist/neutral/contexts/use.d.ts +2 -2
  113. package/dist/neutral/hooks/index.d.cts +1 -1
  114. package/dist/neutral/hooks/index.d.mts +1 -1
  115. package/dist/neutral/hooks/index.d.ts +1 -1
  116. package/dist/neutral/hooks/node/index.d.cts +4 -4
  117. package/dist/neutral/hooks/node/index.d.cts.map +1 -1
  118. package/dist/neutral/hooks/node/index.d.mts +4 -4
  119. package/dist/neutral/hooks/node/index.d.mts.map +1 -1
  120. package/dist/neutral/hooks/node/index.d.ts +4 -4
  121. package/dist/neutral/hooks/node/index.d.ts.map +1 -1
  122. package/dist/neutral/hooks/node/useSentinelFromNode.d.cts.map +1 -1
  123. package/dist/neutral/hooks/node/useSentinelFromNode.d.mts.map +1 -1
  124. package/dist/neutral/hooks/node/useSentinelFromNode.d.ts.map +1 -1
  125. package/dist/neutral/hooks/node/useSentinelsFromNode.d.cts.map +1 -1
  126. package/dist/neutral/hooks/node/useSentinelsFromNode.d.mts.map +1 -1
  127. package/dist/neutral/hooks/node/useSentinelsFromNode.d.ts.map +1 -1
  128. package/dist/neutral/index.cjs +201 -135
  129. package/dist/neutral/index.cjs.map +1 -1
  130. package/dist/neutral/index.d.cts +3 -3
  131. package/dist/neutral/index.d.mts +3 -3
  132. package/dist/neutral/index.d.ts +3 -3
  133. package/dist/neutral/index.mjs +303 -0
  134. package/dist/neutral/index.mjs.map +1 -0
  135. package/dist/node/components/Card/Card.d.cts +1 -0
  136. package/dist/node/components/Card/Card.d.cts.map +1 -1
  137. package/dist/node/components/Card/Card.d.mts +1 -0
  138. package/dist/node/components/Card/Card.d.mts.map +1 -1
  139. package/dist/node/components/Card/Card.d.ts +1 -0
  140. package/dist/node/components/Card/Card.d.ts.map +1 -1
  141. package/dist/node/components/Card/CardActions.d.cts +1 -0
  142. package/dist/node/components/Card/CardActions.d.cts.map +1 -1
  143. package/dist/node/components/Card/CardActions.d.mts +1 -0
  144. package/dist/node/components/Card/CardActions.d.mts.map +1 -1
  145. package/dist/node/components/Card/CardActions.d.ts +1 -0
  146. package/dist/node/components/Card/CardActions.d.ts.map +1 -1
  147. package/dist/node/components/Card/CardHeader.d.cts +1 -0
  148. package/dist/node/components/Card/CardHeader.d.cts.map +1 -1
  149. package/dist/node/components/Card/CardHeader.d.mts +1 -0
  150. package/dist/node/components/Card/CardHeader.d.mts.map +1 -1
  151. package/dist/node/components/Card/CardHeader.d.ts +1 -0
  152. package/dist/node/components/Card/CardHeader.d.ts.map +1 -1
  153. package/dist/node/components/Card/index.d.cts +3 -3
  154. package/dist/node/components/Card/index.d.cts.map +1 -1
  155. package/dist/node/components/Card/index.d.mts +3 -3
  156. package/dist/node/components/Card/index.d.mts.map +1 -1
  157. package/dist/node/components/Card/index.d.ts +3 -3
  158. package/dist/node/components/Card/index.d.ts.map +1 -1
  159. package/dist/node/components/index.d.cts +1 -1
  160. package/dist/node/components/index.d.mts +1 -1
  161. package/dist/node/components/index.d.ts +1 -1
  162. package/dist/node/contexts/Context.d.cts +1 -1
  163. package/dist/node/contexts/Context.d.mts +1 -1
  164. package/dist/node/contexts/Context.d.ts +1 -1
  165. package/dist/node/contexts/Provider.d.cts +1 -0
  166. package/dist/node/contexts/Provider.d.cts.map +1 -1
  167. package/dist/node/contexts/Provider.d.mts +1 -0
  168. package/dist/node/contexts/Provider.d.mts.map +1 -1
  169. package/dist/node/contexts/Provider.d.ts +1 -0
  170. package/dist/node/contexts/Provider.d.ts.map +1 -1
  171. package/dist/node/contexts/index.d.cts +4 -4
  172. package/dist/node/contexts/index.d.cts.map +1 -1
  173. package/dist/node/contexts/index.d.mts +4 -4
  174. package/dist/node/contexts/index.d.mts.map +1 -1
  175. package/dist/node/contexts/index.d.ts +4 -4
  176. package/dist/node/contexts/index.d.ts.map +1 -1
  177. package/dist/node/contexts/use.d.cts +2 -2
  178. package/dist/node/contexts/use.d.mts +2 -2
  179. package/dist/node/contexts/use.d.ts +2 -2
  180. package/dist/node/hooks/index.d.cts +1 -1
  181. package/dist/node/hooks/index.d.mts +1 -1
  182. package/dist/node/hooks/index.d.ts +1 -1
  183. package/dist/node/hooks/node/index.d.cts +4 -4
  184. package/dist/node/hooks/node/index.d.cts.map +1 -1
  185. package/dist/node/hooks/node/index.d.mts +4 -4
  186. package/dist/node/hooks/node/index.d.mts.map +1 -1
  187. package/dist/node/hooks/node/index.d.ts +4 -4
  188. package/dist/node/hooks/node/index.d.ts.map +1 -1
  189. package/dist/node/hooks/node/useSentinelFromNode.d.cts.map +1 -1
  190. package/dist/node/hooks/node/useSentinelFromNode.d.mts.map +1 -1
  191. package/dist/node/hooks/node/useSentinelFromNode.d.ts.map +1 -1
  192. package/dist/node/hooks/node/useSentinelsFromNode.d.cts.map +1 -1
  193. package/dist/node/hooks/node/useSentinelsFromNode.d.mts.map +1 -1
  194. package/dist/node/hooks/node/useSentinelsFromNode.d.ts.map +1 -1
  195. package/dist/node/index.cjs +202 -136
  196. package/dist/node/index.cjs.map +1 -1
  197. package/dist/node/index.d.cts +3 -3
  198. package/dist/node/index.d.mts +3 -3
  199. package/dist/node/index.d.ts +3 -3
  200. package/dist/node/index.mjs +305 -0
  201. package/dist/node/index.mjs.map +1 -0
  202. package/package.json +32 -32
  203. package/src/components/Card/Card.stories.tsx +6 -6
  204. package/src/components/Card/Card.tsx +4 -4
  205. package/src/components/Card/CardActions.tsx +2 -1
  206. package/src/components/Card/CardContent.tsx +3 -3
  207. package/src/components/Card/CardHeader.tsx +1 -0
  208. package/src/components/Card/index.ts +3 -3
  209. package/src/components/index.ts +1 -1
  210. package/src/contexts/Context.ts +1 -1
  211. package/src/contexts/Provider.tsx +11 -10
  212. package/src/contexts/index.ts +4 -4
  213. package/src/contexts/use.ts +1 -1
  214. package/src/hooks/index.ts +1 -1
  215. package/src/hooks/node/index.ts +4 -4
  216. package/src/hooks/node/useSentinelFromNode.tsx +0 -2
  217. package/src/hooks/node/useSentinelsFromNode.tsx +2 -4
  218. package/src/index.ts +3 -3
  219. package/dist/browser/index.js +0 -245
  220. package/dist/browser/index.js.map +0 -1
  221. package/dist/neutral/index.js +0 -245
  222. package/dist/neutral/index.js.map +0 -1
  223. package/dist/node/index.js +0 -247
  224. package/dist/node/index.js.map +0 -1
@@ -0,0 +1,305 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // src/components/Card/Card.tsx
5
+ import { Card } from "@mui/material";
6
+ import { usePromise } from "@xylabs/react-promise";
7
+ import React4, { useState } from "react";
8
+
9
+ // src/components/Card/CardActions.tsx
10
+ import { ButtonEx } from "@xylabs/react-button";
11
+ import { ModuleCardActions } from "@xyo-network/react-module";
12
+ import React from "react";
13
+ var SentinelCardActions = /* @__PURE__ */ __name(({ onReport, mod, ...props }) => {
14
+ return /* @__PURE__ */ React.createElement(ModuleCardActions, {
15
+ mod,
16
+ ...props
17
+ }, /* @__PURE__ */ React.createElement(ButtonEx, {
18
+ onClick: /* @__PURE__ */ __name(() => onReport == null ? void 0 : onReport(mod), "onClick"),
19
+ size: "small",
20
+ variant: "outlined"
21
+ }, "Report"));
22
+ }, "SentinelCardActions");
23
+
24
+ // src/components/Card/CardContent.tsx
25
+ import { FlexGrowRow } from "@xylabs/react-flexbox";
26
+ import { ModuleCardContent } from "@xyo-network/react-module";
27
+ import { JsonViewerEx } from "@xyo-network/react-payload-raw-info";
28
+ import React2 from "react";
29
+ var SentinelCardContent = /* @__PURE__ */ __name(({ children, report, mod, ...props }) => {
30
+ return /* @__PURE__ */ React2.createElement(ModuleCardContent, {
31
+ mod,
32
+ ...props
33
+ }, /* @__PURE__ */ React2.createElement(FlexGrowRow, {
34
+ flexWrap: "wrap",
35
+ justifyContent: "start",
36
+ gap: 2
37
+ }, report ? /* @__PURE__ */ React2.createElement(JsonViewerEx, {
38
+ value: report
39
+ }) : null, children));
40
+ }, "SentinelCardContent");
41
+
42
+ // src/components/Card/CardHeader.tsx
43
+ import { ModuleCardHeader } from "@xyo-network/react-module";
44
+ import React3 from "react";
45
+ var SentinelCardHeader = /* @__PURE__ */ __name(({ title, mod, ...props }) => {
46
+ return /* @__PURE__ */ React3.createElement(ModuleCardHeader, {
47
+ mod,
48
+ title: title ?? (mod == null ? void 0 : mod.config.name) ?? "Sentinel",
49
+ ...props
50
+ });
51
+ }, "SentinelCardHeader");
52
+
53
+ // src/components/Card/Card.tsx
54
+ var SentinelCard = /* @__PURE__ */ __name(({ children, inPayloads, mod, ...props }) => {
55
+ const [retry, setRetry] = useState(-1);
56
+ const [report] = usePromise(async () => {
57
+ if (retry >= 0) {
58
+ return await (mod == null ? void 0 : mod.report(inPayloads));
59
+ }
60
+ }, [
61
+ mod,
62
+ retry,
63
+ inPayloads
64
+ ]);
65
+ return /* @__PURE__ */ React4.createElement(Card, props, /* @__PURE__ */ React4.createElement(SentinelCardHeader, {
66
+ mod
67
+ }), /* @__PURE__ */ React4.createElement(SentinelCardContent, {
68
+ mod,
69
+ report
70
+ }), children, /* @__PURE__ */ React4.createElement(SentinelCardActions, {
71
+ mod,
72
+ onReport: /* @__PURE__ */ __name(() => setRetry(retry + 1), "onReport")
73
+ }));
74
+ }, "SentinelCard");
75
+
76
+ // src/contexts/Context.ts
77
+ import { createContextEx } from "@xyo-network/react-shared";
78
+ var SentinelContext = createContextEx();
79
+
80
+ // src/contexts/Provider.tsx
81
+ import { useAsyncEffect } from "@xylabs/react-async-effect";
82
+ import { useWitnessesFromNode } from "@xyo-network/react-witness";
83
+ import { MemorySentinel } from "@xyo-network/sentinel-memory";
84
+ import { SentinelConfigSchema } from "@xyo-network/sentinel-model";
85
+ import { asWitnessInstance } from "@xyo-network/witness-model";
86
+ import React5, { useEffect, useState as useState2 } from "react";
87
+
88
+ // src/contexts/State.ts
89
+ var SentinelReportStatus;
90
+ (function(SentinelReportStatus2) {
91
+ SentinelReportStatus2["Idle"] = "idle";
92
+ SentinelReportStatus2["Queued"] = "queued";
93
+ SentinelReportStatus2["Started"] = "started";
94
+ SentinelReportStatus2["Succeeded"] = "succeeded";
95
+ SentinelReportStatus2["Failed"] = "failed";
96
+ })(SentinelReportStatus || (SentinelReportStatus = {}));
97
+
98
+ // src/contexts/Provider.tsx
99
+ var SentinelProvider = /* @__PURE__ */ __name(({ account, archivist, children, filter, name, required = false }) => {
100
+ const [sentinel, setSentinel] = useState2();
101
+ const [history, setHistory] = useState2();
102
+ const [progress, setProgress] = useState2({});
103
+ const [status, setStatus] = useState2(SentinelReportStatus.Idle);
104
+ const [reportingErrors, setReportingErrors] = useState2();
105
+ const [witnesses] = useWitnessesFromNode(filter);
106
+ useAsyncEffect(async (mounted) => {
107
+ const sentinel2 = await MemorySentinel.create({
108
+ account,
109
+ config: {
110
+ archivists: archivist ? [
111
+ archivist
112
+ ] : void 0,
113
+ name,
114
+ schema: SentinelConfigSchema,
115
+ synchronous: true,
116
+ tasks: witnesses == null ? void 0 : witnesses.map((mod) => ({
117
+ mod: mod.address
118
+ }))
119
+ }
120
+ });
121
+ const offCallbacks = [];
122
+ offCallbacks.push(sentinel2.on("reportEnd", ({ mod, outPayloads }) => {
123
+ var _a;
124
+ if (mounted()) {
125
+ setProgress({
126
+ archivists: progress.archivists,
127
+ witnesses: progress.witnesses
128
+ });
129
+ setStatus((outPayloads == null ? void 0 : outPayloads.length) ? SentinelReportStatus.Succeeded : SentinelReportStatus.Failed);
130
+ setReportingErrors([
131
+ new Error(`Witness failed [${((_a = mod == null ? void 0 : mod.config) == null ? void 0 : _a.name) ?? mod.address}]`)
132
+ ]);
133
+ }
134
+ }));
135
+ offCallbacks.push(sentinel2.on("reportStart", () => {
136
+ if (mounted()) {
137
+ setProgress({
138
+ archivists: {},
139
+ witnesses: {}
140
+ });
141
+ setStatus(SentinelReportStatus.Started);
142
+ }
143
+ }));
144
+ if (witnesses) for (const witness of witnesses) {
145
+ offCallbacks.push(witness.on("observeEnd", ({ mod, outPayloads }) => {
146
+ const witnesses2 = progress.witnesses ?? {};
147
+ witnesses2[witness.address] = {
148
+ status: (outPayloads == null ? void 0 : outPayloads.length) ? SentinelReportStatus.Succeeded : SentinelReportStatus.Failed,
149
+ witness: asWitnessInstance(mod, () => `Module is not a witness [${mod.id}]`)
150
+ };
151
+ if (mounted()) {
152
+ setProgress({
153
+ archivists: progress.archivists,
154
+ witnesses: witnesses2
155
+ });
156
+ }
157
+ }));
158
+ offCallbacks.push(witness.on("observeStart", ({ mod }) => {
159
+ const witnesses2 = progress.witnesses ?? {};
160
+ witnesses2[witness.address] = {
161
+ status: SentinelReportStatus.Started,
162
+ witness: asWitnessInstance(mod, () => `Module is not a witness [${mod.id}]`)
163
+ };
164
+ if (mounted()) {
165
+ setProgress({
166
+ archivists: progress.archivists,
167
+ witnesses: witnesses2
168
+ });
169
+ }
170
+ }));
171
+ }
172
+ setSentinel(sentinel2);
173
+ return () => {
174
+ for (const callback of offCallbacks) {
175
+ callback();
176
+ }
177
+ };
178
+ }, [
179
+ account,
180
+ archivist,
181
+ witnesses
182
+ ]);
183
+ useEffect(() => {
184
+ setHistory(sentinel == null ? void 0 : sentinel.history);
185
+ }, [
186
+ sentinel
187
+ ]);
188
+ return !required || sentinel ? /* @__PURE__ */ React5.createElement(SentinelContext.Provider, {
189
+ value: {
190
+ history,
191
+ progress,
192
+ provided: true,
193
+ reportingErrors,
194
+ sentinel,
195
+ status
196
+ }
197
+ }, children) : null;
198
+ }, "SentinelProvider");
199
+
200
+ // src/contexts/use.ts
201
+ import { useContextEx } from "@xyo-network/react-shared";
202
+ var useSentinelContext = /* @__PURE__ */ __name(() => {
203
+ const { sentinel, history, progress, reportingErrors, status } = useContextEx(SentinelContext, "Sentinel");
204
+ return {
205
+ history,
206
+ progress,
207
+ reportingErrors,
208
+ sentinel,
209
+ status
210
+ };
211
+ }, "useSentinelContext");
212
+
213
+ // src/hooks/node/useSentinelFromNode.tsx
214
+ import { useModuleFromNode } from "@xyo-network/react-node";
215
+ import { asSentinelInstance } from "@xyo-network/sentinel-model";
216
+ var useSentinelFromNode = /* @__PURE__ */ __name((nameOrAddressOrInstance, config) => {
217
+ var _a, _b;
218
+ const [mod, error] = useModuleFromNode(nameOrAddressOrInstance, config);
219
+ const instance = asSentinelInstance(mod);
220
+ if (mod && !instance) {
221
+ const error2 = new Error(`Resolved module is not a SentinelInstance [${(_a = mod.config) == null ? void 0 : _a.schema}:${(_b = mod.config) == null ? void 0 : _b.name}:${mod.address}]`);
222
+ console.error(error2.message);
223
+ return [
224
+ void 0,
225
+ error2
226
+ ];
227
+ }
228
+ return [
229
+ instance,
230
+ error
231
+ ];
232
+ }, "useSentinelFromNode");
233
+
234
+ // src/hooks/node/useSentinelsFromNode.tsx
235
+ import { useModulesFromNode } from "@xyo-network/react-node";
236
+ import { isSentinelInstance } from "@xyo-network/sentinel-model";
237
+ var useSentinelsFromNode = /* @__PURE__ */ __name((filter, config) => {
238
+ const [modules, error] = useModulesFromNode(filter, config);
239
+ if (error) {
240
+ return [
241
+ null,
242
+ error
243
+ ];
244
+ }
245
+ return modules ? [
246
+ // eslint-disable-next-line unicorn/no-array-reduce
247
+ modules.reduce((prev, mod) => {
248
+ if (isSentinelInstance(mod)) {
249
+ prev.push(mod);
250
+ }
251
+ return prev;
252
+ }, []),
253
+ void 0
254
+ ] : [
255
+ modules,
256
+ error
257
+ ];
258
+ }, "useSentinelsFromNode");
259
+
260
+ // src/hooks/node/useWeakSentinelFromNode.tsx
261
+ import { useWeakModuleFromNode } from "@xyo-network/react-node";
262
+ import { isSentinelInstance as isSentinelInstance2 } from "@xyo-network/sentinel-model";
263
+ var useWeakSentinelFromNode = /* @__PURE__ */ __name((nameOrAddressOrInstance, config) => {
264
+ return useWeakModuleFromNode(nameOrAddressOrInstance, {
265
+ identity: isSentinelInstance2,
266
+ ...config
267
+ });
268
+ }, "useWeakSentinelFromNode");
269
+
270
+ // src/hooks/node/useWeakSentinelsFromNode.tsx
271
+ import { exists } from "@xylabs/exists";
272
+ import { useWeakModulesFromNode } from "@xyo-network/react-node";
273
+ import { asSentinelInstance as asSentinelInstance2 } from "@xyo-network/sentinel-model";
274
+ var useWeakSentinelsFromNode = /* @__PURE__ */ __name((filter, config) => {
275
+ const [modules, error] = useWeakModulesFromNode(filter, config);
276
+ if (error) {
277
+ return [
278
+ null,
279
+ error
280
+ ];
281
+ }
282
+ return [
283
+ (modules == null ? void 0 : modules.map((mod) => {
284
+ const instance = asSentinelInstance2(mod == null ? void 0 : mod.deref());
285
+ if (instance) {
286
+ return new WeakRef(instance);
287
+ }
288
+ }).filter(exists)) ?? [],
289
+ void 0
290
+ ];
291
+ }, "useWeakSentinelsFromNode");
292
+ export {
293
+ SentinelCard,
294
+ SentinelCardContent,
295
+ SentinelCardHeader,
296
+ SentinelContext,
297
+ SentinelProvider,
298
+ SentinelReportStatus,
299
+ useSentinelContext,
300
+ useSentinelFromNode,
301
+ useSentinelsFromNode,
302
+ useWeakSentinelFromNode,
303
+ useWeakSentinelsFromNode
304
+ };
305
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Card/Card.tsx","../../src/components/Card/CardActions.tsx","../../src/components/Card/CardContent.tsx","../../src/components/Card/CardHeader.tsx","../../src/contexts/Context.ts","../../src/contexts/Provider.tsx","../../src/contexts/State.ts","../../src/contexts/use.ts","../../src/hooks/node/useSentinelFromNode.tsx","../../src/hooks/node/useSentinelsFromNode.tsx","../../src/hooks/node/useWeakSentinelFromNode.tsx","../../src/hooks/node/useWeakSentinelsFromNode.tsx"],"sourcesContent":["import { Card, CardProps } from '@mui/material'\nimport { usePromise } from '@xylabs/react-promise'\nimport { Payload } from '@xyo-network/payload-model'\nimport { ModuleRenderProps } from '@xyo-network/react-module'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\nimport React, { useState } from 'react'\n\nimport { SentinelCardActions } from './CardActions.tsx'\nimport { SentinelCardContent } from './CardContent.tsx'\nimport { SentinelCardHeader } from './CardHeader.tsx'\n\nexport type SentinelCardProps = CardProps &\n ModuleRenderProps<SentinelInstance> & {\n inPayloads?: Payload[]\n }\n\nexport const SentinelCard: React.FC<SentinelCardProps> = ({ children, inPayloads, mod, ...props }) => {\n const [retry, setRetry] = useState(-1)\n const [report] = usePromise(async () => {\n if (retry >= 0) {\n return await mod?.report(inPayloads)\n }\n }, [mod, retry, inPayloads])\n return (\n <Card {...props}>\n <SentinelCardHeader mod={mod} />\n <SentinelCardContent mod={mod} report={report} />\n {children}\n <SentinelCardActions mod={mod} onReport={() => setRetry(retry + 1)} />\n </Card>\n )\n}\n","import { CardActionsProps } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { ModuleCardActions, ModuleRenderProps } from '@xyo-network/react-module'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\nimport React from 'react'\n\nexport type SentinelCardActionsProps = ModuleRenderProps<SentinelInstance> &\n CardActionsProps & {\n onReport?: (mod?: SentinelInstance) => void\n }\n\nexport const SentinelCardActions: React.FC<SentinelCardActionsProps> = ({ onReport, mod, ...props }) => {\n return (\n <ModuleCardActions mod={mod} {...props}>\n <ButtonEx onClick={() => onReport?.(mod)} size=\"small\" variant=\"outlined\">\n Report\n </ButtonEx>\n </ModuleCardActions>\n )\n}\n","import { CardContentProps } from '@mui/material'\nimport { FlexGrowRow } from '@xylabs/react-flexbox'\nimport { Payload } from '@xyo-network/payload-model'\nimport { ModuleCardContent, ModuleRenderProps } from '@xyo-network/react-module'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\nimport React from 'react'\n\nexport type SentinelCardContentProps = ModuleRenderProps<SentinelInstance> &\n CardContentProps & {\n report?: Payload[]\n }\n\nexport const SentinelCardContent: React.FC<SentinelCardContentProps> = ({ children, report, mod, ...props }) => {\n return (\n <ModuleCardContent mod={mod} {...props}>\n <FlexGrowRow flexWrap=\"wrap\" justifyContent=\"start\" gap={2}>\n {report\n ? <JsonViewerEx value={report} />\n : null}\n {children}\n </FlexGrowRow>\n </ModuleCardContent>\n )\n}\n","import { CardHeaderProps } from '@mui/material'\nimport { ModuleCardHeader, ModuleRenderProps } from '@xyo-network/react-module'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\nimport React from 'react'\n\nexport const SentinelCardHeader: React.FC<ModuleRenderProps<SentinelInstance> & CardHeaderProps> = ({ title, mod, ...props }) => {\n return <ModuleCardHeader mod={mod} title={title ?? mod?.config.name ?? 'Sentinel'} {...props} />\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { SentinelContextState } from './State.ts'\n\nexport const SentinelContext = createContextEx<SentinelContextState>()\n","/* eslint-disable unicorn/no-array-push-push */\nimport { 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-model'\nimport { useWitnessesFromNode } from '@xyo-network/react-witness'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { SentinelConfig, SentinelConfigSchema } from '@xyo-network/sentinel-model'\nimport { asWitnessInstance, WitnessInstance } from '@xyo-network/witness-model'\nimport React, { useEffect, useState } from 'react'\n\nimport { SentinelContext } from './Context.ts'\nimport { SentinelReportProgress, SentinelReportStatus } from './State.ts'\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\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 synchronous: true,\n\n tasks: witnesses?.map(mod => ({ mod: mod.address })),\n } as SentinelConfig,\n })\n const offCallbacks: (() => void)[] = []\n offCallbacks.push(\n sentinel.on('reportEnd', ({ mod, 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([new Error(`Witness failed [${mod?.config?.name ?? mod.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 if (witnesses)\n for (const witness of witnesses) {\n offCallbacks.push(\n witness.on('observeEnd', ({ mod, outPayloads }) => {\n const witnesses = progress.witnesses ?? {}\n witnesses[witness.address] = {\n status: outPayloads?.length ? SentinelReportStatus.Succeeded : SentinelReportStatus.Failed,\n witness: asWitnessInstance(mod, () => `Module is not a witness [${mod.id}]`),\n }\n if (mounted()) {\n setProgress({\n archivists: progress.archivists,\n witnesses,\n })\n }\n }),\n )\n offCallbacks.push(\n witness.on('observeStart', ({ mod }) => {\n const witnesses = progress.witnesses ?? {}\n witnesses[witness.address] = {\n status: SentinelReportStatus.Started,\n witness: asWitnessInstance(mod, () => `Module is not a witness [${mod.id}]`),\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 for (const callback of offCallbacks) {\n callback()\n }\n }\n },\n\n [account, archivist, witnesses],\n )\n\n useEffect(() => {\n setHistory(sentinel?.history as BoundWitness[])\n }, [sentinel])\n\n return !required || sentinel\n // eslint-disable-next-line @eslint-react/no-unstable-context-value\n ? <SentinelContext.Provider value={{ history, progress, provided: true, reportingErrors, sentinel, status }}>{children}</SentinelContext.Provider>\n : null\n}\n","import { ArchivistModule } from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { SentinelModule } from '@xyo-network/sentinel-model'\nimport { WitnessModule } from '@xyo-network/witness-model'\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.ts'\n\nexport const useSentinelContext = () => {\n const { sentinel, history, progress, reportingErrors, status } = useContextEx(SentinelContext, 'Sentinel')\n return { history, progress, reportingErrors, sentinel, status }\n}\n","import { ModuleFromNodeConfig, useModuleFromNode } from '@xyo-network/react-node'\nimport { asSentinelInstance, SentinelInstance } from '@xyo-network/sentinel-model'\n\nexport const useSentinelFromNode = (\n nameOrAddressOrInstance?: string | SentinelInstance,\n config?: ModuleFromNodeConfig,\n): [SentinelInstance | undefined, Error | undefined] => {\n const [mod, error] = useModuleFromNode(nameOrAddressOrInstance, config)\n const instance = asSentinelInstance(mod)\n if (mod && !instance) {\n const error = new Error(`Resolved module is not a SentinelInstance [${mod.config?.schema}:${mod.config?.name}:${mod.address}]`)\n console.error(error.message)\n return [undefined, error]\n }\n return [instance, error]\n}\n","import { ModuleFilter } from '@xyo-network/module-model'\nimport { ModuleFromNodeConfig, useModulesFromNode } from '@xyo-network/react-node'\nimport { isSentinelInstance, SentinelInstance } from '@xyo-network/sentinel-model'\n\nexport const useSentinelsFromNode = (\n filter?: ModuleFilter,\n config?: ModuleFromNodeConfig,\n): [SentinelInstance[] | null | undefined, Error | undefined] => {\n const [modules, error] = useModulesFromNode(filter, config)\n if (error) {\n return [null, error]\n }\n return modules\n ? [\n // eslint-disable-next-line unicorn/no-array-reduce\n modules.reduce<SentinelInstance[]>((prev, mod) => {\n if (isSentinelInstance(mod)) {\n prev.push(mod)\n }\n return prev\n }, []),\n undefined,\n ]\n : [modules, error]\n}\n","import { useWeakModuleFromNode, WeakModuleFromNodeConfig } from '@xyo-network/react-node'\nimport { isSentinelInstance, SentinelInstance } from '@xyo-network/sentinel-model'\n\nexport const useWeakSentinelFromNode = (\n nameOrAddressOrInstance?: string | SentinelInstance,\n config?: WeakModuleFromNodeConfig,\n): [WeakRef<SentinelInstance> | undefined, Error | undefined] => {\n return useWeakModuleFromNode<SentinelInstance>(nameOrAddressOrInstance, { identity: isSentinelInstance, ...config })\n}\n","import { exists } from '@xylabs/exists'\nimport { ModuleFilter } from '@xyo-network/module-model'\nimport { ModuleFromNodeConfig, useWeakModulesFromNode } from '@xyo-network/react-node'\nimport { asSentinelInstance, SentinelInstance } from '@xyo-network/sentinel-model'\n\nexport const useWeakSentinelsFromNode = (\n filter?: ModuleFilter,\n config?: ModuleFromNodeConfig,\n): [WeakRef<SentinelInstance>[] | null | undefined, Error | undefined] => {\n const [modules, error] = useWeakModulesFromNode(filter, config)\n if (error) {\n return [null, error]\n }\n return [\n modules\n ?.map((mod) => {\n const instance = asSentinelInstance(mod?.deref())\n if (instance) {\n return new WeakRef(instance)\n }\n })\n .filter(exists) ?? [],\n undefined,\n ]\n}\n"],"mappings":"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","names":["Card","usePromise","React","useState","ButtonEx","ModuleCardActions","React","SentinelCardActions","onReport","mod","props","ModuleCardActions","ButtonEx","onClick","size","variant","FlexGrowRow","ModuleCardContent","JsonViewerEx","React","SentinelCardContent","children","report","mod","props","React","ModuleCardContent","FlexGrowRow","flexWrap","justifyContent","gap","JsonViewerEx","value","ModuleCardHeader","React","SentinelCardHeader","title","mod","props","React","ModuleCardHeader","config","name","SentinelCard","children","inPayloads","mod","props","retry","setRetry","useState","report","usePromise","React","Card","SentinelCardHeader","SentinelCardContent","SentinelCardActions","onReport","createContextEx","SentinelContext","useAsyncEffect","useWitnessesFromNode","MemorySentinel","SentinelConfigSchema","asWitnessInstance","React","useEffect","useState","SentinelReportStatus","SentinelProvider","account","archivist","children","filter","name","required","sentinel","setSentinel","useState","history","setHistory","progress","setProgress","status","setStatus","SentinelReportStatus","Idle","reportingErrors","setReportingErrors","witnesses","useWitnessesFromNode","useAsyncEffect","mounted","MemorySentinel","create","config","archivists","undefined","schema","SentinelConfigSchema","synchronous","tasks","map","mod","address","offCallbacks","push","on","outPayloads","length","Succeeded","Failed","Error","Started","witness","asWitnessInstance","id","callback","useEffect","React","SentinelContext","Provider","value","provided","useContextEx","useSentinelContext","sentinel","history","progress","reportingErrors","status","useContextEx","SentinelContext","useModuleFromNode","asSentinelInstance","useSentinelFromNode","nameOrAddressOrInstance","config","mod","error","useModuleFromNode","instance","asSentinelInstance","Error","schema","name","address","console","message","undefined","useModulesFromNode","isSentinelInstance","useSentinelsFromNode","filter","config","modules","error","useModulesFromNode","reduce","prev","mod","isSentinelInstance","push","undefined","useWeakModuleFromNode","isSentinelInstance","useWeakSentinelFromNode","nameOrAddressOrInstance","config","useWeakModuleFromNode","identity","isSentinelInstance","exists","useWeakModulesFromNode","asSentinelInstance","useWeakSentinelsFromNode","filter","config","modules","error","useWeakModulesFromNode","map","mod","instance","asSentinelInstance","deref","WeakRef","exists","undefined"]}
package/package.json CHANGED
@@ -10,35 +10,35 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/exists": "^3.6.4",
14
- "@xylabs/react-async-effect": "^3.4.1",
15
- "@xylabs/react-button": "^3.4.1",
16
- "@xylabs/react-flexbox": "^3.4.1",
17
- "@xylabs/react-promise": "^3.4.1",
18
- "@xylabs/react-shared": "^3.4.1",
19
- "@xyo-network/account-model": "^2.110.9",
20
- "@xyo-network/archivist-model": "^2.110.9",
21
- "@xyo-network/boundwitness-model": "^2.110.9",
22
- "@xyo-network/module-model": "^2.110.9",
23
- "@xyo-network/payload-model": "^2.110.9",
24
- "@xyo-network/react-module": "^2.81.10",
25
- "@xyo-network/react-node": "^2.81.10",
26
- "@xyo-network/react-payload-raw-info": "^2.81.10",
27
- "@xyo-network/react-shared": "^2.81.10",
28
- "@xyo-network/react-witness": "^2.81.10",
29
- "@xyo-network/sentinel-memory": "^2.110.9",
30
- "@xyo-network/sentinel-model": "^2.110.9",
31
- "@xyo-network/witness-model": "^2.110.9"
13
+ "@xylabs/exists": "^3.6.12",
14
+ "@xylabs/react-async-effect": "^3.4.2",
15
+ "@xylabs/react-button": "^3.4.2",
16
+ "@xylabs/react-flexbox": "^3.4.2",
17
+ "@xylabs/react-promise": "^3.4.2",
18
+ "@xylabs/react-shared": "^3.4.2",
19
+ "@xyo-network/account-model": "^2.111.3",
20
+ "@xyo-network/archivist-model": "^2.111.3",
21
+ "@xyo-network/boundwitness-model": "^2.111.3",
22
+ "@xyo-network/module-model": "^2.111.3",
23
+ "@xyo-network/payload-model": "^2.111.3",
24
+ "@xyo-network/react-module": "^2.82.0",
25
+ "@xyo-network/react-node": "^2.82.0",
26
+ "@xyo-network/react-payload-raw-info": "^2.82.0",
27
+ "@xyo-network/react-shared": "^2.82.0",
28
+ "@xyo-network/react-witness": "^2.82.0",
29
+ "@xyo-network/sentinel-memory": "^2.111.3",
30
+ "@xyo-network/sentinel-model": "^2.111.3",
31
+ "@xyo-network/witness-model": "^2.111.3"
32
32
  },
33
33
  "devDependencies": {
34
- "@storybook/react": "^7.6.20",
35
- "@xylabs/ts-scripts-yarn3": "^3.12.4",
36
- "@xylabs/tsconfig-react": "^3.12.4",
37
- "@xyo-network/account": "^2.110.9",
38
- "@xyo-network/evm-call-witness": "^2.99.4",
39
- "@xyo-network/manifest": "^2.110.9",
40
- "@xyo-network/module-factory-locator": "^2.110.9",
41
- "ethers": "^6.13.1",
34
+ "@storybook/react": "^8.2.7",
35
+ "@xylabs/ts-scripts-yarn3": "^3.15.16",
36
+ "@xylabs/tsconfig-react": "^3.15.16",
37
+ "@xyo-network/account": "^2.111.3",
38
+ "@xyo-network/evm-call-witness": "^2.99.6",
39
+ "@xyo-network/manifest": "^2.111.3",
40
+ "@xyo-network/module-factory-locator": "^2.111.3",
41
+ "ethers": "^6.13.2",
42
42
  "typescript": "^5.5.4"
43
43
  },
44
44
  "peerDependencies": {
@@ -63,7 +63,7 @@
63
63
  "node": {
64
64
  "import": {
65
65
  "types": "./dist/node/index.d.mts",
66
- "default": "./dist/node/index.js"
66
+ "default": "./dist/node/index.mjs"
67
67
  },
68
68
  "require": {
69
69
  "types": "./dist/node/index.d.cts",
@@ -73,19 +73,19 @@
73
73
  "browser": {
74
74
  "import": {
75
75
  "types": "./dist/browser/index.d.mts",
76
- "default": "./dist/browser/index.js"
76
+ "default": "./dist/browser/index.mjs"
77
77
  },
78
78
  "require": {
79
79
  "types": "./dist/browser/index.d.cts",
80
80
  "default": "./dist/browser/index.cjs"
81
81
  }
82
82
  },
83
- "default": "./dist/browser/index.js"
83
+ "default": "./dist/browser/index.mjs"
84
84
  },
85
85
  "./package.json": "./package.json"
86
86
  },
87
87
  "main": "dist/browser/index.cjs",
88
- "module": "dist/browser/index.js",
88
+ "module": "dist/browser/index.mjs",
89
89
  "homepage": "https://xyo.network",
90
90
  "keywords": [
91
91
  "xyo",
@@ -107,6 +107,6 @@
107
107
  },
108
108
  "sideEffects": false,
109
109
  "types": "dist/browser/index.d.ts",
110
- "version": "2.81.10",
110
+ "version": "2.82.0",
111
111
  "type": "module"
112
112
  }
@@ -8,8 +8,9 @@ import { ModuleFactoryLocator } from '@xyo-network/module-factory-locator'
8
8
  import { ModuleFactory } from '@xyo-network/module-model'
9
9
  import { asSentinelInstance, ReportEndEventArgs } from '@xyo-network/sentinel-model'
10
10
  import { InfuraProvider } from 'ethers'
11
+ import React from 'react'
11
12
 
12
- import { SentinelCard } from './Card.js'
13
+ import { SentinelCard } from './Card.tsx'
13
14
  import NftSentinelManifest from './NftSentinel.json'
14
15
 
15
16
  const loadFromManifest = async () => {
@@ -73,7 +74,7 @@ const NftSentinelTemplate: StoryFn<typeof SentinelCard> = () => {
73
74
 
74
75
  const inPayloads = [
75
76
  {
76
- address: '0x562fC2927c77cB975680088566ADa1dC6cB8b5Ea', //Random ERC721
77
+ address: '0x562fC2927c77cB975680088566ADa1dC6cB8b5Ea', // Random ERC721
77
78
  schema: EvmCallWitnessConfigSchema,
78
79
  },
79
80
  ]
@@ -111,7 +112,7 @@ const NftTokensSentinelTemplate: StoryFn<typeof SentinelCard> = () => {
111
112
  console.log(`inPayloads: ${inPayloads?.length}`)
112
113
  console.log(`outPayloads: ${outPayloads?.length}`)
113
114
  const calls = Array(1000).map((_, index) => ({
114
- address: '0x562fC2927c77cB975680088566ADa1dC6cB8b5Ea', //Random ERC721
115
+ address: '0x562fC2927c77cB975680088566ADa1dC6cB8b5Ea', // Random ERC721
115
116
  params: [index],
116
117
  schema: EvmCallWitnessConfigSchema,
117
118
  }))
@@ -123,7 +124,7 @@ const NftTokensSentinelTemplate: StoryFn<typeof SentinelCard> = () => {
123
124
 
124
125
  const inPayloads = [
125
126
  {
126
- address: '0x562fC2927c77cB975680088566ADa1dC6cB8b5Ea', //Random ERC721
127
+ address: '0x562fC2927c77cB975680088566ADa1dC6cB8b5Ea', // Random ERC721
127
128
  schema: EvmCallWitnessConfigSchema,
128
129
  },
129
130
  ]
@@ -131,7 +132,7 @@ const NftTokensSentinelTemplate: StoryFn<typeof SentinelCard> = () => {
131
132
  return (
132
133
  <FlexCol gap={2}>
133
134
  <SentinelCard mod={contractSentinel} inPayloads={inPayloads} />
134
- {/*tokens ? <JsonViewerEx value={tokens} /> : null*/}
135
+ {/* tokens ? <JsonViewerEx value={tokens} /> : null */}
135
136
  </FlexCol>
136
137
  )
137
138
  }
@@ -140,5 +141,4 @@ const NftTokensSentinelCard = NftTokensSentinelTemplate.bind({})
140
141
 
141
142
  export { NftSentinelCard, NftTokensSentinelCard }
142
143
 
143
- // eslint-disable-next-line import/no-default-export
144
144
  export default StorybookEntry
@@ -3,11 +3,11 @@ import { usePromise } from '@xylabs/react-promise'
3
3
  import { Payload } from '@xyo-network/payload-model'
4
4
  import { ModuleRenderProps } from '@xyo-network/react-module'
5
5
  import { SentinelInstance } from '@xyo-network/sentinel-model'
6
- import { useState } from 'react'
6
+ import React, { useState } from 'react'
7
7
 
8
- import { SentinelCardActions } from './CardActions.js'
9
- import { SentinelCardContent } from './CardContent.js'
10
- import { SentinelCardHeader } from './CardHeader.js'
8
+ import { SentinelCardActions } from './CardActions.tsx'
9
+ import { SentinelCardContent } from './CardContent.tsx'
10
+ import { SentinelCardHeader } from './CardHeader.tsx'
11
11
 
12
12
  export type SentinelCardProps = CardProps &
13
13
  ModuleRenderProps<SentinelInstance> & {
@@ -2,6 +2,7 @@ import { CardActionsProps } from '@mui/material'
2
2
  import { ButtonEx } from '@xylabs/react-button'
3
3
  import { ModuleCardActions, ModuleRenderProps } from '@xyo-network/react-module'
4
4
  import { SentinelInstance } from '@xyo-network/sentinel-model'
5
+ import React from 'react'
5
6
 
6
7
  export type SentinelCardActionsProps = ModuleRenderProps<SentinelInstance> &
7
8
  CardActionsProps & {
@@ -11,7 +12,7 @@ export type SentinelCardActionsProps = ModuleRenderProps<SentinelInstance> &
11
12
  export const SentinelCardActions: React.FC<SentinelCardActionsProps> = ({ onReport, mod, ...props }) => {
12
13
  return (
13
14
  <ModuleCardActions mod={mod} {...props}>
14
- <ButtonEx onClick={() => onReport?.(mod)} size={'small'} variant={'outlined'}>
15
+ <ButtonEx onClick={() => onReport?.(mod)} size="small" variant="outlined">
15
16
  Report
16
17
  </ButtonEx>
17
18
  </ModuleCardActions>
@@ -15,9 +15,9 @@ export const SentinelCardContent: React.FC<SentinelCardContentProps> = ({ childr
15
15
  return (
16
16
  <ModuleCardContent mod={mod} {...props}>
17
17
  <FlexGrowRow flexWrap="wrap" justifyContent="start" gap={2}>
18
- {report ?
19
- <JsonViewerEx value={report} />
20
- : null}
18
+ {report
19
+ ? <JsonViewerEx value={report} />
20
+ : null}
21
21
  {children}
22
22
  </FlexGrowRow>
23
23
  </ModuleCardContent>
@@ -1,6 +1,7 @@
1
1
  import { CardHeaderProps } from '@mui/material'
2
2
  import { ModuleCardHeader, ModuleRenderProps } from '@xyo-network/react-module'
3
3
  import { SentinelInstance } from '@xyo-network/sentinel-model'
4
+ import React from 'react'
4
5
 
5
6
  export const SentinelCardHeader: React.FC<ModuleRenderProps<SentinelInstance> & CardHeaderProps> = ({ title, mod, ...props }) => {
6
7
  return <ModuleCardHeader mod={mod} title={title ?? mod?.config.name ?? 'Sentinel'} {...props} />
@@ -1,3 +1,3 @@
1
- export * from './Card.js'
2
- export * from './CardContent.js'
3
- export * from './CardHeader.js'
1
+ export * from './Card.tsx'
2
+ export * from './CardContent.tsx'
3
+ export * from './CardHeader.tsx'
@@ -1 +1 @@
1
- export * from './Card/index.js'
1
+ export * from './Card/index.ts'
@@ -1,5 +1,5 @@
1
1
  import { createContextEx } from '@xyo-network/react-shared'
2
2
 
3
- import { SentinelContextState } from './State.js'
3
+ import { SentinelContextState } from './State.ts'
4
4
 
5
5
  export const SentinelContext = createContextEx<SentinelContextState>()
@@ -8,10 +8,10 @@ import { useWitnessesFromNode } from '@xyo-network/react-witness'
8
8
  import { MemorySentinel } from '@xyo-network/sentinel-memory'
9
9
  import { SentinelConfig, SentinelConfigSchema } from '@xyo-network/sentinel-model'
10
10
  import { asWitnessInstance, WitnessInstance } from '@xyo-network/witness-model'
11
- import { useEffect, useState } from 'react'
11
+ import React, { useEffect, useState } from 'react'
12
12
 
13
- import { SentinelContext } from './Context.js'
14
- import { SentinelReportProgress, SentinelReportStatus } from './State.js'
13
+ import { SentinelContext } from './Context.ts'
14
+ import { SentinelReportProgress, SentinelReportStatus } from './State.ts'
15
15
 
16
16
  export interface SentinelProviderProps {
17
17
  /** Account used by the sentinel for signing */
@@ -34,7 +34,7 @@ export const SentinelProvider: React.FC<WithChildren<SentinelProviderProps>> = (
34
34
  const [witnesses] = useWitnessesFromNode(filter)
35
35
 
36
36
  useAsyncEffect(
37
- // eslint-disable-next-line react-hooks/exhaustive-deps
37
+
38
38
  async (mounted) => {
39
39
  const sentinel = await MemorySentinel.create({
40
40
  account,
@@ -44,8 +44,8 @@ export const SentinelProvider: React.FC<WithChildren<SentinelProviderProps>> = (
44
44
 
45
45
  schema: SentinelConfigSchema,
46
46
  synchronous: true,
47
- // eslint-disable-next-line id-denylist
48
- tasks: witnesses?.map((mod) => ({ mod: mod.address })),
47
+
48
+ tasks: witnesses?.map(mod => ({ mod: mod.address })),
49
49
  } as SentinelConfig,
50
50
  })
51
51
  const offCallbacks: (() => void)[] = []
@@ -104,13 +104,13 @@ export const SentinelProvider: React.FC<WithChildren<SentinelProviderProps>> = (
104
104
  }
105
105
  setSentinel(sentinel as MemorySentinel)
106
106
  return () => {
107
- //unsubscribe from events
107
+ // unsubscribe from events
108
108
  for (const callback of offCallbacks) {
109
109
  callback()
110
110
  }
111
111
  }
112
112
  },
113
- // eslint-disable-next-line react-hooks/exhaustive-deps
113
+
114
114
  [account, archivist, witnesses],
115
115
  )
116
116
 
@@ -118,7 +118,8 @@ export const SentinelProvider: React.FC<WithChildren<SentinelProviderProps>> = (
118
118
  setHistory(sentinel?.history as BoundWitness[])
119
119
  }, [sentinel])
120
120
 
121
- return !required || sentinel ?
122
- <SentinelContext.Provider value={{ history, progress, provided: true, reportingErrors, sentinel, status }}>{children}</SentinelContext.Provider>
121
+ return !required || sentinel
122
+ // eslint-disable-next-line @eslint-react/no-unstable-context-value
123
+ ? <SentinelContext.Provider value={{ history, progress, provided: true, reportingErrors, sentinel, status }}>{children}</SentinelContext.Provider>
123
124
  : null
124
125
  }