one 1.2.18 → 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.
Files changed (86) hide show
  1. package/dist/cjs/createHandleRequest.cjs +7 -2
  2. package/dist/cjs/createHandleRequest.js +8 -3
  3. package/dist/cjs/createHandleRequest.js.map +1 -1
  4. package/dist/cjs/createHandleRequest.native.js +8 -2
  5. package/dist/cjs/createHandleRequest.native.js.map +1 -1
  6. package/dist/cjs/experimental-useLoaderState.cjs +64 -0
  7. package/dist/cjs/experimental-useLoaderState.js +44 -0
  8. package/dist/cjs/experimental-useLoaderState.js.map +6 -0
  9. package/dist/cjs/experimental-useLoaderState.native.js +69 -0
  10. package/dist/cjs/experimental-useLoaderState.native.js.map +1 -0
  11. package/dist/cjs/index.cjs +1 -0
  12. package/dist/cjs/index.js +1 -0
  13. package/dist/cjs/index.js.map +1 -1
  14. package/dist/cjs/index.native.js +1 -0
  15. package/dist/cjs/index.native.js.map +1 -1
  16. package/dist/cjs/server/oneServe.cjs +8 -6
  17. package/dist/cjs/server/oneServe.js +5 -5
  18. package/dist/cjs/server/oneServe.js.map +1 -1
  19. package/dist/cjs/server/oneServe.native.js +8 -6
  20. package/dist/cjs/server/oneServe.native.js.map +1 -1
  21. package/dist/cjs/setup.native.js.map +6 -1
  22. package/dist/cjs/useLoader.cjs +117 -36
  23. package/dist/cjs/useLoader.js +108 -33
  24. package/dist/cjs/useLoader.js.map +2 -2
  25. package/dist/cjs/useLoader.native.js +151 -55
  26. package/dist/cjs/useLoader.native.js.map +1 -1
  27. package/dist/cjs/utils/cleanUrl.cjs +6 -5
  28. package/dist/cjs/utils/cleanUrl.js +4 -8
  29. package/dist/cjs/utils/cleanUrl.js.map +1 -1
  30. package/dist/cjs/utils/cleanUrl.native.js +6 -3
  31. package/dist/cjs/utils/cleanUrl.native.js.map +1 -1
  32. package/dist/esm/createHandleRequest.js +8 -3
  33. package/dist/esm/createHandleRequest.js.map +1 -1
  34. package/dist/esm/createHandleRequest.mjs +7 -2
  35. package/dist/esm/createHandleRequest.mjs.map +1 -1
  36. package/dist/esm/createHandleRequest.native.js +8 -2
  37. package/dist/esm/createHandleRequest.native.js.map +1 -1
  38. package/dist/esm/experimental-useLoaderState.js +32 -0
  39. package/dist/esm/experimental-useLoaderState.js.map +6 -0
  40. package/dist/esm/experimental-useLoaderState.mjs +41 -0
  41. package/dist/esm/experimental-useLoaderState.mjs.map +1 -0
  42. package/dist/esm/experimental-useLoaderState.native.js +43 -0
  43. package/dist/esm/experimental-useLoaderState.native.js.map +1 -0
  44. package/dist/esm/index.js +2 -1
  45. package/dist/esm/index.js.map +1 -1
  46. package/dist/esm/index.mjs +2 -2
  47. package/dist/esm/index.mjs.map +1 -1
  48. package/dist/esm/index.native.js +2 -2
  49. package/dist/esm/index.native.js.map +1 -1
  50. package/dist/esm/server/oneServe.js +5 -5
  51. package/dist/esm/server/oneServe.js.map +1 -1
  52. package/dist/esm/server/oneServe.mjs +7 -5
  53. package/dist/esm/server/oneServe.mjs.map +1 -1
  54. package/dist/esm/server/oneServe.native.js +7 -5
  55. package/dist/esm/server/oneServe.native.js.map +1 -1
  56. package/dist/esm/useLoader.js +110 -35
  57. package/dist/esm/useLoader.js.map +2 -2
  58. package/dist/esm/useLoader.mjs +117 -38
  59. package/dist/esm/useLoader.mjs.map +1 -1
  60. package/dist/esm/useLoader.native.js +151 -57
  61. package/dist/esm/useLoader.native.js.map +1 -1
  62. package/dist/esm/utils/cleanUrl.js +4 -8
  63. package/dist/esm/utils/cleanUrl.js.map +1 -1
  64. package/dist/esm/utils/cleanUrl.mjs +6 -5
  65. package/dist/esm/utils/cleanUrl.mjs.map +1 -1
  66. package/dist/esm/utils/cleanUrl.native.js +6 -3
  67. package/dist/esm/utils/cleanUrl.native.js.map +1 -1
  68. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
  69. package/package.json +10 -10
  70. package/src/createHandleRequest.ts +6 -2
  71. package/src/index.ts +1 -1
  72. package/src/server/oneServe.ts +12 -6
  73. package/src/types.ts +1 -0
  74. package/src/useLoader.ts +206 -90
  75. package/src/utils/cleanUrl.ts +7 -10
  76. package/types/createHandleRequest.d.ts.map +1 -1
  77. package/types/experimental-useLoaderState.d.ts.map +1 -0
  78. package/types/index.d.ts +1 -1
  79. package/types/index.d.ts.map +1 -1
  80. package/types/server/oneServe.d.ts.map +1 -1
  81. package/types/types.d.ts +1 -0
  82. package/types/types.d.ts.map +1 -1
  83. package/types/useLoader.d.ts +9 -0
  84. package/types/useLoader.d.ts.map +1 -1
  85. package/types/utils/cleanUrl.d.ts +1 -1
  86. package/types/utils/cleanUrl.d.ts.map +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/useLoader.ts"],
