one 1.2.17 → 1.2.19
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/createHandleRequest.cjs +7 -2
- package/dist/cjs/createHandleRequest.js +8 -3
- package/dist/cjs/createHandleRequest.js.map +1 -1
- package/dist/cjs/createHandleRequest.native.js +8 -2
- package/dist/cjs/createHandleRequest.native.js.map +1 -1
- package/dist/cjs/experimental-useLoaderState.cjs +64 -0
- package/dist/cjs/experimental-useLoaderState.js +44 -0
- package/dist/cjs/experimental-useLoaderState.js.map +6 -0
- package/dist/cjs/experimental-useLoaderState.native.js +69 -0
- package/dist/cjs/experimental-useLoaderState.native.js.map +1 -0
- package/dist/cjs/getDevServer.cjs +29 -0
- package/dist/cjs/getDevServer.js +24 -0
- package/dist/cjs/getDevServer.js.map +6 -0
- package/dist/cjs/getDevServer.native.js +40 -0
- package/dist/cjs/getDevServer.native.js.map +1 -0
- package/dist/cjs/getURL.native.js +8 -18
- package/dist/cjs/getURL.native.js.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +1 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/server/oneServe.cjs +8 -6
- package/dist/cjs/server/oneServe.js +5 -5
- package/dist/cjs/server/oneServe.js.map +1 -1
- package/dist/cjs/server/oneServe.native.js +8 -6
- package/dist/cjs/server/oneServe.native.js.map +1 -1
- package/dist/cjs/setup.native.js.map +6 -1
- package/dist/cjs/useLoader.cjs +117 -36
- package/dist/cjs/useLoader.js +108 -33
- package/dist/cjs/useLoader.js.map +2 -2
- package/dist/cjs/useLoader.native.js +151 -55
- package/dist/cjs/useLoader.native.js.map +1 -1
- package/dist/cjs/utils/cleanUrl.cjs +6 -5
- package/dist/cjs/utils/cleanUrl.js +4 -8
- package/dist/cjs/utils/cleanUrl.js.map +1 -1
- package/dist/cjs/utils/cleanUrl.native.js +6 -3
- package/dist/cjs/utils/cleanUrl.native.js.map +1 -1
- package/dist/esm/createHandleRequest.js +8 -3
- package/dist/esm/createHandleRequest.js.map +1 -1
- package/dist/esm/createHandleRequest.mjs +7 -2
- package/dist/esm/createHandleRequest.mjs.map +1 -1
- package/dist/esm/createHandleRequest.native.js +8 -2
- package/dist/esm/createHandleRequest.native.js.map +1 -1
- package/dist/esm/experimental-useLoaderState.js +32 -0
- package/dist/esm/experimental-useLoaderState.js.map +6 -0
- package/dist/esm/experimental-useLoaderState.mjs +41 -0
- package/dist/esm/experimental-useLoaderState.mjs.map +1 -0
- package/dist/esm/experimental-useLoaderState.native.js +43 -0
- package/dist/esm/experimental-useLoaderState.native.js.map +1 -0
- package/dist/esm/getDevServer.js +8 -0
- package/dist/esm/getDevServer.js.map +6 -0
- package/dist/esm/getDevServer.mjs +6 -0
- package/dist/esm/getDevServer.mjs.map +1 -0
- package/dist/esm/getDevServer.native.js +3 -0
- package/dist/esm/getDevServer.native.js.map +1 -0
- package/dist/esm/getURL.native.js +3 -2
- package/dist/esm/getURL.native.js.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -2
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/server/oneServe.js +5 -5
- package/dist/esm/server/oneServe.js.map +1 -1
- package/dist/esm/server/oneServe.mjs +7 -5
- package/dist/esm/server/oneServe.mjs.map +1 -1
- package/dist/esm/server/oneServe.native.js +7 -5
- package/dist/esm/server/oneServe.native.js.map +1 -1
- package/dist/esm/useLoader.js +110 -35
- package/dist/esm/useLoader.js.map +2 -2
- package/dist/esm/useLoader.mjs +117 -38
- package/dist/esm/useLoader.mjs.map +1 -1
- package/dist/esm/useLoader.native.js +151 -57
- package/dist/esm/useLoader.native.js.map +1 -1
- package/dist/esm/utils/cleanUrl.js +4 -8
- package/dist/esm/utils/cleanUrl.js.map +1 -1
- package/dist/esm/utils/cleanUrl.mjs +6 -5
- package/dist/esm/utils/cleanUrl.mjs.map +1 -1
- package/dist/esm/utils/cleanUrl.native.js +6 -3
- package/dist/esm/utils/cleanUrl.native.js.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
- package/package.json +10 -10
- package/src/createHandleRequest.ts +6 -2
- package/src/getDevServer.native.ts +5 -0
- package/src/getDevServer.ts +5 -0
- package/src/getURL.native.ts +10 -5
- package/src/index.ts +1 -1
- package/src/server/oneServe.ts +12 -6
- package/src/types.ts +1 -0
- package/src/useLoader.ts +206 -90
- package/src/utils/cleanUrl.ts +7 -10
- package/types/createHandleRequest.d.ts.map +1 -1
- package/types/experimental-useLoaderState.d.ts.map +1 -0
- package/types/getDevServer.d.ts +5 -0
- package/types/getDevServer.d.ts.map +1 -0
- package/types/getDevServer.native.d.ts +2 -0
- package/types/getDevServer.native.d.ts.map +1 -0
- package/types/getURL.native.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/server/oneServe.d.ts.map +1 -1
- package/types/types.d.ts +1 -0
- package/types/types.d.ts.map +1 -1
- package/types/useLoader.d.ts +9 -0
- package/types/useLoader.d.ts.map +1 -1
- package/types/utils/cleanUrl.d.ts +1 -1
- package/types/utils/cleanUrl.d.ts.map +1 -1
package/dist/esm/useLoader.js
CHANGED
|
@@ -1,50 +1,123 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { useCallback, useSyncExternalStore } from "react";
|
|
2
|
+
import { useParams, usePathname } from "./hooks";
|
|
3
3
|
import { resolveHref } from "./link/href";
|
|
4
4
|
import { preloadingLoader } from "./router/router";
|
|
5
5
|
import { getLoaderPath } from "./utils/cleanUrl";
|
|
6
6
|
import { dynamicImport } from "./utils/dynamicImport";
|
|
7
7
|
import { weakKey } from "./utils/weakKey";
|
|
8
8
|
import { useServerContext } from "./vite/one-server-only";
|
|
9
|
-
const
|
|
10
|
-
function
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
const loaderState = {}, subscribers = /* @__PURE__ */ new Set();
|
|
10
|
+
function updateState(path, updates) {
|
|
11
|
+
loaderState[path] = { ...loaderState[path], ...updates }, subscribers.forEach((callback) => {
|
|
12
|
+
callback();
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function subscribe(callback) {
|
|
16
|
+
return subscribers.add(callback), () => subscribers.delete(callback);
|
|
17
|
+
}
|
|
18
|
+
function getLoaderState(path, preloadedData2) {
|
|
19
|
+
return loaderState[path] || (loaderState[path] = {
|
|
20
|
+
data: preloadedData2,
|
|
21
|
+
error: void 0,
|
|
22
|
+
promise: void 0,
|
|
23
|
+
state: "idle",
|
|
24
|
+
hasLoadedOnce: !!preloadedData2
|
|
25
|
+
}), loaderState[path];
|
|
26
|
+
}
|
|
27
|
+
async function refetchLoader(pathname2) {
|
|
28
|
+
updateState(pathname2, {
|
|
29
|
+
state: "loading",
|
|
30
|
+
error: null
|
|
31
|
+
});
|
|
32
|
+
try {
|
|
33
|
+
const cacheBust = `${Date.now()}`, loaderJSUrl2 = getLoaderPath(pathname2, !0, cacheBust), result2 = await (await dynamicImport(loaderJSUrl2)).loader();
|
|
34
|
+
updateState(pathname2, {
|
|
35
|
+
data: result2,
|
|
36
|
+
state: "idle",
|
|
37
|
+
timestamp: Date.now(),
|
|
38
|
+
hasLoadedOnce: !0
|
|
39
|
+
});
|
|
40
|
+
} catch (err) {
|
|
41
|
+
throw updateState(pathname2, {
|
|
42
|
+
error: err,
|
|
43
|
+
state: "idle"
|
|
44
|
+
}), err;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function useLoaderState(loader) {
|
|
48
|
+
const { loaderProps: loaderPropsFromServerContext, loaderData: loaderDataFromServerContext } = useServerContext() || {}, params = useParams(), pathname = usePathname(), currentPath = resolveHref({ pathname, params }).replace(/index$/, "");
|
|
49
|
+
if (typeof window > "u" && loader)
|
|
50
|
+
return { data: useAsyncFn(
|
|
14
51
|
loader,
|
|
15
52
|
loaderPropsFromServerContext || {
|
|
16
|
-
path:
|
|
17
|
-
params
|
|
53
|
+
path: pathname,
|
|
54
|
+
params
|
|
18
55
|
}
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (
|
|
27
|
-
return
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
56
|
+
), refetch: async () => {
|
|
57
|
+
}, state: "idle" };
|
|
58
|
+
const preloadedData = loaderPropsFromServerContext?.path === currentPath ? loaderDataFromServerContext : void 0, loaderStateEntry = useSyncExternalStore(
|
|
59
|
+
subscribe,
|
|
60
|
+
() => getLoaderState(currentPath, preloadedData),
|
|
61
|
+
() => getLoaderState(currentPath, preloadedData)
|
|
62
|
+
), refetch = useCallback(() => refetchLoader(currentPath), [currentPath]);
|
|
63
|
+
if (!loader)
|
|
64
|
+
return {
|
|
65
|
+
refetch,
|
|
66
|
+
state: loaderStateEntry.state
|
|
67
|
+
};
|
|
68
|
+
if (!loaderStateEntry.data && !loaderStateEntry.promise && !loaderStateEntry.hasLoadedOnce && loader)
|
|
69
|
+
if (preloadingLoader[currentPath]) {
|
|
70
|
+
typeof preloadingLoader[currentPath] == "function" && (preloadingLoader[currentPath] = preloadingLoader[currentPath]());
|
|
71
|
+
const promise2 = preloadingLoader[currentPath].then((val) => {
|
|
72
|
+
delete preloadingLoader[currentPath], updateState(currentPath, {
|
|
73
|
+
data: val,
|
|
74
|
+
hasLoadedOnce: !0,
|
|
75
|
+
promise: void 0
|
|
76
|
+
});
|
|
77
|
+
}).catch((err) => {
|
|
78
|
+
console.error("Error running loader()", err), delete preloadingLoader[currentPath], updateState(currentPath, {
|
|
79
|
+
error: err,
|
|
80
|
+
promise: void 0
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
loaderStateEntry.promise = promise2;
|
|
84
|
+
} else {
|
|
85
|
+
const loadData = async () => {
|
|
36
86
|
try {
|
|
37
|
-
const
|
|
38
|
-
|
|
87
|
+
const loaderJSUrl = getLoaderPath(currentPath, !0), module = await dynamicImport(loaderJSUrl), result = await module.loader();
|
|
88
|
+
updateState(currentPath, {
|
|
89
|
+
data: result,
|
|
90
|
+
hasLoadedOnce: !0,
|
|
91
|
+
promise: void 0
|
|
92
|
+
});
|
|
39
93
|
} catch (err) {
|
|
40
|
-
|
|
94
|
+
updateState(currentPath, {
|
|
95
|
+
error: err,
|
|
96
|
+
promise: void 0
|
|
97
|
+
});
|
|
41
98
|
}
|
|
42
|
-
};
|
|
43
|
-
|
|
99
|
+
}, promise = loadData();
|
|
100
|
+
loaderStateEntry.promise = promise;
|
|
44
101
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
102
|
+
if (loader) {
|
|
103
|
+
if (loaderStateEntry.error && !loaderStateEntry.hasLoadedOnce)
|
|
104
|
+
throw loaderStateEntry.error;
|
|
105
|
+
if (loaderStateEntry.data === void 0 && loaderStateEntry.promise && !loaderStateEntry.hasLoadedOnce)
|
|
106
|
+
throw loaderStateEntry.promise;
|
|
107
|
+
return {
|
|
108
|
+
data: loaderStateEntry.data,
|
|
109
|
+
refetch,
|
|
110
|
+
state: loaderStateEntry.state
|
|
111
|
+
};
|
|
112
|
+
} else
|
|
113
|
+
return {
|
|
114
|
+
refetch,
|
|
115
|
+
state: loaderStateEntry.state
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function useLoader(loader2) {
|
|
119
|
+
const { data: data2 } = useLoaderState(loader2);
|
|
120
|
+
return data2;
|
|
48
121
|
}
|
|
49
122
|
const results = /* @__PURE__ */ new Map(), started = /* @__PURE__ */ new Map();
|
|
50
123
|
function useAsyncFn(val, props) {
|
|
@@ -64,6 +137,8 @@ function useAsyncFn(val, props) {
|
|
|
64
137
|
return current;
|
|
65
138
|
}
|
|
66
139
|
export {
|
|
67
|
-
|
|
140
|
+
refetchLoader,
|
|
141
|
+
useLoader,
|
|
142
|
+
useLoaderState
|
|
68
143
|
};
|
|
69
144
|
//# sourceMappingURL=useLoader.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/useLoader.ts"],
|
|
4
|
-
"mappings": "
|
|
5
|
-
"names": []
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["preloadedData", "pathname", "loaderJSUrl", "result", "promise", "loader", "data"]
|
|
6
6
|
}
|
package/dist/esm/useLoader.mjs
CHANGED
|
@@ -1,56 +1,135 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { useCallback, useSyncExternalStore } from "react";
|
|
2
|
+
import { useParams, usePathname } from "./hooks.mjs";
|
|
3
3
|
import { resolveHref } from "./link/href.mjs";
|
|
4
4
|
import { preloadingLoader } from "./router/router.mjs";
|
|
5
5
|
import { getLoaderPath } from "./utils/cleanUrl.mjs";
|
|
6
6
|
import { dynamicImport } from "./utils/dynamicImport.mjs";
|
|
7
7
|
import { weakKey } from "./utils/weakKey.mjs";
|
|
8
8
|
import { useServerContext } from "./vite/one-server-only.mjs";
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
9
|
+
const loaderState = {},
|
|
10
|
+
subscribers = /* @__PURE__ */new Set();
|
|
11
|
+
function updateState(path, updates) {
|
|
12
|
+
loaderState[path] = {
|
|
13
|
+
...loaderState[path],
|
|
14
|
+
...updates
|
|
15
|
+
}, subscribers.forEach(callback => {
|
|
16
|
+
callback();
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function subscribe(callback) {
|
|
20
|
+
return subscribers.add(callback), () => subscribers.delete(callback);
|
|
21
|
+
}
|
|
22
|
+
function getLoaderState(path, preloadedData2) {
|
|
23
|
+
return loaderState[path] || (loaderState[path] = {
|
|
24
|
+
data: preloadedData2,
|
|
25
|
+
error: void 0,
|
|
26
|
+
promise: void 0,
|
|
27
|
+
state: "idle",
|
|
28
|
+
hasLoadedOnce: !!preloadedData2
|
|
29
|
+
}), loaderState[path];
|
|
30
|
+
}
|
|
31
|
+
async function refetchLoader(pathname2) {
|
|
32
|
+
updateState(pathname2, {
|
|
33
|
+
state: "loading",
|
|
34
|
+
error: null
|
|
20
35
|
});
|
|
21
|
-
|
|
36
|
+
try {
|
|
37
|
+
const cacheBust = `${Date.now()}`,
|
|
38
|
+
loaderJSUrl2 = getLoaderPath(pathname2, !0, cacheBust),
|
|
39
|
+
result2 = await (await dynamicImport(loaderJSUrl2)).loader();
|
|
40
|
+
updateState(pathname2, {
|
|
41
|
+
data: result2,
|
|
42
|
+
state: "idle",
|
|
43
|
+
timestamp: Date.now(),
|
|
44
|
+
hasLoadedOnce: !0
|
|
45
|
+
});
|
|
46
|
+
} catch (err) {
|
|
47
|
+
throw updateState(pathname2, {
|
|
48
|
+
error: err,
|
|
49
|
+
state: "idle"
|
|
50
|
+
}), err;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function useLoaderState(loader) {
|
|
54
|
+
const {
|
|
55
|
+
loaderProps: loaderPropsFromServerContext,
|
|
56
|
+
loaderData: loaderDataFromServerContext
|
|
57
|
+
} = useServerContext() || {},
|
|
58
|
+
params = useParams(),
|
|
22
59
|
pathname = usePathname(),
|
|
23
60
|
currentPath = resolveHref({
|
|
24
61
|
pathname,
|
|
25
62
|
params
|
|
26
|
-
}).replace(/index$/, "")
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
63
|
+
}).replace(/index$/, "");
|
|
64
|
+
if (typeof window > "u" && loader) return {
|
|
65
|
+
data: useAsyncFn(loader, loaderPropsFromServerContext || {
|
|
66
|
+
path: pathname,
|
|
67
|
+
params
|
|
68
|
+
}),
|
|
69
|
+
refetch: async () => {},
|
|
70
|
+
state: "idle"
|
|
71
|
+
};
|
|
72
|
+
const preloadedData = loaderPropsFromServerContext?.path === currentPath ? loaderDataFromServerContext : void 0,
|
|
73
|
+
loaderStateEntry = useSyncExternalStore(subscribe, () => getLoaderState(currentPath, preloadedData), () => getLoaderState(currentPath, preloadedData)),
|
|
74
|
+
refetch = useCallback(() => refetchLoader(currentPath), [currentPath]);
|
|
75
|
+
if (!loader) return {
|
|
76
|
+
refetch,
|
|
77
|
+
state: loaderStateEntry.state
|
|
78
|
+
};
|
|
79
|
+
if (!loaderStateEntry.data && !loaderStateEntry.promise && !loaderStateEntry.hasLoadedOnce && loader) if (preloadingLoader[currentPath]) {
|
|
80
|
+
typeof preloadingLoader[currentPath] == "function" && (preloadingLoader[currentPath] = preloadingLoader[currentPath]());
|
|
81
|
+
const promise2 = preloadingLoader[currentPath].then(val => {
|
|
82
|
+
delete preloadingLoader[currentPath], updateState(currentPath, {
|
|
83
|
+
data: val,
|
|
84
|
+
hasLoadedOnce: !0,
|
|
85
|
+
promise: void 0
|
|
86
|
+
});
|
|
37
87
|
}).catch(err => {
|
|
38
|
-
console.error("Error
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
88
|
+
console.error("Error running loader()", err), delete preloadingLoader[currentPath], updateState(currentPath, {
|
|
89
|
+
error: err,
|
|
90
|
+
promise: void 0
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
loaderStateEntry.promise = promise2;
|
|
94
|
+
} else {
|
|
95
|
+
const loadData = async () => {
|
|
42
96
|
try {
|
|
43
|
-
const
|
|
44
|
-
|
|
97
|
+
const loaderJSUrl = getLoaderPath(currentPath, !0),
|
|
98
|
+
module = await dynamicImport(loaderJSUrl),
|
|
99
|
+
result = await module.loader();
|
|
100
|
+
updateState(currentPath, {
|
|
101
|
+
data: result,
|
|
102
|
+
hasLoadedOnce: !0,
|
|
103
|
+
promise: void 0
|
|
104
|
+
});
|
|
45
105
|
} catch (err) {
|
|
46
|
-
|
|
106
|
+
updateState(currentPath, {
|
|
107
|
+
error: err,
|
|
108
|
+
promise: void 0
|
|
109
|
+
});
|
|
47
110
|
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
throw promises[currentPath];
|
|
111
|
+
},
|
|
112
|
+
promise = loadData();
|
|
113
|
+
loaderStateEntry.promise = promise;
|
|
52
114
|
}
|
|
53
|
-
|
|
115
|
+
if (loader) {
|
|
116
|
+
if (loaderStateEntry.error && !loaderStateEntry.hasLoadedOnce) throw loaderStateEntry.error;
|
|
117
|
+
if (loaderStateEntry.data === void 0 && loaderStateEntry.promise && !loaderStateEntry.hasLoadedOnce) throw loaderStateEntry.promise;
|
|
118
|
+
return {
|
|
119
|
+
data: loaderStateEntry.data,
|
|
120
|
+
refetch,
|
|
121
|
+
state: loaderStateEntry.state
|
|
122
|
+
};
|
|
123
|
+
} else return {
|
|
124
|
+
refetch,
|
|
125
|
+
state: loaderStateEntry.state
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function useLoader(loader2) {
|
|
129
|
+
const {
|
|
130
|
+
data: data2
|
|
131
|
+
} = useLoaderState(loader2);
|
|
132
|
+
return data2;
|
|
54
133
|
}
|
|
55
134
|
const results = /* @__PURE__ */new Map(),
|
|
56
135
|
started = /* @__PURE__ */new Map();
|
|
@@ -69,5 +148,5 @@ function useAsyncFn(val, props) {
|
|
|
69
148
|
if (current instanceof Promise) throw current;
|
|
70
149
|
return current;
|
|
71
150
|
}
|
|
72
|
-
export { useLoader };
|
|
151
|
+
export { refetchLoader, useLoader, useLoaderState };
|
|
73
152
|
//# sourceMappingURL=useLoader.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["useCallback","useSyncExternalStore","useParams","usePathname","resolveHref","preloadingLoader","getLoaderPath","dynamicImport","weakKey","useServerContext","loaderState","subscribers","Set","updateState","path","updates","forEach","callback","subscribe","add","delete","getLoaderState","preloadedData2","data","error","promise","state","hasLoadedOnce","refetchLoader","pathname2","cacheBust","Date","now","loaderJSUrl2","result2","loader","timestamp","err","useLoaderState","loaderProps","loaderPropsFromServerContext","loaderData","loaderDataFromServerContext","params","pathname","currentPath","replace","window","useAsyncFn","refetch","preloadedData","loaderStateEntry","promise2","then","val","catch","console","loadData","loaderJSUrl","module","result","useLoader","loader2","data2","results","Map","started","props","key","JSON","stringify","get","set","next","Promise","final","current"],"sources":["../../src/useLoader.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { useCallback, useSyncExternalStore } from "react";
|
|
2
|
+
import { useParams, usePathname } from "./hooks.native.js";
|
|
3
3
|
import { resolveHref } from "./link/href.native.js";
|
|
4
4
|
import { preloadingLoader } from "./router/router.native.js";
|
|
5
5
|
import { getLoaderPath } from "./utils/cleanUrl.native.js";
|
|
@@ -9,70 +9,164 @@ import { useServerContext } from "./vite/one-server-only.native.js";
|
|
|
9
9
|
function _instanceof(left, right) {
|
|
10
10
|
return right != null && typeof Symbol < "u" && right[Symbol.hasInstance] ? !!right[Symbol.hasInstance](left) : left instanceof right;
|
|
11
11
|
}
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
12
|
+
var loaderState = {},
|
|
13
|
+
subscribers = /* @__PURE__ */new Set();
|
|
14
|
+
function updateState(path, updates) {
|
|
15
|
+
loaderState[path] = {
|
|
16
|
+
...loaderState[path],
|
|
17
|
+
...updates
|
|
18
|
+
}, subscribers.forEach(function (callback) {
|
|
19
|
+
callback();
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function subscribe(callback) {
|
|
23
|
+
return subscribers.add(callback), function () {
|
|
24
|
+
return subscribers.delete(callback);
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function getLoaderState(path, preloadedData2) {
|
|
28
|
+
return loaderState[path] || (loaderState[path] = {
|
|
29
|
+
data: preloadedData2,
|
|
30
|
+
error: void 0,
|
|
31
|
+
promise: void 0,
|
|
32
|
+
state: "idle",
|
|
33
|
+
hasLoadedOnce: !!preloadedData2
|
|
34
|
+
}), loaderState[path];
|
|
35
|
+
}
|
|
36
|
+
async function refetchLoader(pathname2) {
|
|
37
|
+
updateState(pathname2, {
|
|
38
|
+
state: "loading",
|
|
39
|
+
error: null
|
|
23
40
|
});
|
|
24
|
-
|
|
41
|
+
try {
|
|
42
|
+
var cacheBust = `${Date.now()}`,
|
|
43
|
+
loaderJSUrl2 = getLoaderPath(pathname2, !0, cacheBust),
|
|
44
|
+
module2 = await dynamicImport(loaderJSUrl2),
|
|
45
|
+
result2 = await module2.loader();
|
|
46
|
+
updateState(pathname2, {
|
|
47
|
+
data: result2,
|
|
48
|
+
state: "idle",
|
|
49
|
+
timestamp: Date.now(),
|
|
50
|
+
hasLoadedOnce: !0
|
|
51
|
+
});
|
|
52
|
+
} catch (err) {
|
|
53
|
+
throw updateState(pathname2, {
|
|
54
|
+
error: err,
|
|
55
|
+
state: "idle"
|
|
56
|
+
}), err;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function useLoaderState(loader) {
|
|
60
|
+
var {
|
|
61
|
+
loaderProps: loaderPropsFromServerContext,
|
|
62
|
+
loaderData: loaderDataFromServerContext
|
|
63
|
+
} = useServerContext() || {},
|
|
64
|
+
params = useParams(),
|
|
25
65
|
pathname = usePathname(),
|
|
26
66
|
currentPath = resolveHref({
|
|
27
67
|
pathname,
|
|
28
68
|
params
|
|
29
|
-
}).replace(/index$/, "")
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
69
|
+
}).replace(/index$/, "");
|
|
70
|
+
if (typeof window > "u" && loader) {
|
|
71
|
+
var serverData = useAsyncFn(loader, loaderPropsFromServerContext || {
|
|
72
|
+
path: pathname,
|
|
73
|
+
params
|
|
74
|
+
});
|
|
75
|
+
return {
|
|
76
|
+
data: serverData,
|
|
77
|
+
refetch: async function () {},
|
|
78
|
+
state: "idle"
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
var preloadedData = loaderPropsFromServerContext?.path === currentPath ? loaderDataFromServerContext : void 0,
|
|
82
|
+
loaderStateEntry = useSyncExternalStore(subscribe, function () {
|
|
83
|
+
return getLoaderState(currentPath, preloadedData);
|
|
84
|
+
}, function () {
|
|
85
|
+
return getLoaderState(currentPath, preloadedData);
|
|
86
|
+
}),
|
|
87
|
+
refetch = useCallback(function () {
|
|
88
|
+
return refetchLoader(currentPath);
|
|
89
|
+
}, [currentPath]);
|
|
90
|
+
if (!loader) return {
|
|
91
|
+
refetch,
|
|
92
|
+
state: loaderStateEntry.state
|
|
93
|
+
};
|
|
94
|
+
if (!loaderStateEntry.data && !loaderStateEntry.promise && !loaderStateEntry.hasLoadedOnce && loader) if (preloadingLoader[currentPath]) {
|
|
95
|
+
typeof preloadingLoader[currentPath] == "function" && (preloadingLoader[currentPath] = preloadingLoader[currentPath]());
|
|
96
|
+
var promise = preloadingLoader[currentPath].then(function (val) {
|
|
97
|
+
delete preloadingLoader[currentPath], updateState(currentPath, {
|
|
98
|
+
data: val,
|
|
99
|
+
hasLoadedOnce: !0,
|
|
100
|
+
promise: void 0
|
|
101
|
+
});
|
|
42
102
|
}).catch(function (err) {
|
|
43
|
-
console.error("Error
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
103
|
+
console.error("Error running loader()", err), delete preloadingLoader[currentPath], updateState(currentPath, {
|
|
104
|
+
error: err,
|
|
105
|
+
promise: void 0
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
loaderStateEntry.promise = promise;
|
|
109
|
+
} else {
|
|
110
|
+
var loadData = async function () {
|
|
47
111
|
try {
|
|
48
|
-
var
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
112
|
+
var loaderJSUrl = getLoaderPath(currentPath, !0),
|
|
113
|
+
nativeLoaderJSUrl = `${loaderJSUrl}?platform=ios`;
|
|
114
|
+
try {
|
|
115
|
+
var loaderJsCodeResp = await fetch(nativeLoaderJSUrl);
|
|
116
|
+
if (!loaderJsCodeResp.ok) throw new Error(`Response not ok: ${loaderJsCodeResp.status}`);
|
|
117
|
+
var loaderJsCode = await loaderJsCodeResp.text(),
|
|
118
|
+
result = eval(`() => { var exports = {}; ${loaderJsCode}; return exports; }`)();
|
|
119
|
+
if (typeof result.loader != "function") throw new Error("Loader code isn't exporting a `loader` function");
|
|
120
|
+
var data = await result.loader();
|
|
121
|
+
updateState(currentPath, {
|
|
122
|
+
data,
|
|
123
|
+
hasLoadedOnce: !0,
|
|
124
|
+
promise: void 0
|
|
125
|
+
});
|
|
126
|
+
return;
|
|
127
|
+
} catch (e) {
|
|
128
|
+
updateState(currentPath, {
|
|
129
|
+
data: {},
|
|
130
|
+
promise: void 0
|
|
131
|
+
});
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
var loaderJSUrl = getLoaderPath(currentPath, !0),
|
|
135
|
+
module = await dynamicImport(loaderJSUrl),
|
|
136
|
+
result = await module.loader();
|
|
137
|
+
updateState(currentPath, {
|
|
138
|
+
data: result,
|
|
139
|
+
hasLoadedOnce: !0,
|
|
140
|
+
promise: void 0
|
|
141
|
+
});
|
|
67
142
|
} catch (err) {
|
|
68
|
-
|
|
143
|
+
updateState(currentPath, {
|
|
144
|
+
error: err,
|
|
145
|
+
promise: void 0
|
|
146
|
+
});
|
|
69
147
|
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
throw promises[currentPath];
|
|
148
|
+
},
|
|
149
|
+
promise = loadData();
|
|
150
|
+
loaderStateEntry.promise = promise;
|
|
74
151
|
}
|
|
75
|
-
|
|
152
|
+
if (loader) {
|
|
153
|
+
if (loaderStateEntry.error && !loaderStateEntry.hasLoadedOnce) throw loaderStateEntry.error;
|
|
154
|
+
if (loaderStateEntry.data === void 0 && loaderStateEntry.promise && !loaderStateEntry.hasLoadedOnce) throw loaderStateEntry.promise;
|
|
155
|
+
return {
|
|
156
|
+
data: loaderStateEntry.data,
|
|
157
|
+
refetch,
|
|
158
|
+
state: loaderStateEntry.state
|
|
159
|
+
};
|
|
160
|
+
} else return {
|
|
161
|
+
refetch,
|
|
162
|
+
state: loaderStateEntry.state
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
function useLoader(loader2) {
|
|
166
|
+
var {
|
|
167
|
+
data: data2
|
|
168
|
+
} = useLoaderState(loader2);
|
|
169
|
+
return data2;
|
|
76
170
|
}
|
|
77
171
|
var results = /* @__PURE__ */new Map(),
|
|
78
172
|
started = /* @__PURE__ */new Map();
|
|
@@ -91,5 +185,5 @@ function useAsyncFn(val, props) {
|
|
|
91
185
|
if (_instanceof(current, Promise)) throw current;
|
|
92
186
|
return current;
|
|
93
187
|
}
|
|
94
|
-
export { useLoader };
|
|
188
|
+
export { refetchLoader, useLoader, useLoaderState };
|
|
95
189
|
//# sourceMappingURL=useLoader.native.js.map
|