@lsby/ts-fp-data 0.2.0 → 0.2.2

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.
@@ -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
  }
@@ -172,6 +182,9 @@ var Right = class _Right extends Either {
172
182
  getValue() {
173
183
  return this.\u503C;
174
184
  }
185
+ getTag() {
186
+ return "Right";
187
+ }
175
188
  assertLeft() {
176
189
  throw new Error("\u65AD\u8A00\u5931\u8D25");
177
190
  }
@@ -1,13 +1,19 @@
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;
@@ -24,6 +30,7 @@ declare class Left<L, R> extends Either<L, R> {
24
30
  isRight(): this is Right<L, R>;
25
31
  getLeft(): L;
26
32
  getValue(): L | R;
33
+ getTag(): 'Left' | 'Right';
27
34
  assertLeft(): Left<L, R>;
28
35
  assertRight(): Right<L, R>;
29
36
  match<X>(onLeft: (a: L) => X, _onRight: (a: R) => X): X;
@@ -40,6 +47,7 @@ declare class Right<L, R> extends Either<L, R> {
40
47
  isRight(): this is Right<L, R>;
41
48
  getRight(): R;
42
49
  getValue(): L | R;
50
+ getTag(): 'Left' | 'Right';
43
51
  assertLeft(): Left<L, R>;
44
52
  assertRight(): Right<L, R>;
45
53
  match<X>(_onLeft: (a: L) => X, onRight: (a: R) => X): X;
@@ -47,4 +55,4 @@ declare class Right<L, R> extends Either<L, R> {
47
55
  toMaybe(): Maybe<R>;
48
56
  }
49
57
 
50
- export { Either, Left, Right };
58
+ export { Either, Left, Right, type 任意Either, type 计算右值们, type 计算左值们 };
@@ -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
  }
@@ -171,6 +181,9 @@ var Right = class _Right extends Either {
171
181
  getValue() {
172
182
  return this.\u503C;
173
183
  }
184
+ getTag() {
185
+ return "Right";
186
+ }
174
187
  assertLeft() {
175
188
  throw new Error("\u65AD\u8A00\u5931\u8D25");
176
189
  }
@@ -229,6 +242,7 @@ var TaskDo = class _TaskDo {
229
242
  (c) => c ? Task.pure(task(a.env)).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({
230
243
  env: a.env,
231
244
  /*从类型可以确保if没命中的情况pureIf来补充正确的候选值, 所以这里跳过ts检查*/
245
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
232
246
  lastValue: a.lastValue,
233
247
  lock: false
234
248
  })
@@ -1,4 +1,5 @@
1
1
  import { Either } from './either.cjs';
2
+ import '../types/types.cjs';
2
3
  import './maybe.cjs';
3
4
 
4
5
  type TaskDoTypeBase<Env extends Record<string, any>, A> = {
@@ -20,7 +20,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/func/seq.ts
21
21
  var seq_exports = {};
22
22
  __export(seq_exports, {
23
+ seqArrayEitherCollectRight: () => seqArrayEitherCollectRight,
23
24
  seqArrayEitherFirstLeft: () => seqArrayEitherFirstLeft,
25
+ seqArrayMaybeCollectJust: () => seqArrayMaybeCollectJust,
24
26
  seqArrayMaybeFirstNothing: () => seqArrayMaybeFirstNothing,
25
27
  seqArrayTask: () => seqArrayTask,
26
28
  seqEitherArray: () => seqEitherArray,
@@ -103,10 +105,17 @@ var Nothing = class _Nothing extends Maybe {
103
105
  };
104
106
 
105
107
  // src/data/either.ts
106
- var Either = class {
108
+ var Either = class _Either {
107
109
  static pure(a) {
108
110
  return new Right(a);
109
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
+ }
110
119
  };
111
120
  var Left = class _Left extends Either {
112
121
  constructor(\u503C) {
@@ -134,6 +143,9 @@ var Left = class _Left extends Either {
134
143
  getValue() {
135
144
  return this.\u503C;
136
145
  }
146
+ getTag() {
147
+ return "Left";
148
+ }
137
149
  assertLeft() {
138
150
  return this;
139
151
  }
@@ -176,6 +188,9 @@ var Right = class _Right extends Either {
176
188
  getValue() {
177
189
  return this.\u503C;
178
190
  }
191
+ getTag() {
192
+ return "Right";
193
+ }
179
194
  assertLeft() {
180
195
  throw new Error("\u65AD\u8A00\u5931\u8D25");
181
196
  }
@@ -234,6 +249,7 @@ var TaskDo = class _TaskDo {
234
249
  (c) => c ? Task.pure(task(a.env)).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({
235
250
  env: a.env,
236
251
  /*从类型可以确保if没命中的情况pureIf来补充正确的候选值, 所以这里跳过ts检查*/
252
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
237
253
  lastValue: a.lastValue,
238
254
  lock: false
239
255
  })
@@ -312,6 +328,9 @@ function seqArrayEitherFirstLeft(value) {
312
328
  var data = value.map((a) => a.assertRight().getRight());
313
329
  return new Right(data);
314
330
  }
331
+ function seqArrayEitherCollectRight(value) {
332
+ return seqArrayEitherFirstLeft(value.filter((a) => a.isRight()));
333
+ }
315
334
  function seqArrayMaybeFirstNothing(a) {
316
335
  const firstNothing = a.find((maybe) => maybe.isNothing());
317
336
  if (firstNothing)
@@ -319,6 +338,9 @@ function seqArrayMaybeFirstNothing(a) {
319
338
  const values = a.map((maybe) => maybe.assertJust().getJust());
320
339
  return new Just(values);
321
340
  }
341
+ function seqArrayMaybeCollectJust(a) {
342
+ return seqArrayMaybeFirstNothing(a.filter((a2) => a2.isJust()));
343
+ }
322
344
  function seqMaybeArray(a) {
323
345
  return a.match(
324
346
  () => [new Nothing()],
@@ -333,7 +355,9 @@ function seqMaybeTask(a) {
333
355
  }
334
356
  // Annotate the CommonJS export names for ESM import in node:
335
357
  0 && (module.exports = {
358
+ seqArrayEitherCollectRight,
336
359
  seqArrayEitherFirstLeft,
360
+ seqArrayMaybeCollectJust,
337
361
  seqArrayMaybeFirstNothing,
338
362
  seqArrayTask,
339
363
  seqEitherArray,
@@ -1,13 +1,16 @@
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>>;
7
8
  declare function seqEitherArray<A, B>(value: Either<A, Array<B>>): Array<Either<A, B>>;
8
9
  declare function seqArrayEitherFirstLeft<A, B>(value: Array<Either<A, B>>): Either<A, Array<B>>;
10
+ declare function seqArrayEitherCollectRight<A, B>(value: Array<Either<A, B>>): Either<A, Array<B>>;
9
11
  declare function seqArrayMaybeFirstNothing<X>(a: Array<Maybe<X>>): Maybe<Array<X>>;
12
+ declare function seqArrayMaybeCollectJust<X>(a: Array<Maybe<X>>): Maybe<Array<X>>;
10
13
  declare function seqMaybeArray<X>(a: Maybe<Array<X>>): Array<Maybe<X>>;
11
14
  declare function seqMaybeTask<X>(a: Maybe<Task<X>>): Task<Maybe<X>>;
12
15
 
13
- export { seqArrayEitherFirstLeft, seqArrayMaybeFirstNothing, seqArrayTask, seqEitherArray, seqEitherTask, seqMaybeArray, seqMaybeTask };
16
+ export { seqArrayEitherCollectRight, seqArrayEitherFirstLeft, seqArrayMaybeCollectJust, seqArrayMaybeFirstNothing, seqArrayTask, seqEitherArray, seqEitherTask, seqMaybeArray, seqMaybeTask };
@@ -31,7 +31,9 @@ __export(src_exports, {
31
31
  Right: () => Right,
32
32
  Task: () => Task,
33
33
  TaskDo: () => TaskDo,
34
+ seqArrayEitherCollectRight: () => seqArrayEitherCollectRight,
34
35
  seqArrayEitherFirstLeft: () => seqArrayEitherFirstLeft,
36
+ seqArrayMaybeCollectJust: () => seqArrayMaybeCollectJust,
35
37
  seqArrayMaybeFirstNothing: () => seqArrayMaybeFirstNothing,
36
38
  seqArrayTask: () => seqArrayTask,
37
39
  seqEitherArray: () => seqEitherArray,
@@ -114,10 +116,17 @@ var Nothing = class _Nothing extends Maybe {
114
116
  };
115
117
 
116
118
  // src/data/either.ts
117
- var Either = class {
119
+ var Either = class _Either {
118
120
  static pure(a) {
119
121
  return new Right(a);
120
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
+ }
121
130
  };
122
131
  var Left = class _Left extends Either {
123
132
  constructor(\u503C) {
@@ -145,6 +154,9 @@ var Left = class _Left extends Either {
145
154
  getValue() {
146
155
  return this.\u503C;
147
156
  }
157
+ getTag() {
158
+ return "Left";
159
+ }
148
160
  assertLeft() {
149
161
  return this;
150
162
  }
@@ -187,6 +199,9 @@ var Right = class _Right extends Either {
187
199
  getValue() {
188
200
  return this.\u503C;
189
201
  }
202
+ getTag() {
203
+ return "Right";
204
+ }
190
205
  assertLeft() {
191
206
  throw new Error("\u65AD\u8A00\u5931\u8D25");
192
207
  }
@@ -277,6 +292,7 @@ var TaskDo = class _TaskDo {
277
292
  (c) => c ? Task.pure(task(a.env)).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({
278
293
  env: a.env,
279
294
  /*从类型可以确保if没命中的情况pureIf来补充正确的候选值, 所以这里跳过ts检查*/
295
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
280
296
  lastValue: a.lastValue,
281
297
  lock: false
282
298
  })
@@ -355,6 +371,9 @@ function seqArrayEitherFirstLeft(value) {
355
371
  var data = value.map((a) => a.assertRight().getRight());
356
372
  return new Right(data);
357
373
  }
374
+ function seqArrayEitherCollectRight(value) {
375
+ return seqArrayEitherFirstLeft(value.filter((a) => a.isRight()));
376
+ }
358
377
  function seqArrayMaybeFirstNothing(a) {
359
378
  const firstNothing = a.find((maybe) => maybe.isNothing());
360
379
  if (firstNothing)
@@ -362,6 +381,9 @@ function seqArrayMaybeFirstNothing(a) {
362
381
  const values = a.map((maybe) => maybe.assertJust().getJust());
363
382
  return new Just(values);
364
383
  }
384
+ function seqArrayMaybeCollectJust(a) {
385
+ return seqArrayMaybeFirstNothing(a.filter((a2) => a2.isJust()));
386
+ }
365
387
  function seqMaybeArray(a) {
366
388
  return a.match(
367
389
  () => [new Nothing()],
@@ -387,7 +409,9 @@ function seqMaybeTask(a) {
387
409
  Right,
388
410
  Task,
389
411
  TaskDo,
412
+ seqArrayEitherCollectRight,
390
413
  seqArrayEitherFirstLeft,
414
+ seqArrayMaybeCollectJust,
391
415
  seqArrayMaybeFirstNothing,
392
416
  seqArrayTask,
393
417
  seqEitherArray,
@@ -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
- export { seqArrayEitherFirstLeft, seqArrayMaybeFirstNothing, seqArrayTask, seqEitherArray, seqEitherTask, seqMaybeArray, seqMaybeTask } from './func/seq.cjs';
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);
@@ -0,0 +1,3 @@
1
+ type 元组转联合<A> = A extends any[] ? A[number] : never;
2
+
3
+ export type { 元组转联合 };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Left,
3
3
  Right
4
- } from "./chunk-BE7V6GBG.js";
4
+ } from "./chunk-MUPBOWCK.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,10 +1,10 @@
1
1
  import {
2
2
  Task
3
- } from "./chunk-IB4BVSOW.js";
3
+ } from "./chunk-7HK3EH67.js";
4
4
  import {
5
5
  Left,
6
6
  Right
7
- } from "./chunk-BE7V6GBG.js";
7
+ } from "./chunk-MUPBOWCK.js";
8
8
  import {
9
9
  Just,
10
10
  Nothing
@@ -35,6 +35,9 @@ function seqArrayEitherFirstLeft(value) {
35
35
  var data = value.map((a) => a.assertRight().getRight());
36
36
  return new Right(data);
37
37
  }
38
+ function seqArrayEitherCollectRight(value) {
39
+ return seqArrayEitherFirstLeft(value.filter((a) => a.isRight()));
40
+ }
38
41
  function seqArrayMaybeFirstNothing(a) {
39
42
  const firstNothing = a.find((maybe) => maybe.isNothing());
40
43
  if (firstNothing)
@@ -42,6 +45,9 @@ function seqArrayMaybeFirstNothing(a) {
42
45
  const values = a.map((maybe) => maybe.assertJust().getJust());
43
46
  return new Just(values);
44
47
  }
48
+ function seqArrayMaybeCollectJust(a) {
49
+ return seqArrayMaybeFirstNothing(a.filter((a2) => a2.isJust()));
50
+ }
45
51
  function seqMaybeArray(a) {
46
52
  return a.match(
47
53
  () => [new Nothing()],
@@ -60,7 +66,9 @@ export {
60
66
  seqEitherTask,
61
67
  seqEitherArray,
62
68
  seqArrayEitherFirstLeft,
69
+ seqArrayEitherCollectRight,
63
70
  seqArrayMaybeFirstNothing,
71
+ seqArrayMaybeCollectJust,
64
72
  seqMaybeArray,
65
73
  seqMaybeTask
66
74
  };
@@ -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
  }
@@ -77,6 +87,9 @@ var Right = class _Right extends Either {
77
87
  getValue() {
78
88
  return this.\u503C;
79
89
  }
90
+ getTag() {
91
+ return "Right";
92
+ }
80
93
  assertLeft() {
81
94
  throw new Error("\u65AD\u8A00\u5931\u8D25");
82
95
  }
@@ -1,13 +1,19 @@
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;
@@ -24,6 +30,7 @@ declare class Left<L, R> extends Either<L, R> {
24
30
  isRight(): this is Right<L, R>;
25
31
  getLeft(): L;
26
32
  getValue(): L | R;
33
+ getTag(): 'Left' | 'Right';
27
34
  assertLeft(): Left<L, R>;
28
35
  assertRight(): Right<L, R>;
29
36
  match<X>(onLeft: (a: L) => X, _onRight: (a: R) => X): X;
@@ -40,6 +47,7 @@ declare class Right<L, R> extends Either<L, R> {
40
47
  isRight(): this is Right<L, R>;
41
48
  getRight(): R;
42
49
  getValue(): L | R;
50
+ getTag(): 'Left' | 'Right';
43
51
  assertLeft(): Left<L, R>;
44
52
  assertRight(): Right<L, R>;
45
53
  match<X>(_onLeft: (a: L) => X, onRight: (a: R) => X): X;
@@ -47,4 +55,4 @@ declare class Right<L, R> extends Either<L, R> {
47
55
  toMaybe(): Maybe<R>;
48
56
  }
49
57
 
50
- export { Either, Left, Right };
58
+ export { Either, Left, Right, type 任意Either, type 计算右值们, type 计算左值们 };
@@ -2,7 +2,7 @@ import {
2
2
  Either,
3
3
  Left,
4
4
  Right
5
- } from "../chunk-BE7V6GBG.js";
5
+ } from "../chunk-MUPBOWCK.js";
6
6
  import "../chunk-NXA54GUD.js";
7
7
  export {
8
8
  Either,
@@ -1,4 +1,5 @@
1
1
  import { Either } from './either.js';
2
+ import '../types/types.js';
2
3
  import './maybe.js';
3
4
 
4
5
  type TaskDoTypeBase<Env extends Record<string, any>, A> = {
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  Task,
3
3
  TaskDo
4
- } from "../chunk-IB4BVSOW.js";
5
- import "../chunk-BE7V6GBG.js";
4
+ } from "../chunk-7HK3EH67.js";
5
+ import "../chunk-MUPBOWCK.js";
6
6
  import "../chunk-NXA54GUD.js";
7
7
  export {
8
8
  Task,
@@ -1,13 +1,16 @@
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>>;
7
8
  declare function seqEitherArray<A, B>(value: Either<A, Array<B>>): Array<Either<A, B>>;
8
9
  declare function seqArrayEitherFirstLeft<A, B>(value: Array<Either<A, B>>): Either<A, Array<B>>;
10
+ declare function seqArrayEitherCollectRight<A, B>(value: Array<Either<A, B>>): Either<A, Array<B>>;
9
11
  declare function seqArrayMaybeFirstNothing<X>(a: Array<Maybe<X>>): Maybe<Array<X>>;
12
+ declare function seqArrayMaybeCollectJust<X>(a: Array<Maybe<X>>): Maybe<Array<X>>;
10
13
  declare function seqMaybeArray<X>(a: Maybe<Array<X>>): Array<Maybe<X>>;
11
14
  declare function seqMaybeTask<X>(a: Maybe<Task<X>>): Task<Maybe<X>>;
12
15
 
13
- export { seqArrayEitherFirstLeft, seqArrayMaybeFirstNothing, seqArrayTask, seqEitherArray, seqEitherTask, seqMaybeArray, seqMaybeTask };
16
+ export { seqArrayEitherCollectRight, seqArrayEitherFirstLeft, seqArrayMaybeCollectJust, seqArrayMaybeFirstNothing, seqArrayTask, seqEitherArray, seqEitherTask, seqMaybeArray, seqMaybeTask };
@@ -1,17 +1,21 @@
1
1
  import {
2
+ seqArrayEitherCollectRight,
2
3
  seqArrayEitherFirstLeft,
4
+ seqArrayMaybeCollectJust,
3
5
  seqArrayMaybeFirstNothing,
4
6
  seqArrayTask,
5
7
  seqEitherArray,
6
8
  seqEitherTask,
7
9
  seqMaybeArray,
8
10
  seqMaybeTask
9
- } from "../chunk-UTZJVGHH.js";
10
- import "../chunk-IB4BVSOW.js";
11
- import "../chunk-BE7V6GBG.js";
11
+ } from "../chunk-IWR6QS6U.js";
12
+ import "../chunk-7HK3EH67.js";
13
+ import "../chunk-MUPBOWCK.js";
12
14
  import "../chunk-NXA54GUD.js";
13
15
  export {
16
+ seqArrayEitherCollectRight,
14
17
  seqArrayEitherFirstLeft,
18
+ seqArrayMaybeCollectJust,
15
19
  seqArrayMaybeFirstNothing,
16
20
  seqArrayTask,
17
21
  seqEitherArray,
@@ -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
- export { seqArrayEitherFirstLeft, seqArrayMaybeFirstNothing, seqArrayTask, seqEitherArray, seqEitherTask, seqMaybeArray, seqMaybeTask } from './func/seq.js';
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
@@ -1,26 +1,28 @@
1
1
  import {
2
- Lazy,
3
- LazyDeferValue,
4
- LazyForceValue
5
- } from "./chunk-NEBLA4MD.js";
6
- import {
2
+ seqArrayEitherCollectRight,
7
3
  seqArrayEitherFirstLeft,
4
+ seqArrayMaybeCollectJust,
8
5
  seqArrayMaybeFirstNothing,
9
6
  seqArrayTask,
10
7
  seqEitherArray,
11
8
  seqEitherTask,
12
9
  seqMaybeArray,
13
10
  seqMaybeTask
14
- } from "./chunk-UTZJVGHH.js";
11
+ } from "./chunk-IWR6QS6U.js";
12
+ import {
13
+ Lazy,
14
+ LazyDeferValue,
15
+ LazyForceValue
16
+ } from "./chunk-NEBLA4MD.js";
15
17
  import {
16
18
  Task,
17
19
  TaskDo
18
- } from "./chunk-IB4BVSOW.js";
20
+ } from "./chunk-7HK3EH67.js";
19
21
  import {
20
22
  Either,
21
23
  Left,
22
24
  Right
23
- } from "./chunk-BE7V6GBG.js";
25
+ } from "./chunk-MUPBOWCK.js";
24
26
  import {
25
27
  Just,
26
28
  Maybe,
@@ -38,7 +40,9 @@ export {
38
40
  Right,
39
41
  Task,
40
42
  TaskDo,
43
+ seqArrayEitherCollectRight,
41
44
  seqArrayEitherFirstLeft,
45
+ seqArrayMaybeCollectJust,
42
46
  seqArrayMaybeFirstNothing,
43
47
  seqArrayTask,
44
48
  seqEitherArray,
@@ -0,0 +1,3 @@
1
+ type 元组转联合<A> = A extends any[] ? A[number] : never;
2
+
3
+ export type { 元组转联合 };
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lsby/ts-fp-data",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
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
+ }