@terrygonguet/utils 0.12.1 → 0.13.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.
- package/dist/json.d.mts +0 -1
- package/dist/option.d.mts +3 -9
- package/dist/result.d.mts +0 -1
- package/dist/task.d.mts +3 -3
- package/dist/task.mjs +19 -6
- package/package.json +13 -45
package/dist/json.d.mts
CHANGED
package/dist/option.d.mts
CHANGED
|
@@ -6,14 +6,10 @@ declare class Option<T> {
|
|
|
6
6
|
private constructor();
|
|
7
7
|
[Symbol.iterator](): Iterator<Option<T>, T>;
|
|
8
8
|
static do<T>(f: () => Iterator<Option<any>, T, any>): Option<T>;
|
|
9
|
-
static from<T>(maybeValue: unknown, {
|
|
10
|
-
allowOptionLikePOJO
|
|
11
|
-
}?: {
|
|
9
|
+
static from<T>(maybeValue: unknown, { allowOptionLikePOJO }?: {
|
|
12
10
|
allowOptionLikePOJO?: boolean | undefined;
|
|
13
11
|
}): Option<T>;
|
|
14
|
-
static wrapFunction<T, Args extends any[]>(f: (...args: Args) => T | undefined | null, {
|
|
15
|
-
allowOptionLikePOJO
|
|
16
|
-
}?: {
|
|
12
|
+
static wrapFunction<T, Args extends any[]>(f: (...args: Args) => T | undefined | null, { allowOptionLikePOJO }?: {
|
|
17
13
|
allowOptionLikePOJO?: boolean | undefined;
|
|
18
14
|
}): (...args: Args) => Option<T>;
|
|
19
15
|
static isOption<T>(maybeOption: unknown): maybeOption is Option<T>;
|
|
@@ -23,9 +19,7 @@ declare class Option<T> {
|
|
|
23
19
|
isSome(): boolean;
|
|
24
20
|
isNone(): boolean;
|
|
25
21
|
equals(other: Option<T>): boolean;
|
|
26
|
-
map<U>(f: (value: T) => U, {
|
|
27
|
-
coalesce
|
|
28
|
-
}?: {
|
|
22
|
+
map<U>(f: (value: T) => U, { coalesce }?: {
|
|
29
23
|
coalesce?: boolean | undefined;
|
|
30
24
|
}): Option<U>;
|
|
31
25
|
flatMap<U>(f: (value: T) => Option<U>): Option<U>;
|
package/dist/result.d.mts
CHANGED
package/dist/task.d.mts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Option } from "./option.mjs";
|
|
2
|
-
|
|
3
2
|
//#region src/task.d.ts
|
|
4
3
|
declare class Task<T, E extends Error = Error> {
|
|
5
4
|
_state: {
|
|
@@ -27,8 +26,9 @@ declare class Task<T, E extends Error = Error> {
|
|
|
27
26
|
isComplete(): boolean;
|
|
28
27
|
isFailed(): boolean;
|
|
29
28
|
then<U>(onResolve: (value: T) => U | Promise<U>, onReject: (error: E) => U | Promise<U>): U | Promise<U>;
|
|
30
|
-
map<U, E2 extends E>(
|
|
31
|
-
flatMap<U, E2 extends E>(
|
|
29
|
+
map<U, E2 extends E>(onComplete: (value: T) => U | Promise<U>, onFailed?: (error: E) => U | Promise<U>): Task<U, E2>;
|
|
30
|
+
flatMap<U, E2 extends E>(onComplete: (value: T) => Task<U, E2>, onFailed?: (error: E) => Task<U, E2>): Task<U, E2>;
|
|
31
|
+
recover<E2 extends E>(onFailed: (error: E) => Task<T, E2>): Task<T, E2>;
|
|
32
32
|
flatten(): T extends Task<infer U> ? Task<U> : Task<T>;
|
|
33
33
|
orDefault(defaultValue: T): Promise<T>;
|
|
34
34
|
unwrap(): T;
|
package/dist/task.mjs
CHANGED
|
@@ -129,10 +129,17 @@ var Task = class Task {
|
|
|
129
129
|
});
|
|
130
130
|
else return onReject(this._state.error);
|
|
131
131
|
}
|
|
132
|
-
map(
|
|
133
|
-
if (this._state.type == "pending") return Task.fromPromise(this._state.promise.then(() => this.map(
|
|
132
|
+
map(onComplete, onFailed) {
|
|
133
|
+
if (this._state.type == "pending") return Task.fromPromise(this._state.promise.then(() => this.map(onComplete)));
|
|
134
134
|
else if (this._state.type == "complete") try {
|
|
135
|
-
const result =
|
|
135
|
+
const result = onComplete(this._state.value);
|
|
136
|
+
if (result instanceof Promise) return Task.fromPromise(result);
|
|
137
|
+
else return Task.complete(result);
|
|
138
|
+
} catch (error) {
|
|
139
|
+
return Task.failed(error);
|
|
140
|
+
}
|
|
141
|
+
else if (onFailed) try {
|
|
142
|
+
const result = onFailed(this._state.error);
|
|
136
143
|
if (result instanceof Promise) return Task.fromPromise(result);
|
|
137
144
|
else return Task.complete(result);
|
|
138
145
|
} catch (error) {
|
|
@@ -140,11 +147,17 @@ var Task = class Task {
|
|
|
140
147
|
}
|
|
141
148
|
else return this;
|
|
142
149
|
}
|
|
143
|
-
flatMap(
|
|
144
|
-
if (this._state.type == "pending") return Task.fromPromise(this._state.promise.then(() => this.flatMap(
|
|
145
|
-
else if (this._state.type == "complete") return
|
|
150
|
+
flatMap(onComplete, onFailed) {
|
|
151
|
+
if (this._state.type == "pending") return Task.fromPromise(this._state.promise.then(() => this.flatMap(onComplete)));
|
|
152
|
+
else if (this._state.type == "complete") return onComplete(this._state.value);
|
|
153
|
+
else if (onFailed) return onFailed(this._state.error);
|
|
146
154
|
else return this;
|
|
147
155
|
}
|
|
156
|
+
recover(onFailed) {
|
|
157
|
+
if (this._state.type == "pending") return Task.fromPromise(this._state.promise.then(() => this.recover(onFailed)));
|
|
158
|
+
else if (this._state.type == "complete") return this;
|
|
159
|
+
else return onFailed(this._state.error);
|
|
160
|
+
}
|
|
148
161
|
flatten() {
|
|
149
162
|
if (this._state.type == "complete") return Task.isTask(this._state.value) ? this._state.value : this;
|
|
150
163
|
else if (this._state.type == "failed") return this;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@terrygonguet/utils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"scripts": {
|
|
@@ -12,55 +12,23 @@
|
|
|
12
12
|
"dist"
|
|
13
13
|
],
|
|
14
14
|
"exports": {
|
|
15
|
-
".":
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"./
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"default": "./dist/async.mjs"
|
|
24
|
-
},
|
|
25
|
-
"./json": {
|
|
26
|
-
"types": "./dist/json.d.ts",
|
|
27
|
-
"import": "./dist/json.mjs",
|
|
28
|
-
"default": "./dist/json.mjs"
|
|
29
|
-
},
|
|
30
|
-
"./option": {
|
|
31
|
-
"types": "./dist/option.d.ts",
|
|
32
|
-
"import": "./dist/option.mjs",
|
|
33
|
-
"default": "./dist/option.mjs"
|
|
34
|
-
},
|
|
35
|
-
"./random": {
|
|
36
|
-
"types": "./dist/random.d.ts",
|
|
37
|
-
"import": "./dist/random.mjs",
|
|
38
|
-
"default": "./dist/random.mjs"
|
|
39
|
-
},
|
|
40
|
-
"./result": {
|
|
41
|
-
"types": "./dist/result.d.ts",
|
|
42
|
-
"import": "./dist/result.mjs",
|
|
43
|
-
"default": "./dist/result.mjs"
|
|
44
|
-
},
|
|
45
|
-
"./tableau": {
|
|
46
|
-
"types": "./dist/tableau.d.ts",
|
|
47
|
-
"import": "./dist/tableau.mjs",
|
|
48
|
-
"default": "./dist/tableau.mjs"
|
|
49
|
-
},
|
|
50
|
-
"./task": {
|
|
51
|
-
"types": "./dist/task.d.ts",
|
|
52
|
-
"import": "./dist/task.mjs",
|
|
53
|
-
"default": "./dist/task.mjs"
|
|
54
|
-
}
|
|
15
|
+
".": "./dist/index.mjs",
|
|
16
|
+
"./async": "./dist/async.mjs",
|
|
17
|
+
"./json": "./dist/json.mjs",
|
|
18
|
+
"./option": "./dist/option.mjs",
|
|
19
|
+
"./random": "./dist/random.mjs",
|
|
20
|
+
"./result": "./dist/result.mjs",
|
|
21
|
+
"./tableau": "./dist/tableau.mjs",
|
|
22
|
+
"./task": "./dist/task.mjs"
|
|
55
23
|
},
|
|
56
24
|
"devDependencies": {
|
|
57
25
|
"@types/benchmark": "^2.1.5",
|
|
58
26
|
"benchmark": "^2.1.4",
|
|
59
|
-
"prettier": "^3.
|
|
60
|
-
"tsdown": "^0.
|
|
27
|
+
"prettier": "^3.9.4",
|
|
28
|
+
"tsdown": "^0.22.4",
|
|
61
29
|
"typescript": "^6.0.3",
|
|
62
|
-
"vite": "^8.
|
|
63
|
-
"vitest": "^4.1.
|
|
30
|
+
"vite": "^8.1.3",
|
|
31
|
+
"vitest": "^4.1.10"
|
|
64
32
|
},
|
|
65
33
|
"author": {
|
|
66
34
|
"email": "terry@gonguet.com",
|