UNPKG

@mic-rexjs/usecases

Version:
69 lines (68 loc) 2.37 kB
import { createUseCase } from '../../methods/createUseCase'; export const rejectedErrorUseCase = createUseCase(() => { let initOptions = {}; return () => { const initRejectedError = (options) => { initOptions = options; }; const reject = (code, msg, data) => { const error = { code, msg, data, content: typeof data === 'object' && data?.toString === Object.prototype.toString ? JSON.stringify(data) : `${data instanceof Error ? data.stack : data}`, }; initOptions.onReject?.(error); return Promise.reject(error); }; const rejectCode = (code) => { return reject(code, '', null); }; const rejectMsg = (code, msg) => { return reject(code, msg, null); }; const rejectData = (code, data) => { return reject(code, '', data); }; const resolve = (target, rejectedCode, rejectedMsg) => { return resolveWith(target, (res) => { return res; }, rejectedCode, rejectedMsg); }; const resolveId = (target, rejectedMsg) => { return resolveWith(target, (unsafedId) => { if (unsafedId) { return unsafedId; } throw unsafedId; }, rejectedMsg); }; const resolveNonNullable = (target, rejectedCode, rejectedMsg = '') => { const isNullable = typeof target === 'undefined' || target === null; if (isNullable) { return rejectMsg(rejectedCode, rejectedMsg); } return resolve(target, rejectedCode, rejectedMsg); }; const resolveWith = (target, onFulfilled, rejectedCode, rejectedMsg = '') => { return Promise.resolve(target) .then(onFulfilled) .catch((error) => { return reject(rejectedCode, rejectedMsg, error); }); }; return { initRejectedError, reject, rejectCode, rejectData, rejectMsg, resolve, resolveId, resolveNonNullable, resolveWith, }; }; });