@lsby/ts-fp-data 0.0.8 → 0.0.9-beta.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.
@@ -109,21 +109,42 @@ var TaskDo = class _TaskDo {
109
109
  constructor(accTask) {
110
110
  this.accTask = accTask;
111
111
  }
112
+ let(name, task) {
113
+ return new _TaskDo(
114
+ this.accTask.bind(
115
+ (a) => a.lock ? Task.pure(a) : Task.pure(task(a.env)).bind(
116
+ (v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue, lock: false })
117
+ )
118
+ )
119
+ );
120
+ }
112
121
  bind(name, task) {
113
122
  return new _TaskDo(
114
- this.accTask.bind((a) => task(a.env).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: v })))
123
+ this.accTask.bind(
124
+ (a) => a.lock ? Task.pure(a) : task(a.env).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue, lock: false }))
125
+ )
115
126
  );
116
127
  }
117
128
  exec(task) {
118
- return new _TaskDo(this.accTask.bind((a) => task(a.env).bind((v) => Task.pure({ env: a.env, lastValue: v }))));
119
- }
120
- effect(task) {
121
129
  return new _TaskDo(
122
- this.accTask.bind((a) => Task.pure(task(a.env)).bind((v) => Task.pure({ env: a.env, lastValue: v })))
130
+ this.accTask.bind((a) => a.lock ? Task.pure(a) : Task.pure(task(a.env)).bind(() => Task.pure(a)))
123
131
  );
124
132
  }
125
133
  pure(value) {
126
- return new _TaskDo(this.accTask.bind((a) => Task.pure(value).bind((v) => Task.pure({ env: a.env, lastValue: v }))));
134
+ return new _TaskDo(
135
+ this.accTask.bind(
136
+ (a) => a.lock ? Task.pure(a) : Task.pure(value).bind((v) => Task.pure({ env: a.env, lastValue: v, lock: false }))
137
+ )
138
+ );
139
+ }
140
+ if(cond, value) {
141
+ return new _TaskDo(
142
+ this.accTask.bind(
143
+ (a) => a.lock ? Task.pure(a) : Task.pure(cond(a.env)).bind(
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
+ )
146
+ )
147
+ );
127
148
  }
128
149
  getTask() {
129
150
  return new Task(async () => {
@@ -139,7 +160,7 @@ var Task = class _Task {
139
160
  return new _Task(async () => a);
140
161
  }
141
162
  static do() {
142
- return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0 })));
163
+ return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0, lock: false })));
143
164
  }
144
165
  map(f) {
145
166
  return new _Task(async () => f(await this.f()));
@@ -1,10 +1,11 @@
1
1
  import { Either } from './either.cjs';
2
2
 
3
3
  interface TaskDoType<Env extends Record<string, any>, A> {
4
- bind<K extends string, X>(name: K, task: (env: Env) => Task<X>): TaskDoType<Env & Record<K, X>, X>;
5
- exec<X>(task: (env: Env) => Task<X>): TaskDoType<Env, X>;
6
- effect<X>(task: (env: Env) => X): TaskDoType<Env, X>;
7
- pure<X>(value: X): TaskDoType<Env, X>;
4
+ let<K extends string, X>(name: K, task: (env: Env) => X): TaskDoType<Env & Record<K, X>, A>;
5
+ bind<K extends string, X>(name: K, task: (env: Env) => Task<X>): TaskDoType<Env & Record<K, X>, A>;
6
+ exec(task: (env: Env) => void): TaskDoType<Env, A>;
7
+ pure(value: A): TaskDoType<Env, A>;
8
+ if(cond: (env: Env) => boolean, value: (env: Env) => Task<A>): TaskDoType<Env, A>;
8
9
  getTask(): Task<A>;
9
10
  }
10
11
  declare class TaskDo<Env extends Record<string, any>, A> implements TaskDoType<Env, A> {
@@ -12,11 +13,13 @@ declare class TaskDo<Env extends Record<string, any>, A> implements TaskDoType<E
12
13
  constructor(accTask: Task<{
13
14
  env: Env;
14
15
  lastValue: A;
16
+ lock: boolean;
15
17
  }>);
16
- bind<K extends string, X>(name: K, task: (env: Env) => Task<X>): TaskDoType<Env & Record<K, X>, X>;
17
- exec<X>(task: (env: Env) => Task<X>): TaskDoType<Env, X>;
18
- effect<X>(task: (env: Env) => X): TaskDoType<Env, X>;
19
- pure<X>(value: X): TaskDoType<Env, X>;
18
+ let<K extends string, X>(name: K, task: (env: Env) => X): TaskDoType<Env & Record<K, X>, A>;
19
+ bind<K extends string, X>(name: K, task: (env: Env) => Task<X>): TaskDoType<Env & Record<K, X>, A>;
20
+ exec(task: (env: Env) => void): TaskDoType<Env, A>;
21
+ pure(value: A): TaskDoType<Env, A>;
22
+ if(cond: (env: Env) => boolean, value: (env: Env) => Task<A>): TaskDoType<Env, A>;
20
23
  getTask(): Task<A>;
21
24
  }
22
25
  declare class Task<A> {
@@ -111,21 +111,42 @@ var TaskDo = class _TaskDo {
111
111
  constructor(accTask) {
112
112
  this.accTask = accTask;
113
113
  }
114
+ let(name, task) {
115
+ return new _TaskDo(
116
+ this.accTask.bind(
117
+ (a) => a.lock ? Task.pure(a) : Task.pure(task(a.env)).bind(
118
+ (v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue, lock: false })
119
+ )
120
+ )
121
+ );
122
+ }
114
123
  bind(name, task) {
115
124
  return new _TaskDo(
116
- this.accTask.bind((a) => task(a.env).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: v })))
125
+ this.accTask.bind(
126
+ (a) => a.lock ? Task.pure(a) : task(a.env).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue, lock: false }))
127
+ )
117
128
  );
