@xyo-network/react-payload-diviner 7.0.0 → 7.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,6 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
-
4
1
  // src/contexts/DivinedPayload/Context.ts
5
2
  import { createContextEx } from "@xylabs/react-shared";
6
3
  var DivinedPayloadContext = createContextEx();
@@ -9,7 +6,7 @@ var DivinedPayloadContext = createContextEx();
9
6
  import { ErrorRender } from "@xylabs/react-error";
10
7
  import { ModuleErrorSchema } from "@xyo-network/payload-model";
11
8
  import { useBuildHuri } from "@xyo-network/react-payload-huri";
12
- import React2, { useMemo as useMemo2 } from "react";
9
+ import { useMemo as useMemo2 } from "react";
13
10
  import { useParams, useSearchParams } from "react-router-dom";
14
11
 
15
12
  // src/contexts/PayloadDiviner/Context.ts
@@ -18,22 +15,27 @@ var PayloadDivinerContext = createContextEx2();
18
15
 
19
16
  // src/contexts/PayloadDiviner/Provider.tsx
20
17
  import { useResetState } from "@xylabs/react-hooks";
21
- import React, { useMemo } from "react";
22
- var PayloadDivinerProvider = /* @__PURE__ */ __name(({ diviner: divinerProp, required = false, children }) => {
18
+ import { useMemo } from "react";
19
+ import { jsx } from "react/jsx-runtime";
20
+ var PayloadDivinerProvider = ({
21
+ diviner: divinerProp,
22
+ required = false,
23
+ children
24
+ }) => {
23
25
  const [diviner, setDiviner] = useResetState(divinerProp);
24
26
  const value = useMemo(() => ({
25
27
  diviner: diviner === divinerProp ? diviner : void 0,
26
28
  provided: true,
27
29
  setDiviner
28
- }), [
29
- diviner,
30
- divinerProp,
31
- setDiviner
32
- ]);
33
- return /* @__PURE__ */ React.createElement(PayloadDivinerContext, {
34
- value
35
- }, diviner ? children : required ? null : children);
36
- }, "PayloadDivinerProvider");
30
+ }), [diviner, divinerProp, setDiviner]);
31
+ return /* @__PURE__ */ jsx(
32
+ PayloadDivinerContext,
33
+ {
34
+ value,
35
+ children: diviner ? children : required ? null : children
36
+ }
37
+ );
38
+ };
37
39
 
38
40
  // src/contexts/PayloadDiviner/use.ts
39
41
  import { exists } from "@xylabs/exists";
@@ -41,10 +43,10 @@ import { useAsyncEffect } from "@xylabs/react-async-effect";
41
43
  import { useContextEx } from "@xylabs/react-shared";
42
44
  import { HuriSchema } from "@xyo-network/diviner-huri";
43
45
  import { useEffect, useState } from "react";
