@next-core/react-runtime 1.1.52 → 1.2.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 (31) hide show
  1. package/dist/cjs/index.js +11 -0
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/useProvider/fetch.js +48 -0
  4. package/dist/cjs/useProvider/fetch.js.map +1 -0
  5. package/dist/cjs/useProvider/useProvider.js +123 -0
  6. package/dist/cjs/useProvider/useProvider.js.map +1 -0
  7. package/dist/cjs/useProvider/useProviderArgs.js +70 -0
  8. package/dist/cjs/useProvider/useProviderArgs.js.map +1 -0
  9. package/dist/cjs/useProvider/useProviderArgsDefaults.js +31 -0
  10. package/dist/cjs/useProvider/useProviderArgsDefaults.js.map +1 -0
  11. package/dist/cjs/useProvider/useProviderTypes.js +6 -0
  12. package/dist/cjs/useProvider/useProviderTypes.js.map +1 -0
  13. package/dist/esm/index.js +1 -0
  14. package/dist/esm/index.js.map +1 -1
  15. package/dist/esm/useProvider/fetch.js +52 -0
  16. package/dist/esm/useProvider/fetch.js.map +1 -0
  17. package/dist/esm/useProvider/useProvider.js +130 -0
  18. package/dist/esm/useProvider/useProvider.js.map +1 -0
  19. package/dist/esm/useProvider/useProviderArgs.js +61 -0
  20. package/dist/esm/useProvider/useProviderArgs.js.map +1 -0
  21. package/dist/esm/useProvider/useProviderArgsDefaults.js +23 -0
  22. package/dist/esm/useProvider/useProviderArgsDefaults.js.map +1 -0
  23. package/dist/esm/useProvider/useProviderTypes.js +2 -0
  24. package/dist/esm/useProvider/useProviderTypes.js.map +1 -0
  25. package/dist/types/index.d.ts +1 -0
  26. package/dist/types/useProvider/fetch.d.ts +2 -0
  27. package/dist/types/useProvider/useProvider.d.ts +2 -0
  28. package/dist/types/useProvider/useProviderArgs.d.ts +2 -0
  29. package/dist/types/useProvider/useProviderArgsDefaults.d.ts +4 -0
  30. package/dist/types/useProvider/useProviderTypes.d.ts +60 -0
  31. package/package.json +9 -6
package/dist/cjs/index.js CHANGED
@@ -58,4 +58,15 @@ Object.keys(_useRouteRender).forEach(function (key) {
58
58
  }
59
59
  });
60
60
  });
