@aimee-blue/ab-service-kit
Version:
Aimee Blue Service Template
1 lines • 3.33 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/shared/logging/containerFriendlyLogger.ts"],"names":["trimWhitespace","arg","replace","isNotEmptyOrLineBreak","trimmed","length","allowedTypes","transformValue","includes","util","inspect","compact","colors","depth","friendlyLogEntry","args","JSON","stringify","map","filter","createContainerFriendlyLogger","logger","Object","freeze","log","warn","error"],"mappings":";;;;;;;;;;;AAAA;;AACA;;;;AAEO,SAASA,cAAT,CAAwBC,GAAxB,EAAsC;AAC3C,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AAC3B,WAAOA,GAAG,CACPC,OADI,CACI,mBADJ,EACyB,EADzB,EAEJA,OAFI,CAEI,mBAFJ,EAEyB,EAFzB,CAAP;AAGD;;AACD,SAAOD,GAAP;AACD;;AAEM,SAASE,qBAAT,CAA+BF,GAA/B,EAA6C;AAClD,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AAC3B,UAAMG,OAAO,GAAGH,GAAhB;;AACA,QAAIG,OAAO,CAACC,MAAR,KAAmB,CAAvB,EAA0B;AACxB,aAAO,KAAP;AACD;AACF;;AACD,SAAO,IAAP;AACD;;AAED,MAAMC,YAAY,GAAG,CAAC,QAAD,EAAW,QAAX,EAAqB,SAArB,CAArB;;AAEO,SAASC,cAAT,CAAwBN,GAAxB,EAAsC;AAC3C,MAAIK,YAAY,CAACE,QAAb,CAAsB,OAAOP,GAA7B,CAAJ,EAAuC;AACrC,WAAOA,GAAP;AACD;;AACD,SAAOQ,cAAKC,OAAL,CAAaT,GAAb,EAAkB;AACvBU,IAAAA,OAAO,EAAE,IADc;AAEvBC,IAAAA,MAAM,EAAE,KAFe;AAGvBC,IAAAA,KAAK,EAAE;AAHgB,GAAlB,CAAP;AAKD;;AAEM,SAASC,gBAAT,CAA0B,GAAGC,IAA7B,EAA8C;AACnD,SAAOC,IAAI,CAACC,SAAL,CACLF,IAAI,CACDG,GADH,CACOlB,cADP,EAEGmB,MAFH,CAEUhB,qBAFV,EAGGe,GAHH,CAGOX,cAHP,CADK,CAAP;AAMD;AAED;AACA;AACA;AACA;AACA;;;AACO,MAAMa,6BAA6B,GAAG,MAAmB;AAC9D,QAAMC,MAAM,GAAG,0BAAf;AACA,SAAOC,MAAM,CAACC,MAAP,CAAc;AACnBC,IAAAA,GAAG,EAAE,CAAC,GAAGT,IAAJ,KAAwBM,MAAM,CAACG,GAAP,CAAWV,gBAAgB,CAAC,GAAGC,IAAJ,CAA3B,CADV;AAEnBU,IAAAA,IAAI,EAAE,CAAC,GAAGV,IAAJ,KAAwBM,MAAM,CAACI,IAAP,CAAYX,gBAAgB,CAAC,GAAGC,IAAJ,CAA5B,CAFX;AAGnBW,IAAAA,KAAK,EAAE,CAAC,GAAGX,IAAJ,KAAwBM,MAAM,CAACK,KAAP,CAAaZ,gBAAgB,CAAC,GAAGC,IAAJ,CAA7B;AAHZ,GAAd,CAAP;AAKD,CAPM","sourcesContent":["import { BasicLogger, createBasicLogger } from '.';\nimport util from 'util';\n\nexport function trimWhitespace(arg: unknown) {\n if (typeof arg === 'string') {\n return arg\n .replace(/^(\\s*\\n\\s*|\\s)+/gu, '')\n .replace(/(\\s*\\n\\s*|\\s)+$/gu, '');\n }\n return arg;\n}\n\nexport function isNotEmptyOrLineBreak(arg: unknown) {\n if (typeof arg === 'string') {\n const trimmed = arg;\n if (trimmed.length === 0) {\n return false;\n }\n }\n return true;\n}\n\nconst allowedTypes = ['string', 'number', 'boolean'];\n\nexport function transformValue(arg: unknown) {\n if (allowedTypes.includes(typeof arg)) {\n return arg;\n }\n return util.inspect(arg, {\n compact: true,\n colors: false,\n depth: 3,\n });\n}\n\nexport function friendlyLogEntry(...args: unknown[]) {\n return JSON.stringify(\n args\n .map(trimWhitespace)\n .filter(isNotEmptyOrLineBreak)\n .map(transformValue)\n );\n}\n\n/**\n * Converts the whole logging entry into a single JSON string which\n * makes this compatible with Docker and allow multiline data like\n * exceptions to be retained within same log entry.\n */\nexport const createContainerFriendlyLogger = (): BasicLogger => {\n const logger = createBasicLogger();\n return Object.freeze({\n log: (...args: unknown[]) => logger.log(friendlyLogEntry(...args)),\n warn: (...args: unknown[]) => logger.warn(friendlyLogEntry(...args)),\n error: (...args: unknown[]) => logger.error(friendlyLogEntry(...args)),\n });\n};\n"],"file":"containerFriendlyLogger.js"}