@verdaccio/logger 6.0.0-6-next.4 → 6.0.0-6-next.5

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @verdaccio/logger
2
2
 
3
+ ## 6.0.0-6-next.5
4
+
5
+ ### Patch Changes
6
+
7
+ - 2c594910: do not show deprecation warning on default logger config
8
+
3
9
  ## 6.0.0-6-next.4
4
10
 
5
11
  ### Major Changes
package/build/logger.js CHANGED
@@ -97,7 +97,7 @@ const DEFAULT_LOGGER_CONF = {
97
97
  level: 'http'
98
98
  };
99
99
 
100
- function setup(options = [DEFAULT_LOGGER_CONF]) {
100
+ function setup(options = DEFAULT_LOGGER_CONF) {
101
101
  var _loggerConfig;
102
102
 
103
103
  debug('setup logger');
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/logger.ts"],"names":["debug","logger","isProd","process","env","NODE_ENV","DEFAULT_LOG_FORMAT","createLogger","options","level","destination","pino","format","prettyPrintOptions","suppressFlushSyncWarning","_","isNil","pinoConfig","customLevels","http","serializers","err","stdSerializers","req","res","Object","assign","prettyPrint","levelFirst","prettyStamp","prettifier","require","DEBUG","on","lvl","val","prevLvl","prevVal","getLogger","emitWarning","DEFAULT_LOGGER_CONF","type","setup","isLegacyConf","Array","isArray","deprecateMessage","loggerConfig","path","finalHandler","final","finalLogger","event","info","error","exit"],"mappings":";;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;AAEA,MAAMA,KAAK,GAAG,oBAAW,kBAAX,CAAd;AAEO,IAAIC,MAAJ;;;AAEP,SAASC,MAAT,GAAkB;AAChB,SAAOC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAhC;AACD;;AAED,MAAMC,kBAAkB,GAAGJ,MAAM,KAAK,MAAL,GAAc,QAA/C;;AAUO,SAASK,YAAT,CACLC,OAAO,GAAG;AAAEC,EAAAA,KAAK,EAAE;AAAT,CADL,EAELC,WAAW,GAAGC,cAAKD,WAAL,CAAiB,CAAjB,CAFT,EAGLE,MAAiB,GAAGN,kBAHf,EAILO,kBAAkB,GAAG;AACnB;AACA;AACAC,EAAAA,wBAAwB,EAAE;AAHP,CAJhB,EASL;AACA,MAAIC,gBAAEC,KAAF,CAAQJ,MAAR,CAAJ,EAAqB;AACnBA,IAAAA,MAAM,GAAGN,kBAAT;AACD;;AAED,MAAIW,UAAU;AACZC,IAAAA,YAAY,EAAE;AACZC,MAAAA,IAAI,EAAE;AADM;AADF,KAITX,OAJS;AAKZC,IAAAA,KAAK,EAAED,OAAO,CAACC,KALH;AAMZW,IAAAA,WAAW,EAAE;AACXC,MAAAA,GAAG,EAAEV,cAAKW,cAAL,CAAoBD,GADd;AAEXE,MAAAA,GAAG,EAAEZ,cAAKW,cAAL,CAAoBC,GAFd;AAGXC,MAAAA,GAAG,EAAEb,cAAKW,cAAL,CAAoBE;AAHd;AAND,IAAd;;AAaAxB,EAAAA,KAAK,CAAC,oBAAD,EAAuB,CAACE,MAAM,EAA9B,CAAL,CAlBA,CAmBA;;AACA,MAAI,CAACU,MAAM,KAAKN,kBAAX,IAAiCM,MAAM,KAAK,MAA7C,KAAwDV,MAAM,OAAO,KAAzE,EAAgF;AAC9Ee,IAAAA,UAAU,GAAGQ,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBT,UAAlB,EAA8B;AACzC;AACA;AACAU,MAAAA,WAAW;AACTC,QAAAA,UAAU,EAAE,IADH;AAETC,QAAAA,WAAW,EAAEjB,MAAM,KAAK;AAFf,SAGNC,kBAHM,CAH8B;AAQzCiB,MAAAA,UAAU,EAAEC,OAAO,CAAC,4BAAD;AARsB,KAA9B,CAAb;AAUD;;AACD,QAAM9B,MAAM,GAAG,mBAAKgB,UAAL,EAAiBP,WAAjB,CAAf;;AAEA,MAAIP,OAAO,CAACC,GAAR,CAAY4B,KAAhB,EAAuB;AACrB/B,IAAAA,MAAM,CAACgC,EAAP,CAAU,cAAV,EAA0B,CAACC,GAAD,EAAMC,GAAN,EAAWC,OAAX,EAAoBC,OAApB,KAAgC;AACxDrC,MAAAA,KAAK,CAAC,gCAAD,EAAmCkC,GAAnC,EAAwCC,GAAxC,EAA6CC,OAA7C,EAAsDC,OAAtD,CAAL;AACD,KAFD;AAGD;;AAED,SAAOpC,MAAP;AACD;;AAEM,SAASqC,SAAT,GAAqB;AAC1B,MAAIvB,gBAAEC,KAAF,CAAQf,MAAR,CAAJ,EAAqB;AACnB;AACAE,IAAAA,OAAO,CAACoC,WAAR,CAAoB,uBAApB;AACA;AACD;;AAED,SAAOtC,MAAP;AACD;;AAED,MAAMuC,mBAAqC,GAAG;AAC5CC,EAAAA,IAAI,EAAE,QADsC;AAE5C7B,EAAAA,MAAM,EAAE,QAFoC;AAG5CH,EAAAA,KAAK,EAAE;AAHqC,CAA9C;;AAgBO,SAASiC,KAAT,CAAelC,OAAwC,GAAG,CAACgC,mBAAD,CAA1D,EAAiF;AAAA;;AACtFxC,EAAAA,KAAK,CAAC,cAAD,CAAL;AACA,QAAM2C,YAAY,GAAGC,KAAK,CAACC,OAAN,CAAcrC,OAAd,CAArB;;AACA,MAAImC,YAAJ,EAAkB;AAChB,UAAMG,gBAAgB,GACpB,2FADF;AAEA3C,IAAAA,OAAO,CAACoC,WAAR,CAAoBO,gBAApB;AACD,GAPqF,CAStF;AACA;AACA;;;AACA,MAAIC,YAAY,GAAGJ,YAAY,GAAGnC,OAAO,CAAC,CAAD,CAAV,GAAgBA,OAA/C;;AACA,MAAI,mBAACuC,YAAD,0CAAC,cAActC,KAAf,CAAJ,EAA0B;AACxBsC,IAAAA,YAAY,GAAGtB,MAAM,CAACC,MAAP,CACb,EADa,EAEb;AACEjB,MAAAA,KAAK,EAAE;AADT,KAFa,EAKbsC,YALa,CAAf;AAOD;;AACD,QAAM9B,UAAU,GAAG;AAAER,IAAAA,KAAK,EAAEsC,YAAY,CAACtC;AAAtB,GAAnB;;AACA,MAAIsC,YAAY,CAACN,IAAb,KAAsB,MAA1B,EAAkC;AAChCzC,IAAAA,KAAK,CAAC,sBAAD,CAAL;AACA,qBAAAC,MAAM,GAAGM,YAAY,CAACU,UAAD,EAAaN,cAAKD,WAAL,CAAiBqC,YAAY,CAACC,IAA9B,CAAb,EAAkDD,YAAY,CAACnC,MAA/D,CAArB;AACD,GAHD,MAGO,IAAImC,YAAY,CAACN,IAAb,KAAsB,eAA1B,EAA2C;AAChDtC,IAAAA,OAAO,CAACoC,WAAR,CACE,8EADF;AAGAvC,IAAAA,KAAK,CAAC,wBAAD,CAAL;AACA,qBAAAC,MAAM,GAAGM,YAAY,CAACU,UAAD,EAAaN,cAAKD,WAAL,CAAiB,CAAjB,CAAb,EAAkCqC,YAAY,CAACnC,MAA/C,CAArB;AACD,GANM,MAMA;AACLZ,IAAAA,KAAK,CAAC,wBAAD,CAAL;AACA,qBAAAC,MAAM,GAAGM,YAAY,CAACU,UAAD,EAAaN,cAAKD,WAAL,CAAiB,CAAjB,CAAb,EAAkCqC,YAAY,CAACnC,MAA/C,CAArB;AACD;;AAED,MAAIV,MAAM,EAAV,EAAc;AACZ;AACA,UAAM+C,YAAY,GAAGtC,cAAKuC,KAAL,CAAWjD,MAAX,EAAmB,CAACoB,GAAD,EAAM8B,WAAN,EAAmBC,KAAnB,KAA6B;AACnED,MAAAA,WAAW,CAACE,IAAZ,CAAkB,GAAED,KAAM,SAA1B;;AACA,UAAI/B,GAAJ,EAAS;AACP8B,QAAAA,WAAW,CAACG,KAAZ,CAAkBjC,GAAlB,EAAuB,mBAAvB;AACD;;AACDlB,MAAAA,OAAO,CAACoD,IAAR,CAAalC,GAAG,GAAG,CAAH,GAAO,CAAvB;AACD,KANoB,CAArB;;AAQAlB,IAAAA,OAAO,CAAC8B,EAAR,CAAW,mBAAX,EAAiCZ,GAAD,IAAS4B,YAAY,CAAC5B,GAAD,EAAM,mBAAN,CAArD;AACAlB,IAAAA,OAAO,CAAC8B,EAAR,CAAW,oBAAX,EAAkCZ,GAAD,IAAS4B,YAAY,CAAC5B,GAAD,EAAe,oBAAf,CAAtD;AACAlB,IAAAA,OAAO,CAAC8B,EAAR,CAAW,YAAX,EAAyB,MAAMgB,YAAY,CAAC,IAAD,EAAO,YAAP,CAA3C;AACA9C,IAAAA,OAAO,CAAC8B,EAAR,CAAW,MAAX,EAAmB,MAAMgB,YAAY,CAAC,IAAD,EAAO,MAAP,CAArC;AACA9C,IAAAA,OAAO,CAAC8B,EAAR,CAAW,mBAAX,EAAiCZ,GAAD,IAAS4B,YAAY,CAAC5B,GAAD,EAAM,mBAAN,CAArD;AACAlB,IAAAA,OAAO,CAAC8B,EAAR,CAAW,QAAX,EAAqB,MAAMgB,YAAY,CAAC,IAAD,EAAO,QAAP,CAAvC;AACA9C,IAAAA,OAAO,CAAC8B,EAAR,CAAW,SAAX,EAAsB,MAAMgB,YAAY,CAAC,IAAD,EAAO,SAAP,CAAxC;AACA9C,IAAAA,OAAO,CAAC8B,EAAR,CAAW,SAAX,EAAsB,MAAMgB,YAAY,CAAC,IAAD,EAAO,SAAP,CAAxC;AACD;;AAED,SAAOhD,MAAP;AACD","sourcesContent":["import pino from 'pino';\nimport _ from 'lodash';\nimport buildDebug from 'debug';\n\nconst debug = buildDebug('verdaccio:logger');\n\nexport let logger;\n\nfunction isProd() {\n return process.env.NODE_ENV === 'production';\n}\n\nconst DEFAULT_LOG_FORMAT = isProd() ? 'json' : 'pretty';\n\nexport type LogPlugin = {\n dest: string;\n options?: any[];\n};\n\nexport type LogType = 'file' | 'stdout';\nexport type LogFormat = 'json' | 'pretty-timestamped' | 'pretty';\n\nexport function createLogger(\n options = { level: 'http' },\n destination = pino.destination(1),\n format: LogFormat = DEFAULT_LOG_FORMAT,\n prettyPrintOptions = {\n // we hide warning since the prettifier should not be used in production\n // https://getpino.io/#/docs/pretty?id=prettifier-api\n suppressFlushSyncWarning: true,\n }\n) {\n if (_.isNil(format)) {\n format = DEFAULT_LOG_FORMAT;\n }\n\n let pinoConfig = {\n customLevels: {\n http: 25,\n },\n ...options,\n level: options.level,\n serializers: {\n err: pino.stdSerializers.err,\n req: pino.stdSerializers.req,\n res: pino.stdSerializers.res,\n },\n };\n\n debug('has prettifier? %o', !isProd());\n // pretty logs are not allowed in production for performance reasons\n if ((format === DEFAULT_LOG_FORMAT || format !== 'json') && isProd() === false) {\n pinoConfig = Object.assign({}, pinoConfig, {\n // more info\n // https://github.com/pinojs/pino-pretty/issues/37\n prettyPrint: {\n levelFirst: true,\n prettyStamp: format === 'pretty-timestamped',\n ...prettyPrintOptions,\n },\n prettifier: require('@verdaccio/logger-prettify'),\n });\n }\n const logger = pino(pinoConfig, destination);\n\n if (process.env.DEBUG) {\n logger.on('level-change', (lvl, val, prevLvl, prevVal) => {\n debug('%s (%d) was changed to %s (%d)', lvl, val, prevLvl, prevVal);\n });\n }\n\n return logger;\n}\n\nexport function getLogger() {\n if (_.isNil(logger)) {\n // FIXME: not sure about display here a warning\n process.emitWarning('logger is not defined');\n return;\n }\n\n return logger;\n}\n\nconst DEFAULT_LOGGER_CONF: LoggerConfigItem = {\n type: 'stdout',\n format: 'pretty',\n level: 'http',\n};\n\nexport type LoggerConfigItem = {\n type?: LogType;\n plugin?: LogPlugin;\n format?: LogFormat;\n path?: string;\n level?: string;\n};\n\nexport type LoggerConfig = LoggerConfigItem[];\n\nexport function setup(options: LoggerConfig | LoggerConfigItem = [DEFAULT_LOGGER_CONF]) {\n debug('setup logger');\n const isLegacyConf = Array.isArray(options);\n if (isLegacyConf) {\n const deprecateMessage =\n 'deprecate: multiple logger configuration is deprecated, please check the migration guide.';\n process.emitWarning(deprecateMessage);\n }\n\n // verdaccio 5 does not allow multiple logger configuration\n // backward compatible, pick only the first option\n // next major will thrown an error\n let loggerConfig = isLegacyConf ? options[0] : options;\n if (!loggerConfig?.level) {\n loggerConfig = Object.assign(\n {},\n {\n level: 'http',\n },\n loggerConfig\n );\n }\n const pinoConfig = { level: loggerConfig.level };\n if (loggerConfig.type === 'file') {\n debug('logging file enabled');\n logger = createLogger(pinoConfig, pino.destination(loggerConfig.path), loggerConfig.format);\n } else if (loggerConfig.type === 'rotating-file') {\n process.emitWarning(\n 'rotating-file type is not longer supported, consider use [logrotate] instead'\n );\n debug('logging stdout enabled');\n logger = createLogger(pinoConfig, pino.destination(1), loggerConfig.format);\n } else {\n debug('logging stdout enabled');\n logger = createLogger(pinoConfig, pino.destination(1), loggerConfig.format);\n }\n\n if (isProd()) {\n // why only on prod? https://github.com/pinojs/pino/issues/920#issuecomment-710807667\n const finalHandler = pino.final(logger, (err, finalLogger, event) => {\n finalLogger.info(`${event} caught`);\n if (err) {\n finalLogger.error(err, 'error caused exit');\n }\n process.exit(err ? 1 : 0);\n });\n\n process.on('uncaughtException', (err) => finalHandler(err, 'uncaughtException'));\n process.on('unhandledRejection', (err) => finalHandler(err as Error, 'unhandledRejection'));\n process.on('beforeExit', () => finalHandler(null, 'beforeExit'));\n process.on('exit', () => finalHandler(null, 'exit'));\n process.on('uncaughtException', (err) => finalHandler(err, 'uncaughtException'));\n process.on('SIGINT', () => finalHandler(null, 'SIGINT'));\n process.on('SIGQUIT', () => finalHandler(null, 'SIGQUIT'));\n process.on('SIGTERM', () => finalHandler(null, 'SIGTERM'));\n }\n\n return logger;\n}\n"],"file":"logger.js"}
1
+ {"version":3,"sources":["../src/logger.ts"],"names":["debug","logger","isProd","process","env","NODE_ENV","DEFAULT_LOG_FORMAT","createLogger","options","level","destination","pino","format","prettyPrintOptions","suppressFlushSyncWarning","_","isNil","pinoConfig","customLevels","http","serializers","err","stdSerializers","req","res","Object","assign","prettyPrint","levelFirst","prettyStamp","prettifier","require","DEBUG","on","lvl","val","prevLvl","prevVal","getLogger","emitWarning","DEFAULT_LOGGER_CONF","type","setup","isLegacyConf","Array","isArray","deprecateMessage","loggerConfig","path","finalHandler","final","finalLogger","event","info","error","exit"],"mappings":"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","sourcesContent":["import pino from 'pino';\nimport _ from 'lodash';\nimport buildDebug from 'debug';\n\nconst debug = buildDebug('verdaccio:logger');\n\nexport let logger;\n\nfunction isProd() {\n return process.env.NODE_ENV === 'production';\n}\n\nconst DEFAULT_LOG_FORMAT = isProd() ? 'json' : 'pretty';\n\nexport type LogPlugin = {\n dest: string;\n options?: any[];\n};\n\nexport type LogType = 'file' | 'stdout';\nexport type LogFormat = 'json' | 'pretty-timestamped' | 'pretty';\n\nexport function createLogger(\n options = { level: 'http' },\n destination = pino.destination(1),\n format: LogFormat = DEFAULT_LOG_FORMAT,\n prettyPrintOptions = {\n // we hide warning since the prettifier should not be used in production\n // https://getpino.io/#/docs/pretty?id=prettifier-api\n suppressFlushSyncWarning: true,\n }\n) {\n if (_.isNil(format)) {\n format = DEFAULT_LOG_FORMAT;\n }\n\n let pinoConfig = {\n customLevels: {\n http: 25,\n },\n ...options,\n level: options.level,\n serializers: {\n err: pino.stdSerializers.err,\n req: pino.stdSerializers.req,\n res: pino.stdSerializers.res,\n },\n };\n\n debug('has prettifier? %o', !isProd());\n // pretty logs are not allowed in production for performance reasons\n if ((format === DEFAULT_LOG_FORMAT || format !== 'json') && isProd() === false) {\n pinoConfig = Object.assign({}, pinoConfig, {\n // more info\n // https://github.com/pinojs/pino-pretty/issues/37\n prettyPrint: {\n levelFirst: true,\n prettyStamp: format === 'pretty-timestamped',\n ...prettyPrintOptions,\n },\n prettifier: require('@verdaccio/logger-prettify'),\n });\n }\n const logger = pino(pinoConfig, destination);\n\n if (process.env.DEBUG) {\n logger.on('level-change', (lvl, val, prevLvl, prevVal) => {\n debug('%s (%d) was changed to %s (%d)', lvl, val, prevLvl, prevVal);\n });\n }\n\n return logger;\n}\n\nexport function getLogger() {\n if (_.isNil(logger)) {\n // FIXME: not sure about display here a warning\n process.emitWarning('logger is not defined');\n return;\n }\n\n return logger;\n}\n\nconst DEFAULT_LOGGER_CONF: LoggerConfigItem = {\n type: 'stdout',\n format: 'pretty',\n level: 'http',\n};\n\nexport type LoggerConfigItem = {\n type?: LogType;\n plugin?: LogPlugin;\n format?: LogFormat;\n path?: string;\n level?: string;\n};\n\nexport type LoggerConfig = LoggerConfigItem[];\n\nexport function setup(options: LoggerConfig | LoggerConfigItem = DEFAULT_LOGGER_CONF) {\n debug('setup logger');\n const isLegacyConf = Array.isArray(options);\n if (isLegacyConf) {\n const deprecateMessage =\n 'deprecate: multiple logger configuration is deprecated, please check the migration guide.';\n process.emitWarning(deprecateMessage);\n }\n\n // verdaccio 5 does not allow multiple logger configuration\n // backward compatible, pick only the first option\n // next major will thrown an error\n let loggerConfig = isLegacyConf ? options[0] : options;\n if (!loggerConfig?.level) {\n loggerConfig = Object.assign(\n {},\n {\n level: 'http',\n },\n loggerConfig\n );\n }\n const pinoConfig = { level: loggerConfig.level };\n if (loggerConfig.type === 'file') {\n debug('logging file enabled');\n logger = createLogger(pinoConfig, pino.destination(loggerConfig.path), loggerConfig.format);\n } else if (loggerConfig.type === 'rotating-file') {\n process.emitWarning(\n 'rotating-file type is not longer supported, consider use [logrotate] instead'\n );\n debug('logging stdout enabled');\n logger = createLogger(pinoConfig, pino.destination(1), loggerConfig.format);\n } else {\n debug('logging stdout enabled');\n logger = createLogger(pinoConfig, pino.destination(1), loggerConfig.format);\n }\n\n if (isProd()) {\n // why only on prod? https://github.com/pinojs/pino/issues/920#issuecomment-710807667\n const finalHandler = pino.final(logger, (err, finalLogger, event) => {\n finalLogger.info(`${event} caught`);\n if (err) {\n finalLogger.error(err, 'error caused exit');\n }\n process.exit(err ? 1 : 0);\n });\n\n process.on('uncaughtException', (err) => finalHandler(err, 'uncaughtException'));\n process.on('unhandledRejection', (err) => finalHandler(err as Error, 'unhandledRejection'));\n process.on('beforeExit', () => finalHandler(null, 'beforeExit'));\n process.on('exit', () => finalHandler(null, 'exit'));\n process.on('uncaughtException', (err) => finalHandler(err, 'uncaughtException'));\n process.on('SIGINT', () => finalHandler(null, 'SIGINT'));\n process.on('SIGQUIT', () => finalHandler(null, 'SIGQUIT'));\n process.on('SIGTERM', () => finalHandler(null, 'SIGTERM'));\n }\n\n return logger;\n}\n"],"file":"logger.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/logger",
3
- "version": "6.0.0-6-next.4",
3
+ "version": "6.0.0-6-next.5",
4
4
  "description": "logger",
5
5
  "main": "./build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -33,11 +33,11 @@
33
33
  "@verdaccio/logger-prettify": "6.0.0-alpha.3",
34
34
  "debug": "4.3.2",
35
35
  "lodash": "4.17.21",
36
- "pino": "6.13.1"
36
+ "pino": "6.2.1"
37
37
  },
38
38
  "devDependencies": {
39
- "@types/pino": "6.3.11",
40
- "@verdaccio/types": "11.0.0-6-next.7"
39
+ "@types/pino": "6.3.3",
40
+ "@verdaccio/types": "11.0.0-6-next.8"
41
41
  },
42
42
  "funding": {
43
43
  "type": "opencollective",
package/src/logger.ts CHANGED
@@ -98,7 +98,7 @@ export type LoggerConfigItem = {
98
98
 
99
99
  export type LoggerConfig = LoggerConfigItem[];
100
100
 
101
- export function setup(options: LoggerConfig | LoggerConfigItem = [DEFAULT_LOGGER_CONF]) {
101
+ export function setup(options: LoggerConfig | LoggerConfigItem = DEFAULT_LOGGER_CONF) {
102
102
  debug('setup logger');
103
103
  const isLegacyConf = Array.isArray(options);
104
104
  if (isLegacyConf) {
@@ -13,4 +13,29 @@ describe('logger', () => {
13
13
  // FIXME: check expect
14
14
  // expect(spyOn).toHaveBeenCalledTimes(2);
15
15
  });
16
+
17
+ test('throw deprecation warning if multiple loggers configured', () => {
18
+ const spy = jest.spyOn(process, 'emitWarning');
19
+ setup([
20
+ {
21
+ level: 'info',
22
+ },
23
+ {
24
+ level: 'http',
25
+ },
26
+ ]);
27
+ expect(spy).toHaveBeenCalledWith(
28
+ 'deprecate: multiple logger configuration is deprecated, please check the migration guide.'
29
+ );
30
+ spy.mockRestore();
31
+ });
32
+
33
+ test('regression: do not throw deprecation warning if no logger config is provided', () => {
34
+ const spy = jest.spyOn(process, 'emitWarning');
35
+ setup();
36
+ expect(spy).not.toHaveBeenCalledWith(
37
+ 'deprecate: multiple logger configuration is deprecated, please check the migration guide.'
38
+ );
39
+ spy.mockRestore();
40
+ });
16
41
  });