ts-prime
Version:
A utility library for JavaScript and Typescript.
76 lines (75 loc) • 2.13 kB
JavaScript
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
import { isError } from './index';
var UnknownError = /** @class */ (function (_super) {
__extends(UnknownError, _super);
function UnknownError(data) {
var _this = _super.call(this, JSON.stringify(data)) || this;
_this.data = data;
_this.name = 'UnknownError';
return _this;
}
return UnknownError;
}(Error));
export { UnknownError };
/**
* 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(data) {
if (isError(data)) {
throw data;
}
return data;
}
/**
* 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) {
if (isError(err)) {
return err;
}
return new UnknownError(err);
}
// tslint:disable-next-line: promise-function-async
export function canFail(fn) {
try {
var r = fn();
if (r instanceof Promise) {
return r.catch(function (err) {
if (isError(err)) {
return err;
}
return new UnknownError(err);
});
}
return r;
}
catch (err) {
if (isError(err)) {
return err;
}
return new UnknownError(err);
}
}