118
129
  }
119
130
  exec(task) {
120
- return new _TaskDo(this.accTask.bind((a) => task(a.env).bind((v) => Task.pure({ env: a.env, lastValue: v }))));
121
- }
122
- effect(task) {
123
131
  return new _TaskDo(
124
- this.accTask.bind((a) => Task.pure(task(a.env)).bind((v) => Task.pure({ env: a.env, lastValue: v })))
132
+ this.accTask.bind((a) => a.lock ? Task.pure(a) : Task.pure(task(a.env)).bind(() => Task.pure(a)))
125
133
  );
126
134
  }
127
135
  pure(value) {
128
- return new _TaskDo(this.accTask.bind((a) => Task.pure(value).bind((v) => Task.pure({ env: a.env, lastValue: v }))));
136
+ return new _TaskDo(
137
+ this.accTask.bind(
138
+ (a) => a.lock ? Task.pure(a) : Task.pure(value).bind((v) => Task.pure({ env: a.env, lastValue: v, lock: false }))
139
+ )
140
+ );
141
+ }
142
+ if(cond, value) {
143
+ return new _TaskDo(
144
+ this.accTask.bind(
145
+ (a) => a.lock ? Task.pure(a) : Task.pure(cond(a.env)).bind(
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
+ )
148
+ )
149
+ );
129
150
  }
130
151
  getTask() {
131
152
  return new Task(async () => {
@@ -141,7 +162,7 @@ var Task = class _Task {
141
162
  return new _Task(async () => a);
142
163
  }
143
164
  static do() {
144
- return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0 })));
165
+ return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0, lock: false })));
145
166
  }
146
167
  map(f) {
147
168
  return new _Task(async () => f(await this.f()));
@@ -119,21 +119,42 @@ var TaskDo = class _TaskDo {
119
119
  constructor(accTask) {
120
120
  this.accTask = accTask;
121
121
  }
122
+ let(name, task) {
123
+ return new _TaskDo(
124
+ this.accTask.bind(
125
+ (a) => a.lock ? Task.pure(a) : Task.pure(task(a.env)).bind(
126
+ (v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue, lock: false })
127
+ )
128
+ )
129
+ );
130
+ }
122
131
  bind(name, task) {
123
132
  return new _TaskDo(
124
- this.accTask.bind((a) => task(a.env).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: v })))
133
+ this.accTask.bind(
134
+ (a) => a.lock ? Task.pure(a) : task(a.env).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue, lock: false }))
135
+ )
125
136
  );
126
137
  }
127
138
  exec(task) {
128
- return new _TaskDo(this.accTask.bind((a) => task(a.env).bind((v) => Task.pure({ env: a.env, lastValue: v }))));
129
- }
130
- effect(task) {
131
139
  return new _TaskDo(
132
- this.accTask.bind((a) => Task.pure(task(a.env)).bind((v) => Task.pure({ env: a.env, lastValue: v })))
140
+ this.accTask.bind((a) => a.lock ? Task.pure(a) : Task.pure(task(a.env)).bind(() => Task.pure(a)))
133
141
  );
134
142
  }
135
143
  pure(value) {
136
- return new _TaskDo(this.accTask.bind((a) => Task.pure(value).bind((v) => Task.pure({ env: a.env, lastValue: v }))));
144
+ return new _TaskDo(
145
+ this.accTask.bind(
146
+ (a) => a.lock ? Task.pure(a) : Task.pure(value).bind((v) => Task.pure({ env: a.env, lastValue: v, lock: false }))
147
+ )
148
+ );
149
+ }
150
+ if(cond, value) {
151
+ return new _TaskDo(
152
+ this.accTask.bind(
153
+ (a) => a.lock ? Task.pure(a) : Task.pure(cond(a.env)).bind(
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
+ )
156
+ )
157
+ );
137
158
  }
