@xyo-network/react-schema 2.64.0 → 2.64.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.
Files changed (38) hide show
  1. package/dist/browser/components/Property/SchemaProperty.js +4 -3
  2. package/dist/browser/components/Property/SchemaProperty.js.map +1 -1
  3. package/dist/browser/components/Property/index.js +54 -1
  4. package/dist/browser/components/Property/index.js.map +1 -1
  5. package/dist/browser/components/SelectEx/SchemaSelectEx.js +15 -3
  6. package/dist/browser/components/SelectEx/SchemaSelectEx.js.map +1 -1
  7. package/dist/browser/components/SelectEx/index.js +46 -1
  8. package/dist/browser/components/SelectEx/index.js.map +1 -1
  9. package/dist/browser/components/index.js +99 -2
  10. package/dist/browser/components/index.js.map +1 -1
  11. package/dist/browser/contexts/Schema/Context.js +2 -1
  12. package/dist/browser/contexts/Schema/Context.js.map +1 -1
  13. package/dist/browser/contexts/Schema/Provider/Memory.js +59 -7
  14. package/dist/browser/contexts/Schema/Provider/Memory.js.map +1 -1
  15. package/dist/browser/contexts/Schema/Provider/Route.js +86 -10
  16. package/dist/browser/contexts/Schema/Provider/Route.js.map +1 -1
  17. package/dist/browser/contexts/Schema/Provider/index.js +123 -3
  18. package/dist/browser/contexts/Schema/Provider/index.js.map +1 -1
  19. package/dist/browser/contexts/Schema/index.js +125 -4
  20. package/dist/browser/contexts/Schema/index.js.map +1 -1
  21. package/dist/browser/contexts/Schema/use.js +8 -2
  22. package/dist/browser/contexts/Schema/use.js.map +1 -1
  23. package/dist/browser/contexts/index.js +125 -1
  24. package/dist/browser/contexts/index.js.map +1 -1
  25. package/dist/browser/hooks/index.js +165 -4
  26. package/dist/browser/hooks/index.js.map +1 -1
  27. package/dist/browser/hooks/useGetSchema.js +2 -1
  28. package/dist/browser/hooks/useGetSchema.js.map +1 -1
  29. package/dist/browser/hooks/useSchemaDefinitions.js +2 -1
  30. package/dist/browser/hooks/useSchemaDefinitions.js.map +1 -1
  31. package/dist/browser/hooks/useSchemaList.js +2 -1
  32. package/dist/browser/hooks/useSchemaList.js.map +1 -1
  33. package/dist/browser/hooks/useSchemaStats.js +2 -1
  34. package/dist/browser/hooks/useSchemaStats.js.map +1 -1
  35. package/dist/browser/index.js +330 -3
  36. package/dist/browser/index.js.map +1 -1
  37. package/dist/docs.json +38 -38
  38. package/package.json +26 -26
