@lsby/ts-fp-data 0.0.9-beta.1 → 0.0.9-beta.3
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/cjs/data/task.cjs +28 -12
- package/dist/cjs/data/task.d.cts +30 -15
- package/dist/cjs/func/seq.cjs +28 -12
- package/dist/cjs/index.cjs +28 -12
- package/dist/cjs/index.d.cts +1 -1
- package/dist/esm/{chunk-KGTFYSGN.js → chunk-IHXXIFRN.js} +1 -1
- package/dist/esm/{chunk-XMHK7KBY.js → chunk-OYLE35IQ.js} +28 -12
- package/dist/esm/data/task.d.ts +30 -15
- package/dist/esm/data/task.js +1 -1
- package/dist/esm/func/seq.js +2 -2
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +7 -7
- package/package.json +1 -1
package/dist/cjs/data/task.cjs
CHANGED
|
@@ -112,37 +112,50 @@ var TaskDo = class _TaskDo {
|
|
|
112
112
|
let(name, task) {
|
|
113
113
|
return new _TaskDo(
|
|
114
114
|
this.accTask.bind(
|
|
115
|
-
(a) =>
|
|
116
|
-
(v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue, lock: false })
|
|
117
|
-
)
|
|
115
|
+
(a) => Task.pure(task(a.env)).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue }))
|
|
118
116
|
)
|
|
119
117
|
);
|
|
120
118
|
}
|
|
121
119
|
bind(name, task) {
|
|
122
120
|
return new _TaskDo(
|
|
123
121
|
this.accTask.bind(
|
|
124
|
-
(a) =>
|
|
122
|
+
(a) => task(a.env).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue }))
|
|
125
123
|
)
|
|
126
124
|
);
|
|
127
125
|
}
|
|
128
126
|
exec(task) {
|
|
129
127
|
return new _TaskDo(
|
|
130
|
-
this.accTask.bind((a) =>
|
|
128
|
+
this.accTask.bind((a) => task(a.env).bind(() => Task.pure({ env: a.env, lastValue: a.lastValue })))
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
effect(task) {
|
|
132
|
+
return new _TaskDo(
|
|
133
|
+
this.accTask.bind((a) => Task.pure(task(a.env)).bind(() => Task.pure({ env: a.env, lastValue: a.lastValue })))
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
pure(task) {
|
|
137
|
+
return new _TaskDo(
|
|
138
|
+
this.accTask.bind((a) => Task.pure(task(a.env)).bind((v) => Task.pure({ env: a.env, lastValue: v })))
|
|
131
139
|
);
|
|
132
140
|
}
|
|
133
|
-
|
|
141
|
+
if(cond, task) {
|
|
134
142
|
return new _TaskDo(
|
|
135
143
|
this.accTask.bind(
|
|
136
|
-
(a) =>
|
|
144
|
+
(a) => Task.pure(cond(a.env)).bind(
|
|
145
|
+
(c) => c ? Task.pure(task(a.env)).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({
|
|
146
|
+
env: a.env,
|
|
147
|
+
/*从类型可以确保if没命中的情况pureIf来补充正确的候选值, 所以这里跳过ts检查*/
|
|
148
|
+
lastValue: a.lastValue,
|
|
149
|
+
lock: false
|
|
150
|
+
})
|
|
151
|
+
)
|
|
137
152
|
)
|
|
138
153
|
);
|
|
139
154
|
}
|
|
140
|
-
|
|
155
|
+
pureR(task) {
|
|
141
156
|
return new _TaskDo(
|
|
142
157
|
this.accTask.bind(
|
|
143
|
-
(a) => a.lock ? Task.pure(a) : Task.pure(
|
|
144
|
-
(c) => c ? value(a.env).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({ env: a.env, lastValue: a.lastValue, lock: false })
|
|
145
|
-
)
|
|
158
|
+
(a) => a.lock ? Task.pure(a) : Task.pure(task(a.env)).bind((v) => Task.pure({ env: a.env, lastValue: v }))
|
|
146
159
|
)
|
|
147
160
|
);
|
|
148
161
|
}
|
|
@@ -160,7 +173,7 @@ var Task = class _Task {
|
|
|
160
173
|
return new _Task(async () => a);
|
|
161
174
|
}
|
|
162
175
|
static do() {
|
|
163
|
-
return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0
|
|
176
|
+
return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0 })));
|
|
164
177
|
}
|
|
165
178
|
map(f) {
|
|
166
179
|
return new _Task(async () => f(await this.f()));
|
|
@@ -171,6 +184,9 @@ var Task = class _Task {
|
|
|
171
184
|
run() {
|
|
172
185
|
return this.f();
|
|
173
186
|
}
|
|
187
|
+
do() {
|
|
188
|
+
return new TaskDo(this.bind((a) => _Task.pure({ env: {}, lastValue: a })));
|
|
189
|
+
}
|
|
174
190
|
async tryRun() {
|
|
175
191
|
try {
|
|
176
192
|
return new Right(await this.run());
|
package/dist/cjs/data/task.d.cts
CHANGED
|
@@ -1,36 +1,51 @@
|
|
|
1
1
|
import { Either } from './either.cjs';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
let<K extends string, X>(name: K, task: (env: Env) => X):
|
|
5
|
-
bind<K extends string, X>(name: K, task: (env: Env) => Task<X>):
|
|
6
|
-
exec(task: (env: Env) =>
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
type TaskDoTypeBase<Env extends Record<string, any>, A> = {
|
|
4
|
+
let<K extends string, X>(name: K, task: (env: Env) => X): TaskDoTypeNoGet<Env & Record<K, X>, A>;
|
|
5
|
+
bind<K extends string, X>(name: K, task: (env: Env) => Task<X>): TaskDoTypeNoGet<Env & Record<K, X>, A>;
|
|
6
|
+
exec<X>(task: (env: Env) => Task<X>): TaskDoTypeNoGet<Env, A>;
|
|
7
|
+
effect<X>(task: (env: Env) => X): TaskDoTypeNoGet<Env, A>;
|
|
8
|
+
};
|
|
9
|
+
type TaskDoTypeReturn<Env extends Record<string, any>, _A> = {
|
|
10
|
+
pure<X>(task: (env: Env) => X): TaskDoTypeGet<Env, X>;
|
|
11
|
+
};
|
|
12
|
+
type TaskDoTypeIf<Env extends Record<string, any>, _A> = {
|
|
13
|
+
if<X>(cond: (env: Env) => boolean, task: (env: Env) => X): TaskDoTypeIfReturn<Env, X>;
|
|
14
|
+
};
|
|
15
|
+
type TaskDoTypeIfReturn<Env extends Record<string, any>, A> = {
|
|
16
|
+
pureR(task: (env: Env) => A): TaskDoTypeGet<Env, A>;
|
|
17
|
+
};
|
|
18
|
+
type TaskDoTypeGet<_Env extends Record<string, any>, A> = {
|
|
9
19
|
getTask(): Task<A>;
|
|
10
|
-
}
|
|
20
|
+
};
|
|
21
|
+
type TaskDoTypeNoGet<Env extends Record<string, any>, A> = TaskDoTypeBase<Env, A> & TaskDoTypeReturn<Env, A> & TaskDoTypeIf<Env, A>;
|
|
22
|
+
type TaskDoType<Env extends Record<string, any>, A> = TaskDoTypeBase<Env, A> & TaskDoTypeReturn<Env, A> & TaskDoTypeGet<Env, A> & TaskDoTypeIf<Env, A> & TaskDoTypeIfReturn<Env, A>;
|
|
11
23
|
declare class TaskDo<Env extends Record<string, any>, A> implements TaskDoType<Env, A> {
|
|
12
24
|
private accTask;
|
|
13
25
|
constructor(accTask: Task<{
|
|
14
26
|
env: Env;
|
|
15
27
|
lastValue: A;
|
|
16
|
-
lock
|
|
28
|
+
lock?: boolean;
|
|
17
29
|
}>);
|
|
18
|
-
let<K extends string, X>(name: K, task: (env: Env) => X):
|
|
19
|
-
bind<K extends string, X>(name: K, task: (env: Env) => Task<X>):
|
|
20
|
-
exec(task: (env: Env) =>
|
|
21
|
-
|
|
22
|
-
|
|
30
|
+
let<K extends string, X>(name: K, task: (env: Env) => X): TaskDoTypeNoGet<Env & Record<K, X>, A>;
|
|
31
|
+
bind<K extends string, X>(name: K, task: (env: Env) => Task<X>): TaskDoTypeNoGet<Env & Record<K, X>, A>;
|
|
32
|
+
exec<X>(task: (env: Env) => Task<X>): TaskDoTypeNoGet<Env, A>;
|
|
33
|
+
effect<X>(task: (env: Env) => X): TaskDoTypeNoGet<Env, A>;
|
|
34
|
+
pure<X>(task: (env: Env) => X): TaskDoTypeGet<Env, X>;
|
|
35
|
+
if<X>(cond: (env: Env) => boolean, task: (env: Env) => X): TaskDoTypeIfReturn<Env, X>;
|
|
36
|
+
pureR(task: (env: Env) => A): TaskDoTypeGet<Env, A>;
|
|
23
37
|
getTask(): Task<A>;
|
|
24
38
|
}
|
|
25
39
|
declare class Task<A> {
|
|
26
40
|
private f;
|
|
27
41
|
static pure<A>(a: A): Task<A>;
|
|
28
|
-
static do():
|
|
42
|
+
static do(): TaskDoTypeBase<Record<string, any>, void>;
|
|
29
43
|
constructor(f: () => Promise<A>);
|
|
30
44
|
map<B>(f: (a: A) => B): Task<B>;
|
|
31
45
|
bind<B>(f: (a: A) => Task<B>): Task<B>;
|
|
32
46
|
run(): Promise<A>;
|
|
47
|
+
do(): TaskDoTypeBase<{}, A>;
|
|
33
48
|
tryRun(): Promise<Either<Error, A>>;
|
|
34
49
|
}
|
|
35
50
|
|
|
36
|
-
export { Task, TaskDo, type TaskDoType };
|
|
51
|
+
export { Task, TaskDo, type TaskDoType, type TaskDoTypeBase, type TaskDoTypeGet, type TaskDoTypeIf, type TaskDoTypeIfReturn, type TaskDoTypeNoGet, type TaskDoTypeReturn };
|
package/dist/cjs/func/seq.cjs
CHANGED
|
@@ -114,37 +114,50 @@ var TaskDo = class _TaskDo {
|
|
|
114
114
|
let(name, task) {
|
|
115
115
|
return new _TaskDo(
|
|
116
116
|
this.accTask.bind(
|
|
117
|
-
(a) =>
|
|
118
|
-
(v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue, lock: false })
|
|
119
|
-
)
|
|
117
|
+
(a) => Task.pure(task(a.env)).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue }))
|
|
120
118
|
)
|
|
121
119
|
);
|
|
122
120
|
}
|
|
123
121
|
bind(name, task) {
|
|
124
122
|
return new _TaskDo(
|
|
125
123
|
this.accTask.bind(
|
|
126
|
-
(a) =>
|
|
124
|
+
(a) => task(a.env).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue }))
|
|
127
125
|
)
|
|
128
126
|
);
|
|
129
127
|
}
|
|
130
128
|
exec(task) {
|
|
131
129
|
return new _TaskDo(
|
|
132
|
-
this.accTask.bind((a) =>
|
|
130
|
+
this.accTask.bind((a) => task(a.env).bind(() => Task.pure({ env: a.env, lastValue: a.lastValue })))
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
effect(task) {
|
|
134
|
+
return new _TaskDo(
|
|
135
|
+
this.accTask.bind((a) => Task.pure(task(a.env)).bind(() => Task.pure({ env: a.env, lastValue: a.lastValue })))
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
pure(task) {
|
|
139
|
+
return new _TaskDo(
|
|
140
|
+
this.accTask.bind((a) => Task.pure(task(a.env)).bind((v) => Task.pure({ env: a.env, lastValue: v })))
|
|
133
141
|
);
|
|
134
142
|
}
|
|
135
|
-
|
|
143
|
+
if(cond, task) {
|
|
136
144
|
return new _TaskDo(
|
|
137
145
|
this.accTask.bind(
|
|
138
|
-
(a) =>
|
|
146
|
+
(a) => Task.pure(cond(a.env)).bind(
|
|
147
|
+
(c) => c ? Task.pure(task(a.env)).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({
|
|
148
|
+
env: a.env,
|
|
149
|
+
/*从类型可以确保if没命中的情况pureIf来补充正确的候选值, 所以这里跳过ts检查*/
|
|
150
|
+
lastValue: a.lastValue,
|
|
151
|
+
lock: false
|
|
152
|
+
})
|
|
153
|
+
)
|
|
139
154
|
)
|
|
140
155
|
);
|
|
141
156
|
}
|
|
142
|
-
|
|
157
|
+
pureR(task) {
|
|
143
158
|
return new _TaskDo(
|
|
144
159
|
this.accTask.bind(
|
|
145
|
-
(a) => a.lock ? Task.pure(a) : Task.pure(
|
|
146
|
-
(c) => c ? value(a.env).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({ env: a.env, lastValue: a.lastValue, lock: false })
|
|
147
|
-
)
|
|
160
|
+
(a) => a.lock ? Task.pure(a) : Task.pure(task(a.env)).bind((v) => Task.pure({ env: a.env, lastValue: v }))
|
|
148
161
|
)
|
|
149
162
|
);
|
|
150
163
|
}
|
|
@@ -162,7 +175,7 @@ var Task = class _Task {
|
|
|
162
175
|
return new _Task(async () => a);
|
|
163
176
|
}
|
|
164
177
|
static do() {
|
|
165
|
-
return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0
|
|
178
|
+
return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0 })));
|
|
166
179
|
}
|
|
167
180
|
map(f) {
|
|
168
181
|
return new _Task(async () => f(await this.f()));
|
|
@@ -173,6 +186,9 @@ var Task = class _Task {
|
|
|
173
186
|
run() {
|
|
174
187
|
return this.f();
|
|
175
188
|
}
|
|
189
|
+
do() {
|
|
190
|
+
return new TaskDo(this.bind((a) => _Task.pure({ env: {}, lastValue: a })));
|
|
191
|
+
}
|
|
176
192
|
async tryRun() {
|
|
177
193
|
try {
|
|
178
194
|
return new Right(await this.run());
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -122,37 +122,50 @@ var TaskDo = class _TaskDo {
|
|
|
122
122
|
let(name, task) {
|
|
123
123
|
return new _TaskDo(
|
|
124
124
|
this.accTask.bind(
|
|
125
|
-
(a) =>
|
|
126
|
-
(v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue, lock: false })
|
|
127
|
-
)
|
|
125
|
+
(a) => Task.pure(task(a.env)).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue }))
|
|
128
126
|
)
|
|
129
127
|
);
|
|
130
128
|
}
|
|
131
129
|
bind(name, task) {
|
|
132
130
|
return new _TaskDo(
|
|
133
131
|
this.accTask.bind(
|
|
134
|
-
(a) =>
|
|
132
|
+
(a) => task(a.env).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue }))
|
|
135
133
|
)
|
|
136
134
|
);
|
|
137
135
|
}
|
|
138
136
|
exec(task) {
|
|
139
137
|
return new _TaskDo(
|
|
140
|
-
this.accTask.bind((a) =>
|
|
138
|
+
this.accTask.bind((a) => task(a.env).bind(() => Task.pure({ env: a.env, lastValue: a.lastValue })))
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
effect(task) {
|
|
142
|
+
return new _TaskDo(
|
|
143
|
+
this.accTask.bind((a) => Task.pure(task(a.env)).bind(() => Task.pure({ env: a.env, lastValue: a.lastValue })))
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
pure(task) {
|
|
147
|
+
return new _TaskDo(
|
|
148
|
+
this.accTask.bind((a) => Task.pure(task(a.env)).bind((v) => Task.pure({ env: a.env, lastValue: v })))
|
|
141
149
|
);
|
|
142
150
|
}
|
|
143
|
-
|
|
151
|
+
if(cond, task) {
|
|
144
152
|
return new _TaskDo(
|
|
145
153
|
this.accTask.bind(
|
|
146
|
-
(a) =>
|
|
154
|
+
(a) => Task.pure(cond(a.env)).bind(
|
|
155
|
+
(c) => c ? Task.pure(task(a.env)).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({
|
|
156
|
+
env: a.env,
|
|
157
|
+
/*从类型可以确保if没命中的情况pureIf来补充正确的候选值, 所以这里跳过ts检查*/
|
|
158
|
+
lastValue: a.lastValue,
|
|
159
|
+
lock: false
|
|
160
|
+
})
|
|
161
|
+
)
|
|
147
162
|
)
|
|
148
163
|
);
|
|
149
164
|
}
|
|
150
|
-
|
|
165
|
+
pureR(task) {
|
|
151
166
|
return new _TaskDo(
|
|
152
167
|
this.accTask.bind(
|
|
153
|
-
(a) => a.lock ? Task.pure(a) : Task.pure(
|
|
154
|
-
(c) => c ? value(a.env).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({ env: a.env, lastValue: a.lastValue, lock: false })
|
|
155
|
-
)
|
|
168
|
+
(a) => a.lock ? Task.pure(a) : Task.pure(task(a.env)).bind((v) => Task.pure({ env: a.env, lastValue: v }))
|
|
156
169
|
)
|
|
157
170
|
);
|
|
158
171
|
}
|
|
@@ -170,7 +183,7 @@ var Task = class _Task {
|
|
|
170
183
|
return new _Task(async () => a);
|
|
171
184
|
}
|
|
172
185
|
static do() {
|
|
173
|
-
return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0
|
|
186
|
+
return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0 })));
|
|
174
187
|
}
|
|
175
188
|
map(f) {
|
|
176
189
|
return new _Task(async () => f(await this.f()));
|
|
@@ -181,6 +194,9 @@ var Task = class _Task {
|
|
|
181
194
|
run() {
|
|
182
195
|
return this.f();
|
|
183
196
|
}
|
|
197
|
+
do() {
|
|
198
|
+
return new TaskDo(this.bind((a) => _Task.pure({ env: {}, lastValue: a })));
|
|
199
|
+
}
|
|
184
200
|
async tryRun() {
|
|
185
201
|
try {
|
|
186
202
|
return new Right(await this.run());
|
package/dist/cjs/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Task, TaskDo, TaskDoType } from './data/task.cjs';
|
|
1
|
+
export { Task, TaskDo, TaskDoType, TaskDoTypeBase, TaskDoTypeGet, TaskDoTypeIf, TaskDoTypeIfReturn, TaskDoTypeNoGet, TaskDoTypeReturn } from './data/task.cjs';
|
|
2
2
|
export { Just, Maybe, Nothing } from './data/maybe.cjs';
|
|
3
3
|
export { Either, Left, Right } from './data/either.cjs';
|
|
4
4
|
export { seqArrayEither, seqArrayTask, seqEitherArray, seqEitherTask } from './func/seq.cjs';
|
|
@@ -11,37 +11,50 @@ var TaskDo = class _TaskDo {
|
|
|
11
11
|
let(name, task) {
|
|
12
12
|
return new _TaskDo(
|
|
13
13
|
this.accTask.bind(
|
|
14
|
-
(a) =>
|
|
15
|
-
(v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue, lock: false })
|
|
16
|
-
)
|
|
14
|
+
(a) => Task.pure(task(a.env)).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue }))
|
|
17
15
|
)
|
|
18
16
|
);
|
|
19
17
|
}
|
|
20
18
|
bind(name, task) {
|
|
21
19
|
return new _TaskDo(
|
|
22
20
|
this.accTask.bind(
|
|
23
|
-
(a) =>
|
|
21
|
+
(a) => task(a.env).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue }))
|
|
24
22
|
)
|
|
25
23
|
);
|
|
26
24
|
}
|
|
27
25
|
exec(task) {
|
|
28
26
|
return new _TaskDo(
|
|
29
|
-
this.accTask.bind((a) =>
|
|
27
|
+
this.accTask.bind((a) => task(a.env).bind(() => Task.pure({ env: a.env, lastValue: a.lastValue })))
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
effect(task) {
|
|
31
|
+
return new _TaskDo(
|
|
32
|
+
this.accTask.bind((a) => Task.pure(task(a.env)).bind(() => Task.pure({ env: a.env, lastValue: a.lastValue })))
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
pure(task) {
|
|
36
|
+
return new _TaskDo(
|
|
37
|
+
this.accTask.bind((a) => Task.pure(task(a.env)).bind((v) => Task.pure({ env: a.env, lastValue: v })))
|
|
30
38
|
);
|
|
31
39
|
}
|
|
32
|
-
|
|
40
|
+
if(cond, task) {
|
|
33
41
|
return new _TaskDo(
|
|
34
42
|
this.accTask.bind(
|
|
35
|
-
(a) =>
|
|
43
|
+
(a) => Task.pure(cond(a.env)).bind(
|
|
44
|
+
(c) => c ? Task.pure(task(a.env)).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({
|
|
45
|
+
env: a.env,
|
|
46
|
+
/*从类型可以确保if没命中的情况pureIf来补充正确的候选值, 所以这里跳过ts检查*/
|
|
47
|
+
lastValue: a.lastValue,
|
|
48
|
+
lock: false
|
|
49
|
+
})
|
|
50
|
+
)
|
|
36
51
|
)
|
|
37
52
|
);
|
|
38
53
|
}
|
|
39
|
-
|
|
54
|
+
pureR(task) {
|
|
40
55
|
return new _TaskDo(
|
|
41
56
|
this.accTask.bind(
|
|
42
|
-
(a) => a.lock ? Task.pure(a) : Task.pure(
|
|
43
|
-
(c) => c ? value(a.env).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({ env: a.env, lastValue: a.lastValue, lock: false })
|
|
44
|
-
)
|
|
57
|
+
(a) => a.lock ? Task.pure(a) : Task.pure(task(a.env)).bind((v) => Task.pure({ env: a.env, lastValue: v }))
|
|
45
58
|
)
|
|
46
59
|
);
|
|
47
60
|
}
|
|
@@ -59,7 +72,7 @@ var Task = class _Task {
|
|
|
59
72
|
return new _Task(async () => a);
|
|
60
73
|
}
|
|
61
74
|
static do() {
|
|
62
|
-
return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0
|
|
75
|
+
return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0 })));
|
|
63
76
|
}
|
|
64
77
|
map(f) {
|
|
65
78
|
return new _Task(async () => f(await this.f()));
|
|
@@ -70,6 +83,9 @@ var Task = class _Task {
|
|
|
70
83
|
run() {
|
|
71
84
|
return this.f();
|
|
72
85
|
}
|
|
86
|
+
do() {
|
|
87
|
+
return new TaskDo(this.bind((a) => _Task.pure({ env: {}, lastValue: a })));
|
|
88
|
+
}
|
|
73
89
|
async tryRun() {
|
|
74
90
|
try {
|
|
75
91
|
return new Right(await this.run());
|
package/dist/esm/data/task.d.ts
CHANGED
|
@@ -1,36 +1,51 @@
|
|
|
1
1
|
import { Either } from './either.js';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
let<K extends string, X>(name: K, task: (env: Env) => X):
|
|
5
|
-
bind<K extends string, X>(name: K, task: (env: Env) => Task<X>):
|
|
6
|
-
exec(task: (env: Env) =>
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
type TaskDoTypeBase<Env extends Record<string, any>, A> = {
|
|
4
|
+
let<K extends string, X>(name: K, task: (env: Env) => X): TaskDoTypeNoGet<Env & Record<K, X>, A>;
|
|
5
|
+
bind<K extends string, X>(name: K, task: (env: Env) => Task<X>): TaskDoTypeNoGet<Env & Record<K, X>, A>;
|
|
6
|
+
exec<X>(task: (env: Env) => Task<X>): TaskDoTypeNoGet<Env, A>;
|
|
7
|
+
effect<X>(task: (env: Env) => X): TaskDoTypeNoGet<Env, A>;
|
|
8
|
+
};
|
|
9
|
+
type TaskDoTypeReturn<Env extends Record<string, any>, _A> = {
|
|
10
|
+
pure<X>(task: (env: Env) => X): TaskDoTypeGet<Env, X>;
|
|
11
|
+
};
|
|
12
|
+
type TaskDoTypeIf<Env extends Record<string, any>, _A> = {
|
|
13
|
+
if<X>(cond: (env: Env) => boolean, task: (env: Env) => X): TaskDoTypeIfReturn<Env, X>;
|
|
14
|
+
};
|
|
15
|
+
type TaskDoTypeIfReturn<Env extends Record<string, any>, A> = {
|
|
16
|
+
pureR(task: (env: Env) => A): TaskDoTypeGet<Env, A>;
|
|
17
|
+
};
|
|
18
|
+
type TaskDoTypeGet<_Env extends Record<string, any>, A> = {
|
|
9
19
|
getTask(): Task<A>;
|
|
10
|
-
}
|
|
20
|
+
};
|
|
21
|
+
type TaskDoTypeNoGet<Env extends Record<string, any>, A> = TaskDoTypeBase<Env, A> & TaskDoTypeReturn<Env, A> & TaskDoTypeIf<Env, A>;
|
|
22
|
+
type TaskDoType<Env extends Record<string, any>, A> = TaskDoTypeBase<Env, A> & TaskDoTypeReturn<Env, A> & TaskDoTypeGet<Env, A> & TaskDoTypeIf<Env, A> & TaskDoTypeIfReturn<Env, A>;
|
|
11
23
|
declare class TaskDo<Env extends Record<string, any>, A> implements TaskDoType<Env, A> {
|
|
12
24
|
private accTask;
|
|
13
25
|
constructor(accTask: Task<{
|
|
14
26
|
env: Env;
|
|
15
27
|
lastValue: A;
|
|
16
|
-
lock
|
|
28
|
+
lock?: boolean;
|
|
17
29
|
}>);
|
|
18
|
-
let<K extends string, X>(name: K, task: (env: Env) => X):
|
|
19
|
-
bind<K extends string, X>(name: K, task: (env: Env) => Task<X>):
|
|
20
|
-
exec(task: (env: Env) =>
|
|
21
|
-
|
|
22
|
-
|
|
30
|
+
let<K extends string, X>(name: K, task: (env: Env) => X): TaskDoTypeNoGet<Env & Record<K, X>, A>;
|
|
31
|
+
bind<K extends string, X>(name: K, task: (env: Env) => Task<X>): TaskDoTypeNoGet<Env & Record<K, X>, A>;
|
|
32
|
+
exec<X>(task: (env: Env) => Task<X>): TaskDoTypeNoGet<Env, A>;
|
|
33
|
+
effect<X>(task: (env: Env) => X): TaskDoTypeNoGet<Env, A>;
|
|
34
|
+
pure<X>(task: (env: Env) => X): TaskDoTypeGet<Env, X>;
|
|
35
|
+
if<X>(cond: (env: Env) => boolean, task: (env: Env) => X): TaskDoTypeIfReturn<Env, X>;
|
|
36
|
+
pureR(task: (env: Env) => A): TaskDoTypeGet<Env, A>;
|
|
23
37
|
getTask(): Task<A>;
|
|
24
38
|
}
|
|
25
39
|
declare class Task<A> {
|
|
26
40
|
private f;
|
|
27
41
|
static pure<A>(a: A): Task<A>;
|
|
28
|
-
static do():
|
|
42
|
+
static do(): TaskDoTypeBase<Record<string, any>, void>;
|
|
29
43
|
constructor(f: () => Promise<A>);
|
|
30
44
|
map<B>(f: (a: A) => B): Task<B>;
|
|
31
45
|
bind<B>(f: (a: A) => Task<B>): Task<B>;
|
|
32
46
|
run(): Promise<A>;
|
|
47
|
+
do(): TaskDoTypeBase<{}, A>;
|
|
33
48
|
tryRun(): Promise<Either<Error, A>>;
|
|
34
49
|
}
|
|
35
50
|
|
|
36
|
-
export { Task, TaskDo, type TaskDoType };
|
|
51
|
+
export { Task, TaskDo, type TaskDoType, type TaskDoTypeBase, type TaskDoTypeGet, type TaskDoTypeIf, type TaskDoTypeIfReturn, type TaskDoTypeNoGet, type TaskDoTypeReturn };
|
package/dist/esm/data/task.js
CHANGED
package/dist/esm/func/seq.js
CHANGED
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Task, TaskDo, TaskDoType } from './data/task.js';
|
|
1
|
+
export { Task, TaskDo, TaskDoType, TaskDoTypeBase, TaskDoTypeGet, TaskDoTypeIf, TaskDoTypeIfReturn, TaskDoTypeNoGet, TaskDoTypeReturn } from './data/task.js';
|
|
2
2
|
export { Just, Maybe, Nothing } from './data/maybe.js';
|
|
3
3
|
export { Either, Left, Right } from './data/either.js';
|
|
4
4
|
export { seqArrayEither, seqArrayTask, seqEitherArray, seqEitherTask } from './func/seq.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Just,
|
|
3
|
-
Maybe,
|
|
4
|
-
Nothing
|
|
5
|
-
} from "./chunk-PP7TCBHD.js";
|
|
6
1
|
import {
|
|
7
2
|
seqArrayEither,
|
|
8
3
|
seqArrayTask,
|
|
9
4
|
seqEitherArray,
|
|
10
5
|
seqEitherTask
|
|
11
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-IHXXIFRN.js";
|
|
7
|
+
import {
|
|
8
|
+
Just,
|
|
9
|
+
Maybe,
|
|
10
|
+
Nothing
|
|
11
|
+
} from "./chunk-PP7TCBHD.js";
|
|
12
12
|
import {
|
|
13
13
|
Task,
|
|
14
14
|
TaskDo
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-OYLE35IQ.js";
|
|
16
16
|
import {
|
|
17
17
|
Either,
|
|
18
18
|
Left,
|