61
+ var _useProvider = require("./useProvider/useProvider.js");
62
+ Object.keys(_useProvider).forEach(function (key) {
63
+ if (key === "default" || key === "__esModule") return;
64
+ if (key in exports && exports[key] === _useProvider[key]) return;
65
+ Object.defineProperty(exports, key, {
66
+ enumerable: true,
67
+ get: function () {
68
+ return _useProvider[key];
69
+ }
70
+ });
71
+ });
61
72
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_ReactUseBrick","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_useCurrentTheme","_useCurrentApp","_useRecentApps","_useRouteRender"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./ReactUseBrick.js\";\nexport * from \"./useCurrentTheme.js\";\nexport * from \"./useCurrentApp.js\";\nexport * from \"./useRecentApps.js\";\nexport * from \"./useRouteRender.js\";\n"],"mappings":";;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,cAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,cAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,cAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,gBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,gBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,gBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,gBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,cAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,cAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,cAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,cAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,cAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,cAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,cAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,cAAA,CAAAP,GAAA;IAAA;EAAA;AAAA;AACA,IAAAQ,eAAA,GAAAZ,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAU,eAAA,EAAAT,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAQ,eAAA,CAAAR,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,eAAA,CAAAR,GAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"index.js","names":["_ReactUseBrick","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_useCurrentTheme","_useCurrentApp","_useRecentApps","_useRouteRender","_useProvider"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./ReactUseBrick.js\";\nexport * from \"./useCurrentTheme.js\";\nexport * from \"./useCurrentApp.js\";\nexport * from \"./useRecentApps.js\";\nexport * from \"./useRouteRender.js\";\nexport * from \"./useProvider/useProvider.js\";\n"],"mappings":";;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,cAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,cAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,cAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,gBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,gBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,gBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,gBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,cAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,cAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,cAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,cAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,cAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,cAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,cAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,cAAA,CAAAP,GAAA;IAAA;EAAA;AAAA;AACA,IAAAQ,eAAA,GAAAZ,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAU,eAAA,EAAAT,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAQ,eAAA,CAAAR,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,eAAA,CAAAR,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,YAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,YAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAS,YAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAK,YAAA,CAAAT,GAAA;IAAA;EAAA;AAAA"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = fetch;
7
+ var _runtime = require("@next-core/runtime");
8
+ const cacheMap = new Map();
9
+ function isObj(v) {
10
+ return typeof v === "object" && v !== null && !Array.isArray(v);
11
+ }
12
+ function isString(v) {
13
+ return typeof v === "string";
14
+ }
15
+ function buildSortedCacheKey(provider, ...args) {
16
+ const sortObj = obj => Object.keys(obj).sort().map(k => ({
17
+ [k]: obj[k]
18
+ }));
19
+ try {
20
+ const sortedArgs = isObj(args) ? sortObj(args) : args.map(arg => isString(arg) ? arg : sortObj(arg));
21
+ return JSON.stringify({
22
+ provider,
23
+ args: sortedArgs
24
+ });
25
+ } catch (e) {
26
+ return JSON.stringify({
27
+ provider,
28
+ args
29
+ });
30
+ }
31
+ }
32
+ async function fetch(provider, cache, args) {
33
+ let promise;
34
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
35
+ // @ts-ignore
36
+ const cacheKey = buildSortedCacheKey(provider, ...args);
37
+ !cache && cacheMap.has(cacheKey) && cacheMap.delete(cacheKey);
38
+ if (cacheMap.has(cacheKey)) {
39
+ promise = cacheMap.get(cacheKey);
40
+ } else {
41
+ promise = (() => {
42
+ return (0, _runtime.fetchByProvider)(provider, args);
43
+ })();
44
+ cache && cacheMap.set(cacheKey, promise);
45
+ }
46
+ return promise;
47
+ }
48
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","names":["_runtime","require","cacheMap","Map","isObj","v","Array","isArray","isString","buildSortedCacheKey","provider","args","sortObj","obj","Object","keys","sort","map","k","sortedArgs","arg","JSON","stringify","e","fetch","cache","promise","cacheKey","has","delete","get","fetchByProvider","set"],"sources":["../../../src/useProvider/fetch.ts"],"sourcesContent":["import { FetchArgs } from \"./useProviderTypes.js\";\nimport { fetchByProvider } from \"@next-core/runtime\";\n\nconst cacheMap: Map<string, Promise<unknown>> = new Map();\n\nfunction isObj(v: any): boolean {\n return typeof v === \"object\" && v !== null && !Array.isArray(v);\n}\n\nfunction isString(v: any): v is string {\n return typeof v === \"string\";\n}\nfunction buildSortedCacheKey(provider: string, ...args: any): string {\n const sortObj = (obj: Record<string, any>) =>\n Object.keys(obj)\n .sort()\n .map((k) => ({ [k]: (obj as any)[k] }));\n try {\n const sortedArgs = isObj(args)\n ? sortObj(args)\n : (args as Record<string, any>[]).map((arg) =>\n isString(arg) ? arg : sortObj(arg)\n );\n\n return JSON.stringify({\n provider,\n args: sortedArgs,\n });\n } catch (e) {\n return JSON.stringify({\n provider,\n args,\n });\n }\n}\n\nexport default async function fetch<TData>(\n provider: string,\n cache: boolean,\n args: FetchArgs\n): Promise<TData> {\n let promise: Promise<TData>;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const cacheKey = buildSortedCacheKey(provider, ...args);\n !cache && cacheMap.has(cacheKey) && cacheMap.delete(cacheKey);\n\n if (cacheMap.has(cacheKey)) {\n promise = cacheMap.get(cacheKey) as Promise<TData>;\n } else {\n promise = (() => {\n return fetchByProvider(provider, args) as Promise<TData>;\n })();\n\n cache && cacheMap.set(cacheKey, promise);\n }\n\n return promise;\n}\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAEA,MAAMC,QAAuC,GAAG,IAAIC,GAAG,CAAC,CAAC;AAEzD,SAASC,KAAKA,CAACC,CAAM,EAAW;EAC9B,OAAO,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,KAAK,IAAI,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,CAAC,CAAC;AACjE;AAEA,SAASG,QAAQA,CAACH,CAAM,EAAe;EACrC,OAAO,OAAOA,CAAC,KAAK,QAAQ;AAC9B;AACA,SAASI,mBAAmBA,CAACC,QAAgB,EAAE,GAAGC,IAAS,EAAU;EACnE,MAAMC,OAAO,GAAIC,GAAwB,IACvCC,MAAM,CAACC,IAAI,CAACF,GAAG,CAAC,CACbG,IAAI,CAAC,CAAC,CACNC,GAAG,CAAEC,CAAC,KAAM;IAAE,CAACA,CAAC,GAAIL,GAAG,CAASK,CAAC;EAAE,CAAC,CAAC,CAAC;EAC3C,IAAI;IACF,MAAMC,UAAU,GAAGf,KAAK,CAACO,IAAI,CAAC,GAC1BC,OAAO,CAACD,IAAI,CAAC,GACZA,IAAI,CAA2BM,GAAG,CAAEG,GAAG,IACtCZ,QAAQ,CAACY,GAAG,CAAC,GAAGA,GAAG,GAAGR,OAAO,CAACQ,GAAG,CACnC,CAAC;IAEL,OAAOC,IAAI,CAACC,SAAS,CAAC;MACpBZ,QAAQ;MACRC,IAAI,EAAEQ;IACR,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOI,CAAC,EAAE;IACV,OAAOF,IAAI,CAACC,SAAS,CAAC;MACpBZ,QAAQ;MACRC;IACF,CAAC,CAAC;EACJ;AACF;AAEe,eAAea,KAAKA,CACjCd,QAAgB,EAChBe,KAAc,EACdd,IAAe,EACC;EAChB,IAAIe,OAAuB;EAC3B;EACA;EACA,MAAMC,QAAQ,GAAGlB,mBAAmB,CAACC,QAAQ,EAAE,GAAGC,IAAI,CAAC;EACvD,CAACc,KAAK,IAAIvB,QAAQ,CAAC0B,GAAG,CAACD,QAAQ,CAAC,IAAIzB,QAAQ,CAAC2B,MAAM,CAACF,QAAQ,CAAC;EAE7D,IAAIzB,QAAQ,CAAC0B,GAAG,CAACD,QAAQ,CAAC,EAAE;IAC1BD,OAAO,GAAGxB,QAAQ,CAAC4B,GAAG,CAACH,QAAQ,CAAmB;EACpD,CAAC,MAAM;IACLD,OAAO,GAAG,CAAC,MAAM;MACf,OAAO,IAAAK,wBAAe,EAACrB,QAAQ,EAAEC,IAAI,CAAC;IACxC,CAAC,EAAE,CAAC;IAEJc,KAAK,IAAIvB,QAAQ,CAAC8B,GAAG,CAACL,QAAQ,EAAED,OAAO,CAAC;EAC1C;EAEA,OAAOA,OAAO;AAChB"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useProvider = useProvider;
8
+ var _react = require("react");
9
+ var _useProviderArgs = _interopRequireDefault(require("./useProviderArgs.js"));
10
+ var _lodash = require("lodash");
11
+ var _fetch = _interopRequireDefault(require("./fetch.js"));
12
+ function useProvider(...args) {
13
+ const {
14
+ provider,
15
+ customOptions,
16
+ dependencies,
17
+ requestInit
18
+ } = (0, _useProviderArgs.default)(...args);
19
+ const {
20
+ onError,
21
+ transform,
22
+ suspense,
23
+ cache,
24
+ ...defaults
25
+ } = customOptions;
26
+ const [loading, setLoading] = (0, _react.useState)(defaults.loading);
27
+ const suspenseStatus = (0, _react.useRef)("pending");
28
+ const suspender = (0, _react.useRef)();
29
+ const mounted = (0, _react.useRef)(false);
30
+ const error = (0, _react.useRef)();
31
+ const response = (0, _react.useRef)();
32
+ const data = (0, _react.useRef)(defaults.data);
33
+ const forceUpdate = (0, _react.useReducer)(() => ({}), [])[1];
34
+ const doFetch = (0, _react.useCallback)(async (provider, providerArgs) => {
35
+ try {
36
+ error.current = undefined;
37
+ if (!suspense) setLoading(true);
38
+ const newRes = await (0, _fetch.default)(provider, cache, providerArgs);
39
+ response.current = newRes;
40
+ data.current = transform(data.current, newRes);
41
+ } catch (e) {
42
+ error.current = e;
43
+ data.current = undefined;
44
+ }
45
+ if (!suspense) setLoading(false);
46
+ if (error.current) onError(error.current);
47
+ return data.current;
48
+ }, [provider, customOptions, dependencies, requestInit, suspense, transform, defaults.data, onError, cache]);
49
+ const makeFetch = (0, _react.useCallback)(async (providerOrBody, args) => {
50
+ let providerStr = provider;
51
+ let providerArgs = [];
52
+ if ((0, _lodash.isString)(providerOrBody)) {
53
+ providerStr = providerOrBody;
54
+ }
55
+ if ((0, _lodash.isObject)(providerOrBody)) {
56
+ providerArgs = providerOrBody;
57
+ } else if ((0, _lodash.isObject)(args)) {
58
+ providerArgs = args;
59
+ }
60
+ if (suspense) {
61
+ return (async () => {
62
+ suspender.current = doFetch(providerStr, providerArgs).then(newData => {
63
+ suspenseStatus.current = "success";
64
+ return newData;
65
+ }, error => {
66
+ /* istanbul ignore next */
67
+ suspenseStatus.current = "error";
68
+ error.current = error;
69
+ return error;
70
+ });
71
+ forceUpdate();
72
+ return await suspender.current;
73
+ })();
74
+ }
75
+ return doFetch(providerStr, providerArgs);
76
+ }, [doFetch]);
77
+ const request = (0, _react.useMemo)(() => Object.defineProperties({
78
+ query: makeFetch
79
+ }, {
80
+ loading: {
81
+ get() {
82
+ return loading;
83
+ }
84
+ },
85
+ data: {
86
+ get() {
87
+ return data.current;
88
+ }
89
+ },
90
+ error: {
91
+ get() {
92
+ return error.current;
93
+ }
94
+ }
95
+ }), [makeFetch]);
96
+
97
+ // onMount/onUpdate
98
+ (0, _react.useEffect)(() => {
99
+ mounted.current = true;
100
+ if (Array.isArray(dependencies) && provider) {
101
+ request.query(provider, requestInit.args);
102
+ }
103
+ return () => mounted.current = false;
104
+ }, dependencies);
105
+ if (suspense && suspender.current) {
106
+ switch (suspenseStatus.current) {
107
+ case "pending":
108
+ throw suspender.current;
109
+ /* istanbul ignore next */
110
+ case "error":
111
+ throw error.current;
112
+ }
113
+ }
114
+ return Object.assign([request, response.current, loading, error.current], {
115
+ request,
116
+ ...request,
117
+ response: response.current,
118
+ data: data.current,
119
+ loading,
120
+ error: error.current
121
+ });
122
+ }
123
+ //# sourceMappingURL=useProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProvider.js","names":["_react","require","_useProviderArgs","_interopRequireDefault","_lodash","_fetch","useProvider","args","provider","customOptions","dependencies","requestInit","useProviderArgs","onError","transform","suspense","cache","defaults","loading","setLoading","useState","suspenseStatus","useRef","suspender","mounted","error","response","data","forceUpdate","useReducer","doFetch","useCallback","providerArgs","current","undefined","newRes","fetch","e","makeFetch","providerOrBody","providerStr","isString","isObject","then","newData","request","useMemo","Object","defineProperties","query","get","useEffect","Array","isArray","assign"],"sources":["../../../src/useProvider/useProvider.ts"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport useProviderArgs from \"./useProviderArgs.js\";\nimport type {\n UseProviderArgs,\n FetchArgs,\n UseProviderError,\n UseProviderObjectReturn,\n Req,\n Res,\n UseProviderArrayReturn,\n UseProvider,\n} from \"./useProviderTypes.js\";\nimport { isObject, isString } from \"lodash\";\nimport fetch from \"./fetch.js\";\n\nexport function useProvider<TData = any>(\n ...args: UseProviderArgs\n): UseProvider<TData> {\n const { provider, customOptions, dependencies, requestInit } =\n useProviderArgs(...args);\n const { onError, transform, suspense, cache, ...defaults } = customOptions;\n\n const [loading, setLoading] = useState(defaults.loading);\n const suspenseStatus = useRef<\"pending\" | \"error\" | \"success\">(\"pending\");\n const suspender = useRef<Promise<any>>();\n const mounted = useRef(false);\n const error = useRef<UseProviderError | undefined>();\n const response = useRef<Res<TData>>();\n const data = useRef<TData | undefined>(defaults.data);\n const forceUpdate = useReducer(() => ({}), [])[1];\n\n const doFetch = useCallback(\n async (\n provider: string,\n providerArgs: FetchArgs\n ): Promise<TData | undefined> => {\n try {\n error.current = undefined;\n if (!suspense) setLoading(true);\n const newRes = (await fetch(provider, cache, providerArgs)) as TData;\n response.current = newRes;\n data.current = transform(data.current, newRes);\n } catch (e) {\n error.current = e as UseProviderError;\n data.current = undefined;\n }\n if (!suspense) setLoading(false);\n if (error.current) onError(error.current);\n return data.current;\n },\n [\n provider,\n customOptions,\n dependencies,\n requestInit,\n suspense,\n transform,\n defaults.data,\n onError,\n cache,\n ]\n );\n\n const makeFetch = useCallback(\n async (\n providerOrBody: string | unknown[],\n args?: unknown[]\n ): Promise<TData | undefined> => {\n let providerStr = provider;\n let providerArgs = [] as unknown[];\n if (isString(providerOrBody)) {\n providerStr = providerOrBody;\n }\n if (isObject(providerOrBody)) {\n providerArgs = providerOrBody;\n } else if (isObject(args)) {\n providerArgs = args;\n }\n\n if (suspense) {\n return (async () => {\n suspender.current = doFetch(providerStr, providerArgs).then(\n (newData) => {\n suspenseStatus.current = \"success\";\n return newData;\n },\n (error) => {\n /* istanbul ignore next */\n suspenseStatus.current = \"error\";\n error.current = error;\n return error;\n }\n );\n forceUpdate();\n return await suspender.current;\n })();\n }\n return doFetch(providerStr, providerArgs);\n },\n [doFetch]\n );\n\n const request: Req<TData> = useMemo(\n () =>\n Object.defineProperties(\n {\n query: makeFetch,\n },\n {\n loading: {\n get(): boolean {\n return loading;\n },\n },\n data: {\n get(): TData | undefined {\n return data.current;\n },\n },\n error: {\n get(): UseProviderError | undefined {\n return error.current;\n },\n },\n }\n ),\n [makeFetch]\n ) as unknown as Req<TData>;\n\n // onMount/onUpdate\n useEffect((): any => {\n mounted.current = true;\n if (Array.isArray(dependencies) && provider) {\n request.query(provider, requestInit.args as unknown[]);\n }\n return () => (mounted.current = false);\n }, dependencies);\n\n if (suspense && suspender.current) {\n switch (suspenseStatus.current) {\n case \"pending\":\n throw suspender.current;\n /* istanbul ignore next */\n case \"error\":\n throw error.current;\n }\n }\n\n return Object.assign<\n UseProviderArrayReturn<TData>,\n UseProviderObjectReturn<TData>\n >([request, response.current, loading, error.current], {\n request,\n ...request,\n response: response.current,\n data: data.current,\n loading,\n error: error.current,\n });\n}\n"],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = useProviderArgs;
8
+ var _react = require("react");
9
+ var _useProviderArgsDefaults = _interopRequireWildcard(require("./useProviderArgsDefaults.js"));
10
+ var _lodash = require("lodash");
11
+ function useProviderArgs(providerOrParamsOrGlobalOptions, globalOptionsOrDeps, deps) {
12
+ const provider = (0, _react.useMemo)(() => {
13
+ if (typeof providerOrParamsOrGlobalOptions === "string") {
14
+ return providerOrParamsOrGlobalOptions;
15
+ }
16
+ return _useProviderArgsDefaults.useProviderArgsDefaults.provider;
17
+ }, [providerOrParamsOrGlobalOptions, globalOptionsOrDeps]);
18
+ const options = (0, _react.useMemo)(() => {
19
+ let localOptions = {};
20
+ if ((0, _lodash.isObject)(providerOrParamsOrGlobalOptions)) {
21
+ localOptions = providerOrParamsOrGlobalOptions;
22
+ } else if ((0, _lodash.isObject)(globalOptionsOrDeps)) {
23
+ localOptions = globalOptionsOrDeps;
24
+ }
25
+ return {
26
+ ..._useProviderArgsDefaults.default,
27
+ ...localOptions
28
+ };
29
+ }, [providerOrParamsOrGlobalOptions, globalOptionsOrDeps]);
30
+ const requestInit = (0, _react.useMemo)(() => {
31
+ const customOptionKeys = [...Object.keys(_useProviderArgsDefaults.useProviderArgsDefaults), ...Object.keys(_useProviderArgsDefaults.useProviderArgsDefaults.customOptions)];
32
+ const {
33
+ args = null,
34
+ ...restOptions
35
+ } = Object.keys(options).reduce((acc, key) => {
36
+ if (!customOptionKeys.includes(key)) acc[key] = options[key];
37
+ return acc;
38
+ }, {});
39
+ return {
40
+ options: {
41
+ ...restOptions
42
+ },
43
+ args
44
+ };
45
+ }, [options]);
46
+ const dependencies = (0, _react.useMemo)(() => {
47
+ if (Array.isArray(globalOptionsOrDeps)) return globalOptionsOrDeps;
48
+ if (Array.isArray(deps)) return deps;
49
+ return _useProviderArgsDefaults.default.dependencies;
50
+ }, [globalOptionsOrDeps, deps]);
51
+ const loading = options.loading || Array.isArray(dependencies);
52
+ const customOptions = (0, _react.useMemo)(() => {
53
+ const customOptionKeys = Object.keys(_useProviderArgsDefaults.useProviderArgsDefaults.customOptions);
54
+ const customOptions = customOptionKeys.reduce((opts, key) => {
55
+ opts[key] = options[key];
56
+ return opts;
57
+ }, {});
58
+ return {
59
+ ...customOptions,
60
+ loading
61
+ };
62
+ }, [options]);
63
+ return {
64
+ provider,
65
+ customOptions,
66
+ requestInit,
67
+ dependencies
68
+ };
69
+ }
70
+ //# sourceMappingURL=useProviderArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProviderArgs.js","names":["_react","require","_useProviderArgsDefaults","_interopRequireWildcard","_lodash","useProviderArgs","providerOrParamsOrGlobalOptions","globalOptionsOrDeps","deps","provider","useMemo","useProviderArgsDefaults","options","localOptions","isObject","defaults","requestInit","customOptionKeys","Object","keys","customOptions","args","restOptions","reduce","acc","key","includes","dependencies","Array","isArray","loading","opts"],"sources":["../../../src/useProvider/useProviderArgs.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport defaults, {\n useProviderArgsDefaults,\n} from \"./useProviderArgsDefaults.js\";\nimport { isObject } from \"lodash\";\nimport { HttpOptions } from \"@next-core/http\";\nimport type {\n IncomingOptions,\n UseProviderArgsReturn,\n UseProviderCustomOptions,\n UseProviderOptionArgsDefaults,\n} from \"./useProviderTypes.js\";\n\nexport default function useProviderArgs(\n providerOrParamsOrGlobalOptions?: string | IncomingOptions,\n globalOptionsOrDeps?: IncomingOptions | any[],\n deps?: any[]\n): UseProviderArgsReturn {\n const provider = useMemo(() => {\n if (typeof providerOrParamsOrGlobalOptions === \"string\") {\n return providerOrParamsOrGlobalOptions;\n }\n\n return useProviderArgsDefaults.provider as string;\n }, [providerOrParamsOrGlobalOptions, globalOptionsOrDeps]);\n\n const options = useMemo(() => {\n let localOptions = {};\n if (isObject(providerOrParamsOrGlobalOptions)) {\n localOptions = providerOrParamsOrGlobalOptions;\n } else if (isObject(globalOptionsOrDeps)) {\n localOptions = globalOptionsOrDeps;\n }\n return {\n ...defaults,\n ...localOptions,\n } as IncomingOptions;\n }, [providerOrParamsOrGlobalOptions, globalOptionsOrDeps]);\n\n const requestInit = useMemo((): {\n args: unknown;\n options?: HttpOptions;\n } => {\n const customOptionKeys = [\n ...Object.keys(useProviderArgsDefaults),\n ...Object.keys(\n useProviderArgsDefaults.customOptions as Partial<\n UseProviderCustomOptions<any>\n >\n ),\n ] as Array<UseProviderOptionArgsDefaults>;\n\n const { args = null, ...restOptions } = (\n Object.keys(options) as any\n ).reduce(\n (acc: Record<string, any>, key: UseProviderOptionArgsDefaults) => {\n if (!customOptionKeys.includes(key)) acc[key] = (options as never)[key];\n return acc;\n },\n {} as Record<string, any>\n );\n\n return { options: { ...restOptions }, args };\n }, [options]);\n\n const dependencies = useMemo((): any[] | undefined => {\n if (Array.isArray(globalOptionsOrDeps)) return globalOptionsOrDeps;\n if (Array.isArray(deps)) return deps;\n return defaults.dependencies;\n }, [globalOptionsOrDeps, deps]);\n\n const loading = options.loading || Array.isArray(dependencies);\n\n const customOptions = useMemo(() => {\n const customOptionKeys = Object.keys(\n useProviderArgsDefaults.customOptions as Partial<\n UseProviderCustomOptions<any>\n >\n ) as (keyof UseProviderCustomOptions)[];\n\n const customOptions = customOptionKeys.reduce((opts, key) => {\n (opts as any)[key] = options[key];\n return opts;\n }, {} as UseProviderCustomOptions);\n\n return { ...customOptions, loading };\n }, [options]);\n\n return {\n provider,\n customOptions,\n requestInit,\n dependencies,\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useProviderArgsDefaults = exports.default = void 0;
7
+ const useProviderArgsDefaults = exports.useProviderArgsDefaults = {
8
+ provider: "",
9
+ customOptions: {
10
+ onError: () => {
11
+ /* Do nothing.. */
12
+ },
13
+ transform: (oldData, newData) => newData,
14
+ data: undefined,
15
+ loading: false,
16
+ suspense: false,
17
+ cache: true
18
+ },
19
+ dependencies: undefined
20
+ };
21
+ var _default = exports.default = Object.entries(useProviderArgsDefaults).reduce((acc, [key, value]) => {
22
+ if (Object.prototype.toString.call(value) === "[object Object]") return {
23
+ ...acc,
24
+ ...value
25
+ };
26
+ return {
27
+ ...acc,
28
+ [key]: value
29
+ };
30
+ }, {});
31
+ //# sourceMappingURL=useProviderArgsDefaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProviderArgsDefaults.js","names":["useProviderArgsDefaults","exports","provider","customOptions","onError","transform","oldData","newData","data","undefined","loading","suspense","cache","dependencies","_default","default","Object","entries","reduce","acc","key","value","prototype","toString","call"],"sources":["../../../src/useProvider/useProviderArgsDefaults.ts"],"sourcesContent":["import type { UseProviderArgsDefaults } from \"./useProviderTypes.js\";\n\nexport const useProviderArgsDefaults: UseProviderArgsDefaults = {\n provider: \"\",\n customOptions: {\n onError: () => {\n /* Do nothing.. */\n },\n transform: (oldData: any, newData: any) => newData,\n data: undefined,\n loading: false,\n suspense: false,\n cache: true,\n },\n dependencies: undefined,\n};\n\nexport default Object.entries(useProviderArgsDefaults).reduce(\n (acc, [key, value]) => {\n if (Object.prototype.toString.call(value) === \"[object Object]\")\n return { ...acc, ...value };\n return { ...acc, [key]: value };\n },\n {} as UseProviderArgsDefaults\n);\n"],"mappings":";;;;;;AAEO,MAAMA,uBAAgD,GAAAC,OAAA,CAAAD,uBAAA,GAAG;EAC9DE,QAAQ,EAAE,EAAE;EACZC,aAAa,EAAE;IACbC,OAAO,EAAEA,CAAA,KAAM;MACb;IAAA,CACD;IACDC,SAAS,EAAEA,CAACC,OAAY,EAAEC,OAAY,KAAKA,OAAO;IAClDC,IAAI,EAAEC,SAAS;IACfC,OAAO,EAAE,KAAK;IACdC,QAAQ,EAAE,KAAK;IACfC,KAAK,EAAE;EACT,CAAC;EACDC,YAAY,EAAEJ;AAChB,CAAC;AAAC,IAAAK,QAAA,GAAAb,OAAA,CAAAc,OAAA,GAEaC,MAAM,CAACC,OAAO,CAACjB,uBAAuB,CAAC,CAACkB,MAAM,CAC3D,CAACC,GAAG,EAAE,CAACC,GAAG,EAAEC,KAAK,CAAC,KAAK;EACrB,IAAIL,MAAM,CAACM,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACH,KAAK,CAAC,KAAK,iBAAiB,EAC7D,OAAO;IAAE,GAAGF,GAAG;IAAE,GAAGE;EAAM,CAAC;EAC7B,OAAO;IAAE,GAAGF,GAAG;IAAE,CAACC,GAAG,GAAGC;EAAM,CAAC;AACjC,CAAC,EACD,CAAC,CACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=useProviderTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProviderTypes.js","names":[],"sources":["../../../src/useProvider/useProviderTypes.ts"],"sourcesContent":["import type {\n HttpFetchError,\n HttpOptions,\n HttpParseError,\n HttpResponseError,\n} from \"@next-core/http\";\nimport { fetchByProvider } from \"@next-core/runtime\";\n\nexport type UseProviderError =\n | Error\n | typeof HttpFetchError\n | typeof HttpResponseError\n | typeof HttpParseError;\nexport type OnError = (error: UseProviderError) => void;\n\nexport interface UseProviderCustomOptions<TData = any> {\n loading: boolean;\n onError: OnError;\n transform: (currData: TData, newData: TData) => any;\n suspense: boolean;\n data: TData;\n cache: boolean;\n}\n\nexport type UseProviderArgsReturn = {\n provider: string;\n customOptions: UseProviderCustomOptions;\n dependencies?: any[];\n requestInit: Partial<{\n apiParams: typeof fetchByProvider;\n args: unknown;\n options: HttpOptions;\n }>;\n};\n\nexport interface UseProviderArgsDefaults {\n provider?: string;\n customOptions?: Partial<UseProviderCustomOptions>;\n dependencies?: any[];\n}\nexport interface ReqBase<TData> {\n data: TData | undefined;\n loading: boolean;\n error: UseProviderError | undefined;\n}\n\nexport type FetchArgs = Parameters<typeof fetchByProvider> | unknown[];\n\nexport type RequestInit = Partial<Omit<HttpOptions, \"body\" | \"cache\">> & {\n args?: unknown[];\n};\n\nexport type IncomingOptions = Partial<UseProviderCustomOptions> & RequestInit;\n\nexport type UseProviderArgs = [\n (string | IncomingOptions)?,\n (IncomingOptions | any[])?,\n any[]?,\n];\n\nexport type UseProviderOptionArgsDefaults = keyof UseProviderCustomOptions &\n keyof Omit<UseProviderArgsDefaults, \"customOptions\">;\n\nexport type useProviderQueryMethod<TData> = (\n providerOrArgs: string | unknown[],\n args?: unknown[]\n) => Promise<TData>;\n\nexport type Req<TData = any> = {\n query: useProviderQueryMethod<TData>;\n} & ReqBase<TData>;\n\nexport type Res<TData = any> = TData;\n\nexport type UseProviderArrayReturn<TData> = [\n Req<TData>,\n Res<TData | undefined>,\n boolean,\n UseProviderError | undefined,\n];\n\nexport type UseProviderObjectReturn<TData> = ReqBase<TData> & {\n query: useProviderQueryMethod<TData>;\n request: Req<TData>;\n response: Res<TData | undefined>;\n};\n\nexport type UseProvider<TData> = UseProviderArrayReturn<TData> &\n UseProviderObjectReturn<TData>;\n"],"mappings":""}
package/dist/esm/index.js CHANGED
@@ -3,4 +3,5 @@ export * from "./useCurrentTheme.js";
3
3
  export * from "./useCurrentApp.js";