@@ -1,4 +1,124 @@
1
- export * from "./Memory";
2
- export * from "./Props";
3
- export * from "./Route";
1
+ // src/contexts/Schema/Provider/Memory.tsx
2
+ import { compact } from "@xylabs/lodash";
3
+ import { useEffect, useState as useState2 } from "react";
4
+
5
+ // src/hooks/useSchemaStats.tsx
6
+ import { useAsyncEffect } from "@xylabs/react-async-effect";
7
+ import { isSchemaStatsPayload, SchemaStatsQuerySchema } from "@xyo-network/diviner-schema-stats-model";
8
+ import { TYPES } from "@xyo-network/node-core-types";
9
+ import { useDivinerFromNode } from "@xyo-network/react-diviner";
10
+ import { useMemo, useState } from "react";
11
+ var useSchemaStats = (statsAddress, nameOrAddress = TYPES.SchemaStatsDiviner.description) => {
12
+ const [refresh, setRefresh] = useState(1);
13
+ const [diviner, divinerError] = useDivinerFromNode(nameOrAddress);
14
+ const [error, setError] = useState();
15
+ const refreshHistory = () => setRefresh((previous) => previous + 1);
16
+ const [schemaList, setSchemaList] = useState();
17
+ const query = useMemo(
18
+ () => ({
19
+ address: statsAddress,
20
+ schema: SchemaStatsQuerySchema
21
+ }),
22
+ [statsAddress]
23
+ );
24
+ useAsyncEffect(
25
+ // eslint-disable-next-line react-hooks/exhaustive-deps
26
+ async (mounted) => {
27
+ if (diviner) {
28
+ if (divinerError) {
29
+ if (mounted()) {
30
+ setError(divinerError);
31
+ setSchemaList(void 0);
32
+ }
33
+ } else {
34
+ try {
35
+ const schemas = (await diviner.divine([query])).filter(isSchemaStatsPayload);
36
+ if (mounted()) {
37
+ setSchemaList(schemas);
38
+ setError(void 0);
39
+ }
40
+ } catch (ex) {
41
+ setError(ex);
42
+ setSchemaList(void 0);
43
+ }
44
+ }
45
+ }
46
+ },
47
+ [diviner, refresh, divinerError, query]
48
+ );
49
+ return [schemaList, error, refreshHistory];
50
+ };
51
+
52
+ // src/contexts/Schema/Context.ts
53
+ import { createContextEx } from "@xyo-network/react-shared";
54
+ var SchemaContext = createContextEx();
55
+
56
+ // src/contexts/Schema/Provider/Memory.tsx
57
+ import { jsx } from "react/jsx-runtime";
58
+ var SchemaMemoryProvider = ({ defaultSchema, knownSchemaList = [], ...props }) => {
59
+ const [schema, setSchema] = useState2(defaultSchema);
60
+ const [schemaList, setSchemaList] = useState2(knownSchemaList);
61
+ const [fetchedSchemaStats] = useSchemaStats();
62
+ useEffect(() => {
63
+ if (fetchedSchemaStats) {
64
+ const schemaList2 = compact(fetchedSchemaStats.map(({ name }) => name));
65
+ setSchemaList(schemaList2);
66
+ }
67
+ }, [fetchedSchemaStats]);
68
+ return /* @__PURE__ */ jsx(SchemaContext.Provider, { value: { provided: true, schema, schemaList: knownSchemaList ?? schemaList, setSchema, setSchemaList }, ...props });
69
+ };
70
+
71
+ // src/contexts/Schema/Provider/Route.tsx
72
+ import { useCallback, useEffect as useEffect2 } from "react";
73
+ import { useSearchParams } from "react-router-dom";
74
+
75
+ // src/contexts/Schema/use.ts
76
+ import { useContextEx } from "@xyo-network/react-shared";
77
+ var useSchema = (required = false) => {
78
+ return useContextEx(SchemaContext, "Schema", required);
79
+ };
80
+
81
+ // src/contexts/Schema/Provider/Route.tsx
82
+ import { jsx as jsx2 } from "react/jsx-runtime";
83
+ var SchemaRouteProviderInner = ({ children }) => {
84
+ const { schema, setSchema, schemaList } = useSchema();
85
+ const [params, setParams] = useSearchParams();
86
+ const routeSchema = params.get("schema");
87
+ const setSchemaParam = useCallback(
88
+ (schema2) => {
89
+ if (schema2) {
90
+ params.set("schema", schema2);
91
+ setParams(params, { replace: true });
92
+ setSchema?.(schema2);
93
+ } else {
94
+ params.delete("network");
95
+ }
96
+ },
97
+ [params, setParams, setSchema]
98
+ );
99
+ const setSchemaLocal = useCallback(
100
+ (schema2) => {
101
+ setSchemaParam(schema2);
102
+ setSchema?.(schema2);
103
+ },
104
+ [setSchemaParam, setSchema]
105
+ );
106
+ useEffect2(() => {
107
+ if (routeSchema !== schema) {
108
+ if (routeSchema === void 0 && schema !== void 0) {
109
+ setSchemaLocal(schema);
110
+ } else if (routeSchema) {
111
+ setSchema?.(routeSchema);
112
+ }
113
+ }
114
+ }, [routeSchema, schema, setSchemaParam, setSchema, setSchemaLocal]);
115
+ return /* @__PURE__ */ jsx2(SchemaContext.Provider, { value: { provided: true, schema, schemaList, setSchema: setSchemaLocal }, children });
116
+ };
117
+ var SchemaRouteProvider = ({ knownSchemaList, defaultSchema, ...props }) => {
118
+ return /* @__PURE__ */ jsx2(SchemaMemoryProvider, { knownSchemaList, defaultSchema, children: /* @__PURE__ */ jsx2(SchemaRouteProviderInner, { ...props }) });
119
+ };
120
+ export {
121
+ SchemaMemoryProvider,
122
+ SchemaRouteProvider
123
+ };
4
124
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/contexts/Schema/Provider/index.ts"],"sourcesContent":["export * from './Memory'\nexport * from './Props'\nexport * from './Route'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/contexts/Schema/Provider/Memory.tsx","../../../../../src/hooks/useSchemaStats.tsx","../../../../../src/contexts/Schema/Context.ts","../../../../../src/contexts/Schema/Provider/Route.tsx","../../../../../src/contexts/Schema/use.ts"],"sourcesContent":["import { compact } from '@xylabs/lodash'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { useEffect, useState } from 'react'\n\nimport { useSchemaStats } from '../../../hooks'\nimport { SchemaContext } from '../Context'\nimport { SchemaProviderProps } from './Props'\n\nexport const SchemaMemoryProvider: React.FC<WithChildren<SchemaProviderProps>> = ({ defaultSchema, knownSchemaList = [], ...props }) => {\n const [schema, setSchema] = useState(defaultSchema)\n const [schemaList, setSchemaList] = useState<string[] | undefined>(knownSchemaList)\n const [fetchedSchemaStats] = useSchemaStats()\n\n useEffect(() => {\n if (fetchedSchemaStats) {\n const schemaList = compact(fetchedSchemaStats.map(({ name }) => name))\n setSchemaList(schemaList)\n }\n }, [fetchedSchemaStats])\n\n return <SchemaContext.Provider value={{ provided: true, schema, schemaList: knownSchemaList ?? schemaList, setSchema, setSchemaList }} {...props} />\n}\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { isSchemaStatsPayload, SchemaStatsPayload, SchemaStatsQueryPayload, SchemaStatsQuerySchema } from '@xyo-network/diviner-schema-stats-model'\nimport { TYPES } from '@xyo-network/node-core-types'\nimport { useDivinerFromNode } from '@xyo-network/react-diviner'\nimport { Dispatch, SetStateAction, useMemo, useState } from 'react'\n\nexport const useSchemaStats = (\n statsAddress?: string,\n nameOrAddress = TYPES.SchemaStatsDiviner.description,\n): [SchemaStatsPayload[] | undefined, Error | undefined, Dispatch<SetStateAction<number>>] => {\n const [refresh, setRefresh] = useState(1)\n const [diviner, divinerError] = useDivinerFromNode(nameOrAddress)\n const [error, setError] = useState<Error>()\n const refreshHistory = () => setRefresh((previous) => previous + 1)\n\n const [schemaList, setSchemaList] = useState<SchemaStatsPayload[]>()\n\n const query: SchemaStatsQueryPayload = useMemo(\n () => ({\n address: statsAddress,\n schema: SchemaStatsQuerySchema,\n }),\n [statsAddress],\n )\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n if (diviner) {\n if (divinerError) {\n if (mounted()) {\n setError(divinerError)\n setSchemaList(undefined)\n }\n } else {\n try {\n const schemas = (await diviner.divine([query])).filter(isSchemaStatsPayload)\n if (mounted()) {\n setSchemaList(schemas)\n setError(undefined)\n }\n } catch (ex) {\n setError(ex as Error)\n setSchemaList(undefined)\n }\n }\n }\n },\n [diviner, refresh, divinerError, query],\n )\n\n return [schemaList, error, refreshHistory]\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { SchemaContextState } from './State'\n\nexport const SchemaContext = createContextEx<SchemaContextState>()\n","import type { WithChildren } from '@xylabs/react-shared'\nimport { useCallback, useEffect } from 'react'\nimport { useSearchParams } from 'react-router-dom'\n\nimport { SchemaContext } from '../Context'\nimport { useSchema } from '../use'\nimport { SchemaMemoryProvider } from './Memory'\nimport { SchemaProviderProps } from './Props'\n\nconst SchemaRouteProviderInner: React.FC<WithChildren> = ({ children }) => {\n const { schema, setSchema, schemaList } = useSchema()\n\n const [params, setParams] = useSearchParams()\n\n const routeSchema = params.get('schema')\n\n //update the network stored in the route\n const setSchemaParam = useCallback(\n (schema?: string) => {\n if (schema) {\n params.set('schema', schema)\n setParams(params, { replace: true })\n setSchema?.(schema)\n } else {\n params.delete('network')\n }\n },\n [params, setParams, setSchema],\n )\n\n //if the network is actively changed, update both memory and route\n const setSchemaLocal = useCallback(\n (schema: string) => {\n setSchemaParam(schema)\n setSchema?.(schema)\n },\n [setSchemaParam, setSchema],\n )\n\n //sync memory and route storage of network\n useEffect(() => {\n if (routeSchema !== schema) {\n if (routeSchema === undefined && schema !== undefined) {\n //if the route does not have a network selected, use what is in the memory context\n setSchemaLocal(schema)\n } else if (routeSchema) {\n //if the route has a selection and it is different from memory, update memory\n setSchema?.(routeSchema)\n }\n }\n }, [routeSchema, schema, setSchemaParam, setSchema, setSchemaLocal])\n\n return <SchemaContext.Provider value={{ provided: true, schema, schemaList, setSchema: setSchemaLocal }}>{children}</SchemaContext.Provider>\n}\n\nexport const SchemaRouteProvider: React.FC<WithChildren<SchemaProviderProps>> = ({ knownSchemaList, defaultSchema, ...props }) => {\n return (\n <SchemaMemoryProvider knownSchemaList={knownSchemaList} defaultSchema={defaultSchema}>\n <SchemaRouteProviderInner {...props} />\n </SchemaMemoryProvider>\n )\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { SchemaContext } from './Context'\nimport { SchemaContextState } from './State'\n\nexport const useSchema = (required = false) => {\n return useContextEx<SchemaContextState>(SchemaContext, 'Schema', required)\n}\n"],"mappings":";AAAA,SAAS,eAAe;AAExB,SAAS,WAAW,YAAAA,iBAAgB;;;ACFpC,SAAS,sBAAsB;AAC/B,SAAS,sBAAmE,8BAA8B;AAC1G,SAAS,aAAa;AACtB,SAAS,0BAA0B;AACnC,SAAmC,SAAS,gBAAgB;AAErD,IAAM,iBAAiB,CAC5B,cACA,gBAAgB,MAAM,mBAAmB,gBACmD;AAC5F,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,CAAC;AACxC,QAAM,CAAC,SAAS,YAAY,IAAI,mBAAmB,aAAa;AAChE,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAgB;AAC1C,QAAM,iBAAiB,MAAM,WAAW,CAAC,aAAa,WAAW,CAAC;AAElE,QAAM,CAAC,YAAY,aAAa,IAAI,SAA+B;AAEnE,QAAM,QAAiC;AAAA,IACrC,OAAO;AAAA,MACL,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,IACA,CAAC,YAAY;AAAA,EACf;AAEA;AAAA;AAAA,IAEE,OAAO,YAAY;AACjB,UAAI,SAAS;AACX,YAAI,cAAc;AAChB,cAAI,QAAQ,GAAG;AACb,qBAAS,YAAY;AACrB,0BAAc,MAAS;AAAA,UACzB;AAAA,QACF,OAAO;AACL,cAAI;AACF,kBAAM,WAAW,MAAM,QAAQ,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,oBAAoB;AAC3E,gBAAI,QAAQ,GAAG;AACb,4BAAc,OAAO;AACrB,uBAAS,MAAS;AAAA,YACpB;AAAA,UACF,SAAS,IAAI;AACX,qBAAS,EAAW;AACpB,0BAAc,MAAS;AAAA,UACzB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,SAAS,SAAS,cAAc,KAAK;AAAA,EACxC;AAEA,SAAO,CAAC,YAAY,OAAO,cAAc;AAC3C;;;ACpDA,SAAS,uBAAuB;AAIzB,IAAM,gBAAgB,gBAAoC;;;AFgBxD;AAZF,IAAM,uBAAoE,CAAC,EAAE,eAAe,kBAAkB,CAAC,GAAG,GAAG,MAAM,MAAM;AACtI,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAAS,aAAa;AAClD,QAAM,CAAC,YAAY,aAAa,IAAIA,UAA+B,eAAe;AAClF,QAAM,CAAC,kBAAkB,IAAI,eAAe;AAE5C,YAAU,MAAM;AACd,QAAI,oBAAoB;AACtB,YAAMC,cAAa,QAAQ,mBAAmB,IAAI,CAAC,EAAE,KAAK,MAAM,IAAI,CAAC;AACrE,oBAAcA,WAAU;AAAA,IAC1B;AAAA,EACF,GAAG,CAAC,kBAAkB,CAAC;AAEvB,SAAO,oBAAC,cAAc,UAAd,EAAuB,OAAO,EAAE,UAAU,MAAM,QAAQ,YAAY,mBAAmB,YAAY,WAAW,cAAc,GAAI,GAAG,OAAO;AACpJ;;;AGpBA,SAAS,aAAa,aAAAC,kBAAiB;AACvC,SAAS,uBAAuB;;;ACFhC,SAAS,oBAAoB;AAKtB,IAAM,YAAY,CAAC,WAAW,UAAU;AAC7C,SAAO,aAAiC,eAAe,UAAU,QAAQ;AAC3E;;;AD6CS,gBAAAC,YAAA;AA3CT,IAAM,2BAAmD,CAAC,EAAE,SAAS,MAAM;AACzE,QAAM,EAAE,QAAQ,WAAW,WAAW,IAAI,UAAU;AAEpD,QAAM,CAAC,QAAQ,SAAS,IAAI,gBAAgB;AAE5C,QAAM,cAAc,OAAO,IAAI,QAAQ;AAGvC,QAAM,iBAAiB;AAAA,IACrB,CAACC,YAAoB;AACnB,UAAIA,SAAQ;AACV,eAAO,IAAI,UAAUA,OAAM;AAC3B,kBAAU,QAAQ,EAAE,SAAS,KAAK,CAAC;AACnC,oBAAYA,OAAM;AAAA,MACpB,OAAO;AACL,eAAO,OAAO,SAAS;AAAA,MACzB;AAAA,IACF;AAAA,IACA,CAAC,QAAQ,WAAW,SAAS;AAAA,EAC/B;AAGA,QAAM,iBAAiB;AAAA,IACrB,CAACA,YAAmB;AAClB,qBAAeA,OAAM;AACrB,kBAAYA,OAAM;AAAA,IACpB;AAAA,IACA,CAAC,gBAAgB,SAAS;AAAA,EAC5B;AAGA,EAAAC,WAAU,MAAM;AACd,QAAI,gBAAgB,QAAQ;AAC1B,UAAI,gBAAgB,UAAa,WAAW,QAAW;AAErD,uBAAe,MAAM;AAAA,MACvB,WAAW,aAAa;AAEtB,oBAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,aAAa,QAAQ,gBAAgB,WAAW,cAAc,CAAC;AAEnE,SAAO,gBAAAF,KAAC,cAAc,UAAd,EAAuB,OAAO,EAAE,UAAU,MAAM,QAAQ,YAAY,WAAW,eAAe,GAAI,UAAS;AACrH;AAEO,IAAM,sBAAmE,CAAC,EAAE,iBAAiB,eAAe,GAAG,MAAM,MAAM;AAChI,SACE,gBAAAA,KAAC,wBAAqB,iBAAkC,eACtD,0BAAAA,KAAC,4BAA0B,GAAG,OAAO,GACvC;AAEJ;","names":["useState","useState","schemaList","useEffect","jsx","schema","useEffect"]}
@@ -1,5 +1,126 @@
1
- export * from "./Context";
2
- export * from "./Provider";
3
- export * from "./State";
4
- export * from "./use";
1
+ // src/contexts/Schema/Context.ts
2
+ import { createContextEx } from "@xyo-network/react-shared";
3
+ var SchemaContext = createContextEx();
4
+
5
+ // src/contexts/Schema/Provider/Memory.tsx
6
+ import { compact } from "@xylabs/lodash";
7
+ import { useEffect, useState as useState2 } from "react";
8
+
9
+ // src/hooks/useSchemaStats.tsx
10
+ import { useAsyncEffect } from "@xylabs/react-async-effect";
11
+ import { isSchemaStatsPayload, SchemaStatsQuerySchema } from "@xyo-network/diviner-schema-stats-model";
12
+ import { TYPES } from "@xyo-network/node-core-types";
13
+ import { useDivinerFromNode } from "@xyo-network/react-diviner";
14
+ import { useMemo, useState } from "react";
15
+ var useSchemaStats = (statsAddress, nameOrAddress = TYPES.SchemaStatsDiviner.description) => {
16
+ const [refresh, setRefresh] = useState(1);
17
+ const [diviner, divinerError] = useDivinerFromNode(nameOrAddress);
18
+ const [error, setError] = useState();
19
+ const refreshHistory = () => setRefresh((previous) => previous + 1);
20
+ const [schemaList, setSchemaList] = useState();
21
+ const query = useMemo(
22
+ () => ({
23
+ address: statsAddress,
24
+ schema: SchemaStatsQuerySchema
25
+ }),
26
+ [statsAddress]
27
+ );
28
+ useAsyncEffect(
29
+ // eslint-disable-next-line react-hooks/exhaustive-deps
30
+ async (mounted) => {
31
+ if (diviner) {
32
+ if (divinerError) {
33
+ if (mounted()) {
34
+ setError(divinerError);
35
+ setSchemaList(void 0);
36
+ }
37
+ } else {
38
+ try {
39
+ const schemas = (await diviner.divine([query])).filter(isSchemaStatsPayload);
40
+ if (mounted()) {
41
+ setSchemaList(schemas);
42
+ setError(void 0);
43
+ }
44
+ } catch (ex) {
45
+ setError(ex);
46
+ setSchemaList(void 0);
47
+ }
48
+ }
49
+ }
50
+ },
51
+ [diviner, refresh, divinerError, query]
52
+ );
53
+ return [schemaList, error, refreshHistory];
54
+ };
55
+
56
+ // src/contexts/Schema/Provider/Memory.tsx
57
+ import { jsx } from "react/jsx-runtime";
58
+ var SchemaMemoryProvider = ({ defaultSchema, knownSchemaList = [], ...props }) => {
59
+ const [schema, setSchema] = useState2(defaultSchema);
60
+ const [schemaList, setSchemaList] = useState2(knownSchemaList);
61
+ const [fetchedSchemaStats] = useSchemaStats();
62
+ useEffect(() => {
63
+ if (fetchedSchemaStats) {
64
+ const schemaList2 = compact(fetchedSchemaStats.map(({ name }) => name));
65
+ setSchemaList(schemaList2);
66
+ }
67
+ }, [fetchedSchemaStats]);
68
+ return /* @__PURE__ */ jsx(SchemaContext.Provider, { value: { provided: true, schema, schemaList: knownSchemaList ?? schemaList, setSchema, setSchemaList }, ...props });
69
+ };
70
+
71
+ // src/contexts/Schema/Provider/Route.tsx
72
+ import { useCallback, useEffect as useEffect2 } from "react";
73
+ import { useSearchParams } from "react-router-dom";
74
+
75
+ // src/contexts/Schema/use.ts
76
+ import { useContextEx } from "@xyo-network/react-shared";
77
+ var useSchema = (required = false) => {
78
+ return useContextEx(SchemaContext, "Schema", required);
79
+ };
80
+
81
+ // src/contexts/Schema/Provider/Route.tsx
82
+ import { jsx as jsx2 } from "react/jsx-runtime";
83
+ var SchemaRouteProviderInner = ({ children }) => {
84
+ const { schema, setSchema, schemaList } = useSchema();
85
+ const [params, setParams] = useSearchParams();
86
+ const routeSchema = params.get("schema");
87
+ const setSchemaParam = useCallback(
88
+ (schema2) => {
89
+ if (schema2) {
90
+ params.set("schema", schema2);
91
+ setParams(params, { replace: true });
92
+ setSchema?.(schema2);
93
+ } else {
94
+ params.delete("network");
95
+ }
96
+ },
97
+ [params, setParams, setSchema]
98
+ );
99
+ const setSchemaLocal = useCallback(
100
+ (schema2) => {
101
+ setSchemaParam(schema2);
102
+ setSchema?.(schema2);
103
+ },
104
+ [setSchemaParam, setSchema]
105
+ );
106
+ useEffect2(() => {
107
+ if (routeSchema !== schema) {
108
+ if (routeSchema === void 0 && schema !== void 0) {
109
+ setSchemaLocal(schema);
110
+ } else if (routeSchema) {
111
+ setSchema?.(routeSchema);
112
+ }
113
+ }
114
+ }, [routeSchema, schema, setSchemaParam, setSchema, setSchemaLocal]);
115
+ return /* @__PURE__ */ jsx2(SchemaContext.Provider, { value: { provided: true, schema, schemaList, setSchema: setSchemaLocal }, children });
116
+ };
117
+ var SchemaRouteProvider = ({ knownSchemaList, defaultSchema, ...props }) => {
118
+ return /* @__PURE__ */ jsx2(SchemaMemoryProvider, { knownSchemaList, defaultSchema, children: /* @__PURE__ */ jsx2(SchemaRouteProviderInner, { ...props }) });
119
+ };
120
+ export {
121
+ SchemaContext,
122
+ SchemaMemoryProvider,
123
+ SchemaRouteProvider,
124
+ useSchema
125
+ };
5
126
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/contexts/Schema/index.ts"],"sourcesContent":["export * from './Context'\nexport * from './Provider'\nexport * from './State'\nexport * from './use'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../../src/contexts/Schema/Context.ts","../../../../src/contexts/Schema/Provider/Memory.tsx","../../../../src/hooks/useSchemaStats.tsx","../../../../src/contexts/Schema/Provider/Route.tsx","../../../../src/contexts/Schema/use.ts"],"sourcesContent":["import { createContextEx } from '@xyo-network/react-shared'\n\nimport { SchemaContextState } from './State'\n\nexport const SchemaContext = createContextEx<SchemaContextState>()\n","import { compact } from '@xylabs/lodash'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { useEffect, useState } from 'react'\n\nimport { useSchemaStats } from '../../../hooks'\nimport { SchemaContext } from '../Context'\nimport { SchemaProviderProps } from './Props'\n\nexport const SchemaMemoryProvider: React.FC<WithChildren<SchemaProviderProps>> = ({ defaultSchema, knownSchemaList = [], ...props }) => {\n const [schema, setSchema] = useState(defaultSchema)\n const [schemaList, setSchemaList] = useState<string[] | undefined>(knownSchemaList)\n const [fetchedSchemaStats] = useSchemaStats()\n\n useEffect(() => {\n if (fetchedSchemaStats) {\n const schemaList = compact(fetchedSchemaStats.map(({ name }) => name))\n setSchemaList(schemaList)\n }\n }, [fetchedSchemaStats])\n\n return <SchemaContext.Provider value={{ provided: true, schema, schemaList: knownSchemaList ?? schemaList, setSchema, setSchemaList }} {...props} />\n}\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { isSchemaStatsPayload, SchemaStatsPayload, SchemaStatsQueryPayload, SchemaStatsQuerySchema } from '@xyo-network/diviner-schema-stats-model'\nimport { TYPES } from '@xyo-network/node-core-types'\nimport { useDivinerFromNode } from '@xyo-network/react-diviner'\nimport { Dispatch, SetStateAction, useMemo, useState } from 'react'\n\nexport const useSchemaStats = (\n statsAddress?: string,\n nameOrAddress = TYPES.SchemaStatsDiviner.description,\n): [SchemaStatsPayload[] | undefined, Error | undefined, Dispatch<SetStateAction<number>>] => {\n const [refresh, setRefresh] = useState(1)\n const [diviner, divinerError] = useDivinerFromNode(nameOrAddress)\n const [error, setError] = useState<Error>()\n const refreshHistory = () => setRefresh((previous) => previous + 1)\n\n const [schemaList, setSchemaList] = useState<SchemaStatsPayload[]>()\n\n const query: SchemaStatsQueryPayload = useMemo(\n () => ({\n address: statsAddress,\n schema: SchemaStatsQuerySchema,\n }),\n [statsAddress],\n )\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n if (diviner) {\n if (divinerError) {\n if (mounted()) {\n setError(divinerError)\n setSchemaList(undefined)\n }\n } else {\n try {\n const schemas = (await diviner.divine([query])).filter(isSchemaStatsPayload)\n if (mounted()) {\n setSchemaList(schemas)\n setError(undefined)\n }\n } catch (ex) {\n setError(ex as Error)\n setSchemaList(undefined)\n }\n }\n }\n },\n [diviner, refresh, divinerError, query],\n )\n\n return [schemaList, error, refreshHistory]\n}\n","import type { WithChildren } from '@xylabs/react-shared'\nimport { useCallback, useEffect } from 'react'\nimport { useSearchParams } from 'react-router-dom'\n\nimport { SchemaContext } from '../Context'\nimport { useSchema } from '../use'\nimport { SchemaMemoryProvider } from './Memory'\nimport { SchemaProviderProps } from './Props'\n\nconst SchemaRouteProviderInner: React.FC<WithChildren> = ({ children }) => {\n const { schema, setSchema, schemaList } = useSchema()\n\n const [params, setParams] = useSearchParams()\n\n const routeSchema = params.get('schema')\n\n //update the network stored in the route\n const setSchemaParam = useCallback(\n (schema?: string) => {\n if (schema) {\n params.set('schema', schema)\n setParams(params, { replace: true })\n setSchema?.(schema)\n } else {\n params.delete('network')\n }\n },\n [params, setParams, setSchema],\n )\n\n //if the network is actively changed, update both memory and route\n const setSchemaLocal = useCallback(\n (schema: string) => {\n setSchemaParam(schema)\n setSchema?.(schema)\n },\n [setSchemaParam, setSchema],\n )\n\n //sync memory and route storage of network\n useEffect(() => {\n if (routeSchema !== schema) {\n if (routeSchema === undefined && schema !== undefined) {\n //if the route does not have a network selected, use what is in the memory context\n setSchemaLocal(schema)\n } else if (routeSchema) {\n //if the route has a selection and it is different from memory, update memory\n setSchema?.(routeSchema)\n }\n }\n }, [routeSchema, schema, setSchemaParam, setSchema, setSchemaLocal])\n\n return <SchemaContext.Provider value={{ provided: true, schema, schemaList, setSchema: setSchemaLocal }}>{children}</SchemaContext.Provider>\n}\n\nexport const SchemaRouteProvider: React.FC<WithChildren<SchemaProviderProps>> = ({ knownSchemaList, defaultSchema, ...props }) => {\n return (\n <SchemaMemoryProvider knownSchemaList={knownSchemaList} defaultSchema={defaultSchema}>\n <SchemaRouteProviderInner {...props} />\n </SchemaMemoryProvider>\n )\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { SchemaContext } from './Context'\nimport { SchemaContextState } from './State'\n\nexport const useSchema = (required = false) => {\n return useContextEx<SchemaContextState>(SchemaContext, 'Schema', required)\n}\n"],"mappings":"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","names":["useState","useState","schemaList","useEffect","jsx","schema","useEffect"]}
@@ -1,6 +1,12 @@
1
+ // src/contexts/Schema/use.ts
1
2
  import { useContextEx } from "@xyo-network/react-shared";
2
- import { SchemaContext } from "./Context";
3
- const useSchema = (required = false) => {
3
+
4
+ // src/contexts/Schema/Context.ts
5
+ import { createContextEx } from "@xyo-network/react-shared";
6
+ var SchemaContext = createContextEx();
7
+
8
+ // src/contexts/Schema/use.ts
9
+ var useSchema = (required = false) => {
4
10
  return useContextEx(SchemaContext, "Schema", required);
5
11
  };
6
12
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/contexts/Schema/use.ts"],"sourcesContent":["import { useContextEx } from '@xyo-network/react-shared'\n\nimport { SchemaContext } from './Context'\nimport { SchemaContextState } from './State'\n\nexport const useSchema = (required = false) => {\n return useContextEx<SchemaContextState>(SchemaContext, 'Schema', required)\n}\n"],"mappings":"AAAA,SAAS,oBAAoB;AAE7B,SAAS,qBAAqB;AAGvB,MAAM,YAAY,CAAC,WAAW,UAAU;AAC7C,SAAO,aAAiC,eAAe,UAAU,QAAQ;AAC3E;","names":[]}
1
+ {"version":3,"sources":["../../../../src/contexts/Schema/use.ts","../../../../src/contexts/Schema/Context.ts"],"sourcesContent":["import { useContextEx } from '@xyo-network/react-shared'\n\nimport { SchemaContext } from './Context'\nimport { SchemaContextState } from './State'\n\nexport const useSchema = (required = false) => {\n return useContextEx<SchemaContextState>(SchemaContext, 'Schema', required)\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { SchemaContextState } from './State'\n\nexport const SchemaContext = createContextEx<SchemaContextState>()\n"],"mappings":";AAAA,SAAS,oBAAoB;;;ACA7B,SAAS,uBAAuB;AAIzB,IAAM,gBAAgB,gBAAoC;;;ADC1D,IAAM,YAAY,CAAC,WAAW,UAAU;AAC7C,SAAO,aAAiC,eAAe,UAAU,QAAQ;AAC3E;","names":[]}
@@ -1,2 +1,126 @@
1
- export * from "./Schema";
1
+ // src/contexts/Schema/Context.ts
2
+ import { createContextEx } from "@xyo-network/react-shared";
3
+ var SchemaContext = createContextEx();
4
+
5
+ // src/contexts/Schema/Provider/Memory.tsx
6
+ import { compact } from "@xylabs/lodash";
7
+ import { useEffect, useState as useState2 } from "react";
8
+
9
+ // src/hooks/useSchemaStats.tsx
10
+ import { useAsyncEffect } from "@xylabs/react-async-effect";
11
+ import { isSchemaStatsPayload, SchemaStatsQuerySchema } from "@xyo-network/diviner-schema-stats-model";
12
+ import { TYPES } from "@xyo-network/node-core-types";
13
+ import { useDivinerFromNode } from "@xyo-network/react-diviner";
14
+ import { useMemo, useState } from "react";
15
+ var useSchemaStats = (statsAddress, nameOrAddress = TYPES.SchemaStatsDiviner.description) => {
16
+ const [refresh, setRefresh] = useState(1);
17
+ const [diviner, divinerError] = useDivinerFromNode(nameOrAddress);
18
+ const [error, setError] = useState();
19
+ const refreshHistory = () => setRefresh((previous) => previous + 1);
20
+ const [schemaList, setSchemaList] = useState();
21
+ const query = useMemo(
22
+ () => ({
23
+ address: statsAddress,
24
+ schema: SchemaStatsQuerySchema
25
+ }),
26
+ [statsAddress]
27
+ );
28
+ useAsyncEffect(
29
+ // eslint-disable-next-line react-hooks/exhaustive-deps
30
+ async (mounted) => {
31
+ if (diviner) {
32
+ if (divinerError) {
33
+ if (mounted()) {
34
+ setError(divinerError);
35
+ setSchemaList(void 0);
36
+ }
37
+ } else {
38
+ try {
39
+ const schemas = (await diviner.divine([query])).filter(isSchemaStatsPayload);
40
+ if (mounted()) {
41
+ setSchemaList(schemas);
42
+ setError(void 0);
43
+ }
44
+ } catch (ex) {
45
+ setError(ex);
46
+ setSchemaList(void 0);
47
+ }
48
+ }
49
+ }
50
+ },
51
+ [diviner, refresh, divinerError, query]
52
+ );
53
+ return [schemaList, error, refreshHistory];
54
+ };
55
+
56
+ // src/contexts/Schema/Provider/Memory.tsx
57
+ import { jsx } from "react/jsx-runtime";
58
+ var SchemaMemoryProvider = ({ defaultSchema, knownSchemaList = [], ...props }) => {
59
+ const [schema, setSchema] = useState2(defaultSchema);
60
+ const [schemaList, setSchemaList] = useState2(knownSchemaList);
61
+ const [fetchedSchemaStats] = useSchemaStats();
62
+ useEffect(() => {
63
+ if (fetchedSchemaStats) {
64
+ const schemaList2 = compact(fetchedSchemaStats.map(({ name }) => name));
65
+ setSchemaList(schemaList2);
66
+ }
67
+ }, [fetchedSchemaStats]);
68
+ return /* @__PURE__ */ jsx(SchemaContext.Provider, { value: { provided: true, schema, schemaList: knownSchemaList ?? schemaList, setSchema, setSchemaList }, ...props });
69
+ };
70
+
71
+ // src/contexts/Schema/Provider/Route.tsx
72
+ import { useCallback, useEffect as useEffect2 } from "react";
73
+ import { useSearchParams } from "react-router-dom";
74
+
75
+ // src/contexts/Schema/use.ts
76
+ import { useContextEx } from "@xyo-network/react-shared";
77
+ var useSchema = (required = false) => {
78
+ return useContextEx(SchemaContext, "Schema", required);
79
+ };
80
+
81
+ // src/contexts/Schema/Provider/Route.tsx
82
+ import { jsx as jsx2 } from "react/jsx-runtime";
83
+ var SchemaRouteProviderInner = ({ children }) => {
84
+ const { schema, setSchema, schemaList } = useSchema();
85
+ const [params, setParams] = useSearchParams();
86
+ const routeSchema = params.get("schema");
87
+ const setSchemaParam = useCallback(
88
+ (schema2) => {
89
+ if (schema2) {
90
+ params.set("schema", schema2);
91
+ setParams(params, { replace: true });
92
+ setSchema?.(schema2);
93
+ } else {
94
+ params.delete("network");
95
+ }
96
+ },
97
+ [params, setParams, setSchema]
98
+ );
99
+ const setSchemaLocal = useCallback(
100
+ (schema2) => {
101
+ setSchemaParam(schema2);
102
+ setSchema?.(schema2);
103
+ },
104
+ [setSchemaParam, setSchema]
105
+ );
106
+ useEffect2(() => {
107
+ if (routeSchema !== schema) {
108
+ if (routeSchema === void 0 && schema !== void 0) {
109
+ setSchemaLocal(schema);
110
+ } else if (routeSchema) {
111
+ setSchema?.(routeSchema);
112
+ }
113
+ }
114
+ }, [routeSchema, schema, setSchemaParam, setSchema, setSchemaLocal]);
115
+ return /* @__PURE__ */ jsx2(SchemaContext.Provider, { value: { provided: true, schema, schemaList, setSchema: setSchemaLocal }, children });
116
+ };
117
+ var SchemaRouteProvider = ({ knownSchemaList, defaultSchema, ...props }) => {
118
+ return /* @__PURE__ */ jsx2(SchemaMemoryProvider, { knownSchemaList, defaultSchema, children: /* @__PURE__ */ jsx2(SchemaRouteProviderInner, { ...props }) });
119
+ };
120
+ export {
121
+ SchemaContext,
122
+ SchemaMemoryProvider,
123
+ SchemaRouteProvider,
124
+ useSchema
125
+ };
2
126
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/contexts/index.ts"],"sourcesContent":["export * from './Schema'\n"],"mappings":"AAAA,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/contexts/Schema/Context.ts","../../../src/contexts/Schema/Provider/Memory.tsx","../../../src/hooks/useSchemaStats.tsx","../../../src/contexts/Schema/Provider/Route.tsx","../../../src/contexts/Schema/use.ts"],"sourcesContent":["import { createContextEx } from '@xyo-network/react-shared'\n\nimport { SchemaContextState } from './State'\n\nexport const SchemaContext = createContextEx<SchemaContextState>()\n","import { compact } from '@xylabs/lodash'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { useEffect, useState } from 'react'\n\nimport { useSchemaStats } from '../../../hooks'\nimport { SchemaContext } from '../Context'\nimport { SchemaProviderProps } from './Props'\n\nexport const SchemaMemoryProvider: React.FC<WithChildren<SchemaProviderProps>> = ({ defaultSchema, knownSchemaList = [], ...props }) => {\n const [schema, setSchema] = useState(defaultSchema)\n const [schemaList, setSchemaList] = useState<string[] | undefined>(knownSchemaList)\n const [fetchedSchemaStats] = useSchemaStats()\n\n useEffect(() => {\n if (fetchedSchemaStats) {\n const schemaList = compact(fetchedSchemaStats.map(({ name }) => name))\n setSchemaList(schemaList)\n }\n }, [fetchedSchemaStats])\n\n return <SchemaContext.Provider value={{ provided: true, schema, schemaList: knownSchemaList ?? schemaList, setSchema, setSchemaList }} {...props} />\n}\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { isSchemaStatsPayload, SchemaStatsPayload, SchemaStatsQueryPayload, SchemaStatsQuerySchema } from '@xyo-network/diviner-schema-stats-model'\nimport { TYPES } from '@xyo-network/node-core-types'\nimport { useDivinerFromNode } from '@xyo-network/react-diviner'\nimport { Dispatch, SetStateAction, useMemo, useState } from 'react'\n\nexport const useSchemaStats = (\n statsAddress?: string,\n nameOrAddress = TYPES.SchemaStatsDiviner.description,\n): [SchemaStatsPayload[] | undefined, Error | undefined, Dispatch<SetStateAction<number>>] => {\n const [refresh, setRefresh] = useState(1)\n const [diviner, divinerError] = useDivinerFromNode(nameOrAddress)\n const [error, setError] = useState<Error>()\n const refreshHistory = () => setRefresh((previous) => previous + 1)\n\n const [schemaList, setSchemaList] = useState<SchemaStatsPayload[]>()\n\n const query: SchemaStatsQueryPayload = useMemo(\n () => ({\n address: statsAddress,\n schema: SchemaStatsQuerySchema,\n }),\n [statsAddress],\n )\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n if (diviner) {\n if (divinerError) {\n if (mounted()) {\n setError(divinerError)\n setSchemaList(undefined)\n }\n } else {\n try {\n const schemas = (await diviner.divine([query])).filter(isSchemaStatsPayload)\n if (mounted()) {\n setSchemaList(schemas)\n setError(undefined)\n }\n } catch (ex) {\n setError(ex as Error)\n setSchemaList(undefined)\n }\n }\n }\n },\n [diviner, refresh, divinerError, query],\n )\n\n return [schemaList, error, refreshHistory]\n}\n","import type { WithChildren } from '@xylabs/react-shared'\nimport { useCallback, useEffect } from 'react'\nimport { useSearchParams } from 'react-router-dom'\n\nimport { SchemaContext } from '../Context'\nimport { useSchema } from '../use'\nimport { SchemaMemoryProvider } from './Memory'\nimport { SchemaProviderProps } from './Props'\n\nconst SchemaRouteProviderInner: React.FC<WithChildren> = ({ children }) => {\n const { schema, setSchema, schemaList } = useSchema()\n\n const [params, setParams] = useSearchParams()\n\n const routeSchema = params.get('schema')\n\n //update the network stored in the route\n const setSchemaParam = useCallback(\n (schema?: string) => {\n if (schema) {\n params.set('schema', schema)\n setParams(params, { replace: true })\n setSchema?.(schema)\n } else {\n params.delete('network')\n }\n },\n [params, setParams, setSchema],\n )\n\n //if the network is actively changed, update both memory and route\n const setSchemaLocal = useCallback(\n (schema: string) => {\n setSchemaParam(schema)\n setSchema?.(schema)\n },\n [setSchemaParam, setSchema],\n )\n\n //sync memory and route storage of network\n useEffect(() => {\n if (routeSchema !== schema) {\n if (routeSchema === undefined && schema !== undefined) {\n //if the route does not have a network selected, use what is in the memory context\n setSchemaLocal(schema)\n } else if (routeSchema) {\n //if the route has a selection and it is different from memory, update memory\n setSchema?.(routeSchema)\n }\n }\n }, [routeSchema, schema, setSchemaParam, setSchema, setSchemaLocal])\n\n return <SchemaContext.Provider value={{ provided: true, schema, schemaList, setSchema: setSchemaLocal }}>{children}</SchemaContext.Provider>\n}\n\nexport const SchemaRouteProvider: React.FC<WithChildren<SchemaProviderProps>> = ({ knownSchemaList, defaultSchema, ...props }) => {\n return (\n <SchemaMemoryProvider knownSchemaList={knownSchemaList} defaultSchema={defaultSchema}>\n <SchemaRouteProviderInner {...props} />\n </SchemaMemoryProvider>\n )\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { SchemaContext } from './Context'\nimport { SchemaContextState } from './State'\n\nexport const useSchema = (required = false) => {\n return useContextEx<SchemaContextState>(SchemaContext, 'Schema', required)\n}\n"],"mappings":"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","names":["useState","useState","schemaList","useEffect","jsx","schema","useEffect"]}
@@ -1,5 +1,166 @@
1
- export * from "./useGetSchema";
2
- export * from "./useSchemaDefinitions";
3
- export * from "./useSchemaList";
4
- export * from "./useSchemaStats";
1
+ // src/hooks/useGetSchema.tsx
2
+ import { useAsyncEffect } from "@xylabs/react-async-effect";
3
+ import { PayloadBuilder } from "@xyo-network/payload-builder";
4
+ import { ModuleErrorSchema } from "@xyo-network/payload-model";
5
+ import { SchemaCache } from "@xyo-network/schema-cache";
6
+ import { useState } from "react";
7
+ var useGetSchemaPayload = (schema) => {
8
+ const [notFound, setNotFound] = useState(false);
9
+ const [xyoError, setError] = useState();
10
+ const [schemaCacheEntry, setSchemaCacheEntry] = useState();
11
+ const [schemaLocal, setSchemaLocal] = useState();
12
+ useAsyncEffect(
13
+ // eslint-disable-next-line react-hooks/exhaustive-deps
14
+ async (mounted) => {
15
+ const firstRequest = !notFound && !schemaCacheEntry && !xyoError;
16
+ const schemaChanged = schema !== schemaLocal;
17
+ if (schema && firstRequest || schema && schemaChanged) {
18
+ try {
19
+ const schemaCacheEntry2 = await SchemaCache.instance.get(schema);
20
+ if (mounted()) {
21
+ setSchemaCacheEntry(schemaCacheEntry2);
22
+ setNotFound(schemaCacheEntry2 === null || schemaCacheEntry2 === void 0);
23
+ }
24
+ } catch (e) {
25
+ const error = e;
26
+ console.error(e);
27
+ if (mounted()) {
28
+ setError({ message: error.message, schema: ModuleErrorSchema, sources: [] });
29
+ }
30
+ }
31
+ }
32
+ if (schemaChanged) {
33
+ setSchemaLocal(schema);
34
+ }
35
+ },
36
+ [xyoError, notFound, schema, schemaLocal, schemaCacheEntry]
37
+ );
38
+ return {
39
+ notFound,
40
+ schemaHuri: schemaCacheEntry?.huri,
41
+ schemaPayload: schemaCacheEntry ? new PayloadBuilder(schemaCacheEntry?.payload).fields(schemaCacheEntry.payload).build() : schemaCacheEntry,
42
+ xyoError
43
+ };
44
+ };
45
+
46
+ // src/hooks/useSchemaDefinitions.tsx
47
+ import { useAsyncEffect as useAsyncEffect2 } from "@xylabs/react-async-effect";
48
+ import { SchemaCache as SchemaCache2 } from "@xyo-network/schema-cache";
49
+ import { useState as useState2 } from "react";
50
+ var useSchemaDefinitions = (schemaList) => {
51
+ const [schemaPayloads, setSchemaPayloads] = useState2();
52
+ useAsyncEffect2(
53
+ // eslint-disable-next-line react-hooks/exhaustive-deps
54
+ async (mounted) => {
55
+ if (schemaList) {
56
+ const promiseResults = await Promise.allSettled(schemaList?.map(({ name }) => SchemaCache2.instance.get(name)));
57
+ if (mounted()) {
58
+ setSchemaPayloads(
59
+ promiseResults.map((result) => result.status === "fulfilled" ? result.value?.payload : void 0).filter((item) => item !== void 0 && item !== null)
60
+ );
61
+ }
62
+ }
63
+ },
64
+ [schemaList]
65
+ );
66
+ return schemaPayloads;
67
+ };
68
+
69
+ // src/hooks/useSchemaList.tsx
70
+ import { useAsyncEffect as useAsyncEffect3 } from "@xylabs/react-async-effect";
71
+ import { SchemaListQuerySchema } from "@xyo-network/diviner-schema-list-model";
72
+ import { useDivinerFromNode } from "@xyo-network/react-diviner";
73
+ import { useEffect, useMemo, useState as useState3 } from "react";
74
+ var useSchemaList = (address, nameOrAddress = "SchemaListDiviner") => {
75
+ const [schemaList, setSchemaList] = useState3();
76
+ const [error, setError] = useState3();
77
+ const [diviner, divinerError] = useDivinerFromNode(nameOrAddress);
78
+ const query = useMemo(
79
+ () => address ? [
80
+ {
81
+ address,
82
+ schema: SchemaListQuerySchema
83
+ }
84
+ ] : void 0,
85
+ [address]
86
+ );
87
+ useEffect(() => {
88
+ if (diviner === null) {
89
+ setSchemaList(null);
90
+ setError(void 0);
91
+ }
92
+ }, [diviner]);
93
+ useAsyncEffect3(
94
+ // eslint-disable-next-line react-hooks/exhaustive-deps, require-await
95
+ async (mounted) => {
96
+ if (diviner) {
97
+ try {
98
+ const response = await diviner.divine(query);
99
+ if (mounted()) {
100
+ setSchemaList(response?.[0]);
101
+ setError(void 0);
102
+ }
103
+ } catch (e) {
104
+ setError(e);
105
+ setSchemaList(void 0);
106
+ }
107
+ }
108
+ },
109
+ [diviner, divinerError, query]
110
+ );
111
+ return [schemaList, error];
112
+ };
113
+
114
+ // src/hooks/useSchemaStats.tsx
115
+ import { useAsyncEffect as useAsyncEffect4 } from "@xylabs/react-async-effect";
116
+ import { isSchemaStatsPayload, SchemaStatsQuerySchema } from "@xyo-network/diviner-schema-stats-model";
117
+ import { TYPES } from "@xyo-network/node-core-types";
118
+ import { useDivinerFromNode as useDivinerFromNode2 } from "@xyo-network/react-diviner";
119
+ import { useMemo as useMemo2, useState as useState4 } from "react";
120
+ var useSchemaStats = (statsAddress, nameOrAddress = TYPES.SchemaStatsDiviner.description) => {
121
+ const [refresh, setRefresh] = useState4(1);
122
+ const [diviner, divinerError] = useDivinerFromNode2(nameOrAddress);
123
+ const [error, setError] = useState4();
124
+ const refreshHistory = () => setRefresh((previous) => previous + 1);
125
+ const [schemaList, setSchemaList] = useState4();
126
+ const query = useMemo2(
127
+ () => ({
128
+ address: statsAddress,
129
+ schema: SchemaStatsQuerySchema
130
+ }),
131
+ [statsAddress]
132
+ );
133
+ useAsyncEffect4(
134
+ // eslint-disable-next-line react-hooks/exhaustive-deps
135
+ async (mounted) => {
136
+ if (diviner) {
137
+ if (divinerError) {
138
+ if (mounted()) {
139
+ setError(divinerError);
140
+ setSchemaList(void 0);
141
+ }
142
+ } else {
143
+ try {
144
+ const schemas = (await diviner.divine([query])).filter(isSchemaStatsPayload);
145
+ if (mounted()) {
146
+ setSchemaList(schemas);
147
+ setError(void 0);
148
+ }
149
+ } catch (ex) {
150
+ setError(ex);
151
+ setSchemaList(void 0);
152
+ }
153
+ }
154
+ }
155
+ },
156
+ [diviner, refresh, divinerError, query]
157
+ );
158
+ return [schemaList, error, refreshHistory];
159
+ };
160
+ export {
161
+ useGetSchemaPayload,
162
+ useSchemaDefinitions,
163
+ useSchemaList,
164
+ useSchemaStats
165
+ };
5
166
  //# sourceMappingURL=index.js.map