@evolu/common 7.4.1 → 8.0.0-next.1

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 (250) hide show
  1. package/README.md +4 -61
  2. package/dist/src/Array.d.ts +343 -102
  3. package/dist/src/Array.d.ts.map +1 -1
  4. package/dist/src/Array.js +181 -85
  5. package/dist/src/Assert.d.ts +57 -11
  6. package/dist/src/Assert.d.ts.map +1 -1
  7. package/dist/src/Assert.js +47 -11
  8. package/dist/src/BigInt.d.ts +6 -1
  9. package/dist/src/BigInt.d.ts.map +1 -1
  10. package/dist/src/BigInt.js +5 -0
  11. package/dist/src/Brand.d.ts +40 -12
  12. package/dist/src/Brand.d.ts.map +1 -1
  13. package/dist/src/Brand.js +5 -0
  14. package/dist/src/Buffer.d.ts +6 -1
  15. package/dist/src/Buffer.d.ts.map +1 -1
  16. package/dist/src/Buffer.js +7 -2
  17. package/dist/src/Cache.d.ts +10 -2
  18. package/dist/src/Cache.d.ts.map +1 -1
  19. package/dist/src/Cache.js +6 -0
  20. package/dist/src/Callbacks.d.ts +10 -7
  21. package/dist/src/Callbacks.d.ts.map +1 -1
  22. package/dist/src/Callbacks.js +23 -13
  23. package/dist/src/Console.d.ts +361 -69
  24. package/dist/src/Console.d.ts.map +1 -1
  25. package/dist/src/Console.js +217 -117
  26. package/dist/src/Crypto.d.ts +70 -21
  27. package/dist/src/Crypto.d.ts.map +1 -1
  28. package/dist/src/Crypto.js +72 -27
  29. package/dist/src/Eq.d.ts +22 -2
  30. package/dist/src/Eq.d.ts.map +1 -1
  31. package/dist/src/Eq.js +21 -1
  32. package/dist/src/Error.d.ts +23 -12
  33. package/dist/src/Error.d.ts.map +1 -1
  34. package/dist/src/Error.js +27 -11
  35. package/dist/src/Function.d.ts +128 -56
  36. package/dist/src/Function.d.ts.map +1 -1
  37. package/dist/src/Function.js +118 -14
  38. package/dist/src/Identicon.d.ts +5 -0
  39. package/dist/src/Identicon.d.ts.map +1 -1
  40. package/dist/src/Identicon.js +6 -1
  41. package/dist/src/Lookup.d.ts +162 -0
  42. package/dist/src/Lookup.d.ts.map +1 -0
  43. package/dist/src/Lookup.js +200 -0
  44. package/dist/src/Microtask.d.ts +21 -0
  45. package/dist/src/Microtask.d.ts.map +1 -0
  46. package/dist/src/Microtask.js +37 -0
  47. package/dist/src/Number.d.ts +18 -4
  48. package/dist/src/Number.d.ts.map +1 -1
  49. package/dist/src/Number.js +23 -1
  50. package/dist/src/Object.d.ts +110 -5
  51. package/dist/src/Object.d.ts.map +1 -1
  52. package/dist/src/Object.js +108 -5
  53. package/dist/src/Option.d.ts +58 -0
  54. package/dist/src/Option.d.ts.map +1 -0
  55. package/dist/src/Option.js +43 -0
  56. package/dist/src/Order.d.ts +5 -0
  57. package/dist/src/Order.d.ts.map +1 -1
  58. package/dist/src/Order.js +8 -3
  59. package/dist/src/Platform.d.ts +36 -2
  60. package/dist/src/Platform.d.ts.map +1 -1
  61. package/dist/src/Platform.js +10 -6
  62. package/dist/src/Polyfills.d.ts +29 -0
  63. package/dist/src/Polyfills.d.ts.map +1 -0
  64. package/dist/src/Polyfills.js +329 -0
  65. package/dist/src/Random.d.ts +18 -7
  66. package/dist/src/Random.d.ts.map +1 -1
  67. package/dist/src/Random.js +9 -7
  68. package/dist/src/Redacted.d.ts +7 -4
  69. package/dist/src/Redacted.d.ts.map +1 -1
  70. package/dist/src/Redacted.js +5 -0
  71. package/dist/src/Ref.d.ts +31 -16
  72. package/dist/src/Ref.d.ts.map +1 -1
  73. package/dist/src/Ref.js +35 -7
  74. package/dist/src/RefCount.d.ts +62 -0
  75. package/dist/src/RefCount.d.ts.map +1 -0
  76. package/dist/src/RefCount.js +83 -0
  77. package/dist/src/Relation.d.ts +84 -29
  78. package/dist/src/Relation.d.ts.map +1 -1
  79. package/dist/src/Relation.js +83 -105
  80. package/dist/src/Resource.d.ts +263 -0
  81. package/dist/src/Resource.d.ts.map +1 -0
  82. package/dist/src/Resource.js +389 -0
  83. package/dist/src/Result.d.ts +390 -374
  84. package/dist/src/Result.d.ts.map +1 -1
  85. package/dist/src/Result.js +142 -70
  86. package/dist/src/Schedule.d.ts +953 -0
  87. package/dist/src/Schedule.d.ts.map +1 -0
  88. package/dist/src/Schedule.js +1199 -0
  89. package/dist/src/Set.d.ts +181 -0
  90. package/dist/src/Set.d.ts.map +1 -0
  91. package/dist/src/Set.js +137 -0
  92. package/dist/src/Skiplist.d.ts +6 -1
  93. package/dist/src/Skiplist.d.ts.map +1 -1
  94. package/dist/src/Skiplist.js +5 -0
  95. package/dist/src/Sqlite.d.ts +160 -60
  96. package/dist/src/Sqlite.d.ts.map +1 -1
  97. package/dist/src/Sqlite.js +290 -190
  98. package/dist/src/Store.d.ts +36 -28
  99. package/dist/src/Store.d.ts.map +1 -1
  100. package/dist/src/Store.js +55 -15
  101. package/dist/src/String.d.ts +5 -0
  102. package/dist/src/String.d.ts.map +1 -1
  103. package/dist/src/String.js +5 -0
  104. package/dist/src/Task.d.ts +2274 -423
  105. package/dist/src/Task.d.ts.map +1 -1
  106. package/dist/src/Task.js +1499 -348
  107. package/dist/src/Test.d.ts +150 -0
  108. package/dist/src/Test.d.ts.map +1 -0
  109. package/dist/src/Test.js +97 -0
  110. package/dist/src/Time.d.ts +202 -48
  111. package/dist/src/Time.d.ts.map +1 -1
  112. package/dist/src/Time.js +199 -88
  113. package/dist/src/Tracer.d.ts +48 -0
  114. package/dist/src/Tracer.d.ts.map +1 -0
  115. package/dist/src/Tracer.js +6 -0
  116. package/dist/src/Type.d.ts +587 -209
  117. package/dist/src/Type.d.ts.map +1 -1
  118. package/dist/src/Type.js +370 -240
  119. package/dist/src/Types.d.ts +160 -6
  120. package/dist/src/Types.d.ts.map +1 -1
  121. package/dist/src/Types.js +22 -2
  122. package/dist/src/WebSocket.d.ts +130 -58
  123. package/dist/src/WebSocket.d.ts.map +1 -1
  124. package/dist/src/WebSocket.js +274 -113
  125. package/dist/src/Worker.d.ts +245 -60
  126. package/dist/src/Worker.d.ts.map +1 -1
  127. package/dist/src/Worker.js +220 -64
  128. package/dist/src/index.d.ts +25 -3
  129. package/dist/src/index.d.ts.map +1 -1
  130. package/dist/src/index.js +19 -3
  131. package/dist/src/local-first/Db.d.ts +24 -213
  132. package/dist/src/local-first/Db.d.ts.map +1 -1
  133. package/dist/src/local-first/Db.js +621 -293
  134. package/dist/src/local-first/Error.d.ts +12 -0
  135. package/dist/src/local-first/Error.d.ts.map +1 -0
  136. package/dist/src/local-first/Error.js +6 -0
  137. package/dist/src/local-first/Evolu.d.ts +330 -285
  138. package/dist/src/local-first/Evolu.d.ts.map +1 -1
  139. package/dist/src/local-first/Evolu.js +472 -402
  140. package/dist/src/local-first/LocalAuth.d.ts +10 -10
  141. package/dist/src/local-first/LocalAuth.d.ts.map +1 -1
  142. package/dist/src/local-first/LocalAuth.js +6 -1
  143. package/dist/src/local-first/Owner.d.ts +70 -27
  144. package/dist/src/local-first/Owner.d.ts.map +1 -1
  145. package/dist/src/local-first/Owner.js +27 -14
  146. package/dist/src/local-first/Protocol.d.ts +58 -50
  147. package/dist/src/local-first/Protocol.d.ts.map +1 -1
  148. package/dist/src/local-first/Protocol.js +253 -155
  149. package/dist/src/local-first/Query.d.ts +133 -43
  150. package/dist/src/local-first/Query.d.ts.map +1 -1
  151. package/dist/src/local-first/Query.js +139 -90
  152. package/dist/src/local-first/Relay.d.ts +34 -49
  153. package/dist/src/local-first/Relay.d.ts.map +1 -1
  154. package/dist/src/local-first/Relay.js +59 -177
  155. package/dist/src/local-first/Schema.d.ts +139 -144
  156. package/dist/src/local-first/Schema.d.ts.map +1 -1
  157. package/dist/src/local-first/Schema.js +78 -163
  158. package/dist/src/local-first/Shared.d.ts +125 -0
  159. package/dist/src/local-first/Shared.d.ts.map +1 -0
  160. package/dist/src/local-first/Shared.js +569 -0
  161. package/dist/src/local-first/Storage.d.ts +54 -58
  162. package/dist/src/local-first/Storage.d.ts.map +1 -1
  163. package/dist/src/local-first/Storage.js +127 -179
  164. package/dist/src/local-first/Timestamp.d.ts +28 -35
  165. package/dist/src/local-first/Timestamp.d.ts.map +1 -1
  166. package/dist/src/local-first/Timestamp.js +24 -25
  167. package/dist/src/local-first/index.d.ts +2 -15
  168. package/dist/src/local-first/index.d.ts.map +1 -1
  169. package/dist/src/local-first/index.js +2 -15
  170. package/package.json +37 -24
  171. package/src/Array.ts +467 -106
  172. package/src/Assert.ts +87 -12
  173. package/src/BigInt.ts +7 -1
  174. package/src/Brand.ts +41 -12
  175. package/src/Buffer.ts +10 -4
  176. package/src/Cache.ts +11 -2
  177. package/src/Callbacks.ts +33 -23
  178. package/src/Console.ts +567 -178
  179. package/src/Crypto.ts +111 -62
  180. package/src/Eq.ts +30 -3
  181. package/src/Error.ts +50 -34
  182. package/src/Function.ts +140 -68
  183. package/src/Identicon.ts +7 -1
  184. package/src/Lookup.ts +429 -0
  185. package/src/Microtask.ts +58 -0
  186. package/src/Number.ts +40 -7
  187. package/src/Object.ts +155 -16
  188. package/src/Option.ts +74 -0
  189. package/src/Order.ts +11 -3
  190. package/src/Platform.ts +43 -7
  191. package/src/Polyfills.ts +520 -0
  192. package/src/Random.ts +25 -11
  193. package/src/Redacted.ts +8 -4
  194. package/src/Ref.ts +72 -21
  195. package/src/RefCount.ts +170 -0
  196. package/src/Relation.ts +188 -136
  197. package/src/Resource.ts +864 -0
  198. package/src/Result.ts +548 -381
  199. package/src/Schedule.ts +1471 -0
  200. package/src/Set.ts +247 -0
  201. package/src/Skiplist.ts +7 -1
  202. package/src/Sqlite.ts +409 -304
  203. package/src/Store.ts +94 -48
  204. package/src/String.ts +6 -0
  205. package/src/Task.ts +3696 -740
  206. package/src/Test.ts +202 -0
  207. package/src/Time.ts +357 -147
  208. package/src/Tracer.ts +54 -0
  209. package/src/Type.ts +866 -430
  210. package/src/Types.ts +202 -7
  211. package/src/WebSocket.ts +404 -167
  212. package/src/Worker.ts +527 -147
  213. package/src/index.ts +74 -3
  214. package/src/local-first/Db.ts +867 -597
  215. package/src/local-first/Error.ts +17 -0
  216. package/src/local-first/Evolu.ts +884 -824
  217. package/src/local-first/LocalAuth.ts +10 -10
  218. package/src/local-first/Owner.ts +94 -42
  219. package/src/local-first/Protocol.ts +441 -307
  220. package/src/local-first/Query.ts +243 -194
  221. package/src/local-first/Relay.ts +119 -273
  222. package/src/local-first/Schema.ts +284 -394
  223. package/src/local-first/Shared.ts +932 -0
  224. package/src/local-first/Storage.ts +211 -283
  225. package/src/local-first/Timestamp.ts +38 -45
  226. package/src/local-first/index.ts +2 -16
  227. package/dist/src/Instances.d.ts +0 -34
  228. package/dist/src/Instances.d.ts.map +0 -1
  229. package/dist/src/Instances.js +0 -44
  230. package/dist/src/Resources.d.ts +0 -118
  231. package/dist/src/Resources.d.ts.map +0 -1
  232. package/dist/src/Resources.js +0 -197
  233. package/dist/src/local-first/Platform.d.ts +0 -25
  234. package/dist/src/local-first/Platform.d.ts.map +0 -1
  235. package/dist/src/local-first/Platform.js +0 -1
  236. package/dist/src/local-first/Public.d.ts +0 -22
  237. package/dist/src/local-first/Public.d.ts.map +0 -1
  238. package/dist/src/local-first/Public.js +0 -15
  239. package/dist/src/local-first/PublicKysely.d.ts +0 -148
  240. package/dist/src/local-first/PublicKysely.d.ts.map +0 -1
  241. package/dist/src/local-first/PublicKysely.js +0 -184
  242. package/dist/src/local-first/Sync.d.ts +0 -112
  243. package/dist/src/local-first/Sync.d.ts.map +0 -1
  244. package/dist/src/local-first/Sync.js +0 -526
  245. package/src/Instances.ts +0 -92
  246. package/src/Resources.ts +0 -367
  247. package/src/local-first/Platform.ts +0 -27
  248. package/src/local-first/Public.ts +0 -42
  249. package/src/local-first/PublicKysely.ts +0 -239
  250. package/src/local-first/Sync.ts +0 -949
