UNPKG

ng2-logger

Version:

isomorphic logger for browser/server in typescript

1 lines 20.7 kB
{"version":3,"file":"ng2-logger-browser-prod.mjs","sources":["../../../tmp-libs-for-dist-prod/ng2-logger/projects/ng2-logger/src/lib/ng2-logger.ts","../../../tmp-libs-for-dist-prod/ng2-logger/projects/ng2-logger/src/lib/index.ts","../../../tmp-libs-for-dist-prod/ng2-logger/projects/ng2-logger/src/ng2-logger-browser-prod.ts"],"sourcesContent":["//#region imports\n/* */ \nimport * as stringify from 'json-stringify-safe';\nimport { json5, Helpers__NS___fixCommand, Helpers__NS__bigMaxBuffer, Helpers__NS__checkProcess, Helpers__NS__cleanExit, Helpers__NS__clearConsole, Helpers__NS__command, Helpers__NS__commandOutputAsString, Helpers__NS__commandOutputAsStringAsync, Helpers__NS__contain, Helpers__NS__createFolder, Helpers__NS__createSymLink, Helpers__NS__error, Helpers__NS__execute, Helpers__NS__exists, Helpers__NS__filesFrom, Helpers__NS__foldersFrom, Helpers__NS__getFilesFrom, Helpers__NS__getFoldersFrom, Helpers__NS__getIsBrowser, Helpers__NS__getIsElectron, Helpers__NS__getIsNode, Helpers__NS__getIsRunningInGitBash, Helpers__NS__getIsSupportedTaonTerminal, Helpers__NS__getIsVerboseMode, Helpers__NS__getIsWebSQL, Helpers__NS__getIsWsl, Helpers__NS__getStdio, Helpers__NS__hideNodeWarnings, Helpers__NS__info, Helpers__NS__isBlob, Helpers__NS__isBuffer, Helpers__NS__isClass, Helpers__NS__isExistedSymlink, Helpers__NS__isFile, Helpers__NS__isFolder, Helpers__NS__isRunningInDocker, Helpers__NS__isRunningInLinuxGraphicsCapableEnvironment, Helpers__NS__isSymlinkFileExitedOrUnexisted, Helpers__NS__isSymlinkThatMatchesUrl, Helpers__NS__isUnexistedLink, Helpers__NS__killOnPort, Helpers__NS__killProcess, Helpers__NS__killProcessByPort, Helpers__NS__linksToFolderFrom, Helpers__NS__linksToFoldersFrom, Helpers__NS__log, Helpers__NS__logError, Helpers__NS__logInfo, Helpers__NS__logProc, Helpers__NS__logSuccess, Helpers__NS__logWarn, Helpers__NS__mediaTypeFromSrc, Helpers__NS__mkdirp, Helpers__NS__modifyLineByLine, Helpers__NS__msgCacheClear, Helpers__NS__openFolderInFileExplorer, Helpers__NS__parse, Helpers__NS__pathContainLink, Helpers__NS__questionYesNo, Helpers__NS__readFile, Helpers__NS__readJson, Helpers__NS__readJson5, Helpers__NS__readJsonC, Helpers__NS__relative, Helpers__NS__remove, Helpers__NS__removeEmptyLineFromString, Helpers__NS__removeFileIfExists, Helpers__NS__removeFolderIfExists, Helpers__NS__removeIfExists, Helpers__NS__removeSlashAtBegin, Helpers__NS__removeSlashAtEnd, Helpers__NS__removeSymlinks, Helpers__NS__renderError, Helpers__NS__replaceLinesInFile, Helpers__NS__run, Helpers__NS__runAsyncIn, Helpers__NS__runSyncIn, Helpers__NS__runSyncOrAsync, Helpers__NS__sleep, Helpers__NS__stopApplication, Helpers__NS__stringify, Helpers__NS__success, Helpers__NS__taskDone, Helpers__NS__taskStarted, Helpers__NS__throwError, Helpers__NS__timeout, Helpers__NS__tryCatchError, Helpers__NS__tryReadFile, Helpers__NS__tryRemoveDir, Helpers__NS__values, Helpers__NS__wait, Helpers__NS__warn, Helpers__NS__writeFile, Helpers__NS__writeJson, Helpers__NS__writeJson5, Helpers__NS__writeJsonC, UtilsOs__NS__commandExistsAsync, UtilsOs__NS__commandExistsSync, UtilsOs__NS__detectEditor, UtilsOs__NS__drawLine, UtilsOs__NS__Editor, UtilsOs__NS__EDITOR_PROCESSES, UtilsOs__NS__EditorArr, UtilsOs__NS__EditorProcess, UtilsOs__NS__getEditorSettingsJsonPath, UtilsOs__NS__getInotifyWatchCount, UtilsOs__NS__getRealHomeDir, UtilsOs__NS__isBrowser, UtilsOs__NS__isDockerAvailable, UtilsOs__NS__isElectron, UtilsOs__NS__isNode, UtilsOs__NS__isNodeVersionOk, UtilsOs__NS__isPortInUse, UtilsOs__NS__isRunningInBrowser, UtilsOs__NS__isRunningInCliMode, UtilsOs__NS__isRunningInDocker, UtilsOs__NS__isRunningInElectron, UtilsOs__NS__isRunningInLinuxGraphicsCapableEnvironment, UtilsOs__NS__isRunningInMochaTest, UtilsOs__NS__isRunningInNode, UtilsOs__NS__isRunningInOsWithGraphicsCapableEnvironment, UtilsOs__NS__isRunningInSSRMode, UtilsOs__NS__isRunningInVscodeExtension, UtilsOs__NS__isRunningInWebSQL, UtilsOs__NS__isRunningInWindows, UtilsOs__NS__isRunningInWindowsCmd, UtilsOs__NS__isRunningInWindowsPowerShell, UtilsOs__NS__isRunningInWsl, UtilsOs__NS__isRunningNodeDebugger, UtilsOs__NS__isSSRMode, UtilsOs__NS__isVscodeExtension, UtilsOs__NS__isWebSQL, UtilsOs__NS__killAllEditor, UtilsOs__NS__openFolderInFileExplorer, UtilsOs__NS__pipxNestedPackageExists, UtilsOs__NS__pipxPackageExists, UtilsOs__NS__pythonModuleExists, UtilsOs__NS__sendNotification } from 'tnp-core/browser-prod';\n\n/* */\n/* */\n \n//#endregion\n\n//#region level\nexport enum Level {\n DATA,\n INFO,\n WARN,\n ERROR,\n SUCCESS,\n TASK_STARTED,\n TASK_DONE,\n}\n//#endregion\n\n//#region constants\nexport const LevelKey = {\n [Level.DATA]: 'data',\n [Level.INFO]: 'info',\n [Level.WARN]: 'warn',\n [Level.ERROR]: 'error',\n [Level.SUCCESS]: 'success',\n [Level.TASK_STARTED]: 'taskstarted',\n [Level.TASK_DONE]: 'taskdone',\n};\n\nexport const LevelOrder = [\n LevelKey[Level.DATA],\n LevelKey[Level.TASK_STARTED],\n LevelKey[Level.TASK_DONE],\n LevelKey[Level.INFO],\n LevelKey[Level.SUCCESS],\n LevelKey[Level.WARN],\n LevelKey[Level.ERROR],\n];\n\nconst levelIcon = {\n [Level.INFO]: 'ℹ️',\n [Level.ERROR]: '❌',\n [Level.WARN]: '⚠️',\n [Level.SUCCESS]: '✅',\n [Level.TASK_STARTED]: '🚀',\n [Level.TASK_DONE]: '🏁',\n [Level.DATA]: '',\n};\n\n//#endregion\n\n//#region log namespace\n//namespace Log\n\n //#region internal state\n\n const instances = new Map<string, Logger>();\n\n let originalConsole: Partial<typeof console> | null = null;\n let permanentlyDisabled = false;\n\n const consoleMethods = ['log', 'info', 'warn', 'error'] as const;\n\n let globalLevel: Level | null = null;\n\n //#endregion\n\n //#region settings\n\n export const Log__NS__settings = {\n mutedModules: [] as string[],\n showTimestamp: false,\n };\n\n //#endregion\n\n //#region helpers\n\n const isMutedModule = (moduleName: string): boolean => {\n if (Log__NS__settings.mutedModules.length === 0) return false;\n return !Helpers__NS__contain(Log__NS__settings.mutedModules, moduleName);\n };\n\n //#endregion\n\n //#region public api\n\n export const Log__NS__create = (moduleName: string, ...level: Level[]): Logger => {\n const log = new Logger(\n moduleName,\n getRandomColor(),\n level,\n isMutedModule(moduleName),\n undefined,\n );\n\n instances.set(moduleName, log);\n return log;\n };\n\n export const Log__NS__setGlobalLevel = (level: Level) => {\n globalLevel = level;\n };\n\n export const Log__NS__onlyLevel = (...levels: Level[]): void => {\n instances.forEach(instance => {\n instance.allowed = levels;\n });\n };\n\n export const Log__NS__onlyModules = (...modules: (string | RegExp)[]): void => {\n instances.forEach(instance => {\n const moduleName = instance.moduleName;\n\n const isAllowed = modules.some(m => {\n if (typeof m === 'string') {\n return m === moduleName;\n }\n if (m instanceof RegExp) {\n return m.test(moduleName);\n }\n return false;\n });\n\n // mute if NOT allowed\n instance.isMuted = !isAllowed;\n });\n };\n\n export const Log__NS__disableAllLogsPermanetly = () => {\n if (permanentlyDisabled) return;\n\n if (!originalConsole) {\n originalConsole = {};\n consoleMethods.forEach(m => {\n originalConsole![m] = console[m];\n });\n }\n\n consoleMethods.forEach(m => {\n console[m] = () => {};\n });\n\n permanentlyDisabled = true;\n };\n\n export const Log__NS__disableAllLogs = () => {\n if (permanentlyDisabled) return;\n\n if (!originalConsole) {\n originalConsole = {};\n consoleMethods.forEach(m => {\n originalConsole![m] = console[m];\n });\n }\n\n consoleMethods.forEach(m => {\n console[m] = () => {};\n });\n };\n\n export const Log__NS__enableAllLogs = () => {\n if (permanentlyDisabled) return;\n if (!originalConsole) return;\n\n consoleMethods.forEach(m => {\n if (originalConsole && originalConsole[m]) {\n console[m] = originalConsole[m] as any;\n }\n });\n };\n\n //#endregion\n\n //#region logger class\n\n class Logger {\n constructor(\n public readonly moduleName: string,\n public color: string,\n public allowed: Level[],\n public isMuted: boolean,\n /**\n * Set how much characters in terminal/console\n * your module name should take\n */\n public moduleWidth: number | undefined,\n ) {\n this.createLevelMethod(Level.DATA);\n this.createLevelMethod(Level.DATA, 'd');\n this.createLevelMethod(Level.INFO);\n this.createLevelMethod(Level.INFO, 'i');\n this.createLevelMethod(Level.WARN);\n this.createLevelMethod(Level.WARN, 'w');\n this.createLevelMethod(Level.ERROR);\n this.createLevelMethod(Level.ERROR, 'er');\n this.createLevelMethod(Level.SUCCESS);\n this.createLevelMethod(Level.TASK_STARTED);\n this.createLevelMethod(Level.TASK_DONE);\n }\n\n declare data: (message: string, ...data: any[]) => void;\n\n declare d: (message: string, ...data: any[]) => void;\n\n declare info: (message: string, ...data: any[]) => void;\n\n declare i: (message: string, ...data: any[]) => void;\n\n declare warn: (message: string, ...data: any[]) => void;\n\n declare w: (message: string, ...data: any[]) => void;\n\n declare error: (message: string, ...data: any[]) => void;\n\n declare er: (message: string, ...data: any[]) => void;\n\n public setLevel(l: Level) {\n this.allowed = [l];\n return this;\n }\n\n public mute() {\n this.isMuted = true;\n return this;\n }\n\n public logOnlyWhen(expression: (() => boolean) | boolean): void {\n this.isMuted =\n typeof expression === 'function' ? !expression() : !expression;\n }\n\n private createLevelMethod(level: Level, overrideMethodName?: string) {\n const methodName = overrideMethodName\n ? overrideMethodName\n : LevelKey[level];\n\n (this as any)[methodName] = (message: string, ...data: any[]) => {\n if (this.isMuted) return this;\n\n if (globalLevel !== null && level < globalLevel) {\n return this;\n }\n\n if (this.allowed.length === 0 || Helpers__NS__contain(this.allowed, level)) {\n displayMsg(\n message,\n data.length === 0 ? undefined : data,\n this.moduleName,\n this.color,\n level,\n this.moduleWidth,\n permanentlyDisabled,\n );\n }\n\n return this;\n };\n }\n }\n\n //#endregion\n\n//end of namespace Log\n\n//#endregion\n\n//#region get random color\nconst getRandomColor = (): string => {\n/* */\n/* */\n/* */\n/* */\n \n\n const letters = '0123456789ABCDEF';\n return (\n '#' +\n Array.from({ length: 6 })\n .map(() => letters[Math.floor(Math.random() * 16)])\n .join('')\n );\n};\n//#endregion\n\n//#region console log\nconst consoleLog = (data: string, level: Level): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n};\n//#endregion\n\n//#region display message\nconst displayMsg = (\n message: string,\n params: any[] | undefined,\n moduleName: string,\n moduleColor: string,\n level: Level,\n moduleWidth: number | undefined,\n permanentlyDisabled: boolean,\n): void => {\n if (permanentlyDisabled) return;\n\n if (message) {\n message = `${levelIcon[level]} ${message?.toString()}`;\n } else {\n message = levelIcon[level];\n }\n\n const timestamp = Log__NS__settings\n ? `[${new Date().toISOString()}] `\n : '';\n\n if (moduleWidth) {\n const diff = moduleWidth - moduleName.length;\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n moduleName += ' ';\n }\n }\n }\n\n //#region @browser\n if (UtilsOs__NS__isBrowser) {\n let levelColor = 'gray';\n\n switch (level) {\n case Level.INFO:\n levelColor = 'deepskyblue';\n break;\n case Level.WARN:\n levelColor = 'orange';\n break;\n case Level.ERROR:\n levelColor = 'red';\n break;\n case Level.SUCCESS:\n levelColor = 'green';\n break;\n case Level.TASK_STARTED:\n levelColor = 'purple';\n break;\n case Level.TASK_DONE:\n levelColor = 'mediumseagreen';\n break;\n case Level.DATA:\n default:\n levelColor = 'gray';\n }\n\n const moduleStyle = `background:${moduleColor};color:white;padding:2px 4px;border-radius:2px;`;\n\n const messageStyle = `color:${levelColor};font-weight:${level === Level.ERROR ? 'bold' : 'normal'};`;\n\n console.log(\n `%c ${moduleName} %c ${timestamp}${message}`,\n moduleStyle,\n messageStyle,\n ...(params ?? []),\n );\n }\n //#endregion\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n};\n//#endregion","export * from './ng2-logger';\n/* */ ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}