4
4
  export * from "./useRecentApps.js";
5
5
  export * from "./useRouteRender.js";
6
+ export * from "./useProvider/useProvider.js";
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./ReactUseBrick.js\";\nexport * from \"./useCurrentTheme.js\";\nexport * from \"./useCurrentApp.js\";\nexport * from \"./useRecentApps.js\";\nexport * from \"./useRouteRender.js\";\n"],"mappings":"AAAA,cAAc,oBAAoB;AAClC,cAAc,sBAAsB;AACpC,cAAc,oBAAoB;AAClC,cAAc,oBAAoB;AAClC,cAAc,qBAAqB"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./ReactUseBrick.js\";\nexport * from \"./useCurrentTheme.js\";\nexport * from \"./useCurrentApp.js\";\nexport * from \"./useRecentApps.js\";\nexport * from \"./useRouteRender.js\";\nexport * from \"./useProvider/useProvider.js\";\n"],"mappings":"AAAA,cAAc,oBAAoB;AAClC,cAAc,sBAAsB;AACpC,cAAc,oBAAoB;AAClC,cAAc,oBAAoB;AAClC,cAAc,qBAAqB;AACnC,cAAc,8BAA8B"}
@@ -0,0 +1,52 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import { fetchByProvider } from "@next-core/runtime";
3
+ var cacheMap = new Map();
4
+ function isObj(v) {
5
+ return typeof v === "object" && v !== null && !Array.isArray(v);
6
+ }
7
+ function isString(v) {
8
+ return typeof v === "string";
9
+ }
10
+ function buildSortedCacheKey(provider) {
11
+ var sortObj = obj => Object.keys(obj).sort().map(k => ({
12
+ [k]: obj[k]
13
+ }));
14
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
15
+ args[_key - 1] = arguments[_key];
16
+ }
17
+ try {
18
+ var sortedArgs = isObj(args) ? sortObj(args) : args.map(arg => isString(arg) ? arg : sortObj(arg));
19
+ return JSON.stringify({
20
+ provider,
21
+ args: sortedArgs
22
+ });
23
+ } catch (e) {
24
+ return JSON.stringify({
25
+ provider,
26
+ args
27
+ });
28
+ }
29
+ }
30
+ export default function fetch(_x, _x2, _x3) {
31
+ return _fetch.apply(this, arguments);
32
+ }
33
+ function _fetch() {
34
+ _fetch = _asyncToGenerator(function* (provider, cache, args) {
35
+ var promise;
36
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
37
+ // @ts-ignore
38
+ var cacheKey = buildSortedCacheKey(provider, ...args);
39
+ !cache && cacheMap.has(cacheKey) && cacheMap.delete(cacheKey);
40
+ if (cacheMap.has(cacheKey)) {
41
+ promise = cacheMap.get(cacheKey);
42
+ } else {
43
+ promise = (() => {
44
+ return fetchByProvider(provider, args);
45
+ })();
46
+ cache && cacheMap.set(cacheKey, promise);
47
+ }
48
+ return promise;
49
+ });
50
+ return _fetch.apply(this, arguments);
51
+ }
52
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","names":["fetchByProvider","cacheMap","Map","isObj","v","Array","isArray","isString","buildSortedCacheKey","provider","sortObj","obj","Object","keys","sort","map","k","_len","arguments","length","args","_key","sortedArgs","arg","JSON","stringify","e","fetch","_x","_x2","_x3","_fetch","apply","_asyncToGenerator","cache","promise","cacheKey","has","delete","get","set"],"sources":["../../../src/useProvider/fetch.ts"],"sourcesContent":["import { FetchArgs } from \"./useProviderTypes.js\";\nimport { fetchByProvider } from \"@next-core/runtime\";\n\nconst cacheMap: Map<string, Promise<unknown>> = new Map();\n\nfunction isObj(v: any): boolean {\n return typeof v === \"object\" && v !== null && !Array.isArray(v);\n}\n\nfunction isString(v: any): v is string {\n return typeof v === \"string\";\n}\nfunction buildSortedCacheKey(provider: string, ...args: any): string {\n const sortObj = (obj: Record<string, any>) =>\n Object.keys(obj)\n .sort()\n .map((k) => ({ [k]: (obj as any)[k] }));\n try {\n const sortedArgs = isObj(args)\n ? sortObj(args)\n : (args as Record<string, any>[]).map((arg) =>\n isString(arg) ? arg : sortObj(arg)\n );\n\n return JSON.stringify({\n provider,\n args: sortedArgs,\n });\n } catch (e) {\n return JSON.stringify({\n provider,\n args,\n });\n }\n}\n\nexport default async function fetch<TData>(\n provider: string,\n cache: boolean,\n args: FetchArgs\n): Promise<TData> {\n let promise: Promise<TData>;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const cacheKey = buildSortedCacheKey(provider, ...args);\n !cache && cacheMap.has(cacheKey) && cacheMap.delete(cacheKey);\n\n if (cacheMap.has(cacheKey)) {\n promise = cacheMap.get(cacheKey) as Promise<TData>;\n } else {\n promise = (() => {\n return fetchByProvider(provider, args) as Promise<TData>;\n })();\n\n cache && cacheMap.set(cacheKey, promise);\n }\n\n return promise;\n}\n"],"mappings":";AACA,SAASA,eAAe,QAAQ,oBAAoB;AAEpD,IAAMC,QAAuC,GAAG,IAAIC,GAAG,CAAC,CAAC;AAEzD,SAASC,KAAKA,CAACC,CAAM,EAAW;EAC9B,OAAO,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,KAAK,IAAI,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,CAAC,CAAC;AACjE;AAEA,SAASG,QAAQA,CAACH,CAAM,EAAe;EACrC,OAAO,OAAOA,CAAC,KAAK,QAAQ;AAC9B;AACA,SAASI,mBAAmBA,CAACC,QAAgB,EAAwB;EACnE,IAAMC,OAAO,GAAIC,GAAwB,IACvCC,MAAM,CAACC,IAAI,CAACF,GAAG,CAAC,CACbG,IAAI,CAAC,CAAC,CACNC,GAAG,CAAEC,CAAC,KAAM;IAAE,CAACA,CAAC,GAAIL,GAAG,CAASK,CAAC;EAAE,CAAC,CAAC,CAAC;EAAC,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAJIC,IAAI,OAAAf,KAAA,CAAAY,IAAA,OAAAA,IAAA,WAAAI,IAAA,MAAAA,IAAA,GAAAJ,IAAA,EAAAI,IAAA;IAAJD,IAAI,CAAAC,IAAA,QAAAH,SAAA,CAAAG,IAAA;EAAA;EAKpD,IAAI;IACF,IAAMC,UAAU,GAAGnB,KAAK,CAACiB,IAAI,CAAC,GAC1BV,OAAO,CAACU,IAAI,CAAC,GACZA,IAAI,CAA2BL,GAAG,CAAEQ,GAAG,IACtChB,QAAQ,CAACgB,GAAG,CAAC,GAAGA,GAAG,GAAGb,OAAO,CAACa,GAAG,CACnC,CAAC;IAEL,OAAOC,IAAI,CAACC,SAAS,CAAC;MACpBhB,QAAQ;MACRW,IAAI,EAAEE;IACR,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOI,CAAC,EAAE;IACV,OAAOF,IAAI,CAACC,SAAS,CAAC;MACpBhB,QAAQ;MACRW;IACF,CAAC,CAAC;EACJ;AACF;AAEA,wBAA8BO,KAAKA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,MAAA,CAAAC,KAAA,OAAAd,SAAA;AAAA;AAsBlC,SAAAa,OAAA;EAAAA,MAAA,GAAAE,iBAAA,CAtBc,WACbxB,QAAgB,EAChByB,KAAc,EACdd,IAAe,EACC;IAChB,IAAIe,OAAuB;IAC3B;IACA;IACA,IAAMC,QAAQ,GAAG5B,mBAAmB,CAACC,QAAQ,EAAE,GAAGW,IAAI,CAAC;IACvD,CAACc,KAAK,IAAIjC,QAAQ,CAACoC,GAAG,CAACD,QAAQ,CAAC,IAAInC,QAAQ,CAACqC,MAAM,CAACF,QAAQ,CAAC;IAE7D,IAAInC,QAAQ,CAACoC,GAAG,CAACD,QAAQ,CAAC,EAAE;MAC1BD,OAAO,GAAGlC,QAAQ,CAACsC,GAAG,CAACH,QAAQ,CAAmB;IACpD,CAAC,MAAM;MACLD,OAAO,GAAG,CAAC,MAAM;QACf,OAAOnC,eAAe,CAACS,QAAQ,EAAEW,IAAI,CAAC;MACxC,CAAC,EAAE,CAAC;MAEJc,KAAK,IAAIjC,QAAQ,CAACuC,GAAG,CAACJ,QAAQ,EAAED,OAAO,CAAC;IAC1C;IAEA,OAAOA,OAAO;EAChB,CAAC;EAAA,OAAAJ,MAAA,CAAAC,KAAA,OAAAd,SAAA;AAAA"}
@@ -0,0 +1,130 @@
1
+ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
+ var _excluded = ["onError", "transform", "suspense", "cache"];
5
+ import { useCallback, useEffect, useMemo, useReducer, useRef, useState } from "react";
6
+ import useProviderArgs from "./useProviderArgs.js";
7
+ import { isObject, isString } from "lodash";
8
+ import fetch from "./fetch.js";
9
+ export function useProvider() {
10
+ var {
11
+ provider,
12
+ customOptions,
13
+ dependencies,
14
+ requestInit
15
+ } = useProviderArgs(...arguments);
16
+ var {
17
+ onError,
18
+ transform,
19
+ suspense,
20
+ cache
21
+ } = customOptions,
22
+ defaults = _objectWithoutProperties(customOptions, _excluded);
23
+ var [loading, setLoading] = useState(defaults.loading);
24
+ var suspenseStatus = useRef("pending");
25
+ var suspender = useRef();
26
+ var mounted = useRef(false);
27
+ var error = useRef();
28
+ var response = useRef();
29
+ var data = useRef(defaults.data);
30
+ var forceUpdate = useReducer(() => ({}), [])[1];
31
+ var doFetch = useCallback( /*#__PURE__*/function () {
32
+ var _ref = _asyncToGenerator(function* (provider, providerArgs) {
33
+ try {
34
+ error.current = undefined;
35
+ if (!suspense) setLoading(true);
36
+ var newRes = yield fetch(provider, cache, providerArgs);
37
+ response.current = newRes;
38
+ data.current = transform(data.current, newRes);
39
+ } catch (e) {
40
+ error.current = e;
41
+ data.current = undefined;
42
+ }
43
+ if (!suspense) setLoading(false);
44
+ if (error.current) onError(error.current);
45
+ return data.current;
46
+ });
47
+ return function (_x, _x2) {
48
+ return _ref.apply(this, arguments);
49
+ };
50
+ }(), [provider, customOptions, dependencies, requestInit, suspense, transform, defaults.data, onError, cache]);
51
+ var makeFetch = useCallback( /*#__PURE__*/function () {
52
+ var _ref2 = _asyncToGenerator(function* (providerOrBody, args) {
53
+ var providerStr = provider;
54
+ var providerArgs = [];
55
+ if (isString(providerOrBody)) {
56
+ providerStr = providerOrBody;
57
+ }
58
+ if (isObject(providerOrBody)) {
59
+ providerArgs = providerOrBody;
60
+ } else if (isObject(args)) {
61
+ providerArgs = args;
62
+ }
63
+ if (suspense) {
64
+ return _asyncToGenerator(function* () {
65
+ suspender.current = doFetch(providerStr, providerArgs).then(newData => {
66
+ suspenseStatus.current = "success";
67
+ return newData;
68
+ }, error => {
69
+ /* istanbul ignore next */
70
+ suspenseStatus.current = "error";
71
+ error.current = error;
72
+ return error;
73
+ });
74
+ forceUpdate();
75
+ return yield suspender.current;
76
+ })();
77
+ }
78
+ return doFetch(providerStr, providerArgs);
79
+ });
80
+ return function (_x3, _x4) {
81
+ return _ref2.apply(this, arguments);
82
+ };
83
+ }(), [doFetch]);
84
+ var request = useMemo(() => Object.defineProperties({
85
+ query: makeFetch
86
+ }, {
87
+ loading: {
88
+ get() {
89
+ return loading;
90
+ }
91
+ },
92
+ data: {
93
+ get() {
94
+ return data.current;
95
+ }
96
+ },
97
+ error: {
98
+ get() {
99
+ return error.current;
100
+ }
101
+ }
102
+ }), [makeFetch]);
103
+
104
+ // onMount/onUpdate
105
+ useEffect(() => {
106
+ mounted.current = true;
107
+ if (Array.isArray(dependencies) && provider) {
108
+ request.query(provider, requestInit.args);
109
+ }
110
+ return () => mounted.current = false;
111
+ }, dependencies);
112
+ if (suspense && suspender.current) {
113
+ switch (suspenseStatus.current) {
114
+ case "pending":
115
+ throw suspender.current;
116
+ /* istanbul ignore next */
117
+ case "error":
118
+ throw error.current;
119
+ }
120
+ }
121
+ return Object.assign([request, response.current, loading, error.current], _objectSpread(_objectSpread({
122
+ request
123
+ }, request), {}, {
124
+ response: response.current,
125
+ data: data.current,
126
+ loading,
127
+ error: error.current
128
+ }));
129
+ }
130
+ //# sourceMappingURL=useProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProvider.js","names":["useCallback","useEffect","useMemo","useReducer","useRef","useState","useProviderArgs","isObject","isString","fetch","useProvider","provider","customOptions","dependencies","requestInit","arguments","onError","transform","suspense","cache","defaults","_objectWithoutProperties","_excluded","loading","setLoading","suspenseStatus","suspender","mounted","error","response","data","forceUpdate","doFetch","_ref","_asyncToGenerator","providerArgs","current","undefined","newRes","e","_x","_x2","apply","makeFetch","_ref2","providerOrBody","args","providerStr","then","newData","_x3","_x4","request","Object","defineProperties","query","get","Array","isArray","assign","_objectSpread"],"sources":["../../../src/useProvider/useProvider.ts"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport useProviderArgs from \"./useProviderArgs.js\";\nimport type {\n UseProviderArgs,\n FetchArgs,\n UseProviderError,\n UseProviderObjectReturn,\n Req,\n Res,\n UseProviderArrayReturn,\n UseProvider,\n} from \"./useProviderTypes.js\";\nimport { isObject, isString } from \"lodash\";\nimport fetch from \"./fetch.js\";\n\nexport function useProvider<TData = any>(\n ...args: UseProviderArgs\n): UseProvider<TData> {\n const { provider, customOptions, dependencies, requestInit } =\n useProviderArgs(...args);\n const { onError, transform, suspense, cache, ...defaults } = customOptions;\n\n const [loading, setLoading] = useState(defaults.loading);\n const suspenseStatus = useRef<\"pending\" | \"error\" | \"success\">(\"pending\");\n const suspender = useRef<Promise<any>>();\n const mounted = useRef(false);\n const error = useRef<UseProviderError | undefined>();\n const response = useRef<Res<TData>>();\n const data = useRef<TData | undefined>(defaults.data);\n const forceUpdate = useReducer(() => ({}), [])[1];\n\n const doFetch = useCallback(\n async (\n provider: string,\n providerArgs: FetchArgs\n ): Promise<TData | undefined> => {\n try {\n error.current = undefined;\n if (!suspense) setLoading(true);\n const newRes = (await fetch(provider, cache, providerArgs)) as TData;\n response.current = newRes;\n data.current = transform(data.current, newRes);\n } catch (e) {\n error.current = e as UseProviderError;\n data.current = undefined;\n }\n if (!suspense) setLoading(false);\n if (error.current) onError(error.current);\n return data.current;\n },\n [\n provider,\n customOptions,\n dependencies,\n requestInit,\n suspense,\n transform,\n defaults.data,\n onError,\n cache,\n ]\n );\n\n const makeFetch = useCallback(\n async (\n providerOrBody: string | unknown[],\n args?: unknown[]\n ): Promise<TData | undefined> => {\n let providerStr = provider;\n let providerArgs = [] as unknown[];\n if (isString(providerOrBody)) {\n providerStr = providerOrBody;\n }\n if (isObject(providerOrBody)) {\n providerArgs = providerOrBody;\n } else if (isObject(args)) {\n providerArgs = args;\n }\n\n if (suspense) {\n return (async () => {\n suspender.current = doFetch(providerStr, providerArgs).then(\n (newData) => {\n suspenseStatus.current = \"success\";\n return newData;\n },\n (error) => {\n /* istanbul ignore next */\n suspenseStatus.current = \"error\";\n error.current = error;\n return error;\n }\n );\n forceUpdate();\n return await suspender.current;\n })();\n }\n return doFetch(providerStr, providerArgs);\n },\n [doFetch]\n );\n\n const request: Req<TData> = useMemo(\n () =>\n Object.defineProperties(\n {\n query: makeFetch,\n },\n {\n loading: {\n get(): boolean {\n return loading;\n },\n },\n data: {\n get(): TData | undefined {\n return data.current;\n },\n },\n error: {\n get(): UseProviderError | undefined {\n return error.current;\n },\n },\n }\n ),\n [makeFetch]\n ) as unknown as Req<TData>;\n\n // onMount/onUpdate\n useEffect((): any => {\n mounted.current = true;\n if (Array.isArray(dependencies) && provider) {\n request.query(provider, requestInit.args as unknown[]);\n }\n return () => (mounted.current = false);\n }, dependencies);\n\n if (suspense && suspender.current) {\n switch (suspenseStatus.current) {\n case \"pending\":\n throw suspender.current;\n /* istanbul ignore next */\n case \"error\":\n throw error.current;\n }\n }\n\n return Object.assign<\n UseProviderArrayReturn<TData>,\n UseProviderObjectReturn<TData>\n >([request, response.current, loading, error.current], {\n request,\n ...request,\n response: response.current,\n data: data.current,\n loading,\n error: error.current,\n });\n}\n"],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
+ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
3
+ var _excluded = ["args"];
4
+ import { useMemo } from "react";
5
+ import defaults, { useProviderArgsDefaults } from "./useProviderArgsDefaults.js";
6
+ import { isObject } from "lodash";
7
+ export default function useProviderArgs(providerOrParamsOrGlobalOptions, globalOptionsOrDeps, deps) {
8
+ var provider = useMemo(() => {
9
+ if (typeof providerOrParamsOrGlobalOptions === "string") {
10
+ return providerOrParamsOrGlobalOptions;
11
+ }
12
+ return useProviderArgsDefaults.provider;
13
+ }, [providerOrParamsOrGlobalOptions, globalOptionsOrDeps]);
14
+ var options = useMemo(() => {
15
+ var localOptions = {};
16
+ if (isObject(providerOrParamsOrGlobalOptions)) {
17
+ localOptions = providerOrParamsOrGlobalOptions;
18
+ } else if (isObject(globalOptionsOrDeps)) {
19
+ localOptions = globalOptionsOrDeps;
20
+ }
21
+ return _objectSpread(_objectSpread({}, defaults), localOptions);
22
+ }, [providerOrParamsOrGlobalOptions, globalOptionsOrDeps]);
23
+ var requestInit = useMemo(() => {
24
+ var customOptionKeys = [...Object.keys(useProviderArgsDefaults), ...Object.keys(useProviderArgsDefaults.customOptions)];
25
+ var _reduce = Object.keys(options).reduce((acc, key) => {
26
+ if (!customOptionKeys.includes(key)) acc[key] = options[key];
27
+ return acc;
28
+ }, {}),
29
+ {
30
+ args = null
31
+ } = _reduce,
32
+ restOptions = _objectWithoutProperties(_reduce, _excluded);
33
+ return {
34
+ options: _objectSpread({}, restOptions),
35
+ args
36
+ };
37
+ }, [options]);
38
+ var dependencies = useMemo(() => {
39
+ if (Array.isArray(globalOptionsOrDeps)) return globalOptionsOrDeps;
40
+ if (Array.isArray(deps)) return deps;
41
+ return defaults.dependencies;
42
+ }, [globalOptionsOrDeps, deps]);
43
+ var loading = options.loading || Array.isArray(dependencies);
44
+ var customOptions = useMemo(() => {
45
+ var customOptionKeys = Object.keys(useProviderArgsDefaults.customOptions);
46
+ var customOptions = customOptionKeys.reduce((opts, key) => {
47
+ opts[key] = options[key];
48
+ return opts;
49
+ }, {});
50
+ return _objectSpread(_objectSpread({}, customOptions), {}, {
51
+ loading
52
+ });
53
+ }, [options]);
54
+ return {
55
+ provider,
56
+ customOptions,
57
+ requestInit,
58
+ dependencies
59
+ };
60
+ }
61
+ //# sourceMappingURL=useProviderArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProviderArgs.js","names":["useMemo","defaults","useProviderArgsDefaults","isObject","useProviderArgs","providerOrParamsOrGlobalOptions","globalOptionsOrDeps","deps","provider","options","localOptions","_objectSpread","requestInit","customOptionKeys","Object","keys","customOptions","_reduce","reduce","acc","key","includes","args","restOptions","_objectWithoutProperties","_excluded","dependencies","Array","isArray","loading","opts"],"sources":["../../../src/useProvider/useProviderArgs.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport defaults, {\n useProviderArgsDefaults,\n} from \"./useProviderArgsDefaults.js\";\nimport { isObject } from \"lodash\";\nimport { HttpOptions } from \"@next-core/http\";\nimport type {\n IncomingOptions,\n UseProviderArgsReturn,\n UseProviderCustomOptions,\n UseProviderOptionArgsDefaults,\n} from \"./useProviderTypes.js\";\n\nexport default function useProviderArgs(\n providerOrParamsOrGlobalOptions?: string | IncomingOptions,\n globalOptionsOrDeps?: IncomingOptions | any[],\n deps?: any[]\n): UseProviderArgsReturn {\n const provider = useMemo(() => {\n if (typeof providerOrParamsOrGlobalOptions === \"string\") {\n return providerOrParamsOrGlobalOptions;\n }\n\n return useProviderArgsDefaults.provider as string;\n }, [providerOrParamsOrGlobalOptions, globalOptionsOrDeps]);\n\n const options = useMemo(() => {\n let localOptions = {};\n if (isObject(providerOrParamsOrGlobalOptions)) {\n localOptions = providerOrParamsOrGlobalOptions;\n } else if (isObject(globalOptionsOrDeps)) {\n localOptions = globalOptionsOrDeps;\n }\n return {\n ...defaults,\n ...localOptions,\n } as IncomingOptions;\n }, [providerOrParamsOrGlobalOptions, globalOptionsOrDeps]);\n\n const requestInit = useMemo((): {\n args: unknown;\n options?: HttpOptions;\n } => {\n const customOptionKeys = [\n ...Object.keys(useProviderArgsDefaults),\n ...Object.keys(\n useProviderArgsDefaults.customOptions as Partial<\n UseProviderCustomOptions<any>\n >\n ),\n ] as Array<UseProviderOptionArgsDefaults>;\n\n const { args = null, ...restOptions } = (\n Object.keys(options) as any\n ).reduce(\n (acc: Record<string, any>, key: UseProviderOptionArgsDefaults) => {\n if (!customOptionKeys.includes(key)) acc[key] = (options as never)[key];\n return acc;\n },\n {} as Record<string, any>\n );\n\n return { options: { ...restOptions }, args };\n }, [options]);\n\n const dependencies = useMemo((): any[] | undefined => {\n if (Array.isArray(globalOptionsOrDeps)) return globalOptionsOrDeps;\n if (Array.isArray(deps)) return deps;\n return defaults.dependencies;\n }, [globalOptionsOrDeps, deps]);\n\n const loading = options.loading || Array.isArray(dependencies);\n\n const customOptions = useMemo(() => {\n const customOptionKeys = Object.keys(\n useProviderArgsDefaults.customOptions as Partial<\n UseProviderCustomOptions<any>\n >\n ) as (keyof UseProviderCustomOptions)[];\n\n const customOptions = customOptionKeys.reduce((opts, key) => {\n (opts as any)[key] = options[key];\n return opts;\n }, {} as UseProviderCustomOptions);\n\n return { ...customOptions, loading };\n }, [options]);\n\n return {\n provider,\n customOptions,\n requestInit,\n dependencies,\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
+ export var useProviderArgsDefaults = {
3
+ provider: "",
4
+ customOptions: {
5
+ onError: () => {
6
+ /* Do nothing.. */
7
+ },
8
+ transform: (oldData, newData) => newData,
9
+ data: undefined,
10
+ loading: false,
11
+ suspense: false,
12
+ cache: true
13
+ },
14
+ dependencies: undefined
15
+ };
16
+ export default Object.entries(useProviderArgsDefaults).reduce((acc, _ref) => {
17
+ var [key, value] = _ref;
18
+ if (Object.prototype.toString.call(value) === "[object Object]") return _objectSpread(_objectSpread({}, acc), value);
19
+ return _objectSpread(_objectSpread({}, acc), {}, {
20
+ [key]: value
21
+ });
22
+ }, {});
23
+ //# sourceMappingURL=useProviderArgsDefaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProviderArgsDefaults.js","names":["useProviderArgsDefaults","provider","customOptions","onError","transform","oldData","newData","data","undefined","loading","suspense","cache","dependencies","Object","entries","reduce","acc","_ref","key","value","prototype","toString","call","_objectSpread"],"sources":["../../../src/useProvider/useProviderArgsDefaults.ts"],"sourcesContent":["import type { UseProviderArgsDefaults } from \"./useProviderTypes.js\";\n\nexport const useProviderArgsDefaults: UseProviderArgsDefaults = {\n provider: \"\",\n customOptions: {\n onError: () => {\n /* Do nothing.. */\n },\n transform: (oldData: any, newData: any) => newData,\n data: undefined,\n loading: false,\n suspense: false,\n cache: true,\n },\n dependencies: undefined,\n};\n\nexport default Object.entries(useProviderArgsDefaults).reduce(\n (acc, [key, value]) => {\n if (Object.prototype.toString.call(value) === \"[object Object]\")\n return { ...acc, ...value };\n return { ...acc, [key]: value };\n },\n {} as UseProviderArgsDefaults\n);\n"],"mappings":";AAEA,OAAO,IAAMA,uBAAgD,GAAG;EAC9DC,QAAQ,EAAE,EAAE;EACZC,aAAa,EAAE;IACbC,OAAO,EAAEA,CAAA,KAAM;MACb;IAAA,CACD;IACDC,SAAS,EAAEA,CAACC,OAAY,EAAEC,OAAY,KAAKA,OAAO;IAClDC,IAAI,EAAEC,SAAS;IACfC,OAAO,EAAE,KAAK;IACdC,QAAQ,EAAE,KAAK;IACfC,KAAK,EAAE;EACT,CAAC;EACDC,YAAY,EAAEJ;AAChB,CAAC;AAED,eAAeK,MAAM,CAACC,OAAO,CAACd,uBAAuB,CAAC,CAACe,MAAM,CAC3D,CAACC,GAAG,EAAAC,IAAA,KAAmB;EAAA,IAAjB,CAACC,GAAG,EAAEC,KAAK,CAAC,GAAAF,IAAA;EAChB,IAAIJ,MAAM,CAACO,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACH,KAAK,CAAC,KAAK,iBAAiB,EAC7D,OAAAI,aAAA,CAAAA,aAAA,KAAYP,GAAG,GAAKG,KAAK;EAC3B,OAAAI,aAAA,CAAAA,aAAA,KAAYP,GAAG;IAAE,CAACE,GAAG,GAAGC;EAAK;AAC/B,CAAC,EACD,CAAC,CACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useProviderTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProviderTypes.js","names":[],"sources":["../../../src/useProvider/useProviderTypes.ts"],"sourcesContent":["import type {\n HttpFetchError,\n HttpOptions,\n HttpParseError,\n HttpResponseError,\n} from \"@next-core/http\";\nimport { fetchByProvider } from \"@next-core/runtime\";\n\nexport type UseProviderError =\n | Error\n | typeof HttpFetchError\n | typeof HttpResponseError\n | typeof HttpParseError;\nexport type OnError = (error: UseProviderError) => void;\n\nexport interface UseProviderCustomOptions<TData = any> {\n loading: boolean;\n onError: OnError;\n transform: (currData: TData, newData: TData) => any;\n suspense: boolean;\n data: TData;\n cache: boolean;\n}\n\nexport type UseProviderArgsReturn = {\n provider: string;\n customOptions: UseProviderCustomOptions;\n dependencies?: any[];\n requestInit: Partial<{\n apiParams: typeof fetchByProvider;\n args: unknown;\n options: HttpOptions;\n }>;\n};\n\nexport interface UseProviderArgsDefaults {\n provider?: string;\n customOptions?: Partial<UseProviderCustomOptions>;\n dependencies?: any[];\n}\nexport interface ReqBase<TData> {\n data: TData | undefined;\n loading: boolean;\n error: UseProviderError | undefined;\n}\n\nexport type FetchArgs = Parameters<typeof fetchByProvider> | unknown[];\n\nexport type RequestInit = Partial<Omit<HttpOptions, \"body\" | \"cache\">> & {\n args?: unknown[];\n};\n\nexport type IncomingOptions = Partial<UseProviderCustomOptions> & RequestInit;\n\nexport type UseProviderArgs = [\n (string | IncomingOptions)?,\n (IncomingOptions | any[])?,\n any[]?,\n];\n\nexport type UseProviderOptionArgsDefaults = keyof UseProviderCustomOptions &\n keyof Omit<UseProviderArgsDefaults, \"customOptions\">;\n\nexport type useProviderQueryMethod<TData> = (\n providerOrArgs: string | unknown[],\n args?: unknown[]\n) => Promise<TData>;\n\nexport type Req<TData = any> = {\n query: useProviderQueryMethod<TData>;\n} & ReqBase<TData>;\n\nexport type Res<TData = any> = TData;\n\nexport type UseProviderArrayReturn<TData> = [\n Req<TData>,\n Res<TData | undefined>,\n boolean,\n UseProviderError | undefined,\n];\n\nexport type UseProviderObjectReturn<TData> = ReqBase<TData> & {\n query: useProviderQueryMethod<TData>;\n request: Req<TData>;\n response: Res<TData | undefined>;\n};\n\nexport type UseProvider<TData> = UseProviderArrayReturn<TData> &\n UseProviderObjectReturn<TData>;\n"],"mappings":""}
@@ -3,3 +3,4 @@ export * from "./useCurrentTheme.js";
3
3
  export * from "./useCurrentApp.js";