4
- "mappings": "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",
5
- "names": []
4
+ "mappings": "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",
5
+ "names": ["preloadedData", "pathname", "loaderJSUrl", "result", "promise", "loader", "data"]
6
6
  }
@@ -1,56 +1,135 @@
1
- import { useEffect, useRef } from "react";
2
- import { useActiveParams, useParams, usePathname } from "./hooks.mjs";
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 promises = {},
10
- errors = {},
11
- loadedData = {};
12
- function useLoader(loader) {
13
- const {
14
- loaderProps: loaderPropsFromServerContext,
15
- loaderData: loaderDataFromServerContext
16
- } = useServerContext() || {};
17
- if (typeof window > "u") return useAsyncFn(loader, loaderPropsFromServerContext || {
18
- path: usePathname(),
19
- params: useActiveParams()
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
- const params = useParams(),
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$/, "").replace(/\?.*/, ""),
27
- preloadedData = loaderPropsFromServerContext?.path === currentPath ? loaderDataFromServerContext : void 0,
28
- currentData = useRef(preloadedData);
29
- if (useEffect(() => {
30
- preloadedData && (loadedData[currentPath] = preloadedData);
31
- }, [preloadedData]), errors[currentPath]) throw errors[currentPath];
32
- const loaded = loadedData[currentPath];
33
- if (typeof loaded < "u") return loaded;
34
- if (!preloadedData) {
35
- if (preloadingLoader[currentPath] && (typeof preloadingLoader[currentPath] == "function" && (preloadingLoader[currentPath] = preloadingLoader[currentPath]()), promises[currentPath] = preloadingLoader[currentPath].then(val => {
36
- loadedData[currentPath] = val;
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 loading loader", err), errors[currentPath] = err, delete promises[currentPath], delete preloadingLoader[currentPath];
39
- })), !promises[currentPath]) {
40
- const getData = async () => {
41
- const loaderJSUrl = getLoaderPath(currentPath, !0);
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 response = await (async () => await dynamicImport(loaderJSUrl))();
44
- return loadedData[currentPath] = response.loader(), loadedData[currentPath];
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
- return console.error(`Error calling loader: ${err}`), errors[currentPath] = err, delete promises[currentPath], null;
106
+ updateState(currentPath, {
107
+ error: err,
108
+ promise: void 0
109
+ });
47
110
  }
48
- };
49
- promises[currentPath] = getData();
50
- }
51
- throw promises[currentPath];
111
+ },
112
+ promise = loadData();
113
+ loaderStateEntry.promise = promise;
52
114
  }