44
- var usePayloadDiviner = /* @__PURE__ */ __name((required = false) => {
46
+ var usePayloadDiviner = (required = false) => {
45
47
  return useContextEx(PayloadDivinerContext, "PayloadDiviner", required);
46
- }, "usePayloadDiviner");
47
- var useDivinePayload = /* @__PURE__ */ __name((huri) => {
48
+ };
49
+ var useDivinePayload = (huri) => {
48
50
  const { diviner } = usePayloadDiviner();
49
51
  const [payload, setPayload] = useState();
50
52
  const [error, setError] = useState();
@@ -52,42 +54,28 @@ var useDivinePayload = /* @__PURE__ */ __name((huri) => {
52
54
  if (diviner) {
53
55
  setPayload(void 0);
54
56
  }
55
- }, [
56
- diviner
57
- ]);
58
- useAsyncEffect(async (mounted) => {
59
- if (huri && diviner && payload === void 0) {
60
- try {
61
- const huriPayload = {
62
- huri: [
63
- huri
64
- ],
65
- schema: HuriSchema
66
- };
67
- const [payload2] = await diviner?.divine([
68
- huriPayload
69
- ]) ?? [];
70
- if (mounted()) {
71
- setPayload(payload2 ? payload2 : null);
72
- }
73
- } catch (ex) {
74
- if (mounted()) {
75
- setError(ex);
57
+ }, [diviner]);
58
+ useAsyncEffect(
59
+ async (mounted) => {
60
+ if (huri && diviner && payload === void 0) {
61
+ try {
62
+ const huriPayload = { huri: [huri], schema: HuriSchema };
63
+ const [payload2] = await diviner?.divine([huriPayload]) ?? [];
64
+ if (mounted()) {
65
+ setPayload(payload2 ? payload2 : null);
66
+ }
67
+ } catch (ex) {
68
+ if (mounted()) {
69
+ setError(ex);
70
+ }
76
71
  }
77
72
  }
78
- }
79
- }, [
80
- diviner,
81
- huri,
82
- payload
83
- ]);
84
- return [
85
- payload,
86
- setPayload,
87
- error
88
- ];
89
- }, "useDivinePayload");
90
- var useDivinePayloads = /* @__PURE__ */ __name((huriList) => {
73
+ },
74
+ [diviner, huri, payload]
75
+ );
76
+ return [payload, setPayload, error];
77
+ };
78
+ var useDivinePayloads = (huriList) => {
91
79
  const { diviner } = usePayloadDiviner();
92
80
  const [payloads, setPayloads] = useState();
93
81
  const [errors, setErrors] = useState();
@@ -95,61 +83,42 @@ var useDivinePayloads = /* @__PURE__ */ __name((huriList) => {
95
83
  if (diviner) {
96
84
  setPayloads(void 0);
97
85
  }
98
- }, [
99
- diviner
100
- ]);
101
- useAsyncEffect(async (mounted) => {
102
- console.log(`huriList: ${JSON.stringify(huriList, null, 2)}`);
103
- const payloads2 = await Promise.allSettled(huriList.map(async (huri) => {
104
- const huriPayload = {
105
- huri: [
106
- huri
107
- ],
108
- schema: HuriSchema
109
- };
110
- const [payload] = await diviner?.divine([
111
- huriPayload
112
- ]) ?? [];
113
- return payload;
114
- }));
115
- if (mounted()) {
116
- setPayloads([
117
- ...payloads2.values()
118
- ].map((value) => value.status === "rejected" ? null : value.value));
119
- setErrors([
120
- ...payloads2.values()
121
- ].map((value) => value.status === "rejected" ? new Error("divine failed", {
122
- cause: value.reason
123
- }) : void 0).filter(exists));
86
+ }, [diviner]);
87
+ useAsyncEffect(
88
+ async (mounted) => {
89
+ console.log(`huriList: ${JSON.stringify(huriList, null, 2)}`);
90
+ const payloads2 = await Promise.allSettled(
91
+ huriList.map(async (huri) => {
92
+ const huriPayload = { huri: [huri], schema: HuriSchema };
93
+ const [payload] = await diviner?.divine([huriPayload]) ?? [];
94
+ return payload;
95
+ })
96
+ );
124
97
  if (mounted()) {
125
- setPayloads([
126
- ...payloads2.values()
127
- ].map((value) => value.status === "rejected" ? null : value.value));
128
- setErrors([
129
- ...payloads2.values()
130
- ].map((value) => value.status === "rejected" ? new Error("divine failed", {
131
- cause: value.reason
132
- }) : void 0).filter(exists));
98
+ setPayloads([...payloads2.values()].map((value) => value.status === "rejected" ? null : value.value));
99
+ setErrors(
100
+ [...payloads2.values()].map((value) => value.status === "rejected" ? new Error("divine failed", { cause: value.reason }) : void 0).filter(exists)
101
+ );
102
+ if (mounted()) {
103
+ setPayloads([...payloads2.values()].map((value) => value.status === "rejected" ? null : value.value));
104
+ setErrors(
105
+ [...payloads2.values()].map((value) => value.status === "rejected" ? new Error("divine failed", { cause: value.reason }) : void 0).filter(exists)
106
+ );
107
+ }
133
108
  }
134
- }
135
- }, [
136
- diviner,
137
- huriList,
138
- payloads
139
- ]);
140
- return [
141
- payloads,
142
- setPayloads,
143
- errors
144
- ];
145
- }, "useDivinePayloads");
109
+ },
110
+ [diviner, huriList, payloads]
111
+ );
112
+ return [payloads, setPayloads, errors];
113
+ };
146
114
 
