@typed/async-data 0.1.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.
Files changed (39) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/dist/cjs/AsyncData.js +225 -0
  4. package/dist/cjs/AsyncData.js.map +1 -0
  5. package/dist/cjs/Progress.js +47 -0
  6. package/dist/cjs/Progress.js.map +1 -0
  7. package/dist/cjs/Schema.js +104 -0
  8. package/dist/cjs/Schema.js.map +1 -0
  9. package/dist/cjs/internal/async-data.js +91 -0
  10. package/dist/cjs/internal/async-data.js.map +1 -0
  11. package/dist/cjs/internal/tag.js +11 -0
  12. package/dist/cjs/internal/tag.js.map +1 -0
  13. package/dist/dts/AsyncData.d.ts +288 -0
  14. package/dist/dts/AsyncData.d.ts.map +1 -0
  15. package/dist/dts/Progress.d.ts +38 -0
  16. package/dist/dts/Progress.d.ts.map +1 -0
  17. package/dist/dts/Schema.d.ts +15 -0
  18. package/dist/dts/Schema.d.ts.map +1 -0
  19. package/dist/dts/internal/async-data.d.ts +34 -0
  20. package/dist/dts/internal/async-data.d.ts.map +1 -0
  21. package/dist/dts/internal/tag.d.ts +5 -0
  22. package/dist/dts/internal/tag.d.ts.map +1 -0
  23. package/dist/esm/AsyncData.js +203 -0
  24. package/dist/esm/AsyncData.js.map +1 -0
  25. package/dist/esm/Progress.js +38 -0
  26. package/dist/esm/Progress.js.map +1 -0
  27. package/dist/esm/Schema.js +93 -0
  28. package/dist/esm/Schema.js.map +1 -0
  29. package/dist/esm/internal/async-data.js +85 -0
  30. package/dist/esm/internal/async-data.js.map +1 -0
  31. package/dist/esm/internal/tag.js +5 -0
  32. package/dist/esm/internal/tag.js.map +1 -0
  33. package/dist/esm/package.json +4 -0
  34. package/package.json +48 -0
  35. package/src/AsyncData.ts +434 -0
  36. package/src/Progress.ts +65 -0
  37. package/src/Schema.ts +166 -0
  38. package/src/internal/async-data.ts +101 -0
  39. package/src/internal/tag.ts +7 -0
