@xyo-network/react-payload-diviner 2.78.0 → 2.78.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,2 +1,184 @@
1
- "use strict";var f=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var B=(e,r)=>{for(var i in r)f(e,i,{get:r[i],enumerable:!0})},J=(e,r,i,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of b(r))!A.call(e,t)&&t!==i&&f(e,t,{get:()=>r[t],enumerable:!(a=U(r,t))||a.enumerable});return e};var N=e=>J(f({},"__esModule",{value:!0}),e);var q={};B(q,{DivinedPayloadContext:()=>u,DivinedPayloadProvider:()=>M,DivinedPayloadWithHandleInner:()=>j,DivinedPayloadWithHandleProvider:()=>k,PayloadDivinerContext:()=>P,PayloadDivinerProvider:()=>O,useDivinePayload:()=>E,useDivinePayloads:()=>$,useDivinedPayload:()=>S,usePayloadDiviner:()=>C});module.exports=N(q);var T=require("@xyo-network/react-shared"),u=(0,T.createContextEx)();var w=require("@xyo-network/payload-model"),F=require("@xyo-network/react-error"),I=require("@xyo-network/react-payload-huri"),y=require("react-router-dom");var H=require("@xyo-network/react-shared"),P=(0,H.createContextEx)();var c=require("react");var g=require("react/jsx-runtime"),O=({diviner:e,required:r=!1,children:i})=>{let[a,t]=(0,c.useState)(e);return(0,c.useEffect)(()=>{e&&t(e)},[e]),(0,g.jsx)(P.Provider,{value:{diviner:a===e?a:void 0,provided:!0,setDiviner:t},children:a?i:r?null:i})};var D=require("@xylabs/lodash"),x=require("@xylabs/react-async-effect"),h=require("@xyo-network/diviner-huri"),W=require("@xyo-network/react-shared"),d=require("react");var C=(e=!1)=>(0,W.useContextEx)(P,"PayloadDiviner",e),E=e=>{let{diviner:r}=C(),[i,a]=(0,d.useState)(),[t,l]=(0,d.useState)();return(0,d.useEffect)(()=>{r&&a(void 0)},[r]),(0,x.useAsyncEffect)(async s=>{if(e&&r&&i===void 0)try{let n={huri:[e],schema:h.HuriSchema},[o]=await r?.divine([n])??[];s()&&a(o||null)}catch(n){s()&&l(n)}},[r,e,i]),[i,a,t]},$=e=>{let{diviner:r}=C(),[i,a]=(0,d.useState)(),[t,l]=(0,d.useState)();return(0,d.useEffect)(()=>{r&&a(void 0)},[r]),(0,x.useAsyncEffect)(async s=>{console.log(`huriList: ${JSON.stringify(e,null,2)}`);let n=await Promise.allSettled(e.map(async o=>{let p={huri:[o],schema:h.HuriSchema},[v]=await r?.divine([p])??[];return v}));s()&&(a([...n.values()].map(o=>o.status==="rejected"?null:o.value)),l((0,D.compact)([...n.values()].map(o=>o.status==="rejected"?new Error("divine failed",{cause:o.reason}):void 0))),s()&&(a([...n.values()].map(o=>o.status==="rejected"?null:o.value)),l((0,D.compact)([...n.values()].map(o=>o.status==="rejected"?new Error("divine failed",{cause:o.reason}):void 0)))))},[r,e,i]),[i,a,t]};var R=require("@xyo-network/react-shared");var S=()=>(0,R.useContextEx)(u,"DivinedPayload",!0);var m=require("react/jsx-runtime"),M=({children:e,hash:r})=>{let{hash:i}=(0,y.useParams)(),a=(0,I.useBuildHuri)(i),[t]=(0,y.useSearchParams)(),l=t.get("huri"),s=decodeURIComponent(l??""),n=r??s??a,[o,p,v]=E(n);return(0,m.jsx)(u.Provider,{value:{payload:o,payloadError:v,provided:!0,setPayload:p},children:e})},j=({children:e})=>{let{payloadError:r}=S();return(0,m.jsx)(F.ErrorRender,{error:r?{message:r.message,schema:w.ModuleErrorSchema,sources:[]}:void 0,errorContext:"Divined Payload Provider",children:e})},k=({children:e,...r})=>(0,m.jsx)(M,{...r,children:(0,m.jsx)(j,{children:e})});
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var src_exports = {};
22
+ __export(src_exports, {
23
+ DivinedPayloadContext: () => DivinedPayloadContext,
24
+ DivinedPayloadProvider: () => DivinedPayloadProvider,
25
+ DivinedPayloadWithHandleInner: () => DivinedPayloadWithHandleInner,
26
+ DivinedPayloadWithHandleProvider: () => DivinedPayloadWithHandleProvider,
27
+ PayloadDivinerContext: () => PayloadDivinerContext,
28
+ PayloadDivinerProvider: () => PayloadDivinerProvider,
29
+ useDivinePayload: () => useDivinePayload,
30
+ useDivinePayloads: () => useDivinePayloads,
31
+ useDivinedPayload: () => useDivinedPayload,
32
+ usePayloadDiviner: () => usePayloadDiviner
33
+ });
34
+ module.exports = __toCommonJS(src_exports);
35
+
36
+ // src/contexts/DivinedPayload/Context.tsx
37
+ var import_react_shared = require("@xyo-network/react-shared");
38
+ var DivinedPayloadContext = (0, import_react_shared.createContextEx)();
39
+
40
+ // src/contexts/DivinedPayload/Provider.tsx
41
+ var import_payload_model = require("@xyo-network/payload-model");
42
+ var import_react_error = require("@xyo-network/react-error");
43
+ var import_react_payload_huri = require("@xyo-network/react-payload-huri");
44
+ var import_react_router_dom = require("react-router-dom");
45
+
46
+ // src/contexts/PayloadDiviner/Context.ts
47
+ var import_react_shared2 = require("@xyo-network/react-shared");
48
+ var PayloadDivinerContext = (0, import_react_shared2.createContextEx)();
49
+
50
+ // src/contexts/PayloadDiviner/Provider.tsx
51
+ var import_react = require("react");
52
+ var import_jsx_runtime = require("react/jsx-runtime");
53
+ var PayloadDivinerProvider = ({ diviner: divinerProp, required = false, children }) => {
54
+ const [diviner, setDiviner] = (0, import_react.useState)(divinerProp);
55
+ (0, import_react.useEffect)(() => {
56
+ if (divinerProp) {
57
+ setDiviner(divinerProp);
58
+ }
59
+ }, [divinerProp]);
60
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
61
+ PayloadDivinerContext.Provider,
62
+ {
63
+ value: {
64
+ diviner: diviner === divinerProp ? diviner : void 0,
65
+ provided: true,
66
+ setDiviner
67
+ },
68
+ children: diviner ? children : required ? null : children
69
+ }
70
+ );
71
+ };
72
+
73
+ // src/contexts/PayloadDiviner/use.ts
74
+ var import_lodash = require("@xylabs/lodash");
75
+ var import_react_async_effect = require("@xylabs/react-async-effect");
76
+ var import_diviner_huri = require("@xyo-network/diviner-huri");
77
+ var import_react_shared3 = require("@xyo-network/react-shared");
78
+ var import_react2 = require("react");
79
+ var usePayloadDiviner = (required = false) => {
80
+ return (0, import_react_shared3.useContextEx)(PayloadDivinerContext, "PayloadDiviner", required);
81
+ };
82
+ var useDivinePayload = (huri) => {
83
+ const { diviner } = usePayloadDiviner();
84
+ const [payload, setPayload] = (0, import_react2.useState)();
85
+ const [error, setError] = (0, import_react2.useState)();
86
+ (0, import_react2.useEffect)(() => {
87
+ if (diviner) {
88
+ setPayload(void 0);
89
+ }
90
+ }, [diviner]);
91
+ (0, import_react_async_effect.useAsyncEffect)(
92
+ // eslint-disable-next-line react-hooks/exhaustive-deps
93
+ async (mounted) => {
94
+ if (huri && diviner && payload === void 0) {
95
+ try {
96
+ const huriPayload = { huri: [huri], schema: import_diviner_huri.HuriSchema };
97
+ const [payload2] = await diviner?.divine([huriPayload]) ?? [];
98
+ if (mounted()) {
99
+ setPayload(payload2 ? payload2 : null);
100
+ }
101
+ } catch (ex) {
102
+ if (mounted()) {
103
+ setError(ex);
104
+ }
105
+ }
106
+ }
107
+ },
108
+ [diviner, huri, payload]
109
+ );
110
+ return [payload, setPayload, error];
111
+ };
112
+ var useDivinePayloads = (huriList) => {
113
+ const { diviner } = usePayloadDiviner();
114
+ const [payloads, setPayloads] = (0, import_react2.useState)();
115
+ const [errors, setErrors] = (0, import_react2.useState)();
116
+ (0, import_react2.useEffect)(() => {
117
+ if (diviner) {
118
+ setPayloads(void 0);
119
+ }
120
+ }, [diviner]);
121
+ (0, import_react_async_effect.useAsyncEffect)(
122
+ // eslint-disable-next-line react-hooks/exhaustive-deps
123
+ async (mounted) => {
124
+ console.log(`huriList: ${JSON.stringify(huriList, null, 2)}`);
125
+ const payloads2 = await Promise.allSettled(
126
+ huriList.map(async (huri) => {
127
+ const huriPayload = { huri: [huri], schema: import_diviner_huri.HuriSchema };
128
+ const [payload] = await diviner?.divine([huriPayload]) ?? [];
129
+ return payload;
130
+ })
131
+ );
132
+ if (mounted()) {
133
+ setPayloads([...payloads2.values()].map((value) => value.status === "rejected" ? null : value.value));
134
+ setErrors(
135
+ (0, import_lodash.compact)(
136
+ [...payloads2.values()].map((value) => value.status === "rejected" ? new Error("divine failed", { cause: value.reason }) : void 0)
137
+ )
138
+ );
139
+ if (mounted()) {
140
+ setPayloads([...payloads2.values()].map((value) => value.status === "rejected" ? null : value.value));
141
+ setErrors(
142
+ (0, import_lodash.compact)(
143
+ [...payloads2.values()].map((value) => value.status === "rejected" ? new Error("divine failed", { cause: value.reason }) : void 0)
144
+ )
145
+ );
146
+ }
147
+ }
148
+ },
149
+ [diviner, huriList, payloads]
150
+ );
151
+ return [payloads, setPayloads, errors];
152
+ };
153
+
154
+ // src/contexts/DivinedPayload/use.ts
155
+ var import_react_shared4 = require("@xyo-network/react-shared");
156
+ var useDivinedPayload = () => (0, import_react_shared4.useContextEx)(DivinedPayloadContext, "DivinedPayload", true);
157
+
158
+ // src/contexts/DivinedPayload/Provider.tsx
159
+ var import_jsx_runtime2 = require("react/jsx-runtime");
160
+ var DivinedPayloadProvider = ({ children, hash }) => {
161
+ const { hash: hashParam } = (0, import_react_router_dom.useParams)();
162
+ const huriFromHashParam = (0, import_react_payload_huri.useBuildHuri)(hashParam);
163
+ const [params] = (0, import_react_router_dom.useSearchParams)();
164
+ const huriSearchParameter = params.get("huri");
165
+ const decodedHuriParam = decodeURIComponent(huriSearchParameter ?? "");
166
+ const huriUri = hash ?? decodedHuriParam ?? huriFromHashParam;
167
+ const [payload, setPayload, payloadError] = useDivinePayload(huriUri);
168
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(DivinedPayloadContext.Provider, { value: { payload, payloadError, provided: true, setPayload }, children });
169
+ };
170
+ var DivinedPayloadWithHandleInner = ({ children }) => {
171
+ const { payloadError } = useDivinedPayload();
172
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
173
+ import_react_error.ErrorRender,
174
+ {
175
+ error: payloadError ? { message: payloadError.message, schema: import_payload_model.ModuleErrorSchema, sources: [] } : void 0,
176
+ errorContext: "Divined Payload Provider",
177
+ children
178
+ }
179
+ );
180
+ };
181
+ var DivinedPayloadWithHandleProvider = ({ children, ...props }) => {
182
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(DivinedPayloadProvider, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(DivinedPayloadWithHandleInner, { children }) });
183
+ };
2
184
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/contexts/DivinedPayload/Context.tsx","../../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":["export * from './contexts'\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { DivinedPayloadState } from './State'\n\nexport const DivinedPayloadContext = createContextEx<DivinedPayloadState>()\n","import type { WithChildren } from '@xylabs/react-shared'\nimport { ModuleErrorSchema } from '@xyo-network/payload-model'\nimport { ErrorRender } from '@xyo-network/react-error'\nimport { useBuildHuri } from '@xyo-network/react-payload-huri'\nimport { useParams, useSearchParams } from 'react-router-dom'\n\nimport { useDivinePayload } from '../PayloadDiviner'\nimport { DivinedPayloadContext } from './Context'\nimport { useDivinedPayload } from './use'\n\nexport interface DivinedPayloadProviderProps extends WithChildren {\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 return <DivinedPayloadContext.Provider value={{ payload, payloadError, provided: true, setPayload }}>{children}</DivinedPayloadContext.Provider>\n}\n\nexport const DivinedPayloadWithHandleInner: React.FC<WithChildren> = ({ children }) => {\n const { payloadError } = useDivinedPayload()\n\n return (\n <ErrorRender\n error={payloadError ? { message: payloadError.message, schema: ModuleErrorSchema, sources: [] } : 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 '@xyo-network/react-shared'\n\nimport { PayloadDivinerState } from './State'\n\nconst PayloadDivinerContext = createContextEx<PayloadDivinerState>()\n\nexport { PayloadDivinerContext }\n","import { PayloadDiviner } from '@xyo-network/diviner-payload-abstract'\nimport { ContextExProviderProps } from '@xyo-network/react-shared'\nimport { useEffect, useState } from 'react'\n\nimport { PayloadDivinerContext } from './Context'\n\nexport type PayloadDivinerProviderProps = ContextExProviderProps<{\n /** Required */\n diviner?: PayloadDiviner\n}>\n\nexport const PayloadDivinerProvider: React.FC<PayloadDivinerProviderProps> = ({ diviner: divinerProp, required = false, children }) => {\n const [diviner, setDiviner] = useState<PayloadDiviner | undefined>(divinerProp)\n\n useEffect(() => {\n if (divinerProp) {\n setDiviner(divinerProp)\n }\n }, [divinerProp])\n\n return (\n <PayloadDivinerContext.Provider\n value={{\n diviner: diviner === divinerProp ? diviner : undefined,\n provided: true,\n setDiviner,\n }}\n >\n {diviner ?\n children\n : required ?\n null\n : children}\n </PayloadDivinerContext.Provider>\n )\n}\n","import { compact } from '@xylabs/lodash'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { HuriPayload, HuriSchema } from '@xyo-network/diviner-huri'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { useContextEx } from '@xyo-network/react-shared'\nimport { Dispatch, useEffect, useState } from 'react'\n\nimport { PayloadDivinerContext } from './Context'\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 if (diviner) {\n setPayload(undefined)\n }\n }, [diviner])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\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 WithMeta<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 setPayloads(undefined)\n }\n }, [diviner])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\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 compact(\n [...payloads.values()].map((value) => (value.status === 'rejected' ? new Error('divine failed', { cause: value.reason }) : undefined)),\n ),\n )\n if (mounted()) {\n setPayloads([...payloads.values()].map((value) => (value.status === 'rejected' ? null : value.value)) as (T | null)[])\n setErrors(\n compact(\n [...payloads.values()].map((value) => (value.status === 'rejected' ? new Error('divine failed', { cause: value.reason }) : undefined)),\n ),\n )\n }\n }\n },\n [diviner, huriList, payloads],\n )\n\n return [payloads, setPayloads, errors]\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { DivinedPayloadContext } from './Context'\n\nexport const useDivinedPayload = () => useContextEx(DivinedPayloadContext, 'DivinedPayload', true)\n"],"mappings":"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","names":["src_exports","__export","DivinedPayloadContext","DivinedPayloadProvider","DivinedPayloadWithHandleInner","DivinedPayloadWithHandleProvider","PayloadDivinerContext","PayloadDivinerProvider","useDivinePayload","useDivinePayloads","useDivinedPayload","usePayloadDiviner","__toCommonJS","import_react_shared","DivinedPayloadContext","import_payload_model","import_react_error","import_react_payload_huri","import_react_router_dom","import_react_shared","PayloadDivinerContext","import_react","import_jsx_runtime","PayloadDivinerProvider","divinerProp","required","children","diviner","setDiviner","PayloadDivinerContext","import_lodash","import_react_async_effect","import_diviner_huri","import_react_shared","import_react","usePayloadDiviner","required","PayloadDivinerContext","useDivinePayload","huri","diviner","payload","setPayload","error","setError","mounted","huriPayload","ex","useDivinePayloads","huriList","payloads","setPayloads","errors","setErrors","value","import_react_shared","useDivinedPayload","DivinedPayloadContext","import_jsx_runtime","DivinedPayloadProvider","children","hash","hashParam","huriFromHashParam","params","huriSearchParameter","decodedHuriParam","huriUri","payload","setPayload","payloadError","useDivinePayload","DivinedPayloadContext","DivinedPayloadWithHandleInner","useDivinedPayload","DivinedPayloadWithHandleProvider","props"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/contexts/DivinedPayload/Context.tsx","../../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":["export * from './contexts'\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { DivinedPayloadState } from './State'\n\nexport const DivinedPayloadContext = createContextEx<DivinedPayloadState>()\n","import type { WithChildren } from '@xylabs/react-shared'\nimport { ModuleErrorSchema } from '@xyo-network/payload-model'\nimport { ErrorRender } from '@xyo-network/react-error'\nimport { useBuildHuri } from '@xyo-network/react-payload-huri'\nimport { useParams, useSearchParams } from 'react-router-dom'\n\nimport { useDivinePayload } from '../PayloadDiviner'\nimport { DivinedPayloadContext } from './Context'\nimport { useDivinedPayload } from './use'\n\nexport interface DivinedPayloadProviderProps extends WithChildren {\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 return <DivinedPayloadContext.Provider value={{ payload, payloadError, provided: true, setPayload }}>{children}</DivinedPayloadContext.Provider>\n}\n\nexport const DivinedPayloadWithHandleInner: React.FC<WithChildren> = ({ children }) => {\n const { payloadError } = useDivinedPayload()\n\n return (\n <ErrorRender\n error={payloadError ? { message: payloadError.message, schema: ModuleErrorSchema, sources: [] } : 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 '@xyo-network/react-shared'\n\nimport { PayloadDivinerState } from './State'\n\nconst PayloadDivinerContext = createContextEx<PayloadDivinerState>()\n\nexport { PayloadDivinerContext }\n","import { PayloadDiviner } from '@xyo-network/diviner-payload-abstract'\nimport { ContextExProviderProps } from '@xyo-network/react-shared'\nimport { useEffect, useState } from 'react'\n\nimport { PayloadDivinerContext } from './Context'\n\nexport type PayloadDivinerProviderProps = ContextExProviderProps<{\n /** Required */\n diviner?: PayloadDiviner\n}>\n\nexport const PayloadDivinerProvider: React.FC<PayloadDivinerProviderProps> = ({ diviner: divinerProp, required = false, children }) => {\n const [diviner, setDiviner] = useState<PayloadDiviner | undefined>(divinerProp)\n\n useEffect(() => {\n if (divinerProp) {\n setDiviner(divinerProp)\n }\n }, [divinerProp])\n\n return (\n <PayloadDivinerContext.Provider\n value={{\n diviner: diviner === divinerProp ? diviner : undefined,\n provided: true,\n setDiviner,\n }}\n >\n {diviner ?\n children\n : required ?\n null\n : children}\n </PayloadDivinerContext.Provider>\n )\n}\n","import { compact } from '@xylabs/lodash'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { HuriPayload, HuriSchema } from '@xyo-network/diviner-huri'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { useContextEx } from '@xyo-network/react-shared'\nimport { Dispatch, useEffect, useState } from 'react'\n\nimport { PayloadDivinerContext } from './Context'\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 if (diviner) {\n setPayload(undefined)\n }\n }, [diviner])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\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 WithMeta<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 setPayloads(undefined)\n }\n }, [diviner])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\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 compact(\n [...payloads.values()].map((value) => (value.status === 'rejected' ? new Error('divine failed', { cause: value.reason }) : undefined)),\n ),\n )\n if (mounted()) {\n setPayloads([...payloads.values()].map((value) => (value.status === 'rejected' ? null : value.value)) as (T | null)[])\n setErrors(\n compact(\n [...payloads.values()].map((value) => (value.status === 'rejected' ? new Error('divine failed', { cause: value.reason }) : undefined)),\n ),\n )\n }\n }\n },\n [diviner, huriList, payloads],\n )\n\n return [payloads, setPayloads, errors]\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { DivinedPayloadContext } from './Context'\n\nexport const useDivinedPayload = () => useContextEx(DivinedPayloadContext, 'DivinedPayload', true)\n"],"mappings":"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","names":["import_react_shared","import_react_shared","import_react","payload","payloads","import_react_shared","import_jsx_runtime"]}
@@ -1,2 +1,161 @@
1
- import{createContextEx as E}from"@xyo-network/react-shared";var l=E();import{ModuleErrorSchema as w}from"@xyo-network/payload-model";import{ErrorRender as F}from"@xyo-network/react-error";import{useBuildHuri as I}from"@xyo-network/react-payload-huri";import{useParams as M,useSearchParams as j}from"react-router-dom";import{createContextEx as S}from"@xyo-network/react-shared";var u=S();import{useEffect as T,useState as H}from"react";import{jsx as g}from"react/jsx-runtime";var k=({diviner:e,required:r=!1,children:i})=>{let[a,n]=H(e);return T(()=>{e&&n(e)},[e]),g(u.Provider,{value:{diviner:a===e?a:void 0,provided:!0,setDiviner:n},children:a?i:r?null:i})};import{compact as p}from"@xylabs/lodash";import{useAsyncEffect as v}from"@xylabs/react-async-effect";import{HuriSchema as f}from"@xyo-network/diviner-huri";import{useContextEx as W}from"@xyo-network/react-shared";import{useEffect as D,useState as P}from"react";var x=(e=!1)=>W(u,"PayloadDiviner",e),h=e=>{let{diviner:r}=x(),[i,a]=P(),[n,s]=P();return D(()=>{r&&a(void 0)},[r]),v(async d=>{if(e&&r&&i===void 0)try{let t={huri:[e],schema:f},[o]=await r?.divine([t])??[];d()&&a(o||null)}catch(t){d()&&s(t)}},[r,e,i]),[i,a,n]},L=e=>{let{diviner:r}=x(),[i,a]=P(),[n,s]=P();return D(()=>{r&&a(void 0)},[r]),v(async d=>{console.log(`huriList: ${JSON.stringify(e,null,2)}`);let t=await Promise.allSettled(e.map(async o=>{let c={huri:[o],schema:f},[y]=await r?.divine([c])??[];return y}));d()&&(a([...t.values()].map(o=>o.status==="rejected"?null:o.value)),s(p([...t.values()].map(o=>o.status==="rejected"?new Error("divine failed",{cause:o.reason}):void 0))),d()&&(a([...t.values()].map(o=>o.status==="rejected"?null:o.value)),s(p([...t.values()].map(o=>o.status==="rejected"?new Error("divine failed",{cause:o.reason}):void 0)))))},[r,e,i]),[i,a,n]};import{useContextEx as R}from"@xyo-network/react-shared";var C=()=>R(l,"DivinedPayload",!0);import{jsx as m}from"react/jsx-runtime";var U=({children:e,hash:r})=>{let{hash:i}=M(),a=I(i),[n]=j(),s=n.get("huri"),d=decodeURIComponent(s??""),t=r??d??a,[o,c,y]=h(t);return m(l.Provider,{value:{payload:o,payloadError:y,provided:!0,setPayload:c},children:e})},b=({children:e})=>{let{payloadError:r}=C();return m(F,{error:r?{message:r.message,schema:w,sources:[]}:void 0,errorContext:"Divined Payload Provider",children:e})},Pe=({children:e,...r})=>m(U,{...r,children:m(b,{children:e})});export{l as DivinedPayloadContext,U as DivinedPayloadProvider,b as DivinedPayloadWithHandleInner,Pe as DivinedPayloadWithHandleProvider,u as PayloadDivinerContext,k as PayloadDivinerProvider,h as useDivinePayload,L as useDivinePayloads,C as useDivinedPayload,x as usePayloadDiviner};
1
+ // src/contexts/DivinedPayload/Context.tsx
2
+ import { createContextEx } from "@xyo-network/react-shared";
3
+ var DivinedPayloadContext = createContextEx();
4
+
5
+ // src/contexts/DivinedPayload/Provider.tsx
6
+ import { ModuleErrorSchema } from "@xyo-network/payload-model";
7
+ import { ErrorRender } from "@xyo-network/react-error";
8
+ import { useBuildHuri } from "@xyo-network/react-payload-huri";
9
+ import { useParams, useSearchParams } from "react-router-dom";
10
+
11
+ // src/contexts/PayloadDiviner/Context.ts
12
+ import { createContextEx as createContextEx2 } from "@xyo-network/react-shared";
13
+ var PayloadDivinerContext = createContextEx2();
14
+
15
+ // src/contexts/PayloadDiviner/Provider.tsx
16
+ import { useEffect, useState } from "react";
17
+ import { jsx } from "react/jsx-runtime";
18
+ var PayloadDivinerProvider = ({ diviner: divinerProp, required = false, children }) => {
19
+ const [diviner, setDiviner] = useState(divinerProp);
20
+ useEffect(() => {
21
+ if (divinerProp) {
22
+ setDiviner(divinerProp);
23
+ }
24
+ }, [divinerProp]);
25
+ return /* @__PURE__ */ jsx(
26
+ PayloadDivinerContext.Provider,
27
+ {
28
+ value: {
29
+ diviner: diviner === divinerProp ? diviner : void 0,
30
+ provided: true,
31
+ setDiviner
32
+ },
33
+ children: diviner ? children : required ? null : children
34
+ }
35
+ );
36
+ };
37
+
38
+ // src/contexts/PayloadDiviner/use.ts
39
+ import { compact } from "@xylabs/lodash";
40
+ import { useAsyncEffect } from "@xylabs/react-async-effect";
41
+ import { HuriSchema } from "@xyo-network/diviner-huri";
42
+ import { useContextEx } from "@xyo-network/react-shared";
43
+ import { useEffect as useEffect2, useState as useState2 } from "react";
44
+ var usePayloadDiviner = (required = false) => {
45
+ return useContextEx(PayloadDivinerContext, "PayloadDiviner", required);
46
+ };
47
+ var useDivinePayload = (huri) => {
48
+ const { diviner } = usePayloadDiviner();
49
+ const [payload, setPayload] = useState2();
50
+ const [error, setError] = useState2();
51
+ useEffect2(() => {
52
+ if (diviner) {
53
+ setPayload(void 0);
54
+ }
55
+ }, [diviner]);
56
+ useAsyncEffect(
57
+ // eslint-disable-next-line react-hooks/exhaustive-deps
58
+ async (mounted) => {
59
+ if (huri && diviner && payload === void 0) {
60
+ try {
61
+ const huriPayload = { huri: [huri], schema: HuriSchema };
62
+ const [payload2] = await diviner?.divine([huriPayload]) ?? [];
63
+ if (mounted()) {
64
+ setPayload(payload2 ? payload2 : null);
65
+ }
66
+ } catch (ex) {
67
+ if (mounted()) {
68
+ setError(ex);
69
+ }
70
+ }
71
+ }
72
+ },
73
+ [diviner, huri, payload]
74
+ );
75
+ return [payload, setPayload, error];
76
+ };
77
+ var useDivinePayloads = (huriList) => {
78
+ const { diviner } = usePayloadDiviner();
79
+ const [payloads, setPayloads] = useState2();
80
+ const [errors, setErrors] = useState2();
81
+ useEffect2(() => {
82
+ if (diviner) {
83
+ setPayloads(void 0);
84
+ }
85
+ }, [diviner]);
86
+ useAsyncEffect(
87
+ // eslint-disable-next-line react-hooks/exhaustive-deps
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
+ );
97
+ if (mounted()) {
98
+ setPayloads([...payloads2.values()].map((value) => value.status === "rejected" ? null : value.value));
99
+ setErrors(
100
+ compact(
101
+ [...payloads2.values()].map((value) => value.status === "rejected" ? new Error("divine failed", { cause: value.reason }) : void 0)
102
+ )
103
+ );
104
+ if (mounted()) {
105
+ setPayloads([...payloads2.values()].map((value) => value.status === "rejected" ? null : value.value));
106
+ setErrors(
107
+ compact(
108
+ [...payloads2.values()].map((value) => value.status === "rejected" ? new Error("divine failed", { cause: value.reason }) : void 0)
109
+ )
110
+ );
111
+ }
112
+ }
113
+ },
114
+ [diviner, huriList, payloads]
115
+ );
116
+ return [payloads, setPayloads, errors];
117
+ };
118
+
119
+ // src/contexts/DivinedPayload/use.ts
120
+ import { useContextEx as useContextEx2 } from "@xyo-network/react-shared";
121
+ var useDivinedPayload = () => useContextEx2(DivinedPayloadContext, "DivinedPayload", true);
122
+
123
+ // src/contexts/DivinedPayload/Provider.tsx
124
+ import { jsx as jsx2 } from "react/jsx-runtime";
125
+ var DivinedPayloadProvider = ({ children, hash }) => {
126
+ const { hash: hashParam } = useParams();
127
+ const huriFromHashParam = useBuildHuri(hashParam);
128
+ const [params] = useSearchParams();
129
+ const huriSearchParameter = params.get("huri");
130
+ const decodedHuriParam = decodeURIComponent(huriSearchParameter ?? "");
131
+ const huriUri = hash ?? decodedHuriParam ?? huriFromHashParam;
132
+ const [payload, setPayload, payloadError] = useDivinePayload(huriUri);
133
+ return /* @__PURE__ */ jsx2(DivinedPayloadContext.Provider, { value: { payload, payloadError, provided: true, setPayload }, children });
134
+ };
135
+ var DivinedPayloadWithHandleInner = ({ children }) => {
136
+ const { payloadError } = useDivinedPayload();
137
+ return /* @__PURE__ */ jsx2(
138
+ ErrorRender,
139
+ {
140
+ error: payloadError ? { message: payloadError.message, schema: ModuleErrorSchema, sources: [] } : void 0,
141
+ errorContext: "Divined Payload Provider",
142
+ children
143
+ }
144
+ );
145
+ };
146
+ var DivinedPayloadWithHandleProvider = ({ children, ...props }) => {
147
+ return /* @__PURE__ */ jsx2(DivinedPayloadProvider, { ...props, children: /* @__PURE__ */ jsx2(DivinedPayloadWithHandleInner, { children }) });
148
+ };
149
+ export {
150
+ DivinedPayloadContext,
151
+ DivinedPayloadProvider,
152
+ DivinedPayloadWithHandleInner,
153
+ DivinedPayloadWithHandleProvider,
154
+ PayloadDivinerContext,
155
+ PayloadDivinerProvider,
156
+ useDivinePayload,
157
+ useDivinePayloads,
158
+ useDivinedPayload,
159
+ usePayloadDiviner
160
+ };
2
161
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/contexts/DivinedPayload/Context.tsx","../../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 '@xyo-network/react-shared'\n\nimport { DivinedPayloadState } from './State'\n\nexport const DivinedPayloadContext = createContextEx<DivinedPayloadState>()\n","import type { WithChildren } from '@xylabs/react-shared'\nimport { ModuleErrorSchema } from '@xyo-network/payload-model'\nimport { ErrorRender } from '@xyo-network/react-error'\nimport { useBuildHuri } from '@xyo-network/react-payload-huri'\nimport { useParams, useSearchParams } from 'react-router-dom'\n\nimport { useDivinePayload } from '../PayloadDiviner'\nimport { DivinedPayloadContext } from './Context'\nimport { useDivinedPayload } from './use'\n\nexport interface DivinedPayloadProviderProps extends WithChildren {\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 return <DivinedPayloadContext.Provider value={{ payload, payloadError, provided: true, setPayload }}>{children}</DivinedPayloadContext.Provider>\n}\n\nexport const DivinedPayloadWithHandleInner: React.FC<WithChildren> = ({ children }) => {\n const { payloadError } = useDivinedPayload()\n\n return (\n <ErrorRender\n error={payloadError ? { message: payloadError.message, schema: ModuleErrorSchema, sources: [] } : 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 '@xyo-network/react-shared'\n\nimport { PayloadDivinerState } from './State'\n\nconst PayloadDivinerContext = createContextEx<PayloadDivinerState>()\n\nexport { PayloadDivinerContext }\n","import { PayloadDiviner } from '@xyo-network/diviner-payload-abstract'\nimport { ContextExProviderProps } from '@xyo-network/react-shared'\nimport { useEffect, useState } from 'react'\n\nimport { PayloadDivinerContext } from './Context'\n\nexport type PayloadDivinerProviderProps = ContextExProviderProps<{\n /** Required */\n diviner?: PayloadDiviner\n}>\n\nexport const PayloadDivinerProvider: React.FC<PayloadDivinerProviderProps> = ({ diviner: divinerProp, required = false, children }) => {\n const [diviner, setDiviner] = useState<PayloadDiviner | undefined>(divinerProp)\n\n useEffect(() => {\n if (divinerProp) {\n setDiviner(divinerProp)\n }\n }, [divinerProp])\n\n return (\n <PayloadDivinerContext.Provider\n value={{\n diviner: diviner === divinerProp ? diviner : undefined,\n provided: true,\n setDiviner,\n }}\n >\n {diviner ?\n children\n : required ?\n null\n : children}\n </PayloadDivinerContext.Provider>\n )\n}\n","import { compact } from '@xylabs/lodash'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { HuriPayload, HuriSchema } from '@xyo-network/diviner-huri'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { useContextEx } from '@xyo-network/react-shared'\nimport { Dispatch, useEffect, useState } from 'react'\n\nimport { PayloadDivinerContext } from './Context'\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 if (diviner) {\n setPayload(undefined)\n }\n }, [diviner])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\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 WithMeta<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 setPayloads(undefined)\n }\n }, [diviner])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\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 compact(\n [...payloads.values()].map((value) => (value.status === 'rejected' ? new Error('divine failed', { cause: value.reason }) : undefined)),\n ),\n )\n if (mounted()) {\n setPayloads([...payloads.values()].map((value) => (value.status === 'rejected' ? null : value.value)) as (T | null)[])\n setErrors(\n compact(\n [...payloads.values()].map((value) => (value.status === 'rejected' ? new Error('divine failed', { cause: value.reason }) : undefined)),\n ),\n )\n }\n }\n },\n [diviner, huriList, payloads],\n )\n\n return [payloads, setPayloads, errors]\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { DivinedPayloadContext } from './Context'\n\nexport const useDivinedPayload = () => useContextEx(DivinedPayloadContext, 'DivinedPayload', true)\n"],"mappings":"AAAA,OAAS,mBAAAA,MAAuB,4BAIzB,IAAMC,EAAwBD,EAAqC,ECH1E,OAAS,qBAAAE,MAAyB,6BAClC,OAAS,eAAAC,MAAmB,2BAC5B,OAAS,gBAAAC,MAAoB,kCAC7B,OAAS,aAAAC,EAAW,mBAAAC,MAAuB,mBCJ3C,OAAS,mBAAAC,MAAuB,4BAIhC,IAAMC,EAAwBD,EAAqC,ECFnE,OAAS,aAAAE,EAAW,YAAAC,MAAgB,QAmBhC,cAAAC,MAAA,oBAVG,IAAMC,EAAgE,CAAC,CAAE,QAASC,EAAa,SAAAC,EAAW,GAAO,SAAAC,CAAS,IAAM,CACrI,GAAM,CAACC,EAASC,CAAU,EAAIC,EAAqCL,CAAW,EAE9E,OAAAM,EAAU,IAAM,CACVN,GACFI,EAAWJ,CAAW,CAE1B,EAAG,CAACA,CAAW,CAAC,EAGdF,EAACS,EAAsB,SAAtB,CACC,MAAO,CACL,QAASJ,IAAYH,EAAcG,EAAU,OAC7C,SAAU,GACV,WAAAC,CACF,EAEC,SAAAD,EACCD,EACAD,EACA,KACAC,EACJ,CAEJ,ECnCA,OAAS,WAAAM,MAAe,iBACxB,OAAS,kBAAAC,MAAsB,6BAC/B,OAAsB,cAAAC,MAAkB,4BAExC,OAAS,gBAAAC,MAAoB,4BAC7B,OAAmB,aAAAC,EAAW,YAAAC,MAAgB,QAIvC,IAAMC,EAAoB,CAACC,EAAW,KACpCC,EAAaC,EAAuB,iBAAkBF,CAAQ,EAG1DG,EACXC,GAC8E,CAC9E,GAAM,CAAE,QAAAC,CAAQ,EAAIN,EAAkB,EAChC,CAACO,EAASC,CAAU,EAAIC,EAAmB,EAC3C,CAACC,EAAOC,CAAQ,EAAIF,EAAgB,EAE1C,OAAAG,EAAU,IAAM,CACVN,GACFE,EAAW,MAAS,CAExB,EAAG,CAACF,CAAO,CAAC,EAEZO,EAEE,MAAOC,GAAY,CACjB,GAAIT,GAAQC,GAAWC,IAAY,OACjC,GAAI,CACF,IAAMQ,EAA2B,CAAE,KAAM,CAACV,CAAI,EAAG,OAAQW,CAAW,EAC9D,CAACT,CAAO,EAAK,MAAMD,GAAS,OAAO,CAACS,CAAW,CAAC,GAAM,CAAC,EACzDD,EAAQ,GACVN,EAAWD,GAAqC,IAAI,CAExD,OAASU,EAAI,CACPH,EAAQ,GACVH,EAASM,CAAW,CAExB,CAEJ,EACA,CAACX,EAASD,EAAME,CAAO,CACzB,EAEO,CAACA,EAASC,EAAYE,CAAK,CACpC,EAEaQ,EACXC,GACwF,CACxF,GAAM,CAAE,QAAAb,CAAQ,EAAIN,EAAkB,EAChC,CAACoB,EAAUC,CAAW,EAAIZ,EAAuB,EACjD,CAACa,EAAQC,CAAS,EAAId,EAAkB,EAE9C,OAAAG,EAAU,IAAM,CACVN,GACFe,EAAY,MAAS,CAEzB,EAAG,CAACf,CAAO,CAAC,EAEZO,EAEE,MAAOC,GAAY,CACjB,QAAQ,IAAI,aAAa,KAAK,UAAUK,EAAU,KAAM,CAAC,CAAC,EAAE,EAC5D,IAAMC,EAAW,MAAM,QAAQ,WAC7BD,EAAS,IAAI,MAAOd,GAAS,CAC3B,IAAMU,EAA2B,CAAE,KAAM,CAACV,CAAI,EAAG,OAAQW,CAAW,EAC9D,CAACT,CAAO,EAAK,MAAMD,GAAS,OAAO,CAACS,CAAW,CAAC,GAAM,CAAC,EAC7D,OAAOR,CACT,CAAC,CACH,EACIO,EAAQ,IACVO,EAAY,CAAC,GAAGD,EAAS,OAAO,CAAC,EAAE,IAAKI,GAAWA,EAAM,SAAW,WAAa,KAAOA,EAAM,KAAM,CAAiB,EACrHD,EACEE,EACE,CAAC,GAAGL,EAAS,OAAO,CAAC,EAAE,IAAKI,GAAWA,EAAM,SAAW,WAAa,IAAI,MAAM,gBAAiB,CAAE,MAAOA,EAAM,MAAO,CAAC,EAAI,MAAU,CACvI,CACF,EACIV,EAAQ,IACVO,EAAY,CAAC,GAAGD,EAAS,OAAO,CAAC,EAAE,IAAKI,GAAWA,EAAM,SAAW,WAAa,KAAOA,EAAM,KAAM,CAAiB,EACrHD,EACEE,EACE,CAAC,GAAGL,EAAS,OAAO,CAAC,EAAE,IAAKI,GAAWA,EAAM,SAAW,WAAa,IAAI,MAAM,gBAAiB,CAAE,MAAOA,EAAM,MAAO,CAAC,EAAI,MAAU,CACvI,CACF,GAGN,EACA,CAAClB,EAASa,EAAUC,CAAQ,CAC9B,EAEO,CAACA,EAAUC,EAAaC,CAAM,CACvC,EC9FA,OAAS,gBAAAI,MAAoB,4BAItB,IAAMC,EAAoB,IAAMC,EAAaC,EAAuB,iBAAkB,EAAI,EJsBxF,cAAAC,MAAA,oBAZF,IAAMC,EAAgE,CAAC,CAAE,SAAAC,EAAU,KAAAC,CAAK,IAAM,CACnG,GAAM,CAAE,KAAMC,CAAU,EAAIC,EAAU,EAEhCC,EAAoBC,EAAaH,CAAS,EAE1C,CAACI,CAAM,EAAIC,EAAgB,EAC3BC,EAAsBF,EAAO,IAAI,MAAM,EACvCG,EAAmB,mBAAmBD,GAAuB,EAAE,EAC/DE,EAAUT,GAAQQ,GAAoBL,EAEtC,CAACO,EAASC,EAAYC,CAAY,EAAIC,EAAiBJ,CAAO,EAEpE,OAAOZ,EAACiB,EAAsB,SAAtB,CAA+B,MAAO,CAAE,QAAAJ,EAAS,aAAAE,EAAc,SAAU,GAAM,WAAAD,CAAW,EAAI,SAAAZ,EAAS,CACjH,EAEagB,EAAwD,CAAC,CAAE,SAAAhB,CAAS,IAAM,CACrF,GAAM,CAAE,aAAAa,CAAa,EAAII,EAAkB,EAE3C,OACEnB,EAACoB,EAAA,CACC,MAAOL,EAAe,CAAE,QAASA,EAAa,QAAS,OAAQM,EAAmB,QAAS,CAAC,CAAE,EAAI,OAClG,aAAa,2BAEZ,SAAAnB,EACH,CAEJ,EAEaoB,GAA0E,CAAC,CAAE,SAAApB,EAAU,GAAGqB,CAAM,IAEzGvB,EAACC,EAAA,CAAwB,GAAGsB,EAC1B,SAAAvB,EAACkB,EAAA,CAA+B,SAAAhB,EAAS,EAC3C","names":["createContextEx","DivinedPayloadContext","ModuleErrorSchema","ErrorRender","useBuildHuri","useParams","useSearchParams","createContextEx","PayloadDivinerContext","useEffect","useState","jsx","PayloadDivinerProvider","divinerProp","required","children","diviner","setDiviner","useState","useEffect","PayloadDivinerContext","compact","useAsyncEffect","HuriSchema","useContextEx","useEffect","useState","usePayloadDiviner","required","useContextEx","PayloadDivinerContext","useDivinePayload","huri","diviner","payload","setPayload","useState","error","setError","useEffect","useAsyncEffect","mounted","huriPayload","HuriSchema","ex","useDivinePayloads","huriList","payloads","setPayloads","errors","setErrors","value","compact","useContextEx","useDivinedPayload","useContextEx","DivinedPayloadContext","jsx","DivinedPayloadProvider","children","hash","hashParam","useParams","huriFromHashParam","useBuildHuri","params","useSearchParams","huriSearchParameter","decodedHuriParam","huriUri","payload","setPayload","payloadError","useDivinePayload","DivinedPayloadContext","DivinedPayloadWithHandleInner","useDivinedPayload","ErrorRender","ModuleErrorSchema","DivinedPayloadWithHandleProvider","props"]}
1
+ {"version":3,"sources":["../../src/contexts/DivinedPayload/Context.tsx","../../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 '@xyo-network/react-shared'\n\nimport { DivinedPayloadState } from './State'\n\nexport const DivinedPayloadContext = createContextEx<DivinedPayloadState>()\n","import type { WithChildren } from '@xylabs/react-shared'\nimport { ModuleErrorSchema } from '@xyo-network/payload-model'\nimport { ErrorRender } from '@xyo-network/react-error'\nimport { useBuildHuri } from '@xyo-network/react-payload-huri'\nimport { useParams, useSearchParams } from 'react-router-dom'\n\nimport { useDivinePayload } from '../PayloadDiviner'\nimport { DivinedPayloadContext } from './Context'\nimport { useDivinedPayload } from './use'\n\nexport interface DivinedPayloadProviderProps extends WithChildren {\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 return <DivinedPayloadContext.Provider value={{ payload, payloadError, provided: true, setPayload }}>{children}</DivinedPayloadContext.Provider>\n}\n\nexport const DivinedPayloadWithHandleInner: React.FC<WithChildren> = ({ children }) => {\n const { payloadError } = useDivinedPayload()\n\n return (\n <ErrorRender\n error={payloadError ? { message: payloadError.message, schema: ModuleErrorSchema, sources: [] } : 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 '@xyo-network/react-shared'\n\nimport { PayloadDivinerState } from './State'\n\nconst PayloadDivinerContext = createContextEx<PayloadDivinerState>()\n\nexport { PayloadDivinerContext }\n","import { PayloadDiviner } from '@xyo-network/diviner-payload-abstract'\nimport { ContextExProviderProps } from '@xyo-network/react-shared'\nimport { useEffect, useState } from 'react'\n\nimport { PayloadDivinerContext } from './Context'\n\nexport type PayloadDivinerProviderProps = ContextExProviderProps<{\n /** Required */\n diviner?: PayloadDiviner\n}>\n\nexport const PayloadDivinerProvider: React.FC<PayloadDivinerProviderProps> = ({ diviner: divinerProp, required = false, children }) => {\n const [diviner, setDiviner] = useState<PayloadDiviner | undefined>(divinerProp)\n\n useEffect(() => {\n if (divinerProp) {\n setDiviner(divinerProp)\n }\n }, [divinerProp])\n\n return (\n <PayloadDivinerContext.Provider\n value={{\n diviner: diviner === divinerProp ? diviner : undefined,\n provided: true,\n setDiviner,\n }}\n >\n {diviner ?\n children\n : required ?\n null\n : children}\n </PayloadDivinerContext.Provider>\n )\n}\n","import { compact } from '@xylabs/lodash'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { HuriPayload, HuriSchema } from '@xyo-network/diviner-huri'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { useContextEx } from '@xyo-network/react-shared'\nimport { Dispatch, useEffect, useState } from 'react'\n\nimport { PayloadDivinerContext } from './Context'\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 if (diviner) {\n setPayload(undefined)\n }\n }, [diviner])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\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 WithMeta<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 setPayloads(undefined)\n }\n }, [diviner])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\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 compact(\n [...payloads.values()].map((value) => (value.status === 'rejected' ? new Error('divine failed', { cause: value.reason }) : undefined)),\n ),\n )\n if (mounted()) {\n setPayloads([...payloads.values()].map((value) => (value.status === 'rejected' ? null : value.value)) as (T | null)[])\n setErrors(\n compact(\n [...payloads.values()].map((value) => (value.status === 'rejected' ? new Error('divine failed', { cause: value.reason }) : undefined)),\n ),\n )\n }\n }\n },\n [diviner, huriList, payloads],\n )\n\n return [payloads, setPayloads, errors]\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { DivinedPayloadContext } from './Context'\n\nexport const useDivinedPayload = () => useContextEx(DivinedPayloadContext, 'DivinedPayload', true)\n"],"mappings":"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","names":["createContextEx","useEffect","useState","useState","useEffect","payload","payloads","useContextEx","useContextEx","jsx"]}