@taujs/react 0.0.5 → 0.0.7

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/index.d.ts CHANGED
@@ -7,7 +7,7 @@ type SSRStore<T> = {
7
7
  setData: (newData: T) => void;
8
8
  subscribe: (callback: () => void) => () => void;
9
9
  };
10
- declare const createSSRStore: <T>(initialDataOrPromise: T | Promise<T>) => SSRStore<T>;
10
+ declare const createSSRStore: <T>(initialDataOrPromise: T | Promise<T> | (() => Promise<T>)) => SSRStore<T>;
11
11
  declare const SSRStoreProvider: React.FC<React.PropsWithChildren<{
12
12
  store: SSRStore<Record<string, unknown>>;
13
13
  }>>;
package/dist/index.js CHANGED
@@ -4,19 +4,29 @@ import { jsx } from "react/jsx-runtime";
4
4
  var createSSRStore = (initialDataOrPromise) => {
5
5
  let currentData;
6
6
  let status;
7
+ let lastError;
7
8
  const subscribers = /* @__PURE__ */ new Set();
8
9
  let serverDataPromise;
9
- if (initialDataOrPromise instanceof Promise) {
10
+ const handleError = (error) => {
11
+ console.error("Failed to load initial data:", error);
12
+ lastError = error instanceof Error ? error : new Error(String(JSON.stringify(error)));
13
+ status = "error";
14
+ };
15
+ if (typeof initialDataOrPromise === "function") {
16
+ status = "pending";
17
+ const promiseFromFunction = initialDataOrPromise();
18
+ serverDataPromise = promiseFromFunction.then((data) => {
19
+ currentData = data;
20
+ status = "success";
21
+ subscribers.forEach((callback) => callback());
22
+ }).catch(handleError);
23
+ } else if (initialDataOrPromise instanceof Promise) {
10
24
  status = "pending";
11
25
  serverDataPromise = initialDataOrPromise.then((data) => {
12
26
  currentData = data;
13
27
  status = "success";
14
28
  subscribers.forEach((callback) => callback());
15
- }).catch((error) => {
16
- console.error("Failed to load initial data:", error);
17
- status = "error";
18
- }).then(() => {
19
- });
29
+ }).catch(handleError);
20
30
  } else {
21
31
  currentData = initialDataOrPromise;
22
32
  status = "success";
@@ -35,16 +45,18 @@ var createSSRStore = (initialDataOrPromise) => {
35
45
  if (status === "pending") {
36
46
  throw serverDataPromise;
37
47
  } else if (status === "error") {
38
- throw new Error("An error occurred while fetching the data.");
48
+ throw new Error(`SSR data fetch failed: ${lastError?.message || "Unknown error"}`);
39
49
  }
50
+ if (currentData === void 0) throw new Error("SSR data is undefined - store initialisation problem");
40
51
  return currentData;
41
52
  };
42
53
  const getServerSnapshot = () => {
43
54
  if (status === "pending") {
44
55
  throw serverDataPromise;
45
56
  } else if (status === "error") {
46
- throw new Error("Data is not available on the server.");
57
+ throw new Error(`Server-side data fetch failed: ${lastError?.message || "Unknown error"}`);
47
58
  }
59
+ if (currentData === void 0) throw new Error("Server data not available - check SSR configuration");
48
60
  return currentData;
49
61
  };
50
62
  return { getSnapshot, getServerSnapshot, setData, subscribe };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taujs/react",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "description": "taujs | τjs",
5
5
  "author": "Aoede <taujs@aoede.uk.net> (https://www.aoede.uk.net)",
6
6
  "license": "MIT",
@@ -60,7 +60,7 @@
60
60
  "vitest": "^2.0.5"
61
61
  },
62
62
  "peerDependencies": {
63
- "@taujs/server": "^0.2.0",
63
+ "@taujs/server": "^0.3.0",
64
64
  "@vitejs/plugin-react": "^4.6.0",
65
65
  "react": "^19.0.0",
66
66
  "react-dom": "^19.0.0",