53
- return currentData.current;
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":["useEffect","useRef","useActiveParams","useParams","usePathname","resolveHref","preloadingLoader","getLoaderPath","dynamicImport","weakKey","useServerContext","promises","errors","loadedData","useLoader","loader","loaderProps","loaderPropsFromServerContext","loaderData","loaderDataFromServerContext","window","useAsyncFn","path","params","pathname","currentPath","replace","preloadedData","currentData","loaded","then","val","catch","err","console","error","getData","loaderJSUrl","response","current","results","Map","started","props","key","JSON","stringify","get","set","next","Promise","final"],"sources":["../../src/useLoader.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
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 { useEffect, useRef } from "react";
2
- import { useActiveParams, useParams, usePathname } from "./hooks.native.js";
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 promises = {},
13
- errors = {},
14
- loadedData = {};
15
- function useLoader(loader) {
16
- var {
17
- loaderProps: loaderPropsFromServerContext,
18
- loaderData: loaderDataFromServerContext
19
- } = useServerContext() || {};
20
- if (typeof window > "u") return useAsyncFn(loader, loaderPropsFromServerContext || {
21
- path: usePathname(),
22
- params: useActiveParams()
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
- var params = useParams(),
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$/, "").replace(/\?.*/, ""),
30
- preloadedData = loaderPropsFromServerContext?.path === currentPath ? loaderDataFromServerContext : void 0,
31
- currentData = useRef(preloadedData);
32
- if (useEffect(function () {
33
- preloadedData && (loadedData[currentPath] = preloadedData);
34
- },
35
- // eslint-disable-next-line react-hooks/exhaustive-deps
36
- [preloadedData]), errors[currentPath]) throw errors[currentPath];
37
- var loaded = loadedData[currentPath];
38
- if (typeof loaded < "u") return loaded;
39
- if (!preloadedData) {
40
- if (preloadingLoader[currentPath] && (typeof preloadingLoader[currentPath] == "function" && (preloadingLoader[currentPath] = preloadingLoader[currentPath]()), promises[currentPath] = preloadingLoader[currentPath].then(function (val) {
41
- loadedData[currentPath] = val;
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 loading loader", err), errors[currentPath] = err, delete promises[currentPath], delete preloadingLoader[currentPath];
44
- })), !promises[currentPath]) {
45
- var getData = async function () {
46
- var loaderJSUrl = getLoaderPath(currentPath, !0);
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 response = await async function () {
49
- var nativeLoaderJSUrl = `${loaderJSUrl}?platform=ios`;
50
- try {
51
- var loaderJsCodeResp = await fetch(nativeLoaderJSUrl);
52
- if (!loaderJsCodeResp.ok) throw new Error(`Response not ok: ${loaderJsCodeResp.status}`);
53
- var loaderJsCode = await loaderJsCodeResp.text(),
54
- result = eval(`() => { var exports = {}; ${loaderJsCode}; return exports; }`)();
55
- if (typeof result.loader != "function") throw new Error("Loader code isn't exporting a `loader` function");
56
- return result;
57
- } catch (e) {
58
- return console.error(`Error fetching loader from URL: ${nativeLoaderJSUrl}, ${e}`), {
59
- loader: function () {
60
- return {};
61
- }
62
- };
63
- }
64
- return await dynamicImport(loaderJSUrl);
65
- }();
66
- return loadedData[currentPath] = response.loader(), loadedData[currentPath];
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
- return console.error(`Error calling loader: ${err}`), errors[currentPath] = err, delete promises[currentPath], null;
143
+ updateState(currentPath, {
144
+ error: err,
145
+ promise: void 0
146
+ });
69
147
  }
70
- };
71
- promises[currentPath] = getData();
72
- }
73
- throw promises[currentPath];
148
+ },
149
+ promise = loadData();
150
+ loaderStateEntry.promise = promise;
74
151
  }
