foldkit 0.121.0 → 0.122.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.
- package/dist/asyncData/asyncData.d.ts +405 -0
- package/dist/asyncData/asyncData.d.ts.map +1 -0
- package/dist/asyncData/asyncData.js +415 -0
- package/dist/asyncData/index.d.ts +2 -0
- package/dist/asyncData/index.d.ts.map +1 -0
- package/dist/asyncData/index.js +1 -0
- package/dist/asyncData/public.d.ts +3 -0
- package/dist/asyncData/public.d.ts.map +1 -0
- package/dist/asyncData/public.js +1 -0
- package/dist/html/index.d.ts +3 -3
- package/dist/html/index.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +78 -0
- package/package.json +6 -2
|
@@ -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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"}
|