@lsby/ts-fp-data 0.0.7 → 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,13 +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 }))));
129
+ return new _TaskDo(
130
+ this.accTask.bind((a) => a.lock ? Task.pure(a) : Task.pure(task(a.env)).bind(() => Task.pure(a)))
131
+ );
132
+ }
133
+ pure(value) {
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
+ );
119
148
  }
120
149
  getTask() {
121
150
  return new Task(async () => {
@@ -131,7 +160,7 @@ var Task = class _Task {
131
160
  return new _Task(async () => a);
132
161
  }
133
162
  static do() {
134
- return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0 })));
163
+ return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0, lock: false })));
135
164
  }
136
165
  map(f) {
137
166
  return new _Task(async () => f(await this.f()));
@@ -1,8 +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, A>(name: K, task: (env: Env) => Task<A>): TaskDoType<Env & Record<K, A>, A>;
5
- exec<A>(task: (env: Env) => Task<A>): TaskDoType<Env, A>;
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>;
6
9
  getTask(): Task<A>;
7
10
  }
8
11
  declare class TaskDo<Env extends Record<string, any>, A> implements TaskDoType<Env, A> {
@@ -10,15 +13,19 @@ declare class TaskDo<Env extends Record<string, any>, A> implements TaskDoType<E
10
13
  constructor(accTask: Task<{
11
14
  env: Env;
12
15
  lastValue: A;
16
+ lock: boolean;
13
17
  }>);
14
- bind<K extends string, A>(name: K, task: (env: Env) => Task<A>): TaskDoType<Env & Record<K, A>, A>;
15
- exec<A>(task: (env: Env) => Task<A>): TaskDoType<Env, A>;
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>;
16
23
  getTask(): Task<A>;
17
24
  }
18
25
  declare class Task<A> {
19
26
  private f;
20
27
  static pure<A>(a: A): Task<A>;
21
- static do(): TaskDo<Record<string, any>, unknown>;
28
+ static do(): TaskDo<Record<string, any>, void>;
22
29
  constructor(f: () => Promise<A>);
23
30
  map<B>(f: (a: A) => B): Task<B>;
24
31
  bind<B>(f: (a: A) => Task<B>): Task<B>;
@@ -111,13 +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 }))));
131
+ return new _TaskDo(
132
+ this.accTask.bind((a) => a.lock ? Task.pure(a) : Task.pure(task(a.env)).bind(() => Task.pure(a)))
133
+ );
134
+ }
135
+ pure(value) {
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
+ );
121
150
  }
122
151
  getTask() {
123
152
  return new Task(async () => {
@@ -133,7 +162,7 @@ var Task = class _Task {
133
162
  return new _Task(async () => a);
134
163
  }
135
164
  static do() {
136
- return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0 })));
165
+ return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0, lock: false })));
137
166
  }
138
167
  map(f) {
139
168
  return new _Task(async () => f(await this.f()));
@@ -119,13 +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 }))));
139
+ return new _TaskDo(
140
+ this.accTask.bind((a) => a.lock ? Task.pure(a) : Task.pure(task(a.env)).bind(() => Task.pure(a)))
141
+ );
142
+ }
143
+ pure(value) {
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
+ );
129
158
  }
130
159
  getTask() {
131
160
  return new Task(async () => {
@@ -141,7 +170,7 @@ var Task = class _Task {
141
170
  return new _Task(async () => a);
142
171
  }
143
172
  static do() {
144
- return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0 })));
173
+ return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0, lock: false })));
145
174
  }
146
175
  map(f) {
147
176
  return new _Task(async () => f(await this.f()));
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Task
3
- } from "./chunk-F7Q4HROJ.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,8 +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, A>(name: K, task: (env: Env) => Task<A>): TaskDoType<Env & Record<K, A>, A>;
5
- exec<A>(task: (env: Env) => Task<A>): TaskDoType<Env, A>;
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>;
6
9
  getTask(): Task<A>;
7
10
  }
8
11
  declare class TaskDo<Env extends Record<string, any>, A> implements TaskDoType<Env, A> {
@@ -10,15 +13,19 @@ declare class TaskDo<Env extends Record<string, any>, A> implements TaskDoType<E
10
13
  constructor(accTask: Task<{
11
14
  env: Env;
12
15
  lastValue: A;
16
+ lock: boolean;
13
17
  }>);
14
- bind<K extends string, A>(name: K, task: (env: Env) => Task<A>): TaskDoType<Env & Record<K, A>, A>;
15
- exec<A>(task: (env: Env) => Task<A>): TaskDoType<Env, A>;
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>;
16
23
  getTask(): Task<A>;
17
24
  }
18
25
  declare class Task<A> {
19
26
  private f;
20
27
  static pure<A>(a: A): Task<A>;
21
- static do(): TaskDo<Record<string, any>, unknown>;
28
+ static do(): TaskDo<Record<string, any>, void>;
22
29
  constructor(f: () => Promise<A>);
23
30
  map<B>(f: (a: A) => B): Task<B>;
24
31
  bind<B>(f: (a: A) => Task<B>): Task<B>;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Task,
3
3
  TaskDo
4
- } from "../chunk-F7Q4HROJ.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-LVW727CO.js";
7
- import "../chunk-F7Q4HROJ.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-LVW727CO.js";
11
+ } from "./chunk-KGTFYSGN.js";
12
12
  import {
13
13
  Task,
14
14
  TaskDo
15
- } from "./chunk-F7Q4HROJ.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.7",
3
+ "version": "0.0.9-beta.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "require": "./dist/cjs/index.cjs",
@@ -1,58 +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
- getTask() {
20
- return new Task(async () => {
21
- return (await this.accTask.run()).lastValue;
22
- });
23
- }
24
- };
25
- var Task = class _Task {
26
- constructor(f) {
27
- this.f = f;
28
- }
29
- static pure(a) {
30
- return new _Task(async () => a);
31
- }
32
- static do() {
33
- return new TaskDo(new _Task(async () => ({ env: {}, lastValue: void 0 })));
34
- }
35
- map(f) {
36
- return new _Task(async () => f(await this.f()));
37
- }
38
- bind(f) {
39
- return new _Task(async () => f(await this.f()).run());
40
- }
41
- run() {
42
- return this.f();
43
- }
44
- async tryRun() {
45
- try {
46
- return new Right(await this.run());
47
- } catch (e) {
48
- if (e instanceof Error)
49
- return new Left(e);
50
- return new Left(new Error(String(e)));
51
- }
52
- }
53
- };
54
-
55
- export {
56
- TaskDo,
57
- Task
58
- };