@@ -1,9 +1,38 @@
1
1
  /**
2
- * TypeScript utility types
2
+ * TypeScript utility types.
3
3
  *
4
4
  * @module
5
5
  */
6
6
  import * as Kysely from "kysely";
7
+ import type { TypeName } from "./Type.js";
8
+ /**
9
+ * A function that receives a value and returns nothing.
10
+ *
11
+ * Use for event handlers, observers, and async completion handlers.
12
+ *
13
+ * ### Example
14
+ *
15
+ * ```ts
16
+ * const onComplete: Callback<string> = (value) => console.log(value);
17
+ * const queue = new Set<Callback<Result<Data, Error>>>();
18
+ * ```
19
+ */
20
+ export type Callback<T> = (value: T) => void;
21
+ /**
22
+ * A function that receives a value and optionally returns a teardown function.
23
+ *
24
+ * Use for subscriptions or callbacks that need abort-time teardown.
25
+ *
26
+ * ### Example
27
+ *
28
+ * ```ts
29
+ * const subscribe: CallbackWithTeardown<EventSource> = (source) => {
30
+ * source.start();
31
+ * return () => source.stop();
32
+ * };
33
+ * ```
34
+ */
35
+ export type CallbackWithTeardown<T> = (value: T) => void | (() => void);
7
36
  /**
8
37
  * Checks a condition on a value and returns a boolean.
9
38
  *
@@ -102,11 +131,6 @@ export type NullablePartial<T, NK extends keyof T = {
102
131
  }[keyof T], NP = Pick<T, Exclude<keyof T, NK>> & Partial<Pick<T, NK>>> = {
103
132
  [K in keyof NP]: NP[K];
104
133
  };
105
- /**
106
- * A type alias for `never` that is used intentionally when casting is not
107
- * needed and unit tests exist to ensure correctness.
108
- */
109
- export type IntentionalNever = never;
110
134
  /**
111
135
  * String, number, bigint, boolean, undefined, null
112
136
  *
@@ -124,6 +148,15 @@ export type Literal = string | number | bigint | boolean | undefined | null;
124
148
  * - True -> boolean
125
149
  */
