@unchainedshop/logger 3.0.0-alpha7 → 3.0.0-rc1
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/lib/createLogger.d.ts +2 -4
- package/lib/createLogger.d.ts.map +1 -1
- package/lib/createLogger.js +48 -35
- package/lib/createLogger.js.map +1 -1
- package/lib/log.d.ts +1 -3
- package/lib/log.d.ts.map +1 -1
- package/lib/log.js +1 -8
- package/lib/log.js.map +1 -1
- package/lib/logger-index.d.ts +3 -4
- package/lib/logger-index.d.ts.map +1 -1
- package/lib/logger-index.js +3 -4
- package/lib/logger-index.js.map +1 -1
- package/lib/logger.types.d.ts +0 -6
- package/lib/logger.types.d.ts.map +1 -1
- package/lib/logger.types.js +0 -1
- package/lib/logger.types.js.map +1 -1
- package/package.json +10 -12
- package/src/createLogger.ts +56 -45
- package/src/log.ts +1 -9
- package/src/logger-index.ts +3 -5
- package/src/logger.types.ts +0 -9
- package/tsconfig.json +5 -7
package/lib/createLogger.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export { transports, format };
|
|
4
|
-
export declare const createLogger: (moduleName: string, moreTransports?: Array<TransportStream>) => import("winston").Logger;
|
|
1
|
+
import { default as log } from 'loglevel';
|
|
2
|
+
export declare const createLogger: (moduleName: string) => log.Logger;
|
|
5
3
|
//# sourceMappingURL=createLogger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createLogger.d.ts","sourceRoot":"","sources":["../src/createLogger.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"createLogger.d.ts","sourceRoot":"","sources":["../src/createLogger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,UAAU,CAAC;AAsE1C,eAAO,MAAM,YAAY,eAAgB,MAAM,eAa9C,CAAC"}
|
package/lib/createLogger.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { stringify } from 'safe-stable-stringify';
|
|
2
|
+
import { default as log } from 'loglevel';
|
|
3
3
|
import { LogLevel } from './logger.types.js';
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import { default as prefix } from 'loglevel-plugin-prefix';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
6
|
const { DEBUG = '', LOG_LEVEL = LogLevel.Info, UNCHAINED_LOG_FORMAT = 'unchained' } = process.env;
|
|
7
|
-
const { combine, colorize, json } = format;
|
|
8
7
|
const debugStringContainsModule = (debugString, moduleName) => {
|
|
9
8
|
if (!debugString)
|
|
10
9
|
return false;
|
|
@@ -24,38 +23,52 @@ const debugStringContainsModule = (debugString, moduleName) => {
|
|
|
24
23
|
}, undefined);
|
|
25
24
|
return loggingMatched || false;
|
|
26
25
|
};
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
stack ? `\n${stack}` : null,
|
|
34
|
-
]
|
|
35
|
-
.filter(Boolean)
|
|
36
|
-
.join(' ');
|
|
37
|
-
});
|
|
38
|
-
const UnchainedLogFormats = {
|
|
39
|
-
unchained: combine(colorize(), myFormat),
|
|
40
|
-
json: json(),
|
|
26
|
+
const colors = {
|
|
27
|
+
TRACE: chalk.magenta,
|
|
28
|
+
DEBUG: chalk.cyan,
|
|
29
|
+
INFO: chalk.blue,
|
|
30
|
+
WARN: chalk.yellow,
|
|
31
|
+
ERROR: chalk.red,
|
|
41
32
|
};
|
|
42
|
-
|
|
43
|
-
|
|
33
|
+
const invertedLevels = Object.fromEntries(Object.entries(log.levels).map(([key, value]) => [value, key]));
|
|
34
|
+
const SUPPORTED_LOG_FORMATS = ['json', 'unchained'];
|
|
35
|
+
if (!SUPPORTED_LOG_FORMATS.includes(UNCHAINED_LOG_FORMAT.toLowerCase())) {
|
|
36
|
+
throw new Error(`UNCHAINED_LOG_FORMAT is invalid, use one of ${SUPPORTED_LOG_FORMATS.join(',')}`);
|
|
44
37
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
format: format.combine(format.errors({ stack: process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test' }), format.timestamp(), format.label({ label: moduleName })),
|
|
50
|
-
transports: [
|
|
51
|
-
new transports.Console({
|
|
52
|
-
format: UnchainedLogFormats[UNCHAINED_LOG_FORMAT],
|
|
53
|
-
stderrLevels: [LogLevel.Error],
|
|
54
|
-
consoleWarnLevels: [LogLevel.Warning],
|
|
55
|
-
level: loggingMatched ? LogLevel.Debug : LOG_LEVEL,
|
|
56
|
-
}),
|
|
57
|
-
...moreTransports,
|
|
58
|
-
],
|
|
38
|
+
if (UNCHAINED_LOG_FORMAT.toLowerCase() === 'unchained') {
|
|
39
|
+
prefix.reg(log);
|
|
40
|
+
prefix.apply(log, {
|
|
41
|
+
format: (level, name, timestamp) => `${chalk.gray(`${timestamp}`)} [${chalk.green(`${name}] ${colors[level.toUpperCase()](level)}:`)}`,
|
|
59
42
|
});
|
|
43
|
+
}
|
|
44
|
+
else if (UNCHAINED_LOG_FORMAT.toLowerCase() === 'json') {
|
|
45
|
+
const originalFactory = log.methodFactory;
|
|
46
|
+
log.methodFactory = function (methodName, logLevel, loggerName) {
|
|
47
|
+
const rawMethod = originalFactory(methodName, logLevel, loggerName);
|
|
48
|
+
const level = invertedLevels[logLevel];
|
|
49
|
+
const name = loggerName || 'unchained';
|
|
50
|
+
return function (message, meta) {
|
|
51
|
+
rawMethod(stringify({
|
|
52
|
+
timestamp: new Date(),
|
|
53
|
+
level,
|
|
54
|
+
name,
|
|
55
|
+
message,
|
|
56
|
+
...meta,
|
|
57
|
+
}));
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
log.rebuild();
|
|
61
|
+
}
|
|
62
|
+
export const createLogger = (moduleName) => {
|
|
63
|
+
const loggingMatched = debugStringContainsModule(DEBUG, moduleName);
|
|
64
|
+
const logger = log.getLogger(moduleName);
|
|
65
|
+
const logLevelMap = {
|
|
66
|
+
[LogLevel.Debug]: log.levels.DEBUG,
|
|
67
|
+
[LogLevel.Info]: log.levels.INFO,
|
|
68
|
+
[LogLevel.Warning]: log.levels.WARN,
|
|
69
|
+
[LogLevel.Error]: log.levels.ERROR,
|
|
70
|
+
};
|
|
71
|
+
logger.setDefaultLevel(loggingMatched ? log.levels.DEBUG : logLevelMap[LOG_LEVEL.toLowerCase()]);
|
|
72
|
+
return logger;
|
|
60
73
|
};
|
|
61
74
|
//# sourceMappingURL=createLogger.js.map
|
package/lib/createLogger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createLogger.js","sourceRoot":"","sources":["../src/createLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"createLogger.js","sourceRoot":"","sources":["../src/createLogger.ts"],"names":[],"mappings":"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"}
|
package/lib/log.d.ts
CHANGED
package/lib/log.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,GAAG,yBAAc,CAAC"}
|
package/lib/log.js
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import { LogLevel } from './logger.types.js';
|
|
2
1
|
import { createLogger } from './createLogger.js';
|
|
3
2
|
const logger = createLogger('unchained');
|
|
4
|
-
export const log =
|
|
5
|
-
if (!options?.level) {
|
|
6
|
-
return logger.info(message, options);
|
|
7
|
-
}
|
|
8
|
-
const { level = LogLevel.Info, ...meta } = options || {};
|
|
9
|
-
return logger.log(level, message, meta);
|
|
10
|
-
};
|
|
3
|
+
export const log = logger.info;
|
|
11
4
|
//# sourceMappingURL=log.js.map
|
package/lib/log.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC"}
|
package/lib/logger-index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export { log, createLogger, format, transports, LogLevel };
|
|
1
|
+
export * from './createLogger.js';
|
|
2
|
+
export * from './logger.types.js';
|
|
3
|
+
export * from './log.js';
|
|
5
4
|
//# sourceMappingURL=logger-index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger-index.d.ts","sourceRoot":"","sources":["../src/logger-index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"logger-index.d.ts","sourceRoot":"","sources":["../src/logger-index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC"}
|
package/lib/logger-index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export { log, createLogger, format, transports, LogLevel };
|
|
1
|
+
export * from './createLogger.js';
|
|
2
|
+
export * from './logger.types.js';
|
|
3
|
+
export * from './log.js';
|
|
5
4
|
//# sourceMappingURL=logger-index.js.map
|
package/lib/logger-index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger-index.js","sourceRoot":"","sources":["../src/logger-index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"logger-index.js","sourceRoot":"","sources":["../src/logger-index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC"}
|
package/lib/logger.types.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { LoggerOptions } from 'winston';
|
|
2
|
-
export { format, transports } from 'winston';
|
|
3
1
|
export declare enum LogLevel {
|
|
4
2
|
Verbose = "verbose",
|
|
5
3
|
Info = "info",
|
|
@@ -7,8 +5,4 @@ export declare enum LogLevel {
|
|
|
7
5
|
Error = "error",
|
|
8
6
|
Warning = "warn"
|
|
9
7
|
}
|
|
10
|
-
export interface LogOptions extends LoggerOptions {
|
|
11
|
-
level?: LogLevel;
|
|
12
|
-
[x: string]: any;
|
|
13
|
-
}
|
|
14
8
|
//# sourceMappingURL=logger.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.types.d.ts","sourceRoot":"","sources":["../src/logger.types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"logger.types.d.ts","sourceRoot":"","sources":["../src/logger.types.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,OAAO,SAAS;CACjB"}
|
package/lib/logger.types.js
CHANGED
package/lib/logger.types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.types.js","sourceRoot":"","sources":["../src/logger.types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.types.js","sourceRoot":"","sources":["../src/logger.types.ts"],"names":[],"mappings":"AAAA,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"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/logger",
|
|
3
|
-
"version": "3.0.0-
|
|
3
|
+
"version": "3.0.0-rc1",
|
|
4
4
|
"main": "lib/logger-index.js",
|
|
5
|
-
"exports": {
|
|
6
|
-
".": "./lib/logger-index.js",
|
|
7
|
-
"./*": "./lib/*"
|
|
8
|
-
},
|
|
9
5
|
"types": "lib/logger-index.d.ts",
|
|
10
6
|
"type": "module",
|
|
11
7
|
"scripts": {
|
|
12
|
-
"clean": "
|
|
13
|
-
"
|
|
8
|
+
"clean": "tsc -b --clean",
|
|
9
|
+
"build": "tsc -b",
|
|
10
|
+
"prepublishOnly": "npm run clean && npm run build",
|
|
14
11
|
"watch": "tsc -w",
|
|
15
12
|
"test": "NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit",
|
|
16
13
|
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch --detectOpenHandles --forceExit"
|
|
@@ -31,15 +28,16 @@
|
|
|
31
28
|
},
|
|
32
29
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
30
|
"dependencies": {
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
31
|
+
"chalk": "^5.3.0",
|
|
32
|
+
"loglevel": "^1.9.2",
|
|
33
|
+
"loglevel-plugin-prefix": "^0.8.4",
|
|
34
|
+
"safe-stable-stringify": "^2.5.0"
|
|
37
35
|
},
|
|
38
36
|
"devDependencies": {
|
|
39
37
|
"@types/jest": "^29.5.14",
|
|
40
|
-
"@types/node": "^22.
|
|
38
|
+
"@types/node": "^22.10.2",
|
|
41
39
|
"jest": "^29.7.0",
|
|
42
40
|
"ts-jest": "^29.2.5",
|
|
43
|
-
"typescript": "^5.
|
|
41
|
+
"typescript": "^5.7.2"
|
|
44
42
|
}
|
|
45
43
|
}
|
package/src/createLogger.ts
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import TransportStream from 'winston-transport';
|
|
1
|
+
import { stringify } from 'safe-stable-stringify';
|
|
2
|
+
import { default as log } from 'loglevel';
|
|
4
3
|
import { LogLevel } from './logger.types.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const { stringify } = require('safe-stable-stringify');
|
|
4
|
+
import { default as prefix } from 'loglevel-plugin-prefix';
|
|
5
|
+
import chalk from 'chalk';
|
|
8
6
|
|
|
9
7
|
const { DEBUG = '', LOG_LEVEL = LogLevel.Info, UNCHAINED_LOG_FORMAT = 'unchained' } = process.env;
|
|
10
8
|
|
|
11
|
-
const { combine, colorize, json } = format;
|
|
12
|
-
|
|
13
9
|
const debugStringContainsModule = (debugString: string, moduleName: string) => {
|
|
14
10
|
if (!debugString) return false;
|
|
15
11
|
const loggingMatched = debugString.split(',').reduce((accumulator: any, name: string) => {
|
|
@@ -28,47 +24,62 @@ const debugStringContainsModule = (debugString: string, moduleName: string) => {
|
|
|
28
24
|
return loggingMatched || false;
|
|
29
25
|
};
|
|
30
26
|
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
stack ? `\n${stack}` : null,
|
|
38
|
-
]
|
|
39
|
-
.filter(Boolean)
|
|
40
|
-
.join(' ');
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
const UnchainedLogFormats = {
|
|
44
|
-
unchained: combine(colorize(), myFormat),
|
|
45
|
-
json: json(),
|
|
27
|
+
const colors = {
|
|
28
|
+
TRACE: chalk.magenta,
|
|
29
|
+
DEBUG: chalk.cyan,
|
|
30
|
+
INFO: chalk.blue,
|
|
31
|
+
WARN: chalk.yellow,
|
|
32
|
+
ERROR: chalk.red,
|
|
46
33
|
};
|
|
47
34
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
35
|
+
const invertedLevels = Object.fromEntries(
|
|
36
|
+
Object.entries(log.levels).map(([key, value]) => [value, key]),
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
const SUPPORTED_LOG_FORMATS = ['json', 'unchained'];
|
|
40
|
+
if (!SUPPORTED_LOG_FORMATS.includes(UNCHAINED_LOG_FORMAT.toLowerCase())) {
|
|
41
|
+
throw new Error(`UNCHAINED_LOG_FORMAT is invalid, use one of ${SUPPORTED_LOG_FORMATS.join(',')}`);
|
|
52
42
|
}
|
|
53
43
|
|
|
54
|
-
|
|
44
|
+
if (UNCHAINED_LOG_FORMAT.toLowerCase() === 'unchained') {
|
|
45
|
+
prefix.reg(log);
|
|
46
|
+
prefix.apply(log, {
|
|
47
|
+
format: (level, name, timestamp) =>
|
|
48
|
+
`${chalk.gray(`${timestamp}`)} [${chalk.green(`${name}] ${colors[level.toUpperCase()](level)}:`)}`,
|
|
49
|
+
});
|
|
50
|
+
} else if (UNCHAINED_LOG_FORMAT.toLowerCase() === 'json') {
|
|
51
|
+
const originalFactory = log.methodFactory;
|
|
52
|
+
log.methodFactory = function (methodName, logLevel, loggerName) {
|
|
53
|
+
const rawMethod = originalFactory(methodName, logLevel, loggerName);
|
|
54
|
+
const level = invertedLevels[logLevel];
|
|
55
|
+
const name = loggerName || 'unchained';
|
|
56
|
+
|
|
57
|
+
return function (message, meta) {
|
|
58
|
+
rawMethod(
|
|
59
|
+
stringify({
|
|
60
|
+
timestamp: new Date(),
|
|
61
|
+
level,
|
|
62
|
+
name,
|
|
63
|
+
message,
|
|
64
|
+
...meta,
|
|
65
|
+
}),
|
|
66
|
+
);
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
log.rebuild();
|
|
70
|
+
}
|
|
55
71
|
|
|
56
|
-
export const createLogger = (moduleName: string
|
|
72
|
+
export const createLogger = (moduleName: string) => {
|
|
57
73
|
const loggingMatched = debugStringContainsModule(DEBUG, moduleName);
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
level: loggingMatched ? LogLevel.Debug : LOG_LEVEL,
|
|
70
|
-
}),
|
|
71
|
-
...moreTransports,
|
|
72
|
-
],
|
|
73
|
-
});
|
|
74
|
+
const logger = log.getLogger(moduleName);
|
|
75
|
+
|
|
76
|
+
const logLevelMap = {
|
|
77
|
+
[LogLevel.Debug]: log.levels.DEBUG,
|
|
78
|
+
[LogLevel.Info]: log.levels.INFO,
|
|
79
|
+
[LogLevel.Warning]: log.levels.WARN,
|
|
80
|
+
[LogLevel.Error]: log.levels.ERROR,
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
logger.setDefaultLevel(loggingMatched ? log.levels.DEBUG : logLevelMap[LOG_LEVEL.toLowerCase()]);
|
|
84
|
+
return logger;
|
|
74
85
|
};
|
package/src/log.ts
CHANGED
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
import winston from 'winston';
|
|
2
|
-
import { LogLevel, LogOptions } from './logger.types.js';
|
|
3
1
|
import { createLogger } from './createLogger.js';
|
|
4
2
|
|
|
5
3
|
const logger = createLogger('unchained');
|
|
6
4
|
|
|
7
|
-
export const log =
|
|
8
|
-
if (!options?.level) {
|
|
9
|
-
return logger.info(message as any, options);
|
|
10
|
-
}
|
|
11
|
-
const { level = LogLevel.Info, ...meta } = options || {};
|
|
12
|
-
return logger.log(level, message as any, meta);
|
|
13
|
-
};
|
|
5
|
+
export const log = logger.info;
|
package/src/logger-index.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export { log, createLogger, format, transports, LogLevel };
|
|
1
|
+
export * from './createLogger.js';
|
|
2
|
+
export * from './logger.types.js';
|
|
3
|
+
export * from './log.js';
|
package/src/logger.types.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import { LoggerOptions } from 'winston';
|
|
2
|
-
|
|
3
|
-
export { format, transports } from 'winston';
|
|
4
|
-
|
|
5
1
|
export enum LogLevel {
|
|
6
2
|
Verbose = 'verbose',
|
|
7
3
|
Info = 'info',
|
|
@@ -9,8 +5,3 @@ export enum LogLevel {
|
|
|
9
5
|
Error = 'error',
|
|
10
6
|
Warning = 'warn',
|
|
11
7
|
}
|
|
12
|
-
|
|
13
|
-
export interface LogOptions extends LoggerOptions {
|
|
14
|
-
level?: LogLevel;
|
|
15
|
-
[x: string]: any;
|
|
16
|
-
}
|
package/tsconfig.json
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"extends": "../shared/base.tsconfig.json",
|
|
3
3
|
"compilerOptions": {
|
|
4
|
-
"
|
|
5
|
-
"
|
|
4
|
+
"declarationDir": "./lib",
|
|
5
|
+
"rootDir": "./src",
|
|
6
|
+
"outDir": "./lib"
|
|
6
7
|
},
|
|
7
|
-
"exclude": ["**/*.test.ts", "**/*.test.js", "tests"]
|
|
8
|
-
|
|
9
|
-
"./src"
|
|
10
|
-
]
|
|
11
|
-
}
|
|
8
|
+
"exclude": ["**/*.test.ts", "**/*.test.js", "tests", "lib"]
|
|
9
|
+
}
|