conway-errors
Version:
A convenient primitive for creating, structing and throwing errors
3 lines (2 loc) • 1.78 kB
JavaScript
function r(){return r=Object.assign?Object.assign.bind():function(r){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var e in t)({}).hasOwnProperty.call(t,e)&&(r[e]=t[e])}return r},r.apply(null,arguments)}class n extends Error{constructor(r,n,t,e,o,s,i){super(e),this.rootContext=void 0,this.contextsChunk=void 0,this.originalError=void 0,this.extendedParams=void 0,this.feature="",this.emit=void 0,this.name=r,this.rootContext=n,this.contextsChunk=t,this.originalError=s,this.emit=o,this.extendedParams=i}}function t(r){return"object"==typeof r&&r instanceof n}function e(r,t){return class extends n{constructor(n,e,o,s,i){super(r,t,n,e,o,s,i)}}}const o={handleEmit:function(r){console.error(r)},extendedParams:{}};function s(n,t){var s;const i=r({},o,t),a=null!=(s=null==t?void 0:t.extendedParams)?s:{};return(t,o={})=>{const s=r({},a,o),u=Array.isArray(n)?n.reduce((r,{errorType:n,createMessagePostfix:o})=>(r[n]={errorClass:e(n,t),createMessagePostfix:o},r),{}):{},l=e("UnknownError",t),c=(n,t)=>(e,o={})=>{const s=r({},t,o);return d(`${n}/${e}`,s)};function d(n,t=s){return{__brand:n,subcontext:c(n,t),feature:(e,o={})=>{const s=r({},t,o);return function(n,t,e={}){const o=(o,s,a)=>{var c;const d=u[o],f=null!=a&&a.originalError&&null!=d&&d.createMessagePostfix?d.createMessagePostfix(null==a?void 0:a.originalError):"",h=new(null!=(c=null==d?void 0:d.errorClass)?c:l)(t,function(r,n,t){return`${r}/${n}: ${t}`}(t,n,s+f),(n={})=>{const t=r({},e,null==a?void 0:a.extendedParams,n);null==i.handleEmit||i.handleEmit(h,t)},null==a?void 0:a.originalError,null==a?void 0:a.extendedParams);return h.feature=n,h};return Object.assign(o,{__brand:`${t}/${n}`}),o}(e,n,s)}}}return d(t)}}export{s as createError,t as isConwayError};
//# sourceMappingURL=index.modern.mjs.map