@simplestack/store 0.7.0 → 0.7.2

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.
@@ -0,0 +1,120 @@
1
+ import { shallow } from "./shallow.js";
2
+ describe("shallow", () => {
3
+ describe("primitives", () => {
4
+ it("should return true for identical primitives", () => {
5
+ expect(shallow(1, 1)).toBe(true);
6
+ expect(shallow("hello", "hello")).toBe(true);
7
+ expect(shallow(true, true)).toBe(true);
8
+ expect(shallow(null, null)).toBe(true);
9
+ expect(shallow(undefined, undefined)).toBe(true);
10
+ });
11
+ it("should return false for different primitives", () => {
12
+ expect(shallow(1, 2)).toBe(false);
13
+ expect(shallow("hello", "world")).toBe(false);
14
+ expect(shallow(true, false)).toBe(false);
15
+ expect(shallow(null, undefined)).toBe(false);
16
+ });
17
+ it("should handle NaN correctly", () => {
18
+ expect(shallow(Number.NaN, Number.NaN)).toBe(true);
19
+ });
20
+ });
21
+ describe("arrays", () => {
22
+ it("should return true for shallowly equal arrays", () => {
23
+ expect(shallow([1, 2, 3], [1, 2, 3])).toBe(true);
24
+ expect(shallow(["a", "b"], ["a", "b"])).toBe(true);
25
+ expect(shallow([], [])).toBe(true);
26
+ });
27
+ it("should return false for arrays with different values", () => {
28
+ expect(shallow([1, 2, 3], [1, 2, 4])).toBe(false);
29
+ expect(shallow([1, 2], [1, 2, 3])).toBe(false);
30
+ });
31
+ it("should return false for arrays with same nested objects but different references", () => {
32
+ const obj1 = { a: 1 };
33
+ const obj2 = { a: 1 };
34
+ expect(shallow([obj1], [obj2])).toBe(false);
35
+ });
36
+ it("should return true for arrays with same object references", () => {
37
+ const obj = { a: 1 };
38
+ expect(shallow([obj], [obj])).toBe(true);
39
+ });
40
+ });
41
+ describe("objects", () => {
42
+ it("should return true for shallowly equal objects", () => {
43
+ expect(shallow({ a: 1, b: 2 }, { a: 1, b: 2 })).toBe(true);
44
+ expect(shallow({}, {})).toBe(true);
45
+ });
46
+ it("should return false for objects with different values", () => {
47
+ expect(shallow({ a: 1 }, { a: 2 })).toBe(false);
48
+ });
49
+ it("should return false for objects with different keys", () => {
50
+ expect(shallow({ a: 1 }, { b: 1 })).toBe(false);
51
+ expect(shallow({ a: 1 }, { a: 1, b: 2 })).toBe(false);
52
+ });
53
+ it("should return false for nested objects with different references", () => {
54
+ expect(shallow({ a: { b: 1 } }, { a: { b: 1 } })).toBe(false);
55
+ });
56
+ it("should return true for objects with same nested references", () => {
57
+ const nested = { b: 1 };
58
+ expect(shallow({ a: nested }, { a: nested })).toBe(true);
59
+ });
60
+ });
61
+ describe("Maps", () => {
62
+ it("should return true for shallowly equal Maps", () => {
63
+ const map1 = new Map([
64
+ ["a", 1],
65
+ ["b", 2],
66
+ ]);
67
+ const map2 = new Map([
68
+ ["a", 1],
69
+ ["b", 2],
70
+ ]);
71
+ expect(shallow(map1, map2)).toBe(true);
72
+ });
73
+ it("should return false for Maps with different values", () => {
74
+ const map1 = new Map([["a", 1]]);
75
+ const map2 = new Map([["a", 2]]);
76
+ expect(shallow(map1, map2)).toBe(false);
77
+ });
78
+ it("should return false for Maps with different keys", () => {
79
+ const map1 = new Map([["a", 1]]);
80
+ const map2 = new Map([["b", 1]]);
81
+ expect(shallow(map1, map2)).toBe(false);
82
+ });
83
+ });
84
+ describe("Sets", () => {
85
+ it("should return true for shallowly equal Sets", () => {
86
+ const set1 = new Set([1, 2, 3]);
87
+ const set2 = new Set([1, 2, 3]);
88
+ expect(shallow(set1, set2)).toBe(true);
89
+ });
90
+ it("should return false for Sets with different values", () => {
91
+ const set1 = new Set([1, 2]);
92
+ const set2 = new Set([1, 3]);
93
+ expect(shallow(set1, set2)).toBe(false);
94
+ });
95
+ it("should return false for Sets with different sizes", () => {
96
+ const set1 = new Set([1, 2]);
97
+ const set2 = new Set([1, 2, 3]);
98
+ expect(shallow(set1, set2)).toBe(false);
99
+ });
100
+ });
101
+ describe("mixed types", () => {
102
+ it("should return false for different types", () => {
103
+ expect(shallow([], {})).toBe(false);
104
+ expect(shallow({}, null)).toBe(false);
105
+ expect(shallow(1, "1")).toBe(false);
106
+ });
107
+ it("should return false for object vs array", () => {
108
+ expect(shallow({ 0: "a", 1: "b" }, ["a", "b"])).toBe(false);
109
+ });
110
+ });
111
+ describe("same reference", () => {
112
+ it("should return true for same reference", () => {
113
+ const arr = [1, 2, 3];
114
+ const obj = { a: 1 };
115
+ expect(shallow(arr, arr)).toBe(true);
116
+ expect(shallow(obj, obj)).toBe(true);
117
+ });
118
+ });
119
+ });
120
+ //# sourceMappingURL=shallow.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shallow.test.js","sourceRoot":"","sources":["../src/shallow.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ssr.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssr.test.d.ts","sourceRoot":"","sources":["../src/ssr.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,236 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { act, screen } from "@testing-library/react";
3
+ import React, { useEffect } from "react";
4
+ import { renderToString } from "react-dom/server";
5
+ import { describe, expect, it, vi } from "vitest";
6
+ import { store } from "./index";
7
+ import { useStoreValue } from "./react";
8
+ describe("SSR Behavior", () => {
9
+ it("should handle different states between server and client correctly", async () => {
10
+ const { hydrateRoot } = await vi.importActual("react-dom/client");
11
+ const countStore = store(0);
12
+ function Counter() {
13
+ const count = useStoreValue(countStore);
14
+ useEffect(() => {
15
+ countStore.set((c) => c + 1);
16
+ }, []);
17
+ return _jsxs("div", { children: ["count: ", count] });
18
+ }
19
+ const markup = renderToString(_jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(Counter, {}) }));
20
+ const container = document.createElement("div");
21
+ document.body.appendChild(container);
22
+ container.innerHTML = markup;
23
+ expect(container).toHaveTextContent(/count: 0/);
24
+ await act(async () => {
25
+ hydrateRoot(container, _jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(Counter, {}) }));
26
+ });
27
+ const countText = await screen.findByText("count: 1");
28
+ expect(countText).toBeInTheDocument();
29
+ document.body.removeChild(container);
30
+ });
31
+ it("should not have hydration errors when state changes during hydration", async () => {
32
+ const { hydrateRoot } = await vi.importActual("react-dom/client");
33
+ const countStore = store(0);
34
+ const Component = () => {
35
+ const count = useStoreValue(countStore);
36
+ return _jsxs("div", { children: ["count: ", count] });
37
+ };
38
+ const markup = renderToString(_jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(Component, {}) }));
39
+ const container = document.createElement("div");
40
+ document.body.appendChild(container);
41
+ container.innerHTML = markup;
42
+ expect(container).toHaveTextContent(/count: 0/);
43
+ const consoleMock = vi.spyOn(console, "error");
44
+ const hydratePromise = act(async () => {
45
+ hydrateRoot(container, _jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(Component, {}) }));
46
+ });
47
+ // Update store during hydration
48
+ countStore.set(1);
49
+ await hydratePromise;
50
+ expect(consoleMock).toHaveBeenCalledTimes(0);
51
+ const countText = await screen.findByText("count: 1");
52
+ expect(countText).toBeInTheDocument();
53
+ document.body.removeChild(container);
54
+ });
55
+ it("should handle object stores with updates during hydration", async () => {
56
+ const { hydrateRoot } = await vi.importActual("react-dom/client");
57
+ const userStore = store({ name: "Alice", age: 30 });
58
+ const Component = () => {
59
+ const user = useStoreValue(userStore);
60
+ return (_jsxs("div", { children: ["user: ", user?.name, ", ", user?.age] }));
61
+ };
62
+ const markup = renderToString(_jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(Component, {}) }));
63
+ const container = document.createElement("div");
64
+ document.body.appendChild(container);
65
+ container.innerHTML = markup;
66
+ expect(container).toHaveTextContent(/user: Alice, 30/);
67
+ const consoleMock = vi.spyOn(console, "error");
68
+ const hydratePromise = act(async () => {
69
+ hydrateRoot(container, _jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(Component, {}) }));
70
+ });
71
+ // Update store during hydration
72
+ userStore.set({ name: "Bob", age: 25 });
73
+ await hydratePromise;
74
+ expect(consoleMock).toHaveBeenCalledTimes(0);
75
+ const userText = await screen.findByText("user: Bob, 25");
76
+ expect(userText).toBeInTheDocument();
77
+ document.body.removeChild(container);
78
+ });
79
+ it("should handle selected stores with updates during hydration", async () => {
80
+ const { hydrateRoot } = await vi.importActual("react-dom/client");
81
+ const userStore = store({ name: "Alice", age: 30 });
82
+ const nameStore = userStore.select("name");
83
+ const Component = () => {
84
+ const name = useStoreValue(nameStore);
85
+ return _jsxs("div", { children: ["name: ", name] });
86
+ };
87
+ const markup = renderToString(_jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(Component, {}) }));
88
+ const container = document.createElement("div");
89
+ document.body.appendChild(container);
90
+ container.innerHTML = markup;
91
+ expect(container).toHaveTextContent(/name: Alice/);
92
+ const consoleMock = vi.spyOn(console, "error");
93
+ const hydratePromise = act(async () => {
94
+ hydrateRoot(container, _jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(Component, {}) }));
95
+ });
96
+ // Update parent store during hydration
97
+ userStore.set({ name: "Charlie", age: 35 });
98
+ await hydratePromise;
99
+ expect(consoleMock).toHaveBeenCalledTimes(0);
100
+ const nameText = await screen.findByText("name: Charlie");
101
+ expect(nameText).toBeInTheDocument();
102
+ document.body.removeChild(container);
103
+ });
104
+ it("should handle multiple components with shared store", async () => {
105
+ const { hydrateRoot } = await vi.importActual("react-dom/client");
106
+ const counterStore = store(0);
107
+ const ComponentA = () => {
108
+ const count = useStoreValue(counterStore);
109
+ return _jsxs("div", { children: ["ComponentA: ", count] });
110
+ };
111
+ const ComponentB = () => {
112
+ const count = useStoreValue(counterStore);
113
+ return _jsxs("div", { children: ["ComponentB: ", count] });
114
+ };
115
+ const App = () => (_jsxs(_Fragment, { children: [_jsx(ComponentA, {}), _jsx(ComponentB, {})] }));
116
+ const markup = renderToString(_jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(App, {}) }));
117
+ const container = document.createElement("div");
118
+ document.body.appendChild(container);
119
+ container.innerHTML = markup;
120
+ expect(container).toHaveTextContent(/ComponentA: 0/);
121
+ expect(container).toHaveTextContent(/ComponentB: 0/);
122
+ const consoleMock = vi.spyOn(console, "error");
123
+ const hydratePromise = act(async () => {
124
+ hydrateRoot(container, _jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(App, {}) }));
125
+ });
126
+ // Update during hydration
127
+ counterStore.set(42);
128
+ await hydratePromise;
129
+ expect(consoleMock).toHaveBeenCalledTimes(0);
130
+ const textA = await screen.findByText("ComponentA: 42");
131
+ const textB = await screen.findByText("ComponentB: 42");
132
+ expect(textA).toBeInTheDocument();
133
+ expect(textB).toBeInTheDocument();
134
+ document.body.removeChild(container);
135
+ });
136
+ it("should handle array stores with updates during hydration", async () => {
137
+ const { hydrateRoot } = await vi.importActual("react-dom/client");
138
+ const itemsStore = store(["a", "b", "c"]);
139
+ const Component = () => {
140
+ const items = useStoreValue(itemsStore);
141
+ return _jsxs("div", { children: ["items: ", items?.join(", ")] });
142
+ };
143
+ const markup = renderToString(_jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(Component, {}) }));
144
+ const container = document.createElement("div");
145
+ document.body.appendChild(container);
146
+ container.innerHTML = markup;
147
+ expect(container).toHaveTextContent(/items: a, b, c/);
148
+ const consoleMock = vi.spyOn(console, "error");
149
+ const hydratePromise = act(async () => {
150
+ hydrateRoot(container, _jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(Component, {}) }));
151
+ });
152
+ // Update during hydration
153
+ itemsStore.set(["x", "y", "z"]);
154
+ await hydratePromise;
155
+ expect(consoleMock).toHaveBeenCalledTimes(0);
156
+ const itemsText = await screen.findByText("items: x, y, z");
157
+ expect(itemsText).toBeInTheDocument();
158
+ document.body.removeChild(container);
159
+ });
160
+ it("should handle nested selected stores during hydration", async () => {
161
+ const { hydrateRoot } = await vi.importActual("react-dom/client");
162
+ const docStore = store({
163
+ meta: {
164
+ tags: ["draft", "internal"],
165
+ },
166
+ });
167
+ const metaStore = docStore.select("meta");
168
+ const tagsStore = metaStore.select("tags");
169
+ const Component = () => {
170
+ const tags = useStoreValue(tagsStore);
171
+ return _jsxs("div", { children: ["tags: ", tags?.join(", ")] });
172
+ };
173
+ const markup = renderToString(_jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(Component, {}) }));
174
+ const container = document.createElement("div");
175
+ document.body.appendChild(container);
176
+ container.innerHTML = markup;
177
+ expect(container).toHaveTextContent(/tags: draft, internal/);
178
+ const consoleMock = vi.spyOn(console, "error");
179
+ const hydratePromise = act(async () => {
180
+ hydrateRoot(container, _jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(Component, {}) }));
181
+ });
182
+ // Update during hydration
183
+ docStore.set({
184
+ meta: {
185
+ tags: ["published", "public"],
186
+ },
187
+ });
188
+ await hydratePromise;
189
+ expect(consoleMock).toHaveBeenCalledTimes(0);
190
+ const tagsText = await screen.findByText("tags: published, public");
191
+ expect(tagsText).toBeInTheDocument();
192
+ document.body.removeChild(container);
193
+ });
194
+ it("should handle form reset scenario during hydration", async () => {
195
+ const { hydrateRoot } = await vi.importActual("react-dom/client");
196
+ const formStore = store({
197
+ username: "initial",
198
+ email: "initial@example.com",
199
+ });
200
+ const Component = () => {
201
+ const form = useStoreValue(formStore);
202
+ const initial = formStore.getInitial();
203
+ const hasChanges = form?.username !== initial.username || form?.email !== initial.email;
204
+ return (_jsxs("div", { children: [_jsxs("div", { children: ["username: ", form?.username] }), _jsxs("div", { children: ["status: ", hasChanges ? "modified" : "clean"] })] }));
205
+ };
206
+ const markup = renderToString(_jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(Component, {}) }));
207
+ const container = document.createElement("div");
208
+ document.body.appendChild(container);
209
+ container.innerHTML = markup;
210
+ expect(container).toHaveTextContent(/username: initial/);
211
+ expect(container).toHaveTextContent(/status: clean/);
212
+ const consoleMock = vi.spyOn(console, "error");
213
+ const hydratePromise = act(async () => {
214
+ hydrateRoot(container, _jsx(React.Suspense, { fallback: _jsx("div", { children: "Loading..." }), children: _jsx(Component, {}) }));
215
+ });
216
+ // User edits form during hydration
217
+ formStore.set({
218
+ username: "changed",
219
+ email: "changed@example.com",
220
+ });
221
+ await hydratePromise;
222
+ expect(consoleMock).toHaveBeenCalledTimes(0);
223
+ const usernameText = await screen.findByText("username: changed");
224
+ const statusText = await screen.findByText("status: modified");
225
+ expect(usernameText).toBeInTheDocument();
226
+ expect(statusText).toBeInTheDocument();
227
+ // Verify reset still works
228
+ act(() => {
229
+ formStore.set(formStore.getInitial());
230
+ });
231
+ const resetStatusText = await screen.findByText("status: clean");
232
+ expect(resetStatusText).toBeInTheDocument();
233
+ document.body.removeChild(container);
234
+ });
235
+ });
236
+ //# sourceMappingURL=ssr.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssr.test.js","sourceRoot":"","sources":["../src/ssr.test.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplestack/store",
3
- "version": "0.7.0",
3
+ "version": "0.7.2",
4
4
  "description": "A simple storage solution for React",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -33,13 +33,16 @@
33
33
  "@testing-library/jest-dom": "^6.9.1",
34
34
  "@testing-library/react": "^16.3.0",
35
35
  "@types/react": "^19.2.2",
36
+ "@types/react-dom": "^19.2.2",
36
37
  "@vitest/ui": "^4.0.6",
37
38
  "happy-dom": "^20.0.10",
38
39
  "react": "^19.2.0",
40
+ "react-dom": "^19.2.0",
39
41
  "typescript": "^5.9.3",
40
42
  "vitest": "^4.0.6"
41
43
  },
42
44
  "dependencies": {
45
+ "esm-env": "^1.2.2",
43
46
  "signal-polyfill": "^0.2.2"
44
47
  },
45
48
  "peerDependencies": {