standard-log 8.0.0 → 8.0.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/config.js +1 -1
- package/cjs/config.js.map +1 -1
- package/cjs/config.spec.js +6 -0
- package/cjs/config.spec.js.map +1 -1
- package/cjs/console/createConsoleLogReporter.d.ts.map +1 -1
- package/cjs/console/createConsoleLogReporter.js +2 -2
- package/cjs/console/createConsoleLogReporter.js.map +1 -1
- package/cjs/console/createConsoleLogReporter.spec.js +13 -0
- package/cjs/console/createConsoleLogReporter.spec.js.map +1 -1
- package/cjs/errors.d.ts +3 -3
- package/cjs/errors.d.ts.map +1 -1
- package/cjs/errors.js +6 -6
- package/cjs/errors.js.map +1 -1
- package/cjs/getLogModeFromEnvironment.js +1 -1
- package/cjs/getLogModeFromEnvironment.js.map +1 -1
- package/cjs/getLogModeFromEnvironment.spec.js +6 -0
- package/cjs/getLogModeFromEnvironment.spec.js.map +1 -1
- package/cjs/getLogger.js +1 -1
- package/cjs/getLogger.js.map +1 -1
- package/cjs/getLogger.spec.js +4 -0
- package/cjs/getLogger.spec.js.map +1 -1
- package/cjs/logReporter.js +2 -2
- package/cjs/logReporter.js.map +1 -1
- package/cjs/logReporter.spec.js +12 -0
- package/cjs/logReporter.spec.js.map +1 -1
- package/cjs/memory/MemoryLogReporter.d.ts.map +1 -1
- package/cjs/memory/MemoryLogReporter.js +2 -2
- package/cjs/memory/MemoryLogReporter.js.map +1 -1
- package/cjs/memory/MemoryLogReporter.spec.js +13 -0
- package/cjs/memory/MemoryLogReporter.spec.js.map +1 -1
- package/cjs/testUtil.d.ts +1 -0
- package/cjs/testUtil.d.ts.map +1 -1
- package/cjs/testUtil.js +7 -1
- package/cjs/testUtil.js.map +1 -1
- package/cjs/utils.d.ts +2 -1
- package/cjs/utils.d.ts.map +1 -1
- package/cjs/utils.js +3 -2
- package/cjs/utils.js.map +1 -1
- package/dist/standard-log.es5.js +17 -16
- 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 +17 -16
- 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/config.js +1 -1
- package/esm/config.js.map +1 -1
- package/esm/config.spec.js +6 -0
- package/esm/config.spec.js.map +1 -1
- package/esm/console/createConsoleLogReporter.d.ts.map +1 -1
- package/esm/console/createConsoleLogReporter.js +2 -2
- package/esm/console/createConsoleLogReporter.js.map +1 -1
- package/esm/console/createConsoleLogReporter.spec.js +13 -0
- package/esm/console/createConsoleLogReporter.spec.js.map +1 -1
- package/esm/errors.d.ts +3 -3
- package/esm/errors.d.ts.map +1 -1
- package/esm/errors.js +6 -6
- package/esm/errors.js.map +1 -1
- package/esm/getLogModeFromEnvironment.js +1 -1
- package/esm/getLogModeFromEnvironment.js.map +1 -1
- package/esm/getLogModeFromEnvironment.spec.js +6 -0
- package/esm/getLogModeFromEnvironment.spec.js.map +1 -1
- package/esm/getLogger.js +1 -1
- package/esm/getLogger.js.map +1 -1
- package/esm/getLogger.spec.js +5 -1
- package/esm/getLogger.spec.js.map +1 -1
- package/esm/logReporter.js +2 -2
- package/esm/logReporter.js.map +1 -1
- package/esm/logReporter.spec.js +12 -0
- package/esm/logReporter.spec.js.map +1 -1
- package/esm/memory/MemoryLogReporter.d.ts.map +1 -1
- package/esm/memory/MemoryLogReporter.js +2 -2
- package/esm/memory/MemoryLogReporter.js.map +1 -1
- package/esm/memory/MemoryLogReporter.spec.js +13 -0
- package/esm/memory/MemoryLogReporter.spec.js.map +1 -1
- package/esm/testUtil.d.ts +1 -0
- package/esm/testUtil.d.ts.map +1 -1
- package/esm/testUtil.js +4 -0
- package/esm/testUtil.js.map +1 -1
- package/esm/utils.d.ts +2 -1
- package/esm/utils.d.ts.map +1 -1
- package/esm/utils.js +3 -2
- package/esm/utils.js.map +1 -1
- package/package.json +3 -2
- package/ts/config.ts +1 -1
- package/ts/console/createConsoleLogReporter.ts +8 -2
- package/ts/errors.ts +6 -6
- package/ts/getLogModeFromEnvironment.ts +1 -1
- package/ts/getLogger.ts +1 -1
- package/ts/logReporter.ts +2 -2
- package/ts/memory/MemoryLogReporter.ts +8 -2
- package/ts/utils.ts +4 -2
- package/ts/testUtil.ts +0 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLogger.spec.js","sourceRoot":"","sources":["../ts/getLogger.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import a from 'assertron'\nimport delay from 'delay'\nimport { addCustomLogLevel, clearCustomLogLevel, getLogger, InvalidId, Logger, logLevels, LogMethodNames, setLogLevel, toLogLevel, toLogLevelName } from './index.js'\nimport { config } from './config.js'\nimport { createMemoryLogReporter, MemoryLogReporter } from './memory/index.js'\nimport { store } from './store.js'\nimport { captureWrittenLog } from './testUtil.js'\n\nafterEach(() => {\n clearCustomLogLevel()\n store.reset()\n})\n\ntest('logger id supports alphanumeric and :_-.', () => {\n getLogger('abcdefghijklmnopqrstuvwxyz:-_.1234567890')\n})\n\ntest('logger id supports unicode', () => {\n getLogger('ミク香港')\n})\n\ntest('logger id supports @, \\\\ and /', () => {\n getLogger('@unional/fixture')\n getLogger(`a\\\\b\\\\c`)\n})\n\ntest.each('`~!#$%^&*()=+|[]{}<>,?'.split(''))('throws if id has unsupported character %s', (char: string) => {\n a.throws(() => getLogger(char), InvalidId)\n})\n\ntest('get logger with same name gets the same instance', () => {\n const expected = getLogger('same-inst')\n const actual = getLogger('same-inst')\n expect(actual).toBe(expected)\n})\n\ntest('can specify local log level', () => {\n const log = getLogger('local', { level: logLevels.trace })\n expect(log.level).toBe(logLevels.trace)\n})\n\ntest('new logger will get custom level', () => {\n addCustomLogLevel('to_logger', 1234)\n const actual = getLogger<LogMethodNames | 'to_logger'>('to_logger_logger')\n expect(typeof actual.to_logger).toBe('function')\n})\n\ntest('existing logger will get custom level', () => {\n const actual = getLogger<LogMethodNames | 'old_logger'>('old_logger')\n addCustomLogLevel('old_logger', 122)\n expect(typeof actual.old_logger).toBe('function')\n})\n\ndescribe('validate write to reporters', () => {\n let capture: ReturnType<typeof captureWrittenLog>\n beforeEach(() => {\n store.value.mode = 'test'\n store.value.logLevel = logLevels.debug\n capture = captureWrittenLog()\n })\n afterEach(() => {\n capture.reset()\n })\n test('logger with custom level', async () => {\n addCustomLogLevel('cust_lvl', 100)\n const logger = getLogger<'cust_lvl'>('cust')\n logger.cust_lvl('a', 'b')\n\n a.satisfies(capture.logs, [{ id: 'cust', level: 100, args: ['a', 'b'] }])\n })\n describe('count()', () => {\n test('will increment the counter', async () => {\n const logger = getLogger('inc counter')\n\n logger.count()\n logger.count()\n\n a.satisfies(capture.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 store.value.logLevel = logLevels.debug\n const id = 'inc with args'\n const logger = getLogger(id)\n logger.count('msg1', 'msg2')\n\n a.satisfies(capture.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 store.value.logLevel = logLevels.debug - 1\n const id = 'inc with args'\n const logger = getLogger(id)\n logger.count('msg1', 'msg2')\n\n expect(capture.logs.length).toBe(0)\n })\n })\n\n describe('log level tests', () => {\n beforeEach(() => {\n store.value.mode = 'test'\n store.value.logLevel = logLevels.error\n })\n\n afterEach(() => {\n store.reset()\n })\n\n async function assertLoggedAtLevel(log: any, level: number) {\n setLogLevel(level)\n const msg = `should log on level: ${level}`\n log[log.id](msg)\n a.satisfies(capture.logs, [{ id: log.id, level: toLogLevel(log.id), args: [msg] }])\n }\n\n async function assertNotLoggedAtLevel(log: any, level: number) {\n setLogLevel(level)\n log[log.id](`should not log on level: ${level}`)\n expect(capture.logs.length).toBe(0)\n }\n\n async function assertLoggedAtLocalLevel(log: any, globalLevel: number, localLevel: number) {\n setLogLevel(globalLevel)\n log.level = localLevel\n\n const msg = `should log on level: ${localLevel}`\n log[log.id](msg)\n a.satisfies(capture.logs, [{ id: log.id, level: toLogLevel(log.id), args: [msg] }])\n }\n\n async function assertNotLoggedAtLocalLevel(log: any, globalLevel: number, localLevel: number) {\n setLogLevel(globalLevel)\n log.level = localLevel\n log[log.id](`should not log on level: ${localLevel}`)\n expect(capture.logs.length).toBe(0)\n }\n\n async function assertLogFunctionCalledAtLevel(log: any, callLevel: number, actualLevel: number) {\n setLogLevel(actualLevel)\n let actual = false\n log.on(callLevel, () => actual = true)\n expect(actual).toBe(true)\n }\n\n async function assertLogFunctionCalledAtLocalLevel(log: Logger, callLevel: number, globalLevel: number, localLevel: number) {\n setLogLevel(globalLevel)\n log.level = localLevel\n let actual = false\n log.on(callLevel, () => actual = true)\n expect(actual).toBe(true)\n }\n function assertLogFunctionNotCalledAtLevel(log: any, callLevel: number, actualLevel: number) {\n setLogLevel(actualLevel)\n log.on(callLevel, () => { throw new Error(`should not log at level ${actualLevel}`) })\n }\n\n function assertLogFunctionNotCalledAtLocalLevel(log: any, callLevel: number, globalLevel: number, localLevel: number) {\n setLogLevel(globalLevel)\n log.level = localLevel\n log.on(callLevel, () => { throw new Error(`should not log at local level ${localLevel}`) })\n }\n\n const shouldLog = wrapTest((test) => (method: string, level: number) => {\n const name = toLogLevelName(level)\n test(`${method}() should log on level: ${name} (${level})`, () => {\n const log = getLogger(method)\n\n return assertLoggedAtLevel(log, level)\n })\n })\n\n const shouldNotLog = wrapTest((test) => (method: string, level: number) => {\n const name = toLogLevelName(level)\n test(`${method}() should not log on level: ${name} (${level})`, () => {\n const log = getLogger(method)\n\n return assertNotLoggedAtLevel(log, level)\n })\n })\n\n const shouldLogWithLocalLevelOverride = 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 log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const log = getLogger(method)\n\n return assertLoggedAtLocalLevel(log, globalLevel, 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 log = getLogger(method)\n\n return assertNotLoggedAtLocalLevel(log, globalLevel, 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 log = getLogger(method)\n\n return assertLogFunctionCalledAtLevel(log, callLevel, actualLevel)\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 log = getLogger(method)\n\n assertLogFunctionNotCalledAtLevel(log, 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 log = getLogger(method)\n\n return assertLogFunctionCalledAtLocalLevel(log, callLevel, globalLevel, localLevel)\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 log = getLogger(method)\n\n assertLogFunctionNotCalledAtLocalLevel(log, callLevel, globalLevel, localLevel)\n })\n })\n })\n\n function wrapTest<F>(fn: (test: jest.It) => F) {\n return Object.assign(fn(test), { only: fn(test.only), skip: fn(test.skip) })\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 test('on() log using log argument', () => {\n store.value.mode = 'test'\n store.value.logLevel = logLevels.debug\n const logger = getLogger('log on fn')\n\n logger.on('error', log => { log('value') })\n\n a.satisfies(capture.logs, [\n { id: 'log on fn', level: logLevels.error, args: ['value'] }\n ])\n })\n\n test('write entry directly', () => {\n const log = getLogger('write-entry')\n const entry = { id: 'write-entry', level: logLevels.info, args: ['abc'], timestamp: new Date() }\n log.write(entry)\n a.satisfies(capture.logs, [entry])\n })\n})\n\ntest('on() can take log level name in first argument', () => {\n const log = getLogger('string-on')\n log.on('debug', () => { return })\n})\n\ntest('auto configure', async () => {\n expect(store.value.configured).toBeFalsy()\n const log = getLogger('auto config')\n\n log.info('config is called automatically as expected')\n\n await delay(10)\n expect(store.value.configured).toBeTruthy()\n})\n\ndescribe('writeTo', () => {\n let memReporter: MemoryLogReporter\n let specialReporter: MemoryLogReporter\n beforeEach(() => {\n memReporter = createMemoryLogReporter()\n specialReporter = createMemoryLogReporter({ id: 'special' })\n config({ mode: 'test', reporters: [memReporter, specialReporter] })\n })\n test('specific reporter with string', () => {\n const log = getLogger('writeTo-string', { writeTo: 'special' })\n log.error('error message')\n\n expect(memReporter.logs.length).toEqual(0)\n expect(specialReporter.logs.length).toEqual(1)\n })\n\n test('specific reporter with regex', () => {\n const log = getLogger('writeTo-regex', { writeTo: /^spec/ })\n log.error('error message')\n\n expect(memReporter.logs.length).toEqual(0)\n expect(specialReporter.logs.length).toEqual(1)\n })\n\n test('specific reporter with RegExp', () => {\n const log = getLogger('writeTo-RegExp', { writeTo: new RegExp('^spec') })\n log.error('error message')\n\n expect(memReporter.logs.length).toEqual(0)\n expect(specialReporter.logs.length).toEqual(1)\n })\n\n test('specific reporter with function', () => {\n const log = getLogger('writeTo-fn', { writeTo: id => id === 'special' })\n log.error('error message')\n\n expect(memReporter.logs.length).toEqual(0)\n expect(specialReporter.logs.length).toEqual(1)\n })\n\n test('custom reporter', () => {\n const reporter = createMemoryLogReporter({ id: 'custom mem' })\n const log = getLogger('writeTo-reporter', { writeTo: reporter })\n log.error('error message')\n\n expect(reporter.logs.length).toEqual(1)\n })\n\n test('custom reporter cannot override added console reporter', () => {\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 reporter.isConsoleReporter = true\n getLogger('writeTo-reporter-no-override', { writeTo: reporter })\n const log = getLogger('writeTo-reporter-no-override-2')\n log.error('error message')\n\n expect(reporter.logs.length).toEqual(0)\n })\n})\n\ntest('id is readonly', () => {\n const log: any = getLogger('id is readonly')\n a.throws(() => log.id = 'b')\n})\n\ntest.each(['on', 'count', 'error', 'warn', 'info', 'debug'])('method %s is readonly', name => {\n const log: any = getLogger(`${name} is readonly`)\n\n a.throws(() => log[name] = true)\n})\n\n"]}
|
|
1
|
+
{"version":3,"file":"getLogger.spec.js","sourceRoot":"","sources":["../ts/getLogger.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import a from 'assertron'\nimport delay from 'delay'\nimport { addCustomLogLevel, clearCustomLogLevel, getLogger, InvalidId, Logger, logLevels, LogMethodNames, setLogLevel, toLogLevel, toLogLevelName } from './index.js'\nimport { config } from './config.js'\nimport { createMemoryLogReporter, MemoryLogReporter } from './memory/index.js'\nimport { store } from './store.js'\nimport { assertSSF, captureWrittenLog } from './testUtil.js'\n\nafterEach(() => {\n clearCustomLogLevel()\n store.reset()\n})\n\ntest('logger id supports alphanumeric and :_-.', () => {\n getLogger('abcdefghijklmnopqrstuvwxyz:-_.1234567890')\n})\n\ntest('logger id supports unicode', () => {\n getLogger('ミク香港')\n})\n\ntest('logger id supports @, \\\\ and /', () => {\n getLogger('@unional/fixture')\n getLogger(`a\\\\b\\\\c`)\n})\n\ntest.each('`~!#$%^&*()=+|[]{}<>,?'.split(''))('throws if id has unsupported character %s', (char: string) => {\n a.throws(() => getLogger(char), InvalidId)\n})\n\nit('throw InvalidId with ssf to the call site', () => {\n const err = a.throws(() => getLogger('!'), InvalidId)\n\n assertSSF(err, __filename)\n})\n\ntest('get logger with same name gets the same instance', () => {\n const expected = getLogger('same-inst')\n const actual = getLogger('same-inst')\n expect(actual).toBe(expected)\n})\n\ntest('can specify local log level', () => {\n const log = getLogger('local', { level: logLevels.trace })\n expect(log.level).toBe(logLevels.trace)\n})\n\ntest('new logger will get custom level', () => {\n addCustomLogLevel('to_logger', 1234)\n const actual = getLogger<LogMethodNames | 'to_logger'>('to_logger_logger')\n expect(typeof actual.to_logger).toBe('function')\n})\n\ntest('existing logger will get custom level', () => {\n const actual = getLogger<LogMethodNames | 'old_logger'>('old_logger')\n addCustomLogLevel('old_logger', 122)\n expect(typeof actual.old_logger).toBe('function')\n})\n\ndescribe('validate write to reporters', () => {\n let capture: ReturnType<typeof captureWrittenLog>\n beforeEach(() => {\n store.value.mode = 'test'\n store.value.logLevel = logLevels.debug\n capture = captureWrittenLog()\n })\n afterEach(() => {\n capture.reset()\n })\n test('logger with custom level', async () => {\n addCustomLogLevel('cust_lvl', 100)\n const logger = getLogger<'cust_lvl'>('cust')\n logger.cust_lvl('a', 'b')\n\n a.satisfies(capture.logs, [{ id: 'cust', level: 100, args: ['a', 'b'] }])\n })\n describe('count()', () => {\n test('will increment the counter', async () => {\n const logger = getLogger('inc counter')\n\n logger.count()\n logger.count()\n\n a.satisfies(capture.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 store.value.logLevel = logLevels.debug\n const id = 'inc with args'\n const logger = getLogger(id)\n logger.count('msg1', 'msg2')\n\n a.satisfies(capture.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 store.value.logLevel = logLevels.debug - 1\n const id = 'inc with args'\n const logger = getLogger(id)\n logger.count('msg1', 'msg2')\n\n expect(capture.logs.length).toBe(0)\n })\n })\n\n describe('log level tests', () => {\n beforeEach(() => {\n store.value.mode = 'test'\n store.value.logLevel = logLevels.error\n })\n\n afterEach(() => {\n store.reset()\n })\n\n async function assertLoggedAtLevel(log: any, level: number) {\n setLogLevel(level)\n const msg = `should log on level: ${level}`\n log[log.id](msg)\n a.satisfies(capture.logs, [{ id: log.id, level: toLogLevel(log.id), args: [msg] }])\n }\n\n async function assertNotLoggedAtLevel(log: any, level: number) {\n setLogLevel(level)\n log[log.id](`should not log on level: ${level}`)\n expect(capture.logs.length).toBe(0)\n }\n\n async function assertLoggedAtLocalLevel(log: any, globalLevel: number, localLevel: number) {\n setLogLevel(globalLevel)\n log.level = localLevel\n\n const msg = `should log on level: ${localLevel}`\n log[log.id](msg)\n a.satisfies(capture.logs, [{ id: log.id, level: toLogLevel(log.id), args: [msg] }])\n }\n\n async function assertNotLoggedAtLocalLevel(log: any, globalLevel: number, localLevel: number) {\n setLogLevel(globalLevel)\n log.level = localLevel\n log[log.id](`should not log on level: ${localLevel}`)\n expect(capture.logs.length).toBe(0)\n }\n\n async function assertLogFunctionCalledAtLevel(log: any, callLevel: number, actualLevel: number) {\n setLogLevel(actualLevel)\n let actual = false\n log.on(callLevel, () => actual = true)\n expect(actual).toBe(true)\n }\n\n async function assertLogFunctionCalledAtLocalLevel(log: Logger, callLevel: number, globalLevel: number, localLevel: number) {\n setLogLevel(globalLevel)\n log.level = localLevel\n let actual = false\n log.on(callLevel, () => actual = true)\n expect(actual).toBe(true)\n }\n function assertLogFunctionNotCalledAtLevel(log: any, callLevel: number, actualLevel: number) {\n setLogLevel(actualLevel)\n log.on(callLevel, () => { throw new Error(`should not log at level ${actualLevel}`) })\n }\n\n function assertLogFunctionNotCalledAtLocalLevel(log: any, callLevel: number, globalLevel: number, localLevel: number) {\n setLogLevel(globalLevel)\n log.level = localLevel\n log.on(callLevel, () => { throw new Error(`should not log at local level ${localLevel}`) })\n }\n\n const shouldLog = wrapTest((test) => (method: string, level: number) => {\n const name = toLogLevelName(level)\n test(`${method}() should log on level: ${name} (${level})`, () => {\n const log = getLogger(method)\n\n return assertLoggedAtLevel(log, level)\n })\n })\n\n const shouldNotLog = wrapTest((test) => (method: string, level: number) => {\n const name = toLogLevelName(level)\n test(`${method}() should not log on level: ${name} (${level})`, () => {\n const log = getLogger(method)\n\n return assertNotLoggedAtLevel(log, level)\n })\n })\n\n const shouldLogWithLocalLevelOverride = 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 log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const log = getLogger(method)\n\n return assertLoggedAtLocalLevel(log, globalLevel, 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 log = getLogger(method)\n\n return assertNotLoggedAtLocalLevel(log, globalLevel, 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 log = getLogger(method)\n\n return assertLogFunctionCalledAtLevel(log, callLevel, actualLevel)\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 log = getLogger(method)\n\n assertLogFunctionNotCalledAtLevel(log, 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 log = getLogger(method)\n\n return assertLogFunctionCalledAtLocalLevel(log, callLevel, globalLevel, localLevel)\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 log = getLogger(method)\n\n assertLogFunctionNotCalledAtLocalLevel(log, callLevel, globalLevel, localLevel)\n })\n })\n })\n\n function wrapTest<F>(fn: (test: jest.It) => F) {\n return Object.assign(fn(test), { only: fn(test.only), skip: fn(test.skip) })\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 test('on() log using log argument', () => {\n store.value.mode = 'test'\n store.value.logLevel = logLevels.debug\n const logger = getLogger('log on fn')\n\n logger.on('error', log => { log('value') })\n\n a.satisfies(capture.logs, [\n { id: 'log on fn', level: logLevels.error, args: ['value'] }\n ])\n })\n\n test('write entry directly', () => {\n const log = getLogger('write-entry')\n const entry = { id: 'write-entry', level: logLevels.info, args: ['abc'], timestamp: new Date() }\n log.write(entry)\n a.satisfies(capture.logs, [entry])\n })\n})\n\ntest('on() can take log level name in first argument', () => {\n const log = getLogger('string-on')\n log.on('debug', () => { return })\n})\n\ntest('auto configure', async () => {\n expect(store.value.configured).toBeFalsy()\n const log = getLogger('auto config')\n\n log.info('config is called automatically as expected')\n\n await delay(10)\n expect(store.value.configured).toBeTruthy()\n})\n\ndescribe('writeTo', () => {\n let memReporter: MemoryLogReporter\n let specialReporter: MemoryLogReporter\n beforeEach(() => {\n memReporter = createMemoryLogReporter()\n specialReporter = createMemoryLogReporter({ id: 'special' })\n config({ mode: 'test', reporters: [memReporter, specialReporter] })\n })\n test('specific reporter with string', () => {\n const log = getLogger('writeTo-string', { writeTo: 'special' })\n log.error('error message')\n\n expect(memReporter.logs.length).toEqual(0)\n expect(specialReporter.logs.length).toEqual(1)\n })\n\n test('specific reporter with regex', () => {\n const log = getLogger('writeTo-regex', { writeTo: /^spec/ })\n log.error('error message')\n\n expect(memReporter.logs.length).toEqual(0)\n expect(specialReporter.logs.length).toEqual(1)\n })\n\n test('specific reporter with RegExp', () => {\n const log = getLogger('writeTo-RegExp', { writeTo: new RegExp('^spec') })\n log.error('error message')\n\n expect(memReporter.logs.length).toEqual(0)\n expect(specialReporter.logs.length).toEqual(1)\n })\n\n test('specific reporter with function', () => {\n const log = getLogger('writeTo-fn', { writeTo: id => id === 'special' })\n log.error('error message')\n\n expect(memReporter.logs.length).toEqual(0)\n expect(specialReporter.logs.length).toEqual(1)\n })\n\n test('custom reporter', () => {\n const reporter = createMemoryLogReporter({ id: 'custom mem' })\n const log = getLogger('writeTo-reporter', { writeTo: reporter })\n log.error('error message')\n\n expect(reporter.logs.length).toEqual(1)\n })\n\n test('custom reporter cannot override added console reporter', () => {\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 reporter.isConsoleReporter = true\n getLogger('writeTo-reporter-no-override', { writeTo: reporter })\n const log = getLogger('writeTo-reporter-no-override-2')\n log.error('error message')\n\n expect(reporter.logs.length).toEqual(0)\n })\n})\n\ntest('id is readonly', () => {\n const log: any = getLogger('id is readonly')\n a.throws(() => log.id = 'b')\n})\n\ntest.each(['on', 'count', 'error', 'warn', 'info', 'debug'])('method %s is readonly', name => {\n const log: any = getLogger(`${name} is readonly`)\n\n a.throws(() => log[name] = true)\n})\n\n"]}
|
package/cjs/logReporter.js
CHANGED
|
@@ -5,7 +5,7 @@ var logReporterInternal_js_1 = require("./logReporterInternal.js");
|
|
|
5
5
|
var store_js_1 = require("./store.js");
|
|
6
6
|
var utils_js_1 = require("./utils.js");
|
|
7
7
|
function addLogReporter(reporter) {
|
|
8
|
-
(0, utils_js_1.assertLogModeIsNotProduction)('addLogReporter');
|
|
8
|
+
(0, utils_js_1.assertLogModeIsNotProduction)('addLogReporter', addLogReporter);
|
|
9
9
|
(0, logReporterInternal_js_1.addLogReporterInternal)(reporter);
|
|
10
10
|
}
|
|
11
11
|
exports.addLogReporter = addLogReporter;
|
|
@@ -22,7 +22,7 @@ function getConsoleReporter() {
|
|
|
22
22
|
}
|
|
23
23
|
exports.getConsoleReporter = getConsoleReporter;
|
|
24
24
|
function clearLogReporters() {
|
|
25
|
-
(0, utils_js_1.assertLogModeIsNotProduction)('clearLogReporters');
|
|
25
|
+
(0, utils_js_1.assertLogModeIsNotProduction)('clearLogReporters', clearLogReporters);
|
|
26
26
|
store_js_1.store.value.reporters.splice(0, store_js_1.store.value.reporters.length);
|
|
27
27
|
}
|
|
28
28
|
exports.clearLogReporters = clearLogReporters;
|
package/cjs/logReporter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logReporter.js","sourceRoot":"","sources":["../ts/logReporter.ts"],"names":[],"mappings":";;;AAAA,mEAAiE;AACjE,uCAAkC;AAElC,uCAAyD;AAEzD,SAAgB,cAAc,CAAC,QAAqB;IAClD,IAAA,uCAA4B,EAAC,gBAAgB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"logReporter.js","sourceRoot":"","sources":["../ts/logReporter.ts"],"names":[],"mappings":";;;AAAA,mEAAiE;AACjE,uCAAkC;AAElC,uCAAyD;AAEzD,SAAgB,cAAc,CAAC,QAAqB;IAClD,IAAA,uCAA4B,EAAC,gBAAgB,EAAE,cAAc,CAAC,CAAA;IAC9D,IAAA,+CAAsB,EAAC,QAAQ,CAAC,CAAA;AAClC,CAAC;AAHD,wCAGC;AAED,SAAgB,cAAc,CAAC,EAAU;IACvC,OAAO,gBAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,KAAK,EAAE,EAAX,CAAW,CAAC,CAAA;AACrD,CAAC;AAFD,wCAEC;AAED,SAAgB,kBAAkB;IAChC,OAAO,gBAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,iBAAiB,EAAnB,CAAmB,CAAC,CAAA;AAC7D,CAAC;AAFD,gDAEC;AAED,SAAgB,kBAAkB;IAChC,OAAO,gBAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,iBAAiB,EAAnB,CAAmB,CAAC,CAAA;AAC7D,CAAC;AAFD,gDAEC;AAED,SAAgB,iBAAiB;IAC/B,IAAA,uCAA4B,EAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAA;IACpE,gBAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,gBAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;AAC/D,CAAC;AAHD,8CAGC","sourcesContent":["import { addLogReporterInternal } from './logReporterInternal.js'\nimport { store } from './store.js'\nimport { LogReporter } from './types.js'\nimport { assertLogModeIsNotProduction } from './utils.js'\n\nexport function addLogReporter(reporter: LogReporter) {\n assertLogModeIsNotProduction('addLogReporter', addLogReporter)\n addLogReporterInternal(reporter)\n}\n\nexport function getLogReporter(id: string) {\n return store.value.reporters.find(r => r.id === id)\n}\n\nexport function hasConsoleReporter() {\n return store.value.reporters.some(r => r.isConsoleReporter)\n}\n\nexport function getConsoleReporter() {\n return store.value.reporters.find(r => r.isConsoleReporter)\n}\n\nexport function clearLogReporters() {\n assertLogModeIsNotProduction('clearLogReporters', clearLogReporters)\n store.value.reporters.splice(0, store.value.reporters.length)\n}\n"]}
|
package/cjs/logReporter.spec.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
var assertron_1 = __importDefault(require("assertron"));
|
|
7
7
|
var index_js_1 = require("./index.js");
|
|
8
8
|
var store_js_1 = require("./store.js");
|
|
9
|
+
var testUtil_js_1 = require("./testUtil.js");
|
|
9
10
|
describe('production checks', function () {
|
|
10
11
|
beforeEach(function () { return store_js_1.store.reset(); });
|
|
11
12
|
describe('addLogReporter()', function () {
|
|
@@ -14,12 +15,23 @@ describe('production checks', function () {
|
|
|
14
15
|
var reporter = (0, index_js_1.createMemoryLogReporter)();
|
|
15
16
|
assertron_1.default.throws(function () { return (0, index_js_1.addLogReporter)(reporter); }, index_js_1.ProhibitedDuringProduction);
|
|
16
17
|
});
|
|
18
|
+
it('throw with ssf at call site', function () {
|
|
19
|
+
(0, index_js_1.config)({ mode: 'production' });
|
|
20
|
+
var reporter = (0, index_js_1.createMemoryLogReporter)();
|
|
21
|
+
var err = assertron_1.default.throws(function () { return (0, index_js_1.addLogReporter)(reporter); }, index_js_1.ProhibitedDuringProduction);
|
|
22
|
+
(0, testUtil_js_1.assertSSF)(err, __filename);
|
|
23
|
+
});
|
|
17
24
|
});
|
|
18
25
|
describe('clearLogReporters()', function () {
|
|
19
26
|
test('throws in production mode', function () {
|
|
20
27
|
(0, index_js_1.config)({ mode: 'production' });
|
|
21
28
|
assertron_1.default.throws(function () { return (0, index_js_1.clearLogReporters)(); }, index_js_1.ProhibitedDuringProduction);
|
|
22
29
|
});
|
|
30
|
+
it('throw with ssf at call site', function () {
|
|
31
|
+
(0, index_js_1.config)({ mode: 'production' });
|
|
32
|
+
var err = assertron_1.default.throws(function () { return (0, index_js_1.clearLogReporters)(); }, index_js_1.ProhibitedDuringProduction);
|
|
33
|
+
(0, testUtil_js_1.assertSSF)(err, __filename);
|
|
34
|
+
});
|
|
23
35
|
});
|
|
24
36
|
});
|
|
25
37
|
describe('unit tests', function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logReporter.spec.js","sourceRoot":"","sources":["../ts/logReporter.spec.ts"],"names":[],"mappings":";;;;;AAAA,wDAAyB;AACzB,uCAKmB;AACnB,uCAAkC;
|
|
1
|
+
{"version":3,"file":"logReporter.spec.js","sourceRoot":"","sources":["../ts/logReporter.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import a from 'assertron'\nimport {\n addLogReporter, clearLogReporters, config,\n createConsoleLogReporter, createMemoryLogReporter,\n getConsoleReporter, getLogReporter, hasConsoleReporter,\n LogFilter, logLevels, ProhibitedDuringProduction\n} from './index.js'\nimport { store } from './store.js'\nimport { assertSSF } from './testUtil.js'\n\ndescribe('production checks', () => {\n beforeEach(() => store.reset())\n\n describe('addLogReporter()', () => {\n test('throws in production mode', () => {\n config({ mode: 'production' })\n const reporter = createMemoryLogReporter()\n a.throws(() => addLogReporter(reporter), ProhibitedDuringProduction)\n })\n\n it('throw with ssf at call site', () => {\n config({ mode: 'production' })\n const reporter = createMemoryLogReporter()\n const err = a.throws(() => addLogReporter(reporter), ProhibitedDuringProduction)\n\n assertSSF(err, __filename)\n })\n })\n\n describe('clearLogReporters()', () => {\n test('throws in production mode', () => {\n config({ mode: 'production' })\n a.throws(() => clearLogReporters(), ProhibitedDuringProduction)\n })\n it('throw with ssf at call site', () => {\n config({ mode: 'production' })\n const err = a.throws(() => clearLogReporters(), ProhibitedDuringProduction)\n\n assertSSF(err, __filename)\n })\n })\n})\n\ndescribe('unit tests', () => {\n beforeEach(() => {\n store.reset()\n config({ mode: 'test' })\n })\n\n describe('addLogReporter()', () => {\n test('adds log reporter', () => {\n const count = store.value.reporters.length\n const reporter = createMemoryLogReporter()\n addLogReporter(reporter)\n\n expect(store.value.reporters.length).toBe(count + 1)\n })\n\n describe('add another console reporter', () => {\n test('will not replace existing one', () => {\n expect(getLogReporter('console')).toBeDefined()\n addLogReporter(createConsoleLogReporter({ id: 'c2' }))\n expect(getLogReporter('c2')).toBeUndefined()\n expect(getLogReporter('console')).toBeDefined()\n })\n\n test('will carry over existing filter', () => {\n const filter: LogFilter = entry => entry.level < logLevels.alert\n addLogReporter(createConsoleLogReporter({ id: 'c2', filter }))\n addLogReporter(createConsoleLogReporter({ id: 'c3' }))\n const c3 = getConsoleReporter()!\n expect(c3.filter).toBe(filter)\n })\n\n test('will combine existing filter and new filter', () => {\n addLogReporter(createConsoleLogReporter({ id: 'c2', filter: entry => entry.level > logLevels.critical }))\n addLogReporter(createConsoleLogReporter({ id: 'c3', filter: entry => entry.level < logLevels.error }))\n const c2 = getConsoleReporter()!\n expect(c2.filter!({ level: logLevels.info } as any)).toBe(false)\n expect(c2.filter!({ level: logLevels.alert } as any)).toBe(false)\n })\n })\n })\n\n describe('getLogReporter()', () => {\n test('get log reporter by id', () => {\n expect(getLogReporter('console')).toBeDefined()\n })\n\n test('get log reporter with unknown id gets undefined', () => {\n expect(getLogReporter('blah')).toBeUndefined()\n })\n })\n\n describe('clearLogReporters()', () => {\n test('removes all reporters', () => {\n clearLogReporters()\n\n expect(store.value.reporters.length).toBe(0)\n })\n })\n\n describe('hasConsoleReporter()', () => {\n test('returns true if there is a console reporter', () => {\n expect(hasConsoleReporter()).toBeTruthy()\n })\n test('returns false if there is no console reporter', () => {\n clearLogReporters()\n expect(hasConsoleReporter()).toBeFalsy()\n addLogReporter(createMemoryLogReporter())\n expect(hasConsoleReporter()).toBeFalsy()\n })\n })\n})\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryLogReporter.d.ts","sourceRoot":"","sources":["../../ts/memory/MemoryLogReporter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAa,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAIhG,oBAAY,iBAAiB,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG;IACtD,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB;;;OAGG;IACH,aAAa,IAAI,MAAM,CAAC;IACxB,sBAAsB,IAAI,MAAM,CAAA;CACjC,CAAA;AAED,oBAAY,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AAUvD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAQlD;AAGD,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"MemoryLogReporter.d.ts","sourceRoot":"","sources":["../../ts/memory/MemoryLogReporter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAa,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAIhG,oBAAY,iBAAiB,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG;IACtD,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB;;;OAGG;IACH,aAAa,IAAI,MAAM,CAAC;IACxB,sBAAsB,IAAI,MAAM,CAAA;CACjC,CAAA;AAED,oBAAY,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AAUvD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAQlD;AAGD,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,iBAAiB,CAkCjG"}
|
|
@@ -32,14 +32,14 @@ function createMemoryLogReporter(options) {
|
|
|
32
32
|
return formatter;
|
|
33
33
|
},
|
|
34
34
|
set formatter(value) {
|
|
35
|
-
(0, utils_js_1.assertLogModeIsNotProduction)('set Reporter.formatter');
|
|
35
|
+
(0, utils_js_1.assertLogModeIsNotProduction)('set Reporter.formatter', Object.getOwnPropertyDescriptor(this, 'formatter').set);
|
|
36
36
|
formatter = value;
|
|
37
37
|
},
|
|
38
38
|
get filter() {
|
|
39
39
|
return filter;
|
|
40
40
|
},
|
|
41
41
|
set filter(value) {
|
|
42
|
-
(0, utils_js_1.assertLogModeIsNotProduction)('set Reporter.filter');
|
|
42
|
+
(0, utils_js_1.assertLogModeIsNotProduction)('set Reporter.filter', Object.getOwnPropertyDescriptor(this, 'filter').set);
|
|
43
43
|
filter = value;
|
|
44
44
|
},
|
|
45
45
|
logs: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryLogReporter.js","sourceRoot":"","sources":["../../ts/memory/MemoryLogReporter.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,kDAAsD;AAEtD,wCAA0D;AAC1D,6EAAiE;AAcjE,SAAS,mBAAmB;IAC1B,OAAO,SAAS,aAAa;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,+CAAiB,CAAC;aACpC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC;aAC9B,IAAI,CAAC,IAAI,CAAC,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAgB;IACjD,OAAO,IAAI,CAAC,GAAG,CAAC,+CAAiB,CAAC;SAC/B,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,UAAG,IAAA,yBAAc,EAAC,GAAG,CAAC,KAAK,CAAC,cAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAE,EAApD,CAAoD,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC;QACX,gCAAgC;QAChC,uCAAuC;QACvC,2CAA2C;SAC1C,OAAO,CAAC,mEAAmE,EAAE,EAAE,CAAC,CAAA;AACrF,CAAC;AARD,gDAQC;AAGD,SAAgB,uBAAuB,CAAC,OAAsC;IAC5E,IAAM,GAAG,GAAG,IAAA,oBAAQ,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAC,CAAW,IAAK,OAAA,CAAC,EAAD,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACtE,IAAA,EAAE,GAAK,GAAG,GAAR,CAAQ;IACZ,IAAA,SAAS,GAAa,GAAG,UAAhB,EAAE,MAAM,GAAK,GAAG,OAAR,CAAQ;IAC/B,OAAO;QACL,EAAE,IAAA;QACF,IAAI,SAAS;YACX,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,IAAI,SAAS,CAAC,KAAyB;YACrC,IAAA,uCAA4B,
|
|
1
|
+
{"version":3,"file":"MemoryLogReporter.js","sourceRoot":"","sources":["../../ts/memory/MemoryLogReporter.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,kDAAsD;AAEtD,wCAA0D;AAC1D,6EAAiE;AAcjE,SAAS,mBAAmB;IAC1B,OAAO,SAAS,aAAa;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,+CAAiB,CAAC;aACpC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC;aAC9B,IAAI,CAAC,IAAI,CAAC,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAgB;IACjD,OAAO,IAAI,CAAC,GAAG,CAAC,+CAAiB,CAAC;SAC/B,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,UAAG,IAAA,yBAAc,EAAC,GAAG,CAAC,KAAK,CAAC,cAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAE,EAApD,CAAoD,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC;QACX,gCAAgC;QAChC,uCAAuC;QACvC,2CAA2C;SAC1C,OAAO,CAAC,mEAAmE,EAAE,EAAE,CAAC,CAAA;AACrF,CAAC;AARD,gDAQC;AAGD,SAAgB,uBAAuB,CAAC,OAAsC;IAC5E,IAAM,GAAG,GAAG,IAAA,oBAAQ,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAC,CAAW,IAAK,OAAA,CAAC,EAAD,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACtE,IAAA,EAAE,GAAK,GAAG,GAAR,CAAQ;IACZ,IAAA,SAAS,GAAa,GAAG,UAAhB,EAAE,MAAM,GAAK,GAAG,OAAR,CAAQ;IAC/B,OAAO;QACL,EAAE,IAAA;QACF,IAAI,SAAS;YACX,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,IAAI,SAAS,CAAC,KAAyB;YACrC,IAAA,uCAA4B,EAC1B,wBAAwB,EACxB,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,WAAW,CAAE,CAAC,GAAI,CACzD,CAAA;YACD,SAAS,GAAG,KAAK,CAAA;QACnB,CAAC;QACD,IAAI,MAAM;YACR,OAAO,MAAM,CAAA;QACf,CAAC;QACD,IAAI,MAAM,CAAC,KAAgB;YACzB,IAAA,uCAA4B,EAC1B,qBAAqB,EACrB,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAE,CAAC,GAAI,CACtD,CAAA;YACD,MAAM,GAAG,KAAK,CAAA;QAChB,CAAC;QACD,IAAI,EAAE,EAAE;QACR,KAAK,YAAC,KAAK;YACT,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAM;YACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QAClC,CAAC;QACD,aAAa,EAAE,mBAAmB,EAAE;QACpC,sBAAsB,gBAAK,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC;KAClE,CAAA;AACH,CAAC;AAlCD,0DAkCC","sourcesContent":["import { required } from 'type-plus'\nimport { formatLogLevel } from '../formatter/index.js'\nimport { LogEntry, LogFilter, LogFormatter, LogReporter, LogReporterOptions } from '../types.js'\nimport { assertLogModeIsNotProduction } from '../utils.js'\nimport { toInspectLogEntry } from './toInspectStringForObject.js'\n\nexport type MemoryLogReporter = LogReporter<LogEntry> & {\n logs: LogEntry[],\n /**\n * Gets a simple log message for testing.\n * The message only contains arguments for each log entry.\n */\n getLogMessage(): string,\n getLogMessageWithLevel(): string\n}\n\nexport type MemoryLogFormatter = LogFormatter<LogEntry>\n\nfunction createGetLogMessage() {\n return function getLogMessage(this: { logs: LogEntry[] }) {\n return this.logs.map(toInspectLogEntry)\n .map(log => log.args.join(' '))\n .join('\\n')\n }\n}\n\nexport function toMessageWithLevel(logs: LogEntry[]) {\n return logs.map(toInspectLogEntry)\n .map(log => `${formatLogLevel(log.level)} ${log.args.join(' ')}`)\n .join('\\n')\n // if it has more than this log,\n // we assume it is running under tests,\n // and remove this log to simplify testing.\n .replace(/^\\(WARN\\) already configured for test, ignoring config\\(\\) call\\n/, '')\n}\n\n\nexport function createMemoryLogReporter(options?: LogReporterOptions<LogEntry>): MemoryLogReporter {\n const opt = required({ id: 'memory', formatter: (e: LogEntry) => e }, options)\n const { id } = opt\n let { formatter, filter } = opt\n return {\n id,\n get formatter() {\n return formatter\n },\n set formatter(value: MemoryLogFormatter) {\n assertLogModeIsNotProduction(\n 'set Reporter.formatter',\n Object.getOwnPropertyDescriptor(this, 'formatter')!.set!\n )\n formatter = value\n },\n get filter() {\n return filter\n },\n set filter(value: LogFilter) {\n assertLogModeIsNotProduction(\n 'set Reporter.filter',\n Object.getOwnPropertyDescriptor(this, 'filter')!.set!\n )\n filter = value\n },\n logs: [],\n write(entry) {\n if (filter && !filter(entry)) return\n this.logs.push(formatter(entry))\n },\n getLogMessage: createGetLogMessage(),\n getLogMessageWithLevel() { return toMessageWithLevel(this.logs) }\n }\n}\n"]}
|
|
@@ -19,6 +19,7 @@ var index_js_1 = require("../index.js");
|
|
|
19
19
|
var configForTest_js_1 = require("../configForTest.js");
|
|
20
20
|
var getLogger_js_1 = require("../getLogger.js");
|
|
21
21
|
var store_js_1 = require("../store.js");
|
|
22
|
+
var testUtil_js_1 = require("../testUtil.js");
|
|
22
23
|
describe('production checks', function () {
|
|
23
24
|
beforeEach(function () { return store_js_1.store.reset(); });
|
|
24
25
|
test('set formatter in production mode throws', function () {
|
|
@@ -26,11 +27,23 @@ describe('production checks', function () {
|
|
|
26
27
|
var reporter = (0, index_js_1.createMemoryLogReporter)();
|
|
27
28
|
assertron_1.default.throws(function () { reporter.formatter = function (e) { return e; }; }, index_js_1.ProhibitedDuringProduction);
|
|
28
29
|
});
|
|
30
|
+
it('set formatter throws with ssf at call site', function () {
|
|
31
|
+
(0, index_js_1.config)({ mode: 'production' });
|
|
32
|
+
var reporter = (0, index_js_1.createMemoryLogReporter)();
|
|
33
|
+
var err = assertron_1.default.throws(function () { reporter.formatter = function (e) { return e; }; }, index_js_1.ProhibitedDuringProduction);
|
|
34
|
+
(0, testUtil_js_1.assertSSF)(err, __filename);
|
|
35
|
+
});
|
|
29
36
|
test('set filter in production mode throws', function () {
|
|
30
37
|
(0, index_js_1.config)({ mode: 'production' });
|
|
31
38
|
var reporter = (0, index_js_1.createMemoryLogReporter)();
|
|
32
39
|
assertron_1.default.throws(function () { reporter.filter = function () { return true; }; }, index_js_1.ProhibitedDuringProduction);
|
|
33
40
|
});
|
|
41
|
+
it('set filter throws with ssf at call site', function () {
|
|
42
|
+
(0, index_js_1.config)({ mode: 'production' });
|
|
43
|
+
var reporter = (0, index_js_1.createMemoryLogReporter)();
|
|
44
|
+
var err = assertron_1.default.throws(function () { reporter.filter = function () { return true; }; }, index_js_1.ProhibitedDuringProduction);
|
|
45
|
+
(0, testUtil_js_1.assertSSF)(err, __filename);
|
|
46
|
+
});
|
|
34
47
|
describe('getLogMessageWithLevel()', function () {
|
|
35
48
|
test('the production log is omitted', function () {
|
|
36
49
|
var reporter = (0, configForTest_js_1.configForTest)().reporter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryLogReporter.spec.js","sourceRoot":"","sources":["../../ts/memory/MemoryLogReporter.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAyB;AACzB,wCAAoG;AACpG,wDAAmD;AACnD,gDAA2C;AAC3C,wCAAmC;AAEnC,QAAQ,CAAC,mBAAmB,EAAE;IAC5B,UAAU,CAAC,cAAM,OAAA,gBAAK,CAAC,KAAK,EAAE,EAAb,CAAa,CAAC,CAAA;IAC/B,IAAI,CAAC,yCAAyC,EAAE;QAC9C,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAA;QAC9B,IAAM,QAAQ,GAAG,IAAA,kCAAuB,GAAE,CAAA;QAE1C,mBAAC,CAAC,MAAM,CAAC,cAAQ,QAAQ,CAAC,SAAS,GAAG,UAAA,CAAC,IAAI,OAAA,CAAC,EAAD,CAAC,CAAA,CAAC,CAAC,EAAE,qCAA0B,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,sCAAsC,EAAE;QAC3C,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAA;QAC9B,IAAM,QAAQ,GAAG,IAAA,kCAAuB,GAAE,CAAA;QAC1C,mBAAC,CAAC,MAAM,CAAC,cAAQ,QAAQ,CAAC,MAAM,GAAG,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAA,CAAC,CAAC,EAAE,qCAA0B,CAAC,CAAA;IAC9E,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,0BAA0B,EAAE;QACnC,IAAI,CAAC,+BAA+B,EAAE;YAC5B,IAAA,QAAQ,GAAK,IAAA,gCAAa,GAAE,SAApB,CAAoB;YACpC,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAA;YAC9B,IAAA,wBAAS,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;YAC5C,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAA;QAChF,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,YAAY,EAAE;IACrB,UAAU,CAAC;QACT,gBAAK,CAAC,KAAK,EAAE,CAAA;QACb,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,8CAA8C,EAAE;QACnD,IAAM,QAAQ,GAAG,IAAA,kCAAuB,GAAE,CAAA;QAC1C,IAAM,KAAK,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAA;QACrF,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACrB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,iBAAiB,EAAE;QACtB,IAAM,QAAQ,GAAG,IAAA,kCAAuB,EAAC,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,CAAA;QACjE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,YAAY,EAAE;QACjB,IAAM,QAAQ,GAAG,IAAA,kCAAuB,EAAC,EAAE,MAAM,YAAC,KAAK,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAA,CAAC,CAAC,EAAE,CAAC,CAAA;QAC5F,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAA;QACtF,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAA;QAC1F,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,mBAAmB,EAAE;QACxB,IAAM,QAAQ,GAAG,IAAA,kCAAuB,GAAE,CAAA;QAC1C,IAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;QAC9B,QAAQ,CAAC,MAAM,GAAG,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,EAAE,KAAK,QAAQ,EAArB,CAAqB,CAAA;QAChD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,8CAA8C,EAAE;QACnD,IAAM,QAAQ,GAAG,IAAA,kCAAuB,EAAC;YACvC,SAAS,EAAE,UAAC,KAAK,IAAK,OAAA,uBACjB,KAAK,KACR,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAArC,CAAqC,CAAC,IAClE,EAHoB,CAGpB;SACH,CAAC,CAAA;QAEF,IAAM,KAAK,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAA;QACxF,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAErB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,sBAAsB,EAAE;QAC3B,IAAM,QAAQ,GAAG,IAAA,kCAAuB,GAAE,CAAA;QAC1C,IAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAA;QACpC,QAAQ,CAAC,SAAS,GAAG,UAAA,CAAC,IAAI,OAAA,uBAAM,CAAC,KAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAG,EAAlC,CAAkC,CAAA;QAC5D,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,kBAAkB,EAAE;QAC3B,IAAI,CAAC,iCAAiC,EAAE;YACtC,IAAM,QAAQ,GAAG,IAAA,kCAAuB,GAAE,CAAA;YAE1C,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,YAAY,EAAE;YACjB,IAAM,QAAQ,GAAG,IAAA,kCAAuB,GAAE,CAAA;YAC1C,IAAM,KAAK,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAA;YAC7F,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACrB,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;QAC7D,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,kBAAkB,EAAE;YACvB,IAAM,QAAQ,GAAG,IAAA,kCAAuB,GAAE,CAAA;YAC1C,IAAM,KAAK,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAA;YACxF,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACrB,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,wBAAwB,EAAE;QACjC,IAAI,CAAC,kBAAkB,EAAE;YACvB,IAAM,QAAQ,GAAG,IAAA,kCAAuB,GAAE,CAAA;YAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAA;YAC5F,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAA;YAC5F,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAA;QACjF,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import a from 'assertron'\nimport { config, createMemoryLogReporter, logLevels, ProhibitedDuringProduction } from '../index.js'\nimport { configForTest } from '../configForTest.js'\nimport { getLogger } from '../getLogger.js'\nimport { store } from '../store.js'\n\ndescribe('production checks', () => {\n beforeEach(() => store.reset())\n test('set formatter in production mode throws', () => {\n config({ mode: 'production' })\n const reporter = createMemoryLogReporter()\n\n a.throws(() => { reporter.formatter = e => e }, ProhibitedDuringProduction)\n })\n\n test('set filter in production mode throws', () => {\n config({ mode: 'production' })\n const reporter = createMemoryLogReporter()\n a.throws(() => { reporter.filter = () => true }, ProhibitedDuringProduction)\n })\n\n describe('getLogMessageWithLevel()', () => {\n test('the production log is omitted', () => {\n const { reporter } = configForTest()\n config({ mode: 'production' })\n getLogger('test').warn('some test warnings')\n expect(reporter.getLogMessageWithLevel()).toEqual(`(WARN) some test warnings`)\n })\n })\n})\n\ndescribe('unit tests', () => {\n beforeEach(() => {\n store.reset()\n config({ mode: 'test' })\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 reporter = createMemoryLogReporter({ filter(entry) { return entry.id !== 'secret' } })\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('can change filter', () => {\n const reporter = createMemoryLogReporter()\n const filter = reporter.filter\n reporter.filter = entry => entry.id !== 'secret'\n expect(reporter.filter).not.toEqual(filter)\n })\n\n test('formatter can be used to pre-process the log', () => {\n const reporter = createMemoryLogReporter({\n formatter: (entry) => ({\n ...entry,\n args: entry.args.map(arg => arg === 'secret' ? '<censored>' : arg)\n })\n })\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 test('can change formatter', () => {\n const reporter = createMemoryLogReporter()\n const formatter = reporter.formatter\n reporter.formatter = e => ({ ...e, args: e.args.reverse() })\n expect(reporter.formatter).not.toEqual(formatter)\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"]}
|
|
1
|
+
{"version":3,"file":"MemoryLogReporter.spec.js","sourceRoot":"","sources":["../../ts/memory/MemoryLogReporter.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import a from 'assertron'\nimport { config, createMemoryLogReporter, logLevels, ProhibitedDuringProduction } from '../index.js'\nimport { configForTest } from '../configForTest.js'\nimport { getLogger } from '../getLogger.js'\nimport { store } from '../store.js'\nimport { assertSSF } from '../testUtil.js'\n\ndescribe('production checks', () => {\n beforeEach(() => store.reset())\n test('set formatter in production mode throws', () => {\n config({ mode: 'production' })\n const reporter = createMemoryLogReporter()\n\n a.throws(() => { reporter.formatter = e => e }, ProhibitedDuringProduction)\n })\n it('set formatter throws with ssf at call site', () => {\n config({ mode: 'production' })\n const reporter = createMemoryLogReporter()\n\n const err = a.throws(() => { reporter.formatter = e => e }, ProhibitedDuringProduction)\n\n assertSSF(err, __filename)\n })\n\n test('set filter in production mode throws', () => {\n config({ mode: 'production' })\n const reporter = createMemoryLogReporter()\n a.throws(() => { reporter.filter = () => true }, ProhibitedDuringProduction)\n })\n\n it('set filter throws with ssf at call site', () => {\n config({ mode: 'production' })\n const reporter = createMemoryLogReporter()\n const err = a.throws(() => { reporter.filter = () => true }, ProhibitedDuringProduction)\n\n assertSSF(err, __filename)\n })\n\n describe('getLogMessageWithLevel()', () => {\n test('the production log is omitted', () => {\n const { reporter } = configForTest()\n config({ mode: 'production' })\n getLogger('test').warn('some test warnings')\n expect(reporter.getLogMessageWithLevel()).toEqual(`(WARN) some test warnings`)\n })\n })\n})\n\ndescribe('unit tests', () => {\n beforeEach(() => {\n store.reset()\n config({ mode: 'test' })\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 reporter = createMemoryLogReporter({ filter(entry) { return entry.id !== 'secret' } })\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('can change filter', () => {\n const reporter = createMemoryLogReporter()\n const filter = reporter.filter\n reporter.filter = entry => entry.id !== 'secret'\n expect(reporter.filter).not.toEqual(filter)\n })\n\n test('formatter can be used to pre-process the log', () => {\n const reporter = createMemoryLogReporter({\n formatter: (entry) => ({\n ...entry,\n args: entry.args.map(arg => arg === 'secret' ? '<censored>' : arg)\n })\n })\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 test('can change formatter', () => {\n const reporter = createMemoryLogReporter()\n const formatter = reporter.formatter\n reporter.formatter = e => ({ ...e, args: e.args.reverse() })\n expect(reporter.formatter).not.toEqual(formatter)\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"]}
|
package/cjs/testUtil.d.ts
CHANGED
package/cjs/testUtil.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testUtil.d.ts","sourceRoot":"","sources":["../ts/testUtil.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,WAErE;AAED,wBAAgB,iBAAiB;;;EAUhC"}
|
|
1
|
+
{"version":3,"file":"testUtil.d.ts","sourceRoot":"","sources":["../ts/testUtil.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,WAErE;AAED,wBAAgB,iBAAiB;;;EAUhC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,QAGrD"}
|
package/cjs/testUtil.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.captureWrittenLog = exports.rangeEntries = void 0;
|
|
6
|
+
exports.assertSSF = exports.captureWrittenLog = exports.rangeEntries = void 0;
|
|
7
7
|
var ramda_1 = __importDefault(require("ramda"));
|
|
8
8
|
var writeToReporters_js_1 = require("./writeToReporters.js");
|
|
9
9
|
function rangeEntries(start, end, expected) {
|
|
@@ -22,4 +22,10 @@ function captureWrittenLog() {
|
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
24
|
exports.captureWrittenLog = captureWrittenLog;
|
|
25
|
+
function assertSSF(err, filename) {
|
|
26
|
+
var _a;
|
|
27
|
+
var firstStackTrace = (_a = err.stack) === null || _a === void 0 ? void 0 : _a.split('\n')[1];
|
|
28
|
+
expect(firstStackTrace).toMatch(filename);
|
|
29
|
+
}
|
|
30
|
+
exports.assertSSF = assertSSF;
|
|
25
31
|
//# sourceMappingURL=testUtil.js.map
|
package/cjs/testUtil.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testUtil.js","sourceRoot":"","sources":["../ts/testUtil.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAqB;AAErB,6DAAwD;AAExD,SAAgB,YAAY,CAAC,KAAa,EAAE,GAAW,EAAE,QAAa;IACpE,OAAO,eAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAnB,CAAmB,CAAC,CAAA;AAC9D,CAAC;AAFD,oCAEC;AAED,SAAgB,iBAAiB;IAC/B,IAAM,IAAI,GAAe,EAAE,CAAA;IAC3B,IAAM,IAAI,GAAG,sCAAgB,CAAC,EAAE,CAAA;IAChC,sCAAgB,CAAC,EAAE,GAAG,UAAA,CAAC,IAAI,OAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAZ,CAAY,CAAA;IACvC,OAAO;QACL,IAAI,MAAA;QACJ,KAAK;YACH,sCAAgB,CAAC,EAAE,GAAG,IAAI,CAAA;QAC5B,CAAC;KACF,CAAA;AACH,CAAC;AAVD,8CAUC","sourcesContent":["import R from 'ramda'\nimport { LogEntry } from './types.js'\nimport { writeToReporters } from './writeToReporters.js'\n\nexport function rangeEntries(start: number, end: number, expected: any) {\n return R.range(start, end).map(value => ([value, expected]))\n}\n\nexport function captureWrittenLog() {\n const logs: LogEntry[] = []\n const orig = writeToReporters.fn\n writeToReporters.fn = l => logs.push(l)\n return {\n logs,\n reset() {\n writeToReporters.fn = orig\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"testUtil.js","sourceRoot":"","sources":["../ts/testUtil.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAqB;AAErB,6DAAwD;AAExD,SAAgB,YAAY,CAAC,KAAa,EAAE,GAAW,EAAE,QAAa;IACpE,OAAO,eAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAnB,CAAmB,CAAC,CAAA;AAC9D,CAAC;AAFD,oCAEC;AAED,SAAgB,iBAAiB;IAC/B,IAAM,IAAI,GAAe,EAAE,CAAA;IAC3B,IAAM,IAAI,GAAG,sCAAgB,CAAC,EAAE,CAAA;IAChC,sCAAgB,CAAC,EAAE,GAAG,UAAA,CAAC,IAAI,OAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAZ,CAAY,CAAA;IACvC,OAAO;QACL,IAAI,MAAA;QACJ,KAAK;YACH,sCAAgB,CAAC,EAAE,GAAG,IAAI,CAAA;QAC5B,CAAC;KACF,CAAA;AACH,CAAC;AAVD,8CAUC;AAED,SAAgB,SAAS,CAAC,GAAU,EAAE,QAAgB;;IACpD,IAAM,eAAe,GAAG,MAAA,GAAG,CAAC,KAAK,0CAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACjD,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;AAC3C,CAAC;AAHD,8BAGC","sourcesContent":["import R from 'ramda'\nimport { LogEntry } from './types.js'\nimport { writeToReporters } from './writeToReporters.js'\n\nexport function rangeEntries(start: number, end: number, expected: any) {\n return R.range(start, end).map(value => ([value, expected]))\n}\n\nexport function captureWrittenLog() {\n const logs: LogEntry[] = []\n const orig = writeToReporters.fn\n writeToReporters.fn = l => logs.push(l)\n return {\n logs,\n reset() {\n writeToReporters.fn = orig\n }\n }\n}\n\nexport function assertSSF(err: Error, filename: string) {\n const firstStackTrace = err.stack?.split('\\n')[1]\n expect(firstStackTrace).toMatch(filename)\n}\n"]}
|
package/cjs/utils.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { AnyFunction } from 'type-plus';
|
|
1
2
|
/**
|
|
2
3
|
* Helper function to assert the system is not in production mode.
|
|
3
4
|
*/
|
|
4
|
-
export declare function assertLogModeIsNotProduction(action: string): void;
|
|
5
|
+
export declare function assertLogModeIsNotProduction(action: string, ssf: AnyFunction): void;
|
|
5
6
|
//# sourceMappingURL=utils.d.ts.map
|
package/cjs/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../ts/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../ts/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAIvC;;GAEG;AAEH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,QAE5E"}
|
package/cjs/utils.js
CHANGED
|
@@ -6,9 +6,10 @@ var store_js_1 = require("./store.js");
|
|
|
6
6
|
/**
|
|
7
7
|
* Helper function to assert the system is not in production mode.
|
|
8
8
|
*/
|
|
9
|
-
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
10
|
+
function assertLogModeIsNotProduction(action, ssf) {
|
|
10
11
|
if (store_js_1.store.value.mode === 'production')
|
|
11
|
-
throw new errors_js_1.ProhibitedDuringProduction(action);
|
|
12
|
+
throw new errors_js_1.ProhibitedDuringProduction(action, { ssf: ssf });
|
|
12
13
|
}
|
|
13
14
|
exports.assertLogModeIsNotProduction = assertLogModeIsNotProduction;
|
|
14
15
|
//# sourceMappingURL=utils.js.map
|
package/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../ts/utils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../ts/utils.ts"],"names":[],"mappings":";;;AACA,yCAAwD;AACxD,uCAAkC;AAElC;;GAEG;AACH,wDAAwD;AACxD,SAAgB,4BAA4B,CAAC,MAAc,EAAE,GAAgB;IAC3E,IAAI,gBAAK,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY;QAAE,MAAM,IAAI,sCAA0B,CAAC,MAAM,EAAE,EAAE,GAAG,KAAA,EAAE,CAAC,CAAA;AAC9F,CAAC;AAFD,oEAEC","sourcesContent":["import { AnyFunction } from 'type-plus'\nimport { ProhibitedDuringProduction } from './errors.js'\nimport { store } from './store.js'\n\n/**\n * Helper function to assert the system is not in production mode.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertLogModeIsNotProduction(action: string, ssf: AnyFunction) {\n if (store.value.mode === 'production') throw new ProhibitedDuringProduction(action, { ssf })\n}\n"]}
|