@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
package/lib/logging/Logger.js
DELETED
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { assert, getValue, isString, isDefined, isFunction, isNumber } from "../guards/index.js";
|
|
2
|
-
import { Option } from "prelude-ts";
|
|
3
|
-
import { isObject, pick } from "lodash";
|
|
4
|
-
import { LevelThresholds } from "./Level.js";
|
|
5
|
-
import { isLogLevelKind } from "./util.js";
|
|
6
|
-
export const filenameCategoryInterpolator = (filename) => {
|
|
7
|
-
const allParts = filename.replaceAll("\\", "/").split("/");
|
|
8
|
-
const rootIndex = Math.max(...["src", "lib"].map((name) => allParts.indexOf(name)));
|
|
9
|
-
const parts = rootIndex === -1 ? [allParts.pop()] : allParts.slice(rootIndex + 1);
|
|
10
|
-
const category = Option.of(parts.join(":"))
|
|
11
|
-
.flatMap((cat) => Option.of(cat.lastIndexOf(".")).map((index) => index === -1 ? cat : cat.slice(0, index)))
|
|
12
|
-
.getOrElse("unknown");
|
|
13
|
-
return category;
|
|
14
|
-
};
|
|
15
|
-
export const defaultLoggerOptions = {
|
|
16
|
-
categoryInterpolator: filenameCategoryInterpolator,
|
|
17
|
-
overrideAppenders: []
|
|
18
|
-
};
|
|
19
|
-
export function toLogRecord(logger, levelOrRecord, args) {
|
|
20
|
-
const globalMetadata = logger.manager.globalMetadata;
|
|
21
|
-
let metadata = {
|
|
22
|
-
...globalMetadata
|
|
23
|
-
};
|
|
24
|
-
if (isString(levelOrRecord) && isObject(args[0])) {
|
|
25
|
-
metadata = { ...metadata, ...args.shift() };
|
|
26
|
-
}
|
|
27
|
-
if (globalMetadata?.data)
|
|
28
|
-
metadata.data = {
|
|
29
|
-
...globalMetadata.data,
|
|
30
|
-
...metadata.data
|
|
31
|
-
};
|
|
32
|
-
const errRecord = Option.ofNullable(args.find((arg) => (isString(arg?.message) && !!arg.stack) || arg instanceof Error)).match({
|
|
33
|
-
Some: (err) => ({
|
|
34
|
-
errorMessage: getValue(() => err.message),
|
|
35
|
-
errorStack: getValue(() => err.stack)
|
|
36
|
-
}),
|
|
37
|
-
None: () => ({})
|
|
38
|
-
});
|
|
39
|
-
const recordBase = isString(levelOrRecord)
|
|
40
|
-
? {
|
|
41
|
-
...pick(logger, ["category"]),
|
|
42
|
-
timestamp: Date.now(),
|
|
43
|
-
message: args[0],
|
|
44
|
-
level: levelOrRecord,
|
|
45
|
-
args: args.slice(1)
|
|
46
|
-
}
|
|
47
|
-
: levelOrRecord;
|
|
48
|
-
const record = {
|
|
49
|
-
...recordBase,
|
|
50
|
-
...errRecord,
|
|
51
|
-
...metadata,
|
|
52
|
-
timestamp: isNumber(recordBase.timestamp) && recordBase.timestamp > 0 ? recordBase.timestamp : Date.now(),
|
|
53
|
-
};
|
|
54
|
-
if (metadata.data) {
|
|
55
|
-
record.data = {
|
|
56
|
-
...metadata.data,
|
|
57
|
-
...(recordBase.data ?? {})
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
return record;
|
|
61
|
-
}
|
|
62
|
-
export class Logger {
|
|
63
|
-
manager;
|
|
64
|
-
category;
|
|
65
|
-
options;
|
|
66
|
-
state = {
|
|
67
|
-
overrideLevel: null
|
|
68
|
-
};
|
|
69
|
-
get overrideLevel() {
|
|
70
|
-
return Option.ofNullable(this.state.overrideLevel)
|
|
71
|
-
.filter(isLogLevelKind) //Predicate.of<LevelKind>(isString).and(isLogLevelKind))
|
|
72
|
-
.getOrNull();
|
|
73
|
-
}
|
|
74
|
-
get overrideThreshold() {
|
|
75
|
-
return Option.ofNullable(this.overrideLevel)
|
|
76
|
-
.map((level) => LevelThresholds[level])
|
|
77
|
-
.getOrNull();
|
|
78
|
-
}
|
|
79
|
-
setOverrideLevel(inOverrideLevel) {
|
|
80
|
-
const overrideLevel = (!inOverrideLevel ? null : inOverrideLevel.toLocaleLowerCase());
|
|
81
|
-
assert(!isDefined(overrideLevel) || isLogLevelKind(overrideLevel), `Invalid override level, must be a log level, all lower case`);
|
|
82
|
-
Object.assign(this.state, {
|
|
83
|
-
overrideLevel
|
|
84
|
-
});
|
|
85
|
-
return this;
|
|
86
|
-
}
|
|
87
|
-
log(levelOrRecord, ...args) {
|
|
88
|
-
const record = toLogRecord(this, levelOrRecord, args);
|
|
89
|
-
if (this.options.overrideAppenders.length) {
|
|
90
|
-
this.options.overrideAppenders.forEach((appender) => appender.append(record));
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
this.manager.fire(record);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Factory for the log
|
|
98
|
-
* level functions
|
|
99
|
-
*
|
|
100
|
-
* @param {LevelKind} level
|
|
101
|
-
* @returns {(message: string, ...args: any[]) => void}
|
|
102
|
-
* @private
|
|
103
|
-
*/
|
|
104
|
-
createLevelLogger(level) {
|
|
105
|
-
const isEnabled = this.createLevelEnabled(level);
|
|
106
|
-
return (message, ...args) => {
|
|
107
|
-
if (isEnabled()) {
|
|
108
|
-
this.log(level, message, ...args);
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Factory for is<Level>Enabled
|
|
114
|
-
*
|
|
115
|
-
* @param {LevelKind} level
|
|
116
|
-
* @returns {() => boolean}
|
|
117
|
-
* @private
|
|
118
|
-
*/
|
|
119
|
-
createLevelEnabled(level) {
|
|
120
|
-
return () => {
|
|
121
|
-
const { rootThreshold } = this.manager;
|
|
122
|
-
const globalOverrideThreshold = this.manager.determineThresholdOverride(this.category);
|
|
123
|
-
const categoryThresholds = isNumber(this.overrideThreshold) ? [this.overrideThreshold] : [
|
|
124
|
-
globalOverrideThreshold,
|
|
125
|
-
rootThreshold
|
|
126
|
-
].filter(isNumber);
|
|
127
|
-
const categoryThreshold = Math.min(...categoryThresholds);
|
|
128
|
-
const recordThreshold = LevelThresholds[level];
|
|
129
|
-
return recordThreshold >= categoryThreshold;
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
trace = this.createLevelLogger("trace");
|
|
133
|
-
debug = this.createLevelLogger("debug");
|
|
134
|
-
info = this.createLevelLogger("info");
|
|
135
|
-
warn = this.createLevelLogger("warn");
|
|
136
|
-
error = this.createLevelLogger("error");
|
|
137
|
-
fatal = this.createLevelLogger("fatal");
|
|
138
|
-
isTraceEnabled = this.createLevelEnabled("trace");
|
|
139
|
-
isDebugEnabled = this.createLevelEnabled("debug");
|
|
140
|
-
isInfoEnabled = this.createLevelEnabled("info");
|
|
141
|
-
isWarnEnabled = this.createLevelEnabled("warn");
|
|
142
|
-
isErrorEnabled = this.createLevelEnabled("error");
|
|
143
|
-
isFatalEnabled = this.createLevelEnabled("fatal");
|
|
144
|
-
assert(test, message, ...args) {
|
|
145
|
-
const isTruthy = isFunction(test) ? test() : test;
|
|
146
|
-
if (isTruthy) {
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
this.error(message, ...args);
|
|
150
|
-
}
|
|
151
|
-
assertFatal(test, message, exitCode = 1) {
|
|
152
|
-
const isTruthy = isFunction(test) ? test() : test;
|
|
153
|
-
if (isTruthy) {
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
this.fatal("FATAL ASSERTION: ", message);
|
|
157
|
-
if (typeof process !== "undefined") {
|
|
158
|
-
process.exit(exitCode);
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
console.error("FATAL ASSERTION: `process` is not defined, probably in a web browser");
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
constructor(manager, category, options) {
|
|
165
|
-
this.manager = manager;
|
|
166
|
-
this.category = category;
|
|
167
|
-
this.options = options;
|
|
168
|
-
}
|
|
169
|
-
static hydrateOptions(options = {}) {
|
|
170
|
-
return {
|
|
171
|
-
...defaultLoggerOptions,
|
|
172
|
-
...options
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
static interoplateCategory(category, options) {
|
|
176
|
-
options = {
|
|
177
|
-
...defaultLoggerOptions,
|
|
178
|
-
...options
|
|
179
|
-
};
|
|
180
|
-
return options.categoryInterpolator(category, options);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZ2dpbmcvTG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2hHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkMsT0FBTyxFQUFhLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDbEQsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUd2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBYTFDLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUF5QixDQUNoRSxRQUFnQixFQUNoQixFQUFFO0lBQ0YsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ3hCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3hELENBQUE7SUFDRCxNQUFNLEtBQUssR0FDVCxTQUFTLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ3JFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMs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Q2pFLE9BQU8sR0FBRztZQUNSLEdBQUcsb0JBQW9CO1lBQ3ZCLEdBQUcsT0FBTztTQUNYLENBQUE7UUFDRCxPQUFPLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDeEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0LCBnZXRWYWx1ZSwgaXNTdHJpbmcsIGlzRGVmaW5lZCwgaXNGdW5jdGlvbiwgaXNOdW1iZXIgfSBmcm9tIFwiLi4vZ3VhcmRzL2luZGV4LmpzXCJcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gXCJwcmVsdWRlLXRzXCJcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNPYmplY3QsIHBpY2sgfSBmcm9tIFwibG9kYXNoXCJcbmltcG9ydCB7IExldmVsS2luZCwgTGV2ZWxUaHJlc2hvbGRzIH0gZnJvbSBcIi4vTGV2ZWwuanNcIlxuaW1wb3J0IHR5cGUgeyBMb2dnaW5nTWFuYWdlciB9IGZyb20gXCIuL0xvZ2dpbmdNYW5hZ2VyLmpzXCJcbmltcG9ydCB0eXBlIHsgTG9nTWV0YWRhdGEsIExvZ1JlY29yZCB9IGZyb20gXCIuL0xvZ1JlY29yZC5qc1wiXG5pbXBvcnQgeyBpc0xvZ0xldmVsS2luZCB9IGZyb20gXCIuL3V0aWwuanNcIlxuaW1wb3J0IHR5cGUgeyBBcHBlbmRlciB9IGZyb20gXCIuL0FwcGVuZGVyLmpzXCJcblxuZXhwb3J0IGludGVyZmFjZSBMb2dnZXJPcHRpb25zIHtcbiAgY2F0ZWdvcnlJbnRlcnBvbGF0b3I6IENhdGVnb3J5SW50ZXJwb2xhdG9yXG4gIG92ZXJyaWRlQXBwZW5kZXJzOiBBcnJheTxBcHBlbmRlcjxMb2dSZWNvcmQ+PlxufVxuXG5leHBvcnQgdHlwZSBDYXRlZ29yeUludGVycG9sYXRvciA9IChcbiAgaW5DYXRlZ29yeTogc3RyaW5nLFxuICBvcHRpb25zPzogTG9nZ2VyT3B0aW9uc1xuKSA9PiBzdHJpbmdcblxuZXhwb3J0IGNvbnN0IGZpbGVuYW1lQ2F0ZWdvcnlJbnRlcnBvbGF0b3I6IENhdGVnb3J5SW50ZXJwb2xhdG9yID0gKFxuICBmaWxlbmFtZTogc3RyaW5nXG4pID0+IHtcbiAgY29uc3QgYWxsUGFydHMgPSBmaWxlbmFtZS5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIikuc3BsaXQoXCIvXCIpXG4gIGNvbnN0IHJvb3RJbmRleCA9IE1hdGgubWF4KFxuICAgIC4uLltcInNyY1wiLCBcImxpYlwiXS5tYXAoKG5hbWUpID0+IGFsbFBhcnRzLmluZGV4T2YobmFtZSkpXG4gIClcbiAgY29uc3QgcGFydHMgPVxuICAgIHJvb3RJbmRleCA9PT0gLTEgPyBbYWxsUGFydHMucG9wKCldIDogYWxsUGFydHMuc2xpY2Uocm9vdEluZGV4ICsgMSlcbiAgY29uc3QgY2F0ZWdvcnkgPSBPcHRpb24ub2YocGFydHMuam9pbihcIjpcIikpXG4gICAgLmZsYXRNYXAoKGNhdCkgPT5cbiAgICAgIE9wdGlvbi5vZihjYXQubGFzdEluZGV4T2YoXCIuXCIpKS5tYXAoKGluZGV4KSA9PlxuICAgICAgICBpbmRleCA9PT0gLTEgPyBjYXQgOiBjYXQuc2xpY2UoMCwgaW5kZXgpXG4gICAgICApXG4gICAgKVxuICAgIC5nZXRPckVsc2UoXCJ1bmtub3duXCIpXG4gIHJldHVybiBjYXRlZ29yeVxufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdExvZ2dlck9wdGlvbnM6IExvZ2dlck9wdGlvbnMgPSB7XG4gIGNhdGVnb3J5SW50ZXJwb2xhdG9yOiBmaWxlbmFtZUNhdGVnb3J5SW50ZXJwb2xhdG9yLFxuICBvdmVycmlkZUFwcGVuZGVyczogW11cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvTG9nUmVjb3JkKFxuICBsb2dnZXI6IExvZ2dlcixcbiAgbGV2ZWxPclJlY29yZDogTGV2ZWxLaW5kIHwgTG9nUmVjb3JkLFxuICBhcmdzOiBhbnlbXVxuKSB7XG4gIGNvbnN0IGdsb2JhbE1ldGFkYXRhID0gbG9nZ2VyLm1hbmFnZXIuZ2xvYmFsTWV0YWRhdGFcbiAgbGV0IG1ldGFkYXRhOiBMb2dNZXRhZGF0YSA9IHtcbiAgICAuLi5nbG9iYWxNZXRhZGF0YVxuICB9XG4gIGlmIChpc1N0cmluZyhsZXZlbE9yUmVjb3JkKSAmJiBpc09iamVjdChhcmdzWzBdKSkge1xuICAgIG1ldGFkYXRhID0geyAuLi5tZXRhZGF0YSwgLi4uYXJncy5zaGlmdCgpIH1cbiAgfVxuXG4gIGlmIChnbG9iYWxNZXRhZGF0YT8uZGF0YSlcbiAgICBtZXRhZGF0YS5kYXRhID0ge1xuICAgICAgLi4uZ2xvYmFsTWV0YWRhdGEuZGF0YSxcbiAgICAgIC4uLm1ldGFkYXRhLmRhdGFcbiAgICB9XG5cbiAgY29uc3QgZXJyUmVjb3JkID0gT3B0aW9uLm9mTnVsbGFibGUoXG4gICAgYXJncy5maW5kKChhcmcpID0+IChpc1N0cmluZyhhcmc/Lm1lc3NhZ2UpICYmICEhYXJnLnN0YWNrKSB8fCBhcmcgaW5zdGFuY2VvZiBFcnJvcilcbiAgKS5tYXRjaCh7XG4gICAgU29tZTogKGVycikgPT4gKHtcbiAgICAgIGVycm9yTWVzc2FnZTogZ2V0VmFsdWUoKCkgPT4gZXJyLm1lc3NhZ2UpLFxuICAgICAgZXJyb3JTdGFjazogZ2V0VmFsdWUoKCkgPT4gZXJyLnN0YWNrKVxuICAgIH0pLFxuICAgIE5vbmU6ICgpID0+ICh7fSlcbiAgfSlcblxuICBjb25zdCByZWNvcmRCYXNlID0gaXNTdHJpbmcobGV2ZWxPclJlY29yZClcbiAgICA/ICh7XG4gICAgICAuLi5waWNrKGxvZ2dlciwgW1wiY2F0ZWdvcnlcIl0pLFxuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgbWVzc2FnZTogYXJnc1swXSxcbiAgICAgIGxldmVsOiBsZXZlbE9yUmVjb3JkLFxuICAgICAgYXJnczogYXJncy5zbGljZSgxKVxuICAgIH0gYXMgTG9nUmVjb3JkKVxuICAgIDogbGV2ZWxPclJlY29yZFxuXG4gIGNvbnN0IHJlY29yZCA9IHtcblxuICAgIC4uLnJlY29yZEJhc2UsXG4gICAgLi4uZXJyUmVjb3JkLFxuICAgIC4uLm1ldGFkYXRhLFxuICAgIHRpbWVzdGFtcDogaXNOdW1iZXIocmVjb3JkQmFzZS50aW1lc3RhbXApICYmIHJlY29yZEJhc2UudGltZXN0YW1wID4gMCA/IHJlY29yZEJhc2UudGltZXN0YW1wIDogRGF0ZS5ub3coKSxcbiAgfVxuXG4gIGlmIChtZXRhZGF0YS5kYXRhKSB7XG4gICAgcmVjb3JkLmRhdGEgPSB7XG4gICAgICAuLi5tZXRhZGF0YS5kYXRhLFxuICAgICAgLi4uKHJlY29yZEJhc2UuZGF0YSA/PyB7fSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVjb3JkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2VyU3RhdGUge1xuICBvdmVycmlkZUxldmVsPzogTGV2ZWxLaW5kXG59XG5cbmV4cG9ydCBjbGFzcyBMb2dnZXIge1xuICByZWFkb25seSBzdGF0ZTogTG9nZ2VyU3RhdGUgPSB7XG4gICAgb3ZlcnJpZGVMZXZlbDogbnVsbFxuICB9XG5cbiAgZ2V0IG92ZXJyaWRlTGV2ZWwoKTogTGV2ZWxLaW5kIHtcbiAgICByZXR1cm4gT3B0aW9uLm9mTnVsbGFibGUodGhpcy5zdGF0ZS5vdmVycmlkZUxldmVsKVxuICAgICAgLmZpbHRlcihpc0xvZ0xldmVsS2luZCkgLy9QcmVkaWNhdGUub2Y8TGV2ZWxLaW5kPihpc1N0cmluZykuYW5kKGlzTG9nTGV2ZWxLaW5kKSlcbiAgICAgIC5nZXRPck51bGwoKVxuICB9XG5cbiAgZ2V0IG92ZXJyaWRlVGhyZXNob2xkKCkge1xuICAgIHJldHVybiBPcHRpb24ub2ZOdWxsYWJsZSh0aGlzLm92ZXJyaWRlTGV2ZWwpXG4gICAgICAubWFwKChsZXZlbCkgPT4gTGV2ZWxUaHJlc2hvbGRzW2xldmVsXSlcbiAgICAgIC5nZXRPck51bGwoKVxuICB9XG5cbiAgc2V0T3ZlcnJpZGVMZXZlbChpbk92ZXJyaWRlTGV2ZWw6IExldmVsS2luZCkge1xuICAgIGNvbnN0IG92ZXJyaWRlTGV2ZWwgPSAoXG4gICAgICAhaW5PdmVycmlkZUxldmVsID8gbnVsbCA6IGluT3ZlcnJpZGVMZXZlbC50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgKSBhcyBMZXZlbEtpbmRcblxuICAgIGFzc2VydChcbiAgICAgICFpc0RlZmluZWQob3ZlcnJpZGVMZXZlbCkgfHwgaXNMb2dMZXZlbEtpbmQob3ZlcnJpZGVMZXZlbCksXG4gICAgICBgSW52YWxpZCBvdmVycmlkZSBsZXZlbCwgbXVzdCBiZSBhIGxvZyBsZXZlbCwgYWxsIGxvd2VyIGNhc2VgXG4gICAgKVxuXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLnN0YXRlLCB7XG4gICAgICBvdmVycmlkZUxldmVsXG4gICAgfSlcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQmFzZSBsb2dnaW5nIGZ1bmN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSByZWNvcmRcbiAgICovXG4gIGxvZyhyZWNvcmQ6IExvZ1JlY29yZCk6IHZvaWRcbiAgbG9nKGxldmVsOiBMZXZlbEtpbmQsIG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkXG4gIGxvZyhsZXZlbDogTGV2ZWxLaW5kLCBtZXRhZGF0YTogTG9nTWV0YWRhdGEsIG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkXG4gIGxvZyhsZXZlbE9yUmVjb3JkOiBMZXZlbEtpbmQgfCBMb2dSZWNvcmQsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgY29uc3QgcmVjb3JkID0gdG9Mb2dSZWNvcmQodGhpcywgbGV2ZWxPclJlY29yZCwgYXJncylcbiAgICBpZiAodGhpcy5vcHRpb25zLm92ZXJyaWRlQXBwZW5kZXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5vcHRpb25zLm92ZXJyaWRlQXBwZW5kZXJzLmZvckVhY2goKGFwcGVuZGVyKSA9PiBhcHBlbmRlci5hcHBlbmQocmVjb3JkKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYW5hZ2VyLmZpcmUocmVjb3JkKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3J5IGZvciB0aGUgbG9nXG4gICAqIGxldmVsIGZ1bmN0aW9uc1xuICAgKlxuICAgKiBAcGFyYW0ge0xldmVsS2luZH0gbGV2ZWxcbiAgICogQHJldHVybnMgeyhtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVMZXZlbExvZ2dlcihsZXZlbDogTGV2ZWxLaW5kKTogKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pID0+IHZvaWQge1xuICAgIGNvbnN0IGlzRW5hYmxlZCA9IHRoaXMuY3JlYXRlTGV2ZWxFbmFibGVkKGxldmVsKVxuICAgIHJldHVybiAobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgaWYgKGlzRW5hYmxlZCgpKSB7XG4gICAgICAgIHRoaXMubG9nKGxldmVsLCBtZXNzYWdlLCAuLi5hcmdzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3J5IGZvciBpczxMZXZlbD5FbmFibGVkXG4gICAqXG4gICAqIEBwYXJhbSB7TGV2ZWxLaW5kfSBsZXZlbFxuICAgKiBAcmV0dXJucyB7KCkgPT4gYm9vbGVhbn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlTGV2ZWxFbmFibGVkKGxldmVsOiBMZXZlbEtpbmQpOiAoKSA9PiBib29sZWFuIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3QgeyByb290VGhyZXNob2xkIH0gPSB0aGlzLm1hbmFnZXJcblxuICAgICAgY29uc3QgZ2xvYmFsT3ZlcnJpZGVUaHJlc2hvbGQgPSB0aGlzLm1hbmFnZXIuZGV0ZXJtaW5lVGhyZXNob2xkT3ZlcnJpZGUodGhpcy5jYXRlZ29yeSlcbiAgICAgIGNvbnN0IGNhdGVnb3J5VGhyZXNob2xkcyA9IGlzTnVtYmVyKHRoaXMub3ZlcnJpZGVUaHJlc2hvbGQpID8gW3RoaXMub3ZlcnJpZGVUaHJlc2hvbGRdIDogW1xuICAgICAgICBnbG9iYWxPdmVycmlkZVRocmVzaG9sZCxcbiAgICAgICAgcm9vdFRocmVzaG9sZFxuICAgICAgXS5maWx0ZXIoaXNOdW1iZXIpXG5cbiAgICAgIGNvbnN0IGNhdGVnb3J5VGhyZXNob2xkID0gTWF0aC5taW4oLi4uY2F0ZWdvcnlUaHJlc2hvbGRzKVxuXG4gICAgICBjb25zdCByZWNvcmRUaHJlc2hvbGQgPSBMZXZlbFRocmVzaG9sZHNbbGV2ZWxdXG5cbiAgICAgIHJldHVybiByZWNvcmRUaHJlc2hvbGQgPj0gY2F0ZWdvcnlUaHJlc2hvbGRcbiAgICB9XG4gIH1cblxuICByZWFkb25seSB0cmFjZSA9IHRoaXMuY3JlYXRlTGV2ZWxMb2dnZXIoXCJ0cmFjZVwiKVxuICByZWFkb25seSBkZWJ1ZyA9IHRoaXMuY3JlYXRlTGV2ZWxMb2dnZXIoXCJkZWJ1Z1wiKVxuICByZWFkb25seSBpbmZvID0gdGhpcy5jcmVhdGVMZXZlbExvZ2dlcihcImluZm9cIilcbiAgcmVhZG9ubHkgd2FybiA9IHRoaXMuY3JlYXRlTGV2ZWxMb2dnZXIoXCJ3YXJuXCIpXG4gIHJlYWRvbmx5IGVycm9yID0gdGhpcy5jcmVhdGVMZXZlbExvZ2dlcihcImVycm9yXCIpXG4gIHJlYWRvbmx5IGZhdGFsID0gdGhpcy5jcmVhdGVMZXZlbExvZ2dlcihcImZhdGFsXCIpXG5cbiAgcmVhZG9ubHkgaXNUcmFjZUVuYWJsZWQgPSB0aGlzLmNyZWF0ZUxldmVsRW5hYmxlZChcInRyYWNlXCIpXG4gIHJlYWRvbmx5IGlzRGVidWdFbmFibGVkID0gdGhpcy5jcmVhdGVMZXZlbEVuYWJsZWQoXCJkZWJ1Z1wiKVxuICByZWFkb25seSBpc0luZm9FbmFibGVkID0gdGhpcy5jcmVhdGVMZXZlbEVuYWJsZWQoXCJpbmZvXCIpXG4gIHJlYWRvbmx5IGlzV2FybkVuYWJsZWQgPSB0aGlzLmNyZWF0ZUxldmVsRW5hYmxlZChcIndhcm5cIilcbiAgcmVhZG9ubHkgaXNFcnJvckVuYWJsZWQgPSB0aGlzLmNyZWF0ZUxldmVsRW5hYmxlZChcImVycm9yXCIpXG4gIHJlYWRvbmx5IGlzRmF0YWxFbmFibGVkID0gdGhpcy5jcmVhdGVMZXZlbEVuYWJsZWQoXCJmYXRhbFwiKVxuXG4gIGFzc2VydCh0ZXN0OiBib29sZWFuIHwgKCgpID0+IGJvb2xlYW4pLCBtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgY29uc3QgaXNUcnV0aHkgPSBpc0Z1bmN0aW9uKHRlc3QpID8gdGVzdCgpIDogdGVzdFxuICAgIGlmIChpc1RydXRoeSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5lcnJvcihtZXNzYWdlLCAuLi5hcmdzKVxuICB9XG5cbiAgYXNzZXJ0RmF0YWwodGVzdDogYm9vbGVhbiB8ICgoKSA9PiBib29sZWFuKSwgbWVzc2FnZTogc3RyaW5nLCBleGl0Q29kZTogbnVtYmVyID0gMSkge1xuICAgIGNvbnN0IGlzVHJ1dGh5ID0gaXNGdW5jdGlvbih0ZXN0KSA/IHRlc3QoKSA6IHRlc3RcbiAgICBpZiAoaXNUcnV0aHkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuZmF0YWwoXCJGQVRBTCBBU1NFUlRJT046IFwiLCBtZXNzYWdlKVxuICAgIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcHJvY2Vzcy5leGl0KGV4aXRDb2RlKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRkFUQUwgQVNTRVJUSU9OOiBgcHJvY2Vzc2AgaXMgbm90IGRlZmluZWQsIHByb2JhYmx5IGluIGEgd2ViIGJyb3dzZXJcIilcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBtYW5hZ2VyOiBMb2dnaW5nTWFuYWdlcixcbiAgICByZWFkb25seSBjYXRlZ29yeTogc3RyaW5nLFxuICAgIHJlYWRvbmx5IG9wdGlvbnM6IExvZ2dlck9wdGlvbnNcbiAgKSB7IH1cblxuICBzdGF0aWMgaHlkcmF0ZU9wdGlvbnMob3B0aW9uczogUGFydGlhbDxMb2dnZXJPcHRpb25zPiA9IHt9KTogTG9nZ2VyT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlZmF1bHRMb2dnZXJPcHRpb25zLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpbnRlcm9wbGF0ZUNhdGVnb3J5KGNhdGVnb3J5OiBzdHJpbmcsIG9wdGlvbnM6IExvZ2dlck9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge1xuICAgICAgLi4uZGVmYXVsdExvZ2dlck9wdGlvbnMsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLmNhdGVnb3J5SW50ZXJwb2xhdG9yKGNhdGVnb3J5LCBvcHRpb25zKVxuICB9XG59XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LoggingManager.d.ts","sourceRoot":"","sources":["../../src/logging/LoggingManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
import { isNumber, isObject, isString } from "../guards/index.js";
|
|
2
|
-
import { Option } from "prelude-ts";
|
|
3
|
-
import { flatten, isEmpty, min, negate } from "lodash";
|
|
4
|
-
import { ConsoleAppender } from "./appenders/ConsoleAppender.js";
|
|
5
|
-
import { Level, LevelThresholds } from "./Level.js";
|
|
6
|
-
import { Logger } from "./Logger.js";
|
|
7
|
-
import { LogContextContainer } from "./context/index.js";
|
|
8
|
-
import { flow, get, nth } from "lodash/fp.js";
|
|
9
|
-
function parseThresholdOverridePatterns(value, level = "debug") {
|
|
10
|
-
return value
|
|
11
|
-
.split(",")
|
|
12
|
-
.map((s) => [new RegExp(s), level]);
|
|
13
|
-
}
|
|
14
|
-
export const kEnvThresholdOverrides = Option.ofNullable(typeof process !== "undefined" && process.env.DEBUG_PATTERNS)
|
|
15
|
-
.filter(negate(isEmpty))
|
|
16
|
-
.map(parseThresholdOverridePatterns)
|
|
17
|
-
.getOrElse([]);
|
|
18
|
-
/**
|
|
19
|
-
* Logging manager
|
|
20
|
-
*/
|
|
21
|
-
export class LoggingManager {
|
|
22
|
-
loggers = new Map();
|
|
23
|
-
state = {
|
|
24
|
-
appenders: [],
|
|
25
|
-
globalMetadata: {},
|
|
26
|
-
rootLevel: Level.info,
|
|
27
|
-
thresholdOverrides: kEnvThresholdOverrides
|
|
28
|
-
};
|
|
29
|
-
get rootLevel() {
|
|
30
|
-
return this.state.rootLevel;
|
|
31
|
-
}
|
|
32
|
-
get globalMetadata() {
|
|
33
|
-
return this.state.globalMetadata;
|
|
34
|
-
}
|
|
35
|
-
set globalMetadata(newMetadata) {
|
|
36
|
-
this.state.globalMetadata = newMetadata ?? {};
|
|
37
|
-
}
|
|
38
|
-
set rootLevel(newRootLevel) {
|
|
39
|
-
this.state.rootLevel = newRootLevel;
|
|
40
|
-
}
|
|
41
|
-
get rootThreshold() {
|
|
42
|
-
return LevelThresholds[this.rootLevel];
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Get the current handler
|
|
46
|
-
*
|
|
47
|
-
* @returns {Appender<Record>}
|
|
48
|
-
*/
|
|
49
|
-
get appenders() {
|
|
50
|
-
return Option.ofNullable(this.state.appenders)
|
|
51
|
-
.filter((appenders) => appenders.length > 0)
|
|
52
|
-
.getOrCall(() => {
|
|
53
|
-
this.state.appenders.push(new ConsoleAppender());
|
|
54
|
-
return this.state.appenders;
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Global threshold overrides
|
|
59
|
-
*/
|
|
60
|
-
get thresholdOverrides() {
|
|
61
|
-
return this.state.thresholdOverrides;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Update the overrides
|
|
65
|
-
*
|
|
66
|
-
* @param newOverrides
|
|
67
|
-
*/
|
|
68
|
-
set thresholdOverrides(newOverrides) {
|
|
69
|
-
this.state.thresholdOverrides = newOverrides;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Set global appenders
|
|
73
|
-
*
|
|
74
|
-
* @param {Array<Appender<Record>>} newAppenders
|
|
75
|
-
*/
|
|
76
|
-
setAppenders(...newAppenders) {
|
|
77
|
-
// WE MUTATE DO TO THE LIKELIHOOD OF SOMEONE HOLDING A REF TO THE ARRAY,
|
|
78
|
-
// CONVERT TO OBSERVABLE AT SOME POINT
|
|
79
|
-
const persistentAppenders = this.state.appenders;
|
|
80
|
-
persistentAppenders.length = 0;
|
|
81
|
-
persistentAppenders.push(...flatten(newAppenders));
|
|
82
|
-
return this;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Add one or more appenders to existing appender set
|
|
86
|
-
*
|
|
87
|
-
* @param {Appender<Record> | Appender<Record>[]} newAppenders
|
|
88
|
-
* @returns {this<Record>}
|
|
89
|
-
*/
|
|
90
|
-
addAppenders(...newAppenders) {
|
|
91
|
-
this.state.appenders.push(...flatten(newAppenders));
|
|
92
|
-
return this;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Clear threshold overrides
|
|
96
|
-
*
|
|
97
|
-
* @returns {this<Record>}
|
|
98
|
-
*/
|
|
99
|
-
clearThresholdOverrides() {
|
|
100
|
-
this.state.thresholdOverrides.length = 0;
|
|
101
|
-
return this;
|
|
102
|
-
}
|
|
103
|
-
setThresholdOverrides(...overrides) {
|
|
104
|
-
this.state.thresholdOverrides.length = 0;
|
|
105
|
-
this.state.thresholdOverrides.push(...overrides);
|
|
106
|
-
return this;
|
|
107
|
-
}
|
|
108
|
-
addThresholdOverrides(...overrides) {
|
|
109
|
-
this.state.thresholdOverrides.push(...overrides);
|
|
110
|
-
return this;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Get applicable current contexts
|
|
114
|
-
*
|
|
115
|
-
* @param {string} category
|
|
116
|
-
* @returns {LogContext[]}
|
|
117
|
-
*/
|
|
118
|
-
getApplicableCurrentContexts(category) {
|
|
119
|
-
return LogContextContainer.currentContext().filter(({ pattern }) => !pattern || pattern.test(category));
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Check for any matching threshold overrides
|
|
123
|
-
*
|
|
124
|
-
* @param category
|
|
125
|
-
*/
|
|
126
|
-
determineThresholdOverride(category) {
|
|
127
|
-
const contexts = this.getApplicableCurrentContexts(category),
|
|
128
|
-
// FIND CONFIGURED OVERRIDE LEVEL
|
|
129
|
-
overrideThreshold = Option.ofNullable(this.thresholdOverrides.find(([match]) => isString(match) ? match === category : match.test(category)))
|
|
130
|
-
.map(nth(1))
|
|
131
|
-
.map((level) => LevelThresholds[level])
|
|
132
|
-
.getOrNull(),
|
|
133
|
-
// FIND `LogContext` OVERRIDE LEVEL
|
|
134
|
-
contextThresholds = contexts
|
|
135
|
-
.filter(flow(get("thresholdLevel"), isString))
|
|
136
|
-
.map(({ thresholdLevel }) => LevelThresholds[thresholdLevel]),
|
|
137
|
-
// IF ANY OVERRIDES, GET THE MOST VERBOSE LEVEL
|
|
138
|
-
override = Option.ofNullable([...contextThresholds, overrideThreshold].filter(isNumber))
|
|
139
|
-
.filter(negate(isEmpty))
|
|
140
|
-
.map(min)
|
|
141
|
-
.getOrNull();
|
|
142
|
-
return override;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Set the root logging level
|
|
146
|
-
*
|
|
147
|
-
* @param {LevelKind} newLevel
|
|
148
|
-
* @returns {this<Record>}
|
|
149
|
-
*/
|
|
150
|
-
setRootLevel(newLevel) {
|
|
151
|
-
this.state.rootLevel = newLevel;
|
|
152
|
-
return this;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Fire a log event, eventually
|
|
156
|
-
* invert this by making `Logger` an
|
|
157
|
-
* `EventEmitter3` and having the `LoggingManager`
|
|
158
|
-
* subscribe to `record` event
|
|
159
|
-
*
|
|
160
|
-
* @param {LogRecord<Record>} record
|
|
161
|
-
* @internal
|
|
162
|
-
*/
|
|
163
|
-
fire(record) {
|
|
164
|
-
const { category } = record, contexts = this.getApplicableCurrentContexts(category), contextAppenders = contexts.flatMap(get("appenders")), appenders = [...this.appenders, ...contextAppenders];
|
|
165
|
-
appenders.forEach((appender) => appender.append(record));
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Get a logger from cache, if the category
|
|
169
|
-
* does not have an existing logger, then create one.
|
|
170
|
-
*
|
|
171
|
-
* @param {string} categoryOrFilename
|
|
172
|
-
* @param {Partial<LoggerOptions>} inOptions
|
|
173
|
-
* @returns {Logger}
|
|
174
|
-
*/
|
|
175
|
-
getLogger(categoryOrFilename, inOptions = {}) {
|
|
176
|
-
const options = Logger.hydrateOptions(inOptions);
|
|
177
|
-
const category = Logger.interoplateCategory(categoryOrFilename, options);
|
|
178
|
-
return Option.ofNullable(category)
|
|
179
|
-
.map((category) => this.loggers.get(category))
|
|
180
|
-
.getOrCall(() => {
|
|
181
|
-
const logger = new Logger(this, category, options);
|
|
182
|
-
this.loggers.set(category, logger);
|
|
183
|
-
return logger;
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Configure the logging manager,
|
|
188
|
-
* this function is additive, so simply calling
|
|
189
|
-
* `configure` with a single option `rootLevel`,
|
|
190
|
-
* will not affect other options like `appenders` *
|
|
191
|
-
*
|
|
192
|
-
* @param {LoggingManagerOptions<any>} options
|
|
193
|
-
* @returns {this<Record>}
|
|
194
|
-
*/
|
|
195
|
-
configure(options) {
|
|
196
|
-
if (Level[options?.rootLevel]) {
|
|
197
|
-
this.setRootLevel(options.rootLevel);
|
|
198
|
-
}
|
|
199
|
-
if (options?.appenders) {
|
|
200
|
-
this.setAppenders(options.appenders);
|
|
201
|
-
}
|
|
202
|
-
if (options?.thresholdOverrides) {
|
|
203
|
-
this.addThresholdOverrides(...options.thresholdOverrides);
|
|
204
|
-
}
|
|
205
|
-
return this;
|
|
206
|
-
}
|
|
207
|
-
constructor() {
|
|
208
|
-
this.configure({});
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Singleton instance
|
|
212
|
-
*
|
|
213
|
-
* @type {LoggingManager}
|
|
214
|
-
* @private
|
|
215
|
-
*/
|
|
216
|
-
static manager;
|
|
217
|
-
/**
|
|
218
|
-
* Get logging manager and optionally provided
|
|
219
|
-
* configuration options
|
|
220
|
-
*
|
|
221
|
-
* @param {LoggingManagerOptions<Record>} options
|
|
222
|
-
* @returns {LoggingManager<Record>}
|
|
223
|
-
*/
|
|
224
|
-
static get(options = null) {
|
|
225
|
-
if (!this.manager) {
|
|
226
|
-
this.manager = new LoggingManager();
|
|
227
|
-
}
|
|
228
|
-
if (options) {
|
|
229
|
-
this.manager.configure(options);
|
|
230
|
-
}
|
|
231
|
-
return this.manager;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
export function getLoggingManager() {
|
|
235
|
-
return LoggingManager.get();
|
|
236
|
-
}
|
|
237
|
-
if (Option.try_(() => process.env.NODE_ENV === "development").getOrElse(false)) {
|
|
238
|
-
[typeof window !== "undefined" && window, typeof global !== "undefined" && global].filter(isObject)
|
|
239
|
-
.map(target => Object.assign(target, {
|
|
240
|
-
loggingManager: getLoggingManager()
|
|
241
|
-
}));
|
|
242
|
-
}
|
|
243
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nZ2luZ01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9nZ2luZy9Mb2dnaW5nTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxLQUFLLEVBQWEsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQWlCLE1BQU0sYUFBYSxDQUFBO0FBRW5ELE9BQU8sRUFBYyxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQWlCN0MsU0FBUyw4QkFBOEIsQ0FDckMsS0FBYSxFQUNiLFFBQW1CLE9BQU87SUFFMUIsT0FBTyxLQUFLO1NBQ1QsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQXNCLENBQUMsQ0FBQTtBQUM1RCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7S0FDbEgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUN2QixHQUFHLENB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VUFBeUMsSUFBSTtRQUU3QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxjQUFjLEVBQVUsQ0FBQTtRQUM3QyxDQUFDO1FBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2pDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDckIsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixPQUFPLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtBQUM3QixDQUFDO0FBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQy9FLENBQUMsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sRUFBRSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUNoRyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNuQyxjQUFjLEVBQUUsaUJBQWlCLEVBQUU7S0FDcEMsQ0FBQyxDQUFDLENBQUE7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdW1iZXIsIGlzT2JqZWN0LCBpc1N0cmluZyB9IGZyb20gXCIuLi9ndWFyZHMvaW5kZXguanNcIlxuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSBcInByZWx1ZGUtdHNcIlxuaW1wb3J0IHsgZmxhdHRlbiwgaXNFbXB0eSwgbWluLCBuZWdhdGUgfSBmcm9tIFwibG9kYXNoXCJcbmltcG9ydCB0eXBlIHsgQXBwZW5kZXIgfSBmcm9tIFwiLi9BcHBlbmRlci5qc1wiXG5pbXBvcnQgeyBDb25zb2xlQXBwZW5kZXIgfSBmcm9tIFwiLi9hcHBlbmRlcnMvQ29uc29sZUFwcGVuZGVyLmpzXCJcbmltcG9ydCB7IExldmVsLCBMZXZlbEtpbmQsIExldmVsVGhyZXNob2xkcyB9IGZyb20gXCIuL0xldmVsLmpzXCJcbmltcG9ydCB7IExvZ2dlciwgTG9nZ2VyT3B0aW9ucyB9IGZyb20gXCIuL0xvZ2dlci5qc1wiXG5pbXBvcnQgdHlwZSB7IExvZ01ldGFkYXRhLCBMb2dSZWNvcmQgfSBmcm9tIFwiLi9Mb2dSZWNvcmQuanNcIlxuaW1wb3J0IHsgTG9nQ29udGV4dCwgTG9nQ29udGV4dENvbnRhaW5lciB9IGZyb20gXCIuL2NvbnRleHQvaW5kZXguanNcIlxuaW1wb3J0IHsgZmxvdywgZ2V0LCBudGggfSBmcm9tIFwibG9kYXNoL2ZwLmpzXCJcblxuZXhwb3J0IHR5cGUgQ2F0ZWdvcnlNYXRjaCA9IFJlZ0V4cCB8IHN0cmluZ1xuXG5leHBvcnQgdHlwZSBUaHJlc2hvbGRPdmVycmlkZSA9IFttYXRjaDogQ2F0ZWdvcnlNYXRjaCwgbGV2ZWw6IExldmVsS2luZF1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dnaW5nTWFuYWdlclN0YXRlPFJlY29yZCBleHRlbmRzIExvZ1JlY29yZD4ge1xuICByb290TGV2ZWw6IExldmVsS2luZFxuICBnbG9iYWxNZXRhZGF0YT86IExvZ01ldGFkYXRhXG4gIGFwcGVuZGVyczogQXJyYXk8QXBwZW5kZXI8UmVjb3JkPj5cbiAgdGhyZXNob2xkT3ZlcnJpZGVzOiBBcnJheTxUaHJlc2hvbGRPdmVycmlkZT5cbn1cblxuZXhwb3J0IHR5cGUgTG9nZ2luZ01hbmFnZXJPcHRpb25zPFJlY29yZCBleHRlbmRzIExvZ1JlY29yZD4gPSBQYXJ0aWFsPFxuICBMb2dnaW5nTWFuYWdlclN0YXRlPFJlY29yZD5cbj5cblxuZnVuY3Rpb24gcGFyc2VUaHJlc2hvbGRPdmVycmlkZVBhdHRlcm5zKFxuICB2YWx1ZTogc3RyaW5nLFxuICBsZXZlbDogTGV2ZWxLaW5kID0gXCJkZWJ1Z1wiXG4pOiBUaHJlc2hvbGRPdmVycmlkZVtdIHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgLnNwbGl0KFwiLFwiKVxuICAgIC5tYXAoKHMpID0+IFtuZXcgUmVnRXhwKHMpLCBsZXZlbF0gYXMgVGhyZXNob2xkT3ZlcnJpZGUpXG59XG5cbmV4cG9ydCBjb25zdCBrRW52VGhyZXNob2xkT3ZlcnJpZGVzID0gT3B0aW9uLm9mTnVsbGFibGUodHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy5lbnYuREVCVUdfUEFUVEVSTlMpXG4gIC5maWx0ZXIobmVnYXRlKGlzRW1wdHkpKVxuICAubWFwKHBhcnNlVGhyZXNob2xkT3ZlcnJpZGVQYXR0ZXJucylcbiAgLmdldE9yRWxzZShbXSlcblxuLyoqXG4gKiBMb2dnaW5nIG1hbmFnZXJcbiAqL1xuZXhwb3J0IGNsYXNzIExvZ2dpbmdNYW5hZ2VyPFJlY29yZCBleHRlbmRzIExvZ1JlY29yZCA9IGFueT4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcnMgPSBuZXcgTWFwPHN0cmluZywgTG9nZ2VyPigpXG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZTogTG9nZ2luZ01hbmFnZXJTdGF0ZTxSZWNvcmQ+ID0ge1xuICAgIGFwcGVuZGVyczogW10sXG4gICAgZ2xvYmFsTWV0YWRhdGE6IHt9LFxuICAgIHJvb3RMZXZlbDogTGV2ZWwuaW5mbyxcbiAgICB0aHJlc2hvbGRPdmVycmlkZXM6IGtFbnZUaHJlc2hvbGRPdmVycmlkZXNcbiAgfVxuXG4gIGdldCByb290TGV2ZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUucm9vdExldmVsXG4gIH1cblxuICBnZXQgZ2xvYmFsTWV0YWRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZ2xvYmFsTWV0YWRhdGFcbiAgfVxuXG4gIHNldCBnbG9iYWxNZXRhZGF0YShuZXdNZXRhZGF0YTogTG9nTWV0YWRhdGEpIHtcbiAgICB0aGlzLnN0YXRlLmdsb2JhbE1ldGFkYXRhID0gbmV3TWV0YWRhdGEgPz8ge31cbiAgfVxuXG4gIHNldCByb290TGV2ZWwobmV3Um9vdExldmVsOiBMZXZlbEtpbmQpIHtcbiAgICB0aGlzLnN0YXRlLnJvb3RMZXZlbCA9IG5ld1Jvb3RMZXZlbFxuICB9XG5cbiAgZ2V0IHJvb3RUaHJlc2hvbGQoKSB7XG4gICAgcmV0dXJuIExldmVsVGhyZXNob2xkc1t0aGlzLnJvb3RMZXZlbF1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgaGFuZGxlclxuICAgKlxuICAgKiBAcmV0dXJucyB7QXBwZW5kZXI8UmVjb3JkPn1cbiAgICovXG4gIGdldCBhcHBlbmRlcnMoKTogQXJyYXk8QXBwZW5kZXI8UmVjb3JkPj4ge1xuICAgIHJldHVybiBPcHRpb24ub2ZOdWxsYWJsZSh0aGlzLnN0YXRlLmFwcGVuZGVycylcbiAgICAgIC5maWx0ZXIoKGFwcGVuZGVycykgPT4gYXBwZW5kZXJzLmxlbmd0aCA+IDApXG4gICAgICAuZ2V0T3JDYWxsKCgpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZS5hcHBlbmRlcnMucHVzaChuZXcgQ29uc29sZUFwcGVuZGVyKCkpXG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmFwcGVuZGVyc1xuICAgICAgfSlcbiAgfVxuICBcbiAgLyoqXG4gICAqIEdsb2JhbCB0aHJlc2hvbGQgb3ZlcnJpZGVzXG4gICAqL1xuICBnZXQgdGhyZXNob2xkT3ZlcnJpZGVzKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLnRocmVzaG9sZE92ZXJyaWRlc1xuICB9XG4gIFxuICAvKipcbiAgICogVXBkYXRlIHRoZSBvdmVycmlkZXNcbiAgICpcbiAgICogQHBhcmFtIG5ld092ZXJyaWRlc1xuICAgKi9cbiAgc2V0IHRocmVzaG9sZE92ZXJyaWRlcyhuZXdPdmVycmlkZXM6VGhyZXNob2xkT3ZlcnJpZGVbXSkge1xuICAgIHRoaXMuc3RhdGUudGhyZXNob2xkT3ZlcnJpZGVzID0gbmV3T3ZlcnJpZGVzXG4gIH1cbiAgXG4gIC8qKlxuICAgKiBTZXQgZ2xvYmFsIGFwcGVuZGVyc1xuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5PEFwcGVuZGVyPFJlY29yZD4+fSBuZXdBcHBlbmRlcnNcbiAgICovXG4gIHNldEFwcGVuZGVycyguLi5uZXdBcHBlbmRlcnM6IEFycmF5PEFwcGVuZGVyPFJlY29yZD4gfCBBcHBlbmRlcjxSZWNvcmQ+W10+KSB7XG4gICAgLy8gV0UgTVVUQVRFIERPIFRPIFRIRSBMSUtFTElIT09EIE9GIFNPTUVPTkUgSE9MRElORyBBIFJFRiBUTyBUSEUgQVJSQVksXG4gICAgLy8gQ09OVkVSVCBUTyBPQlNFUlZBQkxFIEFUIFNPTUUgUE9JTlRcbiAgICBjb25zdCBwZXJzaXN0ZW50QXBwZW5kZXJzID0gdGhpcy5zdGF0ZS5hcHBlbmRlcnNcbiAgICBwZXJzaXN0ZW50QXBwZW5kZXJzLmxlbmd0aCA9IDBcbiAgICBwZXJzaXN0ZW50QXBwZW5kZXJzLnB1c2goLi4uZmxhdHRlbihuZXdBcHBlbmRlcnMpKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuICBcbiAgLyoqXG4gICAqIEFkZCBvbmUgb3IgbW9yZSBhcHBlbmRlcnMgdG8gZXhpc3RpbmcgYXBwZW5kZXIgc2V0XG4gICAqXG4gICAqIEBwYXJhbSB7QXBwZW5kZXI8UmVjb3JkPiB8IEFwcGVuZGVyPFJlY29yZD5bXX0gbmV3QXBwZW5kZXJzXG4gICAqIEByZXR1cm5zIHt0aGlzPFJlY29yZD59XG4gICAqL1xuICBhZGRBcHBlbmRlcnMoLi4ubmV3QXBwZW5kZXJzOiBBcnJheTxBcHBlbmRlcjxSZWNvcmQ+IHwgQXBwZW5kZXI8UmVjb3JkPltdPik6IHRoaXMge1xuICAgIHRoaXMuc3RhdGUuYXBwZW5kZXJzLnB1c2goLi4uZmxhdHRlbihuZXdBcHBlbmRlcnMpKVxuICAgIHJldHVybiB0aGlzXG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDbGVhciB0aHJlc2hvbGQgb3ZlcnJpZGVzXG4gICAqXG4gICAqIEByZXR1cm5zIHt0aGlzPFJlY29yZD59XG4gICAqL1xuICBjbGVhclRocmVzaG9sZE92ZXJyaWRlcygpOiB0aGlzIHtcbiAgICB0aGlzLnN0YXRlLnRocmVzaG9sZE92ZXJyaWRlcy5sZW5ndGggPSAwXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHNldFRocmVzaG9sZE92ZXJyaWRlcyguLi5vdmVycmlkZXM6IEFycmF5PFRocmVzaG9sZE92ZXJyaWRlPikge1xuICAgIHRoaXMuc3RhdGUudGhyZXNob2xkT3ZlcnJpZGVzLmxlbmd0aCA9IDBcbiAgICB0aGlzLnN0YXRlLnRocmVzaG9sZE92ZXJyaWRlcy5wdXNoKC4uLm92ZXJyaWRlcylcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgYWRkVGhyZXNob2xkT3ZlcnJpZGVzKC4uLm92ZXJyaWRlczogQXJyYXk8VGhyZXNob2xkT3ZlcnJpZGU+KSB7XG4gICAgdGhpcy5zdGF0ZS50aHJlc2hvbGRPdmVycmlkZXMucHVzaCguLi5vdmVycmlkZXMpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYXBwbGljYWJsZSBjdXJyZW50IGNvbnRleHRzXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjYXRlZ29yeVxuICAgKiBAcmV0dXJucyB7TG9nQ29udGV4dFtdfVxuICAgKi9cbiAgZ2V0QXBwbGljYWJsZUN1cnJlbnRDb250ZXh0cyhjYXRlZ29yeTogc3RyaW5nKTogTG9nQ29udGV4dFtdIHtcbiAgICByZXR1cm4gTG9nQ29udGV4dENvbnRhaW5lci5jdXJyZW50Q29udGV4dCgpLmZpbHRlcihcbiAgICAgICh7IHBhdHRlcm4gfSkgPT4gIXBhdHRlcm4gfHwgcGF0dGVybi50ZXN0KGNhdGVnb3J5KVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBmb3IgYW55IG1hdGNoaW5nIHRocmVzaG9sZCBvdmVycmlkZXNcbiAgICpcbiAgICogQHBhcmFtIGNhdGVnb3J5XG4gICAqL1xuICBkZXRlcm1pbmVUaHJlc2hvbGRPdmVycmlkZShjYXRlZ29yeTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCBjb250ZXh0cyA9IHRoaXMuZ2V0QXBwbGljYWJsZUN1cnJlbnRDb250ZXh0cyhjYXRlZ29yeSksXG4gICAgICBcbiAgICAvLyBGSU5EIENPTkZJR1VSRUQgT1ZFUlJJREUgTEVWRUxcbiAgICAgIG92ZXJyaWRlVGhyZXNob2xkID0gT3B0aW9uLm9mTnVsbGFibGUoXG4gICAgICAgIHRoaXMudGhyZXNob2xkT3ZlcnJpZGVzLmZpbmQoKFttYXRjaF0pID0+XG4gICAgICAgICAgaXNTdHJpbmcobWF0Y2gpID8gbWF0Y2ggPT09IGNhdGVnb3J5IDogKG1hdGNoIGFzIFJlZ0V4cCkudGVzdChjYXRlZ29yeSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgICAubWFwKG50aCgxKSlcbiAgICAgICAgLm1hcCgobGV2ZWwpID0+IExldmVsVGhyZXNob2xkc1tsZXZlbCBhcyBMZXZlbF0pXG4gICAgICAgIC5nZXRPck51bGwoKSxcbiAgICAgIC8vIEZJTkQgYExvZ0NvbnRleHRgIE9WRVJSSURFIExFVkVMXG4gICAgICBjb250ZXh0VGhyZXNob2xkcyA9IGNvbnRleHRzXG4gICAgICAgIC5maWx0ZXIoZmxvdyhnZXQoXCJ0aHJlc2hvbGRMZXZlbFwiKSwgaXNTdHJpbmcpKVxuICAgICAgICAubWFwKCh7IHRocmVzaG9sZExldmVsIH0pID0+IExldmVsVGhyZXNob2xkc1t0aHJlc2hvbGRMZXZlbF0pLFxuICAgICAgLy8gSUYgQU5ZIE9WRVJSSURFUywgR0VUIFRIRSBNT1NUIFZFUkJPU0UgTEVWRUxcbiAgICAgIG92ZXJyaWRlID0gT3B0aW9uLm9mTnVsbGFibGUoXG4gICAgICAgIFsuLi5jb250ZXh0VGhyZXNob2xkcywgb3ZlcnJpZGVUaHJlc2hvbGRdLmZpbHRlcihpc051bWJlcilcbiAgICAgIClcbiAgICAgICAgLmZpbHRlcihuZWdhdGUoaXNFbXB0eSkpXG4gICAgICAgIC5tYXAobWluKVxuICAgICAgICAuZ2V0T3JOdWxsKClcblxuICAgIHJldHVybiBvdmVycmlkZSBhcyBudW1iZXJcbiAgfVxuICBcbiAgLyoqXG4gICAqIFNldCB0aGUgcm9vdCBsb2dnaW5nIGxldmVsXG4gICAqXG4gICAqIEBwYXJhbSB7TGV2ZWxLaW5kfSBuZXdMZXZlbFxuICAgKiBAcmV0dXJucyB7dGhpczxSZWNvcmQ+fVxuICAgKi9cbiAgc2V0Um9vdExldmVsKG5ld0xldmVsOiBMZXZlbEtpbmQpOiB0aGlzIHtcbiAgICB0aGlzLnN0YXRlLnJvb3RMZXZlbCA9IG5ld0xldmVsXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuICBcbiAgLyoqXG4gICAqIEZpcmUgYSBsb2cgZXZlbnQsIGV2ZW50dWFsbHlcbiAgICogaW52ZXJ0IHRoaXMgYnkgbWFraW5nIGBMb2dnZXJgIGFuXG4gICAqIGBFdmVudEVtaXR0ZXIzYCBhbmQgaGF2aW5nIHRoZSBgTG9nZ2luZ01hbmFnZXJgXG4gICAqIHN1YnNjcmliZSB0byBgcmVjb3JkYCBldmVudFxuICAgKlxuICAgKiBAcGFyYW0ge0xvZ1JlY29yZDxSZWNvcmQ+fSByZWNvcmRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBmaXJlKHJlY29yZDogTG9nUmVjb3JkPFJlY29yZD4pIHtcbiAgICBjb25zdCB7IGNhdGVnb3J5IH0gPSByZWNvcmQsXG4gICAgICBjb250ZXh0cyA9IHRoaXMuZ2V0QXBwbGljYWJsZUN1cnJlbnRDb250ZXh0cyhjYXRlZ29yeSksXG4gICAgICBjb250ZXh0QXBwZW5kZXJzID0gY29udGV4dHMuZmxhdE1hcChnZXQoXCJhcHBlbmRlcnNcIikpLFxuICAgICAgYXBwZW5kZXJzID0gWy4uLnRoaXMuYXBwZW5kZXJzLCAuLi5jb250ZXh0QXBwZW5kZXJzXVxuXG4gICAgYXBwZW5kZXJzLmZvckVhY2goKGFwcGVuZGVyKSA9PiBhcHBlbmRlci5hcHBlbmQocmVjb3JkIGFzIFJlY29yZCkpXG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgYSBsb2dnZXIgZnJvbSBjYWNoZSwgaWYgdGhlIGNhdGVnb3J5XG4gICAqIGRvZXMgbm90IGhhdmUgYW4gZXhpc3RpbmcgbG9nZ2VyLCB0aGVuIGNyZWF0ZSBvbmUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjYXRlZ29yeU9yRmlsZW5hbWVcbiAgICogQHBhcmFtIHtQYXJ0aWFsPExvZ2dlck9wdGlvbnM+fSBpbk9wdGlvbnNcbiAgICogQHJldHVybnMge0xvZ2dlcn1cbiAgICovXG4gIGdldExvZ2dlcihcbiAgICBjYXRlZ29yeU9yRmlsZW5hbWU6IHN0cmluZyxcbiAgICBpbk9wdGlvbnM6IFBhcnRpYWw8TG9nZ2VyT3B0aW9ucz4gPSB7fVxuICApOiBMb2dnZXIge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBMb2dnZXIuaHlkcmF0ZU9wdGlvbnMoaW5PcHRpb25zKVxuICAgIGNvbnN0IGNhdGVnb3J5ID0gTG9nZ2VyLmludGVyb3BsYXRlQ2F0ZWdvcnkoY2F0ZWdvcnlPckZpbGVuYW1lLCBvcHRpb25zKVxuXG4gICAgcmV0dXJuIE9wdGlvbi5vZk51bGxhYmxlKGNhdGVnb3J5KVxuICAgICAgLm1hcCgoY2F0ZWdvcnkpID0+IHRoaXMubG9nZ2Vycy5nZXQoY2F0ZWdvcnkpKVxuICAgICAgLmdldE9yQ2FsbCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIodGhpcywgY2F0ZWdvcnksIG9wdGlvbnMpXG4gICAgICAgIHRoaXMubG9nZ2Vycy5zZXQoY2F0ZWdvcnksIGxvZ2dlcilcbiAgICAgICAgcmV0dXJuIGxvZ2dlclxuICAgICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgdGhlIGxvZ2dpbmcgbWFuYWdlcixcbiAgICogdGhpcyBmdW5jdGlvbiBpcyBhZGRpdGl2ZSwgc28gc2ltcGx5IGNhbGxpbmdcbiAgICogYGNvbmZpZ3VyZWAgd2l0aCBhIHNpbmdsZSBvcHRpb24gYHJvb3RMZXZlbGAsXG4gICAqIHdpbGwgbm90IGFmZmVjdCBvdGhlciBvcHRpb25zIGxpa2UgYGFwcGVuZGVyc2AgICAqXG4gICAqXG4gICAqIEBwYXJhbSB7TG9nZ2luZ01hbmFnZXJPcHRpb25zPGFueT59IG9wdGlvbnNcbiAgICogQHJldHVybnMge3RoaXM8UmVjb3JkPn1cbiAgICovXG4gIGNvbmZpZ3VyZShvcHRpb25zOiBMb2dnaW5nTWFuYWdlck9wdGlvbnM8YW55Pik6IHRoaXMge1xuICAgIGlmIChMZXZlbFtvcHRpb25zPy5yb290TGV2ZWxdKSB7XG4gICAgICB0aGlzLnNldFJvb3RMZXZlbChvcHRpb25zLnJvb3RMZXZlbClcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8uYXBwZW5kZXJzKSB7XG4gICAgICB0aGlzLnNldEFwcGVuZGVycyhvcHRpb25zLmFwcGVuZGVycylcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8udGhyZXNob2xkT3ZlcnJpZGVzKSB7XG4gICAgICB0aGlzLmFkZFRocmVzaG9sZE92ZXJyaWRlcyguLi5vcHRpb25zLnRocmVzaG9sZE92ZXJyaWRlcylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNvbmZpZ3VyZSh7fSlcbiAgfVxuICBcbiAgLyoqXG4gICAqIFNpbmdsZXRvbiBpbnN0YW5jZVxuICAgKlxuICAgKiBAdHlwZSB7TG9nZ2luZ01hbmFnZXJ9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBtYW5hZ2VyOiBMb2dnaW5nTWFuYWdlclxuICBcbiAgLyoqXG4gICAqIEdldCBsb2dnaW5nIG1hbmFnZXIgYW5kIG9wdGlvbmFsbHkgcHJvdmlkZWRcbiAgICogY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqXG4gICAqIEBwYXJhbSB7TG9nZ2luZ01hbmFnZXJPcHRpb25zPFJlY29yZD59IG9wdGlvbnNcbiAgICogQHJldHVybnMge0xvZ2dpbmdNYW5hZ2VyPFJlY29yZD59XG4gICAqL1xuICBzdGF0aWMgZ2V0PFJlY29yZCBleHRlbmRzIExvZ1JlY29yZCA9IGFueT4oXG4gICAgb3B0aW9uczogTG9nZ2luZ01hbmFnZXJPcHRpb25zPFJlY29yZD4gPSBudWxsXG4gICk6IExvZ2dpbmdNYW5hZ2VyPFJlY29yZD4ge1xuICAgIGlmICghdGhpcy5tYW5hZ2VyKSB7XG4gICAgICB0aGlzLm1hbmFnZXIgPSBuZXcgTG9nZ2luZ01hbmFnZXI8UmVjb3JkPigpXG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMubWFuYWdlci5jb25maWd1cmUob3B0aW9ucylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tYW5hZ2VyXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ2dpbmdNYW5hZ2VyKCk6IExvZ2dpbmdNYW5hZ2VyIHtcbiAgcmV0dXJuIExvZ2dpbmdNYW5hZ2VyLmdldCgpXG59XG5cbmlmIChPcHRpb24udHJ5XygoKSA9PiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKS5nZXRPckVsc2UoZmFsc2UpKSB7XG4gIFt0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvdywgdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBnbG9iYWxdLmZpbHRlcihpc09iamVjdClcbiAgICAubWFwKHRhcmdldCA9PiBPYmplY3QuYXNzaWduKHRhcmdldCwge1xuICAgICAgbG9nZ2luZ01hbmFnZXI6IGdldExvZ2dpbmdNYW5hZ2VyKClcbiAgICB9KSlcbn0iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
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,CAAC,MAAM,SAAS,SAAS,CACnD,YAAW,QAAQ,CAAC,MAAM,CAAC;IAE3B,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"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { Option } from "prelude-ts";
|
|
2
|
-
const consoleLogBindings = new Map();
|
|
3
|
-
function getBoundConsoleFn(level) {
|
|
4
|
-
return (console[level] ?? console.log).bind(console);
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Get a cached console bound log function
|
|
8
|
-
*
|
|
9
|
-
* @param {LevelKind} level
|
|
10
|
-
* @returns {(...args: any[]) => any}
|
|
11
|
-
*/
|
|
12
|
-
export function getConsoleLogBinding(level) {
|
|
13
|
-
if (!consoleLogBindings.has(level)) {
|
|
14
|
-
consoleLogBindings.set(level, getBoundConsoleFn(level));
|
|
15
|
-
}
|
|
16
|
-
return consoleLogBindings.get(level);
|
|
17
|
-
}
|
|
18
|
-
export const consoleFormatter = ({ level, message, data, args, category, timestamp }) => [
|
|
19
|
-
`[${category}] (${level}) ${message}`,
|
|
20
|
-
...(Array.isArray(args) ? args : [args])
|
|
21
|
-
];
|
|
22
|
-
/**
|
|
23
|
-
* Default console config
|
|
24
|
-
* @type {ConsoleAppenderConfig}
|
|
25
|
-
*/
|
|
26
|
-
export const kDefaultConsoleAppenderConfig = {
|
|
27
|
-
cacheEnabled: true,
|
|
28
|
-
prettyPrint: true,
|
|
29
|
-
formatter: consoleFormatter
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* Console appender, the simple default appender used
|
|
33
|
-
* everywhere OOB
|
|
34
|
-
*/
|
|
35
|
-
export class ConsoleAppender {
|
|
36
|
-
config;
|
|
37
|
-
/**
|
|
38
|
-
* Handle log records, transform, push to ES
|
|
39
|
-
*
|
|
40
|
-
* @param record
|
|
41
|
-
*/
|
|
42
|
-
append(record) {
|
|
43
|
-
const { level, message, data, args, category, timestamp } = record;
|
|
44
|
-
const { formatter = consoleFormatter } = this.config;
|
|
45
|
-
Option.ofNullable(formatter(record)).map((result) => {
|
|
46
|
-
const args = Array.isArray(result) ? result : [result];
|
|
47
|
-
this.write(level, ...args);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Write args to console
|
|
52
|
-
*
|
|
53
|
-
* @param level
|
|
54
|
-
* @param args
|
|
55
|
-
*/
|
|
56
|
-
write(level, ...args) {
|
|
57
|
-
Option.ofNullable(console[level])
|
|
58
|
-
.orCall(() => Option.ofNullable(console.log))
|
|
59
|
-
.map((fn) => fn.apply(console, args));
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
*
|
|
63
|
-
* @param {Partial<ConsoleAppenderOptions<Record>>} options
|
|
64
|
-
*/
|
|
65
|
-
constructor(options = {}) {
|
|
66
|
-
this.config = {
|
|
67
|
-
...kDefaultConsoleAppenderConfig,
|
|
68
|
-
...options
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc29sZUFwcGVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xvZ2dpbmcvYXBwZW5kZXJzL0NvbnNvbGVBcHBlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBSW5DLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQXNDLENBQUE7QUFFeEUsU0FBUyxpQkFBaUIsQ0FBQyxLQUFnQjtJQUN6QyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDdEQsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQWdCO0lBQ25ELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDekQsQ0FBQztJQUVELE9BQU8sa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ3RDLENBQUM7QUFrQkQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQTBCLENBQUMsRUFDdEQsS0FBSyxFQUNMLE9BQU8sRUFDUCxJQUFJLEVBQ0osSUFBSSxFQUNKLFFBQVEsRUFDUixTQUFTLEVBQ1YsRUFBRSxFQUFFLENBQUM7SUFDSixJQUFJLFFBQVEsT0FBTyxLQUFLLE1BQU0sT0FBTyxFQUFFO0lBQ3ZDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDekMsQ0FBQTtBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUEwQjtJQUNsRSxZQUFZLEVBQUUsSUFBSTtJQUNsQixXQUFXLEVBQUUsSUFBSTtJQUNqQixTQUFTLEVBQUUsZ0JBQWdCO0NBQzVCLENBQUE7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUdqQixNQUFNLENBQXVCO0lBRXRDOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsTUFBYztRQUNuQixNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUE7UUFDbEUsTUFBTSxFQUFFLFNBQVMsR0FBRyxnQkFBZ0IsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDcEQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNsRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUM1QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLEtBQUssQ0FBQyxLQUFnQixFQUFFLEdBQUcsSUFBVztRQUM5QyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM1QixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDNUMsR0FBRyxDQUFDLENBQUMsRUFBWSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3JELENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLFVBQW1ELEVBQUU7UUFDL0QsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsNkJBQTZCO1lBQ2hDLEdBQUcsT0FBTztTQUNYLENBQUE7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExvZ1JlY29yZCB9IGZyb20gXCIuLi9Mb2dSZWNvcmRcIlxuaW1wb3J0IHR5cGUgeyBBcHBlbmRlciB9IGZyb20gXCIuLi9BcHBlbmRlclwiXG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tIFwicHJlbHVkZS10c1wiXG5pbXBvcnQgdHlwZSB7IExldmVsS2luZCB9IGZyb20gXCIuLi9MZXZlbFwiXG5pbXBvcnQgdHlwZSB7IEZvcm1hdHRlciB9IGZyb20gXCIuLi9Gb3JtYXR0ZXJcIlxuXG5jb25zdCBjb25zb2xlTG9nQmluZGluZ3MgPSBuZXcgTWFwPExldmVsS2luZCwgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KClcblxuZnVuY3Rpb24gZ2V0Qm91bmRDb25zb2xlRm4obGV2ZWw6IExldmVsS2luZCkge1xuICByZXR1cm4gKGNvbnNvbGVbbGV2ZWxdID8/IGNvbnNvbGUubG9nKS5iaW5kKGNvbnNvbGUpXG59XG5cbi8qKlxuICogR2V0IGEgY2FjaGVkIGNvbnNvbGUgYm91bmQgbG9nIGZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtMZXZlbEtpbmR9IGxldmVsXG4gKiBAcmV0dXJucyB7KC4uLmFyZ3M6IGFueVtdKSA9PiBhbnl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25zb2xlTG9nQmluZGluZyhsZXZlbDogTGV2ZWxLaW5kKSB7XG4gIGlmICghY29uc29sZUxvZ0JpbmRpbmdzLmhhcyhsZXZlbCkpIHtcbiAgICBjb25zb2xlTG9nQmluZGluZ3Muc2V0KGxldmVsLCBnZXRCb3VuZENvbnNvbGVGbihsZXZlbCkpXG4gIH1cblxuICByZXR1cm4gY29uc29sZUxvZ0JpbmRpbmdzLmdldChsZXZlbClcbn1cblxuLyoqXG4gKiBDb25zb2xlQXBwZW5kZXIgQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnNvbGVBcHBlbmRlckNvbmZpZzxSZWNvcmQgZXh0ZW5kcyBMb2dSZWNvcmQgPSBhbnk+IHtcbiAgY2FjaGVFbmFibGVkOiBib29sZWFuXG4gIHByZXR0eVByaW50OiBib29sZWFuXG4gIGZvcm1hdHRlcj86IEZvcm1hdHRlcjxzdHJpbmcgfCBBcnJheTxhbnk+PlxufVxuXG4vKipcbiAqIFBhcnRpYWwgb2YgY29uZmlnLCB1c2VkIGZvciBzaG9ydGVuaW5nIGluc3RlYWQgb2YgUGFydGlhbDwuLi4+XG4gKi9cbmV4cG9ydCB0eXBlIENvbnNvbGVBcHBlbmRlck9wdGlvbnM8UmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkPiA9IFBhcnRpYWw8XG4gIENvbnNvbGVBcHBlbmRlckNvbmZpZzxSZWNvcmQ+XG4+XG5cbmV4cG9ydCBjb25zdCBjb25zb2xlRm9ybWF0dGVyOiBGb3JtYXR0ZXI8QXJyYXk8YW55Pj4gPSAoe1xuICBsZXZlbCxcbiAgbWVzc2FnZSxcbiAgZGF0YSxcbiAgYXJncyxcbiAgY2F0ZWdvcnksXG4gIHRpbWVzdGFtcFxufSkgPT4gW1xuICBgWyR7Y2F0ZWdvcnl9XSAgKCR7bGV2ZWx9KSAgJHttZXNzYWdlfWAsXG4gIC4uLihBcnJheS5pc0FycmF5KGFyZ3MpID8gYXJncyA6IFthcmdzXSlcbl1cblxuLyoqXG4gKiBEZWZhdWx0IGNvbnNvbGUgY29uZmlnXG4gKiBAdHlwZSB7Q29uc29sZUFwcGVuZGVyQ29uZmlnfVxuICovXG5leHBvcnQgY29uc3Qga0RlZmF1bHRDb25zb2xlQXBwZW5kZXJDb25maWc6IENvbnNvbGVBcHBlbmRlckNvbmZpZyA9IHtcbiAgY2FjaGVFbmFibGVkOiB0cnVlLFxuICBwcmV0dHlQcmludDogdHJ1ZSxcbiAgZm9ybWF0dGVyOiBjb25zb2xlRm9ybWF0dGVyXG59XG5cbi8qKlxuICogQ29uc29sZSBhcHBlbmRlciwgdGhlIHNpbXBsZSBkZWZhdWx0IGFwcGVuZGVyIHVzZWRcbiAqIGV2ZXJ5d2hlcmUgT09CXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25zb2xlQXBwZW5kZXI8UmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkPlxuICBpbXBsZW1lbnRzIEFwcGVuZGVyPFJlY29yZD5cbntcbiAgcmVhZG9ubHkgY29uZmlnOiBDb25zb2xlQXBwZW5kZXJDb25maWdcblxuICAvKipcbiAgICogSGFuZGxlIGxvZyByZWNvcmRzLCB0cmFuc2Zvcm0sIHB1c2ggdG8gRVNcbiAgICpcbiAgICogQHBhcmFtIHJlY29yZFxuICAgKi9cbiAgYXBwZW5kKHJlY29yZDogUmVjb3JkKTogdm9pZCB7XG4gICAgY29uc3QgeyBsZXZlbCwgbWVzc2FnZSwgZGF0YSwgYXJncywgY2F0ZWdvcnksIHRpbWVzdGFtcCB9ID0gcmVjb3JkXG4gICAgY29uc3QgeyBmb3JtYXR0ZXIgPSBjb25zb2xlRm9ybWF0dGVyIH0gPSB0aGlzLmNvbmZpZ1xuICAgIE9wdGlvbi5vZk51bGxhYmxlKGZvcm1hdHRlcihyZWNvcmQpKS5tYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgY29uc3QgYXJncyA9IEFycmF5LmlzQXJyYXkocmVzdWx0KSA/IHJlc3VsdCA6IFtyZXN1bHRdXG4gICAgICB0aGlzLndyaXRlKGxldmVsLCAuLi5hcmdzKVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgYXJncyB0byBjb25zb2xlXG4gICAqIFxuICAgKiBAcGFyYW0gbGV2ZWwgXG4gICAqIEBwYXJhbSBhcmdzIFxuICAgKi9cbiAgcHJvdGVjdGVkIHdyaXRlKGxldmVsOiBMZXZlbEtpbmQsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgT3B0aW9uLm9mTnVsbGFibGUoY29uc29sZVtsZXZlbF0pXG4gICAgICAgIC5vckNhbGwoKCkgPT4gT3B0aW9uLm9mTnVsbGFibGUoY29uc29sZS5sb2cpKVxuICAgICAgICAubWFwKChmbjogRnVuY3Rpb24pID0+IGZuLmFwcGx5KGNvbnNvbGUsIGFyZ3MpKVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGlhbDxDb25zb2xlQXBwZW5kZXJPcHRpb25zPFJlY29yZD4+fSBvcHRpb25zXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBQYXJ0aWFsPENvbnNvbGVBcHBlbmRlck9wdGlvbnM8UmVjb3JkPj4gPSB7fSkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4ua0RlZmF1bHRDb25zb2xlQXBwZW5kZXJDb25maWcsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
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,CAAC,MAAM,SAAS,SAAS,CAChD,YAAW,QAAQ,CAAC,MAAM,CAAC;IAE3B,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"}
|