@@ -0,0 +1,288 @@
1
+ /**
2
+ * AsyncData represents a piece of data which is acquired asynchronously with loading, failure, and progress states
3
+ * in addition to Option-like states of NoData and Success.
4
+ *
5
+ * @since 1.0.0
6
+ */
7
+ import type { Effect } from "effect";
8
+ import { Cause, Equal, Equivalence, Exit, Option, Unify } from "effect";
9
+ import { FAILURE_TAG, SUCCESS_TAG } from "./internal/tag";
10
+ import * as Progress from "./Progress";
11
+ /**
12
+ * AsyncData represents a piece of data which is acquired asynchronously with loading, failure, and progress states
13
+ * in addition to Option-like states of NoData and Success.
14
+ *
15
+ * @since 1.0.0
16
+ */
17
+ export type AsyncData<E, A> = NoData | Loading | Failure<E> | Success<A>;
18
+ /**
19
+ * @since 1.0.0
20
+ */
21
+ export declare namespace AsyncData {
22
+ /**
23
+ * @since 1.0.0
24
+ */
25
+ export type Error<T> = [T] extends [AsyncData<infer E, infer _>] ? E : never;
26
+ /**
27
+ * @since 1.0.0
28
+ */
29
+ export type Success<T> = [T] extends [AsyncData<infer _, infer A>] ? A : never;
30
+ /**
31
+ * @category models
32
+ * @since 1.0.0
33
+ */
34
+ export interface Unify<A extends {
35
+ [Unify.typeSymbol]?: any;
36
+ }> extends Effect.EffectUnify<A> {
37
+ AsyncData: () => Unify_<A[Unify.typeSymbol]> extends AsyncData<infer E0, infer A0> | infer _ ? AsyncData<E0, A0> : never;
38
+ }
39
+ type Unify_<T extends AsyncData<any, any>> = T extends NoData ? AsyncData<never, never> : T extends Loading ? AsyncData<never, never> : T extends Failure<infer E> ? AsyncData<E, never> : T extends Success<infer A> ? AsyncData<never, A> : never;
40
+ /**
41
+ * @category models
42
+ * @since 1.0.0
43
+ */
44
+ export interface IgnoreList extends Effect.EffectUnifyIgnore {
45
+ Effect: true;
46
+ }
47
+ export {};
48
+ }
49
+ declare const NoData_base: new <A extends Record<string, any>>(args: import("effect/Types").Equals<Omit<A, keyof Equal.Equal>, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" | keyof Equal.Equal ? never : P]: A[P]; }) => Cause.YieldableError & {
50
+ readonly _tag: "NoData";
51
+ } & Readonly<A>;
52
+ /**
53
+ * @since 1.0.0
54
+ */
55
+ export declare class NoData extends NoData_base<{}> {
56
+ /**
57
+ * @since 1.0.0
58
+ */
59
+ readonly [Unify.typeSymbol]: unknown;
60
+ /**
61
+ * @since 1.0.0
62
+ */
63
+ readonly [Unify.unifySymbol]: AsyncData.Unify<this>;
64
+ /**
65
+ * @since 1.0.0
66
+ */
67
+ readonly [Unify.ignoreSymbol]: AsyncData.IgnoreList;
68
+ }
69
+ /**
70
+ * @since 1.0.0
71
+ */
72
+ export declare const noData: {
73
+ (): NoData;
74
+ <E, A>(): AsyncData<E, A>;
75
+ };
76
+ declare const Loading_base: new <A extends Record<string, any>>(args: import("effect/Types").Equals<Omit<A, keyof Equal.Equal>, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" | keyof Equal.Equal ? never : P]: A[P]; }) => Cause.YieldableError & {
77
+ readonly _tag: "Loading";
78
+ } & Readonly<A>;
79
+ /**
80
+ * @since 1.0.0
81
+ */
82
+ export declare class Loading extends Loading_base<LoadingOptions> {
83
+ /**
84
+ * @since 1.0.0
85
+ */
86
+ readonly [Unify.typeSymbol]: unknown;
87
+ /**
88
+ * @since 1.0.0
89
+ */
90
+ readonly [Unify.unifySymbol]: AsyncData.Unify<this>;
91
+ /**
92
+ * @since 1.0.0
93
+ */
94
+ readonly [Unify.ignoreSymbol]: AsyncData.IgnoreList;
95
+ }
96
+ /**
97
+ * @since 1.0.0
98
+ */
99
+ export type LoadingOptions = {
100
+ readonly progress: Option.Option<Progress.Progress>;
101
+ };
102
+ /**
103
+ * @since 1.0.0
104
+ */
105
+ export type OptionalPartial<A> = {
106
+ [K in keyof A]+?: [A[K]] extends [Option.Option<infer R>] ? R | undefined : A[K];
107
+ };
108
+ /**
109
+ * @since 1.0.0
110
+ */
111
+ export declare const loading: {
112
+ (options?: OptionalPartial<LoadingOptions>): Loading;
113
+ <E, A>(options?: OptionalPartial<LoadingOptions>): AsyncData<E, A>;
114
+ };
115
+ /**
116
+ * @since 1.0.0
117
+ */
118
+ export interface Failure<E> extends Effect.Effect<never, E, never> {
119
+ /**
120
+ * @since 1.18.0
121
+ */
122
+ readonly _tag: typeof FAILURE_TAG;
123
+ /**
124
+ * @since 1.18.0
125
+ */
126
+ readonly cause: Cause.Cause<E>;
127
+ /**
128
+ * @since 1.18.0
129
+ */
130
+ readonly refreshing: Option.Option<Loading>;
131
+ /**
132
+ * @since 1.18.0
133
+ */
134
+ readonly [Unify.typeSymbol]: unknown;
135
+ /**
136
+ * @since 1.18.0
137
+ */
138
+ readonly [Unify.unifySymbol]: AsyncData.Unify<this>;
139
+ /**
140
+ * @since 1.18.0
141
+ */
142
+ readonly [Unify.ignoreSymbol]: AsyncData.IgnoreList;
143
+ }
144
+ /**
145
+ * @since 1.0.0
146
+ */
147
+ export type FailureOptions = {
148
+ readonly refreshing: Option.Option<Loading>;
149
+ };
150
+ /**
151
+ * @since 1.0.0
152
+ */
153
+ export declare const failCause: {
154
+ <E>(cause: Cause.Cause<E>, options?: OptionalPartial<FailureOptions>): Failure<E>;
155
+ <E, A>(cause: Cause.Cause<E>, options?: OptionalPartial<FailureOptions>): AsyncData<E, A>;
156
+ };
157
+ /**
158
+ * @since 1.0.0
159
+ */
160
+ export declare const fail: {
161
+ <E>(error: E, options?: OptionalPartial<FailureOptions>): Failure<E>;
162
+ <E, A>(error: E, options?: OptionalPartial<FailureOptions>): AsyncData<E, A>;
163
+ };
164
+ /**
165
+ * @since 1.0.0
166
+ */
167
+ export interface Success<A> extends Effect.Effect<never, never, A> {
168
+ readonly _tag: typeof SUCCESS_TAG;
169
+ readonly value: A;
170
+ readonly refreshing: Option.Option<Loading>;
171
+ readonly [Unify.typeSymbol]: unknown;
172
+ readonly [Unify.unifySymbol]: AsyncData.Unify<this>;
173
+ readonly [Unify.ignoreSymbol]: AsyncData.IgnoreList;
174
+ }
175
+ /**
176
+ * @since 1.0.0
177
+ */
178
+ export type SuccessOptions = {
179
+ readonly refreshing: Option.Option<Loading>;
180
+ };
181
+ /**
182
+ * @since 1.0.0
183
+ */
184
+ export declare const success: {
185
+ <A>(value: A, options?: OptionalPartial<SuccessOptions>): Success<A>;
186
+ <E, A>(value: A, options?: OptionalPartial<SuccessOptions>): AsyncData<E, A>;
187
+ };
188
+ /**
189
+ * @since 1.0.0
190
+ */
191
+ export declare const isSuccess: <E, A>(data: AsyncData<E, A>) => data is Success<A>;
192
+ /**
193
+ * @since 1.0.0
194
+ */
195
+ export declare const isFailure: <E, A>(data: AsyncData<E, A>) => data is Failure<E>;
196
+ /**
197
+ * @since 1.0.0
198
+ */
199
+ export declare const isLoading: <E, A>(data: AsyncData<E, A>) => data is Loading;
200
+ /**
201
+ * @since 1.0.0
202
+ */
203
+ export declare const isNoData: <E, A>(data: AsyncData<E, A>) => data is NoData;
204
+ /**
205
+ * @since 1.0.0
206
+ */
207
+ export type Refreshing<E, A> = RefreshingFailure<E> | RefreshingSuccess<A>;
208
+ /**
209
+ * @since 1.0.0
210
+ */
211
+ export interface RefreshingFailure<E> extends Failure<E> {
212
+ readonly refreshing: Option.Some<Loading>;
213
+ }
214
+ /**
215
+ * @since 1.0.0
216
+ */
217
+ export interface RefreshingSuccess<A> extends Success<A> {
218
+ readonly refreshing: Option.Some<Loading>;
219
+ }
220
+ /**
221
+ * @since 1.0.0
222
+ */
223
+ export declare const isRefreshing: <E, A>(data: AsyncData<E, A>) => data is Refreshing<E, A>;
224
+ /**
225
+ * @since 1.0.0
226
+ */
227
+ export declare const isLoadingOrRefreshing: <E, A>(data: AsyncData<E, A>) => data is Loading | Refreshing<E, A>;
228
+ /**
229
+ * @since 1.0.0
230
+ */
231
+ export declare const match: {
232
+ <E, A, R1, R2, R3, R4>(matchers: {
233
+ NoData: (data: NoData) => R1;
234
+ Loading: (data: Loading) => R2;
235
+ Failure: (cause: Cause.Cause<E>, data: Failure<E>) => R3;
236
+ Success: (value: A, data: Success<A>) => R4;
237
+ }): (data: AsyncData<E, A>) => Unify.Unify<R1 | R2 | R3 | R4>;
238
+ <E, A, R1, R2, R3, R4>(data: AsyncData<E, A>, matchers: {
239
+ NoData: (data: NoData) => R1;
240
+ Loading: (data: Loading) => R2;
241
+ Failure: (cause: Cause.Cause<E>, data: Failure<E>) => R3;
242
+ Success: (value: A, data: Success<A>) => R4;
243
+ }): Unify.Unify<R1 | R2 | R3 | R4>;
244
+ };
245
+ /**
246
+ * @since 1.0.0
247
+ */
248
+ export declare const map: {
249
+ <A, B>(f: (a: A) => B): <E>(data: AsyncData<E, A>) => AsyncData<E, B>;
250
+ <E, A, B>(data: AsyncData<E, A>, f: (a: A) => B): AsyncData<E, B>;
251
+ };
252
+ /**
253
+ * @since 1.0.0
254
+ */
255
+ export declare const flatMap: {
256
+ <A, E2, B>(f: (a: A, options: SuccessOptions) => AsyncData<E2, B>): <E>(data: AsyncData<E, A>) => AsyncData<E | E2, B>;
257
+ <E, A, E2, B>(data: AsyncData<E, A>, f: (a: A, options: SuccessOptions) => AsyncData<E, B>): AsyncData<E | E2, B>;
258
+ };
259
+ /**
260
+ * @since 1.0.0
261
+ */
262
+ export declare const startLoading: <E, A>(data: AsyncData<E, A>) => AsyncData<E, A>;
263
+ /**
264
+ * @since 1.0.0
265
+ */
266
+ export declare const stopLoading: <E, A>(data: AsyncData<E, A>) => AsyncData<E, A>;
267
+ /**
268
+ * @since 1.0.0
269
+ */
270
+ export declare const isAsyncData: <E, A>(u: unknown) => u is AsyncData<E, A>;
271
+ /**
272
+ * @since 1.0.0
273
+ */
274
+ export declare const done: <E, A>(exit: Exit.Exit<E, A>) => AsyncData<E, A>;
275
+ /**
276
+ * @since 1.0.0
277
+ */
278
+ export declare const getFailure: <E, A>(data: AsyncData<E, A>) => Option.Option<E>;
279
+ /**
280
+ * @since 1.0.0
281
+ */
282
+ export declare const getSuccess: <E, A>(data: AsyncData<E, A>) => Option.Option<A>;
283
+ /**
284
+ * @since 1.0.0
285
+ */
286
+ export declare const getEquivalence: <E, A>(valueEq?: Equivalence.Equivalence<A>) => Equivalence.Equivalence<AsyncData<E, A>>;
287
+ export {};
288
+ //# sourceMappingURL=AsyncData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncData.d.ts","sourceRoot":"","sources":["../../src/AsyncData.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import { Equivalence, Option } from "effect";
5
+ /**
6
+ * @since 1.0.0
7
+ */
8
+ export interface Progress {
9
+ readonly loaded: bigint;
10
+ readonly total: Option.Option<bigint>;
11
+ }
12
+ /**
13
+ * @since 1.0.0
14
+ */
15
+ export declare function Progress(loaded: bigint, total?: Option.Option<bigint>): Progress;
16
+ /**
17
+ * @since 1.0.0
18
+ */
19
+ export declare const make: (loaded: bigint, total?: bigint | null) => Progress;
20
+ /**
21
+ * @since 1.0.0
22
+ */
23
+ export declare const setLoaded: {
24
+ (loaded: bigint): (progress: Progress) => Progress;
25
+ (progress: Progress, loaded: bigint): Progress;
26
+ };
27
+ /**
28
+ * @since 1.0.0
29
+ */
30
+ export declare const setTotal: {
31
+ (total: bigint): (progress: Progress) => Progress;
32
+ (progress: Progress, total: bigint): Progress;
33
+ };
34
+ /**
35
+ * @since 1.0.0
36
+ */
37
+ export declare const equals: Equivalence.Equivalence<Progress>;
38
+ //# sourceMappingURL=Progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Progress.d.ts","sourceRoot":"","sources":["../../src/Progress.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG5C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;CACtC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAiB,GAAG,QAAQ,CAK/F;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,WAAY,MAAM,UAAU,MAAM,GAAG,IAAI,KAAG,QAAwD,CAAA;AAErH;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE;IACtB,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK,QAAQ,CAAA;IAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;CAM9C,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE;IACrB,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK,QAAQ,CAAA;IACjD,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAA;CAM7C,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,QAAQ,CAKnD,CAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Schema from "@effect/schema/Schema";
5
+ import * as AsyncData from "@typed/async-data/AsyncData";
6
+ import { Cause } from "effect";
7
+ /**
8
+ * @since 1.0.0
9
+ */
10
+ export declare const cause: <EI, E>(error: Schema.Schema<EI, E>) => Schema.Schema<Cause.Cause<EI>, Cause.Cause<E>>;
11
+ /**
12
+ * @since 1.0.0
13
+ */
14
+ export declare const asyncData: <EI, E, AI, A>(error: Schema.Schema<EI, E>, value: Schema.Schema<AI, A>) => Schema.Schema<AsyncData.AsyncData<EI, AI>, AsyncData.AsyncData<E, A>>;
15
+ //# sourceMappingURL=Schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/Schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,KAAK,SAAS,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,KAAK,EAAmC,MAAM,QAAQ,CAAA;AA8B/D;;GAEG;AACH,eAAO,MAAM,KAAK,wFA6CjB,CAAA;AA2BD;;GAEG;AACH,eAAO,MAAM,SAAS,mJA+CrB,CAAA"}
@@ -0,0 +1,34 @@
1
+ import { Cause, Effect, Effectable, Equal, Hash, Option, Unify } from "effect";
2
+ import { type AsyncData, type Failure, type Loading, type Success } from "../AsyncData";
3
+ export declare class FailureImpl<E> extends Effectable.Class<never, E, never> implements Failure<E> {
4
+ readonly cause: Cause.Cause<E>;
5
+ readonly refreshing: Option.Option<Loading>;
6
+ readonly _tag = "Failure";
7
+ commit: () => Effect.Effect<never, E, never>;
8
+ [Unify.typeSymbol]: unknown;
9
+ [Unify.unifySymbol]: AsyncData.Unify<this>;
10
+ [Unify.ignoreSymbol]: AsyncData.IgnoreList;
11
+ constructor(cause: Cause.Cause<E>, refreshing: Option.Option<Loading>);
12
+ [Equal.symbol]: (that: unknown) => boolean;
13
+ [Hash.symbol]: () => number;
14
+ }
15
+ export declare class SuccessImpl<A> extends Effectable.Class<never, never, A> implements Success<A> {
16
+ readonly value: A;
17
+ readonly refreshing: Option.Option<Loading>;
18
+ readonly _tag = "Success";
19
+ commit: () => Effect.Effect<never, never, A>;
20
+ [Unify.typeSymbol]: unknown;
21
+ [Unify.unifySymbol]: AsyncData.Unify<this>;
22
+ [Unify.ignoreSymbol]: AsyncData.IgnoreList;
23
+ constructor(value: A, refreshing: Option.Option<Loading>);
24
+ [Equal.symbol]: (that: unknown) => boolean;
25
+ [Hash.symbol]: () => number;
26
+ }
27
+ export declare function hasDataOptions(u: Record<PropertyKey, unknown>): boolean;
28
+ export declare function hasEquality(u: Record<PropertyKey, unknown>): boolean;
29
+ export declare function isTaggedRecord(u: unknown): u is Record<PropertyKey, unknown> & {
30
+ readonly _tag: unknown;
31
+ };
32
+ export declare function isRecord(u: unknown): u is Record<PropertyKey, unknown>;
33
+ export declare function isAsyncData<E, A>(u: unknown): u is AsyncData<E, A>;
34
+ //# sourceMappingURL=async-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-data.d.ts","sourceRoot":"","sources":["../../../src/internal/async-data.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAQ,KAAK,EAAE,MAAM,QAAQ,CAAA;AAEpF,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAA;AAGvF,qBAAa,WAAW,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAE,YAAW,OAAO,CAAC,CAAC,CAAC;IAS7E,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;IARvF,QAAQ,CAAC,IAAI,aAAY;IAEzB,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAE7C,CAAC,KAAK,CAAC,UAAU,CAAC,EAAG,OAAO,CAAC;IAC7B,CAAC,KAAK,CAAC,WAAW,CAAC,EAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,KAAK,CAAC,YAAY,CAAC,EAAG,SAAS,CAAC,UAAU,CAAA;gBAEtB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAW,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;IAMvF,CAAC,KAAK,CAAC,MAAM,CAAC,SAAU,OAAO,aAI7B;IAEF,CAAC,IAAI,CAAC,MAAM,CAAC,eAMZ;CACF;AAED,qBAAa,WAAW,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAE,YAAW,OAAO,CAAC,CAAC,CAAC;IAS7E,QAAQ,CAAC,KAAK,EAAE,CAAC;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;IAR1E,QAAQ,CAAC,IAAI,aAAY;IAEzB,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAE7C,CAAC,KAAK,CAAC,UAAU,CAAC,EAAG,OAAO,CAAC;IAC7B,CAAC,KAAK,CAAC,WAAW,CAAC,EAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,KAAK,CAAC,YAAY,CAAC,EAAG,SAAS,CAAC,UAAU,CAAA;gBAEtB,KAAK,EAAE,CAAC,EAAW,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;IAM1E,CAAC,KAAK,CAAC,MAAM,CAAC,SAAU,OAAO,aAI7B;IAEF,CAAC,IAAI,CAAC,MAAM,CAAC,eAMZ;CACF;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,OAAO,CAIvE;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,OAAO,CAEpE;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAEzG;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAEtE;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAelE"}
@@ -0,0 +1,5 @@
1
+ export declare const NO_DATA_TAG: "NoData";
2
+ export declare const LOADING_TAG: "Loading";
3
+ export declare const FAILURE_TAG: "Failure";
4
+ export declare const SUCCESS_TAG: "Success";
5
+ //# sourceMappingURL=tag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../../src/internal/tag.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,UAAoB,CAAA;AAE5C,eAAO,MAAM,WAAW,WAAqB,CAAA;AAE7C,eAAO,MAAM,WAAW,WAAqB,CAAA;AAE7C,eAAO,MAAM,WAAW,WAAqB,CAAA"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * AsyncData represents a piece of data which is acquired asynchronously with loading, failure, and progress states
3
+ * in addition to Option-like states of NoData and Success.
4
+ *
5
+ * @since 1.0.0
6
+ */
7
+ import { Cause, Data, Equal, Equivalence, Exit, Option, Unify } from "effect";
8
+ import { dual } from "effect/Function";
9
+ import * as internal from "./internal/async-data";
10
+ import { FAILURE_TAG, LOADING_TAG, NO_DATA_TAG, SUCCESS_TAG } from "./internal/tag";
11
+ import * as Progress from "./Progress";
12
+ /**
13
+ * @since 1.0.0
14
+ */
15
+ export class NoData extends Data.TaggedError(NO_DATA_TAG) {
16
+ /**
17
+ * @since 1.0.0
18
+ */
19
+ [Unify.typeSymbol];
20
+ /**
21
+ * @since 1.0.0
22
+ */
23
+ [Unify.unifySymbol];
24
+ /**
25
+ * @since 1.0.0
26
+ */
27
+ [Unify.ignoreSymbol];
28
+ }
29
+ /**
30
+ * @since 1.0.0
31
+ */
32
+ export const noData = () => new NoData();
33
+ /**
34
+ * @since 1.0.0
35
+ */
36
+ export class Loading extends Data.TaggedError(LOADING_TAG) {
37
+ /**
38
+ * @since 1.0.0
39
+ */
40
+ [Unify.typeSymbol];
41
+ /**
42
+ * @since 1.0.0
43
+ */
44
+ [Unify.unifySymbol];
45
+ /**
46
+ * @since 1.0.0
47
+ */
48
+ [Unify.ignoreSymbol];
49
+ }
50
+ /**
51
+ * @since 1.0.0
52
+ */
53
+ export const loading = (options) => new Loading({
54
+ progress: Option.fromNullable(options?.progress)
55
+ });
56
+ /**
57
+ * @since 1.0.0
58
+ */
59
+ export const failCause = (cause, options) => new internal.FailureImpl(cause, Option.fromNullable(options?.refreshing));
60
+ /**
61
+ * @since 1.0.0
62
+ */
63
+ export const fail = (error, options) => failCause(Cause.fail(error), options);
64
+ /**
65
+ * @since 1.0.0
66
+ */
67
+ export const success = (value, options) => new internal.SuccessImpl(value, Option.fromNullable(options?.refreshing));
68
+ /**
69
+ * @since 1.0.0
70
+ */
71
+ export const isSuccess = (data) => data._tag === SUCCESS_TAG;
72
+ /**
73
+ * @since 1.0.0
74
+ */
75
+ export const isFailure = (data) => data._tag === FAILURE_TAG;
76
+ /**
77
+ * @since 1.0.0
78
+ */
79
+ export const isLoading = (data) => data._tag === LOADING_TAG;
80
+ /**
81
+ * @since 1.0.0
82
+ */
83
+ export const isNoData = (data) => data._tag === NO_DATA_TAG;
84
+ /**
85
+ * @since 1.0.0
86
+ */
87
+ export const isRefreshing = (data) => isSuccess(data) || isFailure(data) ? Option.isSome(data.refreshing) : false;
88
+ /**
89
+ * @since 1.0.0
90
+ */
91
+ export const isLoadingOrRefreshing = (data) => isLoading(data) || isRefreshing(data);
92
+ /**
93
+ * @since 1.0.0
94
+ */
95
+ export const match = dual(2, (data, matchers) => {
96
+ if (isSuccess(data)) {
97
+ return matchers.Success(data.value, data);
98
+ }
99
+ else if (isFailure(data)) {
100
+ return matchers.Failure(data.cause, data);
101
+ }
102
+ else if (isLoading(data)) {
103
+ return matchers.Loading(data);
104
+ }
105
+ else {
106
+ return matchers.NoData(data);
107
+ }
108
+ });
109
+ /**
110
+ * @since 1.0.0
111
+ */
112
+ export const map = dual(2, function (data, f) {
113
+ return isSuccess(data) ?
114
+ success(f(data.value), {
115
+ refreshing: Option.getOrUndefined(data.refreshing)
116
+ }) :
117
+ data;
118
+ });
119
+ /**
120
+ * @since 1.0.0
121
+ */
122
+ export const flatMap = dual(2, function (data, f) {
123
+ return isSuccess(data) ? f(data.value, data) : data;
124
+ });
125
+ /**
126
+ * @since 1.0.0
127
+ */
128
+ export const startLoading = (data) => {
129
+ if (isSuccess(data)) {
130
+ return Option.isSome(data.refreshing) ? data : success(data.value, { ...data, refreshing: loading() });
131
+ }
132
+ else if (isFailure(data)) {
133
+ return Option.isSome(data.refreshing)
134
+ ? data
135
+ : failCause(data.cause, { ...data, refreshing: loading() });
136
+ }
137
+ else {
138
+ return loading();
139
+ }
140
+ };
141
+ /**
142
+ * @since 1.0.0
143
+ */
144
+ export const stopLoading = (data) => {
145
+ if (isSuccess(data)) {
146
+ return Option.isSome(data.refreshing) ? success(data.value) : data;
147
+ }
148
+ else if (isFailure(data)) {
149
+ return Option.isSome(data.refreshing) ? failCause(data.cause) : data;
150
+ }
151
+ else {
152
+ return noData();
153
+ }
154
+ };
155
+ /**
156
+ * @since 1.0.0
157
+ */
158
+ export const isAsyncData = internal.isAsyncData;
159
+ /**
160
+ * @since 1.0.0
161
+ */
162
+ export const done = (exit) => Exit.match(exit, {
163
+ onFailure: (cause) => failCause(cause),
164
+ onSuccess: (value) => success(value)
165
+ });
166
+ /**
167
+ * @since 1.0.0
168
+ */
169
+ export const getFailure = (data) => isFailure(data) ? Cause.failureOption(data.cause) : Option.none();
170
+ /**
171
+ * @since 1.0.0
172
+ */
173
+ export const getSuccess = (data) => isSuccess(data) ? Option.some(data.value) : Option.none();
174
+ const optionProgressEq = Option.getEquivalence(Progress.equals);
175
+ const loadingEquivalence = Equivalence.struct({
176
+ _tag: Equivalence.string,
177
+ progress: optionProgressEq
178
+ });
179
+ const optionLoadingEq = Option.getEquivalence(loadingEquivalence);
180
+ const failureEquivalence = Equivalence.struct({
181
+ _tag: Equivalence.string,
182
+ cause: Equal.equals,
183
+ refreshing: optionLoadingEq
184
+ });
185
+ const successEquivalence = (valueEq) => Equivalence.struct({
186
+ _tag: Equivalence.string,
187
+ value: valueEq,
188
+ refreshing: optionLoadingEq
189
+ });
190
+ /**
191
+ * @since 1.0.0
192
+ */
193
+ export const getEquivalence = (valueEq = Equal.equals) => (a, b) => {
194
+ if (a === b)
195
+ return true;
196
+ return match(a, {
197
+ NoData: () => isNoData(b),
198
+ Loading: (l1) => isLoading(b) ? loadingEquivalence(l1, b) : false,
199
+ Failure: (_, f1) => isFailure(b) ? failureEquivalence(f1, b) : false,
200
+ Success: (_, s1) => isSuccess(b) ? successEquivalence(valueEq)(s1, b) : false
201
+ });
202
+ };
203
+ //# sourceMappingURL=AsyncData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncData.js","sourceRoot":"","sources":["../../src/AsyncData.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import { Equivalence, Option } from "effect";
5
+ import { dual } from "effect/Function";
6
+ /**
7
+ * @since 1.0.0
8
+ */
9
+ export function Progress(loaded, total = Option.none()) {
10
+ return {
11
+ loaded,
12
+ total
13
+ };
14
+ }
15
+ /**
16
+ * @since 1.0.0
17
+ */
18
+ export const make = (loaded, total) => Progress(loaded, Option.fromNullable(total));
19
+ /**
20
+ * @since 1.0.0
21
+ */
22
+ export const setLoaded = dual(2, function setLoaded(progress, loaded) {
23
+ return Progress(loaded, progress.total);
24
+ });
25
+ /**
26
+ * @since 1.0.0
27
+ */
28
+ export const setTotal = dual(2, function setTotal(progress, total) {
29
+ return Progress(progress.loaded, Option.some(total));
30
+ });
31
+ /**
32
+ * @since 1.0.0
33
+ */
34
+ export const equals = Equivalence.struct({
35
+ loaded: Equivalence.bigint,
36
+ total: Option.getEquivalence(Equivalence.bigint)
37
+ });
38
+ //# sourceMappingURL=Progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Progress.js","sourceRoot":"","sources":["../../src/Progress.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAUtC;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,QAA+B,MAAM,CAAC,IAAI,EAAE;IACnF,OAAO;QACL,MAAM;QACN,KAAK;KACN,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,KAAqB,EAAY,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;AAErH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAGlB,IAAI,CAAC,CAAC,EAAE,SAAS,SAAS,CAAC,QAAkB,EAAE,MAAc;IAC/D,OAAO,QAAQ,CACb,MAAM,EACN,QAAQ,CAAC,KAAK,CACf,CAAA;AACH,CAAC,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAGjB,IAAI,CAAC,CAAC,EAAE,SAAS,QAAQ,CAAC,QAAkB,EAAE,KAAa;IAC7D,OAAO,QAAQ,CACb,QAAQ,CAAC,MAAM,EACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CACnB,CAAA;AACH,CAAC,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAsC,WAAW,CAAC,MAAM,CAEzE;IACA,MAAM,EAAE,WAAW,CAAC,MAAM;IAC1B,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC;CACjD,CAAC,CAAA"}