Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | 7x 7x 6x 6x 6x 7x 7x 2x 1x 1x 7x 2x 1x 1x 7x 19x 19x 15x 13x 10x 9x 1x 2x 4x 3x 1x | import { isError } from './index';
export class UnknownError extends Error {
readonly name = 'UnknownError';
constructor(public data: unknown) {
super(JSON.stringify(data));
}
}
/**
* Assertion statement
* @throws Throws if data is instance of error
* @export
* const request = () => P.canFail(()=> axios.get(url))
* const result = await request.then(P.assertError)
* @category Utility
*/
export function assertError<T>(data: T | Error): T {
if (isError(data)) {
throw data;
}
return data as T;
}
/**
* Ensures that err is Error instance
* @signature
* P.ensureError(any)
* @example
* const request = doRequest().catch(P.ensureError)
* if (P.isError(request)) return
* @category Utility
*/
export function ensureError(err: unknown): Error {
if (isError(err)) {
return err;
}
return new UnknownError(err);
}
export type CanGetError<T> = Error | T;
/**
* Similar to try catch statement. If function throws insisted callback this function will return `Error` instance
* @example
* const err = P.canFail(()=> JSON.parse(data))
* if (P.isError(err)) {
* console.log(err)
* }
*
*
* const request = await canFail(() => axios.get(url))
* if (P.isError(request)) return
* @category Utility
*/
export function canFail<T>(fn: () => Promise<T>): Promise<CanGetError<T>>;
export function canFail<T>(fn: () => T): CanGetError<T>;
// tslint:disable-next-line: promise-function-async
export function canFail<T>(
fn: (() => T) | (() => Promise<T>)
): CanGetError<T> | Promise<CanGetError<T>> {
try {
const r = fn();
if (r instanceof Promise) {
return r.catch(err => {
if (isError(err)) {
return err;
}
return new UnknownError(err);
});
}
return r;
} catch (err) {
if (isError(err)) {
return err;
}
return new UnknownError(err);
}
}
|