foldkit 0.121.0 → 0.122.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,405 @@
1
+ import { Function, Option, Result, Schema as S } from 'effect';
2
+ /** The `Idle` state: nothing requested yet. */
3
+ export type Idle = Readonly<{
4
+ _tag: 'Idle';
5
+ }>;
6
+ /** The `Loading` state: first request in flight, no prior data. */
7
+ export type Loading = Readonly<{
8
+ _tag: 'Loading';
9
+ }>;
10
+ /** The `Refreshing` state: reloading while holding the previous good data. */
11
+ export type Refreshing<A> = Readonly<{
12
+ _tag: 'Refreshing';
13
+ data: A;
14
+ }>;
15
+ /** The `Failure` state: request failed, showing the failure. */
16
+ export type Failure<E> = Readonly<{
17
+ _tag: 'Failure';
18
+ error: E;
19
+ }>;
20
+ /** The `Stale` state: the last refresh failed, still holding the previous
21
+ * good data. The failed-refresh mirror of `Refreshing`. */
22
+ export type Stale<A, E> = Readonly<{
23
+ _tag: 'Stale';
24
+ error: E;
25
+ data: A;
26
+ }>;
27
+ /** The `Success` state: request succeeded, data present. */
28
+ export type Success<A> = Readonly<{
29
+ _tag: 'Success';
30
+ data: A;
31
+ }>;
32
+ /** The six-state union for an asynchronously loaded value: `Idle | Loading
33
+ * | Refreshing(data) | Failure(error) | Stale(error, data) | Success(data)`.
34
+ * Value-first type parameters, matching `Result<A, E>` and `Exit<A, E>`.
35
+ *
36
+ * `Refreshing` and `Stale` make stale-while-revalidate and
37
+ * stale-on-failure first-class states: both hold the previous good `data`,
38
+ * `Refreshing` while a reload is in flight, `Stale` after a reload failed.
39
+ *
40
+ * Data-presence classification, used throughout the module:
41
+ *
42
+ * - "has data" states: `Success`, `Refreshing`, `Stale`.
43
+ * - "no data" states: `Idle`, `Loading`, `Failure`.
44
+ * - "pending" states (a request in flight): `Loading`, `Refreshing` only.
45
+ * `Stale` is not pending; its fetch already failed.
46
+ *
47
+ * Naming rule: predicates are tag-named (`isSuccess`, `isFailure`) but
48
+ * getters are payload-named (`getData`, `getError`) because `getData` spans
49
+ * three tags (`Success`, `Refreshing`, `Stale`) and `getError` spans two
50
+ * (`Failure`, `Stale`). Handler keys are tag-named where dispatch is per tag
51
+ * (`match`) and channel-named where one handler covers multiple tags
52
+ * (`matchData`, `mapBoth`). */
53
+ export type AsyncData<A, E> = Idle | Loading | Refreshing<A> | Failure<E> | Stale<A, E> | Success<A>;
54
+ /** Constructs the `Idle` state. A parameter-free callable Schema, so it can
55
+ * also serve as a Union member. */
56
+ export declare const Idle: import("../schema/index.js").CallableTaggedStruct<"Idle", {}>;
57
+ /** Constructs the `Loading` state. A parameter-free callable Schema, so it
58
+ * can also serve as a Union member. */
59
+ export declare const Loading: import("../schema/index.js").CallableTaggedStruct<"Loading", {}>;
60
+ /** Constructs a `Refreshing` state holding the previous good data. Plain
61
+ * value builder, generic in `A`; use the `Schema` factory's `Refreshing`
62
+ * for a Schema-bound constructor. */
63
+ export declare const Refreshing: <A>(payload: Readonly<{
64
+ data: A;
65
+ }>) => AsyncData<A, never>;
66
+ /** Constructs a `Failure` state carrying the error only. Plain value
67
+ * builder, generic in `E`; use the `Schema` factory's `Failure` for a
68
+ * Schema-bound constructor. */
69
+ export declare const Failure: <E>(payload: Readonly<{
70
+ error: E;
71
+ }>) => AsyncData<never, E>;
72
+ /** Constructs a `Stale` state carrying both the refresh error and the
73
+ * last good data. Plain value builder, generic in `A` and `E`; use the
74
+ * `Schema` factory's `Stale` for a Schema-bound constructor. */
75
+ export declare const Stale: <A, E>(payload: Readonly<{
76
+ error: E;
77
+ data: A;
78
+ }>) => AsyncData<A, E>;
79
+ /** Constructs a `Success` state holding the data. Plain value builder,
80
+ * generic in `A`; use the `Schema` factory's `Success` for a Schema-bound
81
+ * constructor. */
82
+ export declare const Success: <A>(payload: Readonly<{
83
+ data: A;
84
+ }>) => AsyncData<A, never>;
85
+ /** Bare-value alias for `Success({ data })`, mirroring `Result.succeed`. */
86
+ export declare const succeed: <A, E = never>(data: A) => AsyncData<A, E>;
87
+ /** Bare-value alias for `Failure({ error })`, mirroring `Result.fail`. */
88
+ export declare const fail: <E, A = never>(error: E) => AsyncData<A, E>;
89
+ /** The encoded (wire) form of a `AsyncData<A, E>` whose data encodes to
90
+ * `AI` and whose error encodes to `EI`. */
91
+ export type AsyncDataEncoded<AI, EI> = Readonly<{
92
+ _tag: 'Idle';
93
+ }> | Readonly<{
94
+ _tag: 'Loading';
95
+ }> | Readonly<{
96
+ _tag: 'Refreshing';
97
+ data: AI;
98
+ }> | Readonly<{
99
+ _tag: 'Failure';
100
+ error: EI;
101
+ }> | Readonly<{
102
+ _tag: 'Stale';
103
+ error: EI;
104
+ data: AI;
105
+ }> | Readonly<{
106
+ _tag: 'Success';
107
+ data: AI;
108
+ }>;
109
+ /** What the `Schema` factory returns: the six-state Union codec to embed in
110
+ * a Model plus the Schema-bound constructors for the four parameterized
111
+ * states. Combinators are not part of this bag; they are module-level free
112
+ * functions over any `AsyncData<A, E>` value. */
113
+ export type AsyncDataSchema<A, AI, E, EI> = Readonly<{
114
+ /** The six-state Union codec. Embed this in your Model, or in
115
+ * `S.HashMap(key, this)` for a keyed cache. */
116
+ schema: S.Codec<AsyncData<A, E>, AsyncDataEncoded<AI, EI>>;
117
+ Idle: typeof Idle;
118
+ Loading: typeof Loading;
119
+ Refreshing: (payload: Readonly<{
120
+ data: A;
121
+ }>) => AsyncData<A, E>;
122
+ Failure: (payload: Readonly<{
123
+ error: E;
124
+ }>) => AsyncData<A, E>;
125
+ Stale: (payload: Readonly<{
126
+ error: E;
127
+ data: A;
128
+ }>) => AsyncData<A, E>;
129
+ Success: (payload: Readonly<{
130
+ data: A;
131
+ }>) => AsyncData<A, E>;
132
+ }>;
133
+ /** Builds the six-state `AsyncData` Schema for the given data and error
134
+ * Schemas (value-first). Put `schema` in your Model; use the returned
135
+ * constructors when you want ones typed to this instance's `A` and `E`.
136
+ *
137
+ * @example
138
+ * ```ts
139
+ * import { AsyncData } from 'foldkit'
140
+ * import { Schema as S } from 'effect'
141
+ *
142
+ * const Note = S.Struct({ id: S.String, body: S.String })
143
+ * const Notes = AsyncData.Schema(S.Array(Note), S.String)
144
+ *
145
+ * // Model field: typeof Notes.schema.Type
146
+ * const initial = AsyncData.Idle()
147
+ * const loaded = Notes.Success({ data: [] })
148
+ * ```
149
+ */
150
+ export declare const Schema: <A, AI, E, EI>(dataSchema: S.Codec<A, AI>, errorSchema: S.Codec<E, EI>) => AsyncDataSchema<A, AI, E, EI>;
151
+ /** Handles all six states exhaustively, passing each handler its unwrapped
152
+ * payload. `onStale` alone receives the whole `{ error, data }` payload
153
+ * object because `Stale` carries two fields. Use `matchData` when the view
154
+ * does not care which of the data-bearing states it is rendering.
155
+ *
156
+ * @example
157
+ * ```ts
158
+ * import { AsyncData } from 'foldkit'
159
+ *
160
+ * AsyncData.match(notes, {
161
+ * onIdle: () => 'Not loaded',
162
+ * onLoading: () => 'Loading',
163
+ * onRefreshing: notes => `Refreshing ${notes.length} notes`,
164
+ * onFailure: error => `Failed: ${error}`,
165
+ * onStale: ({ error, data }) => `${data.length} notes (stale: ${error})`,
166
+ * onSuccess: notes => `${notes.length} notes`,
167
+ * })
168
+ * ```
169
+ */
170
+ export declare const match: {
171
+ <A, E, B, C = B, D = B, F = B, G = B, H = B>(handlers: Readonly<{
172
+ onIdle: Function.LazyArg<B>;
173
+ onLoading: Function.LazyArg<C>;
174
+ onRefreshing: (data: A) => D;
175
+ onFailure: (error: E) => F;
176
+ onStale: (payload: Readonly<{
177
+ error: E;
178
+ data: A;
179
+ }>) => G;
180
+ onSuccess: (data: A) => H;
181
+ }>): (self: AsyncData<A, E>) => B | C | D | F | G | H;
182
+ <A, E, B, C = B, D = B, F = B, G = B, H = B>(self: AsyncData<A, E>, handlers: Readonly<{
183
+ onIdle: Function.LazyArg<B>;
184
+ onLoading: Function.LazyArg<C>;
185
+ onRefreshing: (data: A) => D;
186
+ onFailure: (error: E) => F;
187
+ onStale: (payload: Readonly<{
188
+ error: E;
189
+ data: A;
190
+ }>) => G;
191
+ onSuccess: (data: A) => H;
192
+ }>): B | C | D | F | G | H;
193
+ };
194
+ /** Collapses the six states to the three channels a view usually renders:
195
+ * `onData` spans the data-bearing states (`Success`, `Refreshing`,
196
+ * `Stale`), `onFailure` receives the `Failure` error, and `onEmpty` covers
197
+ * `Idle` and `Loading` together. A `Stale` renders through `onData` so its
198
+ * data stays on screen. Use `matchDataSplit` when `Idle` and `Loading`
199
+ * render differently, and `match` when the stale error or the `Refreshing`
200
+ * signal matters. */
201
+ export declare const matchData: {
202
+ <A, E, B, C = B, D = B>(handlers: {
203
+ readonly onEmpty: Function.LazyArg<B>;
204
+ readonly onFailure: (error: E) => C;
205
+ readonly onData: (data: A) => D;
206
+ }): (self: AsyncData<A, E>) => B | C | D;
207
+ <A, E, B, C = B, D = B>(self: AsyncData<A, E>, handlers: {
208
+ readonly onEmpty: Function.LazyArg<B>;
209
+ readonly onFailure: (error: E) => C;
210
+ readonly onData: (data: A) => D;
211
+ }): B | C | D;
212
+ };
213
+ /** Like `matchData`, but the two cold states are split: `onIdle` handles
214
+ * `Idle` and `onLoading` handles `Loading`, for views that render nothing
215
+ * requested yet differently from a request in flight. `onData` and
216
+ * `onFailure` behave exactly as in `matchData`. */
217
+ export declare const matchDataSplit: {
218
+ <A, E, B, C = B, D = B, F = B>(handlers: {
219
+ readonly onIdle: Function.LazyArg<B>;
220
+ readonly onLoading: Function.LazyArg<C>;
221
+ readonly onFailure: (error: E) => D;
222
+ readonly onData: (data: A) => F;
223
+ }): (self: AsyncData<A, E>) => B | C | D | F;
224
+ <A, E, B, C = B, D = B, F = B>(self: AsyncData<A, E>, handlers: {
225
+ readonly onIdle: Function.LazyArg<B>;
226
+ readonly onLoading: Function.LazyArg<C>;
227
+ readonly onFailure: (error: E) => D;
228
+ readonly onData: (data: A) => F;
229
+ }): B | C | D | F;
230
+ };
231
+ /** Maps the data of all three data-bearing states, preserving each tag so
232
+ * the `Refreshing` and `Stale` signals survive a pure transform. `Stale`
233
+ * maps only its `data`, keeping its `error`. The no-data states pass
234
+ * through unchanged. */
235
+ export declare const map: {
236
+ <A, B>(f: (data: A) => B): <E>(self: AsyncData<A, E>) => AsyncData<B, E>;
237
+ <A, E, B>(self: AsyncData<A, E>, f: (data: A) => B): AsyncData<B, E>;
238
+ };
239
+ /** Maps the error of the two error-bearing states: `Failure` and `Stale`
240
+ * transform (`Stale` keeps its `data`), everything else passes through.
241
+ * Use it to unify heterogeneous error types before a combine. */
242
+ export declare const mapError: {
243
+ <E, E2>(f: (error: E) => E2): <A>(self: AsyncData<A, E>) => AsyncData<A, E2>;
244
+ <A, E, E2>(self: AsyncData<A, E>, f: (error: E) => E2): AsyncData<A, E2>;
245
+ };
246
+ /** Maps both channels with channel-named handlers: `onData` spans `Success`,
247
+ * `Refreshing`, and `Stale`; `onError` spans `Failure` and `Stale`. For
248
+ * `Stale`, both handlers apply. Tags are preserved. */
249
+ export declare const mapBoth: {
250
+ <A, E, B, E2>(handlers: {
251
+ readonly onData: (data: A) => B;
252
+ readonly onError: (error: E) => E2;
253
+ }): (self: AsyncData<A, E>) => AsyncData<B, E2>;
254
+ <A, E, B, E2>(self: AsyncData<A, E>, handlers: {
255
+ readonly onData: (data: A) => B;
256
+ readonly onError: (error: E) => E2;
257
+ }): AsyncData<B, E2>;
258
+ };
259
+ /** Treats every data-bearing state (`Success`, `Refreshing`, `Stale`)
260
+ * exactly like `Success(data)`: returns `f(data)` unchanged, dropping the
261
+ * tag and any `Stale` error, so a caller can settle in-flight or stale data
262
+ * into `Success`. The no-data states pass through. Widens the error channel
263
+ * to `E | E2`, matching `Result.flatMap`. */
264
+ export declare const flatMap: {
265
+ <A, B, E2>(f: (data: A) => AsyncData<B, E2>): <E>(self: AsyncData<A, E>) => AsyncData<B, E | E2>;
266
+ <A, E, B, E2>(self: AsyncData<A, E>, f: (data: A) => AsyncData<B, E2>): AsyncData<B, E | E2>;
267
+ };
268
+ /** Returns the data as an `Option`, spanning all three data-bearing states:
269
+ * `Some` for `Success`, `Refreshing`, and `Stale`, `None` otherwise.
270
+ * Payload-named because it deliberately spans three tags. */
271
+ export declare const getData: <A, E>(self: AsyncData<A, E>) => Option.Option<A>;
272
+ /** Returns the error as an `Option`, spanning both error-bearing states:
273
+ * `Some` for `Failure` and `Stale`, `None` otherwise. Symmetric with
274
+ * `getData`. */
275
+ export declare const getError: <A, E>(self: AsyncData<A, E>) => Option.Option<E>;
276
+ /** Returns the data of any data-bearing state, or `onEmpty()` for the three
277
+ * no-data states. The fallback is a nullary thunk, mirroring
278
+ * `Option.getOrElse`, because the no-data states collapse to empty with no
279
+ * single payload. */
280
+ export declare const getOrElse: {
281
+ <B>(onEmpty: Function.LazyArg<B>): <A, E>(self: AsyncData<A, E>) => A | B;
282
+ <A, E, B>(self: AsyncData<A, E>, onEmpty: Function.LazyArg<B>): A | B;
283
+ };
284
+ /** Returns `true` only for the `Idle` state. Refinement. */
285
+ export declare const isIdle: <A, E>(self: AsyncData<A, E>) => self is Idle;
286
+ /** Returns `true` only for the empty `Loading` state, not `Refreshing`.
287
+ * Refinement. */
288
+ export declare const isLoading: <A, E>(self: AsyncData<A, E>) => self is Loading;
289
+ /** Returns `true` only for the `Refreshing` state. Refinement. */
290
+ export declare const isRefreshing: <A, E>(self: AsyncData<A, E>) => self is Refreshing<A>;
291
+ /** Returns `true` only for the `Failure` state, not `Stale`. Refinement. */
292
+ export declare const isFailure: <A, E>(self: AsyncData<A, E>) => self is Failure<E>;
293
+ /** Returns `true` only for the `Stale` state: a failed refresh holding the
294
+ * last good data. Refinement. */
295
+ export declare const isStale: <A, E>(self: AsyncData<A, E>) => self is Stale<A, E>;
296
+ /** Returns `true` only for the `Success` state, not `Refreshing` or
297
+ * `Stale`. Refinement. */
298
+ export declare const isSuccess: <A, E>(self: AsyncData<A, E>) => self is Success<A>;
299
+ /** Returns `true` when the state holds data: `Success`, `Refreshing`, or
300
+ * `Stale`. */
301
+ export declare const hasData: <A, E>(self: AsyncData<A, E>) => boolean;
302
+ /** Returns `true` when the state carries an error: `Failure` or `Stale`.
303
+ * The error-channel twin of `hasData`. */
304
+ export declare const hasError: <A, E>(self: AsyncData<A, E>) => boolean;
305
+ /** Returns `true` when a request is in flight: `Loading` or `Refreshing`
306
+ * only. `Stale` is not pending because its fetch already failed. Use for a
307
+ * spinner regardless of held data. */
308
+ export declare const isPending: <A, E>(self: AsyncData<A, E>) => boolean;
309
+ /** Type guard on `unknown`: checks that the value has a `_tag` belonging to
310
+ * the six `AsyncData` states. */
311
+ export declare const isAsyncData: (input: unknown) => input is AsyncData<unknown, unknown>;
312
+ /** Returns `self` when it holds data (`Success`, `Refreshing`, or `Stale`),
313
+ * otherwise `that()`. The recovery and cache-fallback combinator: recover
314
+ * an `Idle`, `Loading`, or `Failure` into a secondary source without
315
+ * `match`. */
316
+ export declare const orElse: {
317
+ <A, E>(that: Function.LazyArg<AsyncData<A, E>>): (self: AsyncData<A, E>) => AsyncData<A, E>;
318
+ <A, E>(self: AsyncData<A, E>, that: Function.LazyArg<AsyncData<A, E>>): AsyncData<A, E>;
319
+ };
320
+ /** The revalidate-on-entry transition: revalidates loaded data and loads
321
+ * cold data. The data-bearing loaded states (`Success`, `Stale`) move to
322
+ * `Refreshing`; the cold no-data states (`Idle`, `Failure`) start a fresh
323
+ * `Loading`; the already-pending states (`Loading`, `Refreshing`) yield
324
+ * `None` so the request in flight is not restarted. `None` means no
325
+ * transition, and no load Command, is needed. */
326
+ export declare const revalidateOrLoad: <A, E>(self: AsyncData<A, E>) => Option.Option<AsyncData<A, E>>;
327
+ /** The loaded-only revalidation transition: `Success` and `Stale` move to
328
+ * `Refreshing`, every other state yields `None`. Unlike
329
+ * `revalidateOrLoad` there is no cold-start `Loading`, so only caches
330
+ * that actually hold data revalidate; this is the generic refresher path
331
+ * after a mutation. */
332
+ export declare const revalidate: <A, E>(self: AsyncData<A, E>) => Option.Option<AsyncData<A, E>>;
333
+ /** Combines two values under the two-tier lattice
334
+ * `Failure > Loading > Idle > Stale > Refreshing > Success`. If either
335
+ * input is a no-data state, the highest-ranked such state wins with no
336
+ * combination (`self`'s error wins when both are `Failure`). Otherwise both
337
+ * hold data: combine with `f` and tag the result with the highest-ranked
338
+ * data state present (`self`'s error wins when both are `Stale`).
339
+ *
340
+ * Because the combined value needs both inputs' data, a single no-data
341
+ * input collapses the whole combine to that state:
342
+ * `zipWith(Idle(), Success({ data }), f)` yields `Idle`. */
343
+ export declare const zipWith: {
344
+ <A, E, B, C>(that: AsyncData<B, E>, f: (selfData: A, thatData: B) => C): (self: AsyncData<A, E>) => AsyncData<C, E>;
345
+ <A, E, B, C>(self: AsyncData<A, E>, that: AsyncData<B, E>, f: (selfData: A, thatData: B) => C): AsyncData<C, E>;
346
+ };
347
+ /** Combines an iterable or record of values under the `zipWith` lattice.
348
+ * An iterable collapses to an in-order array of data (empty input yields
349
+ * `Success({ data: [] })`); a record builds a struct (empty input yields
350
+ * `Success({ data: {} })`). The highest-ranked no-data state blocks, the
351
+ * leftmost `Failure` error wins, and any `Stale` in an all-data set makes
352
+ * the result `Stale` with the leftmost `Stale` error. All inputs must share
353
+ * one error type; unify with `mapError` first.
354
+ *
355
+ * The record form is the multi-resource screen:
356
+ * `all({ user, orders, prefs })` combines into one value whose data is the
357
+ * struct of all datas. */
358
+ export declare const all: <const Inputs extends Iterable<AsyncData<any, any>> | Record<string, AsyncData<any, any>>>(inputs: Inputs) => [Inputs] extends [ReadonlyArray<AsyncData<any, any>>] ? AsyncData<{
359
+ -readonly [K in keyof Inputs]: [Inputs[K]] extends [
360
+ AsyncData<infer A, any>
361
+ ] ? A : never;
362
+ }, Inputs[number] extends never ? never : [Inputs[number]] extends [AsyncData<any, infer E>] ? E : never> : [Inputs] extends [Iterable<AsyncData<infer A, infer E>>] ? AsyncData<Array<A>, E> : AsyncData<{
363
+ -readonly [K in keyof Inputs]: [Inputs[K]] extends [
364
+ AsyncData<infer A, any>
365
+ ] ? A : never;
366
+ }, Inputs[keyof Inputs] extends never ? never : [Inputs[keyof Inputs]] extends [AsyncData<any, infer E>] ? E : never>;
367
+ /** Folds a settled `Result` into the previous state, keeping the last good
368
+ * data: a `Result` success becomes `Success`, and a `Result` failure
369
+ * becomes `Stale({ error, data })` when `self` holds data, else a bare
370
+ * `Failure`. The primary way to fold a fetch back into the Model, and the
371
+ * reason a failed refresh keeps data on screen: without `settle`, every
372
+ * fetch needs a success arm and a failure arm that hand-assemble
373
+ * `Success`, `Stale`, and `Failure` from the previous state. When a
374
+ * failure should deliberately drop the previous data, match on the
375
+ * `Result` directly and build the `Failure` explicitly.
376
+ *
377
+ * @example
378
+ * ```ts
379
+ * import { Effect, pipe } from 'effect'
380
+ * import { AsyncData, Command } from 'foldkit'
381
+ *
382
+ * // The Command settles the fetch into a Result instead of throwing:
383
+ * const LoadNotes = Command.define(
384
+ * 'LoadNotes',
385
+ * SettledLoadNotes,
386
+ * )(
387
+ * pipe(
388
+ * fetchNotes,
389
+ * Effect.result,
390
+ * Effect.map(result => SettledLoadNotes({ result })),
391
+ * ),
392
+ * )
393
+ *
394
+ * // One update arm folds it in, whatever the previous state was:
395
+ * SettledLoadNotes: ({ result }) => [
396
+ * evo(model, { notes: AsyncData.settle(result) }),
397
+ * [],
398
+ * ]
399
+ * ```
400
+ */
401
+ export declare const settle: {
402
+ <A, E>(result: Result.Result<A, E>): (self: AsyncData<A, E>) => AsyncData<A, E>;
403
+ <A, E>(self: AsyncData<A, E>, result: Result.Result<A, E>): AsyncData<A, E>;
404
+ };
405
+ //# sourceMappingURL=asyncData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asyncData.d.ts","sourceRoot":"","sources":["../../src/asyncData/asyncData.ts"],"names":[],"mappings":"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"}