126
150
  export type WidenLiteral<T extends Literal> = T extends string ? string : T extends number ? number : T extends boolean ? boolean : T extends bigint ? bigint : T;
151
+ /**
152
+ * Removes `readonly` modifier from all properties of a type.
153
+ *
154
+ * Useful for constructing immutable objects step-by-step (e.g. builder pattern)
155
+ * before casting them back to the readonly type.
156
+ */
157
+ export type Mutable<T> = {
158
+ -readonly [P in keyof T]: T[P];
159
+ };
127
160
  /**
128
161
  * Simplify an intersection type into a single mapped type.
129
162
  *
@@ -148,4 +181,125 @@ export type Simplify<T> = Kysely.Simplify<T>;
148
181
  * unchanged.
149
182
  */
150
183
  export type PartialProp<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
184
+ /**
185
+ * A value that can be awaited.
186
+ *
187
+ * Use when a function may complete synchronously or asynchronously depending on
188
+ * runtime conditions (e.g., cache hit vs network fetch).
189
+ *
190
+ * ### Example
191
+ *
192
+ * ```ts
193
+ * const getData = (id: string): Awaitable<Data> => {
194
+ * const cached = cache.get(id);
195
+ * if (cached) return cached; // Sync path
196
+ * return fetchData(id); // Async path
197
+ * };
198
+ *
199
+ * // Always works
200
+ * const data = await getData(id);
201
+ *
202
+ * // Or optimize for sync path
203
+ * const result = getData(id);
204
+ * const data = isPromiseLike(result) ? await result : result;
205
+ * ```
206
+ */
207
+ export type Awaitable<T> = T | PromiseLike<T>;
208
+ /**
209
+ * Type guard to check if a value is a {@link PromiseLike}.
210
+ *
211
+ * Use with {@link Awaitable} to conditionally `await` only when necessary,
212
+ * avoiding microtask overhead for synchronous values.
213
+ *
214
+ * ### Example
215
+ *
216
+ * ```ts
217
+ * const validate = (id: string): Awaitable<boolean> => {
218
+ * const cached = cache.get(id);
219
+ * if (cached !== undefined) return cached; // Sync path
220
+ * return fetchValidation(id); // Async path
221
+ * };
222
+ *
223
+ * const result = validate(id);
224
+ * const isValid = isPromiseLike(result) ? await result : result;
225
+ * ```
226
+ */
227
+ export declare const isPromiseLike: <T>(value: Awaitable<T>) => value is PromiseLike<T>;
228
+ /** Single digit 0-9. Useful for template literal type validation. */
229
+ export type Digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
230
+ /** Digit 1-9. Useful for template literal type validation. */
231
+ export type Digit1To9 = Exclude<Digit, "0">;
232
+ /** Numeric string 1-6. Useful for days validation. */
233
+ export type Digit1To6 = "1" | "2" | "3" | "4" | "5" | "6";
234
+ /** Numeric string 1-23. Useful for hours validation. */
235
+ export type Digit1To23 = Digit1To9 | `1${Digit}` | `2${"0" | "1" | "2" | "3"}`;
236
+ /** Numeric string 1-51. Useful for weeks validation. */
237
+ export type Digit1To51 = Digit1To9 | `${"1" | "2" | "3" | "4"}${Digit}` | `5${"0" | "1"}`;
238
+ /** Numeric string 1-99. Useful for years validation. */
239
+ export type Digit1To99 = Digit1To9 | `${Digit1To9}${Digit}`;
240
+ /** Numeric string 1-59. Useful for minutes, seconds validation. */
241
+ export type Digit1To59 = Digit1To9 | `1${Digit}` | `2${Digit}` | `3${Digit}` | `4${Digit}` | `5${Digit}`;
242
+ /** Numeric literal 1-99. */
243
+ export type Int1To99 = NumberFromString<Digit1To99>;
244
+ /** Numeric literal 1-100. */
245
+ export type Int1To100 = Int1To99 | 100;
246
+ /**
247
+ * Parses a numeric literal type from a string literal.
248
+ *
249
+ * Used by {@link Int1To99}.
250
+ */
251
+ export type NumberFromString<T extends string> = T extends `${infer N extends number}` ? N : never;
252
+ /** Converts a union to an intersection. */
253
+ export type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
254
+ /**
255
+ * Removes keys from each member of a union.
256
+ *
257
+ * Use when {@link Omit} would collapse a discriminated union into a single
258
+ * shared shape.
259
+ *
260
+ * ### Example
261
+ *
262
+ * ```ts
263
+ * type Event =
264
+ * | { type: "a"; a: string; shared: number }
265
+ * | { type: "b"; b: number; shared: number };
266
+ *
267
+ * type Payload = DistributiveOmit<Event, "shared">;
268
+ * // { type: "a"; a: string } | { type: "b"; b: number }
269
+ * ```
270
+ */
271
+ export type DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;
272
+ /**
273
+ * Extracts members of a discriminated union by their `type` literal.
274
+ *
275
+ * Constrains `TType` to valid `type` values, so typos fail at the type argument
276
+ * instead of silently producing `never`.
277
+ *
278
+ * ### Example
279
+ *
280
+ * ```ts
281
+ * type Message =
282
+ * | { readonly type: "Create"; readonly id: string }
283
+ * | { readonly type: "Delete"; readonly id: string };
284
+ *
285
+ * type CreateMessage = ExtractType<Message, "Create">;
286
+ * // { readonly type: "Create"; readonly id: string }
287
+ *
288
+ * // Type error: "Cretae" is not a valid Message type
289
+ * type _Typo = ExtractType<Message, "Cretae">;
290
+ * ```
291
+ */
292
+ export type ExtractType<TUnion extends {
293
+ readonly type: TypeName;
294
+ }, TType extends TUnion["type"]> = Extract<TUnion, {
295
+ readonly type: TType;
296
+ }>;
297
+ /**
298
+ * Constrains `T` to only contain keys not present in `Existing`.
299
+ *
300
+ * Use as a generic constraint to prevent overriding existing properties.
301
+ */
302
+ export type NewKeys<T, Existing> = {
303
+ [K in keyof T]: K extends keyof Existing ? never : T[K];
304
+ };
151
305
  //# sourceMappingURL=Types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../src/Types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;AAEjD;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;AAEzE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,mBAAmB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CACvD,CAAC,EAAE,CAAC,EACJ,KAAK,EAAE,MAAM,KACV,CAAC,IAAI,CAAC,CAAC;AAEZ;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,eAAe,CACzB,CAAC,EACD,EAAE,SAAS,MAAM,CAAC,GAAG;KAClB,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAC9C,CAAC,MAAM,CAAC,CAAC,EACV,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IACvD;KAAG,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;CAAE,CAAC;AAE/B;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAErC;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;AAE5E;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,MAAM,GAC1D,MAAM,GACN,CAAC,SAAS,MAAM,GACd,MAAM,GACN,CAAC,SAAS,OAAO,GACf,OAAO,GACP,CAAC,SAAS,MAAM,GACd,MAAM,GACN,CAAC,CAAC;AAEZ;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAE7C;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACxD,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"Types.d.ts","sourceRoot":"","sources":["../../src/Types.ts"],"names":[],"mappings":"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"}
