@altostra/core
Version:
Core library for shared types and logic
1 lines • 2.23 kB
JavaScript
;var __awaiter=this&&this.__awaiter||function(r,e,t,o){return new(t||(t=Promise))((function(i,n){function s(r){try{u(o.next(r))}catch(r){n(r)}}function a(r){try{u(o.throw(r))}catch(r){n(r)}}function u(r){var e;r.done?i(r.value):(e=r.value,e instanceof t?e:new t((function(r){r(e)}))).then(s,a)}u((o=o.apply(r,e||[])).next())}))};Object.defineProperty(exports,"__esModule",{value:!0}),exports.withOperationLogging=exports.logOperation=exports.asArray=exports.defaultFormatter=exports.logMessageFromError=exports.operationLoggingSeverities=exports.operationSeverities=exports.defaultSeverities=void 0;const util_1=require("util"),AltoError_1=require("../Errors/AltoError"),Object_1=require("../Utils/Object"),Errors_1=require("../Errors");function logMessageFromError(r,e,t="error"){return{message:r&&(0,Object_1.isObject)(r)&&"string"==typeof r.message&&r.message?r.message:String(r)||"An error occurred",data:r,severity:t,source:e}}exports.defaultSeverities=["verbose","info","warn","error"],exports.operationSeverities=["complete","fail","start"],exports.operationLoggingSeverities=[...exports.defaultSeverities,...exports.operationSeverities],exports.logMessageFromError=logMessageFromError;const defaultFormatter=r=>{const e=asArray(r.data);return(0,util_1.format)(`${r.message}${e.length>0?"\n":""}`,...e)};function asArray(r){return Array.isArray(r)?r:null==r?[]:[r]}function logOperation(r,e,t,o){let i=e;t&&(i+=": "+t),r.start(i,...asArray(o));let n=!1;return{complete:s("complete"),fail:s("fail")};function s(t){return function(o,i){if(!n){n=!0;let s=e;o&&(s+=": "+o),r[t](s,...asArray(i))}}}}function withOperationLogging(r,e,t,o,i){return __awaiter(this,void 0,void 0,(function*(){i=null!=i?i:function(r){if(!(r instanceof AltoError_1.AltoError))return"";return r instanceof Errors_1.UserFacingError&&"user-fault"===r.category?`${r.message}\nType: ${r.type}\n${(0,util_1.inspect)(r.userData,{depth:20})}`:r.message};const{complete:n,fail:s}=logOperation(r,e);try{const r=yield Promise.resolve(t());return n(null==o?void 0:o(r)),r}catch(r){throw s(i(r),r),r}}))}exports.defaultFormatter=defaultFormatter,exports.asArray=asArray,exports.logOperation=logOperation,exports.withOperationLogging=withOperationLogging;