4
4
  export * from "./useRecentApps.js";
5
5
  export * from "./useRouteRender.js";
6
+ export * from "./useProvider/useProvider.js";
@@ -0,0 +1,2 @@
1
+ import { FetchArgs } from "./useProviderTypes.js";
2
+ export default function fetch<TData>(provider: string, cache: boolean, args: FetchArgs): Promise<TData>;
@@ -0,0 +1,2 @@
1
+ import type { UseProviderArgs, UseProvider } from "./useProviderTypes.js";
2
+ export declare function useProvider<TData = any>(...args: UseProviderArgs): UseProvider<TData>;
@@ -0,0 +1,2 @@
1
+ import type { IncomingOptions, UseProviderArgsReturn } from "./useProviderTypes.js";
2
+ export default function useProviderArgs(providerOrParamsOrGlobalOptions?: string | IncomingOptions, globalOptionsOrDeps?: IncomingOptions | any[], deps?: any[]): UseProviderArgsReturn;
@@ -0,0 +1,4 @@
1
+ import type { UseProviderArgsDefaults } from "./useProviderTypes.js";
2
+ export declare const useProviderArgsDefaults: UseProviderArgsDefaults;
3
+ declare const _default: UseProviderArgsDefaults;
4
+ export default _default;
@@ -0,0 +1,60 @@
1
+ import type { HttpFetchError, HttpOptions, HttpParseError, HttpResponseError } from "@next-core/http";
2
+ import { fetchByProvider } from "@next-core/runtime";
3
+ export type UseProviderError = Error | typeof HttpFetchError | typeof HttpResponseError | typeof HttpParseError;
4
+ export type OnError = (error: UseProviderError) => void;
5
+ export interface UseProviderCustomOptions<TData = any> {
6
+ loading: boolean;
7
+ onError: OnError;
8
+ transform: (currData: TData, newData: TData) => any;
9
+ suspense: boolean;
10
+ data: TData;
11
+ cache: boolean;
12
+ }
13
+ export type UseProviderArgsReturn = {
14
+ provider: string;
15
+ customOptions: UseProviderCustomOptions;
16
+ dependencies?: any[];
17
+ requestInit: Partial<{
18
+ apiParams: typeof fetchByProvider;
19
+ args: unknown;
20
+ options: HttpOptions;
21
+ }>;
22
+ };
23
+ export interface UseProviderArgsDefaults {
24
+ provider?: string;
25
+ customOptions?: Partial<UseProviderCustomOptions>;
26
+ dependencies?: any[];
27
+ }
28
+ export interface ReqBase<TData> {
29
+ data: TData | undefined;
30
+ loading: boolean;
31
+ error: UseProviderError | undefined;
32
+ }
33
+ export type FetchArgs = Parameters<typeof fetchByProvider> | unknown[];
34
+ export type RequestInit = Partial<Omit<HttpOptions, "body" | "cache">> & {
35
+ args?: unknown[];
36
+ };
37
+ export type IncomingOptions = Partial<UseProviderCustomOptions> & RequestInit;
38
+ export type UseProviderArgs = [
39
+ (string | IncomingOptions)?,
40
+ (IncomingOptions | any[])?,
41
+ any[]?
42
+ ];
43
+ export type UseProviderOptionArgsDefaults = keyof UseProviderCustomOptions & keyof Omit<UseProviderArgsDefaults, "customOptions">;
44
+ export type useProviderQueryMethod<TData> = (providerOrArgs: string | unknown[], args?: unknown[]) => Promise<TData>;
45
+ export type Req<TData = any> = {
46
+ query: useProviderQueryMethod<TData>;
47
+ } & ReqBase<TData>;
48
+ export type Res<TData = any> = TData;
49
+ export type UseProviderArrayReturn<TData> = [
50
+ Req<TData>,
51
+ Res<TData | undefined>,
52
+ boolean,
53
+ UseProviderError | undefined
54
+ ];
55
+ export type UseProviderObjectReturn<TData> = ReqBase<TData> & {
56
+ query: useProviderQueryMethod<TData>;
57
+ request: Req<TData>;
58
+ response: Res<TData | undefined>;
59
+ };
60
+ export type UseProvider<TData> = UseProviderArrayReturn<TData> & UseProviderObjectReturn<TData>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-core/react-runtime",
3
- "version": "1.1.52",
3
+ "version": "1.2.1",
4
4
  "homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/react-runtime",
