@altostra/core
Version:
Core library for shared types and logic
1 lines • 3.37 kB
JavaScript
;var __rest=this&&this.__rest||function(e,t){var s={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(s[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(s[r[o]]=e[r[o]])}return s};Object.defineProperty(exports,"__esModule",{value:!0}),exports.operationToDefaultMessageSeverityMapping=exports.combineLoggers=exports.nullLogger=exports.consoleLogger=exports.createLogger=void 0;const type_validations_1=require("@altostra/type-validations"),Common_1=require("./Common"),isReadonlyArray=Array.isArray;function createLogger(e,t,s){var r;let o,a;isReadonlyArray(s)?(o={},a=s):(o=Object.assign({},null==s?void 0:s.metadata),a=null!==(r=null==s?void 0:s.severities)&&void 0!==r?r:Common_1.defaultSeverities);let n=!(0,type_validations_1.isEmptyObject)(o);const i=e=>{n&&(e=Object.assign(Object.assign({},e),{metadata:Object.assign(Object.assign({},e.metadata),o)})),t(e)};Object.assign(i,{severities:a,loggerSource:e,setSource:e=>createLogger(e,t,{severities:a,metadata:o}),appendSource:t=>i.setSource(`${e} → ${t}`),setMetadata(e){o=e,n=!(0,type_validations_1.isEmptyObject)(o)},appendMetadata(e){i.setMetadata(Object.assign(o,e))}}),Object.defineProperties(i,{metadata:{configurable:!0,enumerable:!0,get:()=>o}});for(const t of a)i[t]=(s,...r)=>{i(Object.assign(Object.assign({message:s},r.length&&{data:r}),{severity:t,source:e}))};return Object.freeze(i),i}function consoleLogger(e=!1,t=""){return createLogger(t,t=>{switch(t.severity){case"warn":console.warn(...s(!1,t));break;case"error":console.error(...s(!1,t));break;case"info":console.log(...s(!1,t));break;case"verbose":e&&console.log(...s(!1,t));break;default:console.warn(...s(!0,t))}},Common_1.defaultSeverities);function s(e,{source:t,message:s,data:r,severity:o}){const a=[];return t&&a.push(t),e&&a.push(o),a.push(s),a.push(...(0,Common_1.asArray)(r)),a}}function nullLogger(e="",t=Common_1.defaultSeverities){return createLogger(e,()=>{},t)}function combineLoggers({source:e,first:t,second:s,mapFromFirstLoggerSeverities:r,mapFromSecondLoggerSeverities:o}){const a=new Set(t.severities),n=new Set(s.severities);return createLogger(e,e=>{if(i(e))t(e);else if(g(e)){const s=null==o?void 0:o[e.severity];"string"==typeof s?t(Object.assign(Object.assign({},e),{severity:s})):"function"==typeof s&&t(s(e))}if(g(e))s(e);else if(i(e)){const t=null==r?void 0:r[e.severity];"string"==typeof t?s(Object.assign(Object.assign({},e),{severity:t})):"function"==typeof t&&s(t(e))}},[...new Set([...t.severities,...s.severities])]);function i(e){return a.has(e.severity)}function g(e){return n.has(e.severity)}}exports.createLogger=createLogger,exports.consoleLogger=consoleLogger,exports.nullLogger=nullLogger,exports.combineLoggers=combineLoggers,exports.operationToDefaultMessageSeverityMapping={complete:e=>{var{message:t}=e,s=__rest(e,["message"]);return Object.assign(Object.assign({},s),{severity:"info",message:"Action completed: "+t})},start:e=>{var{message:t}=e,s=__rest(e,["message"]);return Object.assign(Object.assign({},s),{severity:"info",message:"Action starting: "+t})},fail:e=>{var{message:t}=e,s=__rest(e,["message"]);return Object.assign(Object.assign({},s),{severity:"error",message:"Action failed: "+t})}};