147
115
  // src/contexts/DivinedPayload/use.ts
148
116
  import { useContextEx as useContextEx2 } from "@xylabs/react-shared";
149
- var useDivinedPayload = /* @__PURE__ */ __name(() => useContextEx2(DivinedPayloadContext, "DivinedPayload", true), "useDivinedPayload");
117
+ var useDivinedPayload = () => useContextEx2(DivinedPayloadContext, "DivinedPayload", true);
150
118
 
151
119
  // src/contexts/DivinedPayload/Provider.tsx
152
- var DivinedPayloadProvider = /* @__PURE__ */ __name(({ children, hash }) => {
120
+ import { jsx as jsx2 } from "react/jsx-runtime";
121
+ var DivinedPayloadProvider = ({ children, hash }) => {
153
122
  const { hash: hashParam } = useParams();
154
123
  const huriFromHashParam = useBuildHuri(hashParam);
155
124
  const [params] = useSearchParams();
@@ -162,29 +131,27 @@ var DivinedPayloadProvider = /* @__PURE__ */ __name(({ children, hash }) => {
162
131
  payloadError,
163
132
  provided: true,
164
133
  setPayload
165
- }), [
166
- payload,
167
- payloadError,
168
- setPayload
169
- ]);
170
- return /* @__PURE__ */ React2.createElement(DivinedPayloadContext, {
171
- value
172
- }, children);
173
- }, "DivinedPayloadProvider");
174
- var DivinedPayloadWithHandleInner = /* @__PURE__ */ __name(({ children }) => {
134
+ }), [payload, payloadError, setPayload]);
135
+ return /* @__PURE__ */ jsx2(DivinedPayloadContext, { value, children });
136
+ };
137
+ var DivinedPayloadWithHandleInner = ({ children }) => {
175
138
  const { payloadError } = useDivinedPayload();
176
- return /* @__PURE__ */ React2.createElement(ErrorRender, {
177
- error: payloadError ? {
178
- message: payloadError.message,
179
- schema: ModuleErrorSchema,
180
- sources: []
181
- } : void 0,
182
- errorContext: "Divined Payload Provider"
183
- }, children);
184
- }, "DivinedPayloadWithHandleInner");
185
- var DivinedPayloadWithHandleProvider = /* @__PURE__ */ __name(({ children, ...props }) => {
186
- return /* @__PURE__ */ React2.createElement(DivinedPayloadProvider, props, /* @__PURE__ */ React2.createElement(DivinedPayloadWithHandleInner, null, children));
187
- }, "DivinedPayloadWithHandleProvider");
139
+ return /* @__PURE__ */ jsx2(
140
+ ErrorRender,
141
+ {
142
+ error: payloadError ? {
143
+ message: payloadError.message,
144
+ schema: ModuleErrorSchema,
145
+ sources: []
146
+ } : void 0,
147
+ errorContext: "Divined Payload Provider",
148
+ children
149
+ }
150
+ );
151
+ };
152
+ var DivinedPayloadWithHandleProvider = ({ children, ...props }) => {
153
+ return /* @__PURE__ */ jsx2(DivinedPayloadProvider, { ...props, children: /* @__PURE__ */ jsx2(DivinedPayloadWithHandleInner, { children }) });
154
+ };
188
155
  export {
189
156
  DivinedPayloadContext,
190
157
  DivinedPayloadProvider,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/contexts/DivinedPayload/Context.ts","../../src/contexts/DivinedPayload/Provider.tsx","../../src/contexts/PayloadDiviner/Context.ts","../../src/contexts/PayloadDiviner/Provider.tsx","../../src/contexts/PayloadDiviner/use.ts","../../src/contexts/DivinedPayload/use.ts"],"sourcesContent":["import { createContextEx } from '@xylabs/react-shared'\n\nimport type { DivinedPayloadState } from './State.ts'\n\nexport const DivinedPayloadContext = createContextEx<DivinedPayloadState>()\n","import { ErrorRender } from '@xylabs/react-error'\nimport { ModuleErrorSchema } from '@xyo-network/payload-model'\nimport { useBuildHuri } from '@xyo-network/react-payload-huri'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo } from 'react'\nimport { useParams, useSearchParams } from 'react-router-dom'\n\nimport { useDivinePayload } from '../PayloadDiviner/index.ts'\nimport { DivinedPayloadContext } from './Context.ts'\nimport type { DivinedPayloadState } from './State.ts'\nimport { useDivinedPayload } from './use.ts'\n\nexport interface DivinedPayloadProviderProps extends PropsWithChildren {\n hash?: string\n}\n\nexport const DivinedPayloadProvider: React.FC<DivinedPayloadProviderProps> = ({ children, hash }) => {\n const { hash: hashParam } = useParams()\n\n const huriFromHashParam = useBuildHuri(hashParam)\n\n const [params] = useSearchParams()\n const huriSearchParameter = params.get('huri')\n const decodedHuriParam = decodeURIComponent(huriSearchParameter ?? '')\n const huriUri = hash ?? decodedHuriParam ?? huriFromHashParam\n\n const [payload, setPayload, payloadError] = useDivinePayload(huriUri)\n\n const value: DivinedPayloadState = useMemo(() => ({\n payload, payloadError, provided: true, setPayload,\n }), [payload, payloadError, setPayload])\n\n return (\n <DivinedPayloadContext value={value}>\n {children}\n </DivinedPayloadContext>\n )\n}\n\nexport const DivinedPayloadWithHandleInner: React.FC<PropsWithChildren> = ({ children }) => {\n const { payloadError } = useDivinedPayload()\n\n return (\n <ErrorRender\n error={payloadError\n ? {\n message: payloadError.message, schema: ModuleErrorSchema, sources: [],\n }\n : undefined}\n errorContext=\"Divined Payload Provider\"\n >\n {children}\n </ErrorRender>\n )\n}\n\nexport const DivinedPayloadWithHandleProvider: React.FC<DivinedPayloadProviderProps> = ({ children, ...props }) => {\n return (\n <DivinedPayloadProvider {...props}>\n <DivinedPayloadWithHandleInner>{children}</DivinedPayloadWithHandleInner>\n </DivinedPayloadProvider>\n )\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { PayloadDivinerState } from './State.ts'\n\nconst PayloadDivinerContext = createContextEx<PayloadDivinerState>()\n\nexport { PayloadDivinerContext }\n","import { useResetState } from '@xylabs/react-hooks'\nimport type { ContextExProviderProps } from '@xylabs/react-shared'\nimport type { PayloadDiviner } from '@xyo-network/diviner-payload-abstract'\nimport React, { useMemo } from 'react'\n\nimport { PayloadDivinerContext } from './Context.ts'\nimport type { PayloadDivinerState } from './State.ts'\n\nexport type PayloadDivinerProviderProps = ContextExProviderProps<{\n /** Required */\n diviner?: PayloadDiviner\n}>\n\nexport const PayloadDivinerProvider: React.FC<PayloadDivinerProviderProps> = ({\n diviner: divinerProp, required = false, children,\n}) => {\n const [diviner, setDiviner] = useResetState<PayloadDiviner | undefined>(divinerProp)\n\n const value: PayloadDivinerState = useMemo(() => ({\n diviner: diviner === divinerProp ? diviner : undefined, provided: true, setDiviner,\n }), [diviner, divinerProp, setDiviner])\n\n return (\n <PayloadDivinerContext\n value={value}\n >\n {diviner\n ? children\n : required\n ? null\n : children}\n </PayloadDivinerContext>\n )\n}\n","import { exists } from '@xylabs/exists'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { useContextEx } from '@xylabs/react-shared'\nimport type { HuriPayload } from '@xyo-network/diviner-huri'\nimport { HuriSchema } from '@xyo-network/diviner-huri'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { Dispatch } from 'react'\nimport { useEffect, useState } from 'react'\n\nimport { PayloadDivinerContext } from './Context.ts'\n\nexport const usePayloadDiviner = (required = false) => {\n return useContextEx(PayloadDivinerContext, 'PayloadDiviner', required)\n}\n\nexport const useDivinePayload = <T extends Payload = Payload>(\n huri?: string,\n): [T | undefined | null, Dispatch<T | null | undefined>, Error | undefined] => {\n const { diviner } = usePayloadDiviner()\n const [payload, setPayload] = useState<T | null>()\n const [error, setError] = useState<Error>()\n\n useEffect(() => {\n // we do this to clear the payload when the diviner changes\n if (diviner) {\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect\n setPayload(undefined)\n }\n }, [diviner])\n\n useAsyncEffect(\n async (mounted) => {\n if (huri && diviner && payload === undefined) {\n try {\n const huriPayload: HuriPayload = { huri: [huri], schema: HuriSchema }\n const [payload] = (await diviner?.divine([huriPayload])) ?? []\n if (mounted()) {\n setPayload(payload ? (payload as T) : null)\n }\n } catch (ex) {\n if (mounted()) {\n setError(ex as Error)\n }\n }\n }\n },\n [diviner, huri, payload],\n )\n\n return [payload, setPayload, error]\n}\n\nexport const useDivinePayloads = <T extends Payload = Payload>(\n huriList: string[],\n): [(T | null)[] | undefined, Dispatch<(T | null)[] | undefined>, Error[] | undefined] => {\n const { diviner } = usePayloadDiviner()\n const [payloads, setPayloads] = useState<(T | null)[]>()\n const [errors, setErrors] = useState<Error[]>()\n\n useEffect(() => {\n if (diviner) {\n // clear payloads when diviner changes\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect\n setPayloads(undefined)\n }\n }, [diviner])\n\n useAsyncEffect(\n async (mounted) => {\n console.log(`huriList: ${JSON.stringify(huriList, null, 2)}`)\n const payloads = await Promise.allSettled(\n huriList.map(async (huri) => {\n const huriPayload: HuriPayload = { huri: [huri], schema: HuriSchema }\n const [payload] = (await diviner?.divine([huriPayload])) ?? []\n return payload\n }),\n )\n if (mounted()) {\n setPayloads([...payloads.values()].map(value => (value.status === 'rejected' ? null : value.value)) as (T | null)[])\n setErrors(\n (\n [...payloads.values()].map(value => (value.status === 'rejected' ? new Error('divine failed', { cause: value.reason }) : undefined))\n ).filter(exists),\n )\n if (mounted()) {\n setPayloads([...payloads.values()].map(value => (value.status === 'rejected' ? null : value.value)) as (T | null)[])\n setErrors(\n (\n [...payloads.values()].map(value => (value.status === 'rejected' ? new Error('divine failed', { cause: value.reason }) : undefined))\n ).filter(exists),\n )\n }\n }\n },\n [diviner, huriList, payloads],\n )\n\n return [payloads, setPayloads, errors]\n}\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { DivinedPayloadContext } from './Context.ts'\n\nexport const useDivinedPayload = () => useContextEx(DivinedPayloadContext, 'DivinedPayload', true)\n"],"mappings":"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","names":["createContextEx","DivinedPayloadContext","ErrorRender","ModuleErrorSchema","useBuildHuri","React","useMemo","useParams","useSearchParams","createContextEx","PayloadDivinerContext","useResetState","React","useMemo","PayloadDivinerProvider","diviner","divinerProp","required","children","setDiviner","useResetState","value","useMemo","undefined","provided","PayloadDivinerContext","exists","useAsyncEffect","useContextEx","HuriSchema","useEffect","useState","usePayloadDiviner","required","useContextEx","PayloadDivinerContext","useDivinePayload","huri","diviner","payload","setPayload","useState","error","setError","useEffect","undefined","useAsyncEffect","mounted","huriPayload","schema","HuriSchema","divine","ex","useDivinePayloads","huriList","payloads","setPayloads","errors","setErrors","console","log","JSON","stringify","Promise","allSettled","map","values","value","status","Error","cause","reason","filter","exists","useContextEx","useDivinedPayload","useContextEx","DivinedPayloadContext","DivinedPayloadProvider","children","hash","hashParam","useParams","huriFromHashParam","useBuildHuri","params","useSearchParams","huriSearchParameter","get","decodedHuriParam","decodeURIComponent","huriUri","payload","setPayload","payloadError","useDivinePayload","value","useMemo","provided","React","DivinedPayloadContext","DivinedPayloadWithHandleInner","useDivinedPayload","ErrorRender","error","message","schema","ModuleErrorSchema","sources","undefined","errorContext","DivinedPayloadWithHandleProvider","props"]}