75
- return currentData.current;
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
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","useActiveParams","useParams","usePathname","resolveHref","preloadingLoader","getLoaderPath","dynamicImport","weakKey","useServerContext","_instanceof","left","right","Symbol","hasInstance","promises","errors","loadedData","useLoader","loader","loaderProps","loaderPropsFromServerContext","loaderData","loaderDataFromServerContext","window","useAsyncFn","path","params","pathname","currentPath","replace","preloadedData","currentData","loaded","then","val","catch","err","console","error","getData","loaderJSUrl","response","nativeLoaderJSUrl","loaderJsCodeResp","fetch","ok","Error","status","loaderJsCode","text","result","eval","e"],"sources":["../../src/useLoader.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useSyncExternalStore","useParams","usePathname","resolveHref","preloadingLoader","getLoaderPath","dynamicImport","weakKey","useServerContext","_instanceof","left","right","Symbol","hasInstance","loaderState","subscribers","Set","updateState","path","updates","forEach","callback","subscribe","add","delete","getLoaderState","preloadedData2","data","error","promise","state","hasLoadedOnce","refetchLoader","pathname2","cacheBust","Date","now","loaderJSUrl2","module2","result2","loader","timestamp","err","useLoaderState","loaderProps","loaderPropsFromServerContext","loaderData","loaderDataFromServerContext","params","pathname","currentPath","replace","window","serverData","useAsyncFn","refetch","preloadedData","loaderStateEntry","then","val","catch","console","loadData","loaderJSUrl","nativeLoaderJSUrl","loaderJsCodeResp","fetch","ok","Error","status","loaderJsCode","text","result","eval","e","module"],"sources":["../../src/useLoader.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -13,16 +13,12 @@ const isClient = typeof window < "u", clientSideURL = isClient ? getURL() : "";
13
13
  function getPreloadPath(currentPath) {
14
14
  return `${clientSideURL}/assets/${cleanUrl(currentPath.slice(1))}${PRELOAD_JS_POSTFIX}`;
15
15
  }
