standard-log 10.0.0 → 10.1.0
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 +2 -3
- package/cjs/memory.d.ts +1 -0
- package/cjs/memory.d.ts.map +1 -1
- package/cjs/memory.js +4 -2
- package/cjs/memory.js.map +1 -1
- package/cjs/memory.spec.js +61 -49
- package/cjs/memory.spec.js.map +1 -1
- package/cjs/standardLog.js +1 -2
- package/cjs/standardLog.js.map +1 -1
- package/cjs/standardLog.spec.js +9 -0
- package/cjs/standardLog.spec.js.map +1 -1
- package/dist/standard-log.es5.js +5 -4
- 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 +5 -4
- 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/memory.d.ts +1 -0
- package/esm/memory.d.ts.map +1 -1
- package/esm/memory.js +4 -2
- package/esm/memory.js.map +1 -1
- package/esm/memory.spec.js +63 -51
- package/esm/memory.spec.js.map +1 -1
- package/esm/standardLog.js +1 -2
- package/esm/standardLog.js.map +1 -1
- package/esm/standardLog.spec.js +9 -0
- package/esm/standardLog.spec.js.map +1 -1
- package/package.json +1 -1
- package/ts/memory.ts +4 -1
- package/ts/standardLog.ts +1 -1
package/esm/memory.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.spec.js","sourceRoot":"","sources":["../ts/memory.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import a from 'assertron'\nimport { createMemoryLogReporter, LogEntry, LogFilter, LogFormatter, logLevels } from './index.js'\nimport { assertSSF, logEntriesToString } from './testUtil.js'\n\ndescribe('MemoryLogReporter', () => {\n it('filter is readonly', () => {\n const reporter = createMemoryLogReporter()\n const err = a.throws(() => { (reporter as any).filter = () => true }, err => /only a getter/.test(err))\n\n assertSSF(err, __filename)\n })\n\n describe('unit tests', () => {\n test('log entries are saved in the `logs` property', () => {\n const reporter = createMemoryLogReporter()\n const entry = { id: 'log', level: 1, args: ['some messages'], timestamp: new Date() }\n reporter.write(entry)\n expect(reporter.logs).toEqual([entry])\n })\n\n test('can override id', () => {\n const reporter = createMemoryLogReporter({ id: 'custom-id-mem' })\n expect(reporter.id).toBe('custom-id-mem')\n })\n\n test('can filter', () => {\n const filter: LogFilter = (entry) => entry.id !== 'secret'\n const reporter = createMemoryLogReporter({ filter })\n expect(reporter.filter).toBe(filter)\n reporter.write({ id: 'ok', level: 1, args: ['some messages'], timestamp: new Date() })\n reporter.write({ id: 'secret', level: 1, args: ['some messages'], timestamp: new Date() })\n expect(reporter.logs.length).toBe(1)\n })\n\n test('formatter can be used to pre-process the log', () => {\n const formatter: LogFormatter<LogEntry> = (entry) => ({\n ...entry,\n args: entry.args.map(arg => arg === 'secret' ? '<censored>' : arg)\n })\n const reporter = createMemoryLogReporter({ formatter })\n expect(reporter.formatter).toBe(formatter)\n\n const entry = { id: 'log', level: 1, args: ['a', 'secret', 'b'], timestamp: new Date() }\n reporter.write(entry)\n\n expect(reporter.logs[0].args[1]).toBe('<censored>')\n })\n\n describe('getLogMessages()', () => {\n test('empty logs returns empty string', () => {\n const reporter = createMemoryLogReporter()\n\n expect(reporter.getLogMessage()).toEqual('')\n })\n\n test('print args', () => {\n const reporter = createMemoryLogReporter()\n const entry = { id: 'log', level: 1, args: ['miku', 'is', 'singing'], timestamp: new Date() }\n reporter.write(entry)\n expect(reporter.getLogMessage()).toEqual('miku is singing')\n })\n\n test('print object arg', () => {\n const reporter = createMemoryLogReporter()\n const entry = { id: 'log', level: 1, args: [{ 'miku': 'sing' }], timestamp: new Date() }\n reporter.write(entry)\n expect(reporter.getLogMessage()).toEqual(\"{ miku: 'sing' }\")\n })\n })\n\n describe('getLogMessageWithLevel', () => {\n test('print with level', () => {\n const reporter = createMemoryLogReporter()\n reporter.write({ id: 'log', level: logLevels.info, args: ['msg 1'], timestamp: new Date() })\n reporter.write({ id: 'log', level: logLevels.warn, args: ['msg 2'], timestamp: new Date() })\n expect(reporter.getLogMessageWithLevel()).toEqual(`(INFO) msg 1\\n(WARN) msg 2`)\n })\n })\n })\n})\n\ndescribe('logEntriesToString()', () => {\n test('convert log entries to string', () => {\n const timestamp = new Date(2019, 6)\n const actual = logEntriesToString([\n { id: 'log', level: logLevels.emergency, args: ['emergency'], timestamp },\n { id: 'log', level: logLevels.critical, args: ['critical'], timestamp },\n { id: 'log', level: logLevels.alert, args: ['alert'], timestamp },\n { id: 'log', level: logLevels.error, args: ['error'], timestamp },\n { id: 'log', level: logLevels.warn, args: ['warn'], timestamp },\n { id: 'log', level: logLevels.notice, args: ['notice'], timestamp },\n { id: 'log', level: logLevels.info, args: ['info'], timestamp },\n { id: 'log', level: logLevels.debug, args: ['debug'], timestamp },\n { id: 'log', level: logLevels.trace, args: ['trace'], timestamp }\n ])\n\n const iso = timestamp.toISOString()\n expect(actual).toEqual(`${iso},log,(EMERGENCY),emergency\n${iso},log,(CRITICAL),critical\n${iso},log,(ALERT),alert\n${iso},log,(ERROR),error\n${iso},log,(WARN),warn\n${iso},log,(NOTICE),notice\n${iso},log,(INFO),info\n${iso},log,(DEBUG),debug\n${iso},log,(TRACE),trace`)\n })\n\n test('print out object', () => {\n const timestamp = new Date(2021, 4)\n const actual = logEntriesToString([\n { id: 'log', level: logLevels.info, args: ['a', { a: 1 }], timestamp }\n ])\n\n const iso = timestamp.toISOString()\n expect(actual).toEqual(`${iso},log,(INFO),a,{ a: 1 }`)\n })\n\n test('print out array', () => {\n const timestamp = new Date(2021, 4)\n const actual = logEntriesToString([\n { id: 'log', level: logLevels.info, args: ['a', [1, 2, 3]], timestamp }\n ])\n\n const iso = timestamp.toISOString()\n expect(actual).toEqual(`${iso},log,(INFO),a,[ 1, 2, 3 ]`)\n })\n})\n"]}
|
|
1
|
+
{"version":3,"file":"memory.spec.js","sourceRoot":"","sources":["../ts/memory.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import a from 'assertron'\nimport { createMemoryLogReporter, LogEntry, LogFilter, LogFormatter, logLevels } from './index.js'\nimport { assertSSF, logEntriesToString } from './testUtil.js'\n\nconst mikuIsSinging = { id: 'log', level: 1, args: ['miku', 'is', 'singing'], timestamp: new Date() }\nconst lukaIsDancing = { id: 'log', level: 1, args: ['luka', 'is', 'dancing'], timestamp: new Date() }\nconst reporter = createMemoryLogReporter()\n\ndescribe(createMemoryLogReporter.name, () => {\n it('filter is readonly', () => {\n const reporter = createMemoryLogReporter()\n const err = a.throws(() => { (reporter as any).filter = () => true }, err => /only a getter/.test(err))\n\n assertSSF(err, __filename)\n })\n\n test('log entries are saved in the `logs` property', () => {\n const reporter = createMemoryLogReporter()\n const entry = { id: 'log', level: 1, args: ['some messages'], timestamp: new Date() }\n reporter.write(entry)\n expect(reporter.logs).toEqual([entry])\n })\n\n test('can override id', () => {\n const reporter = createMemoryLogReporter({ id: 'custom-id-mem' })\n expect(reporter.id).toBe('custom-id-mem')\n })\n\n test('can filter', () => {\n const filter: LogFilter = (entry) => entry.id !== 'secret'\n const reporter = createMemoryLogReporter({ filter })\n expect(reporter.filter).toBe(filter)\n reporter.write({ id: 'ok', level: 1, args: ['some messages'], timestamp: new Date() })\n reporter.write({ id: 'secret', level: 1, args: ['some messages'], timestamp: new Date() })\n expect(reporter.logs.length).toBe(1)\n })\n\n test('formatter can be used to pre-process the log', () => {\n const formatter: LogFormatter<LogEntry> = (entry) => ({\n ...entry,\n args: entry.args.map(arg => arg === 'secret' ? '<censored>' : arg)\n })\n const reporter = createMemoryLogReporter({ formatter })\n expect(reporter.formatter).toBe(formatter)\n\n const entry = { id: 'log', level: 1, args: ['a', 'secret', 'b'], timestamp: new Date() }\n reporter.write(entry)\n\n expect(reporter.logs[0].args[1]).toBe('<censored>')\n })\n\n describe(reporter.getLogMessages.name, () => {\n it('maps each log entries to string', () => {\n const r = createMemoryLogReporter()\n r.write(mikuIsSinging)\n r.write(lukaIsDancing)\n expect(r.getLogMessages()).toEqual([\n 'miku is singing',\n 'luka is dancing'\n ])\n })\n })\n describe(reporter.getLogMessage.name, () => {\n test('empty logs returns empty string', () => {\n const reporter = createMemoryLogReporter()\n\n expect(reporter.getLogMessage()).toEqual('')\n })\n\n test('print args', () => {\n const reporter = createMemoryLogReporter()\n const entry = { id: 'log', level: 1, args: ['miku', 'is', 'singing'], timestamp: new Date() }\n reporter.write(entry)\n expect(reporter.getLogMessage()).toEqual('miku is singing')\n })\n\n test('print object arg', () => {\n const reporter = createMemoryLogReporter()\n const entry = { id: 'log', level: 1, args: [{ 'miku': 'sing' }], timestamp: new Date() }\n reporter.write(entry)\n expect(reporter.getLogMessage()).toEqual(\"{ miku: 'sing' }\")\n })\n })\n describe(reporter.getLogMessageWithLevel.name, () => {\n test('print with level', () => {\n const reporter = createMemoryLogReporter()\n reporter.write({ id: 'log', level: logLevels.info, args: ['msg 1'], timestamp: new Date() })\n reporter.write({ id: 'log', level: logLevels.warn, args: ['msg 2'], timestamp: new Date() })\n expect(reporter.getLogMessageWithLevel()).toEqual(`(INFO) msg 1\\n(WARN) msg 2`)\n })\n })\n})\n\ndescribe(logEntriesToString.name, () => {\n test('convert log entries to string', () => {\n const timestamp = new Date(2019, 6)\n const actual = logEntriesToString([\n { id: 'log', level: logLevels.emergency, args: ['emergency'], timestamp },\n { id: 'log', level: logLevels.critical, args: ['critical'], timestamp },\n { id: 'log', level: logLevels.alert, args: ['alert'], timestamp },\n { id: 'log', level: logLevels.error, args: ['error'], timestamp },\n { id: 'log', level: logLevels.warn, args: ['warn'], timestamp },\n { id: 'log', level: logLevels.notice, args: ['notice'], timestamp },\n { id: 'log', level: logLevels.info, args: ['info'], timestamp },\n { id: 'log', level: logLevels.debug, args: ['debug'], timestamp },\n { id: 'log', level: logLevels.trace, args: ['trace'], timestamp }\n ])\n\n const iso = timestamp.toISOString()\n expect(actual).toEqual(`${iso},log,(EMERGENCY),emergency\n${iso},log,(CRITICAL),critical\n${iso},log,(ALERT),alert\n${iso},log,(ERROR),error\n${iso},log,(WARN),warn\n${iso},log,(NOTICE),notice\n${iso},log,(INFO),info\n${iso},log,(DEBUG),debug\n${iso},log,(TRACE),trace`)\n })\n\n test('print out object', () => {\n const timestamp = new Date(2021, 4)\n const actual = logEntriesToString([\n { id: 'log', level: logLevels.info, args: ['a', { a: 1 }], timestamp }\n ])\n\n const iso = timestamp.toISOString()\n expect(actual).toEqual(`${iso},log,(INFO),a,{ a: 1 }`)\n })\n\n test('print out array', () => {\n const timestamp = new Date(2021, 4)\n const actual = logEntriesToString([\n { id: 'log', level: logLevels.info, args: ['a', [1, 2, 3]], timestamp }\n ])\n\n const iso = timestamp.toISOString()\n expect(actual).toEqual(`${iso},log,(INFO),a,[ 1, 2, 3 ]`)\n })\n})\n"]}
|
package/esm/standardLog.js
CHANGED
package/esm/standardLog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standardLog.js","sourceRoot":"","sources":["../ts/standardLog.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"standardLog.js","sourceRoot":"","sources":["../ts/standardLog.ts"],"names":[],"mappings":"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","sourcesContent":["import { record, required } from 'type-plus'\nimport { createLogger } from './logger.js'\nimport { logLevels } from './logLevels.js'\nimport { createLogStore, LogStore } from './logStore.js'\nimport { createMemoryLogReporter, MemoryLogReporter } from './memory.js'\nimport type { Logger, LoggerOptions, LogLevel, LogMethodNames, StandardLogOptions } from './types.js'\n\nexport interface StandardLogInstance<N extends string = LogMethodNames> {\n logLevel: number,\n toLogLevelName(level: number): string,\n toLogLevel(name: N): number,\n getLogger(id: string, options?: LoggerOptions): Logger<N | LogMethodNames>\n}\n\nexport interface StandardLog<N extends string = LogMethodNames> extends Readonly<StandardLogInstance<N>> {\n}\n\nexport function createStandardLog<N extends string = LogMethodNames>(\n options?: StandardLogOptions<N>\n): StandardLog<N> {\n const closure = createStandardLogClosure(options)\n if (!ctx.gsl) ctx.gsl = closure as any\n return closure.standardLog\n}\n\nexport function createStandardLogClosure<N extends string = LogMethodNames>(\n options?: StandardLogOptions<N>\n): { store: LogStore, standardLog: StandardLog<N> } {\n const store = createLogStore(required({ logLevel: logLevels.info }, options))\n\n return {\n store,\n standardLog: {\n get logLevel() { return store.logLevel },\n\n toLogLevelName(level: number) {\n return store.logLevelStore.getName(level)\n },\n toLogLevel(name: string) {\n return store.logLevelStore.getLevel(name)\n },\n getLogger(id: string, options?: LoggerOptions) {\n if (store.loggers[id]) return store.loggers[id] as any\n return store.loggers[id] = createLogger(store, id, { ssf: this.getLogger, ...options }) as any\n }\n }\n }\n}\n\nexport type StandardLogForTest<N extends string = LogMethodNames> = StandardLog<N> & { reporter: MemoryLogReporter }\n\nexport function createStandardLogForTest<N extends string = LogMethodNames>(\n logLevel: LogLevel = logLevels.debug\n): StandardLogForTest<N> {\n const reporter = createMemoryLogReporter()\n const standardLog = createStandardLog<N>({ reporters: [reporter], logLevel })\n return { ...standardLog, reporter }\n}\n\n/**\n * Suppress logging within the code block.\n */\nexport function suppressLogs<R>(block: () => R, log: Logger, ...logs: Logger[]): R\nexport function suppressLogs<R>(block: () => R, ...logs: Logger[]): R {\n const origLevels = logs.map(l => l.level)\n logs.forEach(l => l.level = logLevels.none)\n const result = block()\n logs.forEach((l, i) => l.level = origLevels[i])\n return result\n}\n\nexport function getLogger<N extends string = LogMethodNames>(id: string, options?: LoggerOptions) {\n return getGlobalSL<N>().getLogger(id, options)\n}\n\nexport const ctx: {\n configured?: boolean,\n gsl?: { store: LogStore, standardLog: StandardLogInstance<LogMethodNames> }\n} = record()\n\nfunction getGlobalSL<N extends string = LogMethodNames>(): StandardLogInstance<N> {\n if (!ctx.gsl) ctx.gsl = createStandardLogClosure()\n\n return ctx.gsl!.standardLog as StandardLogInstance<N>\n}\n\nexport function configGlobal(options: Omit<StandardLogOptions, 'customLevels'>) {\n if (ctx.configured) {\n const log = ctx.gsl?.standardLog.getLogger('standard-log')\n log?.warn('configGlobal() is being called more than once. Please make sure this is expected. Application should use `createStandardLog()` most of the time.')\n }\n\n if (ctx.gsl) {\n if (options.logLevel) {\n ctx.gsl.store.logLevel = options.logLevel\n }\n if (options.reporters) {\n const reporters = ctx.gsl.store.reporters\n reporters.length = 0\n reporters.push(...options.reporters)\n }\n }\n else {\n ctx.gsl = createStandardLogClosure(options)\n }\n ctx.configured = true\n}\n"]}
|
package/esm/standardLog.spec.js
CHANGED
|
@@ -496,5 +496,14 @@ describe('configGlobal()', () => {
|
|
|
496
496
|
configGlobal({ reporters: [] });
|
|
497
497
|
a.satisfies(mem.logs, [{ id: 'standard-log', level: logLevels.warn, args: [/being called more than once/] }]);
|
|
498
498
|
});
|
|
499
|
+
it('remove existing reporter', () => {
|
|
500
|
+
var _a;
|
|
501
|
+
const log = getLogger('default');
|
|
502
|
+
log.info('from global log, expected to be printed');
|
|
503
|
+
const mem = createMemoryLogReporter();
|
|
504
|
+
configGlobal({ logLevel: logLevels.error, reporters: [mem] });
|
|
505
|
+
const reporters = (_a = ctx.gsl) === null || _a === void 0 ? void 0 : _a.store.reporters;
|
|
506
|
+
expect(reporters).toEqual([mem]);
|
|
507
|
+
});
|
|
499
508
|
});
|
|
500
509
|
//# sourceMappingURL=standardLog.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
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 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 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 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 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"]}
|
|
1
|
+
{"version":3,"file":"standardLog.spec.js","sourceRoot":"","sources":["../ts/standardLog.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,CAAC,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,SAAS,EAAe,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9G,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,GAAG,EAAsB,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGnD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAA;YAClC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;YACrB,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAA;YAClC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAE,MAAc,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAC/F,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;YAChE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,MAAM,MAAM,GAAG,iBAAiB,CAAC,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,GAAG,EAAE;QACzB,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,GAAG,GAAG,uBAAuB,EAAE,CAAA;YACrC,MAAM,EAAE,GAAG,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAClD,MAAM,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,GAAG,EAAE;QACjC,UAAU,CAAC,GAAG,EAAE;YACd,GAAG,CAAC,GAAG,GAAG,SAAS,CAAA;YACnB,GAAG,CAAC,UAAU,GAAG,KAAK,CAAA;QACxB,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;;YACjE,iBAAiB,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;YACjD,MAAM,CAAC,MAAA,GAAG,CAAC,GAAG,0CAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,QAAQ,EAAE,GAAG,wBAAwB,EAAE,CAAA;QAC/C,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,KAAK,GAAG,wBAAwB,EAAE,CAAA;QACxC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAA;QAC9B,EAAE,CAAC,SAAS,CAAC,0CAA0C,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAA;QAC9B,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,GAAG,iBAAiB,EAAE,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,CAAC,IAAY,EAAE,EAAE;QACxG,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAA;QAC9B,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAA;QAExD,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC1B,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAQ,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;QAC/C,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAA;QAC9B,MAAM,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAC1C,MAAM,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,GAAG,EAAE;QACrC,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAA;QAC7D,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,EAAE,GAAG,iBAAiB,CAAC,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QACrE,MAAM,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,GAAG,EAAE;QAC3C,SAAS,OAAO,CAAoC,OAA8B;YAChF,MAAM,EAAE,GAAG,iBAAiB,CAAI,OAAO,CAAC,CAAA;YACxC,MAAM,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,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;QACrD,MAAM,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,GAAG,EAAE;QAC1B,KAAK,UAAU,mBAAmB,CAAC,EAAsB,EAAE,MAAsB,EAAE,KAAa;YAC9F,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YAChC,MAAM,GAAG,GAAG,wBAAwB,KAAK,EAAE,CAAC;YAC3C,GAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAA;YACzB,CAAC,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;QAC5F,CAAC;QAED,KAAK,UAAU,sBAAsB,CAAC,EAAsB,EAAE,MAAc,EAAE,KAAa;YACzF,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAChC,GAAW,CAAC,MAAM,CAAC,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAA;YACzD,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACzC,CAAC;QAED,KAAK,UAAU,wBAAwB,CAAC,EAAsB,EAAE,MAAsB,EAAE,UAAkB;YACxG,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;YAEvD,MAAM,GAAG,GAAG,wBAAwB,UAAU,EAAE,CAAC;YAChD,GAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAA;YACzB,CAAC,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;QAC5F,CAAC;QAED,KAAK,UAAU,2BAA2B,CAAC,EAAsB,EAAE,MAAc,EAAE,UAAkB;YACnG,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YACvD,GAAW,CAAC,MAAM,CAAC,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAA;YAC9D,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACzC,CAAC;QAED,KAAK,UAAU,uBAAuB,CAAC,EAAsB,EAAE,MAAc,EAAE,SAAiB;YAC9F,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YAChC,IAAI,MAAM,GAAG,KAAK,CAAA;YAClB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;QAED,KAAK,UAAU,0BAA0B,CAAC,EAAsB,EAAE,MAAc,EAAE,SAAiB,EAAE,WAAmB;YACtH,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YAChC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,2BAA2B,WAAW,EAAE,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QACxF,CAAC;QAED,KAAK,UAAU,yCAAyC,CAAC,EAAsB,EAAE,MAAc,EAAE,UAAkB,EAAE,SAAiB;YACpI,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;YACvD,IAAI,MAAM,GAAG,KAAK,CAAA;YAClB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;QAED,KAAK,UAAU,4CAA4C,CAAC,EAAsB,EAAE,MAAc,EAAE,UAAkB,EAAE,SAAiB;YACvI,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;YACvD,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QACvF,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAsB,EAAE,KAAa,EAAE,EAAE;YAC7E,MAAM,EAAE,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAA;YAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YACrC,IAAI,CAAC,GAAG,MAAM,2BAA2B,IAAI,KAAK,KAAK,GAAG,EAAE,GAAG,EAAE;gBAC/D,OAAO,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;YAC/C,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAc,EAAE,KAAa,EAAE,EAAE;YACxE,MAAM,EAAE,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAA;YAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YACrC,IAAI,CAAC,GAAG,MAAM,+BAA+B,IAAI,KAAK,KAAK,GAAG,EAAE,GAAG,EAAE;gBACnE,OAAO,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;YAClD,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,MAAM,+BAA+B,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAsB,EAAE,UAAkB,EAAE,EAAE;YACxG,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;YAC7C,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBACvG,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,MAAM,CAAA;gBACxD,IAAI,CAAC,GAAG,MAAM,iCAAiC,SAAS,KAAK,UAAU,yBAAyB,UAAU,KAAK,WAAW,GAAG,EAAE,GAAG,EAAE;oBAClI,MAAM,EAAE,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;oBAChD,OAAO,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;gBACzD,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,MAAM,kCAAkC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAc,EAAE,UAAkB,EAAE,EAAE;YACnG,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;YAE7C,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBACvG,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,MAAM,CAAA;gBACxD,IAAI,CAAC,GAAG,MAAM,qCAAqC,SAAS,KAAK,UAAU,yBAAyB,UAAU,KAAK,WAAW,GAAG,EAAE,GAAG,EAAE;oBACtI,MAAM,EAAE,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;oBAChD,OAAO,2BAA2B,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;gBAC5D,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,MAAM,qBAAqB,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAiB,EAAE,WAAmB,EAAE,EAAE;YAC1F,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;YACxC,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;YACxC,IAAI,CAAC,GAAG,MAAM,yCAAyC,IAAI,KAAK,WAAW,GAAG,EAAE,GAAG,EAAE;gBACnF,MAAM,EAAE,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;gBAChD,OAAO,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;YACvD,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,MAAM,wBAAwB,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAiB,EAAE,WAAmB,EAAE,EAAE;YAC7F,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;YACxC,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;YACxC,IAAI,CAAC,GAAG,MAAM,6CAA6C,IAAI,KAAK,WAAW,GAAG,EAAE,GAAG,EAAE;gBACvF,MAAM,EAAE,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;gBAChD,OAAO,0BAA0B,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;YACvE,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,MAAM,2CAA2C,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAiB,EAAE,UAAkB,EAAE,EAAE;YAC/G,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;YACxC,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;YAE7C,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBACvG,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,MAAM,CAAA;gBACxD,IAAI,CAAC,GAAG,MAAM,iCAAiC,SAAS,KAAK,UAAU,yBAAyB,UAAU,KAAK,WAAW,GAAG,EAAE,GAAG,EAAE;oBAClI,MAAM,EAAE,GAAG,wBAAwB,CAAC,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,CAAC,CAAA;QAEF,MAAM,8CAA8C,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAiB,EAAE,UAAkB,EAAE,EAAE;YAClH,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;YACxC,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;YAE7C,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBACvG,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,MAAM,CAAA;gBACxD,IAAI,CAAC,GAAG,MAAM,qCAAqC,SAAS,KAAK,UAAU,yBAAyB,UAAU,KAAK,WAAW,GAAG,EAAE,GAAG,EAAE;oBACtI,MAAM,EAAE,GAAG,wBAAwB,CAAC,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,CAAC,CAAA;QAEF,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACrC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACnC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAClC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAClC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACnC,kCAAkC,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC3D,+BAA+B,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACzD,+BAA+B,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACxD,+BAA+B,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACxD,+BAA+B,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAEzD,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACpC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACrC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACjC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACjC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAClC,kCAAkC,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC1D,kCAAkC,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAC3D,+BAA+B,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACvD,+BAA+B,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACvD,+BAA+B,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAExD,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACpC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACrC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACpC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACjC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAClC,kCAAkC,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC1D,kCAAkC,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAC3D,kCAAkC,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC1D,+BAA+B,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACvD,+BAA+B,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAExD,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACrC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACtC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACrC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACrC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACnC,kCAAkC,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC3D,kCAAkC,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAC5D,kCAAkC,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC3D,kCAAkC,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC3D,+BAA+B,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAEzD,wBAAwB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACzD,qBAAqB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACvD,qBAAqB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACtD,qBAAqB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACtD,qBAAqB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACvD,8CAA8C,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC/E,2CAA2C,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAC7E,2CAA2C,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC5E,2CAA2C,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC5E,2CAA2C,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAE7E,wBAAwB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACxD,wBAAwB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACzD,qBAAqB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACrD,qBAAqB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACrD,qBAAqB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACtD,8CAA8C,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC9E,8CAA8C,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAC/E,2CAA2C,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC3E,2CAA2C,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC3E,2CAA2C,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAE5E,wBAAwB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACxD,wBAAwB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACzD,wBAAwB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACxD,qBAAqB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACrD,qBAAqB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACtD,8CAA8C,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC9E,8CAA8C,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAC/E,8CAA8C,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC9E,2CAA2C,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC3E,2CAA2C,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAE5E,wBAAwB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACzD,wBAAwB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAC1D,wBAAwB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACzD,wBAAwB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACzD,qBAAqB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACvD,8CAA8C,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC/E,8CAA8C,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAChF,8CAA8C,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC/E,8CAA8C,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC/E,2CAA2C,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;IAC/E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,EAAE,GAAG,wBAAwB,EAAE,CAAA;QACrC,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;QACvC,MAAM,KAAK,GAAG,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,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,CAAC,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,IAAI,CAAC,EAAE;QAC3F,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAQ,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,cAAc,CAAC,CAAA;QAEpD,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAGF,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,EAAE,GAAG,wBAAwB,EAAE,CAAA;YACrC,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;YACxC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;YAE3C,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAC5B,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;aAC7D,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,EAAE,GAAG,wBAAwB,EAAE,CAAA;YACrC,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;YACrC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,OAAM,CAAC,CAAC,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,EAAE,GAAG,wBAAwB,EAAE,CAAA;YACrC,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;YAE1C,MAAM,CAAC,KAAK,EAAE,CAAA;YACd,MAAM,CAAC,KAAK,EAAE,CAAA;YAEd,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAC5B,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;gBACxD,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;aACzD,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,EAAE,GAAG,wBAAwB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YACpD,MAAM,EAAE,GAAG,eAAe,CAAA;YAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;YAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAE5B,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAC5B,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;aAC1D,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,EAAE,GAAG,wBAAwB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YACxD,MAAM,EAAE,GAAG,eAAe,CAAA;YAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;YAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAE5B,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,GAAG,GAAG,uBAAuB,EAAE,CAAA;QACrC,MAAM,EAAE,GAAG,iBAAiB,CAAC,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACrF,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACnC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAEzB,CAAC,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;IACvE,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,SAAS,WAAW,CAClB,EAAU,EAAE,OAAsB,EAClC,OAA6F;YAE7F,MAAM,WAAW,GAAG,uBAAuB,EAAE,CAAA;YAC7C,MAAM,eAAe,GAAG,uBAAuB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;YAClE,MAAM,EAAE,GAAG,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,CAAC,CAAA;YAE3E,MAAM,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,GAAG,EAAE;YACnD,WAAW,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;gBAClF,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,GAAG,EAAE;YACpD,WAAW,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;gBAC/E,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,GAAG,EAAE;YACrD,WAAW,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;gBAC5F,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,GAAG,EAAE;YACvD,WAAW,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,EAAE,EAC3D,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;gBAC5B,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,GAAG,EAAE;YACrC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;YAC9D,WAAW,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EACnD,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;gBAC5B,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,GAAG,EAAE;YAC9E,2DAA2D;YAC3D,+DAA+D;YAC/D,MAAM,QAAQ,GAAG,uBAAuB,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;YAC9D,WAAW,CAAC,8BAA8B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAC/D,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE;gBAC9B,MAAM,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,GAAG,EAAE;IAC9B,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE;QACxB,MAAM,EAAE,GAAG,wBAAwB,EAAE,CAAA;QACrC,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC7B,YAAY,CAAC,GAAG,EAAE;YAChB,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,GAAG,EAAE;QAClC,MAAM,EAAE,GAAG,wBAAwB,EAAE,CAAA;QACrC,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC/B,YAAY,CAAC,GAAG,EAAE;YAChB,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,GAAG,EAAE;QAC/B,MAAM,EAAE,GAAG,wBAAwB,EAAE,CAAA;QACrC,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,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,GAAG,EAAE;IAC3B,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;QAChC,GAAG,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAA;QAC1C,MAAM,GAAG,GAAG,SAAS,CAAC,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,GAAG,EAAE;IAC9B,UAAU,CAAC,GAAG,EAAE;QACd,GAAG,CAAC,GAAG,GAAG,SAAS,CAAA;QACnB,GAAG,CAAC,UAAU,GAAG,KAAK,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,GAAG,GAAG,uBAAuB,EAAE,CAAA;QACrC,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAE7D,MAAM,GAAG,GAAG,SAAS,CAAC,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,GAAG,EAAE;QAClC,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;QAChC,GAAG,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;QAEnD,MAAM,GAAG,GAAG,uBAAuB,EAAE,CAAA;QACrC,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAS,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,GAAG,EAAE;QAC/C,MAAM,GAAG,GAAG,uBAAuB,EAAE,CAAA;QACrC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAClC,YAAY,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;QAC/B,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/G,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;;QAClC,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;QAChC,GAAG,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;QAEnD,MAAM,GAAG,GAAG,uBAAuB,EAAE,CAAA;QACrC,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAE7D,MAAM,SAAS,GAAG,MAAA,GAAG,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"]}
|
package/package.json
CHANGED
package/ts/memory.ts
CHANGED
|
@@ -10,6 +10,7 @@ export type MemoryLogReporter = LogReporter<LogEntry> & {
|
|
|
10
10
|
* The message only contains arguments for each log entry.
|
|
11
11
|
*/
|
|
12
12
|
getLogMessage(): string,
|
|
13
|
+
getLogMessages(): string[],
|
|
13
14
|
getLogMessageWithLevel(): string
|
|
14
15
|
}
|
|
15
16
|
|
|
@@ -38,9 +39,11 @@ export function createMemoryLogReporter(options?: LogReporterOptions<LogEntry>):
|
|
|
38
39
|
logs.push(formatter(entry))
|
|
39
40
|
},
|
|
40
41
|
getLogMessage() {
|
|
42
|
+
return this.getLogMessages().join('\n')
|
|
43
|
+
},
|
|
44
|
+
getLogMessages() {
|
|
41
45
|
return logs.map(toInspectLogEntry)
|
|
42
46
|
.map(log => log.args.join(' '))
|
|
43
|
-
.join('\n')
|
|
44
47
|
},
|
|
45
48
|
getLogMessageWithLevel() { return toMessageWithLevel(logs) }
|
|
46
49
|
})
|
package/ts/standardLog.ts
CHANGED
|
@@ -96,7 +96,7 @@ export function configGlobal(options: Omit<StandardLogOptions, 'customLevels'>)
|
|
|
96
96
|
}
|
|
97
97
|
if (options.reporters) {
|
|
98
98
|
const reporters = ctx.gsl.store.reporters
|
|
99
|
-
|
|
99
|
+
reporters.length = 0
|
|
100
100
|
reporters.push(...options.reporters)
|
|
101
101
|
}
|
|
102
102
|
}
|