@xyo-network/react-sentinel 7.6.3 → 8.0.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.
@@ -1 +1 @@
1
- {"version":3,"file":"CardContent.d.ts","sourceRoot":"","sources":["../../../../src/components/Card/CardContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAGlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,GACtE,gBAAgB,GAAG;IACnB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;CACnB,CAAA;AAEH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAalE,CAAA"}
1
+ {"version":3,"file":"CardContent.d.ts","sourceRoot":"","sources":["../../../../src/components/Card/CardContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAGlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,GACtE,gBAAgB,GAAG;IACnB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;CACnB,CAAA;AAEH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAmBlE,CAAA"}
@@ -26,10 +26,20 @@ var SentinelCardContent = ({
26
26
  mod,
27
27
  ...props
28
28
  }) => {
29
- return /* @__PURE__ */ jsx2(ModuleCardContent, { mod, ...props, children: /* @__PURE__ */ jsxs(FlexGrowRow, { flexWrap: "wrap", justifyContent: "start", gap: 2, children: [
30
- report ? /* @__PURE__ */ jsx2(JsonViewerEx, { value: report }) : null,
31
- children
32
- ] }) });
29
+ return /* @__PURE__ */ jsx2(ModuleCardContent, { mod, ...props, children: /* @__PURE__ */ jsxs(
30
+ FlexGrowRow,
31
+ {
32
+ sx: {
33
+ flexWrap: "wrap",
34
+ justifyContent: "start",
35
+ gap: 2
36
+ },
37
+ children: [
38
+ report ? /* @__PURE__ */ jsx2(JsonViewerEx, { value: report }) : null,
39
+ children
40
+ ]
41
+ }
42
+ ) });
33
43
  };
34
44
 
35
45
  // src/components/Card/CardHeader.tsx
@@ -277,4 +287,4 @@ export {
277
287
  useWeakSentinelFromNode,
278
288
  useWeakSentinelsFromNode
279
289
  };
280
- //# sourceMappingURL=index.mjs.map
290
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1,7 @@
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 type { CardProps } from '@mui/material'\nimport { Card } from '@mui/material'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { ModuleRenderProps } from '@xyo-network/react-module'\nimport type { 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> = ({\n children, inPayloads, mod, ...props\n}) => {\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 type { CardActionsProps } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport type { ModuleRenderProps } from '@xyo-network/react-module'\nimport { ModuleCardActions } from '@xyo-network/react-module'\nimport type { 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> = ({\n onReport, mod, ...props\n}) => {\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 type { CardContentProps } from '@mui/material'\nimport { FlexGrowRow } from '@xylabs/react-flexbox'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { ModuleRenderProps } from '@xyo-network/react-module'\nimport { ModuleCardContent } from '@xyo-network/react-module'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\nimport type { 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> = ({\n children, report, mod, ...props\n}) => {\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 type { CardHeaderProps } from '@mui/material'\nimport type { ModuleRenderProps } from '@xyo-network/react-module'\nimport { ModuleCardHeader } from '@xyo-network/react-module'\nimport type { SentinelInstance } from '@xyo-network/sentinel-model'\nimport React from 'react'\n\nexport const SentinelCardHeader: React.FC<ModuleRenderProps<SentinelInstance> & CardHeaderProps> = ({\n title, mod, ...props\n}) => {\n return <ModuleCardHeader mod={mod} title={title ?? mod?.config.name ?? 'Sentinel'} {...props} />\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { SentinelContextState } from './State.ts'\n\nexport const SentinelContext = createContextEx<SentinelContextState>()\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\nimport { useWitnessesFromNode } from '@xyo-network/react-witness'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport type { SentinelConfig } from '@xyo-network/sentinel-model'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\nimport type { WitnessInstance } from '@xyo-network/witness-model'\nimport { asWitnessInstance } from '@xyo-network/witness-model'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { SentinelContext } from './Context.ts'\nimport type { SentinelContextState, SentinelReportProgress } from './State.ts'\nimport { 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 ids?: ModuleIdentifier[]\n name?: string\n required?: boolean\n witnesses?: WitnessInstance[]\n}\n\nexport const SentinelProvider: React.FC<PropsWithChildren<SentinelProviderProps>> = ({\n account, archivist, children, ids, name, required = false,\n}) => {\n const [sentinel, setSentinel] = useState<MemorySentinel>()\n const [history, setHistory] = useState<BoundWitness[]>()\n const [progress, setProgress] = useState<SentinelReportProgress>({})\n const [status, setStatus] = useState<SentinelReportStatus>(SentinelReportStatus.Idle)\n const [reportingErrors, setReportingErrors] = useState<Error[]>()\n const [witnesses] = useWitnessesFromNode(ids)\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 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 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}]`, { required: true }),\n }\n if (mounted()) {\n setProgress({\n archivists: progress.archivists,\n witnesses,\n })\n }\n }),\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}]`, { required: true }),\n }\n if (mounted()) {\n setProgress({\n archivists: progress.archivists,\n witnesses,\n })\n }\n }),\n )\n }\n setSentinel(sentinel as MemorySentinel)\n setHistory(sentinel?.history as BoundWitness[])\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 const value: SentinelContextState = useMemo(() => ({\n history, progress, provided: true, reportingErrors, sentinel, status,\n }), [history, progress, reportingErrors, sentinel, status])\n\n return !required || sentinel\n\n ? (\n <SentinelContext value={value}>\n {children}\n </SentinelContext>\n )\n : null\n}\n","import type { ContextExState } from '@xylabs/react-shared'\nimport type { EnumValue } from '@xylabs/sdk-js'\nimport { Enum } from '@xylabs/sdk-js'\nimport type { ArchivistModuleInstance } from '@xyo-network/archivist-model'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport type { SentinelModule } from '@xyo-network/sentinel-model'\nimport type { WitnessModule } from '@xyo-network/witness-model'\n\nexport const SentinelReportStatus = Enum({\n Idle: 'idle',\n Queued: 'queued',\n Started: 'started',\n Succeeded: 'succeeded',\n Failed: 'failed',\n})\n\nexport type SentinelReportStatus = EnumValue<typeof SentinelReportStatus>\n\nexport interface SentinelWitnessReportProgress {\n status: SentinelReportStatus\n witness: WitnessModule\n}\n\nexport interface SentinelArchivistApiReportProgress {\n archivist: ArchivistModuleInstance\n status: SentinelReportStatus\n}\n\nexport interface SentinelReportProgress {\n archivists?: Record<string, SentinelArchivistApiReportProgress>\n witnesses?: Record<string, SentinelWitnessReportProgress>\n}\n\nexport type SentinelContextState = ContextExState<{\n history?: BoundWitness[]\n progress?: SentinelReportProgress\n reportingErrors?: Error[]\n sentinel?: SentinelModule\n status?: SentinelReportStatus\n}>\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { SentinelContext } from './Context.ts'\n\nexport const useSentinelContext = () => {\n const {\n sentinel, history, progress, reportingErrors, status,\n } = useContextEx(SentinelContext, 'Sentinel')\n return {\n history, progress, reportingErrors, sentinel, status,\n }\n}\n","import type { ModuleFromNodeConfig } from '@xyo-network/react-node'\nimport { useModuleFromNode } from '@xyo-network/react-node'\nimport type { SentinelInstance } from '@xyo-network/sentinel-model'\nimport { asSentinelInstance } 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 type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { ModuleFromNodeConfig } from '@xyo-network/react-node'\nimport { useModulesFromNode } from '@xyo-network/react-node'\nimport type { SentinelInstance } from '@xyo-network/sentinel-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\n\nexport const useSentinelsFromNode = (\n ids?: ModuleIdentifier[],\n config?: ModuleFromNodeConfig,\n): [SentinelInstance[] | null | undefined, Error | undefined] => {\n const [modules, error] = useModulesFromNode(ids, 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 type { WeakModuleFromNodeConfig } from '@xyo-network/react-node'\nimport { useWeakModuleFromNode } from '@xyo-network/react-node'\nimport type { SentinelInstance } from '@xyo-network/sentinel-model'\nimport { isSentinelInstance } 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/sdk-js'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { ModuleFromNodeConfig } from '@xyo-network/react-node'\nimport { useWeakModulesFromNode } from '@xyo-network/react-node'\nimport type { SentinelInstance } from '@xyo-network/sentinel-model'\nimport { asSentinelInstance } from '@xyo-network/sentinel-model'\n\nexport const useWeakSentinelsFromNode = (\n ids?: ModuleIdentifier[],\n config?: ModuleFromNodeConfig,\n): [WeakRef<SentinelInstance>[] | null | undefined, Error | undefined] => {\n const [modules, error] = useWeakModulesFromNode(ids, 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":["jsx","jsx","jsx","jsxs","useState","jsx","useState","sentinel","witnesses","error","isSentinelInstance","asSentinelInstance"]}
1
+ {
2
+ "version": 3,
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"],
4
+ "sourcesContent": ["import type { CardProps } from '@mui/material'\nimport { Card } from '@mui/material'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { ModuleRenderProps } from '@xyo-network/react-module'\nimport type { 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> = ({\n children, inPayloads, mod, ...props\n}) => {\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 type { CardActionsProps } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport type { ModuleRenderProps } from '@xyo-network/react-module'\nimport { ModuleCardActions } from '@xyo-network/react-module'\nimport type { 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> = ({\n onReport, mod, ...props\n}) => {\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 type { CardContentProps } from '@mui/material'\nimport { FlexGrowRow } from '@xylabs/react-flexbox'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { ModuleRenderProps } from '@xyo-network/react-module'\nimport { ModuleCardContent } from '@xyo-network/react-module'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\nimport type { 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> = ({\n children, report, mod, ...props\n}) => {\n return (\n <ModuleCardContent mod={mod} {...props}>\n <FlexGrowRow\n sx={{\n flexWrap: 'wrap',\n justifyContent: 'start',\n gap: 2,\n }}\n >\n {report\n ? <JsonViewerEx value={report} />\n : null}\n {children}\n </FlexGrowRow>\n </ModuleCardContent>\n )\n}\n", "import type { CardHeaderProps } from '@mui/material'\nimport type { ModuleRenderProps } from '@xyo-network/react-module'\nimport { ModuleCardHeader } from '@xyo-network/react-module'\nimport type { SentinelInstance } from '@xyo-network/sentinel-model'\nimport React from 'react'\n\nexport const SentinelCardHeader: React.FC<ModuleRenderProps<SentinelInstance> & CardHeaderProps> = ({\n title, mod, ...props\n}) => {\n return <ModuleCardHeader mod={mod} title={title ?? mod?.config.name ?? 'Sentinel'} {...props} />\n}\n", "import { createContextEx } from '@xylabs/react-shared'\n\nimport type { SentinelContextState } from './State.ts'\n\nexport const SentinelContext = createContextEx<SentinelContextState>()\n", "import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\nimport { useWitnessesFromNode } from '@xyo-network/react-witness'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport type { SentinelConfig } from '@xyo-network/sentinel-model'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\nimport type { WitnessInstance } from '@xyo-network/witness-model'\nimport { asWitnessInstance } from '@xyo-network/witness-model'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { SentinelContext } from './Context.ts'\nimport type { SentinelContextState, SentinelReportProgress } from './State.ts'\nimport { 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 ids?: ModuleIdentifier[]\n name?: string\n required?: boolean\n witnesses?: WitnessInstance[]\n}\n\nexport const SentinelProvider: React.FC<PropsWithChildren<SentinelProviderProps>> = ({\n account, archivist, children, ids, name, required = false,\n}) => {\n const [sentinel, setSentinel] = useState<MemorySentinel>()\n const [history, setHistory] = useState<BoundWitness[]>()\n const [progress, setProgress] = useState<SentinelReportProgress>({})\n const [status, setStatus] = useState<SentinelReportStatus>(SentinelReportStatus.Idle)\n const [reportingErrors, setReportingErrors] = useState<Error[]>()\n const [witnesses] = useWitnessesFromNode(ids)\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 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 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}]`, { required: true }),\n }\n if (mounted()) {\n setProgress({\n archivists: progress.archivists,\n witnesses,\n })\n }\n }),\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}]`, { required: true }),\n }\n if (mounted()) {\n setProgress({\n archivists: progress.archivists,\n witnesses,\n })\n }\n }),\n )\n }\n setSentinel(sentinel as MemorySentinel)\n setHistory(sentinel?.history as BoundWitness[])\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 const value: SentinelContextState = useMemo(() => ({\n history, progress, provided: true, reportingErrors, sentinel, status,\n }), [history, progress, reportingErrors, sentinel, status])\n\n return !required || sentinel\n\n ? (\n <SentinelContext value={value}>\n {children}\n </SentinelContext>\n )\n : null\n}\n", "import type { ContextExState } from '@xylabs/react-shared'\nimport type { EnumValue } from '@xylabs/sdk-js'\nimport { Enum } from '@xylabs/sdk-js'\nimport type { ArchivistModuleInstance } from '@xyo-network/archivist-model'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport type { SentinelModule } from '@xyo-network/sentinel-model'\nimport type { WitnessModule } from '@xyo-network/witness-model'\n\nexport const SentinelReportStatus = Enum({\n Idle: 'idle',\n Queued: 'queued',\n Started: 'started',\n Succeeded: 'succeeded',\n Failed: 'failed',\n})\n\nexport type SentinelReportStatus = EnumValue<typeof SentinelReportStatus>\n\nexport interface SentinelWitnessReportProgress {\n status: SentinelReportStatus\n witness: WitnessModule\n}\n\nexport interface SentinelArchivistApiReportProgress {\n archivist: ArchivistModuleInstance\n status: SentinelReportStatus\n}\n\nexport interface SentinelReportProgress {\n archivists?: Record<string, SentinelArchivistApiReportProgress>\n witnesses?: Record<string, SentinelWitnessReportProgress>\n}\n\nexport type SentinelContextState = ContextExState<{\n history?: BoundWitness[]\n progress?: SentinelReportProgress\n reportingErrors?: Error[]\n sentinel?: SentinelModule\n status?: SentinelReportStatus\n}>\n", "import { useContextEx } from '@xylabs/react-shared'\n\nimport { SentinelContext } from './Context.ts'\n\nexport const useSentinelContext = () => {\n const {\n sentinel, history, progress, reportingErrors, status,\n } = useContextEx(SentinelContext, 'Sentinel')\n return {\n history, progress, reportingErrors, sentinel, status,\n }\n}\n", "import type { ModuleFromNodeConfig } from '@xyo-network/react-node'\nimport { useModuleFromNode } from '@xyo-network/react-node'\nimport type { SentinelInstance } from '@xyo-network/sentinel-model'\nimport { asSentinelInstance } 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 type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { ModuleFromNodeConfig } from '@xyo-network/react-node'\nimport { useModulesFromNode } from '@xyo-network/react-node'\nimport type { SentinelInstance } from '@xyo-network/sentinel-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\n\nexport const useSentinelsFromNode = (\n ids?: ModuleIdentifier[],\n config?: ModuleFromNodeConfig,\n): [SentinelInstance[] | null | undefined, Error | undefined] => {\n const [modules, error] = useModulesFromNode(ids, 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 type { WeakModuleFromNodeConfig } from '@xyo-network/react-node'\nimport { useWeakModuleFromNode } from '@xyo-network/react-node'\nimport type { SentinelInstance } from '@xyo-network/sentinel-model'\nimport { isSentinelInstance } 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/sdk-js'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { ModuleFromNodeConfig } from '@xyo-network/react-node'\nimport { useWeakModulesFromNode } from '@xyo-network/react-node'\nimport type { SentinelInstance } from '@xyo-network/sentinel-model'\nimport { asSentinelInstance } from '@xyo-network/sentinel-model'\n\nexport const useWeakSentinelsFromNode = (\n ids?: ModuleIdentifier[],\n config?: ModuleFromNodeConfig,\n): [WeakRef<SentinelInstance>[] | null | undefined, Error | undefined] => {\n const [modules, error] = useWeakModulesFromNode(ids, 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"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsx", "jsx", "jsxs", "useState", "jsx", "useState", "sentinel", "witnesses", "error", "isSentinelInstance", "asSentinelInstance"]
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/react-sentinel",
3
- "version": "7.6.3",
3
+ "version": "8.0.1",
4
4
  "description": "Common React library for all XYO projects that use React",
5
5
  "keywords": [
6
6
  "xyo",
@@ -41,43 +41,41 @@
41
41
  "README.md"
42
42
  ],
43
43
  "dependencies": {
44
- "@xyo-network/react-module": "~7.6.3",
45
- "@xyo-network/react-node": "~7.6.3",
46
- "@xyo-network/react-payload-raw-info": "~7.6.3",
47
- "@xyo-network/react-witness": "~7.6.3"
44
+ "@xyo-network/react-module": "~8.0.1",
45
+ "@xyo-network/react-payload-raw-info": "~8.0.1",
46
+ "@xyo-network/react-node": "~8.0.1",
47
+ "@xyo-network/react-witness": "~8.0.1"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@bitauth/libauth": "~3.0.0",
51
- "@emotion/react": "^11.14.0",
52
- "@emotion/styled": "^11.14.1",
53
- "@mui/icons-material": "^7.3.11",
54
- "@mui/material": "^7.3.11",
55
- "@mui/system": "^7.3.11",
56
- "@mui/x-tree-view": "~8.27.2",
51
+ "@mui/icons-material": "^9.0.1",
52
+ "@mui/material": "^9.0.1",
53
+ "@mui/system": "^9.0.1",
54
+ "@mui/x-tree-view": "~9.1.0",
57
55
  "@opentelemetry/api": "^1.9.1",
58
56
  "@opentelemetry/sdk-trace-base": "^2.7.1",
59
57
  "@react-spring/web": "~10.0.3",
60
58
  "@scure/base": "~2.2.0",
61
59
  "@scure/bip39": "~2.2.0",
62
- "@storybook/react-vite": "~10.3.6",
63
- "@textea/json-viewer": "~4.0.1",
60
+ "@storybook/react-vite": "~10.4.0",
64
61
  "@types/react": "^19.2.14",
65
- "@xylabs/pixel": "~5.1.2",
66
- "@xylabs/react-async-effect": "~7.2.4",
67
- "@xylabs/react-button": "~7.2.4",
68
- "@xylabs/react-crypto": "~7.2.4",
69
- "@xylabs/react-flexbox": "~7.2.4",
70
- "@xylabs/react-hooks": "~7.2.4",
71
- "@xylabs/react-link": "~7.2.4",
72
- "@xylabs/react-promise": "~7.2.4",
73
- "@xylabs/react-shared": "~7.2.4",
74
- "@xylabs/react-theme": "~7.2.4",
75
- "@xylabs/sdk-js": "^5.1.2",
76
- "@xylabs/threads": "~5.1.2",
77
- "@xylabs/toolchain": "~7.13.15",
78
- "@xylabs/tsconfig": "^7.13.15",
79
- "@xylabs/tsconfig-dom": "^7.13.15",
80
- "@xylabs/tsconfig-react": "~7.13.15",
62
+ "@xylabs/pixel": "~5.1.3",
63
+ "@xylabs/react-async-effect": "~8.0.3",
64
+ "@xylabs/react-button": "~8.0.3",
65
+ "@xylabs/react-crypto": "~8.0.3",
66
+ "@xylabs/react-flexbox": "~8.0.3",
67
+ "@xylabs/react-hooks": "~8.0.3",
68
+ "@xylabs/react-link": "~8.0.3",
69
+ "@xylabs/react-promise": "~8.0.3",
70
+ "@xylabs/react-shared": "~8.0.3",
71
+ "@xylabs/react-theme": "~8.0.3",
72
+ "@xylabs/sdk-js": "^5.1.3",
73
+ "@xylabs/sdk-react": "~8.0.3",
74
+ "@xylabs/threads": "~5.1.3",
75
+ "@xylabs/toolchain": "~8.0.6",
76
+ "@xylabs/tsconfig": "^8.0.6",
77
+ "@xylabs/tsconfig-dom": "^8.0.6",
78
+ "@xylabs/tsconfig-react": "~8.0.6",
81
79
  "@xyo-network/account": "~5.6.2",
82
80
  "@xyo-network/account-model": "^5.6.3",
83
81
  "@xyo-network/archivist-model": "^5.6.4",
@@ -88,9 +86,10 @@
88
86
  "@xyo-network/config-payload-plugin": "~5.6.3",
89
87
  "@xyo-network/diviner-abstract": "^5.6.4",
90
88
  "@xyo-network/diviner-model": "^5.6.4",
91
- "@xyo-network/evm-call-witness": "~5.5.1",
89
+ "@xyo-network/evm-call-witness": "~5.5.2",
92
90
  "@xyo-network/manifest": "~5.6.2",
93
91
  "@xyo-network/manifest-model": "~5.6.3",
92
+ "@xyo-network/manifest-wrapper": "~5.6.4",
94
93
  "@xyo-network/module-factory-locator": "~5.6.4",
95
94
  "@xyo-network/module-model": "^5.6.4",
96
95
  "@xyo-network/node-memory": "~5.6.4",
@@ -111,55 +110,56 @@
111
110
  "bowser": "^2.14.1",
112
111
  "buffer": "^6.0.3",
113
112
  "chalk": "^5.6.2",
113
+ "clsx": "~2.1.1",
114
114
  "debug": "~4.4.3",
115
- "eslint": "^10.3.0",
115
+ "eslint": "^10.4.0",
116
116
  "ethers": "^6.16.0",
117
117
  "fast-deep-equal": "~3.1.3",
118
118
  "hash-wasm": "~4.12.0",
119
- "js-cookie": "~3.0.5",
119
+ "js-cookie": "~3.0.6",
120
120
  "lru-cache": "^11.3.6",
121
121
  "md5": "~2.3.0",
122
- "mixpanel-browser": "~2.78.0",
122
+ "mixpanel-browser": "~2.79.0",
123
+ "numeral": "~2.0.6",
123
124
  "observable-fns": "~0.6.1",
124
125
  "pako": "^2.1.0",
125
126
  "query-string": "~9.3.1",
126
127
  "react": "^19.2.6",
127
128
  "react-dom": "^19.2.6",
128
129
  "react-is": "^19.2.6",
129
- "react-router-dom": "^7.15.0",
130
+ "react-router-dom": "^7.15.1",
130
131
  "recharts": "~3.8.1",
131
132
  "spark-md5": "~3.0.2",
132
- "storybook": "^10.3.6",
133
- "typescript": "^5.9.3",
134
- "viem": "~2.48.8",
135
- "vite": "^8.0.10",
133
+ "storybook": "^10.4.0",
134
+ "typescript": "^6.0.3",
135
+ "viem": "^2.49.3",
136
+ "vite": "^8.0.13",
136
137
  "wasm-feature-detect": "~1.8.0",
137
- "zod": "^4.4.3"
138
+ "zod": "^4.4.3",
139
+ "zustand": "~5.0.13"
138
140
  },
139
141
  "peerDependencies": {
140
142
  "@bitauth/libauth": "~3.0",
141
- "@emotion/react": "^11.14",
142
- "@emotion/styled": "^11.14",
143
- "@mui/icons-material": "^7.3",
144
- "@mui/material": "^7.3",
145
- "@mui/system": "^7.3",
146
- "@mui/x-tree-view": "~8.27",
143
+ "@mui/icons-material": "^9.0",
144
+ "@mui/material": "^9.0",
145
+ "@mui/system": "^9.0",
146
+ "@mui/x-tree-view": "~9.1",
147
147
  "@opentelemetry/api": "^1.9",
148
148
  "@opentelemetry/sdk-trace-base": "^2.7",
149
149
  "@react-spring/web": "~10.0",
150
150
  "@scure/base": "~2.2",
151
- "@textea/json-viewer": "~4.0",
152
151
  "@xylabs/pixel": "~5.1",
153
- "@xylabs/react-async-effect": "~7.2",
154
- "@xylabs/react-button": "~7.2",
155
- "@xylabs/react-crypto": "~7.2",
156
- "@xylabs/react-flexbox": "~7.2",
157
- "@xylabs/react-hooks": "~7.2",
158
- "@xylabs/react-link": "~7.2",
159
- "@xylabs/react-promise": "~7.2",
160
- "@xylabs/react-shared": "~7.2",
161
- "@xylabs/react-theme": "~7.2",
152
+ "@xylabs/react-async-effect": "~8.0",
153
+ "@xylabs/react-button": "~8.0",
154
+ "@xylabs/react-crypto": "~8.0",
155
+ "@xylabs/react-flexbox": "~8.0",
156
+ "@xylabs/react-hooks": "~8.0",
157
+ "@xylabs/react-link": "~8.0",
158
+ "@xylabs/react-promise": "~8.0",
159
+ "@xylabs/react-shared": "~8.0",
160
+ "@xylabs/react-theme": "~8.0",
162
161
  "@xylabs/sdk-js": "^5.1",
162
+ "@xylabs/sdk-react": "~8.0",
163
163
  "@xylabs/threads": "~5.1",
164
164
  "@xyo-network/account": "~5.6",
165
165
  "@xyo-network/account-model": "^5.6",
@@ -187,6 +187,7 @@
187
187
  "bowser": "^2.14",
188
188
  "buffer": "^6.0",
189
189
  "chalk": "^5.6",
190
+ "clsx": "~2.1",
190
191
  "debug": "~4.4",
191
192
  "ethers": "^6.16",
192
193
  "fast-deep-equal": "~3.1",
@@ -194,7 +195,8 @@
194
195
  "js-cookie": "~3.0",
195
196
  "lru-cache": "^11.3",
196
197
  "md5": "~2.3",
197
- "mixpanel-browser": "~2.78",
198
+ "mixpanel-browser": "~2.79",
199
+ "numeral": "~2.0",
198
200
  "observable-fns": "~0.6",
199
201
  "pako": "^2.1",
200
202
  "query-string": "~9.3",
@@ -204,9 +206,10 @@
204
206
  "react-router-dom": "^7.15",
205
207
  "recharts": "~3.8",
206
208
  "spark-md5": "~3.0",
207
- "viem": "~2.48",
209
+ "viem": "^2.48",
208
210
  "wasm-feature-detect": "~1.8",
209
- "zod": "^4.4"
211
+ "zod": "^4.4",
212
+ "zustand": "~5.0"
210
213
  },
211
214
  "peerDependenciesMeta": {
212
215
  "ethers": {