@take-out/hooks 0.0.28

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 (183) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +120 -0
  3. package/dist/cjs/index.cjs +30 -0
  4. package/dist/cjs/index.js +27 -0
  5. package/dist/cjs/index.js.map +6 -0
  6. package/dist/cjs/index.native.js +33 -0
  7. package/dist/cjs/index.native.js.map +1 -0
  8. package/dist/cjs/useClickOutside.cjs +43 -0
  9. package/dist/cjs/useClickOutside.js +37 -0
  10. package/dist/cjs/useClickOutside.js.map +6 -0
  11. package/dist/cjs/useClickOutside.native.js +51 -0
  12. package/dist/cjs/useClickOutside.native.js.map +1 -0
  13. package/dist/cjs/useDebouncePrepend.cjs +46 -0
  14. package/dist/cjs/useDebouncePrepend.js +40 -0
  15. package/dist/cjs/useDebouncePrepend.js.map +6 -0
  16. package/dist/cjs/useDebouncePrepend.native.js +54 -0
  17. package/dist/cjs/useDebouncePrepend.native.js.map +1 -0
  18. package/dist/cjs/useDeepMemoizedObject.cjs +148 -0
  19. package/dist/cjs/useDeepMemoizedObject.js +122 -0
  20. package/dist/cjs/useDeepMemoizedObject.js.map +6 -0
  21. package/dist/cjs/useDeepMemoizedObject.native.js +192 -0
  22. package/dist/cjs/useDeepMemoizedObject.native.js.map +1 -0
  23. package/dist/cjs/useDeepMemoizedObject.test.cjs +251 -0
  24. package/dist/cjs/useDeepMemoizedObject.test.js +187 -0
  25. package/dist/cjs/useDeepMemoizedObject.test.js.map +6 -0
  26. package/dist/cjs/useDeepMemoizedObject.test.native.js +261 -0
  27. package/dist/cjs/useDeepMemoizedObject.test.native.js.map +1 -0
  28. package/dist/cjs/useDeferredBoolean.cjs +34 -0
  29. package/dist/cjs/useDeferredBoolean.js +29 -0
  30. package/dist/cjs/useDeferredBoolean.js.map +6 -0
  31. package/dist/cjs/useDeferredBoolean.native.js +37 -0
  32. package/dist/cjs/useDeferredBoolean.native.js.map +1 -0
  33. package/dist/cjs/useEffectOnceGlobally.cjs +33 -0
  34. package/dist/cjs/useEffectOnceGlobally.js +28 -0
  35. package/dist/cjs/useEffectOnceGlobally.js.map +6 -0
  36. package/dist/cjs/useEffectOnceGlobally.native.js +38 -0
  37. package/dist/cjs/useEffectOnceGlobally.native.js.map +1 -0
  38. package/dist/cjs/useIsMounted.cjs +32 -0
  39. package/dist/cjs/useIsMounted.js +27 -0
  40. package/dist/cjs/useIsMounted.js.map +6 -0
  41. package/dist/cjs/useIsMounted.native.js +35 -0
  42. package/dist/cjs/useIsMounted.native.js.map +1 -0
  43. package/dist/cjs/useLastValue.cjs +29 -0
  44. package/dist/cjs/useLastValue.js +24 -0
  45. package/dist/cjs/useLastValue.js.map +6 -0
  46. package/dist/cjs/useLastValue.native.js +32 -0
  47. package/dist/cjs/useLastValue.native.js.map +1 -0
  48. package/dist/cjs/useLastValueIf.cjs +31 -0
  49. package/dist/cjs/useLastValueIf.js +25 -0
  50. package/dist/cjs/useLastValueIf.js.map +6 -0
  51. package/dist/cjs/useLastValueIf.native.js +35 -0
  52. package/dist/cjs/useLastValueIf.native.js.map +1 -0
  53. package/dist/cjs/useMemoStable.cjs +32 -0
  54. package/dist/cjs/useMemoStable.js +26 -0
  55. package/dist/cjs/useMemoStable.js.map +6 -0
  56. package/dist/cjs/useMemoStable.native.js +36 -0
  57. package/dist/cjs/useMemoStable.native.js.map +1 -0
  58. package/dist/cjs/useMemoizedObjectList.cjs +48 -0
  59. package/dist/cjs/useMemoizedObjectList.js +36 -0
  60. package/dist/cjs/useMemoizedObjectList.js.map +6 -0
  61. package/dist/cjs/useMemoizedObjectList.native.js +65 -0
  62. package/dist/cjs/useMemoizedObjectList.native.js.map +1 -0
  63. package/dist/cjs/useThrottle.cjs +39 -0
  64. package/dist/cjs/useThrottle.js +30 -0
  65. package/dist/cjs/useThrottle.js.map +6 -0
  66. package/dist/cjs/useThrottle.native.js +45 -0
  67. package/dist/cjs/useThrottle.native.js.map +1 -0
  68. package/dist/cjs/useWarnIfDepsChange.cjs +54 -0
  69. package/dist/cjs/useWarnIfDepsChange.js +46 -0
  70. package/dist/cjs/useWarnIfDepsChange.js.map +6 -0
  71. package/dist/cjs/useWarnIfDepsChange.native.js +58 -0
  72. package/dist/cjs/useWarnIfDepsChange.native.js.map +1 -0
  73. package/dist/cjs/useWarnIfMemoChangesOften.cjs +34 -0
  74. package/dist/cjs/useWarnIfMemoChangesOften.js +29 -0
  75. package/dist/cjs/useWarnIfMemoChangesOften.js.map +6 -0
  76. package/dist/cjs/useWarnIfMemoChangesOften.native.js +42 -0
  77. package/dist/cjs/useWarnIfMemoChangesOften.native.js.map +1 -0
  78. package/dist/esm/index.js +14 -0
  79. package/dist/esm/index.js.map +6 -0
  80. package/dist/esm/index.mjs +14 -0
  81. package/dist/esm/index.mjs.map +1 -0
  82. package/dist/esm/index.native.js +14 -0
  83. package/dist/esm/index.native.js.map +1 -0
  84. package/dist/esm/useClickOutside.js +22 -0
  85. package/dist/esm/useClickOutside.js.map +6 -0
  86. package/dist/esm/useClickOutside.mjs +20 -0
  87. package/dist/esm/useClickOutside.mjs.map +1 -0
  88. package/dist/esm/useClickOutside.native.js +25 -0
  89. package/dist/esm/useClickOutside.native.js.map +1 -0
  90. package/dist/esm/useDebouncePrepend.js +25 -0
  91. package/dist/esm/useDebouncePrepend.js.map +6 -0
  92. package/dist/esm/useDebouncePrepend.mjs +23 -0
  93. package/dist/esm/useDebouncePrepend.mjs.map +1 -0
  94. package/dist/esm/useDebouncePrepend.native.js +28 -0
  95. package/dist/esm/useDebouncePrepend.native.js.map +1 -0
  96. package/dist/esm/useDeepMemoizedObject.js +106 -0
  97. package/dist/esm/useDeepMemoizedObject.js.map +6 -0
  98. package/dist/esm/useDeepMemoizedObject.mjs +123 -0
  99. package/dist/esm/useDeepMemoizedObject.mjs.map +1 -0
  100. package/dist/esm/useDeepMemoizedObject.native.js +164 -0
  101. package/dist/esm/useDeepMemoizedObject.native.js.map +1 -0
  102. package/dist/esm/useDeepMemoizedObject.test.js +188 -0
  103. package/dist/esm/useDeepMemoizedObject.test.js.map +6 -0
  104. package/dist/esm/useDeepMemoizedObject.test.mjs +252 -0
  105. package/dist/esm/useDeepMemoizedObject.test.mjs.map +1 -0
  106. package/dist/esm/useDeepMemoizedObject.test.native.js +259 -0
  107. package/dist/esm/useDeepMemoizedObject.test.native.js.map +1 -0
  108. package/dist/esm/useDeferredBoolean.js +13 -0
  109. package/dist/esm/useDeferredBoolean.js.map +6 -0
  110. package/dist/esm/useDeferredBoolean.mjs +11 -0
  111. package/dist/esm/useDeferredBoolean.mjs.map +1 -0
  112. package/dist/esm/useDeferredBoolean.native.js +11 -0
  113. package/dist/esm/useDeferredBoolean.native.js.map +1 -0
  114. package/dist/esm/useEffectOnceGlobally.js +12 -0
  115. package/dist/esm/useEffectOnceGlobally.js.map +6 -0
  116. package/dist/esm/useEffectOnceGlobally.mjs +10 -0
  117. package/dist/esm/useEffectOnceGlobally.mjs.map +1 -0
  118. package/dist/esm/useEffectOnceGlobally.native.js +12 -0
  119. package/dist/esm/useEffectOnceGlobally.native.js.map +1 -0
  120. package/dist/esm/useIsMounted.js +11 -0
  121. package/dist/esm/useIsMounted.js.map +6 -0
  122. package/dist/esm/useIsMounted.mjs +9 -0
  123. package/dist/esm/useIsMounted.mjs.map +1 -0
  124. package/dist/esm/useIsMounted.native.js +9 -0
  125. package/dist/esm/useIsMounted.native.js.map +1 -0
  126. package/dist/esm/useLastValue.js +8 -0
  127. package/dist/esm/useLastValue.js.map +6 -0
  128. package/dist/esm/useLastValue.mjs +6 -0
  129. package/dist/esm/useLastValue.mjs.map +1 -0
  130. package/dist/esm/useLastValue.native.js +6 -0
  131. package/dist/esm/useLastValue.native.js.map +1 -0
  132. package/dist/esm/useLastValueIf.js +9 -0
  133. package/dist/esm/useLastValueIf.js.map +6 -0
  134. package/dist/esm/useLastValueIf.mjs +8 -0
  135. package/dist/esm/useLastValueIf.mjs.map +1 -0
  136. package/dist/esm/useLastValueIf.native.js +9 -0
  137. package/dist/esm/useLastValueIf.native.js.map +1 -0
  138. package/dist/esm/useMemoStable.js +11 -0
  139. package/dist/esm/useMemoStable.js.map +6 -0
  140. package/dist/esm/useMemoStable.mjs +9 -0
  141. package/dist/esm/useMemoStable.mjs.map +1 -0
  142. package/dist/esm/useMemoStable.native.js +10 -0
  143. package/dist/esm/useMemoStable.native.js.map +1 -0
  144. package/dist/esm/useMemoizedObjectList.js +21 -0
  145. package/dist/esm/useMemoizedObjectList.js.map +6 -0
  146. package/dist/esm/useMemoizedObjectList.mjs +25 -0
  147. package/dist/esm/useMemoizedObjectList.mjs.map +1 -0
  148. package/dist/esm/useMemoizedObjectList.native.js +39 -0
  149. package/dist/esm/useMemoizedObjectList.native.js.map +1 -0
  150. package/dist/esm/useThrottle.js +15 -0
  151. package/dist/esm/useThrottle.js.map +6 -0
  152. package/dist/esm/useThrottle.mjs +16 -0
  153. package/dist/esm/useThrottle.mjs.map +1 -0
  154. package/dist/esm/useThrottle.native.js +19 -0
  155. package/dist/esm/useThrottle.native.js.map +1 -0
  156. package/dist/esm/useWarnIfDepsChange.js +31 -0
  157. package/dist/esm/useWarnIfDepsChange.js.map +6 -0
  158. package/dist/esm/useWarnIfDepsChange.mjs +31 -0
  159. package/dist/esm/useWarnIfDepsChange.mjs.map +1 -0
  160. package/dist/esm/useWarnIfDepsChange.native.js +32 -0
  161. package/dist/esm/useWarnIfDepsChange.native.js.map +1 -0
  162. package/dist/esm/useWarnIfMemoChangesOften.js +14 -0
  163. package/dist/esm/useWarnIfMemoChangesOften.js.map +6 -0
  164. package/dist/esm/useWarnIfMemoChangesOften.mjs +11 -0
  165. package/dist/esm/useWarnIfMemoChangesOften.mjs.map +1 -0
  166. package/dist/esm/useWarnIfMemoChangesOften.native.js +16 -0
  167. package/dist/esm/useWarnIfMemoChangesOften.native.js.map +1 -0
  168. package/package.json +54 -0
  169. package/src/index.ts +13 -0
  170. package/src/useClickOutside.ts +34 -0
  171. package/src/useDebouncePrepend.ts +63 -0
  172. package/src/useDeepMemoizedObject.test.ts +343 -0
  173. package/src/useDeepMemoizedObject.ts +231 -0
  174. package/src/useDeferredBoolean.tsx +15 -0
  175. package/src/useEffectOnceGlobally.ts +41 -0
  176. package/src/useIsMounted.ts +11 -0
  177. package/src/useLastValue.ts +5 -0
  178. package/src/useLastValueIf.ts +15 -0
  179. package/src/useMemoStable.ts +24 -0
  180. package/src/useMemoizedObjectList.ts +74 -0
  181. package/src/useThrottle.ts +35 -0
  182. package/src/useWarnIfDepsChange.ts +61 -0
  183. package/src/useWarnIfMemoChangesOften.ts +24 -0
