@xyo-network/react-sentinel 8.0.0 → 9.0.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.
@@ -287,4 +287,4 @@ export {
287
287
  useWeakSentinelFromNode,
288
288
  useWeakSentinelsFromNode
289
289
  };
290
- //# 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\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"],"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": "8.0.0",
3
+ "version": "9.0.0",
4
4
  "description": "Common React library for all XYO projects that use React",
5
5
  "keywords": [
6
6
  "xyo",
@@ -41,153 +41,153 @@
41
41
  "README.md"
42
42
  ],
43
43
  "dependencies": {
44
- "@xyo-network/react-module": "~8.0.0",
45
- "@xyo-network/react-payload-raw-info": "~8.0.0",
46
- "@xyo-network/react-witness": "~8.0.0",
47
- "@xyo-network/react-node": "~8.0.0"
44
+ "@xyo-network/react-module": "~9.0.0",
45
+ "@xyo-network/react-node": "~9.0.0",
46
+ "@xyo-network/react-payload-raw-info": "~9.0.0",
47
+ "@xyo-network/react-witness": "~9.0.0"
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": "~9.0",
54
- "@mui/material": "~9.0",
55
- "@mui/system": "~9.0",
56
- "@mui/x-tree-view": "~9.1",
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",
64
- "@types/react": "^19.2.14",
65
- "@xylabs/pixel": "~5.1.2",
66
- "@xylabs/react-async-effect": "~8.0",
67
- "@xylabs/react-button": "~8.0",
68
- "@xylabs/react-crypto": "~8.0",
69
- "@xylabs/react-flexbox": "~8.0",
70
- "@xylabs/react-hooks": "~8.0",
71
- "@xylabs/react-link": "~8.0",
72
- "@xylabs/react-promise": "~8.0",
73
- "@xylabs/react-shared": "~8.0",
74
- "@xylabs/react-theme": "~8.0",
75
- "@xylabs/sdk-js": "^5.1.2",
76
- "@xylabs/threads": "~5.1.2",
77
- "@xylabs/toolchain": "~7.13.22",
78
- "@xylabs/tsconfig": "^7.13.22",
79
- "@xylabs/tsconfig-dom": "^7.13.22",
80
- "@xylabs/tsconfig-react": "~7.13.22",
81
- "@xyo-network/account": "~5.6.2",
82
- "@xyo-network/account-model": "^5.6.3",
83
- "@xyo-network/archivist-model": "^5.6.4",
84
- "@xyo-network/boundwitness-builder": "^5.6.2",
85
- "@xyo-network/boundwitness-model": "^5.6.3",
86
- "@xyo-network/boundwitness-validator": "^5.6.2",
87
- "@xyo-network/boundwitness-wrapper": "~5.6.2",
88
- "@xyo-network/config-payload-plugin": "~5.6.3",
89
- "@xyo-network/diviner-abstract": "^5.6.4",
90
- "@xyo-network/diviner-model": "^5.6.4",
91
- "@xyo-network/evm-call-witness": "~5.5.2",
92
- "@xyo-network/manifest": "~5.6.2",
93
- "@xyo-network/manifest-model": "~5.6.3",
94
- "@xyo-network/manifest-wrapper": "~5.6.2",
95
- "@xyo-network/module-factory-locator": "~5.6.4",
96
- "@xyo-network/module-model": "^5.6.4",
97
- "@xyo-network/node-memory": "~5.6.4",
98
- "@xyo-network/node-model": "^5.6.4",
60
+ "@storybook/react-vite": "~10.4.0",
61
+ "@types/react": "^19.2.15",
62
+ "@xylabs/pixel": "~6.0.2",
63
+ "@xylabs/react-async-effect": "~9.0.0",
64
+ "@xylabs/react-button": "~9.0.0",
65
+ "@xylabs/react-crypto": "~9.0.0",
66
+ "@xylabs/react-flexbox": "~9.0.0",
67
+ "@xylabs/react-hooks": "~9.0.0",
68
+ "@xylabs/react-link": "~9.0.0",
69
+ "@xylabs/react-promise": "~9.0.0",
70
+ "@xylabs/react-shared": "~9.0.0",
71
+ "@xylabs/react-theme": "~9.0.0",
72
+ "@xylabs/sdk-js": "^6.0.2",
73
+ "@xylabs/sdk-react": "~9.0",
74
+ "@xylabs/threads": "~6.0.2",
75
+ "@xylabs/toolchain": "~8.1.1",
76
+ "@xylabs/tsconfig": "^8.1.1",
77
+ "@xylabs/tsconfig-dom": "^8.1.1",
78
+ "@xylabs/tsconfig-react": "~8.1.1",
79
+ "@xyo-network/account": "~6.0.0",
80
+ "@xyo-network/account-model": "^6.0.0",
81
+ "@xyo-network/archivist-model": "^6.0.0",
82
+ "@xyo-network/boundwitness-builder": "^6.0.0",
83
+ "@xyo-network/boundwitness-model": "^6.0.0",
84
+ "@xyo-network/boundwitness-validator": "^6.0.0",
85
+ "@xyo-network/boundwitness-wrapper": "~6.0.0",
86
+ "@xyo-network/config-payload-plugin": "~6.0.0",
87
+ "@xyo-network/diviner-abstract": "^6.0.0",
88
+ "@xyo-network/diviner-model": "^6.0.0",
89
+ "@xyo-network/evm-call-witness": "~6.0.0",
90
+ "@xyo-network/manifest": "~6.0.0",
91
+ "@xyo-network/manifest-model": "~6.0.0",
92
+ "@xyo-network/manifest-wrapper": "~6.0.0",
93
+ "@xyo-network/module-factory-locator": "~6.0.0",
94
+ "@xyo-network/module-model": "^6.0.0",
95
+ "@xyo-network/node-memory": "~6.0.0",
96
+ "@xyo-network/node-model": "^6.0.0",
99
97
  "@xyo-network/open-zeppelin-typechain": "^4.1.3",
100
- "@xyo-network/payload-builder": "^5.6.2",
101
- "@xyo-network/payload-model": "^5.6.3",
102
- "@xyo-network/payload-wrapper": "~5.6.2",
103
- "@xyo-network/query-payload-plugin": "~5.6.3",
104
- "@xyo-network/sentinel-memory": "^5.6.4",
105
- "@xyo-network/sentinel-model": "^5.6.4",
106
- "@xyo-network/wallet": "~5.6.2",
107
- "@xyo-network/wallet-model": "^5.6.3",
108
- "@xyo-network/witness-evm-abstract": "^5.6.4",
109
- "@xyo-network/witness-model": "^5.6.4",
98
+ "@xyo-network/payload-builder": "^6.0.0",
99
+ "@xyo-network/payload-model": "^6.0.0",
100
+ "@xyo-network/payload-wrapper": "~6.0.0",
101
+ "@xyo-network/query-payload-plugin": "~6.0.0",
102
+ "@xyo-network/sentinel-memory": "^6.0.0",
103
+ "@xyo-network/sentinel-model": "^6.0.0",
104
+ "@xyo-network/wallet": "~6.0.0",
105
+ "@xyo-network/wallet-model": "^6.0.0",
106
+ "@xyo-network/witness-evm-abstract": "~6.0",
107
+ "@xyo-network/witness-model": "^6.0.0",
110
108
  "async-mutex": "^0.5.0",
111
109
  "bn.js": "^5.2.3",
112
110
  "bowser": "^2.14.1",
113
111
  "buffer": "^6.0.3",
114
112
  "chalk": "^5.6.2",
113
+ "clsx": "~2.1.1",
115
114
  "debug": "~4.4.3",
116
- "eslint": "^10.3.0",
115
+ "eslint": "^10.4.0",
117
116
  "ethers": "^6.16.0",
118
117
  "fast-deep-equal": "~3.1.3",
119
118
  "hash-wasm": "~4.12.0",
120
- "js-cookie": "~3.0.5",
121
- "lru-cache": "^11.3.6",
119
+ "js-cookie": "~3.0.7",
120
+ "lru-cache": "^11.5.0",
122
121
  "md5": "~2.3.0",
123
- "mixpanel-browser": "~2.78.0",
122
+ "mixpanel-browser": "~2.79.0",
123
+ "numeral": "~2.0.6",
124
124
  "observable-fns": "~0.6.1",
125
125
  "pako": "^2.1.0",
126
126
  "query-string": "~9.3.1",
127
127
  "react": "^19.2.6",
128
128
  "react-dom": "^19.2.6",
129
129
  "react-is": "^19.2.6",
130
- "react-router-dom": "^7.15.0",
130
+ "react-router-dom": "^7.15.1",
131
131
  "recharts": "~3.8.1",
132
132
  "spark-md5": "~3.0.2",
133
- "storybook": "^10.3.6",
134
- "typescript": "^5.9.3",
135
- "viem": "~2.48.11",
136
- "vite": "^8.0.11",
133
+ "storybook": "^10.4.0",
134
+ "typescript": "^6.0.3",
135
+ "viem": "^2.50.4",
136
+ "vite": "^8.0.13",
137
137
  "wasm-feature-detect": "~1.8.0",
138
- "zod": "^4.4.3"
138
+ "zod": "^4.4.3",
139
+ "zustand": "~5.0.13"
139
140
  },
