From 260658bec9ee7066d64cbfc7051eea254391201a Mon Sep 17 00:00:00 2001 From: Christophe Hurpeau Date: Sat, 5 Nov 2016 12:47:28 +0100 Subject: [PATCH] fix: getConfigForLoggerRecord key can be undefined --- packages/nightingale-logger/lib-browsers-dev/index.js | 2 +- packages/nightingale-logger/lib-browsers-dev/index.js.map | 2 +- packages/nightingale-logger/lib-browsers/index.js.map | 2 +- packages/nightingale-logger/lib-node6-dev/index.js | 2 +- packages/nightingale-logger/lib-node6-dev/index.js.map | 2 +- packages/nightingale-logger/lib-node6/index.js.map | 2 +- packages/nightingale-logger/lib-older-node-dev/index.js | 2 +- packages/nightingale-logger/lib-older-node-dev/index.js.map | 2 +- packages/nightingale-logger/lib-older-node/index.js.map | 2 +- packages/nightingale-logger/lib-webpack-dev/index.js | 2 +- packages/nightingale-logger/lib-webpack-dev/index.js.map | 2 +- .../nightingale-logger/lib-webpack-modern-browsers-dev/index.js | 2 +- .../lib-webpack-modern-browsers-dev/index.js.map | 2 +- .../nightingale-logger/lib-webpack-modern-browsers/index.js.map | 2 +- packages/nightingale-logger/lib-webpack/index.js.map | 2 +- packages/nightingale-logger/src/index.js | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/nightingale-logger/lib-browsers-dev/index.js b/packages/nightingale-logger/lib-browsers-dev/index.js index 02f075cd3..f27be45af 100644 --- a/packages/nightingale-logger/lib-browsers-dev/index.js +++ b/packages/nightingale-logger/lib-browsers-dev/index.js @@ -75,7 +75,7 @@ if (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) { /** @private */ function getConfigForLoggerRecord(key, recordLevel) { - _assert(key, _tcombForked2.default.String, 'key'); + _assert(key, _tcombForked2.default.maybe(_tcombForked2.default.String), 'key'); _assert(recordLevel, _tcombForked2.default.Number, 'recordLevel'); diff --git a/packages/nightingale-logger/lib-browsers-dev/index.js.map b/packages/nightingale-logger/lib-browsers-dev/index.js.map index 77c8c5693..9dd012111 100644 --- a/packages/nightingale-logger/lib-browsers-dev/index.js.map +++ b/packages/nightingale-logger/lib-browsers-dev/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.js"],"names":["RecordType","level","key","displayName","datetime","Date","message","context","metadata","extra","HandlerType","minLevel","isHandling","handle","ProcessorType","ConfigForLoggerType","handlers","processors","global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","filter","handler","getConfigForLoggerRecord","recordLevel","Logger","includes","warn","replace","childSuffixKey","childDisplayName","logger","setContext","_context","extendedContext","Object","assign","record","getHandlersAndProcessors","length","ERROR","console","log","forEach","process","some","INFO","options","undefined","addRecord","metadataStyles","TRACE","DEBUG","WARN","Error","error","name","ALERT","FATAL","value","varName","varValue","infoSuccess","symbol","styles","infoFail","now","time","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","timeEnd","fn","functionName","callback","enter","exit"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/index.js"],"names":["RecordType","level","key","displayName","datetime","Date","message","context","metadata","extra","HandlerType","minLevel","isHandling","handle","ProcessorType","ConfigForLoggerType","handlers","processors","global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","filter","handler","getConfigForLoggerRecord","recordLevel","Logger","includes","warn","replace","childSuffixKey","childDisplayName","logger","setContext","_context","extendedContext","Object","assign","record","getHandlersAndProcessors","length","ERROR","console","log","forEach","process","some","INFO","options","undefined","addRecord","metadataStyles","TRACE","DEBUG","WARN","Error","error","name","ALERT","FATAL","value","varName","varValue","infoSuccess","symbol","styles","infoFail","now","time","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","timeEnd","fn","functionName","callback","enter","exit"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: ?string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file diff --git a/packages/nightingale-logger/lib-browsers/index.js.map b/packages/nightingale-logger/lib-browsers/index.js.map index 9f56fade5..1a8077ae7 100644 --- a/packages/nightingale-logger/lib-browsers/index.js.map +++ b/packages/nightingale-logger/lib-browsers/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.js"],"names":["global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","handlers","processors","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","key","level","filter","handler","minLevel","isHandling","getConfigForLoggerRecord","recordLevel","Logger","displayName","includes","warn","replace","childSuffixKey","childDisplayName","context","logger","setContext","_context","extendedContext","Object","assign","record","getHandlersAndProcessors","length","ERROR","console","log","message","forEach","process","some","handle","metadata","INFO","options","undefined","datetime","Date","extra","addRecord","metadataStyles","TRACE","DEBUG","WARN","Error","error","name","ALERT","FATAL","value","varName","varValue","infoSuccess","symbol","styles","infoFail","now","time","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","timeEnd","fn","functionName","callback","enter","exit"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/index.js"],"names":["global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","handlers","processors","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","key","level","filter","handler","minLevel","isHandling","getConfigForLoggerRecord","recordLevel","Logger","displayName","includes","warn","replace","childSuffixKey","childDisplayName","context","logger","setContext","_context","extendedContext","Object","assign","record","getHandlersAndProcessors","length","ERROR","console","log","message","forEach","process","some","handle","metadata","INFO","options","undefined","datetime","Date","extra","addRecord","metadataStyles","TRACE","DEBUG","WARN","Error","error","name","ALERT","FATAL","value","varName","varValue","infoSuccess","symbol","styles","infoFail","now","time","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","timeEnd","fn","functionName","callback","enter","exit"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: ?string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file diff --git a/packages/nightingale-logger/lib-node6-dev/index.js b/packages/nightingale-logger/lib-node6-dev/index.js index 54f4abfe0..6a66920f6 100644 --- a/packages/nightingale-logger/lib-node6-dev/index.js +++ b/packages/nightingale-logger/lib-node6-dev/index.js @@ -75,7 +75,7 @@ if (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) { /** @private */ function getConfigForLoggerRecord(key, recordLevel) { - _assert(key, _tcombForked2.default.String, 'key'); + _assert(key, _tcombForked2.default.maybe(_tcombForked2.default.String), 'key'); _assert(recordLevel, _tcombForked2.default.Number, 'recordLevel'); diff --git a/packages/nightingale-logger/lib-node6-dev/index.js.map b/packages/nightingale-logger/lib-node6-dev/index.js.map index 360e6e3a2..273dac388 100644 --- a/packages/nightingale-logger/lib-node6-dev/index.js.map +++ b/packages/nightingale-logger/lib-node6-dev/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.js"],"names":["RecordType","level","key","displayName","datetime","Date","message","context","metadata","extra","HandlerType","minLevel","isHandling","handle","ProcessorType","ConfigForLoggerType","handlers","processors","global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","filter","handler","getConfigForLoggerRecord","recordLevel","Logger","constructor","includes","warn","replace","getHandlersAndProcessors","getConfig","child","childSuffixKey","childDisplayName","logger","setContext","_context","extendsContext","extendedContext","Object","assign","addRecord","record","length","ERROR","console","log","forEach","process","some","INFO","options","undefined","trace","metadataStyles","TRACE","debug","DEBUG","info","WARN","error","Error","name","alert","ALERT","fatal","FATAL","inspectValue","value","inspect","depth","styles","inspectVar","varName","varValue","success","infoSuccess","symbol","debugSuccess","fail","infoFail","debugFail","time","now","infoTime","timeEnd","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","infoTimeEnd","infoSuccessTimeEnd","enter","fn","functionName","exit","wrap","callback"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/index.js"],"names":["RecordType","level","key","displayName","datetime","Date","message","context","metadata","extra","HandlerType","minLevel","isHandling","handle","ProcessorType","ConfigForLoggerType","handlers","processors","global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","filter","handler","getConfigForLoggerRecord","recordLevel","Logger","constructor","includes","warn","replace","getHandlersAndProcessors","getConfig","child","childSuffixKey","childDisplayName","logger","setContext","_context","extendsContext","extendedContext","Object","assign","addRecord","record","length","ERROR","console","log","forEach","process","some","INFO","options","undefined","trace","metadataStyles","TRACE","debug","DEBUG","info","WARN","error","Error","name","alert","ALERT","fatal","FATAL","inspectValue","value","inspect","depth","styles","inspectVar","varName","varValue","success","infoSuccess","symbol","debugSuccess","fail","infoFail","debugFail","time","now","infoTime","timeEnd","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","infoTimeEnd","infoSuccessTimeEnd","enter","fn","functionName","exit","wrap","callback"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: ?string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file diff --git a/packages/nightingale-logger/lib-node6/index.js.map b/packages/nightingale-logger/lib-node6/index.js.map index d244c1e01..5c798a79a 100644 --- a/packages/nightingale-logger/lib-node6/index.js.map +++ b/packages/nightingale-logger/lib-node6/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.js"],"names":["global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","handlers","processors","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","key","level","filter","handler","minLevel","isHandling","getConfigForLoggerRecord","recordLevel","Logger","constructor","displayName","includes","warn","replace","getHandlersAndProcessors","getConfig","child","childSuffixKey","childDisplayName","context","logger","setContext","_context","extendsContext","extendedContext","Object","assign","addRecord","record","length","ERROR","console","log","message","forEach","process","some","handle","metadata","INFO","options","undefined","datetime","Date","extra","trace","metadataStyles","TRACE","debug","DEBUG","info","WARN","error","Error","name","alert","ALERT","fatal","FATAL","inspectValue","value","inspect","depth","styles","inspectVar","varName","varValue","success","infoSuccess","symbol","debugSuccess","fail","infoFail","debugFail","time","now","infoTime","timeEnd","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","infoTimeEnd","infoSuccessTimeEnd","enter","fn","functionName","exit","wrap","callback"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/index.js"],"names":["global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","handlers","processors","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","key","level","filter","handler","minLevel","isHandling","getConfigForLoggerRecord","recordLevel","Logger","constructor","displayName","includes","warn","replace","getHandlersAndProcessors","getConfig","child","childSuffixKey","childDisplayName","context","logger","setContext","_context","extendsContext","extendedContext","Object","assign","addRecord","record","length","ERROR","console","log","message","forEach","process","some","handle","metadata","INFO","options","undefined","datetime","Date","extra","trace","metadataStyles","TRACE","debug","DEBUG","info","WARN","error","Error","name","alert","ALERT","fatal","FATAL","inspectValue","value","inspect","depth","styles","inspectVar","varName","varValue","success","infoSuccess","symbol","debugSuccess","fail","infoFail","debugFail","time","now","infoTime","timeEnd","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","infoTimeEnd","infoSuccessTimeEnd","enter","fn","functionName","exit","wrap","callback"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: ?string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file diff --git a/packages/nightingale-logger/lib-older-node-dev/index.js b/packages/nightingale-logger/lib-older-node-dev/index.js index 7bc771468..384645c28 100644 --- a/packages/nightingale-logger/lib-older-node-dev/index.js +++ b/packages/nightingale-logger/lib-older-node-dev/index.js @@ -79,7 +79,7 @@ if (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) { /** @private */ function getConfigForLoggerRecord(key, recordLevel) { - _assert(key, _tcombForked2.default.String, 'key'); + _assert(key, _tcombForked2.default.maybe(_tcombForked2.default.String), 'key'); _assert(recordLevel, _tcombForked2.default.Number, 'recordLevel'); diff --git a/packages/nightingale-logger/lib-older-node-dev/index.js.map b/packages/nightingale-logger/lib-older-node-dev/index.js.map index 3d973f0bd..8f577632a 100644 --- a/packages/nightingale-logger/lib-older-node-dev/index.js.map +++ b/packages/nightingale-logger/lib-older-node-dev/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.js"],"names":["RecordType","level","key","displayName","datetime","Date","message","context","metadata","extra","HandlerType","minLevel","isHandling","handle","ProcessorType","ConfigForLoggerType","handlers","processors","global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","filter","handler","getConfigForLoggerRecord","recordLevel","Logger","includes","warn","replace","childSuffixKey","childDisplayName","logger","setContext","_context","extendedContext","Object","assign","record","getHandlersAndProcessors","length","ERROR","console","log","forEach","process","some","INFO","options","undefined","addRecord","metadataStyles","TRACE","DEBUG","WARN","Error","error","name","ALERT","FATAL","value","inspect","depth","styles","varName","varValue","infoSuccess","symbol","infoFail","now","time","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","timeEnd","fn","functionName","callback","enter","exit"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/index.js"],"names":["RecordType","level","key","displayName","datetime","Date","message","context","metadata","extra","HandlerType","minLevel","isHandling","handle","ProcessorType","ConfigForLoggerType","handlers","processors","global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","filter","handler","getConfigForLoggerRecord","recordLevel","Logger","includes","warn","replace","childSuffixKey","childDisplayName","logger","setContext","_context","extendedContext","Object","assign","record","getHandlersAndProcessors","length","ERROR","console","log","forEach","process","some","INFO","options","undefined","addRecord","metadataStyles","TRACE","DEBUG","WARN","Error","error","name","ALERT","FATAL","value","inspect","depth","styles","varName","varValue","infoSuccess","symbol","infoFail","now","time","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","timeEnd","fn","functionName","callback","enter","exit"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: ?string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file diff --git a/packages/nightingale-logger/lib-older-node/index.js.map b/packages/nightingale-logger/lib-older-node/index.js.map index bb5cb4419..51bf807d3 100644 --- a/packages/nightingale-logger/lib-older-node/index.js.map +++ b/packages/nightingale-logger/lib-older-node/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.js"],"names":["global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","handlers","processors","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","key","level","filter","handler","minLevel","isHandling","getConfigForLoggerRecord","recordLevel","Logger","displayName","includes","warn","replace","childSuffixKey","childDisplayName","context","logger","setContext","_context","extendedContext","Object","assign","record","getHandlersAndProcessors","length","ERROR","console","log","message","forEach","process","some","handle","metadata","INFO","options","undefined","datetime","Date","extra","addRecord","metadataStyles","TRACE","DEBUG","WARN","Error","error","name","ALERT","FATAL","value","inspect","depth","styles","varName","varValue","infoSuccess","symbol","infoFail","now","time","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","timeEnd","fn","functionName","callback","enter","exit"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/index.js"],"names":["global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","handlers","processors","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","key","level","filter","handler","minLevel","isHandling","getConfigForLoggerRecord","recordLevel","Logger","displayName","includes","warn","replace","childSuffixKey","childDisplayName","context","logger","setContext","_context","extendedContext","Object","assign","record","getHandlersAndProcessors","length","ERROR","console","log","message","forEach","process","some","handle","metadata","INFO","options","undefined","datetime","Date","extra","addRecord","metadataStyles","TRACE","DEBUG","WARN","Error","error","name","ALERT","FATAL","value","inspect","depth","styles","varName","varValue","infoSuccess","symbol","infoFail","now","time","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","timeEnd","fn","functionName","callback","enter","exit"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: ?string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file diff --git a/packages/nightingale-logger/lib-webpack-dev/index.js b/packages/nightingale-logger/lib-webpack-dev/index.js index 00b841f17..96c32c791 100644 --- a/packages/nightingale-logger/lib-webpack-dev/index.js +++ b/packages/nightingale-logger/lib-webpack-dev/index.js @@ -63,7 +63,7 @@ if (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) { /** @private */ function getConfigForLoggerRecord(key, recordLevel) { - _assert(key, _t.String, 'key'); + _assert(key, _t.maybe(_t.String), 'key'); _assert(recordLevel, _t.Number, 'recordLevel'); diff --git a/packages/nightingale-logger/lib-webpack-dev/index.js.map b/packages/nightingale-logger/lib-webpack-dev/index.js.map index c3b751f37..3132b1658 100644 --- a/packages/nightingale-logger/lib-webpack-dev/index.js.map +++ b/packages/nightingale-logger/lib-webpack-dev/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.js"],"names":["levels","RecordType","level","key","displayName","datetime","Date","message","context","metadata","extra","HandlerType","minLevel","isHandling","handle","ProcessorType","ConfigForLoggerType","handlers","processors","global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","filter","handler","getConfigForLoggerRecord","recordLevel","Logger","includes","warn","replace","childSuffixKey","childDisplayName","logger","setContext","_context","extendedContext","Object","assign","record","getHandlersAndProcessors","length","ERROR","console","log","forEach","process","some","INFO","options","undefined","addRecord","metadataStyles","TRACE","DEBUG","WARN","Error","error","name","ALERT","FATAL","value","varName","varValue","infoSuccess","symbol","styles","infoFail","now","time","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","timeEnd","fn","functionName","callback","enter","exit"],"mappings":";;;;;;;;AACA,OAAOA,MAAP,MAAmB,oBAAnB;;IAEKC,U;AACHC,O;AACAC,K;AACAC,a;AACAC,U,EAAUC,I;AACVC,S;AACAC,S;AACAC,U;AACAC,O;;;IAGGC,W;AACHC,U;AACAC,Y;AACAC,Q;;;IAGGC,a;;IAEAC,mB;AACHC,U,UAAgBN,W;AAChBO,Y,UAAkBH,a;;;AAGpB,IAAI,CAACI,OAAOC,mCAAZ,EAAiD;AAC/CD,SAAOC,mCAAP,GAA6C,YAAiC;AAAA;AAC5E,aAAO,EAAEH,YAAF,EAAgBC,cAAhB,EAAP;AAD4E,8BAApBF,mBAAoB;AAE7E,GAFD;AAGD;;AAED,IAAI,CAACG,OAAOE,0CAAZ,EAAwD;AACtDF,SAAOE,0CAAP,GACE,UAAClB,GAAD,EAAcD,KAAd,EAAqD;AAAA,YAApDC,GAAoD;;AAAA,YAAvCD,KAAuC;;AAAA;AAAA,kCAClBiB,OAAOC,mCAAP,CAA2CjB,GAA3C,CADkB;AAAA,UAC3Cc,QAD2C,yBAC3CA,QAD2C;AAAA,UACjCC,UADiC,yBACjCA,UADiC;;AAGnD,aAAO;AACLD,kBAAUA,SAASK,MAAT,CAAgB;AAAA,iBACxBpB,SAASqB,QAAQX,QAAjB,KAA8B,CAACW,QAAQV,UAAT,IAAuBU,QAAQV,UAAR,CAAmBX,KAAnB,EAA0BC,GAA1B,CAArD,CADwB;AAAA,SAAhB,CADL;AAILe;AAJK,OAAP;AAHmD,SAAvBF,mBAAuB;AASpD,GAVH;AAYD;;AAGD;AACA,SAASQ,wBAAT,CAAkCrB,GAAlC,EAA+CsB,WAA/C,EAAyF;AAAA,UAAvDtB,GAAuD;;AAAA,UAA1CsB,WAA0C;;AAAA;AACvF,WAAON,OAAOE,0CAAP,CAAkDlB,GAAlD,EAAuDsB,WAAvD,CAAP;AADuF,4BAApBT,mBAAoB;AAExF;;AAED;;;;;IAIqBU,M;;AAInB;;;;;;AAMA,kBAAYvB,GAAZ,EAAyBC,WAAzB,EAA+C;AAAA,YAAnCD,GAAmC;;AAAA,YAAtBC,WAAsB;;AAAA;;AAC7C,QAAID,IAAIwB,QAAJ,CAAa,GAAb,CAAJ,EAAuB;AACrB,WAAKC,IAAL,CAAU,yDAAV,EAAqE,EAAEzB,QAAF,EAAOC,wBAAP,EAArE;AACAD,YAAMA,IAAI0B,OAAJ,CAAY,KAAZ,EAAmB,GAAnB,CAAN;AACD;AACD,SAAK1B,GAAL,GAAWA,GAAX;AACA,SAAKC,WAAL,GAAmBA,WAAnB;AACD;;AAED;;;;;6CACyBqB,W,EAA0C;AAAA,cAA1CA,WAA0C;;AAAA;AACjE,eAAOD,yBAAyB,KAAKrB,GAA9B,EAAmCsB,WAAnC,CAAP;AADiE,gCAApBT,mBAAoB;AAElE;;AAED;;;;gCACiC;AAAA;AAC/B,eAAOG,OAAOC,mCAAP,CAA2C,KAAKjB,GAAhD,CAAP;AAD+B,gCAApBa,mBAAoB;AAEhC;;AAED;;;;;;0BAGMc,c,EAAwBC,gB,EAAmC;AAAA,cAA3DD,cAA2D;;AAAA,cAAnCC,gBAAmC;;AAAA;AAC/D,eAAO,IAAIL,MAAJ,CAAc,KAAKvB,GAAnB,SAA0B2B,cAA1B,EAA4CC,gBAA5C,CAAP;AAD+D,gCAAPL,MAAO;AAEhE;;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;gBAaQlB,O,EAAyB;AAAA,cAAzBA,OAAyB;;AAAA;AAC/B,YAAMwB,SAAS,IAAIN,MAAJ,CAAW,KAAKvB,GAAhB,CAAf;AACA6B,eAAOC,UAAP,CAAkBzB,OAAlB;AACA,eAAOwB,MAAP;AAH+B,gCAAPN,MAAO;AAIhC,K;;AAED;;;;;;;;+BAKWlB,O,EAAiB;AAAA,cAAjBA,OAAiB;;AAC1B,WAAK0B,QAAL,GAAgB1B,OAAhB;AACD;;AAED;;;;;;mCAGe2B,e,EAAyB;AAAA,cAAzBA,eAAyB;;AACtCC,aAAOC,MAAP,CAAc,KAAKH,QAAnB,EAA6BC,eAA7B;AACD;;AAED;;;;;;;;8BAKUG,M,EAAgB;AAAA,cAAhBA,MAAgB;;AAAA,kCACO,KAAKC,wBAAL,CAA8BD,OAAOpC,KAArC,CADP;AAAA,UAClBe,QADkB,yBAClBA,QADkB;AAAA,UACRC,UADQ,yBACRA,UADQ;;AAGxB,UAAID,SAASuB,MAAT,KAAoB,CAAxB,EAA2B;AACzB,YAAIF,OAAOpC,KAAP,GAAeF,OAAOyC,KAA1B,EAAiC;AAC/B;AACAC,kBAAQC,GAAR,CAAY,4CAAZ,EAA0D;AACxDxC,iBAAKmC,OAAOnC,GAD4C;AAExDI,qBAAS+B,OAAO/B;AAFwC,WAA1D;AAID;AACD;AACD;;AAED,UAAIW,UAAJ,EAAgB;AACdA,mBAAW0B,OAAX,CAAmB;AAAA,iBAAWC,QAAQP,MAAR,EAAgBA,OAAO9B,OAAvB,CAAX;AAAA,SAAnB;AACD;;AAEDS,eAAS6B,IAAT,CAAc;AAAA,eAAWvB,QAAQT,MAAR,CAAewB,MAAf,MAA2B,KAAtC;AAAA,OAAd;AACD;;AAED;;;;;;wBAIE/B,O,EACAE,Q,EAGA;AAAA,UAFAP,KAEA,uEAFgBF,OAAO+C,IAEvB;AAAA,UADAC,OACA,uEADmBC,SACnB;;AAAA,cAJA1C,OAIA;;AAAA,cAHAE,QAGA;;AAAA,cAFAP,KAEA;;AAAA,cADA8C,OACA;;AACA,UAAIxC,UAAUC,YAAYA,SAASD,OAAnC;AACA,UAAIC,QAAJ,EAAc;AACZ,eAAOA,SAASD,OAAhB;AACD;;AAED,UAAI8B,SAAS;AACXpC,eAAOA,KADI;AAEXC,aAAK,KAAKA,GAFC;AAGXC,qBAAa,KAAKA,WAHP;AAIXC,kBAAU,IAAIC,IAAJ,EAJC;AAKXC,iBAASA,OALE;AAMXC,iBAASA,WAAW,KAAK0B,QANd;AAOXzB,kBAAUA,QAPC;AAQXC;AARW,OAAb;;AAWA,UAAIsC,OAAJ,EAAa;AACXV,iBAASF,OAAOC,MAAP,CAAcW,OAAd,EAAuBV,MAAvB,CAAT;AACD;;AAED,WAAKY,SAAL,CAAeZ,MAAf;AACD;;AAGD;;;;;;0BAGM/B,O,EAAiBE,Q,EAAmB0C,c,EAAyB;AAAA,cAA7D5C,OAA6D;;AAAA,cAA5CE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AACjE,WAAKR,GAAL,CAASpC,OAAT,EAAkBE,QAAlB,EAA4BT,OAAOoD,KAAnC,EAA0C,EAAED,8BAAF,EAA1C;AACD;;AAGD;;;;;;0BAGM5C,O,EAAiBE,Q,EAAmB0C,c,EAAyB;AAAA,cAA7D5C,OAA6D;;AAAA,cAA5CE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AACjE,WAAKR,GAAL,CAASpC,OAAT,EAAkBE,QAAlB,EAA4BT,OAAOqD,KAAnC,EAA0C,EAAEF,8BAAF,EAA1C;AACD;;AAED;;;;;;yBAGK5C,O,EAAiBE,Q,EAAmB0C,c,EAAyB;AAAA,cAA7D5C,OAA6D;;AAAA,cAA5CE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AAChE,WAAKR,GAAL,CAASpC,OAAT,EAAkBE,QAAlB,EAA4BT,OAAO+C,IAAnC,EAAyC,EAAEI,8BAAF,EAAzC;AACD;;AAED;;;;;;yBAGK5C,O,EAAiBE,Q,EAAmB0C,c,EAAyB;AAAA,cAA7D5C,OAA6D;;AAAA,cAA5CE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AAChE,WAAKR,GAAL,CAASpC,OAAT,EAAkBE,QAAlB,EAA4BT,OAAOsD,IAAnC,EAAyC,EAAEH,8BAAF,EAAzC;AACD;;AAED;;;;;;0BAGM5C,O,EAAyE;AAAA,UAAhDE,QAAgD;AAAA,UAAzB0C,cAAyB;;AAAA,cAAzE5C,OAAyE,uBAAvDgD,KAAuD;;AAAA,cAAhD9C,QAAgD;;AAAA,cAAzB0C,cAAyB;;AAC7E,UAAI5C,mBAAmBgD,KAAvB,EAA8B;AAC5B9C,iBAAS+C,KAAT,GAAiBjD,OAAjB;AACAA,kBAAaE,SAAS+C,KAAT,CAAeC,IAA5B,UAAqChD,SAAS+C,KAAT,CAAejD,OAApD;AACD;AACD,WAAKoC,GAAL,CAASpC,OAAT,EAAkBE,QAAlB,EAA4BT,OAAOyC,KAAnC,EAA0C,EAAEU,8BAAF,EAA1C;AACD;;AAED;;;;;;0BAGM5C,O,EAAiBE,Q,EAAmB0C,c,EAAyB;AAAA,cAA7D5C,OAA6D;;AAAA,cAA5CE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AACjE,WAAKR,GAAL,CAASpC,OAAT,EAAkBE,QAAlB,EAA4BT,OAAO0D,KAAnC,EAA0C,EAAEP,8BAAF,EAA1C;AACD;;AAED;;;;;;0BAGM5C,O,EAAiBE,Q,EAAmB0C,c,EAAyB;AAAA,cAA7D5C,OAA6D;;AAAA,cAA5CE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AACjE,WAAKR,GAAL,CAASpC,OAAT,EAAkBE,QAAlB,EAA4BT,OAAO2D,KAAnC,EAA0C,EAAER,8BAAF,EAA1C;AACD;;AAED;;;;;;iCAGaS,K,EAAYnD,Q,EAAmB0C,c,EAAyB;AAAA,cAAxDS,KAAwD;;AAAA,cAA5CnD,QAA4C;;AAAA,cAAzB0C,cAAyB;;AAEjE,YAAM,IAAII,KAAJ,CAAU,mDAAV,CAAN;AAOH;;AAED;;;;;;+BAGWM,O,EAAiBC,Q,EAAerD,Q,EAAmB0C,c,EAAyB;AAAA,cAA5EU,OAA4E;;AAAA,cAA3DC,QAA2D;;AAAA,cAA5CrD,QAA4C;;AAAA,cAAzB0C,cAAyB;;AAEnF,YAAM,IAAII,KAAJ,CAAU,mDAAV,CAAN;AAUH;;AAED;;;;;;4BAGQhD,O,EAAiBE,Q,EAAmB0C,c,EAAyB;AAAA,cAA7D5C,OAA6D;;AAAA,cAA5CE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AACnE,WAAKY,WAAL,CAAiBxD,OAAjB,EAA0BE,QAA1B,EAAoC0C,cAApC;AACD;;AAED;;;;;;gCAGY5C,O,EAAiBE,Q,EAAmB0C,c,EAAyB;AAAA,cAA7D5C,OAA6D;;AAAA,cAA5CE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AACvE,WAAKR,GAAL,CAASpC,OAAT,EAAkBE,QAAlB,EAA4BT,OAAO+C,IAAnC,EAAyC;AACvCI,sCADuC;AAEvCa,gBAAQ,GAF+B;AAGvCC;AAHuC,OAAzC;AAKD;;AAED;;;;;;iCAGa1D,O,EAAiBE,Q,EAAmB0C,c,EAAyB;AAAA,cAA7D5C,OAA6D;;AAAA,cAA5CE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AACxE,WAAKR,GAAL,CAASpC,OAAT,EAAkBE,QAAlB,EAA4BT,OAAOqD,KAAnC,EAA0C;AACxCF,sCADwC;AAExCa,gBAAQ,GAFgC;AAGxCC;AAHwC,OAA1C;AAKD;;AAED;;;;;;yBAGK1D,O,EAAiBE,Q,EAAmB0C,c,EAAyB;AAAA,cAA7D5C,OAA6D;;AAAA,cAA5CE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AAChE,WAAKe,QAAL,CAAc3D,OAAd,EAAuBE,QAAvB,EAAiC0C,cAAjC;AACD;;AAED;;;;;;6BAGS5C,O,EAAiBE,Q,EAAmB0C,c,EAAyB;AAAA,cAA7D5C,OAA6D;;AAAA,cAA5CE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AACpE,WAAKR,GAAL,CAASpC,OAAT,EAAkBE,QAAlB,EAA4BT,OAAO+C,IAAnC,EAAyC;AACvCI,sCADuC;AAEvCa,gBAAQ,GAF+B;AAGvCC;AAHuC,OAAzC;AAKD;;AAED;;;;;;8BAGU1D,O,EAAiBE,Q,EAAmB0C,c,EAAyB;AAAA,cAA7D5C,OAA6D;;AAAA,cAA5CE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AACrE,WAAKR,GAAL,CAASpC,OAAT,EAAkBE,QAAlB,EAA4BT,OAAOqD,KAAnC,EAA0C;AACxCF,sCADwC;AAExCa,gBAAQ,GAFgC;AAGxCC;AAHwC,OAA1C;AAKD;;AAED;;;;;;yBAIE1D,O,EACAE,Q,EACA0C,c,EAEQ;AAAA,UADRjD,KACQ,uEADQF,OAAOqD,KACf;;AAAA,cAJR9C,OAIQ;;AAAA,cAHRE,QAGQ;;AAAA,cAFR0C,cAEQ;;AAAA,cADRjD,KACQ;;AAAA;AACR,YAAIK,OAAJ,EAAa;AACX,eAAKoC,GAAL,CAASpC,OAAT,EAAkBE,QAAlB,EAA4BP,KAA5B,EAAmC,EAAEiD,8BAAF,EAAnC;AACD;;AAED,eAAO7C,KAAK6D,GAAL,EAAP;AALQ;AAMT;;;6BAEQ5D,O,EAAkBE,Q,EAAmB0C,c,EAAiC;AAAA,cAAtE5C,OAAsE;;AAAA,cAApDE,QAAoD;;AAAA,cAAjC0C,cAAiC;;AAAA;AAC7E,eAAO,KAAKiB,IAAL,CAAU7D,OAAV,EAAmBE,QAAnB,EAA6B0C,cAA7B,EAA6CnD,OAAO+C,IAApD,CAAP;AAD6E;AAE9E;;AAED;;;;;;;;;4BAOEsB,S,EACA9D,O,EAKA;AAAA,UAJAE,QAIA;AAAA,UAHA0C,cAGA;AAAA,UAFAjD,KAEA,uEAFgBF,OAAOqD,KAEvB;AAAA,UADAL,OACA;;AAAA,cANAqB,SAMA;;AAAA,cALA9D,OAKA;;AAAA,cAJAE,QAIA;;AAAA,cAHA0C,cAGA;;AAAA,cAFAjD,KAEA;;AAAA,cADA8C,OACA;;AACA,UAAMmB,MAAM7D,KAAK6D,GAAL,EAAZ;;AAEA,UAAMG,WAAWH,MAAME,SAAvB;;AAEA,UAAIC,WAAW,IAAf,EAAqB;AACnB7D,iBAAS8D,YAAT,GAA2BD,QAA3B;AACD,OAFD,MAEO;AACL,YAAME,UAAUF,WAAW,IAAX,IAAmBG,KAAKC,KAAL,CAAWJ,WAAW,IAAtB,CAAnC;;AAEA7D,iBAAS8D,YAAT,SAA2BC,UAAaA,OAAb,cAA+B,EAA1D,KADWF,WAAYE,UAAU,IACjC;AACD;;AAED/D,eAASkE,MAAT,GAAkBL,QAAlB;AACA,WAAK3B,GAAL,CAASpC,OAAT,EAAkBE,QAAlB,EAA4BP,KAA5B,eAAwC8C,OAAxC,IAAiDG,8BAAjD;AACD;;AAED;;;;;;gCAGYiB,I,EAAc7D,O,EAAiBE,Q,EAAmB0C,c,EAAyB;AAAA,cAA3EiB,IAA2E;;AAAA,cAA7D7D,OAA6D;;AAAA,cAA5CE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AACrF,WAAKyB,OAAL,CAAaR,IAAb,EAAmB7D,OAAnB,EAA4BE,QAA5B,EAAsC0C,cAAtC,EAAsDnD,OAAO+C,IAA7D;AACD;;AAED;;;;;;uCAGmBqB,I,EAAc7D,O,EAAiBE,Q,EAAmB0C,c,EAAyB;AAAA,cAA3EiB,IAA2E;;AAAA,cAA7D7D,OAA6D;;AAAA,cAA5CE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AAC5F,WAAKyB,OAAL,CAAaR,IAAb,EAAmB7D,OAAnB,EAA4BE,QAA5B,EAAsC0C,cAAtC,EAAsDnD,OAAO+C,IAA7D,EAAmE;AACjEiB,gBAAQ,GADyD;AAEjEC;AAFiE,OAAnE;AAID;;AAED;;;;;;;;;;;;;;;0BAYMY,E,EAAcpE,Q,EAAmB0C,c,EAAyB;AAAA,cAA1D0B,EAA0D;;AAAA,cAA5CpE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AAC9D1C;AACEqE,sBAAcD,GAAGpB;AADnB,SAEKhD,QAFL;AAIA,WAAKkC,GAAL,CAAS,OAAT,EAAkBlC,QAAlB,EAA4BT,OAAOoD,KAAnC,EAA0C,EAAED,8BAAF,EAA1C;AACD;;AAED;;;;;;;;;;;;;;;yBAYK0B,E,EAAcpE,Q,EAAmB0C,c,EAAyB;AAAA,cAA1D0B,EAA0D;;AAAA,cAA5CpE,QAA4C;;AAAA,cAAzB0C,cAAyB;;AAC7D1C;AACEqE,sBAAcD,GAAGpB;AADnB,SAEKhD,QAFL;AAIA,WAAKkC,GAAL,CAAS,MAAT,EAAiBlC,QAAjB,EAA2BT,OAAOoD,KAAlC,EAAyC,EAAED,8BAAF,EAAzC;AACD;;AAED;;;;;;;;;;;;;;;;;;;;;yBAmBE0B,E,EACApE,Q,EACA0C,c,EACA4B,Q,EACA;AAAA,cAJAF,EAIA;;AAAA,cAHApE,QAGA;;AAAA,cAFA0C,cAEA;;AAAA,cADA4B,QACA;;AACA,UAAI,OAAOtE,QAAP,KAAoB,UAAxB,EAAoC;AAClCsE,mBAAWtE,QAAX;AACAA,mBAAWwC,SAAX;AACD,OAHD,MAGO,IAAI,OAAOE,cAAP,KAA0B,UAA9B,EAA0C;AAC/C4B,mBAAW5B,cAAX;AACAA,yBAAiBF,SAAjB;AACD;;AAED,WAAK+B,KAAL,CAAWH,EAAX,EAAepE,QAAf,EAAyB0C,cAAzB;AACA4B;AACA,WAAKE,IAAL,CAAUJ,EAAV;AACD;;;;;;eA/ZkBnD,M","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/index.js"],"names":["levels","RecordType","level","key","displayName","datetime","Date","message","context","metadata","extra","HandlerType","minLevel","isHandling","handle","ProcessorType","ConfigForLoggerType","handlers","processors","global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","filter","handler","getConfigForLoggerRecord","recordLevel","Logger","includes","warn","replace","childSuffixKey","childDisplayName","logger","setContext","_context","extendedContext","Object","assign","record","getHandlersAndProcessors","length","ERROR","console","log","forEach","process","some","INFO","options","undefined","addRecord","metadataStyles","TRACE","DEBUG","WARN","Error","error","name","ALERT","FATAL","value","varName","varValue","infoSuccess","symbol","styles","infoFail","now","time","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","timeEnd","fn","functionName","callback","enter","exit"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: ?string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file diff --git a/packages/nightingale-logger/lib-webpack-modern-browsers-dev/index.js b/packages/nightingale-logger/lib-webpack-modern-browsers-dev/index.js index d1ccbb484..baa379ffd 100644 --- a/packages/nightingale-logger/lib-webpack-modern-browsers-dev/index.js +++ b/packages/nightingale-logger/lib-webpack-modern-browsers-dev/index.js @@ -57,7 +57,7 @@ if (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) { /** @private */ function getConfigForLoggerRecord(key, recordLevel) { - _assert(key, _t.String, 'key'); + _assert(key, _t.maybe(_t.String), 'key'); _assert(recordLevel, _t.Number, 'recordLevel'); diff --git a/packages/nightingale-logger/lib-webpack-modern-browsers-dev/index.js.map b/packages/nightingale-logger/lib-webpack-modern-browsers-dev/index.js.map index 5809cba9f..2de71177f 100644 --- a/packages/nightingale-logger/lib-webpack-modern-browsers-dev/index.js.map +++ b/packages/nightingale-logger/lib-webpack-modern-browsers-dev/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.js"],"names":["levels","RecordType","level","key","displayName","datetime","Date","message","context","metadata","extra","HandlerType","minLevel","isHandling","handle","ProcessorType","ConfigForLoggerType","handlers","processors","global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","filter","handler","getConfigForLoggerRecord","recordLevel","Logger","constructor","includes","warn","replace","getHandlersAndProcessors","getConfig","child","childSuffixKey","childDisplayName","logger","setContext","_context","extendsContext","extendedContext","Object","assign","addRecord","record","length","ERROR","console","log","forEach","process","some","INFO","options","undefined","trace","metadataStyles","TRACE","debug","DEBUG","info","WARN","error","Error","name","alert","ALERT","fatal","FATAL","inspectValue","value","inspectVar","varName","varValue","success","infoSuccess","symbol","styles","debugSuccess","fail","infoFail","debugFail","time","now","infoTime","timeEnd","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","infoTimeEnd","infoSuccessTimeEnd","enter","fn","functionName","exit","wrap","callback"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/index.js"],"names":["levels","RecordType","level","key","displayName","datetime","Date","message","context","metadata","extra","HandlerType","minLevel","isHandling","handle","ProcessorType","ConfigForLoggerType","handlers","processors","global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","filter","handler","getConfigForLoggerRecord","recordLevel","Logger","constructor","includes","warn","replace","getHandlersAndProcessors","getConfig","child","childSuffixKey","childDisplayName","logger","setContext","_context","extendsContext","extendedContext","Object","assign","addRecord","record","length","ERROR","console","log","forEach","process","some","INFO","options","undefined","trace","metadataStyles","TRACE","debug","DEBUG","info","WARN","error","Error","name","alert","ALERT","fatal","FATAL","inspectValue","value","inspectVar","varName","varValue","success","infoSuccess","symbol","styles","debugSuccess","fail","infoFail","debugFail","time","now","infoTime","timeEnd","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","infoTimeEnd","infoSuccessTimeEnd","enter","fn","functionName","exit","wrap","callback"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: ?string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file diff --git a/packages/nightingale-logger/lib-webpack-modern-browsers/index.js.map b/packages/nightingale-logger/lib-webpack-modern-browsers/index.js.map index 522d6de0f..e9ab97cd4 100644 --- a/packages/nightingale-logger/lib-webpack-modern-browsers/index.js.map +++ b/packages/nightingale-logger/lib-webpack-modern-browsers/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.js"],"names":["levels","global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","handlers","processors","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","key","level","filter","handler","minLevel","isHandling","getConfigForLoggerRecord","recordLevel","Logger","constructor","displayName","includes","warn","replace","getHandlersAndProcessors","getConfig","child","childSuffixKey","childDisplayName","context","logger","setContext","_context","extendsContext","extendedContext","Object","assign","addRecord","record","length","ERROR","console","log","message","forEach","process","some","handle","metadata","INFO","options","undefined","datetime","Date","extra","trace","metadataStyles","TRACE","debug","DEBUG","info","WARN","error","Error","name","alert","ALERT","fatal","FATAL","inspectValue","value","inspectVar","varName","varValue","success","infoSuccess","symbol","styles","debugSuccess","fail","infoFail","debugFail","time","now","infoTime","timeEnd","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","infoTimeEnd","infoSuccessTimeEnd","enter","fn","functionName","exit","wrap","callback"],"mappings":";;AACA,OAAOA,MAAP,MAAmB,oBAAnB;;AA0BA,IAAI,CAACC,OAAOC,mCAAZ,EAAiD;AAC/CD,SAAOC,mCAAP,GAA6C,YAAiC;AAC5E,WAAO,EAAEC,YAAF,EAAgBC,cAAhB,EAAP;AACD,GAFD;AAGD;;AAED,IAAI,CAACH,OAAOI,0CAAZ,EAAwD;AACtDJ,SAAOI,0CAAP,GACE,CAACC,GAAD,EAAcC,KAAd,KAAqD;AAAA,gCAClBN,OAAOC,mCAAP,CAA2CI,GAA3C,CADkB;AAAA,QAC3CH,QAD2C,yBAC3CA,QAD2C;AAAA,QACjCC,UADiC,yBACjCA,UADiC;;AAGnD,WAAO;AACLD,gBAAUA,SAASK,MAAT,CAAgBC,WACxBF,SAASE,QAAQC,QAAjB,KAA8B,CAACD,QAAQE,UAAT,IAAuBF,QAAQE,UAAR,CAAmBJ,KAAnB,EAA0BD,GAA1B,CAArD,CADQ,CADL;AAILF;AAJK,KAAP;AAMD,GAVH;AAYD;;AAGD;AACA,SAASQ,wBAAT,CAAkCN,GAAlC,EAA+CO,WAA/C,EAAyF;AACvF,SAAOZ,OAAOI,0CAAP,CAAkDC,GAAlD,EAAuDO,WAAvD,CAAP;AACD;;AAED;;;;AAIA,eAAe,MAAMC,MAAN,CAAa;;AAI1B;;;;;;AAMAC,cAAYT,GAAZ,EAAyBU,WAAzB,EAA+C;AAC7C,QAAIV,IAAIW,QAAJ,CAAa,GAAb,CAAJ,EAAuB;AACrB,WAAKC,IAAL,CAAU,yDAAV,EAAqE,EAAEZ,GAAF,EAAOU,WAAP,EAArE;AACAV,YAAMA,IAAIa,OAAJ,CAAY,KAAZ,EAAmB,GAAnB,CAAN;AACD;AACD,SAAKb,GAAL,GAAWA,GAAX;AACA,SAAKU,WAAL,GAAmBA,WAAnB;AACD;;AAED;AACAI,2BAAyBP,WAAzB,EAAmE;AACjE,WAAOD,yBAAyB,KAAKN,GAA9B,EAAmCO,WAAnC,CAAP;AACD;;AAED;AACAQ,cAAiC;AAC/B,WAAOpB,OAAOC,mCAAP,CAA2C,KAAKI,GAAhD,CAAP;AACD;;AAED;;;AAGAgB,QAAMC,cAAN,EAA8BC,gBAA9B,EAAiE;AAC/D,WAAO,IAAIV,MAAJ,CAAY,IAAE,KAAKR,GAAI,MAAGiB,cAAe,GAAzC,EAA4CC,gBAA5C,CAAP;AACD;;AAED;;;;;;;;;;;;;AAaAC,UAAQA,OAAR,EAAiC;AAC/B,QAAMC,SAAS,IAAIZ,MAAJ,CAAW,KAAKR,GAAhB,CAAf;AACAoB,WAAOC,UAAP,CAAkBF,OAAlB;AACA,WAAOC,MAAP;AACD;;AAED;;;;;AAKAC,aAAWF,OAAX,EAA4B;AAC1B,SAAKG,QAAL,GAAgBH,OAAhB;AACD;;AAED;;;AAGAI,iBAAeC,eAAf,EAAwC;AACtCC,WAAOC,MAAP,CAAc,KAAKJ,QAAnB,EAA6BE,eAA7B;AACD;;AAED;;;;;AAKAG,YAAUC,MAAV,EAA0B;AAAA,gCACO,KAAKd,wBAAL,CAA8Bc,OAAO3B,KAArC,CADP;AAAA,QAClBJ,QADkB,yBAClBA,QADkB;AAAA,QACRC,UADQ,yBACRA,UADQ;;AAGxB,QAAID,SAASgC,MAAT,KAAoB,CAAxB,EAA2B;AACzB,UAAID,OAAO3B,KAAP,GAAeP,OAAOoC,KAA1B,EAAiC;AAC/B;AACAC,gBAAQC,GAAR,CAAY,4CAAZ,EAA0D;AACxDhC,eAAK4B,OAAO5B,GAD4C;AAExDiC,mBAASL,OAAOK;AAFwC,SAA1D;AAID;AACD;AACD;;AAED,QAAInC,UAAJ,EAAgB;AACdA,iBAAWoC,OAAX,CAAmBC,WAAWA,QAAQP,MAAR,EAAgBA,OAAOT,OAAvB,CAA9B;AACD;;AAEDtB,aAASuC,IAAT,CAAcjC,WAAWA,QAAQkC,MAAR,CAAeT,MAAf,MAA2B,KAApD;AACD;;AAED;;;AAGAI,MACEC,OADF,EAEEK,QAFF,EAKE;AAAA,QAFArC,KAEA,uEAFgBP,OAAO6C,IAEvB;AAAA,QADAC,OACA,uEADmBC,SACnB;;AACA,QAAItB,UAAUmB,YAAYA,SAASnB,OAAnC;AACA,QAAImB,QAAJ,EAAc;AACZ,aAAOA,SAASnB,OAAhB;AACD;;AAED,QAAIS,SAAS;AACX3B,aAAOA,KADI;AAEXD,WAAK,KAAKA,GAFC;AAGXU,mBAAa,KAAKA,WAHP;AAIXgC,gBAAU,IAAIC,IAAJ,EAJC;AAKXV,eAASA,OALE;AAMXd,eAASA,WAAW,KAAKG,QANd;AAOXgB,gBAAUA,QAPC;AAQXM;AARW,KAAb;;AAWA,QAAIJ,OAAJ,EAAa;AACXZ,eAASH,OAAOC,MAAP,CAAcc,OAAd,EAAuBZ,MAAvB,CAAT;AACD;;AAED,SAAKD,SAAL,CAAeC,MAAf;AACD;;AAGD;;;AAGAiB,QAAMZ,OAAN,EAAuBK,QAAvB,EAA0CQ,cAA1C,EAAmE;AACjE,SAAKd,GAAL,CAASC,OAAT,EAAkBK,QAAlB,EAA4B5C,OAAOqD,KAAnC,EAA0C,EAAED,cAAF,EAA1C;AACD;;AAGD;;;AAGAE,QAAMf,OAAN,EAAuBK,QAAvB,EAA0CQ,cAA1C,EAAmE;AACjE,SAAKd,GAAL,CAASC,OAAT,EAAkBK,QAAlB,EAA4B5C,OAAOuD,KAAnC,EAA0C,EAAEH,cAAF,EAA1C;AACD;;AAED;;;AAGAI,OAAKjB,OAAL,EAAsBK,QAAtB,EAAyCQ,cAAzC,EAAkE;AAChE,SAAKd,GAAL,CAASC,OAAT,EAAkBK,QAAlB,EAA4B5C,OAAO6C,IAAnC,EAAyC,EAAEO,cAAF,EAAzC;AACD;;AAED;;;AAGAlC,OAAKqB,OAAL,EAAsBK,QAAtB,EAAyCQ,cAAzC,EAAkE;AAChE,SAAKd,GAAL,CAASC,OAAT,EAAkBK,QAAlB,EAA4B5C,OAAOyD,IAAnC,EAAyC,EAAEL,cAAF,EAAzC;AACD;;AAED;;;AAGAM,QAAMnB,OAAN,EAA+E;AAAA,QAAhDK,QAAgD;AAAA,QAAzBQ,cAAyB;;AAC7E,QAAIb,mBAAmBoB,KAAvB,EAA8B;AAC5Bf,eAASc,KAAT,GAAiBnB,OAAjB;AACAA,gBAAW,IAAEK,SAASc,KAAT,CAAeE,IAAK,OAAIhB,SAASc,KAAT,CAAenB,OAAQ,GAA5D;AACD;AACD,SAAKD,GAAL,CAASC,OAAT,EAAkBK,QAAlB,EAA4B5C,OAAOoC,KAAnC,EAA0C,EAAEgB,cAAF,EAA1C;AACD;;AAED;;;AAGAS,QAAMtB,OAAN,EAAuBK,QAAvB,EAA0CQ,cAA1C,EAAmE;AACjE,SAAKd,GAAL,CAASC,OAAT,EAAkBK,QAAlB,EAA4B5C,OAAO8D,KAAnC,EAA0C,EAAEV,cAAF,EAA1C;AACD;;AAED;;;AAGAW,QAAMxB,OAAN,EAAuBK,QAAvB,EAA0CQ,cAA1C,EAAmE;AACjE,SAAKd,GAAL,CAASC,OAAT,EAAkBK,QAAlB,EAA4B5C,OAAOgE,KAAnC,EAA0C,EAAEZ,cAAF,EAA1C;AACD;;AAED;;;AAGAa,eAAaC,KAAb,EAAyBtB,QAAzB,EAA4CQ,cAA5C,EAAqE;AAEjE,UAAM,IAAIO,KAAJ,CAAU,mDAAV,CAAN;AAOH;;AAED;;;AAGAQ,aAAWC,OAAX,EAA4BC,QAA5B,EAA2CzB,QAA3C,EAA8DQ,cAA9D,EAAuF;AAEnF,UAAM,IAAIO,KAAJ,CAAU,mDAAV,CAAN;AAUH;;AAED;;;AAGAW,UAAQ/B,OAAR,EAAyBK,QAAzB,EAA4CQ,cAA5C,EAAqE;AACnE,SAAKmB,WAAL,CAAiBhC,OAAjB,EAA0BK,QAA1B,EAAoCQ,cAApC;AACD;;AAED;;;AAGAmB,cAAYhC,OAAZ,EAA6BK,QAA7B,EAAgDQ,cAAhD,EAAyE;AACvE,SAAKd,GAAL,CAASC,OAAT,EAAkBK,QAAlB,EAA4B5C,OAAO6C,IAAnC,EAAyC;AACvCO,oBADuC;AAEvCoB,cAAQ,GAF+B;AAGvCC;AAHuC,KAAzC;AAKD;;AAED;;;AAGAC,eAAanC,OAAb,EAA8BK,QAA9B,EAAiDQ,cAAjD,EAA0E;AACxE,SAAKd,GAAL,CAASC,OAAT,EAAkBK,QAAlB,EAA4B5C,OAAOuD,KAAnC,EAA0C;AACxCH,oBADwC;AAExCoB,cAAQ,GAFgC;AAGxCC;AAHwC,KAA1C;AAKD;;AAED;;;AAGAE,OAAKpC,OAAL,EAAsBK,QAAtB,EAAyCQ,cAAzC,EAAkE;AAChE,SAAKwB,QAAL,CAAcrC,OAAd,EAAuBK,QAAvB,EAAiCQ,cAAjC;AACD;;AAED;;;AAGAwB,WAASrC,OAAT,EAA0BK,QAA1B,EAA6CQ,cAA7C,EAAsE;AACpE,SAAKd,GAAL,CAASC,OAAT,EAAkBK,QAAlB,EAA4B5C,OAAO6C,IAAnC,EAAyC;AACvCO,oBADuC;AAEvCoB,cAAQ,GAF+B;AAGvCC;AAHuC,KAAzC;AAKD;;AAED;;;AAGAI,YAAUtC,OAAV,EAA2BK,QAA3B,EAA8CQ,cAA9C,EAAuE;AACrE,SAAKd,GAAL,CAASC,OAAT,EAAkBK,QAAlB,EAA4B5C,OAAOuD,KAAnC,EAA0C;AACxCH,oBADwC;AAExCoB,cAAQ,GAFgC;AAGxCC;AAHwC,KAA1C;AAKD;;AAED;;;AAGAK,OACEvC,OADF,EAEEK,QAFF,EAGEQ,cAHF,EAKU;AAAA,QADR7C,KACQ,uEADQP,OAAOuD,KACf;;AACR,QAAIhB,OAAJ,EAAa;AACX,WAAKD,GAAL,CAASC,OAAT,EAAkBK,QAAlB,EAA4BrC,KAA5B,EAAmC,EAAE6C,cAAF,EAAnC;AACD;;AAED,WAAOH,KAAK8B,GAAL,EAAP;AACD;;AAEDC,WAASzC,OAAT,EAA2BK,QAA3B,EAA8CQ,cAA9C,EAA+E;AAC7E,WAAO,KAAK0B,IAAL,CAAUvC,OAAV,EAAmBK,QAAnB,EAA6BQ,cAA7B,EAA6CpD,OAAO6C,IAApD,CAAP;AACD;;AAED;;;;;;AAMAoC,UACEC,SADF,EAEE3C,OAFF,EAOE;AAAA,QAJAK,QAIA;AAAA,QAHAQ,cAGA;AAAA,QAFA7C,KAEA,uEAFgBP,OAAOuD,KAEvB;AAAA,QADAT,OACA;;AACA,QAAMiC,MAAM9B,KAAK8B,GAAL,EAAZ;;AAEA,QAAMI,WAAWJ,MAAMG,SAAvB;;AAEA,QAAIC,WAAW,IAAf,EAAqB;AACnBvC,eAASwC,YAAT,GAAyB,IAAED,QAAS,KAApC;AACD,KAFD,MAEO;AACL,UAAME,UAAUF,WAAW,IAAX,IAAmBG,KAAKC,KAAL,CAAWJ,WAAW,IAAtB,CAAnC;;AAEAvC,eAASwC,YAAT,GAAyB,IAAEC,UAAW,IAAEA,OAAQ,SAArB,GAA+B,EAAG,KADlDF,WAAYE,UAAU,IACiC,KAAlE;AACD;;AAEDzC,aAAS4C,MAAT,GAAkBL,QAAlB;AACA,SAAK7C,GAAL,CAASC,OAAT,EAAkBK,QAAlB,EAA4BrC,KAA5B,eAAwCuC,OAAxC,IAAiDM,cAAjD;AACD;;AAED;;;AAGAqC,cAAYX,IAAZ,EAA0BvC,OAA1B,EAA2CK,QAA3C,EAA8DQ,cAA9D,EAAuF;AACrF,SAAK6B,OAAL,CAAaH,IAAb,EAAmBvC,OAAnB,EAA4BK,QAA5B,EAAsCQ,cAAtC,EAAsDpD,OAAO6C,IAA7D;AACD;;AAED;;;AAGA6C,qBAAmBZ,IAAnB,EAAiCvC,OAAjC,EAAkDK,QAAlD,EAAqEQ,cAArE,EAA8F;AAC5F,SAAK6B,OAAL,CAAaH,IAAb,EAAmBvC,OAAnB,EAA4BK,QAA5B,EAAsCQ,cAAtC,EAAsDpD,OAAO6C,IAA7D,EAAmE;AACjE2B,cAAQ,GADyD;AAEjEC;AAFiE,KAAnE;AAID;;AAED;;;;;;;;;;;;AAYAkB,QAAMC,EAAN,EAAoBhD,QAApB,EAAuCQ,cAAvC,EAAgE;AAC9DR;AACEiD,oBAAcD,GAAGhC;AADnB,OAEKhB,QAFL;AAIA,SAAKN,GAAL,CAAS,OAAT,EAAkBM,QAAlB,EAA4B5C,OAAOqD,KAAnC,EAA0C,EAAED,cAAF,EAA1C;AACD;;AAED;;;;;;;;;;;;AAYA0C,OAAKF,EAAL,EAAmBhD,QAAnB,EAAsCQ,cAAtC,EAA+D;AAC7DR;AACEiD,oBAAcD,GAAGhC;AADnB,OAEKhB,QAFL;AAIA,SAAKN,GAAL,CAAS,MAAT,EAAiBM,QAAjB,EAA2B5C,OAAOqD,KAAlC,EAAyC,EAAED,cAAF,EAAzC;AACD;;AAED;;;;;;;;;;;;;;;;;;AAkBA2C,OACEH,EADF,EAEEhD,QAFF,EAGEQ,cAHF,EAIE4C,QAJF,EAKE;AACA,QAAI,OAAOpD,QAAP,KAAoB,UAAxB,EAAoC;AAClCoD,iBAAWpD,QAAX;AACAA,iBAAWG,SAAX;AACD,KAHD,MAGO,IAAI,OAAOK,cAAP,KAA0B,UAA9B,EAA0C;AAC/C4C,iBAAW5C,cAAX;AACAA,uBAAiBL,SAAjB;AACD;;AAED,SAAK4C,KAAL,CAAWC,EAAX,EAAehD,QAAf,EAAyBQ,cAAzB;AACA4C;AACA,SAAKF,IAAL,CAAUF,EAAV;AACD;AA/ZyB","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/index.js"],"names":["levels","global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","handlers","processors","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","key","level","filter","handler","minLevel","isHandling","getConfigForLoggerRecord","recordLevel","Logger","constructor","displayName","includes","warn","replace","getHandlersAndProcessors","getConfig","child","childSuffixKey","childDisplayName","context","logger","setContext","_context","extendsContext","extendedContext","Object","assign","addRecord","record","length","ERROR","console","log","message","forEach","process","some","handle","metadata","INFO","options","undefined","datetime","Date","extra","trace","metadataStyles","TRACE","debug","DEBUG","info","WARN","error","Error","name","alert","ALERT","fatal","FATAL","inspectValue","value","inspectVar","varName","varValue","success","infoSuccess","symbol","styles","debugSuccess","fail","infoFail","debugFail","time","now","infoTime","timeEnd","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","infoTimeEnd","infoSuccessTimeEnd","enter","fn","functionName","exit","wrap","callback"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: ?string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file diff --git a/packages/nightingale-logger/lib-webpack/index.js.map b/packages/nightingale-logger/lib-webpack/index.js.map index aec0936d7..273ceacc1 100644 --- a/packages/nightingale-logger/lib-webpack/index.js.map +++ b/packages/nightingale-logger/lib-webpack/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.js"],"names":["levels","global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","handlers","processors","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","key","level","filter","handler","minLevel","isHandling","getConfigForLoggerRecord","recordLevel","Logger","displayName","includes","warn","replace","childSuffixKey","childDisplayName","context","logger","setContext","_context","extendedContext","Object","assign","record","getHandlersAndProcessors","length","ERROR","console","log","message","forEach","process","some","handle","metadata","INFO","options","undefined","datetime","Date","extra","addRecord","metadataStyles","TRACE","DEBUG","WARN","Error","error","name","ALERT","FATAL","value","varName","varValue","infoSuccess","symbol","styles","infoFail","now","time","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","timeEnd","fn","functionName","callback","enter","exit"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/index.js"],"names":["levels","global","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","handlers","processors","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","key","level","filter","handler","minLevel","isHandling","getConfigForLoggerRecord","recordLevel","Logger","displayName","includes","warn","replace","childSuffixKey","childDisplayName","context","logger","setContext","_context","extendedContext","Object","assign","record","getHandlersAndProcessors","length","ERROR","console","log","message","forEach","process","some","handle","metadata","INFO","options","undefined","datetime","Date","extra","addRecord","metadataStyles","TRACE","DEBUG","WARN","Error","error","name","ALERT","FATAL","value","varName","varValue","infoSuccess","symbol","styles","infoFail","now","time","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","timeEnd","fn","functionName","callback","enter","exit"],"mappings":"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","file":"index.js","sourcesContent":["import util from 'util';\nimport levels from 'nightingale-levels';\n\ntype RecordType = {\n level: number,\n key: string,\n displayName: ?string,\n datetime: Date,\n message: string,\n context: ?Object,\n metadata: ?Object,\n extra: ?Object,\n};\n\ntype HandlerType = {\n minLevel: number,\n isHandling: ?() => boolean,\n handle: ?(record: RecordType) => boolean,\n};\n\ntype ProcessorType = (record: RecordType) => void;\n\ntype ConfigForLoggerType = {\n handlers: Array,\n processors: Array,\n};\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = function (): ConfigForLoggerType {\n return { handlers: [], processors: [] };\n };\n}\n\nif (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n (key: string, level: number): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(handler => (\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))\n )),\n processors,\n };\n }\n );\n}\n\n\n/** @private */\nfunction getConfigForLoggerRecord(key: ?string, recordLevel: number): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel);\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport default class Logger {\n key: string;\n displayName: ?string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName: ?string) {\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n key = key.replace(/\\./g, ':');\n }\n this.key = key;\n this.displayName = displayName;\n }\n\n /** @private */\n getHandlersAndProcessors(recordLevel: number): ConfigForLoggerType {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): ConfigForLoggerType {\n return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName: ?string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * const loggerMyService = new Logger('app.myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.info('starting');\n * // do stuff\n * logger.info('done');\n * }\n *\n */\n context(context: Object): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Object) {\n this._context = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Object) {\n Object.assign(this._context, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord(record: Object) {\n let { handlers, processors } = this.getHandlersAndProcessors(record.level);\n\n if (handlers.length === 0) {\n if (record.level > levels.ERROR) {\n // eslint-disable-next-line no-console\n console.log('[nightingale] no logger for > error level.', {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach(process => process(record, record.context));\n }\n\n handlers.some(handler => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log(\n message: string,\n metadata: ?Object,\n level: number = levels.INFO,\n options: ?Object = undefined,\n ) {\n let context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level: level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message: message,\n context: context || this._context,\n metadata: metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\n }\n\n\n /**\n * Log a trace message\n */\n trace(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.TRACE, { metadataStyles });\n }\n\n\n /**\n * Log a debug message\n */\n debug(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n */\n error(message: string | Error, metadata: Object = {}, metadataStyles: ?Object) {\n if (message instanceof Error) {\n metadata.error = message;\n message = `${metadata.error.name}: ${metadata.error.message}`;\n }\n this.log(message, metadata, levels.ERROR, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n */\n fatal(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.FATAL, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue(value: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n value = util.inspect(value, { depth: 6 });\n this.log(value, metadata, levels.DEBUG, { metadataStyles, styles: ['gray'] });\n }\n }\n\n /**\n * Log a debugged var\n */\n inspectVar(varName: string, varValue: any, metadata: ?Object, metadataStyles: ?Object) {\n if (BROWSER) {\n throw new Error('Not supported for the browser. Prefer `debugger;`');\n } else {\n varValue = util.inspect(varValue, { depth: 6 });\n this.log(\n `${varName} = ${varValue}`,\n metadata,\n levels.DEBUG,\n { metadataStyles, styles: ['cyan'] },\n );\n }\n }\n\n /**\n * Alias for infoSuccess\n */\n success(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✔',\n styles: ['green'],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.infoFail(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.INFO, {\n metadataStyles,\n symbol: '✖',\n styles: ['red', 'bold'],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.DEBUG, {\n metadataStyles,\n symbol: '✖',\n styles: ['red'],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time(\n message: ?string,\n metadata: ?Object,\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime(message: ?string, metadata: ?Object, metadataStyles: ?Object): number {\n return this.time(message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd(\n startTime: number,\n message: string,\n metadata: Object = {},\n metadataStyles: ?Object,\n level: number = levels.DEBUG,\n options: ?Object,\n ) {\n const now = Date.now();\n\n const diffTime = now - startTime;\n\n if (diffTime < 1000) {\n metadata.readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 && Math.floor(diffTime / 1000);\n const ms = diffTime - (seconds * 1000);\n metadata.readableTime = `${seconds ? `${seconds}s and ` : ''}${ms}ms`;\n }\n\n metadata.timeMs = diffTime;\n this.log(message, metadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd(time: number, message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.timeEnd(time, message, metadata, metadataStyles, levels.INFO, {\n symbol: '✔',\n styles: ['green', 'bold'],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n *\n */\n enter(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('enter', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n */\n exit(fn: Function, metadata: ?Object, metadataStyles: ?Object) {\n metadata = {\n functionName: fn.name,\n ...metadata,\n };\n this.log('exit', metadata, levels.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * const logger = new ConsoleLogger('myNamespace.A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n *\n * @param {Function} fn\n * @param {Object} [metadata]\n * @param {Object} [metadataStyles]\n * @param {Function} callback\n */\n wrap(\n fn: Function,\n metadata: ?Object | Function,\n metadataStyles: ?Object | Function,\n callback: Function,\n ) {\n if (typeof metadata === 'function') {\n callback = metadata;\n metadata = undefined;\n } else if (typeof metadataStyles === 'function') {\n callback = metadataStyles;\n metadataStyles = undefined;\n }\n\n this.enter(fn, metadata, metadataStyles);\n callback();\n this.exit(fn);\n }\n}\n"]} \ No newline at end of file diff --git a/packages/nightingale-logger/src/index.js b/packages/nightingale-logger/src/index.js index c88bb5f93..5332c51ef 100644 --- a/packages/nightingale-logger/src/index.js +++ b/packages/nightingale-logger/src/index.js @@ -48,7 +48,7 @@ if (!global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) { /** @private */ -function getConfigForLoggerRecord(key: string, recordLevel: number): ConfigForLoggerType { +function getConfigForLoggerRecord(key: ?string, recordLevel: number): ConfigForLoggerType { return global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(key, recordLevel); }