@unchainedshop/logger 2.0.0-rc.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/jest.config.js CHANGED
@@ -11,4 +11,7 @@ export default {
11
11
  },
12
12
  ],
13
13
  },
14
+ moduleNameMapper: {
15
+ '(.+)\\.js': '$1',
16
+ },
14
17
  };
@@ -1,8 +1,10 @@
1
1
  import { createLogger as createWinstonLogger, format, transports } from 'winston';
2
- import stringify from 'safe-stable-stringify';
3
- import { LogLevel } from './logger.types';
2
+ import { createRequire } from 'module';
3
+ import { LogLevel } from './logger.types.js';
4
+ const require = createRequire(import.meta.url);
5
+ const { stringify } = require('safe-stable-stringify');
4
6
  const { DEBUG = '', LOG_LEVEL = LogLevel.Info, UNCHAINED_LOG_FORMAT = 'unchained' } = process.env;
5
- const { combine, label, timestamp, colorize, printf, json } = format;
7
+ const { combine, colorize, json } = format;
6
8
  const debugStringContainsModule = (debugString, moduleName) => {
7
9
  if (!debugString)
8
10
  return false;
@@ -22,13 +24,20 @@ const debugStringContainsModule = (debugString, moduleName) => {
22
24
  }, undefined);
23
25
  return loggingMatched || false;
24
26
  };
25
- const myFormat = printf(({ level, message, label: _label, timestamp: _timestamp, ...rest }) => {
27
+ const myFormat = format.printf(({ level, message, label, timestamp, stack, ...rest }) => {
26
28
  const otherPropsString = stringify(rest);
27
- 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(' ');
28
37
  });
29
38
  const UnchainedLogFormats = {
30
- unchained: (moduleName) => combine(timestamp(), label({ label: moduleName }), colorize(), myFormat),
31
- json,
39
+ unchained: combine(colorize(), myFormat),
40
+ json: json(),
32
41
  };
33
42
  if (!UnchainedLogFormats[UNCHAINED_LOG_FORMAT.toLowerCase()]) {
34
43
  throw new Error(`UNCHAINED_LOG_FORMAT is invalid, use one of ${Object.keys(UnchainedLogFormats).join(',')}`);
@@ -37,9 +46,10 @@ export { transports, format };
37
46
  export const createLogger = (moduleName, moreTransports = []) => {
38
47
  const loggingMatched = debugStringContainsModule(DEBUG, moduleName);
39
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 })),
40
50
  transports: [
41
51
  new transports.Console({
42
- format: UnchainedLogFormats[UNCHAINED_LOG_FORMAT](moduleName),
52
+ format: UnchainedLogFormats[UNCHAINED_LOG_FORMAT],
43
53
  stderrLevels: [LogLevel.Error],
44
54
  consoleWarnLevels: [LogLevel.Warning],
45
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":"AAAA,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAElF,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAEvD,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAElG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;AAE3C,MAAM,yBAAyB,GAAG,CAAC,WAAmB,EAAE,UAAkB,EAAE,EAAE;IAC5E,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,WAAgB,EAAE,IAAY,EAAE,EAAE;QACtF,IAAI,WAAW,KAAK,KAAK;YAAE,OAAO,WAAW,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3F,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC5B,qBAAqB;gBACrB,OAAO,KAAK,CAAC;aACd;YACD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,SAAS,CAAC,CAAC;IACd,OAAO,cAAc,IAAI,KAAK,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;IACtF,MAAM,gBAAgB,GAAW,SAAS,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO;QACL,GAAG,SAAS,KAAK,KAAK,KAAK,KAAK,GAAG;QACnC,GAAG,OAAO,EAAE;QACZ,GAAG,gBAAgB,EAAE;QACrB,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;KAC5B;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG;IAC1B,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC;IACxC,IAAI,EAAE,IAAI,EAAE;CACb,CAAC;AAEF,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,EAAE;IAC5D,MAAM,IAAI,KAAK,CACb,+CAA+C,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC5F,CAAC;CACH;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAE9B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,UAAkB,EAAE,iBAAyC,EAAE,EAAE,EAAE;IAC9F,MAAM,cAAc,GAAG,yBAAyB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACpE,OAAO,mBAAmB,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC,OAAO,CACpB,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC,EAClG,MAAM,CAAC,SAAS,EAAE,EAClB,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CACpC;QACD,UAAU,EAAE;YACV,IAAI,UAAU,CAAC,OAAO,CAAC;gBACrB,MAAM,EAAE,mBAAmB,CAAC,oBAAoB,CAAC;gBACjD,YAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC9B,iBAAiB,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACrC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aACnD,CAAC;YACF,GAAG,cAAc;SAClB;KACF,CAAC,CAAC;AACL,CAAC,CAAC"}
package/lib/log.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import winston from 'winston';
2
- import { LogOptions } from './logger.types';
3
- export declare const log: (message: string, options?: LogOptions) => winston.Logger;
2
+ import { LogOptions } from './logger.types.js';
3
+ export declare const log: (message: string | Error, options?: LogOptions) => winston.Logger;
package/lib/log.js CHANGED
@@ -1,7 +1,10 @@
1
- import { LogLevel } from './logger.types';
2
- import { createLogger } from './createLogger';
1
+ import { LogLevel } from './logger.types.js';
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,gBAAgB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,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"}
@@ -1,4 +1,4 @@
1
- import { createLogger, format, transports } from './createLogger';
2
- import { LogLevel } from './logger.types';
3
- import { log } from './log';
1
+ import { createLogger, format, transports } from './createLogger.js';
2
+ import { LogLevel } from './logger.types.js';
3
+ import { log } from './log.js';
4
4
  export { log, createLogger, format, transports, LogLevel };
@@ -1,5 +1,5 @@
1
- import { createLogger, format, transports } from './createLogger';
2
- import { LogLevel } from './logger.types';
3
- import { log } from './log';
1
+ import { createLogger, format, transports } from './createLogger.js';
2
+ import { LogLevel } from './logger.types.js';
3
+ import { log } from './log.js';
4
4
  export { log, createLogger, format, transports, LogLevel };
5
5
  //# sourceMappingURL=logger-index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger-index.js","sourceRoot":"","sources":["../src/logger-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"logger-index.js","sourceRoot":"","sources":["../src/logger-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC"}
@@ -6,5 +6,5 @@ export var LogLevel;
6
6
  LogLevel["Debug"] = "debug";
7
7
  LogLevel["Error"] = "error";
8
8
  LogLevel["Warning"] = "warn";
9
- })(LogLevel || (LogLevel = {}));
9
+ })(LogLevel = LogLevel || (LogLevel = {}));
10
10
  //# sourceMappingURL=logger.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.types.js","sourceRoot":"","sources":["../src/logger.types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,yBAAa,CAAA;IACb,2BAAe,CAAA;IACf,2BAAe,CAAA;IACf,4BAAgB,CAAA;AAClB,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB"}
