@qubit-ltd/logging 1.4.12 → 1.4.14
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/README.md +4 -4
- package/README.zh_CN.md +4 -4
- package/dist/logging.cjs +40 -39
- package/dist/logging.cjs.map +1 -1
- package/dist/logging.iife.js +40 -39
- package/dist/logging.iife.js.map +1 -1
- package/dist/logging.min.cjs +1 -1
- package/dist/logging.min.cjs.map +1 -1
- package/dist/logging.min.iife.js +1 -1
- package/dist/logging.min.iife.js.map +1 -1
- package/dist/logging.min.mjs +1 -1
- package/dist/logging.min.mjs.map +1 -1
- package/dist/logging.mjs +40 -39
- package/dist/logging.mjs.map +1 -1
- package/doc/api/index.html +3 -3
- package/doc/logging.min.visualization.html +1 -1
- package/doc/logging.visualization.html +1 -1
- package/package.json +5 -7
package/dist/logging.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.mjs","sources":["../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../src/impl/logging-levels.js","../src/impl/check-appender.js","../src/impl/check-logging-level.js","../src/impl/upper-case-string.js","../src/impl/is-string.js","../src/impl/get-browser-engine.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../src/impl/get-logging-prefix.js","../src/impl/fix-first-argument.js","../src/impl/bind-with-arrow-function.js","../src/impl/bind-without-prefix.js","../src/impl/bind-with-function-bind.js","../src/impl/bind-logging-methods.js","../src/logger.js","../src/impl/metadata-keys.js","../src/log.js","../src/has-logger.js","../src/index.js"],"sourcesContent":["function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2023.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Predefined logging levels.\n *\n * @author Haixing Hu\n */\nconst LOGGING_LEVELS = {\n TRACE: 0,\n DEBUG: 1,\n INFO: 2,\n WARN: 3,\n ERROR: 4,\n NONE: 5,\n};\n\nexport default LOGGING_LEVELS;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2023.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport LOGGING_LEVELS from './logging-levels';\n\n/**\n * Checks the validity of an appender.\n *\n * @param {Object} appender\n * The appender to be checked. If it is invalid, an `Error` will be thrown.\n * @author Haixing Hu\n * @private\n */\nfunction checkAppender(appender) {\n if (appender === null || typeof appender !== 'object') {\n throw new TypeError('The appender for a logger must be a non-null object.');\n }\n for (const level in LOGGING_LEVELS) {\n // NOTE: do NOT use Object.hasOwn() because it has a lot of compatibility problems\n if (Object.prototype.hasOwnProperty.call(LOGGING_LEVELS, level) && (level !== 'NONE')) {\n const methodName = level.toLowerCase();\n const method = appender[methodName];\n if (typeof method !== 'function') {\n throw new Error(`The appender of this logger has no ${methodName}() method.`);\n }\n }\n }\n}\n\nexport default checkAppender;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2023.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport LOGGING_LEVELS from './logging-levels';\n\n/**\n * Checks the validity of a logging level.\n *\n * @param {String} level\n * The logging level to be checked. If it is invalid, an `Error` will be\n * thrown.\n * @private\n */\nfunction checkLoggingLevel(level) {\n if (typeof level !== 'string') {\n throw new TypeError('The logging level must be a string.');\n }\n if (LOGGING_LEVELS[level] === undefined) {\n throw new RangeError(`Unknown logging level \"${level}\". `\n + `Possible values are:${JSON.stringify(Object.keys(LOGGING_LEVELS))}.`);\n }\n}\n\nexport default checkLoggingLevel;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2023.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Convert a string to uppercase.\n *\n * @param {any} value\n * The value to be converted. If it is not a string, it will be returned directly.\n * @return {any|string}\n * The converted string, or the original value if it is not a string.\n * @author Haixing Hu\n * @private\n */\nfunction upperCaseString(value) {\n if ((typeof value !== 'string') && (!(value instanceof String))) {\n return value;\n }\n return value.toUpperCase();\n}\n\nexport default upperCaseString;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2024.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Determines whether a value is a string.\n *\n * A value is a string if it is a string or a `String` object.\n *\n * @param {any} value\n * The value to be checked.\n * @return {boolean}\n * `true` if the value is a string; `false` otherwise.\n * @author Haixing Hu\n * @private\n */\nfunction isString(value) {\n return (typeof value === 'string') || (value instanceof String);\n}\n\nexport default isString;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2024.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Gets the engine name of the current browser.\n *\n * @return {string}\n * The engine name of the current browser.\n * @author Haixing Hu\n * @private\n */\nfunction getBrowserEngine() {\n const userAgent = window.navigator.userAgent;\n if (/Gecko\\/\\d/i.test(userAgent) && !/like Gecko/i.test(userAgent)) {\n return 'Gecko'; // Firefox and other Gecko-based browsers\n } else if (/Chrome|Chromium|Edg/i.test(userAgent)) {\n return 'Blink'; // Chrome, Edge and other Blink-based browsers\n } else if (/(Apple)?WebKit/i.test(userAgent) && !/Chrome/i.test(userAgent)) {\n return 'WebKit'; // Safari and other WebKit-based browsers\n } else if (/Trident/i.test(userAgent)) {\n return 'Trident'; // Internet Explorer and other Trident-based browsers\n } else if (/Presto/i.test(userAgent)) {\n return 'Presto'; // Opera and other Presto-based browsers\n } else {\n return 'Unknown';\n }\n}\n\nexport default getBrowserEngine;\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2024.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Gets the logging prefix for a logger.\n *\n * @param {Logger} logger\n * The logger object.\n * @param {string} level\n * The logging level.\n * @return {string}\n * The logging prefix.\n * @author Haixing Hu\n * @private\n */\nfunction getLoggingPrefix(logger, level) {\n let prefix = `[${level}] `;\n if (logger._name) {\n prefix += `${logger._name} - `;\n }\n return prefix;\n}\n\nexport default getLoggingPrefix;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2024.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport isString from './is-string';\n\nfunction fixFirstArgument(prefix, args) {\n if (args.length === 0) {\n return [prefix];\n } else if (isString(args[0])) {\n args[0] = prefix + args[0];\n return args;\n } else {\n return [prefix, ...args];\n }\n}\n\nexport default fixFirstArgument;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2024.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport getLoggingPrefix from './get-logging-prefix';\nimport fixFirstArgument from './fix-first-argument';\n\n/**\n * Binds a logging method of a logger with an array function.\n *\n * We use the simple arrow function to preserve the actual source code location\n * where the logging method is called.\n *\n * This works for the Safari browser.\n *\n * @param {Logger} logger\n * The logger object whose method to be bound.\n * @param {string} method\n * The name of the logging method to be bound.\n * @param {string} level\n * The logging level of the method.\n * @param {object} appender\n * The appender object which provides underlying logging operation.\n * @author Haixing Hu\n * @private\n */\nfunction bindWithArrowFunction(logger, method, level, appender) {\n // Add a prefix to the message, which contains the logging level\n // and the name of the logger. Since the prefix use the recursive\n // string substitution pattern '%s', only some browsers support it.\n const prefix = getLoggingPrefix(logger, level);\n // For Safari, the recursive string substitution pattern '%s' is not\n // supported. So we add the prefix to the first argument of the message\n // manually. We use the arrow function to preserve the actual source\n // code location where the logging method is called.\n logger[method] = (...args) => appender[method](...fixFirstArgument(prefix, args));\n}\n\nexport default bindWithArrowFunction;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2024.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Binds a logging method of a logger with the stack of an `Error` object\n * with logging prefix.\n *\n * We use the `Function.prototype.bind` to preserve the actual source code\n * location where the logging method is called.\n *\n * See: https://stackoverflow.com/questions/13815640/a-proper-wrapper-for-console-log-with-correct-line-number\n *\n * Some browsers do not support the recursive string substitution pattern '%s'\n * in the `console` object. For those browsers, we have no way to add a prefix\n * to the logging message.\n *\n * @param {Logger} logger\n * The logger object whose method to be bound.\n * @param {string} method\n * The name of the logging method to be bound.\n * @param {string} level\n * The logging level of the method.\n * @param {object} appender\n * The appender object which provides underlying logging operation.\n * @author Haixing Hu\n * @private\n */\nfunction bindWithoutPrefix(logger, method, level, appender) {\n logger[method] = Function.prototype.bind.call(appender[method], appender);\n}\n\nexport default bindWithoutPrefix;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2024.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport getLoggingPrefix from './get-logging-prefix';\n\n/**\n * Binds a logging method of a logger with the stack of an `Error` object.\n *\n * We use the `Function.prototype.bind` to preserve the actual source code\n * location where the logging method is called.\n *\n * See: https://stackoverflow.com/questions/13815640/a-proper-wrapper-for-console-log-with-correct-line-number\n *\n * @param {Logger} logger\n * The logger object whose method to be bound.\n * @param {string} method\n * The name of the logging method to be bound.\n * @param {string} level\n * The logging level of the method.\n * @param {object} appender\n * The appender object which provides underlying logging operation.\n * @author Haixing Hu\n * @private\n */\nfunction bindWithFunctionBind(logger, method, level, appender) {\n // Add a prefix to the message, which contains the logging level\n // and the name of the logger. Since the prefix use the recursive\n // string substitution pattern '%s', only some browsers support it.\n const prefix = getLoggingPrefix(logger, level);\n // Note that we add a string substitution pattern '%s' to the end of\n // the prefix, since according to the specification of the `console`,\n // the string substitution is taken on the first argument **recursively**.\n // See: https://stackoverflow.com/questions/75160241/what-order-does-console-log-with-multiple-arguments-and-multiple-s-substitu#answer-75167070\n // https://console.spec.whatwg.org/#logger\n // https://console.spec.whatwg.org/#formatter\n //\n // But the `console` object of the Node.js does not support the recursive\n // string substitution.\n // See: https://nodejs.org/api/console.html#console_console_log_data_args\n // and https://nodejs.org/api/util.html#utilformatformat-args\n logger[method] = Function.prototype.bind.call(appender[method], appender, `${prefix}%s`);\n}\n\nexport default bindWithFunctionBind;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2023.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport LOGGING_LEVELS from './logging-levels';\nimport getBrowserEngine from './get-browser-engine';\nimport bindWithArrowFunction from './bind-with-arrow-function';\nimport bindWithoutPrefix from './bind-without-prefix';\nimport bindWithFunctionBind from './bind-with-function-bind';\n\n/**\n * A no-operation function.\n *\n * @author Haixing Hu\n * @private\n */\nconst NOOP = () => {};\n\n/**\n * Rebinds all logging implementation methods to the corresponding logging\n * methods of the appender.\n *\n * @param {Logger} logger\n * The logger whose logging methods will be rebind to the corresponding\n * logging methods of the appender.\n * @param {string} level\n * The target logging level. All logging methods belows this target logging\n * level will be bind to a no-op function, while all logging methods above\n * or equal to this target logging level will be bind to the corresponding\n * logging methods of the appender. This argument should be a valid\n * logging level. The function do not check the validity of this argument.\n * @param {object} appender\n * The appender whose logging methods will be bound to the corresponding\n * logging methods of this logger. This argument should be a valid appender.\n * The function do not check the validity of this argument.\n * @author Haixing Hu\n * @private\n */\nfunction bindLoggingMethods(logger, level, appender) {\n const target = LOGGING_LEVELS[level];\n for (const level in LOGGING_LEVELS) {\n // NOTE: do NOT use Object.hasOwn() because it has a lot of compatibility problems\n if (Object.prototype.hasOwnProperty.call(LOGGING_LEVELS, level) && (level !== 'NONE')) {\n const m = level.toLowerCase();\n if (LOGGING_LEVELS[level] < target) {\n // binds the private logging method of this object to no-op\n logger[m] = NOOP;\n } else {\n // binds the private logging method of this object to the\n // corresponding logging method of this.appender.\n const engine = getBrowserEngine();\n switch (engine) {\n case 'Blink': // Chrome, Edge and other Blink-based browsers\n bindWithFunctionBind(logger, m, level, appender);\n break;\n case 'WebKit': // Safari and other WebKit-based browsers\n bindWithArrowFunction(logger, m, level, appender);\n break;\n case 'Gecko': // Firefox and other Gecko-based browsers\n case 'Trident': // Internet Explorer and other Trident-based browsers\n case 'Presto': // Opera and other Presto-based browsers\n default:\n bindWithoutPrefix(logger, m, level, appender);\n // bindWithErrorStack(logger, m, level, appender);\n // bindWithProxy(logger, m, level, appender);\n break;\n }\n }\n }\n }\n}\n\nexport default bindLoggingMethods;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2023.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport LOGGING_LEVELS from './impl/logging-levels';\nimport checkAppender from './impl/check-appender';\nimport checkLoggingLevel from './impl/check-logging-level';\nimport upperCaseString from './impl/upper-case-string';\nimport isString from './impl/is-string';\nimport bindLoggingMethods from './impl/bind-logging-methods';\n\n/**\n * The factory value of the Logger class's default logging level,\n * which is `DEBUG`.\n *\n * @type {string}\n */\nconst FACTORY_DEFAULT_LEVEL = 'DEBUG';\n\n/**\n * The factory value of the Logger class's default log appender, which is\n * the standard output pipe of the console.\n *\n * @type {Console}\n */\nconst FACTORY_DEFAULT_APPENDER = console;\n\n/**\n * The default logging level of all `Logger` instances, which is `DEBUG`.\n *\n * @private\n * @author Haixing Hu\n */\nlet __defaultLevel = FACTORY_DEFAULT_LEVEL;\n\n/**\n * The default log appender of all `Logger` instances, which is the standard\n * output pipe of the console.\n *\n * @private\n * @author Haixing Hu\n */\nlet __defaultAppender = FACTORY_DEFAULT_APPENDER;\n\n/**\n * The map of all `Logger` instances.\n *\n * This value maps the name of a `Logger` instance to its instance.\n *\n * @type {Map<String, Logger>}\n * @private\n * @author Haixing Hu\n */\nconst __loggerMap = new Map();\n\n/**\n * The map of all logging levels.\n *\n * This value maps the name of a `Logger` instance to its logging level.\n *\n * @type {Map<String, String>}\n * @private\n * @author Haixing Hu\n */\nconst __levelMap = new Map();\n\n/**\n * Indicates whether the `Logger` instance is under internal constructing.\n *\n * Many other languages include the capability to mark a constructor as private,\n * which prevents the class from being instantiated outside the class itself,\n * such taht you can only use static factory methods that create instances, or\n * not be able to create instances at all. JavaScript does not have a native way\n * to do this, but it can be accomplished by using a private static flag.\n *\n * @type {boolean}\n * @private\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_class_fields#simulating_private_constructors\n * @author Haixing Hu\n */\nlet __isInternalConstructing = false;\n\n/**\n * A simple logging class.\n *\n * A `Logger` object provides the following logging methods:\n *\n * - `Logger.trace(message, arg1, arg2, ...)`: Outputs a log message with the `TRACE` level.\n * - `Logger.debug(message, arg1, arg2, ...)`: Outputs a log message with the `DEBUG` level.\n * - `Logger.info(message, arg1, arg2, ...)`: Outputs a log message with the `INFO` level.\n * - `Logger.warn(message, arg1, arg2, ...)`: Outputs a log message with the `WARN` level.\n * - `Logger.error(message, arg1, arg2, ...)`: Outputs a log message with the `ERROR` level.\n * - `Logger.log(level, message, arg1, arg2, ...)`: Outputs a log message with the specified level.\n *\n * The message argument of those logging methods supports the following\n * substitution patterns:\n *\n * - `%o` or `%O`: Outputs a JavaScript object. Clicking the object name opens\n * more information about it in the inspector.\n * - `%d` or `%i`: Outputs an integer. Number formatting is supported, for\n * example `logger.info('Foo %.2d', 1.1)` will output the number as two\n * significant figures with a leading 0: `Foo 01`.\n * - `%s`: Outputs a string.\n * - `%f`: Outputs a floating-point value. Formatting is supported, for example\n * `logger.debug(\"Foo %.2f\", 1.1)` will output the number to 2 decimal\n * places: `Foo 1.10`.\n *\n * @author Haixing Hu\n */\nclass Logger {\n /**\n * Gets the `Logger` instance of the specified name, or constructs a new\n * `Logger` instance if it does not exist.\n *\n * @param {string} name\n * The name of the `Logger` instance to be retrieved.\n * @param {Object} options\n * The optional options of the `Logger` instance to be retrieved. This\n * option object may have the following properties:\n * - `appender: object`: the specified content output pipe of the log.\n * This object must provide `trace`, `debug`, `info`, `warn` and `error`\n * methods. If this option is not provided, the appender of the existing\n * `Logger` instance will not be changed, and the default appender\n * will be used to construct a new `Logger` instance if it does not exist.\n * - `level: string`: the logging level of the `Logger` instance to be\n * retrieved. The allowed levels are `TRACE`, `DEBUG`, `INFO`, `WARN`,\n * `ERROR`, and `NONE`. Lowercase letters are also allowed. If this\n * option is not provided, the logging level of the existing `Logger`\n * instance will not be changed, and the default logging level will be\n * used to construct a new `Logger` instance if it does not exist.\n * @return {Logger}\n * The `Logger` instance of the specified name, which either be the\n * existing one or a newly constructed one.\n */\n static getLogger(name = '', options = {}) {\n if (!isString(name)) {\n throw new TypeError('The name of a logger must be a string, and empty string is allowed.');\n }\n const theName = String(name); // make sure the name is a primitive string\n let logger = __loggerMap.get(theName);\n if (logger === undefined) {\n // sets the internally constructing flag before constructing a instance\n __isInternalConstructing = true;\n logger = new Logger(theName, options.appender, options.level);\n // clear the internally constructing flag after constructing the new instance\n __isInternalConstructing = false;\n __loggerMap.set(theName, logger);\n } else {\n if (options.appender !== undefined) {\n logger.setAppender(options.appender);\n }\n if (options.level !== undefined) {\n logger.setLevel(options.level);\n }\n }\n return logger;\n }\n\n /**\n * Clears all existing `Logger` instances.\n */\n static clearAllLoggers() {\n __loggerMap.clear();\n __levelMap.clear();\n }\n\n /**\n * Gets the logging level of the `Logger` instance of the specified name.\n *\n * @param name\n * The name of the `Logger` instance.\n * @returns {string}\n * The logging level of the `Logger` instance of the specified name. If the\n * `Logger` instance of the specified name does not exist, the default\n * logging level will be returned.\n */\n static getLoggerLevel(name) {\n const level = __levelMap.get(name);\n return level ?? __defaultLevel;\n }\n\n /**\n * Sets the logging level of the `Logger` instance of the specified name.\n *\n * @param name\n * The name of the `Logger` instance.\n * @param level\n * The new logging level of the `Logger` instance of the specified name.\n * The allowed levels are `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`,\n * and `NONE`. Lowercase letters are also allowed.\n */\n static setLoggerLevel(name, level) {\n level = upperCaseString(level);\n checkLoggingLevel(level);\n __levelMap.set(name, level);\n const logger = __loggerMap.get(name);\n if (logger !== undefined) {\n logger.setLevel(level);\n }\n }\n\n /**\n * Gets the default logging level.\n *\n * The default logging level is used to construct a new `Logger` instance if\n * the logging level of the new instance is not specified.\n *\n * @return {string}\n * The global default logging level.\n * @see Logger.setDefaultLevel\n * @see Logger.setAllLevels\n * @see Logger.resetAllLevels\n */\n static getDefaultLevel() {\n return __defaultLevel;\n }\n\n /**\n * Sets the default logging level.\n *\n * The default logging level is used to construct a new `Logger` instance if\n * the logging level of the new instance is not specified.\n *\n * @param {string} level\n * The new default logging level. The allowed levels are `TRACE`, `DEBUG`,\n * `INFO`, `WARN`, `ERROR`, and `NONE`. Lowercase letters are also allowed.\n * @see Logger.getDefaultLevel\n * @see Logger.setAllLevels\n * @see Logger.resetAllLevels\n */\n static setDefaultLevel(level) {\n level = upperCaseString(level);\n checkLoggingLevel(level);\n __defaultLevel = level;\n }\n\n /**\n * Resets the default logging level to the factory value.\n *\n * The default logging level is used to construct a new `Logger` instance if\n * the logging level of the new instance is not specified.\n */\n static resetDefaultLevel() {\n __defaultLevel = FACTORY_DEFAULT_LEVEL;\n }\n\n /**\n * Sets the logging level of all existing `Logger` instants.\n *\n * @param {string} level\n * The new logging level of all existing `Logger` instants. The allowed\n * levels are `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, and `NONE`.\n * Lowercase letters are also allowed.\n * @see Logger.getDefaultLevel\n * @see Logger.setDefaultLevel\n * @see Logger.resetAllLevels\n */\n static setAllLevels(level) {\n level = upperCaseString(level);\n checkLoggingLevel(level);\n for (const logger of __loggerMap.values()) {\n logger.setLevel(level);\n }\n }\n\n /**\n * Sets the logging level of all `Logger` instants to the default logging level.\n *\n * @see Logger.getDefaultLevel\n * @see Logger.setDefaultLevel\n * @see Logger.setAllLevels\n */\n static resetAllLevels() {\n Logger.setAllLevels(__defaultLevel);\n }\n\n /**\n * Gets the default logging appender.\n *\n * The default logging appender is used to construct a new `Logger` instance\n * if the logging appender of the new instance is not specified.\n *\n * @return {Object}\n * The default logging appender.\n * @see Logger.setDefaultAppender\n * @see Logger.setAllAppenders\n * @see Logger.resetAllAppenders\n */\n static getDefaultAppender() {\n return __defaultAppender;\n }\n\n /**\n * Sets the default logging appender.\n *\n * The default logging appender is used to construct a new `Logger` instance\n * if the logging appender of the new instance is not specified.\n *\n * @param {object} appender\n * The new default logging appender.\n * @see Logger.getDefaultAppender\n * @see Logger.setAllAppenders\n * @see Logger.resetAllAppenders\n */\n static setDefaultAppender(appender) {\n checkAppender(appender);\n __defaultAppender = appender;\n }\n\n /**\n * Resets the default logging appender to the factory value.\n *\n * The default logging appender is used to construct a new `Logger` instance\n * if the logging appender of the new instance is not specified.\n *\n * @see Logger.getDefaultAppender\n */\n static resetDefaultAppender() {\n __defaultAppender = FACTORY_DEFAULT_APPENDER;\n }\n\n /**\n * Sets the appender of all `Logger` instants.\n *\n * @param {object} appender\n * The new appender to be set, indicating the content output pipe of the\n * log. This object must provide `trace`, `debug`, `info`, `warn` and\n * `error` methods.\n * @see Logger.getDefaultAppender\n * @see Logger.setDefaultAppender\n * @see Logger.resetAllAppenders\n */\n static setAllAppenders(appender) {\n checkAppender(appender);\n for (const logger of __loggerMap.values()) {\n logger.setAppender(appender);\n }\n }\n\n /**\n * Sets the appender of all `Logger` instants to the default appender.\n *\n * @see Logger.getDefaultAppender\n * @see Logger.setDefaultAppender\n * @see Logger.setAllAppenders\n */\n static resetAllAppenders() {\n Logger.setAllAppenders(__defaultAppender);\n }\n\n /**\n * Resets all configurations of the `Logger` class to the factory values.\n *\n * This method is equivalent to calling the following methods in sequence:\n * - `Logger.clearAllLoggers()`\n * - `Logger.resetDefaultLevel()`\n * - `Logger.resetDefaultAppender()`\n */\n static reset() {\n Logger.clearAllLoggers();\n Logger.resetDefaultLevel();\n Logger.resetDefaultAppender();\n }\n\n /**\n * Construct a log object.\n *\n * **NOTE**: Do NOT call this constructor directly. Use the static method\n * `Logger.getLogger()` instead.\n *\n * @param {string} name\n * The optional name of this logger. The default value of this argument\n * is an empty string.\n * @param {object} appender\n * Optional, indicating the content output pipe of the log. This object\n * must provide `trace`, `debug`, `info`, `warn` and `error` methods.\n * The default value of this argument is `Logger.getDefaultAppender()`.\n * @param {string} level\n * Optional, indicating the log level of this object. The default value\n * of this argument is `Logger.getDefaultLevel()`.\n * @see Logger.getLogger\n */\n constructor(name, appender, level) {\n if (!__isInternalConstructing) {\n throw new Error('The `Logger` instance can only be constructed by the '\n + 'static method `Logger.getLogger()`.');\n }\n if (appender === undefined) {\n appender = __defaultAppender;\n } else {\n checkAppender(appender);\n }\n if (level === undefined) {\n level = __levelMap.get(name) ?? __defaultLevel;\n } else {\n level = upperCaseString(level);\n checkLoggingLevel(level);\n }\n this._name = name;\n this._level = level;\n this._appender = appender;\n bindLoggingMethods(this, level, appender);\n __levelMap.set(name, level);\n }\n\n /**\n * Get the name of this logger.\n *\n * @returns {string}\n * The name of this logger.\n */\n getName() {\n return this._name;\n }\n\n /**\n * Get the appender of this logger.\n *\n * @return {object}\n * The appender of this logger.\n */\n getAppender() {\n return this._appender;\n }\n\n /**\n * Set up a new Appender.\n *\n * @param {object} appender\n * The new Appender serves as the content output pipeline of the log.\n * This object must provide `trace`, `debug`, `info`, `warn` and `error`\n * methods.\n */\n setAppender(appender) {\n checkAppender(appender);\n bindLoggingMethods(this, this._level, appender);\n this._appender = appender;\n }\n\n /**\n * Get the logging level of this logger.\n *\n * @return {string}\n * The logging level of this logger. Possible return values are `TRACE`,\n * `DEBUG`, `INFO`, `WARN`, `ERROR`, and `NONE`.\n */\n getLevel() {\n return this._level;\n }\n\n /**\n * Set the logging level of this logger.\n *\n * @param {string} level\n * The new logging level. The allowed levels are `TRACE`, `DEBUG`, `INFO`,\n * `WARN`, `ERROR`, and `NONE`. Lowercase letters are also allowed.\n */\n setLevel(level) {\n level = upperCaseString(level);\n checkLoggingLevel(level);\n bindLoggingMethods(this, level, this._appender);\n this._level = level;\n }\n\n /**\n * Disable this logging object.\n */\n disable() {\n bindLoggingMethods(this, 'NONE', this._appender);\n }\n\n /**\n * Enable this logging object.\n */\n enable() {\n bindLoggingMethods(this, this._level, this._appender);\n }\n\n /**\n * Enable or disable this log object.\n *\n * @param {boolean} enabled\n * Whether to enable this log object.\n */\n setEnabled(enabled) {\n if (enabled) {\n this.enable();\n } else {\n this.disable();\n }\n }\n\n /**\n * Logs a message in the specified logging level.\n *\n * @param {string} level\n * the logging level.\n * @param {string} message\n * the message or message template, which may contain zero or more\n * substitution patterns, e.g., '%o', '%s', '%d', '%f', ..., etc.\n * @param {array} args\n * the array of arguments used to format the message.\n */\n log(level, message, ...args) {\n const levelName = upperCaseString(level);\n if ((LOGGING_LEVELS[levelName] !== undefined)\n && (LOGGING_LEVELS[levelName] >= LOGGING_LEVELS[this._level])) {\n const method = levelName.toLowerCase();\n this[method](message, ...args);\n }\n }\n\n /**\n * Logs a message in the `TRACE` level.\n *\n * @param {string} message\n * the message or message template, which may contain zero or more\n * substitution patterns, e.g., '%o', '%s', '%d', '%f', ..., etc.\n * @param {array} args\n * the array of arguments used to format the message.\n * @private\n */\n // eslint-disable-next-line no-unused-vars\n trace(message, ...args) {}\n\n /**\n * Logs a message in the `DEBUG` level.\n *\n * @param {string} message\n * the message or message template, which may contain zero or more\n * substitution patterns, e.g., '%o', '%s', '%d', '%f', ..., etc.\n * @param {array} args\n * the array of arguments used to format the message.\n * @private\n */\n // eslint-disable-next-line no-unused-vars\n debug(message, ...args) {}\n\n /**\n * Logs a message in the `INFO` level.\n *\n * @param {string} message\n * the message or message template, which may contain zero or more\n * substitution patterns, e.g., '%o', '%s', '%d', '%f', ..., etc.\n * @param {array} args\n * the array of arguments used to format the message.\n * @private\n */\n // eslint-disable-next-line no-unused-vars\n info(message, ...args) {}\n\n /**\n * Logs a message in the `WARN` level.\n *\n * @param {string} message\n * the message or message template, which may contain zero or more\n * substitution patterns, e.g., '%o', '%s', '%d', '%f', ..., etc.\n * @param {array} args\n * the array of arguments used to format the message.\n * @private\n */\n // eslint-disable-next-line no-unused-vars\n warn(message, ...args) {}\n\n /**\n * Logs a message in the `ERROR` level.\n *\n * @param {string} message\n * the message or message template, which may contain zero or more\n * substitution patterns, e.g., '%o', '%s', '%d', '%f', ..., etc.\n * @param {array} args\n * the array of arguments used to format the message.\n * @private\n */\n // eslint-disable-next-line no-unused-vars\n error(message, ...args) {}\n}\n\nexport default Logger;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2023.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nconst LOGGER_KEY = '__common_logging_logger__';\nconst VUE3_CLASS_COMPONENT_DECORATORS_KEY = '__vue3_class_component_decorators__';\n\nexport {\n LOGGER_KEY,\n VUE3_CLASS_COMPONENT_DECORATORS_KEY,\n};\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2023.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport Logger from './logger';\nimport { VUE3_CLASS_COMPONENT_DECORATORS_KEY } from './impl/metadata-keys';\n\n/**\n * The names of special functions of Vue components.\n *\n * @type {string[]}\n * @private\n * @author Haixing Hu\n */\nconst VUE_FUNCTIONS = [\n // The names of lifecycle hooks of Vue components.\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeUnmount',\n 'unmounted',\n 'errorCaptured',\n 'renderTracked', // Dev only\n 'renderTriggered', // Dev only\n 'activated',\n 'deactivated',\n 'serverPrefetch', // SSR only\n // The names of special functions in the options API Vue components.\n 'render',\n];\n\n/**\n * Print tracing logs for class methods.\n *\n * @param {string} className\n * The name of the class the decorated method belongs to.\n * @param {string} methodName\n * The name of the decorated method..\n * @param {array} args\n * The calling arguments of the decorated method.\n * @author Haixing Hu\n * @private\n */\nfunction printMethodLog(className, methodName, args) {\n const logger = Logger.getLogger(className);\n if (args.length === 0) {\n logger.trace('%s.%s.', className, methodName);\n } else {\n logger.trace('%s.%s:', className, methodName, ...args);\n }\n}\n\n/**\n * A decorator function that meets the requirements of the `createDecorator()`\n * function of `vue-class-component`.\n *\n * @param {Object} options\n * Options object used to create Vue components.\n * @param {String} key\n * The name of the property or method to which this decorator applies.\n * @param {Function} originalMethod\n * The original method to be called.\n * @author Haixing Hu\n * @private\n */\nfunction vueLogDecorator(options, key, originalMethod) {\n // If the method decorated by the decorator is a Vue's life cycle hook function,\n // Then `col` is `options`; otherwise `col` is `options.methods`\n const col = (VUE_FUNCTIONS.includes(key) ? options : options.methods);\n col[key] = function logWrapperMethod(...args) {\n printMethodLog(options.name, key, args);\n return originalMethod.apply(this, args);\n };\n}\n\n/**\n * Defines a class method decorator that modifies the target method and prints\n * its calling signature in the log, including class name, method name and\n * parameters.\n *\n * Note that only non-constructor class method can be decorated by this decorator.\n * The global function and class constructor CANNOT be decorated by this decorator.\n *\n * Usage example:\n * ```js\n * import { Log } from '@haixing_hu/logging';\n *\n * class Person {\n * @Log\n * eat(meal) {\n * ...\n * }\n * }\n *\n * const person = new Person();\n * const meal = new Meal();\n * person.eat(meal); // 日志中将会打印此方法调用的签名\n * ```\n *\n * @param {function} target\n * The method being decorated.\n * @param {object} context\n * the context object containing information about the method to be decorated.\n * @return {function}\n * The decorated method.\n * @author Haixing Hu\n */\nexport function Log(target, context) {\n if (context === null || typeof context !== 'object') {\n throw new TypeError('The context of `@Log` decorator must be an object.');\n }\n if (typeof target !== 'function' || context.kind !== 'method') {\n throw new TypeError('The `@Log` can only decorate a class method.');\n }\n // decorate the class-style Vue component\n // see the `createDecorator()` function in `@haixing_hu/vue3-class-component`\n const metadata = context.metadata;\n metadata[VUE3_CLASS_COMPONENT_DECORATORS_KEY] ??= [];\n metadata[VUE3_CLASS_COMPONENT_DECORATORS_KEY].push(\n (Class, instance, options) => vueLogDecorator(options, context.name, target),\n );\n // decorate the original method\n function decoratedMethod(...args) {\n const prototype = Object.getPrototypeOf(this);\n const Class = prototype.constructor;\n const className = Class.name;\n printMethodLog(className, context.name, args);\n return target.apply(this, args);\n }\n return decoratedMethod;\n}\n\nexport default Log;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2023.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport Logger from './logger';\n\n/**\n * A decorator to add a named logger to a class.\n *\n * This decorator will add a named logger to the class, which can be accessed\n * via the `logger` property of the class.\n *\n * Example usage:\n * ```js\n * import { HasLogger } from '@haixing_hu/logging';\n *\n * @HasLogger\n * class MyClass {\n * foo() {\n * this.logger.debug('This is MyClass.foo()');\n * }\n * }\n * ```\n *\n * The following is another example usage with the class component of Vue.js:\n * ```js\n * import { Component, toVue } from '@haixing_hu/vue3-class-component';\n * import { HasLogger, Log } from '@haixing_hu/logging';\n *\n * @Component({\n * template: '<p @click=\"foo\">{{ message }}</p>',\n * })\n * @HasLogger\n * class MyComponent {\n * @Log\n * foo() {\n * this.logger.debug('This is MyComponent.foo()');\n * }\n * }\n *\n * export default toVue(MyComponent);\n * ```\n *\n * **NOTE**: the order of the decorators is IMPORTANT. The `@HasLogger` decorator\n * must be placed **AFTER** the `@Component` decorator.\n *\n * @param {function} Class\n * the target class to be decorated.\n * @param {object} context\n * the context object containing information about the class to be decorated.\n * @return {function}\n * the new constructor of the decorated class.\n * @author Haixing Hu\n */\nfunction HasLogger(Class, context) {\n if (context === null || typeof context !== 'object') {\n throw new TypeError('The context must be an object.');\n }\n if (typeof Class !== 'function' || context.kind !== 'class') {\n throw new TypeError('The `@HasLogger` can only decorate a class.');\n }\n if (Class.prototype.logger) {\n throw new Error('The @HasLogger decorator can only be used once on a class.');\n }\n const instance = new Class();\n if (instance.logger !== undefined) {\n throw new Error('The @HasLogger cannot be decorated on the class with a `logger` field.');\n }\n // add the logger to the class prototype\n Class.prototype.logger = Logger.getLogger(context.name);\n return Class;\n}\n\nexport default HasLogger;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2023.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport Logger from './logger';\nimport Log from './log';\nimport HasLogger from './has-logger';\n\nexport {\n Logger,\n Log,\n HasLogger,\n};\n\nexport default Logger;\n"],"names":["LOGGING_LEVELS","TRACE","DEBUG","INFO","WARN","ERROR","NONE","checkAppender","appender","_typeof","TypeError","level","Object","prototype","hasOwnProperty","call","methodName","toLowerCase","method","Error","concat","checkLoggingLevel","undefined","RangeError","JSON","stringify","keys","upperCaseString","value","String","toUpperCase","isString","getBrowserEngine","userAgent","window","navigator","test","_arrayLikeToArray","arrayLikeToArray","_unsupportedIterableToArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","getLoggingPrefix","logger","prefix","_name","fixFirstArgument","args","length","_toConsumableArray","bindWithArrowFunction","_len","arguments","Array","_key","apply","bindWithoutPrefix","Function","bind","bindWithFunctionBind","NOOP","bindLoggingMethods","target","m","engine","FACTORY_DEFAULT_LEVEL","FACTORY_DEFAULT_APPENDER","console","__defaultLevel","__defaultAppender","__loggerMap","Map","__levelMap","__isInternalConstructing","Logger","name","_classCallCheck","_levelMap$get","get","_level","_appender","set","_createClass","key","getName","getAppender","setAppender","getLevel","setLevel","disable","enable","setEnabled","enabled","log","message","levelName","trace","debug","info","warn","error","getLogger","options","theName","clearAllLoggers","clear","getLoggerLevel","setLoggerLevel","getDefaultLevel","setDefaultLevel","resetDefaultLevel","setAllLevels","_iterator","_createForOfIteratorHelper","values","_step","s","n","done","err","e","f","resetAllLevels","getDefaultAppender","setDefaultAppender","resetDefaultAppender","setAllAppenders","_iterator2","_step2","resetAllAppenders","reset","VUE3_CLASS_COMPONENT_DECORATORS_KEY","VUE_FUNCTIONS","printMethodLog","className","vueLogDecorator","originalMethod","col","includes","methods","logWrapperMethod","Log","context","_metadata$VUE3_CLASS_","kind","metadata","push","Class","instance","decoratedMethod","getPrototypeOf","constructor","_len2","_key2","HasLogger"],"mappings":"AAAA,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;AAC/B,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC;AACjF;;ACFA,SAAS,OAAO,CAAC,CAAC,EAAE;AACpB,EAAE,yBAAyB;;AAE3B,EAAE,OAAO,OAAO,GAAG,UAAU,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC,EAAE;AACpG,IAAI,OAAO,OAAO,CAAC;AACnB,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE;AACnB,IAAI,OAAO,CAAC,IAAI,UAAU,IAAI,OAAO,MAAM,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AACvH,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACf;;ACPA,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3B,EAAE,IAAI,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC;AAC5C,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;AAC/B,EAAE,IAAI,MAAM,KAAK,CAAC,EAAE;AACpB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAc,CAAC;AACrC,IAAI,IAAI,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;AACxC,IAAI,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC;AACvE,EAAE;AACF,EAAE,OAAO,CAAkB,MAAM,CAAS,EAAE,CAAC,CAAC;AAC9C;;ACRA,SAAS,aAAa,CAAC,CAAC,EAAE;AAC1B,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC;AAClC,EAAE,OAAO,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;AAC5C;;ACJA,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;AACjC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChB,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,KAAE,EAAE,CAAC,CAAC,YAAY,GAAG,IAAE,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,IAAE,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChJ,EAAE;AACF;AACA,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC/B,EAAE,OAAO,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE;AACrH,IAAI,QAAQ,EAAE;AACd,GAAG,CAAC,EAAE,CAAC;AACP;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAMA,cAAc,GAAG;AACrBC,EAAAA,KAAK,EAAE,CAAC;AACRC,EAAAA,KAAK,EAAE,CAAC;AACRC,EAAAA,IAAI,EAAE,CAAC;AACPC,EAAAA,IAAI,EAAE,CAAC;AACPC,EAAAA,KAAK,EAAE,CAAC;AACRC,EAAAA,IAAI,EAAE;AACR,CAAC;;ACXD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,aAAaA,CAACC,QAAQ,EAAE;EAC/B,IAAIA,QAAQ,KAAK,IAAI,IAAIC,OAAA,CAAOD,QAAQ,CAAA,KAAK,QAAQ,EAAE;AACrD,IAAA,MAAM,IAAIE,SAAS,CAAC,sDAAsD,CAAC;AAC7E,EAAA;AACA,EAAA,KAAK,IAAMC,KAAK,IAAIX,cAAc,EAAE;AAClC;AACA,IAAA,IAAIY,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACf,cAAc,EAAEW,KAAK,CAAC,IAAKA,KAAK,KAAK,MAAO,EAAE;AACrF,MAAA,IAAMK,UAAU,GAAGL,KAAK,CAACM,WAAW,EAAE;AACtC,MAAA,IAAMC,MAAM,GAAGV,QAAQ,CAACQ,UAAU,CAAC;AACnC,MAAA,IAAI,OAAOE,MAAM,KAAK,UAAU,EAAE;AAChC,QAAA,MAAM,IAAIC,KAAK,CAAA,qCAAA,CAAAC,MAAA,CAAuCJ,UAAU,eAAY,CAAC;AAC/E,MAAA;AACF,IAAA;AACF,EAAA;AACF;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,iBAAiBA,CAACV,KAAK,EAAE;AAChC,EAAA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;AAC7B,IAAA,MAAM,IAAID,SAAS,CAAC,qCAAqC,CAAC;AAC5D,EAAA;AACA,EAAA,IAAIV,cAAc,CAACW,KAAK,CAAC,KAAKW,SAAS,EAAE;IACvC,MAAM,IAAIC,UAAU,CAAC,0BAAA,CAAAH,MAAA,CAA0BT,KAAK,EAAA,MAAA,CAAA,GAAA,2BAAA,CAAAS,MAAA,CACzBI,IAAI,CAACC,SAAS,CAACb,MAAM,CAACc,IAAI,CAAC1B,cAAc,CAAC,CAAC,EAAA,GAAA,CAAG,CAAC;AAC5E,EAAA;AACF;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS2B,eAAeA,CAACC,KAAK,EAAE;EAC9B,IAAK,OAAOA,KAAK,KAAK,QAAQ,IAAM,EAAEA,KAAK,YAAYC,MAAM,CAAE,EAAE;AAC/D,IAAA,OAAOD,KAAK;AACd,EAAA;AACA,EAAA,OAAOA,KAAK,CAACE,WAAW,EAAE;AAC5B;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,QAAQA,CAACH,KAAK,EAAE;AACvB,EAAA,OAAQ,OAAOA,KAAK,KAAK,QAAQ,IAAMA,KAAK,YAAYC,MAAO;AACjE;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,gBAAgBA,GAAG;AAC1B,EAAA,IAAMC,SAAS,GAAGC,MAAM,CAACC,SAAS,CAACF,SAAS;AAC5C,EAAA,IAAI,YAAY,CAACG,IAAI,CAACH,SAAS,CAAC,IAAI,CAAC,aAAa,CAACG,IAAI,CAACH,SAAS,CAAC,EAAE;IAClE,OAAO,OAAO,CAAC;EACjB,CAAC,MAAM,IAAI,sBAAsB,CAACG,IAAI,CAACH,SAAS,CAAC,EAAE;IACjD,OAAO,OAAO,CAAC;AACjB,EAAA,CAAC,MAAM,IAAI,iBAAiB,CAACG,IAAI,CAACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAACG,IAAI,CAACH,SAAS,CAAC,EAAE;IAC1E,OAAO,QAAQ,CAAC;EAClB,CAAC,MAAM,IAAI,UAAU,CAACG,IAAI,CAACH,SAAS,CAAC,EAAE;IACrC,OAAO,SAAS,CAAC;EACnB,CAAC,MAAM,IAAI,SAAS,CAACG,IAAI,CAACH,SAAS,CAAC,EAAE;IACpC,OAAO,QAAQ,CAAC;AAClB,EAAA,CAAC,MAAM;AACL,IAAA,OAAO,SAAS;AAClB,EAAA;AACF;;AChCA,SAASI,mBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;AACjC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAC/C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvD,EAAE,OAAO,CAAC;AACV;;ACHA,SAAS,kBAAkB,CAAC,CAAC,EAAE;AAC/B,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAOC,mBAAgB,CAAC,CAAC,CAAC;AAClD;;ACHA,SAAS,gBAAgB,CAAC,CAAC,EAAE;AAC7B,EAAE,IAAI,WAAW,IAAI,OAAO,MAAM,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACjH;;ACDA,SAASC,6BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3C,EAAE,IAAI,CAAC,EAAE;AACT,IAAI,IAAI,QAAQ,IAAI,OAAO,CAAC,EAAE,OAAOD,mBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3D,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5C,IAAI,OAAO,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,KAAK,CAAC,IAAI,0CAA0C,CAAC,IAAI,CAAC,CAAC,CAAC,GAAGA,mBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM;AAC9N,EAAE;AACF;;ACPA,SAAS,kBAAkB,GAAG;AAC9B,EAAE,MAAM,IAAI,SAAS,CAAC,sIAAsI,CAAC;AAC7J;;ACEA,SAAS,kBAAkB,CAAC,CAAC,EAAE;AAC/B,EAAE,OAAOE,kBAAiB,CAAC,CAAC,CAAC,IAAIC,gBAAe,CAAC,CAAC,CAAC,IAAIC,6BAA0B,CAAC,CAAC,CAAC,IAAIC,kBAAiB,EAAE;AAC3G;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,gBAAgBA,CAACC,MAAM,EAAElC,KAAK,EAAE;AACvC,EAAA,IAAImC,MAAM,GAAA,GAAA,CAAA1B,MAAA,CAAOT,KAAK,EAAA,IAAA,CAAI;EAC1B,IAAIkC,MAAM,CAACE,KAAK,EAAE;AAChBD,IAAAA,MAAM,OAAA1B,MAAA,CAAOyB,MAAM,CAACE,KAAK,EAAA,KAAA,CAAK;AAChC,EAAA;AACA,EAAA,OAAOD,MAAM;AACf;;ACjBA,SAASE,gBAAgBA,CAACF,MAAM,EAAEG,IAAI,EAAE;AACtC,EAAA,IAAIA,IAAI,CAACC,MAAM,KAAK,CAAC,EAAE;IACrB,OAAO,CAACJ,MAAM,CAAC;EACjB,CAAC,MAAM,IAAIf,QAAQ,CAACkB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;IAC5BA,IAAI,CAAC,CAAC,CAAC,GAAGH,MAAM,GAAGG,IAAI,CAAC,CAAC,CAAC;AAC1B,IAAA,OAAOA,IAAI;AACb,EAAA,CAAC,MAAM;AACL,IAAA,OAAA,CAAQH,MAAM,CAAA,CAAA1B,MAAA,CAAA+B,kBAAA,CAAKF,IAAI,CAAA,CAAA;AACzB,EAAA;AACF;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,qBAAqBA,CAACP,MAAM,EAAE3B,MAAM,EAAEP,KAAK,EAAEH,QAAQ,EAAE;AAC9D;AACA;AACA;AACA,EAAA,IAAMsC,MAAM,GAAGF,gBAAgB,CAACC,MAAM,EAAElC,KAAK,CAAC;AAC9C;AACA;AACA;AACA;EACAkC,MAAM,CAAC3B,MAAM,CAAC,GAAG,YAAA;AAAA,IAAA,KAAA,IAAAmC,IAAA,GAAAC,SAAA,CAAAJ,MAAA,EAAID,IAAI,GAAA,IAAAM,KAAA,CAAAF,IAAA,GAAAG,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA,EAAA,EAAA;AAAJP,MAAAA,IAAI,CAAAO,IAAA,CAAA,GAAAF,SAAA,CAAAE,IAAA,CAAA;AAAA,IAAA;AAAA,IAAA,OAAKhD,QAAQ,CAACU,MAAM,CAAC,CAAAuC,KAAA,CAAhBjD,QAAQ,EAAA2C,kBAAA,CAAYH,gBAAgB,CAACF,MAAM,EAAEG,IAAI,CAAC,CAAA,CAAC;AAAA,EAAA,CAAA;AACnF;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASS,iBAAiBA,CAACb,MAAM,EAAE3B,MAAM,EAAEP,KAAK,EAAEH,QAAQ,EAAE;AAC1DqC,EAAAA,MAAM,CAAC3B,MAAM,CAAC,GAAGyC,QAAQ,CAAC9C,SAAS,CAAC+C,IAAI,CAAC7C,IAAI,CAACP,QAAQ,CAACU,MAAM,CAAC,EAAEV,QAAQ,CAAC;AAC3E;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASqD,oBAAoBA,CAAChB,MAAM,EAAE3B,MAAM,EAAEP,KAAK,EAAEH,QAAQ,EAAE;AAC7D;AACA;AACA;AACA,EAAA,IAAMsC,MAAM,GAAGF,gBAAgB,CAACC,MAAM,EAAElC,KAAK,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACAkC,MAAM,CAAC3B,MAAM,CAAC,GAAGyC,QAAQ,CAAC9C,SAAS,CAAC+C,IAAI,CAAC7C,IAAI,CAACP,QAAQ,CAACU,MAAM,CAAC,EAAEV,QAAQ,KAAAY,MAAA,CAAK0B,MAAM,EAAA,IAAA,CAAI,CAAC;AAC1F;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMgB,IAAI,GAAG,SAAPA,IAAIA,GAAS,CAAC,CAAC;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,kBAAkBA,CAAClB,MAAM,EAAElC,KAAK,EAAEH,QAAQ,EAAE;AACnD,EAAA,IAAMwD,MAAM,GAAGhE,cAAc,CAACW,KAAK,CAAC;AACpC,EAAA,KAAK,IAAMA,MAAK,IAAIX,cAAc,EAAE;AAClC;AACA,IAAA,IAAIY,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACf,cAAc,EAAEW,MAAK,CAAC,IAAKA,MAAK,KAAK,MAAO,EAAE;AACrF,MAAA,IAAMsD,CAAC,GAAGtD,MAAK,CAACM,WAAW,EAAE;AAC7B,MAAA,IAAIjB,cAAc,CAACW,MAAK,CAAC,GAAGqD,MAAM,EAAE;AAClC;AACAnB,QAAAA,MAAM,CAACoB,CAAC,CAAC,GAAGH,IAAI;AAClB,MAAA,CAAC,MAAM;AACL;AACA;AACA,QAAA,IAAMI,MAAM,GAAGlC,gBAAgB,EAAE;AACjC,QAAA,QAAQkC,MAAM;AACZ,UAAA,KAAK,OAAO;AAAE;YACZL,oBAAoB,CAAChB,MAAM,EAAEoB,CAAC,EAAEtD,MAAK,EAAEH,QAAQ,CAAC;AAChD,YAAA;AACF,UAAA,KAAK,QAAQ;AAAI;YACf4C,qBAAqB,CAACP,MAAM,EAAEoB,CAAC,EAAEtD,MAAK,EAAEH,QAAQ,CAAC;AACjD,YAAA;UACF,KAAK,OAAO,CAAC;UACb,KAAK,SAAS,CAAC;UACf,KAAK,QAAQ,CAAC;AACd,UAAA;YACEkD,iBAAiB,CAACb,MAAM,EAAEoB,CAAC,EAAEtD,MAAK,EAAEH,QAAQ,CAAC;AAC7C;AACA;AACA,YAAA;AACJ;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACF;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA,IAAM2D,qBAAqB,GAAG,OAAO;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,wBAAwB,GAAGC,OAAO;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,IAAIC,cAAc,GAAGH,qBAAqB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAII,iBAAiB,GAAGH,wBAAwB;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMI,WAAW,GAAG,IAAIC,GAAG,EAAE;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,UAAU,GAAG,IAAID,GAAG,EAAE;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIE,wBAAwB,GAAG,KAAK;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA1BA,IA2BMC,MAAM,gBAAA,YAAA;AA+PV;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,SAAAA,OAAYC,IAAI,EAAErE,QAAQ,EAAEG,KAAK,EAAE;AAAAmE,IAAAA,eAAA,OAAAF,MAAA,CAAA;IACjC,IAAI,CAACD,wBAAwB,EAAE;AAC7B,MAAA,MAAM,IAAIxD,KAAK,CAAC,uDAAuD,GACjE,qCAAqC,CAAC;AAC9C,IAAA;IACA,IAAIX,QAAQ,KAAKc,SAAS,EAAE;AAC1Bd,MAAAA,QAAQ,GAAG+D,iBAAiB;AAC9B,IAAA,CAAC,MAAM;MACLhE,aAAa,CAACC,QAAQ,CAAC;AACzB,IAAA;IACA,IAAIG,KAAK,KAAKW,SAAS,EAAE;AAAA,MAAA,IAAAyD,aAAA;AACvBpE,MAAAA,KAAK,GAAA,CAAAoE,aAAA,GAAGL,UAAU,CAACM,GAAG,CAACH,IAAI,CAAC,MAAA,IAAA,IAAAE,aAAA,KAAA,MAAA,GAAAA,aAAA,GAAIT,cAAc;AAChD,IAAA,CAAC,MAAM;AACL3D,MAAAA,KAAK,GAAGgB,eAAe,CAAChB,KAAK,CAAC;MAC9BU,iBAAiB,CAACV,KAAK,CAAC;AAC1B,IAAA;IACA,IAAI,CAACoC,KAAK,GAAG8B,IAAI;IACjB,IAAI,CAACI,MAAM,GAAGtE,KAAK;IACnB,IAAI,CAACuE,SAAS,GAAG1E,QAAQ;AACzBuD,IAAAA,kBAAkB,CAAC,IAAI,EAAEpD,KAAK,EAAEH,QAAQ,CAAC;AACzCkE,IAAAA,UAAU,CAACS,GAAG,CAACN,IAAI,EAAElE,KAAK,CAAC;AAC7B,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EALE,OAAAyE,YAAA,CAAAR,MAAA,EAAA,CAAA;IAAAS,GAAA,EAAA,SAAA;AAAAzD,IAAAA,KAAA,EAMA,SAAA0D,OAAOA,GAAG;MACR,OAAO,IAAI,CAACvC,KAAK;AACnB,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AALE,GAAA,EAAA;IAAAsC,GAAA,EAAA,aAAA;AAAAzD,IAAAA,KAAA,EAMA,SAAA2D,WAAWA,GAAG;MACZ,OAAO,IAAI,CAACL,SAAS;AACvB,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AAPE,GAAA,EAAA;IAAAG,GAAA,EAAA,aAAA;AAAAzD,IAAAA,KAAA,EAQA,SAAA4D,WAAWA,CAAChF,QAAQ,EAAE;MACpBD,aAAa,CAACC,QAAQ,CAAC;MACvBuD,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAACkB,MAAM,EAAEzE,QAAQ,CAAC;MAC/C,IAAI,CAAC0E,SAAS,GAAG1E,QAAQ;AAC3B,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AANE,GAAA,EAAA;IAAA6E,GAAA,EAAA,UAAA;AAAAzD,IAAAA,KAAA,EAOA,SAAA6D,QAAQA,GAAG;MACT,OAAO,IAAI,CAACR,MAAM;AACpB,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AANE,GAAA,EAAA;IAAAI,GAAA,EAAA,UAAA;AAAAzD,IAAAA,KAAA,EAOA,SAAA8D,QAAQA,CAAC/E,KAAK,EAAE;AACdA,MAAAA,KAAK,GAAGgB,eAAe,CAAChB,KAAK,CAAC;MAC9BU,iBAAiB,CAACV,KAAK,CAAC;MACxBoD,kBAAkB,CAAC,IAAI,EAAEpD,KAAK,EAAE,IAAI,CAACuE,SAAS,CAAC;MAC/C,IAAI,CAACD,MAAM,GAAGtE,KAAK;AACrB,IAAA;;AAEA;AACF;AACA;AAFE,GAAA,EAAA;IAAA0E,GAAA,EAAA,SAAA;AAAAzD,IAAAA,KAAA,EAGA,SAAA+D,OAAOA,GAAG;MACR5B,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAACmB,SAAS,CAAC;AAClD,IAAA;;AAEA;AACF;AACA;AAFE,GAAA,EAAA;IAAAG,GAAA,EAAA,QAAA;AAAAzD,IAAAA,KAAA,EAGA,SAAAgE,MAAMA,GAAG;MACP7B,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAACkB,MAAM,EAAE,IAAI,CAACC,SAAS,CAAC;AACvD,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AALE,GAAA,EAAA;IAAAG,GAAA,EAAA,YAAA;AAAAzD,IAAAA,KAAA,EAMA,SAAAiE,UAAUA,CAACC,OAAO,EAAE;AAClB,MAAA,IAAIA,OAAO,EAAE;QACX,IAAI,CAACF,MAAM,EAAE;AACf,MAAA,CAAC,MAAM;QACL,IAAI,CAACD,OAAO,EAAE;AAChB,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVE,GAAA,EAAA;IAAAN,GAAA,EAAA,KAAA;AAAAzD,IAAAA,KAAA,EAWA,SAAAmE,GAAGA,CAACpF,KAAK,EAAEqF,OAAO,EAAW;AAC3B,MAAA,IAAMC,SAAS,GAAGtE,eAAe,CAAChB,KAAK,CAAC;AACxC,MAAA,IAAKX,cAAc,CAACiG,SAAS,CAAC,KAAK3E,SAAS,IACpCtB,cAAc,CAACiG,SAAS,CAAC,IAAIjG,cAAc,CAAC,IAAI,CAACiF,MAAM,CAAE,EAAE;AACjE,QAAA,IAAM/D,MAAM,GAAG+E,SAAS,CAAChF,WAAW,EAAE;QAAC,KAAA,IAAAoC,IAAA,GAAAC,SAAA,CAAAJ,MAAA,EAJpBD,IAAI,OAAAM,KAAA,CAAAF,IAAA,GAAA,CAAA,GAAAA,IAAA,WAAAG,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA,EAAA,EAAA;AAAJP,UAAAA,IAAI,CAAAO,IAAA,GAAA,CAAA,CAAA,GAAAF,SAAA,CAAAE,IAAA,CAAA;AAAA,QAAA;AAKvB,QAAA,IAAI,CAACtC,MAAM,CAAC,CAAAuC,KAAA,CAAZ,IAAI,EAAA,CAASuC,OAAO,CAAA,CAAA5E,MAAA,CAAK6B,IAAI,CAAA,CAAC;AAChC,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AAAA,GAAA,EAAA;IAAAoC,GAAA,EAAA,OAAA;AAAAzD,IAAAA,KAAA,EACA,SAAAsE,KAAKA,CAACF,OAAO,EAAW,CAAC;;AAEzB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AAAA,GAAA,EAAA;IAAAX,GAAA,EAAA,OAAA;AAAAzD,IAAAA,KAAA,EACA,SAAAuE,KAAKA,CAACH,OAAO,EAAW,CAAC;;AAEzB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AAAA,GAAA,EAAA;IAAAX,GAAA,EAAA,MAAA;AAAAzD,IAAAA,KAAA,EACA,SAAAwE,IAAIA,CAACJ,OAAO,EAAW,CAAC;;AAExB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AAAA,GAAA,EAAA;IAAAX,GAAA,EAAA,MAAA;AAAAzD,IAAAA,KAAA,EACA,SAAAyE,IAAIA,CAACL,OAAO,EAAW,CAAC;;AAExB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AAAA,GAAA,EAAA;IAAAX,GAAA,EAAA,OAAA;AAAAzD,IAAAA,KAAA,EACA,SAAA0E,KAAKA,CAACN,OAAO,EAAW,CAAC;AAAC,GAAA,CAAA,EAAA,CAAA;IAAAX,GAAA,EAAA,WAAA;IAAAzD,KAAA;AAjd1B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACE,SAAO2E,SAASA,GAA0B;AAAA,MAAA,IAAzB1B,IAAI,GAAAvB,SAAA,CAAAJ,MAAA,GAAA,CAAA,IAAAI,SAAA,CAAA,CAAA,CAAA,KAAAhC,SAAA,GAAAgC,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;AAAA,MAAA,IAAEkD,OAAO,GAAAlD,SAAA,CAAAJ,MAAA,GAAA,CAAA,IAAAI,SAAA,CAAA,CAAA,CAAA,KAAAhC,SAAA,GAAAgC,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;AACtC,MAAA,IAAI,CAACvB,QAAQ,CAAC8C,IAAI,CAAC,EAAE;AACnB,QAAA,MAAM,IAAInE,SAAS,CAAC,qEAAqE,CAAC;AAC5F,MAAA;AACA,MAAA,IAAM+F,OAAO,GAAG5E,MAAM,CAACgD,IAAI,CAAC,CAAC;AAC7B,MAAA,IAAIhC,MAAM,GAAG2B,WAAW,CAACQ,GAAG,CAACyB,OAAO,CAAC;MACrC,IAAI5D,MAAM,KAAKvB,SAAS,EAAE;AACxB;AACAqD,QAAAA,wBAAwB,GAAG,IAAI;AAC/B9B,QAAAA,MAAM,GAAG,IAAI+B,MAAM,CAAC6B,OAAO,EAAED,OAAO,CAAChG,QAAQ,EAAEgG,OAAO,CAAC7F,KAAK,CAAC;AAC7D;AACAgE,QAAAA,wBAAwB,GAAG,KAAK;AAChCH,QAAAA,WAAW,CAACW,GAAG,CAACsB,OAAO,EAAE5D,MAAM,CAAC;AAClC,MAAA,CAAC,MAAM;AACL,QAAA,IAAI2D,OAAO,CAAChG,QAAQ,KAAKc,SAAS,EAAE;AAClCuB,UAAAA,MAAM,CAAC2C,WAAW,CAACgB,OAAO,CAAChG,QAAQ,CAAC;AACtC,QAAA;AACA,QAAA,IAAIgG,OAAO,CAAC7F,KAAK,KAAKW,SAAS,EAAE;AAC/BuB,UAAAA,MAAM,CAAC6C,QAAQ,CAACc,OAAO,CAAC7F,KAAK,CAAC;AAChC,QAAA;AACF,MAAA;AACA,MAAA,OAAOkC,MAAM;AACf,IAAA;;AAEA;AACF;AACA;AAFE,GAAA,EAAA;IAAAwC,GAAA,EAAA,iBAAA;AAAAzD,IAAAA,KAAA,EAGA,SAAO8E,eAAeA,GAAG;MACvBlC,WAAW,CAACmC,KAAK,EAAE;MACnBjC,UAAU,CAACiC,KAAK,EAAE;AACpB,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATE,GAAA,EAAA;IAAAtB,GAAA,EAAA,gBAAA;AAAAzD,IAAAA,KAAA,EAUA,SAAOgF,cAAcA,CAAC/B,IAAI,EAAE;AAC1B,MAAA,IAAMlE,KAAK,GAAG+D,UAAU,CAACM,GAAG,CAACH,IAAI,CAAC;AAClC,MAAA,OAAOlE,KAAK,KAAA,IAAA,IAALA,KAAK,KAAA,MAAA,GAALA,KAAK,GAAI2D,cAAc;AAChC,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATE,GAAA,EAAA;IAAAe,GAAA,EAAA,gBAAA;AAAAzD,IAAAA,KAAA,EAUA,SAAOiF,cAAcA,CAAChC,IAAI,EAAElE,KAAK,EAAE;AACjCA,MAAAA,KAAK,GAAGgB,eAAe,CAAChB,KAAK,CAAC;MAC9BU,iBAAiB,CAACV,KAAK,CAAC;AACxB+D,MAAAA,UAAU,CAACS,GAAG,CAACN,IAAI,EAAElE,KAAK,CAAC;AAC3B,MAAA,IAAMkC,MAAM,GAAG2B,WAAW,CAACQ,GAAG,CAACH,IAAI,CAAC;MACpC,IAAIhC,MAAM,KAAKvB,SAAS,EAAE;AACxBuB,QAAAA,MAAM,CAAC6C,QAAQ,CAAC/E,KAAK,CAAC;AACxB,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXE,GAAA,EAAA;IAAA0E,GAAA,EAAA,iBAAA;AAAAzD,IAAAA,KAAA,EAYA,SAAOkF,eAAeA,GAAG;AACvB,MAAA,OAAOxC,cAAc;AACvB,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAZE,GAAA,EAAA;IAAAe,GAAA,EAAA,iBAAA;AAAAzD,IAAAA,KAAA,EAaA,SAAOmF,eAAeA,CAACpG,KAAK,EAAE;AAC5BA,MAAAA,KAAK,GAAGgB,eAAe,CAAChB,KAAK,CAAC;MAC9BU,iBAAiB,CAACV,KAAK,CAAC;AACxB2D,MAAAA,cAAc,GAAG3D,KAAK;AACxB,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AALE,GAAA,EAAA;IAAA0E,GAAA,EAAA,mBAAA;AAAAzD,IAAAA,KAAA,EAMA,SAAOoF,iBAAiBA,GAAG;AACzB1C,MAAAA,cAAc,GAAGH,qBAAqB;AACxC,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVE,GAAA,EAAA;IAAAkB,GAAA,EAAA,cAAA;AAAAzD,IAAAA,KAAA,EAWA,SAAOqF,YAAYA,CAACtG,KAAK,EAAE;AACzBA,MAAAA,KAAK,GAAGgB,eAAe,CAAChB,KAAK,CAAC;MAC9BU,iBAAiB,CAACV,KAAK,CAAC;MAAC,IAAAuG,SAAA,GAAAC,0BAAA,CACJ3C,WAAW,CAAC4C,MAAM,EAAE,CAAA;QAAAC,KAAA;AAAA,MAAA,IAAA;QAAzC,KAAAH,SAAA,CAAAI,CAAA,EAAA,EAAA,CAAA,CAAAD,KAAA,GAAAH,SAAA,CAAAK,CAAA,EAAA,EAAAC,IAAA,GAA2C;AAAA,UAAA,IAAhC3E,MAAM,GAAAwE,KAAA,CAAAzF,KAAA;AACfiB,UAAAA,MAAM,CAAC6C,QAAQ,CAAC/E,KAAK,CAAC;AACxB,QAAA;AAAC,MAAA,CAAA,CAAA,OAAA8G,GAAA,EAAA;QAAAP,SAAA,CAAAQ,CAAA,CAAAD,GAAA,CAAA;AAAA,MAAA,CAAA,SAAA;AAAAP,QAAAA,SAAA,CAAAS,CAAA,EAAA;AAAA,MAAA;AACH,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AANE,GAAA,EAAA;IAAAtC,GAAA,EAAA,gBAAA;AAAAzD,IAAAA,KAAA,EAOA,SAAOgG,cAAcA,GAAG;AACtBhD,MAAAA,MAAM,CAACqC,YAAY,CAAC3C,cAAc,CAAC;AACrC,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXE,GAAA,EAAA;IAAAe,GAAA,EAAA,oBAAA;AAAAzD,IAAAA,KAAA,EAYA,SAAOiG,kBAAkBA,GAAG;AAC1B,MAAA,OAAOtD,iBAAiB;AAC1B,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXE,GAAA,EAAA;IAAAc,GAAA,EAAA,oBAAA;AAAAzD,IAAAA,KAAA,EAYA,SAAOkG,kBAAkBA,CAACtH,QAAQ,EAAE;MAClCD,aAAa,CAACC,QAAQ,CAAC;AACvB+D,MAAAA,iBAAiB,GAAG/D,QAAQ;AAC9B,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AAPE,GAAA,EAAA;IAAA6E,GAAA,EAAA,sBAAA;AAAAzD,IAAAA,KAAA,EAQA,SAAOmG,oBAAoBA,GAAG;AAC5BxD,MAAAA,iBAAiB,GAAGH,wBAAwB;AAC9C,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVE,GAAA,EAAA;IAAAiB,GAAA,EAAA,iBAAA;AAAAzD,IAAAA,KAAA,EAWA,SAAOoG,eAAeA,CAACxH,QAAQ,EAAE;MAC/BD,aAAa,CAACC,QAAQ,CAAC;MAAC,IAAAyH,UAAA,GAAAd,0BAAA,CACH3C,WAAW,CAAC4C,MAAM,EAAE,CAAA;QAAAc,MAAA;AAAA,MAAA,IAAA;QAAzC,KAAAD,UAAA,CAAAX,CAAA,EAAA,EAAA,CAAA,CAAAY,MAAA,GAAAD,UAAA,CAAAV,CAAA,EAAA,EAAAC,IAAA,GAA2C;AAAA,UAAA,IAAhC3E,MAAM,GAAAqF,MAAA,CAAAtG,KAAA;AACfiB,UAAAA,MAAM,CAAC2C,WAAW,CAAChF,QAAQ,CAAC;AAC9B,QAAA;AAAC,MAAA,CAAA,CAAA,OAAAiH,GAAA,EAAA;QAAAQ,UAAA,CAAAP,CAAA,CAAAD,GAAA,CAAA;AAAA,MAAA,CAAA,SAAA;AAAAQ,QAAAA,UAAA,CAAAN,CAAA,EAAA;AAAA,MAAA;AACH,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AANE,GAAA,EAAA;IAAAtC,GAAA,EAAA,mBAAA;AAAAzD,IAAAA,KAAA,EAOA,SAAOuG,iBAAiBA,GAAG;AACzBvD,MAAAA,MAAM,CAACoD,eAAe,CAACzD,iBAAiB,CAAC;AAC3C,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AAPE,GAAA,EAAA;IAAAc,GAAA,EAAA,OAAA;AAAAzD,IAAAA,KAAA,EAQA,SAAOwG,KAAKA,GAAG;MACbxD,MAAM,CAAC8B,eAAe,EAAE;MACxB9B,MAAM,CAACoC,iBAAiB,EAAE;MAC1BpC,MAAM,CAACmD,oBAAoB,EAAE;AAC/B,IAAA;AAAC,GAAA,CAAA,CAAA;AAAA,CAAA;;AC9WH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMM,mCAAmC,GAAG,qCAAqC;;ACEjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,aAAa,GAAG;AACpB;AACA,cAAc,EACd,SAAS,EACT,aAAa,EACb,SAAS,EACT,cAAc,EACd,SAAS,EACT,eAAe,EACf,WAAW,EACX,eAAe,EACf,eAAe;AAAK;AACpB,iBAAiB;AAAG;AACpB,WAAW,EACX,aAAa,EACb,gBAAgB;AAAI;AACpB;AACA,QAAQ,CACT;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAACC,SAAS,EAAExH,UAAU,EAAEiC,IAAI,EAAE;AACnD,EAAA,IAAMJ,MAAM,GAAG+B,MAAM,CAAC2B,SAAS,CAACiC,SAAS,CAAC;AAC1C,EAAA,IAAIvF,IAAI,CAACC,MAAM,KAAK,CAAC,EAAE;IACrBL,MAAM,CAACqD,KAAK,CAAC,QAAQ,EAAEsC,SAAS,EAAExH,UAAU,CAAC;AAC/C,EAAA,CAAC,MAAM;AACL6B,IAAAA,MAAM,CAACqD,KAAK,CAAAzC,KAAA,CAAZZ,MAAM,GAAO,QAAQ,EAAE2F,SAAS,EAAExH,UAAU,CAAA,CAAAI,MAAA,CAAA+B,kBAAA,CAAKF,IAAI,CAAA,CAAA,CAAC;AACxD,EAAA;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASwF,eAAeA,CAACjC,OAAO,EAAEnB,GAAG,EAAEqD,cAAc,EAAE;AACrD;AACA;AACA,EAAA,IAAMC,GAAG,GAAIL,aAAa,CAACM,QAAQ,CAACvD,GAAG,CAAC,GAAGmB,OAAO,GAAGA,OAAO,CAACqC,OAAQ;AACrEF,EAAAA,GAAG,CAACtD,GAAG,CAAC,GAAG,SAASyD,gBAAgBA,GAAU;AAAA,IAAA,KAAA,IAAAzF,IAAA,GAAAC,SAAA,CAAAJ,MAAA,EAAND,IAAI,GAAA,IAAAM,KAAA,CAAAF,IAAA,GAAAG,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA,EAAA,EAAA;AAAJP,MAAAA,IAAI,CAAAO,IAAA,CAAA,GAAAF,SAAA,CAAAE,IAAA,CAAA;AAAA,IAAA;IAC1C+E,cAAc,CAAC/B,OAAO,CAAC3B,IAAI,EAAEQ,GAAG,EAAEpC,IAAI,CAAC;AACvC,IAAA,OAAOyF,cAAc,CAACjF,KAAK,CAAC,IAAI,EAAER,IAAI,CAAC;EACzC,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS8F,GAAGA,CAAC/E,MAAM,EAAEgF,OAAO,EAAE;AAAA,EAAA,IAAAC,qBAAA;EACnC,IAAID,OAAO,KAAK,IAAI,IAAIvI,OAAA,CAAOuI,OAAO,CAAA,KAAK,QAAQ,EAAE;AACnD,IAAA,MAAM,IAAItI,SAAS,CAAC,oDAAoD,CAAC;AAC3E,EAAA;EACA,IAAI,OAAOsD,MAAM,KAAK,UAAU,IAAIgF,OAAO,CAACE,IAAI,KAAK,QAAQ,EAAE;AAC7D,IAAA,MAAM,IAAIxI,SAAS,CAAC,8CAA8C,CAAC;AACrE,EAAA;AACA;AACA;AACA,EAAA,IAAMyI,QAAQ,GAAGH,OAAO,CAACG,QAAQ;AACjC,EAAA,CAAAF,qBAAA,GAAAE,QAAQ,CAACd,mCAAmC,CAAC,MAAA,IAAA,IAAAY,qBAAA,KAAA,MAAA,GAAAA,qBAAA,GAA7CE,QAAQ,CAACd,mCAAmC,CAAC,GAAK,EAAE;EACpDc,QAAQ,CAACd,mCAAmC,CAAC,CAACe,IAAI,CAChD,UAACC,KAAK,EAAEC,QAAQ,EAAE9C,OAAO,EAAA;IAAA,OAAKiC,eAAe,CAACjC,OAAO,EAAEwC,OAAO,CAACnE,IAAI,EAAEb,MAAM,CAAC;AAAA,EAAA,CAC9E,CAAC;AACD;EACA,SAASuF,eAAeA,GAAU;AAChC,IAAA,IAAM1I,SAAS,GAAGD,MAAM,CAAC4I,cAAc,CAAC,IAAI,CAAC;AAC7C,IAAA,IAAMH,KAAK,GAAGxI,SAAS,CAAC4I,WAAW;AACnC,IAAA,IAAMjB,SAAS,GAAGa,KAAK,CAACxE,IAAI;AAAC,IAAA,KAAA,IAAA6E,KAAA,GAAApG,SAAA,CAAAJ,MAAA,EAHHD,IAAI,GAAA,IAAAM,KAAA,CAAAmG,KAAA,GAAAC,KAAA,GAAA,CAAA,EAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA,EAAA,EAAA;AAAJ1G,MAAAA,IAAI,CAAA0G,KAAA,CAAA,GAAArG,SAAA,CAAAqG,KAAA,CAAA;AAAA,IAAA;IAI9BpB,cAAc,CAACC,SAAS,EAAEQ,OAAO,CAACnE,IAAI,EAAE5B,IAAI,CAAC;AAC7C,IAAA,OAAOe,MAAM,CAACP,KAAK,CAAC,IAAI,EAAER,IAAI,CAAC;AACjC,EAAA;AACA,EAAA,OAAOsG,eAAe;AACxB;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,SAASA,CAACP,KAAK,EAAEL,OAAO,EAAE;EACjC,IAAIA,OAAO,KAAK,IAAI,IAAIvI,OAAA,CAAOuI,OAAO,CAAA,KAAK,QAAQ,EAAE;AACnD,IAAA,MAAM,IAAItI,SAAS,CAAC,gCAAgC,CAAC;AACvD,EAAA;EACA,IAAI,OAAO2I,KAAK,KAAK,UAAU,IAAIL,OAAO,CAACE,IAAI,KAAK,OAAO,EAAE;AAC3D,IAAA,MAAM,IAAIxI,SAAS,CAAC,6CAA6C,CAAC;AACpE,EAAA;AACA,EAAA,IAAI2I,KAAK,CAACxI,SAAS,CAACgC,MAAM,EAAE;AAC1B,IAAA,MAAM,IAAI1B,KAAK,CAAC,4DAA4D,CAAC;AAC/E,EAAA;AACA,EAAA,IAAMmI,QAAQ,GAAG,IAAID,KAAK,EAAE;AAC5B,EAAA,IAAIC,QAAQ,CAACzG,MAAM,KAAKvB,SAAS,EAAE;AACjC,IAAA,MAAM,IAAIH,KAAK,CAAC,wEAAwE,CAAC;AAC3F,EAAA;AACA;AACAkI,EAAAA,KAAK,CAACxI,SAAS,CAACgC,MAAM,GAAG+B,MAAM,CAAC2B,SAAS,CAACyC,OAAO,CAACnE,IAAI,CAAC;AACvD,EAAA,OAAOwE,KAAK;AACd;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;","x_google_ignoreList":[0,1,2,3,4,11,12,13,14,15,16]}
|
|
1
|
+
{"version":3,"file":"logging.mjs","sources":["../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../src/impl/logging-levels.js","../src/impl/check-appender.js","../src/impl/is-string.js","../src/impl/check-logging-level.js","../src/impl/upper-case-string.js","../src/impl/get-browser-engine.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../src/impl/get-logging-prefix.js","../src/impl/fix-first-argument.js","../src/impl/bind-with-arrow-function.js","../src/impl/bind-without-prefix.js","../src/impl/bind-with-function-bind.js","../src/impl/bind-logging-methods.js","../src/logger.js","../src/impl/metadata-keys.js","../src/log.js","../src/has-logger.js","../src/index.js"],"sourcesContent":["function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Predefined logging levels.\n *\n * @author Haixing Hu\n */\nconst LOGGING_LEVELS = Object.freeze({\n TRACE: 0,\n DEBUG: 1,\n INFO: 2,\n WARN: 3,\n ERROR: 4,\n NONE: 5,\n});\n\nexport default LOGGING_LEVELS;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport LOGGING_LEVELS from './logging-levels';\n\n/**\n * Checks the validity of an appender.\n *\n * @param {Object} appender\n * The appender to be checked. If it is invalid, an `Error` will be thrown.\n * @author Haixing Hu\n * @private\n */\nfunction checkAppender(appender) {\n if (appender === null || typeof appender !== 'object') {\n throw new TypeError('The appender for a logger must be a non-null object.');\n }\n for (const level in LOGGING_LEVELS) {\n // NOTE: do NOT use Object.hasOwn() because it has a lot of compatibility problems\n if (Object.prototype.hasOwnProperty.call(LOGGING_LEVELS, level) && (level !== 'NONE')) {\n const methodName = level.toLowerCase();\n const method = appender[methodName];\n if (typeof method !== 'function') {\n throw new Error(`The appender of this logger has no ${methodName}() method.`);\n }\n }\n }\n}\n\nexport default checkAppender;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Determines whether a value is a string.\n *\n * A value is a string if it is a string or a `String` object.\n *\n * @param {any} value\n * The value to be checked.\n * @return {boolean}\n * `true` if the value is a string; `false` otherwise.\n * @author Haixing Hu\n * @private\n */\nfunction isString(value) {\n return (typeof value === 'string') || (value instanceof String);\n}\n\nexport default isString;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport isString from './is-string';\nimport LOGGING_LEVELS from './logging-levels';\n\n/**\n * Checks the validity of a logging level.\n *\n * @param {String} level\n * The logging level to be checked. If it is invalid, an `Error` will be\n * thrown.\n * @private\n */\nfunction checkLoggingLevel(level) {\n if (!isString(level)) {\n throw new TypeError('The logging level must be a string.');\n }\n if (LOGGING_LEVELS[level] === undefined) {\n throw new RangeError(`Unknown logging level \"${level}\". `\n + `Possible values are:${JSON.stringify(Object.keys(LOGGING_LEVELS))}.`);\n }\n}\n\nexport default checkLoggingLevel;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\n\nimport isString from './is-string';\n\n/**\n * Convert a string to uppercase.\n *\n * @param {any} value\n * The value to be converted. If it is not a string, it will be returned directly.\n * @return {any|string}\n * The converted string, or the original value if it is not a string.\n * @author Haixing Hu\n * @private\n */\nfunction upperCaseString(value) {\n if (!isString(value)) {\n return value;\n }\n return value.toUpperCase();\n}\n\nexport default upperCaseString;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Gets the engine name of the current browser.\n *\n * @return {string}\n * The engine name of the current browser.\n * @author Haixing Hu\n * @private\n */\nfunction getBrowserEngine() {\n const userAgent = window.navigator.userAgent;\n if (/Gecko\\/\\d/i.test(userAgent) && !/like Gecko/i.test(userAgent)) {\n return 'Gecko'; // Firefox and other Gecko-based browsers\n } else if (/Chrome|Chromium|Edg/i.test(userAgent)) {\n return 'Blink'; // Chrome, Edge and other Blink-based browsers\n } else if (/(Apple)?WebKit/i.test(userAgent) && !/Chrome/i.test(userAgent)) {\n return 'WebKit'; // Safari and other WebKit-based browsers\n } else if (/Trident/i.test(userAgent)) {\n return 'Trident'; // Internet Explorer and other Trident-based browsers\n } else if (/Presto/i.test(userAgent)) {\n return 'Presto'; // Opera and other Presto-based browsers\n } else {\n return 'Unknown';\n }\n}\n\nexport default getBrowserEngine;\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Gets the logging prefix for a logger.\n *\n * @param {Logger} logger\n * The logger object.\n * @param {string} level\n * The logging level.\n * @return {string}\n * The logging prefix.\n * @author Haixing Hu\n * @private\n */\nfunction getLoggingPrefix(logger, level) {\n let prefix = `[${level}] `;\n if (logger._name) {\n prefix += `${logger._name} - `;\n }\n return prefix;\n}\n\nexport default getLoggingPrefix;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport isString from './is-string';\n\nfunction fixFirstArgument(prefix, args) {\n if (args.length === 0) {\n return [prefix];\n } else if (isString(args[0])) {\n args[0] = prefix + args[0];\n return args;\n } else {\n return [prefix, ...args];\n }\n}\n\nexport default fixFirstArgument;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport getLoggingPrefix from './get-logging-prefix';\nimport fixFirstArgument from './fix-first-argument';\n\n/**\n * Binds a logging method of a logger with an array function.\n *\n * We use the simple arrow function to preserve the actual source code location\n * where the logging method is called.\n *\n * This works for the Safari browser.\n *\n * @param {Logger} logger\n * The logger object whose method to be bound.\n * @param {string} method\n * The name of the logging method to be bound.\n * @param {string} level\n * The logging level of the method.\n * @param {object} appender\n * The appender object which provides underlying logging operation.\n * @author Haixing Hu\n * @private\n */\nfunction bindWithArrowFunction(logger, method, level, appender) {\n // Add a prefix to the message, which contains the logging level\n // and the name of the logger. Since the prefix use the recursive\n // string substitution pattern '%s', only some browsers support it.\n const prefix = getLoggingPrefix(logger, level);\n // For Safari, the recursive string substitution pattern '%s' is not\n // supported. So we add the prefix to the first argument of the message\n // manually. We use the arrow function to preserve the actual source\n // code location where the logging method is called.\n logger[method] = (...args) => appender[method](...fixFirstArgument(prefix, args));\n}\n\nexport default bindWithArrowFunction;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Binds a logging method of a logger with the stack of an `Error` object\n * with logging prefix.\n *\n * We use the `Function.prototype.bind` to preserve the actual source code\n * location where the logging method is called.\n *\n * See: https://stackoverflow.com/questions/13815640/a-proper-wrapper-for-console-log-with-correct-line-number\n *\n * Some browsers do not support the recursive string substitution pattern '%s'\n * in the `console` object. For those browsers, we have no way to add a prefix\n * to the logging message.\n *\n * @param {Logger} logger\n * The logger object whose method to be bound.\n * @param {string} method\n * The name of the logging method to be bound.\n * @param {string} level\n * The logging level of the method.\n * @param {object} appender\n * The appender object which provides underlying logging operation.\n * @author Haixing Hu\n * @private\n */\nfunction bindWithoutPrefix(logger, method, level, appender) {\n logger[method] = Function.prototype.bind.call(appender[method], appender);\n}\n\nexport default bindWithoutPrefix;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport getLoggingPrefix from './get-logging-prefix';\n\n/**\n * Binds a logging method of a logger with the stack of an `Error` object.\n *\n * We use the `Function.prototype.bind` to preserve the actual source code\n * location where the logging method is called.\n *\n * See: https://stackoverflow.com/questions/13815640/a-proper-wrapper-for-console-log-with-correct-line-number\n *\n * @param {Logger} logger\n * The logger object whose method to be bound.\n * @param {string} method\n * The name of the logging method to be bound.\n * @param {string} level\n * The logging level of the method.\n * @param {object} appender\n * The appender object which provides underlying logging operation.\n * @author Haixing Hu\n * @private\n */\nfunction bindWithFunctionBind(logger, method, level, appender) {\n // Add a prefix to the message, which contains the logging level\n // and the name of the logger. Since the prefix use the recursive\n // string substitution pattern '%s', only some browsers support it.\n const prefix = getLoggingPrefix(logger, level);\n // Note that we add a string substitution pattern '%s' to the end of\n // the prefix, since according to the specification of the `console`,\n // the string substitution is taken on the first argument **recursively**.\n // See: https://stackoverflow.com/questions/75160241/what-order-does-console-log-with-multiple-arguments-and-multiple-s-substitu#answer-75167070\n // https://console.spec.whatwg.org/#logger\n // https://console.spec.whatwg.org/#formatter\n //\n // But the `console` object of the Node.js does not support the recursive\n // string substitution.\n // See: https://nodejs.org/api/console.html#console_console_log_data_args\n // and https://nodejs.org/api/util.html#utilformatformat-args\n logger[method] = Function.prototype.bind.call(appender[method], appender, `${prefix}%s`);\n}\n\nexport default bindWithFunctionBind;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport LOGGING_LEVELS from './logging-levels';\nimport getBrowserEngine from './get-browser-engine';\nimport bindWithArrowFunction from './bind-with-arrow-function';\nimport bindWithoutPrefix from './bind-without-prefix';\nimport bindWithFunctionBind from './bind-with-function-bind';\n\n/**\n * A no-operation function.\n *\n * @author Haixing Hu\n * @private\n */\nconst NOOP = () => {};\n\n/**\n * Rebinds all logging implementation methods to the corresponding logging\n * methods of the appender.\n *\n * @param {Logger} logger\n * The logger whose logging methods will be rebind to the corresponding\n * logging methods of the appender.\n * @param {string} level\n * The target logging level. All logging methods belows this target logging\n * level will be bind to a no-op function, while all logging methods above\n * or equal to this target logging level will be bind to the corresponding\n * logging methods of the appender. This argument should be a valid\n * logging level. The function do not check the validity of this argument.\n * @param {object} appender\n * The appender whose logging methods will be bound to the corresponding\n * logging methods of this logger. This argument should be a valid appender.\n * The function do not check the validity of this argument.\n * @author Haixing Hu\n * @private\n */\nfunction bindLoggingMethods(logger, level, appender) {\n const target = LOGGING_LEVELS[level];\n for (const level in LOGGING_LEVELS) {\n // NOTE: do NOT use Object.hasOwn() because it has a lot of compatibility problems\n if (Object.prototype.hasOwnProperty.call(LOGGING_LEVELS, level) && (level !== 'NONE')) {\n const m = level.toLowerCase();\n if (LOGGING_LEVELS[level] < target) {\n // binds the private logging method of this object to no-op\n logger[m] = NOOP;\n } else {\n // binds the private logging method of this object to the\n // corresponding logging method of this.appender.\n const engine = getBrowserEngine();\n switch (engine) {\n case 'Blink': // Chrome, Edge and other Blink-based browsers\n bindWithFunctionBind(logger, m, level, appender);\n break;\n case 'WebKit': // Safari and other WebKit-based browsers\n bindWithArrowFunction(logger, m, level, appender);\n break;\n case 'Gecko': // Firefox and other Gecko-based browsers\n case 'Trident': // Internet Explorer and other Trident-based browsers\n case 'Presto': // Opera and other Presto-based browsers\n default:\n bindWithoutPrefix(logger, m, level, appender);\n // bindWithErrorStack(logger, m, level, appender);\n // bindWithProxy(logger, m, level, appender);\n break;\n }\n }\n }\n }\n}\n\nexport default bindLoggingMethods;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport LOGGING_LEVELS from './impl/logging-levels';\nimport checkAppender from './impl/check-appender';\nimport checkLoggingLevel from './impl/check-logging-level';\nimport upperCaseString from './impl/upper-case-string';\nimport isString from './impl/is-string';\nimport bindLoggingMethods from './impl/bind-logging-methods';\n\n/**\n * The factory value of the Logger class's default logging level,\n * which is `DEBUG`.\n *\n * @type {string}\n */\nconst FACTORY_DEFAULT_LEVEL = 'DEBUG';\n\n/**\n * The factory value of the Logger class's default log appender, which is\n * the standard output pipe of the console.\n *\n * @type {Console}\n */\nconst FACTORY_DEFAULT_APPENDER = console;\n\n/**\n * The default logging level of all `Logger` instances, which is `DEBUG`.\n *\n * @private\n * @author Haixing Hu\n */\nlet __defaultLevel = FACTORY_DEFAULT_LEVEL;\n\n/**\n * The default log appender of all `Logger` instances, which is the standard\n * output pipe of the console.\n *\n * @private\n * @author Haixing Hu\n */\nlet __defaultAppender = FACTORY_DEFAULT_APPENDER;\n\n/**\n * The map of all `Logger` instances.\n *\n * This value maps the name of a `Logger` instance to its instance.\n *\n * @type {Map<String, Logger>}\n * @private\n * @author Haixing Hu\n */\nconst __loggerMap = new Map();\n\n/**\n * The map of all logging levels.\n *\n * This value maps the name of a `Logger` instance to its logging level.\n *\n * @type {Map<String, String>}\n * @private\n * @author Haixing Hu\n */\nconst __levelMap = new Map();\n\n/**\n * Indicates whether the `Logger` instance is under internal constructing.\n *\n * Many other languages include the capability to mark a constructor as private,\n * which prevents the class from being instantiated outside the class itself,\n * such taht you can only use static factory methods that create instances, or\n * not be able to create instances at all. JavaScript does not have a native way\n * to do this, but it can be accomplished by using a private static flag.\n *\n * @type {boolean}\n * @private\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_class_fields#simulating_private_constructors\n * @author Haixing Hu\n */\nlet __isInternalConstructing = false;\n\n/**\n * A simple logging class.\n *\n * A `Logger` object provides the following logging methods:\n *\n * - `Logger.trace(message, arg1, arg2, ...)`: Outputs a log message with the `TRACE` level.\n * - `Logger.debug(message, arg1, arg2, ...)`: Outputs a log message with the `DEBUG` level.\n * - `Logger.info(message, arg1, arg2, ...)`: Outputs a log message with the `INFO` level.\n * - `Logger.warn(message, arg1, arg2, ...)`: Outputs a log message with the `WARN` level.\n * - `Logger.error(message, arg1, arg2, ...)`: Outputs a log message with the `ERROR` level.\n * - `Logger.log(level, message, arg1, arg2, ...)`: Outputs a log message with the specified level.\n *\n * The message argument of those logging methods supports the following\n * substitution patterns:\n *\n * - `%o` or `%O`: Outputs a JavaScript object. Clicking the object name opens\n * more information about it in the inspector.\n * - `%d` or `%i`: Outputs an integer. Number formatting is supported, for\n * example `logger.info('Foo %.2d', 1.1)` will output the number as two\n * significant figures with a leading 0: `Foo 01`.\n * - `%s`: Outputs a string.\n * - `%f`: Outputs a floating-point value. Formatting is supported, for example\n * `logger.debug(\"Foo %.2f\", 1.1)` will output the number to 2 decimal\n * places: `Foo 1.10`.\n *\n * @author Haixing Hu\n */\nclass Logger {\n /**\n * Gets the `Logger` instance of the specified name, or constructs a new\n * `Logger` instance if it does not exist.\n *\n * @param {string} name\n * The name of the `Logger` instance to be retrieved.\n * @param {Object} options\n * The optional options of the `Logger` instance to be retrieved. This\n * option object may have the following properties:\n * - `appender: object`: the specified content output pipe of the log.\n * This object must provide `trace`, `debug`, `info`, `warn` and `error`\n * methods. If this option is not provided, the appender of the existing\n * `Logger` instance will not be changed, and the default appender\n * will be used to construct a new `Logger` instance if it does not exist.\n * - `level: string`: the logging level of the `Logger` instance to be\n * retrieved. The allowed levels are `TRACE`, `DEBUG`, `INFO`, `WARN`,\n * `ERROR`, and `NONE`. Lowercase letters are also allowed. If this\n * option is not provided, the logging level of the existing `Logger`\n * instance will not be changed, and the default logging level will be\n * used to construct a new `Logger` instance if it does not exist.\n * @return {Logger}\n * The `Logger` instance of the specified name, which either be the\n * existing one or a newly constructed one.\n */\n static getLogger(name = '', options = {}) {\n if (!isString(name)) {\n throw new TypeError('The name of a logger must be a string, and empty string is allowed.');\n }\n const theName = String(name); // make sure the name is a primitive string\n let logger = __loggerMap.get(theName);\n if (logger === undefined) {\n // sets the internally constructing flag before constructing a instance\n __isInternalConstructing = true;\n logger = new Logger(theName, options.appender, options.level);\n // clear the internally constructing flag after constructing the new instance\n __isInternalConstructing = false;\n __loggerMap.set(theName, logger);\n } else {\n if (options.appender !== undefined) {\n logger.setAppender(options.appender);\n }\n if (options.level !== undefined) {\n logger.setLevel(options.level);\n }\n }\n return logger;\n }\n\n /**\n * Clears all existing `Logger` instances.\n */\n static clearAllLoggers() {\n __loggerMap.clear();\n __levelMap.clear();\n }\n\n /**\n * Gets the logging level of the `Logger` instance of the specified name.\n *\n * @param name\n * The name of the `Logger` instance.\n * @returns {string}\n * The logging level of the `Logger` instance of the specified name. If the\n * `Logger` instance of the specified name does not exist, the default\n * logging level will be returned.\n */\n static getLoggerLevel(name) {\n const level = __levelMap.get(name);\n return level ?? __defaultLevel;\n }\n\n /**\n * Sets the logging level of the `Logger` instance of the specified name.\n *\n * @param name\n * The name of the `Logger` instance.\n * @param level\n * The new logging level of the `Logger` instance of the specified name.\n * The allowed levels are `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`,\n * and `NONE`. Lowercase letters are also allowed.\n */\n static setLoggerLevel(name, level) {\n level = upperCaseString(level);\n checkLoggingLevel(level);\n __levelMap.set(name, level);\n const logger = __loggerMap.get(name);\n if (logger !== undefined) {\n logger.setLevel(level);\n }\n }\n\n /**\n * Gets the default logging level.\n *\n * The default logging level is used to construct a new `Logger` instance if\n * the logging level of the new instance is not specified.\n *\n * @return {string}\n * The global default logging level.\n * @see Logger.setDefaultLevel\n * @see Logger.setAllLevels\n * @see Logger.resetAllLevels\n */\n static getDefaultLevel() {\n return __defaultLevel;\n }\n\n /**\n * Sets the default logging level.\n *\n * The default logging level is used to construct a new `Logger` instance if\n * the logging level of the new instance is not specified.\n *\n * @param {string} level\n * The new default logging level. The allowed levels are `TRACE`, `DEBUG`,\n * `INFO`, `WARN`, `ERROR`, and `NONE`. Lowercase letters are also allowed.\n * @see Logger.getDefaultLevel\n * @see Logger.setAllLevels\n * @see Logger.resetAllLevels\n */\n static setDefaultLevel(level) {\n level = upperCaseString(level);\n checkLoggingLevel(level);\n __defaultLevel = level;\n }\n\n /**\n * Resets the default logging level to the factory value.\n *\n * The default logging level is used to construct a new `Logger` instance if\n * the logging level of the new instance is not specified.\n */\n static resetDefaultLevel() {\n __defaultLevel = FACTORY_DEFAULT_LEVEL;\n }\n\n /**\n * Sets the logging level of all existing `Logger` instants.\n *\n * @param {string} level\n * The new logging level of all existing `Logger` instants. The allowed\n * levels are `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, and `NONE`.\n * Lowercase letters are also allowed.\n * @see Logger.getDefaultLevel\n * @see Logger.setDefaultLevel\n * @see Logger.resetAllLevels\n */\n static setAllLevels(level) {\n level = upperCaseString(level);\n checkLoggingLevel(level);\n for (const logger of __loggerMap.values()) {\n logger.setLevel(level);\n }\n }\n\n /**\n * Sets the logging level of all `Logger` instants to the default logging level.\n *\n * @see Logger.getDefaultLevel\n * @see Logger.setDefaultLevel\n * @see Logger.setAllLevels\n */\n static resetAllLevels() {\n Logger.setAllLevels(__defaultLevel);\n }\n\n /**\n * Gets the default logging appender.\n *\n * The default logging appender is used to construct a new `Logger` instance\n * if the logging appender of the new instance is not specified.\n *\n * @return {Object}\n * The default logging appender.\n * @see Logger.setDefaultAppender\n * @see Logger.setAllAppenders\n * @see Logger.resetAllAppenders\n */\n static getDefaultAppender() {\n return __defaultAppender;\n }\n\n /**\n * Sets the default logging appender.\n *\n * The default logging appender is used to construct a new `Logger` instance\n * if the logging appender of the new instance is not specified.\n *\n * @param {object} appender\n * The new default logging appender.\n * @see Logger.getDefaultAppender\n * @see Logger.setAllAppenders\n * @see Logger.resetAllAppenders\n */\n static setDefaultAppender(appender) {\n checkAppender(appender);\n __defaultAppender = appender;\n }\n\n /**\n * Resets the default logging appender to the factory value.\n *\n * The default logging appender is used to construct a new `Logger` instance\n * if the logging appender of the new instance is not specified.\n *\n * @see Logger.getDefaultAppender\n */\n static resetDefaultAppender() {\n __defaultAppender = FACTORY_DEFAULT_APPENDER;\n }\n\n /**\n * Sets the appender of all `Logger` instants.\n *\n * @param {object} appender\n * The new appender to be set, indicating the content output pipe of the\n * log. This object must provide `trace`, `debug`, `info`, `warn` and\n * `error` methods.\n * @see Logger.getDefaultAppender\n * @see Logger.setDefaultAppender\n * @see Logger.resetAllAppenders\n */\n static setAllAppenders(appender) {\n checkAppender(appender);\n for (const logger of __loggerMap.values()) {\n logger.setAppender(appender);\n }\n }\n\n /**\n * Sets the appender of all `Logger` instants to the default appender.\n *\n * @see Logger.getDefaultAppender\n * @see Logger.setDefaultAppender\n * @see Logger.setAllAppenders\n */\n static resetAllAppenders() {\n Logger.setAllAppenders(__defaultAppender);\n }\n\n /**\n * Resets all configurations of the `Logger` class to the factory values.\n *\n * This method is equivalent to calling the following methods in sequence:\n * - `Logger.clearAllLoggers()`\n * - `Logger.resetDefaultLevel()`\n * - `Logger.resetDefaultAppender()`\n */\n static reset() {\n Logger.clearAllLoggers();\n Logger.resetDefaultLevel();\n Logger.resetDefaultAppender();\n }\n\n /**\n * Construct a log object.\n *\n * **NOTE**: Do NOT call this constructor directly. Use the static method\n * `Logger.getLogger()` instead.\n *\n * @param {string} name\n * The optional name of this logger. The default value of this argument\n * is an empty string.\n * @param {object} appender\n * Optional, indicating the content output pipe of the log. This object\n * must provide `trace`, `debug`, `info`, `warn` and `error` methods.\n * The default value of this argument is `Logger.getDefaultAppender()`.\n * @param {string} level\n * Optional, indicating the log level of this object. The default value\n * of this argument is `Logger.getDefaultLevel()`.\n * @see Logger.getLogger\n */\n constructor(name, appender, level) {\n if (!__isInternalConstructing) {\n throw new Error('The `Logger` instance can only be constructed by the '\n + 'static method `Logger.getLogger()`.');\n }\n if (appender === undefined) {\n appender = __defaultAppender;\n } else {\n checkAppender(appender);\n }\n if (level === undefined) {\n level = __levelMap.get(name) ?? __defaultLevel;\n } else {\n level = upperCaseString(level);\n checkLoggingLevel(level);\n }\n this._name = name;\n this._level = level;\n this._appender = appender;\n bindLoggingMethods(this, level, appender);\n __levelMap.set(name, level);\n }\n\n /**\n * Get the name of this logger.\n *\n * @returns {string}\n * The name of this logger.\n */\n getName() {\n return this._name;\n }\n\n /**\n * Get the appender of this logger.\n *\n * @return {object}\n * The appender of this logger.\n */\n getAppender() {\n return this._appender;\n }\n\n /**\n * Set up a new Appender.\n *\n * @param {object} appender\n * The new Appender serves as the content output pipeline of the log.\n * This object must provide `trace`, `debug`, `info`, `warn` and `error`\n * methods.\n */\n setAppender(appender) {\n checkAppender(appender);\n bindLoggingMethods(this, this._level, appender);\n this._appender = appender;\n }\n\n /**\n * Get the logging level of this logger.\n *\n * @return {string}\n * The logging level of this logger. Possible return values are `TRACE`,\n * `DEBUG`, `INFO`, `WARN`, `ERROR`, and `NONE`.\n */\n getLevel() {\n return this._level;\n }\n\n /**\n * Set the logging level of this logger.\n *\n * @param {string} level\n * The new logging level. The allowed levels are `TRACE`, `DEBUG`, `INFO`,\n * `WARN`, `ERROR`, and `NONE`. Lowercase letters are also allowed.\n */\n setLevel(level) {\n level = upperCaseString(level);\n checkLoggingLevel(level);\n bindLoggingMethods(this, level, this._appender);\n this._level = level;\n }\n\n /**\n * Disable this logging object.\n */\n disable() {\n bindLoggingMethods(this, 'NONE', this._appender);\n }\n\n /**\n * Enable this logging object.\n */\n enable() {\n bindLoggingMethods(this, this._level, this._appender);\n }\n\n /**\n * Enable or disable this log object.\n *\n * @param {boolean} enabled\n * Whether to enable this log object.\n */\n setEnabled(enabled) {\n if (enabled) {\n this.enable();\n } else {\n this.disable();\n }\n }\n\n /**\n * Logs a message in the specified logging level.\n *\n * @param {string} level\n * the logging level.\n * @param {string} message\n * the message or message template, which may contain zero or more\n * substitution patterns, e.g., '%o', '%s', '%d', '%f', ..., etc.\n * @param {array} args\n * the array of arguments used to format the message.\n */\n log(level, message, ...args) {\n const levelName = upperCaseString(level);\n if ((LOGGING_LEVELS[levelName] !== undefined)\n && (LOGGING_LEVELS[levelName] >= LOGGING_LEVELS[this._level])) {\n const method = levelName.toLowerCase();\n this[method](message, ...args);\n }\n }\n\n /**\n * Logs a message in the `TRACE` level.\n *\n * @param {string} message\n * the message or message template, which may contain zero or more\n * substitution patterns, e.g., '%o', '%s', '%d', '%f', ..., etc.\n * @param {array} args\n * the array of arguments used to format the message.\n * @private\n */\n // eslint-disable-next-line no-unused-vars\n trace(message, ...args) {}\n\n /**\n * Logs a message in the `DEBUG` level.\n *\n * @param {string} message\n * the message or message template, which may contain zero or more\n * substitution patterns, e.g., '%o', '%s', '%d', '%f', ..., etc.\n * @param {array} args\n * the array of arguments used to format the message.\n * @private\n */\n // eslint-disable-next-line no-unused-vars\n debug(message, ...args) {}\n\n /**\n * Logs a message in the `INFO` level.\n *\n * @param {string} message\n * the message or message template, which may contain zero or more\n * substitution patterns, e.g., '%o', '%s', '%d', '%f', ..., etc.\n * @param {array} args\n * the array of arguments used to format the message.\n * @private\n */\n // eslint-disable-next-line no-unused-vars\n info(message, ...args) {}\n\n /**\n * Logs a message in the `WARN` level.\n *\n * @param {string} message\n * the message or message template, which may contain zero or more\n * substitution patterns, e.g., '%o', '%s', '%d', '%f', ..., etc.\n * @param {array} args\n * the array of arguments used to format the message.\n * @private\n */\n // eslint-disable-next-line no-unused-vars\n warn(message, ...args) {}\n\n /**\n * Logs a message in the `ERROR` level.\n *\n * @param {string} message\n * the message or message template, which may contain zero or more\n * substitution patterns, e.g., '%o', '%s', '%d', '%f', ..., etc.\n * @param {array} args\n * the array of arguments used to format the message.\n * @private\n */\n // eslint-disable-next-line no-unused-vars\n error(message, ...args) {}\n}\n\nexport default Logger;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nconst LOGGER_KEY = '__common_logging_logger__';\nconst VUE3_CLASS_COMPONENT_DECORATORS_KEY = '__vue3_class_component_decorators__';\n\nexport {\n LOGGER_KEY,\n VUE3_CLASS_COMPONENT_DECORATORS_KEY,\n};\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport Logger from './logger';\nimport { VUE3_CLASS_COMPONENT_DECORATORS_KEY } from './impl/metadata-keys';\n\n/**\n * The names of special functions of Vue components.\n *\n * @type {string[]}\n * @private\n * @author Haixing Hu\n */\nconst VUE_FUNCTIONS = [\n // The names of lifecycle hooks of Vue components.\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeUnmount',\n 'unmounted',\n 'errorCaptured',\n 'renderTracked', // Dev only\n 'renderTriggered', // Dev only\n 'activated',\n 'deactivated',\n 'serverPrefetch', // SSR only\n // The names of special functions in the options API Vue components.\n 'render',\n];\n\n/**\n * Print tracing logs for class methods.\n *\n * @param {string} className\n * The name of the class the decorated method belongs to.\n * @param {string} methodName\n * The name of the decorated method..\n * @param {array} args\n * The calling arguments of the decorated method.\n * @author Haixing Hu\n * @private\n */\nfunction printMethodLog(className, methodName, args) {\n const logger = Logger.getLogger(className);\n if (args.length === 0) {\n logger.trace('%s.%s.', className, methodName);\n } else {\n logger.trace('%s.%s:', className, methodName, ...args);\n }\n}\n\n/**\n * A decorator function that meets the requirements of the `createDecorator()`\n * function of `vue-class-component`.\n *\n * @param {Object} options\n * Options object used to create Vue components.\n * @param {String} key\n * The name of the property or method to which this decorator applies.\n * @param {Function} originalMethod\n * The original method to be called.\n * @author Haixing Hu\n * @private\n */\nfunction vueLogDecorator(options, key, originalMethod) {\n // If the method decorated by the decorator is a Vue's life cycle hook function,\n // Then `col` is `options`; otherwise `col` is `options.methods`\n const col = (VUE_FUNCTIONS.includes(key) ? options : options.methods);\n col[key] = function logWrapperMethod(...args) {\n printMethodLog(options.name, key, args);\n return originalMethod.apply(this, args);\n };\n}\n\n/**\n * Defines a class method decorator that modifies the target method and prints\n * its calling signature in the log, including class name, method name and\n * parameters.\n *\n * Note that only non-constructor class method can be decorated by this decorator.\n * The global function and class constructor CANNOT be decorated by this decorator.\n *\n * Usage example:\n * ```js\n * import { Log } from '@haixing_hu/logging';\n *\n * class Person {\n * @Log\n * eat(meal) {\n * ...\n * }\n * }\n *\n * const person = new Person();\n * const meal = new Meal();\n * person.eat(meal); // 日志中将会打印此方法调用的签名\n * ```\n *\n * @param {function} target\n * The method being decorated.\n * @param {object} context\n * the context object containing information about the method to be decorated.\n * @return {function}\n * The decorated method.\n * @author Haixing Hu\n */\nexport function Log(target, context) {\n if (context === null || typeof context !== 'object') {\n throw new TypeError('The context of `@Log` decorator must be an object.');\n }\n if (typeof target !== 'function' || context.kind !== 'method') {\n throw new TypeError('The `@Log` can only decorate a class method.');\n }\n // decorate the class-style Vue component\n // see the `createDecorator()` function in `@haixing_hu/vue3-class-component`\n const metadata = context.metadata;\n metadata[VUE3_CLASS_COMPONENT_DECORATORS_KEY] ??= [];\n metadata[VUE3_CLASS_COMPONENT_DECORATORS_KEY].push(\n (Class, instance, options) => vueLogDecorator(options, context.name, target),\n );\n // decorate the original method\n function decoratedMethod(...args) {\n const prototype = Object.getPrototypeOf(this);\n const Class = prototype.constructor;\n const className = Class.name;\n printMethodLog(className, context.name, args);\n return target.apply(this, args);\n }\n return decoratedMethod;\n}\n\nexport default Log;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport Logger from './logger';\n\n/**\n * A decorator to add a named logger to a class.\n *\n * This decorator will add a named logger to the class, which can be accessed\n * via the `logger` property of the class.\n *\n * Example usage:\n * ```js\n * import { HasLogger } from '@haixing_hu/logging';\n *\n * @HasLogger\n * class MyClass {\n * foo() {\n * this.logger.debug('This is MyClass.foo()');\n * }\n * }\n * ```\n *\n * The following is another example usage with the class component of Vue.js:\n * ```js\n * import { Component, toVue } from '@haixing_hu/vue3-class-component';\n * import { HasLogger, Log } from '@haixing_hu/logging';\n *\n * @Component({\n * template: '<p @click=\"foo\">{{ message }}</p>',\n * })\n * @HasLogger\n * class MyComponent {\n * @Log\n * foo() {\n * this.logger.debug('This is MyComponent.foo()');\n * }\n * }\n *\n * export default toVue(MyComponent);\n * ```\n *\n * **NOTE**: the order of the decorators is IMPORTANT. The `@HasLogger` decorator\n * must be placed **AFTER** the `@Component` decorator.\n *\n * @param {function} Class\n * the target class to be decorated.\n * @param {object} context\n * the context object containing information about the class to be decorated.\n * @return {function}\n * the new constructor of the decorated class.\n * @author Haixing Hu\n */\nfunction HasLogger(Class, context) {\n if (context === null || typeof context !== 'object') {\n throw new TypeError('The context must be an object.');\n }\n if (typeof Class !== 'function' || context.kind !== 'class') {\n throw new TypeError('The `@HasLogger` can only decorate a class.');\n }\n if (Class.prototype.logger) {\n throw new Error('The @HasLogger decorator can only be used once on a class.');\n }\n const instance = new Class();\n if (instance.logger !== undefined) {\n throw new Error('The @HasLogger cannot be decorated on the class with a `logger` field.');\n }\n // add the logger to the class prototype\n Class.prototype.logger = Logger.getLogger(context.name);\n return Class;\n}\n\nexport default HasLogger;\n","////////////////////////////////////////////////////////////////////////////////\n//\n// Copyright (c) 2022 - 2026.\n// Haixing Hu, Qubit Co. Ltd.\n//\n// All rights reserved.\n//\n////////////////////////////////////////////////////////////////////////////////\nimport Logger from './logger';\nimport Log from './log';\nimport HasLogger from './has-logger';\n\nexport {\n Logger,\n Log,\n HasLogger,\n};\n\nexport default Logger;\n"],"names":["LOGGING_LEVELS","Object","freeze","TRACE","DEBUG","INFO","WARN","ERROR","NONE","checkAppender","appender","_typeof","TypeError","level","prototype","hasOwnProperty","call","methodName","toLowerCase","method","Error","concat","isString","value","String","checkLoggingLevel","undefined","RangeError","JSON","stringify","keys","upperCaseString","toUpperCase","getBrowserEngine","userAgent","window","navigator","test","_arrayLikeToArray","arrayLikeToArray","_unsupportedIterableToArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","getLoggingPrefix","logger","prefix","_name","fixFirstArgument","args","length","_toConsumableArray","bindWithArrowFunction","_len","arguments","Array","_key","apply","bindWithoutPrefix","Function","bind","bindWithFunctionBind","NOOP","bindLoggingMethods","target","m","engine","FACTORY_DEFAULT_LEVEL","FACTORY_DEFAULT_APPENDER","console","__defaultLevel","__defaultAppender","__loggerMap","Map","__levelMap","__isInternalConstructing","Logger","name","_classCallCheck","_levelMap$get","get","_level","_appender","set","_createClass","key","getName","getAppender","setAppender","getLevel","setLevel","disable","enable","setEnabled","enabled","log","message","levelName","trace","debug","info","warn","error","getLogger","options","theName","clearAllLoggers","clear","getLoggerLevel","setLoggerLevel","getDefaultLevel","setDefaultLevel","resetDefaultLevel","setAllLevels","_iterator","_createForOfIteratorHelper","values","_step","s","n","done","err","e","f","resetAllLevels","getDefaultAppender","setDefaultAppender","resetDefaultAppender","setAllAppenders","_iterator2","_step2","resetAllAppenders","reset","VUE3_CLASS_COMPONENT_DECORATORS_KEY","VUE_FUNCTIONS","printMethodLog","className","vueLogDecorator","originalMethod","col","includes","methods","logWrapperMethod","Log","context","_metadata$VUE3_CLASS_","kind","metadata","push","Class","instance","decoratedMethod","getPrototypeOf","constructor","_len2","_key2","HasLogger"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,11,12,13,14,15,16]}
|
package/doc/api/index.html
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<!DOCTYPE html><html lang="en" style="font-size:16px"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Home</title><!--[if lt IE 9]>
|
|
2
2
|
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
|
3
|
-
<![endif]--><script src="scripts/third-party/hljs.js" defer="defer"></script><script src="scripts/third-party/hljs-line-num.js" defer="defer"></script><script src="scripts/third-party/popper.js" defer="defer"></script><script src="scripts/third-party/tippy.js" defer="defer"></script><script src="scripts/third-party/tocbot.min.js"></script><script>var baseURL="/",locationPathname="";baseURL=(locationPathname=document.location.pathname).substr(0,locationPathname.lastIndexOf("/")+1)</script><link rel="stylesheet" href="styles/clean-jsdoc-theme.min.css"><svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none"><defs><symbol id="home-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M19 21H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9a1 1 0 0 1-1 1zM6 19h12V9.157l-6-5.454-6 5.454V19z"/></symbol><symbol id="copy-icon" viewbox="0 0 488.3 488.3"><g><path d="M314.25,85.4h-227c-21.3,0-38.6,17.3-38.6,38.6v325.7c0,21.3,17.3,38.6,38.6,38.6h227c21.3,0,38.6-17.3,38.6-38.6V124 C352.75,102.7,335.45,85.4,314.25,85.4z M325.75,449.6c0,6.4-5.2,11.6-11.6,11.6h-227c-6.4,0-11.6-5.2-11.6-11.6V124 c0-6.4,5.2-11.6,11.6-11.6h227c6.4,0,11.6,5.2,11.6,11.6V449.6z"/><path d="M401.05,0h-227c-21.3,0-38.6,17.3-38.6,38.6c0,7.5,6,13.5,13.5,13.5s13.5-6,13.5-13.5c0-6.4,5.2-11.6,11.6-11.6h227 c6.4,0,11.6,5.2,11.6,11.6v325.7c0,6.4-5.2,11.6-11.6,11.6c-7.5,0-13.5,6-13.5,13.5s6,13.5,13.5,13.5c21.3,0,38.6-17.3,38.6-38.6 V38.6C439.65,17.3,422.35,0,401.05,0z"/></g></symbol><symbol id="search-icon" viewBox="0 0 512 512"><g><g><path d="M225.474,0C101.151,0,0,101.151,0,225.474c0,124.33,101.151,225.474,225.474,225.474 c124.33,0,225.474-101.144,225.474-225.474C450.948,101.151,349.804,0,225.474,0z M225.474,409.323 c-101.373,0-183.848-82.475-183.848-183.848S124.101,41.626,225.474,41.626s183.848,82.475,183.848,183.848 S326.847,409.323,225.474,409.323z"/></g></g><g><g><path d="M505.902,476.472L386.574,357.144c-8.131-8.131-21.299-8.131-29.43,0c-8.131,8.124-8.131,21.306,0,29.43l119.328,119.328 c4.065,4.065,9.387,6.098,14.715,6.098c5.321,0,10.649-2.033,14.715-6.098C514.033,497.778,514.033,484.596,505.902,476.472z"/></g></g></symbol><symbol id="font-size-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11.246 15H4.754l-2 5H.6L7 4h2l6.4 16h-2.154l-2-5zm-.8-2L8 6.885 5.554 13h4.892zM21 12.535V12h2v8h-2v-.535a4 4 0 1 1 0-6.93zM19 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol><symbol id="add-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/></symbol><symbol id="minus-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M5 11h14v2H5z"/></symbol><symbol id="dark-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M10 7a7 7 0 0 0 12 4.9v.1c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2h.1A6.979 6.979 0 0 0 10 7zm-6 5a8 8 0 0 0 15.062 3.762A9 9 0 0 1 8.238 4.938 7.999 7.999 0 0 0 4 12z"/></symbol><symbol id="light-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-2a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636 5.636 7.05 3.515 4.93zM16.95 18.364l1.414-1.414 2.121 2.121-1.414 1.414-2.121-2.121zm2.121-14.85l1.414 1.415-2.121 2.121-1.414-1.414 2.121-2.121zM5.636 16.95l1.414 1.414-2.121 2.121-1.414-1.414 2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/></symbol><symbol id="reset-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795z"/></symbol><symbol id="down-icon" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.7803 6.21967C13.0732 6.51256 13.0732 6.98744 12.7803 7.28033L8.53033 11.5303C8.23744 11.8232 7.76256 11.8232 7.46967 11.5303L3.21967 7.28033C2.92678 6.98744 2.92678 6.51256 3.21967 6.21967C3.51256 5.92678 3.98744 5.92678 4.28033 6.21967L8 9.93934L11.7197 6.21967C12.0126 5.92678 12.4874 5.92678 12.7803 6.21967Z"></path></symbol><symbol id="codepen-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M16.5 13.202L13 15.535v3.596L19.197 15 16.5 13.202zM14.697 12L12 10.202 9.303 12 12 13.798 14.697 12zM20 10.869L18.303 12 20 13.131V10.87zM19.197 9L13 4.869v3.596l3.5 2.333L19.197 9zM7.5 10.798L11 8.465V4.869L4.803 9 7.5 10.798zM4.803 15L11 19.131v-3.596l-3.5-2.333L4.803 15zM4 13.131L5.697 12 4 10.869v2.262zM2 9a1 1 0 0 1 .445-.832l9-6a1 1 0 0 1 1.11 0l9 6A1 1 0 0 1 22 9v6a1 1 0 0 1-.445.832l-9 6a1 1 0 0 1-1.11 0l-9-6A1 1 0 0 1 2 15V9z"/></symbol><symbol id="close-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z"/></symbol><symbol id="menu-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"/></symbol></defs></svg></head><body data-theme="dark"><div class="sidebar-container"><div class="sidebar" id="sidebar"><div class="sidebar-items-container"><div class="sidebar-section-title"><a href="index.html" class="sidebar-home-anchor">首页</a></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-类"><div>类</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="Logger.html">Logger</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-全局"><div>全局</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#FACTORY_DEFAULT_APPENDER">FACTORY_DEFAULT_APPENDER</a></div><div class="sidebar-section-children"><a href="global.html#FACTORY_DEFAULT_LEVEL">FACTORY_DEFAULT_LEVEL</a></div><div class="sidebar-section-children"><a href="global.html#HasLogger">HasLogger</a></div><div class="sidebar-section-children"><a href="global.html#LOGGING_LEVELS">LOGGING_LEVELS</a></div><div class="sidebar-section-children"><a href="global.html#Log">Log</a></div></div></div></div></div><div class="navbar-container" id="VuAckcnZhf"><nav class="navbar"><div class="navbar-left-items"></div><div class="navbar-right-items"><div class="navbar-right-item"><button class="icon-button home-button" aria-label="go-to-homepage"><svg><use xlink:href="#home-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#light-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div><nav></nav></nav></div><div class="toc-container"><div class="toc-content"><span class="bold">本页内容</span><div id="eed4d2a0bfd64539bb9df78095dec881"></div></div></div><div class="body-wrapper"><div class="main-content"><div class="main-wrapper"><section class="readme"><article><h1>js-logging</h1><p><a href="https://npmjs.com/package/@qubit-ltd/logging"><img src="https://img.shields.io/npm/v/@qubit-ltd/logging.svg" alt="npm package"></a><a href="https://www.apache.org/licenses/LICENSE-2.0"><img src="https://img.shields.io/badge/License-Apache-blue.svg" alt="License"></a><a href="README.md"><img src="https://img.shields.io/badge/Document-English-blue.svg" alt="English Document"></a><a href="https://dl.circleci.com/status-badge/redirect/gh/
|
|
3
|
+
<![endif]--><script src="scripts/third-party/hljs.js" defer="defer"></script><script src="scripts/third-party/hljs-line-num.js" defer="defer"></script><script src="scripts/third-party/popper.js" defer="defer"></script><script src="scripts/third-party/tippy.js" defer="defer"></script><script src="scripts/third-party/tocbot.min.js"></script><script>var baseURL="/",locationPathname="";baseURL=(locationPathname=document.location.pathname).substr(0,locationPathname.lastIndexOf("/")+1)</script><link rel="stylesheet" href="styles/clean-jsdoc-theme.min.css"><svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none"><defs><symbol id="home-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M19 21H5a1 1 0 0 1-1-1v-9H1l10.327-9.388a1 1 0 0 1 1.346 0L23 11h-3v9a1 1 0 0 1-1 1zM6 19h12V9.157l-6-5.454-6 5.454V19z"/></symbol><symbol id="copy-icon" viewbox="0 0 488.3 488.3"><g><path d="M314.25,85.4h-227c-21.3,0-38.6,17.3-38.6,38.6v325.7c0,21.3,17.3,38.6,38.6,38.6h227c21.3,0,38.6-17.3,38.6-38.6V124 C352.75,102.7,335.45,85.4,314.25,85.4z M325.75,449.6c0,6.4-5.2,11.6-11.6,11.6h-227c-6.4,0-11.6-5.2-11.6-11.6V124 c0-6.4,5.2-11.6,11.6-11.6h227c6.4,0,11.6,5.2,11.6,11.6V449.6z"/><path d="M401.05,0h-227c-21.3,0-38.6,17.3-38.6,38.6c0,7.5,6,13.5,13.5,13.5s13.5-6,13.5-13.5c0-6.4,5.2-11.6,11.6-11.6h227 c6.4,0,11.6,5.2,11.6,11.6v325.7c0,6.4-5.2,11.6-11.6,11.6c-7.5,0-13.5,6-13.5,13.5s6,13.5,13.5,13.5c21.3,0,38.6-17.3,38.6-38.6 V38.6C439.65,17.3,422.35,0,401.05,0z"/></g></symbol><symbol id="search-icon" viewBox="0 0 512 512"><g><g><path d="M225.474,0C101.151,0,0,101.151,0,225.474c0,124.33,101.151,225.474,225.474,225.474 c124.33,0,225.474-101.144,225.474-225.474C450.948,101.151,349.804,0,225.474,0z M225.474,409.323 c-101.373,0-183.848-82.475-183.848-183.848S124.101,41.626,225.474,41.626s183.848,82.475,183.848,183.848 S326.847,409.323,225.474,409.323z"/></g></g><g><g><path d="M505.902,476.472L386.574,357.144c-8.131-8.131-21.299-8.131-29.43,0c-8.131,8.124-8.131,21.306,0,29.43l119.328,119.328 c4.065,4.065,9.387,6.098,14.715,6.098c5.321,0,10.649-2.033,14.715-6.098C514.033,497.778,514.033,484.596,505.902,476.472z"/></g></g></symbol><symbol id="font-size-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11.246 15H4.754l-2 5H.6L7 4h2l6.4 16h-2.154l-2-5zm-.8-2L8 6.885 5.554 13h4.892zM21 12.535V12h2v8h-2v-.535a4 4 0 1 1 0-6.93zM19 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol><symbol id="add-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/></symbol><symbol id="minus-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M5 11h14v2H5z"/></symbol><symbol id="dark-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M10 7a7 7 0 0 0 12 4.9v.1c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2h.1A6.979 6.979 0 0 0 10 7zm-6 5a8 8 0 0 0 15.062 3.762A9 9 0 0 1 8.238 4.938 7.999 7.999 0 0 0 4 12z"/></symbol><symbol id="light-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-2a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636 5.636 7.05 3.515 4.93zM16.95 18.364l1.414-1.414 2.121 2.121-1.414 1.414-2.121-2.121zm2.121-14.85l1.414 1.415-2.121 2.121-1.414-1.414 2.121-2.121zM5.636 16.95l1.414 1.414-2.121 2.121-1.414-1.414 2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/></symbol><symbol id="reset-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795z"/></symbol><symbol id="down-icon" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.7803 6.21967C13.0732 6.51256 13.0732 6.98744 12.7803 7.28033L8.53033 11.5303C8.23744 11.8232 7.76256 11.8232 7.46967 11.5303L3.21967 7.28033C2.92678 6.98744 2.92678 6.51256 3.21967 6.21967C3.51256 5.92678 3.98744 5.92678 4.28033 6.21967L8 9.93934L11.7197 6.21967C12.0126 5.92678 12.4874 5.92678 12.7803 6.21967Z"></path></symbol><symbol id="codepen-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M16.5 13.202L13 15.535v3.596L19.197 15 16.5 13.202zM14.697 12L12 10.202 9.303 12 12 13.798 14.697 12zM20 10.869L18.303 12 20 13.131V10.87zM19.197 9L13 4.869v3.596l3.5 2.333L19.197 9zM7.5 10.798L11 8.465V4.869L4.803 9 7.5 10.798zM4.803 15L11 19.131v-3.596l-3.5-2.333L4.803 15zM4 13.131L5.697 12 4 10.869v2.262zM2 9a1 1 0 0 1 .445-.832l9-6a1 1 0 0 1 1.11 0l9 6A1 1 0 0 1 22 9v6a1 1 0 0 1-.445.832l-9 6a1 1 0 0 1-1.11 0l-9-6A1 1 0 0 1 2 15V9z"/></symbol><symbol id="close-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z"/></symbol><symbol id="menu-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"/></symbol></defs></svg></head><body data-theme="dark"><div class="sidebar-container"><div class="sidebar" id="sidebar"><div class="sidebar-items-container"><div class="sidebar-section-title"><a href="index.html" class="sidebar-home-anchor">首页</a></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-类"><div>类</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="Logger.html">Logger</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-全局"><div>全局</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#FACTORY_DEFAULT_APPENDER">FACTORY_DEFAULT_APPENDER</a></div><div class="sidebar-section-children"><a href="global.html#FACTORY_DEFAULT_LEVEL">FACTORY_DEFAULT_LEVEL</a></div><div class="sidebar-section-children"><a href="global.html#HasLogger">HasLogger</a></div><div class="sidebar-section-children"><a href="global.html#LOGGING_LEVELS">LOGGING_LEVELS</a></div><div class="sidebar-section-children"><a href="global.html#Log">Log</a></div></div></div></div></div><div class="navbar-container" id="VuAckcnZhf"><nav class="navbar"><div class="navbar-left-items"></div><div class="navbar-right-items"><div class="navbar-right-item"><button class="icon-button home-button" aria-label="go-to-homepage"><svg><use xlink:href="#home-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#light-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div><nav></nav></nav></div><div class="toc-container"><div class="toc-content"><span class="bold">本页内容</span><div id="eed4d2a0bfd64539bb9df78095dec881"></div></div></div><div class="body-wrapper"><div class="main-content"><div class="main-wrapper"><section class="readme"><article><h1>js-logging</h1><p><a href="https://npmjs.com/package/@qubit-ltd/logging"><img src="https://img.shields.io/npm/v/@qubit-ltd/logging.svg" alt="npm package"></a><a href="https://www.apache.org/licenses/LICENSE-2.0"><img src="https://img.shields.io/badge/License-Apache-blue.svg" alt="License"></a><a href="README.md"><img src="https://img.shields.io/badge/Document-English-blue.svg" alt="English Document"></a><a href="https://dl.circleci.com/status-badge/redirect/gh/qubit-ltd/js-logging/tree/master"><img src="https://dl.circleci.com/status-badge/img/gh/qubit-ltd/js-logging/tree/master.svg?style=shield" alt="CircleCI"></a><a href="https://coveralls.io/github/qubit-ltd/js-logging?branch=master"><img src="https://coveralls.io/repos/github/qubit-ltd/js-logging/badge.svg?branch=master" alt="Coverage Status"></a></p><p><a href="https://npmjs.com/package/@qubit-ltd/logging">@qubit-ltd/logging</a> 是一个 JavaScript 库,通过装饰器为类方法和属性提供强大的日志记录功能。 该库旨在与<a href="https://github.com/Haixing-Hu/vue3-class-component/">Vue.js 类组件</a>无缝集成,为处理 JavaScript 项目中的日志记录提供了优雅的解决方案。</p><h2>特性</h2><ul><li>📝 简单灵活的日志接口,支持不同的日志级别</li><li>🔍 支持带占位符的格式化日志消息</li><li>🎯 自动方法日志记录和类日志集成的装饰器</li><li>🔄 与Vue.js类组件无缝集成</li><li>🎛️ 可配置的日志级别和输出器</li><li>🌐 全局和单独的日志记录器管理</li><li>📋 支持浏览器控制台和自定义输出器</li></ul><h2>安装</h2><p>使用 npm 或 yarn 安装该库:</p><pre class="prettyprint source lang-sh"><code>npm install @qubit-ltd/logging
|
|
4
4
|
</code></pre><p>或</p><pre class="prettyprint source lang-sh"><code>yarn add @qubit-ltd/logging
|
|
5
5
|
</code></pre><h2>Logger 类</h2><p><code>Logger</code> 类提供了一个简单而灵活的日志记录接口。</p><h3>获取或创建 Logger</h3><p>你可以通过调用静态方法 <code>Logger.getLogger(name, options)</code> 获取一个 <code>Logger</code> 实例,其中:</p><ul><li><code>name</code> 是 logger 的标识符。如果已经存在具有相同名称的 logger,则返回该实例;否则将创建一个新的 logger。</li><li><code>options</code>(可选)是一个对象,可能包括:<ul><li><code>appender: object</code>:指定日志消息的输出目的地。此对象必须实现 <code>trace</code>、<code>debug</code>、<code>info</code>、<code>warn</code> 和 <code>error</code> 方法。 如果省略,将使用 logger 的现有 appender,或者为新创建的 logger 分配默认 appender。</li><li><code>level: string</code>:定义日志记录级别(<code>TRACE</code>、<code>DEBUG</code>、<code>INFO</code>、<code>WARN</code>、<code>ERROR</code>、<code>NONE</code>)。不区分大小写。 如果省略,将使用 logger 的现有日志级别,或者为新创建的 logger 分配默认日志级别。</li></ul></li></ul><p>示例:</p><pre class="prettyprint source lang-javascript"><code>import Logger from '@qubit-ltd/logging';
|
|
6
6
|
|
|
@@ -229,8 +229,8 @@ function processData(data, options = {}) {
|
|
|
229
229
|
logger.debug('使用选项处理数据: %o', options);
|
|
230
230
|
// 函数的其余部分
|
|
231
231
|
}
|
|
232
|
-
</code></pre><h2><span id="contributing">贡献</span></h2><p>如果您发现任何问题或有改进建议,请随时在<a href="https://github.com/
|
|
233
|
-
git clone https://github.com/
|
|
232
|
+
</code></pre><h2><span id="contributing">贡献</span></h2><p>如果您发现任何问题或有改进建议,请随时在<a href="https://github.com/qubit-ltd/js-logging">GitHub 仓库</a>上提交 issue 或 pull request。</p><h3>开发设置</h3><pre class="prettyprint source lang-bash"><code># 克隆仓库
|
|
233
|
+
git clone https://github.com/qubit-ltd/js-logging.git
|
|
234
234
|
cd js-logging
|
|
235
235
|
|
|
236
236
|
# 安装依赖
|