@lsby/ts-fp-data 0.2.1 → 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> = {
@@ -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
  }
@@ -178,6 +188,9 @@ var Right = class _Right extends Either {
178
188
  getValue() {
179
189
  return this.\u503C;
180
190
  }
191
+ getTag() {
192
+ return "Right";
193
+ }
181
194
  assertLeft() {
182
195
  throw new Error("\u65AD\u8A00\u5931\u8D25");
183
196
  }
@@ -236,6 +249,7 @@ var TaskDo = class _TaskDo {
236
249
  (c) => c ? Task.pure(task(a.env)).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({
237
250
  env: a.env,
238
251
  /*从类型可以确保if没命中的情况pureIf来补充正确的候选值, 所以这里跳过ts检查*/
252
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
239
253
  lastValue: a.lastValue,
240
254
  lock: false
241
255
  })
@@ -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>>;
@@ -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
  }
@@ -189,6 +199,9 @@ var Right = class _Right extends Either {
189
199
  getValue() {
190
200
  return this.\u503C;
191
201
  }
202
+ getTag() {
203
+ return "Right";
204
+ }
192
205
  assertLeft() {
193
206
  throw new Error("\u65AD\u8A00\u5931\u8D25");
194
207
  }
@@ -279,6 +292,7 @@ var TaskDo = class _TaskDo {
279
292
  (c) => c ? Task.pure(task(a.env)).bind((x) => Task.pure({ env: a.env, lastValue: x, lock: true })) : Task.pure({
280
293
  env: a.env,
281
294
  /*从类型可以确保if没命中的情况pureIf来补充正确的候选值, 所以这里跳过ts检查*/
295
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
282
296
  lastValue: a.lastValue,
283
297
  lock: false
284
298
  })
@@ -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);
@@ -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
@@ -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,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>>;
@@ -8,9 +8,9 @@ import {
8
8
  seqEitherTask,
9
9
  seqMaybeArray,
10
10
  seqMaybeTask
11
- } from "../chunk-B2G2C6YM.js";
12
- import "../chunk-IB4BVSOW.js";
13
- import "../chunk-BE7V6GBG.js";
11
+ } from "../chunk-IWR6QS6U.js";
12
+ import "../chunk-7HK3EH67.js";
13
+ import "../chunk-MUPBOWCK.js";
14
14
  import "../chunk-NXA54GUD.js";
15
15
  export {
16
16
  seqArrayEitherCollectRight,
@@ -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
@@ -1,8 +1,3 @@
1
- import {
2
- Lazy,
3
- LazyDeferValue,
4
- LazyForceValue
5
- } from "./chunk-NEBLA4MD.js";
6
1
  import {
7
2
  seqArrayEitherCollectRight,
8
3
  seqArrayEitherFirstLeft,
@@ -13,16 +8,21 @@ import {
13
8
  seqEitherTask,
14
9
  seqMaybeArray,
15
10
  seqMaybeTask
16
- } from "./chunk-B2G2C6YM.js";
11
+ } from "./chunk-IWR6QS6U.js";
12
+ import {
13
+ Lazy,
14
+ LazyDeferValue,
15
+ LazyForceValue
16
+ } from "./chunk-NEBLA4MD.js";
17
17
  import {
18
18
  Task,
19
19
  TaskDo
20
- } from "./chunk-IB4BVSOW.js";
20
+ } from "./chunk-7HK3EH67.js";
21
21
  import {
22
22
  Either,
23
23
  Left,
24
24
  Right
25
- } from "./chunk-BE7V6GBG.js";
25
+ } from "./chunk-MUPBOWCK.js";
26
26
  import {
27
27
  Just,
28
28
  Maybe,
@@ -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.1",
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
+ }