@lsby/ts-fp-data 0.2.1 → 0.2.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/either.cjs +20 -1
- package/dist/cjs/data/either.d.cts +12 -1
- package/dist/cjs/data/task.cjs +21 -1
- package/dist/cjs/data/task.d.cts +1 -0
- package/dist/cjs/func/seq.cjs +21 -1
- package/dist/cjs/func/seq.d.cts +1 -0
- package/dist/cjs/index.cjs +21 -1
- package/dist/cjs/index.d.cts +2 -1
- package/dist/cjs/types/types.cjs +18 -0
- package/dist/cjs/types/types.d.cts +3 -0
- package/dist/esm/{chunk-B2G2C6YM.js → chunk-6EMV6TLL.js} +2 -2
- package/dist/esm/{chunk-BE7V6GBG.js → chunk-CMETOIMZ.js} +20 -1
- package/dist/esm/{chunk-IB4BVSOW.js → chunk-EFQMZNIN.js} +2 -1
- package/dist/esm/data/either.d.ts +12 -1
- package/dist/esm/data/either.js +1 -1
- package/dist/esm/data/task.d.ts +1 -0
- package/dist/esm/data/task.js +2 -2
- package/dist/esm/func/seq.d.ts +1 -0
- package/dist/esm/func/seq.js +3 -3
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/types/types.d.ts +3 -0
- package/dist/esm/types/types.js +0 -0
- package/package.json +4 -3
package/dist/cjs/data/either.cjs
CHANGED
|
@@ -99,10 +99,17 @@ var Nothing = class _Nothing extends Maybe {
|
|
|
99
99
|
};
|
|
100
100
|
|
|
101
101
|
// src/data/either.ts
|
|
102
|
-
var Either = class {
|
|
102
|
+
var Either = class _Either {
|
|
103
103
|
static pure(a) {
|
|
104
104
|
return new Right(a);
|
|
105
105
|
}
|
|
106
|
+
static lift(arr, f) {
|
|
107
|
+
const \u7B2C\u4E00\u4E2A\u5DE6\u503C = arr.find((a) => a.getTag() == "Left");
|
|
108
|
+
if (\u7B2C\u4E00\u4E2A\u5DE6\u503C != null) {
|
|
109
|
+
return \u7B2C\u4E00\u4E2A\u5DE6\u503C;
|
|
110
|
+
}
|
|
111
|
+
return _Either.pure(f(arr.map((a) => a.assertRight().getRight())));
|
|
112
|
+
}
|
|
106
113
|
};
|
|
107
114
|
var Left = class _Left extends Either {
|
|
108
115
|
constructor(\u503C) {
|
|
@@ -130,6 +137,9 @@ var Left = class _Left extends Either {
|
|
|
130
137
|
getValue() {
|
|
131
138
|
return this.\u503C;
|
|
132
139
|
}
|
|
140
|
+
getTag() {
|
|
141
|
+
return "Left";
|
|
142
|
+
}
|
|
133
143
|
assertLeft() {
|
|
134
144
|
return this;
|
|
135
145
|
}
|
|
@@ -145,6 +155,9 @@ var Left = class _Left extends Either {
|
|
|
145
155
|
toMaybe() {
|
|
146
156
|
return new Nothing();
|
|
147
157
|
}
|
|
158
|
+
try() {
|
|
159
|
+
throw this.\u503C;
|
|
160
|
+
}
|
|
148
161
|
};
|
|
149
162
|
var Right = class _Right extends Either {
|
|
150
163
|
constructor(\u503C) {
|
|
@@ -172,6 +185,9 @@ var Right = class _Right extends Either {
|
|
|
172
185
|
getValue() {
|
|
173
186
|
return this.\u503C;
|
|
174
187
|
}
|
|
188
|
+
getTag() {
|
|
189
|
+
return "Right";
|
|
190
|
+
}
|
|
175
191
|
assertLeft() {
|
|
176
192
|
throw new Error("\u65AD\u8A00\u5931\u8D25");
|
|
177
193
|
}
|
|
@@ -187,6 +203,9 @@ var Right = class _Right extends Either {
|
|
|
187
203
|
toMaybe() {
|
|
188
204
|
return new Just(this.\u503C);
|
|
189
205
|
}
|
|
206
|
+
try() {
|
|
207
|
+
return this.\u503C;
|
|
208
|
+
}
|
|
190
209
|
};
|
|
191
210
|
// Annotate the CommonJS export names for ESM import in node:
|
|
192
211
|
0 && (module.exports = {
|
|
@@ -1,18 +1,25 @@
|
|
|
1
|
+
import { 元组转联合 as _____ } from '../types/types.cjs';
|
|
1
2
|
import { Maybe } from './maybe.cjs';
|
|
2
3
|
|
|
4
|
+
type 任意Either = Either<any, any>;
|
|
5
|
+
type 计算右值们<A> = A extends [] ? [] : A extends [infer x, ...infer xs] ? x extends Either<unknown, infer c> ? [c, ...计算右值们<xs>] : never : never;
|
|
6
|
+
type 计算左值们<A> = A extends [] ? [] : A extends [infer x, ...infer xs] ? x extends Either<infer c, unknown> ? [c, ...计算左值们<xs>] : never : never;
|
|
3
7
|
declare abstract class Either<L, R> {
|
|
4
8
|
static pure<L, R>(a: R): Either<L, R>;
|
|
9
|
+
static lift<B, Arr extends 任意Either[]>(arr: [...Arr], f: (a: 计算右值们<Arr>) => B): Either<_____<计算左值们<Arr>>, B>;
|
|
5
10
|
abstract map<B>(_f: (a: R) => B): Either<L, B>;
|
|
6
11
|
abstract mapLeft<B>(f: (a: L) => B): Either<B, R>;
|
|
7
12
|
abstract bind<B>(_f: (a: R) => Either<L, B>): Either<L, B>;
|
|
8
13
|
abstract isLeft(): this is Left<L, R>;
|
|
9
14
|
abstract isRight(): this is Right<L, R>;
|
|
10
15
|
abstract getValue(): L | R;
|
|
16
|
+
abstract getTag(): 'Left' | 'Right';
|
|
11
17
|
abstract assertLeft(): Left<L, R>;
|
|
12
18
|
abstract assertRight(): Right<L, R>;
|
|
13
19
|
abstract match<X>(onLeft: (a: L) => X, onRight: (a: R) => X): X;
|
|
14
20
|
abstract mplus(a: Either<L, R>): Either<L, R>;
|
|
15
21
|
abstract toMaybe(): Maybe<R>;
|
|
22
|
+
abstract try(): R;
|
|
16
23
|
}
|
|
17
24
|
declare class Left<L, R> extends Either<L, R> {
|
|
18
25
|
private 值;
|
|
@@ -24,11 +31,13 @@ declare class Left<L, R> extends Either<L, R> {
|
|
|
24
31
|
isRight(): this is Right<L, R>;
|
|
25
32
|
getLeft(): L;
|
|
26
33
|
getValue(): L | R;
|
|
34
|
+
getTag(): 'Left' | 'Right';
|
|
27
35
|
assertLeft(): Left<L, R>;
|
|
28
36
|
assertRight(): Right<L, R>;
|
|
29
37
|
match<X>(onLeft: (a: L) => X, _onRight: (a: R) => X): X;
|
|
30
38
|
mplus(a: Either<L, R>): Either<L, R>;
|
|
31
39
|
toMaybe(): Maybe<R>;
|
|
40
|
+
try(): R;
|
|
32
41
|
}
|
|
33
42
|
declare class Right<L, R> extends Either<L, R> {
|
|
34
43
|
private 值;
|
|
@@ -40,11 +49,13 @@ declare class Right<L, R> extends Either<L, R> {
|
|
|
40
49
|
isRight(): this is Right<L, R>;
|
|
41
50
|
getRight(): R;
|
|
42
51
|
getValue(): L | R;
|
|
52
|
+
getTag(): 'Left' | 'Right';
|
|
43
53
|
assertLeft(): Left<L, R>;
|
|
44
54
|
assertRight(): Right<L, R>;
|
|
45
55
|
match<X>(_onLeft: (a: L) => X, onRight: (a: R) => X): X;
|
|
46
56
|
mplus(_a: Either<L, R>): Either<L, R>;
|
|
47
57
|
toMaybe(): Maybe<R>;
|
|
58
|
+
try(): R;
|
|
48
59
|
}
|
|
49
60
|
|
|
50
|
-
export { Either, Left, Right };
|
|
61
|
+
export { Either, Left, Right, type 任意Either, type 计算右值们, type 计算左值们 };
|
package/dist/cjs/data/task.cjs
CHANGED
|
@@ -98,10 +98,17 @@ var Nothing = class _Nothing extends Maybe {
|
|
|
98
98
|
};
|
|
99
99
|
|
|
100
100
|
// src/data/either.ts
|
|
101
|
-
var Either = class {
|
|
101
|
+
var Either = class _Either {
|
|
102
102
|
static pure(a) {
|
|
103
103
|
return new Right(a);
|
|
104
104
|
}
|
|
105
|
+
static lift(arr, f) {
|
|
106
|
+
const \u7B2C\u4E00\u4E2A\u5DE6\u503C = arr.find((a) => a.getTag() == "Left");
|
|
107
|
+
if (\u7B2C\u4E00\u4E2A\u5DE6\u503C != null) {
|
|
108
|
+
return \u7B2C\u4E00\u4E2A\u5DE6\u503C;
|
|
109
|
+
}
|
|
110
|
+
return _Either.pure(f(arr.map((a) => a.assertRight().getRight())));
|
|
111
|
+
}
|
|
105
112
|
};
|
|
106
113
|
var Left = class _Left extends Either {
|
|
107
114
|
constructor(\u503C) {
|
|
@@ -129,6 +136,9 @@ var Left = class _Left extends Either {
|
|
|
129
136
|
getValue() {
|
|
130
137
|
return this.\u503C;
|
|
131
138
|
}
|
|
139
|
+
getTag() {
|
|
140
|
+
return "Left";
|
|
141
|
+
}
|
|
132
142
|
assertLeft() {
|
|
133
143
|
return this;
|
|
134
144
|
}
|
|
@@ -144,6 +154,9 @@ var Left = class _Left extends Either {
|
|
|
144
154
|
toMaybe() {
|
|
145
155
|
return new Nothing();
|
|
146
156
|
}
|
|
157
|
+
try() {
|
|
158
|
+
throw this.\u503C;
|
|
159
|
+
}
|
|
147
160
|
};
|
|
148
161
|
var Right = class _Right extends Either {
|
|
149
162
|
constructor(\u503C) {
|
|
@@ -171,6 +184,9 @@ var Right = class _Right extends Either {
|
|
|
171
184
|
getValue() {
|
|
172
185
|
return this.\u503C;
|
|
173
186
|
}
|
|
187
|
+
getTag() {
|
|
188
|
+
return "Right";
|
|
189
|
+
}
|
|
174
190
|
assertLeft() {
|
|
175
191
|
throw new Error("\u65AD\u8A00\u5931\u8D25");
|
|
176
192
|
}
|
|
@@ -186,6 +202,9 @@ var Right = class _Right extends Either {
|
|
|
186
202
|
toMaybe() {
|
|
187
203
|
return new Just(this.\u503C);
|
|
188
204
|
}
|
|
205
|
+
try() {
|
|
206
|
+
return this.\u503C;
|
|
207
|
+
}
|
|
189
208
|
};
|
|
190
209
|
|
|
191
210
|
// src/data/task.ts
|
|
@@ -229,6 +248,7 @@ var TaskDo = class _TaskDo {
|
|
|
229
248
|
(c) => c ? Task.pure(task(a.env)).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({
|
|
230
249
|
env: a.env,
|
|
231
250
|
/*从类型可以确保if没命中的情况pureIf来补充正确的候选值, 所以这里跳过ts检查*/
|
|
251
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
232
252
|
lastValue: a.lastValue,
|
|
233
253
|
lock: false
|
|
234
254
|
})
|
package/dist/cjs/data/task.d.cts
CHANGED
package/dist/cjs/func/seq.cjs
CHANGED
|
@@ -105,10 +105,17 @@ var Nothing = class _Nothing extends Maybe {
|
|
|
105
105
|
};
|
|
106
106
|
|
|
107
107
|
// src/data/either.ts
|
|
108
|
-
var Either = class {
|
|
108
|
+
var Either = class _Either {
|
|
109
109
|
static pure(a) {
|
|
110
110
|
return new Right(a);
|
|
111
111
|
}
|
|
112
|
+
static lift(arr, f) {
|
|
113
|
+
const \u7B2C\u4E00\u4E2A\u5DE6\u503C = arr.find((a) => a.getTag() == "Left");
|
|
114
|
+
if (\u7B2C\u4E00\u4E2A\u5DE6\u503C != null) {
|
|
115
|
+
return \u7B2C\u4E00\u4E2A\u5DE6\u503C;
|
|
116
|
+
}
|
|
117
|
+
return _Either.pure(f(arr.map((a) => a.assertRight().getRight())));
|
|
118
|
+
}
|
|
112
119
|
};
|
|
113
120
|
var Left = class _Left extends Either {
|
|
114
121
|
constructor(\u503C) {
|
|
@@ -136,6 +143,9 @@ var Left = class _Left extends Either {
|
|
|
136
143
|
getValue() {
|
|
137
144
|
return this.\u503C;
|
|
138
145
|
}
|
|
146
|
+
getTag() {
|
|
147
|
+
return "Left";
|
|
148
|
+
}
|
|
139
149
|
assertLeft() {
|
|
140
150
|
return this;
|
|
141
151
|
}
|
|
@@ -151,6 +161,9 @@ var Left = class _Left extends Either {
|
|
|
151
161
|
toMaybe() {
|
|
152
162
|
return new Nothing();
|
|
153
163
|
}
|
|
164
|
+
try() {
|
|
165
|
+
throw this.\u503C;
|
|
166
|
+
}
|
|
154
167
|
};
|
|
155
168
|
var Right = class _Right extends Either {
|
|
156
169
|
constructor(\u503C) {
|
|
@@ -178,6 +191,9 @@ var Right = class _Right extends Either {
|
|
|
178
191
|
getValue() {
|
|
179
192
|
return this.\u503C;
|
|
180
193
|
}
|
|
194
|
+
getTag() {
|
|
195
|
+
return "Right";
|
|
196
|
+
}
|
|
181
197
|
assertLeft() {
|
|
182
198
|
throw new Error("\u65AD\u8A00\u5931\u8D25");
|
|
183
199
|
}
|
|
@@ -193,6 +209,9 @@ var Right = class _Right extends Either {
|
|
|
193
209
|
toMaybe() {
|
|
194
210
|
return new Just(this.\u503C);
|
|
195
211
|
}
|
|
212
|
+
try() {
|
|
213
|
+
return this.\u503C;
|
|
214
|
+
}
|
|
196
215
|
};
|
|
197
216
|
|
|
198
217
|
// src/data/task.ts
|
|
@@ -236,6 +255,7 @@ var TaskDo = class _TaskDo {
|
|
|
236
255
|
(c) => c ? Task.pure(task(a.env)).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({
|
|
237
256
|
env: a.env,
|
|
238
257
|
/*从类型可以确保if没命中的情况pureIf来补充正确的候选值, 所以这里跳过ts检查*/
|
|
258
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
239
259
|
lastValue: a.lastValue,
|
|
240
260
|
lock: false
|
|
241
261
|
})
|
package/dist/cjs/func/seq.d.cts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Either } from '../data/either.cjs';
|
|
2
2
|
import { Maybe } from '../data/maybe.cjs';
|
|
3
3
|
import { Task } from '../data/task.cjs';
|
|
4
|
+
import '../types/types.cjs';
|
|
4
5
|
|
|
5
6
|
declare function seqArrayTask<A>(a: Array<Task<A>>): Task<Array<A>>;
|
|
6
7
|
declare function seqEitherTask<L, R>(value: Either<L, Task<R>>): Task<Either<L, R>>;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -116,10 +116,17 @@ var Nothing = class _Nothing extends Maybe {
|
|
|
116
116
|
};
|
|
117
117
|
|
|
118
118
|
// src/data/either.ts
|
|
119
|
-
var Either = class {
|
|
119
|
+
var Either = class _Either {
|
|
120
120
|
static pure(a) {
|
|
121
121
|
return new Right(a);
|
|
122
122
|
}
|
|
123
|
+
static lift(arr, f) {
|
|
124
|
+
const \u7B2C\u4E00\u4E2A\u5DE6\u503C = arr.find((a) => a.getTag() == "Left");
|
|
125
|
+
if (\u7B2C\u4E00\u4E2A\u5DE6\u503C != null) {
|
|
126
|
+
return \u7B2C\u4E00\u4E2A\u5DE6\u503C;
|
|
127
|
+
}
|
|
128
|
+
return _Either.pure(f(arr.map((a) => a.assertRight().getRight())));
|
|
129
|
+
}
|
|
123
130
|
};
|
|
124
131
|
var Left = class _Left extends Either {
|
|
125
132
|
constructor(\u503C) {
|
|
@@ -147,6 +154,9 @@ var Left = class _Left extends Either {
|
|
|
147
154
|
getValue() {
|
|
148
155
|
return this.\u503C;
|
|
149
156
|
}
|
|
157
|
+
getTag() {
|
|
158
|
+
return "Left";
|
|
159
|
+
}
|
|
150
160
|
assertLeft() {
|
|
151
161
|
return this;
|
|
152
162
|
}
|
|
@@ -162,6 +172,9 @@ var Left = class _Left extends Either {
|
|
|
162
172
|
toMaybe() {
|
|
163
173
|
return new Nothing();
|
|
164
174
|
}
|
|
175
|
+
try() {
|
|
176
|
+
throw this.\u503C;
|
|
177
|
+
}
|
|
165
178
|
};
|
|
166
179
|
var Right = class _Right extends Either {
|
|
167
180
|
constructor(\u503C) {
|
|
@@ -189,6 +202,9 @@ var Right = class _Right extends Either {
|
|
|
189
202
|
getValue() {
|
|
190
203
|
return this.\u503C;
|
|
191
204
|
}
|
|
205
|
+
getTag() {
|
|
206
|
+
return "Right";
|
|
207
|
+
}
|
|
192
208
|
assertLeft() {
|
|
193
209
|
throw new Error("\u65AD\u8A00\u5931\u8D25");
|
|
194
210
|
}
|
|
@@ -204,6 +220,9 @@ var Right = class _Right extends Either {
|
|
|
204
220
|
toMaybe() {
|
|
205
221
|
return new Just(this.\u503C);
|
|
206
222
|
}
|
|
223
|
+
try() {
|
|
224
|
+
return this.\u503C;
|
|
225
|
+
}
|
|
207
226
|
};
|
|
208
227
|
|
|
209
228
|
// src/data/lazy.ts
|
|
@@ -279,6 +298,7 @@ var TaskDo = class _TaskDo {
|
|
|
279
298
|
(c) => c ? Task.pure(task(a.env)).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({
|
|
280
299
|
env: a.env,
|
|
281
300
|
/*从类型可以确保if没命中的情况pureIf来补充正确的候选值, 所以这里跳过ts检查*/
|
|
301
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
282
302
|
lastValue: a.lastValue,
|
|
283
303
|
lock: false
|
|
284
304
|
})
|
package/dist/cjs/index.d.cts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { Either, Left, Right } from './data/either.cjs';
|
|
1
|
+
export { Either, Left, Right, 任意Either, 计算右值们, 计算左值们 } from './data/either.cjs';
|
|
2
2
|
export { Lazy, LazyDeferValue, LazyForceValue } from './data/lazy.cjs';
|
|
3
3
|
export { Just, Maybe, Nothing } from './data/maybe.cjs';
|
|
4
4
|
export { Task, TaskDo, TaskDoType, TaskDoTypeBase, TaskDoTypeGet, TaskDoTypeIf, TaskDoTypeIfReturn, TaskDoTypeNoGet, TaskDoTypeReturn } from './data/task.cjs';
|
|
5
5
|
export { seqArrayEitherCollectRight, seqArrayEitherFirstLeft, seqArrayMaybeCollectJust, seqArrayMaybeFirstNothing, seqArrayTask, seqEitherArray, seqEitherTask, seqMaybeArray, seqMaybeTask } from './func/seq.cjs';
|
|
6
|
+
import './types/types.cjs';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
|
|
16
|
+
// src/types/types.ts
|
|
17
|
+
var types_exports = {};
|
|
18
|
+
module.exports = __toCommonJS(types_exports);
|
|
@@ -4,10 +4,17 @@ import {
|
|
|
4
4
|
} from "./chunk-NXA54GUD.js";
|
|
5
5
|
|
|
6
6
|
// src/data/either.ts
|
|
7
|
-
var Either = class {
|
|
7
|
+
var Either = class _Either {
|
|
8
8
|
static pure(a) {
|
|
9
9
|
return new Right(a);
|
|
10
10
|
}
|
|
11
|
+
static lift(arr, f) {
|
|
12
|
+
const \u7B2C\u4E00\u4E2A\u5DE6\u503C = arr.find((a) => a.getTag() == "Left");
|
|
13
|
+
if (\u7B2C\u4E00\u4E2A\u5DE6\u503C != null) {
|
|
14
|
+
return \u7B2C\u4E00\u4E2A\u5DE6\u503C;
|
|
15
|
+
}
|
|
16
|
+
return _Either.pure(f(arr.map((a) => a.assertRight().getRight())));
|
|
17
|
+
}
|
|
11
18
|
};
|
|
12
19
|
var Left = class _Left extends Either {
|
|
13
20
|
constructor(\u503C) {
|
|
@@ -35,6 +42,9 @@ var Left = class _Left extends Either {
|
|
|
35
42
|
getValue() {
|
|
36
43
|
return this.\u503C;
|
|
37
44
|
}
|
|
45
|
+
getTag() {
|
|
46
|
+
return "Left";
|
|
47
|
+
}
|
|
38
48
|
assertLeft() {
|
|
39
49
|
return this;
|
|
40
50
|
}
|
|
@@ -50,6 +60,9 @@ var Left = class _Left extends Either {
|
|
|
50
60
|
toMaybe() {
|
|
51
61
|
return new Nothing();
|
|
52
62
|
}
|
|
63
|
+
try() {
|
|
64
|
+
throw this.\u503C;
|
|
65
|
+
}
|
|
53
66
|
};
|
|
54
67
|
var Right = class _Right extends Either {
|
|
55
68
|
constructor(\u503C) {
|
|
@@ -77,6 +90,9 @@ var Right = class _Right extends Either {
|
|
|
77
90
|
getValue() {
|
|
78
91
|
return this.\u503C;
|
|
79
92
|
}
|
|
93
|
+
getTag() {
|
|
94
|
+
return "Right";
|
|
95
|
+
}
|
|
80
96
|
assertLeft() {
|
|
81
97
|
throw new Error("\u65AD\u8A00\u5931\u8D25");
|
|
82
98
|
}
|
|
@@ -92,6 +108,9 @@ var Right = class _Right extends Either {
|
|
|
92
108
|
toMaybe() {
|
|
93
109
|
return new Just(this.\u503C);
|
|
94
110
|
}
|
|
111
|
+
try() {
|
|
112
|
+
return this.\u503C;
|
|
113
|
+
}
|
|
95
114
|
};
|
|
96
115
|
|
|
97
116
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Left,
|
|
3
3
|
Right
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CMETOIMZ.js";
|
|
5
5
|
|
|
6
6
|
// src/data/task.ts
|
|
7
7
|
var TaskDo = class _TaskDo {
|
|
@@ -44,6 +44,7 @@ var TaskDo = class _TaskDo {
|
|
|
44
44
|
(c) => c ? Task.pure(task(a.env)).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({
|
|
45
45
|
env: a.env,
|
|
46
46
|
/*从类型可以确保if没命中的情况pureIf来补充正确的候选值, 所以这里跳过ts检查*/
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
47
48
|
lastValue: a.lastValue,
|
|
48
49
|
lock: false
|
|
49
50
|
})
|
|
@@ -1,18 +1,25 @@
|
|
|
1
|
+
import { 元组转联合 as _____ } from '../types/types.js';
|
|
1
2
|
import { Maybe } from './maybe.js';
|
|
2
3
|
|
|
4
|
+
type 任意Either = Either<any, any>;
|
|
5
|
+
type 计算右值们<A> = A extends [] ? [] : A extends [infer x, ...infer xs] ? x extends Either<unknown, infer c> ? [c, ...计算右值们<xs>] : never : never;
|
|
6
|
+
type 计算左值们<A> = A extends [] ? [] : A extends [infer x, ...infer xs] ? x extends Either<infer c, unknown> ? [c, ...计算左值们<xs>] : never : never;
|
|
3
7
|
declare abstract class Either<L, R> {
|
|
4
8
|
static pure<L, R>(a: R): Either<L, R>;
|
|
9
|
+
static lift<B, Arr extends 任意Either[]>(arr: [...Arr], f: (a: 计算右值们<Arr>) => B): Either<_____<计算左值们<Arr>>, B>;
|
|
5
10
|
abstract map<B>(_f: (a: R) => B): Either<L, B>;
|
|
6
11
|
abstract mapLeft<B>(f: (a: L) => B): Either<B, R>;
|
|
7
12
|
abstract bind<B>(_f: (a: R) => Either<L, B>): Either<L, B>;
|
|
8
13
|
abstract isLeft(): this is Left<L, R>;
|
|
9
14
|
abstract isRight(): this is Right<L, R>;
|
|
10
15
|
abstract getValue(): L | R;
|
|
16
|
+
abstract getTag(): 'Left' | 'Right';
|
|
11
17
|
abstract assertLeft(): Left<L, R>;
|
|
12
18
|
abstract assertRight(): Right<L, R>;
|
|
13
19
|
abstract match<X>(onLeft: (a: L) => X, onRight: (a: R) => X): X;
|
|
14
20
|
abstract mplus(a: Either<L, R>): Either<L, R>;
|
|
15
21
|
abstract toMaybe(): Maybe<R>;
|
|
22
|
+
abstract try(): R;
|
|
16
23
|
}
|
|
17
24
|
declare class Left<L, R> extends Either<L, R> {
|
|
18
25
|
private 值;
|
|
@@ -24,11 +31,13 @@ declare class Left<L, R> extends Either<L, R> {
|
|
|
24
31
|
isRight(): this is Right<L, R>;
|
|
25
32
|
getLeft(): L;
|
|
26
33
|
getValue(): L | R;
|
|
34
|
+
getTag(): 'Left' | 'Right';
|
|
27
35
|
assertLeft(): Left<L, R>;
|
|
28
36
|
assertRight(): Right<L, R>;
|
|
29
37
|
match<X>(onLeft: (a: L) => X, _onRight: (a: R) => X): X;
|
|
30
38
|
mplus(a: Either<L, R>): Either<L, R>;
|
|
31
39
|
toMaybe(): Maybe<R>;
|
|
40
|
+
try(): R;
|
|
32
41
|
}
|
|
33
42
|
declare class Right<L, R> extends Either<L, R> {
|
|
34
43
|
private 值;
|
|
@@ -40,11 +49,13 @@ declare class Right<L, R> extends Either<L, R> {
|
|
|
40
49
|
isRight(): this is Right<L, R>;
|
|
41
50
|
getRight(): R;
|
|
42
51
|
getValue(): L | R;
|
|
52
|
+
getTag(): 'Left' | 'Right';
|
|
43
53
|
assertLeft(): Left<L, R>;
|
|
44
54
|
assertRight(): Right<L, R>;
|
|
45
55
|
match<X>(_onLeft: (a: L) => X, onRight: (a: R) => X): X;
|
|
46
56
|
mplus(_a: Either<L, R>): Either<L, R>;
|
|
47
57
|
toMaybe(): Maybe<R>;
|
|
58
|
+
try(): R;
|
|
48
59
|
}
|
|
49
60
|
|
|
50
|
-
export { Either, Left, Right };
|
|
61
|
+
export { Either, Left, Right, type 任意Either, type 计算右值们, type 计算左值们 };
|
package/dist/esm/data/either.js
CHANGED
package/dist/esm/data/task.d.ts
CHANGED
package/dist/esm/data/task.js
CHANGED
package/dist/esm/func/seq.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Either } from '../data/either.js';
|
|
2
2
|
import { Maybe } from '../data/maybe.js';
|
|
3
3
|
import { Task } from '../data/task.js';
|
|
4
|
+
import '../types/types.js';
|
|
4
5
|
|
|
5
6
|
declare function seqArrayTask<A>(a: Array<Task<A>>): Task<Array<A>>;
|
|
6
7
|
declare function seqEitherTask<L, R>(value: Either<L, Task<R>>): Task<Either<L, R>>;
|
package/dist/esm/func/seq.js
CHANGED
|
@@ -8,9 +8,9 @@ import {
|
|
|
8
8
|
seqEitherTask,
|
|
9
9
|
seqMaybeArray,
|
|
10
10
|
seqMaybeTask
|
|
11
|
-
} from "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
11
|
+
} from "../chunk-6EMV6TLL.js";
|
|
12
|
+
import "../chunk-EFQMZNIN.js";
|
|
13
|
+
import "../chunk-CMETOIMZ.js";
|
|
14
14
|
import "../chunk-NXA54GUD.js";
|
|
15
15
|
export {
|
|
16
16
|
seqArrayEitherCollectRight,
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { Either, Left, Right } from './data/either.js';
|
|
1
|
+
export { Either, Left, Right, 任意Either, 计算右值们, 计算左值们 } from './data/either.js';
|
|
2
2
|
export { Lazy, LazyDeferValue, LazyForceValue } from './data/lazy.js';
|
|
3
3
|
export { Just, Maybe, Nothing } from './data/maybe.js';
|
|
4
4
|
export { Task, TaskDo, TaskDoType, TaskDoTypeBase, TaskDoTypeGet, TaskDoTypeIf, TaskDoTypeIfReturn, TaskDoTypeNoGet, TaskDoTypeReturn } from './data/task.js';
|
|
5
5
|
export { seqArrayEitherCollectRight, seqArrayEitherFirstLeft, seqArrayMaybeCollectJust, seqArrayMaybeFirstNothing, seqArrayTask, seqEitherArray, seqEitherTask, seqMaybeArray, seqMaybeTask } from './func/seq.js';
|
|
6
|
+
import './types/types.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -13,16 +13,16 @@ import {
|
|
|
13
13
|
seqEitherTask,
|
|
14
14
|
seqMaybeArray,
|
|
15
15
|
seqMaybeTask
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-6EMV6TLL.js";
|
|
17
17
|
import {
|
|
18
18
|
Task,
|
|
19
19
|
TaskDo
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-EFQMZNIN.js";
|
|
21
21
|
import {
|
|
22
22
|
Either,
|
|
23
23
|
Left,
|
|
24
24
|
Right
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-CMETOIMZ.js";
|
|
26
26
|
import {
|
|
27
27
|
Just,
|
|
28
28
|
Maybe,
|
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lsby/ts-fp-data",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"require": "./dist/cjs/index.cjs",
|
|
@@ -34,5 +34,6 @@
|
|
|
34
34
|
"tsup": "^8.0.2",
|
|
35
35
|
"typescript": "^5.4.5",
|
|
36
36
|
"vitest": "^2.0.2"
|
|
37
|
-
}
|
|
38
|
-
|
|
37
|
+
},
|
|
38
|
+
"packageManager": "pnpm@9.7.1+sha512.faf344af2d6ca65c4c5c8c2224ea77a81a5e8859cbc4e06b1511ddce2f0151512431dd19e6aff31f2c6a8f5f2aced9bd2273e1fed7dd4de1868984059d2c4247"
|
|
39
|
+
}
|