rexfect 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.
Files changed (190) hide show
  1. package/README.md +1756 -0
  2. package/dist/abortableContext.d.ts +3 -0
  3. package/dist/abortableContext.d.ts.map +1 -0
  4. package/dist/abortableContext.js +48 -0
  5. package/dist/abortableContext.js.map +1 -0
  6. package/dist/action.d.ts +64 -0
  7. package/dist/action.d.ts.map +1 -0
  8. package/dist/action.js +208 -0
  9. package/dist/action.js.map +1 -0
  10. package/dist/action.test.d.ts +2 -0
  11. package/dist/action.test.d.ts.map +1 -0
  12. package/dist/action.test.js +189 -0
  13. package/dist/action.test.js.map +1 -0
  14. package/dist/async/abortable-guard.d.ts +25 -0
  15. package/dist/async/abortable-guard.d.ts.map +1 -0
  16. package/dist/async/abortable-guard.js +33 -0
  17. package/dist/async/abortable-guard.js.map +1 -0
  18. package/dist/async/abortable.d.ts +331 -0
  19. package/dist/async/abortable.d.ts.map +1 -0
  20. package/dist/async/abortable.js +410 -0
  21. package/dist/async/abortable.js.map +1 -0
  22. package/dist/async/abortable.test.d.ts +2 -0
  23. package/dist/async/abortable.test.d.ts.map +1 -0
  24. package/dist/async/abortable.test.js +535 -0
  25. package/dist/async/abortable.test.js.map +1 -0
  26. package/dist/async/abortable.typeCheck.d.ts +8 -0
  27. package/dist/async/abortable.typeCheck.d.ts.map +1 -0
  28. package/dist/async/abortable.typeCheck.js +138 -0
  29. package/dist/async/abortable.typeCheck.js.map +1 -0
  30. package/dist/async/async.d.ts +18 -0
  31. package/dist/async/async.d.ts.map +1 -0
  32. package/dist/async/async.js +20 -0
  33. package/dist/async/async.js.map +1 -0
  34. package/dist/async/index.d.ts +15 -0
  35. package/dist/async/index.d.ts.map +1 -0
  36. package/dist/async/index.js +13 -0
  37. package/dist/async/index.js.map +1 -0
  38. package/dist/async/loadable.d.ts +7 -0
  39. package/dist/async/loadable.d.ts.map +1 -0
  40. package/dist/async/loadable.js +52 -0
  41. package/dist/async/loadable.js.map +1 -0
  42. package/dist/async/loadable.test.d.ts +2 -0
  43. package/dist/async/loadable.test.d.ts.map +1 -0
  44. package/dist/async/loadable.test.js +322 -0
  45. package/dist/async/loadable.test.js.map +1 -0
  46. package/dist/async/promiseCache.d.ts +14 -0
  47. package/dist/async/promiseCache.d.ts.map +1 -0
  48. package/dist/async/promiseCache.js +29 -0
  49. package/dist/async/promiseCache.js.map +1 -0
  50. package/dist/async/read.d.ts +120 -0
  51. package/dist/async/read.d.ts.map +1 -0
  52. package/dist/async/read.js +286 -0
  53. package/dist/async/read.js.map +1 -0
  54. package/dist/async/read.test.d.ts +2 -0
  55. package/dist/async/read.test.d.ts.map +1 -0
  56. package/dist/async/read.test.js +419 -0
  57. package/dist/async/read.test.js.map +1 -0
  58. package/dist/async/read.typeCheck.d.ts +6 -0
  59. package/dist/async/read.typeCheck.d.ts.map +1 -0
  60. package/dist/async/read.typeCheck.js +101 -0
  61. package/dist/async/read.typeCheck.js.map +1 -0
  62. package/dist/async/safe.d.ts +230 -0
  63. package/dist/async/safe.d.ts.map +1 -0
  64. package/dist/async/safe.js +247 -0
  65. package/dist/async/safe.js.map +1 -0
  66. package/dist/async/safe.test.d.ts +2 -0
  67. package/dist/async/safe.test.d.ts.map +1 -0
  68. package/dist/async/safe.test.js +447 -0
  69. package/dist/async/safe.test.js.map +1 -0
  70. package/dist/async/utils.d.ts +17 -0
  71. package/dist/async/utils.d.ts.map +1 -0
  72. package/dist/async/utils.js +38 -0
  73. package/dist/async/utils.js.map +1 -0
  74. package/dist/async/wait.d.ts +120 -0
  75. package/dist/async/wait.d.ts.map +1 -0
  76. package/dist/async/wait.js +112 -0
  77. package/dist/async/wait.js.map +1 -0
  78. package/dist/async/wait.test.d.ts +2 -0
  79. package/dist/async/wait.test.d.ts.map +1 -0
  80. package/dist/async/wait.test.js +122 -0
  81. package/dist/async/wait.test.js.map +1 -0
  82. package/dist/async/wait.typeCheck.d.ts +6 -0
  83. package/dist/async/wait.typeCheck.d.ts.map +1 -0
  84. package/dist/async/wait.typeCheck.js +104 -0
  85. package/dist/async/wait.typeCheck.js.map +1 -0
  86. package/dist/atom.d.ts +46 -0
  87. package/dist/atom.d.ts.map +1 -0
  88. package/dist/atom.js +86 -0
  89. package/dist/atom.js.map +1 -0
  90. package/dist/atom.test.d.ts +2 -0
  91. package/dist/atom.test.d.ts.map +1 -0
  92. package/dist/atom.test.js +75 -0
  93. package/dist/atom.test.js.map +1 -0
  94. package/dist/batch.d.ts +15 -0
  95. package/dist/batch.d.ts.map +1 -0
  96. package/dist/batch.js +45 -0
  97. package/dist/batch.js.map +1 -0
  98. package/dist/defer.d.ts +56 -0
  99. package/dist/defer.d.ts.map +1 -0
  100. package/dist/defer.js +49 -0
  101. package/dist/defer.js.map +1 -0
  102. package/dist/effect.d.ts +91 -0
  103. package/dist/effect.d.ts.map +1 -0
  104. package/dist/effect.js +311 -0
  105. package/dist/effect.js.map +1 -0
  106. package/dist/effect.test.d.ts +2 -0
  107. package/dist/effect.test.d.ts.map +1 -0
  108. package/dist/effect.test.js +123 -0
  109. package/dist/effect.test.js.map +1 -0
  110. package/dist/emitter.d.ts +129 -0
  111. package/dist/emitter.d.ts.map +1 -0
  112. package/dist/emitter.js +164 -0
  113. package/dist/emitter.js.map +1 -0
  114. package/dist/emitter.test.d.ts +2 -0
  115. package/dist/emitter.test.d.ts.map +1 -0
  116. package/dist/emitter.test.js +259 -0
  117. package/dist/emitter.test.js.map +1 -0
  118. package/dist/equality.d.ts +66 -0
  119. package/dist/equality.d.ts.map +1 -0
  120. package/dist/equality.js +145 -0
  121. package/dist/equality.js.map +1 -0
  122. package/dist/event.d.ts +18 -0
  123. package/dist/event.d.ts.map +1 -0
  124. package/dist/event.js +166 -0
  125. package/dist/event.js.map +1 -0
  126. package/dist/event.test.d.ts +2 -0
  127. package/dist/event.test.d.ts.map +1 -0
  128. package/dist/event.test.js +167 -0
  129. package/dist/event.test.js.map +1 -0
  130. package/dist/hooks.d.ts +152 -0
  131. package/dist/hooks.d.ts.map +1 -0
  132. package/dist/hooks.js +122 -0
  133. package/dist/hooks.js.map +1 -0
  134. package/dist/hooks.test.d.ts +2 -0
  135. package/dist/hooks.test.d.ts.map +1 -0
  136. package/dist/hooks.test.js +99 -0
  137. package/dist/hooks.test.js.map +1 -0
  138. package/dist/index.d.ts +33 -0
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +35 -0
  141. package/dist/index.js.map +1 -0
  142. package/dist/isPromiseLike.d.ts +10 -0
  143. package/dist/isPromiseLike.d.ts.map +1 -0
  144. package/dist/isPromiseLike.js +15 -0
  145. package/dist/isPromiseLike.js.map +1 -0
  146. package/dist/pick.d.ts +22 -0
  147. package/dist/pick.d.ts.map +1 -0
  148. package/dist/pick.js +46 -0
  149. package/dist/pick.js.map +1 -0
  150. package/dist/react/index.d.ts +8 -0
  151. package/dist/react/index.d.ts.map +1 -0
  152. package/dist/react/index.js +8 -0
  153. package/dist/react/index.js.map +1 -0
  154. package/dist/react/useRx.d.ts +14 -0
  155. package/dist/react/useRx.d.ts.map +1 -0
  156. package/dist/react/useRx.js +110 -0
  157. package/dist/react/useRx.js.map +1 -0
  158. package/dist/react/useRx.test.d.ts +2 -0
  159. package/dist/react/useRx.test.d.ts.map +1 -0
  160. package/dist/react/useRx.test.js +457 -0
  161. package/dist/react/useRx.test.js.map +1 -0
  162. package/dist/strictModeTest.d.ts +11 -0
  163. package/dist/strictModeTest.d.ts.map +1 -0
  164. package/dist/strictModeTest.js +41 -0
  165. package/dist/strictModeTest.js.map +1 -0
  166. package/dist/types.d.ts +606 -0
  167. package/dist/types.d.ts.map +1 -0
  168. package/dist/types.js +5 -0
  169. package/dist/types.js.map +1 -0
  170. package/dist/untrack.d.ts +14 -0
  171. package/dist/untrack.d.ts.map +1 -0
  172. package/dist/untrack.js +17 -0
  173. package/dist/untrack.js.map +1 -0
  174. package/dist/utils/withUse.d.ts +10 -0
  175. package/dist/utils/withUse.d.ts.map +1 -0
  176. package/dist/utils/withUse.js +21 -0
  177. package/dist/utils/withUse.js.map +1 -0
  178. package/dist/utils/withUse.test.d.ts +2 -0
  179. package/dist/utils/withUse.test.d.ts.map +1 -0
  180. package/dist/utils/withUse.test.js +233 -0
  181. package/dist/utils/withUse.test.js.map +1 -0
  182. package/dist/utils.d.ts +7 -0
  183. package/dist/utils.d.ts.map +1 -0
  184. package/dist/utils.js +7 -0
  185. package/dist/utils.js.map +1 -0
  186. package/dist/utils.test.d.ts +2 -0
  187. package/dist/utils.test.d.ts.map +1 -0
  188. package/dist/utils.test.js +119 -0
  189. package/dist/utils.test.js.map +1 -0
  190. package/package.json +64 -0
