This repository has been archived by the owner on Mar 11, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex-browser.cjs.js.map
1 lines (1 loc) · 18.6 KB
/
index-browser.cjs.js.map
1
{"version":3,"file":"index-browser.cjs.js","sources":["../src/index.js"],"sourcesContent":["/* eslint-disable max-lines, flowtype/sort-keys */\n\nimport 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<HandlerType>,\n processors: Array<ProcessorType>,\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,\n level: number,\n ): ConfigForLoggerType => {\n const { handlers, processors } = global.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(\n handler =>\n level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\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 this.key = key;\n this.displayName = displayName;\n\n if (key.includes('.')) {\n this.warn('nightingale: `.` in key is deprecated, replace with `:`', { key, displayName });\n this.key = key.replace(/\\./g, ':');\n }\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 const { 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 const context = metadata && metadata.context;\n if (metadata) {\n delete metadata.context;\n }\n\n let record = {\n level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message,\n context: context || this._context,\n metadata,\n extra: {},\n };\n\n if (options) {\n record = Object.assign(options, record);\n }\n\n this.addRecord(record);\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 * 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 * Notice an info message\n */\n notice(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.NOTICE, { 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 critical message\n */\n critical(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.CRITICAL, { 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 alert message\n */\n alert(message: string, metadata: ?Object, metadataStyles: ?Object) {\n this.log(message, metadata, levels.ALERT, { 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(`${varName} = ${varValue}`, metadata, levels.DEBUG, {\n metadataStyles,\n 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"],"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","assign","record","getHandlersAndProcessors","length","levels","ERROR","log","message","forEach","process","some","handle","metadata","INFO","options","undefined","Date","Object","addRecord","metadataStyles","TRACE","DEBUG","NOTICE","WARN","Error","error","name","CRITICAL","FATAL","ALERT","infoSuccess","infoFail","now","time","startTime","diffTime","readableTime","seconds","Math","floor","timeMs","timeEnd","fn","callback","enter","exit"],"mappings":"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"}