16
- function getLoaderPath(currentPath, includeUrl = isNative) {
17
- const baseURL = includeUrl ? getURL() : "", devPath = process.env.NODE_ENV === "development" ? "/_one" : "", currentPathUrl = new URL(
18
- currentPath,
19
- "http://example.com"
20
- /* not important, just for `new URL()` to work */
21
- );
22
- return `${baseURL}${devPath}/assets/${cleanUrl(currentPathUrl.pathname.slice(1))}${LOADER_JS_POSTFIX}`;
16
+ function getLoaderPath(currentPath, includeUrl = isNative, cacheBust) {
17
+ const baseURL = includeUrl ? getURL() : "", devPath = process.env.NODE_ENV === "development" ? "/_one" : "", currentPathUrl = new URL(currentPath, "http://example.com"), cleanedUrl = cleanUrl(currentPathUrl.pathname.slice(1)), cacheBustSegment = cacheBust ? `_refetch_${cacheBust}_` : "";
18
+ return `${baseURL}${devPath}/assets/${cleanedUrl}${cacheBustSegment}${LOADER_JS_POSTFIX}`;
23
19
  }
24
20
  function getPathFromLoaderPath(loaderPath) {
25
- return loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replaceAll(/_/g, "/");
21
+ return loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replace(/_refetch_\d+_/, "").replaceAll(/_/g, "/");
26
22
  }
27
23
  export {
28
24
  getLoaderPath,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/utils/cleanUrl.ts"],
4
- "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAE7B,SAAS,SAAS,MAAc;AAC9B,SACE,aAAa,IAAI,EACd,WAAW,KAAK,GAAG,EAEnB,QAAQ,MAAM,EAAE;AAEvB;AAEA,MAAM,WAAW,OAAO,SAAW,KAC7B,gBAAgB,WAAW,OAAO,IAAI;AAErC,SAAS,eAAe,aAAqB;AAClD,SAAO,GAAG,aAAa,WAAW,SAAS,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG,kBAAkB;AACvF;AAEO,SAAS,cACd,aAEA,aAAa,UACb;AACA,QAAM,UAAU,aAAa,OAAO,IAAI,IAClC,UAAU,QAAQ,IAAI,aAAa,gBAAgB,UAAU,IAE7D,iBAAiB,IAAI;AAAA,IACzB;AAAA,IACA;AAAA;AAAA,EACF;AAEA,SAAO,GAAG,OAAO,GAAG,OAAO,WAAW,SAAS,eAAe,SAAS,MAAM,CAAC,CAAC,CAAC,GAAG,iBAAiB;AACtG;AAEO,SAAS,sBAAsB,YAAoB;AACxD,SAAO,WACJ,QAAQ,yBAAyB,EAAE,EACnC,QAAQ,sBAAsB,EAAE,EAChC,WAAW,MAAM,GAAG;AACzB;",
4
+ "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAE7B,SAAS,SAAS,MAAc;AAC9B,SACE,aAAa,IAAI,EACd,WAAW,KAAK,GAAG,EAEnB,QAAQ,MAAM,EAAE;AAEvB;AAEA,MAAM,WAAW,OAAO,SAAW,KAC7B,gBAAgB,WAAW,OAAO,IAAI;AAErC,SAAS,eAAe,aAAqB;AAClD,SAAO,GAAG,aAAa,WAAW,SAAS,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG,kBAAkB;AACvF;AAEO,SAAS,cAAc,aAAqB,aAAa,UAAU,WAAoB;AAC5F,QAAM,UAAU,aAAa,OAAO,IAAI,IAClC,UAAU,QAAQ,IAAI,aAAa,gBAAgB,UAAU,IAE7D,iBAAiB,IAAI,IAAI,aAAa,oBAAoB,GAE1D,aAAa,SAAS,eAAe,SAAS,MAAM,CAAC,CAAC,GACtD,mBAAmB,YAAY,YAAY,SAAS,MAAM;AAEhE,SAAO,GAAG,OAAO,GAAG,OAAO,WAAW,UAAU,GAAG,gBAAgB,GAAG,iBAAiB;AACzF;AAEO,SAAS,sBAAsB,YAAoB;AACxD,SAAO,WACJ,QAAQ,yBAAyB,EAAE,EACnC,QAAQ,sBAAsB,EAAE,EAChC,QAAQ,iBAAiB,EAAE,EAC3B,WAAW,MAAM,GAAG;AACzB;",
5
5
  "names": []
6
6
  }
@@ -9,15 +9,16 @@ const isClient = typeof window < "u",
9
9
  function getPreloadPath(currentPath) {
10
10
  return `${clientSideURL}/assets/${cleanUrl(currentPath.slice(1))}${PRELOAD_JS_POSTFIX}`;
11
11
  }
12
- function getLoaderPath(currentPath, includeUrl = isNative) {
12
+ function getLoaderPath(currentPath, includeUrl = isNative, cacheBust) {
13
13
  const baseURL = includeUrl ? getURL() : "",
14
14
  devPath = process.env.NODE_ENV === "development" ? "/_one" : "",
15
- currentPathUrl = new URL(currentPath, "http://example.com"
16
- /* not important, just for `new URL()` to work */);
17
- return `${baseURL}${devPath}/assets/${cleanUrl(currentPathUrl.pathname.slice(1))}${LOADER_JS_POSTFIX}`;
15
+ currentPathUrl = new URL(currentPath, "http://example.com"),
16
+ cleanedUrl = cleanUrl(currentPathUrl.pathname.slice(1)),
17
+ cacheBustSegment = cacheBust ? `_refetch_${cacheBust}_` : "";
18
+ return `${baseURL}${devPath}/assets/${cleanedUrl}${cacheBustSegment}${LOADER_JS_POSTFIX}`;
18
19
  }
19
20
  function getPathFromLoaderPath(loaderPath) {
20
- return loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replaceAll(/_/g, "/");
21
+ return loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replace(/_refetch_\d+_/, "").replaceAll(/_/g, "/");
21
22
  }
22
23
  export { getLoaderPath, getPathFromLoaderPath, getPreloadPath };
23
24
  //# sourceMappingURL=cleanUrl.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["isNative","LOADER_JS_POSTFIX","LOADER_JS_POSTFIX_REGEX","PRELOAD_JS_POSTFIX","getURL","removeSearch","cleanUrl","path","replaceAll","replace","isClient","window","clientSideURL","getPreloadPath","currentPath","slice","getLoaderPath","includeUrl","baseURL","devPath","process","env","NODE_ENV","currentPathUrl","URL","pathname","getPathFromLoaderPath","loaderPath"],"sources":["../../../src/utils/cleanUrl.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,QAAA,EACAC,iBAAA,EACAC,uBAAA,EACAC,kBAAA,QACK;AACP,SAASC,MAAA,QAAc;AACvB,SAASC,YAAA,QAAoB;AAE7B,SAASC,SAASC,IAAA,EAAc;EAC9B,OACEF,YAAA,CAAaE,IAAI,EACdC,UAAA,CAAW,KAAK,GAAG,EAEnBC,OAAA,CAAQ,MAAM,EAAE;AAEvB;AAEA,MAAMC,QAAA,GAAW,OAAOC,MAAA,GAAW;EAC7BC,aAAA,GAAgBF,QAAA,GAAWN,MAAA,CAAO,IAAI;AAErC,SAASS,eAAeC,WAAA,EAAqB;EAClD,OAAO,GAAGF,aAAa,WAAWN,QAAA,CAASQ,WAAA,CAAYC,KAAA,CAAM,CAAC,CAAC,CAAC,GAAGZ,kBAAkB;AACvF;AAEO,SAASa,cACdF,WAAA,EAEAG,UAAA,GAAajB,QAAA,EACb;EACA,MAAMkB,OAAA,GAAUD,UAAA,GAAab,MAAA,CAAO,IAAI;IAClCe,OAAA,GAAUC,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,gBAAgB,UAAU;IAE7DC,cAAA,GAAiB,IAAIC,GAAA,CACzBV,WAAA,EACA;IAAA,iDACF;EAEA,OAAO,GAAGI,OAAO,GAAGC,OAAO,WAAWb,QAAA,CAASiB,cAAA,CAAeE,QAAA,CAASV,KAAA,CAAM,CAAC,CAAC,CAAC,GAAGd,iBAAiB;AACtG;AAEO,SAASyB,sBAAsBC,UAAA,EAAoB;EACxD,OAAOA,UAAA,CACJlB,OAAA,CAAQP,uBAAA,EAAyB,EAAE,EACnCO,OAAA,CAAQ,sBAAsB,EAAE,EAChCD,UAAA,CAAW,MAAM,GAAG;AACzB","ignoreList":[]}
1
+ {"version":3,"names":["isNative","LOADER_JS_POSTFIX","LOADER_JS_POSTFIX_REGEX","PRELOAD_JS_POSTFIX","getURL","removeSearch","cleanUrl","path","replaceAll","replace","isClient","window","clientSideURL","getPreloadPath","currentPath","slice","getLoaderPath","includeUrl","cacheBust","baseURL","devPath","process","env","NODE_ENV","currentPathUrl","URL","cleanedUrl","pathname","cacheBustSegment","getPathFromLoaderPath","loaderPath"],"sources":["../../../src/utils/cleanUrl.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,QAAA,EACAC,iBAAA,EACAC,uBAAA,EACAC,kBAAA,QACK;AACP,SAASC,MAAA,QAAc;AACvB,SAASC,YAAA,QAAoB;AAE7B,SAASC,SAASC,IAAA,EAAc;EAC9B,OACEF,YAAA,CAAaE,IAAI,EACdC,UAAA,CAAW,KAAK,GAAG,EAEnBC,OAAA,CAAQ,MAAM,EAAE;AAEvB;AAEA,MAAMC,QAAA,GAAW,OAAOC,MAAA,GAAW;EAC7BC,aAAA,GAAgBF,QAAA,GAAWN,MAAA,CAAO,IAAI;AAErC,SAASS,eAAeC,WAAA,EAAqB;EAClD,OAAO,GAAGF,aAAa,WAAWN,QAAA,CAASQ,WAAA,CAAYC,KAAA,CAAM,CAAC,CAAC,CAAC,GAAGZ,kBAAkB;AACvF;AAEO,SAASa,cAAcF,WAAA,EAAqBG,UAAA,GAAajB,QAAA,EAAUkB,SAAA,EAAoB;EAC5F,MAAMC,OAAA,GAAUF,UAAA,GAAab,MAAA,CAAO,IAAI;IAClCgB,OAAA,GAAUC,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,gBAAgB,UAAU;IAE7DC,cAAA,GAAiB,IAAIC,GAAA,CAAIX,WAAA,EAAa,oBAAoB;IAE1DY,UAAA,GAAapB,QAAA,CAASkB,cAAA,CAAeG,QAAA,CAASZ,KAAA,CAAM,CAAC,CAAC;IACtDa,gBAAA,GAAmBV,SAAA,GAAY,YAAYA,SAAS,MAAM;EAEhE,OAAO,GAAGC,OAAO,GAAGC,OAAO,WAAWM,UAAU,GAAGE,gBAAgB,GAAG3B,iBAAiB;AACzF;AAEO,SAAS4B,sBAAsBC,UAAA,EAAoB;EACxD,OAAOA,UAAA,CACJrB,OAAA,CAAQP,uBAAA,EAAyB,EAAE,EACnCO,OAAA,CAAQ,sBAAsB,EAAE,EAChCA,OAAA,CAAQ,iBAAiB,EAAE,EAC3BD,UAAA,CAAW,MAAM,GAAG;AACzB","ignoreList":[]}
@@ -11,13 +11,16 @@ function getPreloadPath(currentPath) {
11
11
  }
12
12
  function getLoaderPath(currentPath) {
13
13
  var includeUrl = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : isNative,
14
+ cacheBust = arguments.length > 2 ? arguments[2] : void 0,
14
15
  baseURL = includeUrl ? getURL() : "",
15
16
  devPath = process.env.NODE_ENV === "development" ? "/_one" : "",
16
- currentPathUrl = new URL(currentPath, "http://example.com");
17
- return `${baseURL}${devPath}/assets/${cleanUrl(currentPathUrl.pathname.slice(1))}${LOADER_JS_POSTFIX}`;
17
+ currentPathUrl = new URL(currentPath, "http://example.com"),
18
+ cleanedUrl = cleanUrl(currentPathUrl.pathname.slice(1)),
19
+ cacheBustSegment = cacheBust ? `_refetch_${cacheBust}_` : "";
20
+ return `${baseURL}${devPath}/assets/${cleanedUrl}${cacheBustSegment}${LOADER_JS_POSTFIX}`;
18
21
  }
19
22
  function getPathFromLoaderPath(loaderPath) {
20
- return loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replaceAll(/_/g, "/");
23
+ return loaderPath.replace(LOADER_JS_POSTFIX_REGEX, "").replace(/^(\/_one)?\/assets/, "").replace(/_refetch_\d+_/, "").replaceAll(/_/g, "/");
21
24
  }
22
25
  export { getLoaderPath, getPathFromLoaderPath, getPreloadPath };
23
26
  //# sourceMappingURL=cleanUrl.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["isNative","LOADER_JS_POSTFIX","LOADER_JS_POSTFIX_REGEX","PRELOAD_JS_POSTFIX","getURL","removeSearch","cleanUrl","path","replaceAll","replace","isClient","window","clientSideURL","getPreloadPath","currentPath","slice","getLoaderPath","includeUrl","arguments","length","baseURL","devPath","process","env","NODE_ENV","currentPathUrl","URL","pathname","getPathFromLoaderPath","loaderPath"],"sources":["../../../src/utils/cleanUrl.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAAA,QAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,kBAAA;AAAA,SACEC,MAAA;AAAA,SACAC,YAAA;AAAA,SACAC,SAAAC,IAAA;EACA,OAAAF,YAAA,CAAAE,IAAA,EAAAC,UAAA,WAAAC,OAAA;AAAA;AAEF,IAAAC,QAAS,UAAAC,MAAc;EAAAC,aAAA,GAAAF,QAAA,GAAAN,MAAA;AACvB,SAASS,eAAAC,WAAoB;EAE7B,OAAS,GAAAF,aAAuB,WAAAN,QAAA,CAAAQ,WAAA,CAAAC,KAAA,OAAAZ,kBAAA;AAC9B;AAMF,SAAAa,cAAAF,WAAA;EAEA,IAAMG,UAAA,GAAWC,SAAO,CAAAC,MAAW,GAC7B,KAAAD,SAAA,EAAgB,WAAW,IAAAA,SAAW,MAAAlB,QAAA;IAAAoB,OAAA,GAAAH,UAAA,GAAAb,MAAA;IAAAiB,OAAA,GAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA;IAAAC,cAAA,OAAAC,GAAA,CAAAZ,WAAA;EAErC,OAAS,GAAAM,OAAA,GAAAC,OAAe,WAAqBf,QAAA,CAAAmB,cAAA,CAAAE,QAAA,CAAAZ,KAAA,OAAAd,iBAAA;AAClD;AACF,SAAA2B,sBAAAC,UAAA;EAEO,OAASA,UAAA,CAAApB,OACd,CAAAP,uBAEa,MAAAO,OACb,2BAAAD,UAAA;AACA;AAG2B,SACzBQ,aACA,EAAAY,qBAAA,EACFf,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["isNative","LOADER_JS_POSTFIX","LOADER_JS_POSTFIX_REGEX","PRELOAD_JS_POSTFIX","getURL","removeSearch","cleanUrl","path","replaceAll","replace","isClient","window","clientSideURL","getPreloadPath","currentPath","slice","getLoaderPath","includeUrl","arguments","length","cacheBust","baseURL","devPath","process","env","NODE_ENV","currentPathUrl","URL","cleanedUrl","pathname","cacheBustSegment","getPathFromLoaderPath","loaderPath"],"sources":["../../../src/utils/cleanUrl.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAAA,QAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,kBAAA;AAAA,SACEC,MAAA;AAAA,SACAC,YAAA;AAAA,SACAC,SAAAC,IAAA;EACA,OAAAF,YAAA,CAAAE,IAAA,EAAAC,UAAA,WAAAC,OAAA;AAAA;AAEF,IAAAC,QAAS,UAAAC,MAAc;EAAAC,aAAA,GAAAF,QAAA,GAAAN,MAAA;AACvB,SAASS,eAAAC,WAAoB;EAE7B,OAAS,GAAAF,aAAuB,WAAAN,QAAA,CAAAQ,WAAA,CAAAC,KAAA,OAAAZ,kBAAA;AAC9B;AAMF,SAAAa,cAAAF,WAAA;EAEA,IAAMG,UAAA,GAAWC,SAAO,CAAAC,MAAW,GAC7B,KAAAD,SAAA,EAAgB,WAAW,IAAAA,SAAW,MAAAlB,QAAA;IAAAoB,SAAA,GAAAF,SAAA,CAAAC,MAAA,OAAAD,SAAA;IAAAG,OAAA,GAAAJ,UAAA,GAAAb,MAAA;IAAAkB,OAAA,GAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA;IAAAC,cAAA,OAAAC,GAAA,CAAAb,WAAA;IAAAc,UAAA,GAAAtB,QAAA,CAAAoB,cAAA,CAAAG,QAAA,CAAAd,KAAA;IAAAe,gBAAA,GAAAV,SAAA,eAAAA,SAAA;EAErC,OAAS,GAAAC,OAAA,GAAAC,OAAe,WAAqBM,UAAA,GAAAE,gBAAA,GAAA7B,iBAAA;AAClD;AACF,SAAA8B,sBAAAC,UAAA;EAEO,OAASA,UAAA,CAAAvB,OAAc,CAAAP,uBAAkC,MAAAO,OAAU,qBAAoB,MAAAA,OAAA,sBAAAD,UAAA;AAC5F;AAQA,SACFQ,aAAA,EAEOe,qBAAS,EACdlB,cAAO","ignoreList":[]}