@next-core/react-runtime 1.5.1 → 1.5.3
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/esm/ReactUseBrick.js +30 -37
- package/dist/esm/ReactUseBrick.js.map +1 -1
- package/dist/esm/asyncWrapBrick.js +3 -10
- package/dist/esm/asyncWrapBrick.js.map +1 -1
- package/dist/esm/useCurrentTheme.js +2 -2
- package/dist/esm/useCurrentTheme.js.map +1 -1
- package/dist/esm/useNavConfig.js +2 -2
- package/dist/esm/useNavConfig.js.map +1 -1
- package/dist/esm/useProvider/fetch.js +18 -25
- package/dist/esm/useProvider/fetch.js.map +1 -1
- package/dist/esm/useProvider/useProvider.js +64 -78
- package/dist/esm/useProvider/useProvider.js.map +1 -1
- package/dist/esm/useProvider/useProviderArgs.js +27 -25
- package/dist/esm/useProvider/useProviderArgs.js.map +1 -1
- package/dist/esm/useProvider/useProviderArgsDefaults.js +9 -6
- package/dist/esm/useProvider/useProviderArgsDefaults.js.map +1 -1
- package/dist/esm/useRecentApps.js +2 -2
- package/dist/esm/useRecentApps.js.map +1 -1
- package/dist/esm/useRouteRender.js +2 -2
- package/dist/esm/useRouteRender.js.map +1 -1
- package/package.json +6 -6
|
@@ -1,54 +1,47 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
1
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
3
2
|
import { __secret_internals, handleHttpError, getV2RuntimeFromDll } from "@next-core/runtime";
|
|
4
3
|
// Note: always synchronize code in LegacyUseBrick:
|
|
5
4
|
// `bricks/v2-adapter/src/data-providers/legacy-brick-kit/getLegacyUseBrick.ts`
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
let ReactUseBrick = function ReactUseBrick(_ref) {
|
|
6
|
+
let {
|
|
8
7
|
useBrick,
|
|
9
8
|
data,
|
|
10
9
|
errorBoundary,
|
|
11
10
|
refCallback,
|
|
12
11
|
ignoredCallback
|
|
13
12
|
} = _ref;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
const [renderResult, setRenderResult] = useState(null);
|
|
14
|
+
const mountResult = useRef();
|
|
15
|
+
const [renderKey, setRenderKey] = useState();
|
|
16
|
+
const IdCounterRef = useRef(0);
|
|
17
|
+
const initialRenderId = useMemo(() => {
|
|
19
18
|
var _secret_internals$ge;
|
|
20
19
|
return (_secret_internals$ge = __secret_internals.getRenderId) === null || _secret_internals$ge === void 0 ? void 0 : _secret_internals$ge.call(__secret_internals);
|
|
21
20
|
}, []);
|
|
22
21
|
useEffect(() => {
|
|
23
|
-
|
|
24
|
-
function init() {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (isTheSameRender(initialRenderId)) {
|
|
38
|
-
// eslint-disable-next-line no-console
|
|
39
|
-
console.error("Render useBrick failed:", useBrick, "with data:", data);
|
|
40
|
-
handleHttpError(error);
|
|
41
|
-
}
|
|
22
|
+
let ignore = false;
|
|
23
|
+
async function init() {
|
|
24
|
+
try {
|
|
25
|
+
const newRender = await __secret_internals.renderUseBrick(useBrick, data, errorBoundary);
|
|
26
|
+
if (ignore) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
setRenderResult(newRender);
|
|
30
|
+
setRenderKey(getUniqueId(IdCounterRef));
|
|
31
|
+
} catch (error) {
|
|
32
|
+
if (isTheSameRender(initialRenderId)) {
|
|
33
|
+
// eslint-disable-next-line no-console
|
|
34
|
+
console.error("Render useBrick failed:", useBrick, "with data:", data);
|
|
35
|
+
handleHttpError(error);
|
|
42
36
|
}
|
|
43
|
-
}
|
|
44
|
-
return _init.apply(this, arguments);
|
|
37
|
+
}
|
|
45
38
|
}
|
|
46
39
|
init();
|
|
47
40
|
return () => {
|
|
48
41
|
ignore = true;
|
|
49
42
|
};
|
|
50
43
|
}, [data, useBrick, initialRenderId, errorBoundary]);
|
|
51
|
-
|
|
44
|
+
const _refCallback = useCallback(element => {
|
|
52
45
|
if (element) {
|
|
53
46
|
mountResult.current = __secret_internals.mountUseBrick(
|
|
54
47
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
@@ -65,14 +58,14 @@ var ReactUseBrick = function ReactUseBrick(_ref) {
|
|
|
65
58
|
return null;
|
|
66
59
|
// return <span>🌀 Loading...</span>;
|
|
67
60
|
}
|
|
68
|
-
|
|
61
|
+
const {
|
|
69
62
|
tagName
|
|
70
63
|
} = renderResult;
|
|
71
64
|
if (tagName === null) {
|
|
72
65
|
ignoredCallback === null || ignoredCallback === void 0 || ignoredCallback();
|
|
73
66
|
return null;
|
|
74
67
|
}
|
|
75
|
-
|
|
68
|
+
const WebComponent = tagName;
|
|
76
69
|
return /*#__PURE__*/React.createElement(WebComponent, {
|
|
77
70
|
key: renderKey,
|
|
78
71
|
ref: _refCallback
|
|
@@ -83,11 +76,11 @@ function getUniqueId(ref) {
|
|
|
83
76
|
}
|
|
84
77
|
function isTheSameRender(initialRenderId) {
|
|
85
78
|
var _secret_internals$ge2;
|
|
86
|
-
|
|
79
|
+
const newRenderId = (_secret_internals$ge2 = __secret_internals.getRenderId) === null || _secret_internals$ge2 === void 0 ? void 0 : _secret_internals$ge2.call(__secret_internals);
|
|
87
80
|
return !initialRenderId || !newRenderId || initialRenderId === newRenderId;
|
|
88
81
|
}
|
|
89
|
-
|
|
90
|
-
|
|
82
|
+
let ReactUseMultipleBricks = function ReactUseMultipleBricks(_ref2) {
|
|
83
|
+
let {
|
|
91
84
|
useBrick,
|
|
92
85
|
data,
|
|
93
86
|
errorBoundary
|
|
@@ -109,10 +102,10 @@ var ReactUseMultipleBricks = function ReactUseMultipleBricks(_ref2) {
|
|
|
109
102
|
|
|
110
103
|
// Make v3 bricks compatible with Brick Next v2.
|
|
111
104
|
// istanbul ignore next
|
|
112
|
-
|
|
105
|
+
const v2Kit = getV2RuntimeFromDll();
|
|
113
106
|
// istanbul ignore next
|
|
114
107
|
if (v2Kit) {
|
|
115
|
-
|
|
108
|
+
const {
|
|
116
109
|
SingleBrickAsComponentFactory,
|
|
117
110
|
BrickAsComponentFactory
|
|
118
111
|
} = v2Kit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactUseBrick.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","__secret_internals","handleHttpError","getV2RuntimeFromDll","ReactUseBrick","_ref","useBrick","data","errorBoundary","refCallback","ignoredCallback","renderResult","setRenderResult","mountResult","renderKey","setRenderKey","IdCounterRef","initialRenderId","_secret_internals$ge","getRenderId","call","ignore","init","
|
|
1
|
+
{"version":3,"file":"ReactUseBrick.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","__secret_internals","handleHttpError","getV2RuntimeFromDll","ReactUseBrick","_ref","useBrick","data","errorBoundary","refCallback","ignoredCallback","renderResult","setRenderResult","mountResult","renderKey","setRenderKey","IdCounterRef","initialRenderId","_secret_internals$ge","getRenderId","call","ignore","init","newRender","renderUseBrick","getUniqueId","error","isTheSameRender","console","_refCallback","element","current","mountUseBrick","unmountUseBrick","undefined","tagName","WebComponent","createElement","key","ref","_secret_internals$ge2","newRenderId","ReactUseMultipleBricks","_ref2","Array","isArray","Fragment","map","item","index","v2Kit","SingleBrickAsComponentFactory","BrickAsComponentFactory"],"sources":["../../src/ReactUseBrick.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { UseSingleBrickConf } from \"@next-core/types\";\nimport {\n __secret_internals,\n handleHttpError,\n getV2RuntimeFromDll,\n} from \"@next-core/runtime\";\n\nexport type { UseSingleBrickConf };\n\nexport interface ReactUseBrickProps {\n useBrick: UseSingleBrickConf;\n data?: unknown;\n errorBoundary?: boolean;\n refCallback?: (element: HTMLElement | null) => void;\n ignoredCallback?: () => void;\n}\n\n// Note: always synchronize code in LegacyUseBrick:\n// `bricks/v2-adapter/src/data-providers/legacy-brick-kit/getLegacyUseBrick.ts`\nlet ReactUseBrick = function ReactUseBrick({\n useBrick,\n data,\n errorBoundary,\n refCallback,\n ignoredCallback,\n}: ReactUseBrickProps): React.ReactElement | null {\n const [renderResult, setRenderResult] =\n useState<__secret_internals.RenderUseBrickResult | null>(null);\n const mountResult = useRef<__secret_internals.MountUseBrickResult>();\n const [renderKey, setRenderKey] = useState<number>();\n const IdCounterRef = useRef(0);\n const initialRenderId = useMemo(() => __secret_internals.getRenderId?.(), []);\n\n useEffect(() => {\n let ignore = false;\n async function init() {\n try {\n const newRender = await __secret_internals.renderUseBrick(\n useBrick,\n data,\n errorBoundary\n );\n if (ignore) {\n return;\n }\n setRenderResult(newRender);\n setRenderKey(getUniqueId(IdCounterRef));\n } catch (error) {\n if (isTheSameRender(initialRenderId)) {\n // eslint-disable-next-line no-console\n console.error(\n \"Render useBrick failed:\",\n useBrick,\n \"with data:\",\n data\n );\n handleHttpError(error);\n }\n }\n }\n init();\n return () => {\n ignore = true;\n };\n }, [data, useBrick, initialRenderId, errorBoundary]);\n\n const _refCallback = useCallback(\n (element: HTMLElement | null) => {\n if (element) {\n mountResult.current = __secret_internals.mountUseBrick(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n renderResult!,\n element\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n __secret_internals.unmountUseBrick(renderResult!, mountResult.current!);\n mountResult.current = undefined;\n }\n refCallback?.(element);\n },\n [refCallback, renderResult]\n );\n\n if (!renderResult) {\n // Fallback when loading/\n return null;\n // return <span>🌀 Loading...</span>;\n }\n\n const { tagName } = renderResult;\n if (tagName === null) {\n ignoredCallback?.();\n return null;\n }\n\n const WebComponent = tagName as any;\n return <WebComponent key={renderKey} ref={_refCallback} />;\n};\n\nfunction getUniqueId(ref: MutableRefObject<number>): number {\n return ++ref.current;\n}\n\nfunction isTheSameRender(initialRenderId: string | undefined): boolean {\n const newRenderId = __secret_internals.getRenderId?.();\n return !initialRenderId || !newRenderId || initialRenderId === newRenderId;\n}\n\nexport interface ReactUseMultipleBricksProps {\n useBrick: UseSingleBrickConf | UseSingleBrickConf[];\n data?: unknown;\n errorBoundary?: boolean;\n}\n\nlet ReactUseMultipleBricks = function ReactUseMultipleBricks({\n useBrick,\n data,\n errorBoundary,\n}: ReactUseMultipleBricksProps): React.ReactElement | null {\n if (Array.isArray(useBrick)) {\n return (\n <>\n {useBrick.map((item, index) => (\n <ReactUseBrick\n key={index}\n useBrick={item}\n data={data}\n errorBoundary={errorBoundary}\n />\n ))}\n </>\n );\n }\n return (\n <ReactUseBrick\n useBrick={useBrick}\n data={data}\n errorBoundary={errorBoundary}\n />\n );\n};\n\n// Make v3 bricks compatible with Brick Next v2.\n// istanbul ignore next\nconst v2Kit = getV2RuntimeFromDll();\n// istanbul ignore next\nif (v2Kit) {\n const { SingleBrickAsComponentFactory, BrickAsComponentFactory } = v2Kit;\n if (SingleBrickAsComponentFactory && BrickAsComponentFactory) {\n ReactUseBrick = SingleBrickAsComponentFactory(React);\n ReactUseMultipleBricks = BrickAsComponentFactory(React);\n }\n}\n\nexport { ReactUseBrick, ReactUseMultipleBricks };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
1
|
import { __secret_internals } from "@next-core/runtime";
|
|
3
2
|
import { wrapBrick } from "@next-core/react-element";
|
|
4
|
-
export function asyncWrapBrick(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
function _asyncWrapBrick() {
|
|
8
|
-
_asyncWrapBrick = _asyncToGenerator(function* (brickName, eventsMapping) {
|
|
9
|
-
yield __secret_internals.loadBricks([brickName]);
|
|
10
|
-
return wrapBrick(brickName, eventsMapping);
|
|
11
|
-
});
|
|
12
|
-
return _asyncWrapBrick.apply(this, arguments);
|
|
3
|
+
export async function asyncWrapBrick(brickName, eventsMapping) {
|
|
4
|
+
await __secret_internals.loadBricks([brickName]);
|
|
5
|
+
return wrapBrick(brickName, eventsMapping);
|
|
13
6
|
}
|
|
14
7
|
//# sourceMappingURL=asyncWrapBrick.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asyncWrapBrick.js","names":["__secret_internals","wrapBrick","asyncWrapBrick","
|
|
1
|
+
{"version":3,"file":"asyncWrapBrick.js","names":["__secret_internals","wrapBrick","asyncWrapBrick","brickName","eventsMapping","loadBricks"],"sources":["../../src/asyncWrapBrick.ts"],"sourcesContent":["import { __secret_internals } from \"@next-core/runtime\";\nimport {\n wrapBrick,\n type WrappedBrick,\n type WrappedBrickWithEventsMap,\n} from \"@next-core/react-element\";\n\nexport async function asyncWrapBrick<\n T extends HTMLElement,\n P,\n E,\n M extends object,\n>(\n BrickName: string,\n eventsMapping: M\n): Promise<WrappedBrickWithEventsMap<T, P, E, M>>;\n\nexport async function asyncWrapBrick<T extends HTMLElement, P>(\n BrickName: string\n): Promise<WrappedBrick<T, P>>;\n\nexport async function asyncWrapBrick<\n T extends HTMLElement,\n P,\n E,\n M extends object,\n>(brickName: string, eventsMapping?: M) {\n await __secret_internals.loadBricks([brickName]);\n return wrapBrick<T, P, E, M>(brickName, eventsMapping as M);\n}\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,oBAAoB;AACvD,SACEC,SAAS,QAGJ,0BAA0B;AAgBjC,OAAO,eAAeC,cAAcA,CAKlCC,SAAiB,EAAEC,aAAiB,EAAE;EACtC,MAAMJ,kBAAkB,CAACK,UAAU,CAAC,CAACF,SAAS,CAAC,CAAC;EAChD,OAAOF,SAAS,CAAaE,SAAS,EAAEC,aAAkB,CAAC;AAC7D","ignoreList":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { useEffect, useState } from "react";
|
|
2
2
|
import { getCurrentTheme } from "@next-core/runtime";
|
|
3
3
|
export function useCurrentTheme() {
|
|
4
|
-
|
|
4
|
+
const [currentTheme, setCurrentTheme] = useState(getCurrentTheme);
|
|
5
5
|
useEffect(() => {
|
|
6
|
-
|
|
6
|
+
const listenToThemeChange = event => {
|
|
7
7
|
setCurrentTheme(event.detail);
|
|
8
8
|
};
|
|
9
9
|
window.addEventListener("theme.change", listenToThemeChange);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCurrentTheme.js","names":["useEffect","useState","getCurrentTheme","useCurrentTheme","currentTheme","setCurrentTheme","listenToThemeChange","event","detail","window","addEventListener","removeEventListener"],"sources":["../../src/useCurrentTheme.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { getCurrentTheme } from \"@next-core/runtime\";\nimport type { SiteTheme } from \"@next-core/types\";\n\nexport function useCurrentTheme(): SiteTheme {\n const [currentTheme, setCurrentTheme] = useState(getCurrentTheme);\n\n useEffect(() => {\n const listenToThemeChange = (event: Event): void => {\n setCurrentTheme((event as CustomEvent<SiteTheme>).detail);\n };\n window.addEventListener(\"theme.change\", listenToThemeChange);\n return () => {\n window.removeEventListener(\"theme.change\", listenToThemeChange);\n };\n }, []);\n\n return currentTheme;\n}\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,eAAe,QAAQ,oBAAoB;AAGpD,OAAO,SAASC,eAAeA,CAAA,EAAc;EAC3C,
|
|
1
|
+
{"version":3,"file":"useCurrentTheme.js","names":["useEffect","useState","getCurrentTheme","useCurrentTheme","currentTheme","setCurrentTheme","listenToThemeChange","event","detail","window","addEventListener","removeEventListener"],"sources":["../../src/useCurrentTheme.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { getCurrentTheme } from \"@next-core/runtime\";\nimport type { SiteTheme } from \"@next-core/types\";\n\nexport function useCurrentTheme(): SiteTheme {\n const [currentTheme, setCurrentTheme] = useState(getCurrentTheme);\n\n useEffect(() => {\n const listenToThemeChange = (event: Event): void => {\n setCurrentTheme((event as CustomEvent<SiteTheme>).detail);\n };\n window.addEventListener(\"theme.change\", listenToThemeChange);\n return () => {\n window.removeEventListener(\"theme.change\", listenToThemeChange);\n };\n }, []);\n\n return currentTheme;\n}\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,eAAe,QAAQ,oBAAoB;AAGpD,OAAO,SAASC,eAAeA,CAAA,EAAc;EAC3C,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGJ,QAAQ,CAACC,eAAe,CAAC;EAEjEF,SAAS,CAAC,MAAM;IACd,MAAMM,mBAAmB,GAAIC,KAAY,IAAW;MAClDF,eAAe,CAAEE,KAAK,CAA4BC,MAAM,CAAC;IAC3D,CAAC;IACDC,MAAM,CAACC,gBAAgB,CAAC,cAAc,EAAEJ,mBAAmB,CAAC;IAC5D,OAAO,MAAM;MACXG,MAAM,CAACE,mBAAmB,CAAC,cAAc,EAAEL,mBAAmB,CAAC;IACjE,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOF,YAAY;AACrB","ignoreList":[]}
|
package/dist/esm/useNavConfig.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { useEffect, useState } from "react";
|
|
2
2
|
import { getRuntime } from "@next-core/runtime";
|
|
3
3
|
export function useNavConfig() {
|
|
4
|
-
|
|
4
|
+
const [navConfig, setNavConfig] = useState(() => getRuntime().getNavConfig());
|
|
5
5
|
useEffect(() => {
|
|
6
|
-
|
|
6
|
+
const listener = event => {
|
|
7
7
|
setNavConfig(event.detail);
|
|
8
8
|
};
|
|
9
9
|
window.addEventListener("navConfig.change", listener);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavConfig.js","names":["useEffect","useState","getRuntime","useNavConfig","navConfig","setNavConfig","getNavConfig","listener","event","detail","window","addEventListener","removeEventListener"],"sources":["../../src/useNavConfig.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport type { BreadcrumbItemConf } from \"@next-core/types\";\n\nexport interface NavConfig {\n breadcrumb?: BreadcrumbItemConf[];\n}\n\nexport function useNavConfig(): NavConfig | undefined {\n const [navConfig, setNavConfig] = useState<NavConfig | undefined>(() =>\n getRuntime().getNavConfig()\n );\n\n useEffect(() => {\n const listener = ((event: CustomEvent<NavConfig | undefined>) => {\n setNavConfig(event.detail);\n }) as EventListener;\n window.addEventListener(\"navConfig.change\", listener);\n return () => window.removeEventListener(\"navConfig.change\", listener);\n }, []);\n\n return navConfig;\n}\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,UAAU,QAAQ,oBAAoB;AAO/C,OAAO,SAASC,YAAYA,CAAA,EAA0B;EACpD,
|
|
1
|
+
{"version":3,"file":"useNavConfig.js","names":["useEffect","useState","getRuntime","useNavConfig","navConfig","setNavConfig","getNavConfig","listener","event","detail","window","addEventListener","removeEventListener"],"sources":["../../src/useNavConfig.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport type { BreadcrumbItemConf } from \"@next-core/types\";\n\nexport interface NavConfig {\n breadcrumb?: BreadcrumbItemConf[];\n}\n\nexport function useNavConfig(): NavConfig | undefined {\n const [navConfig, setNavConfig] = useState<NavConfig | undefined>(() =>\n getRuntime().getNavConfig()\n );\n\n useEffect(() => {\n const listener = ((event: CustomEvent<NavConfig | undefined>) => {\n setNavConfig(event.detail);\n }) as EventListener;\n window.addEventListener(\"navConfig.change\", listener);\n return () => window.removeEventListener(\"navConfig.change\", listener);\n }, []);\n\n return navConfig;\n}\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,UAAU,QAAQ,oBAAoB;AAO/C,OAAO,SAASC,YAAYA,CAAA,EAA0B;EACpD,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGJ,QAAQ,CAAwB,MAChEC,UAAU,CAAC,CAAC,CAACI,YAAY,CAAC,CAC5B,CAAC;EAEDN,SAAS,CAAC,MAAM;IACd,MAAMO,QAAQ,GAAKC,KAAyC,IAAK;MAC/DH,YAAY,CAACG,KAAK,CAACC,MAAM,CAAC;IAC5B,CAAmB;IACnBC,MAAM,CAACC,gBAAgB,CAAC,kBAAkB,EAAEJ,QAAQ,CAAC;IACrD,OAAO,MAAMG,MAAM,CAACE,mBAAmB,CAAC,kBAAkB,EAAEL,QAAQ,CAAC;EACvE,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOH,SAAS;AAClB","ignoreList":[]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
1
|
import { fetchByProvider } from "@next-core/runtime";
|
|
3
|
-
|
|
2
|
+
const cacheMap = new Map();
|
|
4
3
|
function isObj(v) {
|
|
5
4
|
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
6
5
|
}
|
|
@@ -8,14 +7,14 @@ function isString(v) {
|
|
|
8
7
|
return typeof v === "string";
|
|
9
8
|
}
|
|
10
9
|
function buildSortedCacheKey(provider) {
|
|
11
|
-
|
|
10
|
+
const sortObj = obj => Object.keys(obj).sort().map(k => ({
|
|
12
11
|
[k]: obj[k]
|
|
13
12
|
}));
|
|
14
13
|
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
15
14
|
args[_key - 1] = arguments[_key];
|
|
16
15
|
}
|
|
17
16
|
try {
|
|
18
|
-
|
|
17
|
+
const sortedArgs = isObj(args) ? sortObj(args) : args.map(arg => isString(arg) ? arg : sortObj(arg));
|
|
19
18
|
return JSON.stringify({
|
|
20
19
|
provider,
|
|
21
20
|
args: sortedArgs
|
|
@@ -27,26 +26,20 @@ function buildSortedCacheKey(provider) {
|
|
|
27
26
|
});
|
|
28
27
|
}
|
|
29
28
|
}
|
|
30
|
-
export default function fetch(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
})();
|
|
46
|
-
cache && cacheMap.set(cacheKey, promise);
|
|
47
|
-
}
|
|
48
|
-
return promise;
|
|
49
|
-
});
|
|
50
|
-
return _fetch.apply(this, arguments);
|
|
29
|
+
export default async function fetch(provider, cache, args) {
|
|
30
|
+
let promise;
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
32
|
+
// @ts-ignore
|
|
33
|
+
const cacheKey = buildSortedCacheKey(provider, ...args);
|
|
34
|
+
!cache && cacheMap.has(cacheKey) && cacheMap.delete(cacheKey);
|
|
35
|
+
if (cacheMap.has(cacheKey)) {
|
|
36
|
+
promise = cacheMap.get(cacheKey);
|
|
37
|
+
} else {
|
|
38
|
+
promise = (() => {
|
|
39
|
+
return fetchByProvider(provider, args);
|
|
40
|
+
})();
|
|
41
|
+
cache && cacheMap.set(cacheKey, promise);
|
|
42
|
+
}
|
|
43
|
+
return promise;
|
|
51
44
|
}
|
|
52
45
|
//# sourceMappingURL=fetch.js.map
|
|
@@ -1 +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","
|
|
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","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,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,EAAwB;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;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,MAAMC,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,eAAe,eAAeO,KAAKA,CACjClB,QAAgB,EAChBmB,KAAc,EACdR,IAAe,EACC;EAChB,IAAIS,OAAuB;EAC3B;EACA;EACA,MAAMC,QAAQ,GAAGtB,mBAAmB,CAACC,QAAQ,EAAE,GAAGW,IAAI,CAAC;EACvD,CAACQ,KAAK,IAAI3B,QAAQ,CAAC8B,GAAG,CAACD,QAAQ,CAAC,IAAI7B,QAAQ,CAAC+B,MAAM,CAACF,QAAQ,CAAC;EAE7D,IAAI7B,QAAQ,CAAC8B,GAAG,CAACD,QAAQ,CAAC,EAAE;IAC1BD,OAAO,GAAG5B,QAAQ,CAACgC,GAAG,CAACH,QAAQ,CAAmB;EACpD,CAAC,MAAM;IACLD,OAAO,GAAG,CAAC,MAAM;MACf,OAAO7B,eAAe,CAACS,QAAQ,EAAEW,IAAI,CAAC;IACxC,CAAC,EAAE,CAAC;IAEJQ,KAAK,IAAI3B,QAAQ,CAACiC,GAAG,CAACJ,QAAQ,EAAED,OAAO,CAAC;EAC1C;EAEA,OAAOA,OAAO;AAChB","ignoreList":[]}
|
|
@@ -1,87 +1,73 @@
|
|
|
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
1
|
import { useCallback, useEffect, useMemo, useReducer, useRef, useState } from "react";
|
|
6
2
|
import useProviderArgs from "./useProviderArgs.js";
|
|
7
3
|
import { isObject, isString } from "lodash";
|
|
8
4
|
import fetch from "./fetch.js";
|
|
9
5
|
export function useProvider() {
|
|
10
|
-
|
|
6
|
+
const {
|
|
11
7
|
provider,
|
|
12
8
|
customOptions,
|
|
13
9
|
dependencies,
|
|
14
10
|
requestInit
|
|
15
11
|
} = useProviderArgs(...arguments);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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({
|
|
12
|
+
const {
|
|
13
|
+
onError,
|
|
14
|
+
transform,
|
|
15
|
+
suspense,
|
|
16
|
+
cache,
|
|
17
|
+
...defaults
|
|
18
|
+
} = customOptions;
|
|
19
|
+
const [loading, setLoading] = useState(defaults.loading);
|
|
20
|
+
const suspenseStatus = useRef("pending");
|
|
21
|
+
const suspender = useRef();
|
|
22
|
+
const mounted = useRef(false);
|
|
23
|
+
const error = useRef();
|
|
24
|
+
const response = useRef();
|
|
25
|
+
const data = useRef(defaults.data);
|
|
26
|
+
const forceUpdate = useReducer(() => ({}), [])[1];
|
|
27
|
+
const doFetch = useCallback(async (provider, providerArgs) => {
|
|
28
|
+
try {
|
|
29
|
+
error.current = undefined;
|
|
30
|
+
if (!suspense) setLoading(true);
|
|
31
|
+
const newRes = await fetch(provider, cache, providerArgs);
|
|
32
|
+
response.current = newRes;
|
|
33
|
+
data.current = transform(data.current, newRes);
|
|
34
|
+
} catch (e) {
|
|
35
|
+
error.current = e;
|
|
36
|
+
data.current = undefined;
|
|
37
|
+
}
|
|
38
|
+
if (!suspense) setLoading(false);
|
|
39
|
+
if (error.current) onError(error.current);
|
|
40
|
+
return data.current;
|
|
41
|
+
}, [provider, customOptions, dependencies, requestInit, suspense, transform, defaults.data, onError, cache]);
|
|
42
|
+
const makeFetch = useCallback(async (providerOrBody, args) => {
|
|
43
|
+
let providerStr = provider;
|
|
44
|
+
let providerArgs = [];
|
|
45
|
+
if (isString(providerOrBody)) {
|
|
46
|
+
providerStr = providerOrBody;
|
|
47
|
+
}
|
|
48
|
+
if (isObject(providerOrBody)) {
|
|
49
|
+
providerArgs = providerOrBody;
|
|
50
|
+
} else if (isObject(args)) {
|
|
51
|
+
providerArgs = args;
|
|
52
|
+
}
|
|
53
|
+
if (suspense) {
|
|
54
|
+
return (async () => {
|
|
55
|
+
suspender.current = doFetch(providerStr, providerArgs).then(newData => {
|
|
56
|
+
suspenseStatus.current = "success";
|
|
57
|
+
return newData;
|
|
58
|
+
}, error => {
|
|
59
|
+
/* istanbul ignore next */
|
|
60
|
+
suspenseStatus.current = "error";
|
|
61
|
+
error.current = error;
|
|
62
|
+
return error;
|
|
63
|
+
});
|
|
64
|
+
forceUpdate();
|
|
65
|
+
return await suspender.current;
|
|
66
|
+
})();
|
|
67
|
+
}
|
|
68
|
+
return doFetch(providerStr, providerArgs);
|
|
69
|
+
}, [doFetch]);
|
|
70
|
+
const request = useMemo(() => Object.defineProperties({
|
|
85
71
|
query: makeFetch
|
|
86
72
|
}, {
|
|
87
73
|
loading: {
|
|
@@ -118,13 +104,13 @@ export function useProvider() {
|
|
|
118
104
|
throw error.current;
|
|
119
105
|
}
|
|
120
106
|
}
|
|
121
|
-
return Object.assign([request, response.current, loading, error.current],
|
|
122
|
-
request
|
|
123
|
-
|
|
107
|
+
return Object.assign([request, response.current, loading, error.current], {
|
|
108
|
+
request,
|
|
109
|
+
...request,
|
|
124
110
|
response: response.current,
|
|
125
111
|
data: data.current,
|
|
126
112
|
loading,
|
|
127
113
|
error: error.current
|
|
128
|
-
})
|
|
114
|
+
});
|
|
129
115
|
}
|
|
130
116
|
//# sourceMappingURL=useProvider.js.map
|
|
@@ -1 +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","
|
|
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","loading","setLoading","suspenseStatus","suspender","mounted","error","response","data","forceUpdate","doFetch","providerArgs","current","undefined","newRes","e","makeFetch","providerOrBody","args","providerStr","then","newData","request","Object","defineProperties","query","get","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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","ignoreList":[]}
|
|
@@ -1,55 +1,57 @@
|
|
|
1
|
-
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
2
|
-
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
3
|
-
var _excluded = ["args"];
|
|
4
1
|
import { useMemo } from "react";
|
|
5
2
|
import defaults, { useProviderArgsDefaults } from "./useProviderArgsDefaults.js";
|
|
6
3
|
import { isObject } from "lodash";
|
|
7
4
|
export default function useProviderArgs(providerOrParamsOrGlobalOptions, globalOptionsOrDeps, deps) {
|
|
8
|
-
|
|
5
|
+
const provider = useMemo(() => {
|
|
9
6
|
if (typeof providerOrParamsOrGlobalOptions === "string") {
|
|
10
7
|
return providerOrParamsOrGlobalOptions;
|
|
11
8
|
}
|
|
12
9
|
return useProviderArgsDefaults.provider;
|
|
13
10
|
}, [providerOrParamsOrGlobalOptions, globalOptionsOrDeps]);
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const options = useMemo(() => {
|
|
12
|
+
let localOptions = {};
|
|
16
13
|
if (isObject(providerOrParamsOrGlobalOptions)) {
|
|
17
14
|
localOptions = providerOrParamsOrGlobalOptions;
|
|
18
15
|
} else if (isObject(globalOptionsOrDeps)) {
|
|
19
16
|
localOptions = globalOptionsOrDeps;
|
|
20
17
|
}
|
|
21
|
-
return
|
|
18
|
+
return {
|
|
19
|
+
...defaults,
|
|
20
|
+
...localOptions
|
|
21
|
+
};
|
|
22
22
|
}, [providerOrParamsOrGlobalOptions, globalOptionsOrDeps]);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
restOptions = _objectWithoutProperties(_reduce, _excluded);
|
|
23
|
+
const requestInit = useMemo(() => {
|
|
24
|
+
const customOptionKeys = [...Object.keys(useProviderArgsDefaults), ...Object.keys(useProviderArgsDefaults.customOptions)];
|
|
25
|
+
const {
|
|
26
|
+
args = null,
|
|
27
|
+
...restOptions
|
|
28
|
+
} = Object.keys(options).reduce((acc, key) => {
|
|
29
|
+
if (!customOptionKeys.includes(key)) acc[key] = options[key];
|
|
30
|
+
return acc;
|
|
31
|
+
}, {});
|
|
33
32
|
return {
|
|
34
|
-
options:
|
|
33
|
+
options: {
|
|
34
|
+
...restOptions
|
|
35
|
+
},
|
|
35
36
|
args
|
|
36
37
|
};
|
|
37
38
|
}, [options]);
|
|
38
|
-
|
|
39
|
+
const dependencies = useMemo(() => {
|
|
39
40
|
if (Array.isArray(globalOptionsOrDeps)) return globalOptionsOrDeps;
|
|
40
41
|
if (Array.isArray(deps)) return deps;
|
|
41
42
|
return defaults.dependencies;
|
|
42
43
|
}, [globalOptionsOrDeps, deps]);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
const loading = options.loading || Array.isArray(dependencies);
|
|
45
|
+
const customOptions = useMemo(() => {
|
|
46
|
+
const customOptionKeys = Object.keys(useProviderArgsDefaults.customOptions);
|
|
47
|
+
const customOptions = customOptionKeys.reduce((opts, key) => {
|
|
47
48
|
opts[key] = options[key];
|
|
48
49
|
return opts;
|
|
49
50
|
}, {});
|
|
50
|
-
return
|
|
51
|
+
return {
|
|
52
|
+
...customOptions,
|
|
51
53
|
loading
|
|
52
|
-
}
|
|
54
|
+
};
|
|
53
55
|
}, [options]);
|
|
54
56
|
return {
|
|
55
57
|
provider,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProviderArgs.js","names":["useMemo","defaults","useProviderArgsDefaults","isObject","useProviderArgs","providerOrParamsOrGlobalOptions","globalOptionsOrDeps","deps","provider","options","localOptions","
|
|
1
|
+
{"version":3,"file":"useProviderArgs.js","names":["useMemo","defaults","useProviderArgsDefaults","isObject","useProviderArgs","providerOrParamsOrGlobalOptions","globalOptionsOrDeps","deps","provider","options","localOptions","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":"AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,OAAOC,QAAQ,IACbC,uBAAuB,QAClB,8BAA8B;AACrC,SAASC,QAAQ,QAAQ,QAAQ;AASjC,eAAe,SAASC,eAAeA,CACrCC,+BAA0D,EAC1DC,mBAA6C,EAC7CC,IAAY,EACW;EACvB,MAAMC,QAAQ,GAAGR,OAAO,CAAC,MAAM;IAC7B,IAAI,OAAOK,+BAA+B,KAAK,QAAQ,EAAE;MACvD,OAAOA,+BAA+B;IACxC;IAEA,OAAOH,uBAAuB,CAACM,QAAQ;EACzC,CAAC,EAAE,CAACH,+BAA+B,EAAEC,mBAAmB,CAAC,CAAC;EAE1D,MAAMG,OAAO,GAAGT,OAAO,CAAC,MAAM;IAC5B,IAAIU,YAAY,GAAG,CAAC,CAAC;IACrB,IAAIP,QAAQ,CAACE,+BAA+B,CAAC,EAAE;MAC7CK,YAAY,GAAGL,+BAA+B;IAChD,CAAC,MAAM,IAAIF,QAAQ,CAACG,mBAAmB,CAAC,EAAE;MACxCI,YAAY,GAAGJ,mBAAmB;IACpC;IACA,OAAO;MACL,GAAGL,QAAQ;MACX,GAAGS;IACL,CAAC;EACH,CAAC,EAAE,CAACL,+BAA+B,EAAEC,mBAAmB,CAAC,CAAC;EAE1D,MAAMK,WAAW,GAAGX,OAAO,CAAC,MAGvB;IACH,MAAMY,gBAAgB,GAAG,CACvB,GAAGC,MAAM,CAACC,IAAI,CAACZ,uBAAuB,CAAC,EACvC,GAAGW,MAAM,CAACC,IAAI,CACZZ,uBAAuB,CAACa,aAG1B,CAAC,CACsC;IAEzC,MAAM;MAAEC,IAAI,GAAG,IAAI;MAAE,GAAGC;IAAY,CAAC,GACnCJ,MAAM,CAACC,IAAI,CAACL,OAAO,CAAC,CACpBS,MAAM,CACN,CAACC,GAAwB,EAAEC,GAAkC,KAAK;MAChE,IAAI,CAACR,gBAAgB,CAACS,QAAQ,CAACD,GAAG,CAAC,EAAED,GAAG,CAACC,GAAG,CAAC,GAAIX,OAAO,CAAWW,GAAG,CAAC;MACvE,OAAOD,GAAG;IACZ,CAAC,EACD,CAAC,CACH,CAAC;IAED,OAAO;MAAEV,OAAO,EAAE;QAAE,GAAGQ;MAAY,CAAC;MAAED;IAAK,CAAC;EAC9C,CAAC,EAAE,CAACP,OAAO,CAAC,CAAC;EAEb,MAAMa,YAAY,GAAGtB,OAAO,CAAC,MAAyB;IACpD,IAAIuB,KAAK,CAACC,OAAO,CAAClB,mBAAmB,CAAC,EAAE,OAAOA,mBAAmB;IAClE,IAAIiB,KAAK,CAACC,OAAO,CAACjB,IAAI,CAAC,EAAE,OAAOA,IAAI;IACpC,OAAON,QAAQ,CAACqB,YAAY;EAC9B,CAAC,EAAE,CAAChB,mBAAmB,EAAEC,IAAI,CAAC,CAAC;EAE/B,MAAMkB,OAAO,GAAGhB,OAAO,CAACgB,OAAO,IAAIF,KAAK,CAACC,OAAO,CAACF,YAAY,CAAC;EAE9D,MAAMP,aAAa,GAAGf,OAAO,CAAC,MAAM;IAClC,MAAMY,gBAAgB,GAAGC,MAAM,CAACC,IAAI,CAClCZ,uBAAuB,CAACa,aAG1B,CAAuC;IAEvC,MAAMA,aAAa,GAAGH,gBAAgB,CAACM,MAAM,CAAC,CAACQ,IAAI,EAAEN,GAAG,KAAK;MAC1DM,IAAI,CAASN,GAAG,CAAC,GAAGX,OAAO,CAACW,GAAG,CAAC;MACjC,OAAOM,IAAI;IACb,CAAC,EAAE,CAAC,CAA6B,CAAC;IAElC,OAAO;MAAE,GAAGX,aAAa;MAAEU;IAAQ,CAAC;EACtC,CAAC,EAAE,CAAChB,OAAO,CAAC,CAAC;EAEb,OAAO;IACLD,QAAQ;IACRO,aAAa;IACbJ,WAAW;IACXW;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export var useProviderArgsDefaults = {
|
|
1
|
+
export const useProviderArgsDefaults = {
|
|
3
2
|
provider: "",
|
|
4
3
|
customOptions: {
|
|
5
4
|
onError: () => {
|
|
@@ -14,10 +13,14 @@ export var useProviderArgsDefaults = {
|
|
|
14
13
|
dependencies: undefined
|
|
15
14
|
};
|
|
16
15
|
export default Object.entries(useProviderArgsDefaults).reduce((acc, _ref) => {
|
|
17
|
-
|
|
18
|
-
if (Object.prototype.toString.call(value) === "[object Object]") return
|
|
19
|
-
|
|
16
|
+
let [key, value] = _ref;
|
|
17
|
+
if (Object.prototype.toString.call(value) === "[object Object]") return {
|
|
18
|
+
...acc,
|
|
19
|
+
...value
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
...acc,
|
|
20
23
|
[key]: value
|
|
21
|
-
}
|
|
24
|
+
};
|
|
22
25
|
}, {});
|
|
23
26
|
//# sourceMappingURL=useProviderArgsDefaults.js.map
|
|
@@ -1 +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"
|
|
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"],"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,MAAMA,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,OAAO;IAAE,GAAGH,GAAG;IAAE,GAAGG;EAAM,CAAC;EAC7B,OAAO;IAAE,GAAGH,GAAG;IAAE,CAACE,GAAG,GAAGC;EAAM,CAAC;AACjC,CAAC,EACD,CAAC,CACH,CAAC","ignoreList":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { getRuntime } from "@next-core/runtime";
|
|
3
3
|
export function useRecentApps() {
|
|
4
|
-
|
|
4
|
+
const [recentApps, setRecentApps] = React.useState(() => getRuntime().getRecentApps());
|
|
5
5
|
React.useEffect(() => {
|
|
6
|
-
|
|
6
|
+
const listener = event => {
|
|
7
7
|
setRecentApps(event.detail);
|
|
8
8
|
};
|
|
9
9
|
window.addEventListener("app.change", listener);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRecentApps.js","names":["React","getRuntime","useRecentApps","recentApps","setRecentApps","useState","getRecentApps","useEffect","listener","event","detail","window","addEventListener","removeEventListener"],"sources":["../../src/useRecentApps.ts"],"sourcesContent":["import React from \"react\";\nimport { MicroApp } from \"@next-core/types\";\nimport { getRuntime } from \"@next-core/runtime\";\n\nexport interface RecentApps {\n currentApp?: MicroApp;\n previousApp?: MicroApp;\n}\n\nexport function useRecentApps(): RecentApps {\n const [recentApps, setRecentApps] = React.useState<RecentApps>(() =>\n getRuntime().getRecentApps()\n );\n\n React.useEffect(() => {\n const listener = ((event: CustomEvent<RecentApps>) => {\n setRecentApps(event.detail);\n }) as EventListener;\n window.addEventListener(\"app.change\", listener);\n return () => window.removeEventListener(\"app.change\", listener);\n }, []);\n\n return recentApps;\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,UAAU,QAAQ,oBAAoB;AAO/C,OAAO,SAASC,aAAaA,CAAA,EAAe;EAC1C,
|
|
1
|
+
{"version":3,"file":"useRecentApps.js","names":["React","getRuntime","useRecentApps","recentApps","setRecentApps","useState","getRecentApps","useEffect","listener","event","detail","window","addEventListener","removeEventListener"],"sources":["../../src/useRecentApps.ts"],"sourcesContent":["import React from \"react\";\nimport { MicroApp } from \"@next-core/types\";\nimport { getRuntime } from \"@next-core/runtime\";\n\nexport interface RecentApps {\n currentApp?: MicroApp;\n previousApp?: MicroApp;\n}\n\nexport function useRecentApps(): RecentApps {\n const [recentApps, setRecentApps] = React.useState<RecentApps>(() =>\n getRuntime().getRecentApps()\n );\n\n React.useEffect(() => {\n const listener = ((event: CustomEvent<RecentApps>) => {\n setRecentApps(event.detail);\n }) as EventListener;\n window.addEventListener(\"app.change\", listener);\n return () => window.removeEventListener(\"app.change\", listener);\n }, []);\n\n return recentApps;\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,UAAU,QAAQ,oBAAoB;AAO/C,OAAO,SAASC,aAAaA,CAAA,EAAe;EAC1C,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGJ,KAAK,CAACK,QAAQ,CAAa,MAC7DJ,UAAU,CAAC,CAAC,CAACK,aAAa,CAAC,CAC7B,CAAC;EAEDN,KAAK,CAACO,SAAS,CAAC,MAAM;IACpB,MAAMC,QAAQ,GAAKC,KAA8B,IAAK;MACpDL,aAAa,CAACK,KAAK,CAACC,MAAM,CAAC;IAC7B,CAAmB;IACnBC,MAAM,CAACC,gBAAgB,CAAC,YAAY,EAAEJ,QAAQ,CAAC;IAC/C,OAAO,MAAMG,MAAM,CAACE,mBAAmB,CAAC,YAAY,EAAEL,QAAQ,CAAC;EACjE,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOL,UAAU;AACnB","ignoreList":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
export function useRouteRender() {
|
|
3
|
-
|
|
3
|
+
const [routeRender, setRouteRender] = React.useState(null);
|
|
4
4
|
React.useEffect(() => {
|
|
5
|
-
|
|
5
|
+
const listener = event => {
|
|
6
6
|
setRouteRender(event.detail);
|
|
7
7
|
};
|
|
8
8
|
window.addEventListener("route.render", listener);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRouteRender.js","names":["React","useRouteRender","routeRender","setRouteRender","useState","useEffect","listener","event","detail","window","addEventListener","removeEventListener"],"sources":["../../src/useRouteRender.ts"],"sourcesContent":["import React from \"react\";\n\ninterface RouteRender {\n renderTime?: number;\n}\n\nexport function useRouteRender(): RouteRender | null {\n const [routeRender, setRouteRender] = React.useState<RouteRender | null>(\n null\n );\n\n React.useEffect(() => {\n const listener = ((event: CustomEvent<RouteRender>) => {\n setRouteRender(event.detail);\n }) as EventListener;\n window.addEventListener(\"route.render\", listener);\n return () => window.removeEventListener(\"route.render\", listener);\n }, []);\n\n return routeRender;\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAMzB,OAAO,SAASC,cAAcA,CAAA,EAAuB;EACnD,
|
|
1
|
+
{"version":3,"file":"useRouteRender.js","names":["React","useRouteRender","routeRender","setRouteRender","useState","useEffect","listener","event","detail","window","addEventListener","removeEventListener"],"sources":["../../src/useRouteRender.ts"],"sourcesContent":["import React from \"react\";\n\ninterface RouteRender {\n renderTime?: number;\n}\n\nexport function useRouteRender(): RouteRender | null {\n const [routeRender, setRouteRender] = React.useState<RouteRender | null>(\n null\n );\n\n React.useEffect(() => {\n const listener = ((event: CustomEvent<RouteRender>) => {\n setRouteRender(event.detail);\n }) as EventListener;\n window.addEventListener(\"route.render\", listener);\n return () => window.removeEventListener(\"route.render\", listener);\n }, []);\n\n return routeRender;\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAMzB,OAAO,SAASC,cAAcA,CAAA,EAAuB;EACnD,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGH,KAAK,CAACI,QAAQ,CAClD,IACF,CAAC;EAEDJ,KAAK,CAACK,SAAS,CAAC,MAAM;IACpB,MAAMC,QAAQ,GAAKC,KAA+B,IAAK;MACrDJ,cAAc,CAACI,KAAK,CAACC,MAAM,CAAC;IAC9B,CAAmB;IACnBC,MAAM,CAACC,gBAAgB,CAAC,cAAc,EAAEJ,QAAQ,CAAC;IACjD,OAAO,MAAMG,MAAM,CAACE,mBAAmB,CAAC,cAAc,EAAEL,QAAQ,CAAC;EACnE,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOJ,WAAW;AACpB","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/react-runtime",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.3",
|
|
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,18 +37,18 @@
|
|
|
37
37
|
"test:ci": "cross-env NODE_ENV='test' CI=true test-next"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@next-core/react-element": "^1.0.
|
|
41
|
-
"@next-core/runtime": "^1.44.
|
|
40
|
+
"@next-core/react-element": "^1.0.27",
|
|
41
|
+
"@next-core/runtime": "^1.44.3",
|
|
42
42
|
"@next-core/types": "^1.11.0",
|
|
43
43
|
"react": "0.0.0-experimental-ee8509801-20230117",
|
|
44
44
|
"react-dom": "0.0.0-experimental-ee8509801-20230117"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@next-core/build-next-libs": "^1.0.
|
|
48
|
-
"@next-core/test-next": "^1.1.
|
|
47
|
+
"@next-core/build-next-libs": "^1.0.16",
|
|
48
|
+
"@next-core/test-next": "^1.1.2",
|
|
49
49
|
"@testing-library/react": "^15.0.7",
|
|
50
50
|
"@testing-library/react-hooks": "^8.0.1",
|
|
51
51
|
"jest-fetch-mock": "^3.0.3"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "34346d51d4a58dbf496de22f2f06a3dd43dae52d"
|
|
54
54
|
}
|