@unchainedshop/logger 2.0.0-rc.4 → 2.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/jest.config.js CHANGED
@@ -11,4 +11,7 @@ export default {
11
11
  },
12
12
  ],
13
13
  },
14
+ moduleNameMapper: {
15
+ '(.+)\\.js': '$1',
16
+ },
14
17
  };
@@ -4,7 +4,7 @@ import { LogLevel } from './logger.types.js';
4
4
  const require = createRequire(import.meta.url);
5
5
  const { stringify } = require('safe-stable-stringify');
6
6
  const { DEBUG = '', LOG_LEVEL = LogLevel.Info, UNCHAINED_LOG_FORMAT = 'unchained' } = process.env;
7
- const { combine, label, timestamp, colorize, printf, json } = format;
7
+ const { combine, colorize, json } = format;
8
8
  const debugStringContainsModule = (debugString, moduleName) => {
9
9
  if (!debugString)
10
10
  return false;
@@ -24,13 +24,20 @@ const debugStringContainsModule = (debugString, moduleName) => {
24
24
  }, undefined);
25
25
  return loggingMatched || false;
26
26
  };
27
- const myFormat = printf(({ level, message, label: _label, timestamp: _timestamp, ...rest }) => {
27
+ const myFormat = format.printf(({ level, message, label, timestamp, stack, ...rest }) => {
28
28
  const otherPropsString = stringify(rest);
29
- return `[${_label}] ${level}: ${message} ${otherPropsString}`;
29
+ return [
30
+ `${timestamp} [${label}] ${level}:`,
31
+ `${message}`,
32
+ `${otherPropsString}`,
33
+ stack ? `\n${stack}` : null,
34
+ ]
35
+ .filter(Boolean)
36
+ .join(' ');
30
37
  });
31
38
  const UnchainedLogFormats = {
32
- unchained: (moduleName) => combine(timestamp(), label({ label: moduleName }), colorize(), myFormat),
33
- json,
39
+ unchained: combine(colorize(), myFormat),
40
+ json: json(),
34
41
  };
35
42
  if (!UnchainedLogFormats[UNCHAINED_LOG_FORMAT.toLowerCase()]) {
36
43
  throw new Error(`UNCHAINED_LOG_FORMAT is invalid, use one of ${Object.keys(UnchainedLogFormats).join(',')}`);
@@ -39,9 +46,10 @@ export { transports, format };
39
46
  export const createLogger = (moduleName, moreTransports = []) => {
40
47
  const loggingMatched = debugStringContainsModule(DEBUG, moduleName);
41
48
  return createWinstonLogger({
49
+ format: format.combine(format.errors({ stack: process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test' }), format.timestamp(), format.label({ label: moduleName })),
42
50
  transports: [
43
51
  new transports.Console({
44
- format: UnchainedLogFormats[UNCHAINED_LOG_FORMAT](moduleName),
52
+ format: UnchainedLogFormats[UNCHAINED_LOG_FORMAT],
45
53
  stderrLevels: [LogLevel.Error],
46
54
  consoleWarnLevels: [LogLevel.Warning],
47
55
  level: loggingMatched ? LogLevel.Debug : LOG_LEVEL,
@@ -1 +1 @@
1
- {"version":3,"file":"createLogger.js","sourceRoot":"","sources":["../src/createLogger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createLogger.js","sourceRoot":"","sources":["../src/createLogger.ts"],"names":[],"mappings":"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"}
package/lib/log.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import winston from 'winston';
2
2
  import { LogOptions } from './logger.types.js';
3
- export declare const log: (message: string, options?: LogOptions) => winston.Logger;
3
+ export declare const log: (message: string | Error, options?: LogOptions) => winston.Logger;
package/lib/log.js CHANGED
@@ -2,6 +2,9 @@ import { LogLevel } from './logger.types.js';
2
2
  import { createLogger } from './createLogger.js';
3
3
  const logger = createLogger('unchained');
4
4
  export const log = (message, options) => {
5
+ if (!options?.level) {
6
+ return logger.info(message, options);
7
+ }
5
8
  const { level = LogLevel.Info, ...meta } = options || {};
6
9
  return logger.log(level, message, meta);
7
10
  };
package/lib/log.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAc,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,OAAoB,EAAkB,EAAE;IAC3E,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACzD,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC,CAAC"}
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAc,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,OAAuB,EAAE,OAAoB,EAAkB,EAAE;IACnF,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;QACnB,OAAO,MAAM,CAAC,IAAI,CAAC,OAAc,EAAE,OAAO,CAAC,CAAC;KAC7C;IACD,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACzD,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,OAAc,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/logger",
3
- "version": "2.0.0-rc.4",
3
+ "version": "2.0.1",
4
4
  "main": "lib/logger-index.js",
5
5
  "exports": {
6
6
  ".": "./lib/logger-index.js",
@@ -36,11 +36,11 @@
36
36
  "winston-transport": "^4.5.0"
37
37
  },
38
38
  "devDependencies": {
39
- "@types/jest": "^29.2.5",
39
+ "@types/jest": "^29.4.0",
40
40
  "@types/node": "^18.11.18",
41
- "@unchainedshop/types": "^2.0.0-rc.4",
42
- "jest": "^29.3.1",
43
- "ts-jest": "^29.0.3",
44
- "typescript": "^4.9.4"
41
+ "@unchainedshop/types": "^2.0.1",
42
+ "jest": "^29.4.1",
43
+ "ts-jest": "^29.0.5",
44
+ "typescript": "^4.9.5"
45
45
  }
46
46
  }
@@ -8,7 +8,7 @@ const { stringify } = require('safe-stable-stringify');
8
8
 
9
9
  const { DEBUG = '', LOG_LEVEL = LogLevel.Info, UNCHAINED_LOG_FORMAT = 'unchained' } = process.env;
10
10
 
11
- const { combine, label, timestamp, colorize, printf, json } = format;
11
+ const { combine, colorize, json } = format;
12
12
 
13
13
  const debugStringContainsModule = (debugString: string, moduleName: string) => {
14
14
  if (!debugString) return false;
@@ -28,15 +28,21 @@ const debugStringContainsModule = (debugString: string, moduleName: string) => {
28
28
  return loggingMatched || false;
29
29
  };
30
30
 
31
- const myFormat = printf(({ level, message, label: _label, timestamp: _timestamp, ...rest }) => { //eslint-disable-line
31
+ const myFormat = format.printf(({ level, message, label, timestamp, stack, ...rest }) => {
32
32
  const otherPropsString: string = stringify(rest);
33
- return `[${_label}] ${level}: ${message} ${otherPropsString}`;
33
+ return [
34
+ `${timestamp} [${label}] ${level}:`,
35
+ `${message}`,
36
+ `${otherPropsString}`,
37
+ stack ? `\n${stack}` : null,
38
+ ]
39
+ .filter(Boolean)
40
+ .join(' ');
34
41
  });
35
42
 
36
43
  const UnchainedLogFormats = {
37
- unchained: (moduleName: string) =>
38
- combine(timestamp(), label({ label: moduleName }), colorize(), myFormat),
39
- json,
44
+ unchained: combine(colorize(), myFormat),
45
+ json: json(),
40
46
  };
41
47
 
42
48
  if (!UnchainedLogFormats[UNCHAINED_LOG_FORMAT.toLowerCase()]) {
@@ -50,9 +56,14 @@ export { transports, format };
50
56
  export const createLogger = (moduleName: string, moreTransports: Array<TransportStream> = []) => {
51
57
  const loggingMatched = debugStringContainsModule(DEBUG, moduleName);
52
58
  return createWinstonLogger({
59
+ format: format.combine(
60
+ format.errors({ stack: process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test' }),
61
+ format.timestamp(),
62
+ format.label({ label: moduleName }),
63
+ ),
53
64
  transports: [
54
65
  new transports.Console({
55
- format: UnchainedLogFormats[UNCHAINED_LOG_FORMAT](moduleName),
66
+ format: UnchainedLogFormats[UNCHAINED_LOG_FORMAT],
56
67
  stderrLevels: [LogLevel.Error],
57
68
  consoleWarnLevels: [LogLevel.Warning],
58
69
  level: loggingMatched ? LogLevel.Debug : LOG_LEVEL,
package/src/log.ts CHANGED
@@ -4,7 +4,10 @@ import { createLogger } from './createLogger.js';
4
4
 
5
5
  const logger = createLogger('unchained');
6
6
 
7
- export const log = (message: string, options?: LogOptions): winston.Logger => {
7
+ export const log = (message: string | Error, options?: LogOptions): winston.Logger => {
8
+ if (!options?.level) {
9
+ return logger.info(message as any, options);
10
+ }
8
11
  const { level = LogLevel.Info, ...meta } = options || {};
9
- return logger.log(level, message, meta);
12
+ return logger.log(level, message as any, meta);
10
13
  };
package/tsconfig.json CHANGED
@@ -1,29 +1,11 @@
1
1
  {
2
+ "extends": "../shared/base.tsconfig.json",
2
3
  "compilerOptions": {
3
- "allowJs": true,
4
- "allowSyntheticDefaultImports": true,
5
- "declaration": true,
6
- "esModuleInterop": true,
7
- "experimentalDecorators": true,
8
- "forceConsistentCasingInFileNames": true,
9
- "lib": [
10
- "esnext"
11
- ],
12
- "module": "Node16",
13
- "moduleResolution": "Node16",
14
- "noImplicitReturns": true,
15
- "noUnusedLocals": false,
4
+ "rootDir": "src",
16
5
  "outDir": "lib",
17
- "preserveWatchOutput": true,
18
- "skipLibCheck": true,
19
- "sourceMap": true,
20
- "target": "ES2022",
21
- "types": [
22
- "node",
23
- "jest"
24
- ]
25
6
  },
7
+ "exclude": ["**/*.test.ts", "**/*.test.js", "tests"],
26
8
  "include": [
27
- "src"
9
+ "./src"
28
10
  ]
29
11
  }