1
+ {"version":3,"file":"logger.types.js","sourceRoot":"","sources":["../src/logger.types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,yBAAa,CAAA;IACb,2BAAe,CAAA;IACf,2BAAe,CAAA;IACf,4BAAgB,CAAA;AAClB,CAAC,EANW,QAAQ,GAAR,QAAQ,KAAR,QAAQ,QAMnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/logger",
3
- "version": "2.0.0-rc.3",
3
+ "version": "2.0.0",
4
4
  "main": "lib/logger-index.js",
5
5
  "exports": {
6
6
  ".": "./lib/logger-index.js",
@@ -31,16 +31,16 @@
31
31
  },
32
32
  "homepage": "https://github.com/unchainedshop/unchained#readme",
33
33
  "dependencies": {
34
- "safe-stable-stringify": "^2.4.1",
34
+ "safe-stable-stringify": "^2.4.2",
35
35
  "winston": "^3.8.2",
36
36
  "winston-transport": "^4.5.0"
37
37
  },
38
38
  "devDependencies": {
39
- "@types/jest": "^29.2.4",
39
+ "@types/jest": "^29.4.0",
40
40
  "@types/node": "^18.11.18",
41
- "@unchainedshop/types": "^2.0.0-rc.3",
42
- "jest": "^29.3.1",
43
- "ts-jest": "^29.0.3",
41
+ "@unchainedshop/types": "^2.0.0",
42
+ "jest": "^29.4.1",
43
+ "ts-jest": "^29.0.5",
44
44
  "typescript": "^4.9.4"
45
45
  }
46
46
  }
@@ -1,11 +1,14 @@
1
1
  import { createLogger as createWinstonLogger, format, transports } from 'winston';
2
- import stringify from 'safe-stable-stringify';
3
2
  import TransportStream from 'winston-transport';
4
- import { LogLevel } from './logger.types';
3
+ import { createRequire } from 'module';
4
+ import { LogLevel } from './logger.types.js';
5
+
6
+ const require = createRequire(import.meta.url);
7
+ const { stringify } = require('safe-stable-stringify');
5
8
 
6
9
  const { DEBUG = '', LOG_LEVEL = LogLevel.Info, UNCHAINED_LOG_FORMAT = 'unchained' } = process.env;
7
10
 
8
- const { combine, label, timestamp, colorize, printf, json } = format;
11
+ const { combine, colorize, json } = format;
9
12
 
10
13
  const debugStringContainsModule = (debugString: string, moduleName: string) => {
11
14
  if (!debugString) return false;
@@ -25,15 +28,21 @@ const debugStringContainsModule = (debugString: string, moduleName: string) => {
25
28
  return loggingMatched || false;
26
29
  };
27
30
 
28
- const myFormat = printf(({ level, message, label: _label, timestamp: _timestamp, ...rest }) => { //eslint-disable-line
29
- const otherPropsString = stringify(rest);
30
- return `[${_label}] ${level}: ${message} ${otherPropsString}`;
31
+ const myFormat = format.printf(({ level, message, label, timestamp, stack, ...rest }) => {
32
+ const otherPropsString: string = stringify(rest);
33
+ return [
34
+ `${timestamp} [${label}] ${level}:`,
35
+ `${message}`,
36
+ `${otherPropsString}`,
37
+ stack ? `\n${stack}` : null,
38
+ ]
39
+ .filter(Boolean)
40
+ .join(' ');
31
41
  });
32
42
 
33
43
  const UnchainedLogFormats = {
34
- unchained: (moduleName: string) =>
35
- combine(timestamp(), label({ label: moduleName }), colorize(), myFormat),
36
- json,
44
+ unchained: combine(colorize(), myFormat),
45
+ json: json(),
37
46
  };
38
47
 
39
48
  if (!UnchainedLogFormats[UNCHAINED_LOG_FORMAT.toLowerCase()]) {
@@ -47,9 +56,14 @@ export { transports, format };
47
56
  export const createLogger = (moduleName: string, moreTransports: Array<TransportStream> = []) => {
48
57
  const loggingMatched = debugStringContainsModule(DEBUG, moduleName);
49
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
+ ),
50
64
  transports: [
51
65
  new transports.Console({
52
- format: UnchainedLogFormats[UNCHAINED_LOG_FORMAT](moduleName),
66
+ format: UnchainedLogFormats[UNCHAINED_LOG_FORMAT],
53
67
  stderrLevels: [LogLevel.Error],
54
68
  consoleWarnLevels: [LogLevel.Warning],
55
69
  level: loggingMatched ? LogLevel.Debug : LOG_LEVEL,
package/src/log.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  import winston from 'winston';
2
- import { LogLevel, LogOptions } from './logger.types';
3
- import { createLogger } from './createLogger';
2
+ import { LogLevel, LogOptions } from './logger.types.js';
3
+ 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
  };
@@ -1,5 +1,5 @@
1
- import { createLogger, format, transports } from './createLogger';
2
- import { LogLevel } from './logger.types';
3
- import { log } from './log';
1
+ import { createLogger, format, transports } from './createLogger.js';
2
+ import { LogLevel } from './logger.types.js';
3
+ import { log } from './log.js';
4
4
 
5
5
  export { log, createLogger, format, transports, LogLevel };
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": "esnext",
13
- "moduleResolution": "node",
14
- "noImplicitReturns": true,
15
- "noUnusedLocals": false,
4
+ "rootDir": "src",
16
5
  "outDir": "lib",
17
- "preserveWatchOutput": true,
18
- "skipLibCheck": true,
19
- "sourceMap": true,
20
- "target": "esnext",
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
  }