@xyo-network/react-payload-diviner 7.4.2 → 7.5.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,3 +1,6 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
1
4
  // src/contexts/DivinedPayload/Context.ts
2
5
  import { createContextEx } from "@xylabs/react-shared";
3
6
  var DivinedPayloadContext = createContextEx();
@@ -6,7 +9,7 @@ var DivinedPayloadContext = createContextEx();
6
9
  import { ErrorRender } from "@xylabs/react-error";
7
10
  import { ModuleErrorSchema } from "@xyo-network/payload-model";
8
11
  import { useBuildHuri } from "@xyo-network/react-payload-huri";
9
- import { useMemo as useMemo2 } from "react";
12
+ import React2, { useMemo as useMemo2 } from "react";
10
13
  import { useParams, useSearchParams } from "react-router-dom";
11
14
 
12
15
  // src/contexts/PayloadDiviner/Context.ts
@@ -15,38 +18,33 @@ var PayloadDivinerContext = createContextEx2();
15
18
 
16
19
  // src/contexts/PayloadDiviner/Provider.tsx
17
20
  import { useResetState } from "@xylabs/react-hooks";
18
- import { useMemo } from "react";
19
- import { jsx } from "react/jsx-runtime";
20
- var PayloadDivinerProvider = ({
21
- diviner: divinerProp,
22
- required = false,
23
- children
24
- }) => {
21
+ import React, { useMemo } from "react";
22
+ var PayloadDivinerProvider = /* @__PURE__ */ __name(({ diviner: divinerProp, required = false, children }) => {
25
23
  const [diviner, setDiviner] = useResetState(divinerProp);
26
24
  const value = useMemo(() => ({
27
25
  diviner: diviner === divinerProp ? diviner : void 0,
28
26
  provided: true,
29
27
  setDiviner
30
- }), [diviner, divinerProp, setDiviner]);
31
- return /* @__PURE__ */ jsx(
32
- PayloadDivinerContext,
33
- {
34
- value,
35
- children: diviner ? children : required ? null : children
36
- }
37
- );
38
- };
28
+ }), [
29
+ diviner,
30
+ divinerProp,
31
+ setDiviner
32
+ ]);
33
+ return /* @__PURE__ */ React.createElement(PayloadDivinerContext, {
34
+ value
35
+ }, diviner ? children : required ? null : children);
36
+ }, "PayloadDivinerProvider");
39
37
 
40
38
  // src/contexts/PayloadDiviner/use.ts
41
- import { exists } from "@xylabs/exists";
42
39
  import { useAsyncEffect } from "@xylabs/react-async-effect";
43
40
  import { useContextEx } from "@xylabs/react-shared";
41
+ import { exists } from "@xylabs/sdk-js";
44
42
  import { HuriSchema } from "@xyo-network/diviner-huri";
45
43
  import { useEffect, useState } from "react";
46
- var usePayloadDiviner = (required = false) => {
44
+ var usePayloadDiviner = /* @__PURE__ */ __name((required = false) => {
47
45
  return useContextEx(PayloadDivinerContext, "PayloadDiviner", required);
48
- };
49
- var useDivinePayload = (huri) => {
46
+ }, "usePayloadDiviner");
47
+ var useDivinePayload = /* @__PURE__ */ __name((huri) => {
50
48
  const { diviner } = usePayloadDiviner();
51
49
  const [payload, setPayload] = useState();
52
50
  const [error, setError] = useState();
@@ -54,28 +52,42 @@ var useDivinePayload = (huri) => {
54
52
  if (diviner) {
55
53
  setPayload(void 0);
56
54
  }
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
- }
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);
71
76
  }
72
77
  }
73
- },
74
- [diviner, huri, payload]
75
- );
76
- return [payload, setPayload, error];
77
- };
78
- var useDivinePayloads = (huriList) => {
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) => {
79
91
  const { diviner } = usePayloadDiviner();
80
92
  const [payloads, setPayloads] = useState();
81
93
  const [errors, setErrors] = useState();
@@ -83,42 +95,61 @@ var useDivinePayloads = (huriList) => {
83
95
  if (diviner) {
84
96
  setPayloads(void 0);
85
97
  }
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
- );
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));
97
124
  if (mounted()) {
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
- }
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));
108
133
  }