package/dist/src/Types.js CHANGED
@@ -1,6 +1,26 @@
1
1
  /**
2
- * TypeScript utility types
2
+ * TypeScript utility types.
3
3
  *
4
4
  * @module
5
5
  */
6
- export {};
6
+ import * as Kysely from "kysely";
7
+ /**
8
+ * Type guard to check if a value is a {@link PromiseLike}.
9
+ *
10
+ * Use with {@link Awaitable} to conditionally `await` only when necessary,
11
+ * avoiding microtask overhead for synchronous values.
12
+ *
13
+ * ### Example
14
+ *
15
+ * ```ts
16
+ * const validate = (id: string): Awaitable<boolean> => {
17
+ * const cached = cache.get(id);
18
+ * if (cached !== undefined) return cached; // Sync path
19
+ * return fetchValidation(id); // Async path
20
+ * };
21
+ *
22
+ * const result = validate(id);
23
+ * const isValid = isPromiseLike(result) ? await result : result;
24
+ * ```
25
+ */
26
+ export const isPromiseLike = (value) => typeof value?.then === "function";
@@ -1,12 +1,69 @@
1
- import { Result } from "./Result.js";
2
- import { RetryError, RetryOptions } from "./Task.js";
3
- /** WebSocket with auto-reconnect and offline support. */
4
- export interface WebSocket extends Disposable {
1
+ /**
2
+ * WebSocket with auto-reconnect.
3
+ *
4
+ * @module
5
+ */
6
+ import type { Result } from "./Result.js";
7
+ import type { Schedule } from "./Schedule.js";
8
+ import type { RetryError, Task } from "./Task.js";
9
+ import type { Millis } from "./Time.js";
10
+ import { type Typed } from "./Type.js";
11
+ /**
12
+ * WebSocket with auto-reconnect.
13
+ *
14
+ * The API mirrors native
15
+ * {@link https://developer.mozilla.org/en-US/docs/Web/API/WebSocket | WebSocket}
16
+ * but retries connections indefinitely by default. This design accounts for the
17
+ * fact that browser and React Native online/offline detection APIs are
18
+ * unreliable — they may report online status incorrectly, so the only reliable
19
+ * approach is to keep attempting reconnection.
20
+ *
21
+ * Created via {@link createWebSocket} which returns a {@link Task}.
22
+ *
23
+ * Disposing starts closing the connection without waiting for the close event
24
+ * so disposal stays immediate. This wrapper treats disposal as local teardown,
25
+ * not as waiting for the full WebSocket close handshake to finish.
26
+ *
27
+ * ## How Binary Messages Work
28
+ *
29
+ * The Server Chooses the Message Type:
30
+ *
31
+ * - Text (0x1) → Sent as UTF-8 encoded text (always received as a string in the
32
+ * browser).
33
+ * - Binary (0x2) → Sent as raw binary data (received as a Blob or ArrayBuffer,
34
+ * depending on binaryType).
35
+ *
36
+ * The Client's binaryType Controls How Binary Data is Processed:
37
+ *
38
+ * - If the server sends a text frame (0x1), the browser always delivers
39
+ * event.data as a string, regardless of binaryType.
40
+ * - If the server sends a binary frame (0x2), the browser delivers event.data as:
41
+ *
42
+ * - A Blob (default: "blob")
43
+ * - An ArrayBuffer ("arraybuffer")
44
+ *
45
+ * ### Example
46
+ *
47
+ * ```ts
48
+ * const ws = await run(
49
+ * createWebSocket("wss://example.com", {
50
+ * onMessage: (data) => console.log("Received:", data),
51
+ * onOpen: () => console.log("Connected"),
52
+ * onClose: () => console.log("Disconnected"),
53
+ * }),
54
+ * );
55
+ * if (ws.ok) {
56
+ * ws.value.send("Hello");
57
+ * // Later: await ws.value[Symbol.asyncDispose]();
58
+ * }
59
+ * ```
60
+ */
61
+ export interface WebSocket extends AsyncDisposable {
5
62
  /**
6
63
  * Send data through the WebSocket connection. Returns {@link Result} with an
7
64
  * error if the data couldn't be sent.
8
65
  */
9
- send: (data: string | ArrayBufferLike | Blob | ArrayBufferView) => Result<void, WebSocketSendError>;
66
+ send: (data: BufferSource | Blob | string | globalThis.Uint8Array) => Result<void, WebSocketSendError>;
10
67
  readonly getReadyState: () => WebSocketReadyState;
11
68
  /** Returns true if the WebSocket is open and ready to send data. */
12
69
  readonly isOpen: () => boolean;
@@ -17,94 +74,109 @@ export interface WebSocket extends Disposable {
17
74
  *
18
75
  * https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send
19
76
  */
20
- export interface WebSocketSendError {
21
- readonly type: "WebSocketSendError";
77
+ export interface WebSocketSendError extends Typed<"WebSocketSendError"> {
22
78
  }
23
79
  /** WebSocket connection states. */
24
80
  export type WebSocketReadyState = "connecting" | "open" | "closing" | "closed";
25
- export type CreateWebSocket = (url: string, options?: WebSocketOptions) => WebSocket;
81
+ /** {@link Task} that creates a {@link WebSocket}. */
82
+ export type CreateWebSocket = (url: string, options?: WebSocketOptions) => Task<WebSocket>;
26
83
  export interface CreateWebSocketDep {
27
84
  readonly createWebSocket: CreateWebSocket;
28
85
  }
29
- /** Options for creating {@link WebSocket} */
86
+ /** Options for creating {@link WebSocket}. */
30
87
  export interface WebSocketOptions {
31
88
  /** Protocol(s) to use with the WebSocket connection. */
32
- protocols?: string | Array<string>;
89
+ readonly protocols?: string | ReadonlyArray<string>;
33
90
  /** Sets the binary type for the data being received. */
34
- binaryType?: "blob" | "arraybuffer";
91
+ readonly binaryType?: "blob" | "arraybuffer";
35
92
  /** Callback when the connection is established. */
36
- onOpen?: () => void;
93
+ readonly onOpen?: () => void;
37
94
  /** Callback when an error occurs. */
38
- onError?: (error: WebSocketError) => void;
95
+ readonly onError?: (error: WebSocketError) => void;
39
96
  /** Callback when the connection is closed. */
40
- onClose?: (event: CloseEvent) => void;
97
+ readonly onClose?: (event: CloseEvent) => void;
98
+ /**
99
+ * Determines whether a closed connection should trigger a retry.
100
+ *
101
+ * Return false to stop retrying, for example on auth errors or maintenance.
102
+ */
103
+ readonly shouldRetryOnClose?: (event: CloseEvent) => boolean;
41
104
  /** Callback when message data is received. */
42
- onMessage?: (data: string | ArrayBuffer | Blob) => void;
43
- /** Options for retry behavior. */
44
- retryOptions?: Omit<RetryOptions<WebSocketRetryError>, "signal">;
105
+ readonly onMessage?: (data: string | ArrayBuffer | Blob) => void;
106
+ /**
107
+ * Retry schedule for reconnection. Defaults to:
108
+ *
109
+ * ```ts
110
+ * // A jittered, capped, unlimited exponential backoff.
111
+ * jitter(1)(maxDelay("30s")(exponential("100ms")));
112
+ * ```
113
+ */
114
+ readonly schedule?: Schedule<Millis, WebSocketRetryError>;
45
115
  /**
46
116
  * For custom WebSocket implementations.
47
117
  *
48
- * This suppors blob:
118
+ * This supports blob:
49
119
  *
50
120
  * https://github.com/callstackincubator/react-native-fast-io
51
121
  */
52
- WebSocketConstructor?: typeof globalThis.WebSocket;
122
+ readonly WebSocketConstructor?: typeof globalThis.WebSocket;
53
123
  }
54
124
  export type WebSocketError = WebSocketConnectError | WebSocketConnectionError | RetryError<WebSocketRetryError>;
55
125
  /**
56
126
  * An error that occurs when a connection cannot be established due to a network
57
- * error.
127
+ * error. Fires before `onclose`.
58
128
  */
59
- export interface WebSocketConnectError {
60
- readonly type: "WebSocketConnectError";
129
+ export interface WebSocketConnectError extends Typed<"WebSocketConnectError"> {
61
130
  readonly event: Event;
62
131
  }
63
132
  /**
64
- * An error that occurs when a connection is closed due to an issue (e.g.,
65
- * failure to send some data).
133
+ * An error that occurs when an established connection encounters an issue
134
+ * (e.g., failure to send data). Fires before `onclose`.
135
+ *
136
+ * Note: Only Node.js and WebKit fire this error on abrupt server termination.
137
+ * Chromium and Firefox only fire `onclose` without a preceding error event.
66
138
  *
67
139
  * https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/error_event
68
140
  */
69
- export interface WebSocketConnectionError {
70
- readonly type: "WebSocketConnectionError";
141
+ export interface WebSocketConnectionError extends Typed<"WebSocketConnectionError"> {
71
142
  readonly event: Event;
72
143
  }
73
144
  export type WebSocketRetryError = WebSocketConnectError | WebSocketConnectionCloseError;
74
- export interface WebSocketConnectionCloseError {
75
- readonly type: "WebSocketConnectionCloseError";
145
+ /** An error that occurs when the connection is closed by the server. */
146
+ export interface WebSocketConnectionCloseError extends Typed<"WebSocketConnectionCloseError"> {
76
147
  readonly event: CloseEvent;
77
148
  }
149
+ /** Create a new {@link WebSocket}. */
150
+ export declare const createWebSocket: CreateWebSocket;
78
151
  /**
79
- * Create a new {@link WebSocket}.
80
- *
81
- * The default behavior is that WebSocket tries to reconnect repeatedly in case
82
- * the application is offline, because online events (both web and native) are
83
- * not reliable. Once it connects and the connection is closed, it tries to
84
- * reconnect again. Retrying the connection can be controlled using the
85
- * retryOptions retryable predicate.
86
- *
87
- * ### How Binary Messages Work in WebSockets
88
- *
89
- * The Server Chooses the Message Type:
90
- *
91
- * - Text (0x1) → Sent as UTF-8 encoded text (always received as a string in the
92
- * browser).
93
- * - Binary (0x2) → Sent as raw binary data (received as a Blob or ArrayBuffer,
94
- * depending on binaryType).
95
- *
96
- * The Client's binaryType Controls How Binary Data is Processed:
97
- *
98
- * - If the server sends a text frame (0x1), the browser always delivers
99
- * event.data as a string, regardless of binaryType.
100
- * - If the server sends a binary frame (0x2), the browser delivers event.data as:
101
- *
102
- * - A Blob (default: "blob")
103
- * - An ArrayBuffer ("arraybuffer")
104
- *
105
- * ### Example
106
- *
107
- * TODO:
152
+ * An inspectable in-memory {@link CreateWebSocket} for testing by
153
+ * {@link testCreateWebSocket}.
108
154
  */
109
- export declare const createWebSocket: CreateWebSocket;
155
+ export interface TestCreateWebSocket extends CreateWebSocket {
156
+ readonly createdUrls: Array<string>;
157
+ readonly sentMessages: Array<{
158
+ readonly url: string;
159
+ readonly data: BufferSource | Blob | string | globalThis.Uint8Array;
160
+ }>;
161
+ readonly message: (url: string, data: string | ArrayBuffer | Blob) => void;
162
+ readonly open: (url: string) => void;
163
+ }
164
+ /** Creates {@link TestCreateWebSocket}. */
165
+ export declare const testCreateWebSocket: (options?: {
166
+ /** Throw immediately when a socket is created. */
167
+ readonly throwOnCreate?: boolean;
168
+ /** Initial open state of created sockets. Defaults to true. */
169
+ readonly isOpen?: boolean;
170
+ }) => TestCreateWebSocket;
171
+ /**
172
+ * A native {@link WebSocket} prepared for integration tests by
173
+ * {@link testSetupWebSocket}.
174
+ */
175
+ export interface TestSetupWebSocket extends AsyncDisposable {
176
+ readonly socket: globalThis.WebSocket;
177
+ readonly send: (data: BufferSource | Blob | string | globalThis.Uint8Array) => void;
178
+ readonly waitForMessage: () => Promise<string | globalThis.Uint8Array>;
179
+ }
180
+ /** Opens a native {@link WebSocket} and returns {@link TestSetupWebSocket}. */
181
+ export declare const testSetupWebSocket: (url: string) => Promise<TestSetupWebSocket>;
110
182
  //# sourceMappingURL=WebSocket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WebSocket.d.ts","sourceRoot":"","sources":["../../src/WebSocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,MAAM,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAS,UAAU,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAG5D,yDAAyD;AACzD,MAAM,WAAW,SAAU,SAAQ,UAAU;IAC3C;;;OAGG;IACH,IAAI,EAAE,CACJ,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,GAAG,eAAe,KACpD,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAEtC,QAAQ,CAAC,aAAa,EAAE,MAAM,mBAAmB,CAAC;IAElD,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC;CAChC;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;CACrC;AAED,mCAAmC;AACnC,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE/E,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,gBAAgB,KACvB,SAAS,CAAC;AAEf,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;CAC3C;AAED,6CAA6C;AAC7C,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAEnC,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAEpC,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB,qCAAqC;IACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAE1C,8CAA8C;IAC9C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAEtC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAExD,kCAAkC;IAClC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEjE;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,UAAU,CAAC,SAAS,CAAC;CACpD;AAED,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,wBAAwB,GACxB,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAEpC;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED,MAAM,MAAM,mBAAmB,GAC3B,qBAAqB,GACrB,6BAA6B,CAAC;AAElC,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,+BAA+B,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,eAAe,EAAE,eA6H7B,CAAC"}
1
+ {"version":3,"file":"WebSocket.d.ts","sourceRoot":"","sources":["../../src/WebSocket.ts"],"names":[],"mappings":"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"}