1
+ {"version":3,"sources":["../../src/contexts/DivinedPayload/Context.ts","../../src/contexts/DivinedPayload/Provider.tsx","../../src/contexts/PayloadDiviner/Context.ts","../../src/contexts/PayloadDiviner/Provider.tsx","../../src/contexts/PayloadDiviner/use.ts","../../src/contexts/DivinedPayload/use.ts"],"sourcesContent":["import { createContextEx } from '@xylabs/react-shared'\n\nimport type { DivinedPayloadState } from './State.ts'\n\nexport const DivinedPayloadContext = createContextEx<DivinedPayloadState>()\n","import { ErrorRender } from '@xylabs/react-error'\nimport { ModuleErrorSchema } from '@xyo-network/payload-model'\nimport { useBuildHuri } from '@xyo-network/react-payload-huri'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo } from 'react'\nimport { useParams, useSearchParams } from 'react-router-dom'\n\nimport { useDivinePayload } from '../PayloadDiviner/index.ts'\nimport { DivinedPayloadContext } from './Context.ts'\nimport type { DivinedPayloadState } from './State.ts'\nimport { useDivinedPayload } from './use.ts'\n\nexport interface DivinedPayloadProviderProps extends PropsWithChildren {\n hash?: string\n}\n\nexport const DivinedPayloadProvider: React.FC<DivinedPayloadProviderProps> = ({ children, hash }) => {\n const { hash: hashParam } = useParams()\n\n const huriFromHashParam = useBuildHuri(hashParam)\n\n const [params] = useSearchParams()\n const huriSearchParameter = params.get('huri')\n const decodedHuriParam = decodeURIComponent(huriSearchParameter ?? '')\n const huriUri = hash ?? decodedHuriParam ?? huriFromHashParam\n\n const [payload, setPayload, payloadError] = useDivinePayload(huriUri)\n\n const value: DivinedPayloadState = useMemo(() => ({\n payload, payloadError, provided: true, setPayload,\n }), [payload, payloadError, setPayload])\n\n return (\n <DivinedPayloadContext value={value}>\n {children}\n </DivinedPayloadContext>\n )\n}\n\nexport const DivinedPayloadWithHandleInner: React.FC<PropsWithChildren> = ({ children }) => {\n const { payloadError } = useDivinedPayload()\n\n return (\n <ErrorRender\n error={payloadError\n ? {\n message: payloadError.message, schema: ModuleErrorSchema, sources: [],\n }\n : undefined}\n errorContext=\"Divined Payload Provider\"\n >\n {children}\n </ErrorRender>\n )\n}\n\nexport const DivinedPayloadWithHandleProvider: React.FC<DivinedPayloadProviderProps> = ({ children, ...props }) => {\n return (\n <DivinedPayloadProvider {...props}>\n <DivinedPayloadWithHandleInner>{children}</DivinedPayloadWithHandleInner>\n </DivinedPayloadProvider>\n )\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { PayloadDivinerState } from './State.ts'\n\nconst PayloadDivinerContext = createContextEx<PayloadDivinerState>()\n\nexport { PayloadDivinerContext }\n","import { useResetState } from '@xylabs/react-hooks'\nimport type { ContextExProviderProps } from '@xylabs/react-shared'\nimport type { PayloadDiviner } from '@xyo-network/diviner-payload-abstract'\nimport React, { useMemo } from 'react'\n\nimport { PayloadDivinerContext } from './Context.ts'\nimport type { PayloadDivinerState } from './State.ts'\n\nexport type PayloadDivinerProviderProps = ContextExProviderProps<{\n /** Required */\n diviner?: PayloadDiviner\n}>\n\nexport const PayloadDivinerProvider: React.FC<PayloadDivinerProviderProps> = ({\n diviner: divinerProp, required = false, children,\n}) => {\n const [diviner, setDiviner] = useResetState<PayloadDiviner | undefined>(divinerProp)\n\n const value: PayloadDivinerState = useMemo(() => ({\n diviner: diviner === divinerProp ? diviner : undefined, provided: true, setDiviner,\n }), [diviner, divinerProp, setDiviner])\n\n return (\n <PayloadDivinerContext\n value={value}\n >\n {diviner\n ? children\n : required\n ? null\n : children}\n </PayloadDivinerContext>\n )\n}\n","import { exists } from '@xylabs/exists'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { useContextEx } from '@xylabs/react-shared'\nimport type { HuriPayload } from '@xyo-network/diviner-huri'\nimport { HuriSchema } from '@xyo-network/diviner-huri'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { Dispatch } from 'react'\nimport { useEffect, useState } from 'react'\n\nimport { PayloadDivinerContext } from './Context.ts'\n\nexport const usePayloadDiviner = (required = false) => {\n return useContextEx(PayloadDivinerContext, 'PayloadDiviner', required)\n}\n\nexport const useDivinePayload = <T extends Payload = Payload>(\n huri?: string,\n): [T | undefined | null, Dispatch<T | null | undefined>, Error | undefined] => {\n const { diviner } = usePayloadDiviner()\n const [payload, setPayload] = useState<T | null>()\n const [error, setError] = useState<Error>()\n\n useEffect(() => {\n // we do this to clear the payload when the diviner changes\n if (diviner) {\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect\n setPayload(undefined)\n }\n }, [diviner])\n\n useAsyncEffect(\n async (mounted) => {\n if (huri && diviner && payload === undefined) {\n try {\n const huriPayload: HuriPayload = { huri: [huri], schema: HuriSchema }\n const [payload] = (await diviner?.divine([huriPayload])) ?? []\n if (mounted()) {\n setPayload(payload ? (payload as T) : null)\n }\n } catch (ex) {\n if (mounted()) {\n setError(ex as Error)\n }\n }\n }\n },\n [diviner, huri, payload],\n )\n\n return [payload, setPayload, error]\n}\n\nexport const useDivinePayloads = <T extends Payload = Payload>(\n huriList: string[],\n): [(T | null)[] | undefined, Dispatch<(T | null)[] | undefined>, Error[] | undefined] => {\n const { diviner } = usePayloadDiviner()\n const [payloads, setPayloads] = useState<(T | null)[]>()\n const [errors, setErrors] = useState<Error[]>()\n\n useEffect(() => {\n if (diviner) {\n // clear payloads when diviner changes\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect\n setPayloads(undefined)\n }\n }, [diviner])\n\n useAsyncEffect(\n async (mounted) => {\n console.log(`huriList: ${JSON.stringify(huriList, null, 2)}`)\n const payloads = await Promise.allSettled(\n huriList.map(async (huri) => {\n const huriPayload: HuriPayload = { huri: [huri], schema: HuriSchema }\n const [payload] = (await diviner?.divine([huriPayload])) ?? []\n return payload\n }),\n )\n if (mounted()) {\n setPayloads([...payloads.values()].map(value => (value.status === 'rejected' ? null : value.value)) as (T | null)[])\n setErrors(\n (\n [...payloads.values()].map(value => (value.status === 'rejected' ? new Error('divine failed', { cause: value.reason }) : undefined))\n ).filter(exists),\n )\n if (mounted()) {\n setPayloads([...payloads.values()].map(value => (value.status === 'rejected' ? null : value.value)) as (T | null)[])\n setErrors(\n (\n [...payloads.values()].map(value => (value.status === 'rejected' ? new Error('divine failed', { cause: value.reason }) : undefined))\n ).filter(exists),\n )\n }\n }\n },\n [diviner, huriList, payloads],\n )\n\n return [payloads, setPayloads, errors]\n}\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { DivinedPayloadContext } from './Context.ts'\n\nexport const useDivinedPayload = () => useContextEx(DivinedPayloadContext, 'DivinedPayload', true)\n"],"mappings":"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","names":["useMemo","createContextEx","payload","payloads","useContextEx","useContextEx","jsx","useMemo"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/react-payload-diviner",
3
- "version": "7.0.0",
3
+ "version": "7.0.1",
4
4
  "description": "Common React library for all XYO projects that use React",
5
5
  "keywords": [
6
6
  "xyo",
@@ -43,31 +43,31 @@
43
43
  "src"
44
44
  ],
45
45
  "dependencies": {
46
- "@xylabs/exists": "^5.0.0",
47
- "@xylabs/react-async-effect": "^7.0.0",
48
- "@xylabs/react-error": "^7.0.0",
49
- "@xylabs/react-hooks": "^7.0.0",
50
- "@xylabs/react-shared": "^7.0.0",
51
- "@xyo-network/diviner-huri": "^5.0.0",
52
- "@xyo-network/diviner-payload-abstract": "^5.0.0",
53
- "@xyo-network/payload-model": "^5.0.0",
54
- "@xyo-network/react-payload-huri": "^7.0.0",
55
- "react-router-dom": "^7.7.1"
46
+ "@xylabs/exists": "~5.0.8",
47
+ "@xylabs/react-async-effect": "~7.0.1",
48
+ "@xylabs/react-error": "~7.0.1",
49
+ "@xylabs/react-hooks": "~7.0.1",
50
+ "@xylabs/react-shared": "~7.0.1",
51
+ "@xyo-network/diviner-huri": "~5.0.5",
52
+ "@xyo-network/diviner-payload-abstract": "~5.0.5",
53
+ "@xyo-network/payload-model": "~5.0.5",
54
+ "@xyo-network/react-payload-huri": "^7.0.1",
55
+ "react-router-dom": "~7.8.0"
56
56
  },
57
57
  "devDependencies": {
58
- "@mui/icons-material": "^7.2.0",
59
- "@mui/material": "^7.2.0",
60
- "@types/react": "^19.1.9",
61
- "@xylabs/ts-scripts-yarn3": "^7.0.2",
62
- "react": "^19.1.1",
63
- "react-dom": "^19.1.1",
64
- "typescript": "^5.8.3"
58
+ "@mui/icons-material": "~7.3.1",
59
+ "@mui/material": "~7.3.1",
60
+ "@types/react": "~19.1.10",
61
+ "@xylabs/ts-scripts-yarn3": "~7.1.1",
62
+ "react": "~19.1.1",
63
+ "react-dom": "~19.1.1",
64
+ "typescript": "~5.9.2"
65
65
  },
66
66
  "peerDependencies": {
67
67
  "@mui/icons-material": ">=6 <8",
68
68
  "@mui/material": ">=6 <8",
69
- "react": "^19",
70
- "react-dom": "^19"
69
+ "react": "~19",
70
+ "react-dom": "~19"
71
71
  },
72
72
  "publishConfig": {
73
73
  "access": "public"