opennms
Version:
Client API for the OpenNMS network monitoring platform
1 lines • 57.1 kB
JSON
{"remainingRequest":"/data/node_modules/babel-loader/lib/index.js!/data/node_modules/typescript-logging/dist/commonjs/log/category/CategoryService.js","dependencies":[{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/category/CategoryService.js","mtime":1553611388000},{"path":"/data/.babelrc","mtime":1553611371556},{"path":"/data/node_modules/cache-loader/dist/cjs.js","mtime":1553611387012},{"path":"/data/node_modules/babel-loader/lib/index.js","mtime":1553611386992}],"contextDependencies":[],"result":["\"use strict\";\n\nvar DataStructures_1 = require(\"../../utils/DataStructures\");\nvar LoggerOptions_1 = require(\"../LoggerOptions\");\nvar CategoryConsoleLoggerImpl_1 = require(\"./CategoryConsoleLoggerImpl\");\nvar CategoryDelegateLoggerImpl_1 = require(\"./CategoryDelegateLoggerImpl\");\nvar CategoryExtensionLoggerImpl_1 = require(\"./CategoryExtensionLoggerImpl\");\nvar CategoryMessageBufferImpl_1 = require(\"./CategoryMessageBufferImpl\");\nvar ExtensionHelper_1 = require(\"../../extension/ExtensionHelper\");\n/**\n * RuntimeSettings for a category, at runtime these are associated to a category.\n */\nvar CategoryRuntimeSettings = function () {\n function CategoryRuntimeSettings(category, logLevel, loggerType, logFormat, callBackLogger) {\n if (logLevel === void 0) {\n logLevel = LoggerOptions_1.LogLevel.Error;\n }\n if (loggerType === void 0) {\n loggerType = LoggerOptions_1.LoggerType.Console;\n }\n if (logFormat === void 0) {\n logFormat = new LoggerOptions_1.CategoryLogFormat();\n }\n if (callBackLogger === void 0) {\n callBackLogger = null;\n }\n this._category = category;\n this._logLevel = logLevel;\n this._loggerType = loggerType;\n this._logFormat = logFormat;\n this._callBackLogger = callBackLogger;\n }\n Object.defineProperty(CategoryRuntimeSettings.prototype, \"category\", {\n get: function get() {\n return this._category;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryRuntimeSettings.prototype, \"logLevel\", {\n get: function get() {\n return this._logLevel;\n },\n set: function set(value) {\n this._logLevel = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryRuntimeSettings.prototype, \"loggerType\", {\n get: function get() {\n return this._loggerType;\n },\n set: function set(value) {\n this._loggerType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryRuntimeSettings.prototype, \"logFormat\", {\n get: function get() {\n return this._logFormat;\n },\n set: function set(value) {\n this._logFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryRuntimeSettings.prototype, \"callBackLogger\", {\n get: function get() {\n return this._callBackLogger;\n },\n set: function set(value) {\n this._callBackLogger = value;\n },\n enumerable: true,\n configurable: true\n });\n return CategoryRuntimeSettings;\n}();\nexports.CategoryRuntimeSettings = CategoryRuntimeSettings;\n/**\n * Default configuration, can be used to initially set a different default configuration\n * on the CategoryServiceFactory. This will be applied to all categories already registered (or\n * registered in the future). Can also be applied to one Category (and childs).\n */\nvar CategoryDefaultConfiguration = function () {\n /**\n * Create a new instance\n * @param logLevel Log level for all loggers, default is LogLevel.Error\n * @param loggerType Where to log, default is LoggerType.Console\n * @param logFormat What logging format to use, use default instance, for default values see CategoryLogFormat.\n * @param callBackLogger Optional callback, if LoggerType.Custom is used as loggerType. In that case must return a new Logger instance.\n * It is recommended to extend AbstractCategoryLogger to make your custom logger.\n */\n function CategoryDefaultConfiguration(logLevel, loggerType, logFormat, callBackLogger) {\n if (logLevel === void 0) {\n logLevel = LoggerOptions_1.LogLevel.Error;\n }\n if (loggerType === void 0) {\n loggerType = LoggerOptions_1.LoggerType.Console;\n }\n if (logFormat === void 0) {\n logFormat = new LoggerOptions_1.CategoryLogFormat();\n }\n if (callBackLogger === void 0) {\n callBackLogger = null;\n }\n this._logLevel = logLevel;\n this._loggerType = loggerType;\n this._logFormat = logFormat;\n this._callBackLogger = callBackLogger;\n if (this._loggerType === LoggerOptions_1.LoggerType.Custom && this.callBackLogger === null) {\n throw new Error(\"If you specify loggerType to be Custom, you must provide the callBackLogger argument\");\n }\n }\n Object.defineProperty(CategoryDefaultConfiguration.prototype, \"logLevel\", {\n get: function get() {\n return this._logLevel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryDefaultConfiguration.prototype, \"loggerType\", {\n get: function get() {\n return this._loggerType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryDefaultConfiguration.prototype, \"logFormat\", {\n get: function get() {\n return this._logFormat;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryDefaultConfiguration.prototype, \"callBackLogger\", {\n get: function get() {\n return this._callBackLogger;\n },\n enumerable: true,\n configurable: true\n });\n CategoryDefaultConfiguration.prototype.copy = function () {\n return new CategoryDefaultConfiguration(this.logLevel, this.loggerType, this.logFormat.copy(), this.callBackLogger);\n };\n return CategoryDefaultConfiguration;\n}();\nexports.CategoryDefaultConfiguration = CategoryDefaultConfiguration;\n/**\n * The service (only available as singleton) for all category related stuff as\n * retrieving, registering a logger. You should normally NOT use this,\n * instead use CategoryLoggerFactory which is meant for end users.\n */\nvar CategoryServiceImpl = function () {\n function CategoryServiceImpl() {\n this._defaultConfig = new CategoryDefaultConfiguration();\n // All registered root categories\n this._rootCategories = [];\n // Key of map is path of category\n this._categoryRuntimeSettings = new DataStructures_1.SimpleMap();\n // Same, but these are never changed and are used to restore the previous state by the CategoryLoggerControl.\n this._categoryOriginalRuntimeSettings = new DataStructures_1.SimpleMap();\n // Key is name of root logger.\n this._rootLoggers = new DataStructures_1.SimpleMap();\n // Private constructor\n ExtensionHelper_1.ExtensionHelper.register();\n }\n CategoryServiceImpl.getInstance = function () {\n // Load on-demand, to assure webpack ordering of module usage doesn't screw things over\n // for us when we accidentally change the order.\n if (CategoryServiceImpl._INSTANCE === null) {\n CategoryServiceImpl._INSTANCE = new CategoryServiceImpl();\n }\n return CategoryServiceImpl._INSTANCE;\n };\n CategoryServiceImpl.prototype.getLogger = function (root) {\n if (!this.rootCategoryExists(root)) {\n throw new Error(\"Given category \" + root.name + \" is not registered as a root category. You must use the root category to retrieve a logger.\");\n }\n var pair = this._rootLoggers.get(root.name);\n if (pair != null) {\n return pair.y;\n }\n var logger = new CategoryDelegateLoggerImpl_1.CategoryDelegateLoggerImpl(this.createRootLogger(root));\n this._rootLoggers.put(root.name, new DataStructures_1.TuplePair(root, logger));\n return logger;\n };\n /**\n * Clears everything, including a default configuration you may have set.\n * After this you need to re-register your categories etc.\n */\n CategoryServiceImpl.prototype.clear = function () {\n this._rootCategories = [];\n this._categoryRuntimeSettings.clear();\n this._categoryOriginalRuntimeSettings.clear();\n this._rootLoggers.clear();\n this.setDefaultConfiguration(new CategoryDefaultConfiguration());\n };\n CategoryServiceImpl.prototype.getCategorySettings = function (category) {\n return this._categoryRuntimeSettings.get(category.getCategoryPath());\n };\n CategoryServiceImpl.prototype.getOriginalCategorySettings = function (category) {\n return this._categoryOriginalRuntimeSettings.get(category.getCategoryPath());\n };\n /**\n * Set the default configuration. New root loggers created get this\n * applied. If you want to reset all current loggers to have this\n * applied as well, pass in reset=true (the default is false). All\n * categories will be reset then as well.\n * @param config New config\n * @param reset Defaults to false. Set to true to reset all loggers and current runtimesettings.\n */\n CategoryServiceImpl.prototype.setDefaultConfiguration = function (config, reset) {\n var _this = this;\n if (reset === void 0) {\n reset = false;\n }\n this._defaultConfig = config;\n if (reset) {\n // Reset all runtimesettings (this will reset it for roots & children all at once).\n var newRuntimeSettings_1 = new DataStructures_1.SimpleMap();\n var newOriginalRuntimeSettings_1 = new DataStructures_1.SimpleMap();\n this._categoryRuntimeSettings.keys().forEach(function (key) {\n var setting = _this._categoryRuntimeSettings.get(key);\n if (setting !== null) {\n var defSettings = _this._defaultConfig.copy();\n var settings = new CategoryRuntimeSettings(setting.category, defSettings.logLevel, defSettings.loggerType, defSettings.logFormat, defSettings.callBackLogger);\n var defSettingsOriginal = _this._defaultConfig.copy();\n var settingsOriginal = new CategoryRuntimeSettings(setting.category, defSettingsOriginal.logLevel, defSettingsOriginal.loggerType, defSettingsOriginal.logFormat, defSettingsOriginal.callBackLogger);\n newRuntimeSettings_1.put(key, settings);\n newOriginalRuntimeSettings_1.put(key, settingsOriginal);\n } else {\n throw new Error(\"No setting associated with key=\" + key);\n }\n });\n this._categoryRuntimeSettings.clear();\n this._categoryOriginalRuntimeSettings.clear();\n this._categoryRuntimeSettings = newRuntimeSettings_1;\n this._categoryOriginalRuntimeSettings = newOriginalRuntimeSettings_1;\n // Now initialize a new logger and put it on the delegate. Loggers we give out\n // are guaranteed to be wrapped inside the delegate logger.\n this._rootLoggers.values().forEach(function (pair) {\n // Set the new logger type\n pair.y.delegate = _this.createRootLogger(pair.x);\n });\n }\n };\n /**\n * Set new configuration settings for a category (and possibly its child categories)\n * @param config Config\n * @param category Category\n * @param applyChildren True to apply to child categories, defaults to false.\n * @param resetRootLogger Defaults to false. If set to true and if category is a root category it will reset the root logger.\n */\n CategoryServiceImpl.prototype.setConfigurationCategory = function (config, category, applyChildren, resetRootLogger) {\n var _this = this;\n if (applyChildren === void 0) {\n applyChildren = false;\n }\n if (resetRootLogger === void 0) {\n resetRootLogger = false;\n }\n var categorySettings = this.getCategorySettings(category);\n if (categorySettings === null) {\n throw new Error(\"Given category is not registered: \" + category.name);\n }\n categorySettings.logLevel = config.logLevel;\n categorySettings.loggerType = config.loggerType;\n categorySettings.logFormat = config.logFormat;\n categorySettings.callBackLogger = config.callBackLogger;\n // Apply the settings to children recursive if requested\n if (applyChildren) {\n category.children.forEach(function (child) {\n _this.setConfigurationCategory(config, child, applyChildren, resetRootLogger);\n });\n }\n if (resetRootLogger && this.rootCategoryExists(category)) {\n var tupleLogger = this._rootLoggers.get(category.name);\n if (tupleLogger !== null) {\n tupleLogger.y.delegate = this.createRootLogger(tupleLogger.x);\n }\n }\n };\n CategoryServiceImpl.prototype.registerCategory = function (category) {\n if (category == null || category === undefined) {\n throw new Error(\"Category CANNOT be null\");\n }\n var parent = category.parent;\n if (parent == null) {\n // Register the root category\n for (var _i = 0, _a = this._rootCategories; _i < _a.length; _i++) {\n var rootCategory = _a[_i];\n if (rootCategory.name === category.name) {\n throw new Error(\"Cannot add this rootCategory with name: \" + category.name + \", another root category is already registered with that name.\");\n }\n }\n this._rootCategories.push(category);\n }\n this.initializeRuntimeSettingsForCategory(category);\n };\n /**\n * Used to enable integration with chrome extension. Do not use manually, the\n * extension and the logger framework deal with this.\n */\n CategoryServiceImpl.prototype.enableExtensionIntegration = function () {\n var _this = this;\n this._rootLoggers.values().forEach(function (pair) {\n // Set the new logger type if needed.\n var delegateLogger = pair.y;\n if (!(delegateLogger instanceof CategoryExtensionLoggerImpl_1.CategoryExtensionLoggerImpl)) {\n /* tslint:disable:no-console */\n console.log(\"Reconfiguring root logger for root category: \" + pair.x.name);\n /* tslint:enable:no-console */\n pair.y.delegate = new CategoryExtensionLoggerImpl_1.CategoryExtensionLoggerImpl(pair.x, _this);\n }\n });\n };\n /**\n * Return all root categories currently registered.\n */\n CategoryServiceImpl.prototype.getRootCategories = function () {\n return this._rootCategories.slice(0);\n };\n /**\n * Return Category by id\n * @param id The id of the category to find\n * @returns {Category} or null if not found\n */\n CategoryServiceImpl.prototype.getCategoryById = function (id) {\n var result = this._categoryRuntimeSettings.values().filter(function (cat) {\n return cat.category.id === id;\n }).map(function (cat) {\n return cat.category;\n });\n if (result.length === 1) {\n return result[0];\n }\n return null;\n };\n CategoryServiceImpl.prototype.initializeRuntimeSettingsForCategory = function (category) {\n var settings = this._categoryRuntimeSettings.get(category.getCategoryPath());\n if (settings !== null) {\n throw new Error(\"Category with path: \" + category.getCategoryPath() + \" is already registered?\");\n }\n // Passing the callback is not really needed for child categories, but don't really care.\n var defSettings = this._defaultConfig.copy();\n settings = new CategoryRuntimeSettings(category, defSettings.logLevel, defSettings.loggerType, defSettings.logFormat, defSettings.callBackLogger);\n var defSettingsOriginal = this._defaultConfig.copy();\n var settingsOriginal = new CategoryRuntimeSettings(category, defSettingsOriginal.logLevel, defSettingsOriginal.loggerType, defSettingsOriginal.logFormat, defSettingsOriginal.callBackLogger);\n this._categoryRuntimeSettings.put(category.getCategoryPath(), settings);\n this._categoryOriginalRuntimeSettings.put(category.getCategoryPath(), settingsOriginal);\n };\n CategoryServiceImpl.prototype.rootCategoryExists = function (rootCategory) {\n if (rootCategory == null || rootCategory === undefined) {\n throw new Error(\"Root category CANNOT be null\");\n }\n var parent = rootCategory.parent;\n if (parent != null) {\n throw new Error(\"Parent must be null for a root category\");\n }\n return this._rootCategories.indexOf(rootCategory) !== -1;\n };\n CategoryServiceImpl.prototype.createRootLogger = function (category) {\n // Default is always a console logger\n switch (this._defaultConfig.loggerType) {\n case LoggerOptions_1.LoggerType.Console:\n return new CategoryConsoleLoggerImpl_1.CategoryConsoleLoggerImpl(category, this);\n case LoggerOptions_1.LoggerType.MessageBuffer:\n return new CategoryMessageBufferImpl_1.CategoryMessageBufferLoggerImpl(category, this);\n case LoggerOptions_1.LoggerType.Custom:\n if (this._defaultConfig.callBackLogger == null) {\n throw new Error(\"Cannot create custom logger, custom callback is null\");\n } else {\n return this._defaultConfig.callBackLogger(category, this);\n }\n default:\n throw new Error(\"Cannot create a Logger for LoggerType: \" + this._defaultConfig.loggerType);\n }\n };\n return CategoryServiceImpl;\n}();\n// Singleton category service, used by CategoryServiceFactory as well as Categories.\n// Loaded on demand. Do NOT change as webpack may pack things in wrong order otherwise.\nCategoryServiceImpl._INSTANCE = null;\nexports.CategoryServiceImpl = CategoryServiceImpl;\n/**\n * Categorized service for logging, where logging is bound to categories which\n * can log horizontally through specific application logic (services, group(s) of components etc).\n * For the standard way of logging like most frameworks do these days, use LFService instead.\n * If you want fine grained control to divide sections of your application in\n * logical units to enable/disable logging for, this is the service you want to use instead.\n * Also for this type a browser plugin will be available.\n */\nvar CategoryServiceFactory = function () {\n function CategoryServiceFactory() {}\n // Private constructor.\n\n /**\n * Return a CategoryLogger for given ROOT category (thus has no parent).\n * You can only retrieve loggers for their root, when logging\n * you specify to log for what (child)categories.\n * @param root Category root (has no parent)\n * @returns {CategoryLogger}\n */\n CategoryServiceFactory.getLogger = function (root) {\n return CategoryServiceImpl.getInstance().getLogger(root);\n };\n /**\n * Clears everything, any registered (root)categories and loggers\n * are discarded. Resets to default configuration.\n */\n CategoryServiceFactory.clear = function () {\n return CategoryServiceImpl.getInstance().clear();\n };\n /**\n * Set the default configuration. New root loggers created get this\n * applied. If you want to reset all current loggers to have this\n * applied as well, pass in reset=true (the default is false). All\n * categories runtimesettings will be reset then as well.\n * @param config The new default configuration\n * @param reset If true, will reset *all* runtimesettings for all loggers/categories to these.\n */\n CategoryServiceFactory.setDefaultConfiguration = function (config, reset) {\n if (reset === void 0) {\n reset = false;\n }\n CategoryServiceImpl.getInstance().setDefaultConfiguration(config, reset);\n };\n /**\n * Set new configuration settings for a category (and possibly its child categories)\n * @param config Config\n * @param category Category\n * @param applyChildren True to apply to child categories, defaults to false.\n * @param resetRootLogger Defaults to false. If set to true and if category is a root category it will reset the root logger.\n */\n CategoryServiceFactory.setConfigurationCategory = function (config, category, applyChildren, resetRootLogger) {\n if (applyChildren === void 0) {\n applyChildren = false;\n }\n if (resetRootLogger === void 0) {\n resetRootLogger = false;\n }\n CategoryServiceImpl.getInstance().setConfigurationCategory(config, category, applyChildren, resetRootLogger);\n };\n /**\n * Return RuntimeSettings to retrieve information about\n * RuntimeSettings for categories.\n * @returns {RuntimeSettings}\n */\n CategoryServiceFactory.getRuntimeSettings = function () {\n return CategoryServiceImpl.getInstance();\n };\n return CategoryServiceFactory;\n}();\nexports.CategoryServiceFactory = CategoryServiceFactory;\n//# sourceMappingURL=CategoryService.js.map",{"version":3,"sources":["node_modules/typescript-logging/dist/commonjs/log/category/CategoryService.js"],"names":["DataStructures_1","require","LoggerOptions_1","CategoryConsoleLoggerImpl_1","CategoryDelegateLoggerImpl_1","CategoryExtensionLoggerImpl_1","CategoryMessageBufferImpl_1","ExtensionHelper_1","CategoryRuntimeSettings","category","logLevel","loggerType","logFormat","callBackLogger","LogLevel","Error","LoggerType","Console","CategoryLogFormat","_category","_logLevel","_loggerType","_logFormat","_callBackLogger","Object","defineProperty","prototype","get","enumerable","configurable","set","value","exports","CategoryDefaultConfiguration","Custom","copy","CategoryServiceImpl","_defaultConfig","_rootCategories","_categoryRuntimeSettings","SimpleMap","_categoryOriginalRuntimeSettings","_rootLoggers","ExtensionHelper","register","getInstance","_INSTANCE","getLogger","root","rootCategoryExists","name","pair","y","logger","CategoryDelegateLoggerImpl","createRootLogger","put","TuplePair","clear","setDefaultConfiguration","getCategorySettings","getCategoryPath","getOriginalCategorySettings","config","reset","_this","newRuntimeSettings_1","newOriginalRuntimeSettings_1","keys","forEach","key","setting","defSettings","settings","defSettingsOriginal","settingsOriginal","values","delegate","x","setConfigurationCategory","applyChildren","resetRootLogger","categorySettings","children","child","tupleLogger","registerCategory","undefined","parent","_i","_a","length","rootCategory","push","initializeRuntimeSettingsForCategory","enableExtensionIntegration","delegateLogger","CategoryExtensionLoggerImpl","console","log","getRootCategories","slice","getCategoryById","id","result","filter","cat","map","indexOf","CategoryConsoleLoggerImpl","MessageBuffer","CategoryMessageBufferLoggerImpl","CategoryServiceFactory","getRuntimeSettings"],"mappings":"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","file":"CategoryService.js","sourceRoot":"/data","sourcesContent":["\"use strict\";\nvar DataStructures_1 = require(\"../../utils/DataStructures\");\nvar LoggerOptions_1 = require(\"../LoggerOptions\");\nvar CategoryConsoleLoggerImpl_1 = require(\"./CategoryConsoleLoggerImpl\");\nvar CategoryDelegateLoggerImpl_1 = require(\"./CategoryDelegateLoggerImpl\");\nvar CategoryExtensionLoggerImpl_1 = require(\"./CategoryExtensionLoggerImpl\");\nvar CategoryMessageBufferImpl_1 = require(\"./CategoryMessageBufferImpl\");\nvar ExtensionHelper_1 = require(\"../../extension/ExtensionHelper\");\n/**\n * RuntimeSettings for a category, at runtime these are associated to a category.\n */\nvar CategoryRuntimeSettings = (function () {\n function CategoryRuntimeSettings(category, logLevel, loggerType, logFormat, callBackLogger) {\n if (logLevel === void 0) { logLevel = LoggerOptions_1.LogLevel.Error; }\n if (loggerType === void 0) { loggerType = LoggerOptions_1.LoggerType.Console; }\n if (logFormat === void 0) { logFormat = new LoggerOptions_1.CategoryLogFormat(); }\n if (callBackLogger === void 0) { callBackLogger = null; }\n this._category = category;\n this._logLevel = logLevel;\n this._loggerType = loggerType;\n this._logFormat = logFormat;\n this._callBackLogger = callBackLogger;\n }\n Object.defineProperty(CategoryRuntimeSettings.prototype, \"category\", {\n get: function () {\n return this._category;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryRuntimeSettings.prototype, \"logLevel\", {\n get: function () {\n return this._logLevel;\n },\n set: function (value) {\n this._logLevel = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryRuntimeSettings.prototype, \"loggerType\", {\n get: function () {\n return this._loggerType;\n },\n set: function (value) {\n this._loggerType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryRuntimeSettings.prototype, \"logFormat\", {\n get: function () {\n return this._logFormat;\n },\n set: function (value) {\n this._logFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryRuntimeSettings.prototype, \"callBackLogger\", {\n get: function () {\n return this._callBackLogger;\n },\n set: function (value) {\n this._callBackLogger = value;\n },\n enumerable: true,\n configurable: true\n });\n return CategoryRuntimeSettings;\n}());\nexports.CategoryRuntimeSettings = CategoryRuntimeSettings;\n/**\n * Default configuration, can be used to initially set a different default configuration\n * on the CategoryServiceFactory. This will be applied to all categories already registered (or\n * registered in the future). Can also be applied to one Category (and childs).\n */\nvar CategoryDefaultConfiguration = (function () {\n /**\n * Create a new instance\n * @param logLevel Log level for all loggers, default is LogLevel.Error\n * @param loggerType Where to log, default is LoggerType.Console\n * @param logFormat What logging format to use, use default instance, for default values see CategoryLogFormat.\n * @param callBackLogger Optional callback, if LoggerType.Custom is used as loggerType. In that case must return a new Logger instance.\n * It is recommended to extend AbstractCategoryLogger to make your custom logger.\n */\n function CategoryDefaultConfiguration(logLevel, loggerType, logFormat, callBackLogger) {\n if (logLevel === void 0) { logLevel = LoggerOptions_1.LogLevel.Error; }\n if (loggerType === void 0) { loggerType = LoggerOptions_1.LoggerType.Console; }\n if (logFormat === void 0) { logFormat = new LoggerOptions_1.CategoryLogFormat(); }\n if (callBackLogger === void 0) { callBackLogger = null; }\n this._logLevel = logLevel;\n this._loggerType = loggerType;\n this._logFormat = logFormat;\n this._callBackLogger = callBackLogger;\n if (this._loggerType === LoggerOptions_1.LoggerType.Custom && this.callBackLogger === null) {\n throw new Error(\"If you specify loggerType to be Custom, you must provide the callBackLogger argument\");\n }\n }\n Object.defineProperty(CategoryDefaultConfiguration.prototype, \"logLevel\", {\n get: function () {\n return this._logLevel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryDefaultConfiguration.prototype, \"loggerType\", {\n get: function () {\n return this._loggerType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryDefaultConfiguration.prototype, \"logFormat\", {\n get: function () {\n return this._logFormat;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryDefaultConfiguration.prototype, \"callBackLogger\", {\n get: function () {\n return this._callBackLogger;\n },\n enumerable: true,\n configurable: true\n });\n CategoryDefaultConfiguration.prototype.copy = function () {\n return new CategoryDefaultConfiguration(this.logLevel, this.loggerType, this.logFormat.copy(), this.callBackLogger);\n };\n return CategoryDefaultConfiguration;\n}());\nexports.CategoryDefaultConfiguration = CategoryDefaultConfiguration;\n/**\n * The service (only available as singleton) for all category related stuff as\n * retrieving, registering a logger. You should normally NOT use this,\n * instead use CategoryLoggerFactory which is meant for end users.\n */\nvar CategoryServiceImpl = (function () {\n function CategoryServiceImpl() {\n this._defaultConfig = new CategoryDefaultConfiguration();\n // All registered root categories\n this._rootCategories = [];\n // Key of map is path of category\n this._categoryRuntimeSettings = new DataStructures_1.SimpleMap();\n // Same, but these are never changed and are used to restore the previous state by the CategoryLoggerControl.\n this._categoryOriginalRuntimeSettings = new DataStructures_1.SimpleMap();\n // Key is name of root logger.\n this._rootLoggers = new DataStructures_1.SimpleMap();\n // Private constructor\n ExtensionHelper_1.ExtensionHelper.register();\n }\n CategoryServiceImpl.getInstance = function () {\n // Load on-demand, to assure webpack ordering of module usage doesn't screw things over\n // for us when we accidentally change the order.\n if (CategoryServiceImpl._INSTANCE === null) {\n CategoryServiceImpl._INSTANCE = new CategoryServiceImpl();\n }\n return CategoryServiceImpl._INSTANCE;\n };\n CategoryServiceImpl.prototype.getLogger = function (root) {\n if (!this.rootCategoryExists(root)) {\n throw new Error(\"Given category \" + root.name + \" is not registered as a root category. You must use the root category to retrieve a logger.\");\n }\n var pair = this._rootLoggers.get(root.name);\n if (pair != null) {\n return pair.y;\n }\n var logger = new CategoryDelegateLoggerImpl_1.CategoryDelegateLoggerImpl(this.createRootLogger(root));\n this._rootLoggers.put(root.name, new DataStructures_1.TuplePair(root, logger));\n return logger;\n };\n /**\n * Clears everything, including a default configuration you may have set.\n * After this you need to re-register your categories etc.\n */\n CategoryServiceImpl.prototype.clear = function () {\n this._rootCategories = [];\n this._categoryRuntimeSettings.clear();\n this._categoryOriginalRuntimeSettings.clear();\n this._rootLoggers.clear();\n this.setDefaultConfiguration(new CategoryDefaultConfiguration());\n };\n CategoryServiceImpl.prototype.getCategorySettings = function (category) {\n return this._categoryRuntimeSettings.get(category.getCategoryPath());\n };\n CategoryServiceImpl.prototype.getOriginalCategorySettings = function (category) {\n return this._categoryOriginalRuntimeSettings.get(category.getCategoryPath());\n };\n /**\n * Set the default configuration. New root loggers created get this\n * applied. If you want to reset all current loggers to have this\n * applied as well, pass in reset=true (the default is false). All\n * categories will be reset then as well.\n * @param config New config\n * @param reset Defaults to false. Set to true to reset all loggers and current runtimesettings.\n */\n CategoryServiceImpl.prototype.setDefaultConfiguration = function (config, reset) {\n var _this = this;\n if (reset === void 0) { reset = false; }\n this._defaultConfig = config;\n if (reset) {\n // Reset all runtimesettings (this will reset it for roots & children all at once).\n var newRuntimeSettings_1 = new DataStructures_1.SimpleMap();\n var newOriginalRuntimeSettings_1 = new DataStructures_1.SimpleMap();\n this._categoryRuntimeSettings.keys().forEach(function (key) {\n var setting = _this._categoryRuntimeSettings.get(key);\n if (setting !== null) {\n var defSettings = _this._defaultConfig.copy();\n var settings = new CategoryRuntimeSettings(setting.category, defSettings.logLevel, defSettings.loggerType, defSettings.logFormat, defSettings.callBackLogger);\n var defSettingsOriginal = _this._defaultConfig.copy();\n var settingsOriginal = new CategoryRuntimeSettings(setting.category, defSettingsOriginal.logLevel, defSettingsOriginal.loggerType, defSettingsOriginal.logFormat, defSettingsOriginal.callBackLogger);\n newRuntimeSettings_1.put(key, settings);\n newOriginalRuntimeSettings_1.put(key, settingsOriginal);\n }\n else {\n throw new Error(\"No setting associated with key=\" + key);\n }\n });\n this._categoryRuntimeSettings.clear();\n this._categoryOriginalRuntimeSettings.clear();\n this._categoryRuntimeSettings = newRuntimeSettings_1;\n this._categoryOriginalRuntimeSettings = newOriginalRuntimeSettings_1;\n // Now initialize a new logger and put it on the delegate. Loggers we give out\n // are guaranteed to be wrapped inside the delegate logger.\n this._rootLoggers.values().forEach(function (pair) {\n // Set the new logger type\n pair.y.delegate = _this.createRootLogger(pair.x);\n });\n }\n };\n /**\n * Set new configuration settings for a category (and possibly its child categories)\n * @param config Config\n * @param category Category\n * @param applyChildren True to apply to child categories, defaults to false.\n * @param resetRootLogger Defaults to false. If set to true and if category is a root category it will reset the root logger.\n */\n CategoryServiceImpl.prototype.setConfigurationCategory = function (config, category, applyChildren, resetRootLogger) {\n var _this = this;\n if (applyChildren === void 0) { applyChildren = false; }\n if (resetRootLogger === void 0) { resetRootLogger = false; }\n var categorySettings = this.getCategorySettings(category);\n if (categorySettings === null) {\n throw new Error(\"Given category is not registered: \" + category.name);\n }\n categorySettings.logLevel = config.logLevel;\n categorySettings.loggerType = config.loggerType;\n categorySettings.logFormat = config.logFormat;\n categorySettings.callBackLogger = config.callBackLogger;\n // Apply the settings to children recursive if requested\n if (applyChildren) {\n category.children.forEach(function (child) {\n _this.setConfigurationCategory(config, child, applyChildren, resetRootLogger);\n });\n }\n if (resetRootLogger && this.rootCategoryExists(category)) {\n var tupleLogger = this._rootLoggers.get(category.name);\n if (tupleLogger !== null) {\n tupleLogger.y.delegate = this.createRootLogger(tupleLogger.x);\n }\n }\n };\n CategoryServiceImpl.prototype.registerCategory = function (category) {\n if (category == null || category === undefined) {\n throw new Error(\"Category CANNOT be null\");\n }\n var parent = category.parent;\n if (parent == null) {\n // Register the root category\n for (var _i = 0, _a = this._rootCategories; _i < _a.length; _i++) {\n var rootCategory = _a[_i];\n if (rootCategory.name === category.name) {\n throw new Error(\"Cannot add this rootCategory with name: \" + category.name + \", another root category is already registered with that name.\");\n }\n }\n this._rootCategories.push(category);\n }\n this.initializeRuntimeSettingsForCategory(category);\n };\n /**\n * Used to enable integration with chrome extension. Do not use manually, the\n * extension and the logger framework deal with this.\n */\n CategoryServiceImpl.prototype.enableExtensionIntegration = function () {\n var _this = this;\n this._rootLoggers.values().forEach(function (pair) {\n // Set the new logger type if needed.\n var delegateLogger = pair.y;\n if (!(delegateLogger instanceof CategoryExtensionLoggerImpl_1.Category