@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,156 @@
1
+ import { Err, Ok } from "../core/result.js";
2
+ /**
3
+ * @internal
4
+ */
5
+ export async function idTask(task) {
6
+ return await task;
7
+ }
8
+ /**
9
+ * @internal
10
+ */
11
+ export async function cloneTask(task) {
12
+ return (await task).clone();
13
+ }
14
+ /**
15
+ * @internal
16
+ */
17
+ export async function mapTaskSuccess(task, mapFn) {
18
+ const res = await task;
19
+ if (res.isErr())
20
+ return res;
21
+ const mapped = await mapFn(res.unwrap());
22
+ return Ok(mapped);
23
+ }
24
+ /**
25
+ * @internal
26
+ */
27
+ export async function mapTaskSuccessOr(task, mapFn, orValue) {
28
+ const res = await task;
29
+ const mapped = res.isErr() ? await orValue : await mapFn(res.unwrap());
30
+ return Ok(mapped);
31
+ }
32
+ /**
33
+ * @internal
34
+ */
35
+ export async function mapTaskSuccessOrElse(task, mapFn, orFn) {
36
+ const res = await task;
37
+ const mapped = res.isErr()
38
+ ? await orFn(res.unwrap())
39
+ : await mapFn(res.unwrap());
40
+ return Ok(mapped);
41
+ }
42
+ /**
43
+ * @internal
44
+ */
45
+ export async function mapTaskFailure(task, mapFn) {
46
+ const res = await task;
47
+ if (res.isOk())
48
+ return res;
49
+ const mappedErr = await mapFn(res.unwrap());
50
+ return Err(mappedErr);
51
+ }
52
+ /**
53
+ * @internal
54
+ */
55
+ export async function chainTaskSuccess(task, thenFn) {
56
+ const res = await task;
57
+ if (res.isErr())
58
+ return res;
59
+ return thenFn(res.unwrap());
60
+ }
61
+ /**
62
+ * @internal
63
+ */
64
+ export async function chainTaskFailure(task, elseFn) {
65
+ const res = await task;
66
+ if (res.isOk())
67
+ return res;
68
+ return elseFn(res.unwrap());
69
+ }
70
+ /**
71
+ * @internal
72
+ */
73
+ export async function tapTask(task, tapFn) {
74
+ const res = (await task).clone();
75
+ await tapFn(res);
76
+ return task;
77
+ }
78
+ /**
79
+ * @internal
80
+ */
81
+ export async function inspectTaskSuccess(task, inspectFn) {
82
+ const res = await task;
83
+ if (res.isOk()) {
84
+ await inspectFn(res.unwrap());
85
+ }
86
+ return task;
87
+ }
88
+ /**
89
+ * @internal
90
+ */
91
+ export async function inspectTaskFailure(task, inspectFn) {
92
+ const res = await task;
93
+ if (res.isErr()) {
94
+ await inspectFn(res.unwrap());
95
+ }
96
+ return task;
97
+ }
98
+ /**
99
+ * @internal
100
+ */
101
+ export async function zipTask(task1, task2) {
102
+ return (await task1).zip(await task2);
103
+ }
104
+ /**
105
+ * @internal
106
+ */
107
+ export async function andEnsureTask(task, ensureFn) {
108
+ const original = await task;
109
+ if (original.isErr())
110
+ return original;
111
+ const res = await ensureFn(original.unwrap());
112
+ return res.and(original);
113
+ }
114
+ /**
115
+ * @internal
116
+ */
117
+ export async function orEnsureTask(task, ensureFn) {
118
+ const original = await task;
119
+ if (original.isOk())
120
+ return original;
121
+ const res = await ensureFn(original.unwrap());
122
+ return res.or(original);
123
+ }
124
+ /**
125
+ * @internal
126
+ */
127
+ export async function unwrapTask(task) {
128
+ return (await task).unwrap();
129
+ }
130
+ /**
131
+ * @internal
132
+ */
133
+ export async function unwrapTaskOr(task, orValue) {
134
+ const res = await task;
135
+ if (res.isOk())
136
+ return res.unwrap();
137
+ return orValue;
138
+ }
139
+ /**
140
+ * @internal
141
+ */
142
+ export async function unwrapTaskOrElse(task, orFn) {
143
+ const res = await task;
144
+ if (res.isOk())
145
+ return res.unwrap();
146
+ return orFn(res.unwrap());
147
+ }
148
+ /**
149
+ * @internal
150
+ */
151
+ export async function* iterTask(task) {
152
+ const res = await task;
153
+ if (res.isErr())
154
+ return;
155
+ yield res.unwrap();
156
+ }