standard-log 11.5.1 → 12.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/README.md +2 -3
- package/cjs/console.d.ts +3 -3
- package/cjs/console.d.ts.map +1 -1
- package/cjs/console.js +18 -9
- package/cjs/console.js.map +1 -1
- package/cjs/errors.d.ts.map +1 -1
- package/cjs/errors.js.map +1 -1
- package/cjs/formatter.d.ts +1 -1
- package/cjs/formatter.d.ts.map +1 -1
- package/cjs/formatter.js +2 -2
- package/cjs/formatter.js.map +1 -1
- package/cjs/index.d.ts +4 -4
- package/cjs/index.d.ts.map +1 -1
- package/cjs/index.js +7 -8
- package/cjs/index.js.map +1 -1
- package/cjs/{logLevels.d.ts → log_levels.d.ts} +1 -1
- package/cjs/log_levels.d.ts.map +1 -0
- package/cjs/{logLevels.js → log_levels.js} +1 -1
- package/cjs/log_levels.js.map +1 -0
- package/{esm/logStore.d.ts → cjs/log_store.d.ts} +1 -1
- package/cjs/log_store.d.ts.map +1 -0
- package/cjs/{logStore.js → log_store.js} +6 -6
- package/cjs/log_store.js.map +1 -0
- package/cjs/logger.d.ts +1 -1
- package/cjs/logger.d.ts.map +1 -1
- package/cjs/logger.js +16 -14
- package/cjs/logger.js.map +1 -1
- package/cjs/memory.d.ts +2 -2
- package/cjs/memory.d.ts.map +1 -1
- package/cjs/memory.js +15 -8
- package/cjs/memory.js.map +1 -1
- package/cjs/platform.d.ts.map +1 -1
- package/cjs/platform.js +1 -2
- package/cjs/platform.js.map +1 -1
- package/cjs/{standardLog.ctx.d.ts → standard_log.ctx.d.ts} +2 -2
- package/cjs/standard_log.ctx.d.ts.map +1 -0
- package/cjs/{standardLog.ctx.js → standard_log.ctx.js} +1 -1
- package/cjs/standard_log.ctx.js.map +1 -0
- package/{esm/standardLog.d.ts → cjs/standard_log.d.ts} +4 -9
- package/cjs/standard_log.d.ts.map +1 -0
- package/cjs/{standardLog.js → standard_log.js} +37 -40
- package/cjs/standard_log.js.map +1 -0
- package/cjs/standard_log.mocks.d.ts +8 -0
- package/cjs/standard_log.mocks.d.ts.map +1 -0
- package/cjs/standard_log.mocks.js +32 -0
- package/cjs/standard_log.mocks.js.map +1 -0
- package/cjs/test_utils.d.ts +10 -0
- package/cjs/test_utils.d.ts.map +1 -0
- package/cjs/test_utils.js +25 -0
- package/cjs/test_utils.js.map +1 -0
- package/cjs/testing/index.d.ts +2 -0
- package/cjs/testing/index.d.ts.map +1 -0
- package/cjs/testing/index.js +6 -0
- package/cjs/testing/index.js.map +1 -0
- package/cjs/types.d.ts +12 -12
- package/cjs/types.d.ts.map +1 -1
- package/cjs/types.js.map +1 -1
- package/dist/standard-log.es5.js +1139 -758
- 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 +220 -175
- 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/console.d.ts +3 -3
- package/esm/console.d.ts.map +1 -1
- package/esm/console.js +21 -10
- package/esm/console.js.map +1 -1
- package/esm/errors.d.ts.map +1 -1
- package/esm/errors.js.map +1 -1
- package/esm/formatter.d.ts +1 -1
- package/esm/formatter.d.ts.map +1 -1
- package/esm/formatter.js +1 -1
- package/esm/formatter.js.map +1 -1
- package/esm/index.d.ts +4 -4
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +2 -2
- package/esm/index.js.map +1 -1
- package/esm/{logLevels.d.ts → log_levels.d.ts} +1 -1
- package/esm/log_levels.d.ts.map +1 -0
- package/esm/{logLevels.js → log_levels.js} +1 -1
- package/esm/log_levels.js.map +1 -0
- package/{cjs/logStore.d.ts → esm/log_store.d.ts} +1 -1
- package/esm/log_store.d.ts.map +1 -0
- package/esm/{logStore.js → log_store.js} +2 -2
- package/esm/log_store.js.map +1 -0
- package/esm/logger.d.ts +1 -1
- package/esm/logger.d.ts.map +1 -1
- package/esm/logger.js +2 -2
- package/esm/logger.js.map +1 -1
- package/esm/memory.d.ts +2 -2
- package/esm/memory.d.ts.map +1 -1
- package/esm/memory.js +15 -8
- package/esm/memory.js.map +1 -1
- package/esm/platform.d.ts.map +1 -1
- package/esm/platform.js +1 -2
- package/esm/platform.js.map +1 -1
- package/esm/{standardLog.ctx.d.ts → standard_log.ctx.d.ts} +2 -2
- package/esm/standard_log.ctx.d.ts.map +1 -0
- package/esm/{standardLog.ctx.js → standard_log.ctx.js} +1 -1
- package/esm/standard_log.ctx.js.map +1 -0
- package/{cjs/standardLog.d.ts → esm/standard_log.d.ts} +4 -9
- package/esm/standard_log.d.ts.map +1 -0
- package/esm/{standardLog.js → standard_log.js} +27 -28
- package/esm/standard_log.js.map +1 -0
- package/esm/standard_log.mocks.d.ts +8 -0
- package/esm/standard_log.mocks.d.ts.map +1 -0
- package/esm/standard_log.mocks.js +16 -0
- package/esm/standard_log.mocks.js.map +1 -0
- package/esm/test_utils.d.ts +10 -0
- package/esm/test_utils.d.ts.map +1 -0
- package/esm/test_utils.js +18 -0
- package/esm/test_utils.js.map +1 -0
- package/esm/testing/index.d.ts +2 -0
- package/esm/testing/index.d.ts.map +1 -0
- package/esm/testing/index.js +2 -0
- package/esm/testing/index.js.map +1 -0
- package/esm/types.d.ts +12 -12
- package/esm/types.d.ts.map +1 -1
- package/esm/types.js.map +1 -1
- package/package.json +14 -8
- package/ts/console.ts +55 -46
- package/ts/errors.ts +6 -6
- package/ts/formatter.ts +19 -19
- package/ts/index.ts +19 -10
- package/ts/log_levels.ts +107 -0
- package/ts/log_store.ts +63 -0
- package/ts/logger.ts +69 -59
- package/ts/memory.ts +66 -54
- package/ts/platform.ts +2 -2
- package/ts/standard_log.ctx.ts +8 -0
- package/ts/standard_log.mocks.ts +22 -0
- package/ts/standard_log.ts +140 -0
- package/ts/test_utils.ts +21 -0
- package/ts/testing/index.ts +1 -0
- package/ts/types.ts +72 -62
- package/cjs/logLevels.d.ts.map +0 -1
- package/cjs/logLevels.js.map +0 -1
- package/cjs/logStore.d.ts.map +0 -1
- package/cjs/logStore.js.map +0 -1
- package/cjs/standardLog.ctx.d.ts.map +0 -1
- package/cjs/standardLog.ctx.js.map +0 -1
- package/cjs/standardLog.d.ts.map +0 -1
- package/cjs/standardLog.js.map +0 -1
- package/esm/logLevels.d.ts.map +0 -1
- package/esm/logLevels.js.map +0 -1
- package/esm/logStore.d.ts.map +0 -1
- package/esm/logStore.js.map +0 -1
- package/esm/standardLog.ctx.d.ts.map +0 -1
- package/esm/standardLog.ctx.js.map +0 -1
- package/esm/standardLog.d.ts.map +0 -1
- package/esm/standardLog.js.map +0 -1
- package/ts/logLevels.ts +0 -108
- package/ts/logStore.ts +0 -54
- package/ts/standardLog.ctx.ts +0 -8
- package/ts/standardLog.ts +0 -135
package/esm/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../ts/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../ts/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,EAAyB,MAAM,EAAE,aAAa,EAAE,cAAc,EAAe,MAAM,YAAY,CAAA;AAG3G,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,cAAc,EAC7D,KAAK,EAAE,QAAQ,EACf,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,aAAa,GACrB,MAAM,CAAC,CAAC,GAAG,cAAc,CAAC,CA4D5B"}
|
package/esm/logger.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { logLevels } from './
|
|
1
|
+
import { logLevels } from './log_levels.js';
|
|
2
2
|
export function createLogger(store, id, options) {
|
|
3
3
|
var _a;
|
|
4
4
|
id = sanitizeId(id);
|
|
@@ -21,7 +21,7 @@ export function createLogger(store, id, options) {
|
|
|
21
21
|
id: { value: id, writable: false },
|
|
22
22
|
count: {
|
|
23
23
|
writable: false,
|
|
24
|
-
value: (
|
|
24
|
+
value: (counter => (...args) => {
|
|
25
25
|
if (shouldLog(store, logLevels.debug, logger.level))
|
|
26
26
|
write({
|
|
27
27
|
id,
|
package/esm/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../ts/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../ts/logger.ts"],"names":[],"mappings":"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","sourcesContent":["import { logLevels } from './log_levels.js'\nimport { LogStore } from './log_store.js'\nimport type { LogEntry, LogFunction, Logger, LoggerOptions, LogMethodNames, LogReporter } from './types.js'\nimport { LogLevel } from './types.js'\n\nexport function createLogger<N extends string = LogMethodNames>(\n\tstore: LogStore,\n\tid: string,\n\toptions?: LoggerOptions\n): Logger<N | LogMethodNames> {\n\tid = sanitizeId(id)\n\tconst writeTo = options?.writeTo ?? (() => true)\n\tconst [filter, reporters]: [(reporterId: string) => boolean, LogReporter[]] =\n\t\ttypeof writeTo === 'string'\n\t\t\t? [id => id === writeTo, store.reporters]\n\t\t\t: writeTo instanceof RegExp\n\t\t\t? [id => writeTo.test(id), store.reporters]\n\t\t\t: typeof writeTo === 'function'\n\t\t\t? [writeTo, store.reporters]\n\t\t\t: [() => true, [writeTo]]\n\n\tfunction write(entry: LogEntry) {\n\t\twriteToReporters(reporters, entry, filter)\n\t}\n\n\tconst logger = {\n\t\tlevel: options?.level,\n\t\twrite\n\t} as any\n\n\tObject.defineProperties(logger, {\n\t\tid: { value: id, writable: false },\n\t\tcount: {\n\t\t\twritable: false,\n\t\t\tvalue: (\n\t\t\t\tcounter =>\n\t\t\t\t(...args: any[]) => {\n\t\t\t\t\tif (shouldLog(store, logLevels.debug, logger.level))\n\t\t\t\t\t\twrite({\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tlevel: logLevels.debug,\n\t\t\t\t\t\t\targs: [++counter, ...args],\n\t\t\t\t\t\t\ttimestamp: new Date()\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t)(0)\n\t\t},\n\t\ton: {\n\t\t\twritable: false,\n\t\t\tvalue: (level: number | N | LogMethodNames, logFn: LogFunction) => {\n\t\t\t\tconst logLevel = typeof level === 'string' ? store.logLevelStore.getLevel(level)! : level\n\t\t\t\tif (shouldLog(store, logLevel, logger.level)) {\n\t\t\t\t\tconst methodName = store.logLevelStore.getName(logLevel)\n\t\t\t\t\tconst bindedMethod = logger[methodName].bind(logger)\n\t\t\t\t\tconst result = logFn(bindedMethod, logger.level ?? store.logLevel)\n\t\t\t\t\tif (result) bindedMethod(result)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\tstore.logLevelStore.getAllLevels().forEach(function addMethod({ name, level }) {\n\t\tObject.defineProperty(logger, name, {\n\t\t\twritable: false,\n\t\t\tvalue: (...args: any[]) => {\n\t\t\t\tif (shouldLog(store, level, logger.level)) write({ id, level, args, timestamp: new Date() })\n\t\t\t}\n\t\t})\n\t})\n\treturn logger\n}\n\nfunction sanitizeId(id: string) {\n\treturn id.replace(/[`~!#$%^&*()=+[\\]{},|<>?]/g, '-')\n}\n\nfunction writeToReporters(\n\treporters: LogReporter[],\n\tlogEntry: LogEntry,\n\tfilter: (reporterId: string) => boolean\n) {\n\treporters.filter(r => filter(r.id)).forEach(r => r.write(logEntry!))\n}\n\n/**\n * Determines should you log.\n * @param loggerLevel Log level of the logger.\n * It can be undefined which the global log level will be used.\n */\nfunction shouldLog(store: LogStore, targetLevel: LogLevel, loggerLevel: LogLevel | undefined) {\n\treturn targetLevel <= (loggerLevel !== undefined ? loggerLevel : store.logLevel)\n}\n"]}
|
package/esm/memory.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LogEntry, LogFormatter, LogReporter, LogReporterOptions } from './types.js';
|
|
2
|
-
export
|
|
2
|
+
export type MemoryLogReporter = LogReporter<LogEntry> & {
|
|
3
3
|
logs: LogEntry[];
|
|
4
4
|
/**
|
|
5
5
|
* Gets a simple log message for testing.
|
|
@@ -11,7 +11,7 @@ export declare type MemoryLogReporter = LogReporter<LogEntry> & {
|
|
|
11
11
|
getLogMessagesWithIdAndLevel(): string[];
|
|
12
12
|
emit(): void;
|
|
13
13
|
};
|
|
14
|
-
export
|
|
14
|
+
export type MemoryLogFormatter = LogFormatter<LogEntry>;
|
|
15
15
|
export declare function toMessageWithLevel(logs: LogEntry[]): string;
|
|
16
16
|
export declare function createMemoryLogReporter(options?: LogReporterOptions<LogEntry>): MemoryLogReporter;
|
|
17
17
|
export declare function createMemoryWithConsoleLogReporter(options?: LogReporterOptions<LogEntry>): MemoryLogReporter;
|
package/esm/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../ts/memory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAGzF,
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../ts/memory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAGzF,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG;IACvD,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB;;;OAGG;IACH,aAAa,IAAI,MAAM,CAAA;IACvB,cAAc,IAAI,MAAM,EAAE,CAAA;IAC1B,sBAAsB,IAAI,MAAM,CAAA;IAChC,4BAA4B,IAAI,MAAM,EAAE,CAAA;IACxC,IAAI,IAAI,IAAI,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AAEvD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAWlD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,iBAAiB,CAEjG;AA0CD,wBAAgB,kCAAkC,CACjD,OAAO,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GACpC,iBAAiB,CAMnB"}
|
package/esm/memory.js
CHANGED
|
@@ -3,13 +3,14 @@ import { toInspectLogEntry } from './platform.js';
|
|
|
3
3
|
import { formatLogLevel } from './formatter.js';
|
|
4
4
|
import { createConsoleLogReporter } from './console.js';
|
|
5
5
|
export function toMessageWithLevel(logs) {
|
|
6
|
-
return logs
|
|
6
|
+
return (logs
|
|
7
|
+
.map(toInspectLogEntry)
|
|
7
8
|
.map(log => `${formatLogLevel(log.level)} ${log.args.join(' ')}`)
|
|
8
9
|
.join('\n')
|
|
9
10
|
// if it has more than this log,
|
|
10
11
|
// we assume it is running under tests,
|
|
11
12
|
// and remove this log to simplify testing.
|
|
12
|
-
.replace(/^\(WARN\) already configured for test, ignoring config\(\) call\n/, '');
|
|
13
|
+
.replace(/^\(WARN\) already configured for test, ignoring config\(\) call\n/, ''));
|
|
13
14
|
}
|
|
14
15
|
export function createMemoryLogReporter(options) {
|
|
15
16
|
return Object.freeze(buildMemoryReporter(unpartial({ id: 'memory' }, options)));
|
|
@@ -19,8 +20,12 @@ function buildMemoryReporter(options) {
|
|
|
19
20
|
const logs = [];
|
|
20
21
|
return {
|
|
21
22
|
id,
|
|
22
|
-
get formatter() {
|
|
23
|
-
|
|
23
|
+
get formatter() {
|
|
24
|
+
return formatter;
|
|
25
|
+
},
|
|
26
|
+
get filter() {
|
|
27
|
+
return filter;
|
|
28
|
+
},
|
|
24
29
|
logs,
|
|
25
30
|
write(entry) {
|
|
26
31
|
if (filter && !filter(entry))
|
|
@@ -31,14 +36,16 @@ function buildMemoryReporter(options) {
|
|
|
31
36
|
return this.getLogMessages().join('\n');
|
|
32
37
|
},
|
|
33
38
|
getLogMessages() {
|
|
34
|
-
return logs.map(toInspectLogEntry)
|
|
35
|
-
.map(log => log.args.join(' '));
|
|
39
|
+
return logs.map(toInspectLogEntry).map(log => log.args.join(' '));
|
|
36
40
|
},
|
|
37
41
|
getLogMessagesWithIdAndLevel() {
|
|
38
|
-
return logs
|
|
42
|
+
return logs
|
|
43
|
+
.map(toInspectLogEntry)
|
|
39
44
|
.map(log => `${log.id} ${formatLogLevel(log.level)} ${log.args.join(' ')}`);
|
|
40
45
|
},
|
|
41
|
-
getLogMessageWithLevel() {
|
|
46
|
+
getLogMessageWithLevel() {
|
|
47
|
+
return toMessageWithLevel(logs);
|
|
48
|
+
},
|
|
42
49
|
/**
|
|
43
50
|
* emit the saved log to console for easy debugging
|
|
44
51
|
*/
|
package/esm/memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../ts/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AAiBvD,MAAM,UAAU,kBAAkB,CAAC,IAAgB;
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../ts/memory.ts"],"names":[],"mappings":"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","sourcesContent":["import { required, unpartial } from 'type-plus'\nimport { toInspectLogEntry } from './platform.js'\nimport { formatLogLevel } from './formatter.js'\nimport type { LogEntry, LogFormatter, LogReporter, LogReporterOptions } from './types.js'\nimport { createConsoleLogReporter } from './console.js'\n\nexport type MemoryLogReporter = LogReporter<LogEntry> & {\n\tlogs: LogEntry[]\n\t/**\n\t * Gets a simple log message for testing.\n\t * The message only contains arguments for each log entry.\n\t */\n\tgetLogMessage(): string\n\tgetLogMessages(): string[]\n\tgetLogMessageWithLevel(): string\n\tgetLogMessagesWithIdAndLevel(): string[]\n\temit(): void\n}\n\nexport type MemoryLogFormatter = LogFormatter<LogEntry>\n\nexport function toMessageWithLevel(logs: LogEntry[]) {\n\treturn (\n\t\tlogs\n\t\t\t.map(toInspectLogEntry)\n\t\t\t.map(log => `${formatLogLevel(log.level)} ${log.args.join(' ')}`)\n\t\t\t.join('\\n')\n\t\t\t// if it has more than this log,\n\t\t\t// we assume it is running under tests,\n\t\t\t// and remove this log to simplify testing.\n\t\t\t.replace(/^\\(WARN\\) already configured for test, ignoring config\\(\\) call\\n/, '')\n\t)\n}\n\nexport function createMemoryLogReporter(options?: LogReporterOptions<LogEntry>): MemoryLogReporter {\n\treturn Object.freeze(buildMemoryReporter(unpartial({ id: 'memory' }, options)))\n}\n\nfunction buildMemoryReporter(options?: LogReporterOptions<LogEntry>) {\n\tconst { id, formatter, filter } = required({ id: 'memory', formatter: (e: LogEntry) => e }, options)\n\tconst logs: LogEntry[] = []\n\treturn {\n\t\tid,\n\t\tget formatter() {\n\t\t\treturn formatter\n\t\t},\n\t\tget filter() {\n\t\t\treturn filter\n\t\t},\n\t\tlogs,\n\t\twrite(entry: LogEntry) {\n\t\t\tif (filter && !filter(entry)) return\n\t\t\tlogs.push(formatter(entry))\n\t\t},\n\t\tgetLogMessage() {\n\t\t\treturn this.getLogMessages().join('\\n')\n\t\t},\n\t\tgetLogMessages() {\n\t\t\treturn logs.map(toInspectLogEntry).map(log => log.args.join(' '))\n\t\t},\n\t\tgetLogMessagesWithIdAndLevel() {\n\t\t\treturn logs\n\t\t\t\t.map(toInspectLogEntry)\n\t\t\t\t.map(log => `${log.id} ${formatLogLevel(log.level)} ${log.args.join(' ')}`)\n\t\t},\n\t\tgetLogMessageWithLevel() {\n\t\t\treturn toMessageWithLevel(logs)\n\t\t},\n\t\t/**\n\t\t * emit the saved log to console for easy debugging\n\t\t */\n\t\temit() {\n\t\t\tconst reporter = createConsoleLogReporter()\n\t\t\tlogs.forEach(l => reporter.write(l))\n\t\t}\n\t}\n}\n\nexport function createMemoryWithConsoleLogReporter(\n\toptions?: LogReporterOptions<LogEntry>\n): MemoryLogReporter {\n\treturn Object.freeze(\n\t\tObject.assign(buildMemoryReporter(unpartial({ id: 'memory-with-console' }, options)), {\n\t\t\tisConsoleReporter: true\n\t\t})\n\t)\n}\n"]}
|
package/esm/platform.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../ts/platform.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAEvD,eAAO,MAAM,iBAAiB,MAAO,QAAQ,
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../ts/platform.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAEvD,eAAO,MAAM,iBAAiB,MAAO,QAAQ,aAE5C,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE;IAAE,OAAO,CAAC,EAAE,WAAW,CAAA;CAAa,CAAA"}
|
package/esm/platform.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { record } from 'type-plus';
|
|
2
2
|
import { inspect } from 'util';
|
|
3
|
-
export const toInspectLogEntry = (e) => (e.args = e.args.map(value => typeof value === 'object' && value !== null ? inspect(value) : value),
|
|
4
|
-
e);
|
|
3
|
+
export const toInspectLogEntry = (e) => ((e.args = e.args.map(value => (typeof value === 'object' && value !== null ? inspect(value) : value))), e);
|
|
5
4
|
export const polyfill = record();
|
|
6
5
|
//# sourceMappingURL=platform.js.map
|
package/esm/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../ts/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAG9B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAW,EAAE,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../ts/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAG9B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAW,EAAE,EAAE,CAAC,CACjD,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CACzG,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAA8B,MAAM,EAAE,CAAA","sourcesContent":["import { record } from 'type-plus'\nimport { inspect } from 'util'\nimport type { ConsoleLike, LogEntry } from './types.js'\n\nexport const toInspectLogEntry = (e: LogEntry) => (\n\t(e.args = e.args.map(value => (typeof value === 'object' && value !== null ? inspect(value) : value))), e\n)\n\nexport const polyfill: { console?: ConsoleLike } = record()\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { LogStore } from './
|
|
1
|
+
import type { LogStore } from './log_store.js';
|
|
2
2
|
import type { LogMethodNames, StandardLogInstance } from './types.js';
|
|
3
3
|
export declare const ctx: {
|
|
4
4
|
configured?: boolean;
|
|
@@ -7,4 +7,4 @@ export declare const ctx: {
|
|
|
7
7
|
standardLog: StandardLogInstance<LogMethodNames>;
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
|
-
//# sourceMappingURL=
|
|
10
|
+
//# sourceMappingURL=standard_log.ctx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard_log.ctx.d.ts","sourceRoot":"","sources":["../ts/standard_log.ctx.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErE,eAAO,MAAM,GAAG,EAAE;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,GAAG,CAAC,EAAE;QAAE,KAAK,EAAE,QAAQ,CAAC;QAAC,WAAW,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAA;KAAE,CAAA;CAChE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard_log.ctx.js","sourceRoot":"","sources":["../ts/standard_log.ctx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAIlC,MAAM,CAAC,MAAM,GAAG,GAGZ,MAAM,EAAE,CAAA","sourcesContent":["import { record } from 'type-plus'\nimport type { LogStore } from './log_store.js'\nimport type { LogMethodNames, StandardLogInstance } from './types.js'\n\nexport const ctx: {\n\tconfigured?: boolean\n\tgsl?: { store: LogStore; standardLog: StandardLogInstance<LogMethodNames> }\n} = record()\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { LogStore } from './
|
|
2
|
-
import {
|
|
3
|
-
import type { Logger, LoggerOptions, LogLevel, LogMethodNames, StandardLogInstance, StandardLogOptions } from './types.js';
|
|
1
|
+
import { type LogStore } from './log_store.js';
|
|
2
|
+
import type { LogMethodNames, Logger, LoggerOptions, StandardLogInstance, StandardLogOptions } from './types.js';
|
|
4
3
|
export interface StandardLog<N extends string = LogMethodNames> extends Readonly<StandardLogInstance<N>> {
|
|
5
4
|
}
|
|
6
5
|
export declare function createStandardLog<N extends string = LogMethodNames>(options?: StandardLogOptions<N>): StandardLog<N>;
|
|
@@ -8,15 +7,11 @@ export declare function createStandardLogClosure<N extends string = LogMethodNam
|
|
|
8
7
|
store: LogStore;
|
|
9
8
|
standardLog: StandardLog<N>;
|
|
10
9
|
};
|
|
11
|
-
export declare type StandardLogForTest<N extends string = LogMethodNames> = StandardLog<N> & {
|
|
12
|
-
reporter: MemoryLogReporter;
|
|
13
|
-
};
|
|
14
|
-
export declare function createStandardLogForTest<N extends string = LogMethodNames>(logLevel?: LogLevel): StandardLogForTest<N>;
|
|
15
10
|
/**
|
|
16
11
|
* Suppress logging within the code block.
|
|
17
12
|
*/
|
|
18
13
|
export declare function suppressLogs<R>(block: () => R, log: Logger, ...logs: Logger[]): R;
|
|
19
|
-
export
|
|
14
|
+
export type GetLogger<N extends string = LogMethodNames> = (id: string, options?: LoggerOptions) => Logger<LogMethodNames | N>;
|
|
20
15
|
export declare function getLogger<N extends string = LogMethodNames>(id: string, options?: LoggerOptions): Logger<LogMethodNames | N>;
|
|
21
16
|
export declare function configGlobal(options: Omit<StandardLogOptions, 'customLevels'>): void;
|
|
22
|
-
//# sourceMappingURL=
|
|
17
|
+
//# sourceMappingURL=standard_log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard_log.d.ts","sourceRoot":"","sources":["../ts/standard_log.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAG9D,OAAO,KAAK,EACX,cAAc,EACd,MAAM,EACN,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,cAAc,CAAE,SAAQ,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;CAAG;AAE3G,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,cAAc,EAClE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,WAAW,CAAC,CAAC,CAAC,CAWhB;AAID,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,MAAM,GAAG,cAAc,EACzE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;CAAE,CAgDlD;AASD;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;AASlF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,cAAc,IAAI,CAC1D,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,aAAa,KACnB,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA;AAE/B,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,8BAE/F;AAQD,wBAAgB,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC,QAqB7E"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { record, required } from 'type-plus';
|
|
2
|
+
import { DEFAULT_LOG_METHOD_NAMES, logLevels } from './log_levels.js';
|
|
3
|
+
import { createLogStore } from './log_store.js';
|
|
2
4
|
import { createLogger } from './logger.js';
|
|
3
|
-
import {
|
|
4
|
-
import { createLogStore } from './logStore.js';
|
|
5
|
-
import { createMemoryLogReporter } from './memory.js';
|
|
6
|
-
import { ctx } from './standardLog.ctx.js';
|
|
5
|
+
import { ctx } from './standard_log.ctx.js';
|
|
7
6
|
export function createStandardLog(options) {
|
|
8
7
|
var _a;
|
|
9
8
|
const closure = createStandardLogClosure(options);
|
|
@@ -21,13 +20,17 @@ export function createStandardLogClosure(options) {
|
|
|
21
20
|
// TODO reporter.id must not be empty
|
|
22
21
|
const store = createLogStore(required({ logLevel: logLevels.info }, options));
|
|
23
22
|
const nonConsoleReporters = (_b = (_a = options === null || options === void 0 ? void 0 : options.reporters) === null || _a === void 0 ? void 0 : _a.filter(r => !r.isConsoleReporter).map(r => r.id)) !== null && _b !== void 0 ? _b : [];
|
|
24
|
-
const logMethods = DEFAULT_LOG_METHOD_NAMES
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
const logMethods = DEFAULT_LOG_METHOD_NAMES.concat(Object.keys((_c = options === null || options === void 0 ? void 0 : options.customLevels) !== null && _c !== void 0 ? _c : {})).concat([
|
|
24
|
+
'on',
|
|
25
|
+
'count',
|
|
26
|
+
'write'
|
|
27
|
+
]);
|
|
27
28
|
return {
|
|
28
29
|
store,
|
|
29
30
|
standardLog: {
|
|
30
|
-
get logLevel() {
|
|
31
|
+
get logLevel() {
|
|
32
|
+
return store.logLevel;
|
|
33
|
+
},
|
|
31
34
|
toLogLevelName(level) {
|
|
32
35
|
return store.logLevelStore.getName(level);
|
|
33
36
|
},
|
|
@@ -37,7 +40,7 @@ export function createStandardLogClosure(options) {
|
|
|
37
40
|
getLogger(id, options) {
|
|
38
41
|
if (store.loggers[id])
|
|
39
42
|
return store.loggers[id];
|
|
40
|
-
return store.loggers[id] = createLogger(store, id, { ssf: this.getLogger, ...options });
|
|
43
|
+
return (store.loggers[id] = createLogger(store, id, { ssf: this.getLogger, ...options }));
|
|
41
44
|
},
|
|
42
45
|
getNonConsoleLogger(id, options) {
|
|
43
46
|
if (store.nonConsoleLoggers[id])
|
|
@@ -45,18 +48,19 @@ export function createStandardLogClosure(options) {
|
|
|
45
48
|
if (store.loggers[id]) {
|
|
46
49
|
const log = this.getLogger('standard-log');
|
|
47
50
|
log.warn(`attempt to create a non-console logger with existing id ('${id}'), ignoring`);
|
|
48
|
-
return store.nonConsoleLoggers[id] = createDummyLogger(logMethods);
|
|
51
|
+
return (store.nonConsoleLoggers[id] = createDummyLogger(logMethods));
|
|
49
52
|
}
|
|
50
|
-
return store.nonConsoleLoggers[id] =
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
return (store.nonConsoleLoggers[id] =
|
|
54
|
+
nonConsoleReporters.length === 0
|
|
55
|
+
? createDummyLogger(logMethods)
|
|
56
|
+
: createLogger(store, id, {
|
|
57
|
+
ssf: this.getNonConsoleLogger,
|
|
58
|
+
...options,
|
|
59
|
+
writeTo(reporterId) {
|
|
60
|
+
return nonConsoleReporters.indexOf(reporterId) >= 0;
|
|
61
|
+
}
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
60
64
|
}
|
|
61
65
|
};
|
|
62
66
|
}
|
|
@@ -66,16 +70,11 @@ function createDummyLogger(logMethods) {
|
|
|
66
70
|
return p;
|
|
67
71
|
}, record());
|
|
68
72
|
}
|
|
69
|
-
export function createStandardLogForTest(logLevel = logLevels.debug) {
|
|
70
|
-
const reporter = createMemoryLogReporter();
|
|
71
|
-
const closure = createStandardLogClosure({ reporters: [reporter], logLevel });
|
|
72
|
-
return { ...closure.standardLog, reporter };
|
|
73
|
-
}
|
|
74
73
|
export function suppressLogs(block, ...logs) {
|
|
75
74
|
const origLevels = logs.map(l => l.level);
|
|
76
|
-
logs.forEach(l => l.level = logLevels.none);
|
|
75
|
+
logs.forEach(l => (l.level = logLevels.none));
|
|
77
76
|
const result = block();
|
|
78
|
-
logs.forEach((l, i) => l.level = origLevels[i]);
|
|
77
|
+
logs.forEach((l, i) => (l.level = origLevels[i]));
|
|
79
78
|
return result;
|
|
80
79
|
}
|
|
81
80
|
export function getLogger(id, options) {
|
|
@@ -106,4 +105,4 @@ export function configGlobal(options) {
|
|
|
106
105
|
}
|
|
107
106
|
ctx.configured = true;
|
|
108
107
|
}
|
|
109
|
-
//# sourceMappingURL=
|
|
108
|
+
//# sourceMappingURL=standard_log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard_log.js","sourceRoot":"","sources":["../ts/standard_log.ts"],"names":[],"mappings":"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","sourcesContent":["import { record, required } from 'type-plus'\nimport { DEFAULT_LOG_METHOD_NAMES, logLevels } from './log_levels.js'\nimport { createLogStore, type LogStore } from './log_store.js'\nimport { createLogger } from './logger.js'\nimport { ctx } from './standard_log.ctx.js'\nimport type {\n\tLogMethodNames,\n\tLogger,\n\tLoggerOptions,\n\tStandardLogInstance,\n\tStandardLogOptions\n} from './types.js'\n\nexport interface StandardLog<N extends string = LogMethodNames> extends Readonly<StandardLogInstance<N>> {}\n\nexport function createStandardLog<N extends string = LogMethodNames>(\n\toptions?: StandardLogOptions<N>\n): StandardLog<N> {\n\tconst closure = createStandardLogClosure(options)\n\tif (options?.reporters?.some(r => !r.id)) {\n\t\tconst log = closure.standardLog.getLogger('standard-log')\n\t\tlog.critical(\n\t\t\t`Detected reporter with empty id. This is not allowed as it will create problems with feature like 'getNonConsoleLogger()'. Please add an id to your reporter.`\n\t\t)\n\t}\n\n\tif (!ctx.gsl) ctx.gsl = closure as any\n\treturn closure.standardLog\n}\n\nfunction noop() {}\n\nexport function createStandardLogClosure<N extends string = LogMethodNames>(\n\toptions?: StandardLogOptions<N>\n): { store: LogStore; standardLog: StandardLog<N> } {\n\t// TODO reporter.id must not be empty\n\tconst store = createLogStore(required({ logLevel: logLevels.info }, options))\n\tconst nonConsoleReporters = options?.reporters?.filter(r => !r.isConsoleReporter).map(r => r.id) ?? []\n\tconst logMethods = DEFAULT_LOG_METHOD_NAMES.concat(Object.keys(options?.customLevels ?? {})).concat([\n\t\t'on',\n\t\t'count',\n\t\t'write'\n\t])\n\treturn {\n\t\tstore,\n\t\tstandardLog: {\n\t\t\tget logLevel() {\n\t\t\t\treturn store.logLevel\n\t\t\t},\n\n\t\t\ttoLogLevelName(level: number) {\n\t\t\t\treturn store.logLevelStore.getName(level)\n\t\t\t},\n\t\t\ttoLogLevel(name: string) {\n\t\t\t\treturn store.logLevelStore.getLevel(name)\n\t\t\t},\n\t\t\tgetLogger(id: string, options?: LoggerOptions) {\n\t\t\t\tif (store.loggers[id]) return store.loggers[id] as any\n\t\t\t\treturn (store.loggers[id] = createLogger(store, id, { ssf: this.getLogger, ...options }) as any)\n\t\t\t},\n\t\t\tgetNonConsoleLogger(id, options?) {\n\t\t\t\tif (store.nonConsoleLoggers[id]) return store.nonConsoleLoggers[id] as any\n\n\t\t\t\tif (store.loggers[id]) {\n\t\t\t\t\tconst log = this.getLogger('standard-log')\n\t\t\t\t\tlog.warn(`attempt to create a non-console logger with existing id ('${id}'), ignoring`)\n\t\t\t\t\treturn (store.nonConsoleLoggers[id] = createDummyLogger(logMethods))\n\t\t\t\t}\n\n\t\t\t\treturn (store.nonConsoleLoggers[id] =\n\t\t\t\t\tnonConsoleReporters.length === 0\n\t\t\t\t\t\t? createDummyLogger(logMethods)\n\t\t\t\t\t\t: createLogger(store, id, {\n\t\t\t\t\t\t\t\tssf: this.getNonConsoleLogger,\n\t\t\t\t\t\t\t\t...options,\n\t\t\t\t\t\t\t\twriteTo(reporterId) {\n\t\t\t\t\t\t\t\t\treturn nonConsoleReporters.indexOf(reporterId) >= 0\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t }))\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction createDummyLogger(logMethods: string[]) {\n\treturn logMethods.reduce((p, m) => {\n\t\tp[m] = noop\n\t\treturn p\n\t}, record()) as Logger\n}\n\n/**\n * Suppress logging within the code block.\n */\nexport function suppressLogs<R>(block: () => R, log: Logger, ...logs: Logger[]): R\nexport function suppressLogs<R>(block: () => R, ...logs: Logger[]): R {\n\tconst origLevels = logs.map(l => l.level)\n\tlogs.forEach(l => (l.level = logLevels.none))\n\tconst result = block()\n\tlogs.forEach((l, i) => (l.level = origLevels[i]))\n\treturn result\n}\n\nexport type GetLogger<N extends string = LogMethodNames> = (\n\tid: string,\n\toptions?: LoggerOptions\n) => Logger<LogMethodNames | N>\n\nexport function getLogger<N extends string = LogMethodNames>(id: string, options?: LoggerOptions) {\n\treturn getGlobalSL<N>().getLogger(id, options)\n}\n\nfunction getGlobalSL<N extends string = LogMethodNames>(): StandardLogInstance<N> {\n\tif (!ctx.gsl) ctx.gsl = createStandardLogClosure()\n\n\treturn ctx.gsl!.standardLog as StandardLogInstance<N>\n}\n\nexport function configGlobal(options: Omit<StandardLogOptions, 'customLevels'>) {\n\tif (ctx.configured) {\n\t\tconst log = ctx.gsl!.standardLog.getLogger('standard-log')\n\t\tlog.warn(\n\t\t\t'configGlobal() is being called more than once. Please make sure this is expected. Application should use `createStandardLog()` most of the time.'\n\t\t)\n\t}\n\n\tif (ctx.gsl) {\n\t\tif (options.logLevel) {\n\t\t\tctx.gsl.store.logLevel = options.logLevel\n\t\t}\n\t\tif (options.reporters) {\n\t\t\tconst reporters = ctx.gsl.store.reporters\n\t\t\treporters.length = 0\n\t\t\treporters.push(...options.reporters)\n\t\t}\n\t} else {\n\t\tctx.gsl = createStandardLogClosure(options)\n\t}\n\tctx.configured = true\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type MemoryLogReporter } from './memory.js';
|
|
2
|
+
import { type StandardLog } from './standard_log.js';
|
|
3
|
+
import type { LogMethodNames, StandardLogOptions } from './types.js';
|
|
4
|
+
export type StandardLogForTest<N extends string = LogMethodNames> = StandardLog<N> & {
|
|
5
|
+
reporter: MemoryLogReporter;
|
|
6
|
+
};
|
|
7
|
+
export declare function createStandardLogForTest<N extends string = LogMethodNames>(options?: StandardLogOptions<N>): StandardLogForTest<N>;
|
|
8
|
+
//# sourceMappingURL=standard_log.mocks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard_log.mocks.d.ts","sourceRoot":"","sources":["../ts/standard_log.mocks.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpE,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,GAAG,cAAc,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG;IACpF,QAAQ,EAAE,iBAAiB,CAAA;CAC3B,CAAA;AAED,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,MAAM,GAAG,cAAc,EACzE,OAAO,GAAE,kBAAkB,CAAC,CAAC,CAAM,GACjC,kBAAkB,CAAC,CAAC,CAAC,CAUvB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { logLevels } from './log_levels.js';
|
|
2
|
+
import { createMemoryLogReporter } from './memory.js';
|
|
3
|
+
import { createStandardLogClosure } from './standard_log.js';
|
|
4
|
+
export function createStandardLogForTest(options = {}) {
|
|
5
|
+
var _a, _b;
|
|
6
|
+
options.logLevel = (_a = options.logLevel) !== null && _a !== void 0 ? _a : logLevels.debug;
|
|
7
|
+
options.reporters = (_b = options.reporters) !== null && _b !== void 0 ? _b : [];
|
|
8
|
+
const existingReporter = options.reporters.find(r => r.id === 'memory');
|
|
9
|
+
const reporter = existingReporter !== null && existingReporter !== void 0 ? existingReporter : createMemoryLogReporter();
|
|
10
|
+
if (!existingReporter) {
|
|
11
|
+
options.reporters.push(reporter);
|
|
12
|
+
}
|
|
13
|
+
const closure = createStandardLogClosure(options);
|
|
14
|
+
return { ...closure.standardLog, reporter };
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=standard_log.mocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard_log.mocks.js","sourceRoot":"","sources":["../ts/standard_log.mocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,uBAAuB,EAA0B,MAAM,aAAa,CAAA;AAC7E,OAAO,EAAE,wBAAwB,EAAoB,MAAM,mBAAmB,CAAA;AAO9E,MAAM,UAAU,wBAAwB,CACvC,UAAiC,EAAE;;IAEnC,OAAO,CAAC,QAAQ,GAAG,MAAA,OAAO,CAAC,QAAQ,mCAAI,SAAS,CAAC,KAAK,CAAA;IACtD,OAAO,CAAC,SAAS,GAAG,MAAA,OAAO,CAAC,SAAS,mCAAI,EAAE,CAAA;IAC3C,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAsB,CAAA;IAC5F,MAAM,QAAQ,GAAG,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,uBAAuB,EAAE,CAAA;IAC9D,IAAI,CAAC,gBAAgB,EAAE;QACtB,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;KAChC;IACD,MAAM,OAAO,GAAG,wBAAwB,CAAI,OAAO,CAAC,CAAA;IACpD,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAA;AAC5C,CAAC","sourcesContent":["import { logLevels } from './log_levels.js'\nimport { createMemoryLogReporter, type MemoryLogReporter } from './memory.js'\nimport { createStandardLogClosure, type StandardLog } from './standard_log.js'\nimport type { LogMethodNames, StandardLogOptions } from './types.js'\n\nexport type StandardLogForTest<N extends string = LogMethodNames> = StandardLog<N> & {\n\treporter: MemoryLogReporter\n}\n\nexport function createStandardLogForTest<N extends string = LogMethodNames>(\n\toptions: StandardLogOptions<N> = {}\n): StandardLogForTest<N> {\n\toptions.logLevel = options.logLevel ?? logLevels.debug\n\toptions.reporters = options.reporters ?? []\n\tconst existingReporter = options.reporters.find(r => r.id === 'memory') as MemoryLogReporter\n\tconst reporter = existingReporter ?? createMemoryLogReporter()\n\tif (!existingReporter) {\n\t\toptions.reporters.push(reporter)\n\t}\n\tconst closure = createStandardLogClosure<N>(options)\n\treturn { ...closure.standardLog, reporter }\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="jest" />
|
|
2
|
+
import type { LogEntry } from './types.js';
|
|
3
|
+
export declare function rangeEntries(start: number, end: number, expected: any): any[][];
|
|
4
|
+
export declare function assertSSF(err: Error, filename: string): void;
|
|
5
|
+
export declare function logEntriesToString(logs: LogEntry[]): string;
|
|
6
|
+
export declare function wrapTest<F extends Record<any, any>>(fn: (test: jest.It) => F): F & {
|
|
7
|
+
only: F;
|
|
8
|
+
skip: F;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=test_utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test_utils.d.ts","sourceRoot":"","sources":["../ts/test_utils.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,WAErE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,QAGrD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAElD;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC;;;EAE5E"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { range } from 'ramda';
|
|
2
|
+
import { plainLogFormatter } from './formatter.js';
|
|
3
|
+
import { toInspectLogEntry } from './platform.js';
|
|
4
|
+
export function rangeEntries(start, end, expected) {
|
|
5
|
+
return range(start, end).map(value => [value, expected]);
|
|
6
|
+
}
|
|
7
|
+
export function assertSSF(err, filename) {
|
|
8
|
+
var _a;
|
|
9
|
+
const firstStackTrace = (_a = err.stack) === null || _a === void 0 ? void 0 : _a.split('\n')[1];
|
|
10
|
+
expect(firstStackTrace).toMatch(filename);
|
|
11
|
+
}
|
|
12
|
+
export function logEntriesToString(logs) {
|
|
13
|
+
return logs.map(toInspectLogEntry).map(plainLogFormatter).join('\n');
|
|
14
|
+
}
|
|
15
|
+
export function wrapTest(fn) {
|
|
16
|
+
return Object.assign(fn(test), { only: fn(test.only), skip: fn(test.skip) });
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=test_utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test_utils.js","sourceRoot":"","sources":["../ts/test_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAGjD,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,GAAW,EAAE,QAAa;IACrE,OAAO,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAU,EAAE,QAAgB;;IACrD,MAAM,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;AAC1C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IAClD,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,QAAQ,CAA6B,EAAwB;IAC5E,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC7E,CAAC","sourcesContent":["import { range } from 'ramda'\nimport { plainLogFormatter } from './formatter.js'\nimport { toInspectLogEntry } from './platform.js'\nimport type { LogEntry } from './types.js'\n\nexport function rangeEntries(start: number, end: number, expected: any) {\n\treturn range(start, end).map(value => [value, expected])\n}\n\nexport function assertSSF(err: Error, filename: string) {\n\tconst firstStackTrace = err.stack?.split('\\n')[1]\n\texpect(firstStackTrace).toMatch(filename)\n}\n\nexport function logEntriesToString(logs: LogEntry[]) {\n\treturn logs.map(toInspectLogEntry).map(plainLogFormatter).join('\\n')\n}\n\nexport function wrapTest<F extends Record<any, any>>(fn: (test: jest.It) => F) {\n\treturn Object.assign(fn(test), { only: fn(test.only), skip: fn(test.skip) })\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAA2B,MAAM,0BAA0B,CAAA","sourcesContent":["export { createStandardLogForTest, type StandardLogForTest } from '../standard_log.mocks.js'\n"]}
|
package/esm/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { StackTraceMeta } from '@just-func/types';
|
|
2
|
-
export
|
|
2
|
+
export type StandardLogOptions<CustomLevelNames extends string = LogMethodNames> = {
|
|
3
3
|
customLevels?: Record<CustomLevelNames, number>;
|
|
4
4
|
logLevel?: number;
|
|
5
5
|
reporters?: LogReporter[];
|
|
@@ -8,7 +8,7 @@ export interface LoggerOptions extends StackTraceMeta {
|
|
|
8
8
|
level?: number;
|
|
9
9
|
writeTo?: LogReporter | ReporterFilter;
|
|
10
10
|
}
|
|
11
|
-
export
|
|
11
|
+
export type Logger<N extends string = LogMethodNames> = {
|
|
12
12
|
readonly id: string;
|
|
13
13
|
/**
|
|
14
14
|
* Logger local log level.
|
|
@@ -30,16 +30,16 @@ export declare type Logger<N extends string = LogMethodNames> = {
|
|
|
30
30
|
/**
|
|
31
31
|
* Names of the standard log methods.
|
|
32
32
|
*/
|
|
33
|
-
export
|
|
34
|
-
export
|
|
33
|
+
export type LogMethodNames = 'emergency' | 'alert' | 'critical' | 'error' | 'warn' | 'notice' | 'info' | 'debug' | 'trace' | 'planck';
|
|
34
|
+
export type LogEntry = {
|
|
35
35
|
id: string;
|
|
36
36
|
level: number;
|
|
37
37
|
args: any[];
|
|
38
38
|
timestamp: Date;
|
|
39
39
|
};
|
|
40
|
-
export
|
|
41
|
-
export
|
|
42
|
-
export
|
|
40
|
+
export type LogMethod = (...args: any[]) => void;
|
|
41
|
+
export type LogFunction = (log: LogMethod, logLevel: number) => string | void;
|
|
42
|
+
export type ReporterFilter = string | RegExp | ((reporterId: string) => boolean);
|
|
43
43
|
export interface StandardLogInstance<N extends string = LogMethodNames> {
|
|
44
44
|
logLevel: number;
|
|
45
45
|
toLogLevelName(level: number): string;
|
|
@@ -52,12 +52,12 @@ export interface StandardLogInstance<N extends string = LogMethodNames> {
|
|
|
52
52
|
* Depends on the reporter, it can expect a different return type.
|
|
53
53
|
* By default the return type is `any[]` which the `console` accepts.
|
|
54
54
|
*/
|
|
55
|
-
export
|
|
55
|
+
export type LogFormatter<T = any[]> = (entry: LogEntry) => T;
|
|
56
56
|
/**
|
|
57
57
|
* Determines whether the entry should be written.
|
|
58
58
|
*/
|
|
59
|
-
export
|
|
60
|
-
export
|
|
59
|
+
export type LogFilter = (entry: LogEntry) => boolean;
|
|
60
|
+
export type LogLevelEntry = {
|
|
61
61
|
name: string;
|
|
62
62
|
level: number;
|
|
63
63
|
};
|
|
@@ -79,7 +79,7 @@ export interface LogReporter<T = any> {
|
|
|
79
79
|
readonly isConsoleReporter?: boolean;
|
|
80
80
|
write(entry: LogEntry): void;
|
|
81
81
|
}
|
|
82
|
-
export
|
|
82
|
+
export type LogReporterOptions<T = any> = {
|
|
83
83
|
id?: string;
|
|
84
84
|
/**
|
|
85
85
|
* Specifies the formatter to be used by the reporter.
|
|
@@ -91,7 +91,7 @@ export declare type LogReporterOptions<T = any> = {
|
|
|
91
91
|
*/
|
|
92
92
|
filter?: LogFilter;
|
|
93
93
|
};
|
|
94
|
-
export
|
|
94
|
+
export type LogLevel = number;
|
|
95
95
|
export interface ConsoleLike {
|
|
96
96
|
debug(...args: any[]): void;
|
|
97
97
|
info(...args: any[]): void;
|
package/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../ts/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../ts/types.ts"],"names":[],"mappings":"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"}
|
package/esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../ts/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { StackTraceMeta } from '@just-func/types'\n\nexport type StandardLogOptions<CustomLevelNames extends string = LogMethodNames> = {\n
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../ts/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { StackTraceMeta } from '@just-func/types'\n\nexport type StandardLogOptions<CustomLevelNames extends string = LogMethodNames> = {\n\tcustomLevels?: Record<CustomLevelNames, number>\n\tlogLevel?: number\n\treporters?: LogReporter[]\n}\n\nexport interface LoggerOptions extends StackTraceMeta {\n\tlevel?: number\n\twriteTo?: LogReporter | ReporterFilter\n}\n\nexport type Logger<N extends string = LogMethodNames> = {\n\treadonly id: string\n\t/**\n\t * Logger local log level.\n\t */\n\tlevel?: number\n\t/**\n\t * Logs with an increment counter.\n\t * This is useful during debugging to check for steps executed.\n\t */\n\tcount(...args: any[]): void\n\ton(level: number | N, logFunction: LogFunction): void\n\t/**\n\t * Write custom log entries.\n\t */\n\twrite(entry: LogEntry): void\n} & { [k in N]: LogMethod }\n\n/**\n * Names of the standard log methods.\n */\nexport type LogMethodNames =\n\t| 'emergency'\n\t| 'alert'\n\t| 'critical'\n\t| 'error'\n\t| 'warn'\n\t| 'notice'\n\t| 'info'\n\t| 'debug'\n\t| 'trace'\n\t| 'planck'\n\nexport type LogEntry = {\n\tid: string\n\tlevel: number\n\t// args instead of messages because it is `any[]` instead of `string[]`\n\targs: any[]\n\ttimestamp: Date\n}\n\nexport type LogMethod = (...args: any[]) => void\n\nexport type LogFunction = (log: LogMethod, logLevel: number) => string | void\n\nexport type ReporterFilter = string | RegExp | ((reporterId: string) => boolean)\n\nexport interface StandardLogInstance<N extends string = LogMethodNames> {\n\tlogLevel: number\n\ttoLogLevelName(level: number): string\n\ttoLogLevel(name: N): number\n\tgetLogger(id: string, options?: LoggerOptions): Logger<N | LogMethodNames>\n\tgetNonConsoleLogger(id: string, options?: LoggerOptions): Logger<N | LogMethodNames>\n}\n\n/**\n * Formats a log entry.\n * Depends on the reporter, it can expect a different return type.\n * By default the return type is `any[]` which the `console` accepts.\n */\nexport type LogFormatter<T = any[]> = (entry: LogEntry) => T\n\n/**\n * Determines whether the entry should be written.\n */\nexport type LogFilter = (entry: LogEntry) => boolean\n\nexport type LogLevelEntry = { name: string; level: number }\n\nexport interface LogReporter<T = any> {\n\treadonly id: string\n\t/**\n\t * Specifies the formatter to be used by the reporter.\n\t * Using this you can customize how the reporter writes the log entry.\n\t */\n\treadonly formatter: LogFormatter<T>\n\t/**\n\t * Specifies a filter to determine should the log be written.\n\t */\n\treadonly filter?: LogFilter\n\t/**\n\t * Indicate if this is a console reporter.\n\t * There is only one console reporter can be present in the system.\n\t */\n\treadonly isConsoleReporter?: boolean\n\twrite(entry: LogEntry): void\n}\n\nexport type LogReporterOptions<T = any> = {\n\tid?: string\n\t/**\n\t * Specifies the formatter to be used by the reporter.\n\t * Using this you can customize how the reporter writes the log entry.\n\t */\n\tformatter?: LogFormatter<T>\n\t/**\n\t * Specifies a filter to determine should the log be written.\n\t */\n\tfilter?: LogFilter\n}\n\nexport type LogLevel = number\n\nexport interface ConsoleLike {\n\tdebug(...args: any[]): void\n\tinfo(...args: any[]): void\n\twarn(...args: any[]): void\n\terror(...args: any[]): void\n}\n"]}
|