@e280/stz 0.2.31 → 0.2.33
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/README.md +2 -0
- package/package.json +2 -2
- package/s/cycle.ts +1 -1
- package/s/ok/fns/attempt.ts +10 -0
- package/s/ok/test.ts +9 -9
- package/x/cycle.d.ts +1 -1
- package/x/cycle.js.map +1 -1
- package/x/ok/fns/attempt.d.ts +2 -0
- package/x/ok/fns/attempt.js +6 -0
- package/x/ok/fns/attempt.js.map +1 -1
- package/x/ok/test.d.ts +2 -2
- package/x/ok/test.js +9 -9
- package/x/ok/test.js.map +1 -1
package/README.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@e280/stz",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.33",
|
|
4
4
|
"description": "everyday ts fns for everything",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Chase Moskal <chasemoskal@gmail.com>",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@e280/science": "^0.1.10",
|
|
26
26
|
"@types/node": "^25.6.0",
|
|
27
|
-
"typescript": "^6.0.
|
|
27
|
+
"typescript": "^6.0.3"
|
|
28
28
|
},
|
|
29
29
|
"keywords": [
|
|
30
30
|
"standard",
|
package/s/cycle.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* repeat the given async function over and over.
|
|
4
4
|
* - consider using `nap` in your fn to create a delay
|
|
5
5
|
*/
|
|
6
|
-
export function cycle(fn: (stop: () => void) => Promise<
|
|
6
|
+
export function cycle(fn: (stop: () => void) => unknown | Promise<unknown>) {
|
|
7
7
|
let timeout: any
|
|
8
8
|
let stopped = false
|
|
9
9
|
|
package/s/ok/fns/attempt.ts
CHANGED
|
@@ -27,3 +27,13 @@ export async function attemptAsync<Value, E = unknown>(
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
export function resultify<Params extends any[], Ret>(fn: (...params: Params) => Ret) {
|
|
31
|
+
return (...params: Params) => attempt(() => fn(...params))
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function resultifyAsync<Params extends any[], Ret>(
|
|
35
|
+
fn: (...params: Params) => Promise<Ret>
|
|
36
|
+
) {
|
|
37
|
+
return async(...params: Params) => attemptAsync(() => fn(...params))
|
|
38
|
+
}
|
|
39
|
+
|
package/s/ok/test.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import {expect, suite, test} from "@e280/science"
|
|
3
3
|
import {thrown} from "../thrown.js"
|
|
4
|
-
import {ok, err, getOk, needOk, attempt, needErr, getErr, attemptAsync} from "./index.js"
|
|
4
|
+
import {ok, err, getOk, needOk, attempt, needErr, getErr, attemptAsync, resultify, Err, resultifyAsync} from "./index.js"
|
|
5
5
|
|
|
6
6
|
export default suite({
|
|
7
7
|
"ok": test(async() => {
|
|
@@ -36,16 +36,16 @@ export default suite({
|
|
|
36
36
|
expect(() => needErr(ok(123))).throws()
|
|
37
37
|
}),
|
|
38
38
|
|
|
39
|
-
"
|
|
40
|
-
expect(needOk(
|
|
41
|
-
expect(
|
|
42
|
-
expect(needErr
|
|
39
|
+
"resultify": test(async() => {
|
|
40
|
+
expect(needOk(resultify(() => 123)())).is(123)
|
|
41
|
+
expect(resultify(() => {throw new Error("rofl")})().ok).is(false)
|
|
42
|
+
expect(needErr(resultify(() => {throw new Error("rofl")})() as Err<Error>).message).is("rofl")
|
|
43
43
|
}),
|
|
44
44
|
|
|
45
|
-
"
|
|
46
|
-
expect(needOk(await
|
|
47
|
-
expect((await
|
|
48
|
-
expect(needErr
|
|
45
|
+
"resultifyAsync": test(async() => {
|
|
46
|
+
expect(needOk(await resultifyAsync(async() => 123)())).is(123)
|
|
47
|
+
expect((await resultifyAsync(async() => {throw new Error("rofl")})()).ok).is(false)
|
|
48
|
+
expect(needErr(await resultifyAsync(async() => {throw new Error("rofl")})() as Err<Error>).message).is("rofl")
|
|
49
49
|
}),
|
|
50
50
|
|
|
51
51
|
"needOk error handling": {
|
package/x/cycle.d.ts
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* repeat the given async function over and over.
|
|
3
3
|
* - consider using `nap` in your fn to create a delay
|
|
4
4
|
*/
|
|
5
|
-
export declare function cycle(fn: (stop: () => void) => Promise<
|
|
5
|
+
export declare function cycle(fn: (stop: () => void) => unknown | Promise<unknown>): () => void;
|
|
6
6
|
/** @deprecated renamed to `cycle` */
|
|
7
7
|
export declare const repeat: typeof cycle;
|
package/x/cycle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cycle.js","sourceRoot":"","sources":["../s/cycle.ts"],"names":[],"mappings":"AACA;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"cycle.js","sourceRoot":"","sources":["../s/cycle.ts"],"names":[],"mappings":"AACA;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,EAAoD;IACzE,IAAI,OAAY,CAAA;IAChB,IAAI,OAAO,GAAG,KAAK,CAAA;IAEnB,MAAM,IAAI,GAAG,GAAG,EAAE;QACjB,OAAO,GAAG,IAAI,CAAA;QACd,YAAY,CAAC,OAAO,CAAC,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,KAAK,IAAG,EAAE;QACtB,IAAI,OAAO;YAAE,OAAM;QACnB,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;QACd,IAAI,OAAO;YAAE,OAAM;QACnB,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC9B,CAAC,CAAA;IAED,IAAI,EAAE,CAAA;IACN,OAAO,IAAI,CAAA;AACZ,CAAC;AAED,qCAAqC;AACrC,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAA"}
|
package/x/ok/fns/attempt.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { Result } from "../types/result.js";
|
|
2
2
|
export declare function attempt<Value, E = unknown>(fn: () => Value): Result<Value, E>;
|
|
3
3
|
export declare function attemptAsync<Value, E = unknown>(input: Promise<Value> | (() => Promise<Value>)): Promise<Result<Value, E>>;
|
|
4
|
+
export declare function resultify<Params extends any[], Ret>(fn: (...params: Params) => Ret): (...params: Params) => Result<Ret, unknown>;
|
|
5
|
+
export declare function resultifyAsync<Params extends any[], Ret>(fn: (...params: Params) => Promise<Ret>): (...params: Params) => Promise<Result<Ret, unknown>>;
|
package/x/ok/fns/attempt.js
CHANGED
|
@@ -19,4 +19,10 @@ export async function attemptAsync(input) {
|
|
|
19
19
|
return err(error);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
+
export function resultify(fn) {
|
|
23
|
+
return (...params) => attempt(() => fn(...params));
|
|
24
|
+
}
|
|
25
|
+
export function resultifyAsync(fn) {
|
|
26
|
+
return async (...params) => attemptAsync(() => fn(...params));
|
|
27
|
+
}
|
|
22
28
|
//# sourceMappingURL=attempt.js.map
|
package/x/ok/fns/attempt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attempt.js","sourceRoot":"","sources":["../../../s/ok/fns/attempt.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,EAAE,EAAC,MAAM,SAAS,CAAA;AAC1B,OAAO,EAAC,GAAG,EAAC,MAAM,UAAU,CAAA;AAG5B,MAAM,UAAU,OAAO,CAAqB,EAAe;IAC1D,IAAI,CAAC;QACJ,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAChB,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACd,OAAO,GAAG,CAAC,KAAU,CAAC,CAAA;IACvB,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAA8C;IAG/C,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC;YAC5C,CAAC,CAAC,KAAK,EAAE;YACT,CAAC,CAAC,KAAK,CAAA;QACR,OAAO,EAAE,CAAC,MAAM,OAAO,CAAC,CAAA;IACzB,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACd,OAAO,GAAG,CAAC,KAAU,CAAC,CAAA;IACvB,CAAC;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"attempt.js","sourceRoot":"","sources":["../../../s/ok/fns/attempt.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,EAAE,EAAC,MAAM,SAAS,CAAA;AAC1B,OAAO,EAAC,GAAG,EAAC,MAAM,UAAU,CAAA;AAG5B,MAAM,UAAU,OAAO,CAAqB,EAAe;IAC1D,IAAI,CAAC;QACJ,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAChB,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACd,OAAO,GAAG,CAAC,KAAU,CAAC,CAAA;IACvB,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAA8C;IAG/C,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC;YAC5C,CAAC,CAAC,KAAK,EAAE;YACT,CAAC,CAAC,KAAK,CAAA;QACR,OAAO,EAAE,CAAC,MAAM,OAAO,CAAC,CAAA;IACzB,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACd,OAAO,GAAG,CAAC,KAAU,CAAC,CAAA;IACvB,CAAC;AACF,CAAC;AAED,MAAM,UAAU,SAAS,CAA4B,EAA8B;IAClF,OAAO,CAAC,GAAG,MAAc,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,EAAuC;IAExC,OAAO,KAAK,EAAC,GAAG,MAAc,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;AACrE,CAAC"}
|
package/x/ok/test.d.ts
CHANGED
|
@@ -5,8 +5,8 @@ declare const _default: {
|
|
|
5
5
|
getErr: import("@e280/science").Test;
|
|
6
6
|
needOk: import("@e280/science").Test;
|
|
7
7
|
needErr: import("@e280/science").Test;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
resultify: import("@e280/science").Test;
|
|
9
|
+
resultifyAsync: import("@e280/science").Test;
|
|
10
10
|
"needOk error handling": {
|
|
11
11
|
"rethrows errors": import("@e280/science").Test;
|
|
12
12
|
"upgrades strings to errors": import("@e280/science").Test;
|
package/x/ok/test.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { expect, suite, test } from "@e280/science";
|
|
2
2
|
import { thrown } from "../thrown.js";
|
|
3
|
-
import { ok, err, getOk, needOk,
|
|
3
|
+
import { ok, err, getOk, needOk, needErr, getErr, resultify, resultifyAsync } from "./index.js";
|
|
4
4
|
export default suite({
|
|
5
5
|
"ok": test(async () => {
|
|
6
6
|
expect(ok(123).ok).is(true);
|
|
@@ -28,15 +28,15 @@ export default suite({
|
|
|
28
28
|
expect(needErr(err("nope"))).is("nope");
|
|
29
29
|
expect(() => needErr(ok(123))).throws();
|
|
30
30
|
}),
|
|
31
|
-
"
|
|
32
|
-
expect(needOk(
|
|
33
|
-
expect(
|
|
34
|
-
expect(needErr(
|
|
31
|
+
"resultify": test(async () => {
|
|
32
|
+
expect(needOk(resultify(() => 123)())).is(123);
|
|
33
|
+
expect(resultify(() => { throw new Error("rofl"); })().ok).is(false);
|
|
34
|
+
expect(needErr(resultify(() => { throw new Error("rofl"); })()).message).is("rofl");
|
|
35
35
|
}),
|
|
36
|
-
"
|
|
37
|
-
expect(needOk(await
|
|
38
|
-
expect((await
|
|
39
|
-
expect(needErr(await
|
|
36
|
+
"resultifyAsync": test(async () => {
|
|
37
|
+
expect(needOk(await resultifyAsync(async () => 123)())).is(123);
|
|
38
|
+
expect((await resultifyAsync(async () => { throw new Error("rofl"); })()).ok).is(false);
|
|
39
|
+
expect(needErr(await resultifyAsync(async () => { throw new Error("rofl"); })()).message).is("rofl");
|
|
40
40
|
}),
|
|
41
41
|
"needOk error handling": {
|
|
42
42
|
"rethrows errors": test(async () => {
|
package/x/ok/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../s/ok/test.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,eAAe,CAAA;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAA;AACnC,OAAO,EAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../s/ok/test.ts"],"names":[],"mappings":"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"}
|