standard-log 10.1.0 → 10.2.1
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/cjs/index.spec.js +4 -0
- package/cjs/index.spec.js.map +1 -1
- package/cjs/logLevels.d.ts +1 -0
- package/cjs/logLevels.d.ts.map +1 -1
- package/cjs/logLevels.js +13 -1
- package/cjs/logLevels.js.map +1 -1
- package/cjs/standardLog.spec.js +10 -0
- package/cjs/standardLog.spec.js.map +1 -1
- package/dist/standard-log.es5.js +13 -1
- package/dist/standard-log.es5.js.gz +0 -0
- package/dist/standard-log.es5.js.map +1 -1
- package/dist/standard-log.es5.js.map.gz +0 -0
- package/dist/standard-log.esm.js +14 -0
- package/dist/standard-log.esm.js.gz +0 -0
- package/dist/standard-log.esm.js.map +1 -1
- package/dist/standard-log.esm.js.map.gz +0 -0
- package/esm/index.spec.js +4 -0
- package/esm/index.spec.js.map +1 -1
- package/esm/logLevels.d.ts +1 -0
- package/esm/logLevels.d.ts.map +1 -1
- package/esm/logLevels.js +12 -0
- package/esm/logLevels.js.map +1 -1
- package/esm/standardLog.spec.js +10 -0
- package/esm/standardLog.spec.js.map +1 -1
- package/package.json +1 -1
- package/ts/logLevels.ts +14 -0
package/cjs/index.spec.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var type_plus_1 = require("type-plus");
|
|
4
|
+
var index_js_1 = require("./index.js");
|
|
4
5
|
describe('type tests', function () {
|
|
5
6
|
it('export types', function () {
|
|
6
7
|
type_plus_1.isType.equal();
|
|
7
8
|
type_plus_1.isType.equal();
|
|
8
9
|
type_plus_1.isType.equal();
|
|
9
10
|
});
|
|
11
|
+
it('exports DEFAULT_LOG_METHOD_NAMES', function () {
|
|
12
|
+
expect(index_js_1.DEFAULT_LOG_METHOD_NAMES).toBeDefined();
|
|
13
|
+
});
|
|
10
14
|
});
|
|
11
15
|
//# sourceMappingURL=index.spec.js.map
|
package/cjs/index.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../ts/index.spec.ts"],"names":[],"mappings":";;AAAA,uCAAkC;
|
|
1
|
+
{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../ts/index.spec.ts"],"names":[],"mappings":";;AAAA,uCAAkC;AAClC,uCAA2G;AAE3G,QAAQ,CAAC,YAAY,EAAE;IACrB,EAAE,CAAC,cAAc,EAAE;QACjB,kBAAM,CAAC,KAAK,EAA4B,CAAA;QACxC,kBAAM,CAAC,KAAK,EAAmC,CAAA;QAC/C,kBAAM,CAAC,KAAK,EAAoC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE;QACrC,MAAM,CAAC,mCAAwB,CAAC,CAAC,WAAW,EAAE,CAAA;IAChD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { isType } from 'type-plus'\nimport { StandardLog, StandardLogForTest, StandardLogInstance, DEFAULT_LOG_METHOD_NAMES } from './index.js'\n\ndescribe('type tests', () => {\n it('export types', () => {\n isType.equal<false, void, StandardLog>()\n isType.equal<false, void, StandardLogForTest>()\n isType.equal<false, void, StandardLogInstance>()\n })\n\n it('exports DEFAULT_LOG_METHOD_NAMES', () => {\n expect(DEFAULT_LOG_METHOD_NAMES).toBeDefined()\n })\n})\n"]}
|
package/cjs/logLevels.d.ts
CHANGED
|
@@ -57,4 +57,5 @@ export declare function toLogLevelName(level: number): "emergency" | "alert" | "
|
|
|
57
57
|
* Convert default log level name to log level value.
|
|
58
58
|
*/
|
|
59
59
|
export declare function toLogLevel(name: string): any;
|
|
60
|
+
export declare const DEFAULT_LOG_METHOD_NAMES: string[];
|
|
60
61
|
//# sourceMappingURL=logLevels.d.ts.map
|
package/cjs/logLevels.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logLevels.d.ts","sourceRoot":"","sources":["../ts/logLevels.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logLevels.d.ts","sourceRoot":"","sources":["../ts/logLevels.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,SAAS;IACpB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;OAGG;;IAEH;;OAEG;;CAEJ,CAAA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,4GAW3C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,OAEtC;AAED,eAAO,MAAM,wBAAwB,EAAE,MAAM,EAW5C,CAAA"}
|
package/cjs/logLevels.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toLogLevel = exports.toLogLevelName = exports.logLevels = void 0;
|
|
3
|
+
exports.DEFAULT_LOG_METHOD_NAMES = exports.toLogLevel = exports.toLogLevelName = exports.logLevels = void 0;
|
|
4
4
|
exports.logLevels = {
|
|
5
5
|
/**
|
|
6
6
|
* none: 0
|
|
@@ -84,4 +84,16 @@ function toLogLevel(name) {
|
|
|
84
84
|
return exports.logLevels[name.toLocaleLowerCase()];
|
|
85
85
|
}
|
|
86
86
|
exports.toLogLevel = toLogLevel;
|
|
87
|
+
exports.DEFAULT_LOG_METHOD_NAMES = [
|
|
88
|
+
'emergency',
|
|
89
|
+
'alert',
|
|
90
|
+
'critical',
|
|
91
|
+
'error',
|
|
92
|
+
'warn',
|
|
93
|
+
'notice',
|
|
94
|
+
'info',
|
|
95
|
+
'debug',
|
|
96
|
+
'trace',
|
|
97
|
+
'planck'
|
|
98
|
+
];
|
|
87
99
|
//# sourceMappingURL=logLevels.js.map
|
package/cjs/logLevels.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logLevels.js","sourceRoot":"","sources":["../ts/logLevels.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"logLevels.js","sourceRoot":"","sources":["../ts/logLevels.ts"],"names":[],"mappings":";;;AACa,QAAA,SAAS,GAAG;IACvB;;OAEG;IACH,IAAI,EAAE,CAAC;IACP;;OAEG;IACH,SAAS,EAAE,GAAG;IACd;;OAEG;IACH,KAAK,EAAE,GAAG;IACV;;OAEG;IACH,QAAQ,EAAE,GAAG;IACb;;OAEG;IACH,KAAK,EAAE,GAAG;IACV;;OAEG;IACH,IAAI,EAAE,GAAG;IACT;;OAEG;IACH,MAAM,EAAE,GAAG;IACX;;OAEG;IACH,IAAI,EAAE,GAAG;IACT;;OAEG;IACH,KAAK,EAAE,GAAG;IACV;;OAEG;IACH,KAAK,EAAE,GAAG;IACV;;;OAGG;IACH,MAAM,EAAE,QAAQ;IAChB;;OAEG;IACH,GAAG,EAAE,QAAQ;CACd,CAAA;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAa;IAC1C,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,WAAW,CAAA;IACpC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,OAAO,CAAA;IAChC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,UAAU,CAAA;IACnC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,OAAO,CAAA;IAChC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,MAAM,CAAA;IAC/B,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,QAAQ,CAAA;IACjC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,MAAM,CAAA;IAC/B,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,OAAO,CAAA;IAChC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,OAAO,CAAA;IAChC,OAAO,QAAQ,CAAA;AACjB,CAAC;AAXD,wCAWC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAQ,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAA;AACrD,CAAC;AAFD,gCAEC;AAEY,QAAA,wBAAwB,GAAa;IAChD,WAAW;IACX,OAAO;IACP,UAAU;IACV,OAAO;IACP,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;CACT,CAAA","sourcesContent":["\nexport const logLevels = {\n /**\n * none: 0\n */\n none: 0,\n /**\n * emergency: 100\n */\n emergency: 100,\n /**\n * alert: 200\n */\n alert: 200,\n /**\n * critical: 300\n */\n critical: 300,\n /**\n * error: 400\n */\n error: 400,\n /**\n * warn: 500\n */\n warn: 500,\n /**\n * notice: 600\n */\n notice: 600,\n /**\n * info: 700\n */\n info: 700,\n /**\n * debug: 800\n */\n debug: 800,\n /**\n * trace: 900\n */\n trace: 900,\n /**\n * planck: Infinity\n * `planck unit` is a very small unit <https://en.wikipedia.org/wiki/Planck_units>.\n */\n planck: Infinity,\n /**\n * all: Infinity\n */\n all: Infinity\n}\n\n/**\n * Convert default log level value to log level name.\n */\nexport function toLogLevelName(level: number) {\n if (level <= 100) return 'emergency'\n if (level <= 200) return 'alert'\n if (level <= 300) return 'critical'\n if (level <= 400) return 'error'\n if (level <= 500) return 'warn'\n if (level <= 600) return 'notice'\n if (level <= 700) return 'info'\n if (level <= 800) return 'debug'\n if (level <= 900) return 'trace'\n return 'planck'\n}\n\n/**\n * Convert default log level name to log level value.\n */\nexport function toLogLevel(name: string) {\n return (logLevels as any)[name.toLocaleLowerCase()]\n}\n\nexport const DEFAULT_LOG_METHOD_NAMES: string[] = [\n 'emergency',\n 'alert',\n 'critical',\n 'error',\n 'warn',\n 'notice',\n 'info',\n 'debug',\n 'trace',\n 'planck'\n]\n"]}
|
package/cjs/standardLog.spec.js
CHANGED
|
@@ -96,6 +96,12 @@ describe('createStandardLogForTest()', function () {
|
|
|
96
96
|
});
|
|
97
97
|
});
|
|
98
98
|
describe('standardLog.getLogger()', function () {
|
|
99
|
+
/**
|
|
100
|
+
* The logger id does not allow all characters due to security concerns.
|
|
101
|
+
* Since we have no control over where the logs will be written to,
|
|
102
|
+
* the could be a case that the ID is being used to exploit those environment.
|
|
103
|
+
* So keeping the supported characters in sane way helps mitigates the risk.
|
|
104
|
+
*/
|
|
99
105
|
it('supports id with alphanumeric and :_-.', function () {
|
|
100
106
|
var sl = (0, index_js_1.createStandardLog)();
|
|
101
107
|
sl.getLogger('abcdefghijklmnopqrstuvwxyz:-_.1234567890');
|
|
@@ -109,6 +115,10 @@ describe('standardLog.getLogger()', function () {
|
|
|
109
115
|
sl.getLogger('@unional/fixture');
|
|
110
116
|
sl.getLogger("a\\b\\c");
|
|
111
117
|
});
|
|
118
|
+
it('supports id with space', function () {
|
|
119
|
+
var sl = (0, index_js_1.createStandardLog)();
|
|
120
|
+
sl.getLogger('hello world');
|
|
121
|
+
});
|
|
112
122
|
it.each('`~!#$%^&*()=+|[]{}<>,?'.split(''))('throws if id has unsupported character %s', function (char) {
|
|
113
123
|
var sl = (0, index_js_1.createStandardLog)();
|
|
114
124
|
assertron_1.assertron.throws(function () { return sl.getLogger(char); }, errors_js_1.InvalidId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standardLog.spec.js","sourceRoot":"","sources":["../ts/standardLog.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAA0C;AAC1C,yCAAuC;AACvC,uCAA8G;AAC9G,+CAA0D;AAC1D,yCAAqD;AACrD,mDAAwE;AACxE,6CAAmD;AAGnD,QAAQ,CAAC,qBAAqB,EAAE;IAC9B,QAAQ,CAAC,UAAU,EAAE;QACnB,EAAE,CAAC,oBAAoB,EAAE;YACvB,IAAM,MAAM,GAAG,IAAA,4BAAiB,GAAE,CAAA;YAClC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,aAAa,EAAE;YAChB,IAAM,MAAM,GAAG,IAAA,4BAAiB,GAAE,CAAA;YAClC,qBAAC,CAAC,MAAM,CAAC,cAAM,OAAC,MAAc,CAAC,QAAQ,GAAG,wBAAS,CAAC,MAAM,EAA3C,CAA2C,EAAE,UAAA,GAAG,IAAI,OAAA,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAzB,CAAyB,CAAC,CAAA;QAC/F,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,2BAA2B,EAAE;YAC9B,IAAM,MAAM,GAAG,IAAA,4BAAiB,EAAC,EAAE,QAAQ,EAAE,wBAAS,CAAC,MAAM,EAAE,CAAC,CAAA;YAChE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,wBAAS,CAAC,MAAM,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,eAAe,EAAE;QACxB,EAAE,CAAC,0BAA0B,EAAE;YAC7B,IAAM,MAAM,GAAG,IAAA,4BAAiB,EAAC,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YAElE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAClD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,WAAW,EAAE;QACpB,EAAE,CAAC,sBAAsB,EAAE;YACzB,IAAM,GAAG,GAAG,IAAA,mCAAuB,GAAE,CAAA;YACrC,IAAM,EAAE,GAAG,IAAA,4BAAiB,EAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAClD,IAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YAC7B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACf,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,mBAAmB,EAAE;QAC5B,UAAU,CAAC;YACT,oBAAG,CAAC,GAAG,GAAG,SAAS,CAAA;YACnB,oBAAG,CAAC,UAAU,GAAG,KAAK,CAAA;QACxB,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,yDAAyD,EAAE;;YAC5D,IAAA,4BAAiB,EAAC,EAAE,QAAQ,EAAE,wBAAS,CAAC,MAAM,EAAE,CAAC,CAAA;YACjD,MAAM,CAAC,MAAA,oBAAG,CAAC,GAAG,0CAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,wBAAS,CAAC,MAAM,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,4BAA4B,EAAE;IACrC,EAAE,CAAC,8BAA8B,EAAE;QACzB,IAAA,QAAQ,GAAK,IAAA,mCAAwB,GAAE,SAA/B,CAA+B;QAC/C,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mBAAmB,EAAE;QACtB,IAAM,KAAK,GAAG,IAAA,mCAAwB,GAAE,CAAA;QACxC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,wBAAS,CAAC,KAAK,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,yBAAyB,EAAE;IAClC,EAAE,CAAC,wCAAwC,EAAE;QAC3C,IAAM,EAAE,GAAG,IAAA,4BAAiB,GAAE,CAAA;QAC9B,EAAE,CAAC,SAAS,CAAC,0CAA0C,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,0BAA0B,EAAE;QAC7B,IAAM,EAAE,GAAG,IAAA,4BAAiB,GAAE,CAAA;QAC9B,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,8BAA8B,EAAE;QACjC,IAAM,EAAE,GAAG,IAAA,4BAAiB,GAAE,CAAA;QAC9B,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;QAChC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,2CAA2C,EAAE,UAAC,IAAY;QACpG,IAAM,EAAE,GAAG,IAAA,4BAAiB,GAAE,CAAA;QAC9B,qBAAC,CAAC,MAAM,CAAC,cAAM,OAAA,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAlB,CAAkB,EAAE,qBAAS,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,2CAA2C,EAAE;QAC9C,IAAM,EAAE,GAAG,IAAA,4BAAiB,GAAE,CAAA;QAC9B,IAAM,GAAG,GAAG,qBAAC,CAAC,MAAM,CAAC,cAAM,OAAA,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAjB,CAAiB,EAAE,qBAAS,CAAC,CAAA;QAExD,IAAA,uBAAS,EAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,gBAAgB,EAAE;QACrB,IAAM,EAAE,GAAG,IAAA,4BAAiB,GAAE,CAAA;QAC9B,IAAM,GAAG,GAAQ,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;QAC/C,qBAAC,CAAC,MAAM,CAAC,cAAM,OAAA,GAAG,CAAC,EAAE,GAAG,GAAG,EAAZ,CAAY,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kDAAkD,EAAE;QACvD,IAAM,EAAE,GAAG,IAAA,4BAAiB,GAAE,CAAA;QAC9B,IAAM,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAC1C,IAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6BAA6B,EAAE;QAChC,IAAM,EAAE,GAAG,IAAA,4BAAiB,GAAE,CAAA;QAC9B,IAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,wBAAS,CAAC,KAAK,EAAE,CAAC,CAAA;QAC7D,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,wBAAS,CAAC,KAAK,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kCAAkC,EAAE;QACvC,IAAM,EAAE,GAAG,IAAA,4BAAiB,EAAC,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QACrE,IAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;QAC/C,MAAM,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE;QACtC,SAAS,OAAO,CAAoC,OAA8B;YAChF,IAAM,EAAE,GAAG,IAAA,4BAAiB,EAAI,OAAO,CAAC,CAAA;YACxC,IAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;YAC9B,OAAO,EAAE,CAAA;QACX,CAAC;QAED,IAAM,EAAE,GAAG,OAAO,CAAC,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;QACrD,IAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;QAEjC,4DAA4D;QAC5D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,YAAY,EAAE;QACrB,SAAe,mBAAmB,CAAC,EAAsB,EAAE,MAAsB,EAAE,KAAa;;;;oBACxF,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;oBAC1B,GAAG,GAAG,+BAAwB,KAAK,CAAE,CAAC;oBAC3C,GAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAA;oBACzB,qBAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;;;;SAC3F;QAED,SAAe,sBAAsB,CAAC,EAAsB,EAAE,MAAc,EAAE,KAAa;;;;oBACnF,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAChC,GAAW,CAAC,MAAM,CAAC,CAAC,mCAA4B,KAAK,CAAE,CAAC,CAAA;oBACzD,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;;;;SACxC;QAED,SAAe,wBAAwB,CAAC,EAAsB,EAAE,MAAsB,EAAE,UAAkB;;;;oBAClG,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;oBAEjD,GAAG,GAAG,+BAAwB,UAAU,CAAE,CAAC;oBAChD,GAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAA;oBACzB,qBAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;;;;SAC3F;QAED,SAAe,2BAA2B,CAAC,EAAsB,EAAE,MAAc,EAAE,UAAkB;;;;oBAC7F,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;oBACvD,GAAW,CAAC,MAAM,CAAC,CAAC,mCAA4B,UAAU,CAAE,CAAC,CAAA;oBAC9D,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;;;;SACxC;QAED,SAAe,uBAAuB,CAAC,EAAsB,EAAE,MAAc,EAAE,SAAiB;;;;oBACxF,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;oBAC5B,MAAM,GAAG,KAAK,CAAA;oBAClB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,cAAM,OAAA,MAAM,GAAG,IAAI,EAAb,CAAa,CAAC,CAAA;oBACtC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;;;SAC1B;QAED,SAAe,0BAA0B,CAAC,EAAsB,EAAE,MAAc,EAAE,SAAiB,EAAE,WAAmB;;;;oBAChH,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;oBAChC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,cAAQ,MAAM,IAAI,KAAK,CAAC,kCAA2B,WAAW,CAAE,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;;;;SACvF;QAED,SAAe,yCAAyC,CAAC,EAAsB,EAAE,MAAc,EAAE,UAAkB,EAAE,SAAiB;;;;oBAC9H,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;oBACnD,MAAM,GAAG,KAAK,CAAA;oBAClB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,cAAM,OAAA,MAAM,GAAG,IAAI,EAAb,CAAa,CAAC,CAAA;oBACtC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;;;SAC1B;QAED,SAAe,4CAA4C,CAAC,EAAsB,EAAE,MAAc,EAAE,UAAkB,EAAE,SAAiB;;;;oBACjI,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;oBACvD,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,cAAQ,MAAM,IAAI,KAAK,CAAC,kCAA2B,UAAU,CAAE,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;;;;SACtF;QAED,IAAM,SAAS,GAAG,IAAA,sBAAQ,EAAC,UAAC,IAAI,IAAK,OAAA,UAAC,MAAsB,EAAE,KAAa;YACzE,IAAM,EAAE,GAAG,IAAA,mCAAwB,EAAC,KAAK,CAAC,CAAA;YAC1C,IAAM,IAAI,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YACrC,IAAI,CAAC,UAAG,MAAM,qCAA2B,IAAI,eAAK,KAAK,MAAG,EAAE;gBAC1D,OAAO,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;YAC/C,CAAC,CAAC,CAAA;QACJ,CAAC,EANoC,CAMpC,CAAC,CAAA;QACF,IAAM,YAAY,GAAG,IAAA,sBAAQ,EAAC,UAAC,IAAI,IAAK,OAAA,UAAC,MAAc,EAAE,KAAa;YACpE,IAAM,EAAE,GAAG,IAAA,mCAAwB,EAAC,KAAK,CAAC,CAAA;YAC1C,IAAM,IAAI,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YACrC,IAAI,CAAC,UAAG,MAAM,yCAA+B,IAAI,eAAK,KAAK,MAAG,EAAE;gBAC9D,OAAO,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;YAClD,CAAC,CAAC,CAAA;QACJ,CAAC,EANuC,CAMvC,CAAC,CAAA;QAEF,IAAM,+BAA+B,GAAG,IAAA,sBAAQ,EAAC,UAAC,IAAI,IAAK,OAAA,UAAC,MAAsB,EAAE,UAAkB;YACpG,IAAM,SAAS,GAAG,IAAA,6BAAc,EAAC,UAAU,CAAC,CAAC;YAC7C,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAA,WAAW;gBACpG,IAAM,UAAU,GAAG,IAAA,6BAAc,EAAC,WAAW,CAAC,IAAI,MAAM,CAAA;gBACxD,IAAI,CAAC,UAAG,MAAM,2CAAiC,SAAS,eAAK,UAAU,mCAAyB,UAAU,eAAK,WAAW,MAAG,EAAE;oBAC7H,IAAM,EAAE,GAAG,IAAA,mCAAwB,EAAC,WAAW,CAAC,CAAA;oBAChD,OAAO,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;gBACzD,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,EAT0D,CAS1D,CAAC,CAAA;QAEF,IAAM,kCAAkC,GAAG,IAAA,sBAAQ,EAAC,UAAC,IAAI,IAAK,OAAA,UAAC,MAAc,EAAE,UAAkB;YAC/F,IAAM,SAAS,GAAG,IAAA,6BAAc,EAAC,UAAU,CAAC,CAAC;YAE7C,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAA,WAAW;gBACpG,IAAM,UAAU,GAAG,IAAA,6BAAc,EAAC,WAAW,CAAC,IAAI,MAAM,CAAA;gBACxD,IAAI,CAAC,UAAG,MAAM,+CAAqC,SAAS,eAAK,UAAU,mCAAyB,UAAU,eAAK,WAAW,MAAG,EAAE;oBACjI,IAAM,EAAE,GAAG,IAAA,mCAAwB,EAAC,WAAW,CAAC,CAAA;oBAChD,OAAO,2BAA2B,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;gBAC5D,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,EAV6D,CAU7D,CAAC,CAAA;QAEF,IAAM,qBAAqB,GAAG,IAAA,sBAAQ,EAAC,UAAC,IAAI,IAAK,OAAA,UAAC,SAAiB,EAAE,WAAmB;YACtF,IAAM,MAAM,GAAG,IAAA,6BAAc,EAAC,SAAS,CAAC,CAAA;YACxC,IAAM,IAAI,GAAG,IAAA,6BAAc,EAAC,WAAW,CAAC,CAAA;YACxC,IAAI,CAAC,UAAG,MAAM,mDAAyC,IAAI,eAAK,WAAW,MAAG,EAAE;gBAC9E,IAAM,EAAE,GAAG,IAAA,mCAAwB,EAAC,WAAW,CAAC,CAAA;gBAChD,OAAO,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;YACvD,CAAC,CAAC,CAAA;QACJ,CAAC,EAPgD,CAOhD,CAAC,CAAA;QAEF,IAAM,wBAAwB,GAAG,IAAA,sBAAQ,EAAC,UAAC,IAAI,IAAK,OAAA,UAAC,SAAiB,EAAE,WAAmB;YACzF,IAAM,MAAM,GAAG,IAAA,6BAAc,EAAC,SAAS,CAAC,CAAA;YACxC,IAAM,IAAI,GAAG,IAAA,6BAAc,EAAC,WAAW,CAAC,CAAA;YACxC,IAAI,CAAC,UAAG,MAAM,uDAA6C,IAAI,eAAK,WAAW,MAAG,EAAE;gBAClF,IAAM,EAAE,GAAG,IAAA,mCAAwB,EAAC,WAAW,CAAC,CAAA;gBAChD,OAAO,0BAA0B,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;YACvE,CAAC,CAAC,CAAA;QACJ,CAAC,EAPmD,CAOnD,CAAC,CAAA;QAEF,IAAM,2CAA2C,GAAG,IAAA,sBAAQ,EAAC,UAAC,IAAI,IAAK,OAAA,UAAC,SAAiB,EAAE,UAAkB;YAC3G,IAAM,MAAM,GAAG,IAAA,6BAAc,EAAC,SAAS,CAAC,CAAA;YACxC,IAAM,SAAS,GAAG,IAAA,6BAAc,EAAC,UAAU,CAAC,CAAC;YAE7C,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAA,WAAW;gBACpG,IAAM,UAAU,GAAG,IAAA,6BAAc,EAAC,WAAW,CAAC,IAAI,MAAM,CAAA;gBACxD,IAAI,CAAC,UAAG,MAAM,2CAAiC,SAAS,eAAK,UAAU,mCAAyB,UAAU,eAAK,WAAW,MAAG,EAAE;oBAC7H,IAAM,EAAE,GAAG,IAAA,mCAAwB,EAAC,WAAW,CAAC,CAAA;oBAChD,OAAO,yCAAyC,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;gBACrF,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,EAXsE,CAWtE,CAAC,CAAA;QAEF,IAAM,8CAA8C,GAAG,IAAA,sBAAQ,EAAC,UAAC,IAAI,IAAK,OAAA,UAAC,SAAiB,EAAE,UAAkB;YAC9G,IAAM,MAAM,GAAG,IAAA,6BAAc,EAAC,SAAS,CAAC,CAAA;YACxC,IAAM,SAAS,GAAG,IAAA,6BAAc,EAAC,UAAU,CAAC,CAAC;YAE7C,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAA,WAAW;gBACpG,IAAM,UAAU,GAAG,IAAA,6BAAc,EAAC,WAAW,CAAC,IAAI,MAAM,CAAA;gBACxD,IAAI,CAAC,UAAG,MAAM,+CAAqC,SAAS,eAAK,UAAU,mCAAyB,UAAU,eAAK,WAAW,MAAG,EAAE;oBACjI,IAAM,EAAE,GAAG,IAAA,mCAAwB,EAAC,WAAW,CAAC,CAAA;oBAChD,OAAO,4CAA4C,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;gBACxF,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,EAXyE,CAWzE,CAAC,CAAA;QAEF,YAAY,CAAC,OAAO,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACrC,SAAS,CAAC,OAAO,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QACnC,SAAS,CAAC,OAAO,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAClC,SAAS,CAAC,OAAO,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAClC,SAAS,CAAC,OAAO,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QACnC,kCAAkC,CAAC,OAAO,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC3D,+BAA+B,CAAC,OAAO,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QACzD,+BAA+B,CAAC,OAAO,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACxD,+BAA+B,CAAC,OAAO,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACxD,+BAA+B,CAAC,OAAO,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAEzD,YAAY,CAAC,MAAM,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACpC,YAAY,CAAC,MAAM,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QACrC,SAAS,CAAC,MAAM,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACjC,SAAS,CAAC,MAAM,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACjC,SAAS,CAAC,MAAM,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAClC,kCAAkC,CAAC,MAAM,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC1D,kCAAkC,CAAC,MAAM,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAC3D,+BAA+B,CAAC,MAAM,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACvD,+BAA+B,CAAC,MAAM,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACvD,+BAA+B,CAAC,MAAM,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAExD,YAAY,CAAC,MAAM,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACpC,YAAY,CAAC,MAAM,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QACrC,YAAY,CAAC,MAAM,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACpC,SAAS,CAAC,MAAM,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACjC,SAAS,CAAC,MAAM,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAClC,kCAAkC,CAAC,MAAM,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC1D,kCAAkC,CAAC,MAAM,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAC3D,kCAAkC,CAAC,MAAM,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC1D,+BAA+B,CAAC,MAAM,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACvD,+BAA+B,CAAC,MAAM,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAExD,YAAY,CAAC,OAAO,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACrC,YAAY,CAAC,OAAO,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QACtC,YAAY,CAAC,OAAO,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACrC,YAAY,CAAC,OAAO,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACrC,SAAS,CAAC,OAAO,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QACnC,kCAAkC,CAAC,OAAO,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC3D,kCAAkC,CAAC,OAAO,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAC5D,kCAAkC,CAAC,OAAO,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC3D,kCAAkC,CAAC,OAAO,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC3D,+BAA+B,CAAC,OAAO,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAEzD,wBAAwB,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACzD,qBAAqB,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QACvD,qBAAqB,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACtD,qBAAqB,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACtD,qBAAqB,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QACvD,8CAA8C,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC/E,2CAA2C,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAC7E,2CAA2C,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC5E,2CAA2C,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC5E,2CAA2C,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAE7E,wBAAwB,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACxD,wBAAwB,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QACzD,qBAAqB,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACrD,qBAAqB,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACrD,qBAAqB,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QACtD,8CAA8C,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC9E,8CAA8C,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAC/E,2CAA2C,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC3E,2CAA2C,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC3E,2CAA2C,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAE5E,wBAAwB,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACxD,wBAAwB,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QACzD,wBAAwB,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACxD,qBAAqB,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACrD,qBAAqB,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QACtD,8CAA8C,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC9E,8CAA8C,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAC/E,8CAA8C,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC9E,2CAA2C,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC3E,2CAA2C,CAAC,wBAAS,CAAC,IAAI,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAE5E,wBAAwB,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACzD,wBAAwB,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAC1D,wBAAwB,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACzD,wBAAwB,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QACzD,qBAAqB,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QACvD,8CAA8C,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC/E,8CAA8C,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;QAChF,8CAA8C,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC/E,8CAA8C,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,IAAI,CAAC,CAAA;QAC/E,2CAA2C,CAAC,wBAAS,CAAC,KAAK,EAAE,wBAAS,CAAC,KAAK,CAAC,CAAA;IAC/E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uBAAuB,EAAE;QAC1B,IAAM,EAAE,GAAG,IAAA,mCAAwB,GAAE,CAAA;QACrC,IAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;QACvC,IAAM,KAAK,GAAG,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,wBAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAA;QAChG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAChB,qBAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,uBAAuB,EAAE,UAAA,IAAI;QACxF,IAAM,EAAE,GAAG,IAAA,4BAAiB,GAAE,CAAA;QAC9B,IAAM,GAAG,GAAQ,EAAE,CAAC,SAAS,CAAC,UAAG,IAAI,iBAAc,CAAC,CAAA;QAEpD,qBAAC,CAAC,MAAM,CAAC,cAAM,OAAA,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAhB,CAAgB,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAGF,QAAQ,CAAC,MAAM,EAAE;QACf,EAAE,CAAC,wBAAwB,EAAE;YAC3B,IAAM,EAAE,GAAG,IAAA,mCAAwB,GAAE,CAAA;YACrC,IAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;YACxC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,UAAA,GAAG,IAAM,GAAG,CAAC,OAAO,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;YAE3C,qBAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAC5B,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,wBAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;aAC7D,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,2CAA2C,EAAE;YAC9C,IAAM,EAAE,GAAG,IAAA,mCAAwB,GAAE,CAAA;YACrC,IAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;YACrC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,cAAQ,OAAM,CAAC,CAAC,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,SAAS,EAAE;QAClB,IAAI,CAAC,4BAA4B,EAAE;;;gBAC3B,EAAE,GAAG,IAAA,mCAAwB,GAAE,CAAA;gBAC/B,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;gBAE1C,MAAM,CAAC,KAAK,EAAE,CAAA;gBACd,MAAM,CAAC,KAAK,EAAE,CAAA;gBAEd,qBAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;oBAC5B,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,wBAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;oBACxD,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,wBAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;iBACzD,CAAC,CAAA;;;aACH,CAAC,CAAA;QAEF,IAAI,CAAC,+BAA+B,EAAE;;;gBAC9B,EAAE,GAAG,IAAA,mCAAwB,EAAC,wBAAS,CAAC,KAAK,CAAC,CAAA;gBAC9C,EAAE,GAAG,eAAe,CAAA;gBACpB,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;gBAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBAE5B,qBAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;oBAC5B,EAAE,EAAE,IAAA,EAAE,KAAK,EAAE,wBAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;iBAC1D,CAAC,CAAA;;;aACH,CAAC,CAAA;QAEF,IAAI,CAAC,yCAAyC,EAAE;;;gBACxC,EAAE,GAAG,IAAA,mCAAwB,EAAC,wBAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;gBAClD,EAAE,GAAG,eAAe,CAAA;gBACpB,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;gBAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBAE5B,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;;;aACxC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,0BAA0B,EAAE;;;YACzB,GAAG,GAAG,IAAA,mCAAuB,GAAE,CAAA;YAC/B,EAAE,GAAG,IAAA,4BAAiB,EAAC,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC/E,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YACnC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YAEzB,qBAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;;;SACtE,CAAC,CAAA;IAEF,QAAQ,CAAC,2BAA2B,EAAE;QACpC,SAAS,WAAW,CAClB,EAAU,EAAE,OAAsB,EAClC,OAA6F;YAE7F,IAAM,WAAW,GAAG,IAAA,mCAAuB,GAAE,CAAA;YAC7C,IAAM,eAAe,GAAG,IAAA,mCAAuB,EAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;YAClE,IAAM,EAAE,GAAG,IAAA,4BAAiB,EAAC,EAAE,SAAS,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,CAAC,CAAA;YAE3E,IAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;YACrC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC1D,CAAC;QACD,EAAE,CAAC,2CAA2C,EAAE;YAC9C,WAAW,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,UAAC,GAAG,EAAE,OAAO,EAAE,WAAW;gBAC9E,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;gBAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBACjC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACvC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,4CAA4C,EAAE;YAC/C,WAAW,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,UAAC,GAAG,EAAE,OAAO,EAAE,WAAW;gBAC3E,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;gBAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBACjC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACvC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,6CAA6C,EAAE;YAChD,WAAW,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,UAAC,GAAG,EAAE,OAAO,EAAE,WAAW;gBACxF,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;gBAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBACjC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACvC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,+CAA+C,EAAE;YAClD,WAAW,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,UAAA,EAAE,IAAI,OAAA,EAAE,KAAK,SAAS,EAAhB,CAAgB,EAAE,EAC3D,UAAC,GAAG,EAAE,OAAO,EAAE,WAAW;gBACxB,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;gBAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBACjC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACvC,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,6BAA6B,EAAE;YAChC,IAAM,QAAQ,GAAG,IAAA,mCAAuB,EAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;YAC9D,WAAW,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EACnD,UAAC,GAAG,EAAE,OAAO,EAAE,WAAW;gBACxB,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;gBAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBACjC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBACrC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACzC,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,oEAAoE,EAAE;YACzE,2DAA2D;YAC3D,+DAA+D;YAC/D,IAAM,QAAQ,GAAG,IAAA,mCAAuB,EAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;YAC9D,WAAW,CAAC,8BAA8B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAC/D,UAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;gBAC1B,IAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAA;gBAC1D,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;gBAE1B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACzC,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,gBAAgB,EAAE;IACzB,IAAI,CAAC,cAAc,EAAE;QACnB,IAAM,EAAE,GAAG,IAAA,mCAAwB,GAAE,CAAA;QACrC,IAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAA,uBAAY,EAAC;YACX,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAChC,CAAC,EAAE,GAAG,CAAC,CAAA;QAEP,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,wBAAwB,EAAE;QAC7B,IAAM,EAAE,GAAG,IAAA,mCAAwB,GAAE,CAAA;QACrC,IAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAA,uBAAY,EAAC;YACX,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;YAC/B,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;QACrC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QACd,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qBAAqB,EAAE;QAC1B,IAAM,EAAE,GAAG,IAAA,mCAAwB,GAAE,CAAA;QACrC,IAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAM,CAAC,GAAG,IAAA,uBAAY,EAAC,cAAM,OAAA,CAAC,EAAD,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAC3C,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,aAAa,EAAE;IACtB,EAAE,CAAC,+CAA+C,EAAE;QAClD,IAAM,GAAG,GAAG,IAAA,oBAAS,EAAC,SAAS,CAAC,CAAA;QAChC,GAAG,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,yBAAyB,EAAE;QAC5B,IAAM,QAAQ,GAAG,IAAA,mCAAuB,GAAE,CAAA;QAC1C,IAAM,GAAG,GAAG,IAAA,oBAAS,EAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAA;QACjE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACjB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,gBAAgB,EAAE;IACzB,UAAU,CAAC;QACT,oBAAG,CAAC,GAAG,GAAG,SAAS,CAAA;QACnB,oBAAG,CAAC,UAAU,GAAG,KAAK,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE;QAClC,IAAM,GAAG,GAAG,IAAA,mCAAuB,GAAE,CAAA;QACrC,IAAA,6BAAY,EAAC,EAAE,QAAQ,EAAE,wBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAE7D,IAAM,GAAG,GAAG,IAAA,oBAAS,EAAC,SAAS,CAAC,CAAA;QAChC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QAC1B,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACxB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE;QAC7B,IAAM,GAAG,GAAG,IAAA,oBAAS,EAAC,SAAS,CAAC,CAAA;QAChC,GAAG,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;QAEnD,IAAM,GAAG,GAAG,IAAA,mCAAuB,GAAE,CAAA;QACrC,IAAA,6BAAY,EAAC,EAAE,QAAQ,EAAE,wBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC7D,GAAG,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAA;QACpD,GAAG,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAA;QACvD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE;QAC1C,IAAM,GAAG,GAAG,IAAA,mCAAuB,GAAE,CAAA;QACrC,IAAA,6BAAY,EAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAClC,IAAA,6BAAY,EAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;QAC/B,qBAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,wBAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/G,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE;;QAC7B,IAAM,GAAG,GAAG,IAAA,oBAAS,EAAC,SAAS,CAAC,CAAA;QAChC,GAAG,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;QAEnD,IAAM,GAAG,GAAG,IAAA,mCAAuB,GAAE,CAAA;QACrC,IAAA,6BAAY,EAAC,EAAE,QAAQ,EAAE,wBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAE7D,IAAM,SAAS,GAAG,MAAA,oBAAG,CAAC,GAAG,0CAAE,KAAK,CAAC,SAAS,CAAA;QAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { assertron as a } from 'assertron'\nimport { InvalidId } from './errors.js'\nimport { createStandardLog, createStandardLogForTest, getLogger, StandardLog, suppressLogs } from './index.js'\nimport { logLevels, toLogLevelName } from './logLevels.js'\nimport { createMemoryLogReporter } from './memory.js'\nimport { configGlobal, ctx, StandardLogForTest } from './standardLog.js'\nimport { assertSSF, wrapTest } from './testUtil.js'\nimport { LogEntry, Logger, LoggerOptions, LogMethodNames, StandardLogOptions } from './types.js'\n\ndescribe('createStandardLog()', () => {\n describe('logLevel', () => {\n it('is default to info', () => {\n const actual = createStandardLog()\n expect(actual.logLevel).toBe(logLevels.info)\n })\n it('is readonly', () => {\n const actual = createStandardLog()\n a.throws(() => (actual as any).logLevel = logLevels.planck, err => /only a getter/.test(err))\n })\n it('set logLevel from options', () => {\n const actual = createStandardLog({ logLevel: logLevels.planck })\n expect(actual.logLevel).toBe(logLevels.planck)\n })\n })\n\n describe('custom levels', () => {\n it('can define custom levels', () => {\n const actual = createStandardLog({ customLevels: { urgent: 80 } })\n\n expect(actual.toLogLevelName(80)).toBe('urgent')\n })\n })\n\n describe('reporters', () => {\n it('can specify reporter', () => {\n const mem = createMemoryLogReporter()\n const sl = createStandardLog({ reporters: [mem] })\n const log = sl.getLogger('x')\n log.info('abc')\n expect(mem.logs.length).toBe(1)\n })\n })\n\n describe('related to global', () => {\n beforeEach(() => {\n ctx.gsl = undefined\n ctx.configured = false\n })\n it('will affect getLogger() if configGlobal() is not called', () => {\n createStandardLog({ logLevel: logLevels.planck })\n expect(ctx.gsl?.standardLog.logLevel).toBe(logLevels.planck)\n })\n })\n})\n\ndescribe('createStandardLogForTest()', () => {\n it('returns with memory reporter', () => {\n const { reporter } = createStandardLogForTest()\n expect(reporter.getLogMessageWithLevel()).toBe('')\n })\n\n it('defaults to debug', () => {\n const store = createStandardLogForTest()\n expect(store.logLevel).toBe(logLevels.debug)\n })\n})\n\ndescribe('standardLog.getLogger()', () => {\n it('supports id with alphanumeric and :_-.', () => {\n const sl = createStandardLog()\n sl.getLogger('abcdefghijklmnopqrstuvwxyz:-_.1234567890')\n })\n it('supports id with unicode', () => {\n const sl = createStandardLog()\n sl.getLogger('ミク香港')\n })\n it('supports id with @, \\\\ and /', () => {\n const sl = createStandardLog()\n sl.getLogger('@unional/fixture')\n sl.getLogger(`a\\\\b\\\\c`)\n })\n it.each('`~!#$%^&*()=+|[]{}<>,?'.split(''))('throws if id has unsupported character %s', (char: string) => {\n const sl = createStandardLog()\n a.throws(() => sl.getLogger(char), InvalidId)\n })\n it('throw InvalidId with ssf to the call site', () => {\n const sl = createStandardLog()\n const err = a.throws(() => sl.getLogger('!'), InvalidId)\n\n assertSSF(err, __filename)\n })\n test('id is readonly', () => {\n const sl = createStandardLog()\n const log: any = sl.getLogger('id is readonly')\n a.throws(() => log.id = 'b')\n })\n\n test('get logger with same name gets the same instance', () => {\n const sl = createStandardLog()\n const expected = sl.getLogger('same-inst')\n const actual = sl.getLogger('same-inst')\n expect(actual).toBe(expected)\n })\n\n it('can specify local log level', () => {\n const sl = createStandardLog()\n const log = sl.getLogger('local', { level: logLevels.trace })\n expect(log.level).toBe(logLevels.trace)\n })\n\n test('new logger will get custom level', () => {\n const sl = createStandardLog({ customLevels: { 'to_logger': 1234 } })\n const actual = sl.getLogger('to_logger_logger')\n expect(typeof actual.to_logger).toBe('function')\n })\n\n it('needs to cast Logger when wrapped', () => {\n function wrapper<N extends string = LogMethodNames>(options: StandardLogOptions<N>) {\n const sl = createStandardLog<N>(options)\n const log = sl.getLogger('local')\n expect(log.info).toBeDefined()\n return sl\n }\n\n const sl = wrapper({ customLevels: { 'cust': 123 } })\n const actual = sl.getLogger('c')\n expect(actual.cust).toBeDefined()\n\n // make sure the logger outside also get default log methods\n expect(actual.error).toBeDefined()\n })\n\n describe('log levels', () => {\n async function assertLoggedAtLevel(sl: StandardLogForTest, method: LogMethodNames, level: number) {\n const log = sl.getLogger(method)\n const msg = `should log on level: ${level}`;\n (log as any)[method](msg)\n a.satisfies(sl.reporter.logs, [{ id: method, level: sl.toLogLevel(method), args: [msg] }])\n }\n\n async function assertNotLoggedAtLevel(sl: StandardLogForTest, method: string, level: number) {\n const log = sl.getLogger(method);\n (log as any)[method](`should not log on level: ${level}`)\n expect(sl.reporter.logs.length).toBe(0)\n }\n\n async function assertLoggedAtLocalLevel(sl: StandardLogForTest, method: LogMethodNames, localLevel: number) {\n const log = sl.getLogger(method, { level: localLevel })\n\n const msg = `should log on level: ${localLevel}`;\n (log as any)[method](msg)\n a.satisfies(sl.reporter.logs, [{ id: log.id, level: sl.toLogLevel(method), args: [msg] }])\n }\n\n async function assertNotLoggedAtLocalLevel(sl: StandardLogForTest, method: string, localLevel: number) {\n const log = sl.getLogger(method, { level: localLevel });\n (log as any)[method](`should not log on level: ${localLevel}`)\n expect(sl.reporter.logs.length).toBe(0)\n }\n\n async function assertLoggedAtCallLevel(sl: StandardLogForTest, method: string, callLevel: number) {\n const log = sl.getLogger(method)\n let actual = false\n log.on(callLevel, () => actual = true)\n expect(actual).toBe(true)\n }\n\n async function assertNotLoggedAtCallLevel(sl: StandardLogForTest, method: string, callLevel: number, actualLevel: number) {\n const log = sl.getLogger(method)\n log.on(callLevel, () => { throw new Error(`should not log at level ${actualLevel}`) })\n }\n\n async function assertLoggedAtCallLevelOverrideLocalLevel(sl: StandardLogForTest, method: string, localLevel: number, callLevel: number) {\n const log = sl.getLogger(method, { level: localLevel })\n let actual = false\n log.on(callLevel, () => actual = true)\n expect(actual).toBe(true)\n }\n\n async function assertNotLoggedAtCallLevelOverrideLocalLevel(sl: StandardLogForTest, method: string, localLevel: number, callLevel: number) {\n const log = sl.getLogger(method, { level: localLevel })\n log.on(callLevel, () => { throw new Error(`should not log at level ${localLevel}`) })\n }\n\n const shouldLog = wrapTest((test) => (method: LogMethodNames, level: number) => {\n const sl = createStandardLogForTest(level)\n const name = sl.toLogLevelName(level)\n test(`${method}() should log on level: ${name} (${level})`, () => {\n return assertLoggedAtLevel(sl, method, level)\n })\n })\n const shouldNotLog = wrapTest((test) => (method: string, level: number) => {\n const sl = createStandardLogForTest(level)\n const name = sl.toLogLevelName(level)\n test(`${method}() should not log on level: ${name} (${level})`, () => {\n return assertNotLoggedAtLevel(sl, method, level)\n })\n })\n\n const shouldLogWithLocalLevelOverride = wrapTest((test) => (method: LogMethodNames, localLevel: number) => {\n const localName = toLogLevelName(localLevel);\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertLoggedAtLocalLevel(sl, method, localLevel)\n })\n })\n })\n\n const shouldNotLogWithLocalLevelOverride = wrapTest((test) => (method: string, localLevel: number) => {\n const localName = toLogLevelName(localLevel);\n\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should not log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertNotLoggedAtLocalLevel(sl, method, localLevel)\n })\n })\n })\n\n const shouldCallLogFunction = wrapTest((test) => (callLevel: number, actualLevel: number) => {\n const method = toLogLevelName(callLevel)\n const name = toLogLevelName(actualLevel)\n test(`${method}() should call log function on level: ${name} (${actualLevel})`, () => {\n const sl = createStandardLogForTest(actualLevel)\n return assertLoggedAtCallLevel(sl, method, callLevel)\n })\n })\n\n const shouldNotCallLogFunction = wrapTest((test) => (callLevel: number, actualLevel: number) => {\n const method = toLogLevelName(callLevel)\n const name = toLogLevelName(actualLevel)\n test(`${method}() should not call log function on level: ${name} (${actualLevel})`, () => {\n const sl = createStandardLogForTest(actualLevel)\n return assertNotLoggedAtCallLevel(sl, method, callLevel, actualLevel)\n })\n })\n\n const shouldCallLogFunctionWithLocalLevelOverride = wrapTest((test) => (callLevel: number, localLevel: number) => {\n const method = toLogLevelName(callLevel)\n const localName = toLogLevelName(localLevel);\n\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertLoggedAtCallLevelOverrideLocalLevel(sl, method, localLevel, callLevel)\n })\n })\n })\n\n const shouldNotCallLogFunctionWithLocalLevelOverride = wrapTest((test) => (callLevel: number, localLevel: number) => {\n const method = toLogLevelName(callLevel)\n const localName = toLogLevelName(localLevel);\n\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should not log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertNotLoggedAtCallLevelOverrideLocalLevel(sl, method, localLevel, callLevel)\n })\n })\n })\n\n shouldNotLog('error', logLevels.none)\n shouldLog('error', logLevels.error)\n shouldLog('error', logLevels.warn)\n shouldLog('error', logLevels.info)\n shouldLog('error', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('error', logLevels.none)\n shouldLogWithLocalLevelOverride('error', logLevels.error)\n shouldLogWithLocalLevelOverride('error', logLevels.warn)\n shouldLogWithLocalLevelOverride('error', logLevels.info)\n shouldLogWithLocalLevelOverride('error', logLevels.debug)\n\n shouldNotLog('warn', logLevels.none)\n shouldNotLog('warn', logLevels.error)\n shouldLog('warn', logLevels.warn)\n shouldLog('warn', logLevels.info)\n shouldLog('warn', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('warn', logLevels.none)\n shouldNotLogWithLocalLevelOverride('warn', logLevels.error)\n shouldLogWithLocalLevelOverride('warn', logLevels.warn)\n shouldLogWithLocalLevelOverride('warn', logLevels.info)\n shouldLogWithLocalLevelOverride('warn', logLevels.debug)\n\n shouldNotLog('info', logLevels.none)\n shouldNotLog('info', logLevels.error)\n shouldNotLog('info', logLevels.warn)\n shouldLog('info', logLevels.info)\n shouldLog('info', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('info', logLevels.none)\n shouldNotLogWithLocalLevelOverride('info', logLevels.error)\n shouldNotLogWithLocalLevelOverride('info', logLevels.warn)\n shouldLogWithLocalLevelOverride('info', logLevels.info)\n shouldLogWithLocalLevelOverride('info', logLevels.debug)\n\n shouldNotLog('debug', logLevels.none)\n shouldNotLog('debug', logLevels.error)\n shouldNotLog('debug', logLevels.warn)\n shouldNotLog('debug', logLevels.info)\n shouldLog('debug', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.none)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.error)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.warn)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.info)\n shouldLogWithLocalLevelOverride('debug', logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.error, logLevels.none)\n shouldCallLogFunction(logLevels.error, logLevels.error)\n shouldCallLogFunction(logLevels.error, logLevels.warn)\n shouldCallLogFunction(logLevels.error, logLevels.info)\n shouldCallLogFunction(logLevels.error, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.none)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.error)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.warn)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.warn, logLevels.none)\n shouldNotCallLogFunction(logLevels.warn, logLevels.error)\n shouldCallLogFunction(logLevels.warn, logLevels.warn)\n shouldCallLogFunction(logLevels.warn, logLevels.info)\n shouldCallLogFunction(logLevels.warn, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.none)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.error)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.warn)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.info, logLevels.none)\n shouldNotCallLogFunction(logLevels.info, logLevels.error)\n shouldNotCallLogFunction(logLevels.info, logLevels.warn)\n shouldCallLogFunction(logLevels.info, logLevels.info)\n shouldCallLogFunction(logLevels.info, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.none)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.error)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.warn)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.debug, logLevels.none)\n shouldNotCallLogFunction(logLevels.debug, logLevels.error)\n shouldNotCallLogFunction(logLevels.debug, logLevels.warn)\n shouldNotCallLogFunction(logLevels.debug, logLevels.info)\n shouldCallLogFunction(logLevels.debug, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.none)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.error)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.warn)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.debug)\n })\n\n it('writes entry directly', () => {\n const sl = createStandardLogForTest()\n const log = sl.getLogger('write-entry')\n const entry = { id: 'write-entry', level: logLevels.info, args: ['abc'], timestamp: new Date() }\n log.write(entry)\n a.satisfies(sl.reporter.logs, [entry])\n })\n test.each(['on', 'count', 'error', 'warn', 'info', 'debug'])('method %s is readonly', name => {\n const sl = createStandardLog()\n const log: any = sl.getLogger(`${name} is readonly`)\n\n a.throws(() => log[name] = true)\n })\n\n\n describe('on()', () => {\n it('log using log argument', () => {\n const sl = createStandardLogForTest()\n const logger = sl.getLogger('log on fn')\n logger.on('error', log => { log('value') })\n\n a.satisfies(sl.reporter.logs, [\n { id: 'log on fn', level: logLevels.error, args: ['value'] }\n ])\n })\n it('can take log level name in first argument', () => {\n const sl = createStandardLogForTest()\n const log = sl.getLogger('string-on')\n log.on('debug', () => { return })\n })\n })\n describe('count()', () => {\n test('will increment the counter', async () => {\n const sl = createStandardLogForTest()\n const logger = sl.getLogger('inc counter')\n\n logger.count()\n logger.count()\n\n a.satisfies(sl.reporter.logs, [\n { id: 'inc counter', level: logLevels.debug, args: [1] },\n { id: 'inc counter', level: logLevels.debug, args: [2] }\n ])\n })\n\n test('append args after the counter', async () => {\n const sl = createStandardLogForTest(logLevels.debug)\n const id = 'inc with args'\n const logger = sl.getLogger(id)\n logger.count('msg1', 'msg2')\n\n a.satisfies(sl.reporter.logs, [\n { id, level: logLevels.debug, args: [1, 'msg1', 'msg2'] }\n ])\n })\n\n test('not log if log level is less than debug', async () => {\n const sl = createStandardLogForTest(logLevels.debug - 1)\n const id = 'inc with args'\n const logger = sl.getLogger(id)\n logger.count('msg1', 'msg2')\n\n expect(sl.reporter.logs.length).toBe(0)\n })\n })\n\n test('logger with custom level', async () => {\n const mem = createMemoryLogReporter()\n const sl = createStandardLog({ customLevels: { 'cust_lvl': 100 }, reporters: [mem] })\n const logger = sl.getLogger('cust')\n logger.cust_lvl('a', 'b')\n\n a.satisfies(mem.logs, [{ id: 'cust', level: 100, args: ['a', 'b'] }])\n })\n\n describe('getLogger([,{ writeTo }])', () => {\n function testWriteTo(\n id: string, options: LoggerOptions,\n handler: (log: Logger, memLogs: LogEntry[], specialLogs: LogEntry[], sl: StandardLog) => void\n ) {\n const memReporter = createMemoryLogReporter()\n const specialReporter = createMemoryLogReporter({ id: 'special' })\n const sl = createStandardLog({ reporters: [memReporter, specialReporter] })\n\n const log = sl.getLogger(id, options)\n handler(log, memReporter.logs, specialReporter.logs, sl)\n }\n it('can specify which reporter to use by name', () => {\n testWriteTo('writeTo-string', { writeTo: 'special' }, (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify which reporter to use by regex', () => {\n testWriteTo('writeTo-regex', { writeTo: /^spec/ }, (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify which reporter to use by RegExp', () => {\n testWriteTo('writeTo-RegExp', { writeTo: new RegExp('^spec') }, (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify which reporter to use by function', () => {\n testWriteTo('writeTo-fn', { writeTo: id => id === 'special' },\n (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify custom reporter', () => {\n const reporter = createMemoryLogReporter({ id: 'custom mem' })\n testWriteTo('writeTo-reporter', { writeTo: reporter },\n (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(0)\n expect(reporter.logs.length).toEqual(1)\n })\n })\n\n test('the custom console reporter cannot pick up logs from other loggers', () => {\n // if not, it would be a security issue as the new reporter\n // can capture the logs from other logger and send it elsewhere\n const reporter = createMemoryLogReporter({ id: 'custom mem' })\n testWriteTo('writeTo-reporter-no-override', { writeTo: reporter },\n (_, memLogs, specialLogs, sl) => {\n const log = sl.getLogger('writeTo-reporter-no-override-2')\n log.error('error message')\n\n expect(reporter.logs.length).toEqual(0)\n })\n })\n })\n})\n\ndescribe('suppressLogs()', () => {\n test('suppress log', () => {\n const sl = createStandardLogForTest()\n const log = sl.getLogger('l')\n suppressLogs(() => {\n log.alert('should not see me')\n }, log)\n\n expect(sl.reporter.getLogMessageWithLevel()).toBe('')\n })\n\n test('suppress multiple logs', () => {\n const sl = createStandardLogForTest()\n const log1 = sl.getLogger('l1')\n const log2 = sl.getLogger('l2')\n suppressLogs(() => {\n log1.alert('should not see me')\n log2.alert('should not see me too')\n }, log1, log2)\n expect(sl.reporter.getLogMessageWithLevel()).toBe('')\n })\n\n test('return block result', () => {\n const sl = createStandardLogForTest()\n const log1 = sl.getLogger('l')\n const log2 = sl.getLogger('l2')\n const a = suppressLogs(() => 1, log1, log2)\n expect(a).toBe(1)\n })\n})\n\ndescribe('getLogger()', () => {\n it('gets a logger that logs to console by default', () => {\n const log = getLogger('default')\n log.info('from global log, expected to be printed')\n })\n it('write to local reporter', () => {\n const reporter = createMemoryLogReporter()\n const log = getLogger('to local reporter', { writeTo: reporter })\n log.warn('hello')\n expect(reporter.logs.length).toBe(1)\n })\n})\n\ndescribe('configGlobal()', () => {\n beforeEach(() => {\n ctx.gsl = undefined\n ctx.configured = false\n })\n\n it('configure the global instance', () => {\n const mem = createMemoryLogReporter()\n configGlobal({ logLevel: logLevels.error, reporters: [mem] })\n\n const log = getLogger('default')\n log.error('error message')\n log.info('info message')\n expect(mem.logs.length).toBe(1)\n })\n\n it('can call after getLogger', () => {\n const log = getLogger('default')\n log.info('from global log, expected to be printed')\n\n const mem = createMemoryLogReporter()\n configGlobal({ logLevel: logLevels.error, reporters: [mem] })\n log.error('from global log, expected to be printed')\n log.info('from global log, this should not be printed')\n expect(mem.logs.length).toBe(1)\n })\n\n it('will emit a warning when called twice', () => {\n const mem = createMemoryLogReporter()\n configGlobal({ reporters: [mem] })\n configGlobal({ reporters: [] })\n a.satisfies(mem.logs, [{ id: 'standard-log', level: logLevels.warn, args: [/being called more than once/] }])\n })\n\n it('remove existing reporter', () => {\n const log = getLogger('default')\n log.info('from global log, expected to be printed')\n\n const mem = createMemoryLogReporter()\n configGlobal({ logLevel: logLevels.error, reporters: [mem] })\n\n const reporters = ctx.gsl?.store.reporters\n expect(reporters).toEqual([mem])\n })\n})\n"]}
|
|
1
|
+
{"version":3,"file":"standardLog.spec.js","sourceRoot":"","sources":["../ts/standardLog.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { assertron as a } from 'assertron'\nimport { InvalidId } from './errors.js'\nimport { createStandardLog, createStandardLogForTest, getLogger, StandardLog, suppressLogs } from './index.js'\nimport { logLevels, toLogLevelName } from './logLevels.js'\nimport { createMemoryLogReporter } from './memory.js'\nimport { configGlobal, ctx, StandardLogForTest } from './standardLog.js'\nimport { assertSSF, wrapTest } from './testUtil.js'\nimport { LogEntry, Logger, LoggerOptions, LogMethodNames, StandardLogOptions } from './types.js'\n\ndescribe('createStandardLog()', () => {\n describe('logLevel', () => {\n it('is default to info', () => {\n const actual = createStandardLog()\n expect(actual.logLevel).toBe(logLevels.info)\n })\n it('is readonly', () => {\n const actual = createStandardLog()\n a.throws(() => (actual as any).logLevel = logLevels.planck, err => /only a getter/.test(err))\n })\n it('set logLevel from options', () => {\n const actual = createStandardLog({ logLevel: logLevels.planck })\n expect(actual.logLevel).toBe(logLevels.planck)\n })\n })\n\n describe('custom levels', () => {\n it('can define custom levels', () => {\n const actual = createStandardLog({ customLevels: { urgent: 80 } })\n\n expect(actual.toLogLevelName(80)).toBe('urgent')\n })\n })\n\n describe('reporters', () => {\n it('can specify reporter', () => {\n const mem = createMemoryLogReporter()\n const sl = createStandardLog({ reporters: [mem] })\n const log = sl.getLogger('x')\n log.info('abc')\n expect(mem.logs.length).toBe(1)\n })\n })\n\n describe('related to global', () => {\n beforeEach(() => {\n ctx.gsl = undefined\n ctx.configured = false\n })\n it('will affect getLogger() if configGlobal() is not called', () => {\n createStandardLog({ logLevel: logLevels.planck })\n expect(ctx.gsl?.standardLog.logLevel).toBe(logLevels.planck)\n })\n })\n})\n\ndescribe('createStandardLogForTest()', () => {\n it('returns with memory reporter', () => {\n const { reporter } = createStandardLogForTest()\n expect(reporter.getLogMessageWithLevel()).toBe('')\n })\n\n it('defaults to debug', () => {\n const store = createStandardLogForTest()\n expect(store.logLevel).toBe(logLevels.debug)\n })\n})\n\ndescribe('standardLog.getLogger()', () => {\n /**\n * The logger id does not allow all characters due to security concerns.\n * Since we have no control over where the logs will be written to,\n * the could be a case that the ID is being used to exploit those environment.\n * So keeping the supported characters in sane way helps mitigates the risk.\n */\n it('supports id with alphanumeric and :_-.', () => {\n const sl = createStandardLog()\n sl.getLogger('abcdefghijklmnopqrstuvwxyz:-_.1234567890')\n })\n it('supports id with unicode', () => {\n const sl = createStandardLog()\n sl.getLogger('ミク香港')\n })\n it('supports id with @, \\\\ and /', () => {\n const sl = createStandardLog()\n sl.getLogger('@unional/fixture')\n sl.getLogger(`a\\\\b\\\\c`)\n })\n it('supports id with space', () => {\n const sl = createStandardLog()\n sl.getLogger('hello world')\n })\n it.each('`~!#$%^&*()=+|[]{}<>,?'.split(''))('throws if id has unsupported character %s', (char: string) => {\n const sl = createStandardLog()\n a.throws(() => sl.getLogger(char), InvalidId)\n })\n it('throw InvalidId with ssf to the call site', () => {\n const sl = createStandardLog()\n const err = a.throws(() => sl.getLogger('!'), InvalidId)\n\n assertSSF(err, __filename)\n })\n test('id is readonly', () => {\n const sl = createStandardLog()\n const log: any = sl.getLogger('id is readonly')\n a.throws(() => log.id = 'b')\n })\n\n test('get logger with same name gets the same instance', () => {\n const sl = createStandardLog()\n const expected = sl.getLogger('same-inst')\n const actual = sl.getLogger('same-inst')\n expect(actual).toBe(expected)\n })\n\n it('can specify local log level', () => {\n const sl = createStandardLog()\n const log = sl.getLogger('local', { level: logLevels.trace })\n expect(log.level).toBe(logLevels.trace)\n })\n\n test('new logger will get custom level', () => {\n const sl = createStandardLog({ customLevels: { 'to_logger': 1234 } })\n const actual = sl.getLogger('to_logger_logger')\n expect(typeof actual.to_logger).toBe('function')\n })\n\n it('needs to cast Logger when wrapped', () => {\n function wrapper<N extends string = LogMethodNames>(options: StandardLogOptions<N>) {\n const sl = createStandardLog<N>(options)\n const log = sl.getLogger('local')\n expect(log.info).toBeDefined()\n return sl\n }\n\n const sl = wrapper({ customLevels: { 'cust': 123 } })\n const actual = sl.getLogger('c')\n expect(actual.cust).toBeDefined()\n\n // make sure the logger outside also get default log methods\n expect(actual.error).toBeDefined()\n })\n\n describe('log levels', () => {\n async function assertLoggedAtLevel(sl: StandardLogForTest, method: LogMethodNames, level: number) {\n const log = sl.getLogger(method)\n const msg = `should log on level: ${level}`;\n (log as any)[method](msg)\n a.satisfies(sl.reporter.logs, [{ id: method, level: sl.toLogLevel(method), args: [msg] }])\n }\n\n async function assertNotLoggedAtLevel(sl: StandardLogForTest, method: string, level: number) {\n const log = sl.getLogger(method);\n (log as any)[method](`should not log on level: ${level}`)\n expect(sl.reporter.logs.length).toBe(0)\n }\n\n async function assertLoggedAtLocalLevel(sl: StandardLogForTest, method: LogMethodNames, localLevel: number) {\n const log = sl.getLogger(method, { level: localLevel })\n\n const msg = `should log on level: ${localLevel}`;\n (log as any)[method](msg)\n a.satisfies(sl.reporter.logs, [{ id: log.id, level: sl.toLogLevel(method), args: [msg] }])\n }\n\n async function assertNotLoggedAtLocalLevel(sl: StandardLogForTest, method: string, localLevel: number) {\n const log = sl.getLogger(method, { level: localLevel });\n (log as any)[method](`should not log on level: ${localLevel}`)\n expect(sl.reporter.logs.length).toBe(0)\n }\n\n async function assertLoggedAtCallLevel(sl: StandardLogForTest, method: string, callLevel: number) {\n const log = sl.getLogger(method)\n let actual = false\n log.on(callLevel, () => actual = true)\n expect(actual).toBe(true)\n }\n\n async function assertNotLoggedAtCallLevel(sl: StandardLogForTest, method: string, callLevel: number, actualLevel: number) {\n const log = sl.getLogger(method)\n log.on(callLevel, () => { throw new Error(`should not log at level ${actualLevel}`) })\n }\n\n async function assertLoggedAtCallLevelOverrideLocalLevel(sl: StandardLogForTest, method: string, localLevel: number, callLevel: number) {\n const log = sl.getLogger(method, { level: localLevel })\n let actual = false\n log.on(callLevel, () => actual = true)\n expect(actual).toBe(true)\n }\n\n async function assertNotLoggedAtCallLevelOverrideLocalLevel(sl: StandardLogForTest, method: string, localLevel: number, callLevel: number) {\n const log = sl.getLogger(method, { level: localLevel })\n log.on(callLevel, () => { throw new Error(`should not log at level ${localLevel}`) })\n }\n\n const shouldLog = wrapTest((test) => (method: LogMethodNames, level: number) => {\n const sl = createStandardLogForTest(level)\n const name = sl.toLogLevelName(level)\n test(`${method}() should log on level: ${name} (${level})`, () => {\n return assertLoggedAtLevel(sl, method, level)\n })\n })\n const shouldNotLog = wrapTest((test) => (method: string, level: number) => {\n const sl = createStandardLogForTest(level)\n const name = sl.toLogLevelName(level)\n test(`${method}() should not log on level: ${name} (${level})`, () => {\n return assertNotLoggedAtLevel(sl, method, level)\n })\n })\n\n const shouldLogWithLocalLevelOverride = wrapTest((test) => (method: LogMethodNames, localLevel: number) => {\n const localName = toLogLevelName(localLevel);\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertLoggedAtLocalLevel(sl, method, localLevel)\n })\n })\n })\n\n const shouldNotLogWithLocalLevelOverride = wrapTest((test) => (method: string, localLevel: number) => {\n const localName = toLogLevelName(localLevel);\n\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should not log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertNotLoggedAtLocalLevel(sl, method, localLevel)\n })\n })\n })\n\n const shouldCallLogFunction = wrapTest((test) => (callLevel: number, actualLevel: number) => {\n const method = toLogLevelName(callLevel)\n const name = toLogLevelName(actualLevel)\n test(`${method}() should call log function on level: ${name} (${actualLevel})`, () => {\n const sl = createStandardLogForTest(actualLevel)\n return assertLoggedAtCallLevel(sl, method, callLevel)\n })\n })\n\n const shouldNotCallLogFunction = wrapTest((test) => (callLevel: number, actualLevel: number) => {\n const method = toLogLevelName(callLevel)\n const name = toLogLevelName(actualLevel)\n test(`${method}() should not call log function on level: ${name} (${actualLevel})`, () => {\n const sl = createStandardLogForTest(actualLevel)\n return assertNotLoggedAtCallLevel(sl, method, callLevel, actualLevel)\n })\n })\n\n const shouldCallLogFunctionWithLocalLevelOverride = wrapTest((test) => (callLevel: number, localLevel: number) => {\n const method = toLogLevelName(callLevel)\n const localName = toLogLevelName(localLevel);\n\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertLoggedAtCallLevelOverrideLocalLevel(sl, method, localLevel, callLevel)\n })\n })\n })\n\n const shouldNotCallLogFunctionWithLocalLevelOverride = wrapTest((test) => (callLevel: number, localLevel: number) => {\n const method = toLogLevelName(callLevel)\n const localName = toLogLevelName(localLevel);\n\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should not log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertNotLoggedAtCallLevelOverrideLocalLevel(sl, method, localLevel, callLevel)\n })\n })\n })\n\n shouldNotLog('error', logLevels.none)\n shouldLog('error', logLevels.error)\n shouldLog('error', logLevels.warn)\n shouldLog('error', logLevels.info)\n shouldLog('error', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('error', logLevels.none)\n shouldLogWithLocalLevelOverride('error', logLevels.error)\n shouldLogWithLocalLevelOverride('error', logLevels.warn)\n shouldLogWithLocalLevelOverride('error', logLevels.info)\n shouldLogWithLocalLevelOverride('error', logLevels.debug)\n\n shouldNotLog('warn', logLevels.none)\n shouldNotLog('warn', logLevels.error)\n shouldLog('warn', logLevels.warn)\n shouldLog('warn', logLevels.info)\n shouldLog('warn', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('warn', logLevels.none)\n shouldNotLogWithLocalLevelOverride('warn', logLevels.error)\n shouldLogWithLocalLevelOverride('warn', logLevels.warn)\n shouldLogWithLocalLevelOverride('warn', logLevels.info)\n shouldLogWithLocalLevelOverride('warn', logLevels.debug)\n\n shouldNotLog('info', logLevels.none)\n shouldNotLog('info', logLevels.error)\n shouldNotLog('info', logLevels.warn)\n shouldLog('info', logLevels.info)\n shouldLog('info', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('info', logLevels.none)\n shouldNotLogWithLocalLevelOverride('info', logLevels.error)\n shouldNotLogWithLocalLevelOverride('info', logLevels.warn)\n shouldLogWithLocalLevelOverride('info', logLevels.info)\n shouldLogWithLocalLevelOverride('info', logLevels.debug)\n\n shouldNotLog('debug', logLevels.none)\n shouldNotLog('debug', logLevels.error)\n shouldNotLog('debug', logLevels.warn)\n shouldNotLog('debug', logLevels.info)\n shouldLog('debug', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.none)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.error)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.warn)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.info)\n shouldLogWithLocalLevelOverride('debug', logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.error, logLevels.none)\n shouldCallLogFunction(logLevels.error, logLevels.error)\n shouldCallLogFunction(logLevels.error, logLevels.warn)\n shouldCallLogFunction(logLevels.error, logLevels.info)\n shouldCallLogFunction(logLevels.error, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.none)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.error)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.warn)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.warn, logLevels.none)\n shouldNotCallLogFunction(logLevels.warn, logLevels.error)\n shouldCallLogFunction(logLevels.warn, logLevels.warn)\n shouldCallLogFunction(logLevels.warn, logLevels.info)\n shouldCallLogFunction(logLevels.warn, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.none)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.error)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.warn)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.info, logLevels.none)\n shouldNotCallLogFunction(logLevels.info, logLevels.error)\n shouldNotCallLogFunction(logLevels.info, logLevels.warn)\n shouldCallLogFunction(logLevels.info, logLevels.info)\n shouldCallLogFunction(logLevels.info, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.none)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.error)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.warn)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.debug, logLevels.none)\n shouldNotCallLogFunction(logLevels.debug, logLevels.error)\n shouldNotCallLogFunction(logLevels.debug, logLevels.warn)\n shouldNotCallLogFunction(logLevels.debug, logLevels.info)\n shouldCallLogFunction(logLevels.debug, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.none)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.error)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.warn)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.debug)\n })\n\n it('writes entry directly', () => {\n const sl = createStandardLogForTest()\n const log = sl.getLogger('write-entry')\n const entry = { id: 'write-entry', level: logLevels.info, args: ['abc'], timestamp: new Date() }\n log.write(entry)\n a.satisfies(sl.reporter.logs, [entry])\n })\n test.each(['on', 'count', 'error', 'warn', 'info', 'debug'])('method %s is readonly', name => {\n const sl = createStandardLog()\n const log: any = sl.getLogger(`${name} is readonly`)\n\n a.throws(() => log[name] = true)\n })\n\n\n describe('on()', () => {\n it('log using log argument', () => {\n const sl = createStandardLogForTest()\n const logger = sl.getLogger('log on fn')\n logger.on('error', log => { log('value') })\n\n a.satisfies(sl.reporter.logs, [\n { id: 'log on fn', level: logLevels.error, args: ['value'] }\n ])\n })\n it('can take log level name in first argument', () => {\n const sl = createStandardLogForTest()\n const log = sl.getLogger('string-on')\n log.on('debug', () => { return })\n })\n })\n describe('count()', () => {\n test('will increment the counter', async () => {\n const sl = createStandardLogForTest()\n const logger = sl.getLogger('inc counter')\n\n logger.count()\n logger.count()\n\n a.satisfies(sl.reporter.logs, [\n { id: 'inc counter', level: logLevels.debug, args: [1] },\n { id: 'inc counter', level: logLevels.debug, args: [2] }\n ])\n })\n\n test('append args after the counter', async () => {\n const sl = createStandardLogForTest(logLevels.debug)\n const id = 'inc with args'\n const logger = sl.getLogger(id)\n logger.count('msg1', 'msg2')\n\n a.satisfies(sl.reporter.logs, [\n { id, level: logLevels.debug, args: [1, 'msg1', 'msg2'] }\n ])\n })\n\n test('not log if log level is less than debug', async () => {\n const sl = createStandardLogForTest(logLevels.debug - 1)\n const id = 'inc with args'\n const logger = sl.getLogger(id)\n logger.count('msg1', 'msg2')\n\n expect(sl.reporter.logs.length).toBe(0)\n })\n })\n\n test('logger with custom level', async () => {\n const mem = createMemoryLogReporter()\n const sl = createStandardLog({ customLevels: { 'cust_lvl': 100 }, reporters: [mem] })\n const logger = sl.getLogger('cust')\n logger.cust_lvl('a', 'b')\n\n a.satisfies(mem.logs, [{ id: 'cust', level: 100, args: ['a', 'b'] }])\n })\n\n describe('getLogger([,{ writeTo }])', () => {\n function testWriteTo(\n id: string, options: LoggerOptions,\n handler: (log: Logger, memLogs: LogEntry[], specialLogs: LogEntry[], sl: StandardLog) => void\n ) {\n const memReporter = createMemoryLogReporter()\n const specialReporter = createMemoryLogReporter({ id: 'special' })\n const sl = createStandardLog({ reporters: [memReporter, specialReporter] })\n\n const log = sl.getLogger(id, options)\n handler(log, memReporter.logs, specialReporter.logs, sl)\n }\n it('can specify which reporter to use by name', () => {\n testWriteTo('writeTo-string', { writeTo: 'special' }, (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify which reporter to use by regex', () => {\n testWriteTo('writeTo-regex', { writeTo: /^spec/ }, (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify which reporter to use by RegExp', () => {\n testWriteTo('writeTo-RegExp', { writeTo: new RegExp('^spec') }, (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify which reporter to use by function', () => {\n testWriteTo('writeTo-fn', { writeTo: id => id === 'special' },\n (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify custom reporter', () => {\n const reporter = createMemoryLogReporter({ id: 'custom mem' })\n testWriteTo('writeTo-reporter', { writeTo: reporter },\n (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(0)\n expect(reporter.logs.length).toEqual(1)\n })\n })\n\n test('the custom console reporter cannot pick up logs from other loggers', () => {\n // if not, it would be a security issue as the new reporter\n // can capture the logs from other logger and send it elsewhere\n const reporter = createMemoryLogReporter({ id: 'custom mem' })\n testWriteTo('writeTo-reporter-no-override', { writeTo: reporter },\n (_, memLogs, specialLogs, sl) => {\n const log = sl.getLogger('writeTo-reporter-no-override-2')\n log.error('error message')\n\n expect(reporter.logs.length).toEqual(0)\n })\n })\n })\n})\n\ndescribe('suppressLogs()', () => {\n test('suppress log', () => {\n const sl = createStandardLogForTest()\n const log = sl.getLogger('l')\n suppressLogs(() => {\n log.alert('should not see me')\n }, log)\n\n expect(sl.reporter.getLogMessageWithLevel()).toBe('')\n })\n\n test('suppress multiple logs', () => {\n const sl = createStandardLogForTest()\n const log1 = sl.getLogger('l1')\n const log2 = sl.getLogger('l2')\n suppressLogs(() => {\n log1.alert('should not see me')\n log2.alert('should not see me too')\n }, log1, log2)\n expect(sl.reporter.getLogMessageWithLevel()).toBe('')\n })\n\n test('return block result', () => {\n const sl = createStandardLogForTest()\n const log1 = sl.getLogger('l')\n const log2 = sl.getLogger('l2')\n const a = suppressLogs(() => 1, log1, log2)\n expect(a).toBe(1)\n })\n})\n\ndescribe('getLogger()', () => {\n it('gets a logger that logs to console by default', () => {\n const log = getLogger('default')\n log.info('from global log, expected to be printed')\n })\n it('write to local reporter', () => {\n const reporter = createMemoryLogReporter()\n const log = getLogger('to local reporter', { writeTo: reporter })\n log.warn('hello')\n expect(reporter.logs.length).toBe(1)\n })\n})\n\ndescribe('configGlobal()', () => {\n beforeEach(() => {\n ctx.gsl = undefined\n ctx.configured = false\n })\n\n it('configure the global instance', () => {\n const mem = createMemoryLogReporter()\n configGlobal({ logLevel: logLevels.error, reporters: [mem] })\n\n const log = getLogger('default')\n log.error('error message')\n log.info('info message')\n expect(mem.logs.length).toBe(1)\n })\n\n it('can call after getLogger', () => {\n const log = getLogger('default')\n log.info('from global log, expected to be printed')\n\n const mem = createMemoryLogReporter()\n configGlobal({ logLevel: logLevels.error, reporters: [mem] })\n log.error('from global log, expected to be printed')\n log.info('from global log, this should not be printed')\n expect(mem.logs.length).toBe(1)\n })\n\n it('will emit a warning when called twice', () => {\n const mem = createMemoryLogReporter()\n configGlobal({ reporters: [mem] })\n configGlobal({ reporters: [] })\n a.satisfies(mem.logs, [{ id: 'standard-log', level: logLevels.warn, args: [/being called more than once/] }])\n })\n\n it('remove existing reporter', () => {\n const log = getLogger('default')\n log.info('from global log, expected to be printed')\n\n const mem = createMemoryLogReporter()\n configGlobal({ logLevel: logLevels.error, reporters: [mem] })\n\n const reporters = ctx.gsl?.store.reporters\n expect(reporters).toEqual([mem])\n })\n})\n"]}
|
package/dist/standard-log.es5.js
CHANGED
|
@@ -6068,7 +6068,7 @@ __exportStar(__webpack_require__(/*! ./types.js */ "./ts/types.ts"), exports);
|
|
|
6068
6068
|
"use strict";
|
|
6069
6069
|
|
|
6070
6070
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
6071
|
-
exports.toLogLevel = exports.toLogLevelName = exports.logLevels = void 0;
|
|
6071
|
+
exports.DEFAULT_LOG_METHOD_NAMES = exports.toLogLevel = exports.toLogLevelName = exports.logLevels = void 0;
|
|
6072
6072
|
exports.logLevels = {
|
|
6073
6073
|
/**
|
|
6074
6074
|
* none: 0
|
|
@@ -6152,6 +6152,18 @@ function toLogLevel(name) {
|
|
|
6152
6152
|
return exports.logLevels[name.toLocaleLowerCase()];
|
|
6153
6153
|
}
|
|
6154
6154
|
exports.toLogLevel = toLogLevel;
|
|
6155
|
+
exports.DEFAULT_LOG_METHOD_NAMES = [
|
|
6156
|
+
'emergency',
|
|
6157
|
+
'alert',
|
|
6158
|
+
'critical',
|
|
6159
|
+
'error',
|
|
6160
|
+
'warn',
|
|
6161
|
+
'notice',
|
|
6162
|
+
'info',
|
|
6163
|
+
'debug',
|
|
6164
|
+
'trace',
|
|
6165
|
+
'planck'
|
|
6166
|
+
];
|
|
6155
6167
|
|
|
6156
6168
|
|
|
6157
6169
|
/***/ }),
|
|
Binary file
|