5
5
  "license": "GPL-3.0",
6
6
  "repository": {
@@ -37,14 +37,17 @@
37
37
  "test:ci": "cross-env NODE_ENV='test' CI=true test-next"
38
38
  },
39
39
  "dependencies": {
40
- "@next-core/runtime": "^1.31.1",
41
- "@next-core/types": "^1.8.0",
40
+ "@next-core/runtime": "^1.31.2",
41
+ "@next-core/types": "^1.8.1",
42
42
  "react": "0.0.0-experimental-ee8509801-20230117",
43
43
  "react-dom": "0.0.0-experimental-ee8509801-20230117"
44
44
  },
45
45
  "devDependencies": {
46
- "@next-core/build-next-libs": "^1.0.12",
47
- "@next-core/test-next": "^1.0.15"
46
+ "@next-core/build-next-libs": "^1.0.13",
47
+ "@next-core/test-next": "^1.0.16",
48
+ "@testing-library/react": "^14.2.1",
49
+ "@testing-library/react-hooks": "^8.0.1",
50
+ "jest-fetch-mock": "^3.0.3"
48
51
  },
49
- "gitHead": "0431d1699d2c31b4595e475e53b7e5535621960f"
52
+ "gitHead": "7794348c3503d686fbdd8595be9c51191aa2de5d"
50
53
  }