138
159
  getTask() {
139
160
  return new Task(async () => {
@@ -149,7 +170,7 @@ var Task = class _Task {
149
170
  return new _Task(async () => a);
150
171
  }
151
172
  static do() {
152
- return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0 })));
173
+ return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0, lock: false })));
153
174
  }
154
175
  map(f) {
155
176
  return new _Task(async () => f(await this.f()));
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Task
3
- } from "./chunk-XP6AXTYL.js";
3
+ } from "./chunk-XMHK7KBY.js";
4
4
  import {
5
5
  Left,
6
6
  Right
@@ -0,0 +1,87 @@
1
+ import {
2
+ Left,
3
+ Right
4
+ } from "./chunk-VTI5CRVQ.js";
5
+
6
+ // src/data/task.ts
7
+ var TaskDo = class _TaskDo {
8
+ constructor(accTask) {
9
+ this.accTask = accTask;
10
+ }
11
+ let(name, task) {
12
+ return new _TaskDo(
13
+ this.accTask.bind(
14
+ (a) => a.lock ? Task.pure(a) : Task.pure(task(a.env)).bind(
15
+ (v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue, lock: false })
16
+ )
17
+ )
18
+ );
19
+ }
20
+ bind(name, task) {
21
+ return new _TaskDo(
22
+ this.accTask.bind(
23
+ (a) => a.lock ? Task.pure(a) : task(a.env).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: a.lastValue, lock: false }))
24
+ )
25
+ );
26
+ }
27
+ exec(task) {
28
+ return new _TaskDo(
29
+ this.accTask.bind((a) => a.lock ? Task.pure(a) : Task.pure(task(a.env)).bind(() => Task.pure(a)))
30
+ );
31
+ }
32
+ pure(value) {
33
+ return new _TaskDo(
34
+ this.accTask.bind(
35
+ (a) => a.lock ? Task.pure(a) : Task.pure(value).bind((v) => Task.pure({ env: a.env, lastValue: v, lock: false }))
36
+ )
37
+ );
38
+ }
39
+ if(cond, value) {
40
+ return new _TaskDo(
41
+ this.accTask.bind(
42
+ (a) => a.lock ? Task.pure(a) : Task.pure(cond(a.env)).bind(
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
+ )
45
+ )
46
+ );
47
+ }
48
+ getTask() {
49
+ return new Task(async () => {
50
+ return (await this.accTask.run()).lastValue;
51
+ });
52
+ }
53
+ };
54
+ var Task = class _Task {
55
+ constructor(f) {
56
+ this.f = f;
57
+ }
58
+ static pure(a) {
59
+ return new _Task(async () => a);
60
+ }
61
+ static do() {
62
+ return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0, lock: false })));
63
+ }
64
+ map(f) {
65
+ return new _Task(async () => f(await this.f()));
66
+ }
67
+ bind(f) {
68
+ return new _Task(async () => f(await this.f()).run());
69
+ }
70
+ run() {
71
+ return this.f();
72
+ }
73
+ async tryRun() {
74
+ try {
75
+ return new Right(await this.run());
76
+ } catch (e) {
77
+ if (e instanceof Error)
78
+ return new Left(e);
79
+ return new Left(new Error(String(e)));
80
+ }
81
+ }
82
+ };
83
+
84
+ export {
85
+ TaskDo,
86
+ Task
87
+ };
@@ -1,10 +1,11 @@
1
1
  import { Either } from './either.js';
2
2
 
3
3
  interface TaskDoType<Env extends Record<string, any>, A> {
4
- bind<K extends string, X>(name: K, task: (env: Env) => Task<X>): TaskDoType<Env & Record<K, X>, X>;
5
- exec<X>(task: (env: Env) => Task<X>): TaskDoType<Env, X>;
6
- effect<X>(task: (env: Env) => X): TaskDoType<Env, X>;
7
- pure<X>(value: X): TaskDoType<Env, X>;
4
+ let<K extends string, X>(name: K, task: (env: Env) => X): TaskDoType<Env & Record<K, X>, A>;
5
+ bind<K extends string, X>(name: K, task: (env: Env) => Task<X>): TaskDoType<Env & Record<K, X>, A>;
6
+ exec(task: (env: Env) => void): TaskDoType<Env, A>;
7
+ pure(value: A): TaskDoType<Env, A>;
8
+ if(cond: (env: Env) => boolean, value: (env: Env) => Task<A>): TaskDoType<Env, A>;
8
9
  getTask(): Task<A>;
9
10
  }