140
141
  "peerDependencies": {
141
142
  "@bitauth/libauth": "~3.0",
142
- "@emotion/react": "^11.14",
143
- "@emotion/styled": "^11.14",
144
- "@mui/icons-material": "~9.0",
145
- "@mui/material": "~9.0",
146
- "@mui/system": "~9.0",
143
+ "@mui/icons-material": "^9.0",
144
+ "@mui/material": "^9.0",
145
+ "@mui/system": "^9.0",
147
146
  "@mui/x-tree-view": "~9.1",
148
147
  "@opentelemetry/api": "^1.9",
149
148
  "@opentelemetry/sdk-trace-base": "^2.7",
150
149
  "@react-spring/web": "~10.0",
151
150
  "@scure/base": "~2.2",
152
- "@textea/json-viewer": "~4.0",
153
- "@xylabs/pixel": "~5.1",
154
- "@xylabs/react-async-effect": "~8.0",
155
- "@xylabs/react-button": "~8.0",
156
- "@xylabs/react-crypto": "~8.0",
157
- "@xylabs/react-flexbox": "~8.0",
158
- "@xylabs/react-hooks": "~8.0",
159
- "@xylabs/react-link": "~8.0",
160
- "@xylabs/react-promise": "~8.0",
161
- "@xylabs/react-shared": "~8.0",
162
- "@xylabs/react-theme": "~8.0",
163
- "@xylabs/sdk-js": "^5.1",
164
- "@xylabs/threads": "~5.1",
165
- "@xyo-network/account": "~5.6",
166
- "@xyo-network/account-model": "^5.6",
167
- "@xyo-network/archivist-model": "^5.6",
168
- "@xyo-network/boundwitness-builder": "^5.6",
169
- "@xyo-network/boundwitness-model": "^5.6",
170
- "@xyo-network/boundwitness-validator": "^5.6",
171
- "@xyo-network/boundwitness-wrapper": "~5.6",
172
- "@xyo-network/config-payload-plugin": "~5.6",
173
- "@xyo-network/diviner-model": "^5.6",
174
- "@xyo-network/manifest-model": "~5.6",
175
- "@xyo-network/module-model": "^5.6",
176
- "@xyo-network/node-memory": "~5.6",
177
- "@xyo-network/node-model": "^5.6",
178
- "@xyo-network/payload-builder": "^5.6",
179
- "@xyo-network/payload-model": "^5.6",
180
- "@xyo-network/payload-wrapper": "~5.6",
181
- "@xyo-network/query-payload-plugin": "~5.6",
182
- "@xyo-network/sentinel-memory": "^5.6",
183
- "@xyo-network/sentinel-model": "^5.6",
184
- "@xyo-network/wallet-model": "^5.6",
185
- "@xyo-network/witness-model": "^5.6",
151
+ "@xylabs/pixel": "~6.0",
152
+ "@xylabs/react-async-effect": "~9.0",
153
+ "@xylabs/react-button": "~9.0",
154
+ "@xylabs/react-crypto": "~9.0",
155
+ "@xylabs/react-flexbox": "~9.0",
156
+ "@xylabs/react-hooks": "~9.0",
157
+ "@xylabs/react-link": "~9.0",
158
+ "@xylabs/react-promise": "~9.0",
159
+ "@xylabs/react-shared": "~9.0",
160
+ "@xylabs/react-theme": "~9.0",
161
+ "@xylabs/sdk-js": "^6.0",
162
+ "@xylabs/sdk-react": "~9.0",
163
+ "@xylabs/threads": "~6.0",
164
+ "@xyo-network/account": "~6.0",
165
+ "@xyo-network/account-model": "^6.0",
166
+ "@xyo-network/archivist-model": "^6.0",
167
+ "@xyo-network/boundwitness-builder": "^6.0",
168
+ "@xyo-network/boundwitness-model": "^6.0",
169
+ "@xyo-network/boundwitness-validator": "^6.0",
170
+ "@xyo-network/boundwitness-wrapper": "~6.0",
171
+ "@xyo-network/config-payload-plugin": "~6.0",
172
+ "@xyo-network/diviner-model": "^6.0",
173
+ "@xyo-network/manifest-model": "~6.0",
174
+ "@xyo-network/module-model": "^6.0",
175
+ "@xyo-network/node-memory": "~6.0",
176
+ "@xyo-network/node-model": "^6.0",
177
+ "@xyo-network/payload-builder": "^6.0",
178
+ "@xyo-network/payload-model": "^6.0",
179
+ "@xyo-network/payload-wrapper": "~6.0",
180
+ "@xyo-network/query-payload-plugin": "~6.0",
181
+ "@xyo-network/sentinel-memory": "^6.0",
182
+ "@xyo-network/sentinel-model": "^6.0",
183
+ "@xyo-network/wallet-model": "^6.0",
184
+ "@xyo-network/witness-model": "^6.0",
186
185
  "async-mutex": "^0.5",
187
186
  "bn.js": "^5.2",
188
187
  "bowser": "^2.14",
189
188
  "buffer": "^6.0",
190
189
  "chalk": "^5.6",
190
+ "clsx": "~2.1",
191
191
  "debug": "~4.4",
192
192
  "ethers": "^6.16",
193
193
  "fast-deep-equal": "~3.1",
@@ -195,7 +195,8 @@
195
195
  "js-cookie": "~3.0",
196
196
  "lru-cache": "^11.3",
197
197
  "md5": "~2.3",
198
- "mixpanel-browser": "~2.78",
198
+ "mixpanel-browser": "~2.79",
199
+ "numeral": "~2.0",
199
200
  "observable-fns": "~0.6",
200
201
  "pako": "^2.1",
201
202
  "query-string": "~9.3",
@@ -205,10 +206,10 @@
205
206
  "react-router-dom": "^7.15",
206
207
  "recharts": "~3.8",
207
208
  "spark-md5": "~3.0",
208
- "typescript": "^5.9",
209
- "viem": "~2.48",
209
+ "viem": "^2.48",
210
210
  "wasm-feature-detect": "~1.8",
211
- "zod": "^4.4"
211
+ "zod": "^4.4",
212
+ "zustand": "~5.0"
212
213
  },
213
214
  "peerDependenciesMeta": {
214
215
  "ethers": {