@praha/byethrow 0.6.0 → 0.6.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.
@@ -27,9 +27,13 @@ __webpack_require__.d(__webpack_exports__, {
27
27
  assertFailure: ()=>assertFailure
28
28
  });
29
29
  const external_is_success_cjs_namespaceObject = require("./is-success.cjs");
30
+ const is_promise_cjs_namespaceObject = require("../internals/helpers/is-promise.cjs");
30
31
  const assertFailure = (result)=>{
31
- if ((0, external_is_success_cjs_namespaceObject.isSuccess)(result)) throw new Error('Expected a Failure result, but received a Success');
32
- return result;
32
+ const apply = (r)=>{
33
+ if ((0, external_is_success_cjs_namespaceObject.isSuccess)(r)) throw new Error('Expected a Failure result, but received a Success');
34
+ return r;
35
+ };
36
+ return (0, is_promise_cjs_namespaceObject.isPromise)(result) ? result.then(apply) : apply(result);
33
37
  };
34
38
  exports.assertFailure = __webpack_exports__.assertFailure;
35
39
  for(var __webpack_i__ in __webpack_exports__)if (-1 === [
@@ -1,12 +1,12 @@
1
- import type { Failure, Result } from '../result';
1
+ import type { Failure, InferFailure, Result, ResultAsync } from '../result';
2
2
  /**
3
- * Asserts that a {@link Result} is a {@link Failure} and returns it.
3
+ * Asserts that a {@link Result} or {@link ResultAsync} is a {@link Failure} and returns it.
4
4
  * If the result is a {@link Success}, throws an error.
5
5
  *
6
6
  * @function
7
7
  * @typeParam E - The type of the error value.
8
- * @param result - The {@link Result} to assert as a {@link Failure}.
9
- * @returns The {@link Failure} result.
8
+ * @param result - The {@link Result} or {@link ResultAsync} to assert as a {@link Failure}.
9
+ * @returns The {@link Failure} result or a Promise of {@link Success} result.
10
10
  * @throws {Error} If the result is a {@link Success}.
11
11
  *
12
12
  * @example
@@ -43,4 +43,7 @@ import type { Failure, Result } from '../result';
43
43
  *
44
44
  * @category Assertions
45
45
  */
46
- export declare const assertFailure: <E>(result: Result<never, E>) => Failure<E>;
46
+ export declare const assertFailure: {
47
+ <R extends ResultAsync<never, any>>(result: R): Promise<Failure<InferFailure<R>>>;
48
+ <R extends Result<never, any>>(result: R): Failure<InferFailure<R>>;
49
+ };
@@ -27,9 +27,13 @@ __webpack_require__.d(__webpack_exports__, {
27
27
  assertSuccess: ()=>assertSuccess
28
28
  });
29
29
  const external_is_failure_cjs_namespaceObject = require("./is-failure.cjs");
30
+ const is_promise_cjs_namespaceObject = require("../internals/helpers/is-promise.cjs");
30
31
  const assertSuccess = (result)=>{
31
- if ((0, external_is_failure_cjs_namespaceObject.isFailure)(result)) throw new Error('Expected a Success result, but received a Failure');
32
- return result;
32
+ const apply = (r)=>{
33
+ if ((0, external_is_failure_cjs_namespaceObject.isFailure)(r)) throw new Error('Expected a Success result, but received a Failure');
34
+ return r;
35
+ };
36
+ return (0, is_promise_cjs_namespaceObject.isPromise)(result) ? result.then(apply) : apply(result);
33
37
  };
34
38
  exports.assertSuccess = __webpack_exports__.assertSuccess;
35
39
  for(var __webpack_i__ in __webpack_exports__)if (-1 === [
@@ -1,12 +1,12 @@
1
- import type { Result, Success } from '../result';
1
+ import type { InferSuccess, Result, ResultAsync, Success } from '../result';
2
2
  /**
3
- * Asserts that a {@link Result} is a {@link Success} and returns it.
3
+ * Asserts that a {@link Result} or {@link ResultAsync} is a {@link Success} and returns it.
4
4
  * If the result is a {@link Failure}, throws an error.
5
5
  *
6
6
  * @function
7
7
  * @typeParam T - The type of the success value.
8
- * @param result - The {@link Result} to assert as a {@link Success}.
9
- * @returns The {@link Success} result.
8
+ * @param result - The {@link Result} or {@link ResultAsync} to assert as a {@link Success}.
9
+ * @returns The {@link Success} result or a Promise of {@link Success} result.
10
10
  * @throws {Error} If the result is a {@link Failure}.
11
11
  *
12
12
  * @example
@@ -43,4 +43,7 @@ import type { Result, Success } from '../result';
43
43
  *
44
44
  * @category Assertions
45
45
  */
46
- export declare const assertSuccess: <T>(result: Result<T, never>) => Success<T>;
46
+ export declare const assertSuccess: {
47
+ <R extends ResultAsync<any, never>>(result: R): Promise<Success<InferSuccess<R>>>;
48
+ <R extends Result<any, never>>(result: R): Success<InferSuccess<R>>;
49
+ };
@@ -1,12 +1,12 @@
1
- import type { Failure, Result } from '../result';
1
+ import type { Failure, InferFailure, Result, ResultAsync } from '../result';
2
2
  /**
3
- * Asserts that a {@link Result} is a {@link Failure} and returns it.
3
+ * Asserts that a {@link Result} or {@link ResultAsync} is a {@link Failure} and returns it.
4
4
  * If the result is a {@link Success}, throws an error.
5
5
  *
6
6
  * @function
7
7
  * @typeParam E - The type of the error value.
8
- * @param result - The {@link Result} to assert as a {@link Failure}.
9
- * @returns The {@link Failure} result.
8
+ * @param result - The {@link Result} or {@link ResultAsync} to assert as a {@link Failure}.
9
+ * @returns The {@link Failure} result or a Promise of {@link Success} result.
10
10
  * @throws {Error} If the result is a {@link Success}.
11
11
  *
12
12
  * @example
@@ -43,4 +43,7 @@ import type { Failure, Result } from '../result';
43
43
  *
44
44
  * @category Assertions
45
45
  */
46
- export declare const assertFailure: <E>(result: Result<never, E>) => Failure<E>;
46
+ export declare const assertFailure: {
47
+ <R extends ResultAsync<never, any>>(result: R): Promise<Failure<InferFailure<R>>>;
48
+ <R extends Result<never, any>>(result: R): Failure<InferFailure<R>>;
49
+ };
@@ -1,6 +1,10 @@
1
1
  import { isSuccess } from "./is-success.js";
2
+ import { isPromise } from "../internals/helpers/is-promise.js";
2
3
  const assertFailure = (result)=>{
3
- if (isSuccess(result)) throw new Error('Expected a Failure result, but received a Success');
4
- return result;
4
+ const apply = (r)=>{
5
+ if (isSuccess(r)) throw new Error('Expected a Failure result, but received a Success');
6
+ return r;
7
+ };
8
+ return isPromise(result) ? result.then(apply) : apply(result);
5
9
  };
6
10
  export { assertFailure };
@@ -1,12 +1,12 @@
1
- import type { Result, Success } from '../result';
1
+ import type { InferSuccess, Result, ResultAsync, Success } from '../result';
2
2
  /**
3
- * Asserts that a {@link Result} is a {@link Success} and returns it.
3
+ * Asserts that a {@link Result} or {@link ResultAsync} is a {@link Success} and returns it.
4
4
  * If the result is a {@link Failure}, throws an error.
5
5
  *
6
6
  * @function
7
7
  * @typeParam T - The type of the success value.
8
- * @param result - The {@link Result} to assert as a {@link Success}.
9
- * @returns The {@link Success} result.
8
+ * @param result - The {@link Result} or {@link ResultAsync} to assert as a {@link Success}.
9
+ * @returns The {@link Success} result or a Promise of {@link Success} result.
10
10
  * @throws {Error} If the result is a {@link Failure}.
11
11
  *
12
12
  * @example
@@ -43,4 +43,7 @@ import type { Result, Success } from '../result';
43
43
  *
44
44
  * @category Assertions
45
45
  */
46
- export declare const assertSuccess: <T>(result: Result<T, never>) => Success<T>;
46
+ export declare const assertSuccess: {
47
+ <R extends ResultAsync<any, never>>(result: R): Promise<Success<InferSuccess<R>>>;
48
+ <R extends Result<any, never>>(result: R): Success<InferSuccess<R>>;
49
+ };
@@ -1,6 +1,10 @@
1
1
  import { isFailure } from "./is-failure.js";
2
+ import { isPromise } from "../internals/helpers/is-promise.js";
2
3
  const assertSuccess = (result)=>{
3
- if (isFailure(result)) throw new Error('Expected a Success result, but received a Failure');
4
- return result;
4
+ const apply = (r)=>{
5
+ if (isFailure(r)) throw new Error('Expected a Success result, but received a Failure');
6
+ return r;
7
+ };
8
+ return isPromise(result) ? result.then(apply) : apply(result);
5
9
  };
6
10
  export { assertSuccess };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praha/byethrow",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "A lightweight, tree-shakable Result type package with a simple, consistent API designed",
5
5
  "keywords": [
6
6
  "javascript",
@@ -44,7 +44,7 @@
44
44
  "@standard-schema/spec": "^1.0.0"
45
45
  },
46
46
  "devDependencies": {
47
- "@rslib/core": "0.10.4",
47
+ "@rslib/core": "0.10.5",
48
48
  "eslint": "9.30.1",
49
49
  "typedoc": "0.28.7",
50
50
  "typescript": "5.8.3",