10
11
  declare class TaskDo<Env extends Record<string, any>, A> implements TaskDoType<Env, A> {
@@ -12,11 +13,13 @@ declare class TaskDo<Env extends Record<string, any>, A> implements TaskDoType<E
12
13
  constructor(accTask: Task<{
13
14
  env: Env;
14
15
  lastValue: A;
16
+ lock: boolean;
15
17
  }>);
16
- bind<K extends string, X>(name: K, task: (env: Env) => Task<X>): TaskDoType<Env & Record<K, X>, X>;
17
- exec<X>(task: (env: Env) => Task<X>): TaskDoType<Env, X>;
18
- effect<X>(task: (env: Env) => X): TaskDoType<Env, X>;
19
- pure<X>(value: X): TaskDoType<Env, X>;
18
+ let<K extends string, X>(name: K, task: (env: Env) => X): TaskDoType<Env & Record<K, X>, A>;
19
+ bind<K extends string, X>(name: K, task: (env: Env) => Task<X>): TaskDoType<Env & Record<K, X>, A>;
20
+ exec(task: (env: Env) => void): TaskDoType<Env, A>;
21
+ pure(value: A): TaskDoType<Env, A>;
22
+ if(cond: (env: Env) => boolean, value: (env: Env) => Task<A>): TaskDoType<Env, A>;
20
23
  getTask(): Task<A>;
21
24
  }
22
25
  declare class Task<A> {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Task,
3
3
  TaskDo
4
- } from "../chunk-XP6AXTYL.js";
4
+ } from "../chunk-XMHK7KBY.js";
5
5
  import "../chunk-VTI5CRVQ.js";
6
6
  export {
7
7
  Task,
@@ -3,8 +3,8 @@ import {
3
3
  seqArrayTask,
4
4
  seqEitherArray,
5
5
  seqEitherTask
6
- } from "../chunk-3DBX3JLQ.js";
7
- import "../chunk-XP6AXTYL.js";
6
+ } from "../chunk-KGTFYSGN.js";
7
+ import "../chunk-XMHK7KBY.js";
8
8
  import "../chunk-VTI5CRVQ.js";
9
9
  export {
10
10
  seqArrayEither,
package/dist/esm/index.js CHANGED
@@ -8,11 +8,11 @@ import {
8
8
  seqArrayTask,
9
9
  seqEitherArray,
10
10
  seqEitherTask
11
- } from "./chunk-3DBX3JLQ.js";
11
+ } from "./chunk-KGTFYSGN.js";
12
12
  import {
13
13
  Task,
14
14
  TaskDo
15
- } from "./chunk-XP6AXTYL.js";
15
+ } from "./chunk-XMHK7KBY.js";
16
16
  import {
17
17
  Either,
18
18
  Left,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lsby/ts-fp-data",
3
- "version": "0.0.8",
3
+ "version": "0.0.9-beta.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "require": "./dist/cjs/index.cjs",
@@ -1,66 +0,0 @@
1
- import {
2
- Left,
3
- Right
4
- } from "./chunk-VTI5CRVQ.js";
5
-
6
- // src/data/task.ts
7
- var TaskDo = class _TaskDo {
8
- constructor(accTask) {
9
- this.accTask = accTask;
10
- }
11
- bind(name, task) {
12
- return new _TaskDo(
13
- this.accTask.bind((a) => task(a.env).bind((v) => Task.pure({ env: { ...a.env, [name]: v }, lastValue: v })))
14
- );
15
- }
16
- exec(task) {
17
- return new _TaskDo(this.accTask.bind((a) => task(a.env).bind((v) => Task.pure({ env: a.env, lastValue: v }))));
18
- }
19
- effect(task) {
20
- return new _TaskDo(
21
- this.accTask.bind((a) => Task.pure(task(a.env)).bind((v) => Task.pure({ env: a.env, lastValue: v })))
22
- );
23
- }
24
- pure(value) {
25
- return new _TaskDo(this.accTask.bind((a) => Task.pure(value).bind((v) => Task.pure({ env: a.env, lastValue: v }))));
26
- }
27
- getTask() {
28
- return new Task(async () => {
29
- return (await this.accTask.run()).lastValue;
30
- });
31
- }
32
- };
33
- var Task = class _Task {
34
- constructor(f) {
35
- this.f = f;
36
- }
37
- static pure(a) {
38
- return new _Task(async () => a);
39
- }
40
- static do() {
41
- return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0 })));
42
- }
43
- map(f) {
44
- return new _Task(async () => f(await this.f()));
45
- }
46
- bind(f) {
47
- return new _Task(async () => f(await this.f()).run());
48
- }
49
- run() {
50
- return this.f();
51
- }
52
- async tryRun() {
53
- try {
54
- return new Right(await this.run());
55
- } catch (e) {
56
- if (e instanceof Error)
57
- return new Left(e);
58
- return new Left(new Error(String(e)));
59
- }
60
- }
61
- };
62
-
63
- export {
64
- TaskDo,
65
- Task
66
- };