@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.
- package/dist/cjs/index.js +11 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/useProvider/fetch.js +48 -0
- package/dist/cjs/useProvider/fetch.js.map +1 -0
- package/dist/cjs/useProvider/useProvider.js +123 -0
- package/dist/cjs/useProvider/useProvider.js.map +1 -0
- package/dist/cjs/useProvider/useProviderArgs.js +70 -0
- package/dist/cjs/useProvider/useProviderArgs.js.map +1 -0
- package/dist/cjs/useProvider/useProviderArgsDefaults.js +31 -0
- package/dist/cjs/useProvider/useProviderArgsDefaults.js.map +1 -0
- package/dist/cjs/useProvider/useProviderTypes.js +6 -0
- package/dist/cjs/useProvider/useProviderTypes.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/useProvider/fetch.js +52 -0
- package/dist/esm/useProvider/fetch.js.map +1 -0
- package/dist/esm/useProvider/useProvider.js +130 -0
- package/dist/esm/useProvider/useProvider.js.map +1 -0
- package/dist/esm/useProvider/useProviderArgs.js +61 -0
- package/dist/esm/useProvider/useProviderArgs.js.map +1 -0
- package/dist/esm/useProvider/useProviderArgsDefaults.js +23 -0
- package/dist/esm/useProvider/useProviderArgsDefaults.js.map +1 -0
- package/dist/esm/useProvider/useProviderTypes.js +2 -0
- package/dist/esm/useProvider/useProviderTypes.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/useProvider/fetch.d.ts +2 -0
- package/dist/types/useProvider/useProvider.d.ts +2 -0
- package/dist/types/useProvider/useProviderArgs.d.ts +2 -0
- package/dist/types/useProvider/useProviderArgsDefaults.d.ts +4 -0
- package/dist/types/useProvider/useProviderTypes.d.ts +60 -0
- 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
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -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 @@
|
|
|
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
package/dist/esm/index.js.map
CHANGED
|
@@ -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 @@
|
|
|
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/types/index.d.ts
CHANGED
|
@@ -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
|
|
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.
|
|
41
|
-
"@next-core/types": "^1.8.
|
|
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.
|
|
47
|
-
"@next-core/test-next": "^1.0.
|
|
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": "
|
|
52
|
+
"gitHead": "7794348c3503d686fbdd8595be9c51191aa2de5d"
|
|
50
53
|
}
|