@@ -0,0 +1,419 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { atom } from "../atom";
3
+ import { read } from "./read";
4
+ // Helper to create rejected promise without unhandled rejection warning
5
+ function rejectedPromise(error) {
6
+ // Delay rejection to allow handlers to be attached first
7
+ return new Promise((_, reject) => queueMicrotask(() => reject(error)));
8
+ }
9
+ // Helper to suppress unhandled rejection from thrown Suspense promises
10
+ function suppressSuspense(fn) {
11
+ try {
12
+ fn();
13
+ }
14
+ catch (e) {
15
+ if (e instanceof Promise) {
16
+ e.catch(() => { }); // Suppress unhandled rejection
17
+ }
18
+ }
19
+ }
20
+ describe("read", () => {
21
+ describe("read(signal)", () => {
22
+ it("should throw promise for pending state (Suspense)", () => {
23
+ const [promise] = atom(new Promise(() => { })); // never resolves
24
+ expect(() => read(promise)).toThrow();
25
+ });
26
+ it("should return value for resolved promise", async () => {
27
+ const [promise] = atom(Promise.resolve("hello"));
28
+ // First call to initialize tracking (will throw for Suspense)
29
+ suppressSuspense(() => read(promise));
30
+ // Wait for promise to settle and tracking to update
31
+ await new Promise((r) => setTimeout(r, 10));
32
+ const result = read(promise);
33
+ expect(result).toBe("hello");
34
+ });
35
+ it("should throw error for rejected promise", async () => {
36
+ const error = new Error("test error");
37
+ const [promise] = atom(rejectedPromise(error));
38
+ // First call to initialize tracking
39
+ suppressSuspense(() => read(promise));
40
+ // Wait for promise to settle
41
+ await new Promise((r) => setTimeout(r, 10));
42
+ expect(() => read(promise)).toThrow(error);
43
+ });
44
+ });
45
+ describe("read.all", () => {
46
+ it("should throw promise if any is pending (array)", () => {
47
+ const [p1] = atom(Promise.resolve(1));
48
+ const [p2] = atom(new Promise(() => { })); // never resolves
49
+ expect(() => read.all([p1, p2])).toThrow();
50
+ });
51
+ it("should return all values when all resolved (array)", async () => {
52
+ const [p1] = atom(Promise.resolve(1));
53
+ const [p2] = atom(Promise.resolve("two"));
54
+ // First call to initialize tracking
55
+ suppressSuspense(() => read.all([p1, p2]));
56
+ // Wait for promises to settle
57
+ await new Promise((r) => setTimeout(r, 10));
58
+ const result = read.all([p1, p2]);
59
+ expect(result).toEqual([1, "two"]);
60
+ });
61
+ it("should return object when given object input", async () => {
62
+ const [p1] = atom(Promise.resolve(1));
63
+ const [p2] = atom(Promise.resolve("two"));
64
+ suppressSuspense(() => read.all({ num: p1, str: p2 }));
65
+ await new Promise((r) => setTimeout(r, 10));
66
+ const result = read.all({ num: p1, str: p2 });
67
+ expect(result).toEqual({ num: 1, str: "two" });
68
+ });
69
+ it("should throw first error if any rejected (array)", async () => {
70
+ const error = new Error("test error");
71
+ const [p1] = atom(Promise.resolve(1));
72
+ const [p2] = atom(rejectedPromise(error));
73
+ // First call to initialize tracking
74
+ suppressSuspense(() => read.all([p1, p2]));
75
+ // Wait for promises to settle
76
+ await new Promise((r) => setTimeout(r, 10));
77
+ expect(() => read.all([p1, p2])).toThrow(error);
78
+ });
79
+ it("should throw Promise.all of all pending promises (not one by one)", async () => {
80
+ let resolve1;
81
+ let resolve2;
82
+ let resolve3;
83
+ const p1 = new Promise((r) => (resolve1 = r));
84
+ const p2 = new Promise((r) => (resolve2 = r));
85
+ const p3 = new Promise((r) => (resolve3 = r));
86
+ const [s1] = atom(p1);
87
+ const [s2] = atom(p2);
88
+ const [s3] = atom(p3);
89
+ // First call should throw a combined Promise
90
+ let thrownPromise = null;
91
+ try {
92
+ read.all([s1, s2, s3]);
93
+ }
94
+ catch (e) {
95
+ thrownPromise = e;
96
+ }
97
+ expect(thrownPromise).toBeInstanceOf(Promise);
98
+ // Resolve all promises
99
+ resolve1(1);
100
+ resolve2("two");
101
+ resolve3(true);
102
+ // Wait for the combined promise to resolve
103
+ await thrownPromise;
104
+ // Now all should be available
105
+ await new Promise((r) => setTimeout(r, 10));
106
+ const result = read.all([s1, s2, s3]);
107
+ expect(result).toEqual([1, "two", true]);
108
+ });
109
+ it("should throw AggregateError when multiple promises reject", async () => {
110
+ const error1 = new Error("error1");
111
+ const error2 = new Error("error2");
112
+ const [p1] = atom(rejectedPromise(error1));
113
+ const [p2] = atom(rejectedPromise(error2));
114
+ // First call to initialize tracking
115
+ suppressSuspense(() => read.all([p1, p2]));
116
+ // Wait for promises to settle
117
+ await new Promise((r) => setTimeout(r, 10));
118
+ expect(() => read.all([p1, p2])).toThrow(AggregateError);
119
+ try {
120
+ read.all([p1, p2]);
121
+ }
122
+ catch (e) {
123
+ expect(e).toBeInstanceOf(AggregateError);
124
+ expect(e.errors).toHaveLength(2);
125
+ expect(e.errors).toContain(error1);
126
+ expect(e.errors).toContain(error2);
127
+ }
128
+ });
129
+ it("should throw single error when only one promise rejects", async () => {
130
+ const error = new Error("single error");
131
+ const [p1] = atom(Promise.resolve(1));
132
+ const [p2] = atom(rejectedPromise(error));
133
+ suppressSuspense(() => read.all([p1, p2]));
134
+ await new Promise((r) => setTimeout(r, 10));
135
+ expect(() => read.all([p1, p2])).toThrow(error);
136
+ expect(() => read.all([p1, p2])).not.toThrow(AggregateError);
137
+ });
138
+ it("should throw single error for object input when only one promise rejects", async () => {
139
+ const error = new Error("obj single error");
140
+ const [p1] = atom(Promise.resolve(1));
141
+ const [p2] = atom(rejectedPromise(error));
142
+ suppressSuspense(() => read.all({ success: p1, fail: p2 }));
143
+ await new Promise((r) => setTimeout(r, 10));
144
+ expect(() => read.all({ success: p1, fail: p2 })).toThrow(error);
145
+ expect(() => read.all({ success: p1, fail: p2 })).not.toThrow(AggregateError);
146
+ });
147
+ it("should throw AggregateError for object input when multiple promises reject", async () => {
148
+ const error1 = new Error("obj error1");
149
+ const error2 = new Error("obj error2");
150
+ const [p1] = atom(rejectedPromise(error1));
151
+ const [p2] = atom(rejectedPromise(error2));
152
+ suppressSuspense(() => read.all({ a: p1, b: p2 }));
153
+ await new Promise((r) => setTimeout(r, 10));
154
+ expect(() => read.all({ a: p1, b: p2 })).toThrow(AggregateError);
155
+ try {
156
+ read.all({ a: p1, b: p2 });
157
+ }
158
+ catch (e) {
159
+ expect(e).toBeInstanceOf(AggregateError);
160
+ expect(e.errors).toHaveLength(2);
161
+ expect(e.errors).toContain(error1);
162
+ expect(e.errors).toContain(error2);
163
+ }
164
+ });
165
+ });
166
+ describe("read.race", () => {
167
+ it("should return first resolved value (array)", async () => {
168
+ const [p1] = atom(new Promise(() => { })); // never resolves
169
+ const [p2] = atom(Promise.resolve("second"));
170
+ // First call to initialize tracking
171
+ suppressSuspense(() => read.race([p1, p2]));
172
+ // Wait for p2 to settle
173
+ await new Promise((r) => setTimeout(r, 10));
174
+ const result = read.race([p1, p2]);
175
+ expect(result).toBe("second");
176
+ });
177
+ it("should return [winner, value] tuple for object input", async () => {
178
+ const [p1] = atom(new Promise(() => { })); // never resolves
179
+ const [p2] = atom(Promise.resolve("winner"));
180
+ suppressSuspense(() => read.race({ slow: p1, fast: p2 }));
181
+ await new Promise((r) => setTimeout(r, 10));
182
+ const result = read.race({ slow: p1, fast: p2 });
183
+ expect(result).toEqual(["fast", "winner"]);
184
+ });
185
+ it("should throw first promise when all are pending (array)", async () => {
186
+ // Create promises that never resolve
187
+ const p1 = new Promise(() => { });
188
+ const p2 = new Promise(() => { });
189
+ const [s1] = atom(p1);
190
+ const [s2] = atom(p2);
191
+ // First call should throw the first promise
192
+ let thrownPromise = null;
193
+ try {
194
+ read.race([s1, s2]);
195
+ }
196
+ catch (e) {
197
+ thrownPromise = e;
198
+ }
199
+ // Should throw the first promise (p1)
200
+ expect(thrownPromise).toBe(p1);
201
+ });
202
+ it("should throw first promise when all are pending (object)", async () => {
203
+ // Create promises that never resolve
204
+ const p1 = new Promise(() => { });
205
+ const p2 = new Promise(() => { });
206
+ const [s1] = atom(p1);
207
+ const [s2] = atom(p2);
208
+ // First call should throw the first promise
209
+ let thrownPromise = null;
210
+ try {
211
+ read.race({ first: s1, second: s2 });
212
+ }
213
+ catch (e) {
214
+ thrownPromise = e;
215
+ }
216
+ // Should throw the first promise (p1)
217
+ expect(thrownPromise).toBe(p1);
218
+ });
219
+ it("should throw error for first rejected promise (array)", async () => {
220
+ const error = new Error("race error");
221
+ const [p1] = atom(rejectedPromise(error));
222
+ const [p2] = atom(new Promise(() => { })); // never resolves
223
+ // First call to initialize tracking
224
+ suppressSuspense(() => read.race([p1, p2]));
225
+ // Wait for rejection
226
+ await new Promise((r) => setTimeout(r, 10));
227
+ expect(() => read.race([p1, p2])).toThrow(error);
228
+ });
229
+ it("should throw error for first rejected promise (object)", async () => {
230
+ const error = new Error("race error object");
231
+ const [p1] = atom(rejectedPromise(error));
232
+ const [p2] = atom(new Promise(() => { })); // never resolves
233
+ // First call to initialize tracking
234
+ suppressSuspense(() => read.race({ fail: p1, pending: p2 }));
235
+ // Wait for rejection
236
+ await new Promise((r) => setTimeout(r, 10));
237
+ expect(() => read.race({ fail: p1, pending: p2 })).toThrow(error);
238
+ });
239
+ });
240
+ describe("read.settled", () => {
241
+ it("should return all results (fulfilled and rejected) - array", async () => {
242
+ const error = new Error("test");
243
+ const [p1] = atom(Promise.resolve(1));
244
+ const [p2] = atom(rejectedPromise(error));
245
+ // First call to initialize tracking
246
+ suppressSuspense(() => read.settled([p1, p2]));
247
+ // Wait for promises to settle
248
+ await new Promise((r) => setTimeout(r, 10));
249
+ const results = read.settled([p1, p2]);
250
+ expect(results[0]).toEqual({ status: "fulfilled", value: 1 });
251
+ expect(results[1]).toEqual({ status: "rejected", reason: error });
252
+ });
253
+ it("should return object with PromiseSettledResult values", async () => {
254
+ const error = new Error("test");
255
+ const [p1] = atom(Promise.resolve(1));
256
+ const [p2] = atom(rejectedPromise(error));
257
+ suppressSuspense(() => read.settled({ success: p1, fail: p2 }));
258
+ await new Promise((r) => setTimeout(r, 10));
259
+ const results = read.settled({ success: p1, fail: p2 });
260
+ expect(results.success).toEqual({ status: "fulfilled", value: 1 });
261
+ expect(results.fail).toEqual({ status: "rejected", reason: error });
262
+ });
263
+ it("should throw Promise.all of all pending promises (not one by one)", async () => {
264
+ let resolve1;
265
+ let resolve2;
266
+ const p1 = new Promise((r) => (resolve1 = r));
267
+ const p2 = new Promise((r) => (resolve2 = r));
268
+ const [s1] = atom(p1);
269
+ const [s2] = atom(p2);
270
+ // First call should throw a combined Promise
271
+ let thrownPromise = null;
272
+ try {
273
+ read.settled([s1, s2]);
274
+ }
275
+ catch (e) {
276
+ thrownPromise = e;
277
+ }
278
+ expect(thrownPromise).toBeInstanceOf(Promise);
279
+ // Resolve all promises
280
+ resolve1(1);
281
+ resolve2("two");
282
+ // Wait for the combined promise to resolve
283
+ await thrownPromise;
284
+ // Now all should be available
285
+ await new Promise((r) => setTimeout(r, 10));
286
+ const result = read.settled([s1, s2]);
287
+ expect(result).toEqual([
288
+ { status: "fulfilled", value: 1 },
289
+ { status: "fulfilled", value: "two" },
290
+ ]);
291
+ });
292
+ });
293
+ describe("read.any", () => {
294
+ it("should return first successful value (array)", async () => {
295
+ const [p1] = atom(rejectedPromise(new Error("error")));
296
+ const [p2] = atom(Promise.resolve("success"));
297
+ // First call to initialize tracking
298
+ suppressSuspense(() => read.any([p1, p2]));
299
+ // Wait for promises to settle
300
+ await new Promise((r) => setTimeout(r, 10));
301
+ const result = read.any([p1, p2]);
302
+ expect(result).toBe("success");
303
+ });
304
+ it("should return [winner, value] tuple for object input", async () => {
305
+ const [p1] = atom(rejectedPromise(new Error("error")));
306
+ const [p2] = atom(Promise.resolve("success"));
307
+ suppressSuspense(() => read.any({ fail: p1, win: p2 }));
308
+ await new Promise((r) => setTimeout(r, 10));
309
+ const result = read.any({ fail: p1, win: p2 });
310
+ expect(result).toEqual(["win", "success"]);
311
+ });
312
+ it("should throw AggregateError if all reject", async () => {
313
+ const [p1] = atom(rejectedPromise(new Error("error1")));
314
+ const [p2] = atom(rejectedPromise(new Error("error2")));
315
+ // First call to initialize tracking
316
+ suppressSuspense(() => read.any([p1, p2]));
317
+ // Wait for promises to settle
318
+ await new Promise((r) => setTimeout(r, 10));
319
+ expect(() => read.any([p1, p2])).toThrow(AggregateError);
320
+ });
321
+ it("should throw Promise when pending promises exist", () => {
322
+ const [s1] = atom(new Promise(() => { }));
323
+ const [s2] = atom(new Promise(() => { }));
324
+ let thrownValue = null;
325
+ try {
326
+ read.any([s1, s2]);
327
+ }
328
+ catch (e) {
329
+ thrownValue = e;
330
+ }
331
+ // Should throw a Promise (for Suspense)
332
+ expect(thrownValue).toBeInstanceOf(Promise);
333
+ });
334
+ it("should return first fulfilled value immediately (array) - covers lines 441-445", async () => {
335
+ // Create a resolved promise (will be first fulfilled)
336
+ const [p1] = atom(Promise.resolve("first-success"));
337
+ // Second one is pending
338
+ const [p2] = atom(new Promise(() => { }));
339
+ // Initialize tracking
340
+ suppressSuspense(() => read.any([p1, p2]));
341
+ // Wait for p1 to settle
342
+ await new Promise((r) => setTimeout(r, 10));
343
+ // Now should return the fulfilled value directly
344
+ const result = read.any([p1, p2]);
345
+ expect(result).toBe("first-success");
346
+ });
347
+ it("should return first fulfilled value even if before rejected (array)", async () => {
348
+ // First is fulfilled
349
+ const [p1] = atom(Promise.resolve("winner"));
350
+ // Second is rejected
351
+ const [p2] = atom(rejectedPromise(new Error("loser")));
352
+ suppressSuspense(() => read.any([p1, p2]));
353
+ await new Promise((r) => setTimeout(r, 10));
354
+ const result = read.any([p1, p2]);
355
+ expect(result).toBe("winner");
356
+ });
357
+ it("should return first fulfilled value even if before rejected (object)", async () => {
358
+ // First is fulfilled
359
+ const [p1] = atom(Promise.resolve("winner-obj"));
360
+ // Second is rejected
361
+ const [p2] = atom(rejectedPromise(new Error("loser")));
362
+ suppressSuspense(() => read.any({ win: p1, lose: p2 }));
363
+ await new Promise((r) => setTimeout(r, 10));
364
+ const result = read.any({ win: p1, lose: p2 });
365
+ expect(result).toEqual(["win", "winner-obj"]);
366
+ });
367
+ it("should throw AggregateError with all errors when all reject (object)", async () => {
368
+ const error1 = new Error("obj-err-1");
369
+ const error2 = new Error("obj-err-2");
370
+ const [p1] = atom(rejectedPromise(error1));
371
+ const [p2] = atom(rejectedPromise(error2));
372
+ suppressSuspense(() => read.any({ a: p1, b: p2 }));
373
+ await new Promise((r) => setTimeout(r, 10));
374
+ expect(() => read.any({ a: p1, b: p2 })).toThrow(AggregateError);
375
+ try {
376
+ read.any({ a: p1, b: p2 });
377
+ }
378
+ catch (e) {
379
+ expect(e).toBeInstanceOf(AggregateError);
380
+ expect(e.errors).toContain(error1);
381
+ expect(e.errors).toContain(error2);
382
+ }
383
+ });
384
+ it("should throw Promise.all when some pending and none fulfilled yet (array)", () => {
385
+ // One pending, one rejected
386
+ const [p1] = atom(new Promise(() => { })); // pending
387
+ const rejected = rejectedPromise(new Error("rej"));
388
+ const [p2] = atom(rejected);
389
+ // Need to wait for rejected to settle first
390
+ // But since p1 is pending and we have no fulfilled, it should throw Promise.all of pending
391
+ let thrownPromise = null;
392
+ try {
393
+ read.any([p1, p2]);
394
+ }
395
+ catch (e) {
396
+ thrownPromise = e;
397
+ // Suppress unhandled rejection from the thrown Promise.all
398
+ thrownPromise.catch(() => { });
399
+ }
400
+ expect(thrownPromise).toBeInstanceOf(Promise);
401
+ });
402
+ it("should throw Promise.all when some pending and none fulfilled yet (object)", () => {
403
+ const [p1] = atom(new Promise(() => { })); // pending
404
+ const rejected = rejectedPromise(new Error("rej"));
405
+ const [p2] = atom(rejected);
406
+ let thrownPromise = null;
407
+ try {
408
+ read.any({ pending: p1, rej: p2 });
409
+ }
410
+ catch (e) {
411
+ thrownPromise = e;
412
+ // Suppress unhandled rejection from the thrown Promise.all
413
+ thrownPromise.catch(() => { });
414
+ }
415
+ expect(thrownPromise).toBeInstanceOf(Promise);
416
+ });
417
+ });
418
+ });
419
+ //# sourceMappingURL=read.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.test.js","sourceRoot":"","sources":["../../src/async/read.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Type-level tests for read API (Suspense mode).
3
+ * This file is only for compile-time type checking - not executed at runtime.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=read.typeCheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.typeCheck.d.ts","sourceRoot":"","sources":["../../src/async/read.typeCheck.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Type-level tests for read API (Suspense mode).
3
+ * This file is only for compile-time type checking - not executed at runtime.
4
+ */
5
+ import { read } from "./read";
6
+ // ============================================================================
7
+ // read(signal) - Single input
8
+ // ============================================================================
9
+ consume(read(stringSignal));
10
+ consume(read(numberSignal));
11
+ // ============================================================================
12
+ // read.all - Array form
13
+ // ============================================================================
14
+ {
15
+ const result = read.all([stringSignal, numberSignal]);
16
+ const first = result[0];
17
+ const second = result[1];
18
+ consume(first, second);
19
+ }
20
+ // ============================================================================
21
+ // read.all - Object form
22
+ // ============================================================================
23
+ {
24
+ const result = read.all({
25
+ user: stringSignal,
26
+ count: numberSignal,
27
+ });
28
+ const user = result.user;
29
+ const count = result.count;
30
+ consume(user, count);
31
+ }
32
+ // ============================================================================
33
+ // read.race - Array form
34
+ // ============================================================================
35
+ {
36
+ const result = read.race([stringSignal, numberSignal]);
37
+ consume(result);
38
+ }
39
+ // ============================================================================
40
+ // read.race - Object form (returns [winner, value] tuple)
41
+ // ============================================================================
42
+ {
43
+ const result = read.race({
44
+ a: stringSignal,
45
+ b: numberSignal,
46
+ });
47
+ consume(result);
48
+ const [winner, value] = result;
49
+ if (winner === "a") {
50
+ consume(value);
51
+ }
52
+ else {
53
+ consume(value);
54
+ }
55
+ }
56
+ // ============================================================================
57
+ // read.settled - Array form
58
+ // ============================================================================
59
+ {
60
+ const results = read.settled([stringSignal, numberSignal]);
61
+ const first = results[0];
62
+ const second = results[1];
63
+ consume(first, second);
64
+ }
65
+ // ============================================================================
66
+ // read.settled - Object form
67
+ // ============================================================================
68
+ {
69
+ const results = read.settled({
70
+ a: stringSignal,
71
+ b: numberSignal,
72
+ });
73
+ const a = results.a;
74
+ const b = results.b;
75
+ consume(a, b);
76
+ }
77
+ // ============================================================================
78
+ // read.any - Array form
79
+ // ============================================================================
80
+ {
81
+ const result = read.any([stringSignal, numberSignal]);
82
+ consume(result);
83
+ }
84
+ // ============================================================================
85
+ // read.any - Object form (returns [winner, value] tuple)
86
+ // ============================================================================
87
+ {
88
+ const result = read.any({
89
+ primary: stringSignal,
90
+ fallback: numberSignal,
91
+ });
92
+ consume(result);
93
+ const [winner, value] = result;
94
+ if (winner === "primary") {
95
+ consume(value);
96
+ }
97
+ else {
98
+ consume(value);
99
+ }
100
+ }
101
+ //# sourceMappingURL=read.typeCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.typeCheck.js","sourceRoot":"","sources":["../../src/async/read.typeCheck.ts"],"names":[],"mappings":"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"}