@wireio/shared 1.0.18 → 1.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/guards/applyTypeGuardExtras.d.ts.map +1 -0
- package/lib/cjs/guards/applyTypeGuardExtras.js +8 -0
- package/lib/cjs/guards/array.d.ts.map +1 -0
- package/lib/cjs/guards/array.js +7 -0
- package/lib/cjs/guards/assert.d.ts.map +1 -0
- package/lib/cjs/guards/assert.js +56 -0
- package/lib/cjs/guards/class.d.ts.map +1 -0
- package/lib/{guards → cjs/guards}/class.js +15 -7
- package/lib/cjs/guards/guard-tools.d.ts.map +1 -0
- package/lib/cjs/guards/guard-tools.js +55 -0
- package/lib/cjs/guards/index.d.ts.map +1 -0
- package/lib/cjs/guards/index.js +24 -0
- package/lib/cjs/guards/primitive.d.ts.map +1 -0
- package/lib/cjs/guards/primitive.js +65 -0
- package/lib/cjs/guards/types.d.ts.map +1 -0
- package/lib/cjs/guards/types.js +3 -0
- package/lib/cjs/helpers/Deferred.d.ts.map +1 -0
- package/lib/cjs/helpers/Deferred.js +115 -0
- package/lib/cjs/helpers/index.d.ts.map +1 -0
- package/lib/cjs/helpers/index.js +18 -0
- package/lib/cjs/index.d.ts.map +1 -0
- package/lib/cjs/index.js +20 -0
- package/lib/cjs/logging/Appender.d.ts.map +1 -0
- package/lib/cjs/logging/Appender.js +3 -0
- package/lib/cjs/logging/Formatter.d.ts.map +1 -0
- package/lib/cjs/logging/Formatter.js +3 -0
- package/lib/cjs/logging/InternalLogger.d.ts.map +1 -0
- package/lib/cjs/logging/InternalLogger.js +27 -0
- package/lib/cjs/logging/Level.d.ts.map +1 -0
- package/lib/cjs/logging/Level.js +16 -0
- package/lib/cjs/logging/LogRecord.d.ts.map +1 -0
- package/lib/cjs/logging/LogRecord.js +3 -0
- package/lib/cjs/logging/Logger.d.ts.map +1 -0
- package/lib/cjs/logging/Logger.js +190 -0
- package/lib/cjs/logging/LoggingManager.d.ts.map +1 -0
- package/lib/cjs/logging/LoggingManager.js +253 -0
- package/lib/cjs/logging/appenders/ConsoleAppender.d.ts.map +1 -0
- package/lib/cjs/logging/appenders/ConsoleAppender.js +78 -0
- package/lib/cjs/logging/appenders/FileAppender.d.ts.map +1 -0
- package/lib/cjs/logging/appenders/FileAppender.js +254 -0
- package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts.map +1 -0
- package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseAppender.js +145 -0
- package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts.map +1 -0
- package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.js +105 -0
- package/lib/cjs/logging/appenders/index.d.ts.map +1 -0
- package/lib/cjs/logging/appenders/index.js +20 -0
- package/lib/cjs/logging/appenders/push/PushLogRecordsAppender.d.ts.map +1 -0
- package/lib/cjs/logging/appenders/push/PushLogRecordsAppender.js +294 -0
- package/lib/cjs/logging/appenders/push/index.d.ts.map +1 -0
- package/lib/cjs/logging/appenders/push/index.js +18 -0
- package/lib/cjs/logging/context/LogContext.d.ts.map +1 -0
- package/lib/cjs/logging/context/LogContext.js +62 -0
- package/lib/cjs/logging/context/LogContextContainer.d.ts.map +1 -0
- package/lib/cjs/logging/context/LogContextContainer.js +28 -0
- package/lib/cjs/logging/context/LogContextProvider.d.ts.map +1 -0
- package/lib/cjs/logging/context/LogContextProvider.js +21 -0
- package/lib/cjs/logging/context/index.d.ts.map +1 -0
- package/lib/cjs/logging/context/index.js +20 -0
- package/lib/cjs/logging/context/providers/node/NodeContextProvider.d.ts.map +1 -0
- package/lib/cjs/logging/context/providers/node/NodeContextProvider.js +33 -0
- package/lib/cjs/logging/context/providers/node/index.d.ts.map +1 -0
- package/lib/cjs/logging/context/providers/node/index.js +4 -0
- package/lib/cjs/logging/examples/example-debug-appender.d.ts.map +1 -0
- package/lib/cjs/logging/examples/example-debug-appender.js +16 -0
- package/lib/cjs/logging/examples/example-file-appender.d.ts.map +1 -0
- package/lib/cjs/logging/examples/example-file-appender.js +18 -0
- package/lib/cjs/logging/getLogger.d.ts.map +1 -0
- package/lib/cjs/logging/getLogger.js +8 -0
- package/lib/cjs/logging/index-node.d.ts.map +1 -0
- package/lib/cjs/logging/index-node.js +19 -0
- package/lib/cjs/logging/index.d.ts.map +1 -0
- package/lib/cjs/logging/index.js +27 -0
- package/lib/cjs/logging/util.d.ts.map +1 -0
- package/lib/cjs/logging/util.js +9 -0
- package/lib/esm/guards/applyTypeGuardExtras.d.ts +3 -0
- package/lib/esm/guards/applyTypeGuardExtras.d.ts.map +1 -0
- package/lib/esm/guards/applyTypeGuardExtras.js +5 -0
- package/lib/esm/guards/array.d.ts +2 -0
- package/lib/esm/guards/array.d.ts.map +1 -0
- package/lib/esm/guards/array.js +4 -0
- package/lib/esm/guards/assert.d.ts +19 -0
- package/lib/esm/guards/assert.d.ts.map +1 -0
- package/lib/esm/guards/assert.js +50 -0
- package/lib/esm/guards/class.d.ts +27 -0
- package/lib/esm/guards/class.d.ts.map +1 -0
- package/lib/esm/guards/class.js +34 -0
- package/lib/esm/guards/guard-tools.d.ts +20 -0
- package/lib/esm/guards/guard-tools.d.ts.map +1 -0
- package/lib/esm/guards/guard-tools.js +50 -0
- package/lib/esm/guards/index.d.ts +8 -0
- package/lib/esm/guards/index.d.ts.map +1 -0
- package/lib/esm/guards/index.js +8 -0
- package/lib/esm/guards/primitive.d.ts +26 -0
- package/lib/esm/guards/primitive.d.ts.map +1 -0
- package/lib/esm/guards/primitive.js +47 -0
- package/lib/esm/guards/types.d.ts +10 -0
- package/lib/esm/guards/types.d.ts.map +1 -0
- package/lib/esm/guards/types.js +2 -0
- package/lib/esm/helpers/Deferred.d.ts +31 -0
- package/lib/esm/helpers/Deferred.d.ts.map +1 -0
- package/lib/esm/helpers/Deferred.js +111 -0
- package/lib/esm/helpers/index.d.ts +2 -0
- package/lib/esm/helpers/index.d.ts.map +1 -0
- package/lib/esm/helpers/index.js +2 -0
- package/lib/esm/index.d.ts +4 -0
- package/lib/esm/index.d.ts.map +1 -0
- package/lib/esm/index.js +4 -0
- package/lib/esm/logging/Appender.d.ts +5 -0
- package/lib/esm/logging/Appender.d.ts.map +1 -0
- package/lib/esm/logging/Appender.js +2 -0
- package/lib/esm/logging/Formatter.d.ts +3 -0
- package/lib/esm/logging/Formatter.d.ts.map +1 -0
- package/lib/esm/logging/Formatter.js +2 -0
- package/lib/esm/logging/InternalLogger.d.ts +5 -0
- package/lib/esm/logging/InternalLogger.d.ts.map +1 -0
- package/lib/esm/logging/InternalLogger.js +23 -0
- package/lib/esm/logging/Level.d.ts +14 -0
- package/lib/esm/logging/Level.d.ts.map +1 -0
- package/lib/esm/logging/Level.js +13 -0
- package/lib/esm/logging/LogRecord.d.ts +19 -0
- package/lib/esm/logging/LogRecord.d.ts.map +1 -0
- package/lib/esm/logging/LogRecord.js +2 -0
- package/lib/esm/logging/Logger.d.ts +81 -0
- package/lib/esm/logging/Logger.d.ts.map +1 -0
- package/lib/esm/logging/Logger.js +184 -0
- package/lib/esm/logging/LoggingManager.d.ts +131 -0
- package/lib/esm/logging/LoggingManager.d.ts.map +1 -0
- package/lib/esm/logging/LoggingManager.js +248 -0
- package/lib/esm/logging/appenders/ConsoleAppender.d.ts +55 -0
- package/lib/esm/logging/appenders/ConsoleAppender.d.ts.map +1 -0
- package/lib/esm/logging/appenders/ConsoleAppender.js +72 -0
- package/lib/esm/logging/appenders/FileAppender.d.ts +65 -0
- package/lib/esm/logging/appenders/FileAppender.d.ts.map +1 -0
- package/lib/esm/logging/appenders/FileAppender.js +214 -0
- package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts +28 -0
- package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts.map +1 -0
- package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseAppender.js +138 -0
- package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts +29 -0
- package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts.map +1 -0
- package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.js +98 -0
- package/lib/esm/logging/appenders/index.d.ts +4 -0
- package/lib/esm/logging/appenders/index.d.ts.map +1 -0
- package/lib/esm/logging/appenders/index.js +4 -0
- package/lib/esm/logging/appenders/push/PushLogRecordsAppender.d.ts +76 -0
- package/lib/esm/logging/appenders/push/PushLogRecordsAppender.d.ts.map +1 -0
- package/lib/esm/logging/appenders/push/PushLogRecordsAppender.js +286 -0
- package/lib/esm/logging/appenders/push/index.d.ts +2 -0
- package/lib/esm/logging/appenders/push/index.d.ts.map +1 -0
- package/lib/esm/logging/appenders/push/index.js +2 -0
- package/lib/esm/logging/context/LogContext.d.ts +48 -0
- package/lib/esm/logging/context/LogContext.d.ts.map +1 -0
- package/lib/esm/logging/context/LogContext.js +58 -0
- package/lib/esm/logging/context/LogContextContainer.d.ts +9 -0
- package/lib/esm/logging/context/LogContextContainer.d.ts.map +1 -0
- package/lib/esm/logging/context/LogContextContainer.js +25 -0
- package/lib/esm/logging/context/LogContextProvider.d.ts +24 -0
- package/lib/esm/logging/context/LogContextProvider.d.ts.map +1 -0
- package/lib/esm/logging/context/LogContextProvider.js +18 -0
- package/lib/esm/logging/context/index.d.ts +4 -0
- package/lib/esm/logging/context/index.d.ts.map +1 -0
- package/lib/esm/logging/context/index.js +4 -0
- package/lib/esm/logging/context/providers/node/NodeContextProvider.d.ts +2 -0
- package/lib/esm/logging/context/providers/node/NodeContextProvider.d.ts.map +1 -0
- package/lib/esm/logging/context/providers/node/NodeContextProvider.js +31 -0
- package/lib/esm/logging/context/providers/node/index.d.ts +3 -0
- package/lib/esm/logging/context/providers/node/index.d.ts.map +1 -0
- package/lib/esm/logging/context/providers/node/index.js +2 -0
- package/lib/esm/logging/examples/example-debug-appender.d.ts +2 -0
- package/lib/esm/logging/examples/example-debug-appender.d.ts.map +1 -0
- package/lib/esm/logging/examples/example-debug-appender.js +14 -0
- package/lib/esm/logging/examples/example-file-appender.d.ts +2 -0
- package/lib/esm/logging/examples/example-file-appender.d.ts.map +1 -0
- package/lib/esm/logging/examples/example-file-appender.js +16 -0
- package/lib/esm/logging/getLogger.d.ts +3 -0
- package/lib/esm/logging/getLogger.d.ts.map +1 -0
- package/lib/esm/logging/getLogger.js +5 -0
- package/lib/esm/logging/index-node.d.ts +3 -0
- package/lib/esm/logging/index-node.d.ts.map +1 -0
- package/lib/esm/logging/index-node.js +3 -0
- package/lib/esm/logging/index.d.ts +11 -0
- package/lib/esm/logging/index.d.ts.map +1 -0
- package/lib/esm/logging/index.js +11 -0
- package/lib/esm/logging/util.d.ts +3 -0
- package/lib/esm/logging/util.d.ts.map +1 -0
- package/lib/esm/logging/util.js +6 -0
- package/lib/test-cjs/guards/array.test.d.ts +2 -0
- package/lib/test-cjs/guards/array.test.d.ts.map +1 -0
- package/lib/test-cjs/guards/array.test.js +33 -0
- package/lib/test-cjs/guards/array.test.js.map +1 -0
- package/lib/test-cjs/guards/assert.test.d.ts +2 -0
- package/lib/test-cjs/guards/assert.test.d.ts.map +1 -0
- package/lib/test-cjs/guards/assert.test.js +80 -0
- package/lib/test-cjs/guards/assert.test.js.map +1 -0
- package/lib/test-cjs/guards/class.test.d.ts +2 -0
- package/lib/test-cjs/guards/class.test.d.ts.map +1 -0
- package/lib/test-cjs/guards/class.test.js +78 -0
- package/lib/test-cjs/guards/class.test.js.map +1 -0
- package/lib/test-cjs/guards/guard-tools.test.d.ts +2 -0
- package/lib/test-cjs/guards/guard-tools.test.d.ts.map +1 -0
- package/lib/test-cjs/guards/guard-tools.test.js +68 -0
- package/lib/test-cjs/guards/guard-tools.test.js.map +1 -0
- package/lib/test-cjs/guards/primitive.test.d.ts +2 -0
- package/lib/test-cjs/guards/primitive.test.d.ts.map +1 -0
- package/lib/test-cjs/guards/primitive.test.js +238 -0
- package/lib/test-cjs/guards/primitive.test.js.map +1 -0
- package/lib/test-cjs/helpers/Deferred.test.d.ts +2 -0
- package/lib/test-cjs/helpers/Deferred.test.d.ts.map +1 -0
- package/lib/test-cjs/helpers/Deferred.test.js +196 -0
- package/lib/test-cjs/helpers/Deferred.test.js.map +1 -0
- package/lib/test-cjs/logging/ConsoleAppender.test.d.ts +2 -0
- package/lib/test-cjs/logging/ConsoleAppender.test.d.ts.map +1 -0
- package/lib/test-cjs/logging/ConsoleAppender.test.js +95 -0
- package/lib/test-cjs/logging/ConsoleAppender.test.js.map +1 -0
- package/lib/test-cjs/logging/Level.test.d.ts +2 -0
- package/lib/test-cjs/logging/Level.test.d.ts.map +1 -0
- package/lib/test-cjs/logging/Level.test.js +42 -0
- package/lib/test-cjs/logging/Level.test.js.map +1 -0
- package/lib/test-cjs/logging/Logger.test.d.ts +2 -0
- package/lib/test-cjs/logging/Logger.test.d.ts.map +1 -0
- package/lib/test-cjs/logging/Logger.test.js +121 -0
- package/lib/test-cjs/logging/Logger.test.js.map +1 -0
- package/lib/test-cjs/logging/LoggingManager.test.d.ts +2 -0
- package/lib/test-cjs/logging/LoggingManager.test.d.ts.map +1 -0
- package/lib/test-cjs/logging/LoggingManager.test.js +124 -0
- package/lib/test-cjs/logging/LoggingManager.test.js.map +1 -0
- package/lib/test-cjs/logging/util.test.d.ts +2 -0
- package/lib/test-cjs/logging/util.test.d.ts.map +1 -0
- package/lib/test-cjs/logging/util.test.js +48 -0
- package/lib/test-cjs/logging/util.test.js.map +1 -0
- package/lib/tsconfig.cjs.jest.tsbuildinfo +1 -0
- package/lib/tsconfig.cjs.tsbuildinfo +1 -0
- package/lib/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +18 -6
- package/lib/guards/applyTypeGuardExtras.d.ts.map +0 -1
- package/lib/guards/applyTypeGuardExtras.js +0 -5
- package/lib/guards/array.d.ts.map +0 -1
- package/lib/guards/array.js +0 -4
- package/lib/guards/assert.d.ts.map +0 -1
- package/lib/guards/assert.js +0 -50
- package/lib/guards/class.d.ts.map +0 -1
- package/lib/guards/guard-tools.d.ts.map +0 -1
- package/lib/guards/guard-tools.js +0 -50
- package/lib/guards/index.d.ts.map +0 -1
- package/lib/guards/index.js +0 -8
- package/lib/guards/primitive.d.ts.map +0 -1
- package/lib/guards/primitive.js +0 -47
- package/lib/guards/types.d.ts.map +0 -1
- package/lib/guards/types.js +0 -2
- package/lib/helpers/Deferred.d.ts.map +0 -1
- package/lib/helpers/Deferred.js +0 -111
- package/lib/helpers/index.d.ts.map +0 -1
- package/lib/helpers/index.js +0 -2
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -4
- package/lib/logging/Appender.d.ts.map +0 -1
- package/lib/logging/Appender.js +0 -2
- package/lib/logging/Formatter.d.ts.map +0 -1
- package/lib/logging/Formatter.js +0 -2
- package/lib/logging/InternalLogger.d.ts.map +0 -1
- package/lib/logging/InternalLogger.js +0 -23
- package/lib/logging/Level.d.ts.map +0 -1
- package/lib/logging/Level.js +0 -13
- package/lib/logging/LogRecord.d.ts.map +0 -1
- package/lib/logging/LogRecord.js +0 -2
- package/lib/logging/Logger.d.ts.map +0 -1
- package/lib/logging/Logger.js +0 -183
- package/lib/logging/LoggingManager.d.ts.map +0 -1
- package/lib/logging/LoggingManager.js +0 -243
- package/lib/logging/appenders/ConsoleAppender.d.ts.map +0 -1
- package/lib/logging/appenders/ConsoleAppender.js +0 -72
- package/lib/logging/appenders/FileAppender.d.ts.map +0 -1
- package/lib/logging/appenders/FileAppender.js +0 -212
- package/lib/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts.map +0 -1
- package/lib/logging/appenders/aws-firehose/AWSFirehoseAppender.js +0 -138
- package/lib/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts.map +0 -1
- package/lib/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.js +0 -98
- package/lib/logging/appenders/index.d.ts.map +0 -1
- package/lib/logging/appenders/index.js +0 -4
- package/lib/logging/appenders/push/PushLogRecordsAppender.d.ts.map +0 -1
- package/lib/logging/appenders/push/PushLogRecordsAppender.js +0 -286
- package/lib/logging/appenders/push/index.d.ts.map +0 -1
- package/lib/logging/appenders/push/index.js +0 -2
- package/lib/logging/context/LogContext.d.ts.map +0 -1
- package/lib/logging/context/LogContext.js +0 -58
- package/lib/logging/context/LogContextContainer.d.ts.map +0 -1
- package/lib/logging/context/LogContextContainer.js +0 -25
- package/lib/logging/context/LogContextProvider.d.ts.map +0 -1
- package/lib/logging/context/LogContextProvider.js +0 -18
- package/lib/logging/context/index.d.ts.map +0 -1
- package/lib/logging/context/index.js +0 -4
- package/lib/logging/context/providers/node/NodeContextProvider.d.ts.map +0 -1
- package/lib/logging/context/providers/node/NodeContextProvider.js +0 -31
- package/lib/logging/context/providers/node/index.d.ts.map +0 -1
- package/lib/logging/context/providers/node/index.js +0 -2
- package/lib/logging/examples/example-debug-appender.d.ts.map +0 -1
- package/lib/logging/examples/example-debug-appender.js +0 -14
- package/lib/logging/examples/example-file-appender.d.ts.map +0 -1
- package/lib/logging/examples/example-file-appender.js +0 -16
- package/lib/logging/getLogger.d.ts.map +0 -1
- package/lib/logging/getLogger.js +0 -5
- package/lib/logging/index-node.d.ts.map +0 -1
- package/lib/logging/index-node.js +0 -3
- package/lib/logging/index.d.ts.map +0 -1
- package/lib/logging/index.js +0 -11
- package/lib/logging/util.d.ts.map +0 -1
- package/lib/logging/util.js +0 -6
- /package/lib/{guards → cjs/guards}/applyTypeGuardExtras.d.ts +0 -0
- /package/lib/{guards → cjs/guards}/array.d.ts +0 -0
- /package/lib/{guards → cjs/guards}/assert.d.ts +0 -0
- /package/lib/{guards → cjs/guards}/class.d.ts +0 -0
- /package/lib/{guards → cjs/guards}/guard-tools.d.ts +0 -0
- /package/lib/{guards → cjs/guards}/index.d.ts +0 -0
- /package/lib/{guards → cjs/guards}/primitive.d.ts +0 -0
- /package/lib/{guards → cjs/guards}/types.d.ts +0 -0
- /package/lib/{helpers → cjs/helpers}/Deferred.d.ts +0 -0
- /package/lib/{helpers → cjs/helpers}/index.d.ts +0 -0
- /package/lib/{index.d.ts → cjs/index.d.ts} +0 -0
- /package/lib/{logging → cjs/logging}/Appender.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/Formatter.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/InternalLogger.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/Level.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/LogRecord.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/Logger.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/LoggingManager.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/appenders/ConsoleAppender.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/appenders/FileAppender.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/appenders/aws-firehose/AWSFirehoseAppender.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/appenders/index.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/appenders/push/PushLogRecordsAppender.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/appenders/push/index.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/context/LogContext.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/context/LogContextContainer.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/context/LogContextProvider.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/context/index.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/context/providers/node/NodeContextProvider.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/context/providers/node/index.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/examples/example-debug-appender.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/examples/example-file-appender.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/getLogger.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/index-node.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/index.d.ts +0 -0
- /package/lib/{logging → cjs/logging}/util.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogRecord.d.ts","sourceRoot":"","sources":["../../../src/logging/LogRecord.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAG3C,MAAM,WAAW,WAAW,CAAC,IAAI,SAAS,EAAE,GAAG,GAAG;IAChD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ;AAED,MAAM,WAAW,SAAS,CAAC,IAAI,SAAS,EAAE,GAAG,GAAG,CAAE,SAAQ,WAAW,CAAC,IAAI,CAAC;IACzE,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nUmVjb3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xvZ2dpbmcvTG9nUmVjb3JkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExldmVsS2luZCB9IGZyb20gXCIuL0xldmVsLmpzXCJcblxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ01ldGFkYXRhPERhdGEgZXh0ZW5kcyB7fSA9IGFueT4ge1xuICB1cmw/OiBzdHJpbmdcbiAgZW52Pzogc3RyaW5nXG4gIGFwcD86IHN0cmluZ1xuICBkYXRhPzogRGF0YVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ1JlY29yZDxEYXRhIGV4dGVuZHMge30gPSBhbnk+IGV4dGVuZHMgTG9nTWV0YWRhdGE8RGF0YT4ge1xuICB0aW1lc3RhbXA6IG51bWJlclxuICBjYXRlZ29yeTogc3RyaW5nXG4gIGxldmVsOiBMZXZlbEtpbmRcbiAgbWVzc2FnZTogc3RyaW5nXG4gIGFyZ3M/OiBhbnlbXVxuICB0YWdzPzogc3RyaW5nW11cbiAgZXZlbnQ/OiBzdHJpbmdcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nXG4gIGVycm9yU3RhY2s/OiBzdHJpbmdcbn1cblxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../../src/logging/Logger.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAmB,MAAM,YAAY,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,WAAW,aAAa;IAC5B,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;CAC9C;AAED,MAAM,MAAM,oBAAoB,GAAG,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,aAAa,KACpB,MAAM,CAAA;AAEX,eAAO,MAAM,4BAA4B,EAAE,oBAiB1C,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,aAGlC,CAAA;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,SAAS,GAAG,SAAS,EACpC,IAAI,EAAE,GAAG,EAAE;;;;;;;;;;;;;;EAwDZ;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,SAAS,CAAA;CAC1B;AAED,qBAAa,MAAM;IAmJf,QAAQ,CAAC,OAAO,EAAE,cAAc;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,OAAO,EAAE,aAAa;IApJjC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAE1B;IAED,IAAI,aAAa,IAAI,SAAS,CAI7B;IAED,IAAI,iBAAiB,WAIpB;IAED,gBAAgB,CAAC,eAAe,EAAE,SAAS;IAiB3C;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAC5B,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAC5D,GAAG,CACD,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,MAAM,EACf,GAAG,IAAI,EAAE,GAAG,EAAE,GACb,IAAI;IAYP;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAmB1B,QAAQ,CAAC,KAAK,YAnCD,MAAM,WAAW,GAAG,EAAE,KAAK,IAAI,CAmCI;IAChD,QAAQ,CAAC,KAAK,YApCD,MAAM,WAAW,GAAG,EAAE,KAAK,IAAI,CAoCI;IAChD,QAAQ,CAAC,IAAI,YArCA,MAAM,WAAW,GAAG,EAAE,KAAK,IAAI,CAqCE;IAC9C,QAAQ,CAAC,IAAI,YAtCA,MAAM,WAAW,GAAG,EAAE,KAAK,IAAI,CAsCE;IAC9C,QAAQ,CAAC,KAAK,YAvCD,MAAM,WAAW,GAAG,EAAE,KAAK,IAAI,CAuCI;IAChD,QAAQ,CAAC,KAAK,YAxCD,MAAM,WAAW,GAAG,EAAE,KAAK,IAAI,CAwCI;IAEhD,QAAQ,CAAC,cAAc,QA1B6B,OAAO,CA0BD;IAC1D,QAAQ,CAAC,cAAc,QA3B6B,OAAO,CA2BD;IAC1D,QAAQ,CAAC,aAAa,QA5B8B,OAAO,CA4BH;IACxD,QAAQ,CAAC,aAAa,QA7B8B,OAAO,CA6BH;IACxD,QAAQ,CAAC,cAAc,QA9B6B,OAAO,CA8BD;IAC1D,QAAQ,CAAC,cAAc,QA/B6B,OAAO,CA+BD;IAE1D,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;IASvE,WAAW,CACT,IAAI,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,EAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAU;gBAkBX,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa;IAGjC,MAAM,CAAC,cAAc,CAAC,OAAO,GAAE,OAAO,CAAC,aAAa,CAAM,GAAG,aAAa;IAO1E,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;CAOpE"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Logger = exports.defaultLoggerOptions = exports.filenameCategoryInterpolator = void 0;
|
|
4
|
+
exports.toLogRecord = toLogRecord;
|
|
5
|
+
const index_js_1 = require("../guards/index.js");
|
|
6
|
+
const prelude_ts_1 = require("@3fv/prelude-ts");
|
|
7
|
+
const lodash_1 = require("lodash");
|
|
8
|
+
const Level_js_1 = require("./Level.js");
|
|
9
|
+
const util_js_1 = require("./util.js");
|
|
10
|
+
const filenameCategoryInterpolator = (filename) => {
|
|
11
|
+
const allParts = filename.replaceAll("\\", "/").split("/");
|
|
12
|
+
const rootIndex = Math.max(...["src", "lib"].map(name => allParts.indexOf(name)));
|
|
13
|
+
const parts = rootIndex === -1 ? [allParts.pop()] : allParts.slice(rootIndex + 1);
|
|
14
|
+
const category = prelude_ts_1.Option.of(parts.join(":"))
|
|
15
|
+
.flatMap(cat => prelude_ts_1.Option.of(cat.lastIndexOf(".")).map(index => index === -1 ? cat : cat.slice(0, index)))
|
|
16
|
+
.getOrElse("unknown");
|
|
17
|
+
return category;
|
|
18
|
+
};
|
|
19
|
+
exports.filenameCategoryInterpolator = filenameCategoryInterpolator;
|
|
20
|
+
exports.defaultLoggerOptions = {
|
|
21
|
+
categoryInterpolator: exports.filenameCategoryInterpolator,
|
|
22
|
+
overrideAppenders: []
|
|
23
|
+
};
|
|
24
|
+
function toLogRecord(logger, levelOrRecord, args) {
|
|
25
|
+
const globalMetadata = logger.manager.globalMetadata;
|
|
26
|
+
let metadata = {
|
|
27
|
+
...globalMetadata
|
|
28
|
+
};
|
|
29
|
+
if ((0, index_js_1.isString)(levelOrRecord) && (0, lodash_1.isObject)(args[0])) {
|
|
30
|
+
metadata = { ...metadata, ...args.shift() };
|
|
31
|
+
}
|
|
32
|
+
if (globalMetadata?.data)
|
|
33
|
+
metadata.data = {
|
|
34
|
+
...globalMetadata.data,
|
|
35
|
+
...metadata.data
|
|
36
|
+
};
|
|
37
|
+
const errRecord = prelude_ts_1.Option.ofNullable(args.find(arg => ((0, index_js_1.isString)(arg?.message) && !!arg.stack) || arg instanceof Error)).match({
|
|
38
|
+
Some: err => ({
|
|
39
|
+
errorMessage: (0, index_js_1.getValue)(() => err.message),
|
|
40
|
+
errorStack: (0, index_js_1.getValue)(() => err.stack)
|
|
41
|
+
}),
|
|
42
|
+
None: () => ({})
|
|
43
|
+
});
|
|
44
|
+
const recordBase = (0, index_js_1.isString)(levelOrRecord)
|
|
45
|
+
? {
|
|
46
|
+
...(0, lodash_1.pick)(logger, ["category"]),
|
|
47
|
+
timestamp: Date.now(),
|
|
48
|
+
message: args[0],
|
|
49
|
+
level: levelOrRecord,
|
|
50
|
+
args: args.slice(1)
|
|
51
|
+
}
|
|
52
|
+
: levelOrRecord;
|
|
53
|
+
const record = {
|
|
54
|
+
...recordBase,
|
|
55
|
+
...errRecord,
|
|
56
|
+
...metadata,
|
|
57
|
+
timestamp: (0, index_js_1.isNumber)(recordBase.timestamp) && recordBase.timestamp > 0
|
|
58
|
+
? recordBase.timestamp
|
|
59
|
+
: Date.now()
|
|
60
|
+
};
|
|
61
|
+
if (metadata.data) {
|
|
62
|
+
record.data = {
|
|
63
|
+
...metadata.data,
|
|
64
|
+
...(recordBase.data ?? {})
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
return record;
|
|
68
|
+
}
|
|
69
|
+
class Logger {
|
|
70
|
+
manager;
|
|
71
|
+
category;
|
|
72
|
+
options;
|
|
73
|
+
state = {
|
|
74
|
+
overrideLevel: null
|
|
75
|
+
};
|
|
76
|
+
get overrideLevel() {
|
|
77
|
+
return prelude_ts_1.Option.ofNullable(this.state.overrideLevel)
|
|
78
|
+
.filter(util_js_1.isLogLevelKind) //Predicate.of<LevelKind>(isString).and(isLogLevelKind))
|
|
79
|
+
.getOrNull();
|
|
80
|
+
}
|
|
81
|
+
get overrideThreshold() {
|
|
82
|
+
return prelude_ts_1.Option.ofNullable(this.overrideLevel)
|
|
83
|
+
.map(level => Level_js_1.LevelThresholds[level])
|
|
84
|
+
.getOrNull();
|
|
85
|
+
}
|
|
86
|
+
setOverrideLevel(inOverrideLevel) {
|
|
87
|
+
const overrideLevel = (!inOverrideLevel ? null : inOverrideLevel.toLocaleLowerCase());
|
|
88
|
+
(0, index_js_1.assert)(!(0, index_js_1.isDefined)(overrideLevel) || (0, util_js_1.isLogLevelKind)(overrideLevel), `Invalid override level, must be a log level, all lower case`);
|
|
89
|
+
Object.assign(this.state, {
|
|
90
|
+
overrideLevel
|
|
91
|
+
});
|
|
92
|
+
return this;
|
|
93
|
+
}
|
|
94
|
+
log(levelOrRecord, ...args) {
|
|
95
|
+
const record = toLogRecord(this, levelOrRecord, args);
|
|
96
|
+
if (this.options.overrideAppenders.length) {
|
|
97
|
+
this.options.overrideAppenders.forEach(appender => appender.append(record));
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.manager.fire(record);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Factory for the log
|
|
105
|
+
* level functions
|
|
106
|
+
*
|
|
107
|
+
* @param {LevelKind} level
|
|
108
|
+
* @returns {(message: string, ...args: any[]) => void}
|
|
109
|
+
* @private
|
|
110
|
+
*/
|
|
111
|
+
createLevelLogger(level) {
|
|
112
|
+
const isEnabled = this.createLevelEnabled(level);
|
|
113
|
+
return (message, ...args) => {
|
|
114
|
+
if (isEnabled()) {
|
|
115
|
+
this.log(level, message, ...args);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Factory for is<Level>Enabled
|
|
121
|
+
*
|
|
122
|
+
* @param {LevelKind} level
|
|
123
|
+
* @returns {() => boolean}
|
|
124
|
+
* @private
|
|
125
|
+
*/
|
|
126
|
+
createLevelEnabled(level) {
|
|
127
|
+
return () => {
|
|
128
|
+
const { rootThreshold } = this.manager;
|
|
129
|
+
const globalOverrideThreshold = this.manager.determineThresholdOverride(this.category);
|
|
130
|
+
const categoryThresholds = (0, index_js_1.isNumber)(this.overrideThreshold)
|
|
131
|
+
? [this.overrideThreshold]
|
|
132
|
+
: [globalOverrideThreshold, rootThreshold].filter(index_js_1.isNumber);
|
|
133
|
+
const categoryThreshold = Math.min(...categoryThresholds);
|
|
134
|
+
const recordThreshold = Level_js_1.LevelThresholds[level];
|
|
135
|
+
return recordThreshold >= categoryThreshold;
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
trace = this.createLevelLogger("trace");
|
|
139
|
+
debug = this.createLevelLogger("debug");
|
|
140
|
+
info = this.createLevelLogger("info");
|
|
141
|
+
warn = this.createLevelLogger("warn");
|
|
142
|
+
error = this.createLevelLogger("error");
|
|
143
|
+
fatal = this.createLevelLogger("fatal");
|
|
144
|
+
isTraceEnabled = this.createLevelEnabled("trace");
|
|
145
|
+
isDebugEnabled = this.createLevelEnabled("debug");
|
|
146
|
+
isInfoEnabled = this.createLevelEnabled("info");
|
|
147
|
+
isWarnEnabled = this.createLevelEnabled("warn");
|
|
148
|
+
isErrorEnabled = this.createLevelEnabled("error");
|
|
149
|
+
isFatalEnabled = this.createLevelEnabled("fatal");
|
|
150
|
+
assert(test, message, ...args) {
|
|
151
|
+
const isTruthy = (0, index_js_1.isFunction)(test) ? test() : test;
|
|
152
|
+
if (isTruthy) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
this.error(message, ...args);
|
|
156
|
+
}
|
|
157
|
+
assertFatal(test, message, exitCode = 1) {
|
|
158
|
+
const isTruthy = (0, index_js_1.isFunction)(test) ? test() : test;
|
|
159
|
+
if (isTruthy) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
this.fatal("FATAL ASSERTION: ", message);
|
|
163
|
+
if (typeof process !== "undefined") {
|
|
164
|
+
process.exit(exitCode);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
console.error("FATAL ASSERTION: `process` is not defined, probably in a web browser");
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
constructor(manager, category, options) {
|
|
171
|
+
this.manager = manager;
|
|
172
|
+
this.category = category;
|
|
173
|
+
this.options = options;
|
|
174
|
+
}
|
|
175
|
+
static hydrateOptions(options = {}) {
|
|
176
|
+
return {
|
|
177
|
+
...exports.defaultLoggerOptions,
|
|
178
|
+
...options
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
static interoplateCategory(category, options) {
|
|
182
|
+
options = {
|
|
183
|
+
...exports.defaultLoggerOptions,
|
|
184
|
+
...options
|
|
185
|
+
};
|
|
186
|
+
return options.categoryInterpolator(category, options);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
exports.Logger = Logger;
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xvZ2dpbmcvTG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWtEQSxrQ0EyREM7QUE3R0QsaURBTzJCO0FBQzNCLGdEQUF3QztBQUN4QyxtQ0FBa0Q7QUFDbEQseUNBQXVEO0FBR3ZELHVDQUEwQztBQWFuQyxNQUFNLDRCQUE0QixHQUF5QixDQUNoRSxRQUFnQixFQUNoQixFQUFFO0lBQ0YsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ3hCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN0RCxDQUFBO0lBQ0QsTUFBTSxLQUFLLEdBQ1QsU0FBUyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUNyRSxNQUFNLFFBQVEsR0FBRyxtQkFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUNiLG1CQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDMUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FB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QUM7Q0FDRjtBQXRLRCx3QkFzS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhc3NlcnQsXG4gIGdldFZhbHVlLFxuICBpc1N0cmluZyxcbiAgaXNEZWZpbmVkLFxuICBpc0Z1bmN0aW9uLFxuICBpc051bWJlclxufSBmcm9tIFwiLi4vZ3VhcmRzL2luZGV4LmpzXCJcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gXCJAM2Z2L3ByZWx1ZGUtdHNcIlxuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc09iamVjdCwgcGljayB9IGZyb20gXCJsb2Rhc2hcIlxuaW1wb3J0IHsgTGV2ZWxLaW5kLCBMZXZlbFRocmVzaG9sZHMgfSBmcm9tIFwiLi9MZXZlbC5qc1wiXG5pbXBvcnQgdHlwZSB7IExvZ2dpbmdNYW5hZ2VyIH0gZnJvbSBcIi4vTG9nZ2luZ01hbmFnZXIuanNcIlxuaW1wb3J0IHR5cGUgeyBMb2dNZXRhZGF0YSwgTG9nUmVjb3JkIH0gZnJvbSBcIi4vTG9nUmVjb3JkLmpzXCJcbmltcG9ydCB7IGlzTG9nTGV2ZWxLaW5kIH0gZnJvbSBcIi4vdXRpbC5qc1wiXG5pbXBvcnQgdHlwZSB7IEFwcGVuZGVyIH0gZnJvbSBcIi4vQXBwZW5kZXIuanNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlck9wdGlvbnMge1xuICBjYXRlZ29yeUludGVycG9sYXRvcjogQ2F0ZWdvcnlJbnRlcnBvbGF0b3JcbiAgb3ZlcnJpZGVBcHBlbmRlcnM6IEFycmF5PEFwcGVuZGVyPExvZ1JlY29yZD4+XG59XG5cbmV4cG9ydCB0eXBlIENhdGVnb3J5SW50ZXJwb2xhdG9yID0gKFxuICBpbkNhdGVnb3J5OiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBMb2dnZXJPcHRpb25zXG4pID0+IHN0cmluZ1xuXG5leHBvcnQgY29uc3QgZmlsZW5hbWVDYXRlZ29yeUludGVycG9sYXRvcjogQ2F0ZWdvcnlJbnRlcnBvbGF0b3IgPSAoXG4gIGZpbGVuYW1lOiBzdHJpbmdcbikgPT4ge1xuICBjb25zdCBhbGxQYXJ0cyA9IGZpbGVuYW1lLnJlcGxhY2VBbGwoXCJcXFxcXCIsIFwiL1wiKS5zcGxpdChcIi9cIilcbiAgY29uc3Qgcm9vdEluZGV4ID0gTWF0aC5tYXgoXG4gICAgLi4uW1wic3JjXCIsIFwibGliXCJdLm1hcChuYW1lID0+IGFsbFBhcnRzLmluZGV4T2YobmFtZSkpXG4gIClcbiAgY29uc3QgcGFydHMgPVxuICAgIHJvb3RJbmRleCA9PT0gLTEgPyBbYWxsUGFydHMucG9wKCldIDogYWxsUGFydHMuc2xpY2Uocm9vdEluZGV4ICsgMSlcbiAgY29uc3QgY2F0ZWdvcnkgPSBPcHRpb24ub2YocGFydHMuam9pbihcIjpcIikpXG4gICAgLmZsYXRNYXAoY2F0ID0+XG4gICAgICBPcHRpb24ub2YoY2F0Lmxhc3RJbmRleE9mKFwiLlwiKSkubWFwKGluZGV4ID0+XG4gICAgICAgIGluZGV4ID09PSAtMSA/IGNhdCA6IGNhdC5zbGljZSgwLCBpbmRleClcbiAgICAgIClcbiAgICApXG4gICAgLmdldE9yRWxzZShcInVua25vd25cIilcbiAgcmV0dXJuIGNhdGVnb3J5XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0TG9nZ2VyT3B0aW9uczogTG9nZ2VyT3B0aW9ucyA9IHtcbiAgY2F0ZWdvcnlJbnRlcnBvbGF0b3I6IGZpbGVuYW1lQ2F0ZWdvcnlJbnRlcnBvbGF0b3IsXG4gIG92ZXJyaWRlQXBwZW5kZXJzOiBbXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9Mb2dSZWNvcmQoXG4gIGxvZ2dlcjogTG9nZ2VyLFxuICBsZXZlbE9yUmVjb3JkOiBMZXZlbEtpbmQgfCBMb2dSZWNvcmQsXG4gIGFyZ3M6IGFueVtdXG4pIHtcbiAgY29uc3QgZ2xvYmFsTWV0YWRhdGEgPSBsb2dnZXIubWFuYWdlci5nbG9iYWxNZXRhZGF0YVxuICBsZXQgbWV0YWRhdGE6IExvZ01ldGFkYXRhID0ge1xuICAgIC4uLmdsb2JhbE1ldGFkYXRhXG4gIH1cbiAgaWYgKGlzU3RyaW5nKGxldmVsT3JSZWNvcmQpICYmIGlzT2JqZWN0KGFyZ3NbMF0pKSB7XG4gICAgbWV0YWRhdGEgPSB7IC4uLm1ldGFkYXRhLCAuLi5hcmdzLnNoaWZ0KCkgfVxuICB9XG5cbiAgaWYgKGdsb2JhbE1ldGFkYXRhPy5kYXRhKVxuICAgIG1ldGFkYXRhLmRhdGEgPSB7XG4gICAgICAuLi5nbG9iYWxNZXRhZGF0YS5kYXRhLFxuICAgICAgLi4ubWV0YWRhdGEuZGF0YVxuICAgIH1cblxuICBjb25zdCBlcnJSZWNvcmQgPSBPcHRpb24ub2ZOdWxsYWJsZShcbiAgICBhcmdzLmZpbmQoXG4gICAgICBhcmcgPT4gKGlzU3RyaW5nKGFyZz8ubWVzc2FnZSkgJiYgISFhcmcuc3RhY2spIHx8IGFyZyBpbnN0YW5jZW9mIEVycm9yXG4gICAgKVxuICApLm1hdGNoKHtcbiAgICBTb21lOiBlcnIgPT4gKHtcbiAgICAgIGVycm9yTWVzc2FnZTogZ2V0VmFsdWUoKCkgPT4gZXJyLm1lc3NhZ2UpLFxuICAgICAgZXJyb3JTdGFjazogZ2V0VmFsdWUoKCkgPT4gZXJyLnN0YWNrKVxuICAgIH0pLFxuICAgIE5vbmU6ICgpID0+ICh7fSlcbiAgfSlcblxuICBjb25zdCByZWNvcmRCYXNlID0gaXNTdHJpbmcobGV2ZWxPclJlY29yZClcbiAgICA/ICh7XG4gICAgICAgIC4uLnBpY2sobG9nZ2VyLCBbXCJjYXRlZ29yeVwiXSksXG4gICAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgICAgbWVzc2FnZTogYXJnc1swXSxcbiAgICAgICAgbGV2ZWw6IGxldmVsT3JSZWNvcmQsXG4gICAgICAgIGFyZ3M6IGFyZ3Muc2xpY2UoMSlcbiAgICAgIH0gYXMgTG9nUmVjb3JkKVxuICAgIDogbGV2ZWxPclJlY29yZFxuXG4gIGNvbnN0IHJlY29yZCA9IHtcbiAgICAuLi5yZWNvcmRCYXNlLFxuICAgIC4uLmVyclJlY29yZCxcbiAgICAuLi5tZXRhZGF0YSxcbiAgICB0aW1lc3RhbXA6XG4gICAgICBpc051bWJlcihyZWNvcmRCYXNlLnRpbWVzdGFtcCkgJiYgcmVjb3JkQmFzZS50aW1lc3RhbXAgPiAwXG4gICAgICAgID8gcmVjb3JkQmFzZS50aW1lc3RhbXBcbiAgICAgICAgOiBEYXRlLm5vdygpXG4gIH1cblxuICBpZiAobWV0YWRhdGEuZGF0YSkge1xuICAgIHJlY29yZC5kYXRhID0ge1xuICAgICAgLi4ubWV0YWRhdGEuZGF0YSxcbiAgICAgIC4uLihyZWNvcmRCYXNlLmRhdGEgPz8ge30pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlY29yZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlclN0YXRlIHtcbiAgb3ZlcnJpZGVMZXZlbD86IExldmVsS2luZFxufVxuXG5leHBvcnQgY2xhc3MgTG9nZ2VyIHtcbiAgcmVhZG9ubHkgc3RhdGU6IExvZ2dlclN0YXRlID0ge1xuICAgIG92ZXJyaWRlTGV2ZWw6IG51bGxcbiAgfVxuXG4gIGdldCBvdmVycmlkZUxldmVsKCk6IExldmVsS2luZCB7XG4gICAgcmV0dXJuIE9wdGlvbi5vZk51bGxhYmxlKHRoaXMuc3RhdGUub3ZlcnJpZGVMZXZlbClcbiAgICAgIC5maWx0ZXIoaXNMb2dMZXZlbEtpbmQpIC8vUHJlZGljYXRlLm9mPExldmVsS2luZD4oaXNTdHJpbmcpLmFuZChpc0xvZ0xldmVsS2luZCkpXG4gICAgICAuZ2V0T3JOdWxsKClcbiAgfVxuXG4gIGdldCBvdmVycmlkZVRocmVzaG9sZCgpIHtcbiAgICByZXR1cm4gT3B0aW9uLm9mTnVsbGFibGUodGhpcy5vdmVycmlkZUxldmVsKVxuICAgICAgLm1hcChsZXZlbCA9PiBMZXZlbFRocmVzaG9sZHNbbGV2ZWxdKVxuICAgICAgLmdldE9yTnVsbCgpXG4gIH1cblxuICBzZXRPdmVycmlkZUxldmVsKGluT3ZlcnJpZGVMZXZlbDogTGV2ZWxLaW5kKSB7XG4gICAgY29uc3Qgb3ZlcnJpZGVMZXZlbCA9IChcbiAgICAgICFpbk92ZXJyaWRlTGV2ZWwgPyBudWxsIDogaW5PdmVycmlkZUxldmVsLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICApIGFzIExldmVsS2luZFxuXG4gICAgYXNzZXJ0KFxuICAgICAgIWlzRGVmaW5lZChvdmVycmlkZUxldmVsKSB8fCBpc0xvZ0xldmVsS2luZChvdmVycmlkZUxldmVsKSxcbiAgICAgIGBJbnZhbGlkIG92ZXJyaWRlIGxldmVsLCBtdXN0IGJlIGEgbG9nIGxldmVsLCBhbGwgbG93ZXIgY2FzZWBcbiAgICApXG5cbiAgICBPYmplY3QuYXNzaWduKHRoaXMuc3RhdGUsIHtcbiAgICAgIG92ZXJyaWRlTGV2ZWxcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBCYXNlIGxvZ2dpbmcgZnVuY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHJlY29yZFxuICAgKi9cbiAgbG9nKHJlY29yZDogTG9nUmVjb3JkKTogdm9pZFxuICBsb2cobGV2ZWw6IExldmVsS2luZCwgbWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWRcbiAgbG9nKFxuICAgIGxldmVsOiBMZXZlbEtpbmQsXG4gICAgbWV0YWRhdGE6IExvZ01ldGFkYXRhLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiB2b2lkXG4gIGxvZyhsZXZlbE9yUmVjb3JkOiBMZXZlbEtpbmQgfCBMb2dSZWNvcmQsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgY29uc3QgcmVjb3JkID0gdG9Mb2dSZWNvcmQodGhpcywgbGV2ZWxPclJlY29yZCwgYXJncylcbiAgICBpZiAodGhpcy5vcHRpb25zLm92ZXJyaWRlQXBwZW5kZXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5vcHRpb25zLm92ZXJyaWRlQXBwZW5kZXJzLmZvckVhY2goYXBwZW5kZXIgPT5cbiAgICAgICAgYXBwZW5kZXIuYXBwZW5kKHJlY29yZClcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYW5hZ2VyLmZpcmUocmVjb3JkKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3J5IGZvciB0aGUgbG9nXG4gICAqIGxldmVsIGZ1bmN0aW9uc1xuICAgKlxuICAgKiBAcGFyYW0ge0xldmVsS2luZH0gbGV2ZWxcbiAgICogQHJldHVybnMgeyhtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVMZXZlbExvZ2dlcihcbiAgICBsZXZlbDogTGV2ZWxLaW5kXG4gICk6IChtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkIHtcbiAgICBjb25zdCBpc0VuYWJsZWQgPSB0aGlzLmNyZWF0ZUxldmVsRW5hYmxlZChsZXZlbClcbiAgICByZXR1cm4gKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgIGlmIChpc0VuYWJsZWQoKSkge1xuICAgICAgICB0aGlzLmxvZyhsZXZlbCwgbWVzc2FnZSwgLi4uYXJncylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yeSBmb3IgaXM8TGV2ZWw+RW5hYmxlZFxuICAgKlxuICAgKiBAcGFyYW0ge0xldmVsS2luZH0gbGV2ZWxcbiAgICogQHJldHVybnMgeygpID0+IGJvb2xlYW59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUxldmVsRW5hYmxlZChsZXZlbDogTGV2ZWxLaW5kKTogKCkgPT4gYm9vbGVhbiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcm9vdFRocmVzaG9sZCB9ID0gdGhpcy5tYW5hZ2VyXG5cbiAgICAgIGNvbnN0IGdsb2JhbE92ZXJyaWRlVGhyZXNob2xkID0gdGhpcy5tYW5hZ2VyLmRldGVybWluZVRocmVzaG9sZE92ZXJyaWRlKFxuICAgICAgICB0aGlzLmNhdGVnb3J5XG4gICAgICApXG4gICAgICBjb25zdCBjYXRlZ29yeVRocmVzaG9sZHMgPSBpc051bWJlcih0aGlzLm92ZXJyaWRlVGhyZXNob2xkKVxuICAgICAgICA/IFt0aGlzLm92ZXJyaWRlVGhyZXNob2xkXVxuICAgICAgICA6IFtnbG9iYWxPdmVycmlkZVRocmVzaG9sZCwgcm9vdFRocmVzaG9sZF0uZmlsdGVyKGlzTnVtYmVyKVxuXG4gICAgICBjb25zdCBjYXRlZ29yeVRocmVzaG9sZCA9IE1hdGgubWluKC4uLmNhdGVnb3J5VGhyZXNob2xkcylcblxuICAgICAgY29uc3QgcmVjb3JkVGhyZXNob2xkID0gTGV2ZWxUaHJlc2hvbGRzW2xldmVsXVxuXG4gICAgICByZXR1cm4gcmVjb3JkVGhyZXNob2xkID49IGNhdGVnb3J5VGhyZXNob2xkXG4gICAgfVxuICB9XG5cbiAgcmVhZG9ubHkgdHJhY2UgPSB0aGlzLmNyZWF0ZUxldmVsTG9nZ2VyKFwidHJhY2VcIilcbiAgcmVhZG9ubHkgZGVidWcgPSB0aGlzLmNyZWF0ZUxldmVsTG9nZ2VyKFwiZGVidWdcIilcbiAgcmVhZG9ubHkgaW5mbyA9IHRoaXMuY3JlYXRlTGV2ZWxMb2dnZXIoXCJpbmZvXCIpXG4gIHJlYWRvbmx5IHdhcm4gPSB0aGlzLmNyZWF0ZUxldmVsTG9nZ2VyKFwid2FyblwiKVxuICByZWFkb25seSBlcnJvciA9IHRoaXMuY3JlYXRlTGV2ZWxMb2dnZXIoXCJlcnJvclwiKVxuICByZWFkb25seSBmYXRhbCA9IHRoaXMuY3JlYXRlTGV2ZWxMb2dnZXIoXCJmYXRhbFwiKVxuXG4gIHJlYWRvbmx5IGlzVHJhY2VFbmFibGVkID0gdGhpcy5jcmVhdGVMZXZlbEVuYWJsZWQoXCJ0cmFjZVwiKVxuICByZWFkb25seSBpc0RlYnVnRW5hYmxlZCA9IHRoaXMuY3JlYXRlTGV2ZWxFbmFibGVkKFwiZGVidWdcIilcbiAgcmVhZG9ubHkgaXNJbmZvRW5hYmxlZCA9IHRoaXMuY3JlYXRlTGV2ZWxFbmFibGVkKFwiaW5mb1wiKVxuICByZWFkb25seSBpc1dhcm5FbmFibGVkID0gdGhpcy5jcmVhdGVMZXZlbEVuYWJsZWQoXCJ3YXJuXCIpXG4gIHJlYWRvbmx5IGlzRXJyb3JFbmFibGVkID0gdGhpcy5jcmVhdGVMZXZlbEVuYWJsZWQoXCJlcnJvclwiKVxuICByZWFkb25seSBpc0ZhdGFsRW5hYmxlZCA9IHRoaXMuY3JlYXRlTGV2ZWxFbmFibGVkKFwiZmF0YWxcIilcblxuICBhc3NlcnQodGVzdDogYm9vbGVhbiB8ICgoKSA9PiBib29sZWFuKSwgbWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGlzVHJ1dGh5ID0gaXNGdW5jdGlvbih0ZXN0KSA/IHRlc3QoKSA6IHRlc3RcbiAgICBpZiAoaXNUcnV0aHkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuZXJyb3IobWVzc2FnZSwgLi4uYXJncylcbiAgfVxuXG4gIGFzc2VydEZhdGFsKFxuICAgIHRlc3Q6IGJvb2xlYW4gfCAoKCkgPT4gYm9vbGVhbiksXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGV4aXRDb2RlOiBudW1iZXIgPSAxXG4gICkge1xuICAgIGNvbnN0IGlzVHJ1dGh5ID0gaXNGdW5jdGlvbih0ZXN0KSA/IHRlc3QoKSA6IHRlc3RcbiAgICBpZiAoaXNUcnV0aHkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuZmF0YWwoXCJGQVRBTCBBU1NFUlRJT046IFwiLCBtZXNzYWdlKVxuICAgIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcHJvY2Vzcy5leGl0KGV4aXRDb2RlKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBcIkZBVEFMIEFTU0VSVElPTjogYHByb2Nlc3NgIGlzIG5vdCBkZWZpbmVkLCBwcm9iYWJseSBpbiBhIHdlYiBicm93c2VyXCJcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBtYW5hZ2VyOiBMb2dnaW5nTWFuYWdlcixcbiAgICByZWFkb25seSBjYXRlZ29yeTogc3RyaW5nLFxuICAgIHJlYWRvbmx5IG9wdGlvbnM6IExvZ2dlck9wdGlvbnNcbiAgKSB7fVxuXG4gIHN0YXRpYyBoeWRyYXRlT3B0aW9ucyhvcHRpb25zOiBQYXJ0aWFsPExvZ2dlck9wdGlvbnM+ID0ge30pOiBMb2dnZXJPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGVmYXVsdExvZ2dlck9wdGlvbnMsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGludGVyb3BsYXRlQ2F0ZWdvcnkoY2F0ZWdvcnk6IHN0cmluZywgb3B0aW9uczogTG9nZ2VyT3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICAuLi5kZWZhdWx0TG9nZ2VyT3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnMuY2F0ZWdvcnlJbnRlcnBvbGF0b3IoY2F0ZWdvcnksIG9wdGlvbnMpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoggingManager.d.ts","sourceRoot":"","sources":["../../../src/logging/LoggingManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoggingManager = exports.kEnvThresholdOverrides = void 0;
|
|
4
|
+
exports.getLoggingManager = getLoggingManager;
|
|
5
|
+
const index_js_1 = require("../guards/index.js");
|
|
6
|
+
const prelude_ts_1 = require("@3fv/prelude-ts");
|
|
7
|
+
const lodash_1 = require("lodash");
|
|
8
|
+
const ConsoleAppender_js_1 = require("./appenders/ConsoleAppender.js");
|
|
9
|
+
const Level_js_1 = require("./Level.js");
|
|
10
|
+
const Logger_js_1 = require("./Logger.js");
|
|
11
|
+
const index_js_2 = require("./context/index.js");
|
|
12
|
+
const fp_js_1 = require("lodash/fp.js");
|
|
13
|
+
function parseThresholdOverridePatterns(value, level = "debug") {
|
|
14
|
+
return value.split(",").map(s => [new RegExp(s), level]);
|
|
15
|
+
}
|
|
16
|
+
exports.kEnvThresholdOverrides = prelude_ts_1.Option.ofNullable(typeof process !== "undefined" && process.env.DEBUG_PATTERNS)
|
|
17
|
+
.filter((0, lodash_1.negate)(lodash_1.isEmpty))
|
|
18
|
+
.map(parseThresholdOverridePatterns)
|
|
19
|
+
.getOrElse([]);
|
|
20
|
+
/**
|
|
21
|
+
* Logging manager
|
|
22
|
+
*/
|
|
23
|
+
class LoggingManager {
|
|
24
|
+
loggers = new Map();
|
|
25
|
+
state = {
|
|
26
|
+
appenders: [],
|
|
27
|
+
globalMetadata: {},
|
|
28
|
+
rootLevel: Level_js_1.Level.info,
|
|
29
|
+
thresholdOverrides: exports.kEnvThresholdOverrides
|
|
30
|
+
};
|
|
31
|
+
get rootLevel() {
|
|
32
|
+
return this.state.rootLevel;
|
|
33
|
+
}
|
|
34
|
+
get globalMetadata() {
|
|
35
|
+
return this.state.globalMetadata;
|
|
36
|
+
}
|
|
37
|
+
set globalMetadata(newMetadata) {
|
|
38
|
+
this.state.globalMetadata = newMetadata ?? {};
|
|
39
|
+
}
|
|
40
|
+
set rootLevel(newRootLevel) {
|
|
41
|
+
this.state.rootLevel = newRootLevel;
|
|
42
|
+
}
|
|
43
|
+
get rootThreshold() {
|
|
44
|
+
return Level_js_1.LevelThresholds[this.rootLevel];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get the current handler
|
|
48
|
+
*
|
|
49
|
+
* @returns {Appender<Record>}
|
|
50
|
+
*/
|
|
51
|
+
get appenders() {
|
|
52
|
+
return prelude_ts_1.Option.ofNullable(this.state.appenders)
|
|
53
|
+
.filter(appenders => appenders.length > 0)
|
|
54
|
+
.getOrCall(() => {
|
|
55
|
+
this.state.appenders.push(new ConsoleAppender_js_1.ConsoleAppender());
|
|
56
|
+
return this.state.appenders;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Global threshold overrides
|
|
61
|
+
*/
|
|
62
|
+
get thresholdOverrides() {
|
|
63
|
+
return this.state.thresholdOverrides;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Update the overrides
|
|
67
|
+
*
|
|
68
|
+
* @param newOverrides
|
|
69
|
+
*/
|
|
70
|
+
set thresholdOverrides(newOverrides) {
|
|
71
|
+
this.state.thresholdOverrides = newOverrides;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Set global appenders
|
|
75
|
+
*
|
|
76
|
+
* @param {Array<Appender<Record>>} newAppenders
|
|
77
|
+
*/
|
|
78
|
+
setAppenders(...newAppenders) {
|
|
79
|
+
// WE MUTATE DO TO THE LIKELIHOOD OF SOMEONE HOLDING A REF TO THE ARRAY,
|
|
80
|
+
// CONVERT TO OBSERVABLE AT SOME POINT
|
|
81
|
+
const persistentAppenders = this.state.appenders;
|
|
82
|
+
persistentAppenders.length = 0;
|
|
83
|
+
persistentAppenders.push(...(0, lodash_1.flatten)(newAppenders));
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Add one or more appenders to existing appender set
|
|
88
|
+
*
|
|
89
|
+
* @param {Appender<Record> | Appender<Record>[]} newAppenders
|
|
90
|
+
* @returns {this<Record>}
|
|
91
|
+
*/
|
|
92
|
+
addAppenders(...newAppenders) {
|
|
93
|
+
this.state.appenders.push(...(0, lodash_1.flatten)(newAppenders));
|
|
94
|
+
return this;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Clear threshold overrides
|
|
98
|
+
*
|
|
99
|
+
* @returns {this<Record>}
|
|
100
|
+
*/
|
|
101
|
+
clearThresholdOverrides() {
|
|
102
|
+
this.state.thresholdOverrides.length = 0;
|
|
103
|
+
return this;
|
|
104
|
+
}
|
|
105
|
+
setThresholdOverrides(...overrides) {
|
|
106
|
+
this.state.thresholdOverrides.length = 0;
|
|
107
|
+
this.state.thresholdOverrides.push(...overrides);
|
|
108
|
+
return this;
|
|
109
|
+
}
|
|
110
|
+
addThresholdOverrides(...overrides) {
|
|
111
|
+
this.state.thresholdOverrides.push(...overrides);
|
|
112
|
+
return this;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get applicable current contexts
|
|
116
|
+
*
|
|
117
|
+
* @param {string} category
|
|
118
|
+
* @returns {LogContext[]}
|
|
119
|
+
*/
|
|
120
|
+
getApplicableCurrentContexts(category) {
|
|
121
|
+
return index_js_2.LogContextContainer.currentContext().filter(({ pattern }) => !pattern || pattern.test(category));
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Check for any matching threshold overrides
|
|
125
|
+
*
|
|
126
|
+
* @param category
|
|
127
|
+
*/
|
|
128
|
+
determineThresholdOverride(category) {
|
|
129
|
+
const contexts = this.getApplicableCurrentContexts(category),
|
|
130
|
+
// FIND CONFIGURED OVERRIDE LEVEL
|
|
131
|
+
overrideThreshold = prelude_ts_1.Option.ofNullable(this.thresholdOverrides.find(([match]) => (0, index_js_1.isString)(match)
|
|
132
|
+
? match === category
|
|
133
|
+
: match.test(category)))
|
|
134
|
+
.map((0, fp_js_1.nth)(1))
|
|
135
|
+
.map(level => Level_js_1.LevelThresholds[level])
|
|
136
|
+
.getOrNull(),
|
|
137
|
+
// FIND `LogContext` OVERRIDE LEVEL
|
|
138
|
+
contextThresholds = contexts
|
|
139
|
+
.filter((0, fp_js_1.flow)((0, fp_js_1.get)("thresholdLevel"), index_js_1.isString))
|
|
140
|
+
.map(({ thresholdLevel }) => Level_js_1.LevelThresholds[thresholdLevel]),
|
|
141
|
+
// IF ANY OVERRIDES, GET THE MOST VERBOSE LEVEL
|
|
142
|
+
override = prelude_ts_1.Option.ofNullable([...contextThresholds, overrideThreshold].filter(index_js_1.isNumber))
|
|
143
|
+
.filter((0, lodash_1.negate)(lodash_1.isEmpty))
|
|
144
|
+
.map(lodash_1.min)
|
|
145
|
+
.getOrNull();
|
|
146
|
+
return override;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Set the root logging level
|
|
150
|
+
*
|
|
151
|
+
* @param {LevelKind} newLevel
|
|
152
|
+
* @returns {this<Record>}
|
|
153
|
+
*/
|
|
154
|
+
setRootLevel(newLevel) {
|
|
155
|
+
this.state.rootLevel = newLevel;
|
|
156
|
+
return this;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Fire a log event, eventually
|
|
160
|
+
* invert this by making `Logger` an
|
|
161
|
+
* `EventEmitter3` and having the `LoggingManager`
|
|
162
|
+
* subscribe to `record` event
|
|
163
|
+
*
|
|
164
|
+
* @param {LogRecord<Record>} record
|
|
165
|
+
* @internal
|
|
166
|
+
*/
|
|
167
|
+
fire(record) {
|
|
168
|
+
const { category } = record, contexts = this.getApplicableCurrentContexts(category), contextAppenders = contexts.flatMap((0, fp_js_1.get)("appenders")), appenders = [...this.appenders, ...contextAppenders];
|
|
169
|
+
appenders.forEach(appender => appender.append(record));
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Get a logger from cache, if the category
|
|
173
|
+
* does not have an existing logger, then create one.
|
|
174
|
+
*
|
|
175
|
+
* @param {string} categoryOrFilename
|
|
176
|
+
* @param {Partial<LoggerOptions>} inOptions
|
|
177
|
+
* @returns {Logger}
|
|
178
|
+
*/
|
|
179
|
+
getLogger(categoryOrFilename, inOptions = {}) {
|
|
180
|
+
const options = Logger_js_1.Logger.hydrateOptions(inOptions);
|
|
181
|
+
const category = Logger_js_1.Logger.interoplateCategory(categoryOrFilename, options);
|
|
182
|
+
return prelude_ts_1.Option.ofNullable(category)
|
|
183
|
+
.map(category => this.loggers.get(category))
|
|
184
|
+
.getOrCall(() => {
|
|
185
|
+
const logger = new Logger_js_1.Logger(this, category, options);
|
|
186
|
+
this.loggers.set(category, logger);
|
|
187
|
+
return logger;
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Configure the logging manager,
|
|
192
|
+
* this function is additive, so simply calling
|
|
193
|
+
* `configure` with a single option `rootLevel`,
|
|
194
|
+
* will not affect other options like `appenders` *
|
|
195
|
+
*
|
|
196
|
+
* @param {LoggingManagerOptions<any>} options
|
|
197
|
+
* @returns {this<Record>}
|
|
198
|
+
*/
|
|
199
|
+
configure(options) {
|
|
200
|
+
if (Level_js_1.Level[options?.rootLevel]) {
|
|
201
|
+
this.setRootLevel(options.rootLevel);
|
|
202
|
+
}
|
|
203
|
+
if (options?.appenders) {
|
|
204
|
+
this.setAppenders(options.appenders);
|
|
205
|
+
}
|
|
206
|
+
if (options?.thresholdOverrides) {
|
|
207
|
+
this.addThresholdOverrides(...options.thresholdOverrides);
|
|
208
|
+
}
|
|
209
|
+
return this;
|
|
210
|
+
}
|
|
211
|
+
constructor() {
|
|
212
|
+
this.configure({});
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Singleton instance
|
|
216
|
+
*
|
|
217
|
+
* @type {LoggingManager}
|
|
218
|
+
* @private
|
|
219
|
+
*/
|
|
220
|
+
static manager;
|
|
221
|
+
/**
|
|
222
|
+
* Get logging manager and optionally provided
|
|
223
|
+
* configuration options
|
|
224
|
+
*
|
|
225
|
+
* @param {LoggingManagerOptions<Record>} options
|
|
226
|
+
* @returns {LoggingManager<Record>}
|
|
227
|
+
*/
|
|
228
|
+
static get(options = null) {
|
|
229
|
+
if (!this.manager) {
|
|
230
|
+
this.manager = new LoggingManager();
|
|
231
|
+
}
|
|
232
|
+
if (options) {
|
|
233
|
+
this.manager.configure(options);
|
|
234
|
+
}
|
|
235
|
+
return this.manager;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
exports.LoggingManager = LoggingManager;
|
|
239
|
+
function getLoggingManager() {
|
|
240
|
+
return LoggingManager.get();
|
|
241
|
+
}
|
|
242
|
+
if (prelude_ts_1.Option.try(() => process.env.NODE_ENV === "development").getOrElse(false)) {
|
|
243
|
+
;
|
|
244
|
+
[
|
|
245
|
+
typeof window !== "undefined" && window,
|
|
246
|
+
typeof global !== "undefined" && global
|
|
247
|
+
]
|
|
248
|
+
.filter(index_js_1.isObject)
|
|
249
|
+
.map(target => Object.assign(target, {
|
|
250
|
+
loggingManager: getLoggingManager()
|
|
251
|
+
}));
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nZ2luZ01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbG9nZ2luZy9Mb2dnaW5nTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFxVEEsOENBRUM7QUF2VEQsaURBQWlFO0FBQ2pFLGdEQUF3QztBQUN4QyxtQ0FBc0Q7QUFFdEQsdUVBQWdFO0FBQ2hFLHlDQUE4RDtBQUM5RCwyQ0FBbUQ7QUFFbkQsaURBQW9FO0FBQ3BFLHdDQUE2QztBQWlCN0MsU0FBUyw4QkFBOEIsQ0FDckMsS0FBYSxFQUNiLFFBQW1CLE9BQU87SUFFMUIsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFzQixDQUFDLENBQUE7QUFDL0UsQ0FBQztBQUVZLFFBQUEsc0JBQXNCLEdBQUcsbUJBQU0sQ0FBQyxVQUFVLENBQ3JELE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FDN0Q7S0FDRSxNQUFNLENBQUMsSUFBQSxlQUFNLEVBQUMsZ0JBQU8sQ0FBQyxDQUFDO0tBQ3ZCLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQztLQUNuQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7QUFFaEI7O0dBRUc7QUFDSCxNQUFhLGNBQWM7SUFDUixPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUE7SUFFbkMsS0FBSyxHQUFnQztRQUNwRCxTQUFTLEVBQUUsRUFBRTtRQUNiLGNBQWMsRUFBRSxFQUFFO1FBQ2xCLFNBQVMsRUFBRSxnQkFBSyxDQUFDLElBQUk7UUFDckIsa0JBQWtCLEVBQUUsOEJBQXNCO0tBQzNDLENBQUE7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFBO0lBQzdCLENBQUM7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QkFBaUI7SUFDL0IsT0FBTyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUE7QUFDN0IsQ0FBQztBQUVELElBQUksbUJBQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDOUUsQ0FBQztJQUFBO1FBQ0MsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU07UUFDdkMsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU07S0FDeEM7U0FDRSxNQUFNLENBQUMsbUJBQVEsQ0FBQztTQUNoQixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDWixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNwQixjQUFjLEVBQUUsaUJBQWlCLEVBQUU7S0FDcEMsQ0FBQyxDQUNILENBQUE7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdW1iZXIsIGlzT2JqZWN0LCBpc1N0cmluZyB9IGZyb20gXCIuLi9ndWFyZHMvaW5kZXguanNcIlxuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSBcIkAzZnYvcHJlbHVkZS10c1wiXG5pbXBvcnQgeyBmbGF0dGVuLCBpc0VtcHR5LCBtaW4sIG5lZ2F0ZSB9IGZyb20gXCJsb2Rhc2hcIlxuaW1wb3J0IHR5cGUgeyBBcHBlbmRlciB9IGZyb20gXCIuL0FwcGVuZGVyLmpzXCJcbmltcG9ydCB7IENvbnNvbGVBcHBlbmRlciB9IGZyb20gXCIuL2FwcGVuZGVycy9Db25zb2xlQXBwZW5kZXIuanNcIlxuaW1wb3J0IHsgTGV2ZWwsIExldmVsS2luZCwgTGV2ZWxUaHJlc2hvbGRzIH0gZnJvbSBcIi4vTGV2ZWwuanNcIlxuaW1wb3J0IHsgTG9nZ2VyLCBMb2dnZXJPcHRpb25zIH0gZnJvbSBcIi4vTG9nZ2VyLmpzXCJcbmltcG9ydCB0eXBlIHsgTG9nTWV0YWRhdGEsIExvZ1JlY29yZCB9IGZyb20gXCIuL0xvZ1JlY29yZC5qc1wiXG5pbXBvcnQgeyBMb2dDb250ZXh0LCBMb2dDb250ZXh0Q29udGFpbmVyIH0gZnJvbSBcIi4vY29udGV4dC9pbmRleC5qc1wiXG5pbXBvcnQgeyBmbG93LCBnZXQsIG50aCB9IGZyb20gXCJsb2Rhc2gvZnAuanNcIlxuXG5leHBvcnQgdHlwZSBDYXRlZ29yeU1hdGNoID0gUmVnRXhwIHwgc3RyaW5nXG5cbmV4cG9ydCB0eXBlIFRocmVzaG9sZE92ZXJyaWRlID0gW21hdGNoOiBDYXRlZ29yeU1hdGNoLCBsZXZlbDogTGV2ZWxLaW5kXVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dpbmdNYW5hZ2VyU3RhdGU8UmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkPiB7XG4gIHJvb3RMZXZlbDogTGV2ZWxLaW5kXG4gIGdsb2JhbE1ldGFkYXRhPzogTG9nTWV0YWRhdGFcbiAgYXBwZW5kZXJzOiBBcnJheTxBcHBlbmRlcjxSZWNvcmQ+PlxuICB0aHJlc2hvbGRPdmVycmlkZXM6IEFycmF5PFRocmVzaG9sZE92ZXJyaWRlPlxufVxuXG5leHBvcnQgdHlwZSBMb2dnaW5nTWFuYWdlck9wdGlvbnM8UmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkPiA9IFBhcnRpYWw8XG4gIExvZ2dpbmdNYW5hZ2VyU3RhdGU8UmVjb3JkPlxuPlxuXG5mdW5jdGlvbiBwYXJzZVRocmVzaG9sZE92ZXJyaWRlUGF0dGVybnMoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIGxldmVsOiBMZXZlbEtpbmQgPSBcImRlYnVnXCJcbik6IFRocmVzaG9sZE92ZXJyaWRlW10ge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoXCIsXCIpLm1hcChzID0+IFtuZXcgUmVnRXhwKHMpLCBsZXZlbF0gYXMgVGhyZXNob2xkT3ZlcnJpZGUpXG59XG5cbmV4cG9ydCBjb25zdCBrRW52VGhyZXNob2xkT3ZlcnJpZGVzID0gT3B0aW9uLm9mTnVsbGFibGUoXG4gIHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiICYmIHByb2Nlc3MuZW52LkRFQlVHX1BBVFRFUk5TXG4pXG4gIC5maWx0ZXIobmVnYXRlKGlzRW1wdHkpKVxuICAubWFwKHBhcnNlVGhyZXNob2xkT3ZlcnJpZGVQYXR0ZXJucylcbiAgLmdldE9yRWxzZShbXSlcblxuLyoqXG4gKiBMb2dnaW5nIG1hbmFnZXJcbiAqL1xuZXhwb3J0IGNsYXNzIExvZ2dpbmdNYW5hZ2VyPFJlY29yZCBleHRlbmRzIExvZ1JlY29yZCA9IGFueT4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcnMgPSBuZXcgTWFwPHN0cmluZywgTG9nZ2VyPigpXG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZTogTG9nZ2luZ01hbmFnZXJTdGF0ZTxSZWNvcmQ+ID0ge1xuICAgIGFwcGVuZGVyczogW10sXG4gICAgZ2xvYmFsTWV0YWRhdGE6IHt9LFxuICAgIHJvb3RMZXZlbDogTGV2ZWwuaW5mbyxcbiAgICB0aHJlc2hvbGRPdmVycmlkZXM6IGtFbnZUaHJlc2hvbGRPdmVycmlkZXNcbiAgfVxuXG4gIGdldCByb290TGV2ZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUucm9vdExldmVsXG4gIH1cblxuICBnZXQgZ2xvYmFsTWV0YWRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZ2xvYmFsTWV0YWRhdGFcbiAgfVxuXG4gIHNldCBnbG9iYWxNZXRhZGF0YShuZXdNZXRhZGF0YTogTG9nTWV0YWRhdGEpIHtcbiAgICB0aGlzLnN0YXRlLmdsb2JhbE1ldGFkYXRhID0gbmV3TWV0YWRhdGEgPz8ge31cbiAgfVxuXG4gIHNldCByb290TGV2ZWwobmV3Um9vdExldmVsOiBMZXZlbEtpbmQpIHtcbiAgICB0aGlzLnN0YXRlLnJvb3RMZXZlbCA9IG5ld1Jvb3RMZXZlbFxuICB9XG5cbiAgZ2V0IHJvb3RUaHJlc2hvbGQoKSB7XG4gICAgcmV0dXJuIExldmVsVGhyZXNob2xkc1t0aGlzLnJvb3RMZXZlbF1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgaGFuZGxlclxuICAgKlxuICAgKiBAcmV0dXJucyB7QXBwZW5kZXI8UmVjb3JkPn1cbiAgICovXG4gIGdldCBhcHBlbmRlcnMoKTogQXJyYXk8QXBwZW5kZXI8UmVjb3JkPj4ge1xuICAgIHJldHVybiBPcHRpb24ub2ZOdWxsYWJsZSh0aGlzLnN0YXRlLmFwcGVuZGVycylcbiAgICAgIC5maWx0ZXIoYXBwZW5kZXJzID0+IGFwcGVuZGVycy5sZW5ndGggPiAwKVxuICAgICAgLmdldE9yQ2FsbCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhdGUuYXBwZW5kZXJzLnB1c2gobmV3IENvbnNvbGVBcHBlbmRlcigpKVxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5hcHBlbmRlcnNcbiAgICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogR2xvYmFsIHRocmVzaG9sZCBvdmVycmlkZXNcbiAgICovXG4gIGdldCB0aHJlc2hvbGRPdmVycmlkZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUudGhyZXNob2xkT3ZlcnJpZGVzXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBvdmVycmlkZXNcbiAgICpcbiAgICogQHBhcmFtIG5ld092ZXJyaWRlc1xuICAgKi9cbiAgc2V0IHRocmVzaG9sZE92ZXJyaWRlcyhuZXdPdmVycmlkZXM6IFRocmVzaG9sZE92ZXJyaWRlW10pIHtcbiAgICB0aGlzLnN0YXRlLnRocmVzaG9sZE92ZXJyaWRlcyA9IG5ld092ZXJyaWRlc1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBnbG9iYWwgYXBwZW5kZXJzXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8QXBwZW5kZXI8UmVjb3JkPj59IG5ld0FwcGVuZGVyc1xuICAgKi9cbiAgc2V0QXBwZW5kZXJzKC4uLm5ld0FwcGVuZGVyczogQXJyYXk8QXBwZW5kZXI8UmVjb3JkPiB8IEFwcGVuZGVyPFJlY29yZD5bXT4pIHtcbiAgICAvLyBXRSBNVVRBVEUgRE8gVE8gVEhFIExJS0VMSUhPT0QgT0YgU09NRU9ORSBIT0xESU5HIEEgUkVGIFRPIFRIRSBBUlJBWSxcbiAgICAvLyBDT05WRVJUIFRPIE9CU0VSVkFCTEUgQVQgU09NRSBQT0lOVFxuICAgIGNvbnN0IHBlcnNpc3RlbnRBcHBlbmRlcnMgPSB0aGlzLnN0YXRlLmFwcGVuZGVyc1xuICAgIHBlcnNpc3RlbnRBcHBlbmRlcnMubGVuZ3RoID0gMFxuICAgIHBlcnNpc3RlbnRBcHBlbmRlcnMucHVzaCguLi5mbGF0dGVuKG5ld0FwcGVuZGVycykpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBvbmUgb3IgbW9yZSBhcHBlbmRlcnMgdG8gZXhpc3RpbmcgYXBwZW5kZXIgc2V0XG4gICAqXG4gICAqIEBwYXJhbSB7QXBwZW5kZXI8UmVjb3JkPiB8IEFwcGVuZGVyPFJlY29yZD5bXX0gbmV3QXBwZW5kZXJzXG4gICAqIEByZXR1cm5zIHt0aGlzPFJlY29yZD59XG4gICAqL1xuICBhZGRBcHBlbmRlcnMoXG4gICAgLi4ubmV3QXBwZW5kZXJzOiBBcnJheTxBcHBlbmRlcjxSZWNvcmQ+IHwgQXBwZW5kZXI8UmVjb3JkPltdPlxuICApOiB0aGlzIHtcbiAgICB0aGlzLnN0YXRlLmFwcGVuZGVycy5wdXNoKC4uLmZsYXR0ZW4obmV3QXBwZW5kZXJzKSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRocmVzaG9sZCBvdmVycmlkZXNcbiAgICpcbiAgICogQHJldHVybnMge3RoaXM8UmVjb3JkPn1cbiAgICovXG4gIGNsZWFyVGhyZXNob2xkT3ZlcnJpZGVzKCk6IHRoaXMge1xuICAgIHRoaXMuc3RhdGUudGhyZXNob2xkT3ZlcnJpZGVzLmxlbmd0aCA9IDBcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc2V0VGhyZXNob2xkT3ZlcnJpZGVzKC4uLm92ZXJyaWRlczogQXJyYXk8VGhyZXNob2xkT3ZlcnJpZGU+KSB7XG4gICAgdGhpcy5zdGF0ZS50aHJlc2hvbGRPdmVycmlkZXMubGVuZ3RoID0gMFxuICAgIHRoaXMuc3RhdGUudGhyZXNob2xkT3ZlcnJpZGVzLnB1c2goLi4ub3ZlcnJpZGVzKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBhZGRUaHJlc2hvbGRPdmVycmlkZXMoLi4ub3ZlcnJpZGVzOiBBcnJheTxUaHJlc2hvbGRPdmVycmlkZT4pIHtcbiAgICB0aGlzLnN0YXRlLnRocmVzaG9sZE92ZXJyaWRlcy5wdXNoKC4uLm92ZXJyaWRlcylcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhcHBsaWNhYmxlIGN1cnJlbnQgY29udGV4dHNcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNhdGVnb3J5XG4gICAqIEByZXR1cm5zIHtMb2dDb250ZXh0W119XG4gICAqL1xuICBnZXRBcHBsaWNhYmxlQ3VycmVudENvbnRleHRzKGNhdGVnb3J5OiBzdHJpbmcpOiBMb2dDb250ZXh0W10ge1xuICAgIHJldHVybiBMb2dDb250ZXh0Q29udGFpbmVyLmN1cnJlbnRDb250ZXh0KCkuZmlsdGVyKFxuICAgICAgKHsgcGF0dGVybiB9KSA9PiAhcGF0dGVybiB8fCBwYXR0ZXJuLnRlc3QoY2F0ZWdvcnkpXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGZvciBhbnkgbWF0Y2hpbmcgdGhyZXNob2xkIG92ZXJyaWRlc1xuICAgKlxuICAgKiBAcGFyYW0gY2F0ZWdvcnlcbiAgICovXG4gIGRldGVybWluZVRocmVzaG9sZE92ZXJyaWRlKGNhdGVnb3J5OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGNvbnN0IGNvbnRleHRzID0gdGhpcy5nZXRBcHBsaWNhYmxlQ3VycmVudENvbnRleHRzKGNhdGVnb3J5KSxcbiAgICAgIC8vIEZJTkQgQ09ORklHVVJFRCBPVkVSUklERSBMRVZFTFxuICAgICAgb3ZlcnJpZGVUaHJlc2hvbGQgPSBPcHRpb24ub2ZOdWxsYWJsZShcbiAgICAgICAgdGhpcy50aHJlc2hvbGRPdmVycmlkZXMuZmluZCgoW21hdGNoXSkgPT5cbiAgICAgICAgICBpc1N0cmluZyhtYXRjaClcbiAgICAgICAgICAgID8gbWF0Y2ggPT09IGNhdGVnb3J5XG4gICAgICAgICAgICA6IChtYXRjaCBhcyBSZWdFeHApLnRlc3QoY2F0ZWdvcnkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgICAgLm1hcChudGgoMSkpXG4gICAgICAgIC5tYXAobGV2ZWwgPT4gTGV2ZWxUaHJlc2hvbGRzW2xldmVsIGFzIExldmVsXSlcbiAgICAgICAgLmdldE9yTnVsbCgpLFxuICAgICAgLy8gRklORCBgTG9nQ29udGV4dGAgT1ZFUlJJREUgTEVWRUxcbiAgICAgIGNvbnRleHRUaHJlc2hvbGRzID0gY29udGV4dHNcbiAgICAgICAgLmZpbHRlcihmbG93KGdldChcInRocmVzaG9sZExldmVsXCIpLCBpc1N0cmluZykpXG4gICAgICAgIC5tYXAoKHsgdGhyZXNob2xkTGV2ZWwgfSkgPT4gTGV2ZWxUaHJlc2hvbGRzW3RocmVzaG9sZExldmVsXSksXG4gICAgICAvLyBJRiBBTlkgT1ZFUlJJREVTLCBHRVQgVEhFIE1PU1QgVkVSQk9TRSBMRVZFTFxuICAgICAgb3ZlcnJpZGUgPSBPcHRpb24ub2ZOdWxsYWJsZShcbiAgICAgICAgWy4uLmNvbnRleHRUaHJlc2hvbGRzLCBvdmVycmlkZVRocmVzaG9sZF0uZmlsdGVyKGlzTnVtYmVyKVxuICAgICAgKVxuICAgICAgICAuZmlsdGVyKG5lZ2F0ZShpc0VtcHR5KSlcbiAgICAgICAgLm1hcChtaW4pXG4gICAgICAgIC5nZXRPck51bGwoKVxuXG4gICAgcmV0dXJuIG92ZXJyaWRlIGFzIG51bWJlclxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcm9vdCBsb2dnaW5nIGxldmVsXG4gICAqXG4gICAqIEBwYXJhbSB7TGV2ZWxLaW5kfSBuZXdMZXZlbFxuICAgKiBAcmV0dXJucyB7dGhpczxSZWNvcmQ+fVxuICAgKi9cbiAgc2V0Um9vdExldmVsKG5ld0xldmVsOiBMZXZlbEtpbmQpOiB0aGlzIHtcbiAgICB0aGlzLnN0YXRlLnJvb3RMZXZlbCA9IG5ld0xldmVsXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlIGEgbG9nIGV2ZW50LCBldmVudHVhbGx5XG4gICAqIGludmVydCB0aGlzIGJ5IG1ha2luZyBgTG9nZ2VyYCBhblxuICAgKiBgRXZlbnRFbWl0dGVyM2AgYW5kIGhhdmluZyB0aGUgYExvZ2dpbmdNYW5hZ2VyYFxuICAgKiBzdWJzY3JpYmUgdG8gYHJlY29yZGAgZXZlbnRcbiAgICpcbiAgICogQHBhcmFtIHtMb2dSZWNvcmQ8UmVjb3JkPn0gcmVjb3JkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZmlyZShyZWNvcmQ6IExvZ1JlY29yZDxSZWNvcmQ+KSB7XG4gICAgY29uc3QgeyBjYXRlZ29yeSB9ID0gcmVjb3JkLFxuICAgICAgY29udGV4dHMgPSB0aGlzLmdldEFwcGxpY2FibGVDdXJyZW50Q29udGV4dHMoY2F0ZWdvcnkpLFxuICAgICAgY29udGV4dEFwcGVuZGVycyA9IGNvbnRleHRzLmZsYXRNYXAoZ2V0KFwiYXBwZW5kZXJzXCIpKSxcbiAgICAgIGFwcGVuZGVycyA9IFsuLi50aGlzLmFwcGVuZGVycywgLi4uY29udGV4dEFwcGVuZGVyc11cblxuICAgIGFwcGVuZGVycy5mb3JFYWNoKGFwcGVuZGVyID0+IGFwcGVuZGVyLmFwcGVuZChyZWNvcmQgYXMgUmVjb3JkKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBsb2dnZXIgZnJvbSBjYWNoZSwgaWYgdGhlIGNhdGVnb3J5XG4gICAqIGRvZXMgbm90IGhhdmUgYW4gZXhpc3RpbmcgbG9nZ2VyLCB0aGVuIGNyZWF0ZSBvbmUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjYXRlZ29yeU9yRmlsZW5hbWVcbiAgICogQHBhcmFtIHtQYXJ0aWFsPExvZ2dlck9wdGlvbnM+fSBpbk9wdGlvbnNcbiAgICogQHJldHVybnMge0xvZ2dlcn1cbiAgICovXG4gIGdldExvZ2dlcihcbiAgICBjYXRlZ29yeU9yRmlsZW5hbWU6IHN0cmluZyxcbiAgICBpbk9wdGlvbnM6IFBhcnRpYWw8TG9nZ2VyT3B0aW9ucz4gPSB7fVxuICApOiBMb2dnZXIge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBMb2dnZXIuaHlkcmF0ZU9wdGlvbnMoaW5PcHRpb25zKVxuICAgIGNvbnN0IGNhdGVnb3J5ID0gTG9nZ2VyLmludGVyb3BsYXRlQ2F0ZWdvcnkoY2F0ZWdvcnlPckZpbGVuYW1lLCBvcHRpb25zKVxuXG4gICAgcmV0dXJuIE9wdGlvbi5vZk51bGxhYmxlKGNhdGVnb3J5KVxuICAgICAgLm1hcChjYXRlZ29yeSA9PiB0aGlzLmxvZ2dlcnMuZ2V0KGNhdGVnb3J5KSlcbiAgICAgIC5nZXRPckNhbGwoKCkgPT4ge1xuICAgICAgICBjb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMsIGNhdGVnb3J5LCBvcHRpb25zKVxuICAgICAgICB0aGlzLmxvZ2dlcnMuc2V0KGNhdGVnb3J5LCBsb2dnZXIpXG4gICAgICAgIHJldHVybiBsb2dnZXJcbiAgICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIHRoZSBsb2dnaW5nIG1hbmFnZXIsXG4gICAqIHRoaXMgZnVuY3Rpb24gaXMgYWRkaXRpdmUsIHNvIHNpbXBseSBjYWxsaW5nXG4gICAqIGBjb25maWd1cmVgIHdpdGggYSBzaW5nbGUgb3B0aW9uIGByb290TGV2ZWxgLFxuICAgKiB3aWxsIG5vdCBhZmZlY3Qgb3RoZXIgb3B0aW9ucyBsaWtlIGBhcHBlbmRlcnNgICAgKlxuICAgKlxuICAgKiBAcGFyYW0ge0xvZ2dpbmdNYW5hZ2VyT3B0aW9uczxhbnk+fSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHt0aGlzPFJlY29yZD59XG4gICAqL1xuICBjb25maWd1cmUob3B0aW9uczogTG9nZ2luZ01hbmFnZXJPcHRpb25zPGFueT4pOiB0aGlzIHtcbiAgICBpZiAoTGV2ZWxbb3B0aW9ucz8ucm9vdExldmVsXSkge1xuICAgICAgdGhpcy5zZXRSb290TGV2ZWwob3B0aW9ucy5yb290TGV2ZWwpXG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnM/LmFwcGVuZGVycykge1xuICAgICAgdGhpcy5zZXRBcHBlbmRlcnMob3B0aW9ucy5hcHBlbmRlcnMpXG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnM/LnRocmVzaG9sZE92ZXJyaWRlcykge1xuICAgICAgdGhpcy5hZGRUaHJlc2hvbGRPdmVycmlkZXMoLi4ub3B0aW9ucy50aHJlc2hvbGRPdmVycmlkZXMpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jb25maWd1cmUoe30pXG4gIH1cblxuICAvKipcbiAgICogU2luZ2xldG9uIGluc3RhbmNlXG4gICAqXG4gICAqIEB0eXBlIHtMb2dnaW5nTWFuYWdlcn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIG1hbmFnZXI6IExvZ2dpbmdNYW5hZ2VyXG5cbiAgLyoqXG4gICAqIEdldCBsb2dnaW5nIG1hbmFnZXIgYW5kIG9wdGlvbmFsbHkgcHJvdmlkZWRcbiAgICogY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqXG4gICAqIEBwYXJhbSB7TG9nZ2luZ01hbmFnZXJPcHRpb25zPFJlY29yZD59IG9wdGlvbnNcbiAgICogQHJldHVybnMge0xvZ2dpbmdNYW5hZ2VyPFJlY29yZD59XG4gICAqL1xuICBzdGF0aWMgZ2V0PFJlY29yZCBleHRlbmRzIExvZ1JlY29yZCA9IGFueT4oXG4gICAgb3B0aW9uczogTG9nZ2luZ01hbmFnZXJPcHRpb25zPFJlY29yZD4gPSBudWxsXG4gICk6IExvZ2dpbmdNYW5hZ2VyPFJlY29yZD4ge1xuICAgIGlmICghdGhpcy5tYW5hZ2VyKSB7XG4gICAgICB0aGlzLm1hbmFnZXIgPSBuZXcgTG9nZ2luZ01hbmFnZXI8UmVjb3JkPigpXG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMubWFuYWdlci5jb25maWd1cmUob3B0aW9ucylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tYW5hZ2VyXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ2dpbmdNYW5hZ2VyKCk6IExvZ2dpbmdNYW5hZ2VyIHtcbiAgcmV0dXJuIExvZ2dpbmdNYW5hZ2VyLmdldCgpXG59XG5cbmlmIChPcHRpb24udHJ5KCgpID0+IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpLmdldE9yRWxzZShmYWxzZSkpIHtcbiAgO1tcbiAgICB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvdyxcbiAgICB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiICYmIGdsb2JhbFxuICBdXG4gICAgLmZpbHRlcihpc09iamVjdClcbiAgICAubWFwKHRhcmdldCA9PlxuICAgICAgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHtcbiAgICAgICAgbG9nZ2luZ01hbmFnZXI6IGdldExvZ2dpbmdNYW5hZ2VyKClcbiAgICAgIH0pXG4gICAgKVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsoleAppender.d.ts","sourceRoot":"","sources":["../../../../src/logging/appenders/ConsoleAppender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAQ7C;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,aAZG,GAAG,EAAE,KAAK,GAAG,CAkBpE;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,MAAM,SAAS,SAAS,GAAG,GAAG;IACnE,YAAY,EAAE,OAAO,CAAA;IACrB,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;CAC3C;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAAC,MAAM,SAAS,SAAS,IAAI,OAAO,CACpE,qBAAqB,CAAC,MAAM,CAAC,CAC9B,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAUlD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,qBAI3C,CAAA;AAED;;;GAGG;AACH,qBAAa,eAAe,CAC1B,MAAM,SAAS,SAAS,CACxB,YAAW,QAAQ,CAAC,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;IAEtC;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAS5B;;;;;OAKG;IACH,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;IAMhD;;;OAGG;gBACS,OAAO,GAAE,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAM;CAMlE"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConsoleAppender = exports.kDefaultConsoleAppenderConfig = exports.consoleFormatter = void 0;
|
|
4
|
+
exports.getConsoleLogBinding = getConsoleLogBinding;
|
|
5
|
+
const prelude_ts_1 = require("@3fv/prelude-ts");
|
|
6
|
+
const consoleLogBindings = new Map();
|
|
7
|
+
function getBoundConsoleFn(level) {
|
|
8
|
+
return (console[level] ?? console.log).bind(console);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get a cached console bound log function
|
|
12
|
+
*
|
|
13
|
+
* @param {LevelKind} level
|
|
14
|
+
* @returns {(...args: any[]) => any}
|
|
15
|
+
*/
|
|
16
|
+
function getConsoleLogBinding(level) {
|
|
17
|
+
if (!consoleLogBindings.has(level)) {
|
|
18
|
+
consoleLogBindings.set(level, getBoundConsoleFn(level));
|
|
19
|
+
}
|
|
20
|
+
return consoleLogBindings.get(level);
|
|
21
|
+
}
|
|
22
|
+
const consoleFormatter = ({ level, message, data, args, category, timestamp }) => [
|
|
23
|
+
`[${category}] (${level}) ${message}`,
|
|
24
|
+
...(Array.isArray(args) ? args : [args])
|
|
25
|
+
];
|
|
26
|
+
exports.consoleFormatter = consoleFormatter;
|
|
27
|
+
/**
|
|
28
|
+
* Default console config
|
|
29
|
+
* @type {ConsoleAppenderConfig}
|
|
30
|
+
*/
|
|
31
|
+
exports.kDefaultConsoleAppenderConfig = {
|
|
32
|
+
cacheEnabled: true,
|
|
33
|
+
prettyPrint: true,
|
|
34
|
+
formatter: exports.consoleFormatter
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Console appender, the simple default appender used
|
|
38
|
+
* everywhere OOB
|
|
39
|
+
*/
|
|
40
|
+
class ConsoleAppender {
|
|
41
|
+
config;
|
|
42
|
+
/**
|
|
43
|
+
* Handle log records, transform, push to ES
|
|
44
|
+
*
|
|
45
|
+
* @param record
|
|
46
|
+
*/
|
|
47
|
+
append(record) {
|
|
48
|
+
const { level, message, data, args, category, timestamp } = record;
|
|
49
|
+
const { formatter = exports.consoleFormatter } = this.config;
|
|
50
|
+
prelude_ts_1.Option.ofNullable(formatter(record)).map(result => {
|
|
51
|
+
const args = Array.isArray(result) ? result : [result];
|
|
52
|
+
this.write(level, ...args);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Write args to console
|
|
57
|
+
*
|
|
58
|
+
* @param level
|
|
59
|
+
* @param args
|
|
60
|
+
*/
|
|
61
|
+
write(level, ...args) {
|
|
62
|
+
prelude_ts_1.Option.ofNullable(console[level])
|
|
63
|
+
.orCall(() => prelude_ts_1.Option.ofNullable(console.log))
|
|
64
|
+
.map((fn) => fn.apply(console, args));
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
*
|
|
68
|
+
* @param {Partial<ConsoleAppenderOptions<Record>>} options
|
|
69
|
+
*/
|
|
70
|
+
constructor(options = {}) {
|
|
71
|
+
this.config = {
|
|
72
|
+
...exports.kDefaultConsoleAppenderConfig,
|
|
73
|
+
...options
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.ConsoleAppender = ConsoleAppender;
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc29sZUFwcGVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xvZ2dpbmcvYXBwZW5kZXJzL0NvbnNvbGVBcHBlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFrQkEsb0RBTUM7QUF0QkQsZ0RBQXdDO0FBSXhDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQXNDLENBQUE7QUFFeEUsU0FBUyxpQkFBaUIsQ0FBQyxLQUFnQjtJQUN6QyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDdEQsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsS0FBZ0I7SUFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25DLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUN6RCxDQUFDO0lBRUQsT0FBTyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDdEMsQ0FBQztBQWtCTSxNQUFNLGdCQUFnQixHQUEwQixDQUFDLEVBQ3RELEtBQUssRUFDTCxPQUFPLEVBQ1AsSUFBSSxFQUNKLElBQUksRUFDSixRQUFRLEVBQ1IsU0FBUyxFQUNWLEVBQUUsRUFBRSxDQUFDO0lBQ0osSUFBSSxRQUFRLE9BQU8sS0FBSyxNQUFNLE9BQU8sRUFBRTtJQUN2QyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ3pDLENBQUE7QUFWWSxRQUFBLGdCQUFnQixvQkFVNUI7QUFFRDs7O0dBR0c7QUFDVSxRQUFBLDZCQUE2QixHQUEwQjtJQUNsRSxZQUFZLEVBQUUsSUFBSTtJQUNsQixXQUFXLEVBQUUsSUFBSTtJQUNqQixTQUFTLEVBQUUsd0JBQWdCO0NBQzVCLENBQUE7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLGVBQWU7SUFHakIsTUFBTSxDQUF1QjtJQUV0Qzs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE1BQWM7UUFDbkIsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxDQUFBO1FBQ2xFLE1BQU0sRUFBRSxTQUFTLEdBQUcsd0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFBO1FBQ3BELG1CQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUM1QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLEtBQUssQ0FBQyxLQUFnQixFQUFFLEdBQUcsSUFBVztRQUM5QyxtQkFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDOUIsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM1QyxHQUFHLENBQUMsQ0FBQyxFQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksVUFBbUQsRUFBRTtRQUMvRCxJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osR0FBRyxxQ0FBNkI7WUFDaEMsR0FBRyxPQUFPO1NBQ1gsQ0FBQTtJQUNILENBQUM7Q0FDRjtBQXpDRCwwQ0F5Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExvZ1JlY29yZCB9IGZyb20gXCIuLi9Mb2dSZWNvcmRcIlxuaW1wb3J0IHR5cGUgeyBBcHBlbmRlciB9IGZyb20gXCIuLi9BcHBlbmRlclwiXG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tIFwiQDNmdi9wcmVsdWRlLXRzXCJcbmltcG9ydCB0eXBlIHsgTGV2ZWxLaW5kIH0gZnJvbSBcIi4uL0xldmVsXCJcbmltcG9ydCB0eXBlIHsgRm9ybWF0dGVyIH0gZnJvbSBcIi4uL0Zvcm1hdHRlclwiXG5cbmNvbnN0IGNvbnNvbGVMb2dCaW5kaW5ncyA9IG5ldyBNYXA8TGV2ZWxLaW5kLCAoLi4uYXJnczogYW55W10pID0+IGFueT4oKVxuXG5mdW5jdGlvbiBnZXRCb3VuZENvbnNvbGVGbihsZXZlbDogTGV2ZWxLaW5kKSB7XG4gIHJldHVybiAoY29uc29sZVtsZXZlbF0gPz8gY29uc29sZS5sb2cpLmJpbmQoY29uc29sZSlcbn1cblxuLyoqXG4gKiBHZXQgYSBjYWNoZWQgY29uc29sZSBib3VuZCBsb2cgZnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge0xldmVsS2luZH0gbGV2ZWxcbiAqIEByZXR1cm5zIHsoLi4uYXJnczogYW55W10pID0+IGFueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnNvbGVMb2dCaW5kaW5nKGxldmVsOiBMZXZlbEtpbmQpIHtcbiAgaWYgKCFjb25zb2xlTG9nQmluZGluZ3MuaGFzKGxldmVsKSkge1xuICAgIGNvbnNvbGVMb2dCaW5kaW5ncy5zZXQobGV2ZWwsIGdldEJvdW5kQ29uc29sZUZuKGxldmVsKSlcbiAgfVxuXG4gIHJldHVybiBjb25zb2xlTG9nQmluZGluZ3MuZ2V0KGxldmVsKVxufVxuXG4vKipcbiAqIENvbnNvbGVBcHBlbmRlciBDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc29sZUFwcGVuZGVyQ29uZmlnPFJlY29yZCBleHRlbmRzIExvZ1JlY29yZCA9IGFueT4ge1xuICBjYWNoZUVuYWJsZWQ6IGJvb2xlYW5cbiAgcHJldHR5UHJpbnQ6IGJvb2xlYW5cbiAgZm9ybWF0dGVyPzogRm9ybWF0dGVyPHN0cmluZyB8IEFycmF5PGFueT4+XG59XG5cbi8qKlxuICogUGFydGlhbCBvZiBjb25maWcsIHVzZWQgZm9yIHNob3J0ZW5pbmcgaW5zdGVhZCBvZiBQYXJ0aWFsPC4uLj5cbiAqL1xuZXhwb3J0IHR5cGUgQ29uc29sZUFwcGVuZGVyT3B0aW9uczxSZWNvcmQgZXh0ZW5kcyBMb2dSZWNvcmQ+ID0gUGFydGlhbDxcbiAgQ29uc29sZUFwcGVuZGVyQ29uZmlnPFJlY29yZD5cbj5cblxuZXhwb3J0IGNvbnN0IGNvbnNvbGVGb3JtYXR0ZXI6IEZvcm1hdHRlcjxBcnJheTxhbnk+PiA9ICh7XG4gIGxldmVsLFxuICBtZXNzYWdlLFxuICBkYXRhLFxuICBhcmdzLFxuICBjYXRlZ29yeSxcbiAgdGltZXN0YW1wXG59KSA9PiBbXG4gIGBbJHtjYXRlZ29yeX1dICAoJHtsZXZlbH0pICAke21lc3NhZ2V9YCxcbiAgLi4uKEFycmF5LmlzQXJyYXkoYXJncykgPyBhcmdzIDogW2FyZ3NdKVxuXVxuXG4vKipcbiAqIERlZmF1bHQgY29uc29sZSBjb25maWdcbiAqIEB0eXBlIHtDb25zb2xlQXBwZW5kZXJDb25maWd9XG4gKi9cbmV4cG9ydCBjb25zdCBrRGVmYXVsdENvbnNvbGVBcHBlbmRlckNvbmZpZzogQ29uc29sZUFwcGVuZGVyQ29uZmlnID0ge1xuICBjYWNoZUVuYWJsZWQ6IHRydWUsXG4gIHByZXR0eVByaW50OiB0cnVlLFxuICBmb3JtYXR0ZXI6IGNvbnNvbGVGb3JtYXR0ZXJcbn1cblxuLyoqXG4gKiBDb25zb2xlIGFwcGVuZGVyLCB0aGUgc2ltcGxlIGRlZmF1bHQgYXBwZW5kZXIgdXNlZFxuICogZXZlcnl3aGVyZSBPT0JcbiAqL1xuZXhwb3J0IGNsYXNzIENvbnNvbGVBcHBlbmRlcjxcbiAgUmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkXG4+IGltcGxlbWVudHMgQXBwZW5kZXI8UmVjb3JkPiB7XG4gIHJlYWRvbmx5IGNvbmZpZzogQ29uc29sZUFwcGVuZGVyQ29uZmlnXG5cbiAgLyoqXG4gICAqIEhhbmRsZSBsb2cgcmVjb3JkcywgdHJhbnNmb3JtLCBwdXNoIHRvIEVTXG4gICAqXG4gICAqIEBwYXJhbSByZWNvcmRcbiAgICovXG4gIGFwcGVuZChyZWNvcmQ6IFJlY29yZCk6IHZvaWQge1xuICAgIGNvbnN0IHsgbGV2ZWwsIG1lc3NhZ2UsIGRhdGEsIGFyZ3MsIGNhdGVnb3J5LCB0aW1lc3RhbXAgfSA9IHJlY29yZFxuICAgIGNvbnN0IHsgZm9ybWF0dGVyID0gY29uc29sZUZvcm1hdHRlciB9ID0gdGhpcy5jb25maWdcbiAgICBPcHRpb24ub2ZOdWxsYWJsZShmb3JtYXR0ZXIocmVjb3JkKSkubWFwKHJlc3VsdCA9PiB7XG4gICAgICBjb25zdCBhcmdzID0gQXJyYXkuaXNBcnJheShyZXN1bHQpID8gcmVzdWx0IDogW3Jlc3VsdF1cbiAgICAgIHRoaXMud3JpdGUobGV2ZWwsIC4uLmFyZ3MpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSBhcmdzIHRvIGNvbnNvbGVcbiAgICpcbiAgICogQHBhcmFtIGxldmVsXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqL1xuICBwcm90ZWN0ZWQgd3JpdGUobGV2ZWw6IExldmVsS2luZCwgLi4uYXJnczogYW55W10pIHtcbiAgICBPcHRpb24ub2ZOdWxsYWJsZShjb25zb2xlW2xldmVsXSlcbiAgICAgIC5vckNhbGwoKCkgPT4gT3B0aW9uLm9mTnVsbGFibGUoY29uc29sZS5sb2cpKVxuICAgICAgLm1hcCgoZm46IEZ1bmN0aW9uKSA9PiBmbi5hcHBseShjb25zb2xlLCBhcmdzKSlcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpYWw8Q29uc29sZUFwcGVuZGVyT3B0aW9uczxSZWNvcmQ+Pn0gb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUGFydGlhbDxDb25zb2xlQXBwZW5kZXJPcHRpb25zPFJlY29yZD4+ID0ge30pIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLmtEZWZhdWx0Q29uc29sZUFwcGVuZGVyQ29uZmlnLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileAppender.d.ts","sourceRoot":"","sources":["../../../../src/logging/appenders/FileAppender.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAsB/B,MAAM,WAAW,kBAAkB,CAAC,MAAM,SAAS,SAAS,GAAG,GAAG;IAChE,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf,aAAa,EAAE,OAAO,CAAA;IACtB,WAAW,EAAE,OAAO,CAAA;IACpB,IAAI,EAAE,OAAO,CAAA;CACd;AAED,MAAM,MAAM,mBAAmB,CAAC,MAAM,SAAS,SAAS,GAAG,GAAG,IAAI,OAAO,CACvE,kBAAkB,CAAC,MAAM,CAAC,CAC3B,CAAA;AAED,qBAAa,YAAY,CACvB,MAAM,SAAS,SAAS,CACxB,YAAW,QAAQ,CAAC,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAE3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAiBrB;IAED,IAAI,aAAa,YAEhB;IAED,OAAO;IAIP;;;;OAIG;IACH,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC;IA2B7B;;;;;;;OAOG;IACH,QAAQ;IAkDR;;;;OAIG;IACH,KAAK;IAML,IAAI,KAAK,8BAER;IAED,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,YAEX;IAED,IAAI,QAAQ,WAEX;IAED;;OAEG;IACH,OAAO,CAAC,KAAK;IAoCb;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAsB5B;;;OAGG;gBACS,OAAO,GAAE,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAM;CAW/D"}
|