109
- },
110
- [diviner, huriList, payloads]
111
- );
112
- return [payloads, setPayloads, errors];
113
- };
134
+ }
135
+ }, [
136
+ diviner,
137
+ huriList,
138
+ payloads
139
+ ]);
140
+ return [
141
+ payloads,
142
+ setPayloads,
143
+ errors
144
+ ];
145
+ }, "useDivinePayloads");
114
146
 
115
147
  // src/contexts/DivinedPayload/use.ts
116
148
  import { useContextEx as useContextEx2 } from "@xylabs/react-shared";
117
- var useDivinedPayload = () => useContextEx2(DivinedPayloadContext, "DivinedPayload", true);
149
+ var useDivinedPayload = /* @__PURE__ */ __name(() => useContextEx2(DivinedPayloadContext, "DivinedPayload", true), "useDivinedPayload");
118
150
 
119
151
  // src/contexts/DivinedPayload/Provider.tsx
120
- import { jsx as jsx2 } from "react/jsx-runtime";
121
- var DivinedPayloadProvider = ({ children, hash }) => {
152
+ var DivinedPayloadProvider = /* @__PURE__ */ __name(({ children, hash }) => {
122
153
  const { hash: hashParam } = useParams();
123
154
  const huriFromHashParam = useBuildHuri(hashParam);
124
155
  const [params] = useSearchParams();
@@ -131,27 +162,29 @@ var DivinedPayloadProvider = ({ children, hash }) => {
131
162
  payloadError,
132
163
  provided: true,
133
164
  setPayload
134
- }), [payload, payloadError, setPayload]);
135
- return /* @__PURE__ */ jsx2(DivinedPayloadContext, { value, children });
136
- };
137
- var DivinedPayloadWithHandleInner = ({ children }) => {
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 }) => {
138
175
  const { payloadError } = useDivinedPayload();
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
- };
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");
155
188
  export {
156
189
  DivinedPayloadContext,
157
190
  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 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 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":";AAAA,SAAS,uBAAuB;AAIzB,IAAM,wBAAwB,gBAAqC;;;ACJ1E,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAClC,SAAS,oBAAoB;AAE7B,SAAgB,WAAAA,gBAAe;AAC/B,SAAS,WAAW,uBAAuB;;;ACL3C,SAAS,mBAAAC,wBAAuB;AAIhC,IAAM,wBAAwBA,iBAAqC;;;ACJnE,SAAS,qBAAqB;AAG9B,SAAgB,eAAe;AAoB3B;AAVG,IAAM,yBAAgE,CAAC;AAAA,EAC5E,SAAS;AAAA,EAAa,WAAW;AAAA,EAAO;AAC1C,MAAM;AACJ,QAAM,CAAC,SAAS,UAAU,IAAI,cAA0C,WAAW;AAEnF,QAAM,QAA6B,QAAQ,OAAO;AAAA,IAChD,SAAS,YAAY,cAAc,UAAU;AAAA,IAAW,UAAU;AAAA,IAAM;AAAA,EAC1E,IAAI,CAAC,SAAS,aAAa,UAAU,CAAC;AAEtC,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MAEC,oBACG,WACA,WACE,OACA;AAAA;AAAA,EACR;AAEJ;;;ACjCA,SAAS,cAAc;AACvB,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAE7B,SAAS,kBAAkB;AAG3B,SAAS,WAAW,gBAAgB;AAI7B,IAAM,oBAAoB,CAAC,WAAW,UAAU;AACrD,SAAO,aAAa,uBAAuB,kBAAkB,QAAQ;AACvE;AAEO,IAAM,mBAAmB,CAC9B,SAC8E;AAC9E,QAAM,EAAE,QAAQ,IAAI,kBAAkB;AACtC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAmB;AACjD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAgB;AAE1C,YAAU,MAAM;AAEd,QAAI,SAAS;AACX,iBAAW,MAAS;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ;AAAA,IACE,OAAO,YAAY;AACjB,UAAI,QAAQ,WAAW,YAAY,QAAW;AAC5C,YAAI;AACF,gBAAM,cAA2B,EAAE,MAAM,CAAC,IAAI,GAAG,QAAQ,WAAW;AACpE,gBAAM,CAACC,QAAO,IAAK,MAAM,SAAS,OAAO,CAAC,WAAW,CAAC,KAAM,CAAC;AAC7D,cAAI,QAAQ,GAAG;AACb,uBAAWA,WAAWA,WAAgB,IAAI;AAAA,UAC5C;AAAA,QACF,SAAS,IAAI;AACX,cAAI,QAAQ,GAAG;AACb,qBAAS,EAAW;AAAA,UACtB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,SAAS,MAAM,OAAO;AAAA,EACzB;AAEA,SAAO,CAAC,SAAS,YAAY,KAAK;AACpC;AAEO,IAAM,oBAAoB,CAC/B,aACwF;AACxF,QAAM,EAAE,QAAQ,IAAI,kBAAkB;AACtC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAuB;AACvD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAkB;AAE9C,YAAU,MAAM;AACd,QAAI,SAAS;AAEX,kBAAY,MAAS;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ;AAAA,IACE,OAAO,YAAY;AACjB,cAAQ,IAAI,aAAa,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC,EAAE;AAC5D,YAAMC,YAAW,MAAM,QAAQ;AAAA,QAC7B,SAAS,IAAI,OAAO,SAAS;AAC3B,gBAAM,cAA2B,EAAE,MAAM,CAAC,IAAI,GAAG,QAAQ,WAAW;AACpE,gBAAM,CAAC,OAAO,IAAK,MAAM,SAAS,OAAO,CAAC,WAAW,CAAC,KAAM,CAAC;AAC7D,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AACA,UAAI,QAAQ,GAAG;AACb,oBAAY,CAAC,GAAGA,UAAS,OAAO,CAAC,EAAE,IAAI,WAAU,MAAM,WAAW,aAAa,OAAO,MAAM,KAAM,CAAiB;AACnH;AAAA,UAEI,CAAC,GAAGA,UAAS,OAAO,CAAC,EAAE,IAAI,WAAU,MAAM,WAAW,aAAa,IAAI,MAAM,iBAAiB,EAAE,OAAO,MAAM,OAAO,CAAC,IAAI,MAAU,EACnI,OAAO,MAAM;AAAA,QACjB;AACA,YAAI,QAAQ,GAAG;AACb,sBAAY,CAAC,GAAGA,UAAS,OAAO,CAAC,EAAE,IAAI,WAAU,MAAM,WAAW,aAAa,OAAO,MAAM,KAAM,CAAiB;AACnH;AAAA,YAEI,CAAC,GAAGA,UAAS,OAAO,CAAC,EAAE,IAAI,WAAU,MAAM,WAAW,aAAa,IAAI,MAAM,iBAAiB,EAAE,OAAO,MAAM,OAAO,CAAC,IAAI,MAAU,EACnI,OAAO,MAAM;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,SAAS,UAAU,QAAQ;AAAA,EAC9B;AAEA,SAAO,CAAC,UAAU,aAAa,MAAM;AACvC;;;AChGA,SAAS,gBAAAC,qBAAoB;AAItB,IAAM,oBAAoB,MAAMC,cAAa,uBAAuB,kBAAkB,IAAI;;;AJ6B7F,gBAAAC,YAAA;AAjBG,IAAM,yBAAgE,CAAC,EAAE,UAAU,KAAK,MAAM;AACnG,QAAM,EAAE,MAAM,UAAU,IAAI,UAAU;AAEtC,QAAM,oBAAoB,aAAa,SAAS;AAEhD,QAAM,CAAC,MAAM,IAAI,gBAAgB;AACjC,QAAM,sBAAsB,OAAO,IAAI,MAAM;AAC7C,QAAM,mBAAmB,mBAAmB,uBAAuB,EAAE;AACrE,QAAM,UAAU,QAAQ,oBAAoB;AAE5C,QAAM,CAAC,SAAS,YAAY,YAAY,IAAI,iBAAiB,OAAO;AAEpE,QAAM,QAA6BC,SAAQ,OAAO;AAAA,IAChD;AAAA,IAAS;AAAA,IAAc,UAAU;AAAA,IAAM;AAAA,EACzC,IAAI,CAAC,SAAS,cAAc,UAAU,CAAC;AAEvC,SACE,gBAAAD,KAAC,yBAAsB,OACpB,UACH;AAEJ;AAEO,IAAM,gCAA6D,CAAC,EAAE,SAAS,MAAM;AAC1F,QAAM,EAAE,aAAa,IAAI,kBAAkB;AAE3C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,eACH;AAAA,QACE,SAAS,aAAa;AAAA,QAAS,QAAQ;AAAA,QAAmB,SAAS,CAAC;AAAA,MACtE,IACA;AAAA,MACJ,cAAa;AAAA,MAEZ;AAAA;AAAA,EACH;AAEJ;AAEO,IAAM,mCAA0E,CAAC,EAAE,UAAU,GAAG,MAAM,MAAM;AACjH,SACE,gBAAAA,KAAC,0BAAwB,GAAG,OAC1B,0BAAAA,KAAC,iCAA+B,UAAS,GAC3C;AAEJ;","names":["useMemo","createContextEx","payload","payloads","useContextEx","useContextEx","jsx","useMemo"]}
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 { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { useContextEx } from '@xylabs/react-shared'\nimport { exists } from '@xylabs/sdk-js'\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 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 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","useAsyncEffect","useContextEx","exists","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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/react-payload-diviner",
3
- "version": "7.4.2",
3
+ "version": "7.5.1",
4
4
  "description": "Common React library for all XYO projects that use React",
5
5
  "keywords": [
6
6
  "xyo",
@@ -43,34 +43,36 @@
43
43
  "src"
44
44
  ],
45
45
  "dependencies": {
46
- "@xylabs/exists": "~5.0.50",
47
- "@xylabs/react-async-effect": "~7.1.8",
48
- "@xylabs/react-error": "~7.1.8",
49
- "@xylabs/react-hooks": "~7.1.8",
50
- "@xylabs/react-shared": "~7.1.8",
51
- "@xyo-network/diviner-huri": "~5.2.17",
52
- "@xyo-network/diviner-payload-abstract": "~5.2.17",
53
- "@xyo-network/payload-model": "~5.2.17",
54
- "@xyo-network/react-payload-huri": "^7.4.2",
55
- "react-router-dom": "^7.10.0"
46
+ "@xylabs/react-async-effect": "~7.1.12",
47
+ "@xylabs/react-error": "~7.1.12",
48
+ "@xylabs/react-hooks": "~7.1.12",
49
+ "@xylabs/react-shared": "~7.1.12",
50
+ "@xylabs/sdk-js": "~5.0.64",
51
+ "@xyo-network/diviner-huri": "~5.3.2",
52
+ "@xyo-network/diviner-payload-abstract": "~5.3.2",
53
+ "@xyo-network/payload-model": "~5.3.2",
54
+ "@xyo-network/react-payload-huri": "7.5.1",
55
+ "react-router-dom": "^7.13.0"
56
56
  },
57
57
  "devDependencies": {
58
- "@mui/icons-material": "~7.3.6",
59
- "@mui/material": "~7.3.6",
60
- "@types/react": "^19.2.7",
61
- "@xylabs/ts-scripts-yarn3": "~7.2.8",
62
- "react": "^19.2.1",
63
- "react-dom": "^19.2.1",
64
- "typescript": "^5.9.3"
58
+ "@mui/icons-material": "~7.3.7",
59
+ "@mui/material": "~7.3.7",
60
+ "@types/react": "^19.2.10",
61
+ "@xylabs/ts-scripts-yarn3": "~7.3.2",
62
+ "react": "^19.2.4",
63
+ "react-dom": "^19.2.4",
64
+ "typescript": "^5.9.3",
65
+ "zod": "^4.3.6"
65
66
  },
66
67
  "peerDependencies": {
67
68
  "@mui/icons-material": ">=6 <8",
68
69
  "@mui/material": ">=6 <8",
69
70
  "react": "^19",
70
- "react-dom": "^19"
71
+ "react-dom": "^19",
72
+ "zod": "^4.3.6"
71
73
  },
72
74
  "publishConfig": {
73
75
  "access": "public"
74
76
  },
75
77
  "docs": "dist/docs.json"
76
- }
78
+ }
@@ -1,6 +1,6 @@
1
- import { exists } from '@xylabs/exists'
2
1
  import { useAsyncEffect } from '@xylabs/react-async-effect'
3
2
  import { useContextEx } from '@xylabs/react-shared'
3
+ import { exists } from '@xylabs/sdk-js'
4
4
  import type { HuriPayload } from '@xyo-network/diviner-huri'
5
5
  import { HuriSchema } from '@xyo-network/diviner-huri'
6
6
  import type { Payload } from '@xyo-network/payload-model'