@@ -0,0 +1,252 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { deepMemoize } from "./useDeepMemoizedObject.mjs";
3
+ function testMemoization(initialValue, options) {
4
+ let previousValue = initialValue;
5
+ return {
6
+ get current() {
7
+ return previousValue;
8
+ },
9
+ update(value) {
10
+ previousValue = deepMemoize(value, previousValue, [], options?.immutableToNestedChanges);
11
+ }
12
+ };
13
+ }
14
+ describe("useDeepMemoizedObject", () => {
15
+ it("should preserve identity for unchanged primitives", () => {
16
+ const hook = testMemoization(42),
17
+ firstResult = hook.current;
18
+ hook.update(42), expect(hook.current).toBe(firstResult);
19
+ }), it("should preserve identity for unchanged objects", () => {
20
+ const hook = testMemoization({
21
+ a: 1,
22
+ b: 2
23
+ }),
24
+ firstResult = hook.current;
25
+ hook.update({
26
+ a: 1,
27
+ b: 2
28
+ }), expect(hook.current).toBe(firstResult);
29
+ }), it("should preserve identity for unchanged arrays", () => {
30
+ const hook = testMemoization([1, 2, 3]),
31
+ firstResult = hook.current;
32
+ hook.update([1, 2, 3]), expect(hook.current).toBe(firstResult);
33
+ }), it("should handle nested object changes correctly", () => {
34
+ const hook = testMemoization({
35
+ server: {
36
+ id: 1,
37
+ channels: [{
38
+ id: 1,
39
+ name: "general"
40
+ }, {
41
+ id: 2,
42
+ name: "random"
43
+ }, {
44
+ id: 3,
45
+ name: "tech"
46
+ }]
47
+ }
48
+ }),
49
+ firstResult = hook.current,
50
+ updated = {
51
+ server: {
52
+ id: 1,
53
+ channels: [{
54
+ id: 1,
55
+ name: "general-updated"
56
+ }, {
57
+ id: 2,
58
+ name: "random"
59
+ }, {
60
+ id: 3,
61
+ name: "tech"
62
+ }]
63
+ }
64
+ };
65
+ hook.update(updated);
66
+ const secondResult = hook.current;
67
+ expect(secondResult).not.toBe(firstResult), expect(secondResult.server).not.toBe(firstResult.server), expect(secondResult.server.channels).not.toBe(firstResult.server.channels), expect(secondResult.server.channels[0]).not.toBe(firstResult.server.channels[0]), expect(secondResult.server.channels[1]).toBe(firstResult.server.channels[1]), expect(secondResult.server.channels[2]).toBe(firstResult.server.channels[2]);
68
+ }), it("should handle deep nested changes in arrays", () => {
69
+ const initial = {
70
+ server: {
71
+ channels: [{
72
+ id: 1,
73
+ messages: [{
74
+ id: 1,
75
+ text: "hi"
76
+ }, {
77
+ id: 2,
78
+ text: "hello"
79
+ }, {
80
+ id: 3,
81
+ text: "world",
82
+ reactions: [{
83
+ emoji: "\u{1F44D}",
84
+ count: 1
85
+ }, {
86
+ emoji: "\u2764\uFE0F",
87
+ count: 2
88
+ }, {
89
+ emoji: "\u{1F602}",
90
+ count: 3,
91
+ updatedAt: "2024-01-01"
92
+ }, {
93
+ emoji: "\u{1F389}",
94
+ count: 4
95
+ }]
96
+ }]
97
+ }]
98
+ }
99
+ },
100
+ hook = testMemoization(initial),
101
+ firstResult = hook.current,
102
+ updated = JSON.parse(JSON.stringify(initial));
103
+ updated.server.channels[0].messages[2].reactions[2].updatedAt = "2024-01-02", hook.update(updated);
104
+ const secondResult = hook.current;
105
+ expect(secondResult).not.toBe(firstResult), expect(secondResult.server).not.toBe(firstResult.server), expect(secondResult.server.channels).not.toBe(firstResult.server.channels), expect(secondResult.server.channels[0]).not.toBe(firstResult.server.channels[0]), expect(secondResult.server.channels[0].messages).not.toBe(firstResult.server.channels[0].messages), expect(secondResult.server.channels[0].messages[0]).toBe(firstResult.server.channels[0].messages[0]), expect(secondResult.server.channels[0].messages[1]).toBe(firstResult.server.channels[0].messages[1]), expect(secondResult.server.channels[0].messages[2]).not.toBe(firstResult.server.channels[0].messages[2]), expect(secondResult.server.channels[0].messages[2].reactions).not.toBe(firstResult.server.channels[0].messages[2].reactions), expect(secondResult.server.channels[0].messages[2].reactions[0]).toBe(firstResult.server.channels[0].messages[2].reactions[0]), expect(secondResult.server.channels[0].messages[2].reactions[1]).toBe(firstResult.server.channels[0].messages[2].reactions[1]), expect(secondResult.server.channels[0].messages[2].reactions[2]).not.toBe(firstResult.server.channels[0].messages[2].reactions[2]), expect(secondResult.server.channels[0].messages[2].reactions[3]).toBe(firstResult.server.channels[0].messages[2].reactions[3]);
106
+ }), it("should respect immutableToNestedChanges option", () => {
107
+ const initial = {
108
+ server: {
109
+ id: 1,
110
+ channels: [{
111
+ id: 1,
112
+ messages: [{
113
+ id: 1,
114
+ text: "hi"
115
+ }, {
116
+ id: 2,
117
+ text: "hello"
118
+ }, {
119
+ id: 3,
120
+ text: "world"
121
+ }, {
122
+ id: 4,
123
+ text: "foo"
124
+ }, {
125
+ id: 5,
126
+ text: "bar"
127
+ }, {
128
+ id: 6,
129
+ text: "baz",
130
+ reactions: [{
131
+ emoji: "\u{1F44D}",
132
+ count: 1
133
+ }, {
134
+ emoji: "\u2764\uFE0F",
135
+ count: 2
136
+ }, {
137
+ emoji: "\u{1F602}",
138
+ count: 3,
139
+ updatedAt: "2024-01-01"
140
+ }]
141
+ }]
142
+ }]
143
+ }
144
+ },
145
+ hook = testMemoization(initial, {
146
+ immutableToNestedChanges: {
147
+ server: !0,
148
+ "server.channels.0": !0
149
+ }
150
+ }),
151
+ firstResult = hook.current,
152
+ originalChannels = firstResult.server.channels,
153
+ originalChannel0 = firstResult.server.channels[0],
154
+ originalMessages = firstResult.server.channels[0].messages,
155
+ originalMessage5 = firstResult.server.channels[0].messages[5],
156
+ originalReactions = firstResult.server.channels[0].messages[5].reactions,
157
+ updated = JSON.parse(JSON.stringify(initial));
158
+ updated.server.channels[0].messages[5].reactions[2].updatedAt = "2024-01-02", hook.update(updated);
159
+ const secondResult = hook.current;
160
+ expect(secondResult).not.toBe(firstResult), expect(secondResult.server).toBe(firstResult.server), expect(secondResult.server.channels).not.toBe(originalChannels), expect(secondResult.server.channels[0]).toBe(originalChannel0), expect(secondResult.server.channels[0].messages).not.toBe(originalMessages), expect(secondResult.server.channels[0].messages[5]).not.toBe(originalMessage5), expect(secondResult.server.channels[0].messages[5].reactions).not.toBe(originalReactions), expect(secondResult.server.channels[0].messages[5].reactions[2].updatedAt).toBe("2024-01-02");
161
+ }), it("should handle adding new properties to objects", () => {
162
+ const hook = testMemoization({
163
+ a: 1,
164
+ b: 2
165
+ }),
166
+ firstResult = hook.current,
167
+ updated = {
168
+ a: 1,
169
+ b: 2,
170
+ c: 3
171
+ };
172
+ hook.update(updated), expect(hook.current).not.toBe(firstResult), expect(hook.current).toEqual(updated);
173
+ }), it("should handle array length changes", () => {
174
+ const hook = testMemoization([1, 2, 3]),
175
+ firstResult = hook.current;
176
+ hook.update([1, 2, 3, 4]), expect(hook.current).not.toBe(firstResult), expect(hook.current).toEqual([1, 2, 3, 4]);
177
+ }), it("should handle null and undefined values", () => {
178
+ const nullHook = testMemoization(null);
179
+ expect(nullHook.current).toBe(null), nullHook.update(void 0), expect(nullHook.current).toBe(void 0), nullHook.update({
180
+ a: null,
181
+ b: void 0
182
+ });
183
+ const objResult = nullHook.current;
184
+ expect(objResult.a).toBe(null), expect(objResult.b).toBe(void 0);
185
+ }), it("should preserve array items when only one changes", () => {
186
+ const hook = testMemoization([{
187
+ id: 1,
188
+ name: "Alice"
189
+ }, {
190
+ id: 2,
191
+ name: "Bob"
192
+ }, {
193
+ id: 3,
194
+ name: "Charlie"
195
+ }]),
196
+ firstResult = hook.current,
197
+ updated = [{
198
+ id: 1,
199
+ name: "Alice"
200
+ }, {
201
+ id: 2,
202
+ name: "Bobby"
203
+ }, {
204
+ id: 3,
205
+ name: "Charlie"
206
+ }];
207
+ hook.update(updated);
208
+ const secondResult = hook.current;
209
+ expect(secondResult).not.toBe(firstResult), expect(secondResult[0]).toBe(firstResult[0]), expect(secondResult[1]).not.toBe(firstResult[1]), expect(secondResult[2]).toBe(firstResult[2]);
210
+ }), it("should handle complex immutableToNestedChanges patterns", () => {
211
+ const initial = {
212
+ app: {
213
+ settings: {
214
+ theme: "dark",
215
+ language: "en",
216
+ nested: {
217
+ deep: {
218
+ value: 1
219
+ }
220
+ }
221
+ }
222
+ }
223
+ },
224
+ hook = testMemoization(initial, {
225
+ immutableToNestedChanges: {
226
+ "app.settings": !0
227
+ }
228
+ }),
229
+ firstResult = hook.current,
230
+ originalSettings = firstResult.app.settings,
231
+ originalNested = firstResult.app.settings.nested,
232
+ originalDeep = firstResult.app.settings.nested.deep,
233
+ updated = JSON.parse(JSON.stringify(initial));
234
+ updated.app.settings.nested.deep.value = 2, hook.update(updated);
235
+ const secondResult = hook.current;
236
+ expect(secondResult).not.toBe(firstResult), expect(secondResult.app).not.toBe(firstResult.app), expect(secondResult.app.settings).toBe(originalSettings), expect(secondResult.app.settings.nested).toBe(originalNested), expect(secondResult.app.settings.nested.deep).toBe(originalDeep), expect(secondResult.app.settings.nested.deep.value).toBe(2);
237
+ }), it("should handle mixed arrays with objects and primitives", () => {
238
+ const hook = testMemoization([1, "string", {
239
+ id: 1,
240
+ name: "object"
241
+ }, [1, 2, 3], null, void 0]),
242
+ firstResult = hook.current,
243
+ updated = [1, "string", {
244
+ id: 1,
245
+ name: "updated"
246
+ }, [1, 2, 3], null, void 0];
247
+ hook.update(updated);
248
+ const secondResult = hook.current;
249
+ expect(secondResult).not.toBe(firstResult), expect(secondResult[0]).toBe(1), expect(secondResult[1]).toBe("string"), expect(secondResult[2]).not.toBe(firstResult[2]), expect(secondResult[3]).toBe(firstResult[3]), expect(secondResult[4]).toBe(null), expect(secondResult[5]).toBe(void 0);
250
+ });
251
+ });
252
+ //# sourceMappingURL=useDeepMemoizedObject.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","expect","it","deepMemoize","testMemoization","initialValue","options","previousValue","current","update","value","immutableToNestedChanges","hook","firstResult","toBe","a","b","server","id","channels","name","updated","secondResult","not","initial","messages","text","reactions","emoji","count","updatedAt","JSON","parse","stringify","originalChannels","originalChannel0","originalMessages","originalMessage5","originalReactions","c","toEqual","nullHook","objResult","app","settings","theme","language","nested","deep","originalSettings","originalNested","originalDeep"],"sources":["../../src/useDeepMemoizedObject.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,259 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { deepMemoize } from "./useDeepMemoizedObject.native.js";
3
+ function testMemoization(initialValue, options) {
4
+ var previousValue = initialValue;
5
+ return {
6
+ get current() {
7
+ return previousValue;
8
+ },
9
+ update(value) {
10
+ previousValue = deepMemoize(value, previousValue, [], options?.immutableToNestedChanges);
11
+ }
12
+ };
13
+ }
14
+ describe("useDeepMemoizedObject", function () {
15
+ it("should preserve identity for unchanged primitives", function () {
16
+ var hook = testMemoization(42),
17
+ firstResult = hook.current;
18
+ hook.update(42), expect(hook.current).toBe(firstResult);
19
+ }), it("should preserve identity for unchanged objects", function () {
20
+ var obj = {
21
+ a: 1,
22
+ b: 2
23
+ },
24
+ hook = testMemoization(obj),
25
+ firstResult = hook.current;
26
+ hook.update({
27
+ a: 1,
28
+ b: 2
29
+ }), expect(hook.current).toBe(firstResult);
30
+ }), it("should preserve identity for unchanged arrays", function () {
31
+ var arr = [1, 2, 3],
32
+ hook = testMemoization(arr),
33
+ firstResult = hook.current;
34
+ hook.update([1, 2, 3]), expect(hook.current).toBe(firstResult);
35
+ }), it("should handle nested object changes correctly", function () {
36
+ var initial = {
37
+ server: {
38
+ id: 1,
39
+ channels: [{
40
+ id: 1,
41
+ name: "general"
42
+ }, {
43
+ id: 2,
44
+ name: "random"
45
+ }, {
46
+ id: 3,
47
+ name: "tech"
48
+ }]
49
+ }
50
+ },
51
+ hook = testMemoization(initial),
52
+ firstResult = hook.current,
53
+ updated = {
54
+ server: {
55
+ id: 1,
56
+ channels: [{
57
+ id: 1,
58
+ name: "general-updated"
59
+ }, {
60
+ id: 2,
61
+ name: "random"
62
+ }, {
63
+ id: 3,
64
+ name: "tech"
65
+ }]
66
+ }
67
+ };
68
+ hook.update(updated);
69
+ var secondResult = hook.current;
70
+ expect(secondResult).not.toBe(firstResult), expect(secondResult.server).not.toBe(firstResult.server), expect(secondResult.server.channels).not.toBe(firstResult.server.channels), expect(secondResult.server.channels[0]).not.toBe(firstResult.server.channels[0]), expect(secondResult.server.channels[1]).toBe(firstResult.server.channels[1]), expect(secondResult.server.channels[2]).toBe(firstResult.server.channels[2]);
71
+ }), it("should handle deep nested changes in arrays", function () {
72
+ var initial = {
73
+ server: {
74
+ channels: [{
75
+ id: 1,
76
+ messages: [{
77
+ id: 1,
78
+ text: "hi"
79
+ }, {
80
+ id: 2,
81
+ text: "hello"
82
+ }, {
83
+ id: 3,
84
+ text: "world",
85
+ reactions: [{
86
+ emoji: "\u{1F44D}",
87
+ count: 1
88
+ }, {
89
+ emoji: "\u2764\uFE0F",
90
+ count: 2
91
+ }, {
92
+ emoji: "\u{1F602}",
93
+ count: 3,
94
+ updatedAt: "2024-01-01"
95
+ }, {
96
+ emoji: "\u{1F389}",
97
+ count: 4
98
+ }]
99
+ }]
100
+ }]
101
+ }
102
+ },
103
+ hook = testMemoization(initial),
104
+ firstResult = hook.current,
105
+ updated = JSON.parse(JSON.stringify(initial));
106
+ updated.server.channels[0].messages[2].reactions[2].updatedAt = "2024-01-02", hook.update(updated);
107
+ var secondResult = hook.current;
108
+ expect(secondResult).not.toBe(firstResult), expect(secondResult.server).not.toBe(firstResult.server), expect(secondResult.server.channels).not.toBe(firstResult.server.channels), expect(secondResult.server.channels[0]).not.toBe(firstResult.server.channels[0]), expect(secondResult.server.channels[0].messages).not.toBe(firstResult.server.channels[0].messages), expect(secondResult.server.channels[0].messages[0]).toBe(firstResult.server.channels[0].messages[0]), expect(secondResult.server.channels[0].messages[1]).toBe(firstResult.server.channels[0].messages[1]), expect(secondResult.server.channels[0].messages[2]).not.toBe(firstResult.server.channels[0].messages[2]), expect(secondResult.server.channels[0].messages[2].reactions).not.toBe(firstResult.server.channels[0].messages[2].reactions), expect(secondResult.server.channels[0].messages[2].reactions[0]).toBe(firstResult.server.channels[0].messages[2].reactions[0]), expect(secondResult.server.channels[0].messages[2].reactions[1]).toBe(firstResult.server.channels[0].messages[2].reactions[1]), expect(secondResult.server.channels[0].messages[2].reactions[2]).not.toBe(firstResult.server.channels[0].messages[2].reactions[2]), expect(secondResult.server.channels[0].messages[2].reactions[3]).toBe(firstResult.server.channels[0].messages[2].reactions[3]);
109
+ }), it("should respect immutableToNestedChanges option", function () {
110
+ var initial = {
111
+ server: {
112
+ id: 1,
113
+ channels: [{
114
+ id: 1,
115
+ messages: [{
116
+ id: 1,
117
+ text: "hi"
118
+ }, {
119
+ id: 2,
120
+ text: "hello"
121
+ }, {
122
+ id: 3,
123
+ text: "world"
124
+ }, {
125
+ id: 4,
126
+ text: "foo"
127
+ }, {
128
+ id: 5,
129
+ text: "bar"
130
+ }, {
131
+ id: 6,
132
+ text: "baz",
133
+ reactions: [{
134
+ emoji: "\u{1F44D}",
135
+ count: 1
136
+ }, {
137
+ emoji: "\u2764\uFE0F",
138
+ count: 2
139
+ }, {
140
+ emoji: "\u{1F602}",
141
+ count: 3,
142
+ updatedAt: "2024-01-01"
143
+ }]
144
+ }]
145
+ }]
146
+ }
147
+ },
148
+ hook = testMemoization(initial, {
149
+ immutableToNestedChanges: {
150
+ server: !0,
151
+ "server.channels.0": !0
152
+ }
153
+ }),
154
+ firstResult = hook.current,
155
+ originalChannels = firstResult.server.channels,
156
+ originalChannel0 = firstResult.server.channels[0],
157
+ originalMessages = firstResult.server.channels[0].messages,
158
+ originalMessage5 = firstResult.server.channels[0].messages[5],
159
+ originalReactions = firstResult.server.channels[0].messages[5].reactions,
160
+ updated = JSON.parse(JSON.stringify(initial));
161
+ updated.server.channels[0].messages[5].reactions[2].updatedAt = "2024-01-02", hook.update(updated);
162
+ var secondResult = hook.current;
163
+ expect(secondResult).not.toBe(firstResult), expect(secondResult.server).toBe(firstResult.server), expect(secondResult.server.channels).not.toBe(originalChannels), expect(secondResult.server.channels[0]).toBe(originalChannel0), expect(secondResult.server.channels[0].messages).not.toBe(originalMessages), expect(secondResult.server.channels[0].messages[5]).not.toBe(originalMessage5), expect(secondResult.server.channels[0].messages[5].reactions).not.toBe(originalReactions), expect(secondResult.server.channels[0].messages[5].reactions[2].updatedAt).toBe("2024-01-02");
164
+ }), it("should handle adding new properties to objects", function () {
165
+ var initial = {
166
+ a: 1,
167
+ b: 2
168
+ },
169
+ hook = testMemoization(initial),
170
+ firstResult = hook.current,
171
+ updated = {
172
+ a: 1,
173
+ b: 2,
174
+ c: 3
175
+ };
176
+ hook.update(updated), expect(hook.current).not.toBe(firstResult), expect(hook.current).toEqual(updated);
177
+ }), it("should handle array length changes", function () {
178
+ var initial = [1, 2, 3],
179
+ hook = testMemoization(initial),
180
+ firstResult = hook.current;
181
+ hook.update([1, 2, 3, 4]), expect(hook.current).not.toBe(firstResult), expect(hook.current).toEqual([1, 2, 3, 4]);
182
+ }), it("should handle null and undefined values", function () {
183
+ var nullHook = testMemoization(null);
184
+ expect(nullHook.current).toBe(null), nullHook.update(void 0), expect(nullHook.current).toBe(void 0), nullHook.update({
185
+ a: null,
186
+ b: void 0
187
+ });
188
+ var objResult = nullHook.current;
189
+ expect(objResult.a).toBe(null), expect(objResult.b).toBe(void 0);
190
+ }), it("should preserve array items when only one changes", function () {
191
+ var initial = [{
192
+ id: 1,
193
+ name: "Alice"
194
+ }, {
195
+ id: 2,
196
+ name: "Bob"
197
+ }, {
198
+ id: 3,
199
+ name: "Charlie"
200
+ }],
201
+ hook = testMemoization(initial),
202
+ firstResult = hook.current,
203
+ updated = [{
204
+ id: 1,
205
+ name: "Alice"
206
+ }, {
207
+ id: 2,
208
+ name: "Bobby"
209
+ }, {
210
+ id: 3,
211
+ name: "Charlie"
212
+ }];
213
+ hook.update(updated);
214
+ var secondResult = hook.current;
215
+ expect(secondResult).not.toBe(firstResult), expect(secondResult[0]).toBe(firstResult[0]), expect(secondResult[1]).not.toBe(firstResult[1]), expect(secondResult[2]).toBe(firstResult[2]);
216
+ }), it("should handle complex immutableToNestedChanges patterns", function () {
217
+ var initial = {
218
+ app: {
219
+ settings: {
220
+ theme: "dark",
221
+ language: "en",
222
+ nested: {
223
+ deep: {
224
+ value: 1
225
+ }
226
+ }
227
+ }
228
+ }
229
+ },
230
+ hook = testMemoization(initial, {
231
+ immutableToNestedChanges: {
232
+ "app.settings": !0
233
+ }
234
+ }),
235
+ firstResult = hook.current,
236
+ originalSettings = firstResult.app.settings,
237
+ originalNested = firstResult.app.settings.nested,
238
+ originalDeep = firstResult.app.settings.nested.deep,
239
+ updated = JSON.parse(JSON.stringify(initial));
240
+ updated.app.settings.nested.deep.value = 2, hook.update(updated);
241
+ var secondResult = hook.current;
242
+ expect(secondResult).not.toBe(firstResult), expect(secondResult.app).not.toBe(firstResult.app), expect(secondResult.app.settings).toBe(originalSettings), expect(secondResult.app.settings.nested).toBe(originalNested), expect(secondResult.app.settings.nested.deep).toBe(originalDeep), expect(secondResult.app.settings.nested.deep.value).toBe(2);
243
+ }), it("should handle mixed arrays with objects and primitives", function () {
244
+ var initial = [1, "string", {
245
+ id: 1,
246
+ name: "object"
247
+ }, [1, 2, 3], null, void 0],
248
+ hook = testMemoization(initial),
249
+ firstResult = hook.current,
250
+ updated = [1, "string", {
251
+ id: 1,
252
+ name: "updated"
253
+ }, [1, 2, 3], null, void 0];
254
+ hook.update(updated);
255
+ var secondResult = hook.current;
256
+ expect(secondResult).not.toBe(firstResult), expect(secondResult[0]).toBe(1), expect(secondResult[1]).toBe("string"), expect(secondResult[2]).not.toBe(firstResult[2]), expect(secondResult[3]).toBe(firstResult[3]), expect(secondResult[4]).toBe(null), expect(secondResult[5]).toBe(void 0);
257
+ });
258
+ });
259
+ //# sourceMappingURL=useDeepMemoizedObject.test.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","expect","it","deepMemoize","testMemoization","initialValue","options","previousValue","current","update","value","immutableToNestedChanges","hook","firstResult","toBe","obj","a","b","arr","initial","server","id","channels","name","updated","secondResult","not","messages","text","reactions","emoji","count","updatedAt","JSON","parse","stringify","originalChannels","originalChannel0","originalMessages","originalMessage5","originalReactions"],"sources":["../../src/useDeepMemoizedObject.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import { useState, startTransition, useEffect } from "react";
2
+ const useDeferredBoolean = (inVal) => {
3
+ const [val, setVal] = useState(inVal);
4
+ return useEffect(() => {
5
+ val !== inVal && startTransition(() => {
6
+ setVal(inVal);
7
+ });
8
+ }, [inVal, val]), val;
9
+ };
10
+ export {
11
+ useDeferredBoolean
12
+ };
13
+ //# sourceMappingURL=useDeferredBoolean.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/useDeferredBoolean.tsx"],
4
+ "mappings": "AAAA,SAAS,UAAU,iBAAiB,iBAAiB;AAE9C,MAAM,qBAAqB,CAAC,UAA4B;AAC7D,QAAM,CAAC,KAAK,MAAM,IAAI,SAAS,KAAK;AAEpC,mBAAU,MAAM;AACd,IAAI,QAAQ,SACV,gBAAgB,MAAM;AACpB,aAAO,KAAK;AAAA,IACd,CAAC;AAAA,EAEL,GAAG,CAAC,OAAO,GAAG,CAAC,GAER;AACT;",
5
+ "names": []
6
+ }
@@ -0,0 +1,11 @@
1
+ import { useState, startTransition, useEffect } from "react";
2
+ const useDeferredBoolean = inVal => {
3
+ const [val, setVal] = useState(inVal);
4
+ return useEffect(() => {
5
+ val !== inVal && startTransition(() => {
6
+ setVal(inVal);
7
+ });
8
+ }, [inVal, val]), val;
9
+ };
10
+ export { useDeferredBoolean };
11
+ //# sourceMappingURL=useDeferredBoolean.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","startTransition","useEffect","useDeferredBoolean","inVal","val","setVal"],"sources":["../../src/useDeferredBoolean.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,eAAA,EAAiBC,SAAA,QAAiB;AAE9C,MAAMC,kBAAA,GAAsBC,KAAA,IAA4B;EAC7D,MAAM,CAACC,GAAA,EAAKC,MAAM,IAAIN,QAAA,CAASI,KAAK;EAEpC,OAAAF,SAAA,CAAU,MAAM;IACVG,GAAA,KAAQD,KAAA,IACVH,eAAA,CAAgB,MAAM;MACpBK,MAAA,CAAOF,KAAK;IACd,CAAC;EAEL,GAAG,CAACA,KAAA,EAAOC,GAAG,CAAC,GAERA,GAAA;AACT","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import { useState, startTransition, useEffect } from "react";
2
+ var useDeferredBoolean = function (inVal) {
3
+ var [val, setVal] = useState(inVal);
4
+ return useEffect(function () {
5
+ val !== inVal && startTransition(function () {
6
+ setVal(inVal);
7
+ });
8
+ }, [inVal, val]), val;
9
+ };
10
+ export { useDeferredBoolean };
11
+ //# sourceMappingURL=useDeferredBoolean.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","startTransition","useEffect","useDeferredBoolean","inVal","val","setVal"],"sources":["../../src/useDeferredBoolean.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,eAAA,EAAiBC,SAAA,QAAiB;AAE9C,IAAAC,kBAAM,YAAAA,CAAsBC,KAA4B;EAC7D,KAAAC,GAAO,EAAAC,MAAK,IAAMN,QAAI,CAAAI,KAAS;EAE/B,OAAAF,SAAA,CAAU,YAAM;IACVG,GAAA,KAAQD,KAAA,IACVH,eAAA,CAAgB,YAAM;MACpBK,MAAA,CAAOF,KAAK;IACd,CAAC;EAEL,GAAG,CAGLA,KAAA,E","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ import { useEffect } from "react";
2
+ const executedKeys = /* @__PURE__ */ new Set();
3
+ function useEffectOnceGlobally(key, callback) {
4
+ const keyString = key ? typeof key == "string" ? key : Array.isArray(key) ? typeof key[0] == "string" ? key.sort().join("") : key.map((item) => item.id).sort().join("") : key.id : void 0;
5
+ useEffect(() => {
6
+ !keyString || executedKeys.has(keyString) || (executedKeys.add(keyString), key !== void 0 ? callback(key) : callback());
7
+ }, [keyString, callback, key]);
8
+ }
9
+ export {
10
+ useEffectOnceGlobally
11
+ };
12
+ //# sourceMappingURL=useEffectOnceGlobally.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/useEffectOnceGlobally.ts"],
4
+ "mappings": "AAAA,SAAS,iBAAiB;AAE1B,MAAM,eAAe,oBAAI,IAAY;AAU9B,SAAS,sBACd,KACA,UACA;AACA,QAAM,YAAa,MAEf,OAAO,OAAQ,WACb,MACA,MAAM,QAAQ,GAAG,IACf,OAAO,IAAI,CAAC,KAAM,WACf,IAAiB,KAAK,EAAE,KAAK,EAAE,IAC/B,IACE,IAAI,CAAC,SAAS,KAAK,EAAE,EACrB,KAAK,EACL,KAAK,EAAE,IACX,IAAe,KAVpB;AAYJ,YAAU,MAAM;AACd,IAAI,CAAC,aAAa,aAAa,IAAI,SAAS,MAG5C,aAAa,IAAI,SAAS,GACtB,QAAQ,SACR,SAA6C,GAAqB,IAElE,SAAwB;AAAA,EAE9B,GAAG,CAAC,WAAW,UAAU,GAAG,CAAC;AAC/B;",
5
+ "names": []
6
+ }
@@ -0,0 +1,10 @@
1
+ import { useEffect } from "react";
2
+ const executedKeys = /* @__PURE__ */new Set();
3
+ function useEffectOnceGlobally(key, callback) {
4
+ const keyString = key ? typeof key == "string" ? key : Array.isArray(key) ? typeof key[0] == "string" ? key.sort().join("") : key.map(item => item.id).sort().join("") : key.id : void 0;
5
+ useEffect(() => {
6
+ !keyString || executedKeys.has(keyString) || (executedKeys.add(keyString), key !== void 0 ? callback(key) : callback());
7
+ }, [keyString, callback, key]);
8
+ }
9
+ export { useEffectOnceGlobally };
10
+ //# sourceMappingURL=useEffectOnceGlobally.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","executedKeys","Set","useEffectOnceGlobally","key","callback","keyString","Array","isArray","sort","join","map","item","id","has","add"],"sources":["../../src/useEffectOnceGlobally.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AAE1B,MAAMC,YAAA,GAAe,mBAAIC,GAAA,CAAY;AAU9B,SAASC,sBACdC,GAAA,EACAC,QAAA,EACA;EACA,MAAMC,SAAA,GAAaF,GAAA,GAEf,OAAOA,GAAA,IAAQ,WACbA,GAAA,GACAG,KAAA,CAAMC,OAAA,CAAQJ,GAAG,IACf,OAAOA,GAAA,CAAI,CAAC,KAAM,WACfA,GAAA,CAAiBK,IAAA,CAAK,EAAEC,IAAA,CAAK,EAAE,IAC/BN,GAAA,CACEO,GAAA,CAAKC,IAAA,IAASA,IAAA,CAAKC,EAAE,EACrBJ,IAAA,CAAK,EACLC,IAAA,CAAK,EAAE,IACXN,GAAA,CAAeS,EAAA,GAVpB;EAYJb,SAAA,CAAU,MAAM;IACV,CAACM,SAAA,IAAaL,YAAA,CAAaa,GAAA,CAAIR,SAAS,MAG5CL,YAAA,CAAac,GAAA,CAAIT,SAAS,GACtBF,GAAA,KAAQ,SACRC,QAAA,CAA6CD,GAAqB,IAElEC,QAAA,CAAwB;EAE9B,GAAG,CAACC,SAAA,EAAWD,QAAA,EAAUD,GAAG,CAAC;AAC/B","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ import { useEffect } from "react";
2
+ var executedKeys = /* @__PURE__ */new Set();
3
+ function useEffectOnceGlobally(key, callback) {
4
+ var keyString = key ? typeof key == "string" ? key : Array.isArray(key) ? typeof key[0] == "string" ? key.sort().join("") : key.map(function (item) {
5
+ return item.id;
6
+ }).sort().join("") : key.id : void 0;
7
+ useEffect(function () {
8
+ !keyString || executedKeys.has(keyString) || (executedKeys.add(keyString), key !== void 0 ? callback(key) : callback());
9
+ }, [keyString, callback, key]);
10
+ }
11
+ export { useEffectOnceGlobally };
12
+ //# sourceMappingURL=useEffectOnceGlobally.native.js.map