@aedge-io/grugway 0.0.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 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/adapters/web/fetch/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,YAAY,CAAE,SAAQ,KAAK;IACrD,IAAI,SAAmB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,CAAC,CAAC;gBACA,GAAG,EAAE,CAAC;IAOlB,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAI7D,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC;IAMxE,MAAM,IAAI,iBAAiB;CAM5B;AAED,qBAAa,cAAe,SAAQ,KAAK;IAC9B,IAAI,SAAoB;IACxB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;gBACtB,KAAK,EAAE,OAAO;IAO1B,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc;CAG5C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,cAAc,CAGpE;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,YAAY,EAClD,GAAG,EAAE,CAAC,GACL,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAG7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AACH,wBAAgB,SAAS,CACvB,IAAI,SAAS,OAAO,EAAE,EACtB,CAAC,SAAS,YAAY,EACtB,CAAC,GAAG,CAAC,EACL,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,EACrB,EAAE,GAAG,cAAc,EAEnB,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAChD,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAC/D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,EAAE,GAChC,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAMrC"}
@@ -0,0 +1,82 @@
1
+ import type { Result } from "../core/result.js";
2
+ /**
3
+ * These are only used internally to save some chars
4
+ * @interal
5
+ */
6
+ type Future<T, E> = PromiseLike<Result<T, E>>;
7
+ type Either<T, E> = Result<T, E> | Future<T, E>;
8
+ export type ExecutorFn<T, E> = ConstructorParameters<typeof Promise<Result<T, E>>>[0];
9
+ /**
10
+ * @internal
11
+ */
12
+ export declare function idTask<T, E>(task: Either<T, E>): Promise<Result<T, E>>;
13
+ /**
14
+ * @internal
15
+ */
16
+ export declare function cloneTask<T, E>(task: Either<T, E>): Promise<Result<T, E>>;
17
+ /**
18
+ * @internal
19
+ */
20
+ export declare function mapTaskSuccess<T, E, T2>(task: Either<T, E>, mapFn: (v: T) => T2 | PromiseLike<T2>): Promise<Result<T2, E>>;
21
+ /**
22
+ * @internal
23
+ */
24
+ export declare function mapTaskSuccessOr<T, E, T2>(task: Either<T, E>, mapFn: (v: T) => T2 | PromiseLike<T2>, orValue: T2 | PromiseLike<T2>): Promise<Result<T2, never>>;
25
+ /**
26
+ * @internal
27
+ */
28
+ export declare function mapTaskSuccessOrElse<T, E, T2>(task: Either<T, E>, mapFn: (v: T) => T2 | PromiseLike<T2>, orFn: (e: E) => T2 | PromiseLike<T2>): Promise<Result<T2, never>>;
29
+ /**
30
+ * @internal
31
+ */
32
+ export declare function mapTaskFailure<T, E, E2>(task: Either<T, E>, mapFn: (v: E) => E2 | PromiseLike<E2>): Promise<Result<T, E2>>;
33
+ /**
34
+ * @internal
35
+ */
36
+ export declare function chainTaskSuccess<T, E, T2, E2>(task: Either<T, E>, thenFn: (v: T) => Either<T2, E2>): Promise<Result<T2, E | E2>>;
37
+ /**
38
+ * @internal
39
+ */
40
+ export declare function chainTaskFailure<T, E, T2, E2>(task: Either<T, E>, elseFn: (v: E) => Either<T2, E2>): Promise<Result<T | T2, E2>>;
41
+ /**
42
+ * @internal
43
+ */
44
+ export declare function tapTask<T, E>(task: Either<T, E>, tapFn: (v: Result<T, E>) => void | PromiseLike<void>): Promise<Result<T, E>>;
45
+ /**
46
+ * @internal
47
+ */
48
+ export declare function inspectTaskSuccess<T, E>(task: Either<T, E>, inspectFn: (v: T) => void | PromiseLike<void>): Promise<Result<T, E>>;
49
+ /**
50
+ * @internal
51
+ */
52
+ export declare function inspectTaskFailure<T, E>(task: Either<T, E>, inspectFn: (v: E) => void | PromiseLike<void>): Promise<Result<T, E>>;
53
+ /**
54
+ * @internal
55
+ */
56
+ export declare function zipTask<T, E, T2, E2>(task1: Either<T, E>, task2: Either<T2, E2>): Promise<Result<[T, T2], E | E2>>;
57
+ /**
58
+ * @internal
59
+ */
60
+ export declare function andEnsureTask<T, E, T2, E2>(task: Either<T, E>, ensureFn: (value: T) => Either<T2, E2>): Promise<Result<T, E | E2>>;
61
+ /**
62
+ * @internal
63
+ */
64
+ export declare function orEnsureTask<T, E, T2, E2>(task: Either<T, E>, ensureFn: (value: E) => Either<T2, E2>): Promise<Result<T | T2, E>>;
65
+ /**
66
+ * @internal
67
+ */
68
+ export declare function unwrapTask<T, E>(task: Either<T, E>): Promise<T | E>;
69
+ /**
70
+ * @internal
71
+ */
72
+ export declare function unwrapTaskOr<T, E, T2>(task: Either<T, E>, orValue: T2 | PromiseLike<T2>): Promise<T | T2>;
73
+ /**
74
+ * @internal
75
+ */
76
+ export declare function unwrapTaskOrElse<T, E, T2>(task: Either<T, E>, orFn: (e: E) => T2 | PromiseLike<T2>): Promise<T | T2>;
77
+ /**
78
+ * @internal
79
+ */
80
+ export declare function iterTask<T, E>(task: Either<T, E>): AsyncIterableIterator<T>;
81
+ export {};
82
+ //# sourceMappingURL=_internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_internal.d.ts","sourceRoot":"","sources":["../../src/async/_internal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,500 @@
1
+ import { type Result } from "../core/result.js";
2
+ /**
3
+ * This is the interface of the return value of {@linkcode Task.deferred}
4
+ */
5
+ export interface DeferredTask<T, E> {
6
+ task: Task<T, E>;
7
+ succeed: (value: T) => void;
8
+ fail: (error: E) => void;
9
+ }
10
+ /**
11
+ * # Task<T, E>
12
+ *
13
+ * `Task<T, E>` is a composeable extension of `Promise<Result<T, E>>`
14
+ *
15
+ * It is a `Promise` sub-class, which never rejects, but always resolves.
16
+ * Either with an `Ok<T>` or an `Err<E>`
17
+ *
18
+ * It supports almost the same API as {@linkcode Result} and allows for
19
+ * the same composition patterns as {@linkcode Result}
20
+ *
21
+ * Furthermore, {@linkcode Tasks} exposes a few functions to ease working
22
+ * with collections (indexed and plain `Iterable`s)
23
+ *
24
+ * @category Task#Basic
25
+ */
26
+ export declare class Task<T, E> extends Promise<Result<T, E>> {
27
+ private constructor();
28
+ /**
29
+ * =======================
30
+ * TASK CONSTRUCTORS
31
+ * =======================
32
+ */
33
+ /**
34
+ * Use this to create a task from a `Result<T, E>` value
35
+ *
36
+ * @category Task#Basic
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * import { Ok, Result, Task } from "../mod.ts";
41
+ *
42
+ * async function produceRes(): Promise<Result<number, TypeError>> {
43
+ * return Ok(42);
44
+ * }
45
+ *
46
+ * const task = Task.of(produceRes());
47
+ * ```
48
+ */
49
+ static of<T, E>(value: Result<T, E> | PromiseLike<Result<T, E>>): Task<T, E>;
50
+ /**
51
+ * Use this to create a `Task` which always succeeds with a value `<T>`
52
+ *
53
+ * @category Task#Basic
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * import { Task } from "./task.ts";
58
+ *
59
+ * const task: Task<number, never> = Task.succeed(42);
60
+ * ```
61
+ */
62
+ static succeed<T>(value: T): Task<T, never>;
63
+ /**
64
+ * Use this to create a `Task` which always fails with a value `<E>`
65
+ *
66
+ * @category Task#Basic
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * import { Task } from "./task.ts";
71
+ *
72
+ * const task: Task<never, number> = Task.fail(1);
73
+ * ```
74
+ */
75
+ static fail<E>(error: E): Task<never, E>;
76
+ /**
77
+ * Use this to create a deferred `Task<T, E>` which will either succeed with
78
+ * a value of type `<T>` or fail with a value of type `<E>`
79
+ *
80
+ * You have to provide the generic types explicitly, otherwise `<T, E>` will
81
+ * be inferred as `<unknown, unknown>`
82
+ *
83
+ * This is mostly useful when working with push-based APIs
84
+ *
85
+ * @category Task#Advanced
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * import { Task } from "./task.ts";
90
+ *
91
+ * class TimeoutError extends Error {}
92
+ *
93
+ * const { task, succeed, fail } = Task.deferred<number, TimeoutError>();
94
+ *
95
+ * const t1 = setTimeout(() => succeed(42), Math.random() * 1000);
96
+ * const t2 = setTimeout(() => fail(new TimeoutError()), 500);
97
+ *
98
+ * await task
99
+ * .inspect(console.log)
100
+ * .inspectErr(console.error);
101
+ *
102
+ * clearTimeout(t1);
103
+ * clearTimeout(t2);
104
+ * ```
105
+ */
106
+ static deferred<T, E>(): DeferredTask<T, E>;
107
+ /**
108
+ * Use this to create a task from a function which returns a `Result<T, E>`
109
+ * or `PromiseLike<Result<T, E>` value.
110
+ *
111
+ * This function should be infallible by contract.
112
+ *
113
+ * Use {@linkcode Task.fromFallible} if this is not the case.
114
+ *
115
+ * @category Task#Basic
116
+ *
117
+ * @example
118
+ * ```typescript
119
+ * import { Ok, Result, Task } from "../mod.ts";
120
+ *
121
+ * async function produceRes(): Promise<Result<number, TypeError>> {
122
+ * return Ok(42);
123
+ * }
124
+ *
125
+ * const task = Task.from(produceRes);
126
+ * ```
127
+ */
128
+ static from<T, E>(fn: () => Result<T, E> | PromiseLike<Result<T, E>>): Task<T, E>;
129
+ /**
130
+ * Use this to create a `Task<T, E>` from a `Promise<T>`.
131
+ *
132
+ * You have to provide an `errorMapFn` in case the promise rejects, so that
133
+ * the type can be inferred.
134
+ *
135
+ * If you are certain(!) that the provided promise will never reject, you can
136
+ * provide the {@linkcode asInfallible} helper from the core module.
137
+ *
138
+ * @category Task#Basic
139
+ *
140
+ * @example
141
+ * ```typescript
142
+ * import { asInfallible, Task } from "../mod.ts";
143
+ *
144
+ * const willBeString = Promise.resolve("42");
145
+ *
146
+ * const task: Task<string, never> = Task.fromPromise(
147
+ * willBeString,
148
+ * asInfallible,
149
+ * );
150
+ *
151
+ * await task;
152
+ * ```
153
+ */
154
+ static fromPromise<T, E>(promise: Promise<T>, errorMapFn: (reason: unknown) => E): Task<T, E>;
155
+ /**
156
+ * Use this to construct a `Task<T, E>` from the return value of a fallible
157
+ * function.
158
+ *
159
+ * @category Task#Basic
160
+ *
161
+ * @example
162
+ * ```typescript
163
+ * import { Task } from "./task.ts";
164
+ *
165
+ * async function rand(): Promise<number> {
166
+ * throw new TypeError("Oops");
167
+ * }
168
+ *
169
+ * function toTypeError(e: unknown): TypeError {
170
+ * if (e instanceof TypeError) return e;
171
+ * return TypeError("Unexpected error", { cause: e });
172
+ * }
173
+ *
174
+ * const task: Task<number, TypeError> = Task.fromFallible(
175
+ * rand,
176
+ * toTypeError,
177
+ * )
178
+ * ```
179
+ */
180
+ static fromFallible<T, E>(fn: () => T | PromiseLike<T>, errorMapFn: (reason: unknown) => E): Task<T, E>;
181
+ /**
182
+ * Use this lift a function into a `Task` context, by composing the wrapped
183
+ * function with a `Result` constructor and an error mapping function.
184
+ *
185
+ * If no constructor is provided, `Ok` is used as a default.
186
+ *
187
+ * This higher order function is especially useful to intergrate 3rd party
188
+ * code into your `Task` pipelines.
189
+ *
190
+ * @category Task#Advanced
191
+ *
192
+ * @example
193
+ * ```
194
+ * import { Err, Ok, Result, Task } from "../mod.ts";
195
+ *
196
+ * async function toSpecialString(s: string): Promise<string> {
197
+ * if (s.length % 3 === 0) return s;
198
+ * throw TypeError("Not confomrming to schema");
199
+ * }
200
+ *
201
+ * function toTypeError(e: unknown): TypeError {
202
+ * if (e instanceof TypeError) return e;
203
+ * return TypeError("Unexpected error", { cause: e });
204
+ * }
205
+ *
206
+ * const lifted = Task.liftFallible(toSpecialString, toTypeError);
207
+ *
208
+ * const task: Task<string, TypeError> = Task.succeed("abcd").andThen(lifted);
209
+ * ```
210
+ */
211
+ static liftFallible<Args extends unknown[], R, E, T = R>(fn: (...args: Args) => R | PromiseLike<R>, errorMapFn: (reason: unknown) => E, ctor?: (arg: R) => Result<T, E> | PromiseLike<Result<T, E>>): (...args: Args) => Task<T, E>;
212
+ /**
213
+ * ======================
214
+ * TASK INSTANCE METHODS
215
+ * ======================
216
+ */
217
+ /**
218
+ * Use this to return the `Task` itself. Canonical identity function.
219
+ *
220
+ * Mostly useful for flattening or en lieu of a noop.
221
+ *
222
+ * This is mostly provided for compatibility with with `Result<T, E>`.
223
+ *
224
+ * @category Task#Basic
225
+ */
226
+ id(): Task<T, E>;
227
+ clone(): Task<T, E>;
228
+ map<T2>(mapFn: (v: T) => T2 | PromiseLike<T2>): Task<T2, E>;
229
+ mapOr<T2>(mapFn: (v: T) => T2 | PromiseLike<T2>, orValue: T2 | PromiseLike<T2>): Task<T2, never>;
230
+ mapOrElse<T2>(mapFn: (v: T) => T2 | PromiseLike<T2>, orFn: (e: E) => T2 | PromiseLike<T2>): Task<T2, never>;
231
+ mapErr<E2>(mapFn: (v: E) => E2 | PromiseLike<E2>): Task<T, E2>;
232
+ andThen<T2, E2>(thenFn: (v: T) => Result<T2, E2> | PromiseLike<Result<T2, E2>>): Task<T2, E | E2>;
233
+ orElse<T2, E2>(elseFn: (v: E) => Result<T2, E2> | PromiseLike<Result<T2, E2>>): Task<T | T2, E2>;
234
+ /**
235
+ * Use this to conditionally pass-through the encapsulated value `<T>`
236
+ * based upon the outcome of the supplied `ensureFn`.
237
+ *
238
+ * In case of `Err<E>`, this method short-circuits.
239
+ *
240
+ * In case of `Ok<T>`, the supplied `ensureFn` is called with the encapsulated
241
+ * value `<T>` and if the return value is:
242
+ * - `Ok<T2>`: it is discarded and the original `Ok<T>` is returned
243
+ * - `Err<E2>`: `Err<E2>` is returned
244
+ *
245
+ * See {@linkcode Task#orEnsure} for the opposite case.
246
+ *
247
+ * This is equivalent to chaining:
248
+ * `original.andThen(ensureFn).and(original)`
249
+ *
250
+ * |**LHS andEnsure RHS**|**RHS: Ok<T2>**|**RHS: Err<E2>**|
251
+ * |:-------------------:|:-------------:|:--------------:|
252
+ * | **LHS: Ok<T>** | Ok<T> | Err<E2> |
253
+ * | **LHS: Err<E>** | Err<E> | Err<E> |
254
+ *
255
+ * @category Task#Advanced
256
+ *
257
+ * @example
258
+ * ```typescript
259
+ * import { Task } from "./task.ts";
260
+ *
261
+ * function getPath(): Task<string, Error> { return Task.succeed("/home")};
262
+ * function isReadableDir(path: string): Task<void, TypeError> { return Task.succeed(undefined) };
263
+ * function getFileExtensions(path: string): Task<string[], Error> { return Task.succeed([".ts"])};
264
+ *
265
+ * getPath()
266
+ * .andEnsure(isReadableDir)
267
+ * .andThen(getFileExtensions)
268
+ * .inspect((exts: string[]) => console.log(exts))
269
+ * .inspectErr((err: Error | TypeError) => console.log(err))
270
+ * ```
271
+ */
272
+ andEnsure<T2, E2>(ensureFn: (v: T) => Result<T2, E2> | PromiseLike<Result<T2, E2>>): Task<T, E | E2>;
273
+ /**
274
+ * Use this to conditionally pass-through the encapsulated value `<E>`
275
+ * based upon the outcome of the supplied `ensureFn`.
276
+ *
277
+ * In case of `Ok<T>`, this method short-circuits.
278
+ *
279
+ * In case of `Err<E>`, the supplied `ensureFn` is called with the encapsulated
280
+ * value `<E>` and if the return value is:
281
+ * - `Ok<T2>`: it is returned
282
+ * - `Err<T2>`: it is discarded and the original `Err<E>` is returned
283
+ *
284
+ * See {@linkcode Task#andEnsure} for the opposite case.
285
+ *
286
+ * This is equivalent to chaining:
287
+ * `original.orElse(ensureFn).or(original)`
288
+ *
289
+ * |**LHS orEnsure RHS**|**RHS: Ok<T2>**|**RHS: Err<E2>**|
290
+ * |:------------------:|:-------------:|:--------------:|
291
+ * | **LHS: Ok<T>** | Ok<T> | Ok<T> |
292
+ * | **LHS: Err<E>** | Ok<T2> | Err<E> |
293
+ *
294
+ * @category Task#Advanced
295
+ *
296
+ * @example
297
+ * ```typescript
298
+ * import { Task } from "./task.ts";
299
+ *
300
+ * function getConfig(): Task<string, RangeError> { return Task.succeed("secret")};
301
+ * function getFallback(err: RangeError): Task<string, Error> { return Task.succeed("default")};
302
+ * function configureService(path: string): Task<void, TypeError> {return Task.succeed(undefined)};
303
+ *
304
+ * getConfig()
305
+ * .orEnsure(getFallback)
306
+ * .andThen(configureService)
307
+ * .inspect((_: void) => console.log("Done!"))
308
+ * .inspectErr((err: RangeError | TypeError) => console.log(err))
309
+ * ```
310
+ */
311
+ orEnsure<T2, E2>(ensureFn: (v: E) => Result<T2, E2> | PromiseLike<Result<T2, E2>>): Task<T | T2, E>;
312
+ zip<T2, E2>(rhs: Result<T2, E2> | PromiseLike<Result<T2, E2>>): Task<[T, T2], E | E2>;
313
+ tap(tapFn: (v: Result<T, E>) => void | PromiseLike<void>): Task<T, E>;
314
+ inspect(inspectFn: (v: T) => void | PromiseLike<void>): Task<T, E>;
315
+ inspectErr(inspectFn: (v: E) => void | PromiseLike<void>): Task<T, E>;
316
+ /**
317
+ * @deprecated (will be removed in 1.0.0) use {@linkcode Task#andEnsure} instead
318
+ */
319
+ trip<T2, E2>(tripFn: (v: T) => Result<T2, E2> | PromiseLike<Result<T2, E2>>): Task<T, E | E2>;
320
+ /**
321
+ * @deprecated (will be removed in 1.0.0) use {@linkcode Task#orEnsure} instead
322
+ */
323
+ rise<T2, E2>(riseFn: (v: E) => Result<T2, E2> | PromiseLike<Result<T2, E2>>): Task<T | T2, E>;
324
+ /**
325
+ * Use this to get the wrapped value out of an `Task<T, E>` instance
326
+ *
327
+ * Returns the wrapped value of type `<T>` in case of `Ok<T>` OR
328
+ * `<E>` in case of `Err<E>`.
329
+ *
330
+ * In contrast to other implementations, this method NEVER throws an
331
+ * exception
332
+ *
333
+ * @category Task#Basic
334
+ *
335
+ * @example
336
+ * ```typescript
337
+ * import { assert } from "../core/assert.ts";
338
+ * import { Result } from "../core/result.ts";
339
+ * import { Task } from "./task.ts";
340
+ *
341
+ * const ok = Result(42) as Result<number, string>;
342
+ * const task = Task.of(ok);
343
+ *
344
+ * const union: number | string = await task.unwrap();
345
+ *
346
+ * assert(union === 42);
347
+ * ```
348
+ */
349
+ unwrap(): Promise<T | E>;
350
+ /**
351
+ * Same as {@linkcode Task#unwrap} but returns a default value in case the
352
+ * underlying `Result<T, E>` is an `Err<E>`
353
+ *
354
+ * @category Task#Basic
355
+ *
356
+ * @example
357
+ * ```typescript
358
+ * import { assert } from "../core/assert.ts";
359
+ * import { Result } from "../core/result.ts";
360
+ * import { Task } from "./task.ts";
361
+ *
362
+ * const err = Result(Error()) as Result<number, Error>;
363
+ * const task = Task.of(err);
364
+ *
365
+ * const union: number | string = await task.unwrapOr(Promise.resolve("foo"));
366
+ *
367
+ * assert(union === "foo");
368
+ * ```
369
+ */
370
+ unwrapOr<T2>(orValue: T2 | PromiseLike<T2>): Promise<T | T2>;
371
+ /**
372
+ * Same as {@linkcode Task#unwrap} but returns a fallback value, which can based
373
+ * constructed from the underlying value of type `<E>` in case of `Err<E>`
374
+ *
375
+ * @category Task#Basic
376
+ *
377
+ * @example
378
+ * ```typescript
379
+ * import { assert } from "../core/assert.ts";
380
+ * import { Result } from "../core/result.ts";
381
+ * import { Task } from "./task.ts";
382
+ *
383
+ * const err = Result(Error("foo")) as Result<number, Error>;
384
+ * const task = Task.of(err);
385
+ *
386
+ * const union: number | string = await task.unwrapOrElse(
387
+ * async (err) => err.message
388
+ * );
389
+ *
390
+ * assert(union === "foo");
391
+ * ```
392
+ */
393
+ unwrapOrElse<T2>(orFn: (e: E) => T2 | PromiseLike<T2>): Promise<T | T2>;
394
+ /**
395
+ * Use this to obtain an async iterator of the encapsulated value `<T>`
396
+ *
397
+ * In case of failure, this method returns the empty `AsyncIteratorResult`
398
+ *
399
+ * @category Task#Advanced
400
+ *
401
+ * @example
402
+ * ```typescript
403
+ * import { assert } from "../core/assert.ts"
404
+ * import { Err, Ok, Result, Task } from "../mod.ts";
405
+ *
406
+ * const success = Task.succeed(42);
407
+ * const failure = Task.fail(Error());
408
+ *
409
+ * async function main() {
410
+ * const okIter = success.iter();
411
+ * const errIter = failure.iter();
412
+ *
413
+ * let okCount = 0;
414
+ * let okYieldedValue = undefined;
415
+ *
416
+ * for await (const v of okIter) {
417
+ * okCount += 1;
418
+ * okYieldedValue = v;
419
+ * }
420
+ *
421
+ * let errCount = 0;
422
+ * let errYieldedValue = undefined;
423
+ *
424
+ * for await (const v of errIter) {
425
+ * errCount += 1;
426
+ * errYieldedValue = v;
427
+ * }
428
+ *
429
+ * assert(okCount === 1);
430
+ * assert(okYieldedValue === 42);
431
+ * assert(errCount === 0)
432
+ * assert(errYieldedValue === undefined);
433
+ * }
434
+ *
435
+ * main().then(() => console.log("Done"));
436
+ * ```
437
+ */
438
+ iter(): AsyncIterableIterator<T>;
439
+ /**
440
+ * ============================
441
+ * WELL-KNOWN SYMBOLS & METHODS
442
+ * ============================
443
+ */
444
+ /**
445
+ * Use this to get the full string tag
446
+ * Short-hand for `Object.prototype.toString.call(task)`
447
+ *
448
+ * See the [reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString)
449
+ *
450
+ * @category Task#Advanced
451
+ *
452
+ * @example
453
+ * ```typescript
454
+ * import { assert } from "../core/assert.ts";
455
+ * import { Task } from "./task.ts"
456
+ *
457
+ * const tag = Task.succeed(42).toString();
458
+ *
459
+ * assert(tag === "[object aetherway.Task]");
460
+ * ```
461
+ */
462
+ toString(): string;
463
+ /**
464
+ * This well-known symbol is called by `Object.prototype.toString` to
465
+ * obtain a string representation of a value's type
466
+ *
467
+ * This maybe useful for debugging or certain logs
468
+ *
469
+ * The [`.toString()`]{@link this#toString} method is a useful short-hand in these scenarios
470
+ *
471
+ * See the [reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag)
472
+ *
473
+ * @category Task#Advanced
474
+ *
475
+ * @example
476
+ * ```typescript
477
+ * import { assert } from "../core/assert.ts";
478
+ * import { Task } from "./task.ts"
479
+ *
480
+ * const task = Task.succeed({ a: 1, b: 2 });
481
+ *
482
+ * const toString = Object.prototype.toString;
483
+ *
484
+ * assert(toString.call(task) === "[object aetherway.Task]");
485
+ * assert(toString.call(Task) === "[object aetherway.Task]");
486
+ * ```
487
+ */
488
+ get [Symbol.toStringTag](): string;
489
+ static get [Symbol.toStringTag](): string;
490
+ /**
491
+ * In case of success AND that the encapsulated value `<T>` implements the
492
+ * async iterator protocol, this delegates to the underlying implementation
493
+ *
494
+ * In all other cases, it yields the empty `AsyncIteratorResult`
495
+ *
496
+ * @category Task#Advanced
497
+ */
498
+ [Symbol.asyncIterator](): AsyncIterableIterator<T extends AsyncIterable<infer U> ? U : never>;
499
+ }
500
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/async/task.ts"],"names":[],"mappings":"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"}